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

241 lines
5.6 KiB
Plaintext

/**
* Copyright (c) ©2003 Sony Online Entertainment Inc.
* All Rights Reserved
*
* Title: city_hall.script
* Description: city hall
* @author $Author:Thomas Blair$
* @version $Revision: 1.0$
*/
//------------------------------------------------
// Includes
//------------------------------------------------
include library.utils;
include library.sui;
const string_id SID_ALTER = new string_id("city/city", "alter_flag");
const string_id SID_PROMPT = new string_id("city/city", "flag_prompt");
const string_id SID_TITLE = new string_id("city/city", "flag_title");
const string PID_NAME = "cityFlag";
const string FLAG_CORELLIA = "object/tangible/furniture/city/flag_city_01.iff";
const string FLAG_DANTOOINE = "object/tangible/furniture/city/flag_city_02.iff";
const string FLAG_DATHOMIR = "object/tangible/furniture/city/flag_city_03.iff";
const string FLAG_ENDOR = "object/tangible/furniture/city/flag_city_04.iff";
const string FLAG_LOK = "object/tangible/furniture/city/flag_city_05.iff";
const string FLAG_NABOO = "object/tangible/furniture/city/flag_city_06.iff";
const string FLAG_RORI = "object/tangible/furniture/city/flag_city_07.iff";
const string FLAG_TALUS = "object/tangible/furniture/city/flag_city_08.iff";
const string FLAG_TATOOINE = "object/tangible/furniture/city/flag_city_09.iff";
const string FLAG_YAVIN = "object/tangible/furniture/city/flag_city_10.iff";
const string FLAG_IMPERIAL = "object/tangible/furniture/city/flag_city_11.iff";
const string FLAG_REBEL = "object/tangible/furniture/city/flag_city_12.iff";
const string FLAG_LIFEDAY_01 = "object/tangible/furniture/lifeday/lifeday_banner_s01.iff";
const string FLAG_LIFEDAY_02 = "object/tangible/furniture/lifeday/lifeday_banner_s02.iff";
const string FLAG_LIFEDAY_03 = "object/tangible/furniture/lifeday/lifeday_banner_s03.iff";
const string[] FLAG_SELECT_OPTIONS = {
"Corellia",
"Dantooine",
"Dathomir",
"Endor",
"Lok",
"Naboo",
"Rori",
"Talus",
"Tatooine",
"Yavin 4",
"Imperial",
"Rebel"
};
const string[] LIFEDAY_FLAG_SELECT_OPTIONS = {
"Wookiee Home Banner",
"Kachirho Cornucopia Banner",
"Life Day Orb Banner"
};
//------------------------------------------------
// OnInitialize
//------------------------------------------------
trigger OnInitialize()
{
return SCRIPT_CONTINUE;
}
trigger OnObjectMenuRequest( obj_id player, menu_info mi )
{
if (canManipulate(player, self, true, true, 15, true))
{
if (utils.isNestedWithinAPlayer(self))
{
mi.addRootMenu( menu_info_types.SERVER_MENU8, SID_ALTER );
}
}
return SCRIPT_CONTINUE;
}
trigger OnObjectMenuSelect( obj_id player, int item )
{
if(utils.getContainingPlayer(self) != player )
return SCRIPT_CONTINUE;
if( item == menu_info_types.SERVER_MENU8)
{
//fire off window to select flag
if(!sui.hasPid(player, PID_NAME))
{
string prompt = utils.packStringId(SID_PROMPT);
string title = utils.packStringId(SID_TITLE);
if(hasObjVar(self,"lifeday"))
{
int pid = sui.listbox(self, player, prompt, sui.OK_CANCEL, title, LIFEDAY_FLAG_SELECT_OPTIONS, "handleFlagSui", true, false);
sui.setPid(player, pid , PID_NAME);
}
else
{
int pid = sui.listbox(self, player, prompt, sui.OK_CANCEL, title, FLAG_SELECT_OPTIONS, "handleFlagSui", true, false);
sui.setPid(player, pid , PID_NAME);
}
}
}
return SCRIPT_CONTINUE;
}
//sui handler
messageHandler handleFlagSui()
{
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
//make sure player is Valid
if(!isIdValid(player))
{
cleanUpFlagVars(player);
return SCRIPT_CONTINUE;
}
//make sure player's inventory is valid
if (!isIdValid(pInv))
{
cleanUpFlagVars(player);
return SCRIPT_CONTINUE;
}
//has inventory space
if (getVolumeFree(pInv) <= 0)
{
cleanUpFlagVars (player);
return SCRIPT_CONTINUE;
}
//cancel button
if (btn == sui.BP_CANCEL)
{
cleanUpFlagVars(player);
return SCRIPT_CONTINUE;
}
//bad index
if (idx == -1 || idx > FLAG_SELECT_OPTIONS.length)
{
cleanUpFlagVars(player);
return SCRIPT_CONTINUE;
}
string flagName = "";
if(hasObjVar(self,"lifeday"))
{
switch(idx)
{
case 0:
flagName = FLAG_LIFEDAY_01;
break;
case 1:
flagName = FLAG_LIFEDAY_02;
break;
case 2:
flagName = FLAG_LIFEDAY_03;
break;
default:
//ERROR!
cleanUpFlagVars(player);
return SCRIPT_CONTINUE;
}
}
else
{
switch(idx)
{
case 0:
flagName = FLAG_CORELLIA;
break;
case 1:
flagName = FLAG_DANTOOINE;
break;
case 2:
flagName = FLAG_DATHOMIR;
break;
case 3:
flagName = FLAG_ENDOR;
break;
case 4:
flagName = FLAG_LOK;
break;
case 5:
flagName = FLAG_NABOO;
break;
case 6:
flagName = FLAG_RORI;
break;
case 7:
flagName = FLAG_TALUS;
break;
case 8:
flagName = FLAG_TATOOINE;
break;
case 9:
flagName = FLAG_YAVIN;
break;
case 10:
flagName = FLAG_IMPERIAL;
break;
case 11:
flagName = FLAG_REBEL;
break;
default:
//ERROR!
cleanUpFlagVars(player);
return SCRIPT_CONTINUE;
}
}
//make new flag
if(!flagName.equals(""))
{
obj_id newFlag = createObject(flagName, pInv, "");
//blow up old flag
if(isIdValid(newFlag))
destroyObject(self);
}
cleanUpFlagVars(player);
return SCRIPT_CONTINUE;
}
void cleanUpFlagVars(obj_id player)
{
sui.removePid(player, PID_NAME);
}