Files
dsrc/sku.0/sys.server/compiled/game/script/terminal/terminal_camp.script
T
2013-09-10 23:17:15 -07:00

101 lines
2.0 KiB
Plaintext

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