Files
dsrc/sku.0/sys.server/compiled/game/script/event/shuttle_control.script
T

113 lines
2.6 KiB
Plaintext

include library.create;
const float DECAY_TIME = 60*60*8;
const float[] LANDING_TIME = { 17, 22, 26, 33};
trigger OnAttach()
{
float timeStamp = getGameTime();
setObjVar(self, "event.shuttle.timeStamp", timeStamp);
messageTo(self, "cleanUp", null, DECAY_TIME, false);
return SCRIPT_CONTINUE;
}
trigger OnAddedToWorld()
{
checkTimeLimit(self);
return SCRIPT_CONTINUE;
}
messageHandler landShuttle()
{
int shuttleType = getIntObjVar(self, "event.shuttle.shuttleType");
if(shuttleType > 0)
{
queueCommand(self, ##"stand", self, "", COMMAND_PRIORITY_FRONT);
setPosture(self, POSTURE_UPRIGHT);
}
if(shuttleType == 0)
{
queueCommand(self, ##"prone", self, "", COMMAND_PRIORITY_FRONT);
setPosture(self, POSTURE_PRONE);
}
messageTo(self, "dropOffNpcs", null, LANDING_TIME[shuttleType], false);
obj_id owner = getObjIdObjVar(self, "event.shuttle.owner");
sendSystemMessage(owner, "SHUTTLE: I am landing.", null);
return SCRIPT_CONTINUE;
}
messageHandler takeOff()
{
int shuttleType = getIntObjVar(self, "event.shuttle.shuttleType");
if(shuttleType > 0)
{
queueCommand(self, ##"prone", self, "", COMMAND_PRIORITY_FRONT);
setPosture(self, POSTURE_PRONE);
}
if(shuttleType == 0)
{
queueCommand(self, ##"stand", self, "", COMMAND_PRIORITY_FRONT);
setPosture(self, POSTURE_UPRIGHT);
}
messageTo(self, "cleanUp", null, 20, false);
obj_id owner = getObjIdObjVar(self, "event.shuttle.owner");
sendSystemMessage(owner, "SHUTTLE: I am taking off.", null);
return SCRIPT_CONTINUE;
}
messageHandler performFlyBy()
{
int shuttleType = getIntObjVar(self, "event.shuttle.shuttleType");
messageTo(self, "landShuttle", null, 0, false);
messageTo(self, "takeOff", null, LANDING_TIME[shuttleType] + 5, false);
return SCRIPT_CONTINUE;
}
messageHandler dropOffNpcs()
{
int numSpawns = getIntObjVar(self, "event.shuttle.numSpawns");
if(numSpawns > 0)
{
string template = getStringObjVar(self, "event.shuttle.template");
for(int i = 0; i < numSpawns; i++)
{
location here = getLocation(self);
obj_id spawn = create.object(template, here);
}
}
return SCRIPT_CONTINUE;
}
messageHandler cleanUp()
{
obj_id owner = getObjIdObjVar(self, "event.shuttle.owner");
messageTo(owner, "getRidOfOwner", null, 0, false);
sendSystemMessage(owner, "SHUTTLE: I'm deleting myself.", null);
destroyObject(self);
return SCRIPT_CONTINUE;
}
void checkTimeLimit(obj_id self)
{
float timeStamp = getFloatObjVar(self, "event.shuttle.timeStamp");
float rightNow = getGameTime();
float delta = rightNow - timeStamp;
if(delta > DECAY_TIME)
destroyObject(self);
return;
}