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
Augmentations, without needing to reboot your body.
In order to graft, you must first purchase a blueprint for and craft the Augmentation.
This can be done at VitaLife in New Tokyo, where you'll find a shady researcher with
questionable connections. Once you purchase a blueprint, you will start crafting the
Augmentation, and it will be grafted to your body once complete.
Grafting 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
Augmentations. This will take some time. When done, the Augmentation will be applied to
your character without needing to install.
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,

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

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

@ -54,7 +54,7 @@ export function NetscriptGrafting(player: IPlayer, workerScript: WorkerScript, h
if (player.city !== CityName.NewTokyo) {
throw helper.makeRuntimeErrorMsg(
"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)) {
@ -90,7 +90,7 @@ export function NetscriptGrafting(player: IPlayer, workerScript: WorkerScript, h
Router.toTerminal();
}
workerScript.log("grafting.graftAugmentation", () => `Began crafting Augmentation ${augName}.`);
workerScript.log("grafting.graftAugmentation", () => `Began grafting Augmentation ${augName}.`);
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>{" "}
be returned.
<br />
<br />
Additionally, grafting an Augmentation will increase the potency of the Entropy virus.
{!player.hasAugmentation(AugmentationNames.CongruityImplant) && (
<>
<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 {
const augName = this.graftAugmentationName;
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]);
if (!this.hasAugmentation(AugmentationNames.CongruityImplant)) {
this.entropy += 1;
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 {
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

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