mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2024-12-22 14:12:27 +01:00
Initial Bladeburner rebalancing for v0.44.0
This commit is contained in:
parent
c6a9675232
commit
6d81c00f37
@ -1954,7 +1954,7 @@ function initAugmentations() {
|
|||||||
resetAugmentation(BladeArmorIPU);
|
resetAugmentation(BladeArmorIPU);
|
||||||
|
|
||||||
var BladesSimulacrum = new Augmentation({
|
var BladesSimulacrum = new Augmentation({
|
||||||
name:AugmentationNames.BladesSimulacrum, repCost:3e3, moneyCost:80e9,
|
name:AugmentationNames.BladesSimulacrum, repCost: 1e3, moneyCost: 100e9,
|
||||||
info:"A highly-advanced matter phase-shifter module that is embedded " +
|
info:"A highly-advanced matter phase-shifter module that is embedded " +
|
||||||
"in the brainstem and cerebellum. This augmentation allows " +
|
"in the brainstem and cerebellum. This augmentation allows " +
|
||||||
"the user to project and control a holographic simulacrum within an " +
|
"the user to project and control a holographic simulacrum within an " +
|
||||||
|
@ -36,7 +36,7 @@ var CityNames = ["Aevum", "Chongqing", "Sector-12", "New Tokyo", "Ishima", "Volh
|
|||||||
var CyclesPerSecond = 5; //Game cycle is 200 ms
|
var CyclesPerSecond = 5; //Game cycle is 200 ms
|
||||||
|
|
||||||
var StaminaGainPerSecond = 0.0085;
|
var StaminaGainPerSecond = 0.0085;
|
||||||
var BaseStaminaLoss = 0.285; //Base stamina loss per action. Increased based on difficulty
|
var BaseStaminaLoss = 0.285; //Base stamina loss per action. Increased based on difficulty
|
||||||
var MaxStaminaToGainFactor = 70000; //Max Stamina is divided by this to get bonus stamina gain
|
var MaxStaminaToGainFactor = 70000; //Max Stamina is divided by this to get bonus stamina gain
|
||||||
|
|
||||||
var DifficultyToTimeFactor = 10; //Action Difficulty divided by this to get base action time
|
var DifficultyToTimeFactor = 10; //Action Difficulty divided by this to get base action time
|
||||||
@ -68,7 +68,7 @@ var RankNeededForFaction = 25;
|
|||||||
var ContractSuccessesPerLevel = 3.5; //How many successes you need to level up a contract
|
var ContractSuccessesPerLevel = 3.5; //How many successes you need to level up a contract
|
||||||
var OperationSuccessesPerLevel = 3; //How many successes you need to level up an op
|
var OperationSuccessesPerLevel = 3; //How many successes you need to level up an op
|
||||||
|
|
||||||
var RanksPerSkillPoint = 4; //How many ranks needed to get 1 Skill Point
|
var RanksPerSkillPoint = 3.5; //How many ranks needed to get 1 Skill Point
|
||||||
|
|
||||||
var ContractBaseMoneyGain = 50e3; //Base Money Gained per contract
|
var ContractBaseMoneyGain = 50e3; //Base Money Gained per contract
|
||||||
|
|
||||||
@ -582,7 +582,7 @@ Reviver.constructors.Action = Action;
|
|||||||
var GeneralActions = {}; //Training, Field Analysis, Recruitment, etc.
|
var GeneralActions = {}; //Training, Field Analysis, Recruitment, etc.
|
||||||
|
|
||||||
//Action Identifier
|
//Action Identifier
|
||||||
var ActionTypes = Object.freeze({
|
const ActionTypes = Object.freeze({
|
||||||
"Idle": 1,
|
"Idle": 1,
|
||||||
"Contract": 2,
|
"Contract": 2,
|
||||||
"Operation": 3,
|
"Operation": 3,
|
||||||
@ -591,7 +591,8 @@ var ActionTypes = Object.freeze({
|
|||||||
"Training": 5,
|
"Training": 5,
|
||||||
"Recruitment": 6,
|
"Recruitment": 6,
|
||||||
"FieldAnalysis": 7,
|
"FieldAnalysis": 7,
|
||||||
"Field Analysis": 7
|
"Field Analysis": 7,
|
||||||
|
"Diplomacy": 8,
|
||||||
});
|
});
|
||||||
function ActionIdentifier(params={}) {
|
function ActionIdentifier(params={}) {
|
||||||
if (params.name) {this.name = params.name;}
|
if (params.name) {this.name = params.name;}
|
||||||
@ -981,7 +982,7 @@ Bladeburner.prototype.changeRank = function(change) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Gain skill points. You get 1 every 4 ranks
|
// Gain skill points
|
||||||
var rankNeededForSp = (this.totalSkillPoints+1) * RanksPerSkillPoint;
|
var rankNeededForSp = (this.totalSkillPoints+1) * RanksPerSkillPoint;
|
||||||
if (this.maxRank >= rankNeededForSp) {
|
if (this.maxRank >= rankNeededForSp) {
|
||||||
//Calculate how many skill points to gain
|
//Calculate how many skill points to gain
|
||||||
@ -1378,7 +1379,6 @@ Bladeburner.prototype.completeAction = function() {
|
|||||||
break;
|
break;
|
||||||
case ActionTypes["Recruitment"]:
|
case ActionTypes["Recruitment"]:
|
||||||
var successChance = this.getRecruitmentSuccessChance();
|
var successChance = this.getRecruitmentSuccessChance();
|
||||||
console.log("Bladeburner recruitment success chance: " + successChance);
|
|
||||||
if (Math.random() < successChance) {
|
if (Math.random() < successChance) {
|
||||||
var expGain = 2 * BaseStatGain * this.actionTimeToComplete;
|
var expGain = 2 * BaseStatGain * this.actionTimeToComplete;
|
||||||
Player.gainCharismaExp(expGain);
|
Player.gainCharismaExp(expGain);
|
||||||
@ -1395,6 +1395,15 @@ Bladeburner.prototype.completeAction = function() {
|
|||||||
}
|
}
|
||||||
this.startAction(this.action); //Repeat action
|
this.startAction(this.action); //Repeat action
|
||||||
break;
|
break;
|
||||||
|
case ActionTypes["Diplomacy"]:
|
||||||
|
var eff = this.getDiplomacyEffectiveness();
|
||||||
|
console.log(`Diplomacy Effectiveness: ${eff}`);
|
||||||
|
this.getCurrentCity().chaos *= eff;
|
||||||
|
if (this.logging.general) {
|
||||||
|
this.log(`Diplomacy completed. Chaos levels in the current city fell by ${numeralWrapper.formatPercentage(1 - eff)}`);
|
||||||
|
}
|
||||||
|
this.startAction(this.action); // Repeat Action
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1516,6 +1525,15 @@ Bladeburner.prototype.getRecruitmentSuccessChance = function() {
|
|||||||
return Math.pow(Player.charisma, 0.45) / (this.teamSize + 1);
|
return Math.pow(Player.charisma, 0.45) / (this.teamSize + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Bladeburner.prototype.getDiplomacyEffectiveness = function() {
|
||||||
|
// Returns a decimal by which the city's chaos level should be multiplied (e.g. 0.98)
|
||||||
|
const CharismaLinearFactor = 10e3;
|
||||||
|
const CharismaExponentialFactor = 0.04;
|
||||||
|
|
||||||
|
const charismaEff = Math.pow(Player.charisma, CharismaExponentialFactor) + Player.charisma / CharismaLinearFactor;
|
||||||
|
return (100 - charismaEff) / 100;
|
||||||
|
}
|
||||||
|
|
||||||
//Process stat gains from Contracts, Operations, and Black Operations
|
//Process stat gains from Contracts, Operations, and Black Operations
|
||||||
//@action(Action obj) - Derived action class
|
//@action(Action obj) - Derived action class
|
||||||
//@success(bool) - Whether action was successful
|
//@success(bool) - Whether action was successful
|
||||||
@ -3784,14 +3802,14 @@ function initBladeburner() {
|
|||||||
name:SkillNames.BladesIntuition,
|
name:SkillNames.BladesIntuition,
|
||||||
desc:"Each level of this skill increases your success chance " +
|
desc:"Each level of this skill increases your success chance " +
|
||||||
"for all Contracts, Operations, and BlackOps by 3%",
|
"for all Contracts, Operations, and BlackOps by 3%",
|
||||||
baseCost:5, costInc:2,
|
baseCost:5, costInc: 2.1,
|
||||||
successChanceAll:3
|
successChanceAll:3
|
||||||
});
|
});
|
||||||
Skills[SkillNames.Cloak] = new Skill({
|
Skills[SkillNames.Cloak] = new Skill({
|
||||||
name:SkillNames.Cloak,
|
name:SkillNames.Cloak,
|
||||||
desc:"Each level of this skill increases your " +
|
desc:"Each level of this skill increases your " +
|
||||||
"success chance in stealth-related Contracts, Operations, and BlackOps by 5.5%",
|
"success chance in stealth-related Contracts, Operations, and BlackOps by 5.5%",
|
||||||
baseCost:3, costInc:1,
|
baseCost:3, costInc: 1.1,
|
||||||
successChanceStealth:5.5
|
successChanceStealth:5.5
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -3802,42 +3820,42 @@ function initBladeburner() {
|
|||||||
name:SkillNames.ShortCircuit,
|
name:SkillNames.ShortCircuit,
|
||||||
desc:"Each level of this skill increases your success chance " +
|
desc:"Each level of this skill increases your success chance " +
|
||||||
"in Contracts, Operations, and BlackOps that involve retirement by 5.5%",
|
"in Contracts, Operations, and BlackOps that involve retirement by 5.5%",
|
||||||
baseCost:3, costInc:2,
|
baseCost:3, costInc: 2.1,
|
||||||
successChanceKill:5.5
|
successChanceKill:5.5
|
||||||
});
|
});
|
||||||
Skills[SkillNames.DigitalObserver] = new Skill({
|
Skills[SkillNames.DigitalObserver] = new Skill({
|
||||||
name:SkillNames.DigitalObserver,
|
name:SkillNames.DigitalObserver,
|
||||||
desc:"Each level of this skill increases your success chance in " +
|
desc:"Each level of this skill increases your success chance in " +
|
||||||
"all Operations and BlackOps by 4%",
|
"all Operations and BlackOps by 4%",
|
||||||
baseCost:5, costInc:2,
|
baseCost: 5, costInc: 2.1,
|
||||||
successChanceOperation:4
|
successChanceOperation:4
|
||||||
});
|
});
|
||||||
Skills[SkillNames.Tracer] = new Skill({
|
Skills[SkillNames.Tracer] = new Skill({
|
||||||
name:SkillNames.Tracer,
|
name:SkillNames.Tracer,
|
||||||
desc:"Each level of this skill increases your success chance in " +
|
desc:"Each level of this skill increases your success chance in " +
|
||||||
"all Contracts by 4%",
|
"all Contracts by 4%",
|
||||||
baseCost:3, costInc:2,
|
baseCost: 3, costInc: 2.1,
|
||||||
successChanceContract:4
|
successChanceContract:4
|
||||||
});
|
});
|
||||||
Skills[SkillNames.Overclock] = new Skill({
|
Skills[SkillNames.Overclock] = new Skill({
|
||||||
name:SkillNames.Overclock,
|
name:SkillNames.Overclock,
|
||||||
desc:"Each level of this skill decreases the time it takes " +
|
desc:"Each level of this skill decreases the time it takes " +
|
||||||
"to attempt a Contract, Operation, and BlackOp by 1% (Max Level: 95)",
|
"to attempt a Contract, Operation, and BlackOp by 1% (Max Level: 95)",
|
||||||
baseCost:4, costInc:1.1, maxLvl:95,
|
baseCost: 3, costInc: 1.2, maxLvl: 90,
|
||||||
actionTime:1
|
actionTime:1
|
||||||
});
|
});
|
||||||
Skills[SkillNames.Reaper] = new Skill({
|
Skills[SkillNames.Reaper] = new Skill({
|
||||||
name:SkillNames.Reaper,
|
name: SkillNames.Reaper,
|
||||||
desc:"Each level of this skill increases your effective combat stats for Bladeburner actions by 3%",
|
desc: "Each level of this skill increases your effective combat stats for Bladeburner actions by 3%",
|
||||||
baseCost:3, costInc:2,
|
baseCost:3, costInc: 2.1,
|
||||||
effStr:3, effDef:3, effDex:3, effAgi:3
|
effStr: 2, effDef: 2, effDex: 2, effAgi: 2
|
||||||
});
|
});
|
||||||
Skills[SkillNames.EvasiveSystem] = new Skill({
|
Skills[SkillNames.EvasiveSystem] = new Skill({
|
||||||
name:SkillNames.EvasiveSystem,
|
name:SkillNames.EvasiveSystem,
|
||||||
desc:"Each level of this skill increases your effective " +
|
desc:"Each level of this skill increases your effective " +
|
||||||
"dexterity and agility for Bladeburner actions by 5%",
|
"dexterity and agility for Bladeburner actions by 4%",
|
||||||
baseCost:2, costInc: 1,
|
baseCost: 2, costInc: 1.1,
|
||||||
effDex:5, effAgi:5
|
effDex: 4, effAgi: 4
|
||||||
});
|
});
|
||||||
Skills[SkillNames.Datamancer] = new Skill({
|
Skills[SkillNames.Datamancer] = new Skill({
|
||||||
name:SkillNames.Datamancer,
|
name:SkillNames.Datamancer,
|
||||||
@ -3862,13 +3880,14 @@ function initBladeburner() {
|
|||||||
});
|
});
|
||||||
Skills[SkillNames.Hyperdrive] = new Skill({
|
Skills[SkillNames.Hyperdrive] = new Skill({
|
||||||
name: SkillNames.Hyperdrive,
|
name: SkillNames.Hyperdrive,
|
||||||
desc: "Each level of this skill increases the experience earned from Contracts, Operations, and BlackOps by 4%",
|
desc: "Each level of this skill increases the experience earned from Contracts, Operations, and BlackOps by 5%",
|
||||||
baseCost: 1, costInc: 3,
|
baseCost: 1, costInc: 3,
|
||||||
expGain: 4,
|
expGain: 4,
|
||||||
});
|
});
|
||||||
|
|
||||||
//General Actions
|
//General Actions
|
||||||
var actionName = "Training";
|
let actionName;
|
||||||
|
actionName = "Training";
|
||||||
GeneralActions[actionName] = new Action({
|
GeneralActions[actionName] = new Action({
|
||||||
name:actionName,
|
name:actionName,
|
||||||
desc:"Improve your abilities at the Bladeburner unit's specialized training " +
|
desc:"Improve your abilities at the Bladeburner unit's specialized training " +
|
||||||
@ -3876,7 +3895,7 @@ function initBladeburner() {
|
|||||||
"increases your max stamina."
|
"increases your max stamina."
|
||||||
});
|
});
|
||||||
|
|
||||||
var actionName = "Field Analysis";
|
actionName = "Field Analysis";
|
||||||
GeneralActions[actionName] = new Action({
|
GeneralActions[actionName] = new Action({
|
||||||
name:actionName,
|
name:actionName,
|
||||||
desc:"Mine and analyze Synthoid-related data. This improve the " +
|
desc:"Mine and analyze Synthoid-related data. This improve the " +
|
||||||
@ -3886,7 +3905,7 @@ function initBladeburner() {
|
|||||||
"Does NOT require stamina."
|
"Does NOT require stamina."
|
||||||
});
|
});
|
||||||
|
|
||||||
var actionName = "Recruitment";
|
actionName = "Recruitment";
|
||||||
GeneralActions[actionName] = new Action({
|
GeneralActions[actionName] = new Action({
|
||||||
name:actionName,
|
name:actionName,
|
||||||
desc:"Attempt to recruit members for your Bladeburner team. These members " +
|
desc:"Attempt to recruit members for your Bladeburner team. These members " +
|
||||||
@ -3894,6 +3913,14 @@ function initBladeburner() {
|
|||||||
"Does NOT require stamina."
|
"Does NOT require stamina."
|
||||||
});
|
});
|
||||||
|
|
||||||
|
actionName = "Diplomacy";
|
||||||
|
GeneralActions[actionName] = new Action({
|
||||||
|
name: actionName,
|
||||||
|
desc: "Improve diplomatic relations with the Synthoid population. " +
|
||||||
|
"Completing this action will reduce the Chaos level in your current city.<br><br>" +
|
||||||
|
"Does NOT require stamina."
|
||||||
|
})
|
||||||
|
|
||||||
//Black Operations
|
//Black Operations
|
||||||
BlackOperations["Operation Typhoon"] = new BlackOperation({
|
BlackOperations["Operation Typhoon"] = new BlackOperation({
|
||||||
name:"Operation Typhoon",
|
name:"Operation Typhoon",
|
||||||
|
@ -511,6 +511,15 @@ export let CONSTANTS: IMap<any> = {
|
|||||||
LatestUpdate:
|
LatestUpdate:
|
||||||
`
|
`
|
||||||
v0.44.0
|
v0.44.0
|
||||||
|
* Bladeburner Changes:
|
||||||
|
** Reduced the amount of rank needed to earn a skill point
|
||||||
|
** Reduced the effects of the "Reaper" and "Evasive System" skills
|
||||||
|
** Increased the effect of the "Hyperdrive" skill
|
||||||
|
** Slightly increased the rate which the skill point cost rises for almost all skills
|
||||||
|
** The "Overlock" Skill now has a maximum level of 90 instead of 95
|
||||||
|
** Added a new General Action: Diplomacy
|
||||||
|
** Lowered the rep cost of the "Blade's Simulacrum" augmentation, but increased the price
|
||||||
|
|
||||||
* Added new BitNode multipliers:
|
* Added new BitNode multipliers:
|
||||||
** HomeComputerRamCost - Affects how much it costs to upgrade home computer's RAM
|
** HomeComputerRamCost - Affects how much it costs to upgrade home computer's RAM
|
||||||
** DaedalusAugsRequirement - Affects how many Augmentations you need in order to get invited to Daedalus
|
** DaedalusAugsRequirement - Affects how many Augmentations you need in order to get invited to Daedalus
|
||||||
|
@ -336,7 +336,7 @@ function displayFactionContent(factionName) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Purchase Sleeves from Covenant
|
// Purchase Sleeves from Covenant
|
||||||
if (Player.bitNodeN >= 10 && SourceFileFlags[10]) {
|
if (factionName === "The Covenant" && Player.bitNodeN >= 10 && SourceFileFlags[10]) {
|
||||||
const covenantPurchaseSleevesDiv = createElement("div", { class: "faction-work-div" });
|
const covenantPurchaseSleevesDiv = createElement("div", { class: "faction-work-div" });
|
||||||
const covenantPurchaseSleevesDivWrapper = createElement("div", { class: "faction-wkro-div-wrapper" });
|
const covenantPurchaseSleevesDivWrapper = createElement("div", { class: "faction-wkro-div-wrapper" });
|
||||||
covenantPurchaseSleevesDiv.appendChild(covenantPurchaseSleevesDivWrapper);
|
covenantPurchaseSleevesDiv.appendChild(covenantPurchaseSleevesDivWrapper);
|
||||||
|
Loading…
Reference in New Issue
Block a user