//************************************************************/ // 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, ""); }