mirror of
https://github.com/SWG-Source/dsrc.git
synced 2026-07-28 22:15:54 -04:00
349 lines
11 KiB
Plaintext
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, "");
|
|
} |