diff --git a/src/Gang.jsx b/src/Gang.jsx
index 22daf0122..a4da530ed 100644
--- a/src/Gang.jsx
+++ b/src/Gang.jsx
@@ -23,11 +23,9 @@ import { getRandomInt } from "../utils/helpers/getRandomInt";
import { createElement } from "../utils/uiHelpers/createElement";
import { removeElement } from "../utils/uiHelpers/removeElement";
-import { GangMemberUpgrade } from "./Gang/GangMemberUpgrade";
import { GangMemberUpgrades } from "./Gang/GangMemberUpgrades";
import { GangConstants } from "./Gang/data/Constants";
import { GangMemberTasks } from "./Gang/GangMemberTasks";
-import { GangMemberTask } from "./Gang/GangMemberTask";
import { AllGangs } from "./Gang/AllGangs";
import { Root } from "./Gang/ui/Root";
@@ -417,36 +415,11 @@ Gang.prototype.getAllTaskNames = function() {
return tasks;
}
-Gang.prototype.getAllUpgradeNames = function() {
- return Object.keys(GangMemberUpgrades);
-}
-
Gang.prototype.getUpgradeCost = function(upgName) {
if (GangMemberUpgrades[upgName] == null) { return Infinity; }
return GangMemberUpgrades[upgName].getCost(this);
}
-// Returns a player-friendly string stating the type of the specified upgrade
-Gang.prototype.getUpgradeType = function(upgName) {
- const upg = GangMemberUpgrades[upgName];
- if (upg == null) { return ""; }
-
- switch (upg.type) {
- case "w":
- return "Weapon";
- case "a":
- return "Armor";
- case "v":
- return "Vehicle";
- case "r":
- return "Rootkit";
- case "g":
- return "Augmentation";
- default:
- return "";
- }
-}
-
Gang.prototype.toJSON = function() {
return Generic_toJSON("Gang", this);
}
diff --git a/src/Gang/GangMember.ts b/src/Gang/GangMember.ts
index f330213b9..84a06914c 100644
--- a/src/Gang/GangMember.ts
+++ b/src/Gang/GangMember.ts
@@ -48,7 +48,7 @@ export class GangMember {
this.name = name;
}
- calculateSkill(exp: number, mult: number = 1): number {
+ calculateSkill(exp: number, mult = 1): number {
return Math.max(Math.floor(mult * (32 * Math.log(exp + 534.5) - 200)), 1);
}
@@ -95,7 +95,7 @@ export class GangMember {
calculateRespectGain(gang: any): number {
const task = this.getTask();
if (task.baseRespect === 0) return 0;
- var statWeight = (task.hackWeight/100) * this.hack +
+ let statWeight = (task.hackWeight/100) * this.hack +
(task.strWeight/100) * this.str +
(task.defWeight/100) * this.def +
(task.dexWeight/100) * this.dex +
@@ -150,7 +150,7 @@ export class GangMember {
return 5 * task.baseMoney * statWeight * territoryMult * respectMult;
}
- gainExperience(numCycles: number = 1): void {
+ gainExperience(numCycles = 1): void {
const task = this.getTask();
if (task === GangMemberTasks["Unassigned"]) return;
const difficultyMult = Math.pow(task.difficulty, 0.9);
@@ -164,7 +164,7 @@ export class GangMember {
this.cha_exp += (task.chaWeight / weightDivisor) * difficultyPerCycles;
}
- recordEarnedRespect(numCycles: number = 1, gang: any): void {
+ recordEarnedRespect(numCycles = 1, gang: any): void {
this.earnedRespect += (this.calculateRespectGain(gang) * numCycles);
}
@@ -179,7 +179,7 @@ export class GangMember {
let agi = 1;
let cha = 1;
for (let i = 0; i < this.upgrades.length; ++i) {
- let upg = GangMemberUpgrades[this.upgrades[i]];
+ const upg = GangMemberUpgrades[this.upgrades[i]];
if (upg.mults.hack != null) { hack *= upg.mults.hack; }
if (upg.mults.str != null) { str *= upg.mults.str; }
if (upg.mults.def != null) { def *= upg.mults.def; }
@@ -238,7 +238,7 @@ export class GangMember {
this.agi_mult = 1;
this.cha_mult = 1;
for (let i = 0; i < this.augmentations.length; ++i) {
- let aug = GangMemberUpgrades[this.augmentations[i]];
+ const aug = GangMemberUpgrades[this.augmentations[i]];
aug.apply(this);
}
diff --git a/src/Gang/GangMemberUpgrade.ts b/src/Gang/GangMemberUpgrade.ts
index fa20c7f6e..29fc90af6 100644
--- a/src/Gang/GangMemberUpgrade.ts
+++ b/src/Gang/GangMemberUpgrade.ts
@@ -53,4 +53,22 @@ export class GangMemberUpgrade {
if (this.mults.cha != null) { member.cha_mult *= this.mults.cha; }
if (this.mults.hack != null) { member.hack_mult *= this.mults.hack; }
}
+
+ // User friendly version of type.
+ getType(): string {
+ switch (this.type) {
+ case "w":
+ return "Weapon";
+ case "a":
+ return "Armor";
+ case "v":
+ return "Vehicle";
+ case "r":
+ return "Rootkit";
+ case "g":
+ return "Augmentation";
+ default:
+ return "";
+ }
+ }
}
\ No newline at end of file
diff --git a/src/NetscriptFunctions.js b/src/NetscriptFunctions.js
index 4af133c69..e20b9f191 100644
--- a/src/NetscriptFunctions.js
+++ b/src/NetscriptFunctions.js
@@ -3741,7 +3741,7 @@ function NetscriptFunctions(workerScript) {
getEquipmentNames: function() {
updateDynamicRam("getEquipmentNames", getRamCost("gang", "getEquipmentNames"));
checkGangApiAccess("getEquipmentNames");
- return Player.gang.getAllUpgradeNames();
+ return Object.keys(GangMemberUpgrades);
},
getEquipmentCost: function(equipName) {
updateDynamicRam("getEquipmentCost", getRamCost("gang", "getEquipmentCost"));
@@ -3751,7 +3751,9 @@ function NetscriptFunctions(workerScript) {
getEquipmentType: function(equipName) {
updateDynamicRam("getEquipmentType", getRamCost("gang", "getEquipmentType"));
checkGangApiAccess("getEquipmentType");
- return Player.gang.getUpgradeType(equipName);
+ const upg = GangMemberUpgrades[equipName];
+ if (upg == null) return "";
+ return upg.getType();
},
getEquipmentStats: function(equipName) {
updateDynamicRam("getEquipmentStats", getRamCost("gang", "getEquipmentStats"));
diff --git a/src/data/gangmembertasks.ts b/src/data/gangmembertasks.ts
deleted file mode 100644
index 9aefa0059..000000000
--- a/src/data/gangmembertasks.ts
+++ /dev/null
@@ -1,284 +0,0 @@
-/* tslint:disable:max-line-length */
-
-/**
- * Defines the parameters that can be used to initialize and describe a GangMemberTask
- * (defined in Gang.js)
- */
-export interface IGangMemberTaskMetadata {
- /**
- * Description of the task
- */
- desc: string;
-
- /**
- * Whether or not this task is meant for Combat-type gangs
- */
- isCombat: boolean;
-
- /**
- * Whether or not this task is for Hacking-type gangs
- */
- isHacking: boolean;
-
- /**
- * Name of the task
- */
- name: string;
-
- /**
- * An object containing weighting parameters for the task. These parameters are used for
- * various calculations (respect gain, wanted gain, etc.)
- */
- params?: any;
-}
-
-/**
- * Array of metadata for all Gang Member tasks. Used to construct the global GangMemberTask
- * objects in Gang.js
- */
-export const gangMemberTasksMetadata: IGangMemberTaskMetadata[] = [
- {
- desc: "This gang member is currently idle",
- isCombat: true,
- isHacking: true,
- name: "Unassigned",
- params: {hackWeight: 100}, // This is just to get by the weight check in the GangMemberTask constructor
- },
- {
- desc: "Assign this gang member to create and distribute ransomware
Earns money - Slightly increases respect - Slightly increases wanted level",
- isCombat: false,
- isHacking: true,
- name: "Ransomware",
- params: {baseRespect: 0.00005, baseWanted: 0.0001, baseMoney: 1, hackWeight: 100, difficulty: 1},
- },
- {
- desc: "Assign this gang member to attempt phishing scams and attacks
Earns money - Slightly increases respect - Slightly increases wanted level",
- isCombat: false,
- isHacking: true,
- name: "Phishing",
- params: {baseRespect: 0.00008, baseWanted: 0.003, baseMoney: 2.5, hackWeight: 85, chaWeight: 15, difficulty: 3.5},
- },
- {
- desc: "Assign this gang member to attempt identity theft
Earns money - Increases respect - Increases wanted level",
- isCombat: false,
- isHacking: true,
- name: "Identity Theft",
- params: {baseRespect: 0.0001, baseWanted: 0.075, baseMoney: 6, hackWeight: 80, chaWeight: 20, difficulty: 5},
- },
- {
- desc: "Assign this gang member to carry out DDoS attacks
Increases respect - Increases wanted level",
- isCombat: false,
- isHacking: true,
- name: "DDoS Attacks",
- params: {baseRespect: 0.0004, baseWanted: 0.2, hackWeight: 100, difficulty: 8},
- },
- {
- desc: "Assign this gang member to create and distribute malicious viruses
Increases respect - Increases wanted level",
- isCombat: false,
- isHacking: true,
- name: "Plant Virus",
- params: {baseRespect: 0.0006, baseWanted: 0.4, hackWeight: 100, difficulty: 12},
- },
- {
- desc: "Assign this gang member to commit financial fraud and digital counterfeiting
Earns money - Slightly increases respect - Slightly increases wanted level",
- isCombat: false,
- isHacking: true,
- name: "Fraud & Counterfeiting",
- params: {baseRespect: 0.0004, baseWanted: 0.3, baseMoney: 15, hackWeight: 80, chaWeight: 20, difficulty: 20},
- },
- {
- desc: "Assign this gang member to launder money
Earns money - Increases respect - Increases wanted level",
- isCombat: false,
- isHacking: true,
- name: "Money Laundering",
- params: {baseRespect: 0.001, baseWanted: 1.25, baseMoney: 120, hackWeight: 75, chaWeight: 25, difficulty: 25},
- },
- {
- desc: "Assign this gang member to commit acts of cyberterrorism
Greatly increases respect - Greatly increases wanted level",
- isCombat: false,
- isHacking: true,
- name: "Cyberterrorism",
- params: {baseRespect: 0.01, baseWanted: 6, hackWeight: 80, chaWeight: 20, difficulty: 36},
- },
- {
- desc: "Assign this gang member to be an ethical hacker for corporations
Earns money - Lowers wanted level",
- isCombat: false,
- isHacking: true,
- name: "Ethical Hacking",
- params: {baseWanted: -0.001, baseMoney: 1, hackWeight: 90, chaWeight: 10, difficulty: 1},
- },
- {
- desc: "Assign this gang member to mug random people on the streets
Earns money - Slightly increases respect - Very slightly increases wanted level",
- isCombat: true,
- isHacking: false,
- name: "Mug People",
- params: {
- baseRespect: 0.00005, baseWanted: 0.00005, baseMoney: 1.2,
- strWeight: 25, defWeight: 25, dexWeight: 25, agiWeight: 10, chaWeight: 15,
- difficulty: 1,
- },
- },
- {
- desc: "Assign this gang member to sell drugs
Earns money - Slightly increases respect - Slightly increases wanted level - Scales slightly with territory",
- isCombat: true,
- isHacking: false,
- name: "Deal Drugs",
- params: {
- baseRespect: 0.00006, baseWanted: 0.002, baseMoney: 5,
- agiWeight: 20, dexWeight: 20, chaWeight: 60,
- difficulty: 3.5,
- territory: {
- money: 1.2,
- respect: 1,
- wanted: 1.15,
- },
- },
- },
- {
- desc: "Assign this gang member to extort civilians in your territory
Earns money - Slightly increases respect - Increases wanted - Scales heavily with territory",
- isCombat: true,
- isHacking: false,
- name: "Strongarm Civilians",
- params: {
- baseRespect: 0.00004, baseWanted: 0.02, baseMoney: 2.5,
- hackWeight: 10, strWeight: 25, defWeight: 25, dexWeight: 20, agiWeight: 10, chaWeight: 10,
- difficulty: 5,
- territory: {
- money: 1.6,
- respect: 1.1,
- wanted: 1.5,
- },
- },
- },
- {
- desc: "Assign this gang member to run cons
Earns money - Increases respect - Increases wanted level",
- isCombat: true,
- isHacking: false,
- name: "Run a Con",
- params: {
- baseRespect: 0.00012, baseWanted: 0.05, baseMoney: 15,
- strWeight: 5, defWeight: 5, agiWeight: 25, dexWeight: 25, chaWeight: 40,
- difficulty: 14,
- },
- },
- {
- desc: "Assign this gang member to commit armed robbery on stores, banks and armored cars
Earns money - Increases respect - Increases wanted level",
- isCombat: true,
- isHacking: false,
- name: "Armed Robbery",
- params: {
- baseRespect: 0.00014, baseWanted: 0.1, baseMoney: 38,
- hackWeight: 20, strWeight: 15, defWeight: 15, agiWeight: 10, dexWeight: 20, chaWeight: 20,
- difficulty: 20,
- },
- },
- {
- desc: "Assign this gang member to traffick illegal arms
Earns money - Increases respect - Increases wanted level - Scales heavily with territory",
- isCombat: true,
- isHacking: false,
- name: "Traffick Illegal Arms",
- params: {
- baseRespect: 0.0002, baseWanted: 0.24, baseMoney: 58,
- hackWeight: 15, strWeight: 20, defWeight: 20, dexWeight: 20, chaWeight: 25,
- difficulty: 32,
- territory: {
- money: 1.4,
- respect: 1.3,
- wanted: 1.25,
- },
- },
- },
- {
- desc: "Assign this gang member to threaten and black mail high-profile targets
Earns money - Slightly increases respect - Slightly increases wanted level",
- isCombat: true,
- isHacking: false,
- name: "Threaten & Blackmail",
- params: {
- baseRespect: 0.0002, baseWanted: 0.125, baseMoney: 24,
- hackWeight: 25, strWeight: 25, dexWeight: 25, chaWeight: 25,
- difficulty: 28,
- },
- },
- {
- desc: "Assign this gang member to engage in human trafficking operations
Earns money - Increases respect - Increases wanted level - Scales heavily with territory",
- isCombat: true,
- isHacking: false,
- name: "Human Trafficking",
- params: {
- baseRespect: 0.004, baseWanted: 1.25, baseMoney: 120,
- hackWeight: 30, strWeight: 5, defWeight: 5, dexWeight: 30, chaWeight: 30,
- difficulty: 36,
- territory: {
- money: 1.5,
- respect: 1.5,
- wanted: 1.6,
- },
- },
- },
- {
- desc: "Assign this gang member to commit acts of terrorism
Greatly increases respect - Greatly increases wanted level - Scales heavily with territory",
- isCombat: true,
- isHacking: false,
- name: "Terrorism",
- params: {
- baseRespect: 0.01, baseWanted: 6,
- hackWeight: 20, strWeight: 20, defWeight: 20, dexWeight: 20, chaWeight: 20,
- difficulty: 36,
- territory: {
- money: 1,
- respect: 2,
- wanted: 2,
- },
- },
- },
- {
- desc: "Assign this gang member to be a vigilante and protect the city from criminals
Decreases wanted level",
- isCombat: true,
- isHacking: true,
- name: "Vigilante Justice",
- params: {
- baseWanted: -0.001,
- hackWeight: 20, strWeight: 20, defWeight: 20, dexWeight: 20, agiWeight: 20,
- difficulty: 1,
- territory: {
- money: 1,
- respect: 1,
- wanted: 0.9, // Gets harder with more territory
- },
- },
- },
- {
- desc: "Assign this gang member to increase their combat stats (str, def, dex, agi)",
- isCombat: true,
- isHacking: true,
- name: "Train Combat",
- params: {
- strWeight: 25, defWeight: 25, dexWeight: 25, agiWeight: 25,
- difficulty: 5,
- },
- },
- {
- desc: "Assign this gang member to train their hacking skills",
- isCombat: true,
- isHacking: true,
- name: "Train Hacking",
- params: {hackWeight: 100, difficulty: 8},
- },
- {
- desc: "Assign this gang member to train their charisma",
- isCombat: true,
- isHacking: true,
- name: "Train Charisma",
- params: {chaWeight: 100, difficulty: 8},
- },
- {
- desc: "Assign this gang member to engage in territorial warfare with other gangs. Members assigned to this task will help increase your gang's territory and will defend your territory from being taken.",
- isCombat: true,
- isHacking: true,
- name: "Territory Warfare",
- params: {
- hackWeight: 15, strWeight: 20, defWeight: 20, dexWeight: 20, agiWeight: 20, chaWeight: 5,
- difficulty: 5,
- },
- },
-];
diff --git a/src/data/gangmemberupgrades.ts b/src/data/gangmemberupgrades.ts
deleted file mode 100644
index 7b06ee20f..000000000
--- a/src/data/gangmemberupgrades.ts
+++ /dev/null
@@ -1,209 +0,0 @@
-/**
- * Defines the parameters that can be used to initialize and describe a GangMemberUpgrade
- * (defined in Gang.js)
- */
-export interface IGangMemberUpgradeMetadata {
- cost: number;
- mults: any;
- name: string;
- upgType: string;
-}
-
-/**
- * Array of metadata for all Gang Member upgrades. Used to construct the global GangMemberUpgrade
- * objects in Gang.js
- */
-export const gangMemberUpgradesMetadata: IGangMemberUpgradeMetadata[] = [
- {
- cost: 1e6,
- mults: {str: 1.04, def: 1.04},
- name: "Baseball Bat",
- upgType: "w",
- },
- {
- cost: 12e6,
- mults: {str: 1.08, def: 1.08, dex: 1.08},
- name: "Katana",
- upgType: "w",
- },
- {
- cost: 25e6,
- mults: {str: 1.1, def: 1.1, dex: 1.1, agi: 1.1},
- name: "Glock 18C",
- upgType: "w",
- },
- {
- cost: 50e6,
- mults: {str: 1.12, def: 1.1, agi: 1.1},
- name: "P90C",
- upgType: "w",
- },
- {
- cost: 60e6,
- mults: {str: 1.2, def: 1.15},
- name: "Steyr AUG",
- upgType: "w",
- },
- {
- cost: 100e6,
- mults: {str: 1.25, def: 1.2},
- name: "AK-47",
- upgType: "w",
- },
- {
- cost: 150e6,
- mults: {str: 1.3, def: 1.25},
- name: "M15A10 Assault Rifle",
- upgType: "w",
- },
- {
- cost: 225e6,
- mults: {str: 1.3, dex: 1.25, agi: 1.3},
- name: "AWM Sniper Rifle",
- upgType: "w",
- },
- {
- cost: 2e6,
- mults: {def: 1.04},
- name: "Bulletproof Vest",
- upgType: "a",
- },
- {
- cost: 5e6,
- mults: {def: 1.08},
- name: "Full Body Armor",
- upgType: "a",
- },
- {
- cost: 25e6,
- mults: {def: 1.15, agi: 1.15},
- name: "Liquid Body Armor",
- upgType: "a",
- },
- {
- cost: 40e6,
- mults: {def: 1.2},
- name: "Graphene Plating Armor",
- upgType: "a",
- },
- {
- cost: 3e6,
- mults: {agi: 1.04, cha: 1.04},
- name: "Ford Flex V20",
- upgType: "v",
- },
- {
- cost: 9e6,
- mults: {agi: 1.08, cha: 1.08},
- name: "ATX1070 Superbike",
- upgType: "v",
- },
- {
- cost: 18e6,
- mults: {agi: 1.12, cha: 1.12},
- name: "Mercedes-Benz S9001",
- upgType: "v",
- },
- {
- cost: 30e6,
- mults: {agi: 1.16, cha: 1.16},
- name: "White Ferrari",
- upgType: "v",
- },
- {
- cost: 5e6,
- mults: {hack: 1.05},
- name: "NUKE Rootkit",
- upgType: "r",
- },
- {
- cost: 25e6,
- mults: {hack: 1.1},
- name: "Soulstealer Rootkit",
- upgType: "r",
- },
- {
- cost: 75e6,
- mults: {hack: 1.15},
- name: "Demon Rootkit",
- upgType: "r",
- },
- {
- cost: 40e6,
- mults: {hack: 1.12},
- name: "Hmap Node",
- upgType: "r",
- },
- {
- cost: 75e6,
- mults: {hack: 1.15},
- name: "Jack the Ripper",
- upgType: "r",
- },
- {
- cost: 10e9,
- mults: {str: 1.3, dex: 1.3},
- name: "Bionic Arms",
- upgType: "g",
- },
- {
- cost: 10e9,
- mults: {agi: 1.6},
- name: "Bionic Legs",
- upgType: "g",
- },
- {
- cost: 15e9,
- mults: {str: 1.15, def: 1.15, dex: 1.15, agi: 1.15},
- name: "Bionic Spine",
- upgType: "g",
- },
- {
- cost: 20e9,
- mults: {str: 1.4, def: 1.4},
- name: "BrachiBlades",
- upgType: "g",
- },
- {
- cost: 12e9,
- mults: {str: 1.2, def: 1.2},
- name: "Nanofiber Weave",
- upgType: "g",
- },
- {
- cost: 25e9,
- mults: {str: 1.5, agi: 1.5},
- name: "Synthetic Heart",
- upgType: "g",
- },
- {
- cost: 15e9,
- mults: {str: 1.3, def: 1.3},
- name: "Synfibril Muscle",
- upgType: "g",
- },
- {
- cost: 5e9,
- mults: {hack: 1.05},
- name: "BitWire",
- upgType: "g",
- },
- {
- cost: 10e9,
- mults: {hack: 1.15},
- name: "Neuralstimulator",
- upgType: "g",
- },
- {
- cost: 7.5e9,
- mults: {hack: 1.1},
- name: "DataJack",
- upgType: "g",
- },
- {
- cost: 50e9,
- mults: {str: 1.7, def: 1.7},
- name: "Graphene Bone Lacings",
- upgType: "g",
- },
-];