From 63fafe6a2d892f1c43271511cd3c6d7838104330 Mon Sep 17 00:00:00 2001 From: AJ Fontaine Date: Tue, 6 Aug 2024 22:24:59 -0400 Subject: [PATCH] Added Wonder Room --- src/data/arena-tag.ts | 27 +++++++++++++++++++++++++++ src/data/move.ts | 3 ++- src/enums/arena-tag-type.ts | 3 ++- src/field/pokemon.ts | 13 ++++++++++++- src/locales/de/arena-flyout.ts | 1 + src/locales/de/arena-tag.ts | 2 ++ src/locales/en/arena-flyout.ts | 1 + src/locales/en/arena-tag.ts | 2 ++ src/locales/es/arena-flyout.ts | 1 + src/locales/es/arena-tag.ts | 2 ++ src/locales/fr/arena-flyout.ts | 1 + src/locales/fr/arena-tag.ts | 2 ++ src/locales/it/arena-flyout.ts | 1 + src/locales/it/arena-tag.ts | 2 ++ src/locales/ko/arena-flyout.ts | 1 + src/locales/ko/arena-tag.ts | 2 ++ src/locales/pt_BR/arena-flyout.ts | 1 + src/locales/pt_BR/arena-tag.ts | 2 ++ src/locales/zh_CN/arena-flyout.ts | 1 + src/locales/zh_CN/arena-tag.ts | 2 ++ src/locales/zh_TW/arena-flyout.ts | 1 + src/locales/zh_TW/arena-tag.ts | 2 ++ 22 files changed, 70 insertions(+), 3 deletions(-) diff --git a/src/data/arena-tag.ts b/src/data/arena-tag.ts index fd72ab21026..772a4115488 100644 --- a/src/data/arena-tag.ts +++ b/src/data/arena-tag.ts @@ -710,6 +710,31 @@ export class TrickRoomTag extends ArenaTag { } } +/** + * Arena Tag class for {@link https://bulbapedia.bulbagarden.net/wiki/Wonder_Room_(move) Wonder Room}. + * Swaps the Defense and Special Defense stats for all Pokémon on the field as long as this arena tag is up, + * also reversing the turn order for all Pokémon on the field as well. + */ +export class WonderRoomTag extends ArenaTag { + constructor(turnCount: integer) { + super(ArenaTagType.WONDER_ROOM, turnCount, Moves.WONDER_ROOM); + } + + apply(arena: Arena, args: any[]): boolean { + const isWonderRoom = args[0] as Utils.BooleanHolder; + isWonderRoom.value = !isWonderRoom.value; + return true; + } + + onAdd(arena: Arena): void { + arena.scene.queueMessage(i18next.t("arenaTag:wonderRoomOnAdd")); + } + + onRemove(arena: Arena): void { + arena.scene.queueMessage(i18next.t("arenaTag:wonderRoomOnRemove")); + } +} + /** * Arena Tag class for {@link https://bulbapedia.bulbagarden.net/wiki/Gravity_(move) Gravity}. * Grounds all Pokémon on the field, including Flying-types and those with @@ -834,5 +859,7 @@ export function getArenaTag(tagType: ArenaTagType, turnCount: integer, sourceMov return new TailwindTag(turnCount, sourceId, side); case ArenaTagType.HAPPY_HOUR: return new HappyHourTag(turnCount, sourceId, side); + case ArenaTagType.WONDER_ROOM: + return new WonderRoomTag(turnCount); } } diff --git a/src/data/move.ts b/src/data/move.ts index 8ddc984e304..56ab5043f7a 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -7358,9 +7358,10 @@ export function initMoves() { new StatusMove(Moves.POWER_SPLIT, Type.PSYCHIC, -1, 10, -1, 0, 5) .unimplemented(), new StatusMove(Moves.WONDER_ROOM, Type.PSYCHIC, -1, 10, -1, 0, 5) + .attr(AddArenaTagAttr, ArenaTagType.WONDER_ROOM, 5) .ignoresProtect() .target(MoveTarget.BOTH_SIDES) - .unimplemented(), + .partial(), new AttackMove(Moves.PSYSHOCK, Type.PSYCHIC, MoveCategory.SPECIAL, 80, 100, 10, -1, 0, 5) .attr(DefDefAttr), new AttackMove(Moves.VENOSHOCK, Type.POISON, MoveCategory.SPECIAL, 65, 100, 10, -1, 0, 5) diff --git a/src/enums/arena-tag-type.ts b/src/enums/arena-tag-type.ts index 722096c42cd..b206827d387 100644 --- a/src/enums/arena-tag-type.ts +++ b/src/enums/arena-tag-type.ts @@ -21,5 +21,6 @@ export enum ArenaTagType { MAT_BLOCK = "MAT_BLOCK", CRAFTY_SHIELD = "CRAFTY_SHIELD", TAILWIND = "TAILWIND", - HAPPY_HOUR = "HAPPY_HOUR" + HAPPY_HOUR = "HAPPY_HOUR", + WONDER_ROOM = "WONDER_ROOM" } diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index 7fc5f14d0e1..1ba51255820 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -690,7 +690,18 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (this.isPlayer()) { this.scene.applyModifiers(TempBattleStatBoosterModifier, this.isPlayer(), battleStat as integer as TempBattleStat, statLevel); } - const statValue = new Utils.NumberHolder(this.getStat(stat)); + const statValue = new Utils.NumberHolder(1); + const wonderRoom = new Utils.BooleanHolder(false); + this.scene.arena.applyTags(ArenaTagType.WONDER_ROOM, wonderRoom); + if (wonderRoom.value) { + if (stat === Stat.DEF) { + statValue.value = this.getStat(Stat.SPDEF); + } else if (stat === Stat.SPDEF) { + statValue.value = this.getStat(Stat.DEF); + } + } else { + statValue.value = this.getStat(stat); + } this.scene.applyModifiers(StatBoosterModifier, this.isPlayer(), this, stat, statValue); const fieldApplied = new Utils.BooleanHolder(false); diff --git a/src/locales/de/arena-flyout.ts b/src/locales/de/arena-flyout.ts index c353b432bc0..134e87e128a 100644 --- a/src/locales/de/arena-flyout.ts +++ b/src/locales/de/arena-flyout.ts @@ -36,6 +36,7 @@ export const arenaFlyout: SimpleTranslationEntries = { "stealthRock": "Tarnsteine", "stickyWeb": "Klebenetz", "trickRoom": "Bizarroraum", + "wonderRoom": "Wunderraum", "gravity": "Erdanziehung", "reflect": "Reflektor", "lightScreen": "Lichtschild", diff --git a/src/locales/de/arena-tag.ts b/src/locales/de/arena-tag.ts index cc0a821aade..723d4080fc8 100644 --- a/src/locales/de/arena-tag.ts +++ b/src/locales/de/arena-tag.ts @@ -37,6 +37,8 @@ export const arenaTag: SimpleTranslationEntries = { "stickyWebActivateTrap": "{{pokemonName}} ist im Klebenetz gefangen!", "trickRoomOnAdd": "{{pokemonNameWithAffix}} hat die Dimensionen verdreht!", "trickRoomOnRemove": "Die verdrehte Dimension ist wieder normal!", + "wonderRoomOnAdd": "It created a bizarre area in which the\nDefense and Special Defense stats are swapped!", + "wonderRoomOnRemove": "The Defense and Special Defense stats\nhave returned to normal!", "gravityOnAdd": "Die Erdanziehung wurde verstärkt!", "gravityOnRemove": "Die Erdanziehung ist wieder normal!", "tailwindOnAdd": "Die Pokémon erhalten Rückenwind!", diff --git a/src/locales/en/arena-flyout.ts b/src/locales/en/arena-flyout.ts index 8a31d37b10c..57b33b0a10c 100644 --- a/src/locales/en/arena-flyout.ts +++ b/src/locales/en/arena-flyout.ts @@ -36,6 +36,7 @@ export const arenaFlyout: SimpleTranslationEntries = { "stealthRock": "Stealth Rock", "stickyWeb": "Sticky Web", "trickRoom": "Trick Room", + "wonderRoom": "Wonder Room", "gravity": "Gravity", "reflect": "Reflect", "lightScreen": "Light Screen", diff --git a/src/locales/en/arena-tag.ts b/src/locales/en/arena-tag.ts index 8bc2302368a..8f92a1a75b3 100644 --- a/src/locales/en/arena-tag.ts +++ b/src/locales/en/arena-tag.ts @@ -37,6 +37,8 @@ export const arenaTag: SimpleTranslationEntries = { "stickyWebActivateTrap": "The opposing {{pokemonName}} was caught in a sticky web!", "trickRoomOnAdd": "{{pokemonNameWithAffix}} twisted\nthe dimensions!", "trickRoomOnRemove": "The twisted dimensions\nreturned to normal!", + "wonderRoomOnAdd": "It created a bizarre area in which the\nDefense and Special Defense stats are swapped!", + "wonderRoomOnRemove": "The Defense and Special Defense stats\nhave returned to normal!", "gravityOnAdd": "Gravity intensified!", "gravityOnRemove": "Gravity returned to normal!", "tailwindOnAdd": "The Tailwind blew from behind team!", diff --git a/src/locales/es/arena-flyout.ts b/src/locales/es/arena-flyout.ts index 376b737811f..346ee262840 100644 --- a/src/locales/es/arena-flyout.ts +++ b/src/locales/es/arena-flyout.ts @@ -36,6 +36,7 @@ export const arenaFlyout: SimpleTranslationEntries = { "stealthRock": "Trampa Rocas", "stickyWeb": "Red Vidcosa", "trickRoom": "Espacio Raro", + "wonderRoom": "Wonder Room", "gravity": "Gravedad", "reflect": "Reflejo", "lightScreen": "Pantalla de Luz", diff --git a/src/locales/es/arena-tag.ts b/src/locales/es/arena-tag.ts index 8bc2302368a..8f92a1a75b3 100644 --- a/src/locales/es/arena-tag.ts +++ b/src/locales/es/arena-tag.ts @@ -37,6 +37,8 @@ export const arenaTag: SimpleTranslationEntries = { "stickyWebActivateTrap": "The opposing {{pokemonName}} was caught in a sticky web!", "trickRoomOnAdd": "{{pokemonNameWithAffix}} twisted\nthe dimensions!", "trickRoomOnRemove": "The twisted dimensions\nreturned to normal!", + "wonderRoomOnAdd": "It created a bizarre area in which the\nDefense and Special Defense stats are swapped!", + "wonderRoomOnRemove": "The Defense and Special Defense stats\nhave returned to normal!", "gravityOnAdd": "Gravity intensified!", "gravityOnRemove": "Gravity returned to normal!", "tailwindOnAdd": "The Tailwind blew from behind team!", diff --git a/src/locales/fr/arena-flyout.ts b/src/locales/fr/arena-flyout.ts index cf412e3b671..2b5a9325af1 100644 --- a/src/locales/fr/arena-flyout.ts +++ b/src/locales/fr/arena-flyout.ts @@ -36,6 +36,7 @@ export const arenaFlyout: SimpleTranslationEntries = { "stealthRock": "Piège de Roc", "stickyWeb": "Toile Gluante", "trickRoom": "Distorsion", + "wonderRoom": "Wonder Room", "gravity": "Gravité", "reflect": "Protection", "lightScreen": "Mur Lumière", diff --git a/src/locales/fr/arena-tag.ts b/src/locales/fr/arena-tag.ts index cc97cb4e34f..7e5a43303bb 100644 --- a/src/locales/fr/arena-tag.ts +++ b/src/locales/fr/arena-tag.ts @@ -37,6 +37,8 @@ export const arenaTag: SimpleTranslationEntries = { "stickyWebActivateTrap": "{{pokemonName}} ennemi\nest pris dans la toile gluante !", "trickRoomOnAdd": "{{pokemonNameWithAffix}}\nfausse les dimensions !", "trickRoomOnRemove": "Les dimensions faussées\nreviennent à la normale !", + "wonderRoomOnAdd": "It created a bizarre area in which the\nDefense and Special Defense stats are swapped!", + "wonderRoomOnRemove": "The Defense and Special Defense stats\nhave returned to normal!", "gravityOnAdd": "La gravité s’intensifie !", "gravityOnRemove": "La gravité est revenue à la normale !", "tailwindOnAdd": "Un vent arrière souffle !", diff --git a/src/locales/it/arena-flyout.ts b/src/locales/it/arena-flyout.ts index 9e1e55226ea..4fbc8432e1d 100644 --- a/src/locales/it/arena-flyout.ts +++ b/src/locales/it/arena-flyout.ts @@ -36,6 +36,7 @@ export const arenaFlyout: SimpleTranslationEntries = { "stealthRock": "Levitoroccia", "stickyWeb": "Rete Vischiosa", "trickRoom": "Distortozona", + "wonderRoom": "Wonder Room", "gravity": "Gravità", "reflect": "Riflesso", "lightScreen": "Schermoluce", diff --git a/src/locales/it/arena-tag.ts b/src/locales/it/arena-tag.ts index 8bc2302368a..8f92a1a75b3 100644 --- a/src/locales/it/arena-tag.ts +++ b/src/locales/it/arena-tag.ts @@ -37,6 +37,8 @@ export const arenaTag: SimpleTranslationEntries = { "stickyWebActivateTrap": "The opposing {{pokemonName}} was caught in a sticky web!", "trickRoomOnAdd": "{{pokemonNameWithAffix}} twisted\nthe dimensions!", "trickRoomOnRemove": "The twisted dimensions\nreturned to normal!", + "wonderRoomOnAdd": "It created a bizarre area in which the\nDefense and Special Defense stats are swapped!", + "wonderRoomOnRemove": "The Defense and Special Defense stats\nhave returned to normal!", "gravityOnAdd": "Gravity intensified!", "gravityOnRemove": "Gravity returned to normal!", "tailwindOnAdd": "The Tailwind blew from behind team!", diff --git a/src/locales/ko/arena-flyout.ts b/src/locales/ko/arena-flyout.ts index 33d9596af2c..065447d9e18 100644 --- a/src/locales/ko/arena-flyout.ts +++ b/src/locales/ko/arena-flyout.ts @@ -36,6 +36,7 @@ export const arenaFlyout: SimpleTranslationEntries = { "stealthRock": "스텔스록", "stickyWeb": "끈적끈적네트", "trickRoom": "트릭룸", + "wonderRoom": "Wonder Room", "gravity": "중력", "reflect": "리플렉터", "lightScreen": "빛의장막", diff --git a/src/locales/ko/arena-tag.ts b/src/locales/ko/arena-tag.ts index ca1039e2bc0..3fca5c5eb00 100644 --- a/src/locales/ko/arena-tag.ts +++ b/src/locales/ko/arena-tag.ts @@ -37,6 +37,8 @@ export const arenaTag: SimpleTranslationEntries = { "stickyWebActivateTrap": "{{pokemonName}}[[는]]\n끈적끈적네트에 걸렸다!", "trickRoomOnAdd": "{{pokemonNameWithAffix}}[[는]]\n시공을 뒤틀었다!", "trickRoomOnRemove": "뒤틀린 시공이 원래대로 되돌아왔다!", + "wonderRoomOnAdd": "It created a bizarre area in which the\nDefense and Special Defense stats are swapped!", + "wonderRoomOnRemove": "The Defense and Special Defense stats\nhave returned to normal!", "gravityOnAdd": "중력이 강해졌다!", "gravityOnRemove": "중력이 원래대로 되돌아왔다!", "tailwindOnAdd": "순풍이 불기 시작했다!", diff --git a/src/locales/pt_BR/arena-flyout.ts b/src/locales/pt_BR/arena-flyout.ts index 97382aa2b2f..93aabb63d74 100644 --- a/src/locales/pt_BR/arena-flyout.ts +++ b/src/locales/pt_BR/arena-flyout.ts @@ -36,6 +36,7 @@ export const arenaFlyout: SimpleTranslationEntries = { "stealthRock": "Stealth Rock", "stickyWeb": "Sticky Web", "trickRoom": "Trick Room", + "wonderRoom": "Wonder Room", "gravity": "Gravity", "reflect": "Reflect", "lightScreen": "Light Screen", diff --git a/src/locales/pt_BR/arena-tag.ts b/src/locales/pt_BR/arena-tag.ts index 0d3b8ff587f..cefd81513af 100644 --- a/src/locales/pt_BR/arena-tag.ts +++ b/src/locales/pt_BR/arena-tag.ts @@ -37,6 +37,8 @@ export const arenaTag: SimpleTranslationEntries = { "stickyWebActivateTrap": "{{pokemonName}} adversário foi pego por uma Sticky Web!", "trickRoomOnAdd": "{{pokemonNameWithAffix}} distorceu\nas dimensões!", "trickRoomOnRemove": "As dimensões distorcidas\nretornaram ao normal!", + "wonderRoomOnAdd": "It created a bizarre area in which the\nDefense and Special Defense stats are swapped!", + "wonderRoomOnRemove": "The Defense and Special Defense stats\nhave returned to normal!", "gravityOnAdd": "A gravidade aumentou!", "gravityOnRemove": "A gravidade retornou ao normal!", "tailwindOnAdd": "O Tailwind soprou de trás de sua equipe!", diff --git a/src/locales/zh_CN/arena-flyout.ts b/src/locales/zh_CN/arena-flyout.ts index e30642e7d21..8d85450d322 100644 --- a/src/locales/zh_CN/arena-flyout.ts +++ b/src/locales/zh_CN/arena-flyout.ts @@ -36,6 +36,7 @@ export const arenaFlyout: SimpleTranslationEntries = { "stealthRock": "隐形岩", "stickyWeb": "黏黏网", "trickRoom": "戏法空间", + "wonderRoom": "Wonder Room", "gravity": "重力", "reflect": "反射壁", "lightScreen": "光墙", diff --git a/src/locales/zh_CN/arena-tag.ts b/src/locales/zh_CN/arena-tag.ts index 027a5667415..cf057d066d5 100644 --- a/src/locales/zh_CN/arena-tag.ts +++ b/src/locales/zh_CN/arena-tag.ts @@ -37,6 +37,8 @@ export const arenaTag: SimpleTranslationEntries = { "stickyWebActivateTrap": "{{pokemonName}}\n被黏黏网粘住了!", "trickRoomOnAdd": "{{pokemonNameWithAffix}}\n扭曲了时空!", "trickRoomOnRemove": "扭曲的时空复原了!", + "wonderRoomOnAdd": "It created a bizarre area in which the\nDefense and Special Defense stats are swapped!", + "wonderRoomOnRemove": "The Defense and Special Defense stats\nhave returned to normal!", "gravityOnAdd": "重力变强了!", "gravityOnRemove": "重力复原了!", "tailwindOnAdd": "从身后\n吹起了顺风!", diff --git a/src/locales/zh_TW/arena-flyout.ts b/src/locales/zh_TW/arena-flyout.ts index 8a31d37b10c..57b33b0a10c 100644 --- a/src/locales/zh_TW/arena-flyout.ts +++ b/src/locales/zh_TW/arena-flyout.ts @@ -36,6 +36,7 @@ export const arenaFlyout: SimpleTranslationEntries = { "stealthRock": "Stealth Rock", "stickyWeb": "Sticky Web", "trickRoom": "Trick Room", + "wonderRoom": "Wonder Room", "gravity": "Gravity", "reflect": "Reflect", "lightScreen": "Light Screen", diff --git a/src/locales/zh_TW/arena-tag.ts b/src/locales/zh_TW/arena-tag.ts index 8bc2302368a..8f92a1a75b3 100644 --- a/src/locales/zh_TW/arena-tag.ts +++ b/src/locales/zh_TW/arena-tag.ts @@ -37,6 +37,8 @@ export const arenaTag: SimpleTranslationEntries = { "stickyWebActivateTrap": "The opposing {{pokemonName}} was caught in a sticky web!", "trickRoomOnAdd": "{{pokemonNameWithAffix}} twisted\nthe dimensions!", "trickRoomOnRemove": "The twisted dimensions\nreturned to normal!", + "wonderRoomOnAdd": "It created a bizarre area in which the\nDefense and Special Defense stats are swapped!", + "wonderRoomOnRemove": "The Defense and Special Defense stats\nhave returned to normal!", "gravityOnAdd": "Gravity intensified!", "gravityOnRemove": "Gravity returned to normal!", "tailwindOnAdd": "The Tailwind blew from behind team!",