Files
dsrc/sku.0/sys.server/compiled/game/script/terminal/terminal_character_builder.script
T

10827 lines
316 KiB
Plaintext

/**********************************************************************
* Copyright (c)2000-2002 Sony Online Entertainment Inc.
* All Rights Reserved
*
* Title: terminal_character_builder.script
* Description: Script that drives the Character Builder Terminals
* @author Thomas Blair
* @version 1.0
**********************************************************************/
/***** INCLUDES ********************************************************/
include library.ai_lib;
include library.armor;
include library.beast_lib;
include library.buff;
include library.callable;
include library.chat;
include library.consumable;
include library.craftinglib;
include library.create;
include library.expertise;
include library.factions;
include library.gm;
include library.healing;
include library.incubator;
include library.instance;
include library.jedi;
include library.money;
include library.pet_lib;
include library.player_stomach;
include library.prose;
include library.resource;
include library.respec;
include library.skill;
include library.skill_template;
include library.space_crafting;
include library.space_flags;
include library.space_skill;
include library.space_transition;
include library.space_utils;
include library.static_item;
include library.stealth;
include library.sui;
include library.utils;
include library.weapons;
/*
Old Republic one/two handed lightsaber
Jinsu Razor
Juyo Saberstaff
*/
/***** INHERITS ********************************************************/
//inherits terminal.base.terminal_add_use;
/***** CONSTANTS *******************************************************/
const int CASH_AMOUNT = 100000000;
const int AMT = 1000000;
const int FACTION_AMT = 250000;
// Weapon Values
const float WEAPON_SPEED = 1.0f;
const float WEAPON_DAMAGE = 1.0f;
const float WEAPON_ELEMENTAL = 1.0f;
const float WEAPON_EFFECIENCY = 1.0f;
// WEAPON_SPEED, WEAPON_DAMAGE, WEAPON_EFFECIENCY, WEAPON_ELEMENTAL) to float speed, float damage, float effeciency, float elementalVal)
const float CONDITION = 1.0f;
const float GENERAL_PROTECTION = 0.94f; //general protection on armor range from 0 - 1.0
const string SKILL_TBL = "datatables/skill/skills.iff";
const string HEROIC_JEWELRY_SETS = "datatables/skill/character_builder_heroic_jewelry.iff";
const string SKILL_LOADOUT_TBL = "datatables/skill/loadout.iff";
const string EXOTIC_SKILL_MODS = "datatables/crafting/reverse_engineering_mods.iff";
const string SHIP_CHASSIS_TBL = "datatables/ship/components/character_builder/frog_chassis.iff";
const string SHIPCOMPONENT_ARMOR_TBL = "datatables/ship/components/character_builder/frog_armor.iff";
const string SHIPCOMPONENT_BOOSTER_TBL = "datatables/ship/components/character_builder/frog_booster.iff";
const string SHIPCOMPONENT_DROIDINTERFACE_TBL = "datatables/ship/components/character_builder/frog_droid_interface.iff";
const string SHIPCOMPONENT_ENGINE_TBL = "datatables/ship/components/character_builder/frog_engine.iff";
const string SHIPCOMPONENT_REACTOR_TBL = "datatables/ship/components/character_builder/frog_reactor.iff";
const string SHIPCOMPONENT_SHIELD_TBL = "datatables/ship/components/character_builder/frog_shield.iff";
const string SHIPCOMPONENT_WEAPON_TBL = "datatables/ship/components/character_builder/frog_weapon.iff";
const string SHIPCOMPONENT_CAPACITOR_TBL = "datatables/ship/components/character_builder/frog_capacitor.iff";
const string GENERIC_PROMPT = "Select the desired option";
const string GENERIC_TITLE = "Character Builder Terminal";
const string_id SID_TERMINAL_PROMPT = new string_id("skill_teacher","skill_terminal_prompt");
const string_id SID_TERMINAL_TITLE = new string_id("skill_teacher","skill_terminal_title");
const string_id SID_TERMINAL_DISABLED = new string_id("skill_teacher","skill_terminal_disabled");
const string_id SID_TERMINAL_DENIED = new string_id("skill_teacher","skill_terminal_denied");
const string_id SID_TERMINAL_MAX_SKILLS = new string_id("skill_teacher","skill_terminal_max_skills");
const string_id PROSE_GRANT_SKILL = new string_id("skill_teacher","skill_terminal_grant");
const string_id PROSE_GRANT_SKILL_FAIL = new string_id("skill_teacher","skill_terminal_grant_fail");
const string[] CHARACTER_BUILDER_OPTIONS = {
"Weapons",
"Armor Sets",
"Roadmap Skill Builder",
"Resources",
"Credits",
"Faction",
"Vehicles/Mounts/Beasts",
"Ships",
"Crafting Items",
"Structure Deeds",
"PA Halls",
"Misc Items/Medicines",
"Jedi Options",
"Best Resource",
"Flag for All Heroic Instances",
"Draft Schematics"
};
const string[] RESOURCE_TYPES = {
"Creature Resources",
"Flora Resources",
"Chemical",
"Water",
"Mineral",
"Gas",
"Energy",
"Asteroid"
};
const string[] BEST_RESOURCE_TYPES = {
"Creature Resources",
"Flora Resources",
"Chemical",
"Water",
"Mineral",
"Gas",
"Energy",
"Asteroid",
"Filter by specific attribute"
};
const string[] SPACE_RESOURCE_LOCALIZED =
{
"@resource/resource_names:space_chemical_acid",
"@resource/resource_names:space_chemical_cyanomethanic",
"@resource/resource_names:space_chemical_petrochem",
"@resource/resource_names:space_chemical_sulfuric",
"@resource/resource_names:space_gas_methane",
"@resource/resource_names:space_gas_organometallic",
"@resource/resource_names:space_gem_crystal",
"@resource/resource_names:space_gem_diamond",
"@resource/resource_names:space_metal_carbonaceous",
"@resource/resource_names:space_metal_ice",
"@resource/resource_names:space_metal_iron",
"@resource/resource_names:space_metal_obsidian",
"@resource/resource_names:space_metal_silicaceous"
};
const string[] SPACE_RESOURCE_CONST =
{
"space_chemical_acid",
"space_chemical_cyanomethanic",
"space_chemical_petrochem",
"space_chemical_sulfuric",
"space_gas_methane",
"space_gas_organometallic",
"space_gem_crystal",
"space_gem_diamond",
"space_metal_carbonaceous",
"space_metal_ice",
"space_metal_iron",
"space_metal_obsidian",
"space_metal_silicaceous"
};
const string[] RESOURCE_BASE_TYPES = {
"creature_resources",
"flora_resources",
"chemical",
"water",
"mineral",
"gas",
"energy",
"Asteroid"
};
const string[] VEHICLE_MOUNT_OPTIONS = {
"Vehicles",
"Mounts",
"Beasts",
"Make Beast Level 90",
"Increase Beast Loyalty",
"Master Taming Necklace"
};
const string[] VEHICLE_OPTIONS = {
"Swoop",
"Speederbike",
"X34",
"AB1",
"V35",
"XP38",
"Barc Speeder",
"AV21",
"X31",
"Flash Speeder"
};
const string[] MOUNT_OPTIONS = {
"Carrion Spat",
"Kaduu",
"Dewback",
"Bol",
"Falumpaset",
"Brackaset",
"Cu Pa - Creature Handler Version",
"Bantha - Creature Handler Version"
};
const string[] BEAST_OPTIONS_FOR_PLAYERS = {
"angler",
"bageraset",
"bantha",
"bark_mite",
"bearded_jax",
"boar_wolf",
"bocatt",
"bolle_bol",
"bordok",
"borgle",
"blurrg",
"capper_spineflap",
"choku",
"chuba",
"condor_dragon",
"dalyrake",
"durni",
"fambaa",
"gronda",
"gurk",
"ikopi",
"mamien",
"mynock",
"quenker",
"reptilian_flier"
};
const string[] BEAST_OPTIONS = {
"acklay",
"angler",
"bageraset",
"bantha",
"bark_mite",
"baz_nitch",
"bearded_jax",
"blistmok",
"blurrg",
"boar_wolf",
"bocatt",
"bol",
"bolle_bol",
"bolma",
"bolotaur",
"bordok",
"borgle",
"brackaset",
"capper_spineflap",
"carrion_spat",
"choku",
"chuba",
"condor_dragon",
"corellian_butterfly",
"corellian_sand_panther",
"corellian_slice_hound",
"crystal_snake",
"cu_pa",
"dalyrake",
"dewback",
"dune_lizard",
"durni",
"dwarf_nuna",
"eopie",
"falumpaset",
"fambaa",
"fanned_rawl",
"flewt",
"flit",
"fynock",
"gackle_bat",
"gaping_spider",
"gnort",
"graul",
"gronda",
"gualama",
"gubbur",
"guf_drolg",
"gulginaw",
"gurk",
"gurnaset",
"gurreck",
"hanadak",
"hermit_spider",
"horned_krevol",
"horned_rasp",
"huf_dun",
"huurton",
"ikopi",
"jundak",
"kaadu",
"kai_tok",
"kashyyyk_bantha",
"kima",
"kimogila",
"kittle",
"kliknik",
"krahbu",
"kubaza_beetle",
"kusak",
"kwi",
"langlatch",
"lantern_bird",
"lava_flea",
"malkloc",
"mamien",
"mawgax",
"merek",
"minstyngar",
"mott",
"mouf",
"murra",
"mutated_acklay",
"mutated_boar",
"mutated_borgax",
"mutated_cat",
"mutated_chuba_fly",
"mutated_cu_pa",
"mutated_dewback",
"mutated_griffon",
"mutated_jax",
"mutated_quenker",
"mutated_rancor",
"mutated_slice_hound",
"mutated_varasquactyl",
"mynock",
"narglatch",
"nerf",
"nuna",
"peko_peko",
"perlek",
"pharple",
"piket",
"plumed_rasp",
"pugoriss",
"purbole",
"quenker",
"rancor",
"remmer",
"reptilian_flier",
"roba",
"rock_mite",
"ronto",
"salt_mynock",
"sharnaff",
"shaupaut",
"shear_mite",
"skreeg",
"snorbal",
"spined_puc",
"spined_snake",
"squall",
"squill",
"stintaril",
"swirl_prong",
"tanc_mite",
"tanray",
"tauntaun",
"thune",
"torton",
"tulrus",
"tusk_cat",
"tybis",
"uller",
"varactyl",
"veermok",
"verne",
"vesp",
"vir_vur",
"voritor_lizard",
"vynock",
"walluga",
"wampa",
"webweaver",
"whisper_bird",
"womp_rat",
"woolamander",
"worrt",
"xandank",
"zucca_boar"
};
const string[] SHIP_OPTIONS = {
"Rebel",
"Imperial",
"Freelance",
"Other",
"Parts",
"Pilot Skills"
};
const string[] REBEL_SHIP_OPTIONS = {
"Incom X4 Gunship",
"Z95",
"Y-Wing",
"Y-Wing Longprobe",
"X-Wing",
"Advanced X-Wing",
"A-Wing",
"B-Wing",
"YKL-37R Nova Courier"
};
const string[] REBEL_SHIP_TYPES = {
"gunship_rebel",
"z95",
"ywing",
"ywing_longprobe",
"xwing",
"advanced_xwing",
"awing",
"bwing",
"ykl37r"
};
const string[] IMPERIAL_SHIP_OPTIONS = {
"Imperial YE-4 Gunship",
"TIE Fighter (Light Duty)",
"TIE Fighter",
"TIE/In",
"TIE Interceptor",
"TIE Bomber",
"TIE Advanced",
"TIE Aggressor",
"TIE Interceptor (Imperial Guard)",
"VT-49 Decimator"
};
const string[] IMPERIAL_SHIP_TYPES = {
"gunship_imperial",
"tie_light_duty",
"tiefighter",
"tie_in",
"tieinterceptor",
"tiebomber",
"tieadvanced",
"tieaggressor",
"tieinterceptor_imperial_guard",
"decimator"
};
const string[] FREELANCE_SHIP_OPTIONS = {
"Blacksun AEG-77 Vigo Gunship",
"Naboo N-1",
"Scyk",
"Dunelizard",
"Kimogila",
"Kihraxz",
"Ixiyen",
"Rihkxyrk",
"Vaksai",
"Krayt",
};
const string[] FREELANCE_SHIP_TYPES = {
"gunship_neutral",
"naboo_n1",
"hutt_light_s01",
"hutt_medium_s01",
"hutt_heavy_s01",
"blacksun_light_s01",
"blacksun_medium_s01",
"blacksun_heavy_s01",
"blacksun_vaksai",
"hutt_turret_ship",
};
const string[] OTHER_SHIP_OPTIONS = {
"Sorosuub",
"Eta-2 Actis (Jedi Starfighter)",
"Belbullab-22 (Grievous' Starship)",
"ARC-170",
"KSE Firespray",
"Y-8 Mining Ship",
"YT-1300",
"YT-2400"
};
const string[] OTHER_SHIP_TYPES = {
"sorosuub_space_yacht",
"jedi_starfighter",
"grievous_starship",
"arc170",
"firespray",
"y8_mining_ship",
"yt1300",
"yt2400"
};
const string[] MAIN_SHIP_OPTIONS = {
"Ship Components",
"Ship Chassis",
"Gunship Collection Reward Schematics",
"Component Schematics",
"Pilot Skills"
};
const string[] PILOT_SKILLS = { "Master Imperial Pilot",
"Master Rebel Pilot",
"Neutral Pilot",
"Revoke Pilot"
};
const string[] DEED_CRAFTING_OPTIONS = {
"Deeds",
"Crafting Items"
};
const string[] DEED_OPTIONS = {
"Clothing Factory",
"Food Factory",
"Equipment Factory",
"Structure Factory",
"Generic House",
"Small Tatooine House",
"Small Naboo House",
"Small Corellia House",
"Merchant Tent",
"Heavy Mineral Harvester",
"Heavy Flora Harvester",
"Heavy Gas Harvester",
"Heavy Chemical Harvester",
"Heavy Moisture Vaporator",
"Fusion Reactor",
"Corellia City Pack",
"Naboo City Pack",
"Tatooine City Pack"
};
const string[] CRAFTING_OPTIONS = {
"Weapon Crafting Station",
"Structure Crafting Station",
"Clothing Crafting Station",
"Food Crafting Station",
"Generic Crafting Tool",
"Weapon Crafting Tool",
"Structure Crafting Tool",
"Clothing Crafting Tool",
"Food Crafting Tool",
"Ship Crafting Tool",
"Ship Crafting Station"
};
const string[] PA_OPTIONS = {
"Generic PA Hall",
"Tatooine PA Hall",
"Naboo PA Hall",
"Corellia PA Hall",
"Tatooine City Hall",
"Naboo City Hall",
"Corellia City Hall"
};
const string[] WEAPON_OPTIONS = {
"Pistols",
"Carbines",
"Rifles",
"Heavy Weapons",
"Unarmed Weapons",
"One-Handed Weapons",
"Two-Handed Weapons",
"Polearm Weapons",
"Battlefield Weapons"
// "Grenade Weapons"
};
const string[] PISTOL_OPTIONS = {
"CDEF Pistol",
"Scout Blaster",
"Geonosian Sonic Blaster",
"Republic Blaster",
"Launcher",
"High Capacity Scatter Pistol",
"Scatter Pistol",
"SR Combat",
"Striker",
"Tangle",
"Power5",
"FWG5",
"DX2",
"DL44 XT",
"DL44",
"DH17",
"D18",
"Alliance Disruptor",
"Deathhammer",
"Flare Pistol",
"Flechette Pistol",
"Intimidator",
"Jawa Pistol",
"Renegade Pistol",
"DE-10",
"DL44 Metal",
"Disruptor Pistol",
"Ion Relic Pistol",
"Pistol Lamprey"
};
const string[] CARBINE_OPTIONS = {
"CDEF Carbine",
"DH 17 Carbine",
"DH 17 Snubnose",
"E11 Carbine",
"E11 Carbine Mark 2",
"Laser",
"DxR 6",
"EE 3",
"Elite Carbine",
"Nym Slugthrower",
"Alliance Needler",
"Bothan Bola",
"E 5 Carbine",
"Geonosian Carbine",
"Proton Carbine",
"Czerka Dart Carbine",
"Sfor Carbine",
"Whistler Modified"
};
const string[] RIFLE_OPTIONS = {
"BWDL19 Rifle (Death Trooper)",
"TC-22 Blaster Rifle Replica (GCW Rifle)",
"Jinkins J-1 Rifle (Nym's Themepark)",
"CDEF",
"DLT 20",
"DLT 20a",
"Tusken",
"Advanced Laser Rifle",
"SG 82",
"Spraystick",
"E 11",
"Jawa Ion",
"T 21",
"Tenloss DxR 6",
"Beserker",
"Light Bowcaster",
"Recon Bowcaster",
"Assault Bowcaster",
"Beam Rifle",
"Acid Beam Rifle",
"High Velocity Sniper Rifle",
"LD 1 Rifle",
"Massassi Ink Rifle",
"Proton Rifle",
"Lightning Rifle",
"Laser Rifle",
"Heavy Lightning Rifle",
"DP-23 Rifle",
"Mustafar Disruptor Rifle",
"Tusken Elite"
};
const string[] HEAVY_WEAPON_OPTIONS = {
"Rocket Launcher",
"Plasma Flame Thrower",
"Acid Beam",
"Light Lightning Canon",
"Heavy Acid Beam",
"Heavy Lighting Beam",
"Heavy Particle Beam",
"Flame Thrower",
"Heavy Republic Flame Thrower",
"Lava Cannon",
"Crusader M-XX Heavy Rifle",
"C-M 'Frag Storm' Heavy Shotgun",
"Devastator Acid Launcher",
"CC-V 'Legion' Cryo Projector"
};
const string[] UNARMED_OPTIONS = {
"Vibroknuckler",
"Massasiknuckler",
"Razorknuckler",
"Basterfist",
"Guardian Blaster Fist"
};
const string[] ONEHANDED_OPTIONS = {
"Survival Knife",
"'Twilek' Dagger",
"Sword",
"Curved Sword",
"Gaderiffi Baton",
"Vibroblade",
"Ryyk Blade",
"Rantok Blade",
"Stun Baton",
"Acid Sword",
"Junta Mace",
"Marauder Sword",
"Massassi Sword",
"RSF SWORD",
"Stone Knife",
"Janta Knife",
"Donkuwa Knife",
"Nyax Curved Sword",
"Obsidian Sword",
"Mustafar Bandit Sword",
"Gaderiffi Elite"
};
const string[] TWOHANDED_OPTIONS = {
"Axe",
"Battleaxe",
"Katana",
"Vibroaxe",
"Cleaver",
"Power Hammer",
"Scythe",
"Kashyyk Sword",
"Sith Sword",
"Nyax Sword",
"Black Sun Executioner's Hack",
"Tulrus Sword",
"Obsidian 2h Sword",
"Massassi Enforcer Blade"
};
const string[] POLEARM_OPTIONS = {
"1H Wood Staff",
"Metal Staff",
"Reinforced Staff",
"Vibro Lance",
"Long Vibro Axe",
"Lance",
"Kaminoan Great Staff",
"Massassi Lance",
"Shocklance",
"Cryo Lance",
"Kashyyk BladeStick",
"Electric Polearm",
"Nightsister Energy Lance",
"Nightsister Lance",
"Obsidian Lance",
"Xandank Lance",
"Acidic Paragon Vibro Axe"
};
const string[] GRENADE_OPTIONS = {
"Light Fragmentation Grenade",
"Fragmentation Grenade",
"Imperial Detonator",
"Proton Grenade",
"Thermal Detonator",
"Glop Detonator",
"Cryoban"
//"Bug Bomb"
};
const string[] BATTLEFIELD_WEAPON_OPTIONS = {
"Westar-34 Blaster Pistol",
"NGant-Zarvel 9118 Carbine",
"Westar-M5 Blaster Rifle",
"CR-1 Blast Cannon",
"Buzz-Knuck",
"Sith Sword",
"Vibrosword",
"Magnaguard Electrostaff",
"One-Handed Sith-Saber Hilt",
"Two-Handed Mysterious Lightsaber Hilt",
"Double-Bladed Darth Phobos Lightsaber Hilt"
};
const string[] ARMOR_OPTIONS = {
"Assault Armor, For Classes: Commando, Bounty Hunter",
"Battle Armor, For Classes: Spy, Officer",
"Reconnaissance Armor, For Classes: Medic, Smuggler",
"Personal Shield Generators",
"Combat Enhancement Items",
"PvP Sets",
"Heroic Jewelry"
};
const string[] ARMOR_ASSAULT_OPTIONS = {
"Composite Armor Set",
"Marauder Assault Armor Set",
"Chitin Armor Set",
"Crafted Bounty Hunter Armor Set",
"Kashyyykian Hunting Armor Set",
"Ithorian Sentinel Armor Set",
"Shocktrooper (Imperial Factional) Armor Set",
"Rebel Assault (Rebel Factional) Armor Set"
};
const string[] ARMOR_BATTLE_OPTIONS = {
"Padded Armor Set",
"Marauder Battle Armor Set",
"RIS Armor Set",
"Bone Armor Set",
"Kashyyykian Black Mountain Armor Set",
"Ithorian Defender Armor Set",
"Stormtrooper (Imperial Factional) Armor Set",
"Rebel Battle (Rebel Factional) Armor Set",
"Imperial Snowtrooper Armor Set"
};
const string[] ARMOR_RECON_OPTIONS = {
"Tantel Armor Set",
"Ubese Armor Set",
"Mabari Armor Set",
"Recon Marauder Set",
"Kashyyykian Ceremonial Armor Set",
"Ithorian Guardian Armor Set",
"Scout Trooper (Imperial Factional) Armor Set",
"Marine Rebel (Rebel Factional) Armor Set",
"Alliance Cold Weather Armor set"
};
const string[] ARMOR_PROTECTION_AMOUNT = {
"Basic",
"Standard",
"Advanced"
};
const string[] ARMOR_PSG_OPTIONS = {
"MARK I",
"MARK II",
"MARK III"
};
const string[] ARMOR_ENHANCEMENT_OPTIONS = {
"Combat Enhancement Ring"
};
const string[] ARMOR_PVP_SETS = {
"Imperial Black PvP",
"Imperial White PvP",
"Rebel Grey PvP",
"Rebel Green PvP",
"Galactic Marine Armor Set",
"Rebel SpecForce Armor Set"
};
const string[] MISCITEM_OPTIONS = {
"Misc Items",
"Medicines",
// "Smuggler Tools",
"Power Ups",
"Exotic Attachments",
"Socketed Clothing",
"Basic Armor Attachments",
"Basic Clothing Attachments",
"Crafting Suit",
"Aurilia Crystals"
};
const string[] CLOTHING_OPTIONS = {
"Socketed Shirt",
"Socketed Gloves",
"Socketed Hat",
"Socketed Pants",
"Socketed Jacket",
"Socketed Boots",
};
const string[] ATTACHMENT_OPTIONS = {
"Weapon",
"Armor",
"Chest Armor",
"Shirt"
};
const string[] MISC_OPTIONS = {
"Spec-Ops Pack",
"Krayt Skull Pack",
"Pilot Ace Pack",
"Jedi Belt Pouch",
"Snowtrooper Backpack",
"Alliance Cold Weather Backpack",
"Arakyd Probe Droid",
"Seeker Droid",
"Master Crafted EE3 Schematic",
"Master Crafted DC-15 Schematic",
"Vet 30k Resource Deed"
};
const string[] MEDICINE_OPTIONS = {
"High Charge Stimpack-A",
"High Charge Stimpack-B",
"High Charge Stimpack-C",
"High Charge Stimpack-D"
// "All Enhancers",
// "Bacta Infusion Enhancer",
// "Bacta Jab Enhancer",
// "Bacta Shot Enhancer",
// "Bacta Spray Enhancer",
// "Bacta Toss Enhancer",
// "Deuterium Toss Enhancer",
// "Disinfect Enhancer",
// "Endorphone Injection Enhancer",
// "Neurotoxin Enhancer",
// "Nutrient Injection Enhancer",
// "Stabilizer Enhancer",
// "Thyroid Rupture Enhancer",
// "Traumatize Enhancer"
};
const string[] HEAL_OPTIONS = {
"Heal Wounds",
"Heal Battle Fatigue"
};
const string[] SMUGGLER_TOOLS_OPTIONS = {
"Simple Toolkit",
"Finely Crafted Toolset",
"Trandoshan Interframe",
"Delicate Trigger",
"Illegal Core Booster",
"Mandalorian Interframe",
"Micro Plating"
};
const string[] FACTION_OPTIONS = {
"Receive Faction Points",
"Declare Faction Rebel",
"Declare Faction Imperial",
// "Declare [OVERT] Faction Status",
// "Declare (COVERT) Faction Status",
"Gain One Faction Rank",
"Lose One Faction Rank",
"Resign From Current Faction"
};
//const string[] FACTION_OPTIONS = {
// "Receive Imperial Faction Points",
// "Receive Rebel Faction Points"
// };
const string[] ROADMAP_SKILL_OPTIONS = {
"Select Roadmap",
"Earn Current Skill",
"Set Combat Level",
"Level 90 - Reset respecs"
};
const string[] JEDI_OPTIONS = {
"Saber Crystals",
"Light Sabers",
"Jedi Robes"
// "Designer Playtest"
// "DEPRECATING DO NOT USE: Enable Jedi Skills"
};
const string[] PUBLISH_OPTIONS = {
"Heavy Weapons",
"Jedi Options",
"Traps",
"Death Watch Bunker Entrance Flag",
"Spy Camouflage Gear"
};
const string[] CRYSTAL_OPTIONS = {
"Color Crystals",
"Lava Crystal",
"Power Crystals",
"Ancient Krayt Pearls"
};
const string[] SABER_OPTIONS = {
"Training Saber",
"Generation One Sabers",
"Generation Two Sabers",
"Generation Three Sabers",
"Generation Four Sabers",
"Generation Five Sabers"
};
const string[] JEDI_PLAYTEST_OPTIONS = {
"Level 26 Playtest",
"Level 86 Playtest"
};
const string[] ROBE_OPTIONS = {
"Padawan Robe",
"(40)Light Acolyte Robe",
"(40)Dark Acolyte Robe",
"(60)Light Apprentice Robe",
"(60)Dark Apprentice Robe",
"(80)Light Jedi Knight Robe",
"(80)Dark Jedi Knight Robe",
"(80)Jedi Master Cloak Brown",
"(80)Jedi Master Cloak Black",
"Reset Jedi Statue Slots for Master Jedi Cloaks Collection"
};
const string ARMOR_SET_PREFIX = "object/tangible/wearables/armor/";
const string[] ARMOR_SET_ASSAULT_1 = {
"composite/armor_composite_bicep_l.iff",
"composite/armor_composite_chest_plate.iff",
"composite/armor_composite_bicep_r.iff",
"composite/armor_composite_gloves.iff",
"composite/armor_composite_boots.iff",
"composite/armor_composite_helmet.iff",
"composite/armor_composite_bracer_l.iff",
"composite/armor_composite_leggings.iff",
"composite/armor_composite_bracer_r.iff"
};
const string[] ARMOR_SET_ASSAULT_2 = {
"chitin/armor_chitin_s01_bicep_l.iff",
"chitin/armor_chitin_s01_bicep_r.iff",
"chitin/armor_chitin_s01_boots.iff",
"chitin/armor_chitin_s01_bracer_l.iff",
"chitin/armor_chitin_s01_bracer_r.iff",
"chitin/armor_chitin_s01_chest_plate.iff",
"chitin/armor_chitin_s01_gloves.iff",
"chitin/armor_chitin_s01_helmet.iff",
"chitin/armor_chitin_s01_leggings.iff"
};
const string[] ARMOR_SET_ASSAULT_3 = {
"marauder/armor_marauder_s03_bicep_l.iff",
"marauder/armor_marauder_s03_bicep_r.iff",
"marauder/armor_marauder_s03_boots.iff",
"marauder/armor_marauder_s03_bracer_l.iff",
"marauder/armor_marauder_s03_bracer_r.iff",
"marauder/armor_marauder_s03_chest_plate.iff",
"marauder/armor_marauder_s03_gloves.iff",
"marauder/armor_marauder_s03_helmet.iff",
"marauder/armor_marauder_s03_leggings.iff"
};
const string[] ARMOR_SET_ASSAULT_4 = {
"bounty_hunter/armor_bounty_hunter_crafted_bicep_l.iff",
"bounty_hunter/armor_bounty_hunter_crafted_bicep_r.iff",
"bounty_hunter/armor_bounty_hunter_crafted_boots.iff",
"bounty_hunter/armor_bounty_hunter_crafted_bracer_l.iff",
"bounty_hunter/armor_bounty_hunter_crafted_bracer_r.iff",
"bounty_hunter/armor_bounty_hunter_crafted_chest_plate.iff",
"bounty_hunter/armor_bounty_hunter_crafted_gloves.iff",
"bounty_hunter/armor_bounty_hunter_crafted_helmet.iff",
"bounty_hunter/armor_bounty_hunter_crafted_leggings.iff"
};
const string[] ARMOR_SET_BATTLE_1 = {
"bone/armor_bone_s01_bicep_l.iff",
"bone/armor_bone_s01_bicep_r.iff",
"bone/armor_bone_s01_boots.iff",
"bone/armor_bone_s01_bracer_l.iff",
"bone/armor_bone_s01_bracer_r.iff",
"bone/armor_bone_s01_chest_plate.iff",
"bone/armor_bone_s01_gloves.iff",
"bone/armor_bone_s01_helmet.iff",
"bone/armor_bone_s01_leggings.iff"
};
const string[] ARMOR_SET_BATTLE_2 = {
"marauder/armor_marauder_s01_bicep_l.iff",
"marauder/armor_marauder_s01_bicep_r.iff",
"marauder/armor_marauder_s01_boots.iff",
"marauder/armor_marauder_s01_bracer_l.iff",
"marauder/armor_marauder_s01_bracer_r.iff",
"marauder/armor_marauder_s01_chest_plate.iff",
"marauder/armor_marauder_s01_gloves.iff",
"marauder/armor_marauder_s01_helmet.iff",
"marauder/armor_marauder_s01_leggings.iff"
};
const string[] ARMOR_SET_BATTLE_3 = {
"padded/armor_padded_s01_bicep_l.iff",
"padded/armor_padded_s01_bicep_r.iff",
"padded/armor_padded_s01_boots.iff",
"padded/armor_padded_s01_bracer_l.iff",
"padded/armor_padded_s01_bracer_r.iff",
"padded/armor_padded_s01_chest_plate.iff",
"padded/armor_padded_s01_gloves.iff",
"padded/armor_padded_s01_helmet.iff",
"padded/armor_padded_s01_leggings.iff"
};
const string[] ARMOR_SET_BATTLE_4 = {
"ris/armor_ris_bicep_l.iff",
"ris/armor_ris_bracer_l.iff",
"ris/armor_ris_gloves.iff",
"ris/armor_ris_bicep_r.iff",
"ris/armor_ris_bracer_r.iff",
"ris/armor_ris_helmet.iff",
"ris/armor_ris_boots.iff",
"ris/armor_ris_chest_plate.iff",
"ris/armor_ris_leggings.iff"
};
const string[] ARMOR_SET_RECON_1 = {
"zam/armor_zam_wesell_helmet.iff",
"zam/armor_zam_wesell_boots.iff",
"zam/armor_zam_wesell_chest_plate.iff",
"zam/armor_zam_wesell_pants.iff",
"zam/armor_zam_wesell_gloves.iff"
};
const string[] ARMOR_SET_RECON_2 = {
"marauder/armor_marauder_s02_bicep_l.iff",
"marauder/armor_marauder_s02_bicep_r.iff",
"marauder/armor_marauder_s02_boots.iff",
"marauder/armor_marauder_s02_bracer_l.iff",
"marauder/armor_marauder_s02_bracer_r.iff",
"marauder/armor_marauder_s02_chest_plate.iff",
"marauder/armor_marauder_s02_gloves.iff",
"marauder/armor_marauder_s02_helmet.iff",
"marauder/armor_marauder_s02_leggings.iff"
};
const string[] ARMOR_SET_RECON_3 = {
"tantel/armor_tantel_skreej_bicep_l.iff",
"tantel/armor_tantel_skreej_chest_plate.iff",
"tantel/armor_tantel_skreej_bicep_r.iff",
"tantel/armor_tantel_skreej_boots.iff",
"tantel/armor_tantel_skreej_gloves.iff",
"tantel/armor_tantel_skreej_helmet.iff",
"tantel/armor_tantel_skreej_bracer_l.iff",
"tantel/armor_tantel_skreej_bracer_r.iff",
"tantel/armor_tantel_skreej_leggings.iff"
};
const string[] ARMOR_SET_RECON_4 = {
"ubese/armor_ubese_boots.iff",
"ubese/armor_ubese_jacket.iff",
"ubese/armor_ubese_bracer_l.iff",
"ubese/armor_ubese_bracer_r.iff",
"ubese/armor_ubese_pants.iff",
"ubese/armor_ubese_gloves.iff",
"ubese/armor_ubese_helmet.iff",
"ubese/armor_ubese_shirt.iff"
};
const string[] ARMOR_SET_ASSAULT_ITHORIAN = {
"ithorian_sentinel/ith_armor_s03_bicep_l.iff",
"ithorian_sentinel/ith_armor_s03_chest_plate.iff",
"ithorian_sentinel/ith_armor_s03_bicep_r.iff",
"ithorian_sentinel/ith_armor_s03_gloves.iff",
"ithorian_sentinel/ith_armor_s03_boots.iff",
"ithorian_sentinel/ith_armor_s03_helmet.iff",
"ithorian_sentinel/ith_armor_s03_bracer_l.iff",
"ithorian_sentinel/ith_armor_s03_leggings.iff",
"ithorian_sentinel/ith_armor_s03_bracer_r.iff"
};
const string[] ARMOR_SET_BATTLE_ITHORIAN = {
"ithorian_defender/ith_armor_s01_bicep_l.iff",
"ithorian_defender/ith_armor_s01_chest_plate.iff",
"ithorian_defender/ith_armor_s01_bicep_r.iff",
"ithorian_defender/ith_armor_s01_gloves.iff",
"ithorian_defender/ith_armor_s01_boots.iff",
"ithorian_defender/ith_armor_s01_helmet.iff",
"ithorian_defender/ith_armor_s01_bracer_l.iff",
"ithorian_defender/ith_armor_s01_leggings.iff",
"ithorian_defender/ith_armor_s01_bracer_r.iff"
};
const string[] ARMOR_SET_RECON_ITHORIAN = {
"ithorian_guardian/ith_armor_s02_bicep_l.iff",
"ithorian_guardian/ith_armor_s02_chest_plate.iff",
"ithorian_guardian/ith_armor_s02_bicep_r.iff",
"ithorian_guardian/ith_armor_s02_gloves.iff",
"ithorian_guardian/ith_armor_s02_boots.iff",
"ithorian_guardian/ith_armor_s02_helmet.iff",
"ithorian_guardian/ith_armor_s02_bracer_l.iff",
"ithorian_guardian/ith_armor_s02_leggings.iff",
"ithorian_guardian/ith_armor_s02_bracer_r.iff"
};
const string[] ARMOR_SET_ASSAULT_WOOKIEE = {
"kashyyykian_hunting/armor_kashyyykian_hunting_bicep_l.iff",
"kashyyykian_hunting/armor_kashyyykian_hunting_bicep_r.iff",
"kashyyykian_hunting/armor_kashyyykian_hunting_bracer_l.iff",
"kashyyykian_hunting/armor_kashyyykian_hunting_bracer_r.iff",
"kashyyykian_hunting/armor_kashyyykian_hunting_chestplate.iff",
"kashyyykian_hunting/armor_kashyyykian_hunting_leggings.iff"
};
const string[] ARMOR_SET_BATTLE_WOOKIEE = {
"kashyyykian_black_mtn/armor_kashyyykian_black_mtn_bicep_l.iff",
"kashyyykian_black_mtn/armor_kashyyykian_black_mtn_bicep_r.iff",
"kashyyykian_black_mtn/armor_kashyyykian_black_mtn_bracer_l.iff",
"kashyyykian_black_mtn/armor_kashyyykian_black_mtn_bracer_r.iff",
"kashyyykian_black_mtn/armor_kashyyykian_black_mtn_chestplate.iff",
"kashyyykian_black_mtn/armor_kashyyykian_black_mtn_leggings.iff"
};
const string[] ARMOR_SET_RECON_WOOKIEE = {
"kashyyykian_ceremonial/armor_kashyyykian_ceremonial_bicep_l.iff",
"kashyyykian_ceremonial/armor_kashyyykian_ceremonial_bicep_r.iff",
"kashyyykian_ceremonial/armor_kashyyykian_ceremonial_bracer_l.iff",
"kashyyykian_ceremonial/armor_kashyyykian_ceremonial_bracer_r.iff",
"kashyyykian_ceremonial/armor_kashyyykian_ceremonial_chestplate.iff",
"kashyyykian_ceremonial/armor_kashyyykian_ceremonial_leggings.iff"
};
const string[] ARMOR_SET_ASSAULT_IMPERIAL = {
"assault_trooper/armor_assault_trooper_chest_plate.iff",
"assault_trooper/armor_assault_trooper_leggings.iff",
"assault_trooper/armor_assault_trooper_helmet.iff",
"assault_trooper/armor_assault_trooper_bicep_l.iff",
"assault_trooper/armor_assault_trooper_bicep_r.iff",
"assault_trooper/armor_assault_trooper_bracer_l.iff",
"assault_trooper/armor_assault_trooper_bracer_r.iff",
"assault_trooper/armor_assault_trooper_boots.iff",
"assault_trooper/armor_assault_trooper_gloves.iff"
};
const string[] ARMOR_SET_BATTLE_IMPERIAL = {
"stormtrooper/armor_stormtrooper_chest_plate.iff",
"stormtrooper/armor_stormtrooper_leggings.iff",
"stormtrooper/armor_stormtrooper_helmet.iff",
"stormtrooper/armor_stormtrooper_bicep_l.iff",
"stormtrooper/armor_stormtrooper_bicep_r.iff",
"stormtrooper/armor_stormtrooper_bracer_l.iff",
"stormtrooper/armor_stormtrooper_bracer_r.iff",
"stormtrooper/armor_stormtrooper_boots.iff",
"stormtrooper/armor_stormtrooper_gloves.iff"
};
const string[] ARMOR_SET_RECON_IMPERIAL = {
"scout_trooper/armor_scout_trooper_chest_plate.iff",
"scout_trooper/armor_scout_trooper_leggings.iff",
"scout_trooper/armor_scout_trooper_helmet.iff",
"scout_trooper/armor_scout_trooper_bicep_l.iff",
"scout_trooper/armor_scout_trooper_bicep_r.iff",
"scout_trooper/armor_scout_trooper_bracer_l.iff",
"scout_trooper/armor_scout_trooper_bracer_r.iff",
"scout_trooper/armor_scout_trooper_boots.iff",
"scout_trooper/armor_scout_trooper_gloves.iff"
};
const string[] ARMOR_SET_ASSAULT_REBEL = {
"rebel_assault/armor_rebel_assault_chest_plate.iff",
"rebel_assault/armor_rebel_assault_leggings.iff",
"rebel_assault/armor_rebel_assault_helmet.iff",
"rebel_assault/armor_rebel_assault_bicep_l.iff",
"rebel_assault/armor_rebel_assault_bicep_r.iff",
"rebel_assault/armor_rebel_assault_bracer_l.iff",
"rebel_assault/armor_rebel_assault_bracer_r.iff",
"rebel_assault/armor_rebel_assault_boots.iff",
"rebel_assault/armor_rebel_assault_gloves.iff"
};
const string[] ARMOR_SET_BATTLE_REBEL = {
"rebel_battle/armor_rebel_battle_chest_plate.iff",
"rebel_battle/armor_rebel_battle_leggings.iff",
"rebel_battle/armor_rebel_battle_helmet.iff",
"rebel_battle/armor_rebel_battle_bicep_l.iff",
"rebel_battle/armor_rebel_battle_bicep_r.iff",
"rebel_battle/armor_rebel_battle_bracer_l.iff",
"rebel_battle/armor_rebel_battle_bracer_r.iff",
"rebel_battle/armor_rebel_battle_boots.iff",
"rebel_battle/armor_rebel_battle_gloves.iff"
};
const string[] ARMOR_SET_BATTLE_SNOWTROOPER = {
"snowtrooper/armor_snowtrooper_chest_plate.iff",
"snowtrooper/armor_snowtrooper_leggings.iff",
"snowtrooper/armor_snowtrooper_helmet.iff",
"snowtrooper/armor_snowtrooper_bicep_l.iff",
"snowtrooper/armor_snowtrooper_bicep_r.iff",
"snowtrooper/armor_snowtrooper_bracer_l.iff",
"snowtrooper/armor_snowtrooper_bracer_r.iff",
"snowtrooper/armor_snowtrooper_boots.iff",
"snowtrooper/armor_snowtrooper_gloves.iff",
"snowtrooper/armor_snowtrooper_belt.iff"
};
const string[] ARMOR_SET_RECON_REBEL = {
"marine/armor_marine_chest_plate_rebel.iff",
"marine/armor_marine_leggings.iff",
"marine/armor_marine_helmet.iff",
"marine/armor_marine_bicep_l.iff",
"marine/armor_marine_bicep_r.iff",
"marine/armor_marine_bracer_l.iff",
"marine/armor_marine_bracer_r.iff",
"marine/armor_marine_boots.iff",
"marine/armor_marine_gloves.iff"
};
const string[] ARMOR_SET_REBEL_SNOW = {
"rebel_snow/armor_rebel_snow_chest_plate.iff",
"rebel_snow/armor_rebel_snow_leggings.iff",
"rebel_snow/armor_rebel_snow_helmet.iff",
"rebel_snow/armor_rebel_snow_bicep_l.iff",
"rebel_snow/armor_rebel_snow_bicep_r.iff",
"rebel_snow/armor_rebel_snow_bracer_l.iff",
"rebel_snow/armor_rebel_snow_bracer_r.iff",
"rebel_snow/armor_rebel_snow_boots.iff",
"rebel_snow/armor_rebel_snow_gloves.iff",
"rebel_snow/armor_rebel_snow_belt.iff"
};
const string[] ARMOR_SET_PVP_IMPERIAL_BLACK = {
"armor_pvp_spec_ops_imperial_black_bicep_l_05_01",
"armor_pvp_spec_ops_imperial_black_bicep_r_05_01",
"armor_pvp_spec_ops_imperial_black_boots_05_01",
"armor_pvp_spec_ops_imperial_black_bracer_l_05_01",
"armor_pvp_spec_ops_imperial_black_bracer_r_05_01",
"armor_pvp_spec_ops_imperial_black_chest_plate_orange_pad_05_01",
"armor_pvp_spec_ops_imperial_black_chest_plate_red_pad_05_01",
"armor_pvp_spec_ops_imperial_black_chest_plate_yellow_pad_05_01",
"armor_pvp_spec_ops_imperial_black_chest_plate_blue_pad_05_01",
"armor_pvp_spec_ops_imperial_black_chest_plate_white_pad_05_01",
"armor_pvp_spec_ops_imperial_black_chest_plate_black_pad_05_01",
"armor_pvp_spec_ops_imperial_black_gloves_05_01",
"armor_pvp_spec_ops_imperial_black_helmet_05_01",
"armor_pvp_spec_ops_imperial_black_leggings_05_01"
};
const string[] ARMOR_SET_PVP_IMPERIAL_WHITE = {
"armor_pvp_spec_ops_imperial_white_bicep_l_05_01",
"armor_pvp_spec_ops_imperial_white_bicep_r_05_01",
"armor_pvp_spec_ops_imperial_white_boots_05_01",
"armor_pvp_spec_ops_imperial_white_bracer_l_05_01",
"armor_pvp_spec_ops_imperial_white_bracer_r_05_01",
"armor_pvp_spec_ops_imperial_white_chest_plate_orange_pad_05_01",
"armor_pvp_spec_ops_imperial_white_chest_plate_red_pad_05_01",
"armor_pvp_spec_ops_imperial_white_chest_plate_yellow_pad_05_01",
"armor_pvp_spec_ops_imperial_white_chest_plate_blue_pad_05_01",
"armor_pvp_spec_ops_imperial_white_chest_plate_white_pad_05_01",
"armor_pvp_spec_ops_imperial_white_chest_plate_black_pad_05_01",
"armor_pvp_spec_ops_imperial_white_gloves_05_01",
"armor_pvp_spec_ops_imperial_white_helmet_05_01",
"armor_pvp_spec_ops_imperial_white_leggings_05_01"
};
const string[] ARMOR_SET_PVP_REBEL_GREY = {
"armor_pvp_spec_ops_rebel_black_grey_bicep_l_05_01",
"armor_pvp_spec_ops_rebel_black_grey_bicep_r_05_01",
"armor_pvp_spec_ops_rebel_black_grey_boots_05_01",
"armor_pvp_spec_ops_rebel_black_grey_bracer_l_05_01",
"armor_pvp_spec_ops_rebel_black_grey_bracer_r_05_01",
"armor_pvp_spec_ops_rebel_black_grey_gloves_05_01",
"armor_pvp_spec_ops_rebel_black_grey_helmet_05_01",
"armor_pvp_spec_ops_rebel_black_grey_leggings_05_01",
"armor_pvp_spec_ops_rebel_black_grey_chest_plate_05_01",
"armor_pvp_spec_ops_rebel_black_black_chest_plate_05_01"
};
const string[] ARMOR_SET_PVP_REBEL_GREEN = {
"armor_pvp_spec_ops_rebel_black_green_bicep_l_05_01",
"armor_pvp_spec_ops_rebel_black_green_bicep_r_05_01",
"armor_pvp_spec_ops_rebel_black_green_boots_05_01",
"armor_pvp_spec_ops_rebel_black_green_bracer_l_05_01",
"armor_pvp_spec_ops_rebel_black_green_bracer_r_05_01",
"armor_pvp_spec_ops_rebel_black_green_gloves_05_01",
"armor_pvp_spec_ops_rebel_black_green_helmet_05_01",
"armor_pvp_spec_ops_rebel_black_green_leggings_05_01",
"armor_pvp_spec_ops_rebel_black_green_chest_plate_05_01",
"armor_pvp_spec_ops_rebel_black_black_chest_plate_05_01"
};
const string[] ARMOR_SET_ASSUALT_GALACTIC_MARINE = {
"armor_galactic_marine_bicep_l",
"armor_galactic_marine_bicep_r",
"armor_galactic_marine_boots",
"armor_galactic_marine_bracer_l",
"armor_galactic_marine_bracer_r",
"armor_galactic_marine_chest_plate",
"armor_galactic_marine_gloves",
"armor_galactic_marine_helmet",
"armor_galactic_marine_leggings",
"armor_galactic_marine_belt"
};
const string[] ARMOR_SET_ASSUALT_REBEL_SPECFORCE = {
"armor_rebel_spec_force_bicep_l",
"armor_rebel_spec_force_bicep_r",
"armor_rebel_spec_force_boots",
"armor_rebel_spec_force_bracer_l",
"armor_rebel_spec_force_bracer_r",
"armor_rebel_spec_force_chest_plate",
"armor_rebel_spec_force_gloves",
"armor_rebel_spec_force_helmet",
"armor_rebel_spec_force_leggings",
"armor_rebel_spec_force_belt"
};
const string[][] ARMOR_SETS_ASSAULT = {
ARMOR_SET_ASSAULT_1,
ARMOR_SET_ASSAULT_2,
ARMOR_SET_ASSAULT_3
};
const string[][] ARMOR_SETS_BATTLE = {
ARMOR_SET_BATTLE_1,
ARMOR_SET_BATTLE_2,
ARMOR_SET_BATTLE_3,
ARMOR_SET_BATTLE_4
};
const string[][] ARMOR_SETS_RECON = {
ARMOR_SET_RECON_1,
ARMOR_SET_RECON_2,
ARMOR_SET_RECON_3,
ARMOR_SET_RECON_4
};
const string[] CYBERNETIC_ITEMS = {
"object/tangible/wearables/cybernetic/s02/cybernetic_s02_arm_l.iff",
"object/tangible/wearables/cybernetic/s02/cybernetic_s02_arm_r.iff",
"object/tangible/wearables/cybernetic/s02/cybernetic_s02_legs.iff",
"object/tangible/wearables/cybernetic/s03/cybernetic_s03_arm_l.iff",
"object/tangible/wearables/cybernetic/s03/cybernetic_s03_arm_r.iff",
"object/tangible/wearables/cybernetic/s05/cybernetic_s05_arm_l.iff",
"object/tangible/wearables/cybernetic/s05/cybernetic_s05_arm_r.iff",
"object/tangible/wearables/cybernetic/s05/cybernetic_s05_legs.iff"
};
const string[] PUB27_HEAVYPACK = {
"object/weapon/ranged/heavy/ep3_loot_void.iff",
"object/weapon/ranged/heavy/heavy_rocket_launcher.iff",
"weapon_tow_heavy_rocket_launcher_05_01",
/*"object/weapon/ranged/heavy/quest_heavy_rocket_launcher.iff",*/
"object/weapon/ranged/rifle/rifle_odararissl.iff",
"object/weapon/ranged/rifle/rifle_proton.iff",
"object/weapon/ranged/heavy/som_lava_cannon.iff",
"weapon_tow_cannon_03_02",
"object/weapon/ranged/heavy/som_republic_flamer.iff",
"weapon_tow_flamer_01_01",
"weapon_publish_gift_27_04_01",
"object/weapon/ranged/pistol/pistol_launcher.iff",
"object/weapon/ranged/pistol/pistol_launcher_elite.iff",
/*"object/weapon/ranged/pistol/pistol_launcher_generic.iff", */
"object/weapon/ranged/pistol/pistol_launcher_medium.iff",
"object/weapon/ranged/pistol/quest_pistol_launcher.iff",
"object/weapon/ranged/rifle/rifle_acid_beam.iff",
"object/weapon/ranged/rifle/rifle_flame_thrower.iff",
"object/weapon/ranged/rifle/rifle_flame_thrower_light.iff"
};
const string[] PUB27_TRAPS = {
"prx_trapCaltrop",
"tmr_trapCaltrop",
"rmt_trapCaltrop",
"prx_trapFlashbang",
"tmr_trapFlashbang",
"rmt_trapFlashbang",
"prx_trapHX2",
"tmr_trapHX2",
"rmt_trapHX2",
"prx_trapKamino",
"tmr_trapKamino",
"rmt_trapKamino"
};
const string[] PUB27_CAMOSTUFF = {
"item_clothing_spy_stealth_shirt_02_01",
"item_clothing_spy_stealth_pants_02_01",
"item_clothing_spy_stealth_duster_02_01",
"item_clothing_spy_stealth_gloves_02_01",
"item_clothing_spy_stealth_boots_02_01"
};
const string[] SPACE_LOOT_CATEGORIES =
{
"armor",
"booster",
"droid_interface",
"engine",
"reactor",
"shield_generator",
"weapon",
"weapon_capacitor",
"Looted Droid Interface"
};
const string[] CRAFTING_PROFESSIONS = {
"Domestics",
"Engineer",
"Structure",
"Weaponsmith",
"Entertainer"
};
// These are in order for Domestics, Engineering, Structure, and Weaponsmith
const string[] CRAFTING_SKILL_TEMPLATES = {
"trader_1a",
"trader_1d",
"trader_1b",
"trader_1c",
"entertainer_1a"
};
const string[] COLLECTION_COMPONENT_SCHEMS = {
"Collection Boosters",
"Collection Capacitors",
"Collection Engines",
"Collection Reactors",
"Nova Orion Weapons and Engines",
"GU16 Schematic"
};
const string[] BASIC_MOD_STRINGS= { "precision_modified",
"strength_modified",
"agility_modified",
"stamina_modified",
"constitution_modified",
"luck_modified",
"camouflage",
"combat_block_value"
};
const string[] BASIC_MOD_LIST = { "Precision",
"Strength",
"Agility",
"Stamina",
"Constitution",
"Luck",
"Camouflage",
"Block Value"
};
const string[] HEROIC_JEWELRY_LIST = { "Bounty Hunter Enforcer (DPS)",
"Bounty Hunter Flawless (Utility A)",
"Bounty Hunter Dire Fate (PvP)",
"Medic Striker's (DPS)",
"Medic First Responder's (Healing)",
"Medic Blackbar's Doom (PvP)",
"Jedi Duelist (Saber DPS)",
"Jedi Dark Fury (Force Power DPS)",
"Jedi Guardian (Tanking)",
"Commando Grenadier (Grenade DPS)",
"Commando Frontman (Tanking)",
"Commando Juggernaut (Weapon DPS)",
"Smuggler Scoundrel (DPS)",
"Smuggler Rogue (PvP)",
"Smuggler Gambler's (PvE)",
"Spy Assassin's (DPS)",
"Spy Ghost (PvP)",
"Spy Razor Cat (DPS)",
"Officer Dead Eye (DPS)",
"Officer Hellstorm (AoE DPS)",
"Officer General's (Group PvE)",
"Heroism (Stats)"
};
const string[] AURILIA_CRYSTALS = {
"Small Aurilian Crystal",
"Medium Aurilian Crystal",
"Large Aurilian Crystal"
};
const string[] CRAFTING_SUIT = {
"Blix's Ultra Crafting Suit"
};
/***** TRIGGERS ********************************************************/
boolean checkConfigSetting(string configString)
{
string enabled = toLower(getConfigSetting("CharacterBuilder", configString));
if (enabled == null)
return false;
if (enabled.equals("true") || enabled.equals("1"))
return true;
return false;
}
trigger OnObjectMenuRequest(obj_id player, menu_info mi)
{
menu_info_data data = mi.getMenuItemByType (menu_info_types.ITEM_USE);
if (data != null)
data.setServerNotify (true);
else
mi.addRootMenu (menu_info_types.ITEM_USE, new string_id("",""));
return SCRIPT_CONTINUE;
}
trigger OnObjectMenuSelect(obj_id player, int item)
{
if (isGod(player) || checkConfigSetting("builderEnabled"))
{
if ( item == menu_info_types.ITEM_USE )
{
startCharacterBuilder(player);
}
return SCRIPT_CONTINUE;
}
else
{
sendSystemMessageTestingOnly(player, "Only authorized users may access this terminal.");
return SCRIPT_CONTINUE;
}
}
void startCharacterBuilder(obj_id player)
{
obj_id self = getSelf();
string prompt = "Select the desired character option";
string title = "Character Builder Terminal";
closeOldWindow(player);
int pid = sui.listbox(self, player, prompt, sui.OK_CANCEL, title, CHARACTER_BUILDER_OPTIONS, "handleOptionSelect", true, false);
setWindowPid(player, pid);
}
messageHandler handleOptionSelect()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_CANCEL )
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > CHARACTER_BUILDER_OPTIONS.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
switch(idx)
{
case 0: // weapons
if (isGod(player) || checkConfigSetting("weaponsEnabled"))
handleWeaponOption(player);
else
{
sendSystemMessageTestingOnly(player, "This Option is Currently Disabled.");
return SCRIPT_CONTINUE;
}
break;
case 1: // armors
if (isGod(player) || checkConfigSetting("armorEnabled"))
handleArmorOption(player);
else
{
sendSystemMessageTestingOnly(player, "This Option is Currently Disabled.");
return SCRIPT_CONTINUE;
}
break;
case 2: // roadmap skills
if (isGod(player) || checkConfigSetting("skillsEnabled"))
handleRoadmapSkills(player);
else
{
sendSystemMessageTestingOnly(player, "The Roadmap Skill Builder option is DISABLED.");
return SCRIPT_CONTINUE;
}
break;
/* case 3 : // skill loadout
if (isGod(player) || checkConfigSetting("skillsLoadoutEnabled"))
handleSkillLoadoutOption(player);
else
{
sendSystemMessageTestingOnly(player, "This Option is Currently Disabled.");
return SCRIPT_CONTINUE;
}
break;
case 4: // buffs
if (isGod(player) || checkConfigSetting("buffsEnabled"))
handleBuffOption(player);
else
{
sendSystemMessageTestingOnly(player, "This Option is Currently Disabled.");
return SCRIPT_CONTINUE;
}
break;
*/ case 3: // resources
if (isGod(player) || checkConfigSetting("resourcesEnabled"))
handleResourceOption(player);
else
{
sendSystemMessageTestingOnly(player, "This Option is Currently Disabled.");
return SCRIPT_CONTINUE;
}
break;
case 4: // credits
if (isGod(player) || checkConfigSetting("creditsEnabled"))
handleCreditOption(player);
else
{
sendSystemMessageTestingOnly(player, "This Option is Currently Disabled.");
return SCRIPT_CONTINUE;
}
break;
case 5: // faction options
if (isGod(player) || checkConfigSetting("factionEnabled"))
handleFactionOption(player);
else
{
sendSystemMessageTestingOnly(player, "This Option is Currently Disabled.");
return SCRIPT_CONTINUE;
}
break;
case 6: // vehicles/mounts/beasts
handleVehicleOption(player);
break;
case 7: // ships
if (isGod(player) || checkConfigSetting("shipsEnabled"))
handleShipMenuSelect(player);
else
{
sendSystemMessageTestingOnly(player, "This Option is Currently Disabled.");
return SCRIPT_CONTINUE;
}
break;
case 8: // crafting items
if (isGod(player) || checkConfigSetting("craftingEnabled"))
handleCraftingOption(player);
else
{
sendSystemMessageTestingOnly(player, "This Option is Currently Disabled.");
return SCRIPT_CONTINUE;
}
break;
case 9: // deeds
if (isGod(player) || checkConfigSetting("deedsEnabled"))
handleDeedOption(player);
else
{
sendSystemMessageTestingOnly(player, "This Option is Currently Disabled.");
return SCRIPT_CONTINUE;
}
break;
case 10: // PA halls
if (isGod(player) || checkConfigSetting("pahallEnabled"))
handlePAOption(player);
else
{
sendSystemMessageTestingOnly(player, "This Option is Currently Disabled.");
return SCRIPT_CONTINUE;
}
break;
case 11: // misc items
if (isGod(player) || checkConfigSetting("miscitemEnabled"))
handleMiscOption(player);
else
{
sendSystemMessageTestingOnly(player, "This Option is Currently Disabled.");
return SCRIPT_CONTINUE;
}
break;
case 12: // Jedi
if (isGod(player) || checkConfigSetting("jediEnabled"))
handleJediOption(player);
else
{
sendSystemMessageTestingOnly(player, "You Are Not Authorized to use the Jedi Options!.");
return SCRIPT_CONTINUE;
}
break;
case 13: // Best Resource
if(isGod(player))
handleBestResourceOption(player);
else
{
sendSystemMessageTestingOnly(player, "This is for developers only.");
return SCRIPT_CONTINUE;
}
break;
case 14: // Flag all Heroic Instances
if(isGod(player))
flagAllHeroicInstances(player);
else
{
sendSystemMessageTestingOnly(player, "This is for developers only.");
return SCRIPT_CONTINUE;
}
break;
case 15: // Draft Schematics
if(isGod(player))
{
handleDraftSchematicsOption(player);
}
else
{
sendSystemMessageTestingOnly(player, "This is for developers only.");
return SCRIPT_CONTINUE;
}
break;
/*
case 15: // heal options
if (isGod(player) || checkConfigSetting("healingEnabled"))
handleHealOption(player);
else
{
sendSystemMessageTestingOnly(player, "This Option is Currently Disabled.");
return SCRIPT_CONTINUE;
}
break;
case 19: // Pet Abilities
if (isGod(player) || checkConfigSetting("petAbilitiesEnabled"))
handlePetAbilityOption(player);
else
{
sendSystemMessageTestingOnly(player, "This Option is Currently Disabled.");
return SCRIPT_CONTINUE;
}
break;
*/
default:
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
return SCRIPT_CONTINUE;
}
void cleanScriptVars(obj_id player)
{
obj_id self = getSelf();
utils.removeScriptVarTree(player, "character_builder");
utils.removeScriptVarTree(self, "character_builder");
setObjVar(player, "character_builder", true);
}
void closeOldWindow(obj_id player)
{
string playerPath = "character_builder.";
if ( utils.hasScriptVar(player, "character_builder.pid"))
{
int oldpid = utils.getIntScriptVar(player, "character_builder.pid");
forceCloseSUIPage (oldpid);
utils.removeScriptVar(player, "character_builder.pid");
}
}
void setWindowPid(obj_id player, int pid)
{
if (pid > -1) utils.setScriptVar(player, "character_builder.pid", pid);
}
//===================================================================
// Skill Section //==================================================
string[] convertSkillListNames(string[] skillList)
{
for (int i = 0; i < skillList.length; i++)
{
skillList[i] = "@skl_n:" + skillList[i];
}
return skillList;
}
//===================================================================
// Loadout Section //================================================
/**
* Creates equipment in the player's inventory based on what master skills they have. NOTE: if the player
* already has an item of the type in the datatable, they will not be given a new one.
*/
void handleSkillLoadoutOption(obj_id player)
{
// create a fast lookup set of the player's inventory
if ( !isIdValid(player) )
return;
obj_id inventoryId = utils.getInventoryContainer(player);
if ( !isIdValid(inventoryId) )
return;
obj_id[] inventoryArray = getInventoryAndEquipment(player);
if ( inventoryArray == null)
inventoryArray = new obj_id[0];
java.util.HashSet inventoryLookup = new java.util.HashSet(inventoryArray.length > 8 ? inventoryArray.length * 2 : 16);
for ( int i = 0; i < inventoryArray.length; ++i )
{
string itemTemplate = getTemplateName(inventoryArray[i]);
if ( itemTemplate != null )
inventoryLookup.add(itemTemplate);
}
// get the loadout for each skill the player has
int itemCount = 0;
int shipCount = 0;
string[] skills = getSkillListingForPlayer(player);
if ( skills != null )
{
for ( int i = 0; i < skills.length; ++i )
{
if (space_transition.isPlayerBelowShipLimit(player))
{
obj_id shipId = null;
if (skills[i].equals("pilot_rebel_navy_master"))
{
shipId = space_utils.createShipControlDevice(player, "advanced_xwing", false);
}
else if (skills[i].equals("pilot_imperial_navy_master"))
{
shipId = space_utils.createShipControlDevice(player, "tieinterceptor_imperial_guard", false);
}
else if (skills[i].equals("pilot_neutral_master"))
{
shipId = space_utils.createShipControlDevice(player, "yt1300", false);
}
else if (skills[i].equals("pilot_rebel_navy_novice"))
{
shipId = space_utils.createShipControlDevice(player, "z95", false);
}
else if (skills[i].equals("pilot_imperial_navy_novice"))
{
shipId = space_utils.createShipControlDevice(player, "tie_light_duty", false);
}
else if (skills[i].equals("pilot_neutral_novice"))
{
shipId = space_utils.createShipControlDevice(player, "basic_hutt_light", false);
}
if (isValidId(shipId))
{
++shipCount;
}
}
dictionary items = dataTableGetRow(SKILL_LOADOUT_TBL, skills[i]);
if ( items != null )
{
// if the player doesn't already have an item of the given template, create one and put it in his inventory
java.util.Enumeration keys = items.keys();
while ( keys.hasMoreElements() )
{
string key = (String)(keys.nextElement());
if ( key == "skill" )
continue;
Object value = items.get(key);
if ( value != null && value instanceof string && ((string)value).length() > 0 )
{
if ( key == "armor" )
{
// armor needs to be handled specially due to not all species being able to equip all armor
string armorSetName = (string)(value);
string armorCategoryName = armorSetName.substring(0, armorSetName.length()-1);
string armorLevelName = armorSetName.substring(armorSetName.length()-1, armorSetName.length());
if ( armorCategoryName != "assault" &&
armorCategoryName != "battle" &&
armorCategoryName != "recon" )
{
sendSystemMessageTestingOnly(player, "Invalid armor category " + armorCategoryName +
" for skill entry " + skills[i]);
continue;
}
if ( armorLevelName != "1" &&
armorLevelName != "2" &&
armorLevelName != "3" )
{
sendSystemMessageTestingOnly(player, "Invalid armor level " + armorLevelName +
" for skill entry " + skills[i]);
continue;
}
int armorCategory = AC_none;
int armorLevel = Integer.parseInt(armorLevelName) - 1;
int playerSpecies = getSpecies(player);
string[] armorSet = null;
if ( armorCategoryName == "assault" )
{
armorCategory = AC_assault;
if ( playerSpecies == SPECIES_WOOKIEE )
armorSet = ARMOR_SET_ASSAULT_WOOKIEE;
else if ( playerSpecies == SPECIES_ITHORIAN )
armorSet = ARMOR_SET_ASSAULT_ITHORIAN;
else
armorSet = ARMOR_SETS_ASSAULT[rand(0, ARMOR_SETS_ASSAULT.length-1)];
}
else if ( armorCategoryName == "battle" )
{
armorCategory = AC_battle;
if ( playerSpecies == SPECIES_WOOKIEE )
armorSet = ARMOR_SET_BATTLE_WOOKIEE;
else if ( playerSpecies == SPECIES_ITHORIAN )
armorSet = ARMOR_SET_BATTLE_ITHORIAN;
else
armorSet = ARMOR_SETS_BATTLE[rand(0, ARMOR_SETS_BATTLE.length-1)];
}
else
{
armorCategory = AC_reconnaissance;
if ( playerSpecies == SPECIES_WOOKIEE )
armorSet = ARMOR_SET_RECON_WOOKIEE;
else if ( playerSpecies == SPECIES_ITHORIAN )
armorSet = ARMOR_SET_RECON_ITHORIAN;
else
armorSet = ARMOR_SETS_RECON[rand(0, ARMOR_SETS_RECON.length-1)];
}
if ( armorSet == null )
{
sendSystemMessageTestingOnly(player, "Unable to get armor set for armor category " + armorCategoryName);
continue;
}
for ( int j = 0; j < armorSet.length; ++j )
{
string armorTemplate = ARMOR_SET_PREFIX + armorSet[j];
if ( !inventoryLookup.contains(armorTemplate) )
{
obj_id newItem = createObject(armorTemplate, inventoryId, "");
if ( isIdValid(newItem) )
{
if (!isGameObjectTypeOf(newItem, GOT_armor_foot) && !isGameObjectTypeOf(newItem, GOT_armor_hand))
{
armor.setArmorDataPercent(newItem, armorLevel, armorCategory, GENERAL_PROTECTION, CONDITION);
}
inventoryLookup.add(armorTemplate);
++itemCount;
}
}
}
}
else
{
if ( !inventoryLookup.contains(value) )
{
string itemTemplate = (string)(value);
obj_id newItem = null;
int itemGot = getGameObjectTypeFromTemplate(itemTemplate);
if ( isGameObjectTypeOf(itemGot, GOT_weapon) )
newItem = weapons.createWeapon(itemTemplate, inventoryId, weapons.VIA_TEMPLATE, WEAPON_SPEED, WEAPON_DAMAGE, WEAPON_EFFECIENCY, WEAPON_ELEMENTAL);
else
newItem = createObject(itemTemplate, inventoryId, "");
if ( isIdValid(newItem) )
{
inventoryLookup.add(itemTemplate);
++itemCount;
}
}
}
}
}
}
}
}
if (itemCount > 0 || shipCount > 0)
{
if (shipCount > 0)
{
sendSystemMessageTestingOnly(player, shipCount + " ships were placed in your datapad.");
}
if (itemCount > 0)
{
sendSystemMessageTestingOnly(player, itemCount + " items were placed in your inventory.");
}
sendSystemMessageTestingOnly(player, "Have fun storming the castle!");
}
else
{
sendSystemMessageTestingOnly(player, "No new items were placed in your inventory. You've got everything you need.");
}
startCharacterBuilder(player);
}
//===================================================================
// Credit Section //===============================================
void handleCreditOption(obj_id player)
{
if ( getCashBalance(player) < 100000000 )
{
dictionary d = new dictionary();
d.put("payoutTarget", player);
money.systemPayout(money.ACCT_BETA_TEST, player, CASH_AMOUNT, "handlePayoutToPlayer", d);
}
else
{
sendSystemMessageTestingOnly(player, "You already have 100,000,000+ credits. Why do you need any more money?");
}
startCharacterBuilder(player);
}
messageHandler handlePayoutToPlayer()
{
obj_id player = params.getObjId("payoutTarget");
if ( !isIdValid(player) )
return SCRIPT_CONTINUE;
int retCode = params.getInt(money.DICT_CODE);
if ( retCode == money.RET_SUCCESS )
{
string terminal = "Character Builder Terminal";
sendSystemMessageTestingOnly(player, "You receive " + CASH_AMOUNT + " credits from the " + terminal);
}
else if ( retCode == money.RET_FAIL )
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
}
return SCRIPT_CONTINUE;
}
//===================================================================
// Buffs Section //===============================================
void handleBuffOption(obj_id player)
{
buff.applyBuff(player, "frogBuff");
sendSystemMessageTestingOnly(player, "Buffs applied!");
startCharacterBuilder(player);
}
//===================================================================
// Resource Section //===============================================
void handleResourceOption(obj_id player)
{
obj_id self = getSelf();
refreshMenu ( player, "Select the desired resource category", "Character Builder Terminal", RESOURCE_TYPES, "handleCategorySelection", false);
return;
}
messageHandler handleCategorySelection()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
startCharacterBuilder(player);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 )
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
location loc = getLocation(player);
string planet = "current";
string[] resourceList = buildAvailableResourceTree(self, loc, RESOURCE_BASE_TYPES[idx]);
refreshMenu ( player, "Select the desired resource category", "Character Builder Terminal", resourceList, "handleResourceSelection", false);
if(resourceList[0].startsWith("@resource/resource_names"))
{
utils.setScriptVar(player, "character_builder.resourceList", SPACE_RESOURCE_CONST);
}
else
utils.setScriptVar(player, "character_builder.resourceList", resourceList);
return SCRIPT_CONTINUE;
}
messageHandler handleResourceSelection()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
refreshMenu ( player, "Select the desired resource category", "Character Builder Terminal", RESOURCE_TYPES, "handleCategorySelection", false);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 )
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
string[] resourceList = utils.getStringArrayScriptVar(player, "character_builder.resourceList");
string resourceName = resourceList[idx].trim();
if (resourceName.startsWith("\\#"))
resourceName = resourceName.substring(13, resourceName.length()-3);
if(resourceName.startsWith("space"))
{
makeSpaceResource(player, resourceName);
return SCRIPT_CONTINUE;
}
obj_id resourceId = getResourceTypeByName(resourceName);
if (isIdNull(resourceId))
{
resourceId = pickRandomNonDepeletedResource(resourceName);
}
obj_id inv = utils.getInventoryContainer(player);
obj_id resourceCrate = createResourceCrate(resourceId, AMT, inv);
if (isIdNull(resourceCrate))
{
sendSystemMessageTestingOnly(player, "Resource grant failed. It is likely your inventory is full.");
}
else
{
resourceName = " \\#pcontrast1 "+getResourceName(resourceId)+"\\#. a type of " + getClassString(getResourceClass(resourceId));
prose_package proseSuccess = prose.getPackage(resource.SID_SAMPLE_LOCATED, resourceName, AMT);
sendSystemMessageProse(player, proseSuccess);
}
refreshMenu ( player, "Select the desired resource category", "Character Builder Terminal", resourceList, "handleResourceSelection", false);
return SCRIPT_CONTINUE;
}
void makeSpaceResource(obj_id self, string rclass)
{
obj_id[] rtypes = getResourceTypes(rclass);
sendSystemMessageTestingOnly(self, "Types are..." + rtypes[0].toString());
obj_id rtype = rtypes[0];
if(!isIdValid(rtype))
{
sendSystemMessageTestingOnly(self, "No id found");
sendSystemMessageTestingOnly(self, "Type was "+rclass);
return;
}
string crateTemplate = getResourceContainerForType(rtype);
if ( !crateTemplate.equals("") )
{
obj_id pInv = utils.getInventoryContainer(self);
if ( isIdValid(pInv))
{
obj_id crate = createObject(crateTemplate, pInv, "");
if ( addResourceToContainer (crate, rtype, AMT, self) )
{
sendSystemMessageTestingOnly(self, "Resource of class "+rclass+" added");
}
}
}
}
string[] buildAvailableResourceTree(obj_id self, location loc, string topParent)
{
resizeable resource_density[] allResources = new resource_density[0];
if(topParent.equals("Asteroid"))
{
return SPACE_RESOURCE_LOCALIZED;
}
if(hasObjVar(self, "allPlanetResources"))
{
string[] planetNames = { "corellia", "dantooine", "lok", "naboo", "rori", "talus", "tatooine" };
for(int i = 0; i < planetNames.length; i++)
{
loc.area = planetNames[i];
resource_density[] resources = requestResourceList(loc, 0.0f, 1.0f, topParent);
for(int j = 0; j < resources.length; j++)
{
allResources.add(resources[j]);
}
}
}
else
{
resource_density[] resources = requestResourceList(loc, 0.0f, 1.0f, topParent);
for(int j = 0; j < resources.length; j++)
{
allResources.add(resources[j]);
}
}
string[] resourceTree = buildSortedResourceTree(allResources, topParent, 0);
return resourceTree;
}
string[] buildSortedResourceTree(resizeable resource_density[] resources, string topParent, int branchLevel)
{
resizeable string[] resourceTree = new string[0];
if(resources != null)
{
for (int i = 0; i < resources.length; i++)
{
if (!isResourceDerivedFrom(resources[i].getResourceType(), topParent))
continue;
string parent = getResourceClass(resources[i].getResourceType());
string child = null;
if (parent == null)
continue;
while (parent != topParent)
{
child = parent;
parent = getResourceParentClass(child);
}
if (child == null)
child = "\\#pcontrast1 "+getResourceName(resources[i].getResourceType())+"\\#.";
for (int j = 0; j < branchLevel; j++)
{
child = " " + child;
}
if (resourceTree.indexOf(child) == -1)
{
resourceTree.add(child);
}
}
}
for (int i = 0; i < resourceTree.size(); i++)
{
string parent = resourceTree[i].trim();
string[] childBranch = buildSortedResourceTree(resources, parent, branchLevel+1);
for (int j = 0; j < childBranch.length; j++)
{
resourceTree.add(++i, childBranch[j]);
}
}
return resourceTree;
}
string getClassString(string className)
{
const string resourceTable = "datatables/resource/resource_tree.iff";
string classString = "";
int row = dataTableSearchColumnForString(className, 1, resourceTable);
int column = 2;
while ((classString == null || classString.length() == 0) && column <= 9)
{
classString = dataTableGetString(resourceTable, row, column);
column++;
}
return classString;
}
//===================================================================
// Best Resource Section //===============================================
void handleBestResourceOption(obj_id player)
{
obj_id self = getSelf();
refreshMenu(player, "Select the desired resource category", "Character Builder Terminal", BEST_RESOURCE_TYPES, "handleBestCategorySelection", false);
return;
}
messageHandler handleBestCategorySelection()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
startCharacterBuilder(player);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 )
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
if(idx > RESOURCE_BASE_TYPES.length - 1)
{
utils.setScriptVar(player, "character_builder.specificFilter", -1);
refreshMenu(player, "Select the desired resource category", "Character Builder Terminal", RESOURCE_TYPES, "handleBestCategorySelection", false);
return SCRIPT_CONTINUE;
}
location loc = getLocation(player);
string planet = "current";
string[] resourceList = getResourceChildClasses(RESOURCE_BASE_TYPES[idx]);
int goodResources = 0;
for(int i = 0; i < resourceList.length; ++i)
{
if(!hasResourceType(resourceList[i]))
resourceList[i] = null;
else
++goodResources;
}
string[] temp = new string[goodResources];
goodResources = 0;
for(int i = 0; i < resourceList.length; ++i)
{
if ( resourceList[i] != null )
temp[goodResources++] = resourceList[i];
}
resourceList = temp;
temp = null;
refreshMenu(player, "Select the desired resource category", "Character Builder Terminal", resourceList, "handleBestResourceSelection", false);
utils.setScriptVar(player, "character_builder.resourceList", resourceList);
return SCRIPT_CONTINUE;
}
messageHandler handleBestResourceSelection()
{
if(params == null || params.isEmpty())
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if(btn == sui.BP_REVERT)
{
startCharacterBuilder(player);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if(idx == -1)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
string[] resourceList = utils.getStringArrayScriptVar(player, "character_builder.resourceList");
if(utils.hasScriptVar(player, "character_builder.specificFilter"))
{
string [] attribs = craftinglib.getAttribNamesByResourceClass(resourceList[idx]);
if(attribs == null)
{
debugSpeakMsg(player, "attribs null");
return SCRIPT_CONTINUE;
}
utils.setScriptVar(player, "character_builder.resourceIndex", idx);
refreshMenu(player, "Select the desired attribute", "Character Builder Terminal", attribs, "handleBestResourceSelectionWithAttribute", false);
return SCRIPT_CONTINUE;
}
craftinglib.makeBestResource(player, resourceList[idx], AMT);
refreshMenu(player, "Select the desired resource category", "Character Builder Terminal", resourceList, "handleBestResourceSelection", false);
return SCRIPT_CONTINUE;
}
messageHandler handleBestResourceSelectionWithAttribute()
{
if(params == null || params.isEmpty())
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if(btn == sui.BP_REVERT)
{
startCharacterBuilder(player);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if(idx == -1)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
string[] resourceList = utils.getStringArrayScriptVar(player, "character_builder.resourceList");
int resourceListIndex = utils.getIntScriptVar(player, "character_builder.resourceIndex");
string [] attribs = craftinglib.getAttribNamesByResourceClass(resourceList[resourceListIndex]);
utils.removeScriptVar(player, "character_builder.specificFilter");
utils.removeScriptVar(player, "character_builder.resourceIndex");
craftinglib.makeBestResourceByAttribute(player, resourceList[resourceListIndex], attribs[idx], AMT);
refreshMenu(player, "Select the desired resource category", "Character Builder Terminal", BEST_RESOURCE_TYPES, "handleBestCategorySelection", false);
return SCRIPT_CONTINUE;
}
//==================================================================
// Vehicle Section //===============================================
void handleVehicleOption(obj_id player)
{
obj_id self = getSelf();
refreshMenu ( player, "Select the desired vehicle or mount option", "Character Builder Terminal", VEHICLE_MOUNT_OPTIONS, "handleVehicleOptions", false);
}
messageHandler handleVehicleOptions()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
startCharacterBuilder(player);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > VEHICLE_MOUNT_OPTIONS.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
string prompt = "Select the desired option";
string title = "Character Builder Terminal";
int pid = 0;
switch(idx)
{
case 0:
if(isGod(player) || checkConfigSetting("vehiclesEnabled"))
{
refreshMenu ( player, prompt, title, VEHICLE_OPTIONS, "handleVehicleSelect", false);
}
else
{
sendSystemMessageTestingOnly(player, "This Option is Currently Disabled.");
return SCRIPT_CONTINUE;
}
break;
case 1:
if(isGod(player) || checkConfigSetting("vehiclesEnabled"))
{
refreshMenu ( player, prompt, title, MOUNT_OPTIONS, "handleMountSelect", false);
}
else
{
sendSystemMessageTestingOnly(player, "This Option is Currently Disabled.");
return SCRIPT_CONTINUE;
}
break;
case 2:
if(!isGod(player))
{
refreshMenu(player, prompt, title, BEAST_OPTIONS_FOR_PLAYERS, "handleBeastSelect", false);
}
else
{
refreshMenu(player, prompt, title, BEAST_OPTIONS, "handleBeastSelect", false);
}
break;
case 3:
obj_id beast = beast_lib.getBeastOnPlayer(player);
if(!isIdValid(beast) || !beast_lib.isValidBeast(beast))
{
sendSystemMessage(player, "Could not find a valid beast. Please make sure you've called your beast", null);
return SCRIPT_CONTINUE;
}
obj_id bcd = beast_lib.getBeastBCD(beast);
if(!beast_lib.isValidBCD(bcd))
{
return SCRIPT_CONTINUE;
}
beast_lib.setBCDBeastLevel(bcd, 90);
beast_lib.setBeastLevel(beast, 90);
beast_lib.initializeBeastStats(bcd, beast);
refreshMenu ( player, "Select the desired vehicle or mount option", "Character Builder Terminal", VEHICLE_MOUNT_OPTIONS, "handleVehicleOptions", false);
break;
case 4:
obj_id playerBeast = beast_lib.getBeastOnPlayer(player);
if(!isIdValid(playerBeast) || !beast_lib.isValidBeast(playerBeast))
{
sendSystemMessage(player, "Could not find a valid beast. Please make sure you've called your beast", null);
return SCRIPT_CONTINUE;
}
obj_id beastBcd = beast_lib.getBeastBCD(playerBeast);
if(!beast_lib.isValidBCD(beastBcd))
{
return SCRIPT_CONTINUE;
}
beast_lib.setBeastLoyalty(playerBeast, 300000f);
beast_lib.setBCDBeastLoyaltyLevel(beastBcd, 5);
refreshMenu ( player, "Select the desired vehicle or mount option", "Character Builder Terminal", VEHICLE_MOUNT_OPTIONS, "handleVehicleOptions", false);
break;
case 5:
obj_id pInv = utils.getInventoryContainer(player);
static_item.createNewItemFunction("item_tow_necklace_taming_03_05",pInv);
refreshMenu ( player, "Select the desired vehicle or mount option", "Character Builder Terminal", VEHICLE_MOUNT_OPTIONS, "handleVehicleOptions", false);
break;
default:
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
return SCRIPT_CONTINUE;
}
messageHandler handleVehicleSelect()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
handleVehicleOption(player);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > VEHICLE_OPTIONS.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure player's inventory is valid
if (!isIdValid(pInv))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure there is room in player's inventory
if (getVolumeFree(pInv) <= 0)
{
sendSystemMessageTestingOnly(player, "Your Inventory is Full, please make room and try again.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
switch(idx)
{
case 0: // swoop
createObject("object/tangible/deed/vehicle_deed/speederbike_swoop_deed.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Swoop Deed Issued.");
break;
case 1: // speeder
createObject("object/tangible/deed/vehicle_deed/speederbike_deed.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Speederbike Deed Issued.");
break;
case 2: // X34
createObject("object/tangible/deed/vehicle_deed/landspeeder_x34_deed.iff", pInv, "");
sendSystemMessageTestingOnly(player, "X34 Landspeeder Deed Issued.");
break;
case 3: //AB1
createObject("object/tangible/deed/vehicle_deed/landspeeder_ab1_deed.iff",pInv, "");
sendSystemMessageTestingOnly(player, "AB1 Deed Issued.");
break;
case 4: //V35
createObject("object/tangible/deed/vehicle_deed/landspeeder_v35_deed.iff", pInv, "");
sendSystemMessageTestingOnly(player, "V-35 SoroSuub Carrier Deed Issued.");
break;
case 5: //XP38
createObject("object/tangible/deed/vehicle_deed/landspeeder_xp38_deed.iff", pInv, "");
sendSystemMessageTestingOnly(player, "XP38 Landspeeder Deed Issued.");
break;
case 6: //Barc Speeder
if(isGod(player))
{
createObject("object/tangible/deed/vehicle_deed/barc_speeder_deed.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Barc Speeder Deed Issued.");
}
else
{
sendSystemMessageTestingOnly(player, "You Must be in God Mode to enjoy the BARC Speeder!");
}
break;
case 7: //AV21
if(isGod(player))
{
createObject("object/tangible/deed/vehicle_deed/landspeeder_av21_deed.iff", pInv, "");
sendSystemMessageTestingOnly(player, "AV21 Deed Issued.");
}
else
{
sendSystemMessageTestingOnly(player, "You Must be in God Mode to enjoy the AV21 Speeder!");
}
break;
case 8: //X31
createObject("object/tangible/deed/vehicle_deed/landspeeder_x31_deed.iff", pInv, "");
sendSystemMessageTestingOnly(player, "X31 Deed Issued.");
break;
case 9: //Flash Speeder
if(isGod(player))
{
createObject("object/tangible/deed/vehicle_deed/speederbike_flash_deed.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Flash Speeder Deed Issued.");
}
else
{
sendSystemMessageTestingOnly(player, "You Must be in God Mode to enjoy the Flash Speeder!");
}
break;
default:
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
refreshMenu ( player, "Select the desired option", "Character Builder Terminal", VEHICLE_OPTIONS, "handleVehicleSelect", false);
return SCRIPT_CONTINUE;
}
messageHandler handleMountSelect()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
handleVehicleOption(player);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > MOUNT_OPTIONS.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
switch(idx)
{
case 0: // cupa issed
handleMount(player, "carrion_spat");
break;
case 1: // kaadu issued
handleMount(player, "kaadu_motley");
break;
case 2: // dewback
handleMount(player, "lesser_dewback");
break;
case 3: // bol
handleMount(player, "bol_lesser_plains");
break;
case 4: // falumpaset
handleMount(player, "falumpaset_plodding");
break;
case 5: // brackaset
handleMount(player, "brackaset_lowlands");
break;
case 6: // cu pa
handleMount(player, "cu_pa");
break;
case 7: // bantha
handleMount(player, "dwarf_bantha");
break;
default:
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
refreshMenu ( player, "Select the desired option", "Character Builder Terminal", MOUNT_OPTIONS, "handleMountSelect", false);
return SCRIPT_CONTINUE;
}
messageHandler handleBeastSelect()
{
if(params == null || params.isEmpty())
{
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if(btn == sui.BP_REVERT)
{
handleVehicleOption(player);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
string [] beasts = (!isGod(player) ? BEAST_OPTIONS_FOR_PLAYERS : BEAST_OPTIONS);
if(idx == -1 || idx > beasts.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
string creatureName = "bm_" + beasts[idx];
obj_id inv = utils.getInventoryContainer(player);
obj_id egg = createObject("object/tangible/item/beast/bm_egg.iff", inv, "");
int hashCreatureType = incubator.getHashType(creatureName);
incubator.setUpEggWithDummyData(player, egg, hashCreatureType);
refreshMenu(player, "Select the desired option", "Character Builder Terminal", beasts, "handleBeastSelect", false);
return SCRIPT_CONTINUE;
}
void handleMount(obj_id player, string mountType)
{
location spawnLoc = getLocation(player);
spawnLoc.x += 2;
spawnLoc.z += 2;
// Check player's taming ability
int petType = pet_lib.getPetType(mountType);
int level = dataTableGetInt(pet_lib.CREATURE_TABLE, mountType, "level");
int chance = pet_lib.getChanceToTame(level, petType, player);
if(chance <= 0)
{
// Check to see if this pet can be tamed by anyone
if(petType == pet_lib.PET_TYPE_AGGRO)
{
// Aggresive creatures can't be tamed by non-handlers
sendSystemMessage(player, pet_lib.SID_SYS_LACK_SKILL);
return;
}
else
{
if(level > 10)
{
// Only creatures 15 or lower can be tamed by non-handlers.
sendSystemMessage(player, pet_lib.SID_SYS_LACK_SKILL);
return;
}
}
}
obj_id mount = create.object(mountType, spawnLoc);
if(!hasScript(player, "ai.pet_master"))
{
attachScript(player, "ai.pet_master");
}
if(!createNewMount(player, mount))
{
destroyObject(mount);
}
else
{
if(getMountsEnabled())
{
if(couldPetBeMadeMountable(mount) == 0)
{
if(makePetMountable(mount))
{
obj_id petControlDevice = callable.getCallableCD(mount);
setObjVar(petControlDevice, "ai.pet.trainedMount", 1);
setObjVar(petControlDevice, "ai.pet.type", pet_lib.getPetType(mount));
}
}
else
{
sendSystemMessageTestingOnly(player, "For some reason, the creature spawned can NOT be turned into a mount. Might be out of SCALE, could be several other things.");
}
}
}
}
boolean createNewMount(obj_id master, obj_id pet)
{
string creatureName = ai_lib.getCreatureName(pet);
if(creatureName == null || creatureName == "")
{
return false;
}
int petSpecies = ai_lib.aiGetSpecies(pet);
if(petSpecies == -1)
{
return false;
}
if(callable.hasCallable(master, callable.CALLABLE_TYPE_RIDEABLE))
{
return false;
}
if(!pet_lib.hasMaxStoredPetsOfType(master, pet_lib.PET_TYPE_MOUNT))
{
obj_id petControlDevice = null;
if(!callable.hasCallableCD(pet))
{
obj_id datapad = utils.getPlayerDatapad(master);
if(!isIdValid(datapad))
{
return false;
}
string controlTemplate = "object/intangible/pet/" + utils.dataTableGetString(create.CREATURE_TABLE, creatureName, "template");
if(!controlTemplate.endsWith(".iff"))
{
controlTemplate = pet_lib.PET_CTRL_DEVICE_TEMPLATE;
}
petControlDevice = createObject(controlTemplate, datapad, "");
if(!isIdValid(petControlDevice))
{
petControlDevice = createObject(pet_lib.PET_CTRL_DEVICE_TEMPLATE, datapad, "");
if(!isIdValid(petControlDevice))
{
sendSystemMessage(master, pet_lib.SID_SYS_TOO_MANY_STORED_PETS);
return false;
}
}
setObjVar(petControlDevice, "ai.pet.trainedMount", 1);
pet_lib.setUpPetControlDevice(petControlDevice, pet);
}
petControlDevice = callable.getCallableCD(pet);
callable.setCallableLinks(master, petControlDevice, pet);
dictionary params = new dictionary();
params.put("pet", pet);
params.put("master", master);
messageTo(pet, "handleAddMaster", params, 1, false);
sendSystemMessageTestingOnly(master, creatureName + " Issued and Stored on Your Datapad.");
// pet_lib.storePet(pet);
return true;
}
sendSystemMessage( master, pet_lib.SID_SYS_TOO_MANY_STORED_PETS );
return false;
}
//==================================================================
// Ship Section //===============================================
void handleShipOption(obj_id player)
{
obj_id self = getSelf();
refreshMenu ( player, "Select the desired ship option", "Character Builder Terminal", SHIP_OPTIONS, "handleShipOptions", false);
}
messageHandler handleShipOptions()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
startCharacterBuilder(player);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > SHIP_OPTIONS.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
string prompt = "Select the desired option";
string title = "Character Builder Terminal";
int pid = 0;
switch(idx)
{
case 0:
refreshMenu ( player, prompt, title, REBEL_SHIP_OPTIONS, "handleRebelShipSelect", false);
break;
case 1:
refreshMenu ( player, prompt, title, IMPERIAL_SHIP_OPTIONS, "handleImperialShipSelect", false);
break;
case 2:
refreshMenu ( player, prompt, title, FREELANCE_SHIP_OPTIONS, "handleFreelanceShipSelect", false);
break;
case 3:
refreshMenu ( player, prompt, title, OTHER_SHIP_OPTIONS, "handleOtherShipSelect", false);
break;
case 4:
refreshMenu ( player, prompt, title, MAIN_SHIP_OPTIONS, "handlePartShipSelect", false);
break;
case 5:
if(isGod(player))
{
refreshMenu(player, prompt, title, PILOT_SKILLS, "handlePilotSkillSelect", false);
}
else
{
sendSystemMessageTestingOnly(player, "This Option is Currently Disabled.");
cleanScriptVars(player);
}
break;
default:
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
return SCRIPT_CONTINUE;
}
boolean revokePilotingSkills (obj_id player)
{
if(hasSkill(player, "pilot_rebel_navy_novice") || hasSkill(player, "pilot_imperial_navy_novice") || hasSkill(player, "pilot_neutral_novice"))
{
string pilotFaction = "";
//we don't want the warning popup to happen. This scriptvar assists in removing the piloting skills without
//needing godmode level 50. Refer to space_skill.scriptlib and base_player.script (OnSkillAboutToBeRevoked)
if (!utils.hasScriptVar(player, "revokePilotSkill"))
{
utils.setScriptVar(player, "revokePilotSkill", 1);
}
//SNIFF OUT THE ACTUAL PILOT SKILL THE PLAYER HAS
if(hasSkill(player, "pilot_rebel_navy_novice"))
{
pilotFaction = "rebel_navy";
}
else if (hasSkill(player, "pilot_imperial_navy_novice"))
{
pilotFaction = "imperial_navy";
}
else if (hasSkill(player, "pilot_neutral_novice"))
{
pilotFaction = "neutral";
}
if(!pilotFaction.equals(""))
{
for (int i = 0; i < space_skill.SKILL_NAMES.length; i++)
{
//BASE JAVA
skill.revokeSkill(player, "pilot_" + pilotFaction + space_skill.SKILL_NAMES[i]);
}
//remove script var for warning/retirement popup
utils.removeScriptVar(player, "revokePilotSkill");
sendSystemMessageTestingOnly(player, "Pilot Skills Revoked.");
return true;
}
}
return false;
}
void handlePilotSkillSelect(obj_id player)
{
refreshMenu(player, GENERIC_PROMPT, GENERIC_TITLE, PILOT_SKILLS, "handlePilotSkillSelect", false);
}
messageHandler handlePilotSkillSelect()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
handleShipMenuSelect(player);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > PILOT_SKILLS.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
boolean pilotRevoked = true;
if(space_skill.hasSpaceSkills(player))
pilotRevoked = revokePilotingSkills(player);
if (!pilotRevoked)
{
sendSystemMessageTestingOnly(player, "The system was unable to revoke your pilot skills.");
return SCRIPT_OVERRIDE;
}
// Imperial skills
if(idx == 0)
{
skill.grantSkill(player, "pilot_imperial_navy_novice");
skill.grantSkill(player, "pilot_imperial_navy_starships_01");
skill.grantSkill(player, "pilot_imperial_navy_starships_02");
skill.grantSkill(player, "pilot_imperial_navy_starships_03");
skill.grantSkill(player, "pilot_imperial_navy_starships_04");
skill.grantSkill(player, "pilot_imperial_navy_weapons_01");
skill.grantSkill(player, "pilot_imperial_navy_weapons_02");
skill.grantSkill(player, "pilot_imperial_navy_weapons_03");
skill.grantSkill(player, "pilot_imperial_navy_weapons_04");
skill.grantSkill(player, "pilot_imperial_navy_procedures_01");
skill.grantSkill(player, "pilot_imperial_navy_procedures_02");
skill.grantSkill(player, "pilot_imperial_navy_procedures_03");
skill.grantSkill(player, "pilot_imperial_navy_procedures_04");
skill.grantSkill(player, "pilot_imperial_navy_droid_01");
skill.grantSkill(player, "pilot_imperial_navy_droid_02");
skill.grantSkill(player, "pilot_imperial_navy_droid_03");
skill.grantSkill(player, "pilot_imperial_navy_droid_04");
skill.grantSkill(player, "pilot_imperial_navy_master");
sendSystemMessageTestingOnly(player, "Master Imperial Pilot skills received.");
}
else if(idx == 1) // Rebel skills
{
skill.grantSkill(player, "pilot_rebel_navy_novice");
skill.grantSkill(player, "pilot_rebel_navy_starships_01");
skill.grantSkill(player, "pilot_rebel_navy_starships_02");
skill.grantSkill(player, "pilot_rebel_navy_starships_03");
skill.grantSkill(player, "pilot_rebel_navy_starships_04");
skill.grantSkill(player, "pilot_rebel_navy_weapons_01");
skill.grantSkill(player, "pilot_rebel_navy_weapons_02");
skill.grantSkill(player, "pilot_rebel_navy_weapons_03");
skill.grantSkill(player, "pilot_rebel_navy_weapons_04");
skill.grantSkill(player, "pilot_rebel_navy_procedures_01");
skill.grantSkill(player, "pilot_rebel_navy_procedures_02");
skill.grantSkill(player, "pilot_rebel_navy_procedures_03");
skill.grantSkill(player, "pilot_rebel_navy_procedures_04");
skill.grantSkill(player, "pilot_rebel_navy_droid_01");
skill.grantSkill(player, "pilot_rebel_navy_droid_02");
skill.grantSkill(player, "pilot_rebel_navy_droid_03");
skill.grantSkill(player, "pilot_rebel_navy_droid_04");
skill.grantSkill(player, "pilot_rebel_navy_master");
sendSystemMessageTestingOnly(player, "Master Rebel Pilot skills received.");
}
else if(idx == 2) // Neutral skills
{
skill.grantSkill(player, "pilot_neutral_novice");
skill.grantSkill(player, "pilot_neutral_starships_01");
skill.grantSkill(player, "pilot_neutral_starships_02");
skill.grantSkill(player, "pilot_neutral_starships_03");
skill.grantSkill(player, "pilot_neutral_starships_04");
skill.grantSkill(player, "pilot_neutral_weapons_01");
skill.grantSkill(player, "pilot_neutral_weapons_02");
skill.grantSkill(player, "pilot_neutral_weapons_03");
skill.grantSkill(player, "pilot_neutral_weapons_04");
skill.grantSkill(player, "pilot_neutral_procedures_01");
skill.grantSkill(player, "pilot_neutral_procedures_02");
skill.grantSkill(player, "pilot_neutral_procedures_03");
skill.grantSkill(player, "pilot_neutral_procedures_04");
skill.grantSkill(player, "pilot_neutral_droid_01");
skill.grantSkill(player, "pilot_neutral_droid_02");
skill.grantSkill(player, "pilot_neutral_droid_03");
skill.grantSkill(player, "pilot_neutral_droid_04");
skill.grantSkill(player, "pilot_neutral_master");
sendSystemMessageTestingOnly(player, "Master Privateer Pilot skills received.");
}
handlePilotSkillSelect(player);
return SCRIPT_CONTINUE;
}
messageHandler handleRebelShipSelect()
{
handleShipSelect(params, REBEL_SHIP_OPTIONS, REBEL_SHIP_TYPES, "handleRebelShipSelect");
return SCRIPT_CONTINUE;
}
messageHandler handleImperialShipSelect()
{
handleShipSelect(params, IMPERIAL_SHIP_OPTIONS, IMPERIAL_SHIP_TYPES, "handleImperialShipSelect");
return SCRIPT_CONTINUE;
}
messageHandler handleFreelanceShipSelect()
{
handleShipSelect(params, FREELANCE_SHIP_OPTIONS, FREELANCE_SHIP_TYPES, "handleFreelanceShipSelect");
return SCRIPT_CONTINUE;
}
messageHandler handleOtherShipSelect()
{
handleShipSelect(params, OTHER_SHIP_OPTIONS, OTHER_SHIP_TYPES, "handleOtherShipSelect");
return SCRIPT_CONTINUE;
}
void handleShipSelect(dictionary params, string[] options, string[] types, string message)
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return;
}
obj_id player = sui.getPlayerId(params);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
handleShipOption(player);
return;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return;
}
if ( idx == -1 || idx > options.length)
{
cleanScriptVars(player);
return;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return;
}
if (space_transition.isPlayerBelowShipLimit(player))
{
obj_id shipId = space_utils.createShipControlDevice(player, types[idx], false);
if (isIdValid(shipId))
{
sendSystemMessageTestingOnly(player, "Created ship (" + options[idx] + ") in datapad.");
}
else
{
sendSystemMessageTestingOnly(player, "Failed to create ship.");
}
}
else
{
sendSystemMessageTestingOnly(player, "Failed to create ship. No room in datapad.");
}
refreshMenu ( player, "Select the desired option", "Character Builder Terminal", options, message, false);
}
void handleShipMenuSelect(obj_id player)
{
refreshMenu ( player, "Select the desired deed option", "Character Builder Terminal", MAIN_SHIP_OPTIONS, "handleShipMenuSelect", false);
}
messageHandler handleShipMenuSelect()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
startCharacterBuilder(player);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > MAIN_SHIP_OPTIONS.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure player's inventory is valid
if (!isIdValid(pInv))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure there is room in player's inventory
if (getVolumeFree(pInv) <= 0)
{
sendSystemMessageTestingOnly(player, "Your Inventory is Full, please make room and try again.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
switch(idx)
{
case 0: //ship components
refreshMenu(player, GENERIC_PROMPT, GENERIC_TITLE, SPACE_LOOT_CATEGORIES, "handleShipComponentSelection", false);
break;
case 1: //ship chassis
string[] shipChassisArray = dataTableGetStringColumn(SHIP_CHASSIS_TBL, "name");;
refreshMenu(player, GENERIC_PROMPT, GENERIC_TITLE, shipChassisArray, "handleShipChasisSelection", false);
break;
case 2: //gunship reward schematics
static_item.createNewItemFunction("item_gunship_imperial_schematic",pInv);
static_item.createNewItemFunction("item_gunship_rebel_schematic",pInv);
static_item.createNewItemFunction("item_gunship_neutral_schematic",pInv);
sendSystemMessageTestingOnly(player, "Gunship Schematics Issued.");
handleShipMenuSelect(player);
break;
case 3: //pilot_skills
refreshMenu(player, GENERIC_PROMPT, GENERIC_TITLE, COLLECTION_COMPONENT_SCHEMS, "handleCollectionComponentSelect", false);
break;
case 4: //pilot_skills
refreshMenu(player, GENERIC_PROMPT, GENERIC_TITLE, PILOT_SKILLS, "handlePilotSkillSelect", false);
break;
default:
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
return SCRIPT_CONTINUE;
}
void handleCollectionComponentSelect(obj_id player)
{
refreshMenu(player, GENERIC_PROMPT, GENERIC_TITLE, COLLECTION_COMPONENT_SCHEMS, "handleCollectionComponentSelect", false);
}
messageHandler handleCollectionComponentSelect()
{
if ( (params == null) || (params.isEmpty()) )
{
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
handleShipMenuSelect(player);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
int dataTableLength = dataTableGetNumRows(SHIP_CHASSIS_TBL);
if ( idx == -1 || idx > dataTableLength)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure player's inventory is valid
if (!isIdValid(pInv))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure there is room in player's inventory
if (getVolumeFree(pInv) <= 0)
{
sendSystemMessageTestingOnly(player, "Your Inventory is Full, please make room and try again.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
switch(idx)
{
case 0: //Booster
static_item.createNewItemFunction("item_collection_reward_booster_01_mk5_schematic",pInv);
static_item.createNewItemFunction("item_collection_reward_booster_01_mk4_schematic",pInv);
static_item.createNewItemFunction("item_collection_reward_booster_01_mk3_schematic",pInv);
static_item.createNewItemFunction("item_collection_reward_booster_01_mk2_schematic",pInv);
static_item.createNewItemFunction("item_collection_reward_booster_01_mk1_schematic",pInv);
sendSystemMessageTestingOnly(player, "Component Schematics Issued.");
handleCollectionComponentSelect(player);
break;
case 1: //Capacitor
static_item.createNewItemFunction("item_collection_reward_capacitor_01_mk5_schematic",pInv);
static_item.createNewItemFunction("item_collection_reward_capacitor_01_mk4_schematic",pInv);
static_item.createNewItemFunction("item_collection_reward_capacitor_01_mk3_schematic",pInv);
static_item.createNewItemFunction("item_collection_reward_capacitor_01_mk2_schematic",pInv);
static_item.createNewItemFunction("item_collection_reward_capacitor_01_mk1_schematic",pInv);
sendSystemMessageTestingOnly(player, "Component Schematics Issued.");
handleCollectionComponentSelect(player);
break;
case 2: //Engine
static_item.createNewItemFunction("item_collection_reward_engine_01_mk5_schematic",pInv);
static_item.createNewItemFunction("item_collection_reward_engine_01_mk4_schematic",pInv);
static_item.createNewItemFunction("item_collection_reward_engine_01_mk3_schematic",pInv);
static_item.createNewItemFunction("item_collection_reward_engine_01_mk2_schematic",pInv);
static_item.createNewItemFunction("item_collection_reward_engine_01_mk1_schematic",pInv);
sendSystemMessageTestingOnly(player, "Component Schematics Issued.");
handleCollectionComponentSelect(player);
break;
case 3: //Reactor
static_item.createNewItemFunction("item_collection_reward_reactor_01_mk5_schematic",pInv);
static_item.createNewItemFunction("item_collection_reward_reactor_01_mk4_schematic",pInv);
static_item.createNewItemFunction("item_collection_reward_reactor_01_mk3_schematic",pInv);
static_item.createNewItemFunction("item_collection_reward_reactor_01_mk2_schematic",pInv);
static_item.createNewItemFunction("item_collection_reward_reactor_01_mk1_schematic",pInv);
sendSystemMessageTestingOnly(player, "Component Schematics Issued.");
handleCollectionComponentSelect(player);
break;
case 4: //NO Engines
static_item.createNewItemFunction("item_reward_orion_engine_schematic_01_01",pInv);
static_item.createNewItemFunction("item_reward_nova_engine_schematic_01_01",pInv);
static_item.createNewItemFunction("item_reward_orion_wpn_schematic_01_01",pInv);
static_item.createNewItemFunction("item_reward_nova_wpn_schematic_01_01",pInv);
sendSystemMessageTestingOnly(player, "Component Schematics Issued.");
handleCollectionComponentSelect(player);
break;
case 5: //GU16 Items
static_item.createNewItemFunction("item_reward_eng_elite_mk2_schematic",pInv);
static_item.createNewItemFunction("item_interdiction_terminal_schematic",pInv);
static_item.createNewItemFunction("item_interface_scanner_schematic",pInv);
static_item.createNewItemFunction("item_space_weapon_efficiency_booster",pInv);
static_item.createNewItemFunction("item_space_shield_high_capacity_projector",pInv);
sendSystemMessageTestingOnly(player, "Schematics Issued.");
handleCollectionComponentSelect(player);
break;
default:
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
handleCollectionComponentSelect(player);
return SCRIPT_CONTINUE;
}
void handleShipChasisSelection(obj_id player)
{
string[] shipChassisArray = dataTableGetStringColumn(SHIP_CHASSIS_TBL, "name");;
refreshMenu(player, GENERIC_PROMPT, GENERIC_TITLE, shipChassisArray, "handleShipChasisSelection", false);
}
messageHandler handleShipChasisSelection()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
handleShipMenuSelect(player);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
int dataTableLength = dataTableGetNumRows(SHIP_CHASSIS_TBL);
if ( idx == -1 || idx > dataTableLength)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure player's inventory is valid
if (!isIdValid(pInv))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure there is room in player's inventory
if (getVolumeFree(pInv) <= 0)
{
sendSystemMessageTestingOnly(player, "Your Inventory is Full, please make room and try again.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
issueShipChassis(player, idx);
handleShipChasisSelection(player);
return SCRIPT_CONTINUE;
}
void handleShipComponentSelection(obj_id player)
{
refreshMenu(player, GENERIC_PROMPT, GENERIC_TITLE, SPACE_LOOT_CATEGORIES, "handleShipComponentSelection", false);
}
messageHandler handleShipComponentSelection()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
handleShipMenuSelect(player);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > SPACE_LOOT_CATEGORIES.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure player's inventory is valid
if (!isIdValid(pInv))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure there is room in player's inventory
if (getVolumeFree(pInv) <= 0)
{
sendSystemMessageTestingOnly(player, "Your Inventory is Full, please make room and try again.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
switch(idx)
{
case 0: //armor
string armorMenuArray[] = dataTableGetStringColumn(SHIPCOMPONENT_ARMOR_TBL, "strName");
refreshMenu(player, GENERIC_PROMPT, GENERIC_TITLE, armorMenuArray, "handleShipComponentArmorSelection", false);
break;
case 1: //booster
string boosterMenuArray[] = dataTableGetStringColumn(SHIPCOMPONENT_BOOSTER_TBL, "strName");
refreshMenu(player, GENERIC_PROMPT, GENERIC_TITLE, boosterMenuArray, "handleShipComponentBoosterSelection", false);
break;
case 2: //droid_interface
string droidInterfaceMenuArray[] = dataTableGetStringColumn(SHIPCOMPONENT_DROIDINTERFACE_TBL, "strName");
refreshMenu(player, GENERIC_PROMPT, GENERIC_TITLE, droidInterfaceMenuArray, "handleShipComponentDroidInterfaceSelection", false);
break;
case 3: //engine
string engineMenuArray[] = dataTableGetStringColumn(SHIPCOMPONENT_ENGINE_TBL, "strName");
refreshMenu(player, GENERIC_PROMPT, GENERIC_TITLE, engineMenuArray, "handleShipComponentEngineSelection", false);
break;
case 4: //reactor
string reactorMenuArray[] = dataTableGetStringColumn(SHIPCOMPONENT_REACTOR_TBL, "strName");
refreshMenu(player, GENERIC_PROMPT, GENERIC_TITLE, reactorMenuArray, "handleShipComponentReactorSelection", false);
break;
case 5: //shield_generator
string shieldMenuArray[] = dataTableGetStringColumn(SHIPCOMPONENT_SHIELD_TBL, "strName");
refreshMenu(player, GENERIC_PROMPT, GENERIC_TITLE, shieldMenuArray, "handleShipComponentShieldSelection", false);
break;
case 6: //weapon
string weaponMenuArray[] = dataTableGetStringColumn(SHIPCOMPONENT_WEAPON_TBL, "strName");
refreshMenu(player, GENERIC_PROMPT, GENERIC_TITLE, weaponMenuArray, "handleShipComponentWeaponSelection", false);
break;
case 7: //weapon_capacitor
string capacitorMenuArray[] = dataTableGetStringColumn(SHIPCOMPONENT_CAPACITOR_TBL, "strName");
refreshMenu(player, GENERIC_PROMPT, GENERIC_TITLE, capacitorMenuArray, "handleShipComponentCapacitorSelection", false);
break;
case 8: //create a reactor
obj_id droidInterface = createObject("object/tangible/ship/components/droid_interface/ddi_freitek_elite.iff", pInv, "");
handleShipComponentSelection(player);
break;
default:
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
return SCRIPT_CONTINUE;
}
void handleShipComponentArmorSelection(obj_id player)
{
string armorMenuArray[] = dataTableGetStringColumn(SHIPCOMPONENT_ARMOR_TBL, "strName");
refreshMenu(player, GENERIC_PROMPT, GENERIC_TITLE, armorMenuArray, "handleShipComponentArmorSelection", false);
}
messageHandler handleShipComponentArmorSelection()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
handleShipComponentSelection(player);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
int dataTableLength = dataTableGetNumRows(SHIPCOMPONENT_ARMOR_TBL);
if ( idx == -1 || idx > dataTableLength)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure player's inventory is valid
if (!isIdValid(pInv))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure there is room in player's inventory
if (getVolumeFree(pInv) <= 0)
{
sendSystemMessageTestingOnly(player, "Your Inventory is Full, please make room and try again.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
string objString = dataTableGetString(SHIPCOMPONENT_ARMOR_TBL, idx, "strType");
obj_id objectOID = createObject(objString, pInv, "");
if(!isIdValid(objectOID))
{
sendSystemMessage(player, "The component could not be created", null);
return SCRIPT_CONTINUE;
}
tweakSpaceShipComponent(objectOID);
handleShipComponentArmorSelection(player);
return SCRIPT_CONTINUE;
}
void handleShipComponentBoosterSelection(obj_id player)
{
string boosterMenuArray[] = dataTableGetStringColumn(SHIPCOMPONENT_BOOSTER_TBL, "strName");
refreshMenu(player, GENERIC_PROMPT, GENERIC_TITLE, boosterMenuArray, "handleShipComponentBoosterSelection", false);
}
messageHandler handleShipComponentBoosterSelection()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
handleShipComponentSelection(player);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
int dataTableLength = dataTableGetNumRows(SHIPCOMPONENT_BOOSTER_TBL);
if ( idx == -1 || idx > dataTableLength)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure player's inventory is valid
if (!isIdValid(pInv))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure there is room in player's inventory
if (getVolumeFree(pInv) <= 0)
{
sendSystemMessageTestingOnly(player, "Your Inventory is Full, please make room and try again.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
string objectString = dataTableGetString(SHIPCOMPONENT_BOOSTER_TBL, idx, "strType");
obj_id objectOID = createObject(objectString, pInv, "");
if(!isIdValid(objectOID))
{
sendSystemMessage(player, "The component could not be created", null);
return SCRIPT_CONTINUE;
}
tweakSpaceShipComponent(objectOID);
handleShipComponentBoosterSelection(player);
return SCRIPT_CONTINUE;
}
void handleShipComponentCapacitorSelection(obj_id player)
{
string menuArray[] = dataTableGetStringColumn(SHIPCOMPONENT_CAPACITOR_TBL, "strName");
refreshMenu(player, GENERIC_PROMPT, GENERIC_TITLE, menuArray, "handleShipComponentCapacitorSelection", false);
}
messageHandler handleShipComponentCapacitorSelection()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
handleShipComponentSelection(player);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
int dataTableLength = dataTableGetNumRows(SHIPCOMPONENT_CAPACITOR_TBL);
if ( idx == -1 || idx > dataTableLength)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure player's inventory is valid
if (!isIdValid(pInv))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure there is room in player's inventory
if (getVolumeFree(pInv) <= 0)
{
sendSystemMessageTestingOnly(player, "Your Inventory is Full, please make room and try again.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
string objectString = dataTableGetString(SHIPCOMPONENT_CAPACITOR_TBL, idx, "strType");
obj_id objectOID = createObject(objectString, pInv, "");
if(!isIdValid(objectOID))
{
sendSystemMessage(player, "The component could not be created", null);
return SCRIPT_CONTINUE;
}
tweakSpaceShipComponent(objectOID);
handleShipComponentCapacitorSelection(player);
return SCRIPT_CONTINUE;
}
void handleShipComponentDroidInterfaceSelection(obj_id player)
{
string menuArray[] = dataTableGetStringColumn(SHIPCOMPONENT_DROIDINTERFACE_TBL, "strName");
refreshMenu(player, GENERIC_PROMPT, GENERIC_TITLE, menuArray, "handleShipComponentDroidInterfaceSelection", false);
}
messageHandler handleShipComponentDroidInterfaceSelection()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
handleShipComponentSelection(player);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
int dataTableLength = dataTableGetNumRows(SHIPCOMPONENT_DROIDINTERFACE_TBL);
if ( idx == -1 || idx > dataTableLength)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure player's inventory is valid
if (!isIdValid(pInv))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure there is room in player's inventory
if (getVolumeFree(pInv) <= 0)
{
sendSystemMessageTestingOnly(player, "Your Inventory is Full, please make room and try again.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
string objectString = dataTableGetString(SHIPCOMPONENT_DROIDINTERFACE_TBL, idx, "strType");
obj_id objectOID = createObject(objectString, pInv, "");
if(!isIdValid(objectOID))
{
sendSystemMessage(player, "The component could not be created", null);
return SCRIPT_CONTINUE;
}
tweakSpaceShipComponent(objectOID);
handleShipComponentDroidInterfaceSelection(player);
return SCRIPT_CONTINUE;
}
void handleShipComponentEngineSelection(obj_id player)
{
string menuArray[] = dataTableGetStringColumn(SHIPCOMPONENT_ENGINE_TBL, "strName");
refreshMenu(player, GENERIC_PROMPT, GENERIC_TITLE, menuArray, "handleShipComponentEngineSelection", false);
}
messageHandler handleShipComponentEngineSelection()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
handleShipComponentSelection(player);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
int dataTableLength = dataTableGetNumRows(SHIPCOMPONENT_ENGINE_TBL);
if ( idx == -1 || idx > dataTableLength)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure player's inventory is valid
if (!isIdValid(pInv))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure there is room in player's inventory
if (getVolumeFree(pInv) <= 0)
{
sendSystemMessageTestingOnly(player, "Your Inventory is Full, please make room and try again.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
string objectString = dataTableGetString(SHIPCOMPONENT_ENGINE_TBL, idx, "strType");
obj_id objectOID = createObject(objectString, pInv, "");
if(!isIdValid(objectOID))
{
sendSystemMessage(player, "The component could not be created", null);
return SCRIPT_CONTINUE;
}
tweakSpaceShipComponent(objectOID);
handleShipComponentEngineSelection(player);
return SCRIPT_CONTINUE;
}
void handleShipComponentReactorSelection(obj_id player)
{
string menuArray[] = dataTableGetStringColumn(SHIPCOMPONENT_REACTOR_TBL, "strName");
refreshMenu(player, GENERIC_PROMPT, GENERIC_TITLE, menuArray, "handleShipComponentReactorSelection", false);
}
messageHandler handleShipComponentReactorSelection()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
handleShipComponentSelection(player);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
int dataTableLength = dataTableGetNumRows(SHIPCOMPONENT_REACTOR_TBL);
if ( idx == -1 || idx > dataTableLength)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure player's inventory is valid
if (!isIdValid(pInv))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure there is room in player's inventory
if (getVolumeFree(pInv) <= 0)
{
sendSystemMessageTestingOnly(player, "Your Inventory is Full, please make room and try again.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
string objectString = dataTableGetString(SHIPCOMPONENT_REACTOR_TBL, idx, "strType");
obj_id objectOID = createObject(objectString, pInv, "");
if(!isIdValid(objectOID))
{
sendSystemMessage(player, "The component could not be created", null);
return SCRIPT_CONTINUE;
}
tweakSpaceShipComponent(objectOID);
handleShipComponentReactorSelection(player);
return SCRIPT_CONTINUE;
}
void handleShipComponentShieldSelection(obj_id player)
{
string menuArray[] = dataTableGetStringColumn(SHIPCOMPONENT_SHIELD_TBL, "strName");
refreshMenu(player, GENERIC_PROMPT, GENERIC_TITLE, menuArray, "handleShipComponentShieldSelection", false);
}
messageHandler handleShipComponentShieldSelection()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
handleShipComponentSelection(player);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
int dataTableLength = dataTableGetNumRows(SHIPCOMPONENT_SHIELD_TBL);
if ( idx == -1 || idx > dataTableLength)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure player's inventory is valid
if (!isIdValid(pInv))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure there is room in player's inventory
if (getVolumeFree(pInv) <= 0)
{
sendSystemMessageTestingOnly(player, "Your Inventory is Full, please make room and try again.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
string objectString = dataTableGetString(SHIPCOMPONENT_SHIELD_TBL, idx, "strType");
obj_id objectOID = createObject(objectString, pInv, "");
if(!isIdValid(objectOID))
{
sendSystemMessage(player, "The component could not be created", null);
return SCRIPT_CONTINUE;
}
tweakSpaceShipComponent(objectOID);
handleShipComponentShieldSelection(player);
return SCRIPT_CONTINUE;
}
void handleShipComponentWeaponSelection(obj_id player)
{
string menuArray[] = dataTableGetStringColumn(SHIPCOMPONENT_WEAPON_TBL, "strName");
refreshMenu(player, GENERIC_PROMPT, GENERIC_TITLE, menuArray, "handleShipComponentWeaponSelection", false);
}
messageHandler handleShipComponentWeaponSelection()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
handleShipComponentSelection(player);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
int dataTableLength = dataTableGetNumRows(SHIPCOMPONENT_WEAPON_TBL);
if ( idx == -1 || idx > dataTableLength)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure player's inventory is valid
if (!isIdValid(pInv))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure there is room in player's inventory
if (getVolumeFree(pInv) <= 0)
{
sendSystemMessageTestingOnly(player, "Your Inventory is Full, please make room and try again.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
string objectString = dataTableGetString(SHIPCOMPONENT_WEAPON_TBL, idx, "strType");
obj_id objectOID = createObject(objectString, pInv, "");
if(!isIdValid(objectOID))
{
sendSystemMessage(player, "The component could not be created", null);
return SCRIPT_CONTINUE;
}
tweakSpaceShipComponent(objectOID);
handleShipComponentWeaponSelection(player);
return SCRIPT_CONTINUE;
}
//===================================================================
// Deeds Section //===============================================
void handleDeedOption(obj_id player)
{
refreshMenu ( player, "Select the desired deed option", "Character Builder Terminal", DEED_OPTIONS, "handleDeedSelect", false);
}
messageHandler handleDeedSelect()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
startCharacterBuilder(player);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > DEED_OPTIONS.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure player's inventory is valid
if (!isIdValid(pInv))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure there is room in player's inventory
if (getVolumeFree(pInv) <= 0)
{
sendSystemMessageTestingOnly(player, "Your Inventory is Full, please make room and try again.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
switch(idx)
{
case 0: // clothing factory
createObject("object/tangible/deed/factory_deed/clothing_factory_deed.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Clothing Factory Deed Issued.");
break;
case 1: // food factory
createObject("object/tangible/deed/factory_deed/food_factory_deed.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Food Factory Deed Issued.");
break;
case 2: // equipment factory
createObject("object/tangible/deed/factory_deed/item_factory_deed.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Item Factory Deed Issued.");
break;
case 3: // structure factory
createObject("object/tangible/deed/factory_deed/structure_factory_deed.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Structure Factory Deed Issued.");
break;
case 4: // generic small house
createObject("object/tangible/deed/player_house_deed/generic_house_small_deed.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Generic House Deed Issued.");
break;
case 5: // tatooine small house
createObject("object/tangible/deed/player_house_deed/tatooine_house_small_deed.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Small Tatooine House Deed Issued.");
break;
case 6: // naboo small house
createObject("object/tangible/deed/player_house_deed/naboo_house_small_deed.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Small Naboo House Deed Issued.");
break;
case 7: // corellia small house
createObject("object/tangible/deed/player_house_deed/corellia_house_small_deed.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Small Corellia House Deed Issued.");
break;
case 8: // merchant tent
createObject("object/tangible/deed/player_house_deed/merchant_tent_style_03_deed.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Merchant Tent Deed Issued.");
break;
case 9: // Heavy Mineral
obj_id mineral = createObject("object/tangible/deed/harvester_deed/ore_harvester_heavy_deed.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Heavy Mineral Harvester Issued.");
if(isIdValid(mineral))
{
setObjVar (mineral, "player_structure.deed.maxExtractionRate", 13);
setObjVar (mineral, "player_structure.deed.currentExtractionRate", 13);
}
break;
case 10: // Heavy Flora
obj_id flora = createObject("object/tangible/deed/harvester_deed/flora_harvester_deed_heavy.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Heavy Flora Harvester Issued.");
if(isIdValid(flora))
{
setObjVar (flora, "player_structure.deed.maxExtractionRate", 13);
setObjVar (flora, "player_structure.deed.currentExtractionRate", 13);
}
break;
case 11: // Heavy Gas
obj_id gas = createObject("object/tangible/deed/harvester_deed/gas_harvester_deed_heavy.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Heavy Gas Harvester Issued.");
if(isIdValid(gas))
{
setObjVar (gas, "player_structure.deed.maxExtractionRate", 13);
setObjVar (gas, "player_structure.deed.currentExtractionRate", 13);
}
break;
case 12: // Heavy Chemical
obj_id chemical = createObject("object/tangible/deed/harvester_deed/liquid_harvester_deed_heavy.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Heavy Chemical Harvester Issued.");
if(isIdValid(chemical))
{
setObjVar (chemical, "player_structure.deed.maxExtractionRate", 13);
setObjVar (chemical, "player_structure.deed.currentExtractionRate", 13);
}
break;
case 13: // Heavy Moisture
obj_id moisture = createObject("object/tangible/deed/harvester_deed/moisture_harvester_deed_heavy.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Heavy Moisture Vaporator Issued.");
if(isIdValid(moisture))
{
setObjVar (moisture, "player_structure.deed.maxExtractionRate", 13);
setObjVar (moisture, "player_structure.deed.currentExtractionRate", 13);
}
break;
case 14: // Fusion
obj_id fusion = createObject("object/tangible/deed/generator_deed/power_generator_fusion_deed.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Fusion Reactor Issued.");
if(isIdValid(fusion))
{
setObjVar (fusion, "player_structure.deed.maxExtractionRate", 16);
setObjVar (fusion, "player_structure.deed.currentExtractionRate", 16);
}
break;
case 15:
//Tatooine City Pack
createObject("object/tangible/deed/city_deed/cityhall_corellia_deed.iff", pInv, "");
createObject("object/tangible/deed/city_deed/cloning_corellia_deed.iff", pInv, "");
createObject("object/tangible/deed/city_deed/bank_corellia_deed.iff", pInv, "");
createObject("object/tangible/deed/city_deed/garage_corellia_deed.iff", pInv, "");
createObject("object/tangible/deed/city_deed/garden_corellia_lrg_01_deed.iff", pInv, "");
createObject("object/tangible/deed/city_deed/garden_corellia_med_01_deed.iff", pInv, "");
createObject("object/tangible/deed/city_deed/garden_corellia_sml_01_deed.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Corellia City Pack Created");
break;
case 16:
//Naboo City Pack
createObject("object/tangible/deed/city_deed/cityhall_naboo_deed.iff", pInv, "");
createObject("object/tangible/deed/city_deed/cloning_naboo_deed.iff", pInv, "");
createObject("object/tangible/deed/city_deed/bank_naboo_deed.iff", pInv, "");
createObject("object/tangible/deed/city_deed/garage_naboo_deed.iff", pInv, "");
createObject("object/tangible/deed/city_deed/garden_naboo_lrg_01_deed.iff", pInv, "");
createObject("object/tangible/deed/city_deed/garden_naboo_med_01_deed.iff", pInv, "");
createObject("object/tangible/deed/city_deed/garden_naboo_sml_01_deed.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Naboo City Pack Created");
break;
case 17:
//Corellia City Pack
createObject("object/tangible/deed/city_deed/cityhall_tatooine_deed.iff", pInv, "");
createObject("object/tangible/deed/city_deed/cloning_tatooine_deed.iff", pInv, "");
createObject("object/tangible/deed/city_deed/bank_tatooine_deed.iff", pInv, "");
createObject("object/tangible/deed/city_deed/garage_tatooine_deed.iff", pInv, "");
createObject("object/tangible/deed/city_deed/garden_tatooine_lrg_01_deed.iff", pInv, "");
createObject("object/tangible/deed/city_deed/garden_tatooine_med_01_deed.iff", pInv, "");
createObject("object/tangible/deed/city_deed/garden_tatooine_sml_01_deed.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Tatooine City Pack Created");
break;
default:
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
handleDeedOption(player);
return SCRIPT_CONTINUE;
}
//===================================================================
// Crafting Section //===============================================
void handleCraftingOption(obj_id player)
{
refreshMenu ( player, "Select the desired deed option", "Character Builder Terminal", CRAFTING_OPTIONS, "handleCraftingSelect", false);
}
messageHandler handleCraftingSelect()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
startCharacterBuilder(player);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > CRAFTING_OPTIONS.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure player's inventory is valid
if (!isIdValid(pInv))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure there is room in player's inventory
if (getVolumeFree(pInv) <= 0)
{
sendSystemMessageTestingOnly(player, "Your Inventory is Full, please make room and try again.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
switch(idx)
{
case 0: // weapon station
createObject("object/tangible/crafting/station/weapon_station.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Weapon Crafting Station Issued.");
break;
case 1: // structure station
createObject("object/tangible/crafting/station/structure_station.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Structure Crafting Station Issued.");
break;
case 2: // clothing station
createObject("object/tangible/crafting/station/clothing_station.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Clothing Crafting Station Issued.");
break;
case 3: // food station
createObject("object/tangible/crafting/station/food_station.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Food Crafting Station Issued.");
break;
case 4: // generic crafting tool
createObject("object/tangible/crafting/station/generic_tool.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Generic Crafting Tool Issued.");
break;
case 5: // weapon crafting tool
createObject("object/tangible/crafting/station/weapon_tool.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Weapon Crafting Tool Issued.");
break;
case 6: // structure crafting tool
createObject("object/tangible/crafting/station/structure_tool.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Structure Crafting Tool Issued.");
break;
case 7: // clothing crafting tool
createObject("object/tangible/crafting/station/clothing_tool.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Clothing Crafting Tool Issued.");
break;
case 8: // food crafting tool
createObject("object/tangible/crafting/station/food_tool.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Food Crafting Tool Issued.");
break;
case 9:
createObject("object/tangible/crafting/station/space_tool.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Ship Crafting Tool Issued.");
break;
case 10:
createObject("object/tangible/crafting/station/space_station.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Ship Crafting Station Issued.");
break;
default:
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
handleCraftingOption(player);
return SCRIPT_CONTINUE;
}
//===================================================================
// PA Hall Section //===============================================
void handlePAOption(obj_id player)
{
refreshMenu ( player, "Select the desired deed option", "Character Builder Terminal", PA_OPTIONS, "handlePASelect", false);
}
messageHandler handlePASelect()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
startCharacterBuilder(player);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > PA_OPTIONS.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure player's inventory is valid
if (!isIdValid(pInv))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure there is room in player's inventory
if (getVolumeFree(pInv) <= 0)
{
sendSystemMessageTestingOnly(player, "Your Inventory is Full, please make room and try again.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
switch(idx)
{
case 0: // generic pa hall
createObject("object/tangible/deed/guild_deed/generic_guild_deed.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Generic PA Hall Deed Issued.");
break;
case 1: // tatooine pa hall
createObject("object/tangible/deed/guild_deed/tatooine_guild_deed.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Tatooine PA Hall Deed Issued.");
break;
case 2: // naboo pa hall
createObject("object/tangible/deed/guild_deed/naboo_guild_deed.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Naboo PA Hall Deed Issued.");
break;
case 3: // corellia pa hall
createObject("object/tangible/deed/guild_deed/corellia_guild_deed.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Corellia PA Hall Deed Issued.");
break;
case 4: // tatooine city hall
createObject("object/tangible/deed/city_deed/cityhall_tatooine_deed.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Tatooine City Hall Deed Issued.");
break;
case 5: // naboo city hall
createObject("object/tangible/deed/city_deed/cityhall_naboo_deed.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Naboo City Hall Deed Issued.");
break;
case 6: // corellia city hall
createObject("object/tangible/deed/city_deed/cityhall_corellia_deed.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Corellia City Hall Deed Issued.");
break;
default:
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
handlePAOption(player);
return SCRIPT_CONTINUE;
}
//===================================================================
// Weapon Section //===============================================
void handleWeaponOption(obj_id player)
{
refreshMenu (player, "Select the desired weapon option", "Character Builder Terminal", WEAPON_OPTIONS, "handleWeaponOptions", false);
}
messageHandler handleWeaponOptions()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
refreshMenu (player, "Select the desired character option", "Character Builder Terminal", CHARACTER_BUILDER_OPTIONS, "handleOptionSelect", true);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > WEAPON_OPTIONS.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
switch(idx)
{
case 0:
refreshMenu (player, "Select the desired weapon option", "Character Builder Terminal", PISTOL_OPTIONS, "handlePistolSelect", false);
break;
case 1:
refreshMenu (player, "Select the desired weapon option", "Character Builder Terminal", CARBINE_OPTIONS, "handleCarbineSelect", false);
break;
case 2:
refreshMenu (player, "Select the desired weapon option", "Character Builder Terminal", RIFLE_OPTIONS, "handleRifleSelect", false);
break;
case 3:
refreshMenu (player, "Select the desired weapon option", "Character Builder Terminal", HEAVY_WEAPON_OPTIONS, "handleHeavySelect", false);
break;
case 4:
refreshMenu (player, "Select the desired weapon option", "Character Builder Terminal", UNARMED_OPTIONS, "handleUnarmedSelect", false);
break;
case 5:
refreshMenu (player, "Select the desired weapon option", "Character Builder Terminal", ONEHANDED_OPTIONS, "handleOneHandedSelect", false);
break;
case 6:
refreshMenu (player, "Select the desired weapon option", "Character Builder Terminal", TWOHANDED_OPTIONS, "handleTwoHandedSelect", false);
break;
case 7:
refreshMenu (player, "Select the desired weapon option", "Character Builder Terminal", POLEARM_OPTIONS, "handlePolearmSelect", false);
break;
case 8:
refreshMenu (player, "Select the desired weapon option", "Character Builder Terminal", BATTLEFIELD_WEAPON_OPTIONS, "handleBattlefieldSelect", false);
break;
// case 9:
// refreshMenu (player, "Select the desired weapon option", "Character Builder Terminal", GRENADE_OPTIONS, "handleGrenadeSelect", false);
// break;
default:
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
return SCRIPT_CONTINUE;
}
messageHandler handlePistolSelect()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT)
{
refreshMenu (player, "Select the desired weapon option", "Character Builder Terminal", WEAPON_OPTIONS, "handleWeaponOptions", false);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > PISTOL_OPTIONS.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure player's inventory is valid
if (!isIdValid(pInv))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure there is room in player's inventory
if (getVolumeFree(pInv) <= 0)
{
sendSystemMessageTestingOnly(player, "Your Inventory is Full, please make room and try again.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
string weapon = "";
switch(idx)
{
case 0: // cdef
weapon = "object/weapon/ranged/pistol/pistol_cdef.iff";
break;
case 1: // scout blaster
weapon = "object/weapon/ranged/pistol/pistol_scout_blaster.iff";
break;
case 2: // sonic blaster
weapon = "object/weapon/ranged/pistol/pistol_geonosian_sonic_blaster_loot.iff";
break;
case 3: // republic blaster
weapon = "object/weapon/ranged/pistol/pistol_republic_blaster.iff";
break;
case 4: // launcher
weapon = "object/weapon/ranged/pistol/pistol_launcher.iff";
break;
case 5: // scatter
weapon = "object/weapon/ranged/pistol/pistol_scatter.iff";
break;
case 6: // light scatter
weapon = "object/weapon/ranged/pistol/pistol_scatter_light.iff";
break;
case 7: // sr combat
weapon = "object/weapon/ranged/pistol/pistol_srcombat.iff";
break;
case 8: // striker
weapon = "object/weapon/ranged/pistol/pistol_striker.iff";
break;
case 9: // tangle
weapon = "object/weapon/ranged/pistol/pistol_tangle.iff";
break;
case 10: // power5
weapon = "object/weapon/ranged/pistol/pistol_power5.iff";
break;
case 11: // fwg5
weapon = "object/weapon/ranged/pistol/pistol_fwg5.iff";
break;
case 12: // dx2
weapon = "object/weapon/ranged/pistol/pistol_dx2.iff";
break;
case 13: // dl44 XT
weapon = "object/weapon/ranged/pistol/pistol_dl44_metal.iff";
break;
case 14: // dl44
weapon = "object/weapon/ranged/pistol/pistol_dl44.iff";
break;
case 15: // dh17
weapon = "object/weapon/ranged/pistol/pistol_dh17.iff";
break;
case 16: // d18
weapon = "object/weapon/ranged/pistol/pistol_d18.iff";
break;
case 17: // alliance disruptor
weapon = "object/weapon/ranged/pistol/pistol_alliance_disruptor.iff";
break;
case 18: // deathhammer
weapon = "object/weapon/ranged/pistol/pistol_deathhammer.iff";
break;
case 19: // flare pistol
weapon = "object/weapon/ranged/pistol/pistol_flare.iff";
break;
case 20: // flechette pistol
weapon = "object/weapon/ranged/pistol/pistol_flechette.iff";
break;
case 21: // intimidator
weapon = "object/weapon/ranged/pistol/pistol_intimidator.iff";
break;
case 22: // jawa pistol
weapon = "object/weapon/ranged/pistol/pistol_jawa.iff";
break;
case 23: // renegade pistol
weapon = "object/weapon/ranged/pistol/pistol_renegade.iff";
break;
case 24: // DE-10
weapon = "object/weapon/ranged/pistol/pistol_de_10.iff";
break;
case 25: // DL44 Metal
weapon = "object/weapon/ranged/pistol/pistol_dl44_metal_light.iff";
break;
case 26: // Disruptor
weapon = "object/weapon/ranged/pistol/som_disruptor_pistol.iff";
break;
case 27: // Ion Relic
weapon = "object/weapon/ranged/pistol/som_ion_relic_pistol.iff";
break;
case 28: // heroic SD
weapon = "object/weapon/ranged/pistol/pistol_heroic_sd.iff";
break;
default:
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
if(weapon != null && weapon != "")
createSnowFlakeFrogWeapon(player, weapon);
refreshMenu (player, "Select the desired weapon option", "Character Builder Terminal", PISTOL_OPTIONS, "handlePistolSelect", false);
return SCRIPT_CONTINUE;
}
messageHandler handleCarbineSelect()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
refreshMenu (player, "Select the desired weapon option", "Character Builder Terminal", WEAPON_OPTIONS, "handleWeaponOptions", false);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > CARBINE_OPTIONS.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure player's inventory is valid
if (!isIdValid(pInv))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure there is room in player's inventory
if (getVolumeFree(pInv) <= 0)
{
sendSystemMessageTestingOnly(player, "Your Inventory is Full, please make room and try again.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
string weapon = "";
switch(idx)
{
case 0: // cdef
weapon = "object/weapon/ranged/carbine/carbine_cdef.iff";
break;
case 1: // dh17
weapon = "object/weapon/ranged/carbine/carbine_dh17.iff";
break;
case 2: // dh17 snubnose
weapon = "object/weapon/ranged/carbine/carbine_dh17_snubnose.iff";
break;
case 3: // e11
weapon = "object/weapon/ranged/carbine/carbine_e11.iff";
break;
case 4: // e11 mark 2
weapon = "object/weapon/ranged/carbine/carbine_e11_mark2.iff";
break;
case 5: // laser
weapon = "object/weapon/ranged/carbine/carbine_laser.iff";
break;
case 6: // dxr6
weapon = "object/weapon/ranged/carbine/carbine_dxr6.iff";
break;
case 7: // ee3 carbine
weapon = "object/weapon/ranged/carbine/carbine_ee3.iff";
break;
case 8: // elite
weapon = "object/weapon/ranged/carbine/carbine_elite.iff";
break;
case 9: // nyms
weapon = "object/weapon/ranged/carbine/carbine_nym_slugthrower.iff";
break;
case 10: // alliance needler
weapon = "object/weapon/ranged/carbine/carbine_alliance_needler.iff";
break;
case 11: // bothan bola
weapon = "object/weapon/ranged/carbine/carbine_bothan_bola.iff";
break;
case 12: // e 5
weapon ="object/weapon/ranged/carbine/carbine_e5.iff";
break;
case 13: // geonosian
weapon = "object/weapon/ranged/carbine/carbine_geo.iff";
break;
case 14: // proton
weapon = "object/weapon/ranged/carbine/carbine_proton.iff";
break;
case 15: // czerka
weapon = "object/weapon/ranged/carbine/carbine_czerka_dart.iff";
break;
case 16: // sfor
weapon = "object/weapon/ranged/carbine/som_carbine_republic_sfor.iff";
break;
case 17: // heroic sd
weapon = "object/weapon/ranged/carbine/carbine_heroic_sd.iff";
break;
default:
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
if(weapon != null && weapon != "")
createSnowFlakeFrogWeapon(player, weapon);
refreshMenu (player, "Select the desired weapon option", "Character Builder Terminal", CARBINE_OPTIONS, "handleCarbineSelect", false);
return SCRIPT_CONTINUE;
}
messageHandler handleRifleSelect()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
refreshMenu (player, "Select the desired weapon option", "Character Builder Terminal", WEAPON_OPTIONS, "handleWeaponOptions", false);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > RIFLE_OPTIONS.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure player's inventory is valid
if (!isIdValid(pInv))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure there is room in player's inventory
if (getVolumeFree(pInv) <= 0)
{
sendSystemMessageTestingOnly(player, "Your Inventory is Full, please make room and try again.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
string weapon = "";
switch(idx)
{
case 0: // Death Trooper
weapon = "item_outbreak_deathrooper_rifle";
break;
case 1: // TC-22 GCW
weapon = "weapon_gcw_tc22_rifle_03_01";
break;
case 2: // Jinkins J-1 Nym's Themepark
weapon = "weapon_jinkins_j1_01_01";
break;
case 3: // cdef
weapon = "object/weapon/ranged/rifle/rifle_cdef.iff";
break;
case 4: // dlt20 rifle
weapon = "object/weapon/ranged/rifle/rifle_dlt20.iff";
break;
case 5: // dlt20a rifle
weapon = "object/weapon/ranged/rifle/rifle_dlt20a.iff";
break;
case 6: // tusken rifle
weapon = "object/weapon/ranged/rifle/rifle_tusken.iff";
break;
case 7: // laser
weapon = "object/weapon/ranged/rifle/rifle_laser.iff";
break;
case 8: // sg82
weapon = "object/weapon/ranged/rifle/rifle_sg82.iff";
break;
case 9: // spraystick
weapon = "object/weapon/ranged/rifle/rifle_spraystick.iff";
break;
case 10: // e11 rifle
weapon = "object/weapon/ranged/rifle/rifle_e11.iff";
break;
case 11: // jawa ion
weapon = "object/weapon/ranged/rifle/rifle_jawa_ion.iff";
break;
case 12: // t21
weapon = "object/weapon/ranged/rifle/rifle_t21.iff";
break;
case 13: // tenloss
weapon = "object/weapon/ranged/rifle/rifle_tenloss_dxr6_disruptor_loot.iff";
break;
case 14: // berserker
weapon = "object/weapon/ranged/rifle/rifle_berserker.iff";
break;
case 15: // light bowcaster
weapon = "object/weapon/ranged/rifle/rifle_bowcaster.iff";
break;
case 16: // recon bowcaster
weapon = "object/weapon/ranged/rifle/rifle_bowcaster_medium.iff";
break;
case 17: // assault bowcaster
weapon = "object/weapon/ranged/rifle/rifle_bowcaster_heavy.iff";
break;
case 18: // rifle beam
weapon = "object/weapon/ranged/rifle/rifle_beam.iff";
break;
case 19: // acid beam
weapon = "object/weapon/ranged/rifle/rifle_acid_beam.iff";
break;
case 20: // high velocity sniper rifle
weapon = "object/weapon/ranged/rifle/rifle_adventurer.iff";
break;
case 21: // LD1 Rifle
weapon = "object/weapon/ranged/rifle/rifle_ld1.iff";
break;
case 22: // massassi rifle
weapon = "object/weapon/ranged/rifle/rifle_massassi_ink.iff";
break;
case 23: // proton rifle
weapon = "object/weapon/ranged/rifle/rifle_proton.iff";
break;
case 24: // lightning
weapon = "object/weapon/ranged/rifle/rifle_lightning_light.iff";
break;
case 25: // light laser
weapon = "object/weapon/ranged/rifle/rifle_laser_light.iff";
break;
case 26: // Heavy Lightning
weapon = "object/weapon/ranged/rifle/rifle_lightning_heavy.iff";
break;
case 27: // dp23
weapon = "object/weapon/ranged/rifle/som_rifle_dp23.iff";
break;
case 28: // disruptor rifle
weapon = "object/weapon/ranged/rifle/som_rifle_mustafar_disruptor.iff";
break;
case 29: // tusken eilte
weapon = "object/weapon/ranged/rifle/rifle_tusken_elite.iff";
break;
default:
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
if(weapon != null && weapon != "")
{
if(static_item.isStaticItem(weapon))
{
static_item.createNewItemFunction(weapon, pInv);
}
else
{
createSnowFlakeFrogWeapon(player, weapon);
}
}
refreshMenu (player, "Select the desired weapon option", "Character Builder Terminal", RIFLE_OPTIONS, "handleRifleSelect", false);
return SCRIPT_CONTINUE;
}
messageHandler handleHeavySelect()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
refreshMenu (player, "Select the desired weapon option", "Character Builder Terminal", WEAPON_OPTIONS, "handleWeaponOptions", false);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > HEAVY_WEAPON_OPTIONS.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure player's inventory is valid
if (!isIdValid(pInv))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure there is room in player's inventory
if (getVolumeFree(pInv) <= 0)
{
sendSystemMessageTestingOnly(player, "Your Inventory is Full, please make room and try again.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
string weapon = "";
switch(idx)
{
case 0: // Rocket Launcher
weapon = "object/weapon/ranged/heavy/heavy_rocket_launcher.iff";
break;
case 1: // flame thrower
weapon = "object/weapon/ranged/rifle/rifle_flame_thrower.iff";
break;
case 2: // Acid Rifle
weapon = "object/weapon/ranged/rifle/rifle_acid_beam.iff";
break;
case 3: // lightning
weapon = "object/weapon/ranged/rifle/rifle_lightning.iff";
break;
case 4: // heavy acid beam
weapon = "object/weapon/ranged/heavy/heavy_acid_beam.iff";
break;
case 5: // heavy lightning beam
weapon = "object/weapon/ranged/heavy/heavy_lightning_beam.iff";
break;
case 6: // heavy particle beam
weapon = "object/weapon/ranged/heavy/heavy_particle_beam.iff";
break;
case 7: // flame thrower
weapon = "object/weapon/ranged/rifle/rifle_flame_thrower_light.iff";
break;
case 8: // republic flame thrower
weapon = "object/weapon/ranged/heavy/som_republic_flamer.iff";
break;
case 9: // lava cannon
weapon = "object/weapon/ranged/heavy/som_lava_cannon.iff";
break;
case 10:
// Crusader M-XX Heavy Rifle
static_item.createNewItemFunction("weapon_mandalorian_heavy_04_01",pInv);
sendSystemMessageTestingOnly(player, "Crusader M-XX Heavy Rifle Issued.");
break;
case 11:
// C-M "Frag Storm" Heavy Shotgun
static_item.createNewItemFunction("weapon_rebel_heavy_04_01",pInv);
sendSystemMessageTestingOnly(player, "C-M 'Frag Storm' Heavy Shotgun Issued.");
break;
case 12:
// Devastator Acid Launcher
static_item.createNewItemFunction("weapon_tow_heavy_acid_beam_04_01",pInv);
sendSystemMessageTestingOnly(player, "Devastator Acid Launcher Issued.");
break;
case 13: // Ice Gun
weapon = "object/weapon/ranged/heavy/heavy_carbonite_rifle.iff";
break;
default:
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
if(weapon != null && weapon != "")
createSnowFlakeFrogWeapon(player, weapon);
refreshMenu (player, "Select the desired weapon option", "Character Builder Terminal", HEAVY_WEAPON_OPTIONS, "handleHeavySelect", false);
return SCRIPT_CONTINUE;
}
messageHandler handleUnarmedSelect()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if (btn == sui.BP_REVERT)
{
refreshMenu (player, "Select the desired weapon option", "Character Builder Terminal", WEAPON_OPTIONS, "handleWeaponOptions", false);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > UNARMED_OPTIONS.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure player's inventory is valid
if (!isIdValid(pInv))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure there is room in player's inventory
if (getVolumeFree(pInv) <= 0)
{
sendSystemMessageTestingOnly(player, "Your Inventory is Full, please make room and try again.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
string weapon = "";
switch(idx)
{
case 0: // Vibroknuckler
weapon = "object/weapon/melee/special/vibroknuckler.iff";
break;
case 1: // Massasi Knuckler
weapon = "object/weapon/melee/special/massassiknuckler.iff";
break;
case 2: // Razor Knuckler
weapon = "object/weapon/melee/special/blacksun_razor.iff";
break;
case 3: // Blasterfist
weapon = "object/weapon/melee/special/blasterfist.iff";
break;
case 4: // Guardian Blasterfist
static_item.createNewItemFunction("weapon_tow_blasterfist_04_01",pInv);
sendSystemMessageTestingOnly(player, "Guardian Blaster Fist");
break;
default:
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
if(weapon != null && weapon != "")
createSnowFlakeFrogWeapon(player, weapon);
refreshMenu (player, "Select the desired weapon option", "Character Builder Terminal", UNARMED_OPTIONS, "handleUnarmedSelect", false);
return SCRIPT_CONTINUE;
}
messageHandler handleOneHandedSelect()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
refreshMenu (player, "Select the desired weapon option", "Character Builder Terminal", WEAPON_OPTIONS, "handleWeaponOptions", false);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > ONEHANDED_OPTIONS.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure player's inventory is valid
if (!isIdValid(pInv))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure there is room in player's inventory
if (getVolumeFree(pInv) <= 0)
{
sendSystemMessageTestingOnly(player, "Your Inventory is Full, please make room and try again.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
string weapon = "";
switch(idx)
{
case 0: // survival knife
weapon = "object/weapon/melee/knife/knife_survival.iff";
break;
case 1: // twilek dagger
weapon = "object/weapon/melee/knife/knife_dagger.iff";
break;
case 2: // sword
weapon = "object/weapon/melee/sword/sword_01.iff";
break;
case 3: // curved sword
weapon = "object/weapon/melee/sword/sword_02.iff";
break;
case 4: // gaderiffi
weapon = "object/weapon/melee/baton/baton_gaderiffi.iff";
break;
case 5: // vibroblade
weapon = "object/weapon/melee/knife/knife_vibroblade.iff";
break;
case 6: // ryyk blade
weapon = "object/weapon/melee/sword/sword_blade_ryyk.iff";
break;
case 7: // rantok sword
weapon = "object/weapon/melee/sword/sword_rantok.iff";
break;
case 8: // stun baton
weapon = "object/weapon/melee/baton/baton_stun.iff";
break;
case 9: // acid sword
weapon = "object/weapon/melee/sword/sword_acid.iff";
break;
case 10: // junta mace
weapon = "object/weapon/melee/sword/sword_mace_junti.iff";
break;
case 11: // marauder sword
weapon = "object/weapon/melee/sword/sword_marauder.iff";
break;
case 12: // massassi sword
weapon = "object/weapon/melee/sword/sword_massassi.iff";
break;
case 13: // RSF Sword
weapon = "object/weapon/melee/sword/sword_rsf.iff";
break;
case 14: //"Stone Knife"
weapon = "object/weapon/melee/knife/knife_stone.iff";
break;
case 15: //"Janta Knife"
weapon = "object/weapon/melee/knife/knife_janta.iff";
break;
case 16:// "Donkuwa Knife"
weapon = "object/weapon/melee/knife/knife_donkuwah.iff";
break;
case 17: // Curved Nyax sword
weapon = "object/weapon/melee/sword/sword_curved_nyax.iff";
break;
case 18: // Obsidian sword
weapon = "object/weapon/melee/sword/som_sword_obsidian.iff";
break;
case 19: // Mustafar Bandit sword
weapon = "object/weapon/melee/sword/som_sword_mustafar_bandit.iff";
break;
case 20: // Gaderiffi Elite
weapon = "object/weapon/melee/baton/baton_gaderiffi_elite.iff";
break;
default:
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
if(weapon != null && weapon != "")
createSnowFlakeFrogWeapon(player, weapon);
refreshMenu (player, "Select the desired weapon option", "Character Builder Terminal", ONEHANDED_OPTIONS, "handleOneHandedSelect", false);
return SCRIPT_CONTINUE;
}
messageHandler handleTwoHandedSelect()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
refreshMenu (player, "Select the desired weapon option", "Character Builder Terminal", WEAPON_OPTIONS, "handleWeaponOptions", false);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > TWOHANDED_OPTIONS.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure player's inventory is valid
if (!isIdValid(pInv))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure there is room in player's inventory
if (getVolumeFree(pInv) <= 0)
{
sendSystemMessageTestingOnly(player, "Your Inventory is Full, please make room and try again.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
string weapon = "";
switch(idx)
{
case 0: // axe
weapon = "object/weapon/melee/axe/axe_heavy_duty.iff";
break;
case 1: // battleaxe
weapon = "object/weapon/melee/2h_sword/2h_sword_battleaxe.iff";
break;
case 2: // katana
weapon = "object/weapon/melee/2h_sword/2h_sword_katana.iff";
break;
case 3: // vibroaxe
weapon = "object/weapon/melee/axe/axe_vibroaxe.iff";
break;
case 4: // cleaver
weapon = "object/weapon/melee/2h_sword/2h_sword_cleaver.iff";
break;
case 5: // maul
weapon = "object/weapon/melee/2h_sword/2h_sword_maul.iff";
break;
case 6: // scythe
weapon = "object/weapon/melee/2h_sword/2h_sword_scythe.iff";
break;
case 7: // kashyyk sword
weapon = "object/weapon/melee/2h_sword/2h_sword_kashyyk.iff";
break;
case 8: // sith sword
weapon = "object/weapon/melee/2h_sword/2h_sword_sith.iff";
break;
case 9: // Nyax sword
weapon = "object/weapon/melee/sword/sword_nyax.iff";
break;
case 10: // Black Sun Executioner's Hack
weapon = "object/weapon/melee/2h_sword/2h_sword_blacksun_hack.iff";
break;
case 11: // Tulrus
weapon = "object/weapon/melee/2h_sword/som_2h_sword_tulrus.iff";
break;
case 12: // Obsidian 2h
weapon = "object/weapon/melee/2h_sword/som_2h_sword_obsidian.iff";
break;
case 13: // Massassi Enforcer Blade
weapon = "object/weapon/melee/2h_sword/2h_sword_kun_massassi.iff";
break;
default:
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
if(weapon != null && weapon != "")
createSnowFlakeFrogWeapon(player, weapon);
refreshMenu (player, "Select the desired weapon option", "Character Builder Terminal", TWOHANDED_OPTIONS, "handleTwoHandedSelect", false);
return SCRIPT_CONTINUE;
}
messageHandler handlePolearmSelect()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
refreshMenu (player, "Select the desired weapon option", "Character Builder Terminal", WEAPON_OPTIONS, "handleWeaponOptions", false);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > POLEARM_OPTIONS.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure player's inventory is valid
if (!isIdValid(pInv))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure there is room in player's inventory
if (getVolumeFree(pInv) <= 0)
{
sendSystemMessageTestingOnly(player, "Your Inventory is Full, please make room and try again.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
string weapon = "";
switch(idx)
{
case 0: // 1h wood staff
weapon = "object/weapon/melee/polearm/lance_staff_wood_s1.iff";
break;
case 1: // metal staff
weapon = "object/weapon/melee/polearm/lance_staff_metal.iff";
break;
case 2: // reinforced staff
weapon = "object/weapon/melee/polearm/lance_staff_wood_s2.iff";
break;
case 3: // vibrolance
weapon = "object/weapon/melee/polearm/lance_vibrolance.iff";
break;
case 4: // polearm vibroaxe
weapon = "object/weapon/melee/polearm/polearm_vibro_axe.iff";
break;
case 5: // lance
weapon = "object/weapon/melee/polearm/lance_controllerfp.iff";
break;
case 6: // kaminoan greatstaff
weapon = "object/weapon/melee/polearm/lance_kaminoan.iff";
break;
case 7: // massassi lance
weapon = "object/weapon/melee/polearm/lance_massassi.iff";
break;
case 8: // shocklance
weapon = "object/weapon/melee/polearm/lance_shock.iff";
break;
case 9: // cryo lance
weapon = "object/weapon/melee/polearm/lance_cryo.iff";
break;
case 10: // kashyyk bladestick
weapon = "object/weapon/melee/polearm/lance_kashyyk.iff";
break;
case 11: // electric polearm
weapon = "object/weapon/melee/polearm/polearm_lance_electric_polearm.iff";
break;
case 12: // nightsister energy lance
weapon = "object/weapon/melee/polearm/lance_nightsister.iff";
break;
case 13: // nightsister vibro lance
weapon = "object/weapon/melee/polearm/lance_controllerfp_nightsister.iff";
break;
case 14: // obsidian lance
weapon = "object/weapon/melee/polearm/som_lance_obsidian.iff";
break;
case 15: // xandank lance
weapon = "object/weapon/melee/polearm/som_lance_xandank.iff";
break;
case 16: // Acidic Paragon Axe
weapon = "object/weapon/melee/polearm/polearm_heroic_sd.iff";
break;
default:
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
if(weapon != null && weapon != "")
createSnowFlakeFrogWeapon(player, weapon);
refreshMenu (player, "Select the desired weapon option", "Character Builder Terminal", POLEARM_OPTIONS, "handlePolearmSelect", false);
return SCRIPT_CONTINUE;
}
messageHandler handleBattlefieldSelect()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
refreshMenu (player, "Select the desired weapon option", "Character Builder Terminal", WEAPON_OPTIONS, "handleWeaponOptions", false);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > BATTLEFIELD_WEAPON_OPTIONS.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure player's inventory is valid
if (!isIdValid(pInv))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure there is room in player's inventory
if (getVolumeFree(pInv) <= 0)
{
sendSystemMessageTestingOnly(player, "Your Inventory is Full, please make room and try again.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
string weapon = "";
switch(idx)
{
case 0:
// Battlefield Pistol
static_item.createNewItemFunction("weapon_westar_pistol_04_01",pInv);
sendSystemMessageTestingOnly(player, "Westar-34 Blaster Pistol Issued.");
break;
case 1:
// Battlefield Carbine
static_item.createNewItemFunction("weapon_carbine_ngant_zarvel_04_01",pInv);
sendSystemMessageTestingOnly(player, "NGant-Zarvel 9118 Carbine Issued.");
break;
case 2:
// Battlefield Rifle
static_item.createNewItemFunction("weapon_westar_rifle_04_01",pInv);
sendSystemMessageTestingOnly(player, "Westar-M5 Blaster Rifle Issued.");
break;
case 3:
// Battlefield Heavy Weapon
static_item.createNewItemFunction("weapon_heavy_cr1_04_01",pInv);
sendSystemMessageTestingOnly(player, "CR-1 Blast Cannon Issued.");
break;
case 4:
// Battlefield Unarmed
static_item.createNewItemFunction("weapon_knuckler_buzz_knuck",pInv);
sendSystemMessageTestingOnly(player, "Buzz-Knuck Issued.");
break;
case 5:
// Battlefield 1h sword
static_item.createNewItemFunction("weapon_sword_1h_pvp_04_01",pInv);
sendSystemMessageTestingOnly(player, "Sith Sword Issued.");
break;
case 6:
// Battlefield 2h sword
static_item.createNewItemFunction("weapon_sword_2h_pvp_04_01",pInv);
sendSystemMessageTestingOnly(player, "Vibrosword Issued.");
break;
case 7:
// Battlefield Polearm
static_item.createNewItemFunction("weapon_magna_guard_polearm_04_01",pInv);
sendSystemMessageTestingOnly(player, "Magnaguard Electrostaff Issued.");
break;
case 8:
// Battlefield 1h saber
static_item.createNewItemFunction("item_schematic_pvp_bf_saber_03_01",pInv);
sendSystemMessageTestingOnly(player, "One-Handed Sith-Saber Hilt Schematic Issued.");
break;
case 9:
// Battlefield 2h saber
static_item.createNewItemFunction("item_schematic_pvp_bf_saber_03_02",pInv);
sendSystemMessageTestingOnly(player, "Two-Handed Mysterious Lightsaber Hilt Schematic Issued.");
break;
case 10:
// Battlefield polearm saber
static_item.createNewItemFunction("item_schematic_pvp_bf_saber_03_03",pInv);
sendSystemMessageTestingOnly(player, "Double-Bladed Darth Phobos Lightsaber Hilt Schematic Issued.");
break;
default:
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
refreshMenu (player, "Select the desired weapon option", "Character Builder Terminal", BATTLEFIELD_WEAPON_OPTIONS, "handleBattlefieldSelect", false);
return SCRIPT_CONTINUE;
}
messageHandler handleGrenadeSelect()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
refreshMenu (player, "Select the desired weapon option", "Character Builder Terminal", WEAPON_OPTIONS, "handleWeaponOptions", false);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > GRENADE_OPTIONS.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure player's inventory is valid
if (!isIdValid(pInv))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure there is room in player's inventory
if (getVolumeFree(pInv) <= 0)
{
sendSystemMessageTestingOnly(player, "Your Inventory is Full, please make room and try again.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
obj_id item = null;
switch(idx)
{
case 0: // light frag grenade
item = createObject("object/weapon/ranged/grenade/grenade_fragmentation_light.iff", pInv, "");
setCount(item, 500);
sendSystemMessageTestingOnly(player, "Light Fragmentation Grenade with many charges Issued.");
break;
case 1: // frag grenade
item = createObject("object/weapon/ranged/grenade/grenade_fragmentation.iff", pInv, "");
setCount(item, 500);
sendSystemMessageTestingOnly(player, "Fragmentation Grenade with many charges Issued.");
break;
case 2: // imperial det
item = createObject("object/weapon/ranged/grenade/grenade_imperial_detonator.iff", pInv, "");
setCount(item, 500);
sendSystemMessageTestingOnly(player, "Imperial Detonator with many charges Issued.");
break;
case 3: // proton grenade
item = createObject("object/weapon/ranged/grenade/grenade_proton.iff", pInv, "");
setCount(item, 500);
sendSystemMessageTestingOnly(player, "Proton Grenade with many charges Issued.");
break;
case 4: // Thermal det
item = createObject("object/weapon/ranged/grenade/grenade_thermal_detonator.iff", pInv, "");
setCount(item, 500);
sendSystemMessageTestingOnly(player, "Thermal Detonator with many charges Issued.");
break;
case 5: // glop
item = createObject("object/weapon/ranged/grenade/grenade_glop.iff", pInv, "");
setCount(item, 500);
sendSystemMessageTestingOnly(player, "Glop Grenade with many charges Issued.");
break;
case 6: // cryoban
item = createObject("object/weapon/ranged/grenade/grenade_cryoban.iff", pInv, "");
setCount(item, 500);
sendSystemMessageTestingOnly(player, "Cryoban Grenade with many charges Issued.");
break;
// case 7: // bug bomb
// item = createObject("object/weapon/ranged/grenade/grenade_bug_bomb.iff", pInv, "");
// setCount(item, 500);
// sendSystemMessageTestingOnly(player, "Bug Bomb with many charges Issued.");
// break;
default:
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
refreshMenu (player, "Select the desired weapon option", "Character Builder Terminal", GRENADE_OPTIONS, "handleGrenadeSelect", false);
return SCRIPT_CONTINUE;
}
//===================================================================
// Armor Section //===============================================
void handleArmorOption(obj_id player)
{
refreshMenu (player, "Select the desired armor option", "Character Builder Terminal", ARMOR_OPTIONS, "handleArmorSelect", false);
}
messageHandler handleArmorSelect()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
refreshMenu (player, "Select the desired character option", "Character Builder Terminal", CHARACTER_BUILDER_OPTIONS, "handleOptionSelect", true);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > ARMOR_OPTIONS.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
string prompt = "Select the desired armor option";
string title = "Character Builder Terminal";
int pid = 0;
switch(idx)
{
case 0:
refreshMenu (player, prompt, title, ARMOR_PROTECTION_AMOUNT, "handleProtectionAmount", false);
utils.setScriptVar(player, "character_builder.armorType", 2);
break;
case 1:
refreshMenu (player, prompt, title, ARMOR_PROTECTION_AMOUNT, "handleProtectionAmount", false);
utils.setScriptVar(player, "character_builder.armorType", 1);
break;
case 2:
refreshMenu (player, prompt, title, ARMOR_PROTECTION_AMOUNT, "handleProtectionAmount", false);
utils.setScriptVar(player, "character_builder.armorType", 0);
break;
case 3:
refreshMenu (player, prompt, title, ARMOR_PSG_OPTIONS, "handlePsgSelect", false);
break;
case 4:
refreshMenu (player, prompt, title, ARMOR_ENHANCEMENT_OPTIONS, "handleEnhancementSelect", false);
break;
case 5:
refreshMenu (player, prompt, title, ARMOR_PVP_SETS, "handlePvPSelect", false);
break;
case 6:
refreshMenu (player, prompt, title, HEROIC_JEWELRY_LIST, "handleHeroicJewelrySelect", false);
break;
default:
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
return SCRIPT_CONTINUE;
}
messageHandler handleProtectionAmount()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
refreshMenu (player, "Select the desired armor option", "Character Builder Terminal", ARMOR_OPTIONS, "handleArmorSelect", false);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > ARMOR_PROTECTION_AMOUNT.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure player's inventory is valid
if (!isIdValid(pInv))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure there is room in player's inventory
if (getVolumeFree(pInv) <= 9)
{
sendSystemMessageTestingOnly(player, "Your Inventory is Full! Please free up at least 9 inventory slots and try again.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
utils.setScriptVar(player, "character_builder.armorLevel", idx +1);
int type = utils.getIntScriptVar(player, "character_builder.armorType");
string [] options = new string [0];
string handler = "";
int pid = 0;
string prompt = "Select the desired armor level option";
string title = "Character Builder Terminal";
switch(type)
{
case 0: // basic
options = ARMOR_RECON_OPTIONS;
handler = "handleReconSelect";
break;
case 1: //standard
options = ARMOR_BATTLE_OPTIONS;
handler = "handleBattleSelect";
break;
case 2: //advanced
options = ARMOR_ASSAULT_OPTIONS;
handler = "handleAssaultSelect";
break;
default:
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
utils.setScriptVar(player, "character_builder.armorOptions", options);
utils.setScriptVar(player, "character_builder.armorHandler", handler);
refreshMenu (player, prompt, title, options, handler, false);
return SCRIPT_CONTINUE;
}
messageHandler handleAssaultSelect()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
refreshMenu (player, "Select the desired armor option", "Character Builder Terminal", ARMOR_PROTECTION_AMOUNT, "handleProtectionAmount", false);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > ARMOR_ASSAULT_OPTIONS.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure player's inventory is valid
if (!isIdValid(pInv))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure there is room in player's inventory
if (getVolumeFree(pInv) <= 9)
{
sendSystemMessageTestingOnly(player, "Your Inventory is Full! Please free up at least 9 inventory slots and try again.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
switch(idx)
{
case 0: // composite
issueAssaultArmorSet(player,ARMOR_SET_ASSAULT_1);
sendSystemMessageTestingOnly(player, "Composite Armor Set Issued.");
break;
case 1: // marauder
issueAssaultArmorSet(player,ARMOR_SET_ASSAULT_3);
sendSystemMessageTestingOnly(player, "Marauder Assault Armor Set Issued.");
break;
case 2: //Chitin
issueAssaultArmorSet(player,ARMOR_SET_ASSAULT_2);
sendSystemMessageTestingOnly(player, "Chitin Armor Set Issued.");
break;
case 3: //Crafted Bounty Hunter
issueAssaultArmorSet(player,ARMOR_SET_ASSAULT_4);
sendSystemMessageTestingOnly(player, "Crafted Bounty Hunter Armor Set Issued.");
break;
case 4: //Kashyyykian Hunting
issueAssaultArmorSet(player,ARMOR_SET_ASSAULT_WOOKIEE);
sendSystemMessageTestingOnly(player, "Kashyyykian Hunting Armor Set Issued.");
break;
case 5: //Ithorian Sentinel
issueAssaultArmorSet(player,ARMOR_SET_ASSAULT_ITHORIAN);
sendSystemMessageTestingOnly(player, "Ithorian Sentinel Armor Set Issued.");
break;
case 6: //Shocktrooper
issueAssaultArmorSet(player,ARMOR_SET_ASSAULT_IMPERIAL);
sendSystemMessageTestingOnly(player, "Shocktrooper Armor Set Issued.");
break;
case 7: //Rebel Assault
issueAssaultArmorSet(player,ARMOR_SET_ASSAULT_REBEL);
sendSystemMessageTestingOnly(player, "Rebel Assault Armor Set Issued.");
break;
default:
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
string[] options = utils.getStringArrayScriptVar(player, "character_builder.armorOptions");
string handler = utils.getStringScriptVar(player, "character_builder.armorHandler");
refreshMenu (player, "Select the desired armor level option", "Character Builder Terminal", options, handler, false);
return SCRIPT_CONTINUE;
}
messageHandler handleBattleSelect()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
refreshMenu (player, "Select the desired armor option", "Character Builder Terminal", ARMOR_PROTECTION_AMOUNT, "handleProtectionAmount", false);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > ARMOR_BATTLE_OPTIONS.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure player's inventory is valid
if (!isIdValid(pInv))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure there is room in player's inventory
if (getVolumeFree(pInv) <= 9)
{
sendSystemMessageTestingOnly(player, "Your Inventory is Full! Please free up at least 9 inventory slots and try again.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
switch(idx)
{
case 0: // padded
issueBattleArmorSet(player,ARMOR_SET_BATTLE_3);
sendSystemMessageTestingOnly(player, "Padded Armor Set Issued.");
break;
case 1: // marauder
issueBattleArmorSet(player,ARMOR_SET_BATTLE_2);
sendSystemMessageTestingOnly(player, "Marauder Battle Armor Set Issued.");
break;
case 2: // RIS
issueBattleArmorSet(player,ARMOR_SET_BATTLE_4);
sendSystemMessageTestingOnly(player, "RIS Armor Set Issued.");
break;
case 3: //Bone
issueBattleArmorSet(player,ARMOR_SET_BATTLE_1);
sendSystemMessageTestingOnly(player, "Bone Armor Set Issued.");
break;
case 4: //Kashyyykian Black Mountain Armor Set
issueBattleArmorSet(player,ARMOR_SET_BATTLE_WOOKIEE);
sendSystemMessageTestingOnly(player, "Kashyyykian Black Mountain Armor Set Issued.");
break;
case 5: //Ithorian Defender
issueBattleArmorSet(player,ARMOR_SET_BATTLE_ITHORIAN);
sendSystemMessageTestingOnly(player, "Ithorian Defender Armor Set Issued.");
break;
case 6: //Stormtrooper
issueBattleArmorSet(player,ARMOR_SET_BATTLE_IMPERIAL);
sendSystemMessageTestingOnly(player, "Stormtrooper Armor Set Issued.");
break;
case 7: //Rebel Battle
issueBattleArmorSet(player,ARMOR_SET_BATTLE_REBEL);
sendSystemMessageTestingOnly(player, "Rebel Battle Armor Set Issued.");
break;
case 8: //Imperial Snowtrooper
issueBattleArmorSet(player,ARMOR_SET_BATTLE_SNOWTROOPER);
sendSystemMessageTestingOnly(player, "Imperial Snowtrooper Set Issued.");
break;
default:
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
string[] options = utils.getStringArrayScriptVar(player, "character_builder.armorOptions");
string handler = utils.getStringScriptVar(player, "character_builder.armorHandler");
refreshMenu (player, "Select the desired armor level option", "Character Builder Terminal", options, handler, false);
return SCRIPT_CONTINUE;
}
messageHandler handleReconSelect()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
refreshMenu (player, "Select the desired armor option", "Character Builder Terminal", ARMOR_PROTECTION_AMOUNT, "handleProtectionAmount", false);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > ARMOR_RECON_OPTIONS.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure player's inventory is valid
if (!isIdValid(pInv))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure there is room in player's inventory
if (getVolumeFree(pInv) <= 9)
{
sendSystemMessageTestingOnly(player, "Your Inventory is Full! Please free up at least 9 inventory slots and try again.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
switch(idx)
{
case 0: // tantel
issueReconArmorSet(player,ARMOR_SET_RECON_3);
sendSystemMessageTestingOnly(player, "Tantel Armor Set Issued.");
break;
case 1: //Ubese
issueReconArmorSet(player,ARMOR_SET_RECON_4);
sendSystemMessageTestingOnly(player, "Ubese Armor Set Issued.");
break;
case 2: //mabari
issueReconArmorSet(player,ARMOR_SET_RECON_1);
sendSystemMessageTestingOnly(player, "Mabari Armor Set Issued.");
break;
case 3: //marauder
issueReconArmorSet(player,ARMOR_SET_RECON_2);
sendSystemMessageTestingOnly(player, "Recon Marauder Armor Set Issued.");
break;
case 4: //Kashyyykian Ceremonial Armor Set
issueReconArmorSet(player,ARMOR_SET_RECON_WOOKIEE);
sendSystemMessageTestingOnly(player, "Kashyyykian Ceremonial Armor Set Issued.");
break;
case 5: //Ithorian Guardian
issueReconArmorSet(player,ARMOR_SET_RECON_ITHORIAN);
sendSystemMessageTestingOnly(player, "Ithorian Guardian Armor Set Issued.");
break;
case 6: //Scout Trooper
issueReconArmorSet(player,ARMOR_SET_RECON_IMPERIAL);
sendSystemMessageTestingOnly(player, "Scout Trooper Armor Set Issued.");
break;
case 7: //Marine Rebel
issueReconArmorSet(player,ARMOR_SET_RECON_REBEL);
sendSystemMessageTestingOnly(player, "Rebel Marine Armor Set Issued.");
break;
case 8: //Alliance Cold Weather
issueReconArmorSet(player,ARMOR_SET_REBEL_SNOW);
sendSystemMessageTestingOnly(player, "Rebel Snow Armor Set Issued.");
break;
default:
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
string[] options = utils.getStringArrayScriptVar(player, "character_builder.armorOptions");
string handler = utils.getStringScriptVar(player, "character_builder.armorHandler");
refreshMenu (player, "Select the desired armor level option", "Character Builder Terminal", options, handler, false);
return SCRIPT_CONTINUE;
}
messageHandler handlePsgSelect()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
refreshMenu (player, "Select the desired armor option", "Character Builder Terminal", ARMOR_OPTIONS, "handleArmorSelect", false);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > ARMOR_PSG_OPTIONS.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure player's inventory is valid
if (!isIdValid(pInv))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure there is room in player's inventory
if (getVolumeFree(pInv) <= 2)
{
sendSystemMessageTestingOnly(player, "Your Inventory is Full! Please free up at least 9 inventory slots and try again.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
obj_id item = null;
switch(idx)
{
case 0: // mark I
item = createObject("object/tangible/component/armor/shield_generator_personal.iff", pInv, "");
armor.initializePsg(item, 2.5f, 500, 10000);
sendSystemMessageTestingOnly(player, "PSG Mark I Issued.");
break;
case 1: // mark II
item = createObject("object/tangible/component/armor/shield_generator_personal_b.iff", pInv, "");
armor.initializePsg(item, 2.5f, 1000, 10000);
sendSystemMessageTestingOnly(player, "PSG Mark II Issued.");
break;
case 2: // mark III
item = createObject("object/tangible/component/armor/shield_generator_personal_c.iff", pInv, "");
armor.initializePsg(item, 2.5f, 2000, 10000);
setSocketsUp(item);
sendSystemMessageTestingOnly(player, "PSG Mark III Issued.");
break;
default:
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
refreshMenu (player, "Select the desired armor option", "Character Builder Terminal", ARMOR_PSG_OPTIONS, "handlePsgSelect", false);
return SCRIPT_CONTINUE;
}
messageHandler handlePvPSelect()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
refreshMenu (player, "Select the desired armor option", "Character Builder Terminal", ARMOR_PROTECTION_AMOUNT, "handleProtectionAmount", false);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > ARMOR_ASSAULT_OPTIONS.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure player's inventory is valid
if (!isIdValid(pInv))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure there is room in player's inventory
if (getVolumeFree(pInv) <= 9)
{
sendSystemMessageTestingOnly(player, "Your Inventory is Full! Please free up at least 9 inventory slots and try again.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
switch(idx)
{
case 0:
issuePvPSet(player, ARMOR_SET_PVP_IMPERIAL_BLACK);
sendSystemMessageTestingOnly(player, "Imperial Black PvP Set Issued.");
break;
case 1:
issuePvPSet(player,ARMOR_SET_PVP_IMPERIAL_WHITE);
sendSystemMessageTestingOnly(player, "Imperial White PvP Set Issued.");
break;
case 2:
issuePvPSet(player,ARMOR_SET_PVP_REBEL_GREY);
sendSystemMessageTestingOnly(player, "Rebel Grey PvP Set Issued.");
break;
case 3:
issuePvPSet(player,ARMOR_SET_PVP_REBEL_GREEN);
sendSystemMessageTestingOnly(player, "Rebel Green PvP Set Issued.");
break;
case 4: //Galactic Marine
issueAssaultArmorSet(player,ARMOR_SET_ASSUALT_GALACTIC_MARINE);
sendSystemMessageTestingOnly(player, "Galactic Marine Armor Set Issued.");
break;
case 5: //Rebel SpecForce
issueAssaultArmorSet(player,ARMOR_SET_ASSUALT_REBEL_SPECFORCE);
sendSystemMessageTestingOnly(player, "Rebel SpecForce Armor Set Issued.");
break;
default:
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
string[] options = utils.getStringArrayScriptVar(player, "character_builder.armorOptions");
string handler = utils.getStringScriptVar(player, "character_builder.armorHandler");
refreshMenu (player, "Select the desired armor level option", "Character Builder Terminal", options, handler, false);
return SCRIPT_CONTINUE;
}
void issuePvPSet( obj_id player, string[] armorPieces)
{
obj_id pInv = utils.getInventoryContainer(player);
for(int i = 0; i < armorPieces.length; i++)
{
static_item.createNewItemFunction(armorPieces[i], pInv);
}
}
void issueAssaultArmorSet(obj_id player, string[] armorPieces)
{
obj_id pInv = utils.getInventoryContainer(player);
for ( int j = 0; j < armorPieces.length; ++j )
{
if(static_item.isStaticItem(armorPieces[j]))
{
obj_id armorItem = static_item.createNewItemFunction(armorPieces[j], pInv);
if(hasScript(armorItem, "npc.faction_recruiter.biolink_item"))
setBioLink(armorItem, player);
}
else
{
string armorTemplate = ARMOR_SET_PREFIX + armorPieces[j];
obj_id armorItem = createObject(armorTemplate, pInv, "");
if ( isIdValid(armorItem) )
{
if (!isGameObjectTypeOf(armorItem, GOT_armor_foot) && !isGameObjectTypeOf(armorItem, GOT_armor_hand))
{
armor.setArmorDataPercent(armorItem, 2, 2, utils.getIntScriptVar(player,"character_builder.armorLevel")*.33f, CONDITION);
armor.setArmorSpecialProtectionPercent(armorItem, armor.DATATABLE_ASSAULT_LAYER, 1.0f);
}
setSocketsUp(armorItem);
}
}
}
}
void issueBattleArmorSet(obj_id player, string[] armorPieces)
{
obj_id pInv = utils.getInventoryContainer(player);
for ( int j = 0; j < armorPieces.length; ++j )
{
if(static_item.isStaticItem(armorPieces[j]))
{
obj_id armorItem = static_item.createNewItemFunction(armorPieces[j], pInv);
if(hasScript(armorItem, "npc.faction_recruiter.biolink_item"))
setBioLink(armorItem, player);
}
else
{
string armorTemplate = ARMOR_SET_PREFIX + armorPieces[j];
obj_id armorItem = createObject(armorTemplate, pInv, "");
if ( isIdValid(armorItem) )
{
if (!isGameObjectTypeOf(armorItem, GOT_armor_foot) && !isGameObjectTypeOf(armorItem, GOT_armor_hand))
{
armor.setArmorDataPercent(armorItem, 2, 1, utils.getIntScriptVar(player,"character_builder.armorLevel")*.33f, CONDITION);
}
setSocketsUp(armorItem);
}
}
}
}
void issueReconArmorSet(obj_id player, string[] armorPieces)
{
obj_id pInv = utils.getInventoryContainer(player);
for ( int j = 0; j < armorPieces.length; ++j )
{
if(static_item.isStaticItem(armorPieces[j]))
{
obj_id armorItem = static_item.createNewItemFunction(armorPieces[j], pInv);
if(hasScript(armorItem, "npc.faction_recruiter.biolink_item"))
setBioLink(armorItem, player);
}
else
{
string armorTemplate = ARMOR_SET_PREFIX + armorPieces[j];
obj_id armorItem = createObject(armorTemplate, pInv, "");
if ( isIdValid(armorItem) )
{
if (!isGameObjectTypeOf(armorItem, GOT_armor_foot) && !isGameObjectTypeOf(armorItem, GOT_armor_hand))
{
armor.setArmorDataPercent(armorItem, 2, 0, utils.getIntScriptVar(player,"character_builder.armorLevel")*.33f, CONDITION);
armor.setArmorSpecialProtectionPercent(armorItem, armor.DATATABLE_RECON_LAYER, 1.0f);
}
setSocketsUp(armorItem);
}
}
}
}
void handleEnhancementSelect(obj_id player)
{
refreshMenu ( player, "Select the desired deed option", "Character Builder Terminal", ARMOR_ENHANCEMENT_OPTIONS, "handleEnhancementSelect", false);
}
messageHandler handleEnhancementSelect()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
startCharacterBuilder(player);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > ARMOR_ENHANCEMENT_OPTIONS.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure player's inventory is valid
if (!isIdValid(pInv))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure there is room in player's inventory
if (getVolumeFree(pInv) <= 0)
{
sendSystemMessageTestingOnly(player, "Your Inventory is Full, please make room and try again.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
switch(idx)
{
case 0: //combat ring
if(isGod(player))
{
static_item.createNewItemFunction("item_development_combat_test_ring_06_01",pInv);
sendSystemMessageTestingOnly(player, "Combat Enhancement Ring Issued");
}
else
{
sendSystemMessageTestingOnly(player, "You Must be in God Mode to enjoy the Combat Ring!");
}
break;
default:
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
handleEnhancementSelect(player);
return SCRIPT_CONTINUE;
}
messageHandler handleHeroicJewelrySelect()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
startCharacterBuilder(player);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > HEROIC_JEWELRY_LIST.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure player's inventory is valid
if (!isIdValid(pInv))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure there is room in player's inventory
if (getVolumeFree(pInv) <= 5)
{
sendSystemMessageTestingOnly(player, "Your Inventory is Full, please make room and try again.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
string column = "";
switch(idx)
{
case 0:
column = "set_bh_dps";
break;
case 1:
column = "set_bh_utility_a";
break;
case 2:
column = "set_bh_utility_b";
break;
case 3:
column = "set_medic_dps";
break;
case 4:
column = "set_medic_utility_a";
break;
case 5:
column = "set_medic_utility_b";
break;
case 6:
column = "set_jedi_dps";
break;
case 7:
column = "set_jedi_utility_a";
break;
case 8:
column = "set_jedi_utility_b";
break;
case 9:
column = "set_commando_dps";
break;
case 10:
column = "set_commando_utility_a";
break;
case 11:
column = "set_commando_utility_b";
break;
case 12:
column = "set_smuggler_dps";
break;
case 13:
column = "set_smuggler_utility_a";
break;
case 14:
column = "set_smuggler_utility_b";
break;
case 15:
column = "set_spy_dps";
break;
case 16:
column = "set_spy_utility_a";
break;
case 17:
column = "set_spy_utility_b";
break;
case 18:
column = "set_officer_dps";
break;
case 19:
column = "set_officer_utility_a";
break;
case 20:
column = "set_officer_utility_b";
break;
case 21:
column = "set_hero";
break;
default:
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
if(column != null && column != "")
{
string[] itemSet = dataTableGetStringColumn(HEROIC_JEWELRY_SETS, column);
if ((itemSet != null) && (itemSet.length != 0))
{
for (int i = 0; i < itemSet.length; i++)
{
static_item.createNewItemFunction(itemSet[i], pInv);
}
}
}
refreshMenu( player, "Select the desired armor option", "Character Builder Terminal", HEROIC_JEWELRY_LIST, "handleHeroicJewelrySelect", false);
return SCRIPT_CONTINUE;
}
//===================================================================
// Misc Item Section //===============================================
void handleMiscOption(obj_id player)
{
refreshMenu ( player, "Select the desired item option", "Character Builder Terminal", MISCITEM_OPTIONS, "handleMiscOptions", false);
}
messageHandler handleMiscOptions()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
startCharacterBuilder(player);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > MISCITEM_OPTIONS.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
string prompt = "Select the desired option";
string promptTwo = "Select FIRST Skill Modifier, You will need to pick Three total times!";
string title = "Character Builder Terminal";
int pid = 0;
switch(idx)
{
case 0:
refreshMenu ( player, prompt, title, MISC_OPTIONS, "handleMiscSelect", false);
break;
case 1:
refreshMenu ( player, prompt, title, MEDICINE_OPTIONS, "handleMedicineSelect", false);
break;
// case 2:
// refreshMenu ( player, prompt, title, SMUGGLER_TOOLS_OPTIONS, "handleSmugglerSelect", false);
// break;
case 2:
refreshMenu ( player, prompt, title, getExoticMods(), "handlePowerUpSelect", false);
break;
case 3:
refreshMenu ( player, promptTwo, title, getExoticMods(), "handleAttachmentOneSelect", false);
break;
case 4:
refreshMenu ( player, prompt, title, CLOTHING_OPTIONS, "handleClothingSelect", false);
break;
case 5:
refreshMenu ( player, promptTwo, title, BASIC_MOD_LIST, "handleBasicArmorAttachmentOne", false);
utils.setScriptVar(player, "character_builder.attachment", "object/tangible/gem/armor.iff");
break;
case 6:
refreshMenu ( player, promptTwo, title, BASIC_MOD_LIST, "handleBasicArmorAttachmentOne", false);
utils.setScriptVar(player, "character_builder.attachment", "object/tangible/gem/clothing.iff");
break;
case 7:
refreshMenu ( player, prompt, title, CRAFTING_SUIT, "handleCraftingSuitSelect", false);
break;
case 8:
refreshMenu ( player, prompt, title, AURILIA_CRYSTALS, "handleBuffCrystalSelect", false);
break;
default:
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
return SCRIPT_CONTINUE;
}
messageHandler handleMiscSelect()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
handleMiscOption(player);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > MISC_OPTIONS.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure player's inventory is valid
if (!isIdValid(pInv))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure there is room in player's inventory
if (getVolumeFree(pInv) <= 0)
{
sendSystemMessageTestingOnly(player, "Your Inventory is Full, please make room and try again.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
switch(idx)
{
case 0: // spec-ops pack
createObject("object/tangible/wearables/backpack/backpack_s06.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Spec-Ops Pack Issued.");
break;
case 1: // krayt pack
createObject("object/tangible/wearables/backpack/backpack_krayt_skull.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Krayt Pack Issued.");
break;
case 2: // pilot ace pack
createObject("object/tangible/wearables/backpack/backpack_s09.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Pilot Ace Pack Issued.");
break;
case 3: // jedi pack
static_item.createNewItemFunction("item_fannypack_04_01", pInv);
sendSystemMessageTestingOnly(player, "Jedi Belt of Master Bodo Baas Issued.");
break;
case 4:
static_item.createNewItemFunction("armor_snowtrooper_backpack", pInv);
sendSystemMessageTestingOnly(player, "Snowtrooper Backpack Issued.");
break;
case 5:
static_item.createNewItemFunction("armor_rebel_snow_backpack", pInv);
sendSystemMessageTestingOnly(player, "Alliance Cold Weather Backpack Issued.");
break;
case 6: // arakyd probe droid
createObject("object/tangible/mission/mission_bounty_droid_probot.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Arakyd Probe Droid Issued.");
break;
case 7: // seeker droid
createObject("object/tangible/mission/mission_bounty_droid_seeker.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Seeker Droid Issued.");
break;
case 8: // draft schematic ee3
static_item.createNewItemFunction("item_limited_use_schematic_bounty_ee3_04_01", pInv);
sendSystemMessageTestingOnly(player, "Master Crafted EE3 Draft Schematic Issued.");
break;
case 9: // draft schematic dc15
static_item.createNewItemFunction("item_limited_use_schematic_bounty_dc15_04_01", pInv);
sendSystemMessageTestingOnly(player, "Master Crafted DC-15 Draft Schematic Issued.");
break;
case 10: // resource kit
createObject("object/tangible/veteran_reward/resource.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Resource Kit Issued");
default:
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
refreshMenu ( player, "Select the desired option", "Character Builder Terminal", MISC_OPTIONS, "handleMiscSelect", false);
return SCRIPT_CONTINUE;
}
messageHandler handleCraftingSuitSelect()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
handleMiscOption(player);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > CRAFTING_SUIT.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure player's inventory is valid
if (!isIdValid(pInv))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure there is room in player's inventory
if (getVolumeFree(pInv) <= 0)
{
sendSystemMessageTestingOnly(player, "Your Inventory is Full, please make room and try again.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
switch(idx)
{
case 0: // crafting suit
obj_id suit = static_item.createNewItemFunction("item_god_craftingsuit_06_01", pInv);
if(isIdValid(suit))
sendSystemMessageTestingOnly(player, "Blix's Ultra Crafting Suit Issued, May you see nothing but Amazing Crafts!");
break;
default:
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
refreshMenu ( player, "Select the desired option", "Character Builder Terminal", CRAFTING_SUIT, "handleCraftingSuitSelect", false);
return SCRIPT_CONTINUE;
}
messageHandler handleSmugglerSelect()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
handleMiscOption(player);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > SMUGGLER_TOOLS_OPTIONS.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure player's inventory is valid
if (!isIdValid(pInv))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure there is room in player's inventory
if (getVolumeFree(pInv) <= 0)
{
sendSystemMessageTestingOnly(player, "Your Inventory is Full, please make room and try again.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
switch(idx)
{
case 0: // Simple Toolkit
createObject("object/tangible/smuggler/simple_toolkit.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Simple Toolkit Issued.");
break;
case 1: // Finely Crafted Toolset
createObject("object/tangible/smuggler/finely_crafted_toolset.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Finely Crafted Toolset Issued.");
break;
case 2: // Trandoshan Interframe
createObject("object/tangible/smuggler/trandoshan_interframe.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Trandoshan Interframe Issued.");
break;
case 3: // Delicate Trigger
createObject("object/tangible/smuggler/delicate_trigger_assembly.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Delicate Trigger Issued.");
break;
case 4: // Illegal Core booster
createObject("object/tangible/smuggler/illegal_core_booster.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Illegal Core Booster Issued.");
break;
case 5: // Mandalorian Interframe
createObject("object/tangible/smuggler/mandalorian_interframe.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Mandalorian Interframe Issued.");
break;
case 6: // Micro Plating
createObject("object/tangible/smuggler/reactive_micro_plating.iff", pInv, "");
sendSystemMessageTestingOnly(player, "Micro Plating Issued.");
break;
default:
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
refreshMenu ( player, "Select the desired option", "Character Builder Terminal", SMUGGLER_TOOLS_OPTIONS, "handleSmugglerSelect", false);
return SCRIPT_CONTINUE;
}
string[] getExoticMods()
{
string[] skillMods = dataTableGetStringColumn(EXOTIC_SKILL_MODS, "name");
for (int i = 0; i < skillMods.length; i++)
{
skillMods[i] = utils.packStringId(new string_id("stat_n", skillMods[i]));
}
return skillMods;
}
messageHandler handlePowerUpSelect()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
string[] skillMods = dataTableGetStringColumn(EXOTIC_SKILL_MODS, "name");
if ( btn == sui.BP_REVERT )
{
handleMiscOption(player);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > skillMods.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure player's inventory is valid
if (!isIdValid(pInv))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure there is room in player's inventory
if (getVolumeFree(pInv) <= 0)
{
sendSystemMessageTestingOnly(player, "Your Inventory is Full, please make room and try again.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
string skillMod = dataTableGetString(EXOTIC_SKILL_MODS, idx, "name");
int powerRatio = dataTableGetInt(EXOTIC_SKILL_MODS, idx, "ratio");
int power = 75;
obj_id armorPower = static_item.createNewItemFunction("item_reverse_engineering_powerup_armor_02_01", pInv);
obj_id shirtPower = static_item.createNewItemFunction("item_reverse_engineering_powerup_clothing_02_01", pInv);
obj_id weaponPower = static_item.createNewItemFunction("item_reverse_engineering_powerup_weapon_02_01", pInv);
if(isIdValid(armorPower))
{
setObjVar(armorPower, "reverse_engineering.reverse_engineering_modifier", skillMod);
setObjVar(armorPower, "reverse_engineering.reverse_engineering_ratio", powerRatio);
setObjVar(armorPower, "reverse_engineering.reverse_engineering_power", power);
setCount(armorPower, 350);
sendSystemMessageTestingOnly(player, "Armor Power Up Issued");
}
if(isIdValid(shirtPower))
{
setObjVar(shirtPower, "reverse_engineering.reverse_engineering_modifier", skillMod);
setObjVar(shirtPower, "reverse_engineering.reverse_engineering_ratio", powerRatio);
setObjVar(shirtPower, "reverse_engineering.reverse_engineering_power", power);
setCount(shirtPower, 350);
sendSystemMessageTestingOnly(player, "Shirt Power Up Issued");
}
if(isIdValid(weaponPower))
{
setObjVar(weaponPower, "reverse_engineering.reverse_engineering_modifier", skillMod);
setObjVar(weaponPower, "reverse_engineering.reverse_engineering_ratio", powerRatio);
setObjVar(weaponPower, "reverse_engineering.reverse_engineering_power", power);
setCount(weaponPower, 350);
sendSystemMessageTestingOnly(player, "Weapon Power Up Issued");
}
refreshMenu ( player, "Select the desired option", "Character Builder Terminal", getExoticMods(), "handlePowerUpSelect", false);
return SCRIPT_CONTINUE;
}
messageHandler handleAttachmentOneSelect()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
string[] skillMods = dataTableGetStringColumn(EXOTIC_SKILL_MODS, "name");
string prompt = "Select Second Skill Modifier, You will need to pick one more time!";
string title = "Character Builder Terminal";
if ( btn == sui.BP_REVERT )
{
handleMiscOption(player);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > skillMods.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
utils.setScriptVar(player, "character_builder.modTypeOne", idx);
refreshMenu ( player, prompt, title, getExoticMods(), "handleAttachmentTwoSelect", false);
return SCRIPT_CONTINUE;
}
messageHandler handleAttachmentTwoSelect()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
string[] skillMods = dataTableGetStringColumn(EXOTIC_SKILL_MODS, "name");
string prompt = "Select Final Skill Modifier";
string title = "Character Builder Terminal";
if ( btn == sui.BP_REVERT )
{
handleMiscOption(player);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > skillMods.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
utils.setScriptVar(player, "character_builder.modTypeTwo", idx);
refreshMenu ( player, prompt, title, getExoticMods(), "handleAttachmentsSelect", false);
return SCRIPT_CONTINUE;
}
messageHandler handleAttachmentsSelect()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
string[] skillMods = dataTableGetStringColumn(EXOTIC_SKILL_MODS, "name");
if ( btn == sui.BP_REVERT )
{
handleMiscOption(player);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > skillMods.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
utils.setScriptVar(player, "character_builder.modTypeThree", idx);
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure player's inventory is valid
if (!isIdValid(pInv))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure there is room in player's inventory
if (getVolumeFree(pInv) <= 0)
{
sendSystemMessageTestingOnly(player, "Your Inventory is Full, please make room and try again.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
int skillModOne = utils.getIntScriptVar(player, "character_builder.modTypeOne");
int skillModTwo = utils.getIntScriptVar(player, "character_builder.modTypeTwo");
int skillModThree = utils.getIntScriptVar(player, "character_builder.modTypeThree");
string stringSkillModOne = dataTableGetString(EXOTIC_SKILL_MODS, skillModOne, "name");
string stringSkillModTwo = dataTableGetString(EXOTIC_SKILL_MODS, skillModTwo, "name");
string stringSkillModThree = dataTableGetString(EXOTIC_SKILL_MODS, skillModThree, "name");
int powerRatioOne = dataTableGetInt(EXOTIC_SKILL_MODS, skillModOne, "ratio");
int powerRatioTwo = dataTableGetInt(EXOTIC_SKILL_MODS, skillModTwo, "ratio");
int powerRatioThree = dataTableGetInt(EXOTIC_SKILL_MODS, skillModThree, "ratio");
int power = 35;
int powerOne = power/powerRatioOne;
int powerTwo = power/powerRatioTwo;
int powerThree = power/powerRatioThree;
obj_id armorPower = createObject("object/tangible/gem/bp_armor_only.iff", pInv, "");
obj_id shirtPower = createObject("object/tangible/gem/shirt_only.iff", pInv, "");
obj_id weaponPower = createObject("object/tangible/gem/weapon.iff", pInv, "");
if(isIdValid(armorPower))
{
setObjVar(armorPower, "skillmod.bonus." + stringSkillModOne, powerOne);
setObjVar(armorPower, "skillmod.bonus." + stringSkillModTwo, powerTwo);
setObjVar(armorPower, "skillmod.bonus." + stringSkillModThree, powerThree);
setObjVar(armorPower, "reverse_engineering.attachment_level", 2);
sendSystemMessageTestingOnly(player, "Exotic Armor Attachment Issued");
}
if(isIdValid(shirtPower))
{
setObjVar(shirtPower, "skillmod.bonus." + stringSkillModOne, powerOne);
setObjVar(shirtPower, "skillmod.bonus." + stringSkillModTwo, powerTwo);
setObjVar(shirtPower, "skillmod.bonus." + stringSkillModThree, powerThree);
setObjVar(shirtPower, "reverse_engineering.attachment_level", 2);
sendSystemMessageTestingOnly(player, "Exotic Shirt Attachment Issued");
}
if(isIdValid(weaponPower))
{
setObjVar(weaponPower, "skillmod.bonus." + stringSkillModOne, powerOne);
setObjVar(weaponPower, "skillmod.bonus." + stringSkillModTwo, powerTwo);
setObjVar(weaponPower, "skillmod.bonus." + stringSkillModThree, powerThree);
setObjVar(weaponPower, "reverse_engineering.attachment_level", 2);
sendSystemMessageTestingOnly(player, "Exotic Weapon Attachment Issued");
}
refreshMenu ( player, "Select the desired option", "Character Builder Terminal", MISCITEM_OPTIONS, "handleMiscOptions", false);
return SCRIPT_CONTINUE;
}
messageHandler handleClothingSelect()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
handleMiscOption(player);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > CLOTHING_OPTIONS.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure player's inventory is valid
if (!isIdValid(pInv))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure there is room in player's inventory
if (getVolumeFree(pInv) <= 0)
{
sendSystemMessageTestingOnly(player, "Your Inventory is Full, please make room and try again.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
string clothing = "";
switch(idx)
{
case 0: //socketed shirt
clothing = "object/tangible/wearables/shirt/npe_shirt.iff";
break;
case 1: //socketed gloves
clothing = "object/tangible/wearables/gloves/gloves_s14.iff";
break;
case 2: //socketed hat
clothing = "object/tangible/wearables/hat/hat_s02.iff";
break;
case 3: //socketed pants
clothing = "object/tangible/wearables/pants/pants_s07.iff";
break;
case 4: //socketed jacket
clothing = "object/tangible/wearables/jacket/jacket_s13.iff";
break;
case 5: //socketed boots
clothing = "object/tangible/wearables/boots/boots_s05.iff";
break;
default:
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
if(clothing != null && clothing != "")
{
obj_id clothingObject = createObject(clothing, pInv, "");
if(isIdValid(clothingObject))
{
setSocketsUp(clothingObject);
sendSystemMessageTestingOnly(player, "Clothing Issued");
}
}
refreshMenu ( player, "Select the desired option", "Character Builder Terminal", CLOTHING_OPTIONS, "handleClothingSelect", false);
return SCRIPT_CONTINUE;
}
messageHandler handleBasicArmorAttachmentOne()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
string prompt = "Select Second Skill Modifier, You will need to pick one more time!";
string title = "Character Builder Terminal";
if ( btn == sui.BP_REVERT )
{
handleMiscOption(player);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > BASIC_MOD_LIST.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
utils.setScriptVar(player, "character_builder.basicModTypeOne", idx);
refreshMenu ( player, prompt, title, BASIC_MOD_LIST, "handleBasicArmorAttachmentTwo", false);
return SCRIPT_CONTINUE;
}
messageHandler handleBasicArmorAttachmentTwo()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
string prompt = "Select Final Skill Modifier";
string title = "Character Builder Terminal";
if ( btn == sui.BP_REVERT )
{
handleMiscOption(player);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > BASIC_MOD_LIST.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
utils.setScriptVar(player, "character_builder.basicModTypeTwo", idx);
refreshMenu ( player, prompt, title, BASIC_MOD_LIST, "handleBasicArmorAttachment", false);
return SCRIPT_CONTINUE;
}
messageHandler handleBasicArmorAttachment()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
handleMiscOption(player);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > BASIC_MOD_LIST.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
utils.setScriptVar(player, "character_builder.basicModTypeThree", idx);
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure player's inventory is valid
if (!isIdValid(pInv))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure there is room in player's inventory
if (getVolumeFree(pInv) <= 0)
{
sendSystemMessageTestingOnly(player, "Your Inventory is Full, please make room and try again.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
int skillModOne = utils.getIntScriptVar(player, "character_builder.basicModTypeOne");
int skillModTwo = utils.getIntScriptVar(player, "character_builder.basicModTypeTwo");
int skillModThree = utils.getIntScriptVar(player, "character_builder.basicModTypeThree");
string stringSkillModOne = BASIC_MOD_STRINGS[skillModOne];
string stringSkillModTwo = BASIC_MOD_STRINGS[skillModTwo];
string stringSkillModThree = BASIC_MOD_STRINGS[skillModThree];
int powerRatio = 1;
int power = 35;
power = power/powerRatio;
string attachment = utils.getStringScriptVar(player, "character_builder.attachment");
obj_id armorPower = createObject(attachment, pInv, "");
if(isIdValid(armorPower))
{
setObjVar(armorPower, "skillmod.bonus." + stringSkillModOne, power);
setObjVar(armorPower, "skillmod.bonus." + stringSkillModTwo, power);
setObjVar(armorPower, "skillmod.bonus." + stringSkillModThree, power);
setObjVar(armorPower, "reverse_engineering.attachment_level", 2);
sendSystemMessageTestingOnly(player, "Basic Armor Attachment Issued");
cleanScriptVars(player);
}
refreshMenu ( player, "Select the desired option", "Character Builder Terminal", MISCITEM_OPTIONS, "handleMiscOptions", false);
return SCRIPT_CONTINUE;
}
messageHandler handleBuffCrystalSelect()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
handleMiscOption(player);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > AURILIA_CRYSTALS.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure player's inventory is valid
if (!isIdValid(pInv))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure there is room in player's inventory
if (getVolumeFree(pInv) <= 0)
{
sendSystemMessageTestingOnly(player, "Your Inventory is Full, please make room and try again.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
string crystal = "";
switch(idx)
{
case 0:
crystal = "item_aurilia_buff_crystal_03_01";
break;
case 1:
crystal = "item_aurilia_buff_crystal_03_02";
break;
case 2:
crystal = "item_aurilia_buff_crystal_03_03";
break;
default:
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
if(crystal != null && crystal != "")
{
if(isGod(player))
static_item.createNewItemFunction(crystal, pInv);
else
sendSystemMessageTestingOnly(player, "You Must be in God Mode to enjoy the Aurilia Crystals!");
}
refreshMenu ( player, "Select the desired option", "Character Builder Terminal", AURILIA_CRYSTALS, "handleBuffCrystalSelect", false);
return SCRIPT_CONTINUE;
}
messageHandler handleMedicineSelect()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
handleMiscOption(player);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > MEDICINE_OPTIONS.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure player's inventory is valid
if (!isIdValid(pInv))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure there is room in player's inventory
if (getVolumeFree(pInv) <= 0)
{
sendSystemMessageTestingOnly(player, "Your Inventory is Full, please make room and try again.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
/*
string[] allTemplates = new string[]{
"bactainfusion",
"bactajab",
"bactashot",
"bactaspray",
"bactatoss",
"deuteriumtoss",
"disinfect",
"endorphineinjection",
"neurotoxin",
"nutrientinjection",
"stabilizer",
"thyroidrupture",
"traumatize"
};
*/
switch(idx)
{
case 0: // stimpack a
obj_id stima = createObject("object/tangible/medicine/instant_stimpack/stimpack_a.iff", pInv, "");
if(isIdValid(stima))
{
setCount(stima, 350);
setObjVar(stima, "healing.power", 250);
sendSystemMessageTestingOnly(player, "High Charge Instant Stimpack-A Issued!");
}
else
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction, Invalid Stim.");
}
break;
case 1: // stimpack b
obj_id stimb = createObject("object/tangible/medicine/instant_stimpack/stimpack_b.iff", pInv, "");
if(isIdValid(stimb))
{
setCount(stimb, 350);
setObjVar(stimb, "healing.power", 400);
sendSystemMessageTestingOnly(player, "High Charge Instant Stimpack-B Issued!");
}
else
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction, Invalid Stim.");
}
break;
case 2: // stimpack c
obj_id stimc = createObject("object/tangible/medicine/instant_stimpack/stimpack_c.iff", pInv, "");
if(isIdValid(stimc))
{
setCount(stimc, 350);
setObjVar(stimc, "healing.power", 700);
sendSystemMessageTestingOnly(player, "High Charge Instant Stimpack-C Issued!");
}
else
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction, Invalid Stim.");
}
break;
case 3: // stimpack d
obj_id stimd = createObject("object/tangible/medicine/instant_stimpack/stimpack_d.iff", pInv, "");
if(isIdValid(stimd))
{
setCount(stimd, 350);
setObjVar(stimd, "healing.power", 1200);
sendSystemMessageTestingOnly(player, "High Charge Instant Stimpack-D Issued!");
}
else
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction, Invalid Stim.");
}
break;
/* case 4: // All enhancers
for(int i = 0; i < allTemplates.length; i++)
{
obj_id enh = createObject("object/tangible/medicine/enhancer/enhancer_" + allTemplates[i] + ".iff", pInv, "");
if(isIdValid(enh))
{
setCount(enh, 150);
setObjVar(enh, "healing.enhancement", 700.0f);
}
}
break;
case 5: // "Bacta Infusion Enhancer",
case 6: // "Bacta Jab Enhancer",
case 7: // "Bacta Shot Enhancer",
case 8: // "Bacta Spray Enhancer",
case 9: // "Bacta Toss Enhancer",
case 10: // "Deuterium Toss Enhancer",
case 11: // "Disinfect Enhancer",
case 12: // "Endorphine Injection Enhancer",
case 13: // "Neurotoxin Enhancer",
case 14: // "Nutrient Injection Enhancer",
case 15: // "Stabilizer Enhancer",
case 16: // "Thyroid Rupture Enhancer",
case 17: // "Traumatize Enhancer"
obj_id enh = createObject("object/tangible/medicine/enhancer/enhancer_" + allTemplates[idx-5] + ".iff", pInv, "");
if(isIdValid(enh))
{
setCount(enh, 150);
setObjVar(enh, "healing.enhancement", 700.0f);
}
break;
*/
default:
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
refreshMenu ( player, "Select the desired option", "Character Builder Terminal", MEDICINE_OPTIONS, "handleMedicineSelect", false);
return SCRIPT_CONTINUE;
}
//===================================================================
// Heal Section //===============================================
void handleHealOption(obj_id player)
{
refreshMenu ( player, "Select the desired item option", "Character Builder Terminal", HEAL_OPTIONS, "handleHealOptions", false);
}
messageHandler handleHealOptions()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
refreshMenu (player, "Select the desired character option", "Character Builder Terminal", CHARACTER_BUILDER_OPTIONS, "handleOptionSelect", true);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > HEAL_OPTIONS.length)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
switch(idx)
{
case 0:
{
sendSystemMessageTestingOnly(player, "You have been licked by a Frog! All wounds have been Healed!");
}
break;
case 1:
healShockWound(player, 1000);
sendSystemMessageTestingOnly(player, "You have been licked by a Frog! All Battle Fatigue has been Healed!");
break;
default:
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
refreshMenu (player, "Select the desired option", "Character Builder Terminal", HEAL_OPTIONS, "handleHealOptions", false);
return SCRIPT_CONTINUE;
}
//===================================================================
// Faction Section //===============================================
/*
void handleFactionOption(obj_id player)
{
obj_id self = getSelf();
refreshMenu ( player, "Select the desired item option", "Character Builder Terminal", FACTION_OPTIONS, "handleFactionOptions", false);
}
messageHandler handleFactionOptions()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
startCharacterBuilder(player);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > FACTION_OPTIONS.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
string prompt = "Select the desired option";
string title = "Character Builder Terminal";
int pid = 0;
string factionName = factions.getFaction(player);
int current_rank = pvpGetCurrentGcwRank(player);
int standing = 0;
switch(idx)
{
case 0:
factionName = "Imperial";
if (factionName == null)
{
//sendSystemMessageTestingOnly(player, "You must declare a Faction before receiving Points!");
return SCRIPT_OVERRIDE;
}
standing = (int)factions.getFactionStanding(player, factionName);
factions.addFactionStanding(player, factionName, FACTION_AMT);
break;
case 1:
factionName = "Rebel";
if (factionName == null)
{
//sendSystemMessageTestingOnly(player, "You must declare a Faction before receiving Points!");
return SCRIPT_OVERRIDE;
}
standing = (int)factions.getFactionStanding(player, factionName);
factions.addFactionStanding(player, factionName, FACTION_AMT);
break;
default:
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
handleFactionOption(player);
return SCRIPT_CONTINUE;
}
*/
void handleSpaceMiningOption(obj_id player)
{
obj_id self = getSelf();
skill.grantSkill(player, "pilot_rebel_navy_novice");
skill.grantSkill(player, "pilot_rebel_navy_starships_01");
skill.grantSkill(player, "pilot_rebel_navy_starships_02");
skill.grantSkill(player, "pilot_rebel_navy_starships_03");
skill.grantSkill(player, "pilot_rebel_navy_starships_04");
skill.grantSkill(player, "pilot_rebel_navy_weapons_01");
skill.grantSkill(player, "pilot_rebel_navy_weapons_02");
skill.grantSkill(player, "pilot_rebel_navy_weapons_03");
skill.grantSkill(player, "pilot_rebel_navy_weapons_04");
skill.grantSkill(player, "pilot_rebel_navy_procedures_01");
skill.grantSkill(player, "pilot_rebel_navy_procedures_02");
skill.grantSkill(player, "pilot_rebel_navy_procedures_03");
skill.grantSkill(player, "pilot_rebel_navy_procedures_04");
skill.grantSkill(player, "pilot_rebel_navy_droid_01");
skill.grantSkill(player, "pilot_rebel_navy_droid_02");
skill.grantSkill(player, "pilot_rebel_navy_droid_03");
skill.grantSkill(player, "pilot_rebel_navy_droid_04");
skill.grantSkill(player, "pilot_rebel_navy_master");
attachScript(player, "wwallace.space_mining_test");
obj_id objInventory = utils.getInventoryContainer(player);
sendSystemMessageTestingOnly(player, "Granting a mining vessel...and launching you to spaaaace!");
obj_id weapon1 = createObjectOverloaded("object/tangible/ship/components/weapon/wpn_mining_laser_mk2.iff", objInventory);
obj_id weapon2 = createObjectOverloaded("object/tangible/ship/components/weapon/wpn_tractor_pulse_gun.iff", objInventory);
obj_id cargoHold = createObjectOverloaded("object/tangible/ship/components/cargo_hold/crg_starfighter_large.iff", objInventory);
obj_id newship = space_utils.createShipControlDevice(player, "xwing", true);
if (isIdValid(newship))
{
obj_id ship = space_transition.getShipFromShipControlDevice(newship);
obj_id comp1 = shipUninstallComponent(player, ship , ship_chassis_slot_type.SCST_weapon_0, objInventory);
destroyObject(comp1);
shipInstallComponent(player, ship, ship_chassis_slot_type.SCST_weapon_0, weapon1);
obj_id comp2 = shipUninstallComponent(player, ship , ship_chassis_slot_type.SCST_weapon_1, objInventory);
destroyObject(comp2);
shipInstallComponent(player, ship, ship_chassis_slot_type.SCST_weapon_1, weapon2);
shipInstallComponent(player, ship, ship_chassis_slot_type.SCST_cargo_hold, cargoHold);
location space = new location(0, 0, 0, "space_tatooine");
location ground = getLocation(player);
launch(player, ship, null, space, ground);
}
}
void handleFactionOption(obj_id player)
{
obj_id self = getSelf();
refreshMenu ( player, "Select the desired faction option", "Character Builder Terminal", FACTION_OPTIONS, "handleFactionOptions", false);
}
messageHandler handleFactionOptions()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_CANCEL )
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > FACTION_OPTIONS.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
string prompt = "Select the desired option";
string title = "Character Builder Terminal";
int pid = 0;
string factionName = factions.getFaction(player);
int current_rank = pvpGetCurrentGcwRank(player);
switch(idx)
{
case 0:
if (factionName == null)
{
sendSystemMessageTestingOnly(player, "You must declare a Faction before receiving Points!");
return SCRIPT_OVERRIDE;
}
int standing = (int)factions.getFactionStanding(player, factionName);
if ( standing < 25000 )
{
factions.addFactionStanding(player, factionName, FACTION_AMT);
}
else
{
sendSystemMessageTestingOnly(player, "You already have a large amount of unspent faction points. Why do you need any more?");
}
break;
case 1:
if (space_flags.isImperialPilot(player))
{
sendSystemMessageTestingOnly(player, "You are an Imperial Pilot! You must surrender your current space faction before you become a Rebel!");
return SCRIPT_OVERRIDE;
}
if (factionName == null)
{
pvpSetAlignedFaction(player, ##"rebel");
pvpMakeCovert(player);
sendSystemMessageTestingOnly(player, "Faction Set. You are now a Covert Rebel!");
}
else if (factionName == "Imperial")
{
sendSystemMessageTestingOnly(player, "You are an Imperial! You must surrender your current faction before you become a Rebel!");
}
else if (factionName == "Rebel")
{
sendSystemMessageTestingOnly(player, "You are already a Rebel!");
}
break;
case 2:
if (space_flags.isRebelPilot(player))
{
sendSystemMessageTestingOnly(player, "You are a Rebel Pilot! You must surrender your current space faction before you become an Imperial!");
return SCRIPT_OVERRIDE;
}
if (factionName == null)
{
pvpSetAlignedFaction(player, ##"imperial");
pvpMakeCovert(player);
sendSystemMessageTestingOnly(player, "Faction Set. You are now a Covert Imperial!");
}
else if (factionName == "Rebel")
{
sendSystemMessageTestingOnly(player, "You are a Rebel! You must surrender your current faction before you become an Imperial!");
}
else if (factionName == "Imperial")
{
sendSystemMessageTestingOnly(player, "You are already an Imperial!");
}
break;
/* case 3:
if (factionName == null)
{
sendSystemMessageTestingOnly(player, "You must declare a Faction before Declaring Overt!");
return SCRIPT_OVERRIDE;
}
else
{
pvpMakeDeclared(player);
sendSystemMessageTestingOnly(player, "OVERT Faction Status SET!");
}
break;
case 4:
if (factionName == null)
{
sendSystemMessageTestingOnly(player, "You must declare a Faction before Declaring Covert!");
return SCRIPT_OVERRIDE;
}
else
{
pvpMakeCovert(player);
sendSystemMessageTestingOnly(player, "COVERT Faction Status SET!");
}
break;
*/
case 3:
if (factionName == null)
{
sendSystemMessageTestingOnly(player, "You must declare a Faction before receiving Rank");
return SCRIPT_OVERRIDE;
}
else
{
factions.setRank(player, current_rank + 1);
}
break;
case 4:
if (factionName == null)
{
sendSystemMessageTestingOnly(player, "You must declare a Faction before losing Rank");
return SCRIPT_OVERRIDE;
}
else
{
factions.setRank(player, current_rank - 1);
}
break;
case 5:
if(hasObjVar(player, "intChangingFactionStatus"))
{
removeObjVar(player, "intChangingFactionStatus");
}
pvpMakeNeutral(player);
pvpSetAlignedFaction(player, 0);
factions.setFactionStanding(player, factionName, 0);
factions.unequipFactionEquipment(player, false);
factions.releaseFactionHirelings(player);
sendSystemMessageTestingOnly(player, "You are now Neutral.");
break;
default:
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
refreshMenu ( player, "Select the desired faction option", "Character Builder Terminal", FACTION_OPTIONS, "handleFactionOptions", false);
return SCRIPT_CONTINUE;
}
//===================================================================
// Roadmap Skills Section //======================================
void handleRoadmapSkills(obj_id player)
{
refreshMenu ( player, "Select the desired Roadmap option", "Character Builder Terminal", ROADMAP_SKILL_OPTIONS, "handleRoadmapSelect", false);
}
messageHandler handleRoadmapSelect()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
startCharacterBuilder(player);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > ROADMAP_SKILL_OPTIONS.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
string prompt = "Select the desired roadmap skill option";
string title = "Character Builder Terminal";
int pid = 0;
switch(idx)
{
case 0:
if(isGod(player))
{
handleRoadmapChoice(player);
}
else
{
sendSystemMessageTestingOnly(player, "You cannot access that option.");
}
break;
case 1:
string skillName = getWorkingSkill(player);
dictionary xpReqs = getSkillPrerequisiteExperience(skillName);
if (xpReqs == null || xpReqs.isEmpty())
{
sendSystemMessageTestingOnly(player, "Current working skill is invalid.");
return SCRIPT_CONTINUE;
}
java.util.Enumeration e = xpReqs.keys();
string xpType = (string)(e.nextElement());
int xpCost = xpReqs.getInt(xpType);
int curXP = getExperiencePoints(player, xpType);
if ( curXP < xpCost )
{
grantExperiencePoints(player, xpType, xpCost - curXP);
}
skill_template.earnWorkingSkill(player);
handleRoadmapSkills(player);
break;
case 2:
string template = getSkillTemplate(player);
sui.inputbox(self, player, "Enter your desired level.", "handleAutoLevelSelect");
break;
case 3:
respec.revokeAllSkillsAndExperience(player);
int currentCombatXp = getExperiencePoints(player, "combat_general");
grantExperiencePoints(player, "combat_general", -currentCombatXp);
skill.recalcPlayerPools(player, true);
respec.autoLevelPlayer(player, 90, false);
//reset the expertise
utils.fullExpertiseReset(player, true);
skill.setPlayerStatsForLevel(player, 90);
removeObjVar(player, "expertise_reset");
removeObjVar(player, "respecsBought");
sendSystemMessageTestingOnly(player, "Respecced to level 90 and respecs cleared.");
cleanScriptVars(player);
break;
default:
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
return SCRIPT_CONTINUE;
}
messageHandler handleAutoLevelSelect()
{
obj_id player = sui.getPlayerId(params);
string text = sui.getInputBoxText(params);
int level = utils.stringToInt(text);
if (level < 1 || level > 90)
{
sendSystemMessageTestingOnly(player, "Invalid level entered!");
}
else
{
respec.autoLevelPlayer(player, level, false);
}
//reset the expertise
utils.fullExpertiseReset(player, true);
expertise.autoAllocateExpertiseByLevel(player, false);
handleRoadmapSkills(player);
return SCRIPT_CONTINUE;
}
void handleRoadmapChoice(obj_id player)
{
obj_id self = getSelf();
string[] roadmapList = getRoadmapList();
if (roadmapList == null || roadmapList.length == 0)
{
sendSystemMessage(player, SID_TERMINAL_DENIED);
cleanScriptVars(player);
return;
}
else
{
closeOldWindow(player);
utils.setBatchScriptVar(player, "character_builder.roadmap_list", roadmapList);
}
refreshMenu ( player, "Select a skill roadmap.", "Character Builder Terminal", convertRoadmapNames(roadmapList), "handleRoadmapChoiceSelection", false);
}
messageHandler handleRoadmapChoiceSelection()
{
int idx = sui.getListboxSelectedRow(params);
obj_id player = sui.getPlayerId(params);
int btn = sui.getIntButtonPressed(params);
if ( btn == sui.BP_REVERT )
{
refreshMenu (player, "Select the desired character option", "Character Builder Terminal", CHARACTER_BUILDER_OPTIONS, "handleOptionSelect", true);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
boolean levelNinety = false;
if(idx % 2 == 1)
{
levelNinety = true;
}
idx = idx / 2;
string[] roadmapList = utils.getStringBatchScriptVar(player, "character_builder.roadmap_list");
if(exists(player))
{
if(!levelNinety)
{
handleRoadmapSkillProgression(player, roadmapList[idx]);
}
else
{
handleProfessionLevelToNinety(player, roadmapList[idx]);
}
}
return SCRIPT_CONTINUE;
}
string[] getRoadmapList()
{
// Moved this function to the gm scriptlib so that both this and the /grantSkill command will share the same data
return gm.getRoadmapList();
}
string[] convertRoadmapNames(string[] list)
{
string[] newList = new string[list.length * 2];
for (int i = 0; i < newList.length; i += 2)
{
char branch = list[i / 2].charAt(list[i / 2].length() - 1);
branch -= 49;
string roadmapName = "@ui_roadmap:title_" + list[i / 2].substring(0, list[i / 2].lastIndexOf('_'));
string branchName = "@ui_roadmap:track_title_" + list[i / 2].substring(0, list[i / 2].lastIndexOf('_')) + "_" + branch;
newList[i] = roadmapName + " - " + branchName;
newList[i + 1] = roadmapName + " - Level 90";
}
return newList;
}
void handleProfessionLevelToNinety(obj_id player, string roadmap)
{
revokeAllSkills(player);
int currentCombatXp = getExperiencePoints(player, "combat_general");
grantExperiencePoints(player, "combat_general", -currentCombatXp);
skill.recalcPlayerPools(player, true);
setSkillTemplate(player, roadmap);
respec.autoLevelPlayer(player, 90, false);
//reset the expertise
utils.fullExpertiseReset(player, true);
skill.setPlayerStatsForLevel(player, 90);
expertise.autoAllocateExpertiseByLevel(player, false);
handleRoadmapSkills(player);
}
void handleRoadmapSkillProgression(obj_id player, string roadmap)
{
obj_id self = getSelf();
string templateSkills = dataTableGetString(skill_template.TEMPLATE_TABLE, roadmap, "template");
string[] skillList = split(templateSkills, ',');
if (skillList == null || skillList.length == 0)
{
sendSystemMessage(player, SID_TERMINAL_DENIED);
cleanScriptVars(player);
return;
}
else
{
closeOldWindow(player);
utils.setScriptVar(player, "character_builder.skill_template", roadmap);
utils.setBatchScriptVar(player, "character_builder.roadmap_skills", skillList);
}
refreshMenu ( player, "Select a the working skill in the roadmap.", "Character Builder Terminal", convertSkillListNames(skillList), "handleRoadmapSkillSelection", false);
}
messageHandler handleRoadmapSkillSelection()
{
int idx = sui.getListboxSelectedRow(params);
obj_id player = sui.getPlayerId(params);
int btn = sui.getIntButtonPressed(params);
if ( btn == sui.BP_REVERT )
{
refreshMenu (player, "Select the desired character option", "Character Builder Terminal", CHARACTER_BUILDER_OPTIONS, "handleOptionSelect", true);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
if ( exists(player) && !outOfRange(self , player, false) )
{
sendSystemMessageTestingOnly(player, "Revoking all old skills.");
revokeAllSkills(player);
int currentCombatXp = getExperiencePoints(player, "combat_general");
grantExperiencePoints(player, "combat_general", -currentCombatXp);
skill.recalcPlayerPools(player, true);
string skillTemplate = utils.getStringScriptVar(player, "character_builder.skill_template");
setSkillTemplate(player, skillTemplate);
string[] roadmapSkills = utils.getStringBatchScriptVar(player, "character_builder.roadmap_skills");
for (int i = 0; i < idx; i++)
{
skill.grantSkillToPlayer(player, roadmapSkills[i]);
}
setWorkingSkill(player, roadmapSkills[idx]);
//reset the expertise
utils.fullExpertiseReset(player, true);
expertise.autoAllocateExpertiseByLevel(player, false);
skill.recalcPlayerPools(player, true);
}
refreshMenu (player, "Select the desired character option", "Character Builder Terminal", CHARACTER_BUILDER_OPTIONS, "handleOptionSelect", true);
return SCRIPT_CONTINUE;
}
void revokeAllSkills(obj_id player)
{
string[] skillList = getSkillListingForPlayer(player);
int attempts = skillList.length;
if ((skillList != null) && (skillList.length != 0))
{
while(skillList.length > 0 && attempts > 0)
{
for (int i = 0; i < skillList.length; i++)
{
string skillName = skillList[i];
if (!skillName.startsWith ("species_")&& //don't revoke species skills
!skillName.startsWith("social_language_")&&
!skillName.startsWith("utility_")&&
!skillName.startsWith("common_")&&
!skillName.startsWith("demo_")&&
!skillName.startsWith("force_title_")&&
!skillName.startsWith("force_sensitive_")&&
!skillName.startsWith("combat_melee_basic")&&
!skillName.startsWith("pilot_")&&
!skillName.startsWith("internal_expertise_") &&
!skillName.startsWith("class_chronicles_") &&
!skillName.startsWith("combat_ranged_weapon_basic"))
{
skill.revokeSkillSilent(player, skillName);
}
}
// The new skill list is the remaining skills.
skillList = getSkillListingForPlayer(player);
// Prevent data from creating an infinite loop.
--attempts;
}
}
//reset the expertise
utils.fullExpertiseReset(player, false);
skill.recalcPlayerPools(player, true);
}
//===================================================================
// CH Pet Ability Section //=========================================
void handlePetAbilityOption(obj_id player)
{
int[] abilityList = dataTableGetIntColumn(pet_lib.PET_ABILITY_TABLE, "abilityCrc");
string[] abilityNames = dataTableGetStringColumn(pet_lib.PET_ABILITY_TABLE, "abilityName");
for (int i = 0; i < abilityNames.length; i++)
{
abilityNames[i] = utils.packStringId(new string_id("pet/pet_ability", abilityNames[i]));
}
refreshMenu ( player, "Select the desired Pet Ability", "Character Builder Terminal", abilityNames, "handlePetAbilitySelection", false);
utils.setScriptVar(player, "character_builder.petAbilityList", abilityList);
utils.setScriptVar(player, "character_builder.petAbilityNames", abilityNames);
}
messageHandler handlePetAbilitySelection()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
startCharacterBuilder(player);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 )
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
int[] petAbilityList = utils.getIntArrayScriptVar(player, "character_builder.petAbilityList");
string[] petAbilityNames = utils.getStringArrayScriptVar(player, "character_builder.petAbilityNames");
int[] chAbilityList = getIntArrayObjVar(player, "ch.petAbility.abilityList");
int[] newAbilityList = null;
if (chAbilityList != null && chAbilityList.length > 0)
{
if (utils.getElementPositionInArray(chAbilityList, petAbilityList[idx]) > -1)
{
refreshMenu ( player, "Select the desired Pet Ability", "Character Builder Terminal", petAbilityNames, "handlePetAbilitySelection", false);
return SCRIPT_CONTINUE;
}
newAbilityList = new int[chAbilityList.length + 1];
for (int i = 0; i < chAbilityList.length; i++)
newAbilityList[i] = chAbilityList[i];
newAbilityList[newAbilityList.length - 1] = petAbilityList[idx];
}
else
{
newAbilityList = new int[1];
newAbilityList[0] = petAbilityList[idx];
}
setObjVar(player, "ch.petAbility.abilityList", newAbilityList);
refreshMenu ( player, "Select the desired Pet Ability", "Character Builder Terminal", petAbilityNames, "handlePetAbilitySelection", false);
return SCRIPT_CONTINUE;
}
//===================================================================
// Jedi Section //===================================================
void handleJediOption(obj_id player)
{
refreshMenu ( player, "Select the desired Jedi option", "Character Builder Terminal", JEDI_OPTIONS, "handleJediSelect", false);
}
messageHandler handleJediSelect()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
startCharacterBuilder(player);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > JEDI_OPTIONS.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
string prompt = "Select the desired armor option";
string title = "Character Builder Terminal";
int pid = 0;
switch(idx)
{
case 0:
refreshMenu( player, prompt, title, CRYSTAL_OPTIONS, "handleCrystalSelect", false);
break;
case 1:
refreshMenu( player, prompt, title, SABER_OPTIONS, "handleSaberSelect", false);
break;
case 2:
refreshMenu( player, prompt, title, ROBE_OPTIONS, "handleRobeSelect", false);
break;
/*
case 2:
refreshMenu( player, prompt, title, JEDI_PLAYTEST_OPTIONS, "handleDesignerSelect", false);
break;
*/
default:
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
return SCRIPT_CONTINUE;
}
messageHandler handleCrystalSelect()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
handleJediOption(player);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > CRYSTAL_OPTIONS.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure player's inventory is valid
if (!isIdValid(pInv))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure there is room in player's inventory
if (getVolumeFree(pInv) <= 4)
{
sendSystemMessageTestingOnly(player, "Your Inventory is Full! Please free up at least 4 inventory slots and try again.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
switch(idx)
{
case 0:
for (int i = 0; i < 4; i++)
{
jedi.createColorCrystal(pInv, rand(0, 11));
}
sendSystemMessageTestingOnly(player, "Color Crystals Issued!");
break;
case 1:
if(isGod(player))
{
static_item.createNewItemFunction("item_tow_lava_crystal_06_01",pInv);
sendSystemMessageTestingOnly(player, "Lava Crystal Issued!");
}
else
{
sendSystemMessageTestingOnly(player, "You Must be in God Mode to enjoy the Lava Crystal!");
}
break;
case 2:
for (int i = 0; i < 4; i++)
{
static_item.createNewItemFunction("item_power_crystal_04_15", pInv);
}
sendSystemMessageTestingOnly(player, "Power Crystals Issued!");
break;
case 3:
if(isGod(player))
{
for (int i = 0; i < 4; i++)
{
static_item.createNewItemFunction("item_krayt_pearl_04_20", pInv);
//obj_id crystal = createObject("object/tangible/component/weapon/lightsaber/lightsaber_module_krayt_dragon_pearl.iff", pInv, "");
//setObjVar(crystal, jedi.VAR_CRYSTAL_STATS + "." + jedi.VAR_LEVEL, 350);
}
sendSystemMessageTestingOnly(player, "Ancient Krayt Pearls Issued!");
}
else
{
sendSystemMessageTestingOnly(player, "You Must be in God Mode to enjoy the Ancient Krayt Pearls Issued!");
}
break;
default:
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
refreshMenu( player, "Select the desired armor option", "Character Builder Terminal", CRYSTAL_OPTIONS, "handleCrystalSelect", false);
return SCRIPT_CONTINUE;
}
messageHandler handleSaberSelect()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
handleJediOption(player);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > SABER_OPTIONS.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure player's inventory is valid
if (!isIdValid(pInv))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure there is room in player's inventory
if (getVolumeFree(pInv) <= 4)
{
sendSystemMessageTestingOnly(player, "Your Inventory is Full! Please free up at least 4 inventory slots and try again.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
switch(idx)
{
case 0:
{
float[] weaponMinDamage = { 145f };
float[] weaponMaxDamage = { 300f };
float[] weaponAttackSpeed = { 1f };
float weaponWoundChance = 1.0f;
float weaponForceCost = 0.0f;
float weaponAttackCost = 100f;
generateGenerationSabers(0, player, pInv, weaponMinDamage, weaponMaxDamage, weaponAttackSpeed, weaponWoundChance,weaponForceCost,weaponAttackCost);
jedi.createColorCrystal(pInv, rand(0, 11));
sendSystemMessageTestingOnly(player, "Training Saber Issued!");
}
break;
case 1:
{
float[] weaponMinDamage = { 300f, 300f, 300f };
float[] weaponMaxDamage = { 611f, 611f, 611f };
float[] weaponAttackSpeed = { 1f, 1f, 1f };
float weaponWoundChance = 1.0f;
float weaponForceCost = 0.0f;
float weaponAttackCost = 1f;
generateGenerationSabers(1, player, pInv, weaponMinDamage, weaponMaxDamage, weaponAttackSpeed, weaponWoundChance,weaponForceCost,weaponAttackCost);
jedi.createColorCrystal(pInv, rand(0, 11));
sendSystemMessageTestingOnly(player, "Generation One Sabers Issued!");
}
break;
case 2:
{
float[] weaponMinDamage = { 360f, 360f, 360f };
float[] weaponMaxDamage = { 740f, 740f, 740f };
float[] weaponAttackSpeed = { 1f, 1f, 1f };
float weaponWoundChance = 1.0f;
float weaponForceCost = 0.0f;
float weaponAttackCost = 1f;
generateGenerationSabers(2, player, pInv, weaponMinDamage, weaponMaxDamage, weaponAttackSpeed, weaponWoundChance,weaponForceCost,weaponAttackCost);
jedi.createColorCrystal(pInv, rand(0, 11));
sendSystemMessageTestingOnly(player, "Generation Two Sabers Issued!");
}
break;
case 3:
{
float[] weaponMinDamage = { 500f, 500f, 500f };
float[] weaponMaxDamage = { 1000f, 1000f, 1000f };
float[] weaponAttackSpeed = { 1f, 1f, 1f };
float weaponWoundChance = 1.0f;
float weaponForceCost = 0.0f;
float weaponAttackCost = 1f;
generateGenerationSabers(3, player, pInv, weaponMinDamage, weaponMaxDamage, weaponAttackSpeed, weaponWoundChance,weaponForceCost,weaponAttackCost);
jedi.createColorCrystal(pInv, rand(0, 11));
sendSystemMessageTestingOnly(player, "Generation Three Sabers Issued!");
}
break;
case 4:
{
float[] weaponMinDamage = { 597f, 597f, 597f };
float[] weaponMaxDamage = { 1193f, 1193f, 1193f };
float[] weaponAttackSpeed = { 1f, 1f, 1f };
float weaponWoundChance = 1.0f;
float weaponForceCost = 0.0f;
float weaponAttackCost = 1f;
generateGenerationSabers(4, player, pInv, weaponMinDamage, weaponMaxDamage, weaponAttackSpeed, weaponWoundChance,weaponForceCost,weaponAttackCost);
jedi.createColorCrystal(pInv, rand(0, 11));
sendSystemMessageTestingOnly(player, "Generation Four Sabers Issued!");
}
break;
case 5:
{
float[] weaponMinDamage = { 660f, 660f, 660f };
float[] weaponMaxDamage = { 1350f, 1350f, 1350f };
float[] weaponAttackSpeed = { 1f, 1f, 1f };
float weaponWoundChance = 1.0f;
float weaponForceCost = 0.0f;
float weaponAttackCost = 1f;
generateGenerationSabers(5, player, pInv, weaponMinDamage, weaponMaxDamage, weaponAttackSpeed, weaponWoundChance,weaponForceCost,weaponAttackCost);
jedi.createColorCrystal(pInv, rand(0, 11));
sendSystemMessageTestingOnly(player, "Generation Five Sabers Issued!");
}
break;
default:
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
refreshMenu( player, "Select the desired armor option", "Character Builder Terminal", SABER_OPTIONS, "handleSaberSelect", false);
return SCRIPT_CONTINUE;
}
messageHandler handleRobeSelect()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
handleJediOption(player);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > ROBE_OPTIONS.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure player's inventory is valid
if (!isIdValid(pInv))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure there is room in player's inventory
if (getVolumeFree(pInv) <= 2)
{
sendSystemMessageTestingOnly(player, "Your Inventory is Full! Please free up at least 2 inventory slots and try again.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
switch(idx)
{
case 0:
{
static_item.createNewItemFunction("item_jedi_robe_padawan_04_01", pInv);
sendSystemMessageTestingOnly(player, "Padawan Robe Issued!");
}
break;
case 1:
{
static_item.createNewItemFunction("item_jedi_robe_light_03_01", pInv);
sendSystemMessageTestingOnly(player, "Light Acolyte Robe Issued!");
}
break;
case 2:
{
static_item.createNewItemFunction("item_jedi_robe_dark_03_01", pInv);
sendSystemMessageTestingOnly(player, "Dark Acolyte Robe Issued!");
}
break;
case 3:
{
static_item.createNewItemFunction("item_jedi_robe_light_03_02", pInv);
sendSystemMessageTestingOnly(player, "Light Apprentice Robe Issued!");
}
break;
case 4:
{
static_item.createNewItemFunction("item_jedi_robe_dark_03_02", pInv);
sendSystemMessageTestingOnly(player, "Dark Apprentice Robe Issued!");
}
break;
case 5:
{
static_item.createNewItemFunction("item_jedi_robe_light_03_03", pInv);
sendSystemMessageTestingOnly(player, "Light Jedi Knight Robe Issued!");
}
break;
case 6:
{
static_item.createNewItemFunction("item_jedi_robe_dark_03_03", pInv);
sendSystemMessageTestingOnly(player, "Dark Jedi Knight Robe Issued!");
}
break;
case 7:
{
static_item.createNewItemFunction("item_jedi_robe_06_01", pInv);
sendSystemMessageTestingOnly(player, "Jedi Master Cloak Issued!");
}
break;
case 8:
{
static_item.createNewItemFunction("item_jedi_robe_06_02", pInv);
sendSystemMessageTestingOnly(player, "Jedi Master Cloak Issued!");
}
break;
case 9:
{
if ( hasCompletedCollectionSlot(player, "jedi_robe_01_07") )
{
modifyCollectionSlotValue(player, "jedi_robe_01_07", -1);
}
if ( hasCompletedCollectionSlot(player, "jedi_robe_01_08") )
{
modifyCollectionSlotValue(player, "jedi_robe_01_08", -1);
}
sendSystemMessageTestingOnly(player, "Statue slots in Master Jedi Cloak collection reset!");
}
default:
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
refreshMenu( player, "Select the desired armor option", "Character Builder Terminal", ROBE_OPTIONS, "handleRobeSelect", false);
return SCRIPT_CONTINUE;
}
/*
messageHandler handleDesignerSelect()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
handleJediOption(player);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > JEDI_PLAYTEST_OPTIONS.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure player's inventory is valid
if (!isIdValid(pInv))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure there is room in player's inventory
if (getVolumeFree(pInv) <= 4)
{
sendSystemMessageTestingOnly(player, "Your Inventory is Full! Please free up at least 4 inventory slots and try again.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
switch(idx)
{
//level 26
case 0:
{
float[] weaponMinDamage = { 145f };
float[] weaponMaxDamage = { 300f };
float[] weaponAttackSpeed = { 1f };
float weaponWoundChance = 1.0f;
float weaponForceCost = 0.0f;
float weaponAttackCost = 1f;
generateGenerationSabers(0, player, pInv, weaponMinDamage, weaponMaxDamage, weaponAttackSpeed, weaponWoundChance,weaponForceCost,weaponAttackCost);
jedi.createColorCrystal(pInv, rand(0, 11));
static_item.createNewItemFunction("item_jedi_robe_padawan_04_01", pInv);
revokeAllSkills(player);
int currentCombatXp = getExperiencePoints(player, "combat_general");
grantExperiencePoints(player, "combat_general", -currentCombatXp);
setSkillTemplate(player, "force_sensitive_1a");
string templateSkills = dataTableGetString(skill_template.TEMPLATE_TABLE, "force_sensitive_1a", "template");
string[] skillList = split(templateSkills, ',');
setWorkingSkill(player, skillList[0]);
respec.autoLevelPlayer(player, 26, false);
skill.recalcPlayerPools(player, true);
int questId = questGetQuestId("quest/naboo_theed_goto_pooja");
int result = questActivateQuest(questId, player, self);
badge.grantBadge(player, "bdg_content_rsf_clearance_4");
sendSystemMessageTestingOnly(player, "Level 26 Gear Issued!");
}
break;
//level 75
case 1:
{
float[] weaponMinDamage = { 545f, 545f, 545f };
float[] weaponMaxDamage = { 1100f, 1100f, 1100f };
float[] weaponAttackSpeed = { 1f, 1f, 1f };
float weaponWoundChance = 1.0f;
float weaponForceCost = 0.0f;
float weaponAttackCost = 1f;
generateGenerationSabers(4, player, pInv, weaponMinDamage, weaponMaxDamage, weaponAttackSpeed, weaponWoundChance,weaponForceCost,weaponAttackCost);
jedi.createColorCrystal(pInv, rand(0, 11));
for (int i = 0; i < 4; i++)
{
static_item.createNewItemFunction("item_krayt_pearl_04_20", pInv);
}
static_item.createNewItemFunction("item_jedi_robe_dark_04_04", pInv);
static_item.createNewItemFunction("item_jedi_robe_light_04_04", pInv);
revokeAllSkills(player);
int currentCombatXp = getExperiencePoints(player, "combat_general");
grantExperiencePoints(player, "combat_general", -currentCombatXp);
setSkillTemplate(player, "force_sensitive_1a");
string templateSkills = dataTableGetString(skill_template.TEMPLATE_TABLE, "force_sensitive_1a", "template");
string[] skillList = split(templateSkills, ',');
setWorkingSkill(player, skillList[0]);
respec.autoLevelPlayer(player, 75, false);
skill.recalcPlayerPools(player, true);
sendSystemMessageTestingOnly(player, "Level 75 Gear Issued!");
}
break;
default:
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
refreshMenu( player, "Select the desired armor option", "Character Builder Terminal", JEDI_PLAYTEST_OPTIONS, "handleSaberSelect", false);
return SCRIPT_CONTINUE;
}
*/
void generateGenerationSabers (int generation, obj_id player, obj_id pInv, float[] weaponMinDamage, float[] weaponMaxDamage, float[] weaponAttackSpeed, float weaponWoundChance, float weaponForceCost,float weaponAttackCost)
{
string[] saber;
if (generation <1 || generation >5)
{
saber = new string[1];
saber[0] = "object/weapon/melee/sword/crafted_saber/sword_lightsaber_training.iff";
}
else
{
saber = new string[3];
saber[0] = "object/weapon/melee/sword/crafted_saber/sword_lightsaber_one_handed_gen"+ generation +".iff";
saber[1] = "object/weapon/melee/2h_sword/crafted_saber/sword_lightsaber_two_handed_gen"+ generation +".iff";
saber[2] = "object/weapon/melee/polearm/crafted_saber/sword_lightsaber_polearm_gen"+ generation +".iff";
}
if (saber.length != weaponMinDamage.length || saber.length != weaponMaxDamage.length || saber.length != weaponAttackSpeed.length)
{
return;
}
for (int i = 0; i < saber.length; i++)
{
obj_id saberObj = createObject(saber[i], pInv, "");
if (!isIdValid (saberObj))
{
continue;
}
setWeaponMinDamage(saberObj, (int)(weaponMinDamage[i]));
setWeaponMaxDamage(saberObj, (int)(weaponMaxDamage[i]));
setWeaponAttackSpeed(saberObj, weaponAttackSpeed[i]);
setWeaponAttackCost(saberObj, (int)weaponAttackCost);
setWeaponWoundChance(saberObj, weaponWoundChance);
setConversionId(saberObj,weapons.CONVERSION_VERSION);
setObjVar(saberObj, jedi.VAR_SABER_DEFAULT_STATS + "." + jedi.VAR_MIN_DMG, (int)weaponMinDamage[i]);
setObjVar(saberObj, jedi.VAR_SABER_DEFAULT_STATS + "." + jedi.VAR_MAX_DMG, (int)weaponMaxDamage[i]);
setObjVar(saberObj, jedi.VAR_SABER_DEFAULT_STATS + "." + jedi.VAR_SPEED, weaponAttackSpeed[i]);
setObjVar(saberObj, jedi.VAR_SABER_DEFAULT_STATS + "." + jedi.VAR_WOUND, weaponWoundChance);
setObjVar(saberObj, jedi.VAR_SABER_DEFAULT_STATS + "." + jedi.VAR_RADIUS, getWeaponDamageRadius (saberObj));
setObjVar(saberObj, jedi.VAR_SABER_DEFAULT_STATS + "." + jedi.VAR_ATTACK_COST, getWeaponAttackCost(saberObj));
setObjVar(saberObj, jedi.VAR_SABER_DEFAULT_STATS + "." + jedi.VAR_ACCURACY, getWeaponAccuracy (saberObj));
//setObjVar(saberObj, jedi.VAR_SABER_BASE + "." + jedi.VAR_FORCE, weaponForceCost);
//setObjVar(saberObj, jedi.VAR_SABER_DEFAULT_STATS + "." + jedi.VAR_FORCE, weaponForceCost);
setWeaponRangeInfo(saberObj, 0.0f, 5.0f);
setWeaponDamageType (saberObj, DAMAGE_ENERGY);
setCraftedId(saberObj, saberObj);
setCrafter(saberObj, player);
setSocketsUp(saberObj);
weapons.setWeaponData(saberObj);
}
}
//===================================================================
// Launch function and other supporting functions for space mining testing
//======================================
void launch(obj_id player, obj_id ship, obj_id[] membersApprovedByShipOwner, location warpLocation, location groundLoc)
{
//sendSystemMessageTestingOnly(player, "(unlocalized) Launching...");
space_transition.clearOvertStatus(ship);
resizeable obj_id[] groupMembersToWarp = utils.addElement(null, player);
resizeable int[] groupMemberStartIndex = utils.addElement(null, 0);
utils.setScriptVar(player, "strLaunchPointName", "launching");
resizeable location[] shipStartLocations = space_transition.getShipStartLocations(ship);
if (shipStartLocations != null && shipStartLocations.length > 0)
{
int startIndex = 0;
location playerLoc = getLocation(player);
if (isIdValid(playerLoc.cell))
{
obj_id group = getGroupObject(player);
if (isIdValid(group))
{
obj_id[] groupMembers = getGroupMemberIds(group);
for (int i = 0; i < groupMembers.length; ++i)
{
if (groupMembers[i] != player
&& exists(groupMembers[i])
&& getLocation(groupMembers[i]).cell == playerLoc.cell
&& groupMemberApproved(membersApprovedByShipOwner, groupMembers[i]))
{
startIndex = getNextStartIndex(shipStartLocations, startIndex);
if (startIndex <= shipStartLocations.length)
{
groupMembersToWarp = utils.addElement(groupMembersToWarp, groupMembers[i]);
groupMemberStartIndex = utils.addElement(groupMemberStartIndex, startIndex);
}
else
{
string_id strSpam = new string_id("space/space_interaction", "no_space_expansion");
sendSystemMessage(groupMembers[i], strSpam);
}
}
}
}
}
}
for (int i = 0; i < groupMembersToWarp.length; ++i)
{
space_transition.setLaunchInfo(groupMembersToWarp[i], ship, groupMemberStartIndex[i], groundLoc);
warpPlayer(
groupMembersToWarp[i],
warpLocation.area,
warpLocation.x, warpLocation.y, warpLocation.z,
null,
warpLocation.x, warpLocation.y, warpLocation.z);
}
//sendSystemMessageTestingOnly(player, "(unlocalized) Finishing launch sequence...");
}
int getNextStartIndex(resizeable location[] shipStartLocations, int lastStartIndex)
{
int startIndex = lastStartIndex+1;
// If we have more players than start locations, see if we have any start
// locations in cells and reuse those. We assume that all start locations
// not in cells come at the beginning of the list.
if (startIndex > shipStartLocations.length)
{
for (startIndex = 1; startIndex <= shipStartLocations.length; ++startIndex)
if (shipStartLocations[startIndex-1].cell != null)
break;
}
return startIndex;
}
boolean groupMemberApproved(obj_id[] membersApprovedByShipOwner, obj_id memberToTest)
{
for (int i = 0; i < membersApprovedByShipOwner.length; ++i)
{
if (membersApprovedByShipOwner[i] == memberToTest)
{
return true;
}
}
return false;
}
//--- CYBERNETICS ------------
void handleCyberneticsOption( obj_id player )
{
obj_id inv = utils.getInventoryContainer(player);
if ( !isIdValid( inv ) )
return;
for ( int i = 0; i < CYBERNETIC_ITEMS.length; ++i )
{
createObject(CYBERNETIC_ITEMS[i], inv, "");
}
sendSystemMessageTestingOnly( player, "Cybernetics issued. Pay a cybernetic Engineer to install the items" );
sendSystemMessageTestingOnly( player, "Locate the cybernetic engineer on the 2nd floor of a medical center" );
location warpLocation = getLocation( player );
warpLocation.area = "tatooine";
warpLocation.x = 1305f;
warpLocation.y = 7f;
warpLocation.z = 3261f;
warpPlayer( player, warpLocation.area, warpLocation.x, warpLocation.y, warpLocation.z, null, 0.0f, 0.0f, 0.0f);
}
// Refresh Function
void refreshMenu ( obj_id player, string prompt, string title, string[] options, string myHandler, boolean draw)
{
obj_id self = getSelf();
closeOldWindow(player);
if(outOfRange(self , player, true))
{
cleanScriptVars(player);
return;
}
if (draw == false)
{
int pid = sui.listbox(self, player, prompt, sui.OK_CANCEL_REFRESH, title, options, myHandler, false, false);
sui.listboxUseOtherButton(pid, "Back");
sui.showSUIPage(pid);
setWindowPid(player, pid);
}
else
{
int pid = sui.listbox(self, player, prompt, sui.OK_CANCEL, title, options, myHandler, true, false);
sui.showSUIPage(pid);
setWindowPid(player, pid);
}
}
boolean outOfRange(obj_id self, obj_id player, boolean message)
{
//gods override range checks
if(isGod(player))
return false;
location a = getLocation(self);
location b = getLocation(player);
if (a.cell == b.cell && a.distance(b) < 8.0f)
return false;
if (message)
sendSystemMessageTestingOnly(player, "Out of Range of Character Builder Terminal.");
return true;
}
//===================================================================
// Publish Section //===================================================
void handlePublishOption(obj_id player)
{
refreshMenu ( player, "Select the desired Publish 27 option", "Character Builder Terminal", PUBLISH_OPTIONS, "handlePublishOptions", false);
}
messageHandler handlePublishOptions()
{
if ( (params == null) || (params.isEmpty()) )
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
obj_id pInv = utils.getInventoryContainer(player);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if ( btn == sui.BP_REVERT )
{
refreshMenu (player, "Select the desired character option", "Character Builder Terminal", CHARACTER_BUILDER_OPTIONS, "handleOptionSelect", true);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if ( idx == -1 || idx > PUBLISH_OPTIONS.length)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure player's inventory is valid
if (!isIdValid(pInv))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
//make sure there is room in player's inventory
if (getVolumeFree(pInv) <= 12)
{
sendSystemMessageTestingOnly(player, "Your Inventory has less than 12 slots, please make room and try again.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
switch(idx)
{
case 0:
{
for(int i = 0; i < PUB27_HEAVYPACK.length; i++)
{
if(PUB27_HEAVYPACK[i].startsWith("object"))
{
weapons.createWeapon(PUB27_HEAVYPACK[i], pInv, weapons.VIA_TEMPLATE, WEAPON_SPEED, WEAPON_DAMAGE, WEAPON_EFFECIENCY, WEAPON_ELEMENTAL);
}
else
{
static_item.createNewItemFunction(PUB27_HEAVYPACK[i], pInv);
}
}
//set level88 here
string template = getSkillTemplate(player);
if (!template.startsWith("trader") && !template.startsWith("entertainer"))
{
if (!isGod(player))
respec.autoLevelPlayer(player, 88, false);
}
}
sendSystemMessageTestingOnly(player, "Heavy Weapons Pack Issued!");
break;
case 1:
{
float[] weaponMinDamage = { 239f, 239f, 239f };
float[] weaponMaxDamage = { 477f, 477f, 477f };
float[] weaponAttackSpeed = { .5f, .5f, .5f };
float weaponWoundChance = 1.0f;
float weaponForceCost = 0.0f;
float weaponAttackCost = 1f;
generateGenerationSabers(4, player, pInv, weaponMinDamage, weaponMaxDamage, weaponAttackSpeed, weaponWoundChance,weaponForceCost,weaponAttackCost);
jedi.createColorCrystal(pInv, rand(0, 11));
for (int i = 0; i < 4; i++)
{
static_item.createNewItemFunction("item_krayt_pearl_04_16", pInv);
}
static_item.createNewItemFunction("item_jedi_robe_dark_03_03", pInv);
static_item.createNewItemFunction("item_jedi_robe_light_03_03", pInv);
revokeAllSkills(player);
int currentCombatXp = getExperiencePoints(player, "combat_general");
grantExperiencePoints(player, "combat_general", -currentCombatXp);
setSkillTemplate(player, "force_sensitive_1a");
string templateSkills = dataTableGetString(skill_template.TEMPLATE_TABLE, "force_sensitive_1a", "template");
string[] skillList = split(templateSkills, ',');
setWorkingSkill(player, skillList[0]);
respec.autoLevelPlayer(player, 88, false);
skill.recalcPlayerPools(player, true);
sendSystemMessageTestingOnly(player, "Level 78 Gear Issued!");
}
break;
case 2:
{
for(int i = 0; i < PUB27_TRAPS.length; i++)
{
stealth.createRangerLoot(100, PUB27_TRAPS[i], pInv, 100);
}
sendSystemMessageTestingOnly(player, "Traps Issued!");
}
break;
case 3:
{
setObjVar(player, "mand.acknowledge", true);
sendSystemMessageTestingOnly(player, "Death Watch Bunker Access Granted!");
}
break;
case 4:
for(int i = 0; i < PUB27_CAMOSTUFF.length; i++)
{
static_item.createNewItemFunction(PUB27_CAMOSTUFF[i],pInv);
}
sendSystemMessageTestingOnly(player, "Spy Gear Issued!");
break;
default:
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
refreshMenu (player, "Select the desired option", "Character Builder Terminal", PUBLISH_OPTIONS, "handlePublishOptions", false);
return SCRIPT_CONTINUE;
}
void flagAllHeroicInstances(obj_id player)
{
string[] instanceFlags = dataTableGetStringColumn(instance.INSTANCE_DATATABLE, "key_required");
if ( instanceFlags != null && instanceFlags.length > 0 )
{
for ( int i = 0; i < instanceFlags.length; i++ )
{
string flag = instanceFlags[i];
if ( flag != null && flag.length() > 0 )
{
instance.flagPlayerForInstance(player, flag);
}
}
sendSystemMessageTestingOnly(player, "All Heroic Instances Flagged");
}
else
{
sendSystemMessageTestingOnly(player, "No Instance Flags Found.");
}
}
//---------------------
//Function to reset ship component stats to stats that exist in a table.
//---------------------
obj_id tweakSpaceShipComponent(obj_id objComponent)
{
string strComponentType = space_crafting.getShipComponentStringType(objComponent);
if(strComponentType == null)
{
LOG("tweakSpaceShipComponent", "MAJOR MESSUP! " + objComponent + " is 9 kinds of messed up");
setName(objComponent, "BAD COMPONENT: " + getTemplateName(objComponent) + " : PLEASE REPORT BUG");
return null;
}
if(strComponentType != "")
{
// initialize me
dictionary dctParams = dataTableGetRow("datatables/ship/components/character_builder/frog_" + strComponentType + ".iff", getTemplateName(objComponent));
if(dctParams == null)
{
LOG("tweakSpaceShipComponent", "TEMPLATE OF TYPE " + getTemplateName(objComponent) + " HAS BEEN PASSED TO SETUP SPACE COMPONENT. THIS DOES NOT EXIST IN THE DATATBLE of " + "datatables/ship/components/" + strComponentType + ".iff");
return null;
}
if(strComponentType == "armor")
{
float fltMaximumHitpoints = dctParams.getFloat("fltMaximumHitpoints");
space_crafting.setComponentCurrentHitpoints(objComponent, fltMaximumHitpoints);
space_crafting.setComponentMaximumHitpoints(objComponent, fltMaximumHitpoints);
float fltMaximumArmorHitpoints = dctParams.getFloat("fltMaximumArmorHitpoints");
space_crafting.setComponentCurrentArmorHitpoints(objComponent, fltMaximumHitpoints);
space_crafting.setComponentMaximumArmorHitpoints(objComponent, fltMaximumHitpoints);
float fltMass = dctParams.getFloat("fltMass");
space_crafting.setComponentMass(objComponent, fltMass);
setComponentObjVar(objComponent, "character.builder", 1);
string newName = dctParams.getString("strName");
setName(objComponent, newName);
}
else if(strComponentType == "booster")
{
LOG("tweakSpaceShipComponent", "BOOSTER" + getTemplateName(objComponent));
float fltMaximumEnergy = dctParams.getFloat("fltMaximumEnergy");
space_crafting.setBoosterMaximumEnergy(objComponent, fltMaximumEnergy);
space_crafting.setBoosterCurrentEnergy(objComponent, fltMaximumEnergy);
float fltRechargeRate = dctParams.getFloat("fltRechargeRate");
space_crafting.setBoosterEnergyRechargeRate(objComponent, fltRechargeRate);
float fltConsumptionRate = dctParams.getFloat("fltConsumptionRate");
space_crafting.setBoosterEnergyConsumptionRate(objComponent, fltConsumptionRate);
float fltAcceleration = dctParams.getFloat("fltAcceleration");
space_crafting.setBoosterAcceleration(objComponent, fltAcceleration);
float fltMaxSpeed = dctParams.getFloat("fltMaxSpeed");
space_crafting.setBoosterMaximumSpeed(objComponent, fltMaxSpeed);
float fltMaximumHitpoints = dctParams.getFloat("fltMaximumHitpoints");
space_crafting.setComponentCurrentHitpoints(objComponent, fltMaximumHitpoints);
space_crafting.setComponentMaximumHitpoints(objComponent, fltMaximumHitpoints);
float fltMaximumArmorHitpoints = dctParams.getFloat("fltMaximumArmorHitpoints");
space_crafting.setComponentCurrentArmorHitpoints(objComponent, fltMaximumHitpoints);
space_crafting.setComponentMaximumArmorHitpoints(objComponent, fltMaximumHitpoints);
float fltEnergyMaintenance = dctParams.getFloat("fltEnergyMaintenance");
space_crafting.setComponentEnergyMaintenance(objComponent, fltEnergyMaintenance);
float fltMass = dctParams.getFloat("fltMass");
space_crafting.setComponentMass(objComponent, fltMass);
setComponentObjVar(objComponent, "character.builder", 1);
string newName = dctParams.getString("strName");
setName(objComponent, newName);
}
else if(strComponentType == "cargo_hold")
{
LOG("tweakSpaceShipComponent", "CARGO HOLD" + getTemplateName(objComponent));
int intCargoHoldCapacity = dctParams.getInt("intCargoHoldCapacity");
space_crafting.setCargoHoldMaxCapacity(objComponent, intCargoHoldCapacity);
setComponentObjVar(objComponent, "character.builder", 1);
string newName = dctParams.getString("strName");
setName(objComponent, newName);
}
else if(strComponentType == "droid_interface")
{
LOG("tweakSpaceShipComponent", "DROID INTERFACE" + getTemplateName(objComponent));
float fltCommandSpeed = dctParams.getFloat("fltCommandSpeed");
space_crafting.setDroidInterfaceCommandSpeed(objComponent, fltCommandSpeed);
float fltMaximumHitpoints = dctParams.getFloat("fltMaximumHitpoints");
space_crafting.setComponentCurrentHitpoints(objComponent, fltMaximumHitpoints);
space_crafting.setComponentMaximumHitpoints(objComponent, fltMaximumHitpoints);
float fltMaximumArmorHitpoints = dctParams.getFloat("fltMaximumArmorHitpoints");
space_crafting.setComponentCurrentArmorHitpoints(objComponent, fltMaximumHitpoints);
space_crafting.setComponentMaximumArmorHitpoints(objComponent, fltMaximumHitpoints);
float fltEnergyMaintenance = dctParams.getFloat("fltEnergyMaintenance");
space_crafting.setComponentEnergyMaintenance(objComponent, fltEnergyMaintenance);
float fltMass = dctParams.getFloat("fltMass");
space_crafting.setComponentMass(objComponent, fltMass);
setComponentObjVar(objComponent, "character.builder", 1);
string newName = dctParams.getString("strName");
setName(objComponent, newName);
}
else if(strComponentType == "engine")
{
LOG("tweakSpaceShipComponent", "ENGINE" + getTemplateName(objComponent));
float fltMaxSpeed = dctParams.getFloat("fltMaxSpeed");
space_crafting.setEngineMaximumSpeed(objComponent, fltMaxSpeed);
float fltMaxPitch = dctParams.getFloat("fltMaxPitch");
space_crafting.setEngineMaximumPitch(objComponent, fltMaxPitch);
float fltMaxRoll = dctParams.getFloat("fltMaxRoll");
space_crafting.setEngineMaximumRoll(objComponent, fltMaxRoll);
float fltMaxYaw = dctParams.getFloat("fltMaxYaw");
space_crafting.setEngineMaximumYaw(objComponent, fltMaxYaw);
float fltMaximumHitpoints = dctParams.getFloat("fltMaximumHitpoints");
space_crafting.setComponentCurrentHitpoints(objComponent, fltMaximumHitpoints);
space_crafting.setComponentMaximumHitpoints(objComponent, fltMaximumHitpoints);
float fltMaximumArmorHitpoints = dctParams.getFloat("fltMaximumArmorHitpoints");
space_crafting.setComponentCurrentArmorHitpoints(objComponent, fltMaximumHitpoints);
space_crafting.setComponentMaximumArmorHitpoints(objComponent, fltMaximumHitpoints);
float fltEnergyMaintenance = dctParams.getFloat("fltEnergyMaintenance");
space_crafting.setComponentEnergyMaintenance(objComponent, fltEnergyMaintenance);
float fltMass = dctParams.getFloat("fltMass");
space_crafting.setComponentMass(objComponent, fltMass);
setComponentObjVar(objComponent, "character.builder", 1);
string newName = dctParams.getString("strName");
setName(objComponent, newName);
}
else if(strComponentType == "reactor")
{
LOG("tweakSpaceShipComponent", "REACTOR" + getTemplateName(objComponent));
float fltEnergyGeneration = dctParams.getFloat("fltEnergyGeneration");
space_crafting.setReactorEnergyGeneration(objComponent, fltEnergyGeneration);
float fltMaximumHitpoints = dctParams.getFloat("fltMaximumHitpoints");
space_crafting.setComponentCurrentHitpoints(objComponent, fltMaximumHitpoints);
space_crafting.setComponentMaximumHitpoints(objComponent, fltMaximumHitpoints);
float fltMaximumArmorHitpoints = dctParams.getFloat("fltMaximumArmorHitpoints");
space_crafting.setComponentCurrentArmorHitpoints(objComponent, fltMaximumHitpoints);
space_crafting.setComponentMaximumArmorHitpoints(objComponent, fltMaximumHitpoints);
float fltMass = dctParams.getFloat("fltMass");
space_crafting.setComponentMass(objComponent, fltMass);
setComponentObjVar(objComponent, "character.builder", 1);
string newName = dctParams.getString("strName");
setName(objComponent, newName);
}
else if(strComponentType == "shield")
{
LOG("tweakSpaceShipComponent", "SHIELD" + getTemplateName(objComponent));
float fltShieldHitpointsMaximumFront = dctParams.getFloat("fltShieldHitpointsMaximumFront");
float fltShieldHitpointsMaximumBack = dctParams.getFloat("fltShieldHitpointsMaximumFront");
space_crafting.setShieldGeneratorCurrentFrontHitpoints(objComponent, 0f);
space_crafting.setShieldGeneratorCurrentBackHitpoints(objComponent, 0f); // 0 because it's turned off
space_crafting.setShieldGeneratorMaximumFrontHitpoints(objComponent, fltShieldHitpointsMaximumFront);
space_crafting.setShieldGeneratorMaximumBackHitpoints(objComponent, fltShieldHitpointsMaximumBack);
float fltShieldRechargeRate = dctParams.getFloat("fltShieldRechargeRate");
space_crafting.setShieldGeneratorRechargeRate(objComponent, fltShieldRechargeRate);
float fltMaximumHitpoints = dctParams.getFloat("fltMaximumHitpoints");
space_crafting.setComponentCurrentHitpoints(objComponent, fltMaximumHitpoints);
space_crafting.setComponentMaximumHitpoints(objComponent, fltMaximumHitpoints);
float fltMaximumArmorHitpoints = dctParams.getFloat("fltMaximumArmorHitpoints");
space_crafting.setComponentCurrentArmorHitpoints(objComponent, fltMaximumHitpoints);
space_crafting.setComponentMaximumArmorHitpoints(objComponent, fltMaximumHitpoints);
float fltEnergyMaintenance = dctParams.getFloat("fltEnergyMaintenance");
space_crafting.setComponentEnergyMaintenance(objComponent, fltEnergyMaintenance);
float fltMass = dctParams.getFloat("fltMass");
space_crafting.setComponentMass(objComponent, fltMass);
setComponentObjVar(objComponent, "character.builder", 1);
string newName = dctParams.getString("strName");
setName(objComponent, newName);
}
else if(strComponentType == "weapon")
{
float fltMinDamage = dctParams.getFloat("fltMinDamage");
space_crafting.setWeaponMinimumDamage(objComponent, fltMinDamage);
float fltMaxDamage = dctParams.getFloat("fltMaxDamage");
space_crafting.setWeaponMaximumDamage(objComponent, fltMaxDamage);
float fltShieldEffectiveness = dctParams.getFloat("fltShieldEffectiveness");
space_crafting.setWeaponShieldEffectiveness(objComponent, fltShieldEffectiveness);
float fltArmorEffectiveness = dctParams.getFloat("fltArmorEffectiveness");
space_crafting.setWeaponArmorEffectiveness(objComponent, fltArmorEffectiveness);
float fltEnergyPerShot = dctParams.getFloat("fltEnergyPerShot");
space_crafting.setWeaponEnergyPerShot(objComponent, fltEnergyPerShot);
float fltRefireRate = dctParams.getFloat("fltRefireRate");
space_crafting.setWeaponRefireRate(objComponent, fltRefireRate);
float fltMaximumHitpoints = dctParams.getFloat("fltMaximumHitpoints");
space_crafting.setComponentCurrentHitpoints(objComponent, fltMaximumHitpoints);
space_crafting.setComponentMaximumHitpoints(objComponent, fltMaximumHitpoints);
float fltMaximumArmorHitpoints = dctParams.getFloat("fltMaximumArmorHitpoints");
space_crafting.setComponentCurrentArmorHitpoints(objComponent, fltMaximumHitpoints);
space_crafting.setComponentMaximumArmorHitpoints(objComponent, fltMaximumHitpoints);
float fltEnergyMaintenance = dctParams.getFloat("fltEnergyMaintenance");
space_crafting.setComponentEnergyMaintenance(objComponent, fltEnergyMaintenance);
float fltMass = dctParams.getFloat("fltMass");
space_crafting.setComponentMass(objComponent, fltMass);
setComponentObjVar(objComponent, "character.builder", 1);
string newName = dctParams.getString("strName");
setName(objComponent, newName);
}
else if(strComponentType == "capacitor")
{
LOG("tweakSpaceShipComponent", "CAPACITOR" + getTemplateName(objComponent));
float fltMaxEnergy = dctParams.getFloat("fltMaxEnergy");
space_crafting.setWeaponCapacitorMaximumEnergy(objComponent, fltMaxEnergy);
space_crafting.setWeaponCapacitorCurrentEnergy(objComponent, fltMaxEnergy);
float fltRechargeRate = dctParams.getFloat("fltRechargeRate");
space_crafting.setWeaponCapacitorRechargeRate(objComponent, fltRechargeRate);
float fltMaximumHitpoints = dctParams.getFloat("fltMaximumHitpoints");
space_crafting.setComponentCurrentHitpoints(objComponent, fltMaximumHitpoints);
space_crafting.setComponentMaximumHitpoints(objComponent, fltMaximumHitpoints);
float fltMaximumArmorHitpoints = dctParams.getFloat("fltMaximumArmorHitpoints");
space_crafting.setComponentCurrentArmorHitpoints(objComponent, fltMaximumHitpoints);
space_crafting.setComponentMaximumArmorHitpoints(objComponent, fltMaximumHitpoints);
float fltEnergyMaintenance = dctParams.getFloat("fltEnergyMaintenance");
space_crafting.setComponentEnergyMaintenance(objComponent, fltEnergyMaintenance);
float fltMass = dctParams.getFloat("fltMass");
space_crafting.setComponentMass(objComponent, fltMass);
setComponentObjVar(objComponent, "character.builder", 1);
string newName = dctParams.getString("strName");
setName(objComponent, newName);
}
return objComponent;
}
else
{
LOG("tweakSpaceShipComponent", "MAJOR MESSUP! " + objComponent + " could not be modified as it was not valid");
return null;
}
}
boolean setComponentObjVar(obj_id objComponent, string objVarName, float fltValue)
{
return setObjVar(objComponent, objVarName, fltValue);
}
boolean issueShipChassis(obj_id player, int idx)
{
if (!isIdValid(player))
return false;
LOG("issueShipChassis", "idx = " + idx);
if (idx < 0)
return false;
LOG("issueShipChassis", "issueShipChassis function");
//get ship type
string type = dataTableGetString(SHIP_CHASSIS_TBL, idx, "shipType");
//get the skill needed
string skill = dataTableGetString(SHIP_CHASSIS_TBL, type, "skill");
//get Mass
float mass = dataTableGetFloat(SHIP_CHASSIS_TBL, idx, "fltMass");
//get HP
float hp = dataTableGetFloat(SHIP_CHASSIS_TBL, idx, "fltHitPoints");
LOG("issueShipChassis", "SKILL: " + skill);
if (type.equals("firespray") || type.equals("yt2400"))
{
if (hasSkill(player, "pilot_rebel_navy_master") || !hasSkill(player, "pilot_imperial_navy_master") || !hasSkill(player, "pilot_neutral_master"))
{
giveShipChassis(player, type, mass, hp);
return true;
}
sendSystemMessageTestingOnly(player, "You cannot use the Firespray due to certification requirements. Skill Required is: " + skill);
return false;
}
if (!hasSkill(player, skill))
{
sendSystemMessageTestingOnly(player, "You cannot use this ship due to certification requirements. Skill Required is: " + skill);
return false;
}
giveShipChassis(player, type, mass, hp);
return true;
}
boolean giveShipChassis(obj_id player, string type, float mass, float hp)
{
if (!isIdValid(player))
return false;
if (type == null || type.equals(""))
return false;
if (mass < 0 || hp < 0)
return false;
obj_id pInv = utils.getInventoryContainer(player);
obj_id pcd = space_crafting.createDeedFromBlueprints(player, type, pInv, mass, hp);
if (!isIdValid(pcd))
{
//UH OH!
sendSystemMessageTestingOnly(player, "The ship was not created due to error.");
LOG("issueShipChassis", "CHASSIS" + type + " IS BAD");
return false;
}
sendSystemMessageTestingOnly(player, "Chassis Issued.");
return true;
}
void handleDraftSchematicsOption(obj_id player)
{
refreshMenu(player, "Select the desired crafting profession", "Character Builder Terminal", CRAFTING_PROFESSIONS, "handleDraftSchematicsList", false);
}
messageHandler handleDraftSchematicsList()
{
if(params == null || params.isEmpty())
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if(btn == sui.BP_REVERT)
{
startCharacterBuilder(player);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
if(idx == -1 || idx > CRAFTING_SKILL_TEMPLATES.length)
{
cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player) || !isGod(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
// Get skills
string[] skillList = skill_template.getSkillTemplateSkillsByTemplateName(CRAFTING_SKILL_TEMPLATES[idx]);
// Get schematic groups from skills
string[] schematicGroups = craftinglib.getDraftSchematicGroupsFromSkills(skillList);
// Get schematics from schematic groups
string[] schematics = craftinglib.getDraftSchematicsFromGroups(schematicGroups);
// Get schematic names from templates (we can't do this currently, but it would be nice)
// Sort schematics
Arrays.sort(schematics);
utils.setScriptVar(player, "character_builder.schematicsList", schematics);
float craftPercentage = 100.0f;
if(!utils.hasScriptVar(player, "character_builder.qualityPercentage"))
{
utils.setScriptVar(player, "character_builder.qualityPercentage", 100.0f);
}
else
{
craftPercentage = utils.getFloatScriptVar(player, "character_builder.qualityPercentage");
}
if(utils.hasScriptVar(player, "character_builder.qualityPercentagePID"))
{
int oldpid = utils.getIntScriptVar(player, "character_builder.qualityPercentagePID");
sui.closeSUI(player, oldpid);
}
// List the schematics
refreshMenu(player, "Select a profession draft schematic. Schematics that require items in addition to resources may not be crafted properly (armor, weapons, droids). Instead, use this to select the items required for their schematic and then use the crafting tool.", "Character Builder Terminal", schematics, "handleSchematicSelect", false);
int pid = sui.inputbox(self, player, "A high crafting percentage can result in a crafted item that players cannot create legally.", sui.OK_CANCEL, "Crafting Percentage", sui.INPUT_NORMAL, null, "handleCraftQualityPercentage", null);
utils.setScriptVar(player, "character_builder.qualityPercentagePID", pid);
return SCRIPT_CONTINUE;
}
messageHandler handleCraftQualityPercentage()
{
obj_id player = sui.getPlayerId(params);
string stringPercentage = sui.getInputBoxText(params);
int btn = sui.getIntButtonPressed(params);
if(btn == sui.BP_CANCEL)
{
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player) || !isGod(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
return SCRIPT_OVERRIDE;
}
float floatPercentage = utils.stringToFloat(stringPercentage);
if(floatPercentage > 100.0f || floatPercentage < 0.0f)
{
sendSystemMessageTestingOnly(player, "Bad Crafting Percentage.");
return SCRIPT_OVERRIDE;
}
utils.setScriptVar(player, "character_builder.qualityPercentage", floatPercentage);
return SCRIPT_CONTINUE;
}
messageHandler handleSchematicSelect()
{
if(params == null || params.isEmpty())
{
//cleanScriptVars(player);
return SCRIPT_CONTINUE;
}
obj_id player = sui.getPlayerId(params);
int btn = sui.getIntButtonPressed(params);
int idx = sui.getListboxSelectedRow(params);
if(btn == sui.BP_REVERT)
{
handleDraftSchematicsOption(player);
return SCRIPT_CONTINUE;
}
if(btn == sui.BP_CANCEL)
{
cleanScriptVars(player);
closeOldWindow(player);
return SCRIPT_CONTINUE;
}
//make sure player is Valid
if(!isIdValid(player) || !isGod(player))
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
string[] schematics = utils.getStringArrayScriptVar(player, "character_builder.schematicsList");
if(schematics == null || schematics.length <= 0)
{
sendSystemMessageTestingOnly(player, "The system is unable to complete the transaction.");
cleanScriptVars(player);
return SCRIPT_OVERRIDE;
}
float craftPercentage = 100.0f;
if(utils.hasScriptVar(player, "character_builder.qualityPercentage"))
{
craftPercentage = utils.getFloatScriptVar(player, "character_builder.qualityPercentage");
}
obj_id container = utils.getInventoryContainer(player);
obj_id craftedItem = makeCraftedItem(schematics[idx], craftPercentage, container);
if(isIdValid(craftedItem))
{
sendSystemMessageTestingOnly(player, "Making: " + getName(craftedItem));
}
else
{
sendSystemMessageTestingOnly(player, "Failed to make: " + schematics[idx]);
}
if(utils.hasScriptVar(player, "character_builder.qualityPercentagePID"))
{
int oldpid = utils.getIntScriptVar(player, "character_builder.qualityPercentagePID");
sui.closeSUI(player, oldpid);
}
// List the schematics
refreshMenu(player, "Select the draft schematic. Schematics that require items in addition to resources may not be crafted properly (armor, weapons, droids). Instead, use this to select the items required for their schematic and then use the crafting tool.", "Character Builder Terminal", schematics, "handleSchematicSelect", false);
int pid = sui.inputbox(self, player, "A high crafting percentage can result in a crafted item that players cannot create legally.", sui.OK_CANCEL, "A high crafting percentage ", sui.INPUT_NORMAL, null, "handleCraftQualityPercentage", null);
utils.setScriptVar(player, "character_builder.qualityPercentagePID", pid);
return SCRIPT_CONTINUE;
}
void setSocketsUp(obj_id item)
{
//items can only have 1 socket!
setSkillModSockets(item, 1);
setCondition(item, CONDITION_MAGIC_ITEM);
}
void createSnowFlakeFrogWeapon(obj_id player, string weaponName)
{
obj_id pInv = utils.getInventoryContainer(player);
obj_id weaponObject = weapons.createWeapon(weaponName, pInv, weapons.VIA_TEMPLATE, WEAPON_SPEED, WEAPON_DAMAGE, WEAPON_EFFECIENCY, WEAPON_ELEMENTAL);
if(isIdValid(weaponObject))
{
setSocketsUp(weaponObject);
sendSystemMessageTestingOnly(player, "Weapon Issued!");
}
}