diff --git a/src/data/abilities/ability.ts b/src/data/abilities/ability.ts index 120d1d413c4..0846d5602cc 100644 --- a/src/data/abilities/ability.ts +++ b/src/data/abilities/ability.ts @@ -3903,7 +3903,7 @@ export class PostSummonTransformAbAttr extends PostSummonAbAttr { const targets = pokemon.getOpponents(); const target = this.getTarget(targets); - if (target.summonData.illusion) { + if (target?.summonData?.illusion || pokemon?.isTransformed() || target?.isTransformed()) { return false; } diff --git a/src/data/moves/move.ts b/src/data/moves/move.ts index f94c59bb463..066114e6aca 100644 --- a/src/data/moves/move.ts +++ b/src/data/moves/move.ts @@ -7610,14 +7610,13 @@ export class SuppressAbilitiesIfActedAttr extends MoveEffectAttr { */ export class TransformAttr extends MoveEffectAttr { override apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { - if (!super.apply(user, target, move, args)) { + if (!super.apply(user, target, move, args) || (target.isTransformed() || user.isTransformed())) { + globalScene.phaseManager.queueMessage(i18next.t("battle:attackFailed")); return false; } globalScene.phaseManager.unshiftNew("PokemonTransformPhase", user.getBattlerIndex(), target.getBattlerIndex()); - globalScene.phaseManager.queueMessage(i18next.t("moveTriggers:transformedIntoTarget", { pokemonName: getPokemonNameWithAffix(user), targetName: getPokemonNameWithAffix(target) })); - return true; } } diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index e9cc4f70d70..deeffd736e8 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -1062,6 +1062,10 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { return species; } + isTransformed(): boolean { + return this.summonData.speciesForm !== null; + } + /** * @param {boolean} useIllusion - Whether we want the fusionSpeciesForm of the illusion or not. */