mirror of
https://github.com/SWG-Source/dsrc.git
synced 2026-08-03 03:15:55 -04:00
236 lines
5.4 KiB
Plaintext
236 lines
5.4 KiB
Plaintext
/* Title: city_flag.script
|
|
* Description: script for placing objects in a player city
|
|
*/
|
|
|
|
//------------------------------------------------
|
|
// 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);
|
|
}
|