Files
dsrc/sku.0/sys.server/compiled/game/script/theme_park/bldg_destroy.script
T

113 lines
3.4 KiB
Plaintext

include library.chat;
trigger OnAttach()
{
//messageTo (self, "bark", null, 10, true);
return SCRIPT_CONTINUE;
}
trigger OnObjectMenuRequest(obj_id player, menu_info mi)
{
int mnu = mi.addRootMenu (menu_info_types.SELF_DESTRUCT, new string_id("self_destruct","self_destruct"));
mi.addSubMenu(mnu, menu_info_types.THIRTY_SEC, new string_id("self_destruct","thirty"));
mi.addSubMenu(mnu, menu_info_types.FIFTEEN_SEC, new string_id("self_destruct","fifteen"));
return SCRIPT_CONTINUE;
}
trigger OnObjectMenuSelect(obj_id player, int item)
{
if (item == menu_info_types.THIRTY_SEC)
{
obj_id bldg = getTopMostContainer (self);
if (bldg == self)
{
bldg = getObjIdObjVar (self, "bldg");
}
playMusic (player, "sound/music_darth_vader_theme.snd");
chat.chat (self, new string_id ("self_destruct", "thirty_seconds"));
dictionary destroyer = new dictionary();
destroyer.put ("player", player);
destroyer.put ("bldg", bldg);
messageTo (self, "firstPop", destroyer, 10, true);
messageTo (self, "firstPop", destroyer, 20, true);
messageTo (self, "blowUp", destroyer, 30, true);
return SCRIPT_CONTINUE;
}
else if ( item == menu_info_types.FIFTEEN_SEC)
{
obj_id bldg = getTopMostContainer (self);
if (bldg == self)
{
bldg = getObjIdObjVar (self, "bldg");
}
chat.chat (self, new string_id ("self_destruct", "fifteen_seconds"));
dictionary destroyer = new dictionary();
destroyer.put ("player", player);
destroyer.put ("bldg", bldg);
messageTo (self, "firstPop", destroyer, 5, true);
messageTo (self, "blowUp", destroyer, 15, true);
return SCRIPT_CONTINUE;
}
return SCRIPT_CONTINUE;
}
messageHandler blowUp()
{
obj_id viewer = params.getObjId("player");
obj_id bldg = params.getObjId ("bldg");
location death = getLocation (bldg);
playClientEffectLoc(viewer, "clienteffect/combat_explosion_lair_large.cef", death, 10f);
death.x = death.x + 5;
playClientEffectLoc(viewer, "clienteffect/combat_explosion_lair_large.cef", death, 10f);
death.z = death.z + 5;
playClientEffectLoc(viewer, "clienteffect/combat_explosion_lair_large.cef", death, 10f);
death.x = death.x - 10;
playClientEffectLoc(viewer, "clienteffect/combat_explosion_lair_large.cef", death, 10f);
death.z = death.z - 10;
playClientEffectLoc(viewer, "clienteffect/combat_explosion_lair_large.cef", death, 10f);
boolean blowUp = destroyObject (bldg);
dictionary destroyer = new dictionary();
destroyer.put ("player", viewer);
destroyer.put ("bldg", bldg);
messageTo (self, "bldgCheck", destroyer, 1, true);
return SCRIPT_CONTINUE;
}
messageHandler firstPop()
{
obj_id viewer = params.getObjId("player");
obj_id bldg = getTopMostContainer (self);
location death = getLocation (bldg);
playClientEffectLoc(viewer, "clienteffect/combat_explosion_lair_large.cef", death, 10f);
obj_id player = getObjIdObjVar (bldg, "player");
if (!hasObjVar (self, "sentMsgToPlayer"))
{
messageTo (player, "finishQuest", null, 0, true);
setObjVar (self, "sentMsgToPlayer", 1);
}
return SCRIPT_CONTINUE;
}
messageHandler bark()
{
debugSpeakMsg (self, "I'm right here at " + getLocation(self));
messageTo (self, "bark", null, 10, true);
return SCRIPT_CONTINUE;
}
messageHandler bldgCheck()
{
obj_id viewer = params.getObjId("player");
obj_id bldg = params.getObjId ("bldg");
if (exists (bldg))
{
sendSystemMessage (viewer, "System detects lifeforms inside building, shutting down self destruct", null);
}
else
{
destroyObject (self);
}
return SCRIPT_CONTINUE;
}