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

220 lines
6.1 KiB
Plaintext

include library.hue;
include library.sui;
include library.utils;
include library.features;
const string_id MNU_COLOR = new string_id("sui", "set_color");
const string_id MNU_COLOR_LENS = new string_id("sui", "color_lens");
const string_id MNU_COLOR_FRAME = new string_id("sui", "color_frame");
const string SCRIPTVAR_FRAME_PID = "goggles.frame.pid";
const string SCRIPTVAR_LENS_PID = "goggles.lens.pid";
const string TBL = "datatables/item/goggles/indices.iff";
const string[] COLLECTOR_EDITION_ITEMS =
{ "object/tangible/wearables/goggles/goggles_s01.iff",
"object/tangible/wearables/goggles/goggles_s02.iff",
"object/tangible/wearables/goggles/goggles_s03.iff",
"object/tangible/wearables/goggles/goggles_s04.iff",
"object/tangible/wearables/goggles/goggles_s05.iff",
"object/tangible/wearables/goggles/goggles_s06.iff" };
trigger OnInitialize()
{
messageTo (self, "validateGoggles", null, 5, false);
setHitpoints(self, getMaxHitpoints(self));
setAutoInsured(self);
return SCRIPT_CONTINUE;
}
trigger OnObjectMenuRequest(obj_id player, menu_info mi)
{
if ( !utils.isNestedWithin(self, player) )
return SCRIPT_CONTINUE;
string template = utils.getTemplateFilenameNoPath(self);
string frameVar = dataTableGetString(TBL, template, "FRAME");
string lensVar = dataTableGetString(TBL, template, "LENS");
if ( (frameVar != null && !frameVar.equals("") && !frameVar.equals("none")) || (lensVar != null && !lensVar.equals("") && !lensVar.equals("none")) )
{
int mnuColor = mi.addRootMenu(menu_info_types.SERVER_MENU1, MNU_COLOR);
if ( mnuColor > -1 && (( getContainedBy(self) != getOwner(self) ) || isGod(player)) )
{
if ( frameVar != null && !frameVar.equals("") && !frameVar.equals("none") )
int mnuColorFrame = mi.addSubMenu(mnuColor, menu_info_types.SERVER_MENU2, MNU_COLOR_FRAME);
if ( lensVar != null && !lensVar.equals("") && !lensVar.equals("none") )
int mnuColorLens = mi.addSubMenu(mnuColor, menu_info_types.SERVER_MENU3, MNU_COLOR_LENS);
}
}
return SCRIPT_CONTINUE;
}
trigger OnObjectMenuSelect(obj_id player, int item)
{
if ( !utils.isNestedWithin(self, player) )
return SCRIPT_CONTINUE;
string template = utils.getTemplateFilenameNoPath(self);
if ( item == menu_info_types.SERVER_MENU1 )
{
if ( getContainedBy(self) == getOwner(self) )
{
sendSystemMessage (player, new string_id ("error_message", "equipped_goggles")); // You may only alter the color of your goggles when they are unequipped.
}
else
{
sendSystemMessage (player, new string_id ("error_message", "goggle_submenu")); // Please select a sub-option to set the color of your goggles.
}
}
else if ( item == menu_info_types.SERVER_MENU2 ) //color frame
{
if ( utils.hasScriptVar(self, SCRIPTVAR_FRAME_PID) )
{
int oldpid = utils.getIntScriptVar(self, SCRIPTVAR_FRAME_PID);
sui.closeSUI(player, oldpid);
utils.removeScriptVar(self, SCRIPTVAR_FRAME_PID);
}
string frameVar = dataTableGetString(TBL, template, "FRAME");
if ( frameVar != null && !frameVar.equals("") && !frameVar.equals("none") )
{
int pid_frame = sui.colorize(self, player, self, frameVar, "handleColorizeFrame");
if ( pid_frame > -1 )
utils.setScriptVar(self, SCRIPTVAR_FRAME_PID, pid_frame);
}
}
else if ( item == menu_info_types.SERVER_MENU3 ) //color lens
{
if ( utils.hasScriptVar(self, SCRIPTVAR_LENS_PID) )
{
int oldpid = utils.getIntScriptVar(self, SCRIPTVAR_LENS_PID);
sui.closeSUI(player, oldpid);
utils.removeScriptVar(self, SCRIPTVAR_LENS_PID);
}
string lensVar = dataTableGetString(TBL, template, "LENS");
if ( lensVar != null && !lensVar.equals("") && !lensVar.equals("none") )
{
int pid_lens = sui.colorize(self, player, self, lensVar, "handleColorizeLens");
if ( pid_lens > -1 )
utils.setScriptVar(self, SCRIPTVAR_LENS_PID, pid_lens);
}
}
return SCRIPT_CONTINUE;
}
messageHandler handleColorizeFrame()
{
utils.removeScriptVar(self, SCRIPTVAR_FRAME_PID);
int bp = sui.getIntButtonPressed(params);
if ( bp == sui.BP_CANCEL )
return SCRIPT_CONTINUE;
obj_id player = sui.getPlayerId(params);
if ( !isIdValid(player) )
return SCRIPT_CONTINUE;
string template = utils.getTemplateFilenameNoPath(self);
string frameVar = dataTableGetString(TBL, template, "FRAME");
if ( frameVar != null && !frameVar.equals("") && !frameVar.equals("none") )
{
int idx = sui.getColorPickerIndex(params);
if ( idx > -1 )
{
hue.setColor(self, frameVar, idx);
}
}
return SCRIPT_CONTINUE;
}
messageHandler handleColorizeLens()
{
utils.removeScriptVar(self, SCRIPTVAR_LENS_PID);
int bp = sui.getIntButtonPressed(params);
if ( bp == sui.BP_CANCEL )
return SCRIPT_CONTINUE;
obj_id player = sui.getPlayerId(params);
if ( !isIdValid(player) )
return SCRIPT_CONTINUE;
string template = utils.getTemplateFilenameNoPath(self);
string lensVar = dataTableGetString(TBL, template, "LENS");
if ( lensVar != null && !lensVar.equals("") && !lensVar.equals("none") )
{
int idx = sui.getColorPickerIndex(params);
if ( idx > -1 )
{
hue.setColor(self, lensVar, idx);
}
}
return SCRIPT_CONTINUE;
}
messageHandler validateGoggles()
{
boolean validGoggles = true;
if (!isSEGoggle(self))
return SCRIPT_CONTINUE;
obj_id owner = getOwner(self);
if (!isIdValid(owner))
validGoggles = false;
else
{
obj_id inv = utils.getInventoryContainer(owner);
obj_id bank = utils.getPlayerBank(owner);
obj_id objOnFace = getObjectInSlot(owner, "eyes");
if ( !isIdValid(inv) || !isIdValid(bank) )
validGoggles = false;
if (!features.isCollectorEdition(owner))
validGoggles = false;
else
{
obj_id container = getContainedBy(self);
if (!( container == inv || container == bank || objOnFace == self))
validGoggles = false;
}
}
if (!validGoggles)
{
if (isIdValid(owner))
sendSystemMessage (owner, new string_id ("error_message", "destroy_goggle"));
destroyObject(self);
return SCRIPT_CONTINUE;
}
return SCRIPT_CONTINUE;
}
boolean isSEGoggle(obj_id item)
{
for ( int i = 0; i < COLLECTOR_EDITION_ITEMS.length; i++ )
{
if (getTemplateName(item) == COLLECTOR_EDITION_ITEMS[i])
return true;
}
return false;
}