mirror of
https://bitbucket.org/seefoe/dsrc.git
synced 2026-07-31 01:15:55 -04:00
109 lines
2.7 KiB
Plaintext
109 lines
2.7 KiB
Plaintext
const string STF_FILE = "event_perk";
|
|
|
|
trigger OnAttach()
|
|
{
|
|
float lifeSpan = getFloatObjVar(self, "event_perk.lifeSpan");
|
|
float timeStamp = getFloatObjVar(self, "event_perk.timeStamp");
|
|
float deathStamp = timeStamp + lifeSpan;
|
|
float rightNow = getGameTime();
|
|
float dieTime = deathStamp - rightNow;
|
|
messageTo(self, "cleanUp", null, dieTime, true);
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
messageHandler landShuttle()
|
|
{
|
|
int shuttleType = getIntObjVar(self, "event_perk.shuttle.shuttleType");
|
|
setObjVar(self, "event_perk.shuttle.readyTakeOff", 0);
|
|
|
|
messageTo(self, "readyTakeOff", null, 40, false);
|
|
|
|
if(shuttleType == 1)
|
|
{
|
|
queueCommand(self, ##"stand", self, "", COMMAND_PRIORITY_FRONT);
|
|
setPosture(self, POSTURE_UPRIGHT);
|
|
}
|
|
|
|
if(shuttleType == 0 || shuttleType == 2)
|
|
{
|
|
queueCommand(self, ##"prone", self, "", COMMAND_PRIORITY_FRONT);
|
|
setPosture(self, POSTURE_PRONE);
|
|
}
|
|
|
|
if(shuttleType == 3)
|
|
{
|
|
queueCommand(self, ##"kneel", self, "", COMMAND_PRIORITY_FRONT);
|
|
setPosture(self, POSTURE_CROUCHED);
|
|
}
|
|
|
|
obj_id owner = getObjIdObjVar(self, "event_perk.owner");
|
|
sendSystemMessage(owner, new string_id(STF_FILE, "shuttle_is_landing"));
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
messageHandler readyTakeOff()
|
|
{
|
|
setObjVar(self, "event_perk.shuttle.readyTakeOff", 1);
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
messageHandler takeOff()
|
|
{
|
|
int shuttleType = getIntObjVar(self, "event_perk.shuttle.shuttleType");
|
|
int readyTakeOff = getIntObjVar(self, "event_perk.shuttle.readyTakeOff");
|
|
obj_id owner = getObjIdObjVar(self, "event_perk.owner");
|
|
|
|
if(readyTakeOff == 0)
|
|
{
|
|
sendSystemMessage(owner, new string_id(STF_FILE, "shuttle_not_take_off"));
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
if(shuttleType == 1)
|
|
{
|
|
queueCommand(self, ##"prone", self, "", COMMAND_PRIORITY_FRONT);
|
|
setPosture(self, POSTURE_PRONE);
|
|
}
|
|
|
|
|
|
if(shuttleType == 0 || shuttleType > 1)
|
|
{
|
|
queueCommand(self, ##"stand", self, "", COMMAND_PRIORITY_FRONT);
|
|
setPosture(self, POSTURE_UPRIGHT);
|
|
}
|
|
|
|
messageTo(self, "cleanUp", null, 20, false);
|
|
sendSystemMessage(owner, new string_id(STF_FILE, "shuttle_is_leaving"));
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
messageHandler cleanUp()
|
|
{
|
|
obj_id owner = getObjIdObjVar(self, "event_perk.owner");
|
|
obj_id beacon = getObjIdObjVar(self, "event_perk.shuttle.owner");
|
|
messageTo(beacon, "getRidOfShuttle", null, 0, true);
|
|
sendSystemMessage(owner, new string_id(STF_FILE, "shuttle_next_is_ready"));
|
|
destroyObject(self);
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
void checkTimeLimit(obj_id self)
|
|
{
|
|
float lifeSpan = getFloatObjVar(self, "event_perk.lifeSpan");
|
|
float timeStamp = getFloatObjVar(self, "event_perk.timeStamp");
|
|
|
|
float rightNow = getGameTime();
|
|
float delta = rightNow - timeStamp;
|
|
|
|
if(delta > lifeSpan)
|
|
destroyObject(self);
|
|
|
|
return;
|
|
}
|
|
|
|
trigger OnAddedToWorld()
|
|
{
|
|
checkTimeLimit(self);
|
|
return SCRIPT_CONTINUE;
|
|
} |