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; }