diff --git a/src/servers/sapphire_zone/Network/Handlers/SkillHandler.cpp b/src/servers/sapphire_zone/Network/Handlers/SkillHandler.cpp index 4ae0ebfe..3af720a8 100644 --- a/src/servers/sapphire_zone/Network/Handlers/SkillHandler.cpp +++ b/src/servers/sapphire_zone/Network/Handlers/SkillHandler.cpp @@ -76,11 +76,20 @@ void Core::Network::GameConnection::skillHandler( const Packets::GamePacket& inP else { Core::Entity::ActorPtr targetActor = player.getAsPlayer(); + if( targetId != player.getId() ) { targetActor = player.lookupTargetById( targetId ); } + // Check if we actually have an actor + if ( targetActor == nullptr ) + { + // todo: interrupt a cast. + player.sendDebug( "Invalid target." ); + return; + } + if( !player.actionHasCastTime( action ) ) { pScriptMgr->onCastFinish( player, targetActor->getAsChara(), action );