[Bug] Fix infinite memory mushrooms (#5993)

* Set cost to -1 for modifiers chosen as rewards

* Ensure apply modifier conditional retains original behavior
This commit is contained in:
Sirz Benjie 2025-06-18 16:23:16 -05:00 committed by GitHub
parent 4119dfbfec
commit 182397411e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -134,7 +134,7 @@ export class SelectModifierPhase extends BattlePhase {
return true;
}
const modifierType = this.typeOptions[cursor].type;
return this.applyChosenModifier(modifierType, 0, modifierSelectCallback);
return this.applyChosenModifier(modifierType, -1, modifierSelectCallback);
}
// Pick a modifier from the shop and apply it
@ -260,8 +260,13 @@ export class SelectModifierPhase extends BattlePhase {
return false;
}
// Applies the effects of the chosen modifier
private applyModifier(modifier: Modifier, cost = 0, playSound = false): void {
/**
* Apply the effects of the chosen modifier
* @param modifier - The modifier to apply
* @param cost - The cost of the modifier if it was purchased, or -1 if selected as the modifier reward
* @param playSound - Whether the 'obtain modifier' sound should be played when adding the modifier.
*/
private applyModifier(modifier: Modifier, cost = -1, playSound = false): void {
const result = globalScene.addModifier(modifier, false, playSound, undefined, undefined, cost);
// Queue a copy of this phase when applying a TM or Memory Mushroom.
// If the player selects either of these, then escapes out of consuming them,
@ -270,7 +275,7 @@ export class SelectModifierPhase extends BattlePhase {
globalScene.phaseManager.unshiftPhase(this.copy());
}
if (cost && !(modifier.type instanceof RememberMoveModifierType)) {
if (cost !== -1 && !(modifier.type instanceof RememberMoveModifierType)) {
if (result) {
if (!Overrides.WAIVE_ROLL_FEE_OVERRIDE) {
globalScene.money -= cost;