Merge pull request #3213 from danielyxie/dev

critical bug fix
This commit is contained in:
hydroflame 2022-03-21 00:32:32 -04:00 committed by GitHub
commit 4b7b34833b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 136 additions and 109 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -138,7 +138,6 @@ function initAugmentations(): void {
(key) => ((UnstableCircadianModulatorParams as any)[key] = randomBonuses.bonuses[key]), (key) => ((UnstableCircadianModulatorParams as any)[key] = randomBonuses.bonuses[key]),
); );
//Misc/Hybrid augmentations //Misc/Hybrid augmentations
const NeuroFluxGovernor = new Augmentation({ const NeuroFluxGovernor = new Augmentation({
name: AugmentationNames.NeuroFluxGovernor, name: AugmentationNames.NeuroFluxGovernor,
@ -221,11 +220,7 @@ function initAugmentations(): void {
defense_mult: 1.08, defense_mult: 1.08,
agility_mult: 1.08, agility_mult: 1.08,
dexterity_mult: 1.08, dexterity_mult: 1.08,
factions: [ factions: [FactionNames.Tetrads, FactionNames.TheDarkArmy, FactionNames.TheSyndicate],
FactionNames.Tetrads,
FactionNames.TheDarkArmy,
FactionNames.TheSyndicate,
],
}), }),
new Augmentation({ new Augmentation({
name: AugmentationNames.Targeting1, name: AugmentationNames.Targeting1,
@ -638,7 +633,13 @@ function initAugmentations(): void {
"memory and the mind. This implant allows the user to not only access a computer's memory, but also alter " + "memory and the mind. This implant allows the user to not only access a computer's memory, but also alter " +
"and delete it.", "and delete it.",
hacking_money_mult: 1.25, hacking_money_mult: 1.25,
factions: [FactionNames.BitRunners, FactionNames.TheBlackHand, FactionNames.NiteSec, FactionNames.Chongqing, FactionNames.NewTokyo], factions: [
FactionNames.BitRunners,
FactionNames.TheBlackHand,
FactionNames.NiteSec,
FactionNames.Chongqing,
FactionNames.NewTokyo,
],
}), }),
new Augmentation({ new Augmentation({
name: AugmentationNames.ENM, name: AugmentationNames.ENM,
@ -947,7 +948,12 @@ function initAugmentations(): void {
charisma_exp_mult: 1.05, charisma_exp_mult: 1.05,
company_rep_mult: 1.1, company_rep_mult: 1.1,
work_money_mult: 1.2, work_money_mult: 1.2,
factions: [FactionNames.BachmanAssociates, FactionNames.ClarkeIncorporated, FactionNames.FourSigma, FactionNames.KuaiGongInternational], factions: [
FactionNames.BachmanAssociates,
FactionNames.ClarkeIncorporated,
FactionNames.FourSigma,
FactionNames.KuaiGongInternational,
],
}), }),
new Augmentation({ new Augmentation({
name: AugmentationNames.PCDNI, name: AugmentationNames.PCDNI,
@ -959,7 +965,12 @@ function initAugmentations(): void {
"it using the brain's electrochemical signals.", "it using the brain's electrochemical signals.",
company_rep_mult: 1.3, company_rep_mult: 1.3,
hacking_mult: 1.08, hacking_mult: 1.08,
factions: [FactionNames.FourSigma, FactionNames.OmniTekIncorporated, FactionNames.ECorp, FactionNames.BladeIndustries], factions: [
FactionNames.FourSigma,
FactionNames.OmniTekIncorporated,
FactionNames.ECorp,
FactionNames.BladeIndustries,
],
}), }),
new Augmentation({ new Augmentation({
name: AugmentationNames.PCDNIOptimizer, name: AugmentationNames.PCDNIOptimizer,
@ -999,7 +1010,13 @@ function initAugmentations(): void {
"triggers feelings of admiration and approval in other people.", "triggers feelings of admiration and approval in other people.",
company_rep_mult: 1.1, company_rep_mult: 1.1,
faction_rep_mult: 1.1, faction_rep_mult: 1.1,
factions: [FactionNames.TianDiHui, FactionNames.TheSyndicate, FactionNames.NWO, FactionNames.MegaCorp, FactionNames.FourSigma], factions: [
FactionNames.TianDiHui,
FactionNames.TheSyndicate,
FactionNames.NWO,
FactionNames.MegaCorp,
FactionNames.FourSigma,
],
}), }),
new Augmentation({ new Augmentation({
name: AugmentationNames.ADRPheromone2, name: AugmentationNames.ADRPheromone2,
@ -1011,7 +1028,12 @@ function initAugmentations(): void {
"triggers feelings of admiration, approval, and respect in others.", "triggers feelings of admiration, approval, and respect in others.",
company_rep_mult: 1.2, company_rep_mult: 1.2,
faction_rep_mult: 1.2, faction_rep_mult: 1.2,
factions: [FactionNames.Silhouette, FactionNames.FourSigma, FactionNames.BachmanAssociates, FactionNames.ClarkeIncorporated], factions: [
FactionNames.Silhouette,
FactionNames.FourSigma,
FactionNames.BachmanAssociates,
FactionNames.ClarkeIncorporated,
],
}), }),
new Augmentation({ new Augmentation({
name: AugmentationNames.ShadowsSimulacrum, name: AugmentationNames.ShadowsSimulacrum,
@ -1025,11 +1047,7 @@ function initAugmentations(): void {
"espionage and surveillance work.", "espionage and surveillance work.",
company_rep_mult: 1.15, company_rep_mult: 1.15,
faction_rep_mult: 1.15, faction_rep_mult: 1.15,
factions: [ factions: [FactionNames.TheSyndicate, FactionNames.TheDarkArmy, FactionNames.SpeakersForTheDead],
FactionNames.TheSyndicate,
FactionNames.TheDarkArmy,
FactionNames.SpeakersForTheDead
],
}), }),
new Augmentation({ new Augmentation({
name: AugmentationNames.HacknetNodeCPUUpload, name: AugmentationNames.HacknetNodeCPUUpload,
@ -1443,8 +1461,8 @@ function initAugmentations(): void {
moneyCost: 1.25e8, moneyCost: 1.25e8,
info: ( info: (
<> <>
A collection of digital assets saved on a small chip. The chip is implanted into your wrist. A small jack in the A collection of digital assets saved on a small chip. The chip is implanted into your wrist. A small jack in
chip allows you to connect it to a computer and upload the assets. the chip allows you to connect it to a computer and upload the assets.
</> </>
), ),
startingMoney: 1e6, startingMoney: 1e6,
@ -1582,12 +1600,12 @@ function initAugmentations(): void {
), ),
factions: [FactionNames.TianDiHui], factions: [FactionNames.TianDiHui],
}), }),
] ];
// Special Bladeburner Augmentations // Special Bladeburner Augmentations
const BladeburnersFactionName = FactionNames.Bladeburners; const BladeburnersFactionName = FactionNames.Bladeburners;
if (factionExists(BladeburnersFactionName)) { if (factionExists(BladeburnersFactionName)) {
augmentations.concat([ augmentations.push(
new Augmentation({ new Augmentation({
name: AugmentationNames.EsperEyewear, name: AugmentationNames.EsperEyewear,
repCost: 1.25e3, repCost: 1.25e3,
@ -1850,13 +1868,13 @@ function initAugmentations(): void {
isSpecial: true, isSpecial: true,
factions: [BladeburnersFactionName], factions: [BladeburnersFactionName],
}), }),
]) );
} }
// Special CotMG Augmentations // Special CotMG Augmentations
const ChurchOfTheMachineGodFactionName = FactionNames.ChurchOfTheMachineGod; const ChurchOfTheMachineGodFactionName = FactionNames.ChurchOfTheMachineGod;
if (factionExists(ChurchOfTheMachineGodFactionName)) { if (factionExists(ChurchOfTheMachineGodFactionName)) {
augmentations.concat([ augmentations.push(
new Augmentation({ new Augmentation({
name: AugmentationNames.StaneksGift1, name: AugmentationNames.StaneksGift1,
repCost: 0, repCost: 0,
@ -1975,10 +1993,10 @@ function initAugmentations(): void {
stats: <>Staneks Gift has no penalty.</>, stats: <>Staneks Gift has no penalty.</>,
factions: [ChurchOfTheMachineGodFactionName], factions: [ChurchOfTheMachineGodFactionName],
}), }),
]) );
} }
augmentations.map(resetAugmentation) augmentations.map(resetAugmentation);
// Update costs based on how many have been purchased // Update costs based on how many have been purchased
mult = Math.pow( mult = Math.pow(
@ -2069,9 +2087,9 @@ function installAugmentations(): boolean {
Player.queuedAugmentations = []; Player.queuedAugmentations = [];
dialogBoxCreate( dialogBoxCreate(
"You slowly drift to sleep as scientists put you under in order " + "You slowly drift to sleep as scientists put you under in order " +
"to install the following Augmentations:<br>" + "to install the following Augmentations:<br>" +
augmentationList + augmentationList +
"<br>You wake up in your home...you feel different...", "<br>You wake up in your home...you feel different...",
); );
prestigeAugmentation(); prestigeAugmentation();
return true; return true;

@ -14,7 +14,6 @@ import Tooltip from "@mui/material/Tooltip";
import { Settings } from "../../Settings/Settings"; import { Settings } from "../../Settings/Settings";
import Button from "@mui/material/Button"; import Button from "@mui/material/Button";
const useStyles = makeStyles(() => const useStyles = makeStyles(() =>
createStyles({ createStyles({
portal: { portal: {
@ -70,7 +69,7 @@ function BitNodePortal(props: IPortalProps): React.ReactElement {
if (props.level === 2) { if (props.level === 2) {
cssClass = classes.level2; cssClass = classes.level2;
} }
cssClass = `${classes.portal} ${cssClass}` cssClass = `${classes.portal} ${cssClass}`;
return ( return (
<> <>
@ -86,12 +85,10 @@ function BitNodePortal(props: IPortalProps): React.ReactElement {
} }
> >
{Settings.DisableASCIIArt ? ( {Settings.DisableASCIIArt ? (
<Button <Button onClick={() => setPortalOpen(true)} sx={{ m: 2 }} aria-description={bitNode.desc}>
onClick={() => setPortalOpen(true)} <Typography>
sx={{ m: 2 }} BitNode-{bitNode.number.toString()}: {bitNode.name}
aria-description={bitNode.desc} </Typography>
>
<Typography>BitNode-{bitNode.number.toString()}: {bitNode.name}</Typography>
</Button> </Button>
) : ( ) : (
<IconButton <IconButton
@ -114,9 +111,7 @@ function BitNodePortal(props: IPortalProps): React.ReactElement {
flume={props.flume} flume={props.flume}
/> />
{Settings.DisableASCIIArt && ( {Settings.DisableASCIIArt && <br />}
<br/>
)}
</> </>
); );
} }
@ -173,46 +168,57 @@ export function BitverseRoot(props: IProps): React.ReactElement {
if (Settings.DisableASCIIArt) { if (Settings.DisableASCIIArt) {
return ( return (
<> <>
{Object.values(BitNodes).filter((node) => { {Object.values(BitNodes)
console.log(node.desc); .filter((node) => {
return node.desc !== 'COMING SOON'; console.log(node.desc);
}).map((node) => { return node.desc !== "COMING SOON";
return ( })
<BitNodePortal key={node.number} n={node.number} level={nextSourceFileFlags[node.number]} enter={enter} flume={props.flume} destroyedBitNode={destroyed} /> .map((node) => {
) return (
})} <BitNodePortal
key={node.number}
n={node.number}
level={nextSourceFileFlags[node.number]}
enter={enter}
flume={props.flume}
destroyedBitNode={destroyed}
/>
);
})}
<br /> <br />
<br /> <br />
<br /> <br />
<br /> <br />
<CinematicText lines={[ <CinematicText
"> Many decades ago, a humanoid extraterrestrial species which we call the Enders descended on the Earth...violently", lines={[
"> Our species fought back, but it was futile. The Enders had technology far beyond our own...", "> Many decades ago, a humanoid extraterrestrial species which we call the Enders descended on the Earth...violently",
"> Instead of killing every last one of us, the human race was enslaved...", "> Our species fought back, but it was futile. The Enders had technology far beyond our own...",
"> We were shackled in a digital world, chained into a prison for our minds...", "> Instead of killing every last one of us, the human race was enslaved...",
"> Using their advanced technology, the Enders created complex simulations of a virtual reality...", "> We were shackled in a digital world, chained into a prison for our minds...",
"> Simulations designed to keep us content...ignorant of the truth.", "> Using their advanced technology, the Enders created complex simulations of a virtual reality...",
"> Simulations used to trap and suppress our consciousness, to keep us under control...", "> Simulations designed to keep us content...ignorant of the truth.",
"> Why did they do this? Why didn't they just end our entire race? We don't know, not yet.", "> Simulations used to trap and suppress our consciousness, to keep us under control...",
"> Humanity's only hope is to destroy these simulations, destroy the only realities we've ever known...", "> Why did they do this? Why didn't they just end our entire race? We don't know, not yet.",
"> Only then can we begin to fight back...", "> Humanity's only hope is to destroy these simulations, destroy the only realities we've ever known...",
"> By hacking the daemon that generated your reality, you've just destroyed one simulation, called a BitNode...", "> Only then can we begin to fight back...",
"> But there is still a long way to go...", "> By hacking the daemon that generated your reality, you've just destroyed one simulation, called a BitNode...",
"> The technology the Enders used to enslave the human race wasn't just a single complex simulation...", "> But there is still a long way to go...",
"> There are tens if not hundreds of BitNodes out there...", "> The technology the Enders used to enslave the human race wasn't just a single complex simulation...",
"> Each with their own simulations of a reality...", "> There are tens if not hundreds of BitNodes out there...",
"> Each creating their own universes...a universe of universes", "> Each with their own simulations of a reality...",
"> And all of which must be destroyed...", "> Each creating their own universes...a universe of universes",
"> .......................................", "> And all of which must be destroyed...",
"> Welcome to the Bitverse...", "> .......................................",
"> ", "> Welcome to the Bitverse...",
"> (Enter a new BitNode using the image above)", "> ",
]} /> "> (Enter a new BitNode using the image above)",
]}
/>
</> </>
) );
} }
return ( return (
// prettier-ignore // prettier-ignore
<> <>
<Typography sx={{lineHeight: '1em',whiteSpace: 'pre'}}> O </Typography> <Typography sx={{lineHeight: '1em',whiteSpace: 'pre'}}> O </Typography>
<Typography sx={{lineHeight: '1em',whiteSpace: 'pre'}}> | O O | O O | </Typography> <Typography sx={{lineHeight: '1em',whiteSpace: 'pre'}}> | O O | O O | </Typography>

@ -667,15 +667,15 @@ export class Bladeburner implements IBladeburner {
this.postToConsole("Automation: " + (this.automateEnabled ? "enabled" : "disabled")); this.postToConsole("Automation: " + (this.automateEnabled ? "enabled" : "disabled"));
this.postToConsole( this.postToConsole(
"When your stamina drops to " + "When your stamina drops to " +
formatNumber(this.automateThreshLow, 0) + formatNumber(this.automateThreshLow, 0) +
", you will automatically switch to " + ", you will automatically switch to " +
this.automateActionLow.name + this.automateActionLow.name +
". When your stamina recovers to " + ". When your stamina recovers to " +
formatNumber(this.automateThreshHigh, 0) + formatNumber(this.automateThreshHigh, 0) +
", you will automatically " + ", you will automatically " +
"switch to " + "switch to " +
this.automateActionHigh.name + this.automateActionHigh.name +
".", ".",
); );
} else if (flag.toLowerCase().includes("en")) { } else if (flag.toLowerCase().includes("en")) {
if ( if (
@ -970,8 +970,8 @@ export class Bladeburner implements IBladeburner {
if (this.logging.events) { if (this.logging.events) {
this.log( this.log(
"Intelligence indicates that a large number of Synthoids migrated from " + "Intelligence indicates that a large number of Synthoids migrated from " +
sourceCityName + sourceCityName +
" to some other city", " to some other city",
); );
} }
} else if (chance <= 0.7) { } else if (chance <= 0.7) {
@ -1286,10 +1286,10 @@ export class Bladeburner implements IBladeburner {
} else if (!isOperation && this.logging.contracts) { } else if (!isOperation && this.logging.contracts) {
this.log( this.log(
action.name + action.name +
" contract successfully completed! Gained " + " contract successfully completed! Gained " +
formatNumber(gain, 3) + formatNumber(gain, 3) +
" rank and " + " rank and " +
numeralWrapper.formatMoney(moneyGain), numeralWrapper.formatMoney(moneyGain),
); );
} }
} }
@ -1400,11 +1400,11 @@ export class Bladeburner implements IBladeburner {
if (this.logging.blackops) { if (this.logging.blackops) {
this.log( this.log(
action.name + action.name +
" failed! Lost " + " failed! Lost " +
formatNumber(rankLoss, 1) + formatNumber(rankLoss, 1) +
" rank and took " + " rank and took " +
formatNumber(damage, 0) + formatNumber(damage, 0) +
" damage", " damage",
); );
} }
} }
@ -1440,16 +1440,16 @@ export class Bladeburner implements IBladeburner {
if (this.logging.general) { if (this.logging.general) {
this.log( this.log(
"Training completed. Gained: " + "Training completed. Gained: " +
formatNumber(strExpGain, 1) + formatNumber(strExpGain, 1) +
" str exp, " + " str exp, " +
formatNumber(defExpGain, 1) + formatNumber(defExpGain, 1) +
" def exp, " + " def exp, " +
formatNumber(dexExpGain, 1) + formatNumber(dexExpGain, 1) +
" dex exp, " + " dex exp, " +
formatNumber(agiExpGain, 1) + formatNumber(agiExpGain, 1) +
" agi exp, " + " agi exp, " +
formatNumber(staminaGain, 3) + formatNumber(staminaGain, 3) +
" max stamina", " max stamina",
); );
} }
this.startAction(player, this.action); // Repeat action this.startAction(player, this.action); // Repeat action
@ -1476,10 +1476,10 @@ export class Bladeburner implements IBladeburner {
if (this.logging.general) { if (this.logging.general) {
this.log( this.log(
"Field analysis completed. Gained 0.1 rank, " + "Field analysis completed. Gained 0.1 rank, " +
formatNumber(hackingExpGain, 1) + formatNumber(hackingExpGain, 1) +
" hacking exp, and " + " hacking exp, and " +
formatNumber(charismaExpGain, 1) + formatNumber(charismaExpGain, 1) +
" charisma exp", " charisma exp",
); );
} }
this.startAction(player, this.action); // Repeat action this.startAction(player, this.action); // Repeat action
@ -1526,7 +1526,8 @@ export class Bladeburner implements IBladeburner {
this.startAction(player, this.action); this.startAction(player, this.action);
if (this.logging.general) { if (this.logging.general) {
this.log( this.log(
`Rested in Hyperbolic Regeneration Chamber. Restored ${BladeburnerConstants.HrcHpGain `Rested in Hyperbolic Regeneration Chamber. Restored ${
BladeburnerConstants.HrcHpGain
} HP and gained ${numeralWrapper.formatStamina(staminaGain)} stamina`, } HP and gained ${numeralWrapper.formatStamina(staminaGain)} stamina`,
); );
} }
@ -1575,7 +1576,9 @@ export class Bladeburner implements IBladeburner {
if (factionExists(bladeburnersFactionName)) { if (factionExists(bladeburnersFactionName)) {
const bladeburnerFac = Factions[bladeburnersFactionName]; const bladeburnerFac = Factions[bladeburnersFactionName];
if (!(bladeburnerFac instanceof Faction)) { if (!(bladeburnerFac instanceof Faction)) {
throw new Error(`Could not properly get ${FactionNames.Bladeburners} Faction object in ${FactionNames.Bladeburners} UI Overview Faction button`); throw new Error(
`Could not properly get ${FactionNames.Bladeburners} Faction object in ${FactionNames.Bladeburners} UI Overview Faction button`,
);
} }
if (bladeburnerFac.isMember) { if (bladeburnerFac.isMember) {
const favorBonus = 1 + bladeburnerFac.favor / 100; const favorBonus = 1 + bladeburnerFac.favor / 100;