From 43d0fcb9f9d9ebfc0353cdcb90247b36ae5dc4cd Mon Sep 17 00:00:00 2001 From: Olivier Gagnon Date: Wed, 16 Jun 2021 02:26:10 -0400 Subject: [PATCH] little cleanup --- src/Gang.jsx | 27 ---- src/Gang/GangMember.ts | 12 +- src/Gang/GangMemberUpgrade.ts | 18 +++ src/NetscriptFunctions.js | 6 +- src/data/gangmembertasks.ts | 284 --------------------------------- src/data/gangmemberupgrades.ts | 209 ------------------------ 6 files changed, 28 insertions(+), 528 deletions(-) delete mode 100644 src/data/gangmembertasks.ts delete mode 100644 src/data/gangmemberupgrades.ts 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", - }, -];