mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2024-11-22 15:43:49 +01:00
Final minor changes for v0.44.0
This commit is contained in:
parent
d2762a99b1
commit
f1e43a86db
2
dist/engine.bundle.js
vendored
2
dist/engine.bundle.js
vendored
File diff suppressed because one or more lines are too long
122
dist/vendor.bundle.js
vendored
122
dist/vendor.bundle.js
vendored
File diff suppressed because one or more lines are too long
@ -3,6 +3,44 @@
|
|||||||
Changelog
|
Changelog
|
||||||
=========
|
=========
|
||||||
|
|
||||||
|
v0.44.0 - 2/26/2019
|
||||||
|
-------------------
|
||||||
|
* 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" and "Hands of Midas" skills
|
||||||
|
** 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
|
||||||
|
** Money earned from Contracts increased by 400%
|
||||||
|
** Changed the way population affects success rate. Extreme populations now have less dramatic effects
|
||||||
|
** Added two new General Actions: Diplomacy and Hyperbolic Regeneration Chamber
|
||||||
|
** Lowered the rep and money cost of the "Blade's Simulacrum" augmentation
|
||||||
|
** Significantly decreased the initial amount of Contracts/Operations (the "Contracts/Operations remaining" value)
|
||||||
|
** Decreased the rate at which the amount of Contracts/Operations increases over time
|
||||||
|
** Decreased the number of successes you need to increase the max level of a Contract/Operation
|
||||||
|
** Increased the average number of Synthoid communities each city has
|
||||||
|
** Reduced the amount by which a successful raid will decrease the population of a city
|
||||||
|
** The "riots" event will now increase the chaos of a city by a greater amount
|
||||||
|
** Significantly increased the effect that Agility and Dexterity have on action time
|
||||||
|
* Added new BitNode multipliers:
|
||||||
|
* 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
|
||||||
|
* FourSigmaMarketDataCost - Affects how much it costs to unlock the stock market's 4S Market Data
|
||||||
|
* FourSigmaMarketDataApiCost - Affects how much it costs to unlock the stock market's 4S Market Data API
|
||||||
|
* A few minor changes to BitNode multipliers across the board (mostly for the new multipliers)
|
||||||
|
* 'The Covenant' now requires 20 total Augmentations to get invited, rather than 30
|
||||||
|
* You can now purchase permanent Duplicate Sleeves from 'The Covenant'. This requires Source-File 10, and you must be in BN-10 or after
|
||||||
|
* You can now track where all of your money comes from in the 'Stats' page
|
||||||
|
* Increased the money gained from Coding Contracts by 50%
|
||||||
|
* getCharacterInformation() function now returns the player's HP and max HP
|
||||||
|
* Bug Fix: You can no longer disconnect the enemy's connections in Hacking Missions
|
||||||
|
* Bug Fix: Duplicate Sleeve faction reputation gain is now properly affected by faction favor
|
||||||
|
* Bug Fix: After installing Augmentations, the Terminal display will now correctly show the current server as "home"
|
||||||
|
* Bug Fix: Fixed an exploit where you could change the duration of timed functions (e.g. hack, weaken) in NetscriptJS
|
||||||
|
* Bug Fix: You should now properly be able to use the ServerProfile.exe program
|
||||||
|
* Bug Fix: Prevented exploit that allowed you to accept faction invites programmatically through NetscriptJS
|
||||||
|
* Bug Fix: Faction invitations for megacorporations should now work properly
|
||||||
|
|
||||||
v0.43.1 - 2/11/2019
|
v0.43.1 - 2/11/2019
|
||||||
-------------------
|
-------------------
|
||||||
* Terminal changes:
|
* Terminal changes:
|
||||||
|
@ -1954,7 +1954,7 @@ function initAugmentations() {
|
|||||||
resetAugmentation(BladeArmorIPU);
|
resetAugmentation(BladeArmorIPU);
|
||||||
|
|
||||||
var BladesSimulacrum = new Augmentation({
|
var BladesSimulacrum = new Augmentation({
|
||||||
name:AugmentationNames.BladesSimulacrum, repCost: 1e3, moneyCost: 100e9,
|
name:AugmentationNames.BladesSimulacrum, repCost: 500, moneyCost: 30e9,
|
||||||
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 " +
|
||||||
|
@ -45,35 +45,36 @@ const DifficultyToTimeFactor = 10; //Action Difficulty divided by this to
|
|||||||
//The difficulty multiplier affects stamina loss and hp loss of an action. Also affects
|
//The difficulty multiplier affects stamina loss and hp loss of an action. Also affects
|
||||||
//experience gain. Its formula is:
|
//experience gain. Its formula is:
|
||||||
//difficulty ^ exponentialFactor + difficulty / linearFactor
|
//difficulty ^ exponentialFactor + difficulty / linearFactor
|
||||||
const DiffMultExponentialFactor = 0.28;
|
const DiffMultExponentialFactor = 0.28;
|
||||||
const DiffMultLinearFactor = 650;
|
const DiffMultLinearFactor = 650;
|
||||||
|
|
||||||
// These factors are used to calculate action time.
|
// These factors are used to calculate action time.
|
||||||
// They affect how much action time is reduced based on your agility and dexterity
|
// They affect how much action time is reduced based on your agility and dexterity
|
||||||
const EffAgiLinearFactor = 38e3;
|
const EffAgiLinearFactor = 10e3;
|
||||||
const EffDexLinearFactor = 38e3;
|
const EffDexLinearFactor = 10e3;
|
||||||
const EffAgiExponentialFactor = 0.033;
|
const EffAgiExponentialFactor = 0.04;
|
||||||
const EffDexExponentialFactor = 0.03;
|
const EffDexExponentialFactor = 0.035;
|
||||||
|
|
||||||
const BaseRecruitmentTimeNeeded = 300; //Base time needed (s) to complete a Recruitment action
|
const BaseRecruitmentTimeNeeded = 300; //Base time needed (s) to complete a Recruitment action
|
||||||
|
|
||||||
const PopulationThreshold = 1e9; //Population at which success rates start being affected
|
const PopulationThreshold = 1e9; // Population which determines baseline success rate
|
||||||
const ChaosThreshold = 50; //City chaos level after which it starts making tasks harder
|
const PopulationExponent = 0.7; // Exponent that influences how different populations affect success rate
|
||||||
|
const ChaosThreshold = 50; //City chaos level after which it starts making tasks harder
|
||||||
|
|
||||||
const BaseStatGain = 1; //Base stat gain per second
|
const BaseStatGain = 1; //Base stat gain per second
|
||||||
const BaseIntGain = 0.001; //Base intelligence stat gain
|
const BaseIntGain = 0.001; //Base intelligence stat gain
|
||||||
|
|
||||||
const ActionCountGrowthPeriod = 480; //Time (s) it takes for action count to grow by its specified value
|
const ActionCountGrowthPeriod = 480; //Time (s) it takes for action count to grow by its specified value
|
||||||
|
|
||||||
const RankToFactionRepFactor = 2; //Delta Faction Rep = this * Delta Rank
|
const RankToFactionRepFactor = 2; //Delta Faction Rep = this * Delta Rank
|
||||||
const RankNeededForFaction = 25;
|
const RankNeededForFaction = 25;
|
||||||
|
|
||||||
const ContractSuccessesPerLevel = 3; //How many successes you need to level up a contract
|
const ContractSuccessesPerLevel = 3; //How many successes you need to level up a contract
|
||||||
const OperationSuccessesPerLevel = 2.5; //How many successes you need to level up an op
|
const OperationSuccessesPerLevel = 2.5; //How many successes you need to level up an op
|
||||||
|
|
||||||
const RanksPerSkillPoint = 3; //How many ranks needed to get 1 Skill Point
|
const RanksPerSkillPoint = 3; //How many ranks needed to get 1 Skill Point
|
||||||
|
|
||||||
const ContractBaseMoneyGain = 100e3; //Base Money Gained per contract
|
const ContractBaseMoneyGain = 250e3; //Base Money Gained per contract
|
||||||
|
|
||||||
const HrcHpGain = 2; // HP gained from Hyperbolic Regeneration Chamber
|
const HrcHpGain = 2; // HP gained from Hyperbolic Regeneration Chamber
|
||||||
const HrcStaminaGain = 0.1; // Stamina gained from Hyperbolic Regeneration Chamber
|
const HrcStaminaGain = 0.1; // Stamina gained from Hyperbolic Regeneration Chamber
|
||||||
@ -497,9 +498,9 @@ Action.prototype.getSuccessChance = function(inst, params={}) {
|
|||||||
if (!(this instanceof BlackOperation)) {
|
if (!(this instanceof BlackOperation)) {
|
||||||
var city = inst.getCurrentCity();
|
var city = inst.getCurrentCity();
|
||||||
if (params.est) {
|
if (params.est) {
|
||||||
competence *= (city.popEst / PopulationThreshold);
|
competence *= Math.pow((city.popEst / PopulationThreshold), PopulationExponent);
|
||||||
} else {
|
} else {
|
||||||
competence *= (city.pop / PopulationThreshold);
|
competence *= Math.pow((city.pop / PopulationThreshold), PopulationExponent);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Too high of a chaos results in lower chances
|
//Too high of a chaos results in lower chances
|
||||||
@ -1407,7 +1408,6 @@ Bladeburner.prototype.completeAction = function() {
|
|||||||
break;
|
break;
|
||||||
case ActionTypes["Diplomacy"]:
|
case ActionTypes["Diplomacy"]:
|
||||||
var eff = this.getDiplomacyEffectiveness();
|
var eff = this.getDiplomacyEffectiveness();
|
||||||
console.log(`Diplomacy Effectiveness: ${eff}`);
|
|
||||||
this.getCurrentCity().chaos *= eff;
|
this.getCurrentCity().chaos *= eff;
|
||||||
if (this.getCurrentCity().chaos < 0) { this.getCurrentCity().chaos = 0; }
|
if (this.getCurrentCity().chaos < 0) { this.getCurrentCity().chaos = 0; }
|
||||||
if (this.logging.general) {
|
if (this.logging.general) {
|
||||||
@ -1547,7 +1547,7 @@ Bladeburner.prototype.getRecruitmentSuccessChance = function() {
|
|||||||
|
|
||||||
Bladeburner.prototype.getDiplomacyEffectiveness = function() {
|
Bladeburner.prototype.getDiplomacyEffectiveness = function() {
|
||||||
// Returns a decimal by which the city's chaos level should be multiplied (e.g. 0.98)
|
// Returns a decimal by which the city's chaos level should be multiplied (e.g. 0.98)
|
||||||
const CharismaLinearFactor = 4e3;
|
const CharismaLinearFactor = 1e3;
|
||||||
const CharismaExponentialFactor = 0.045;
|
const CharismaExponentialFactor = 0.045;
|
||||||
|
|
||||||
const charismaEff = Math.pow(Player.charisma, CharismaExponentialFactor) + Player.charisma / CharismaLinearFactor;
|
const charismaEff = Math.pow(Player.charisma, CharismaExponentialFactor) + Player.charisma / CharismaLinearFactor;
|
||||||
@ -1656,7 +1656,7 @@ Bladeburner.prototype.randomEvent = function() {
|
|||||||
}
|
}
|
||||||
} else if (chance <= 0.9) {
|
} else if (chance <= 0.9) {
|
||||||
//Less Synthoids, 20%
|
//Less Synthoids, 20%
|
||||||
var percentage = getRandomInt(5, 20) / 100;
|
var percentage = getRandomInt(8, 20) / 100;
|
||||||
var count = Math.round(sourceCity.pop * percentage);
|
var count = Math.round(sourceCity.pop * percentage);
|
||||||
sourceCity.pop -= count;
|
sourceCity.pop -= count;
|
||||||
if (this.logging.events) {
|
if (this.logging.events) {
|
||||||
@ -3882,7 +3882,7 @@ function initBladeburner() {
|
|||||||
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 4%",
|
"dexterity and agility for Bladeburner actions by 4%",
|
||||||
baseCost: 2, costInc: 1.2,
|
baseCost: 2, costInc: 2.1,
|
||||||
effDex: 4, effAgi: 4
|
effDex: 4, effAgi: 4
|
||||||
});
|
});
|
||||||
Skills[SkillNames.Datamancer] = new Skill({
|
Skills[SkillNames.Datamancer] = new Skill({
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import {IMap} from "./types";
|
import {IMap} from "./types";
|
||||||
|
|
||||||
export let CONSTANTS: IMap<any> = {
|
export let CONSTANTS: IMap<any> = {
|
||||||
Version: "0.43.1",
|
Version: "0.44.0",
|
||||||
|
|
||||||
//Max level for any skill, assuming no multipliers. Determined by max numerical value in javascript for experience
|
//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
|
//and the skill level formula in Player.js. Note that all this means it that when experience hits MAX_INT, then
|
||||||
@ -517,16 +517,17 @@ export let CONSTANTS: IMap<any> = {
|
|||||||
** Increased the effect of the "Hyperdrive" and "Hands of Midas" skills
|
** Increased the effect of the "Hyperdrive" and "Hands of Midas" skills
|
||||||
** Slightly increased the rate which the skill point cost rises for almost all skills
|
** 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
|
** The "Overlock" Skill now has a maximum level of 90 instead of 95
|
||||||
** Money earned from Contracts increased by 100%
|
** Money earned from Contracts increased by 400%
|
||||||
|
** Changed the way population affects success rate. Extreme populations now have less dramatic effects
|
||||||
** Added two new General Actions: Diplomacy and Hyperbolic Regeneration Chamber
|
** Added two new General Actions: Diplomacy and Hyperbolic Regeneration Chamber
|
||||||
** Lowered the rep cost of the "Blade's Simulacrum" augmentation, but increased the price
|
** Lowered the rep and money cost of the "Blade's Simulacrum" augmentation
|
||||||
** Significantly decreased the initial amount of Contracts/Operations (the "Contracts/Operations remaining" value)
|
** Significantly decreased the initial amount of Contracts/Operations (the "Contracts/Operations remaining" value)
|
||||||
** Decreased the rate at which the amount of Contracts/Operations increases over time
|
** Decreased the rate at which the amount of Contracts/Operations increases over time
|
||||||
** Decreased the number of successes you need to increase the max level of a Contract/Operation
|
** Decreased the number of successes you need to increase the max level of a Contract/Operation
|
||||||
** Increased the average number of Synthoid communities each city has
|
** Increased the average number of Synthoid communities each city has
|
||||||
** Reduced the amount by which a successful raid will decrease the population of a city
|
** Reduced the amount by which a successful raid will decrease the population of a city
|
||||||
** The "riots" event will now increase the chaos of a city by a greater amount
|
** The "riots" event will now increase the chaos of a city by a greater amount
|
||||||
** Slightly increased the effect that Agility and Dexterity have on action time
|
** Significantly increased the effect that Agility and Dexterity have on action time
|
||||||
|
|
||||||
* 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
|
||||||
@ -541,10 +542,12 @@ export let CONSTANTS: IMap<any> = {
|
|||||||
* Increased the money gained from Coding Contracts by 50%
|
* Increased the money gained from Coding Contracts by 50%
|
||||||
* getCharacterInformation() function now returns the player's HP and max HP
|
* getCharacterInformation() function now returns the player's HP and max HP
|
||||||
* Bug Fix: You can no longer disconnect the enemy's connections in Hacking Missions
|
* Bug Fix: You can no longer disconnect the enemy's connections in Hacking Missions
|
||||||
|
* Bug Fix: Duplicate Sleeve faction reputation gain is now properly affected by faction favor
|
||||||
* Bug Fix: After installing Augmentations, the Terminal display will now correctly show the current server as "home"
|
* Bug Fix: After installing Augmentations, the Terminal display will now correctly show the current server as "home"
|
||||||
* Bug Fix: Fixed an exploit where you could change the duration of timed functions (e.g. hack, weaken) in NetscriptJS
|
* Bug Fix: Fixed an exploit where you could change the duration of timed functions (e.g. hack, weaken) in NetscriptJS
|
||||||
* Bug Fix: You should now properly be able to use the ServerProfile.exe program
|
* Bug Fix: You should now properly be able to use the ServerProfile.exe program
|
||||||
* Bug Fix: Prevented exploit that allowed you to accept faction invites programmatically through NetscriptJS
|
* Bug Fix: Prevented exploit that allowed you to accept faction invites programmatically through NetscriptJS
|
||||||
|
* Bug Fix: Faction invitations for megacorporations should now work properly
|
||||||
`
|
`
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -267,7 +267,19 @@ export function createDevMenu() {
|
|||||||
Player.queueAugmentation(augmentationsDropdown.options[augmentationsDropdown.selectedIndex].value);
|
Player.queueAugmentation(augmentationsDropdown.options[augmentationsDropdown.selectedIndex].value);
|
||||||
},
|
},
|
||||||
innerText: "Queue Augmentation",
|
innerText: "Queue Augmentation",
|
||||||
})
|
});
|
||||||
|
|
||||||
|
const giveAllAugmentationsButton = createElement("button", {
|
||||||
|
class: "std-button",
|
||||||
|
clickListener: () => {
|
||||||
|
for (const i in AugmentationNames) {
|
||||||
|
const augName = AugmentationNames[i];
|
||||||
|
Player.queueAugmentation(augName);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
display: "block",
|
||||||
|
innerText: "Queue All Augmentations",
|
||||||
|
});
|
||||||
|
|
||||||
// Source Files
|
// Source Files
|
||||||
const sourceFilesHeader = createElement("h2", { innerText: "Source-Files" });
|
const sourceFilesHeader = createElement("h2", { innerText: "Source-Files" });
|
||||||
@ -621,6 +633,7 @@ export function createDevMenu() {
|
|||||||
devMenuContainer.appendChild(augmentationsHeader);
|
devMenuContainer.appendChild(augmentationsHeader);
|
||||||
devMenuContainer.appendChild(augmentationsDropdown);
|
devMenuContainer.appendChild(augmentationsDropdown);
|
||||||
devMenuContainer.appendChild(augmentationsQueueButton);
|
devMenuContainer.appendChild(augmentationsQueueButton);
|
||||||
|
devMenuContainer.appendChild(giveAllAugmentationsButton);
|
||||||
devMenuContainer.appendChild(sourceFilesHeader);
|
devMenuContainer.appendChild(sourceFilesHeader);
|
||||||
devMenuContainer.appendChild(removeSourceFileDropdown);
|
devMenuContainer.appendChild(removeSourceFileDropdown);
|
||||||
devMenuContainer.appendChild(removeSourceFileButton);
|
devMenuContainer.appendChild(removeSourceFileButton);
|
||||||
|
@ -139,7 +139,7 @@ function displayFactionContent(factionName) {
|
|||||||
var hackDivWrapper = createElement("div", {class:"faction-work-div-wrapper"});
|
var hackDivWrapper = createElement("div", {class:"faction-work-div-wrapper"});
|
||||||
hackDiv.appendChild(hackDivWrapper);
|
hackDiv.appendChild(hackDivWrapper);
|
||||||
hackDivWrapper.appendChild(createElement("a", {
|
hackDivWrapper.appendChild(createElement("a", {
|
||||||
class:"a-link-button", innerText:"Hacking Contracts",
|
class:"std-button", innerText:"Hacking Contracts",
|
||||||
clickListener:()=>{
|
clickListener:()=>{
|
||||||
Player.startFactionHackWork(faction);
|
Player.startFactionHackWork(faction);
|
||||||
return false;
|
return false;
|
||||||
@ -158,7 +158,7 @@ function displayFactionContent(factionName) {
|
|||||||
var fieldWorkDivWrapper = createElement("div", {class:"faction-work-div-wrapper"});
|
var fieldWorkDivWrapper = createElement("div", {class:"faction-work-div-wrapper"});
|
||||||
fieldWorkDiv.appendChild(fieldWorkDivWrapper);
|
fieldWorkDiv.appendChild(fieldWorkDivWrapper);
|
||||||
fieldWorkDivWrapper.appendChild(createElement("a", {
|
fieldWorkDivWrapper.appendChild(createElement("a", {
|
||||||
class:"a-link-button", innerText:"Field Work",
|
class:"std-button", innerText:"Field Work",
|
||||||
clickListener:()=>{
|
clickListener:()=>{
|
||||||
Player.startFactionFieldWork(faction);
|
Player.startFactionFieldWork(faction);
|
||||||
return false;
|
return false;
|
||||||
@ -177,7 +177,7 @@ function displayFactionContent(factionName) {
|
|||||||
var securityWorkDivWrapper = createElement("div", {class:"faction-work-div-wrapper"});
|
var securityWorkDivWrapper = createElement("div", {class:"faction-work-div-wrapper"});
|
||||||
securityWorkDiv.appendChild(securityWorkDivWrapper);
|
securityWorkDiv.appendChild(securityWorkDivWrapper);
|
||||||
securityWorkDivWrapper.appendChild(createElement("a", {
|
securityWorkDivWrapper.appendChild(createElement("a", {
|
||||||
class:"a-link-button", innerText:"Security Work",
|
class:"std-button", innerText:"Security Work",
|
||||||
clickListener:()=>{
|
clickListener:()=>{
|
||||||
Player.startFactionSecurityWork(faction);
|
Player.startFactionSecurityWork(faction);
|
||||||
return false;
|
return false;
|
||||||
@ -215,7 +215,7 @@ function displayFactionContent(factionName) {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
donateDivWrapper.appendChild(createElement("a", {
|
donateDivWrapper.appendChild(createElement("a", {
|
||||||
class:"a-link-button", innerText:"Donate Money",
|
class:"std-button", innerText:"Donate Money",
|
||||||
clickListener:()=>{
|
clickListener:()=>{
|
||||||
var amt = parseFloat(donateAmountInput.value);
|
var amt = parseFloat(donateAmountInput.value);
|
||||||
if (isNaN(amt) || amt < 0) {
|
if (isNaN(amt) || amt < 0) {
|
||||||
@ -236,25 +236,6 @@ function displayFactionContent(factionName) {
|
|||||||
donateDivWrapper.appendChild(donateRepGain);
|
donateDivWrapper.appendChild(donateRepGain);
|
||||||
elements.push(donateDiv);
|
elements.push(donateDiv);
|
||||||
|
|
||||||
//Purchase Augmentations
|
|
||||||
elements.push(createElement("pre", {
|
|
||||||
innerHTML: "<br>As your reputation with this faction rises, you will " +
|
|
||||||
"unlock Augmentations, which you can purchase to enhance " +
|
|
||||||
"your abilities.<br><br>"
|
|
||||||
}));
|
|
||||||
elements.push(createElement("a", {
|
|
||||||
class:"std-button",
|
|
||||||
innerText:"Purchase Augmentations",
|
|
||||||
margin: "5px",
|
|
||||||
clickListener:()=>{
|
|
||||||
Engine.hideAllContent();
|
|
||||||
Engine.Display.factionAugmentationsContent.style.display = "block";
|
|
||||||
|
|
||||||
displayFactionAugmentations(factionName);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
|
|
||||||
//Gang (BitNode-2)
|
//Gang (BitNode-2)
|
||||||
if (Player.bitNodeN == 2 && (factionName == "Slum Snakes" || factionName == "Tetrads" ||
|
if (Player.bitNodeN == 2 && (factionName == "Slum Snakes" || factionName == "Tetrads" ||
|
||||||
factionName == "The Syndicate" || factionName == "The Dark Army" || factionName == "Speakers for the Dead" ||
|
factionName == "The Syndicate" || factionName == "The Dark Army" || factionName == "Speakers for the Dead" ||
|
||||||
@ -337,10 +318,10 @@ function displayFactionContent(factionName) {
|
|||||||
|
|
||||||
// Purchase Sleeves from Covenant
|
// Purchase Sleeves from Covenant
|
||||||
if (factionName === "The Covenant" && 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", display: "inline" });
|
||||||
const covenantPurchaseSleevesDivWrapper = createElement("div", { class: "faction-wkro-div-wrapper" });
|
const covenantPurchaseSleevesDivWrapper = createElement("div", { class: "faction-work-div-wrapper" });
|
||||||
covenantPurchaseSleevesDiv.appendChild(covenantPurchaseSleevesDivWrapper);
|
covenantPurchaseSleevesDiv.appendChild(covenantPurchaseSleevesDivWrapper);
|
||||||
covenantPurchaseSleevesDivWrapper.appendChild(createElement("button", {
|
covenantPurchaseSleevesDivWrapper.appendChild(createElement("a", {
|
||||||
class: "std-button",
|
class: "std-button",
|
||||||
innerText: "Purchase Duplicate Sleeves",
|
innerText: "Purchase Duplicate Sleeves",
|
||||||
clickListener: () => {
|
clickListener: () => {
|
||||||
@ -354,6 +335,29 @@ function displayFactionContent(factionName) {
|
|||||||
elements.push(covenantPurchaseSleevesDiv);
|
elements.push(covenantPurchaseSleevesDiv);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Purchase Augmentations
|
||||||
|
const purchaseAugmentationsDiv = createElement("div", { class: "faction-work-div", display: "inline" });
|
||||||
|
const purchaseAugmentationsDivWrapper = createElement("div", { class: "faction-work-div-wrapper" });
|
||||||
|
purchaseAugmentationsDiv.appendChild(purchaseAugmentationsDivWrapper);
|
||||||
|
purchaseAugmentationsDivWrapper.appendChild(createElement("a", {
|
||||||
|
class:"std-button",
|
||||||
|
innerText:"Purchase Augmentations",
|
||||||
|
margin: "5px",
|
||||||
|
clickListener:()=>{
|
||||||
|
Engine.hideAllContent();
|
||||||
|
Engine.Display.factionAugmentationsContent.style.display = "block";
|
||||||
|
|
||||||
|
displayFactionAugmentations(factionName);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
purchaseAugmentationsDivWrapper.appendChild(createElement("pre", {
|
||||||
|
innerHTML: "<br>As your reputation with this faction rises, you will " +
|
||||||
|
"unlock Augmentations, which you can purchase to enhance " +
|
||||||
|
"your abilities.<br><br>"
|
||||||
|
}));
|
||||||
|
elements.push(purchaseAugmentationsDiv);
|
||||||
|
|
||||||
// Determine if actions should be possible
|
// Determine if actions should be possible
|
||||||
donateDiv.style.display = faction.favor >= Math.floor(CONSTANTS.BaseFavorToDonate * BitNodeMultipliers.RepToDonateToFaction) ? "inline" : "none";
|
donateDiv.style.display = faction.favor >= Math.floor(CONSTANTS.BaseFavorToDonate * BitNodeMultipliers.RepToDonateToFaction) ? "inline" : "none";
|
||||||
|
|
||||||
|
@ -338,13 +338,19 @@ export class Sleeve extends Person {
|
|||||||
*/
|
*/
|
||||||
getRepGain(p: IPlayer): number {
|
getRepGain(p: IPlayer): number {
|
||||||
if (this.currentTask === SleeveTaskType.Faction) {
|
if (this.currentTask === SleeveTaskType.Faction) {
|
||||||
|
let favorMult: number = 1;
|
||||||
|
const fac: Faction | null = Factions[this.currentTaskLocation];
|
||||||
|
if (fac != null) {
|
||||||
|
favorMult = 1 + (fac!.favor / 100);
|
||||||
|
}
|
||||||
|
|
||||||
switch (this.factionWorkType) {
|
switch (this.factionWorkType) {
|
||||||
case FactionWorkType.Hacking:
|
case FactionWorkType.Hacking:
|
||||||
return this.getFactionHackingWorkRepGain() * (this.shock / 100);
|
return this.getFactionHackingWorkRepGain() * (this.shock / 100) * favorMult;
|
||||||
case FactionWorkType.Field:
|
case FactionWorkType.Field:
|
||||||
return this.getFactionFieldWorkRepGain() * (this.shock / 100);
|
return this.getFactionFieldWorkRepGain() * (this.shock / 100) * favorMult;
|
||||||
case FactionWorkType.Security:
|
case FactionWorkType.Security:
|
||||||
return this.getFactionSecurityWorkRepGain() * (this.shock / 100);
|
return this.getFactionSecurityWorkRepGain() * (this.shock / 100) * favorMult;
|
||||||
default:
|
default:
|
||||||
console.warn(`Invalid Sleeve.factionWorkType property in Sleeve.getRepGain(): ${this.factionWorkType}`);
|
console.warn(`Invalid Sleeve.factionWorkType property in Sleeve.getRepGain(): ${this.factionWorkType}`);
|
||||||
return 0;
|
return 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user