Merge pull request #3387 from nickofolas/improvement/grafting-tweaks

[Improvement] Small grafting tweaks based around Congruity aug, plus some general grafting fixes
This commit is contained in:
hydroflame 2022-04-11 13:22:34 -04:00 committed by GitHub
commit 1b87628a4d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 23 additions and 18 deletions

@ -5,10 +5,10 @@ Grafting
Grafting is an experimental process through which you can obtain the benefits of Grafting is an experimental process through which you can obtain the benefits of
Augmentations, without needing to reboot your body. Augmentations, without needing to reboot your body.
In order to graft, you must first purchase a blueprint for and craft the Augmentation. Grafting can be done at VitaLife in New Tokyo, where you'll find a shady researcher with
This can be done at VitaLife in New Tokyo, where you'll find a shady researcher with questionable connections. From there, you can spend a sum of money to begin grafting
questionable connections. Once you purchase a blueprint, you will start crafting the Augmentations. This will take some time. When done, the Augmentation will be applied to
Augmentation, and it will be grafted to your body once complete. your character without needing to install.
Be warned, some who have tested grafting have reported an unidentified malware. Dubbed Be warned, some who have tested grafting have reported an unidentified malware. Dubbed
"Entropy", this virus seems to grow in potency as more Augmentations are grafted, "Entropy", this virus seems to grow in potency as more Augmentations are grafted,

@ -1488,7 +1488,7 @@ export const initGeneralAugmentations = (): Augmentation[] => [
// Grafting-exclusive Augmentation // Grafting-exclusive Augmentation
new Augmentation({ new Augmentation({
name: AugmentationNames.CongruityImplant, name: AugmentationNames.CongruityImplant,
repCost: 0, repCost: Infinity,
moneyCost: 50e12, moneyCost: 50e12,
info: ( info: (
<> <>

@ -276,7 +276,7 @@ export const CONSTANTS: {
CodingContractBaseCompanyRepGain: 4000, CodingContractBaseCompanyRepGain: 4000,
CodingContractBaseMoneyGain: 75e6, CodingContractBaseMoneyGain: 75e6,
// Augmentation crafting multipliers // Augmentation grafting multipliers
AugmentationGraftingCostMult: 3, AugmentationGraftingCostMult: 3,
AugmentationGraftingTimeBase: 3600000, AugmentationGraftingTimeBase: 3600000,

@ -54,7 +54,7 @@ export function NetscriptGrafting(player: IPlayer, workerScript: WorkerScript, h
if (player.city !== CityName.NewTokyo) { if (player.city !== CityName.NewTokyo) {
throw helper.makeRuntimeErrorMsg( throw helper.makeRuntimeErrorMsg(
"grafting.graftAugmentation", "grafting.graftAugmentation",
"You must be in New Tokyo to begin crafting an Augmentation.", "You must be in New Tokyo to begin grafting an Augmentation.",
); );
} }
if (!getAvailableAugs(player).includes(augName)) { if (!getAvailableAugs(player).includes(augName)) {
@ -90,7 +90,7 @@ export function NetscriptGrafting(player: IPlayer, workerScript: WorkerScript, h
Router.toTerminal(); Router.toTerminal();
} }
workerScript.log("grafting.graftAugmentation", () => `Began crafting Augmentation ${augName}.`); workerScript.log("grafting.graftAugmentation", () => `Began grafting Augmentation ${augName}.`);
return true; return true;
}, },
}; };

@ -130,9 +130,13 @@ export const GraftingRoot = (): React.ReactElement => {
<> <>
Cancelling grafting will <b>not</b> save grafting progress, and the money you spend will <b>not</b>{" "} Cancelling grafting will <b>not</b> save grafting progress, and the money you spend will <b>not</b>{" "}
be returned. be returned.
<br /> {!player.hasAugmentation(AugmentationNames.CongruityImplant) && (
<br /> <>
Additionally, grafting an Augmentation will increase the potency of the Entropy virus. <br />
<br />
Additionally, grafting an Augmentation will increase the potency of the Entropy virus.
</>
)}
</> </>
} }
/> />

@ -1366,18 +1366,19 @@ export function craftAugmentationWork(this: IPlayer, numCycles: number): boolean
export function finishGraftAugmentationWork(this: IPlayer, cancelled: boolean): string { export function finishGraftAugmentationWork(this: IPlayer, cancelled: boolean): string {
const augName = this.graftAugmentationName; const augName = this.graftAugmentationName;
if (cancelled === false) { if (cancelled === false) {
dialogBoxCreate(
`You've finished crafting ${augName}.<br>The augmentation has been grafted to your body, but you feel a bit off.`,
);
applyAugmentation(Augmentations[augName]); applyAugmentation(Augmentations[augName]);
if (!this.hasAugmentation(AugmentationNames.CongruityImplant)) { if (!this.hasAugmentation(AugmentationNames.CongruityImplant)) {
this.entropy += 1; this.entropy += 1;
this.applyEntropy(this.entropy); this.applyEntropy(this.entropy);
} }
dialogBoxCreate(
`You've finished grafting ${augName}.<br>The augmentation has been applied to your body` +
(this.hasAugmentation(AugmentationNames.CongruityImplant) ? "." : ", but you feel a bit off."),
);
} else { } else {
dialogBoxCreate(`You cancelled the crafting of ${augName}.<br>Your money was not returned to you.`); dialogBoxCreate(`You cancelled the grafting of ${augName}.<br>Your money was not returned to you.`);
} }
// Intelligence gain // Intelligence gain

@ -504,7 +504,7 @@ export function WorkInProgressRoot(): React.ReactElement {
<Grid container direction="column" justifyContent="center" alignItems="center" style={{ minHeight: "100vh" }}> <Grid container direction="column" justifyContent="center" alignItems="center" style={{ minHeight: "100vh" }}>
<Grid item> <Grid item>
<Typography> <Typography>
You are currently working on crafting {player.graftAugmentationName}. You are currently working on grafting {player.graftAugmentationName}.
<br /> <br />
<br /> <br />
You have been working for {convertTimeMsToTimeElapsedString(player.timeWorked)} You have been working for {convertTimeMsToTimeElapsedString(player.timeWorked)}
@ -519,7 +519,7 @@ export function WorkInProgressRoot(): React.ReactElement {
</Grid> </Grid>
<Grid item> <Grid item>
<Button sx={{ mx: 2 }} onClick={cancel}> <Button sx={{ mx: 2 }} onClick={cancel}>
Cancel work on crafting Augmentation Cancel work on grafting Augmentation
</Button> </Button>
<Button onClick={unfocus}>Do something else simultaneously</Button> <Button onClick={unfocus}>Do something else simultaneously</Button>
</Grid> </Grid>