include library.camping; include library.utils; trigger OnAttach() { messageTo(self, "handleTimeSensitiveData", null, 4, false); return SCRIPT_CONTINUE; } trigger OnGetAttributes(obj_id player, string[] names, string[] attribs) { int idx = utils.getValidAttributeIndex(names); if (idx == -1) return SCRIPT_CONTINUE; int destructTime = getIntObjVar(self, camping.VAR_DESTRUCT_TIME); if(destructTime <= 0) return SCRIPT_CONTINUE; names[idx] = "camp_destruction"; attribs[idx] = getCalendarTimeStringLocal(destructTime); idx++; names[idx] = "camp_timer"; attribs[idx] = utils.formatTimeVerbose(destructTime - getCalendarTime()); idx++; return SCRIPT_CONTINUE; } trigger OnObjectMenuRequest(obj_id player, menu_info mi) { menu_info_data data = mi.getMenuItemByType(menu_info_types.ITEM_USE); if(data != null) { data.setLabel(new string_id("camp","menu_dismantle")); data.setServerNotify(true); } return SCRIPT_CONTINUE; } trigger OnObjectMenuSelect(obj_id player, int item) { if(item == menu_info_types.ITEM_USE) { requestCampDismantle(self, player); } return SCRIPT_CONTINUE; } void requestCampDismantle(obj_id self, obj_id player) { if(!hasObjVar(self, "camp")) return; obj_id camp = getObjIdObjVar(self, "camp"); if(!isIdValid(camp)) return; if (hasObjVar(camp, "camp.owner")) { obj_id owner = utils.getObjIdObjVar(camp, "camp.owner"); if (player == owner) { destroyObject(camp); } else { sendSystemMessage(player, new string_id("camp", "owner_dismantle")); return; } } return; } messageHandler handleTimeSensitiveData() { obj_id camp = getObjIdObjVar(self, "camp"); if(!isValidId(camp) || !exists(camp)) return SCRIPT_CONTINUE; int lifeTime = (int)getFloatObjVar(camp, camping.VAR_LIFETIME); if(lifeTime <= 0) return SCRIPT_CONTINUE; int creationTime = getIntObjVar(camp, camping.VAR_CREATION_TIME); if(lifeTime <= 0) return SCRIPT_CONTINUE; int destructTime = creationTime + lifeTime; setObjVar(self, camping.VAR_DESTRUCT_TIME, destructTime); return SCRIPT_CONTINUE; }