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

349 lines
11 KiB
Plaintext

//************************************************************/
// Copyright (c) ©2000,2001 Sony Online Entertainment Inc.
// All Rights Reserved
//
// Title: qacybernetic.script
// Description: Testers will be able to install/uninstall/repair cybernetic limbs without having to find the correct NPCs.
// @author $Author: James Michener $
// @version $1.0.0$
//************************************************************/
/********* Includes ******************************************/
include library.utils;
include library.qa;
include library.sui;
include library.cybernetic;
/********* CONSTANTS *****************************************/
const string SCRIPTVAR = "qacybernetic";
const int INSTALL_OPTION = 0;
const int UNINSTALL_OPTION = 1;
const int REPAIR_OPTION = 2;
const int STRENGTH_ARM = 0;
const int LIGHTNING = 1;
const int BURST_RUN = 2;
const int REVIVE = 3;
const int ARMOR = 4;
const int SURE_SHOT = 5;
const int CRIT_SNIPE = 6;
const int KICK_DOWN = 7;
const string ARM_STRENGTH = "object/tangible/wearables/cybernetic/s02/cybernetic_s02_arm_l.iff";//Cyborg Strength Arm
const string ARM_LIGHTNING = "object/tangible/wearables/cybernetic/s02/cybernetic_s02_arm_r.iff";//Cyborg Lightning Arm
const string LEGS_BURST = "object/tangible/wearables/cybernetic/s02/cybernetic_s02_legs.iff";//Cyborg Burst Run Legs
const string ARM_REVIVE = "object/tangible/wearables/cybernetic/s03/cybernetic_s03_arm_l.iff";//Cyborg Revive Arm
const string ARM_ARMOR = "object/tangible/wearables/cybernetic/s03/cybernetic_s03_arm_r.iff";//Cyborg Armor Arm
const string ARM_SURESHOT = "object/tangible/wearables/cybernetic/s05/cybernetic_s05_arm_l.iff";//Cyborg Sure Shot Arm
const string ARM_SNIPE = "object/tangible/wearables/cybernetic/s05/cybernetic_s05_arm_r.iff";//Cyborg Critical Snipe Arm
const string LEGS_KICK = "object/tangible/wearables/cybernetic/s05/cybernetic_s05_legs.iff";//Cyborg Kick Down Legs
const string[] CYBER_MENU_LIST =
{
"Install",
"Uninstall",
"Repair"
};
const string[] CYBERNETIC_LIST_OPTIONS =
{
"Cyborg Strength Arm",
"Cyborg Lightning Arm",
"Cyborg Burst Run Legs",
"Cyborg Revive Arm",
"Cyborg Armor Arm",
"Cyborg Sure Shot Arm",
"Cyborg Critical Snipe Arm",
"Cyborg Kick Down Legs"
};
/********* Triggers ******************************************/
trigger OnAttach()
{
if(isGod(self))
{
if(getGodLevel(self) < 10)
{
detachScript(self, "test.qa_cybernetic");
sendSystemMessage(self, "You do not have the appropriate access level to use this script.", null);
}
}
else if(!isGod(self))
{
detachScript(self, "test.qa_cybernetic");
}
return SCRIPT_CONTINUE;
}
trigger OnSpeaking(string text)
{
if(isGod(self))
{
if(toLower(text).equals(SCRIPTVAR))
{
//FUNCTION TO SHOW THE MAIN MENU OF THE TOOL
toolCyberMainMenu(self);
return SCRIPT_OVERRIDE;
}
}
return SCRIPT_CONTINUE;
}
/***** MESSAGEHANDLERS *************************************************/
//main menu - tester chooses to ether install, uninstall or repair cybernetics
messageHandler handleChoice()
{
if(isGod(self))
{
obj_id player = sui.getPlayerId(params);
int btn = sui.getIntButtonPressed(params);
if(btn == sui.BP_CANCEL)
{
qa.removePlayer(player, SCRIPTVAR, "");
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_REVERT)
{
qa.qaToolMainMenu(player);
utils.removeScriptVarTree(player, SCRIPTVAR);
return SCRIPT_CONTINUE;
}
int idx = sui.getListboxSelectedRow(params);
if(idx < 0)
{
qa.removePlayer(player, SCRIPTVAR, "");
return SCRIPT_CONTINUE;
}
switch(idx)
{
case INSTALL_OPTION:
//check to see if the tester has the max number of cybernetics installed.
boolean boolCheck = cybernetic.hasMaxInstalled(player);
if(boolCheck == false)
{
installChoiceMenu(player);
}
else
{
sendSystemMessageTestingOnly(player, "This character already has the maximum number of Cybernetics installed!");
}
break;
case UNINSTALL_OPTION:
utils.setScriptVar(player, SCRIPTVAR+".uninstall", "uninstall");
getAttachedCybers(player);
break;
case REPAIR_OPTION:
utils.setScriptVar(player, SCRIPTVAR+".repair", "repair");
getAttachedCybers(player);
break;
default:
qa.refreshMenu(player, " - Cybernetic Main Menu - \nSelect Install, Uninstall or Repair", "Cybernetic Tool", CYBERNETIC_LIST_OPTIONS, "handleChoice", SCRIPTVAR+".pid", SCRIPTVAR+".CyberMainMenu", sui.OK_CANCEL_REFRESH);
return SCRIPT_CONTINUE;
}
}
return SCRIPT_CONTINUE;
}
//This is a list of cybernetics a tester can install
messageHandler handleInstallOptions()
{
if(isGod(self))
{
obj_id player = sui.getPlayerId(params);
int btn = sui.getIntButtonPressed(params);
if(btn == sui.BP_CANCEL)
{
qa.removePlayer(player, SCRIPTVAR, "");
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_REVERT)
{
qa.refreshMenu(player, " - Cybernetic Main Menu - \nSelect Install, Uninstall or Repair", "Cybernetic Tool", CYBERNETIC_LIST_OPTIONS, "handleChoice", SCRIPTVAR+".pid", SCRIPTVAR+".CyberMainMenu", sui.OK_CANCEL_REFRESH);
return SCRIPT_CONTINUE;
}
int idx = sui.getListboxSelectedRow(params);
if(idx < 0)
{
qa.removePlayer(player, SCRIPTVAR, "");
return SCRIPT_CONTINUE;
}
switch(idx)
{
case STRENGTH_ARM:
utils.setScriptVar(player, SCRIPTVAR+".cyberChoice", ARM_STRENGTH);
installCyber(player);
break;
case LIGHTNING:
utils.setScriptVar(player, SCRIPTVAR+".cyberChoice", ARM_LIGHTNING);
installCyber(player);
break;
case BURST_RUN:
utils.setScriptVar(player, SCRIPTVAR+".cyberChoice", LEGS_BURST);
installCyber(player);
break;
case REVIVE:
utils.setScriptVar(player, SCRIPTVAR+".cyberChoice", ARM_REVIVE);
installCyber(player);
break;
case ARMOR:
utils.setScriptVar(player, SCRIPTVAR+".cyberChoice", ARM_ARMOR);
installCyber(player);
break;
case SURE_SHOT:
utils.setScriptVar(player, SCRIPTVAR+".cyberChoice", ARM_SURESHOT);
installCyber(player);
break;
case CRIT_SNIPE:
utils.setScriptVar(player, SCRIPTVAR+".cyberChoice", ARM_SNIPE);
installCyber(player);
break;
case KICK_DOWN:
utils.setScriptVar(player, SCRIPTVAR+".cyberChoice", LEGS_KICK);
installCyber(player);
break;
default:
qa.refreshMenu(player, " - Cybernetic Main Menu - \nSelect Install, Uninstall or Repair", "Cybernetic Tool", CYBERNETIC_LIST_OPTIONS, "handleChoice", SCRIPTVAR+".pid", SCRIPTVAR+".CyberMainMenu", sui.OK_CANCEL_REFRESH);
return SCRIPT_CONTINUE;
}
}
return SCRIPT_CONTINUE;
}
//handles the uninstall list - this lists cybernetics currently installed on the tester
messageHandler handleUninstallRepairChoice()
{
if(isGod(self))
{
obj_id player = sui.getPlayerId(params);
int btn = sui.getIntButtonPressed(params);
if(btn == sui.BP_CANCEL)
{
qa.removePlayer(player, SCRIPTVAR, "");
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_REVERT)
{
qa.refreshMenu(player, " - Cybernetic Main Menu - \nSelect Install, Uninstall or Repair", "Cybernetic Tool", CYBERNETIC_LIST_OPTIONS, "handleChoice", SCRIPTVAR+".pid", SCRIPTVAR+".CyberMainMenu", sui.OK_CANCEL_REFRESH);
return SCRIPT_CONTINUE;
}
int idx = sui.getListboxSelectedRow(params);
if(idx < 0)
{
qa.removePlayer(player, SCRIPTVAR, "");
return SCRIPT_CONTINUE;
}
string[] list = utils.getStringArrayScriptVar(player, SCRIPTVAR+".cyberList");
obj_id[] idxObj_id_list = utils.getObjIdArrayScriptVar(player, SCRIPTVAR+".cyberID");
obj_id idxObj_id = idxObj_id_list[idx];
if(utils.hasScriptVar(player, SCRIPTVAR+".uninstall"))
{
removeCyber(player, idxObj_id);
}
else if(utils.hasScriptVar(player, SCRIPTVAR+".repair"))
{
repairCyber(player, idxObj_id);
}
else
{
sendSystemMessageTestingOnly(player, "An error has occurred, please try again.");
toolCyberMainMenu(player);
}
}
return SCRIPT_CONTINUE;
}
//***** FUNCTIONS *******************************************************
//BUILDS THE Cybernetic Tool MAIN MENU
void toolCyberMainMenu(obj_id player)
{
qa.refreshMenu(player, "- Cybernetic Install Menu -\nSelect Install, Uninstall or Repair.", "Cybernetic Tool", CYBER_MENU_LIST, "handleChoice", SCRIPTVAR+".pid", SCRIPTVAR+".CyberMainMenu", sui.OK_CANCEL_REFRESH);
}
//Builds the install choice menu - this is a list of available cybernetic limbs
void installChoiceMenu(obj_id player)
{
qa.refreshMenu(player, "- Cybernetic List Menu -\nSelect a Cybernetic to install.", "Cybernetic Tool", CYBERNETIC_LIST_OPTIONS, "handleInstallOptions", SCRIPTVAR+".pid", SCRIPTVAR+".CyberInstallMenu", sui.OK_CANCEL_REFRESH);
}
//show the player which cybernetics are currently installed
void uninstallChoices(obj_id player, string[] list)
{
qa.refreshMenu(player, "- Cybernetic Uninstall Menu -\nChoose a Cybernetic to Uninstall.", "Cybernetic Tool", list, "handleUninstallRepairChoice", SCRIPTVAR+".pid", SCRIPTVAR+".uninstallMenu", sui.OK_CANCEL_REFRESH);
}
//show the player which cybernetics are currently installed
void repairChoices(obj_id player, string[] list)
{
qa.refreshMenu(player, "- Cybernetic Repair Menu -\nChoose a Cybernetic to Repair.", "Cybernetic Tool", list, "handleUninstallRepairChoice", SCRIPTVAR+".pid", SCRIPTVAR+".uninstallMenu", sui.OK_CANCEL_REFRESH);
}
//install the cybernetic the player chooses
void installCyber(obj_id player)
{
if(utils.hasScriptVar(player, SCRIPTVAR+".cyberChoice"))
{
string myLimb = utils.getStringScriptVar(player, SCRIPTVAR+".cyberChoice");
obj_id inventory = utils.getInventoryContainer(player);
obj_id cyberItemID = createObject(myLimb, inventory, "");
cybernetic.installCyberneticItem(player, player, cyberItemID);
}
else
{
sendSystemMessageTestingOnly(player, "An error has occurred, please try again.");
toolCyberMainMenu(player);
}
qa.removePlayer(player, SCRIPTVAR, "");
}
//repairCyberneticItem(obj_id player, obj_id npc, obj_id item)
void getAttachedCybers(obj_id player)
{
Vector installList = new Vector();
obj_id[] installed = cybernetic.getInstalledCybernetics(player);
if(installed != null)
{
for(int i = 0; i < installed.length; i++)
{
string itemName = getTemplateName(installed[i]);
installList.add(itemName);
}
string[] list = new string[installList.size()];
installList.toArray(list);
utils.setScriptVar(player, SCRIPTVAR+".cyberID", installed);
utils.setScriptVar(player, SCRIPTVAR+".cyberList", list);
if(utils.hasScriptVar(player, SCRIPTVAR+".uninstall"))
{
uninstallChoices(player, list);
}
else if(utils.hasScriptVar(player, SCRIPTVAR+".repair"))
{
repairChoices(player, list);
}
else
{
sendSystemMessageTestingOnly(player, "An error has occurred, please try again.");
toolCyberMainMenu(player);
}
}
else
{
sendSystemMessageTestingOnly(player, "There are not cybernetics installed on this character.");
toolCyberMainMenu(player);
}
}
//remove cybernetics once the tester has chosen which to remove
void removeCyber(obj_id player, obj_id idxObj_id)
{
cybernetic.unInstallCyberneticItem(player, player, idxObj_id);
qa.removePlayer(player, SCRIPTVAR, "");
}
//repair cybernetics once the tester has chosen which to repair
void repairCyber(obj_id player, obj_id idxObj_id)
{
cybernetic.repairCyberneticItem(player, player, idxObj_id);
qa.removePlayer(player, SCRIPTVAR, "");
}