diff --git a/src/Bladeburner.js b/src/Bladeburner.js index 73b73dbe9..5e5c80446 100644 --- a/src/Bladeburner.js +++ b/src/Bladeburner.js @@ -355,6 +355,8 @@ function Skill(params={name:"foo", desc:"foo"}) { if (params.effCha) {this.effCha = params.effCha;} if (params.stamina) {this.stamina = params.stamina;} + if (params.money) {this.money = params.money;} + if (params.expGain) {this.expGain = params.expGain;} //Equipment if (params.weaponAbility) {this.weaponAbility = params.weaponAbility;} @@ -367,17 +369,19 @@ Skill.prototype.calculateCost = function(currentLevel) { var Skills = {}; var SkillNames = { BladesIntuition: "Blade's Intuition", - Reaper: "Reaper", Cloak: "Cloak", Marksman: "Marksman", WeaponProficiency: "Weapon Proficiency", - Overclock: "Overclock", - EvasiveSystem: "Evasive System", ShortCircuit: "Short-Circuit", DigitalObserver: "Digital Observer", - Datamancer: "Datamancer", Tracer: "Tracer", - CybersEdge: "Cyber's Edge" + Overclock: "Overclock", + Reaper: "Reaper", + EvasiveSystem: "Evasive System", + Datamancer: "Datamancer", + CybersEdge: "Cyber's Edge", + HandsOfMidas: "Hands of Midas", + Hyperdrive: "Hyperdrive", } //Base Class for Contracts, Operations, and BlackOps @@ -998,23 +1002,25 @@ Bladeburner.prototype.getCurrentCity = function() { Bladeburner.prototype.resetSkillMultipliers = function() { this.skillMultipliers = { - successChanceAll:1, - successChanceStealth:1, - successChanceKill:1, - successChanceContract:1, - successChanceOperation:1, - successChanceEstimate:1, - actionTime:1, - effHack:1, - effStr:1, - effDef:1, - effDex:1, - effAgi:1, - effCha:1, - effInt:1, - stamina:1, - weaponAbility:1, - gunAbility:1, + successChanceAll: 1, + successChanceStealth: 1, + successChanceKill: 1, + successChanceContract: 1, + successChanceOperation: 1, + successChanceEstimate: 1, + actionTime: 1, + effHack: 1, + effStr: 1, + effDef: 1, + effDex: 1, + effAgi: 1, + effCha: 1, + effInt: 1, + stamina: 1, + money: 1, + expGain: 1, + weaponAbility: 1, + gunAbility: 1, }; } @@ -1197,7 +1203,7 @@ Bladeburner.prototype.completeAction = function() { //Earn money for contracts var moneyGain = 0; if (!isOperation) { - moneyGain = ContractBaseMoneyGain * rewardMultiplier; + moneyGain = ContractBaseMoneyGain * rewardMultiplier * this.skillMultipliers.money; Player.gainMoney(moneyGain); } @@ -1526,13 +1532,14 @@ Bladeburner.prototype.gainActionStats = function(action, success) { var unweightedGain = time * BaseStatGain * successMult * difficultyMult; var unweightedIntGain = time * BaseIntGain * successMult * difficultyMult; - Player.gainHackingExp(unweightedGain * action.weights.hack * Player.hacking_exp_mult); - Player.gainStrengthExp(unweightedGain * action.weights.str * Player.strength_exp_mult); - Player.gainDefenseExp(unweightedGain * action.weights.def * Player.defense_exp_mult); - Player.gainDexterityExp(unweightedGain * action.weights.dex * Player.dexterity_exp_mult); - Player.gainAgilityExp(unweightedGain * action.weights.agi * Player.agility_exp_mult); - Player.gainCharismaExp(unweightedGain * action.weights.cha * Player.charisma_exp_mult); - Player.gainIntelligenceExp(unweightedIntGain * action.weights.int); + const skillMult = this.skillMultipliers.expGain; + Player.gainHackingExp(unweightedGain * action.weights.hack * Player.hacking_exp_mult * skillMult); + Player.gainStrengthExp(unweightedGain * action.weights.str * Player.strength_exp_mult * skillMult); + Player.gainDefenseExp(unweightedGain * action.weights.def * Player.defense_exp_mult * skillMult); + Player.gainDexterityExp(unweightedGain * action.weights.dex * Player.dexterity_exp_mult * skillMult); + Player.gainAgilityExp(unweightedGain * action.weights.agi * Player.agility_exp_mult * skillMult); + Player.gainCharismaExp(unweightedGain * action.weights.cha * Player.charisma_exp_mult * skillMult); + Player.gainIntelligenceExp(unweightedIntGain * action.weights.int * skillMult); } Bladeburner.prototype.randomEvent = function() { @@ -3764,13 +3771,6 @@ function initBladeburner() { baseCost:5, costInc:2, successChanceAll:3 }); - Skills[SkillNames.Reaper] = new Skill({ - name:SkillNames.Reaper, - desc:"Each level of this skill increases your " + - "effective combat stats for Bladeburner actions by 3%", - baseCost:3, costInc:2, - effStr:3, effDef:3, effDex:3, effAgi:3 - }); Skills[SkillNames.Cloak] = new Skill({ name:SkillNames.Cloak, desc:"Each level of this skill increases your " + @@ -3782,20 +3782,6 @@ function initBladeburner() { //TODO Marksman //TODO Weapon Proficiency - Skills[SkillNames.Overclock] = new Skill({ - name:SkillNames.Overclock, - desc:"Each level of this skill decreases the time it takes " + - "to attempt a Contract, Operation, and BlackOp by 1% (Max Level: 95)", - baseCost:5, costInc:1.1, maxLvl:95, - actionTime:1 - }); - Skills[SkillNames.EvasiveSystem] = new Skill({ - name:SkillNames.EvasiveSystem, - desc:"Each level of this skill increases your effective " + - "dexterity and agility for Bladeburner actions by 5%", - baseCost:2, costInc: 1, - effDex:5, effAgi:5 - }); Skills[SkillNames.ShortCircuit] = new Skill({ name:SkillNames.ShortCircuit, desc:"Each level of this skill increases your success chance " + @@ -3810,15 +3796,6 @@ function initBladeburner() { baseCost:5, costInc:2, successChanceOperation:4 }); - Skills[SkillNames.Datamancer] = new Skill({ - name:SkillNames.Datamancer, - desc:"Each level of this skill increases your effectiveness in " + - "synthoid population analysis and investigation by 5%. " + - "This affects all actions that can potentially increase " + - "the accuracy of your synthoid population/community estimates.", - baseCost:3,costInc:1, - successChanceEstimate:5 - }); Skills[SkillNames.Tracer] = new Skill({ name:SkillNames.Tracer, desc:"Each level of this skill increases your success chance in " + @@ -3826,13 +3803,53 @@ function initBladeburner() { baseCost:3, costInc:2, successChanceContract:4 }); + Skills[SkillNames.Overclock] = new Skill({ + name:SkillNames.Overclock, + desc:"Each level of this skill decreases the time it takes " + + "to attempt a Contract, Operation, and BlackOp by 1% (Max Level: 95)", + baseCost:4, costInc:1.1, maxLvl:95, + actionTime:1 + }); + Skills[SkillNames.Reaper] = new Skill({ + name:SkillNames.Reaper, + desc:"Each level of this skill increases your effective combat stats for Bladeburner actions by 3%", + baseCost:3, costInc:2, + effStr:3, effDef:3, effDex:3, effAgi:3 + }); + Skills[SkillNames.EvasiveSystem] = new Skill({ + name:SkillNames.EvasiveSystem, + desc:"Each level of this skill increases your effective " + + "dexterity and agility for Bladeburner actions by 5%", + baseCost:2, costInc: 1, + effDex:5, effAgi:5 + }); + Skills[SkillNames.Datamancer] = new Skill({ + name:SkillNames.Datamancer, + desc:"Each level of this skill increases your effectiveness in " + + "synthoid population analysis and investigation by 5%. " + + "This affects all actions that can potentially increase " + + "the accuracy of your synthoid population/community estimates.", + baseCost:3, costInc:1, + successChanceEstimate:5 + }); Skills[SkillNames.CybersEdge] = new Skill({ name:SkillNames.CybersEdge, - desc:"Each level of this skill increases your max " + - "stamina by 2%", + desc:"Each level of this skill increases your max stamina by 2%", baseCost:1, costInc:3, stamina:2 }); + Skills[SkillNames.HandsOfMidas] = new Skill({ + name: SkillNames.HandsOfMidas, + desc: "Each level of this skill increases the amount of money you receive from Contracts by 5%", + baseCost: 2, costInc: 2.5, + money: 2, + }); + Skills[SkillNames.Hyperdrive] = new Skill({ + name: SkillNames.Hyperdrive, + esc: "Each level of this skill increases the experience earned from Contracts, Operations, and BlackOps by 4%", + baseCost: 1, costInc: 3, + expGain: 4, + }); //General Actions var actionName = "Training"; diff --git a/src/Constants.ts b/src/Constants.ts index 2bdd4a5bf..80528dd7b 100644 --- a/src/Constants.ts +++ b/src/Constants.ts @@ -510,27 +510,12 @@ export let CONSTANTS: IMap = { LatestUpdate: ` - v0.43.0 - * Added BitNode-10: Digital Carbon - - * Stock Market Changes: - ** Each stock now has a maximum number of shares you can purchase (both Long and Short positions combined) - ** Added getStockMaxShares() Netscript function to the TIX API - ** The cost of 4S Market Data TIX API Access increased from $20b to $25b - - * Job Changes: - ** You can now hold multiple jobs at once. This means you no longer lose reputation when leaving a company - ** Because of this change, the getCharacterInformation() Netscript function returns a slightly different value - - * Script Editor Changes: - ** Added new script editor: CodeMirror. You can choose between the old editor (Ace) or CodeMirror - ** Navigation keyboard shortcuts no longer work if the script editor is focused - - * Trying to programmatically run a script (run(), exec()) with a 'threads' argument of 0 will now cause the function to return false without running the script - * Home Computer RAM is now capped at 2 ^ 30 GB (1073741824 GB) - * The maximum amount, maximum RAM, and cost of purchasing servers can now vary between different BitNodes (new BitNode multipliers) - * Pop-up dialog boxes are a little bit bigger - * Bug Fix: When importing scripts, "./" will now be properly ignored (e.g. import { foo } from "./lib.script" ) + v0.43.1 + * Added two new Bladeburner skills for increasing money and experience gain + * Made some minor adjustments to Bladeburner UI + * Corporation "Smart Factories" and "Smart Storage" upgrades have slightly lower price multipliers + * Added 6 new Coding Contract problems + * Updated documentation with list of all Coding Contract problems ` } diff --git a/src/Corporation/data/CorporationUpgrades.ts b/src/Corporation/data/CorporationUpgrades.ts index 1f75f0556..519977ff8 100644 --- a/src/Corporation/data/CorporationUpgrades.ts +++ b/src/Corporation/data/CorporationUpgrades.ts @@ -6,12 +6,12 @@ import { IMap } from "../../types"; // [index in Corporation upgrades array, base price, price mult, benefit mult (additive), name, desc] export const CorporationUpgrades: IMap = { //Smart factories, increases production - "0": [0, 2e9, 1.07, 0.03, + "0": [0, 2e9, 1.06, 0.03, "Smart Factories", "Advanced AI automatically optimizes the operation and productivity " + "of factories. Each level of this upgrade increases your global production by 3% (additive)."], //Smart warehouses, increases storage size - "1": [1, 2e9, 1.07, .1, + "1": [1, 2e9, 1.06, .1, "Smart Storage", "Advanced AI automatically optimizes your warehouse storage methods. " + "Each level of this upgrade increases your global warehouse storage size by 10% (additive)."],