mirror of
https://bitbucket.org/seefoe/dsrc.git
synced 2026-07-31 01:15:55 -04:00
113 lines
2.6 KiB
Plaintext
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;
|
|
} |