Files
dsrc/sku.0/sys.server/compiled/game/script/systems/spawning/dropship/lambda.script
T
2013-09-10 23:17:15 -07:00

94 lines
2.2 KiB
Plaintext

include library.utils;
include library.ai_lib;
include library.create;
include library.gcw;
inherits systems.spawning.dropship.base;
trigger OnAttach()
{
messageTo(self, "handleAttachDelay", null, 2f, false);
return SCRIPT_CONTINUE;
}
messageHandler handleAttachDelay()
{
stop (self);
//setName (self, "Stormtrooper Transport");
setPosture(self, POSTURE_PRONE);
messageTo(self, "spawnPayload", null, 20f, true);
queueCommand(self, ##"stand", self, "", COMMAND_PRIORITY_FRONT);
return SCRIPT_CONTINUE;
}
messageHandler changePosture()
{
setPosture(self, POSTURE_UPRIGHT);
messageTo(self, "selfCleanUp", null, 60f, false);
return SCRIPT_CONTINUE;
}
messageHandler spawnPayload()
{
string[] spawnNames = utils.getStringArrayScriptVar(self, "spawnNames");
if ( spawnNames != null && spawnNames.length > 0 )
{
location here = getLocation(self);
if ( here != null )
{
int pos = 0;
obj_id leader = null;
resizeable obj_id[] spawns = new obj_id[0];
for ( int i = 0; i < spawnNames.length; i++ )
{
obj_id thisSpawn = create.object(spawnNames[i], here);
if ( isIdValid(thisSpawn) && !isIdValid(leader) )
{
leader = thisSpawn;
spawns = utils.addElement(spawns, thisSpawn);
if ( i > 0 && isIdValid(leader) )
{
//ai_lib.FORMATION_COLUMN = 0;
ai_lib.wander(thisSpawn);
attachScript(thisSpawn, "ai.imperial_presence.harass");
}
}
if( isIdValid(thisSpawn))
{
detachScript(leader, "ai.soldier");
setMovementRun(thisSpawn);
utils.removeObjVar( thisSpawn, "ai.diction");
ai_lib.followInFormation(thisSpawn, leader, 4, ++pos);
}
}
if ( spawns != null && spawns.length > 0 )
{
dictionary spawnParams = utils.getDictionaryScriptVar(self, "spawnParameters");
if ( spawnParams != null && !spawnParams.isEmpty() )
messageTo(spawns[0], "handleSpawnParameters", spawnParams, 1f, false);
//debugSpeakMsg(self, "Sending Msg Handler to myself.");
}
}
}
messageTo (self, "changePosture", null, 5, false);
return SCRIPT_CONTINUE;
}
messageHandler selfCleanUp ()
{
if (isIdValid(self))
{
destroyObject(self);
return SCRIPT_CONTINUE;
}
return SCRIPT_CONTINUE;
}