From 33c7971b91544b37f2462770f4affcf753d89cfb Mon Sep 17 00:00:00 2001 From: Bertie690 Date: Wed, 30 Apr 2025 18:52:08 -0400 Subject: [PATCH] Fixed a few outstanding issues with documentation --- public/locales | 2 +- src/data/custom-pokemon-data.ts | 1 + src/data/moves/move.ts | 11 ++++++++--- src/field/pokemon.ts | 1 - src/phases/berry-phase.ts | 12 +++++++----- src/phases/switch-summon-phase.ts | 2 +- src/system/version_migration/versions/v1_9_0.ts | 8 ++++---- 7 files changed, 22 insertions(+), 15 deletions(-) diff --git a/public/locales b/public/locales index e98f0eb9c20..833dc40ec74 160000 --- a/public/locales +++ b/public/locales @@ -1 +1 @@ -Subproject commit e98f0eb9c2022bc78b53f0444424c636498e725a +Subproject commit 833dc40ec7409031fcea147ccbc45ec9c0ba0213 diff --git a/src/data/custom-pokemon-data.ts b/src/data/custom-pokemon-data.ts index f6f9016c147..b70fe8291d8 100644 --- a/src/data/custom-pokemon-data.ts +++ b/src/data/custom-pokemon-data.ts @@ -7,6 +7,7 @@ import type { Nature } from "#enums/nature"; * Includes abilities, nature, changed types, etc. */ export class CustomPokemonData { + /** The scale at which to render this Pokemon's sprite. */ public spriteScale = 1; public ability: Abilities | -1; public passive: Abilities | -1; diff --git a/src/data/moves/move.ts b/src/data/moves/move.ts index 74479fd3892..ea101d24896 100644 --- a/src/data/moves/move.ts +++ b/src/data/moves/move.ts @@ -8003,13 +8003,18 @@ export class MoveCondition { } } +/** + * Condition to allow a move's use only on the first turn this Pokemon is sent into battle + * (or the start of a new wave, whichever comes first). + */ + export class FirstMoveCondition extends MoveCondition { constructor() { - super((user, target, move) => user.summonData.waveTurnCount === 1); + super((user, _target, _move) => user.summonData.waveTurnCount === 1); } - getUserBenefitScore(user: Pokemon, target: Pokemon, move: Move): number { - return this.apply(user, target, move) ? 10 : -20; + getUserBenefitScore(user: Pokemon, _target: Pokemon, _move: Move): number { + return this.apply(user, _target, _move) ? 10 : -20; } } diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index 3f77f7d8cc1..7605f66f5be 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -7791,7 +7791,6 @@ export class PokemonSummonData { constructor(source?: PokemonSummonData | Partial) { if (!isNullOrUndefined(source)) { Object.assign(this, source) - this.moveset &&= this.moveset.map(m => PokemonMove.loadMove(m)) this.tags &&= this.tags.map(t => loadBattlerTag(t)) } } diff --git a/src/phases/berry-phase.ts b/src/phases/berry-phase.ts index b964783460c..b027469ea5e 100644 --- a/src/phases/berry-phase.ts +++ b/src/phases/berry-phase.ts @@ -36,16 +36,18 @@ export class BerryPhase extends FieldPhase { * @param pokemon - The {@linkcode Pokemon} to check */ eatBerries(pokemon: Pokemon): void { - const hasUsableBerry = !!globalScene.findModifier(m => { - return m instanceof BerryModifier && m.shouldApply(pokemon); - }, pokemon.isPlayer()); + const hasUsableBerry = !!globalScene.findModifier( + m => m instanceof BerryModifier && m.shouldApply(pokemon), + pokemon.isPlayer(), + ); if (!hasUsableBerry) { return; } + // TODO: If both opponents on field have unnerve, which one displays its message? const cancelled = new BooleanHolder(false); - pokemon.getOpponents().map(opp => applyAbAttrs(PreventBerryUseAbAttr, opp, cancelled)); + pokemon.getOpponents().forEach(opp => applyAbAttrs(PreventBerryUseAbAttr, opp, cancelled)); if (cancelled.value) { globalScene.queueMessage( i18next.t("abilityTriggers:preventBerryUse", { @@ -60,11 +62,11 @@ export class BerryPhase extends FieldPhase { ); for (const berryModifier of globalScene.applyModifiers(BerryModifier, pokemon.isPlayer(), pokemon)) { + // No need to track berries being eaten; already done inside applyModifiers if (berryModifier.consumed) { berryModifier.consumed = false; pokemon.loseHeldItem(berryModifier); } - // No need to track berries being eaten; already done inside applyModifiers globalScene.eventTarget.dispatchEvent(new BerryUsedEvent(berryModifier)); } globalScene.updateModifiers(pokemon.isPlayer()); diff --git a/src/phases/switch-summon-phase.ts b/src/phases/switch-summon-phase.ts index a2feea55c3c..24a43600acb 100644 --- a/src/phases/switch-summon-phase.ts +++ b/src/phases/switch-summon-phase.ts @@ -241,7 +241,7 @@ export class SwitchSummonPhase extends SummonPhase { } } - // No need (or particular use) resetting turn data here on initial send in + // Reset turn data if not initial switch (since it gets initialized to an empty object by default) if (this.switchType !== SwitchType.INITIAL_SWITCH) { pokemon.resetTurnData(); pokemon.turnData.switchedInThisTurn = true; diff --git a/src/system/version_migration/versions/v1_9_0.ts b/src/system/version_migration/versions/v1_9_0.ts index ed90c28112e..064e9503d33 100644 --- a/src/system/version_migration/versions/v1_9_0.ts +++ b/src/system/version_migration/versions/v1_9_0.ts @@ -21,11 +21,11 @@ const migratePartyData: SessionSaveMigrator = { pkmnData.status.sleepTurnsRemaining, ); // remove empty moves from moveset - pkmnData.moveset = (pkmnData.moveset ?? [new PokemonMove(Moves.TACKLE), new PokemonMove(Moves.GROWL)]).filter( - m => !!m, - ); + pkmnData.moveset = (pkmnData.moveset ?? [new PokemonMove(Moves.TACKLE), new PokemonMove(Moves.GROWL)]) + .filter(m => !!m) + .map(m => PokemonMove.loadMove(m)); // only edit summondata moveset if exists - pkmnData.summonData.moveset &&= pkmnData.summonData.moveset.filter(m => !!m); + pkmnData.summonData.moveset &&= pkmnData.summonData.moveset.filter(m => !!m).map(m => PokemonMove.loadMove(m)); if (pkmnData.customPokemonData) { // revert all "-1" sprite scales to a minimum value of 1