mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2024-12-18 12:15:44 +01:00
v0.38.0 - Minor re-balancing and bug fixes in Bladeburner
This commit is contained in:
parent
71cf3cac35
commit
575b67440c
6087
dist/engine.bundle.js
vendored
6087
dist/engine.bundle.js
vendored
File diff suppressed because it is too large
Load Diff
@ -184,6 +184,7 @@ let AugmentationNames = {
|
||||
BladeArmorUnibeam: "BLADE-51b Tesla Armor: Unibeam Upgrade",
|
||||
BladeArmorOmnibeam: "BLADE-51b Tesla Armor: Omnibeam Upgrade",
|
||||
BladeArmorIPU: "BLADE-51b Tesla Armor: IPU Upgrade",
|
||||
BladesSimulacrum: "The Blade's Simulacrum",
|
||||
|
||||
//Wasteland Augs
|
||||
//PepBoy: "P.E.P-Boy", Plasma Energy Projection System
|
||||
@ -1766,6 +1767,19 @@ function initAugmentations() {
|
||||
});
|
||||
BladeArmorIPU.addToFactions([BladeburnersFactionName]);
|
||||
resetAugmentation(BladeArmorIPU);
|
||||
|
||||
var BladesSimulacrum = new Augmentation({
|
||||
name:AugmentationNames.BladesSimulacrum, repCost:6e3, moneyCost:75e9,
|
||||
info:"A highly-advanced matter phase-shifter module that is embedded " +
|
||||
"in the brainstem and cerebellum. This augmentation allows " +
|
||||
"the user to project and control a holographic simulacrum within an " +
|
||||
"extremely large radius. These specially-modified holograms were specially " +
|
||||
"weaponized by Bladeburner units to be used against Synthoids.<br><br>" +
|
||||
"This augmentation allows you to perform Bladeburner actions and other " +
|
||||
"actions (such as working, commiting crimes, etc.) at the same time."
|
||||
});
|
||||
BladesSimulacrum.addToFactions([BladeburnersFactionName]);
|
||||
resetAugmentation(BladesSimulacrum);
|
||||
}
|
||||
|
||||
//Update costs based on how many have been purchased
|
||||
@ -1777,8 +1791,6 @@ function initAugmentations() {
|
||||
}
|
||||
|
||||
Player.reapplyAllAugmentations();
|
||||
|
||||
|
||||
}
|
||||
|
||||
//Resets an Augmentation during (re-initizliation)
|
||||
@ -2350,6 +2362,8 @@ function applyAugmentation(aug, reapply=false) {
|
||||
Player.bladeburner_analysis_mult *= 1.15;
|
||||
Player.bladeburner_success_chance_mult *= 1.02;
|
||||
break;
|
||||
case AugmentationNames.BladesSimulacrum: //No multiplier effect
|
||||
break;
|
||||
default:
|
||||
throw new Error("ERROR: No such augmentation!");
|
||||
return;
|
||||
|
@ -1,10 +1,11 @@
|
||||
import {Augmentations, AugmentationNames} from "./Augmentations.js";
|
||||
import {CONSTANTS} from "./Constants.js";
|
||||
import {Engine} from "./engine.js";
|
||||
import {Faction, Factions, factionExists,
|
||||
joinFaction, displayFactionContent} from "./Faction.js";
|
||||
import {Locations} from "./Location.js";
|
||||
import {Player} from "./Player.js";
|
||||
import {hackWorldDaemon} from "./RedPill.js";
|
||||
import {hackWorldDaemon, redPillFlag} from "./RedPill.js";
|
||||
import {KEY} from "./Terminal.js";
|
||||
|
||||
import {dialogBoxCreate} from "../utils/DialogBox.js";
|
||||
@ -29,10 +30,16 @@ var MaxStaminaToGainFactor = 70000; //Max Stamina is divided by this to get
|
||||
|
||||
var DifficultyToTimeFactor = 10; //Action Difficulty divided by this to get base action time
|
||||
|
||||
//The difficulty multiplier affects stamina loss and hp loss of an action. Its formula is:
|
||||
//The difficulty multiplier affects stamina loss and hp loss of an action. Also affects
|
||||
//experience gain. Its formula is:
|
||||
//difficulty ^ exponentialFactor + difficulty / linearFactor
|
||||
var DiffMultExponentialFactor = 0.28;
|
||||
var DiffMultLinearFactor = 670;
|
||||
var DiffMultLinearFactor = 650;
|
||||
|
||||
var EffAgiLinearFactor = 90e3;
|
||||
var EffDexLinearFactor = 90e3;
|
||||
var EffAgiExponentialFactor = 0.031;
|
||||
var EffDexExponentialFactor = 0.03;
|
||||
|
||||
var BaseRecruitmentTimeNeeded = 300; //Base time needed (s) to complete a Recruitment action
|
||||
|
||||
@ -519,7 +526,10 @@ Action.prototype.getActionTime = function(inst) {
|
||||
|
||||
var effAgility = Player.agility * inst.skillMultipliers.effAgi;
|
||||
var effDexterity = Player.dexterity * inst.skillMultipliers.effDex;
|
||||
var statFac = 0.5 * (Math.pow(effAgility, 0.03) + Math.pow(effDexterity, 0.03)); //Always > 1
|
||||
var statFac = 0.5 * (Math.pow(effAgility, EffAgiExponentialFactor) +
|
||||
Math.pow(effDexterity, EffDexExponentialFactor) +
|
||||
(effAgility / EffAgiLinearFactor) +
|
||||
(effDexterity / EffDexLinearFactor)); //Always > 1
|
||||
|
||||
baseTime = Math.max(1, baseTime * skillFac / statFac);
|
||||
|
||||
@ -695,6 +705,14 @@ function Bladeburner(params={}) {
|
||||
if (params.new) {this.create();}
|
||||
}
|
||||
|
||||
Bladeburner.prototype.prestige = function() {
|
||||
this.resetAction();
|
||||
var bladeburnerFac = Factions["Bladeburners"];
|
||||
if (this.rank >= RankNeededForFaction) {
|
||||
joinFaction(bladeburnerFac);
|
||||
}
|
||||
}
|
||||
|
||||
Bladeburner.prototype.create = function() {
|
||||
this.contracts["Tracking"] = new Contract({
|
||||
name:"Tracking",
|
||||
@ -815,8 +833,13 @@ Bladeburner.prototype.storeCycles = function(numCycles=1) {
|
||||
}
|
||||
|
||||
Bladeburner.prototype.process = function() {
|
||||
//Extreme condition...if Operation Daedalus is complete trigger the BitNode
|
||||
if (redPillFlag === false && this.blackops.hasOwnProperty("Operation Daedalus")) {
|
||||
return hackWorldDaemon(Player.bitNodeN);
|
||||
}
|
||||
|
||||
//If the Player starts doing some other actions, set action to idle and alert
|
||||
if (Player.isWorking) {
|
||||
if (Augmentations[AugmentationNames.BladesSimulacrum].owned === false && Player.isWorking) {
|
||||
if (this.action.type !== ActionTypes["Idle"]) {
|
||||
dialogBoxCreate("Your Bladeburner action was cancelled because you started " +
|
||||
"doing something else");
|
||||
@ -920,7 +943,8 @@ Bladeburner.prototype.changeRank = function(change) {
|
||||
throw new Error("Could not properly get Bladeburner Faction object in Bladeburner UI Overview Faction button");
|
||||
}
|
||||
if (bladeburnerFac.isMember) {
|
||||
bladeburnerFac.playerReputation += (RankToFactionRepFactor * change * Player.faction_rep_mult);
|
||||
var favorBonus = 1 + (bladeburnerFac.favor / 100);
|
||||
bladeburnerFac.playerReputation += (RankToFactionRepFactor * change * Player.faction_rep_mult * favorBonus);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1464,7 +1488,7 @@ Bladeburner.prototype.gainActionStats = function(action, success) {
|
||||
|
||||
//Gain multiplier based on difficulty. If this changes then the
|
||||
//same variable calculated in completeAction() needs to change too
|
||||
var difficultyMult = Math.pow(difficulty, 0.21);
|
||||
var difficultyMult = Math.pow(difficulty, DiffMultExponentialFactor) + difficulty / DiffMultLinearFactor;
|
||||
|
||||
var time = this.actionTimeToComplete;
|
||||
var successMult = success ? 1 : 0.5;
|
||||
@ -1640,6 +1664,7 @@ Bladeburner.prototype.initializeDomElementRefs = function() {
|
||||
operations: {},
|
||||
blackops: {},
|
||||
skills: {},
|
||||
skillPointsDisplay: null,
|
||||
};
|
||||
}
|
||||
|
||||
@ -1856,7 +1881,7 @@ Bladeburner.prototype.createOverviewContent = function() {
|
||||
}));
|
||||
|
||||
//Faction button
|
||||
var bladeburnersFactionName = "Bladeburners";
|
||||
const bladeburnersFactionName = "Bladeburners";
|
||||
if (factionExists(bladeburnersFactionName)) {
|
||||
var bladeburnerFac = Factions[bladeburnersFactionName];
|
||||
if (!(bladeburnerFac instanceof Faction)) {
|
||||
@ -2132,9 +2157,10 @@ Bladeburner.prototype.createSkillsContent = function() {
|
||||
}
|
||||
|
||||
//Skill Points
|
||||
DomElems.actionAndSkillsDiv.appendChild(createElement("p", {
|
||||
DomElems.skillPointsDisplay = createElement("p", {
|
||||
innerHTML:"<br><strong>Skill Points: " + formatNumber(this.skillPoints, 0) + "</strong>"
|
||||
}));
|
||||
});
|
||||
DomElems.actionAndSkillsDiv.appendChild(DomElems.skillPointsDisplay);
|
||||
|
||||
//UI Element for each skill
|
||||
for (var skillName in Skills) {
|
||||
@ -2246,6 +2272,8 @@ Bladeburner.prototype.updateActionAndSkillsContent = function() {
|
||||
}
|
||||
break;
|
||||
case "skills":
|
||||
DomElems.skillPointsDisplay.innerHTML = "<br><strong>Skill Points: " + formatNumber(this.skillPoints, 0) + "</strong>";
|
||||
|
||||
var skillElems = Object.keys(DomElems.skills);
|
||||
for (var i = 0; i < skillElems.length; ++i) {
|
||||
var skillElem = DomElems.skills[skillElems[i]];
|
||||
@ -3537,7 +3565,7 @@ Bladeburner.prototype.switchCityNetscriptFn = function(cityName, workerScript) {
|
||||
}
|
||||
|
||||
Bladeburner.prototype.joinBladeburnerFactionNetscriptFn = function(workerScript) {
|
||||
var bladeburnerFac = Factions[bladeburnersFactionName];
|
||||
var bladeburnerFac = Factions["Bladeburners"];
|
||||
if (bladeburnerFac.isMember) {
|
||||
return true;
|
||||
} else if (this.rank >= RankNeededForFaction) {
|
||||
|
@ -1,5 +1,5 @@
|
||||
let CONSTANTS = {
|
||||
Version: "0.37.2",
|
||||
Version: "0.38.0",
|
||||
|
||||
//Max level for any skill, assuming no multipliers. Determined by max numerical value in javascript for experience
|
||||
//and the skill level formula in Player.js. Note that all this means it that when experience hits MAX_INT, then
|
||||
@ -488,16 +488,18 @@ let CONSTANTS = {
|
||||
"World Stock Exchange account and TIX API Access<br>",
|
||||
|
||||
LatestUpdate:
|
||||
"v0.37.3<br>" +
|
||||
"* New BitNode: BN-7 Bladeburner 2079<br>" +
|
||||
"* New BitNode: BN-12 The Recursion<br>" +
|
||||
"v0.38.0<br>" +
|
||||
"* New BitNode: BN-12 The Recursion - Implemented by Github user hydroflame<br>" +
|
||||
"* Bladeburner Changes:<br>" +
|
||||
"*** Bladeburner progress is no longer reset when installing Augmentations<br>" +
|
||||
"*** The number of successess needed to increase a Contract/Operation's max level now scales with the current max level (gradually gets harder)<br>" +
|
||||
"*** All Bladeburner Augmentations are now slightly more expensive and require more reputation<br>" +
|
||||
"*** Black Operations now give higher rank rewards<br>" +
|
||||
"*** Doubled the base amount of money gained from Contracts<br>" +
|
||||
"* Hacking is not slightly less profitable in BitNode-3<br>" +
|
||||
"*** Increased the amount of experience gained from Contracts/Actions<br>" +
|
||||
"*** Added a new Augmentation: The Blade's Simulacrum<br>" +
|
||||
"*** Bladeburner faction reputation gain is now properly affected by favor<br>" +
|
||||
"* Hacking is now slightly less profitable in BitNode-3<br>" +
|
||||
"* Updated Hacknet Nodes UI - Implemented by Github user kopelli<br>" +
|
||||
"* Bug Fix: Fixed an exploit that allowed calling any Netscript function without incurring any RAM Cost in NetscriptJS<br>"
|
||||
}
|
||||
|
@ -128,7 +128,7 @@ function prestigeAugmentation() {
|
||||
|
||||
//Cancel Bladeburner action
|
||||
if (Player.bladeburner instanceof Bladeburner) {
|
||||
Player.bladeburner.resetAction();
|
||||
Player.bladeburner.prestige();
|
||||
}
|
||||
|
||||
//BitNode 8: Ghost of Wall Street
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user