From 619db14622899b4bb628ad4d72fd71e7dcefb619 Mon Sep 17 00:00:00 2001 From: Olivier Gagnon Date: Sun, 7 Mar 2021 22:12:02 -0500 Subject: [PATCH] Added gang.getTaskStats which returns the stats of a gang task --- doc/source/netscript/gangapi/getTaskStats.rst | 33 +++++++++++++++++++ src/Gang.js | 2 +- src/Netscript/RamCostGenerator.ts | 1 + src/NetscriptFunctions.js | 17 +++++++++- src/ScriptEditor/AceNetscriptMode.js | 2 +- 5 files changed, 52 insertions(+), 3 deletions(-) create mode 100644 doc/source/netscript/gangapi/getTaskStats.rst diff --git a/doc/source/netscript/gangapi/getTaskStats.rst b/doc/source/netscript/gangapi/getTaskStats.rst new file mode 100644 index 000000000..067fda2d8 --- /dev/null +++ b/doc/source/netscript/gangapi/getTaskStats.rst @@ -0,0 +1,33 @@ +getTaskStats() Netscript Function +====================================== + +.. js:function:: getTaskStats() + + :RAM cost: 1 GB + + Get the stats of a gang member stats. This is typically used to evaluate + which action should be executed next. + + { + name: Terrorism, + desc: "Assign this gang member to commit acts of terrorism + + Greatly increases respect - Greatly increases wanted level - Scales heavily with territory", + isHacking: false, + isCombat: true, + baseRespect: 0.01, + baseWanted: 6, + baseMoney: 0, + hackWeight: 20, + strWeight: 20, + defWeight: 20, + dexWeight: 20, + agiWeight: 0, + chaWeight: 20, + difficulty: 36, + territory: { + money: 1, + respect: 2, + wanted: 2 + } + } diff --git a/src/Gang.js b/src/Gang.js index df4ed866d..b0fa2c82b 100644 --- a/src/Gang.js +++ b/src/Gang.js @@ -912,7 +912,7 @@ GangMemberTask.fromJSON = function(value) { Reviver.constructors.GangMemberTask = GangMemberTask; -const GangMemberTasks = {}; +export const GangMemberTasks = {}; function addGangMemberTask(name, desc, isHacking, isCombat, params) { GangMemberTasks[name] = new GangMemberTask(name, desc, isHacking, isCombat, params); diff --git a/src/Netscript/RamCostGenerator.ts b/src/Netscript/RamCostGenerator.ts index 331d1a15a..394ad35ea 100644 --- a/src/Netscript/RamCostGenerator.ts +++ b/src/Netscript/RamCostGenerator.ts @@ -216,6 +216,7 @@ export const RamCosts: IMap = { canRecruitMember: () => RamCostConstants.ScriptGangApiBaseRamCost / 4, recruitMember: () => RamCostConstants.ScriptGangApiBaseRamCost / 2, getTaskNames: () => RamCostConstants.ScriptGangApiBaseRamCost / 4, + getTaskStats: () => RamCostConstants.ScriptGangApiBaseRamCost / 4, setMemberTask: () => RamCostConstants.ScriptGangApiBaseRamCost / 2, getEquipmentNames: () => RamCostConstants.ScriptGangApiBaseRamCost / 4, getEquipmentCost: () => RamCostConstants.ScriptGangApiBaseRamCost / 2, diff --git a/src/NetscriptFunctions.js b/src/NetscriptFunctions.js index 221c33f61..c6a5e9ff7 100644 --- a/src/NetscriptFunctions.js +++ b/src/NetscriptFunctions.js @@ -29,7 +29,11 @@ import { calculateGrowTime, calculateWeakenTime } from "./Hacking"; -import { AllGangs, GangMemberUpgrades } from "./Gang"; +import { + AllGangs, + GangMemberUpgrades, + GangMemberTasks +} from "./Gang"; import { Faction } from "./Faction/Faction"; import { Factions, factionExists } from "./Faction/Factions"; import { joinFaction, purchaseAugmentation } from "./Faction/FactionHelpers"; @@ -3712,6 +3716,17 @@ function NetscriptFunctions(workerScript) { throw makeRuntimeRejectMsg(workerScript, nsGang.unknownGangApiExceptionMessage("setMemberTask", e)); } }, + getTaskStats: function(taskName) { + updateDynamicRam("getTaskStats", getRamCost("gang", "getTaskStats")); + nsGang.checkGangApiAccess(workerScript, "getTaskStats"); + const task = GangMemberTasks[taskName]; + if (!task) { + throw makeRuntimeRejectMsg(workerScript, nsGang.unknownGangApiExceptionMessage("getTaskStats", `${taskName} does not exists`)); + } + const copy = Object.assign({}, task); + copy.territory = Object.assign({}, task.territory) + return copy; + }, getEquipmentNames: function() { updateDynamicRam("getEquipmentNames", getRamCost("gang", "getEquipmentNames")); nsGang.checkGangApiAccess(workerScript, "getEquipmentNames"); diff --git a/src/ScriptEditor/AceNetscriptMode.js b/src/ScriptEditor/AceNetscriptMode.js index 6eefec447..e9c81dd98 100644 --- a/src/ScriptEditor/AceNetscriptMode.js +++ b/src/ScriptEditor/AceNetscriptMode.js @@ -110,7 +110,7 @@ let NetscriptFunctions = "getMemberNames|getGangInformation|getMemberInformation|canRecruitMember|" + "recruitMember|getTaskNames|setMemberTask|getEquipmentNames|" + "getEquipmentCost|getEquipmentType|purchaseEquipment|ascendMember|" + - "setTerritoryWarfare|getEquipmentStats|" + + "setTerritoryWarfare|getEquipmentStats|getTaskStats|" + "getChanceToWinClash|getBonusTime|" + // Bladeburner API