#include common_scripts\utility; #include maps\_utility; #include maps\bots\_bot_utility; CreateObjectiveForManger( sName, fpFinder, fpPriorty, fpExecuter, iProcessRate ) { Answer = SpawnStruct(); Answer.sName = sName; Answer.fpFinder = fpFinder; Answer.fpExecuter = fpExecuter; Answer.fpPriorty = fpPriorty; Answer.aBotProcessTimes = []; Answer.iProcessRate = iProcessRate; return Answer; } CreateFinderObjectiveEZ( eObj, eEnt ) { return self CreateFinderObjective( eObj, eObj.sName + "_" + eEnt GetEntityNumber(), eEnt, self [[eObj.fpPriorty]]( eObj, eEnt ) ); } CreateFinderObjective( eObj, sName, eEnt, fPriority ) { Answer = SpawnStruct(); Answer.eParentObj = eObj; Answer.sName = sName; Answer.eEnt = eEnt; Answer.fPriority = fPriority; Answer.GUID = eEnt GetEntityNumber(); Answer.bWasSuccessful = false; Answer.sReason = "canceled"; return Answer; } GetBotsAmountForEntity( eEnt ) { if ( !isDefined( eEnt.bots ) ) { eEnt.bots = 0; } return eEnt.bots; } IncrementBotsForEntity( eEnt ) { self endon( "bots_for_entity_cleanup" ); eEnt.bots++; self waittill_either( "disconnect", "zombified" ); if ( isDefined( eEnt ) ) { eEnt.bots--; } } DecrementBotsForEntity( eEnt ) { self notify( "bots_for_entity_cleanup" ); if ( isDefined( eEnt ) ) { eEnt.bots--; } } CleanupBotsForEntity( eEnt ) { self notify( "bots_for_entity_cleanup" ); } CancelObjective( reason ) { self notify( "cancel_bot_objective", reason ); } CompletedObjective( successful, reason ) { self notify( "completed_bot_objective", successful, reason ); } GetBotObjectiveEnt() { if ( !self HasBotObjective() ) { return undefined; } return self GetBotObjective().eEnt; } /* Gets bot objective */ GetBotObjective() { return self.bot_current_objective; } /* Does the bot have an objective? */ HasBotObjective() { return isDefined( self GetBotObjective() ); }