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 super.OnAttach(self); } 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; }