From 8f053ea16ff472381976128ab4ceea8c1335534b Mon Sep 17 00:00:00 2001 From: Frederico Santos Date: Thu, 28 Nov 2024 01:01:48 +0000 Subject: [PATCH 001/119] [Feature] Add save download functionality with JSZip integration (#4945) --- package-lock.json | 87 +++++++++++++++++++++++++++++++++ package.json | 1 + src/ui/login-form-ui-handler.ts | 39 ++++++++++++++- 3 files changed, 126 insertions(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index 9d6e2440f44..78eabb07fd1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,6 +16,7 @@ "i18next-http-backend": "^2.6.1", "i18next-korean-postposition-processor": "^1.0.0", "json-stable-stringify": "^1.1.0", + "jszip": "^3.10.1", "phaser": "^3.70.0", "phaser3-rex-plugins": "^1.1.84" }, @@ -2723,6 +2724,11 @@ "node": ">= 0.6" } }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, "node_modules/cross-fetch": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", @@ -4045,6 +4051,11 @@ "node": ">= 4" } }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" + }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -4072,6 +4083,11 @@ "node": ">=0.8.19" } }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, "node_modules/ini": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", @@ -4481,6 +4497,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", @@ -4648,6 +4675,14 @@ "node": ">= 0.8.0" } }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dependencies": { + "immediate": "~3.0.5" + } + }, "node_modules/linkify-it": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", @@ -5237,6 +5272,11 @@ "dev": true, "license": "BlueOak-1.0.0" }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, "node_modules/papaparse": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/papaparse/-/papaparse-5.4.1.tgz", @@ -5485,6 +5525,11 @@ "node": ">= 0.8.0" } }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, "node_modules/prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", @@ -5551,6 +5596,25 @@ } ] }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, "node_modules/rechoir": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", @@ -5741,6 +5805,11 @@ "tslib": "^2.1.0" } }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, "node_modules/safe-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-2.1.1.tgz", @@ -5800,6 +5869,11 @@ "node": ">= 0.4" } }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -5917,6 +5991,14 @@ "dev": true, "license": "MIT" }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", @@ -6473,6 +6555,11 @@ "requires-port": "^1.0.0" } }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, "node_modules/vite": { "version": "5.4.8", "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.8.tgz", diff --git a/package.json b/package.json index ef2d4938087..bf24d2a6804 100644 --- a/package.json +++ b/package.json @@ -55,6 +55,7 @@ "i18next-http-backend": "^2.6.1", "i18next-korean-postposition-processor": "^1.0.0", "json-stable-stringify": "^1.1.0", + "jszip": "^3.10.1", "phaser": "^3.70.0", "phaser3-rex-plugins": "^1.1.84" }, diff --git a/src/ui/login-form-ui-handler.ts b/src/ui/login-form-ui-handler.ts index bba900aef0a..4919095c8a4 100644 --- a/src/ui/login-form-ui-handler.ts +++ b/src/ui/login-form-ui-handler.ts @@ -8,6 +8,7 @@ import { addTextObject, TextStyle } from "./text"; import { addWindow } from "./ui-theme"; import { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; import { pokerogueApi } from "#app/plugins/api/pokerogue-api"; +import JSZip from "jszip"; interface BuildInteractableImageOpts { scale?: number; @@ -27,6 +28,7 @@ export default class LoginFormUiHandler extends FormModalUiHandler { private googleImage: Phaser.GameObjects.Image; private discordImage: Phaser.GameObjects.Image; private usernameInfoImage: Phaser.GameObjects.Image; + private saveDownloadImage: Phaser.GameObjects.Image; private externalPartyContainer: Phaser.GameObjects.Container; private infoContainer: Phaser.GameObjects.Container; private externalPartyBg: Phaser.GameObjects.NineSlice; @@ -46,7 +48,13 @@ export default class LoginFormUiHandler extends FormModalUiHandler { scale: 0.5 }); + this.saveDownloadImage = this.buildInteractableImage("saving_icon", "save-download-icon", { + x: 0, + scale: 0.75 + }); + this.infoContainer.add(this.usernameInfoImage); + this.infoContainer.add(this.saveDownloadImage); this.getUi().add(this.infoContainer); this.infoContainer.setVisible(false); this.infoContainer.disableInteractive(); @@ -160,7 +168,7 @@ export default class LoginFormUiHandler extends FormModalUiHandler { this.infoContainer.setVisible(false); this.setMouseCursorStyle("default"); //reset cursor - [ this.discordImage, this.googleImage, this.usernameInfoImage ].forEach((img) => img.off("pointerdown")); + [ this.discordImage, this.googleImage, this.usernameInfoImage, this.saveDownloadImage ].forEach((img) => img.off("pointerdown")); } private processExternalProvider(config: ModalConfig): void { @@ -178,6 +186,7 @@ export default class LoginFormUiHandler extends FormModalUiHandler { this.infoContainer.setVisible(true); this.getUi().moveTo(this.infoContainer, this.getUi().length - 1); this.usernameInfoImage.setPositionRelative(this.infoContainer, 0, 0); + this.saveDownloadImage.setPositionRelative(this.infoContainer, 20, 0); this.discordImage.on("pointerdown", () => { const redirectUri = encodeURIComponent(`${import.meta.env.VITE_SERVER_URL}/auth/discord/callback`); @@ -229,6 +238,34 @@ export default class LoginFormUiHandler extends FormModalUiHandler { } }); + this.saveDownloadImage.on("pointerdown", () => { + // find all data_ and sessionData keys, put them in a .txt file and download everything in a single zip + const localStorageKeys = Object.keys(localStorage); // this gets the keys for localStorage + const keyToFind = "data_"; + const sessionKeyToFind = "sessionData"; + const dataKeys = localStorageKeys.filter(ls => ls.indexOf(keyToFind) >= 0); + const sessionKeys = localStorageKeys.filter(ls => ls.indexOf(sessionKeyToFind) >= 0); + if (dataKeys.length > 0 || sessionKeys.length > 0) { + const zip = new JSZip(); + for (let i = 0; i < dataKeys.length; i++) { + zip.file(dataKeys[i], localStorage.getItem(dataKeys[i])!); + } + for (let i = 0; i < sessionKeys.length; i++) { + zip.file(sessionKeys[i], localStorage.getItem(sessionKeys[i])!); + } + zip.generateAsync({ type: "blob" }).then(content => { + const url = URL.createObjectURL(content); + const a = document.createElement("a"); + a.href = url; + a.download = "pokerogue_saves.zip"; + a.click(); + URL.revokeObjectURL(url); + }); + } else { + return onFail(this.ERR_NO_SAVES); + } + }); + this.externalPartyContainer.setAlpha(0); this.scene.tweens.add({ targets: this.externalPartyContainer, From a7fa593f79319233b604d407756067d9fffd9151 Mon Sep 17 00:00:00 2001 From: Mumble <171087428+frutescens@users.noreply.github.com> Date: Wed, 27 Nov 2024 18:04:39 -0800 Subject: [PATCH 002/119] [Misc] Append .prsv to data recovery file names to prevent user confusion (#4946) --- src/ui/login-form-ui-handler.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ui/login-form-ui-handler.ts b/src/ui/login-form-ui-handler.ts index 4919095c8a4..d3c3663ec4b 100644 --- a/src/ui/login-form-ui-handler.ts +++ b/src/ui/login-form-ui-handler.ts @@ -248,10 +248,10 @@ export default class LoginFormUiHandler extends FormModalUiHandler { if (dataKeys.length > 0 || sessionKeys.length > 0) { const zip = new JSZip(); for (let i = 0; i < dataKeys.length; i++) { - zip.file(dataKeys[i], localStorage.getItem(dataKeys[i])!); + zip.file(dataKeys[i] + ".prsv", localStorage.getItem(dataKeys[i])!); } for (let i = 0; i < sessionKeys.length; i++) { - zip.file(sessionKeys[i], localStorage.getItem(sessionKeys[i])!); + zip.file(sessionKeys[i] + ".prsv", localStorage.getItem(sessionKeys[i])!); } zip.generateAsync({ type: "blob" }).then(content => { const url = URL.createObjectURL(content); From c86b6352bc7d86eb49c3f9d9b117faa15a4dec67 Mon Sep 17 00:00:00 2001 From: innerthunder <168692175+innerthunder@users.noreply.github.com> Date: Wed, 27 Nov 2024 23:53:37 -0800 Subject: [PATCH 003/119] Remove Supersweet Syrup's once-per-battle condition (#4906) --- src/data/ability.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/data/ability.ts b/src/data/ability.ts index 3103c08cee6..32522685980 100644 --- a/src/data/ability.ts +++ b/src/data/ability.ts @@ -6340,8 +6340,7 @@ export function initAbilities() { .attr(IgnoreOpponentStatStagesAbAttr, [ Stat.EVA ]) .ignorable(), new Ability(Abilities.SUPERSWEET_SYRUP, 9) - .attr(PostSummonStatStageChangeAbAttr, [ Stat.EVA ], -1) - .condition(getOncePerBattleCondition(Abilities.SUPERSWEET_SYRUP)), + .attr(PostSummonStatStageChangeAbAttr, [ Stat.EVA ], -1), new Ability(Abilities.HOSPITALITY, 9) .attr(PostSummonAllyHealAbAttr, 4, true), new Ability(Abilities.TOXIC_CHAIN, 9) From 2b64ef6fc92c268e21f36c197429cf1b612b17c4 Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Thu, 28 Nov 2024 17:17:18 -0800 Subject: [PATCH 004/119] Mark Rage Fist as partial in line with similar moves/abilities (#4894) --- src/data/move.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/data/move.ts b/src/data/move.ts index 2ac4d74b712..e41594a3189 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -10554,6 +10554,7 @@ export function initMoves() { new AttackMove(Moves.TWIN_BEAM, Type.PSYCHIC, MoveCategory.SPECIAL, 40, 100, 10, -1, 0, 9) .attr(MultiHitAttr, MultiHitType._2), new AttackMove(Moves.RAGE_FIST, Type.GHOST, MoveCategory.PHYSICAL, 50, 100, 10, -1, 0, 9) + .partial() // Counter resets every wave instead of on arena reset .attr(HitCountPowerAttr) .punchingMove(), new AttackMove(Moves.ARMOR_CANNON, Type.FIRE, MoveCategory.SPECIAL, 120, 100, 5, -1, 0, 9) From 03b073f21f00b125d51c9449c56aa0a6241669fe Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Thu, 28 Nov 2024 17:20:54 -0800 Subject: [PATCH 005/119] [Bug] Analytic should only increase damage if the user moves last (#4917) * Analytic only increases damage if the user moves last * Return `isNullOrUndefined()` instead of `if` chain --------- Co-authored-by: innerthunder <168692175+innerthunder@users.noreply.github.com> --- src/data/ability.ts | 7 +-- src/test/abilities/analytic.test.ts | 81 +++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+), 3 deletions(-) create mode 100644 src/test/abilities/analytic.test.ts diff --git a/src/data/ability.ts b/src/data/ability.ts index 32522685980..7ffe016106e 100644 --- a/src/data/ability.ts +++ b/src/data/ability.ts @@ -5779,9 +5779,10 @@ export function initAbilities() { .attr(WonderSkinAbAttr) .ignorable(), new Ability(Abilities.ANALYTIC, 5) - .attr(MovePowerBoostAbAttr, (user, target, move) => - !!target?.getLastXMoves(1).find(m => m.turn === target?.scene.currentBattle.turn) - || user?.scene.currentBattle.turnCommands[target?.getBattlerIndex() ?? BattlerIndex.ATTACKER]?.command !== Command.FIGHT, 1.3), + .attr(MovePowerBoostAbAttr, (user, target, move) => { + const movePhase = user?.scene.findPhase((phase) => phase instanceof MovePhase && phase.pokemon.id !== user.id); + return Utils.isNullOrUndefined(movePhase); + }, 1.3), new Ability(Abilities.ILLUSION, 5) .attr(UncopiableAbilityAbAttr) .attr(UnswappableAbilityAbAttr) diff --git a/src/test/abilities/analytic.test.ts b/src/test/abilities/analytic.test.ts new file mode 100644 index 00000000000..12777c545f0 --- /dev/null +++ b/src/test/abilities/analytic.test.ts @@ -0,0 +1,81 @@ +import { BattlerIndex } from "#app/battle"; +import { isBetween, toDmgValue } from "#app/utils"; +import { Abilities } from "#enums/abilities"; +import { Moves } from "#enums/moves"; +import { Species } from "#enums/species"; +import GameManager from "#test/utils/gameManager"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; + +describe("Abilities - Analytic", () => { + let phaserGame: Phaser.Game; + let game: GameManager; + + beforeAll(() => { + phaserGame = new Phaser.Game({ + type: Phaser.HEADLESS, + }); + }); + + afterEach(() => { + game.phaseInterceptor.restoreOg(); + }); + + beforeEach(() => { + game = new GameManager(phaserGame); + game.override + .moveset([ Moves.SPLASH, Moves.TACKLE ]) + .ability(Abilities.ANALYTIC) + .battleType("single") + .disableCrits() + .startingLevel(200) + .enemyLevel(200) + .enemySpecies(Species.SNORLAX) + .enemyAbility(Abilities.BALL_FETCH) + .enemyMoveset(Moves.SPLASH); + }); + + it("should increase damage if the user moves last", async () => { + await game.classicMode.startBattle([ Species.ARCEUS ]); + + const enemy = game.scene.getEnemyPokemon()!; + + game.move.select(Moves.TACKLE); + await game.setTurnOrder([ BattlerIndex.PLAYER, BattlerIndex.ENEMY ]); + await game.toNextTurn(); + const damage1 = enemy.getInverseHp(); + enemy.hp = enemy.getMaxHp(); + + game.move.select(Moves.TACKLE); + await game.setTurnOrder([ BattlerIndex.ENEMY, BattlerIndex.PLAYER ]); + await game.phaseInterceptor.to("BerryPhase"); + expect(isBetween(enemy.getInverseHp(), toDmgValue(damage1 * 1.3) - 3, toDmgValue(damage1 * 1.3) + 3)).toBe(true); + }); + + it("should increase damage only if the user moves last in doubles", async () => { + game.override.battleType("double"); + await game.classicMode.startBattle([ Species.GENGAR, Species.SHUCKLE ]); + + const [ enemy, ] = game.scene.getEnemyField(); + + game.move.select(Moves.TACKLE, 0, BattlerIndex.ENEMY); + game.move.select(Moves.SPLASH, 1); + await game.setTurnOrder([ BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2 ]); + await game.toNextTurn(); + const damage1 = enemy.getInverseHp(); + enemy.hp = enemy.getMaxHp(); + + game.move.select(Moves.TACKLE, 0, BattlerIndex.ENEMY); + game.move.select(Moves.SPLASH, 1); + await game.setTurnOrder([ BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER ]); + await game.toNextTurn(); + expect(isBetween(enemy.getInverseHp(), toDmgValue(damage1 * 1.3) - 3, toDmgValue(damage1 * 1.3) + 3)).toBe(true); + enemy.hp = enemy.getMaxHp(); + + game.move.select(Moves.TACKLE, 0, BattlerIndex.ENEMY); + game.move.select(Moves.SPLASH, 1); + await game.setTurnOrder([ BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.PLAYER, BattlerIndex.ENEMY_2 ]); + await game.phaseInterceptor.to("BerryPhase"); + expect(enemy.getInverseHp()).toBe(damage1); + }); +}); From 48dc5d0ee745549d939125f9c83c0d9f7dc453e1 Mon Sep 17 00:00:00 2001 From: Moka <54149968+MokaStitcher@users.noreply.github.com> Date: Fri, 29 Nov 2024 02:21:25 +0100 Subject: [PATCH 006/119] [Balance] 'Breeders in Space' cheevo unlocks for normal and expert breeders (#4911) * 'Breeders in Space' cheevo unlocks for normal and expert breeders * Reduce breeder in space achievement points --- src/battle-scene.ts | 3 ++- .../encounters/the-expert-pokemon-breeder-encounter.ts | 9 --------- src/overrides.ts | 2 ++ src/phases/trainer-victory-phase.ts | 8 ++++++++ src/system/achv.ts | 2 +- 5 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/battle-scene.ts b/src/battle-scene.ts index 2f062667808..62e9d8ea717 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -3008,7 +3008,8 @@ export default class BattleScene extends SceneBase { } validateAchv(achv: Achv, args?: unknown[]): boolean { - if (!this.gameData.achvUnlocks.hasOwnProperty(achv.id) && achv.validate(this, args)) { + if ((!this.gameData.achvUnlocks.hasOwnProperty(achv.id) || Overrides.ACHIEVEMENTS_REUNLOCK_OVERRIDE) + && achv.validate(this, args)) { this.gameData.achvUnlocks[achv.id] = new Date().getTime(); this.ui.achvBar.showAchv(achv); if (vouchers.hasOwnProperty(achv.id)) { diff --git a/src/data/mystery-encounters/encounters/the-expert-pokemon-breeder-encounter.ts b/src/data/mystery-encounters/encounters/the-expert-pokemon-breeder-encounter.ts index 6a4c6592fda..5ac9852f27a 100644 --- a/src/data/mystery-encounters/encounters/the-expert-pokemon-breeder-encounter.ts +++ b/src/data/mystery-encounters/encounters/the-expert-pokemon-breeder-encounter.ts @@ -21,7 +21,6 @@ import { EggSourceType } from "#enums/egg-source-types"; import { EggTier } from "#enums/egg-type"; import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import { achvs } from "#app/system/achv"; import { modifierTypes, PokemonHeldItemModifierType } from "#app/modifier/modifier-type"; import { Type } from "#enums/type"; import { getPokeballTintColor } from "#app/data/pokeball"; @@ -520,12 +519,6 @@ function removePokemonFromPartyAndStoreHeldItems(scene: BattleScene, encounter: ]; } -function checkAchievement(scene: BattleScene) { - if (scene.arena.biomeType === Biome.SPACE) { - scene.validateAchv(achvs.BREEDERS_IN_SPACE); - } -} - function restorePartyAndHeldItems(scene: BattleScene) { const encounter = scene.currentBattle.mysteryEncounter!; // Restore original party @@ -617,8 +610,6 @@ function onGameOver(scene: BattleScene) { function doPostEncounterCleanup(scene: BattleScene) { const encounter = scene.currentBattle.mysteryEncounter!; if (!encounter.misc.encounterFailed) { - // Give achievement if in Space biome - checkAchievement(scene); // Give 20 friendship to the chosen pokemon encounter.misc.chosenPokemon.addFriendship(FRIENDSHIP_ADDED); restorePartyAndHeldItems(scene); diff --git a/src/overrides.ts b/src/overrides.ts index 7b73cd47b03..dc166307314 100644 --- a/src/overrides.ts +++ b/src/overrides.ts @@ -86,6 +86,8 @@ class DefaultOverrides { readonly ITEM_UNLOCK_OVERRIDE: Unlockables[] = []; /** Set to `true` to show all tutorials */ readonly BYPASS_TUTORIAL_SKIP_OVERRIDE: boolean = false; + /** Set to `true` to be able to re-earn already unlocked achievements */ + readonly ACHIEVEMENTS_REUNLOCK_OVERRIDE: boolean = false; /** Set to `true` to force Paralysis and Freeze to always activate, or `false` to force them to not activate */ readonly STATUS_ACTIVATION_OVERRIDE: boolean | null = null; diff --git a/src/phases/trainer-victory-phase.ts b/src/phases/trainer-victory-phase.ts index dc1b962f47e..d797e4360ac 100644 --- a/src/phases/trainer-victory-phase.ts +++ b/src/phases/trainer-victory-phase.ts @@ -9,6 +9,8 @@ import { BattlePhase } from "./battle-phase"; import { ModifierRewardPhase } from "./modifier-reward-phase"; import { MoneyRewardPhase } from "./money-reward-phase"; import { TrainerSlot } from "#app/data/trainer-config"; +import { Biome } from "#app/enums/biome"; +import { achvs } from "#app/system/achv"; export class TrainerVictoryPhase extends BattlePhase { constructor(scene: BattleScene) { @@ -34,11 +36,17 @@ export class TrainerVictoryPhase extends BattlePhase { } const trainerType = this.scene.currentBattle.trainer?.config.trainerType!; // TODO: is this bang correct? + // Validate Voucher for boss trainers if (vouchers.hasOwnProperty(TrainerType[trainerType])) { if (!this.scene.validateVoucher(vouchers[TrainerType[trainerType]]) && this.scene.currentBattle.trainer?.config.isBoss) { this.scene.unshiftPhase(new ModifierRewardPhase(this.scene, [ modifierTypes.VOUCHER, modifierTypes.VOUCHER, modifierTypes.VOUCHER_PLUS, modifierTypes.VOUCHER_PREMIUM ][vouchers[TrainerType[trainerType]].voucherType])); } } + // Breeders in Space achievement + if (this.scene.arena.biomeType === Biome.SPACE + && (trainerType === TrainerType.BREEDER || trainerType === TrainerType.EXPERT_POKEMON_BREEDER)) { + this.scene.validateAchv(achvs.BREEDERS_IN_SPACE); + } this.scene.ui.showText(i18next.t("battle:trainerDefeated", { trainerName: this.scene.currentBattle.trainer?.getName(TrainerSlot.NONE, true) }), null, () => { const victoryMessages = this.scene.currentBattle.trainer?.getVictoryMessages()!; // TODO: is this bang correct? diff --git a/src/system/achv.ts b/src/system/achv.ts index d94fcba48f2..a98e396264d 100644 --- a/src/system/achv.ts +++ b/src/system/achv.ts @@ -358,7 +358,7 @@ export const achvs = { MONO_FAIRY: new ChallengeAchv("MONO_FAIRY", "", "MONO_FAIRY.description", "fairy_feather", 100, (c, scene) => c instanceof SingleTypeChallenge && c.value === 18 && !scene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), FRESH_START: new ChallengeAchv("FRESH_START", "", "FRESH_START.description", "reviver_seed", 100, (c, scene) => c instanceof FreshStartChallenge && c.value > 0 && !scene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), INVERSE_BATTLE: new ChallengeAchv("INVERSE_BATTLE", "", "INVERSE_BATTLE.description", "inverse", 100, c => c instanceof InverseBattleChallenge && c.value > 0), - BREEDERS_IN_SPACE: new Achv("BREEDERS_IN_SPACE", "", "BREEDERS_IN_SPACE.description", "moon_stone", 100).setSecret(), + BREEDERS_IN_SPACE: new Achv("BREEDERS_IN_SPACE", "", "BREEDERS_IN_SPACE.description", "moon_stone", 50).setSecret(), }; export function initAchievements() { From de0d97739eb8c42b6ada752201582e8ec668e674 Mon Sep 17 00:00:00 2001 From: Ethan <71776311+EvasiveAce@users.noreply.github.com> Date: Fri, 29 Nov 2024 01:43:12 -0500 Subject: [PATCH 007/119] [Move] Implement True Force Switch (Roar, Whirlwind, Circle Throw, Dragon Tail) (#4881) * Force switch implemenation * Fix conditionals checking `SwitchType` Use `prependToPhase()` instead of `unshiftPhase()` * Update comments slightly, replace `||` chain with `.includes()` --------- Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> --- src/data/move.ts | 100 ++++++++++++++++++++++++++++----------- src/enums/switch-type.ts | 4 +- 2 files changed, 75 insertions(+), 29 deletions(-) diff --git a/src/data/move.ts b/src/data/move.ts index e41594a3189..76e4675d753 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -5967,50 +5967,97 @@ export class ForceSwitchOutAttr extends MoveEffectAttr { * Check if Wimp Out/Emergency Exit activates due to being hit by U-turn or Volt Switch * If it did, the user of U-turn or Volt Switch will not be switched out. */ - if (target.getAbility().hasAttr(PostDamageForceSwitchAbAttr) && - (move.id === Moves.U_TURN || move.id === Moves.VOLT_SWITCH || move.id === Moves.FLIP_TURN) + if (target.getAbility().hasAttr(PostDamageForceSwitchAbAttr) + && [ Moves.U_TURN, Moves.VOLT_SWITCH, Moves.FLIP_TURN ].includes(move.id) ) { if (this.hpDroppedBelowHalf(target)) { return false; } } - // Switch out logic for the player's Pokemon + if (switchOutTarget.scene.getPlayerParty().filter((p) => p.isAllowedInBattle() && !p.isOnField()).length < 1) { return false; } if (switchOutTarget.hp > 0) { - switchOutTarget.leaveField(this.switchType === SwitchType.SWITCH); - user.scene.prependToPhase(new SwitchPhase(user.scene, this.switchType, switchOutTarget.getFieldIndex(), true, true), MoveEndPhase); - return true; + if (this.switchType === SwitchType.FORCE_SWITCH) { + switchOutTarget.leaveField(true); + const slotIndex = Utils.randIntRange(user.scene.currentBattle.getBattlerCount(), user.scene.getPlayerParty().length); + user.scene.prependToPhase( + new SwitchSummonPhase( + user.scene, + this.switchType, + switchOutTarget.getFieldIndex(), + slotIndex, + false, + true + ), + MoveEndPhase + ); + } else { + switchOutTarget.leaveField(this.switchType === SwitchType.SWITCH); + user.scene.prependToPhase( + new SwitchPhase( + user.scene, + this.switchType, + switchOutTarget.getFieldIndex(), + true, + true + ), + MoveEndPhase + ); + return true; + } } return false; - } else if (user.scene.currentBattle.battleType !== BattleType.WILD) { - // Switch out logic for trainer battles + } else if (user.scene.currentBattle.battleType !== BattleType.WILD) { // Switch out logic for enemy trainers if (switchOutTarget.scene.getEnemyParty().filter((p) => p.isAllowedInBattle() && !p.isOnField()).length < 1) { return false; } if (switchOutTarget.hp > 0) { - // for opponent switching out - switchOutTarget.leaveField(this.switchType === SwitchType.SWITCH); - user.scene.prependToPhase(new SwitchSummonPhase(user.scene, this.switchType, switchOutTarget.getFieldIndex(), - (user.scene.currentBattle.trainer ? user.scene.currentBattle.trainer.getNextSummonIndex((switchOutTarget as EnemyPokemon).trainerSlot) : 0), - false, false), MoveEndPhase); + if (this.switchType === SwitchType.FORCE_SWITCH) { + switchOutTarget.leaveField(true); + const slotIndex = Utils.randIntRange(user.scene.currentBattle.getBattlerCount(), user.scene.getEnemyParty().length); + user.scene.prependToPhase( + new SwitchSummonPhase( + user.scene, + this.switchType, + switchOutTarget.getFieldIndex(), + slotIndex, + false, + false + ), + MoveEndPhase + ); + } else { + switchOutTarget.leaveField(this.switchType === SwitchType.SWITCH); + user.scene.prependToPhase( + new SwitchSummonPhase( + user.scene, + this.switchType, + switchOutTarget.getFieldIndex(), + (user.scene.currentBattle.trainer ? user.scene.currentBattle.trainer.getNextSummonIndex((switchOutTarget as EnemyPokemon).trainerSlot) : 0), + false, + false + ), + MoveEndPhase + ); + } } - } else { + } else { // Switch out logic for wild pokemon /** * Check if Wimp Out/Emergency Exit activates due to being hit by U-turn or Volt Switch * If it did, the user of U-turn or Volt Switch will not be switched out. */ - if (target.getAbility().hasAttr(PostDamageForceSwitchAbAttr) && - (move.id === Moves.U_TURN || move.id === Moves.VOLT_SWITCH) || move.id === Moves.FLIP_TURN) { + if (target.getAbility().hasAttr(PostDamageForceSwitchAbAttr) + && [ Moves.U_TURN, Moves.VOLT_SWITCH, Moves.FLIP_TURN ].includes(move.id) + ) { if (this.hpDroppedBelowHalf(target)) { return false; } } - // Switch out logic for everything else (eg: WILD battles) if (user.scene.currentBattle.waveIndex % 10 === 0) { return false; } @@ -7777,11 +7824,10 @@ export function initMoves() { .windMove(), new AttackMove(Moves.WING_ATTACK, Type.FLYING, MoveCategory.PHYSICAL, 60, 100, 35, -1, 0, 1), new StatusMove(Moves.WHIRLWIND, Type.NORMAL, -1, 20, -1, -6, 1) - .attr(ForceSwitchOutAttr) + .attr(ForceSwitchOutAttr, false, SwitchType.FORCE_SWITCH) .ignoresSubstitute() .hidesTarget() - .windMove() - .partial(), // Should force random switches + .windMove(), new ChargingAttackMove(Moves.FLY, Type.FLYING, MoveCategory.PHYSICAL, 90, 95, 15, -1, 0, 1) .chargeText(i18next.t("moveTriggers:flewUpHigh", { pokemonName: "{USER}" })) .chargeAttr(SemiInvulnerableAttr, BattlerTagType.FLYING) @@ -7857,10 +7903,9 @@ export function initMoves() { .soundBased() .target(MoveTarget.ALL_NEAR_ENEMIES), new StatusMove(Moves.ROAR, Type.NORMAL, -1, 20, -1, -6, 1) - .attr(ForceSwitchOutAttr) + .attr(ForceSwitchOutAttr, false, SwitchType.FORCE_SWITCH) .soundBased() - .hidesTarget() - .partial(), // Should force random switching + .hidesTarget(), new StatusMove(Moves.SING, Type.NORMAL, 55, 15, -1, 0, 1) .attr(StatusEffectAttr, StatusEffect.SLEEP) .soundBased(), @@ -9222,8 +9267,8 @@ export function initMoves() { .attr(StatStageChangeAttr, [ Stat.ATK ], 1, true) .attr(StatStageChangeAttr, [ Stat.SPD ], 2, true), new AttackMove(Moves.CIRCLE_THROW, Type.FIGHTING, MoveCategory.PHYSICAL, 60, 90, 10, -1, -6, 5) - .attr(ForceSwitchOutAttr) - .partial(), // Should force random switches + .attr(ForceSwitchOutAttr, false, SwitchType.FORCE_SWITCH) + .hidesTarget(), new AttackMove(Moves.INCINERATE, Type.FIRE, MoveCategory.SPECIAL, 60, 100, 15, -1, 0, 5) .target(MoveTarget.ALL_NEAR_ENEMIES) .attr(RemoveHeldItemAttr, true), @@ -9291,9 +9336,8 @@ export function initMoves() { new AttackMove(Moves.FROST_BREATH, Type.ICE, MoveCategory.SPECIAL, 60, 90, 10, 100, 0, 5) .attr(CritOnlyAttr), new AttackMove(Moves.DRAGON_TAIL, Type.DRAGON, MoveCategory.PHYSICAL, 60, 90, 10, -1, -6, 5) - .attr(ForceSwitchOutAttr) - .hidesTarget() - .partial(), // Should force random switches + .attr(ForceSwitchOutAttr, false, SwitchType.FORCE_SWITCH) + .hidesTarget(), new SelfStatusMove(Moves.WORK_UP, Type.NORMAL, -1, 30, -1, 0, 5) .attr(StatStageChangeAttr, [ Stat.ATK, Stat.SPATK ], 1, true), new AttackMove(Moves.ELECTROWEB, Type.ELECTRIC, MoveCategory.SPECIAL, 55, 95, 15, 100, 0, 5) diff --git a/src/enums/switch-type.ts b/src/enums/switch-type.ts index 752c0902636..d55872ae83b 100644 --- a/src/enums/switch-type.ts +++ b/src/enums/switch-type.ts @@ -10,5 +10,7 @@ export enum SwitchType { /** Transfers stat stages and other effects from the returning Pokemon to the switched in Pokemon */ BATON_PASS, /** Transfers the returning Pokemon's Substitute to the switched in Pokemon */ - SHED_TAIL + SHED_TAIL, + /** Force switchout to a random party member */ + FORCE_SWITCH, } From 6725164918da57f8ed0bf86bd5efe2688d419bcc Mon Sep 17 00:00:00 2001 From: muscode Date: Fri, 29 Nov 2024 15:23:55 -0600 Subject: [PATCH 008/119] [Bug] Fixed First Turn Move + Wimp Out interaction (#4928) * fix first turn move + wimpoout * Add comment about edge case issue --------- Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> --- src/data/ability.ts | 4 ++-- src/phases/switch-summon-phase.ts | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/data/ability.ts b/src/data/ability.ts index 7ffe016106e..39a9adde366 100644 --- a/src/data/ability.ts +++ b/src/data/ability.ts @@ -5930,10 +5930,10 @@ export function initAbilities() { .attr(PostDefendStatStageChangeAbAttr, (target, user, move) => move.category !== MoveCategory.STATUS, Stat.DEF, 1), new Ability(Abilities.WIMP_OUT, 7) .attr(PostDamageForceSwitchAbAttr) - .edgeCase(), // Should not trigger when hurting itself in confusion + .edgeCase(), // Should not trigger when hurting itself in confusion, causes Fake Out to fail turn 1 and succeed turn 2 if pokemon is switched out before battle start via playing in Switch Mode new Ability(Abilities.EMERGENCY_EXIT, 7) .attr(PostDamageForceSwitchAbAttr) - .edgeCase(), // Should not trigger when hurting itself in confusion + .edgeCase(), // Should not trigger when hurting itself in confusion, causes Fake Out to fail turn 1 and succeed turn 2 if pokemon is switched out before battle start via playing in Switch Mode new Ability(Abilities.WATER_COMPACTION, 7) .attr(PostDefendStatStageChangeAbAttr, (target, user, move) => user.getMoveType(move) === Type.WATER && move.category !== MoveCategory.STATUS, Stat.DEF, 2), new Ability(Abilities.MERCILESS, 7) diff --git a/src/phases/switch-summon-phase.ts b/src/phases/switch-summon-phase.ts index a667e17edf1..a1925768d83 100644 --- a/src/phases/switch-summon-phase.ts +++ b/src/phases/switch-summon-phase.ts @@ -1,5 +1,5 @@ import BattleScene from "#app/battle-scene"; -import { applyPreSwitchOutAbAttrs, PreSwitchOutAbAttr } from "#app/data/ability"; +import { applyPreSwitchOutAbAttrs, PostDamageForceSwitchAbAttr, PreSwitchOutAbAttr } from "#app/data/ability"; import { allMoves, ForceSwitchOutAttr } from "#app/data/move"; import { getPokeballTintColor } from "#app/data/pokeball"; import { SpeciesFormChangeActiveTrigger } from "#app/data/pokemon-forms"; @@ -166,10 +166,11 @@ export class SwitchSummonPhase extends SummonPhase { const currentCommand = pokemon.scene.currentBattle.turnCommands[this.fieldIndex]?.command; const lastPokemonIsForceSwitchedAndNotFainted = lastUsedMove?.hasAttr(ForceSwitchOutAttr) && !this.lastPokemon.isFainted(); + const lastPokemonHasForceSwitchAbAttr = this.lastPokemon.hasAbilityWithAttr(PostDamageForceSwitchAbAttr) && !this.lastPokemon.isFainted(); // Compensate for turn spent summoning // Or compensate for force switch move if switched out pokemon is not fainted - if (currentCommand === Command.POKEMON || lastPokemonIsForceSwitchedAndNotFainted) { + if (currentCommand === Command.POKEMON || lastPokemonIsForceSwitchedAndNotFainted || lastPokemonHasForceSwitchAbAttr) { pokemon.battleSummonData.turnCount--; pokemon.battleSummonData.waveTurnCount--; } From 4d341bf1fdb1175ab8771e8bf7eb88ad35785aac Mon Sep 17 00:00:00 2001 From: Moka <54149968+MokaStitcher@users.noreply.github.com> Date: Fri, 29 Nov 2024 22:25:50 +0100 Subject: [PATCH 009/119] [Sprite] Add fixed Skorupi and Parasect front sprites (#4944) * [sprite] add fixed Parasect front sprite by Kieran * [sprite] add fixed Skorupi front sprite by Kieran * [sprite] fix shiny skorupi fusions --- public/images/pokemon/451.json | 3045 ++++++-------------------- public/images/pokemon/451.png | Bin 6518 -> 6490 bytes public/images/pokemon/47.json | 1075 +++------ public/images/pokemon/47.png | Bin 5058 -> 5333 bytes public/images/pokemon/shiny/451.json | 3043 ++++++------------------- public/images/pokemon/shiny/451.png | Bin 6518 -> 6495 bytes public/images/pokemon/shiny/47.json | 1075 +++------ public/images/pokemon/shiny/47.png | Bin 5058 -> 5333 bytes 8 files changed, 2027 insertions(+), 6211 deletions(-) diff --git a/public/images/pokemon/451.json b/public/images/pokemon/451.json index 0e99c96f876..6c266f21a24 100644 --- a/public/images/pokemon/451.json +++ b/public/images/pokemon/451.json @@ -1,2330 +1,715 @@ -{ - "textures": [ - { - "image": "451.png", - "format": "RGBA8888", - "size": { - "w": 281, - "h": 281 - }, - "scale": 1, - "frames": [ - { - "filename": "0033.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 2, - "y": 5, - "w": 69, - "h": 41 - }, - "frame": { - "x": 0, - "y": 0, - "w": 69, - "h": 41 - } - }, - { - "filename": "0034.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 2, - "y": 5, - "w": 69, - "h": 41 - }, - "frame": { - "x": 0, - "y": 0, - "w": 69, - "h": 41 - } - }, - { - "filename": "0077.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 2, - "y": 5, - "w": 69, - "h": 41 - }, - "frame": { - "x": 0, - "y": 0, - "w": 69, - "h": 41 - } - }, - { - "filename": "0078.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 2, - "y": 5, - "w": 69, - "h": 41 - }, - "frame": { - "x": 0, - "y": 0, - "w": 69, - "h": 41 - } - }, - { - "filename": "0009.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 3, - "y": 3, - "w": 63, - "h": 43 - }, - "frame": { - "x": 69, - "y": 0, - "w": 63, - "h": 43 - } - }, - { - "filename": "0010.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 3, - "y": 3, - "w": 63, - "h": 43 - }, - "frame": { - "x": 69, - "y": 0, - "w": 63, - "h": 43 - } - }, - { - "filename": "0013.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 3, - "y": 3, - "w": 63, - "h": 43 - }, - "frame": { - "x": 69, - "y": 0, - "w": 63, - "h": 43 - } - }, - { - "filename": "0014.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 3, - "y": 3, - "w": 63, - "h": 43 - }, - "frame": { - "x": 69, - "y": 0, - "w": 63, - "h": 43 - } - }, - { - "filename": "0053.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 3, - "y": 3, - "w": 63, - "h": 43 - }, - "frame": { - "x": 69, - "y": 0, - "w": 63, - "h": 43 - } - }, - { - "filename": "0054.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 3, - "y": 3, - "w": 63, - "h": 43 - }, - "frame": { - "x": 69, - "y": 0, - "w": 63, - "h": 43 - } - }, - { - "filename": "0057.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 3, - "y": 3, - "w": 63, - "h": 43 - }, - "frame": { - "x": 69, - "y": 0, - "w": 63, - "h": 43 - } - }, - { - "filename": "0058.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 3, - "y": 3, - "w": 63, - "h": 43 - }, - "frame": { - "x": 69, - "y": 0, - "w": 63, - "h": 43 - } - }, - { - "filename": "0011.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 2, - "y": 3, - "w": 66, - "h": 43 - }, - "frame": { - "x": 132, - "y": 0, - "w": 66, - "h": 43 - } - }, - { - "filename": "0012.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 2, - "y": 3, - "w": 66, - "h": 43 - }, - "frame": { - "x": 132, - "y": 0, - "w": 66, - "h": 43 - } - }, - { - "filename": "0055.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 2, - "y": 3, - "w": 66, - "h": 43 - }, - "frame": { - "x": 132, - "y": 0, - "w": 66, - "h": 43 - } - }, - { - "filename": "0056.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 2, - "y": 3, - "w": 66, - "h": 43 - }, - "frame": { - "x": 132, - "y": 0, - "w": 66, - "h": 43 - } - }, - { - "filename": "0031.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 3, - "y": 3, - "w": 65, - "h": 43 - }, - "frame": { - "x": 198, - "y": 0, - "w": 65, - "h": 43 - } - }, - { - "filename": "0032.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 3, - "y": 3, - "w": 65, - "h": 43 - }, - "frame": { - "x": 198, - "y": 0, - "w": 65, - "h": 43 - } - }, - { - "filename": "0075.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 3, - "y": 3, - "w": 65, - "h": 43 - }, - "frame": { - "x": 198, - "y": 0, - "w": 65, - "h": 43 - } - }, - { - "filename": "0076.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 3, - "y": 3, - "w": 65, - "h": 43 - }, - "frame": { - "x": 198, - "y": 0, - "w": 65, - "h": 43 - } - }, - { - "filename": "0035.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 3, - "y": 3, - "w": 65, - "h": 43 - }, - "frame": { - "x": 0, - "y": 41, - "w": 65, - "h": 43 - } - }, - { - "filename": "0036.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 3, - "y": 3, - "w": 65, - "h": 43 - }, - "frame": { - "x": 0, - "y": 41, - "w": 65, - "h": 43 - } - }, - { - "filename": "0079.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 3, - "y": 3, - "w": 65, - "h": 43 - }, - "frame": { - "x": 0, - "y": 41, - "w": 65, - "h": 43 - } - }, - { - "filename": "0080.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 3, - "y": 3, - "w": 65, - "h": 43 - }, - "frame": { - "x": 0, - "y": 41, - "w": 65, - "h": 43 - } - }, - { - "filename": "0007.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 4, - "y": 2, - "w": 61, - "h": 44 - }, - "frame": { - "x": 65, - "y": 43, - "w": 61, - "h": 44 - } - }, - { - "filename": "0008.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 4, - "y": 2, - "w": 61, - "h": 44 - }, - "frame": { - "x": 65, - "y": 43, - "w": 61, - "h": 44 - } - }, - { - "filename": "0015.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 4, - "y": 2, - "w": 61, - "h": 44 - }, - "frame": { - "x": 65, - "y": 43, - "w": 61, - "h": 44 - } - }, - { - "filename": "0016.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 4, - "y": 2, - "w": 61, - "h": 44 - }, - "frame": { - "x": 65, - "y": 43, - "w": 61, - "h": 44 - } - }, - { - "filename": "0051.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 4, - "y": 2, - "w": 61, - "h": 44 - }, - "frame": { - "x": 65, - "y": 43, - "w": 61, - "h": 44 - } - }, - { - "filename": "0052.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 4, - "y": 2, - "w": 61, - "h": 44 - }, - "frame": { - "x": 65, - "y": 43, - "w": 61, - "h": 44 - } - }, - { - "filename": "0059.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 4, - "y": 2, - "w": 61, - "h": 44 - }, - "frame": { - "x": 65, - "y": 43, - "w": 61, - "h": 44 - } - }, - { - "filename": "0060.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 4, - "y": 2, - "w": 61, - "h": 44 - }, - "frame": { - "x": 65, - "y": 43, - "w": 61, - "h": 44 - } - }, - { - "filename": "0029.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 4, - "y": 2, - "w": 62, - "h": 44 - }, - "frame": { - "x": 126, - "y": 43, - "w": 62, - "h": 44 - } - }, - { - "filename": "0030.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 4, - "y": 2, - "w": 62, - "h": 44 - }, - "frame": { - "x": 126, - "y": 43, - "w": 62, - "h": 44 - } - }, - { - "filename": "0073.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 4, - "y": 2, - "w": 62, - "h": 44 - }, - "frame": { - "x": 126, - "y": 43, - "w": 62, - "h": 44 - } - }, - { - "filename": "0074.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 4, - "y": 2, - "w": 62, - "h": 44 - }, - "frame": { - "x": 126, - "y": 43, - "w": 62, - "h": 44 - } - }, - { - "filename": "0037.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 3, - "y": 2, - "w": 63, - "h": 44 - }, - "frame": { - "x": 188, - "y": 43, - "w": 63, - "h": 44 - } - }, - { - "filename": "0038.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 3, - "y": 2, - "w": 63, - "h": 44 - }, - "frame": { - "x": 188, - "y": 43, - "w": 63, - "h": 44 - } - }, - { - "filename": "0081.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 3, - "y": 2, - "w": 63, - "h": 44 - }, - "frame": { - "x": 188, - "y": 43, - "w": 63, - "h": 44 - } - }, - { - "filename": "0082.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 3, - "y": 2, - "w": 63, - "h": 44 - }, - "frame": { - "x": 188, - "y": 43, - "w": 63, - "h": 44 - } - }, - { - "filename": "0005.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 5, - "y": 1, - "w": 59, - "h": 45 - }, - "frame": { - "x": 0, - "y": 84, - "w": 59, - "h": 45 - } - }, - { - "filename": "0006.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 5, - "y": 1, - "w": 59, - "h": 45 - }, - "frame": { - "x": 0, - "y": 84, - "w": 59, - "h": 45 - } - }, - { - "filename": "0017.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 5, - "y": 1, - "w": 59, - "h": 45 - }, - "frame": { - "x": 0, - "y": 84, - "w": 59, - "h": 45 - } - }, - { - "filename": "0018.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 5, - "y": 1, - "w": 59, - "h": 45 - }, - "frame": { - "x": 0, - "y": 84, - "w": 59, - "h": 45 - } - }, - { - "filename": "0049.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 5, - "y": 1, - "w": 59, - "h": 45 - }, - "frame": { - "x": 0, - "y": 84, - "w": 59, - "h": 45 - } - }, - { - "filename": "0050.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 5, - "y": 1, - "w": 59, - "h": 45 - }, - "frame": { - "x": 0, - "y": 84, - "w": 59, - "h": 45 - } - }, - { - "filename": "0061.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 5, - "y": 1, - "w": 59, - "h": 45 - }, - "frame": { - "x": 0, - "y": 84, - "w": 59, - "h": 45 - } - }, - { - "filename": "0062.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 5, - "y": 1, - "w": 59, - "h": 45 - }, - "frame": { - "x": 0, - "y": 84, - "w": 59, - "h": 45 - } - }, - { - "filename": "0027.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 5, - "y": 1, - "w": 59, - "h": 45 - }, - "frame": { - "x": 59, - "y": 87, - "w": 59, - "h": 45 - } - }, - { - "filename": "0028.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 5, - "y": 1, - "w": 59, - "h": 45 - }, - "frame": { - "x": 59, - "y": 87, - "w": 59, - "h": 45 - } - }, - { - "filename": "0071.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 5, - "y": 1, - "w": 59, - "h": 45 - }, - "frame": { - "x": 59, - "y": 87, - "w": 59, - "h": 45 - } - }, - { - "filename": "0072.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 5, - "y": 1, - "w": 59, - "h": 45 - }, - "frame": { - "x": 59, - "y": 87, - "w": 59, - "h": 45 - } - }, - { - "filename": "0039.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 3, - "y": 1, - "w": 61, - "h": 45 - }, - "frame": { - "x": 118, - "y": 87, - "w": 61, - "h": 45 - } - }, - { - "filename": "0040.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 3, - "y": 1, - "w": 61, - "h": 45 - }, - "frame": { - "x": 118, - "y": 87, - "w": 61, - "h": 45 - } - }, - { - "filename": "0083.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 3, - "y": 1, - "w": 61, - "h": 45 - }, - "frame": { - "x": 118, - "y": 87, - "w": 61, - "h": 45 - } - }, - { - "filename": "0084.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 3, - "y": 1, - "w": 61, - "h": 45 - }, - "frame": { - "x": 118, - "y": 87, - "w": 61, - "h": 45 - } - }, - { - "filename": "0089.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 2, - "y": 1, - "w": 57, - "h": 45 - }, - "frame": { - "x": 179, - "y": 87, - "w": 57, - "h": 45 - } - }, - { - "filename": "0090.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 2, - "y": 1, - "w": 57, - "h": 45 - }, - "frame": { - "x": 179, - "y": 87, - "w": 57, - "h": 45 - } - }, - { - "filename": "0091.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 2, - "y": 1, - "w": 57, - "h": 45 - }, - "frame": { - "x": 0, - "y": 129, - "w": 57, - "h": 45 - } - }, - { - "filename": "0092.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 2, - "y": 1, - "w": 57, - "h": 45 - }, - "frame": { - "x": 0, - "y": 129, - "w": 57, - "h": 45 - } - }, - { - "filename": "0093.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 1, - "y": 1, - "w": 57, - "h": 45 - }, - "frame": { - "x": 57, - "y": 132, - "w": 57, - "h": 45 - } - }, - { - "filename": "0094.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 1, - "y": 1, - "w": 57, - "h": 45 - }, - "frame": { - "x": 57, - "y": 132, - "w": 57, - "h": 45 - } - }, - { - "filename": "0095.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 1, - "y": 1, - "w": 56, - "h": 45 - }, - "frame": { - "x": 114, - "y": 132, - "w": 56, - "h": 45 - } - }, - { - "filename": "0096.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 1, - "y": 1, - "w": 56, - "h": 45 - }, - "frame": { - "x": 114, - "y": 132, - "w": 56, - "h": 45 - } - }, - { - "filename": "0097.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 1, - "y": 1, - "w": 54, - "h": 45 - }, - "frame": { - "x": 170, - "y": 132, - "w": 54, - "h": 45 - } - }, - { - "filename": "0098.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 1, - "y": 1, - "w": 54, - "h": 45 - }, - "frame": { - "x": 170, - "y": 132, - "w": 54, - "h": 45 - } - }, - { - "filename": "0099.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 0, - "y": 1, - "w": 54, - "h": 45 - }, - "frame": { - "x": 224, - "y": 132, - "w": 54, - "h": 45 - } - }, - { - "filename": "0100.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 0, - "y": 1, - "w": 54, - "h": 45 - }, - "frame": { - "x": 224, - "y": 132, - "w": 54, - "h": 45 - } - }, - { - "filename": "0001.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 6, - "y": 0, - "w": 54, - "h": 46 - }, - "frame": { - "x": 0, - "y": 174, - "w": 54, - "h": 46 - } - }, - { - "filename": "0002.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 6, - "y": 0, - "w": 54, - "h": 46 - }, - "frame": { - "x": 0, - "y": 174, - "w": 54, - "h": 46 - } - }, - { - "filename": "0021.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 6, - "y": 0, - "w": 54, - "h": 46 - }, - "frame": { - "x": 0, - "y": 174, - "w": 54, - "h": 46 - } - }, - { - "filename": "0022.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 6, - "y": 0, - "w": 54, - "h": 46 - }, - "frame": { - "x": 0, - "y": 174, - "w": 54, - "h": 46 - } - }, - { - "filename": "0023.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 6, - "y": 0, - "w": 54, - "h": 46 - }, - "frame": { - "x": 0, - "y": 174, - "w": 54, - "h": 46 - } - }, - { - "filename": "0024.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 6, - "y": 0, - "w": 54, - "h": 46 - }, - "frame": { - "x": 0, - "y": 174, - "w": 54, - "h": 46 - } - }, - { - "filename": "0045.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 6, - "y": 0, - "w": 54, - "h": 46 - }, - "frame": { - "x": 0, - "y": 174, - "w": 54, - "h": 46 - } - }, - { - "filename": "0046.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 6, - "y": 0, - "w": 54, - "h": 46 - }, - "frame": { - "x": 0, - "y": 174, - "w": 54, - "h": 46 - } - }, - { - "filename": "0065.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 6, - "y": 0, - "w": 54, - "h": 46 - }, - "frame": { - "x": 0, - "y": 174, - "w": 54, - "h": 46 - } - }, - { - "filename": "0066.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 6, - "y": 0, - "w": 54, - "h": 46 - }, - "frame": { - "x": 0, - "y": 174, - "w": 54, - "h": 46 - } - }, - { - "filename": "0067.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 6, - "y": 0, - "w": 54, - "h": 46 - }, - "frame": { - "x": 0, - "y": 174, - "w": 54, - "h": 46 - } - }, - { - "filename": "0068.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 6, - "y": 0, - "w": 54, - "h": 46 - }, - "frame": { - "x": 0, - "y": 174, - "w": 54, - "h": 46 - } - }, - { - "filename": "0003.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 6, - "y": 0, - "w": 57, - "h": 46 - }, - "frame": { - "x": 54, - "y": 177, - "w": 57, - "h": 46 - } - }, - { - "filename": "0004.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 6, - "y": 0, - "w": 57, - "h": 46 - }, - "frame": { - "x": 54, - "y": 177, - "w": 57, - "h": 46 - } - }, - { - "filename": "0019.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 6, - "y": 0, - "w": 57, - "h": 46 - }, - "frame": { - "x": 54, - "y": 177, - "w": 57, - "h": 46 - } - }, - { - "filename": "0020.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 6, - "y": 0, - "w": 57, - "h": 46 - }, - "frame": { - "x": 54, - "y": 177, - "w": 57, - "h": 46 - } - }, - { - "filename": "0047.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 6, - "y": 0, - "w": 57, - "h": 46 - }, - "frame": { - "x": 54, - "y": 177, - "w": 57, - "h": 46 - } - }, - { - "filename": "0048.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 6, - "y": 0, - "w": 57, - "h": 46 - }, - "frame": { - "x": 54, - "y": 177, - "w": 57, - "h": 46 - } - }, - { - "filename": "0063.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 6, - "y": 0, - "w": 57, - "h": 46 - }, - "frame": { - "x": 54, - "y": 177, - "w": 57, - "h": 46 - } - }, - { - "filename": "0064.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 6, - "y": 0, - "w": 57, - "h": 46 - }, - "frame": { - "x": 54, - "y": 177, - "w": 57, - "h": 46 - } - }, - { - "filename": "0025.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 6, - "y": 0, - "w": 57, - "h": 46 - }, - "frame": { - "x": 111, - "y": 177, - "w": 57, - "h": 46 - } - }, - { - "filename": "0026.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 6, - "y": 0, - "w": 57, - "h": 46 - }, - "frame": { - "x": 111, - "y": 177, - "w": 57, - "h": 46 - } - }, - { - "filename": "0069.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 6, - "y": 0, - "w": 57, - "h": 46 - }, - "frame": { - "x": 111, - "y": 177, - "w": 57, - "h": 46 - } - }, - { - "filename": "0070.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 6, - "y": 0, - "w": 57, - "h": 46 - }, - "frame": { - "x": 111, - "y": 177, - "w": 57, - "h": 46 - } - }, - { - "filename": "0041.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 3, - "y": 0, - "w": 60, - "h": 46 - }, - "frame": { - "x": 168, - "y": 177, - "w": 60, - "h": 46 - } - }, - { - "filename": "0042.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 3, - "y": 0, - "w": 60, - "h": 46 - }, - "frame": { - "x": 168, - "y": 177, - "w": 60, - "h": 46 - } - }, - { - "filename": "0085.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 3, - "y": 0, - "w": 60, - "h": 46 - }, - "frame": { - "x": 168, - "y": 177, - "w": 60, - "h": 46 - } - }, - { - "filename": "0086.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 3, - "y": 0, - "w": 60, - "h": 46 - }, - "frame": { - "x": 168, - "y": 177, - "w": 60, - "h": 46 - } - }, - { - "filename": "0109.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 6, - "y": 0, - "w": 53, - "h": 46 - }, - "frame": { - "x": 228, - "y": 177, - "w": 53, - "h": 46 - } - }, - { - "filename": "0110.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 6, - "y": 0, - "w": 53, - "h": 46 - }, - "frame": { - "x": 228, - "y": 177, - "w": 53, - "h": 46 - } - }, - { - "filename": "0101.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 1, - "y": 0, - "w": 54, - "h": 46 - }, - "frame": { - "x": 0, - "y": 220, - "w": 54, - "h": 46 - } - }, - { - "filename": "0102.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 1, - "y": 0, - "w": 54, - "h": 46 - }, - "frame": { - "x": 0, - "y": 220, - "w": 54, - "h": 46 - } - }, - { - "filename": "0043.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 3, - "y": 0, - "w": 57, - "h": 46 - }, - "frame": { - "x": 54, - "y": 223, - "w": 57, - "h": 46 - } - }, - { - "filename": "0044.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 3, - "y": 0, - "w": 57, - "h": 46 - }, - "frame": { - "x": 54, - "y": 223, - "w": 57, - "h": 46 - } - }, - { - "filename": "0087.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 3, - "y": 0, - "w": 57, - "h": 46 - }, - "frame": { - "x": 54, - "y": 223, - "w": 57, - "h": 46 - } - }, - { - "filename": "0088.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 3, - "y": 0, - "w": 57, - "h": 46 - }, - "frame": { - "x": 54, - "y": 223, - "w": 57, - "h": 46 - } - }, - { - "filename": "0103.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 2, - "y": 0, - "w": 55, - "h": 46 - }, - "frame": { - "x": 111, - "y": 223, - "w": 55, - "h": 46 - } - }, - { - "filename": "0104.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 2, - "y": 0, - "w": 55, - "h": 46 - }, - "frame": { - "x": 111, - "y": 223, - "w": 55, - "h": 46 - } - }, - { - "filename": "0105.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 3, - "y": 0, - "w": 55, - "h": 46 - }, - "frame": { - "x": 166, - "y": 223, - "w": 55, - "h": 46 - } - }, - { - "filename": "0106.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 3, - "y": 0, - "w": 55, - "h": 46 - }, - "frame": { - "x": 166, - "y": 223, - "w": 55, - "h": 46 - } - }, - { - "filename": "0107.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 5, - "y": 0, - "w": 54, - "h": 46 - }, - "frame": { - "x": 221, - "y": 223, - "w": 54, - "h": 46 - } - }, - { - "filename": "0108.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 71, - "h": 46 - }, - "spriteSourceSize": { - "x": 5, - "y": 0, - "w": 54, - "h": 46 - }, - "frame": { - "x": 221, - "y": 223, - "w": 54, - "h": 46 - } - } - ] - } - ], - "meta": { - "app": "https://www.codeandweb.com/texturepacker", - "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:e303c68c1876b77078f3e1fd4372a4ce:84139d6b94cea0f3c45dbd8fa7109c3d:c79e17c206de27e3b7f1ce96f7df8e51$" - } -} +{ "frames": [ + { + "filename": "0055.png", + "frame": { "x": 0, "y": 0, "w": 68, "h": 40 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 6, "w": 68, "h": 40 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0001.png", + "frame": { "x": 287, "y": 86, "w": 52, "h": 46 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 52, "h": 46 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0002.png", + "frame": { "x": 287, "y": 86, "w": 52, "h": 46 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 52, "h": 46 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0003.png", + "frame": { "x": 57, "y": 86, "w": 55, "h": 45 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 1, "w": 55, "h": 45 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0004.png", + "frame": { "x": 57, "y": 86, "w": 55, "h": 45 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 1, "w": 55, "h": 45 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0005.png", + "frame": { "x": 0, "y": 85, "w": 57, "h": 44 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 2, "w": 57, "h": 44 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0006.png", + "frame": { "x": 0, "y": 85, "w": 57, "h": 44 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 2, "w": 57, "h": 44 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0007.png", + "frame": { "x": 238, "y": 43, "w": 59, "h": 43 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 3, "w": 59, "h": 43 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0008.png", + "frame": { "x": 238, "y": 43, "w": 59, "h": 43 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 3, "w": 59, "h": 43 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0009.png", + "frame": { "x": 177, "y": 42, "w": 61, "h": 42 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 4, "w": 61, "h": 42 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0010.png", + "frame": { "x": 177, "y": 42, "w": 61, "h": 42 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 4, "w": 61, "h": 42 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0011.png", + "frame": { "x": 68, "y": 0, "w": 64, "h": 42 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 4, "w": 64, "h": 42 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0012.png", + "frame": { "x": 68, "y": 0, "w": 64, "h": 42 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 4, "w": 64, "h": 42 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0013.png", + "frame": { "x": 177, "y": 42, "w": 61, "h": 42 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 4, "w": 61, "h": 42 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0014.png", + "frame": { "x": 177, "y": 42, "w": 61, "h": 42 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 4, "w": 61, "h": 42 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0015.png", + "frame": { "x": 238, "y": 43, "w": 59, "h": 43 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 3, "w": 59, "h": 43 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0016.png", + "frame": { "x": 238, "y": 43, "w": 59, "h": 43 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 3, "w": 59, "h": 43 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0017.png", + "frame": { "x": 0, "y": 85, "w": 57, "h": 44 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 2, "w": 57, "h": 44 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0018.png", + "frame": { "x": 0, "y": 85, "w": 57, "h": 44 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 2, "w": 57, "h": 44 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0019.png", + "frame": { "x": 57, "y": 86, "w": 55, "h": 45 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 1, "w": 55, "h": 45 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0020.png", + "frame": { "x": 57, "y": 86, "w": 55, "h": 45 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 1, "w": 55, "h": 45 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0021.png", + "frame": { "x": 287, "y": 86, "w": 52, "h": 46 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 52, "h": 46 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0022.png", + "frame": { "x": 287, "y": 86, "w": 52, "h": 46 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 52, "h": 46 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0023.png", + "frame": { "x": 287, "y": 86, "w": 52, "h": 46 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 52, "h": 46 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0024.png", + "frame": { "x": 287, "y": 86, "w": 52, "h": 46 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 52, "h": 46 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0025.png", + "frame": { "x": 57, "y": 86, "w": 55, "h": 45 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 1, "w": 55, "h": 45 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0026.png", + "frame": { "x": 57, "y": 86, "w": 55, "h": 45 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 1, "w": 55, "h": 45 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0027.png", + "frame": { "x": 0, "y": 85, "w": 57, "h": 44 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 2, "w": 57, "h": 44 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0028.png", + "frame": { "x": 0, "y": 85, "w": 57, "h": 44 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 2, "w": 57, "h": 44 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0029.png", + "frame": { "x": 238, "y": 43, "w": 59, "h": 43 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 3, "w": 59, "h": 43 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0030.png", + "frame": { "x": 238, "y": 43, "w": 59, "h": 43 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 3, "w": 59, "h": 43 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0031.png", + "frame": { "x": 177, "y": 42, "w": 61, "h": 42 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 4, "w": 61, "h": 42 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0032.png", + "frame": { "x": 177, "y": 42, "w": 61, "h": 42 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 4, "w": 61, "h": 42 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0033.png", + "frame": { "x": 68, "y": 0, "w": 64, "h": 42 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 4, "w": 64, "h": 42 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0034.png", + "frame": { "x": 68, "y": 0, "w": 64, "h": 42 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 4, "w": 64, "h": 42 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0035.png", + "frame": { "x": 177, "y": 42, "w": 61, "h": 42 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 4, "w": 61, "h": 42 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0036.png", + "frame": { "x": 177, "y": 42, "w": 61, "h": 42 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 4, "w": 61, "h": 42 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0037.png", + "frame": { "x": 238, "y": 43, "w": 59, "h": 43 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 3, "w": 59, "h": 43 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0038.png", + "frame": { "x": 238, "y": 43, "w": 59, "h": 43 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 3, "w": 59, "h": 43 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0039.png", + "frame": { "x": 0, "y": 85, "w": 57, "h": 44 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 2, "w": 57, "h": 44 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0040.png", + "frame": { "x": 0, "y": 85, "w": 57, "h": 44 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 2, "w": 57, "h": 44 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0041.png", + "frame": { "x": 57, "y": 86, "w": 55, "h": 45 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 1, "w": 55, "h": 45 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0042.png", + "frame": { "x": 57, "y": 86, "w": 55, "h": 45 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 1, "w": 55, "h": 45 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0043.png", + "frame": { "x": 287, "y": 86, "w": 52, "h": 46 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 52, "h": 46 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0044.png", + "frame": { "x": 287, "y": 86, "w": 52, "h": 46 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 52, "h": 46 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0045.png", + "frame": { "x": 287, "y": 86, "w": 52, "h": 46 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 52, "h": 46 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0046.png", + "frame": { "x": 287, "y": 86, "w": 52, "h": 46 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 52, "h": 46 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0047.png", + "frame": { "x": 232, "y": 86, "w": 55, "h": 45 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 1, "w": 55, "h": 45 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0048.png", + "frame": { "x": 232, "y": 86, "w": 55, "h": 45 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 1, "w": 55, "h": 45 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0049.png", + "frame": { "x": 117, "y": 85, "w": 57, "h": 44 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 2, "w": 57, "h": 44 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0050.png", + "frame": { "x": 117, "y": 85, "w": 57, "h": 44 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 2, "w": 57, "h": 44 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0051.png", + "frame": { "x": 117, "y": 42, "w": 60, "h": 43 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 3, "w": 60, "h": 43 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0052.png", + "frame": { "x": 117, "y": 42, "w": 60, "h": 43 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 3, "w": 60, "h": 43 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0053.png", + "frame": { "x": 132, "y": 0, "w": 63, "h": 42 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 4, "w": 63, "h": 42 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0054.png", + "frame": { "x": 132, "y": 0, "w": 63, "h": 42 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 4, "w": 63, "h": 42 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0056.png", + "frame": { "x": 0, "y": 0, "w": 68, "h": 40 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 6, "w": 68, "h": 40 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0057.png", + "frame": { "x": 195, "y": 0, "w": 63, "h": 42 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 4, "w": 63, "h": 42 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0058.png", + "frame": { "x": 195, "y": 0, "w": 63, "h": 42 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 4, "w": 63, "h": 42 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0059.png", + "frame": { "x": 258, "y": 0, "w": 61, "h": 43 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 3, "w": 61, "h": 43 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0060.png", + "frame": { "x": 258, "y": 0, "w": 61, "h": 43 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 3, "w": 61, "h": 43 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0061.png", + "frame": { "x": 58, "y": 42, "w": 59, "h": 44 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 2, "w": 59, "h": 44 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0062.png", + "frame": { "x": 58, "y": 42, "w": 59, "h": 44 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 2, "w": 59, "h": 44 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0063.png", + "frame": { "x": 0, "y": 40, "w": 58, "h": 45 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 58, "h": 45 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0064.png", + "frame": { "x": 0, "y": 40, "w": 58, "h": 45 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 58, "h": 45 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0065.png", + "frame": { "x": 177, "y": 84, "w": 55, "h": 46 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 55, "h": 46 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0066.png", + "frame": { "x": 177, "y": 84, "w": 55, "h": 46 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 55, "h": 46 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0067.png", + "frame": { "x": 0, "y": 129, "w": 55, "h": 44 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 2, "w": 55, "h": 44 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0068.png", + "frame": { "x": 0, "y": 129, "w": 55, "h": 44 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 2, "w": 55, "h": 44 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0069.png", + "frame": { "x": 112, "y": 129, "w": 55, "h": 44 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 2, "w": 55, "h": 44 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0070.png", + "frame": { "x": 112, "y": 129, "w": 55, "h": 44 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 2, "w": 55, "h": 44 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0071.png", + "frame": { "x": 167, "y": 130, "w": 55, "h": 44 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 2, "w": 55, "h": 44 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0072.png", + "frame": { "x": 167, "y": 130, "w": 55, "h": 44 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 2, "w": 55, "h": 44 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0073.png", + "frame": { "x": 0, "y": 173, "w": 54, "h": 44 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 2, "w": 54, "h": 44 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0074.png", + "frame": { "x": 0, "y": 173, "w": 54, "h": 44 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 2, "w": 54, "h": 44 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0075.png", + "frame": { "x": 54, "y": 177, "w": 52, "h": 44 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 2, "w": 52, "h": 44 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0076.png", + "frame": { "x": 54, "y": 177, "w": 52, "h": 44 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 2, "w": 52, "h": 44 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0077.png", + "frame": { "x": 210, "y": 176, "w": 53, "h": 44 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 2, "w": 53, "h": 44 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0078.png", + "frame": { "x": 210, "y": 176, "w": 53, "h": 44 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 2, "w": 53, "h": 44 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0079.png", + "frame": { "x": 158, "y": 174, "w": 52, "h": 45 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 52, "h": 45 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0080.png", + "frame": { "x": 158, "y": 174, "w": 52, "h": 45 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 1, "w": 52, "h": 45 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0081.png", + "frame": { "x": 222, "y": 131, "w": 53, "h": 45 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 53, "h": 45 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0082.png", + "frame": { "x": 222, "y": 131, "w": 53, "h": 45 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 53, "h": 45 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0083.png", + "frame": { "x": 275, "y": 132, "w": 53, "h": 45 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 53, "h": 45 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0084.png", + "frame": { "x": 275, "y": 132, "w": 53, "h": 45 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 53, "h": 45 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0085.png", + "frame": { "x": 55, "y": 131, "w": 52, "h": 46 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 0, "w": 52, "h": 46 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0086.png", + "frame": { "x": 55, "y": 131, "w": 52, "h": 46 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 0, "w": 52, "h": 46 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0087.png", + "frame": { "x": 107, "y": 173, "w": 51, "h": 46 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 51, "h": 46 }, + "sourceSize": { "w": 71, "h": 46 } + }, + { + "filename": "0088.png", + "frame": { "x": 107, "y": 173, "w": 51, "h": 46 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 51, "h": 46 }, + "sourceSize": { "w": 71, "h": 46 } + } + ], + "meta": { + "app": "https://www.aseprite.org/", + "version": "1.3.8.1-x64", + "image": "451.png", + "format": "I8", + "size": { "w": 339, "h": 221 }, + "scale": "1" + } +} \ No newline at end of file diff --git a/public/images/pokemon/451.png b/public/images/pokemon/451.png index fac8f5a0170b216f4535ff54e1ea317807f422cb..716e8a0804135a9fe84e338b769805352f50713a 100644 GIT binary patch literal 6490 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 diff --git a/public/images/pokemon/47.json b/public/images/pokemon/47.json index 437459a66e9..959bfe740f7 100644 --- a/public/images/pokemon/47.json +++ b/public/images/pokemon/47.json @@ -1,776 +1,299 @@ -{ - "textures": [ - { - "image": "47.png", - "format": "RGBA8888", - "size": { - "w": 230, - "h": 230 - }, - "scale": 1, - "frames": [ - { - "filename": "0009.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 6, - "y": 12, - "w": 56, - "h": 49 - }, - "frame": { - "x": 0, - "y": 0, - "w": 56, - "h": 49 - } - }, - { - "filename": "0010.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 6, - "y": 12, - "w": 56, - "h": 49 - }, - "frame": { - "x": 0, - "y": 0, - "w": 56, - "h": 49 - } - }, - { - "filename": "0027.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 0, - "y": 12, - "w": 62, - "h": 51 - }, - "frame": { - "x": 56, - "y": 0, - "w": 62, - "h": 51 - } - }, - { - "filename": "0028.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 0, - "y": 12, - "w": 62, - "h": 51 - }, - "frame": { - "x": 56, - "y": 0, - "w": 62, - "h": 51 - } - }, - { - "filename": "0007.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 7, - "y": 8, - "w": 55, - "h": 53 - }, - "frame": { - "x": 118, - "y": 0, - "w": 55, - "h": 53 - } - }, - { - "filename": "0008.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 7, - "y": 8, - "w": 55, - "h": 53 - }, - "frame": { - "x": 118, - "y": 0, - "w": 55, - "h": 53 - } - }, - { - "filename": "0011.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 7, - "y": 7, - "w": 55, - "h": 54 - }, - "frame": { - "x": 173, - "y": 0, - "w": 55, - "h": 54 - } - }, - { - "filename": "0012.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 7, - "y": 7, - "w": 55, - "h": 54 - }, - "frame": { - "x": 173, - "y": 0, - "w": 55, - "h": 54 - } - }, - { - "filename": "0005.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 53, - "h": 56 - }, - "frame": { - "x": 0, - "y": 49, - "w": 53, - "h": 56 - } - }, - { - "filename": "0006.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 53, - "h": 56 - }, - "frame": { - "x": 0, - "y": 49, - "w": 53, - "h": 56 - } - }, - { - "filename": "0025.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 0, - "y": 8, - "w": 62, - "h": 55 - }, - "frame": { - "x": 53, - "y": 51, - "w": 62, - "h": 55 - } - }, - { - "filename": "0026.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 0, - "y": 8, - "w": 62, - "h": 55 - }, - "frame": { - "x": 53, - "y": 51, - "w": 62, - "h": 55 - } - }, - { - "filename": "0013.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 53, - "h": 57 - }, - "frame": { - "x": 115, - "y": 53, - "w": 53, - "h": 57 - } - }, - { - "filename": "0014.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 53, - "h": 57 - }, - "frame": { - "x": 115, - "y": 53, - "w": 53, - "h": 57 - } - }, - { - "filename": "0029.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 0, - "y": 7, - "w": 62, - "h": 56 - }, - "frame": { - "x": 168, - "y": 54, - "w": 62, - "h": 56 - } - }, - { - "filename": "0030.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 0, - "y": 7, - "w": 62, - "h": 56 - }, - "frame": { - "x": 168, - "y": 54, - "w": 62, - "h": 56 - } - }, - { - "filename": "0023.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 61, - "h": 58 - }, - "frame": { - "x": 0, - "y": 106, - "w": 61, - "h": 58 - } - }, - { - "filename": "0024.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 61, - "h": 58 - }, - "frame": { - "x": 0, - "y": 106, - "w": 61, - "h": 58 - } - }, - { - "filename": "0003.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 6, - "y": 2, - "w": 54, - "h": 59 - }, - "frame": { - "x": 61, - "y": 106, - "w": 54, - "h": 59 - } - }, - { - "filename": "0004.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 6, - "y": 2, - "w": 54, - "h": 59 - }, - "frame": { - "x": 61, - "y": 106, - "w": 54, - "h": 59 - } - }, - { - "filename": "0001.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 2, - "y": 2, - "w": 57, - "h": 59 - }, - "frame": { - "x": 115, - "y": 110, - "w": 57, - "h": 59 - } - }, - { - "filename": "0002.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 2, - "y": 2, - "w": 57, - "h": 59 - }, - "frame": { - "x": 115, - "y": 110, - "w": 57, - "h": 59 - } - }, - { - "filename": "0019.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 2, - "y": 2, - "w": 57, - "h": 59 - }, - "frame": { - "x": 115, - "y": 110, - "w": 57, - "h": 59 - } - }, - { - "filename": "0020.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 2, - "y": 2, - "w": 57, - "h": 59 - }, - "frame": { - "x": 115, - "y": 110, - "w": 57, - "h": 59 - } - }, - { - "filename": "0015.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 6, - "y": 2, - "w": 54, - "h": 59 - }, - "frame": { - "x": 172, - "y": 110, - "w": 54, - "h": 59 - } - }, - { - "filename": "0016.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 6, - "y": 2, - "w": 54, - "h": 59 - }, - "frame": { - "x": 172, - "y": 110, - "w": 54, - "h": 59 - } - }, - { - "filename": "0031.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 0, - "y": 4, - "w": 61, - "h": 59 - }, - "frame": { - "x": 0, - "y": 164, - "w": 61, - "h": 59 - } - }, - { - "filename": "0032.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 0, - "y": 4, - "w": 61, - "h": 59 - }, - "frame": { - "x": 0, - "y": 164, - "w": 61, - "h": 59 - } - }, - { - "filename": "0017.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 2, - "y": 0, - "w": 57, - "h": 61 - }, - "frame": { - "x": 61, - "y": 169, - "w": 57, - "h": 61 - } - }, - { - "filename": "0018.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 2, - "y": 0, - "w": 57, - "h": 61 - }, - "frame": { - "x": 61, - "y": 169, - "w": 57, - "h": 61 - } - }, - { - "filename": "0035.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 2, - "y": 0, - "w": 57, - "h": 61 - }, - "frame": { - "x": 61, - "y": 169, - "w": 57, - "h": 61 - } - }, - { - "filename": "0036.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 2, - "y": 0, - "w": 57, - "h": 61 - }, - "frame": { - "x": 61, - "y": 169, - "w": 57, - "h": 61 - } - }, - { - "filename": "0021.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 0, - "y": 2, - "w": 60, - "h": 61 - }, - "frame": { - "x": 118, - "y": 169, - "w": 60, - "h": 61 - } - }, - { - "filename": "0022.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 0, - "y": 2, - "w": 60, - "h": 61 - }, - "frame": { - "x": 118, - "y": 169, - "w": 60, - "h": 61 - } - }, - { - "filename": "0033.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 0, - "y": 2, - "w": 60, - "h": 61 - }, - "frame": { - "x": 118, - "y": 169, - "w": 60, - "h": 61 - } - }, - { - "filename": "0034.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 0, - "y": 2, - "w": 60, - "h": 61 - }, - "frame": { - "x": 118, - "y": 169, - "w": 60, - "h": 61 - } - } - ] - } - ], - "meta": { - "app": "https://www.codeandweb.com/texturepacker", - "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:b28fe643197bcc1def0e0ac2ba9f4e67:516d08c8e1ff13b49a109b082ef12860:fe45e2d628a6cef0908f7b82468c8798$" - } -} \ No newline at end of file +{ "frames": [ + { + "filename": "0001.png", + "frame": { "x": 0, "y": 58, "w": 55, "h": 57 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 5, "w": 55, "h": 57 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0002.png", + "frame": { "x": 0, "y": 58, "w": 55, "h": 57 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 5, "w": 55, "h": 57 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0003.png", + "frame": { "x": 166, "y": 114, "w": 52, "h": 56 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 5, "w": 52, "h": 56 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0004.png", + "frame": { "x": 166, "y": 114, "w": 52, "h": 56 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 5, "w": 52, "h": 56 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0005.png", + "frame": { "x": 0, "y": 169, "w": 51, "h": 54 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 7, "w": 51, "h": 54 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0006.png", + "frame": { "x": 0, "y": 169, "w": 51, "h": 54 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 7, "w": 51, "h": 54 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0007.png", + "frame": { "x": 104, "y": 166, "w": 53, "h": 52 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 9, "w": 53, "h": 52 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0008.png", + "frame": { "x": 104, "y": 166, "w": 53, "h": 52 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 9, "w": 53, "h": 52 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0009.png", + "frame": { "x": 157, "y": 170, "w": 55, "h": 49 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 12, "w": 55, "h": 49 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0010.png", + "frame": { "x": 157, "y": 170, "w": 55, "h": 49 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 12, "w": 55, "h": 49 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0011.png", + "frame": { "x": 0, "y": 115, "w": 53, "h": 54 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 8, "w": 53, "h": 54 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0012.png", + "frame": { "x": 0, "y": 115, "w": 53, "h": 54 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 8, "w": 53, "h": 54 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0013.png", + "frame": { "x": 53, "y": 116, "w": 51, "h": 56 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 6, "w": 51, "h": 56 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0014.png", + "frame": { "x": 53, "y": 116, "w": 51, "h": 56 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 6, "w": 51, "h": 56 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0015.png", + "frame": { "x": 114, "y": 109, "w": 52, "h": 57 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 5, "w": 52, "h": 57 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0016.png", + "frame": { "x": 114, "y": 109, "w": 52, "h": 57 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 5, "w": 52, "h": 57 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0017.png", + "frame": { "x": 59, "y": 57, "w": 55, "h": 59 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 3, "w": 55, "h": 59 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0018.png", + "frame": { "x": 59, "y": 57, "w": 55, "h": 59 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 3, "w": 55, "h": 59 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0019.png", + "frame": { "x": 0, "y": 58, "w": 55, "h": 57 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 5, "w": 55, "h": 57 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0020.png", + "frame": { "x": 0, "y": 58, "w": 55, "h": 57 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 5, "w": 55, "h": 57 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0021.png", + "frame": { "x": 178, "y": 56, "w": 57, "h": 58 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 5, "w": 57, "h": 58 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0022.png", + "frame": { "x": 178, "y": 56, "w": 57, "h": 58 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 5, "w": 57, "h": 58 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0023.png", + "frame": { "x": 119, "y": 0, "w": 59, "h": 57 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 7, "w": 59, "h": 57 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0024.png", + "frame": { "x": 119, "y": 0, "w": 59, "h": 57 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 7, "w": 59, "h": 57 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0025.png", + "frame": { "x": 178, "y": 0, "w": 60, "h": 56 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 9, "w": 60, "h": 56 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0026.png", + "frame": { "x": 178, "y": 0, "w": 60, "h": 56 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 9, "w": 60, "h": 56 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0027.png", + "frame": { "x": 114, "y": 57, "w": 62, "h": 52 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 12, "w": 62, "h": 52 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0028.png", + "frame": { "x": 114, "y": 57, "w": 62, "h": 52 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 12, "w": 62, "h": 52 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0029.png", + "frame": { "x": 59, "y": 0, "w": 60, "h": 57 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 8, "w": 60, "h": 57 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0030.png", + "frame": { "x": 59, "y": 0, "w": 60, "h": 57 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 8, "w": 60, "h": 57 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0031.png", + "frame": { "x": 0, "y": 0, "w": 59, "h": 58 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 6, "w": 59, "h": 58 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0032.png", + "frame": { "x": 0, "y": 0, "w": 59, "h": 58 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 6, "w": 59, "h": 58 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0033.png", + "frame": { "x": 178, "y": 56, "w": 57, "h": 58 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 5, "w": 57, "h": 58 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0034.png", + "frame": { "x": 178, "y": 56, "w": 57, "h": 58 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 5, "w": 57, "h": 58 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0035.png", + "frame": { "x": 59, "y": 57, "w": 55, "h": 59 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 3, "w": 55, "h": 59 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0036.png", + "frame": { "x": 59, "y": 57, "w": 55, "h": 59 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 3, "w": 55, "h": 59 }, + "sourceSize": { "w": 65, "h": 65 } + } + ], + "meta": { + "app": "https://www.aseprite.org/", + "version": "1.3.8.1-x64", + "image": "47.png", + "format": "I8", + "size": { "w": 238, "h": 223 }, + "scale": "1" + } +} diff --git a/public/images/pokemon/47.png b/public/images/pokemon/47.png index f9474fda1c9a09dbbeaf0700efa1fb0f358f489c..665cabf322ec57e14ad04ae03f25efa4514f95ae 100644 GIT binary patch literal 5333 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 literal 5058 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 diff --git a/public/images/pokemon/shiny/47.json b/public/images/pokemon/shiny/47.json index 185bcf4b527..0aa03eab585 100644 --- a/public/images/pokemon/shiny/47.json +++ b/public/images/pokemon/shiny/47.json @@ -1,776 +1,299 @@ -{ - "textures": [ - { - "image": "47.png", - "format": "RGBA8888", - "size": { - "w": 230, - "h": 230 - }, - "scale": 1, - "frames": [ - { - "filename": "0009.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 6, - "y": 12, - "w": 56, - "h": 49 - }, - "frame": { - "x": 0, - "y": 0, - "w": 56, - "h": 49 - } - }, - { - "filename": "0010.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 6, - "y": 12, - "w": 56, - "h": 49 - }, - "frame": { - "x": 0, - "y": 0, - "w": 56, - "h": 49 - } - }, - { - "filename": "0027.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 0, - "y": 12, - "w": 62, - "h": 51 - }, - "frame": { - "x": 56, - "y": 0, - "w": 62, - "h": 51 - } - }, - { - "filename": "0028.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 0, - "y": 12, - "w": 62, - "h": 51 - }, - "frame": { - "x": 56, - "y": 0, - "w": 62, - "h": 51 - } - }, - { - "filename": "0007.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 7, - "y": 8, - "w": 55, - "h": 53 - }, - "frame": { - "x": 118, - "y": 0, - "w": 55, - "h": 53 - } - }, - { - "filename": "0008.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 7, - "y": 8, - "w": 55, - "h": 53 - }, - "frame": { - "x": 118, - "y": 0, - "w": 55, - "h": 53 - } - }, - { - "filename": "0011.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 7, - "y": 7, - "w": 55, - "h": 54 - }, - "frame": { - "x": 173, - "y": 0, - "w": 55, - "h": 54 - } - }, - { - "filename": "0012.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 7, - "y": 7, - "w": 55, - "h": 54 - }, - "frame": { - "x": 173, - "y": 0, - "w": 55, - "h": 54 - } - }, - { - "filename": "0005.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 53, - "h": 56 - }, - "frame": { - "x": 0, - "y": 49, - "w": 53, - "h": 56 - } - }, - { - "filename": "0006.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 53, - "h": 56 - }, - "frame": { - "x": 0, - "y": 49, - "w": 53, - "h": 56 - } - }, - { - "filename": "0025.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 0, - "y": 8, - "w": 62, - "h": 55 - }, - "frame": { - "x": 53, - "y": 51, - "w": 62, - "h": 55 - } - }, - { - "filename": "0026.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 0, - "y": 8, - "w": 62, - "h": 55 - }, - "frame": { - "x": 53, - "y": 51, - "w": 62, - "h": 55 - } - }, - { - "filename": "0013.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 53, - "h": 57 - }, - "frame": { - "x": 115, - "y": 53, - "w": 53, - "h": 57 - } - }, - { - "filename": "0014.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 53, - "h": 57 - }, - "frame": { - "x": 115, - "y": 53, - "w": 53, - "h": 57 - } - }, - { - "filename": "0029.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 0, - "y": 7, - "w": 62, - "h": 56 - }, - "frame": { - "x": 168, - "y": 54, - "w": 62, - "h": 56 - } - }, - { - "filename": "0030.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 0, - "y": 7, - "w": 62, - "h": 56 - }, - "frame": { - "x": 168, - "y": 54, - "w": 62, - "h": 56 - } - }, - { - "filename": "0023.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 61, - "h": 58 - }, - "frame": { - "x": 0, - "y": 106, - "w": 61, - "h": 58 - } - }, - { - "filename": "0024.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 0, - "y": 5, - "w": 61, - "h": 58 - }, - "frame": { - "x": 0, - "y": 106, - "w": 61, - "h": 58 - } - }, - { - "filename": "0003.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 6, - "y": 2, - "w": 54, - "h": 59 - }, - "frame": { - "x": 61, - "y": 106, - "w": 54, - "h": 59 - } - }, - { - "filename": "0004.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 6, - "y": 2, - "w": 54, - "h": 59 - }, - "frame": { - "x": 61, - "y": 106, - "w": 54, - "h": 59 - } - }, - { - "filename": "0001.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 2, - "y": 2, - "w": 57, - "h": 59 - }, - "frame": { - "x": 115, - "y": 110, - "w": 57, - "h": 59 - } - }, - { - "filename": "0002.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 2, - "y": 2, - "w": 57, - "h": 59 - }, - "frame": { - "x": 115, - "y": 110, - "w": 57, - "h": 59 - } - }, - { - "filename": "0019.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 2, - "y": 2, - "w": 57, - "h": 59 - }, - "frame": { - "x": 115, - "y": 110, - "w": 57, - "h": 59 - } - }, - { - "filename": "0020.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 2, - "y": 2, - "w": 57, - "h": 59 - }, - "frame": { - "x": 115, - "y": 110, - "w": 57, - "h": 59 - } - }, - { - "filename": "0015.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 6, - "y": 2, - "w": 54, - "h": 59 - }, - "frame": { - "x": 172, - "y": 110, - "w": 54, - "h": 59 - } - }, - { - "filename": "0016.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 6, - "y": 2, - "w": 54, - "h": 59 - }, - "frame": { - "x": 172, - "y": 110, - "w": 54, - "h": 59 - } - }, - { - "filename": "0031.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 0, - "y": 4, - "w": 61, - "h": 59 - }, - "frame": { - "x": 0, - "y": 164, - "w": 61, - "h": 59 - } - }, - { - "filename": "0032.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 0, - "y": 4, - "w": 61, - "h": 59 - }, - "frame": { - "x": 0, - "y": 164, - "w": 61, - "h": 59 - } - }, - { - "filename": "0017.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 2, - "y": 0, - "w": 57, - "h": 61 - }, - "frame": { - "x": 61, - "y": 169, - "w": 57, - "h": 61 - } - }, - { - "filename": "0018.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 2, - "y": 0, - "w": 57, - "h": 61 - }, - "frame": { - "x": 61, - "y": 169, - "w": 57, - "h": 61 - } - }, - { - "filename": "0035.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 2, - "y": 0, - "w": 57, - "h": 61 - }, - "frame": { - "x": 61, - "y": 169, - "w": 57, - "h": 61 - } - }, - { - "filename": "0036.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 2, - "y": 0, - "w": 57, - "h": 61 - }, - "frame": { - "x": 61, - "y": 169, - "w": 57, - "h": 61 - } - }, - { - "filename": "0021.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 0, - "y": 2, - "w": 60, - "h": 61 - }, - "frame": { - "x": 118, - "y": 169, - "w": 60, - "h": 61 - } - }, - { - "filename": "0022.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 0, - "y": 2, - "w": 60, - "h": 61 - }, - "frame": { - "x": 118, - "y": 169, - "w": 60, - "h": 61 - } - }, - { - "filename": "0033.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 0, - "y": 2, - "w": 60, - "h": 61 - }, - "frame": { - "x": 118, - "y": 169, - "w": 60, - "h": 61 - } - }, - { - "filename": "0034.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 62, - "h": 63 - }, - "spriteSourceSize": { - "x": 0, - "y": 2, - "w": 60, - "h": 61 - }, - "frame": { - "x": 118, - "y": 169, - "w": 60, - "h": 61 - } - } - ] - } - ], - "meta": { - "app": "https://www.codeandweb.com/texturepacker", - "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:38ba9918eb8f68ab2190b03c6512ef47:46578d6dd482a1b04fa7c2884107a0f5:fe45e2d628a6cef0908f7b82468c8798$" - } -} \ No newline at end of file +{ "frames": [ + { + "filename": "0001.png", + "frame": { "x": 0, "y": 58, "w": 55, "h": 57 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 5, "w": 55, "h": 57 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0002.png", + "frame": { "x": 0, "y": 58, "w": 55, "h": 57 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 5, "w": 55, "h": 57 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0003.png", + "frame": { "x": 166, "y": 114, "w": 52, "h": 56 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 5, "w": 52, "h": 56 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0004.png", + "frame": { "x": 166, "y": 114, "w": 52, "h": 56 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 5, "w": 52, "h": 56 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0005.png", + "frame": { "x": 0, "y": 169, "w": 51, "h": 54 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 7, "w": 51, "h": 54 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0006.png", + "frame": { "x": 0, "y": 169, "w": 51, "h": 54 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 7, "w": 51, "h": 54 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0007.png", + "frame": { "x": 104, "y": 166, "w": 53, "h": 52 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 9, "w": 53, "h": 52 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0008.png", + "frame": { "x": 104, "y": 166, "w": 53, "h": 52 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 9, "w": 53, "h": 52 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0009.png", + "frame": { "x": 157, "y": 170, "w": 55, "h": 49 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 12, "w": 55, "h": 49 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0010.png", + "frame": { "x": 157, "y": 170, "w": 55, "h": 49 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 12, "w": 55, "h": 49 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0011.png", + "frame": { "x": 0, "y": 115, "w": 53, "h": 54 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 8, "w": 53, "h": 54 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0012.png", + "frame": { "x": 0, "y": 115, "w": 53, "h": 54 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 8, "w": 53, "h": 54 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0013.png", + "frame": { "x": 53, "y": 116, "w": 51, "h": 56 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 6, "w": 51, "h": 56 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0014.png", + "frame": { "x": 53, "y": 116, "w": 51, "h": 56 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 6, "w": 51, "h": 56 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0015.png", + "frame": { "x": 114, "y": 109, "w": 52, "h": 57 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 5, "w": 52, "h": 57 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0016.png", + "frame": { "x": 114, "y": 109, "w": 52, "h": 57 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 5, "w": 52, "h": 57 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0017.png", + "frame": { "x": 59, "y": 57, "w": 55, "h": 59 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 3, "w": 55, "h": 59 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0018.png", + "frame": { "x": 59, "y": 57, "w": 55, "h": 59 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 3, "w": 55, "h": 59 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0019.png", + "frame": { "x": 0, "y": 58, "w": 55, "h": 57 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 5, "w": 55, "h": 57 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0020.png", + "frame": { "x": 0, "y": 58, "w": 55, "h": 57 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 5, "w": 55, "h": 57 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0021.png", + "frame": { "x": 178, "y": 56, "w": 57, "h": 58 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 5, "w": 57, "h": 58 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0022.png", + "frame": { "x": 178, "y": 56, "w": 57, "h": 58 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 5, "w": 57, "h": 58 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0023.png", + "frame": { "x": 119, "y": 0, "w": 59, "h": 57 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 7, "w": 59, "h": 57 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0024.png", + "frame": { "x": 119, "y": 0, "w": 59, "h": 57 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 7, "w": 59, "h": 57 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0025.png", + "frame": { "x": 178, "y": 0, "w": 60, "h": 56 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 9, "w": 60, "h": 56 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0026.png", + "frame": { "x": 178, "y": 0, "w": 60, "h": 56 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 9, "w": 60, "h": 56 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0027.png", + "frame": { "x": 114, "y": 57, "w": 62, "h": 52 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 12, "w": 62, "h": 52 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0028.png", + "frame": { "x": 114, "y": 57, "w": 62, "h": 52 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 12, "w": 62, "h": 52 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0029.png", + "frame": { "x": 59, "y": 0, "w": 60, "h": 57 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 8, "w": 60, "h": 57 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0030.png", + "frame": { "x": 59, "y": 0, "w": 60, "h": 57 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 8, "w": 60, "h": 57 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0031.png", + "frame": { "x": 0, "y": 0, "w": 59, "h": 58 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 6, "w": 59, "h": 58 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0032.png", + "frame": { "x": 0, "y": 0, "w": 59, "h": 58 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 6, "w": 59, "h": 58 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0033.png", + "frame": { "x": 178, "y": 56, "w": 57, "h": 58 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 5, "w": 57, "h": 58 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0034.png", + "frame": { "x": 178, "y": 56, "w": 57, "h": 58 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 5, "w": 57, "h": 58 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0035.png", + "frame": { "x": 59, "y": 57, "w": 55, "h": 59 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 3, "w": 55, "h": 59 }, + "sourceSize": { "w": 65, "h": 65 } + }, + { + "filename": "0036.png", + "frame": { "x": 59, "y": 57, "w": 55, "h": 59 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 3, "w": 55, "h": 59 }, + "sourceSize": { "w": 65, "h": 65 } + } + ], + "meta": { + "app": "https://www.aseprite.org/", + "version": "1.3.8.1-x64", + "image": "47.png", + "format": "I8", + "size": { "w": 238, "h": 223 }, + "scale": "1" + } +} diff --git a/public/images/pokemon/shiny/47.png b/public/images/pokemon/shiny/47.png index ba5f60d1b8f8fe6db2f4b88d41a316158ebcbb87..b1b0bb9a12a086a2577506195d61695ce11fda84 100644 GIT binary patch literal 5333 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 literal 5058 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 From 9bc046fd6418eb31548f430a5c16388ee7d3e36b Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Fri, 29 Nov 2024 13:29:54 -0800 Subject: [PATCH 010/119] [Bug] Honey Gather and Pickup will only activate if the battle was won (#4903) * Honey Gather and Pickup will only activate if the battle was won * Add tests for Honey Gather * Moves `highestEndlessWave` and `battles` stats outside of victory condition --- src/data/ability.ts | 20 +++-- src/data/move.ts | 2 +- .../utils/encounter-phase-utils.ts | 2 +- src/phases/attempt-run-phase.ts | 2 +- src/phases/battle-end-phase.ts | 13 ++-- src/phases/victory-phase.ts | 2 +- src/test/abilities/honey_gather.test.ts | 74 +++++++++++++++++++ 7 files changed, 97 insertions(+), 18 deletions(-) create mode 100644 src/test/abilities/honey_gather.test.ts diff --git a/src/data/ability.ts b/src/data/ability.ts index 39a9adde366..8ff4cfea59b 100644 --- a/src/data/ability.ts +++ b/src/data/ability.ts @@ -4112,9 +4112,13 @@ export class PostBattleAbAttr extends AbAttr { } export class PostBattleLootAbAttr extends PostBattleAbAttr { + /** + * @param args - `[0]`: boolean for if the battle ended in a victory + * @returns `true` if successful + */ applyPostBattle(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { const postBattleLoot = pokemon.scene.currentBattle.postBattleLoot; - if (!simulated && postBattleLoot.length) { + if (!simulated && postBattleLoot.length && args[0]) { const randItem = Utils.randSeedItem(postBattleLoot); //@ts-ignore - TODO see below if (pokemon.scene.tryTransferHeldItemModifier(randItem, pokemon, true, 1, true, undefined, false)) { // TODO: fix. This is a promise!? @@ -4575,14 +4579,15 @@ export class MoneyAbAttr extends PostBattleAbAttr { /** * @param pokemon {@linkcode Pokemon} that is the user of this ability. * @param passive N/A - * @param args N/A - * @returns true + * @param args - `[0]`: boolean for if the battle ended in a victory + * @returns `true` if successful */ applyPostBattle(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { - if (!simulated) { + if (!simulated && args[0]) { pokemon.scene.currentBattle.moneyScattered += pokemon.scene.getWaveMoneyAmount(0.2); + return true; } - return true; + return false; } } @@ -4590,13 +4595,12 @@ export class MoneyAbAttr extends PostBattleAbAttr { * Applies a stat change after a Pokémon is summoned, * conditioned on the presence of a specific arena tag. * - * @extends {PostSummonStatStageChangeAbAttr} + * @extends PostSummonStatStageChangeAbAttr */ export class PostSummonStatStageChangeOnArenaAbAttr extends PostSummonStatStageChangeAbAttr { /** * The type of arena tag that conditions the stat change. * @private - * @type {ArenaTagType} */ private tagType: ArenaTagType; @@ -4972,7 +4976,7 @@ class ForceSwitchOutHelper { pokemon.scene.clearEnemyHeldItemModifiers(); if (switchOutTarget.hp) { - pokemon.scene.pushPhase(new BattleEndPhase(pokemon.scene)); + pokemon.scene.pushPhase(new BattleEndPhase(pokemon.scene, false)); pokemon.scene.pushPhase(new NewBattlePhase(pokemon.scene)); } } diff --git a/src/data/move.ts b/src/data/move.ts index 76e4675d753..9696e2e4d53 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -6082,7 +6082,7 @@ export class ForceSwitchOutAttr extends MoveEffectAttr { user.scene.clearEnemyHeldItemModifiers(); if (switchOutTarget.hp) { - user.scene.pushPhase(new BattleEndPhase(user.scene)); + user.scene.pushPhase(new BattleEndPhase(user.scene, false)); user.scene.pushPhase(new NewBattlePhase(user.scene)); } } diff --git a/src/data/mystery-encounters/utils/encounter-phase-utils.ts b/src/data/mystery-encounters/utils/encounter-phase-utils.ts index c6dda134346..b5dd43a9221 100644 --- a/src/data/mystery-encounters/utils/encounter-phase-utils.ts +++ b/src/data/mystery-encounters/utils/encounter-phase-utils.ts @@ -731,7 +731,7 @@ export function handleMysteryEncounterVictory(scene: BattleScene, addHealPhase: scene.pushPhase(new MysteryEncounterRewardsPhase(scene, addHealPhase)); scene.pushPhase(new EggLapsePhase(scene)); } else if (!scene.getEnemyParty().find(p => encounter.encounterMode !== MysteryEncounterMode.TRAINER_BATTLE ? p.isOnField() : !p?.isFainted(true))) { - scene.pushPhase(new BattleEndPhase(scene)); + scene.pushPhase(new BattleEndPhase(scene, true)); if (encounter.encounterMode === MysteryEncounterMode.TRAINER_BATTLE) { scene.pushPhase(new TrainerVictoryPhase(scene)); } diff --git a/src/phases/attempt-run-phase.ts b/src/phases/attempt-run-phase.ts index b4768dc9a26..109fc5b582d 100644 --- a/src/phases/attempt-run-phase.ts +++ b/src/phases/attempt-run-phase.ts @@ -52,7 +52,7 @@ export class AttemptRunPhase extends PokemonPhase { enemyPokemon.trySetStatus(StatusEffect.FAINT); }); - this.scene.pushPhase(new BattleEndPhase(this.scene)); + this.scene.pushPhase(new BattleEndPhase(this.scene, false)); this.scene.pushPhase(new NewBattlePhase(this.scene)); } else { playerPokemon.turnData.failedRunAway = true; diff --git a/src/phases/battle-end-phase.ts b/src/phases/battle-end-phase.ts index 3b9ca012ef7..8926a2211e0 100644 --- a/src/phases/battle-end-phase.ts +++ b/src/phases/battle-end-phase.ts @@ -8,7 +8,7 @@ export class BattleEndPhase extends BattlePhase { /** If true, will increment battles won */ isVictory: boolean; - constructor(scene: BattleScene, isVictory: boolean = true) { + constructor(scene: BattleScene, isVictory: boolean) { super(scene); this.isVictory = isVictory; @@ -17,16 +17,17 @@ export class BattleEndPhase extends BattlePhase { start() { super.start(); + this.scene.gameData.gameStats.battles++; + if (this.scene.gameMode.isEndless && this.scene.currentBattle.waveIndex + 1 > this.scene.gameData.gameStats.highestEndlessWave) { + this.scene.gameData.gameStats.highestEndlessWave = this.scene.currentBattle.waveIndex + 1; + } + if (this.isVictory) { this.scene.currentBattle.addBattleScore(this.scene); - this.scene.gameData.gameStats.battles++; if (this.scene.currentBattle.trainer) { this.scene.gameData.gameStats.trainersDefeated++; } - if (this.scene.gameMode.isEndless && this.scene.currentBattle.waveIndex + 1 > this.scene.gameData.gameStats.highestEndlessWave) { - this.scene.gameData.gameStats.highestEndlessWave = this.scene.currentBattle.waveIndex + 1; - } } // Endless graceful end @@ -42,7 +43,7 @@ export class BattleEndPhase extends BattlePhase { } for (const pokemon of this.scene.getPokemonAllowedInBattle()) { - applyPostBattleAbAttrs(PostBattleAbAttr, pokemon); + applyPostBattleAbAttrs(PostBattleAbAttr, pokemon, false, this.isVictory); } if (this.scene.currentBattle.moneyScattered) { diff --git a/src/phases/victory-phase.ts b/src/phases/victory-phase.ts index 1faa31655df..62479241a6c 100644 --- a/src/phases/victory-phase.ts +++ b/src/phases/victory-phase.ts @@ -41,7 +41,7 @@ export class VictoryPhase extends PokemonPhase { } if (!this.scene.getEnemyParty().find(p => this.scene.currentBattle.battleType === BattleType.WILD ? p.isOnField() : !p?.isFainted(true))) { - this.scene.pushPhase(new BattleEndPhase(this.scene)); + this.scene.pushPhase(new BattleEndPhase(this.scene, true)); if (this.scene.currentBattle.battleType === BattleType.TRAINER) { this.scene.pushPhase(new TrainerVictoryPhase(this.scene)); } diff --git a/src/test/abilities/honey_gather.test.ts b/src/test/abilities/honey_gather.test.ts new file mode 100644 index 00000000000..fc9d6cdd150 --- /dev/null +++ b/src/test/abilities/honey_gather.test.ts @@ -0,0 +1,74 @@ +import type { CommandPhase } from "#app/phases/command-phase"; +import { Command } from "#app/ui/command-ui-handler"; +import { Abilities } from "#enums/abilities"; +import { Moves } from "#enums/moves"; +import { Species } from "#enums/species"; +import GameManager from "#test/utils/gameManager"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; + +describe("Abilities - Honey Gather", () => { + let phaserGame: Phaser.Game; + let game: GameManager; + + beforeAll(() => { + phaserGame = new Phaser.Game({ + type: Phaser.HEADLESS, + }); + }); + + afterEach(() => { + game.phaseInterceptor.restoreOg(); + }); + + beforeEach(() => { + game = new GameManager(phaserGame); + game.override + .moveset([ Moves.SPLASH, Moves.ROAR, Moves.THUNDERBOLT ]) + .startingLevel(100) + .ability(Abilities.HONEY_GATHER) + .passiveAbility(Abilities.RUN_AWAY) + .battleType("single") + .disableCrits() + .enemySpecies(Species.MAGIKARP) + .enemyAbility(Abilities.BALL_FETCH) + .enemyMoveset(Moves.SPLASH); + }); + + it("should give money when winning a battle", async () => { + await game.classicMode.startBattle([ Species.MILOTIC ]); + game.scene.money = 1000; + + game.move.select(Moves.THUNDERBOLT); + await game.toNextWave(); + + expect(game.scene.money).toBeGreaterThan(1000); + }); + + it("should not give money when the enemy pokemon flees", async () => { + await game.classicMode.startBattle([ Species.MILOTIC ]); + game.scene.money = 1000; + + game.move.select(Moves.ROAR); + await game.toNextTurn(); + + expect(game.scene.money).toBe(1000); + expect(game.scene.currentBattle.waveIndex).toBe(2); + }); + + it("should not give money when the player flees", async () => { + await game.classicMode.startBattle([ Species.MILOTIC ]); + game.scene.money = 1000; + + // something weird is going on with the test framework, so this is required to prevent a crash + const enemy = game.scene.getEnemyPokemon()!; + vi.spyOn(enemy, "scene", "get").mockReturnValue(game.scene); + + const commandPhase = game.scene.getCurrentPhase() as CommandPhase; + commandPhase.handleCommand(Command.RUN, 0); + await game.toNextTurn(); + + expect(game.scene.money).toBe(1000); + expect(game.scene.currentBattle.waveIndex).toBe(2); + }); +}); From a91d420eb406bbb77117aa8da37f560a1d68d26f Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Fri, 29 Nov 2024 17:31:06 -0800 Subject: [PATCH 011/119] [Test] Fix flaky Shell Side Arm test (#4952) --- src/test/moves/shell_side_arm.test.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/test/moves/shell_side_arm.test.ts b/src/test/moves/shell_side_arm.test.ts index 9646d27f17e..41cbefb186b 100644 --- a/src/test/moves/shell_side_arm.test.ts +++ b/src/test/moves/shell_side_arm.test.ts @@ -26,7 +26,7 @@ describe("Moves - Shell Side Arm", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([ Moves.SHELL_SIDE_ARM ]) + .moveset([ Moves.SHELL_SIDE_ARM, Moves.SPLASH ]) .battleType("single") .startingLevel(100) .enemyLevel(100) @@ -69,6 +69,9 @@ describe("Moves - Shell Side Arm", () => { vi.spyOn(shellSideArmAttr, "apply"); + game.move.select(Moves.SPLASH); + await game.toNextTurn(); + game.move.select(Moves.SHELL_SIDE_ARM); await game.setTurnOrder([ BattlerIndex.ENEMY, BattlerIndex.PLAYER ]); await game.phaseInterceptor.to("BerryPhase", false); From 34cb234159e398d9366db380b794db15de8f1baf Mon Sep 17 00:00:00 2001 From: Madmadness65 <59298170+Madmadness65@users.noreply.github.com> Date: Fri, 29 Nov 2024 19:57:12 -0600 Subject: [PATCH 012/119] [Audio] Replace Forest track with custom BGM by Andr06 (#4924) --- public/audio/bgm/forest.mp3 | Bin 1562588 -> 3119842 bytes src/field/arena.ts | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/public/audio/bgm/forest.mp3 b/public/audio/bgm/forest.mp3 index a1d9ecb4b2849ea08fa295162e9ed7fc9d12a4b8..6382d3fc0b286a514a8c11bd9bd1928da45941ac 100644 GIT binary patch literal 3119842 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\C;4{0mAAR0zt= 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

^pZ>Xmy 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 z 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

    LgGQk$QbNGbS%}NU#~ujVxShCDBT;4CA5EpY zR5Nb!oiGd~Ox;J_X>PAuV6^s&tAF#@%#h&jenG2A6s!i%fG3ihUtcs(CO z0*OF#zTukXJM2d+!c-PP1H=vUh3g59_N7q9>aeKA+I(vc9lt}1a!q$a!g@p*Hi^b^ zoR52DjbCOA*m?o-ZC~+AsH7S|$z}YZNGB3=Mqt{I@4>y4!1yun@X)id6M6{jE+5Ps zk6)E1uly`CIf`JbPkiI~e@Hk00tICj&sik|TqC_Q&G#c!W|h=0*>Ur?X)3u>aj8%K zUSY+`$H@MQnx`>tb6~d*%MI%B;Xp7coEQ{-cI3a+c1Z~xA{J?-+8(T9Y{9R0* zrZ1Au4Y5(8TLZ!v<^b|GQ5If;A8~=I`P{m*PY$;AuNFtxsKZmH4XxXB`ttT@%X%qC zHB}o=-FI@vh&E=Vgek15T&G{7D^ve~??_qJIRrD+spl*>&5zWY$MH6QH~%)-k54g~ z#V9O-7lUp)IM#<{Egr@dTwzgEi=7qcOmO;B707V}G`R>N#5giGWtf9US%9!vX7(N( zUGT`RnwdA;-|o~FlZHj!S~jL?H>yh84EbvI@9ixX3@+r7^QrIjK!^NL1Av z07!DXt4>d`Se2)*{wXvT5xoT?pY?QvdNrMrJj1-Y4x)h$o91Mnad)jdCAE~#Y;c~ z78+f!>|ach#i*8Mkpg=yh@HZaAe13yG_EiNnDl~p;2wFW1|y~iQ$%F#sTe$LY0b*m zBM&634`wIybG2V>=tl9Xmh^?RbscG4xO=oLry`a=>g!WK{i6u_k@wf)r(#~_X*?dx zZp;;xpH%eOA!X{M2v?yY{ zMr$Jo#2g+0K&AVntk*A23y%-4?PiK3!Y^8aQ5{m2Z!xh#VYH?@LO_#%Fb{aeboi zz&IZ-&h`@fwCue6mgjikLoubYrk@hGaXkI;_ONgdBlp*1(63>0+OHxwNzo#n>-}Eu z6hBkU008z-puBY*~OE1ZVJVQvQki&RWpGSs{)BPNuhqLDtZ)?}St zr^jI!W_mVeBoQ9|$;I?9$A7WsHblG@dV!$CUEwBsR$)xpqK0Uodnn5I9Q6Nd+I7gBeYcFmdHB7UD(n>4Rbk}qFuioFUd{-XD)LhDEv*U&t#5T+5 zk5uuM>nK?D=YvF4Apls_oYmhDfntQ%OgLhEOm^fzYWSq8z20GWv|A(=KHnZ<{2z9+ zWSb1$cT_e;Mhu?l{1A2Um0k>?;X;XovKoe2Iiu)7yHuL{9h|4NC-%%lV`U|n*X6JG zhC{AimG3!T?Oz>>f%lEj>9Osg9Q}2OkA&vtb8rD~XVbZhsc9`w?wtCjFVSq=iI#ZF zN=fh=967!?8&r@4wuJwcZo%y zL<;AEl}f?J*7uO{FZ-z2wrGBjuvY0jTPkM=?I~p}F1&Z)-j76KmX~7b=lh8J8ackE zrUpaIkZ6ALUW6KrE4EGXDvlwfW31Tiec1{D86W5Y;7WY+#zdjvG?B086bHhBJ)LDz zQqbsyEtSc+t%(e25t1$SR}jR?jArg#9iBX!_eXm7iH&&q-{Z{h?YXBydU)Yv4l25KOSCfb>~M%D?Ng{_~= zi{o@z-#BHH&m#RgpRh=L|BF3yD8O#b`7CJc@jE-KFhBHH(=b(pUIy$glQKeYQU1N7 zG_nbJSyRHOt>nKPtIGlabS>)_DZm!Og!IuPJeNdmQ+qTHU7kJBrp>z8E7XmXh2FhO zej<<9jw51Z`;4m9Zn|dn`yL`rpD#JbTCa6BHcI$Zzwo$wl%$@~^|TOp&TQ%EXL3%K zb1tHV3>tM}&~ZAI36;5Eso+DxiW40ktpNB*IqIHk@!9MYas0yLdlG@NAr{i1u+gD? z=rAZb#!y4Zn9z{n!Vs!$Rf`K565U;P>V2ywaY|POZ93!|lE9LF(jZN7<}oCxuz8;^ zw8O6M_%~k9Gj}@i!4ZWc_L>n?O5NiR(4VV*M2_M_pT>;;TzX#2qq5WPr+D|R>Tkhk$he^D z6b=m00>$@uYoX1sSf_^Z?)iuJX<KYoV2-3-^&YMf>xJJ*KZLO*}C@y6vadPd{@I zazsj%0o0qfNnIf2bk{;IE<#K4))|w2_g1cW76l~v9qt2N8SIJBYe=)$KnRC3Z0(N7 zAbd%9IFh)&!|Ips(SHcUf))J8Ixw~i(vurdD$m@*i2FMs%L`ikZ-ooVPc0HAjhooD zUTNxQ-c^$%;NKa)Wyrq}#Pu5%=s>o7pDrek7yVz&76cs{I;wtoRa2g>8$UZ{t+?AL zEKdPDBgg?}jlKmq$XFPB{~_)$2KY-$4Qf3n8z~2IF^75;XBa>yf77S?v=!N5xWzv! zYzr9tR0~!=I)-kq%G1;tJ@80%=fK%=laze-@`hP{`x5jD=S02Yd;W4YoN%UxN9I!Z z?KG_~?4$Z8hP)!tPaU;;Fh{EU3R-65>C!IgU1jtv>f-IXjVc{WM~#8aPq^3^zH0lbnIl|X4ezZW@SG46)2A1? z56(L)#8zCcmC?n$eP`sM_9N>9pFRnQn=~U%G;4R&eCxf@!s6SF?yLC(ber0FeW-f4$btwZ zW$#MN?dIzUR-I>QQ@&&mJf=diRrqNBeax)Ptd=a?4}%`Zr~P_z6^}8djflL~dj2)T zioc^9NkFIJaxSCO$KT(Vw*7zh#9!8t0|=o&Zdfn=;{0;|ZJH%YJU67^>UUZ=B)3bd-~FL36kGU$lU1}|MR_kqf7GYNH@cJ2{zWU z6x#2xyP8Wruzwu6(6(v|!F@;2fFAcz2-k8HYx7vQW@VP&%5OOc zAkN)P8RF;}@n&>JZuW!}Yy6k(u7M%fTJu@jVqV|EquPy+{8dvl)Z{zot>GB0QPWah z$>w~{xI2ESDy+63X=XeWyc4}7$vEuVcnvDSwu$1$%2jNrkbo?RqdE5Aw<^AJ|72Vn zQddhL&~v4j?bB4L@WugET8`jyX?L*zVAuUDSLTKDob%0&To3v;X$%W&j-WT5!YTb?PPtOoTTu23fLoSOZ%y?)c*B^%j<}K7a_`pz3t-VKN#ey*TKoBkm zNE-KsDCy+Ye@~0eu+TC+Yfw(wF z7Srn1WRn-?w%>rk{+Hvq-*5lLp2?8GV2K4HXtoQgfRsX!pr)dycqzEZa9s&O4MXF; z{BFG(!?5tv-1JQT;^K9QkBl6^-u8&Vi6j;gDs6;{tb+4nfJ44Y^K6urI|5Td<&Qpk z-K5w)MO1PS=0`SKlCFQT{4K1-v`anQ4PqDghu7G(QwR<&NqqC`Nf)gX*pTpsR(u+I zjWXrkP;faZ&f=--za-wmd_+tOn~W7jJ4s;!!HS9%DZ?)+0ly8PY#jiVqDMm7o;o#H zI|83TBnE5|gcPEgTup)2E-!jp0PLg1=9`Jg%EJLo!Ge20qq~t(HYlkY@Ypn#Zd)n; z3g^mwd?LKr1Bw_E9|WyGsbYk!8I+mC5tUCKRK31`Pm2Vh!E>nVH!mhdOP@CJMtozp z^ti|qS3?QdE6hM9bkI_kE#yDd;IIU4BpN)Tw60X zu+q*_Wq z8p3`oYjjKWi8e~7XKS_u?8JW%g+My$>gfs zZqxXrrM~LQD+Yo?bte1nqbeHtRkOe%5xve8)W&GiCiaDG^8q;~sKkTfO_&K^C!LEH zNq3g(6b%9+^c{PR6@c6#^8X=jI}~`OGCwcFN*FAA=4HI^uNG;bs6g#wwUTes9ESEu zR2W3p_0OBu773Cq7GhLZ*RRKxZW!~C#R65-aD%|d;jk4w>En3-v*oJ%`B%R$x#>i2 z>3;kl&o7@#NWU5@OMZFMyrg0!o#RaxT}owps~y(Sd-Xd~4W|h$@Fv5bsf4rsVvp^m zem>bO^$WvkQHFOJFA4xm%n9h1gP@u92g<)hBGR!doL4Em=^d|_V*eM%M*;Jf2y?bHT5pg3r5^+Bsi3Jwg_N>HSlq$JN6$&TR zR_WEY={#$XA8L*btq&}vB}1iE@xBk#QiLfTT=+*BzK64QBcZ`F5XDD-|8J3jZ2u=u zo(UpNH$Fu+T!9SJ8w72EnsKc5wi9$kZ(! zWu6B6;^w*g^$<<@z*~}fqFQcRyxr!2-Te{gGX+D%_t&_L@Sm!=58BSq4UntzIWoNkKK>3nouIJl zd^)F$3Xgg&Dn&~zQz+AkIuQeyhv5cI?GBajw{QPBEm)DAZAzhcL>WJxIpCX8GaEhxpOjwI6UF9*!zv_*Qr&EViW=mmh zlMs6ghWwGzGcQUa%kRExY7oIw z5i%8A)aaUqH-$|qW(DkA*+CH}ei0(hr?@~QPcj-~H6CRZJfb3_r+QK6ac0AKdRjt+ z&4j~5f^as+OReLp-9q+=2PaN>SlkFnrz9oGKvj8?VOqE>Mb}it!r^l~7Yewu*Rj>h z?v`ijfW@taRjtO7A3ORuApW_p=lEu?%f6etKTB=Xs#WUpg};aO>33$Ln=tgKGO158 zDFY-1WEOxel~3F?LlTcr-hF^!)-?u&X2^^8mLVp;Ro0CJmsLP2vipoV@h%^50PQ7w z*YsF@nqqD*)>_U@vIfrxY+*Le`6+4qmkNs`|GXgd=@7G9 z_Q#h<(&-zj07b=-0AVpa-DyRagvAz%1}+K?y!liqPId|!wpX(CXy>}$n$%u=1*8&7 zgWHQSymvuqHG3*-0#w5bS3?@=u_T(6uag*bI+BfRGb;?`9#?NA`Iy`;WsvS!(XflhkTq>AB456k`O2Ru=dZWxkI|kl~GE*Ot zm@a(=QRu#E9R7nUIpCrU$;QC)-EXH)NGEZ*x#|WCTlSS?-ZK3*cqs7bIsd~Tbd_hN z@!4HZZ&mPL`ff5adiie6AN2z}0gcA+tGMAp{Qgpm7?yaW$e(3^0IAfQeXYbQ)8UHU zAj+V88tG^@<+|{8A`dJ-DY9ry)i9QI*4D*qV+`cEDD#07>#3zxu1NEBbBZ3XMuP6T zWoAy%ckgXE)5k^Ht7(!@8mMMVp4k&n{8)3o1G>w1iO9S(kNBp-{!y!{8V^ERYTcZc zS=<^o`L!b5)n+8^^?h(wMm(IAZ4mX_h&8vvjIF~P_vQvxM(mBJ?_rYYP#f^7qp+YW2=hJ?8QdRCLZa&&z;oK$MChoWrB?e=u$0$K`mRn zEfaNzC-)a4ME1kHM@LzFT@%Tia3U;hhp=0@cZ7?OfE)n-yyYpOW18uVQx{+fOb)$M zvj6mjM^fABj*bHZL!X0zB0)LvdEVV$?`WX>CmvZF z+fuC-*`Ko6g8%?!Zenik#J}-WGue$O~YgP1N>)>n>f?YCygsY9o~z;uC&D| zRQB&H!QAK+o&&S@?#fDB`TUpDf~c4&7oIp=4IwN)T|5*z)>LVZC@c+wRZz1jc-xQv zn#=v3Qu>NX1csRIst8)808|bC%XX_kV4=1;kvu7%J49g9I3iq~!9ezs&Buhe!rCe& zv-qC)qomVB;G{A#`LwhRp-wXi;)G`SqzGXWk&C*)rYc6N$MIAZB&)Ly)dZ#kNm_N; z(PJ`tJ^Uv+NAo4R#Lxcr8NC(!yy1DpDi=G}tj;h~Ip?_1!-8SZr^2R9`=(|ssu(PE zJHz+ixbItrTh5~dX7nwam4k7?63qlMt4X5(ShXBJ-?||bJx+k~N;8m$`B@uCY@W_` z9Y|XylOzN{69<(Ax^>v4L!@;++LozTy9+uKr1F@ID=t?Va=ePf3TtMRR5W*OAlPM- zoEjU9;6mri8E@+Ht3$h-HuCGgmkt&TtA0mVjAl464EgdS_v;R(+~42SHk$tno7M># zpSP-dE8K;njACR?=*ZqWB%`^SBvHsbE)Zd36K16O3&Mzj!0e?O@rCpt%i&vIoO-eG zSg^sDIvpA_jY<=k3fVVJYIH2;h2>dQ*zqD$%g`GoZxr6QNYGPuCw2Rq>S))2GAmdm z2-mB~A?dR%UrH*v``|S4BEBR)^fdjw^fJ6IJ4tEWhokmqu`|G`L7s!f7Pb)vgK%1W zUD|gGLGt)m)Irin$Vk}q8AoRAt6H#ZCD;N|-(e}R#SI$f%D{KrL|^dJa3&gwyhfs$ z$57{BZlt1Io)xBDFUs*|(n&ezXwtYUGvgQDsYz+;N(m$)$ArRuxH3q($+K}Z#O3M)2Txxx z{{8*axsn{~Z87#=(>ALyz0GacBS>4q-SIax7_q8+CqiZ7;D z9}2~eGn9_qC&N9}{I_+^Y2TMxR(vz=GOl-Lexv8C98?}r+RszHBE|qQ)$B&-5QB8Z z##WNCxYY`NYX&u#0Iey8Es^6tN|Szo8(mnU{N_YMQ>ZP2xrVKg^Y9 z1Y<#{XiPpuZZOD}H`I@33k!q6rqWxle4P=EnFOj&O%{L+kUXin0H6f4t}t;4AUrjt z!=3`1quA4C;qfPIlTsfK2fRgue+94Xwl)YSAe+oF0qIwMc^cbT`}`u*x?(MCvFZ(7 z<@ypMy`ktbkV!c&y4q`L`ctUk<6b*|c}IuPx3F~|tM`4AZ|9GL_Y)0Jy<*%|2?9F! zx}H*DbEt53!_6SGM+yjrf{7e$-i8wFP58koBoq|!ZI-;2fr=KH7Pz{ymt`$?m0kCM zVQF~+|LOKgP>Hf-&gcDBqZIgGwz~rW1JyOul(^Qu(jmQkGWFFkHQ<`TOkTK{8Tc<41%#n!hM0l)^74qy{WMoYezs#fgOhOgw_Gy$mxLEWajT z)WIHWoHL2fr7@P~@%0x8TS#|IVi}BW=RsAON<7m`OFtg;Uh9Om*nS;o+!{&yd9v++ zP+-%;WEHy#*v?Ma*n{IdTdxM5KC_C+D_ih{kfz-;KQL#A$3WdIFtaZ3B`?sdeo#^s z>z3DASZCYz)35(@mMKEkx8yhx5o3~~R&e9YVc?|qihXUob)4~x6PLpy!e5rbG#<%r zpp#0lGuB!+;P|5dNGIMj-(UKM9V2Nkk%l%i^t6_AAbP2ejuSU2A(S=j=w^XbL1)I}TSaATr(qY$6W0FQINe;lOe*Q`awrOeD^<=uEHzI?&}UPz|cdt zGITdcNe&Idz|bLG($a`@cQ?`v(y4TZbayvO3#fea{?_*&+_j$joU`vf`|J(5vY9CS zaD%pT_p11wvxT7392Gc6627J9ZX1T+5gmGt3dfo(n0&}wYbC9I&lv) zxz=a$VjJv^4MpsS{V{8~3onLM1O+RdqE+C-n31wRvzp77r}J8OX^|^gI+k2`32tL9 zQPIR%eOkW}0I_qlEn<`&O;I(|9!jk({v?${-;d8#ertEP4AYTW|T0^F3K#IsMxS=x_lK!FPj_qV4BrdSYWZbu$Z`ZW7E=Z z`J;UKvnEaJ-**iYhMOG59)n~jmX|qURQLsm+5^1>5uT_oP_l4TMqsSgSTZ)M)#GWO zf5)@KsI)ss!=r8lI+e6|Ig>v&)W!|+_&=t-!--er9SzW)zbhg|VAs8GX1?GCywu+O zOhrs~Z6xGah05D^&J7GO6#w)lGe42HCa2oDDt(`R*o}2Ms1AntG_c>3R$DLNMYwRW z$luh=(^K(t@%GNCv}xu0C0v?3!AeQBnIOxb)wBLt8DnQELg&tPeuq;yxfZX%$Bc7d zuH3W4Sb~M^MqYYZ!AeK~d8cQ|@?Sj@@|cl}GIG$PWR^V}u063NvzE&ZYWk!ojT#3i zGY7N2B*w@^U5M|WkN|V^$yUbXL!;vdn$~wJ6UdK^SMT5EG@&cXB^iBsAoa9Ld&u%a1D1}F07n?X#7 zsx5!vAZ!!+NM4uCXi{-a^#X0Jq$e#avIb^!aLRq~G9Ge`@2nMkAM0VG-LJiv)HFpJ zj1N5JH0unW+YZ;N5kWabkx_|lop3GY`cIt@Xi{i%p#nB%Ro5Q=t zw=&;EL?vkeG-(@q3a59tWUYhHH^5`ZL1g7rQg4S=7SD;zx`yn@uE>s4q+OFS8eL`z zCrKd|VE+;~?wx6|gFHVz?sosXjNBJNnL|d#0S}1a`N&6M(q#W?21|*^z0*sWtrmHKgMDS~BmtRx=$Y|Y zzH%9f{g$~w1eK@uCwqeffS09&>teS4;^du{Ej^+(KYXeHA|lcygG~Ie+Xa+(P6|Z2f6YNdWTtH#29@I+7_3wqiXvg0mwsjVHh@ zH%&ibFGP+ZiClHjIGW(@x@$<%qx9D)-p+@eW>Hc~Odt>vQBd{#d38C9Sgu)XT<%}AY7KOwB49QMOs|we1~?{qhkc35 z@_^#jZLEk>hpMEBN`6nj@dJ&qK+@gl%Hm@{4<{M`fL5Gi;cqbSs^^0=i6;4JTRlZV z&sl~+YaBU3X$C9&wVcTsU*`O6sQ@l=QAS!|>HU8-VIv0RuaXue7qv*RQdWm0T`O1> z4{l$leR7z6dKZ$F63`fg4Px^l0bkgB{YCCfe+Z> zbt52#nw|;Z%PY(hSg^ktzYcPd z6hK4+Kzertzt0aqNgdDuilp^PrRP=z6?m>MNQcvIB=Tw_*L}wji`X9*QaNb@;t+f~ z%7GN=r*<4X>#{6qMSkluJ@@q4r8_;9{;iF>pG zGa3?S7+UpAXV``T)V;Z5N2q5%B~kN`KShnhgKgO(Tc9AZo7+>(S7I7cZ)1t#szq9Q zN*J0yN!4597Q~AM?Izh2E^ZtVZ=|Y%N6Pi({v91Sii~D`d0e*^%+<>B=5g=Tp=P(` zwn+bx>fbPEVS>c5$wt*!!jq~`jZ@c$DVgd2gogPa^EZPH#nnLE1Q~=Uh<>=`VY50u zhlYJUi5+nzt5F*60TVjseiD^meuReaNj||=+I4P5tHzq-rR?%FFq{t~b&gvcD&w7h z-J@_~TN5~D!7-}4Fho*b@rwE-@O#_}e`ao2Zn#JG&er(su;oYeIdu3Pa4)^XQM^wg zq#vuhD69l4vAh-S&}|3qbhKT#fUFJx5c!@YWA#A+ym-<=qv{aIbTb(spsa{dUrup5 z!1%tawdzOZwS^%`-yXer8BLl#MHWXqnSG!V?7j6rt|vuA(Rwd?_S$Mnbl&N?2u_1%`Yr*L^K76sJ!*++7s@ z*I+mOyXbG6XSze?zEl-9@~;>FBmUMR1LG_+?FjSY$r0|H{;&4@M1#u7&m;8HS;4kSSr+|s>N7CJ zWOc?4hyK(yJ&WP9(Wj$ePM^)t#U{JW``JU8^??HCb7qZ-#A!rkD9fKs`Sf1{&!?UI z=2j0=&*V6nl<68zD&4zc0Dyjuyb6glRE|{|3HyXk157hA5(##d6^Wt6hy|0X;-H2} zH1`dtv<(dE%2EYjtApO=EWf)_k~U+(z)%V4v(R~X%d$G=b`K?(VQRrTUA(^GDBg7N zn7zPh7^HvRn4^CeP|m%}_zla_shC0JDY5pk{Kp@z&ncR&k)kbRN68m=%tLq1dS&FV z*U0hK7-l+d+I*$95$dbSp`OD?c3LQ4*Tv1jAgO1o>zUT`6;sYsnX+O zG;+qz){8W1fk^x{NjN1Bv5xy%d(r_RHWvPTp9vX&qjO+Jqa9u!6{gNU6o*9niWe0W zVmer66qG;T#O10&YMdlg7m%Q;7|2w_jTszWd3;^oK=xgcfghxd^uPH(3L86Tbed%G<4K+1{qX`&_#7N$X+T46PP+-TQ>(U+8&D0&h4Vp4QV zR{b`p&GVP6x$?G`JnGv_#})hotBEd~_L?;S;&no(`J2A~38LUy1Ubo9F&jlm2$IIf z;~mj4+MSALp{9WHx8P19`Q?B#{J(~-TJ&l~@V)_}%IU2kSy0qVW(orlskD4}?a^`= zGBH=355j5}`eKbR`S&|adID+-aYb^^m9xB()Dq(wYVoCV&8Y}?7r9BW&dblfO^FaK zGA~{y!u;%R|D)Apc{Kv_6iWtk z(MIJG|LIp@WfT5U8x4#rsDNOa`+oR&C%P05G>%u$yYRi0KhYko^IL&_b zLHd^2ps7m~tCdONR!zffzEd8tw^D?Y2VdV<@iRGbo9S>od-VGjVUMlm-pC*rbJ^p_714{E1i{fo*f`3B?&~rQf|A$FgL|8up^`5=Kx4H)kZIt z*#5{VEVg!n^mR~sAdM!?HBf0eVwf)M^2ORO{D*+gfxu_2IfRB$$>E3sfq;!PTny9^ z5rikJ1!r%=Al1*Qqfd%Rbf_vN0o9x8$e_ZVWqRt0prZM*w%yK-s>rU-oa@=QS(Tez zZ!9l#z_|&w3vo8ow{N3$zx5WOH4xJPP%PHfGut9loNz=B`L95Xx*}j*GA(uu`akIf z9Pn*7Y#aqGWHH61N?o)W&6*<96mbQJlU{bZ2M5d=m7qD2UdC4@%CFe?BzcqLXw=~A z62lq0Z7N}Qu%O5XN^FXKzxm&bo8+Ilof>k8R~;DF34S5P3q ziZT~#J4%$&#PC^tfmv+6<{o9bBiWfMLJEW-eC~Ye9}pu=Kre|32#ioirGk0Qk%3T= zLy++SKzs!fp|7OVz2MV<;cXg#RVi-7w|rdzuMAfe?b5WO-}h?ER@GOA;&r~^Rub4L zI78>3jY5>-nDmp|D<&wM`+qP@Tmb0O+N%fT%qko>5WhrosMjd>xew z`gK+;Ry&rEcw#ifF#%b=@gxOo?=Y0=F_4zTM?|zoiOi75_>-k+GVf{IZ)A>& zZ^laawSEv1d=0zjGUFiWW@~Qk2`ssGww2O@8-eb$Ar6|!q?xKuK}@E zxJGzJ?;>Tqv{GEx?|#Q%AXy4llS+t(kqzl)p+(fBzE-Y`c_-VLR~ol|JfxEFDipFj z_{QL}c<5;2+N!xo_{-4E%ez?){DaL)gl(MNu&YHG)5Z}i%T?=e)*6IazNW1nW;yA^t z(bV-$LV`bTz_& zzOpAR!XGYUkXgz(n{S%3^J+kHo4o@G3w@uq^fo)9-zcfAaQ(CTR$VY#J?o`s=MM%j zP~%7uNvE0!q&WG!2aBZ^&+Rx;n8gL^4RLx5EL*}{B-K2hM2PVaAB)H{>L_&kc-kOT z3lw0D5e>v=aKomv-0~hn!{*TAm6A`FVt4?V5@!SU^YXRz^<6%R@RsPwv$^L9e|ig) zyw@pv1xmGov1lrlUm0$s|uo6O1rBayB80UaU1HiC)1!CY3PXbz7xWex3|Q2F}fPxXZOQRTPr>oKfr z;;_VMZ~v7DffKQ@?+#xl7*pvVy1RPib*yf9DmkdpP_b5VwUdy)UIQcp0PS3NxP6Je z1xSG**xuYG&G}&wc9zgu%*%vr)8KQc5QvE7|tR&i(})~k{a*xTF&DcPK=FAU#@f&gP6 zmckGB9*(B;9UpjObBjD*e)>Q9O-toi9ZKG9u7mIp0ymacp_K?!g@jlh4cNR3*<`4C zW>}_vG=%3eX|>I8)*Rx_SiLuJrrnx6q^!@fxtE!a^J~*e19O)NJPRTI-;Dhq5SXY2*F;Lhn;tq5z?d{^5Id`X z%1)`n;{*sY!qJ#M?)uffq%UwJcfbC#zIM6@&h-SbOVH@Kpa1{}lEum2@FIE3U?$f&(>0Li})qtBBFNiE%g}U~-{<#H(qyANk7e z9XK8-#FU}Q`+^h3x-8{8gv1+1L`}!ZTm3<%248`v?B{F$ISiA2OToD8X2{{CbbU({qks`bN(1qp@XYa?ri_t_}Z24}~*Y$)#K) zlf#Fod-&%Ezb*gEd7p5@phEos%q@!T0ECu?$-mAoJb{{*F;sy}h6c#UEQN`5Za%q* zc5Wu@J4@p|c**EaXZks;o|-+H0P+H3L#%^KScNy_3>7QNwlNWdmvwb5f zAHnfD6iTQJ=%Zt<^CR}xNFUF;dUNIhC)s_@-johS9^f6O0%-U_zxK}D9;ZUl4E^iY)$Lkp&Aighwj zfMEWza=2-g6g97F2_5fuO|xl{T%$3_J+W8U&i0=dQv?Y^j1t%8DS2vySih4BZUE<7 zP(zcBz60k6JEsx*j`ZK&ll0I(&=V1eFF3ELKK?E1JWc(9iD8ii z27r+0zS$7W_O1l~zC?#@1m(Lf4bXE~LSf>SwJ2%QFz9qOBAg~@E@Vs{JoDgX#DTVdo-CnBi0pUs=-*6Z(b`sDjUa{W0!dDMFVBpXjD#t@`wB}rzQU0O)-7?hwt8ptJ66jTH- z3(ZpvLjKC2Aq5Fcq>e0UjKc-jOkzA3%l<3;QWdRO_`^p=%gUfMA@>TfJ8H|1K?WWY zktF`~CzjEX&CVi*wc|3{}+n5BGdN8Ot)I?Swt5YO2zE?d;K4 z+J>ZUn3x&LJ)A^`BgOK`;&Jjnf39nJPp-_=jno*~I+ld+PjNf&_&Z5$YRS8=p9={S z@u(Ee^&>Qw5OST}jGg{rRTZ0g1?Xs~0C$uHS+k&F1sB(V{xORTX_YzyRfJ=k0 z@TO;xZqWN>9U1dZ&~ita{P|}-try|xN5`3%7FIpqhJq}y{6;VDW#!p_?TZ)HRGJlF zQDXHXVz$5r>9M#eb)pgZp%${tvp)@Onx2_ub}OT$z3&%y9f=Q^W54aozgNC*w((9k z$S_W9;JFKri)w|8xf?uqeP3a$??F%7t!6B28#2FVuND8=o@06yQ5!?#d^`by4QPoD zO;42h%UOL_xMJnAXceuI-KH1%3j&~t4l#MvBVEY=z;bS0a59i>05X(Fc&#Z7GMHi3 z(>oF9*c)@=MI>N_V_Sz3D@q_(!6mckPcp}6?J#RZ9eA>PeMF&57kp6{>w1pWNK#_W zp}9qPY&xOAU-9-IWhHWJ^(tcmpWxKtKeewe2XzAiiS`xO6!)gdvqba<1{MeAN2TSJ zE9Fm9w*qW8g8K4JeYpDxCyMC2ocFeSgpJlSGk6j8gLMA%0?yp*{tV!}tV=LG+V(DEL-`(_o z*xO&6>*L*W`d;b7%mgAvv?&0-XOwwMN+|PaBN2UX2oIC={s^jA@efqV5|DEr7}M^e zutQRn69%RqjqMQX!4pf|^pi(#60=DN%Ddo}E$Vt3`NM=ESX_$qJ(JFAq&|=cWO}4N7v+(MlKsN z;nW?9_#%2umILdgH}{ap)#R414-$jFQyf}LX#e%wA4Q^_PuZtLjj|qR0J0Msd$Z9( z`HP{BhaTO&kCU$L$QdTp3|5`jc{kMKnhtQNDPcZ%gBl$ z9ZLoQKNKH2GehxP_y;(OJn_{HRAW^NE1Uq`9E+(u@RWV<0mJTuf4)+B@wELQcIM5f zh|8L3s6DDHYT#I}LNrzSC%gt+KN!bAwM(5=Rgg5qDO_cdz{`Z`(@G>B~=G<00iNPVZ zsklj97mrU}%B13`keSNWe_lzEt%-VC?eoJ}sEL750JO_p_{aB21w0liJ!U&i&ON*N z^X$XqdK~OzWUTb?wLD^Kj<5w-9Id%770K8VA_|3jecPL=iz2y>>C#H&Wj$fk{7qf5 zX7%MMpTzSK#=@B3Rer}50Y5>6y4Ua*y8^CNg@M3gAd6h7Ic?5C&*QW3{jJ7vd3FO6 zRuKI_#*pkcLo_)9yXEB(fHXV~1%XFOtSQhK^puT}6Kzp_3@pAg6I3wK7RHxiVib=< zXsolLPXYGAc!Zn*H|J86G)jvOQl8XkkFi6$8>F#HysyMMp~ABg9qrw)-0-O}%BaKl z&o_5}ef*mvkq2z{9Fv%N9@GD%nF~M_4VOkgr2Ku-iRvv_{c^|WJplr6j1Ls=DA0%} zgt-aVfU{_&#)`KCF%H3B5CGa0JCPYJH)@F*c1T1ou!;prFE1i!C2`im`Pc}OI*c={ z9kX<4#lbL+7>E?FvbYYaNY%vpjptVQWhaD7a=}7^X6+4Ct)DPjFwC8p$_%RFb{O4A zri_QL{5$izaA3o?8|^}j<}0d8!hhq6wtWNO6H- zcnMM=7*mvrLD^J&^)o%Oo0Q=UjT~{h>n8ib`xBGV(JEWiy?BVgVbhio zou7%T1GTwJQ0LKQzDt=GTZhSa7%$Y-$J{@QCo|T|oc(?tQ;b)-+jD0T9@^ zG!n666QGSU004SYk%hY=G9k^3V{qBeGg6ngb)$QAl&q{5o%U}%1@&d$)>@rutW)U2b1xg>ylF( z#Enx)>wNo#{O=p9EqHluAkueo{2$rZc@g`bFMp}!)s)lig#T!Zz+zO<(MT6H8}1oO zkrDlkDm~&VvrCJF15|FZ6bMEEv5W9H1!SWJRtw!}OqF+hk(D!0|2En)@WmNW@(&8T z^0V3ov`2g-%kxK7b|JuJDu@$E`_Xb8t+)azWwi$Bq6Vk{>2-8truXd0caD_7F z_B-hY6+_7!oy>OAIn$pc7tO9i`P^w2sUkE^)B0+3-=S^&^b{Und7BhIhfSOZ{pT)L z{3PX{zI7a8iPYi_Qt!B^)pwyy6+Alb^tuik45rEIqvcvBTNEY?;Tes2GJ0XLjwX)M zxZLu(mIUPFNHWqD&|LMHp_!s0g$^gyUqcS{R06(9gLitvrAjEUWDgYc^Z8XP!f9GD zg1gyIt8=_6b;t9;bqu>4>V(H`!C!6NVnUk(GG~$2&AZNC#)I zT6#UR^_=@vf&s`m-_()l>yiaQJg^87<3tEc+FU>>hJrArAw31P#~_lzISBwA;~k6Z zoFP&V-K5^Ff0nuWGdGoPOv;I54!&WzjuOnPvR0I<;%T`ht|zj6Zo)_o6-HK)Y7wT= zyVOl6V(e>h((B2TX_?UKL}-=H9e|D}j2$m?=1Y28`&WQ=8vxIdj}e>C1tei{^CK%? zQVGfV-DBmu6GjrH&UqS~K5jN55lJv&;c}|&t6`of z%tR9lN@-P?Rl_ShuWM%GpgYyZ6%rxk1Eo@bO_`ojx%w{9q~0=f9^!SfI$UqHwJ{m2oCePpAe=CkuXwOlAL`Pn1EK0Y99{k1HQQn`XGlR;G55GN{S6!Y}-@MKBe|Z^p(HpI30W%RV-!)9kNo zR9LbxwWH6sPKoGG zCX3^V8T@QvA0B0~@b~xE)2sCbgK$zKQp`>M89|^4_wF9+rKZo|K&BuOE2mH0zjsxr zEWApf7~vS)sQ+PXN~cIj+G2|oTi6#GvVb#TsA26_cybmco~*bJfxEz$v+sP;1%7UxMU$u6 zTLz|kAvihMI)SX$*$mVpB9S2A_@*CY_`w}K{^iSVMpXaJujwz-78w9UN+AGH`nys# zCLdx_Ovzv%^a!z3f0D*h1Y2cx_r1l_N)-YFkd$2T`F`)_lcyHN^JfNRQTL$&(UelO zP=RcJ!1=EtMlec%j1`q_@2a%J&}AG3do5*u4JOdtIDPJ*6%8I>i#+WHi0uTm8hr7^-fu<@4>U zk!%sU#_1{D?x!d}wQ~IkI#^vm-v7VyVQTZ5D%2e@k@^mn5v>}3MO9S~uujp7Y&XIv z)>mKv0FLMo)H(~w%^8e_O*6OY*`-jHeY9apTwzQMI2ixajUv~PuKpA(P_q0NPQ)wK zfBm=-Hl41xDlx%ohB2-3TKs&FIAbd7w2|z~K<#tqen0KM+8CBu`-bPxE42N>k zh!C;L^?Mf;6oS*d56fB0oaGeeZQ@=qp+!GVyuvYzZfHn#-99r{Btvde`E^qirC2+$ zOwZF6q>sOv#mr9QCb9&xn^;IBmP06TioNB@*cYog6s^}fV>kG{9`-Z4tjB+!ew(>8 zROKLH4^d9BjW2nDyK!bsXs~O9DF6Uv17vn$Rl+f1PO{{6bW(#U5u>a$bPP#5nAzTacBB%+ zX>=HiN(8l1jg&aAMl;D7Nk+?cshmFBsl@8!dC}QBI$M^Ca=4yfg;%mkKDKlgzM-P3 zD#L5O-I3y`0A`Zv@}G$wy@(qJJ;2^CQ$jeAOFv~QQE1vS&Z!^ZAv{6wX@SMIlhqKv z0MY~?V6S#qOrYEVNtFHuHv}5ebjYptR)ejwa;|K3&eT$&cXFIAu{{#oj_6@jOMAn| zh7@8G3^AmL?|6leP}Yld%eR0t6_#7u%Os9{;l$Ust-luBN@VAUH$63Yvix7T9KA%= zA5L+!{u|+AX-1*UeCD+bM^eb>JtX!b#|LQyC_0)*C*z}~@bm`tX8^|Ke&TTTxD-md zpc4;UDYxrcXsQS9IGd-`O{$yK&L}L*+p*mmXBHC=yNeQe$__fl6MB7mc$3I>Jq6tQ zyN=voLoBFD#Ha%WD^{#3z5DdX^TYFl>+!{?*Z@vpC8=`uT-$L^5mdi1trdWPamd+w zV17L5DxfRt3h1(#RgqLzTY!#7Y3hA5l362ZYJs6fRM;%-$MKC^m~tFG)n%YuD$#8;q_*tPG@i<08a^7v6gbFaMVP;;PV= zH=mH|upO@iz0H(^xuRk?g(HnikddK%z36CIqd~~z{rmaoL9`;OlJ;h9b_D*kM8eqL zlvgqGktx*Jcw2_zqGRkEac+-yQA>Jiv!umW*V}3nM^|$)(x7uQrN|x|E!0}343Jg0 zhw05$+~v~yEuWX}FnWU2zYkkErIOt>&n;&}oY9lafetLr0RZ6QUeBCQ%6je|DRT1@ z13L@3^thVPbyP=<5yNYyK5ZzP=BxJ&5QfHxIm?u~$4NzP@-K}>M`o9A9&mxh7he22 zwB6EMLz@xE!lNNX;%?t>|3lip!hlIo&Hwy}5DFh3%ZNr8Dgz9m9w{VdJ*5tfXRq&< zYhl&9WZ8NxLCt>X>KXl#Hb^kVd;G|}oTY*@8c9KIOik+WP%LY0|75(f)y9e#Dgu(T zqh#7z$Ou>^IT)}pxna^37N5CGXNldj*Uh}>OCG5|1s2r>vuUt;1GzQv!wi%*P(_AZ z=J_qa9@}D^vTXfL{%TsQRW31xCnvA)nwtj1&RfRPYkc-JA4RILgyJo&Snxn|pp771K#H;-iG9Av6@eBP^(*yv-GQ?QK9STRUGh?i;IB<;! z0bsER<;d=4&+?E_`AmYiS`-=COb8l^q7pgs!H1r4+z_dW^HEF^u$$I0@9t1u=O(XNbK$S3 zXr7_EhJ^xq=vnQ+lSsrzK*N>;6qB0)wF zZxa)nhzoV|JKN{5GO})vYdehR63w}IpNT<$mLTjnaTSy3SDydbgR_*00ycUtI@|6$(HVc32Ak73;5Q*kKvDX7n_Gzy8E*CQKy z9q|fap;4MNo^LgD)pX1#w;8I+8814UCPUMGdha&zG|c4w+i`!B{GWH__8K$hW?NU%9nMoNJgtu0P_4E-MNtsd7lY{jxJ0l zQWD5QpA-9tXW^SGu386hzhS_V%%ir|3AczA~@yGVDD33KJ>rYpamF%2VYw(+*@ z0!@;jGqcdkMz7E88~8d#XS;JCSK{V;as7waEeI2o^=B)))7=cgJxr$~Q4AKHk#Dm; zcv&doQVO7UI?X`z{X~(qFE0)f^o8F&FFscu>}EU#e4cC%&@@rlL7LVe_!A=eW-R%8 zLe6?-bzo_Z$QFG$ZER1C0-buujbpQ(D5fLQvI}2L3n7Ug`8iv2&5Tsc6CJF=`j_e@ zzxR#q4^au-Yw}V1TzQJ@oFq1E>{-3 zEZ**m%eWLa!O>qHj;#>O_>;)WHc^Y_weXBVP&R7uB=TVrX|%BESCtZDI$A8yH&wxc z>K+Sd-Q)BiMW7+DKH$U160{emYYCq?4$u)_{l3paWAwINM)t<*VA_+-2r5d!u4gD0c#nTL%WK(xAWjjUBx7|q3{DW0` zUj~j`Ywf^7bwkzVTy7_I+)@S zlz2=%M7aDsU5jJ@1fDMa`HDuCw<)xVeX0v@-R(x{)2;CzKhEoeQTXjPY&uI7hf~C zo@B}2TRsT4n|o61Q4?GH>dK$(iJAVMvd1&J{0jg;Tqwk@u3&Urlmyv~#6|P z$-pJ_0I39QpD-%|VmPzyfMgxpISZWs?er>2G5ZXyMoC?H;RsKVw}WQcgfLkkm7vo3 zH%&H=>pZjMpZYmRiUI*4w9%kld`sjr8|U*5to+9CNZ$T@sY=Oh<66{3yb4Qm{o=wZ zXDa)s>e*0WF1>mHx9tB0RWPK(1;~(Dh zyI#pefz~F7%mw?iFHTPx^wQIWF(~KH*U8OgsJMqyw|sBO!?pC)El2; zOaIlC3U=ssJY!aS!#-0^za9Jp%2h@*V^bx>a3L#4Bd;Grgq(QNqX*l;l<$kyh;Bu9htKe9_iGMV>LQpL%p zMNkJTG8)q7+ps~7TSrci0|2PvY*dj?7&yx#{R%26DP!n>UWhauDmH(phWZ<3)V?0% zB5*$ZHj33S06z#B;@o4*VCA1s-=pPbO`Cf{FFsIe_~33Q<-BjEDiY+q0)I7VMTyN> zSMK4x3pSR-^QMjJ`lo8t;3l9ZTOm5~D#@TAsGc~DwqE5pwaKo9)sp3OWWh>IwdCW( z5YKnM1a~fBfpt~==^hSs07k3O48Z=15<5`Y?u`YEDZ~u$MJ-)CvjJz1{@iBon?u!m z(wTeEiu3F0I{6Zcds%Y1hWVk`A7}PE52ZIbf4D!rgYJSFdbFZ9ju+xFO|0GncsX? zmKu9ZPCk%MR!H|JH&r2(EdWTgb~Qfb<5KZA_99_(^I_UV1Y-1~kxjMPV_3QH+^NL) zn2hszs58Qm#*zavUJq75lp+L-zIx_S=}J;wQNL zu`%#Uvh5IEJ^}_r9}Ez3)-dc_&-T%x)J`o~9y1bdWIEASsFKEoDVsvLGBJfdw5@b! zEhaks9?lh{dn8)y0ip<1;s|jIvrH<|QS)c^$rOp;18MNdoYMOUOVlB7%@>$Op%&Y6 zL2P>hi(aXb4CWFJXZF>_1?RM+<7(0M~FB0~* zkB){o2Z_QyIxseb1}%qg2b;HEI_8`#U^YZDf{0ntwBX$c4J-g8hFu^E@Q%S`Npa0k z-Yyuilb$u8>n1L;j}9_iJY}A=ko;UyEBjopXI;+aU8V+Ik&|B#@d^WMNfvkwEq0o1Rzkn z(j~J6NmgKF3f@r@+v0|!{8xKUVnP~J5gujIPf<}Fnh3s!uw6&RfqT{TH{;1hO4I?w z>l8~vdL(D9=Iv3sRLmFVwNz|IQ7&EEC+3_u7M1N@DCjRK)jWF#3r60q`?(fN3FS0~ zySg-HSF%F{V=i0J){3{XZ%2KcXg6huE{VXa9JI3_n`XqoW z3m{tGrFCNgAyJqXhaxGB2Bt7e3a?9fk!D8F@Nd#O23Jez8CrUwnFt@38#IgKuydc* zMbZB2j{A<;v&o(o9=If{V;7*%NRGz!dg|&X1J`3SX#a@A<;0hlsj>9uUA=pIYvhdT8X|ur<1I_gV?$3Zq4U@&gCeZ}Bit7$j_&L*)u# zgG*OCwrK$5++AeR7pQG)4^81m-tvrg{q4>hTxKY}1*TaxcaP1XE4ZGHs+VuCP!efD zeWa5HpdtpQZTwNDo`nDE2|9b?z+E&BdsMy#hJ{UOeFKnUZc%rw$8XimjcGi zDrVkz$!E#YlR%U8Z=p^9zuI$+4HcJyQ|g-j4pMybv1Dk~j1^UJpf_M?c~yy%Ogk@X zb!(x_@fY0EZu+D7wf}%&N(-?IBx+B8%!;(Bv&8D_-qnlgLI9zS-|HtSqewvjveqsV z|42|ijUf<|$U3MGz^%ao1F{qC#f6Ni(kS$(s$fUx4oqk)g#-WslER$rN0xx(v|Z*Z z6?q}K`8A8uz3Y&`a{6jQPK>>$?R-8rr+Gp-bw+8{(z|!43Lja9E_qFMmq|DsT}52~ z-B(2}sg1V_rXIcZS9q}&&TToFjMA4Z$TXw&b}#g0;UANixOwYvnQgWC^!GxkH#XF# zCjfw<7MEEJnU;(&A4M|{p}^vKU#bDZF|=3V6#fYRqj%jZoy>WoX~k6zVEnww*W4l+ zcdsSAgb#EB-Ot29L|-OzL=Lk5|t6l!5tvbe0pBHA5^Z<*H40P0 zS25;3k@C$NE*<__btgZ2&*G{3L$UF`DDYB(>vLr8)>g*Qm#^06lv)2AdMXbN3s$=? zgteTD(z3THnwDPjmUUlS{&jxWItu_WczFd1LNxeznR$a|n53m>w!!7hpy_@*{NFu+ zBiWewqe+Ip#gtAR6Zeup{m7sgT*oL{CQ4^C7jT{j{S;P<2=peR*WQ&*uAc!O$%R$7 z-?G*X>3m!I&tL5RYR>cH+Klu7bZPn^dZJmpQ`U;ZO^`PH4ux&8O0j)eS6za;fnhyA zM^1It`pKvLl=fCH<=weRoqe3u#x&=p$2`;)3M+H z?7o#ggBtpDi{glv?_fHsoUTc=lS*o8y2LQTF`sUxFHS8^LrJaR4!uu6n&N)+<7L_4 zk(R`PU$y6dSp%|7qV=+=|FYSO2F}mpP4pb~kZ zF8_{0T?FK@78!6d8TT`}CmYkdEKsc9<(8l!^I&QLQt7L}%DnFh`ojzmJbv z=}hvR2@I{O6z6+Z{y&4z=H#77M!2Hg)6y7<)sP!>ZPLtQ^L(2 zFFgFam|yZR0{rts^ct5oV|u<_obHsgo%HwFkttNai}O1cd!#}-KspLJq=NY)t%Ndx z0gBTpAplV^O=+Y;euutJf3se=qNg&Fh^a5Dwr_xq*D<)+kqB9-6F2c&di7qEGc_HR z^k$p9p@yOIiqFjBmS)Wk6Ky^*8p^J+G`?7e+L*`di1wGrk>@xomz-C`HsNSKjXPeK zw)dS+`d%Bvd>u1}W<}O4Wc33M`lSIBGVju}Q3EP&8tBfUVM7s=B5$rpV13leRy#ar zIB(EsQ4sne*ecN6YsbNUD={fuui+t5KVap`o;*uH68f*({iQ_p>n<_|p|3-oC(P_Q z+YGSE>h5poYv+pj4r4fyzP^<46TLqQOmmYXA2J(kGyf2`&LV3S+&cbMz%j}GRF!I9 zN7n5UNMR9B{ESPa%TF;H0NC56khqP-7KHcPZbD*Eq-I`#GF}9UnEgZR2e(n2!3Fxw zz_ARacto4fIc5A86%_XiDd`8AHXq%h3qqdSnirr}1U^R@ZKY8&kH6qE%4!$RcM!ah zN)0)YIo<&Pw9m=}$5g}!$>{yzS;`vpln#3l1^Tx`gIkgfK`IQr?vHbOP48zXk6X3u ze@pZss+*E~ZW5K1_L${n_G@$J!puWpkgK*dlH~yxpJ!v6*UYE-kIq=`Do3Dijy zDaW@@53CmwSn;W3TTLGKbb7p&L&U87I6WFovFu-FvbMnzp!BG7aXJo+Xn#qqOlCN7 zMz~Uy5~wPYjgDH#tLOkW4;-0yRuY{aekpmh)}SeGF2HDwDkZD`!CWJtspUKitW(z2a&oAO6lTqt7T;w>s;FS&R^@(&!L;UC(avCIMRM?uNzVbVwNJM0si_!I#p zhpMKaM$adWjW%Q!KZ<;#Ki>EK`#0hG=iZll~_sVCwMvwy+mH(^m%D^0Zk<>{7BXrR;-K+9tHBX0f|{K!MDN z0WlL4++0TpuCQHNuZHpu7=HC1m)!KQWMyTxH#F*hYh)+9-{M)M?@vGJ^6OUq^mrTo z^ETrJ@;cJAMYkgJ^i=H}mk)&wCYB7kpLcvRMP%MjE!#>39laiNOvp0d5Cvxo#tmPT zo13Ut26I2c&HY=*W)_(dd!Xa+5s+1r0P%ihj%(^RKX|bX_bE1?v%$sad- zay~W~n2kWpa|p;v$H^gzER}5C$Ux452`0-4*yf~k76^631BoBdn_%m(^@rhtaRfYrF9lq&sO?zE(VG-8 zsk)B6s-oc~`d?Y%!V^rnuL9Qf9W63HfJNEsJq-0d$5 z;TqcBU{ND{!ZS7bNj;GwoeRpnl>HLRVBbzcUBadG4|~pms22*0uT9a{Ax>}?dqf*; z$0IcUO}loI^++Nsr9!$Tl4jkanOqvZ@8r*;HK<(k=VwRXg82Ni(+YLRxhrEI+h^o< z#^S>FZ_ckznd3}hA_*MkXT98i=>UY;+bnV|2`yUeVk`y%h@rb6Gg*Tm9k0Q!+~WuO z&(vY(STm^oAZoK!p{0M7yKX{aA%ZPXM0~78o5x3tSdQmxKVs;OmE^XnTIJ*3j^SKzvsCv~z`eyl%ycPnmdA`NvPz)O$ea zl?=GAbtPl4GH7wqS#=ok9uaW$QoX+xBl}E88L|HRL0fC&QLz!JGR(iha8Xxp`#j}H z|GoZZ9gH@Pi+gPPptkW@RU_6#;-b53eR6|^-j;K3mGv!$DGb2#jlAf#NHFepln8K7 z(?-=g;)BSaXbMHPWSuT&gs#a%EpSi=A|Rr!X($3;i@LkzFGfPhX4>~ool;3t`F+ji zgO3!ItuF1)glL+~Ea#dJvMU05lvL6MwtR-2V57Q}hBSYmLEUHiebj{v34zl?} zX0E5}Io9*KhR8K`y?4R45ATjN+v2`_B-S7LH_MX#!=B|Npre9*p{eL~>{y+xhyqQwlIXxFvzWY~!1q`aiah==QGCvH%? zpUbnA7px`g@p<~W8IJpQ3FmX0W)r2QD`o>AV%~~i@FWtR%2y^qO=n^tP+g@16VId^ z;tH87}8uvK=+!DMfPq?hy_?Bgt=?mQF7lPIjasmU3+Z5k8&l z)sdYJx^2yp&n}m24T|{XsW&z@;$fnBFE^a4eb(GZjqhc*?{(fFu2n}yWVIdZKS?f? z-p1qZjc|))IH?*6K%jUGBH7pp)63y8W1GueW1`;t$jebE@%X!ExU^-B!zqW567 ze+zGp*FZ^yBXWHz=Z+@!VgWNJU3b#z&S~CO|FN;+_+SnlbgVx~F>7|O@KIi_R?;qY z)fJ70R(?rMC+_v5RGXQiTlOSKvbzyK3N=7iTGIpBuLehr5yKL!2O`0wyr?sN3SeIN z$22e~%qI!Z44{RB?*J{t2b4+ksZ}12^)ZngPc4A#~6j%5^k~+w!mjGys^zzUUxIXN@SYDe>L>z~@zuVX%mqF)$19IM%vwdMn~_HLfZ)I`G-9xDX1q877PDjPYpa7>(EL2FIAiy z?gFagOU|TX{-aU#wXe~#VBN#WGUE<88JgmlM?*^0(VLRP?8(=b&z{v&AI)aa)pm)j zJxWZ#TygAt!8K%`UQ7{aZhPfDi3^4>q@Rg;2Ra5R<+}iY>sy6D77;ThfMtPBN|rFG zK}>-&i-{=%S#*h<5P>fyjgGF80A*y-9IqijL_y}_N#l`}?d77Av-MYq3!Gn`YunJX zuh=^Cy?~puN$I2D!Pd!AZRh7ILU~&?5pFRCJu-6x(+u<*Nw)MR7mg&})UB4xAsQ#v zA5#19Pv<R$CU&?%4o^TQ>Qq6*QlKmNu+^r7y7aU1d^Wz zoK~Yj<9{?<#iLE?IAQTm)(EXT8X^Sk1)u* zmJR{Sc3wXSCGEahlgL8~D%4Gf+Kn)XWJJk28WvU)0PSslzovmSL$cp5P^GW^6=;$} z8~)sB_>YAr;*=G5WIZeIIPgxZKi=iFzRbXm9I;3=tvs&dep&d=)HIO{_{+nF)tJxk zkDtEs|MF;Yj;3;;D^yD6YOL4jRRe_(?HmA)J*X)XRD{+dqp(C>ECTNibI?Y0My-qK zowd=eI;3b|KLO+ptLp}agJkC;qL?mfV5MmW$Yxt3XCJOO#_w!Qk~+U3LgQX4S=EopXh`K9=8ZNfBZ13!YGp?(q()fUVv^0| zGMV!xC1aY+oRvZJyR@mcdHbA67JuXWrp$%={?m8q88{zW)puFpejQD-*}W$+XLSbe z)P>=(fb>yBn8Gw!jv;j0?hC|$%`iHX@?cX=wY!92>CEwtF$usM^Fma7SHhH7yqUte zD}RqqKd0B!E9?c?+V55$;WdM)mh^sfC0jtwIsxEyI>u)1Q{<-80I(joxzb`A$5QXD z_2JjR+81^Se~pUNG`12!C`<(9{pR$2V#PTG8IV8y5VsLo;4fLRIo0_3YMTrHQCY<- znq)N7bA;h{6i7jo;|Q=8(E@W#{kcHZ*k>ZMLJ#37@CK~#q1#r!XoYZPO0S^V?JCor zxS9Fea!QBLOPVU8gz|Xi#3n75)ppz>m*tO|^z%F$p^thjwWiN)eYV}5?BbStTWW4^ zLc^6oKO_HBDM?S;nJ%Om`v9Qe8)l-E-DJ_(Hc28NREaPF-cuL|D<^$aMNo6ptC;nU z6(1~GnJ$?{Pn?iE?Yo)7d8Z8~u0(!M8~7|+_4NLw>Xga;?uyC8-^+x)lEeBD@(g~K zOA%V0+_L6(84xt^W(*Up;g2yEh&qA+^esYJ^0gk%w{ z@?9w72p%AM8jx|XeD$wOo2-S;lkT&r0XtG+ei06Obb*k89LjKvXwmb6iWL43=QFqcl19Re9USz^Rc&91M)6jmhax z;%g(&)?gl0*jUzktco>>$^8gIhF_3I54+9(MsTPC_$XmxaU9z; zldo(+6N@rJLr^BrtE$IO%H@ornp(l>|0?cV6zYZYqCQ4qA|U~ec8;l}DHT(9$5Pom z7p<)8>k+9Dsky8kc=w)Mx4749v5WS4^aTCp^}FwK|4h$hvb$d0 z9Z_Hi!~fEd$AqcK(-ccWb{;^NsCCDZvm{}XsR*DyGO2JXCX!luT_#&;DTl-JrPoQ` z)1q(83SAsi4QvPK;AJ?5+0?lHY5z6b2ZIF+-Laq!sCqB`J zbcO;i1G9`W)738rnf%3HAyIrn0rryR+}wc_W7!sEf|Pa21w9 zL3S$Hy2h0z-0Lc6h{H`K;=iy+9xxb0wl@E*I zrTbQ2&%fRN-9DNWcv9!z@iI{NL+o$S-e)g9Rs0U1aEi7TcNZHW>~Wn6A{0#@wxJ+0 zaoVQsm!FYbxIrp3BfYiT-)##hY?TfZA7$&P^HRiBI zvx1vfIf)zvs9oi#76XhIDix{Jbvx4UI&l8uS3gO(hA?{fO_i=A-yJF2$8_k8bE>;- zQMo`%4xO{g!Ibi17pI@y=^R&%$~dSMI4HD`E-QmE+uw+u84UuKIwV5(R;CJmaHG0yLB~66n_WomH%%q%*U(T&{ZVd#&hF+;1Fz zx@6Vm{juL+PMj-(c=*!|)ducK{H4!KOVUH&TYEU}F95vtG zOR1=tHL`pAcZmPxHdzN^qDvgvAxRi*a2?$%FmDQuD#UVKeal;igU9IAIf%d=i+$DwA~BQKk2Rh$$Mct2!y{6F zv)S!n<#Yx0+<^#Z$#w*2VKDHwNR^Od;$y&W)JyWg`J3}WAL^caNLDeQ=+X82$~(`3 zIH&EHaZz)*=mZ}@c}?z8+}{t!mAdof|Ie@N(hT*E5iDKlAh?+$$X#cd6XVvqaHPg| zsMSy!GWgKy2Y3;OyEU1JdhYuz)O=ekJ`=H&rua_YdN>M3{fdBqT|6w3EYx~G?kiM0 zON>pS?ujTfhDPxnBVo?g!?{1n(q3`~GJJ!?9%HVgKBM8PDOKCs9_}$_d%B%>T#h}X z@J~JYAjOl{=CS#!sA%`td9s~Ok>S$#S4iVt>^8zbqimfD85)+dKumUQ>H5CzD{NboJb3VvgoOSV;5|yxD8(=Z{v&>2 zG;&~T;G@5=_a#U>XHQ!a@?(eI@Cic@_p?|pk1G=FAxWQ&z&qUE6c1yw=i;ABofQ6+ z7NHfmhzqI6X7v>-Zb`-gd!e(b=rE+atoT`Lzy2?zF*OGnl z!?4J=1G6s+(#!(Q4S7S$yDxsM1t}gnn@pWzu%CAFFn2&*&EYN_^sHtY;a61#+uyZ> zVwQj2*|X@Hbu+Xa)l7SS^x0xN#yllm2jC>~MN^L58NO7~*KZaj2%pGxW1>-@O`>zw zN=|zpE!~^|N^$NZW+8hFS})n;3sdZI2beft>HFGntE&%Epuj-4_)$N?Y|zK=?JlHx z*+b+<NF$${`q=De>t{^L_Wpa!_?@}40)cLT1 zJ*0KYvp~mO*ELDHhm6ogXt*bM<4e2UNf_naIOmOOj8bX5pgMuS_-?GeGjkE6S<-lk zghmhMxVlQpc>V9hJ&U`gUH%@TUGl>b4`5ZO1%66jW0_YkUz+wTeN<3yyI@J?W5)%QoEN@Q77yS~kiX2mPhxZ>M+w)!JKkLsV_@y$kXd3Cg89t7^$ZPmvgSW zSbn-77C;9{G<)1r2nnkzC0><${%r^Mmkg$JeZ3+ZRf}sG2M}g$Gl*OzBR z1fRsE_O>9$hLy=dz>Hq`s;mZ`;UH^_n7SHIo@$`@5L19+bZXImC_;_cJG!w@8bWNk zHJKvTX;5t>#6WS8K$F|rx|U|%1>fyZC%|1%^x`6^N>A!UfxbOr5i(AMaeD(T$+l5E5mxHsDZjct?(ONSY1kWrEm5yb>`=^FD*5 z8Rb?L56!T3ziP)_an^(xezD-D>*60-zE|BF$$kI30nv|LABB$S{IVbbn2hRcmeHWB z$;hfS62PFqef6|Wy@sI(5pp&ws7$4ptz_DxPEoR_`U87vSS_Jd>xXorZB^!_qy%*3 zOCLWT%J6E;5)qo5EFV0bG)*4}kf5}GOMYa&oK&{5P@`_4B9~H@a%O#AYX@cXa{L2* zxPbe-j7~eF{{z0d#IWJfNU!&yL-(d0m4k_H0<4~EfUFLws7y&CnUA{1BuJ)4m{7CW zoHwXY!mUP^rI6V$zgeAqV-}CR7H|L6roj}q6nivpOg_xySO2-=RQIf|2BcA4u5yR(zKRXRh z4!;Q3LdYvcqmF4}`HJsnegD%#vU%`dP=1JuvB%@^p$ts(VVW8!ewADceL8L-EBK$D z;oIQr%Oz)y=eQ-yoC?I0_v7_{*fSY}ve#VH7gpg>W$QSj3axTca&D%2rtmQ^gIgf#7>XDgQ{Gh4X3K0^gIQ>UIf6&({|Mj z_`UMqn)aOs){{es`6hf63Cbzpo)2jB=1JZ+x(L7vJHK|Tch};Ax|>pLmf&2kcwY6j zyv5

    3>{QC3CYF*o?*|gw&PbZ6}Ik?gWLED<6o&kn`B~3!(=BQNTWRmwowpmSmp{ z0QDE9EPjMSihfNeTW^vfW-i^k)a5_G%A$|NEY*I~1+Wq5({VT9-VH?pR-~eF81U z&pYwvCiFne{YG(fGJ)|034$$>$0EPbt#hc(a=ie+AQ#u#^c!nWCbG`@6+MBDv{&?v zHm`K9O$@$>h?D4+Kn8!AX8efiU3=H~}l`Gk4@!)1oV%Bn8pi4anB!M;d3FsIS-xG+lgSNZ2CMq40$Lv#?rpm zlIyPT1w1S8IF+z%Ps9+PM%xF6etd*Bc}5mi;C-ySZ%`2L%rIQ$WgpK*Q}e3~TBK4O zpQhBz>^{55kfM{2Z^3*%Q=M{p{Bmt)43bSm7u{t>+jY~$c>enWTX)H$Z7;_?U6jv;d+#A5Zift_bwCUK~U+_rJQ=6x-hm5|!?>-4Kp=jrN z&?2CQsr{6m>_-$pbaobPMiO{ui|6`ej8ZoC?9Gu9f_bNVM>b#U?K z=YFDBKcK+eJoG~u*((UmJ=uwevO|m&DTafJ9V!veN+fvFsU|r4kry;O5VB`9i7_knxW9V&7k=Tp0rEjiYm{dd`Q0{mh$wsOYBucj+cTKRJNDe%uV ze#5!-M}jArvvjJ2=pB%u+M6khyuw7ck&GRP1P@9Q^D;r$P{bs~kFYf4W3Whn&1`Cl zh*xD3PWQJAxLO}ow&rKVuu~=>%4b_YtL~Sqk;Ry#qe`E7)Yz<4Iw|)i=O+wy2fk8q zljg(zawZKw@8P3tZO?Fd^rCs4JtIG+D5+GcDVK;gGO-y;wknawsU~1weDrPR`NS4H z>YTrltA+{eSZjr+Z@;Iq3?de-NDkJGS|M+0tKp?CB0s+8Y*1P3X&!u98Cu89A1b&xUh?KLsJ@q{Y@u{Nbb^(`z(8@AS0|R1*hNI z3#J*Ur#wU_m3LkuU(NgSHD8$2Sk>TgN7mW;3ONuy-4UAKx;m6bQ?A-Du|MK^TCj8y z8VAA^y>37(7CS!s)`2aE64*pcD0DT$Vekf>@K#Ak*is)s(79G0k}se+npt|miHz_o;Enu68BT9cEZXd zQ!}T=;LXeN9La(vV;ruB;hy0j-g6CqAxCK_tG&QzqWR(Zp_xARAeUxb29G_iho9M; zD`N|?{`1q*S4vsmBq6XVKB6Hj&tmaUlpK9u3xzUvIH^H)-guNHN5@48w|c)i#V1cC-*P^c9`QkV!#I5muj@PaBc_f?k8e4D z8OjH9Q)N=mUfg`1lEPg!Ufyrm=7XQRAQgznmjBIdl6E;!oCMa?AbOj7H9!FYlqP8h zc+N1b`j|N=j6ZWp!%ZM6lOk{hT4WcLv~MuTn!em?=i1K1d!;+J^^@oLG*X^EYld>C zjeg1HZiMLl@VcacSBN>;zp+eimx5j*&|wYD|LpsiCyPA`|Na{7lediaqV5>0Now)c z9;6J}GFgs_r=sT)a*_+gBM`(2qRAs8Ff-5w!Vog#_RUAp2}6~ff9bajPdV2&(cDB6 zistZ83RteLc|ILnEsa)9crvk+T~^H6JvZXNAr?X>GoU1HyydUqqzB)U>E_jzGrWc= za*tga^Bf7i4c+&>Vq&klF-zyB3H@V7X-M~gePcZYdW^#*=NG&UG!zkCc=iZJv?ZRT z6gW4RbO>Yv1L>W2c|h{~4a|ggvBC=laVXU8BdHQOoPm9W=BDc)k@Tb?#Ozu{Grcmk zin<2LT!$;%6-{tAtHxD(E5h0wqZ4?5tgMJz^5k+G zK~DZ;3z^kr=6@YuT>I|#$^d~Xt@~ek399plxDmvF0qTyU)ANR#KR(ZKr#C-tS%0e{ z9UlJeRRsX@M-Z7x18R~v(aA14vHvRW3nl7_;v%Do+3y6>4`$8>Z3Y9zs_uLDwi&AU zv|`J$39sYG6~TOma~|wfq6qx`p;@v05C*EZ0AN^*WaB0m)nt2tDxDyAAmYykXQM{B zV%LYS;tdHj^c6&NoxC5mvgIRQRCX4mkCh^fTFZOU|3ymoG?phBS zcrm8=nG!0S#o5<86P>R6nm(8HVWrOHkND4<{aMO6?29R#;&0mmd~`A^jdfiQ7H1HL zA>|0_7Ek<*xLATua29lls~@aHbO-{K+w05EXGQvru*K3LAdRoXw262lXI>U_x>!X` zN5b)P>i7rB>;_|J+j_Bw;*TW4E&>hFdlbRkjkT(RWV_srI)jm6cLglF5GWfZf>$UTG5hn-wAFZD-Q4<+ZAH`J5v$wQ>BO-Iy1d;Wc82r2Hol_277Y z(KXZN3h|Gj1ICK?R|xs~`h94K0TG$nP&Um1+PsapiGTrz3?7AOD5}XFNvvU03s!M+nj5hX2@1aMFpjuo@6|<~ z2xXPgu`A{_%T^3-_Q)WDP*SGd@?IW(1dsRz<^rNmxWQ~4CryU%@2=aBuU-5FxA|2Fb6)x zgsk1w`a3hbu*Ff(bgwrgZsqX5I>+~fry}`u4Ud=iCFQx+^BmjR(|r$ z(J9zxVf1Z;0_d@b0Su{}Tl+~gH=hjvAlq6IjXFHbJ~k_^LY zHqo3%V>bZrLp=;wlMz-aq7wzjk{eSK+m zp#E{+Hg{FZ3WswKeFYoC_bP8~;eVPv==RZ#^U0gw**dUdLAY{xvl0Ew%y6`4$5g&Dc?w~4vYd}7-)FrrSuj=;3;<(pQ(>Z zi4K6VEiR+I>UNxxZ%!FNoO<2#GM-=qx&Cyebs<|~7F~#`w_;P3$@+#Tw10q@Y-o6G zIZ}jd;VUab^eDoLM_nh7^k$Mwb-J1gL3;Yzp>iX@bVs0HRN2V79X6NAwe@JOzG6<8 zR(=uT4U4>zeS7ik?N_V1f7mlaWw)oTR~TgWI~3&NXun@cJ@yw(VLiRg$$KzeMTOBE zvKlbmg5;E{Fe3?fN)$12!yG6&1quV^2YET60QXTI@z7w10tXwRjsr*-S}(#*k5{UU zU)Wl3dld6#V{$Vsp64uH{~ER;R+L|^^gbwcG`5pmZTPjWcGu6&pZ7odr4<6&EgxI-&C7w{rs>Qb(4w%ZmHdYe5@_(wV`7rQ+wE0%3OEDeG6a+}tHn&UzF5HVsh1dssbU=^H9Yc2?}++TwwEQ-96iqMJ8DOtwNd zhG%XY$b>rup>1Q==o%}#BrfjI+@pne8QL4WA9PJT`rK-kd^@tDxGtYr-Ufty{DUpp z6(xI6h{NGHCce_x-8mrs{ypzaRdIX~#)+(e+Ac~P#wnZBr97EYDz#uA{oSeN9%&&2 z8OVURS)wq0`8~d}zxBAazm}m)?f!vWe{3S!kccNvIxFd$q%q;-Zon7L@5E=9fd-Fi zw7bp=MxqQ{{q!?w=Of6JMDFP@(;R3t@MFbl+h91pI-%G^EyDB^ zF9=+T!6pEJa2(h0p?J?=<-e44)OyOW5n7)SuYO9^Ftc@z8KE)d{v)HNY{>YjNb-m-n&hOUKEM@9(qIbZ<_^7jKx7P^yMT$7OWk&@l92dwkah zqBd)$tF!F0qt)o=TcS_6_uV_#&IR20G5?ntwAn*748H$u9g5{@6D~?(C}fDEv@r3? zLio!!;3$X*Z}a)~FsFnk3t(_j z|ML?x2-?y~<#c(UzxvC;TVf%=RAxQ; zwIW1e`i<(?wQ#Y|dUH*x_~Md5wZO`+MgPeFtItx*KhQ*m0&_D}}fx3SxYH)bk-vGVc3x#+z&xQw~A zA`am1=Sd0VA%4IJ!-YvLuYVY~onlv{vw&A1^u(zLqg@eJ`pm{?_s!Wdl9EHdBKBQC zWp&tGYO7KzH6Ul*bgtLBYC5H)DRon6#Na5|!~4IbX0l)UR3D$cKtzi}mJna=tyAdK zMBb)Cl0`}`~bWANW-u>gRn)S1%0~es%wW-(ipR(%2^DF<$CRQ zj$0RnVeFJ;f}U|i1@znB$(0@YshrRr8fkWtmYCIP<;N`+Ys364MPkm{pV^xO=hMYD zaP^=54!z-?&$}FN!+je78OZV1vZy@uo6hPIK5X27PD~G>4MlP%W%K|v6k%!|9ya}l#IQRo!fR1oY)2O)6|shs+j9o^D9S|rl5qn)-BpE%H__uK1BPka zlchO(od3OMX=A?rtvBH(LRTNPy_97^K+L6!iu&00;Rmu~2yXw5gPtp55$bDmWHzT+ z@U)6lBkhOoLj%)EB{zuKR<1ylUU zT6^u6jqFA}Ay?--(~_|-Yt2epEnF`5weMqvJ{}s3YIpeh?!IVVx^44#jMTMw(J6-P z+;Ci|B#>4wG$?$X)@cZR%5)bW2x_nun(tmM@qKku{H!*zVI52BswxLF$AIi2>It2Z zIvR7^S~X?Br(*e=s($O3*snr^%i7|l2jkj~G+$}f)6w>R@5>Rc-+r*n3{g(MFp1xg zoN9f94CIpztJ{ssFd1-c!y5d#PX{X!SmHRNCsj_+jfm{f_Tvz;1Z zriSEE{v{@TtQa&il*L z5yT^rpFHDJBe%dK`epEX97LQ%K}jI3q0?ov6w4%JW6q$;IQX)pF0ofDj9UG7>Zq2J zDZ9Upxn~w9u`)Xm*;#zlO04}YJ(Qc%E3 zkN}PLAM=T^FzXBnCssYBM*Zt{Gby_%cz-1m6gvG~ow6(G6aCQps_ym_M-pYuS`FMG z8BB*MpCjMmbPgD!B}dSAyM~XSNqxIzER4(LADvlwfaB(xxhs-mXKxif0E<+`NLLsF zNq`6-Sm+}e0zelSH6kZd&K3hBdG=>k;5@cBuUxoB@i+& zx2l{A%FG-pq!$<;2`D$m_L4?u^P118R3QXB)pu;H)g2B`;|X=C_uDyw`s^Xw0Nn&# zQ556X@-tR-)$pXuG{avBpUo4eR$`cxl-;&>L2KB8$Lk@%=?;b24{Y@k-{~)Td@+Ht zg@inDJ)Oz}KUlK5>o#~S+Nasv{v7w`l3^XTJZIJAMym%a!MDrm5j%fR3YVC*W?&91 zjbwmT)Lx&Ob+V*LywymO9!%kHuR(&;AG@MJdP7I9!dRi@$$S}_R_^7#OWS~k;*RrI z7KF8#acWb-R`v{3dKu+zA?JoEKa6>w%_y;V_zsgr?0UCeF`o0NNSJjJwvtH;ILdAnL;6~PI%{W6$iiF0=K))K0jsgTun z6=zp5%A)5G+R!WAjz{Be`t4@H_HMfKj6s@#3FBxr=eQBQ5o+{5j}uO|TD}GjF0f*E zrQt&{66*xk8GVRQUxF|ew%6c zX~>?!Q(O!J4vZ4v7afFZU=qM`%?l^oPzn}kiu)w=K`^M{1@|fU-1lNrqTY9f>33}c zL|VU9mw9~}CI6KY|9j1z+G1*cRXTIsM3<5Zh>w*KbuekJsNyCju~3&2Eqy6{-01M} znM)bGl=dQ$Bz7ov+%r;3I=QLqyLhZ2(>s3rg}@f?RAkhM4wU;Y{X7`B zc$h;)JX6{}1oU=T3EMwN6Q5w0RVjZ9t z$~KjxU~Qg<1zW5pF+nEH(AZHrnlI({%F3>-26c@Wlk7<&i^$jNL(y6v6)tx5@B3_5 zjIBF&(KkUbex!PhJchI7^J#kZGxXi@P*{Lv5@$;zCp|`atCi!M)a^r8*VN<+7pq$K zWKqDowPeyPl#bKxsDP&vA&&x7AdZ<3N){HGyv}oEXC0%yiQTCT+mV4Io7s21kLh!8 zJhH2|CjgRv2LdP=D?xDUky%T?R(6Ltij-FAWHHoWuGD;>@*-){f-W?#boWmV!>2wQjzEpqLlWV zMP=b{pC-;Hv%=rF{(YkpiPGJzrq$Yuk(>-pHZdy%=qWObMHK&tSb+uMDr_2(d z%fvRkWO$9Fl{!y`KlzKTEN~h~?``LiTU3YOPVA6(QDImh0;-`R)(XzT_7s5XH&k)p z$#mTz4j@u)k&KAlM(cGyBnH_)q0BWKHh&rwOXK{#V~f7Gt`ciM`>XGjN6g7jErmyS zhkef{hKuf5v`oG#Kg}zrWnbdr3*ZX7ypB|b4Ij~F6f(WGeW2+Ou73Y&fp~w=IB9nK zQGhLFg_u@+f@xh+{J;4^DoLoOeUv;*3;e-y+<|TW&|!vR$z4R)eg0$ zt?%OgK~-guAW?U1bc(kT#q`(jDW?AABrVytx3)onF%|8%$A6kaw{^{GrQG*svBt-o z&vB0zm*W3Yy#xU01_NO3*vJe>TuNdAn{HVdYz_vHHt`*XL+8kt9BrJ3qawKpkoM;R zB&w9^Sz#-&L$JY_3r|`ho>uY+ko86WgoeQ0stzOMpp(umHYRFp0Xx%`civ&^C414m zHpr_fLX-0i#Q5M?I9K%Pn~m!qCwYYe2D~ge(&Zod)ufw^a)_2Ce(dp89R#;LYO_eP zNrAZE;tq-0{~k$SRuFqeR<$m;rE#myu`4D-M1wGFQG>(@L&@pl0}2b9=n5qs1cvO9 zL^N^_D(zJsry>c))SNQ>d0N1)Uj-IdXE#AbT0~zeCp=QoEZA6`)HalSB1uo(HD2`P z8%Cya(R`F(Y5Eoqrl>i}-FN8u!a&Urr3hKhC!pts6kj*7ESf+F%d9Fk(6~*bmOW0rviIlBj$<2ek5WLH1&86;q}v*r}-(>=lM1 z;3iNG5Zz(3ybeJznpKej(sH(QJiqGUOd)Q${5d0Xt|Mq$0rTRg@2OGvU4P1*A>y{2 z`@c0`HayGX&dRBIYbs~=0xqZ9F#7As+6t%t;~tAbVeg->r__P~F$$wLyClrUV9cHM znWegaeV&qs*c&8CA_yAApu&dI0c=%3ggCx zgh7bfruTF|lctzrCbx!}jb@?uHnsH?yDUk*BQ>bPFkegqDy4Ny^t%X}I>zX%6to-b z^pnR)udh0{#yha@eW7CQi142W0s8JD{_k$jZ)TUm@}1GLQwv!fOwdlx$bv~H0N_rP zbR>U&On>DMMITyzu{~vSDx{*qW+soN20Pw*&)xzQsJ`V>MI0b;z%9U(0MH=D#yrF5 z7Bm9YNcy3uF$RXxQV78(H63S;l0Ab(#jF;dY}sMXS9%Yg{jzb8QdrzI3v>$^^4KyI zP$htP>@Md3nnXho1Zr(^H7_6uk#VwTGvYDvMTQP5kLX!vjbtsKB;3BeWC~U*LC2Dd zm;&ySxjo5eIg636fs{(=lj)4ci=<>U&&X&4mFY3o5yWWWAMAdhhx-WUG5=JJ{s;noU`KJA^z_*Sy8*6AFgDTV*PtDrEZzHml9nb z7f{7+Iz?T_hWj6wexuxdr8r+0r1_z29ADaqCp7H5s_tApWia;tF;fu{9_#ot@>T2c z{C*Mp3&q9%BHb{1GZs1RG4~i=EO7K3`I5p8t(7clGIkC*7V!r2?R(xhZ-SgJpb7Sn6ifM1&#n~*L!RYHDVje3 z{L++Y(++CgMID#SLjorum>QK4ArKfWODjVTv(XYJHApE^8isd7ND`?5 z^F^w|;9Agvv7Vp1n8WCt1|W8gng^?x^(nl@W1<4C-L4k7o2U&l7d%dw=E>I{{lJ)W zrpA#kZ;>r4b%~ts)RAR*!b;F0?NpT1l~f0in<7JNo|KyS8pOYSp#0U;u>C)a22SRR z7T-06(Z??1ir*gNZmTN)281%R4=Ug_DQrSK zh&Q2UUmO9}Sw>j7U@CQ1%%0KV<*u|NQ9; z(o)>ry|}wO#T|;fySKDJfkL@?zxxYvo}AfhpP5A z)KpKq;#DL=0q9IvZ%1Qw>48mJ)Wf`cJR44=@-!tF`gRnM)9u*=q#qAL0&+?g%vd1E zJr5W&D$GlLE+tL2+pu2-5%U&HwE(9gsHG*q<}M-TvOpAi#A&(64>Rh|oU#?MdL`0= zo*3Gk4DR{n!ISYrTB+(Mqr3z>XbdDDTQ*tv#yF13Ov|{_BTJ)zziYwxcS*95P>9hYI6B4EC4{g|>$=;acp7bpY5WMp6Sp>3}msauAi5|4oA;V!uv z0MgG{g?RRUkN@T{*YVb|${J+ZN`7JE*>cvF%XkVXuwE#^fe3uglnx`%1{G)IMwazQ zN|=-AheBVq_k8hc7Am@m;)thm2dEuB7x!W`{{52m>_A5&j2T80K_7PwIY%;=Fa2EW z6ar1$#Pk1ap#^^DY-vAsR=%Z7)#1X)J52iU!GDqWH{FAJDDS*aeGTK|TLO`6cVW1) z@(fKnF{@`XguiG526za2>KHghpdD+eK~6U}C?SLk5yvCx#ov8p!PMkUyQ+fa!ihe;IH6~RK!0Yq z>1msY-*~*erl5Z_<2{w9(u46F0Yn57xGfEmf&}=}F^L9`K|pvKOk(Dif7zNVkx2!0 zR|P=}vMGfM5BcCSZ;jfkWI_Nkqn6CQ`J-onfIx7LM9-YDa#6H4Hs9L z0yhJSS|f-WSCLJx4HZbW4netD`1M(VU_6ctO3zbdGE**cp6n2bB}8o29}xnipr@+e zd#hJYRWI{ehd@lrfIp}npOo~L8Q4taYZ6kuIhZ$#4 z&1MHdvbiJ(4L}4|S>#W2j-cr&uoMzqRX?>QTr~RB0NqY2hG8;FM-@IhJZYV={l%qu zih<|PtWT?9mu_pqEyIB|%i)nAhN0~|daRHLte0rj6ZZIa&-p6rD$%WXnc?{|N%S_O zV=-+n+noQ)Zaj-Wrcl!O595*|qiO9Si#nAo(oW|tRT}hXalO<%UgJf7J>|B)g*>$o z`}pkdx)o3|trQ({0laQX!_XLZkb~?+h_Jr|k1*nUN(*O86=3cQMrlg?e}v%oPibYfSYC68iUIr(wB%!sV2ln@LhyL2$9VBQlz@N(L)~) zRD_6xD6_01O)8Uu^^I;{Ka4)nq^vF^?Dez`t4=Vy?^wy~AkppR?eFio>DS3Z9ElMC z0I;VGfOc^9+mD5#F?=WrN3_8rLl+MhgD=dUfbf8ceJ9fU9H2Q(G}KlM(uL^;Y|07< z#AbH-E?HAb9{pWLG(4Hw-$aGj1rL#xf_ZWUS`Yo)0B1u5aWgTB6=5WUbd*?>QHg?@gxSClKbK?} zeZN`IfM`u-Wb3c{zWFAQ4vSP7r(DL=>e?;usO-9{uxNq7J0P5vV-7zP*#2@$!D^lw zr)+?mO8md>dkM>$TXjCiPYR~`{@<(_-yRQ!aU2fX)Ms%$rPry!sI%`9ZLWD)|G7PJ z=m|Tu79-=CmiqfF+0s4dKWYj^ilF@1!=qscBv$~Dhm_G#VPV2$vI3c2lWFA5@(L=r z3Ib6ucs=vD5FdDTB3BU=8-LEFGBaBMe~0`SPOQUG%}I(G&e9uQ0$RBBF*hD3<8jWEPXgj-oAgNA~ecp{tGShQ!TD)D_|)^{!Y zUF#odN1Uy==rrZpOrm!!cS#W{W2sBu+<^|GqpGy{`CLvTFBUBQg{;<#X4AU#i+D{q zraS&%3Wn$-3wYngDJ~AkkLBD&jlA71hl*x6R|0c`i@fDb64z1}}|GJB^BQR;o zlQVZ-;r@#D|K0hFFa#BlR*j-9Y8Xdj43$5^C$^nya{twmTo_!?VvZh5DP>U{BnSJ4 z$kQ(?Rf8I|r++=#_3=v-2y>1e_mqvSskY^S+u|IGm6stq6)~zc$i}EGEs;i%bIr^? zzhrU|#6$ZmuqMm+7~Fcl-m5;DUKfaFC4A@b&S53wGPwKNqb~WrS&bTTQ3xFz)G0&9 zi$@(5fj$Z-LAitZvSBd;f`jtoqh#SM7^L0t)8Po$(Ubu=5+|;W!t#fNd@joR`%7^h z=s?u||E}*BEbBC#c`{#R{m+cq4%TO-cuuJDPG*Z1mUMPrWwa`bO`Dy_g8t#_q1E9= zuG~;&Z8R)pQpFt>tzg<#ew*KTPZ(BfGO{YVo7zqxgY^PH zT08aL@r`K^7H*dP_SLn3`Xrrp%U#gY6MSmq48cEMh5Mjkp;jm6ZADnb>7F)lh%bny zY`V(Q?nGJ}3<3d&^%F_X1l=+tC1$Nj5Dox`${3iX(jS8JQHeX)3TyO9?++$)K6yz5 z4XGPTwV4#D>lykEgwk-HobX!KwWrC$;|qL{pZo)qRU)r5<)Fj8NPPEcEU^@hk=#5c z2FpouPqgT~lFLV2?cf4eq>eYm`ICVSMvq&^Nkz}g#*EPWn!3w{%R>uB3JV(>o5g0O zg}A|&oZ&#+|A5gA8;wSCVT;pDo(HAm@M z2^CyT6p+cyaWD;0C_Wm0byNP$JsstSgwHXDr@4sJlm%Zml;=(<(tJ{m=ks&T7{M-{=RD7@`vj5wcvffyk}yh6_L^UxvJ z@2aBE6~UCGEO3b|t6eO(FlEGCc%XPVoH#W+)~s5CxLE@1?}yi)oCJ|_+Z;_M=0u$5 zgJv1xW@r()6TegO8HB4;N`Aydv(pKQSTIpP&T;!?@Vs_#7j3<;-a#6}tf=efmF%TQ zT!b5F`(3QNd(0B~3v+nv?xV*^>DzbJKi%`)-)x2hon7`v+4l;H#J$ptIQvC3ff7;& zi{(=PqXFNBTU)Bau5U|+=yPUfM~IU)Dz=;om#_m4wcU0cbq{GY)>$muPp}#qd29*Q zG+~sDB0f;CU_S*ZT$X!1InaCnc%;I{2n?2JcyYjC^EbKhLB`WW$k4ZhmjM4w>K3ld zSlsnL)OvU2*t68&q$EK|HIGBT=rf?8=|`3};aYB5TmB~Y#8tZZyEg{Y3TyxuT<9<=BQ% z+7PbL$vUrr2mD@$X-s#mN{9QqFy0;f<=Tywj`|SA;Ii70bc?4-Qh3Jb=m?a|A}&ox zD;%bbeXE1p7&ac|S=;{Q?d}j2y`uH4lBE|jL&H4W;iXBZqGvT*DfZVJAjJ-J8F_hs`D8IqVmj#~0uqZMZ3@OsJy<#XQG8Zv1dm0G*+M1WZ$9V%IAJ?~ zl+ZRV7BDas13qiKAn-k@)QM>t0$n&sJJ>I{wHkay%x%&FWT~sM#9)71@#=!vs zmajNKR>rSmhi`M5w~44!D@0K1tR%A)R_K)#3HwJlH~-9*3lT}4t(lJRcwOA4Ow#$t zfSm&)p;6L85fHHHtAo2^sRzt)!cVw$A~FGEIN-T()nlx#iM&MO2YYo2WNljv9l1j^ zdGcdctml4Y?l|Y6nqN8s=`eD+*zx+eRBvlFwjP$htKy*2Yn+bCCUVN@!w9&SqfAz^uPH0(-P*$NO~thi8pupC=e013jO0dtAHM%ys(L{$!jMc zhLtAl83c=}zy#3(R4gO&_(I93WJe-Q7!ATSQbCyomKPCt?Bbk1c|=G|LL|?LXDcHk z@Q*JD(Idq;8W8P&CP*v#AzjRUOdmC9(~X7{b%|1RFZtF_Y?G& zXIm0I$BTl(6!io!Kj3kK4z1TSPLyR7l_X7-lCy2~-r%jrPl`bVq{*jE0MALi@CFu| z{9jXyd{3vYsr3=+7jR+-bwqa3`N$;g3UD1(Lm7&``aQM+$&fqbG|556w5t)})}Z;_+ZUjKbUPR&)3p{@%#^x@Q)g&O^0``3*V#`L# zWBnBwo7gImjR`?ydxH+4jv|K0KP9P0v;h!!R|^`gwocP2%;T?A5be!VRgRbbw9byP zy7OTu&+sHZ+*Hh4hSbRh%NvZhYJDrL{S7hN9~L}MNP^LBbdNud8qJKa!hwU>oOKKr zSOQ@X3{QkUJTliGtfa0_$Z1wKGN^An2q+pCb1$6i{aPtu9U@%-IN>+E@`PitcfKdfGP|;BQq}Bck1)tjcAM)X#$RYSgbt(>d=n z{$<9i#*OGb%cp2lH9mDs6?ZG4%9wP~NJ{p77Ai@U&_6uoJQV!ggO)xV+(YJt66ei? z?=c`;`c3Dt$U+DO1(oXBiR#JVutrKs+p$ndIG~~gY$)p+YZvjtEN`bC%eAO`!Xwdf zZ}?inYHElNyqr2fq&Z%qE8TE9D);)q<|=1LUP~RZgSEWLp`s^J1fNDjK`Z4SbhG+e z))}``llLlq8A{nh)b&WX;-^c@GMg9g{?teZ%(&vFN2}J12!%iB0Axb`T9Z;Jn_vAe zO8OMbs$FV<>?71SY+P8;1?YsYfiCNG9&XuJB%t>UIXSNPx42E^X-=Ht5Z0{L#o1lfx$gAQrJe&fIsuf=}$ z6d4*A+$#(W?k5ZjHzrJ7od}#cN+ONLCufz<R>DEqi<<@Mb4 zVA|ow+-k4CJY7^drFi!o0DukpSs2OOF$5e`7GjCQp_Hj7lpYGCRvtYv^{fRUVCBJA z8lijZ*RV>ET3T!DfskDen43btNG0}XOB1v-C3FL++yc+X#|D*u!sYJG`AKl2Qo=9` z!6@ZH7{1;`iq^a`MLS)bg2H6ej|=F+J4xn8~g_=R}oTRM9oF7ps7 zt@SLq{^z(s86CfyA8}j1tDhn86OiHXrmd7qkyQXHROEVV`5rvysH3b)T z|A%qs@y9v}^JE_gyOQjqX)W#EYc#@E(q`X_xM?6WarFLme(K#raKbA*)Wotv<@~4v zxZsLL?crmz;^}?>*E8}L$JEwgN#}9Fmc<1n7H53^gJM>NNYhq|=y{I2=;8>7-OWH} zNpTjWCi3uvA@r-ZofNDYNHPK|z};qQkmF!QHAvaNdfZF9`_ldppKMYmbu+ZX1FV9ECxNL zE}CZgnX+K1N+4{SQLGmY7*%gvYILZ;BR1sz3?A0W3k$+VYY;9Xcb*Ub#2Sne(%TKK zLC< zJf1NjXKbu!y>g>`*a>mTNc6vqN|R!3mHl39nbMB&j2M3^v(>96Mp`&cI4N>_`JcQ& z!8j+`oclhu_)M=Dx79NPdK=`narJc|*YU<&@3R}m;E~+S)LOD}bQybm83& ztm34PwMi9$2gy=o%&x5Rn-M&8AGDRVnUE3 zF=#7Q%?^}3@zE^JY~X9sB(1=wuA_iZ49(zl?&2n7;c9I@^jK)j7wpm_2IDkDW&NsG zRg&ji0n|SjcEmZf9BCqe?lAa?*RlXwo&{9a=JygyC%fx5UL_6x&VNifkGPmy!J#^& zh`&`|VMCO<@C3xsxO1nTAj8`uzaFR$7|w5--`LlQkL=p5d*6-yk$}B!V~hk{*&Q5hHe-H}UcA!n<*uHQb%e5fla#c8+N?*gt*e{S77N^6L% zT?77mQlt@1eK0+sLEDNWE1pwSqym{+kfGWTNd6bn)sRV|;t9o=hvN*H(|}*p4@I{L zWkf%x4>!HTcXn?!vW4AVN(6NF6q>-HXA|N*aFoOu5rq#Ysim-neq=N6ni9robDFcD^ zh3OU|*T)xSL{-N<3x#7{nVm0?gZdPm?yg9dD9HA@Le>0SM9`79%MJE2k zxD{k;1!awQAC>%~BMpV^LzW3dv0BoG69rDlT@ch(GU2y|JRt}oh zrx>dBX)_N)#hbD_no%=;G2DR(tH-5|?Xr-nzGw*$8VDOtnhud}VcZoR7k-jK%<-Wg zKDbC@`AnHwdwY1w9Z^j#8ZI`8JhF62TCn(@_2?j6R2ph#P%dvkJ#UkMeU=eqIeK^> zfz@+$!Rl5_xP=5=oH?o68uf^yH(+Mg@yCdKi?90@5}T;qSw^bB*)iZk(^^7*4wIPe zGpo3yaCwfP!8!9s0FvW;&9yLw84PW`J5aaIf=^rgeUtX3r|ns9O9)Qn{I3PyuE1g+rtxICIG)26MxK+!;Hy*FGZdX4b;}J0hOG&O@HOa zXmF${vP+q~ry zkW>w(rf$uKM*O0eCJpf6=D%So`Z1?FkrbmuBH90?QDj@hR%@!%q0vs4sq>GXj>%Q1 zz2K@y_skXf-az{f%w~AMmehd4o;WPEhQa8;Jdv5XjPJk(YwgoSe_doPa`5ukP!6aB zSCTu(II)k7`ss`HBxUY?krvM~_*ykhMjJESfHLJeV3<~&;8HCXGjXmY2;}#(xvvPS z7;i7KRi}pI6h-q7N6`OtIEKGr|EkVSC0--?FZo@-@SD@bSbBbd*uO|a0wvxbsbNZZ$KNlmYD>G>+0@O3Dk4`km4}Wo>ix1mWV-+m> zs6kg}OPO$Ha*O0y^{2{%hCQ^LLw14Q*8P&Oqk^F-C?&y#!D>@skW%nCZv4@)XJD6= z)=h4?in;qm#qejUE@~J{@jKS28Cd2$Xw25yRLdlxdLtnO>zB_o=`vSX+yOVi+<&y@ zLja<`$`Tn9f293H^tQ-ICkT$ws74g?yrPV`HJp$>K3q~V2uz;#_DkTkg}bN5TiA&j z)Pe_-lS&WTI2lSV)v>^VYqpGFU=bA zc#KZVU?ywQhm*fz-$OB~eY5H&O*mKG1%7W%@x%r&h@Bu;G=|ob+V9Eyc%8mpOAIK(jm73>`-6s5yKB@MVPl2X(_vz*T z$+%oeHw!Xz;E)=aQ!h5wmR9X323}Jp4{E`Um)l+7F3Wc4b0z|CbGPIM7h_<(U^)$b zp&%wspcSjObj9Z&sAwcWnKxgJviRpJhnzuy^4i1`TWD0}U;uxjR^j&S0d-~BZ)ouF zb+{i-yL&+Pb=Gb~uGF+D-wssEuCV41_QmwuIm#g-k6UvG5=>A`v(37jUEBL9t}L1y z*J~O&4~v^%;f4n$;)L9hN(9okIrFbe#;9eLz++RHD>W&!a66}->pxjKNQU|&W!6(O zRR`x#4<0jNDE+Y}pXun*1R#VNPodCjtzWSvdB5E=!pSxT;p>y1TWD1=he!Ot_^%R< z00{TWx{KI6XCF|ax6RMQ)z<|KU^fU@tIjv@`tluLLoegCjd`&0jbZH&Ex^2h^~Lo?Usm@AA; zqA49Kb0ztJr2YFmrCgT;QiRe-AIx+|Q{({v`YGRl*aglO`8}t8z2pyVp+h)dsfY+p zabwUTn_{Bc=4z5^hWS055`5vy<=kHJRARW*{!sx*K*wROzduWSa}h@RbS39#M9N;- zIpNrsLHs-_B6y@aaU>0Mx?(pa$+M@v=~nApVb;JT?3_d_K~AThKp+1m zE;N_SYyG)ft_h@x65%Y23#I=Vc3b%pMP6T&KnzZXr#A_?Ilwna=cVOA2I9q|Vpasv zb#mZJVvbTHbIbaod#an+9WU#G&9pw0@-kX@#-b77nbjT9KV(;23~_(z6jBuB303t~ zDvg*@5K-~IbYA)rb5vv>*ReaQq1VGF&elZY8-{Kh!N{EtU?OvPr)7AKELf+61FHn- z6GZ5`@`@HVnXd<`;j8(XiRuKOkuseZ^-fuJYij&9eB-JQ?>0|)J^(ln9N(Yb*#eS) zFWvlkl>eZq{)bqW)oqp5m$NOfI9T88-nsjW6u%UA4OOgtD-xQ=!giGKC+6oqBHOfsV8FX@<4Sg+CNp5Q(F3lrRUek{DGssY4q z+NvbkZ`azu!e`Ni1}q9(08ufplWQ8>{LI!So^C^$7Xgo+F0U|gWcYBe8=8vV^y*^3 zOQG6D$dUEvZ)cX@oT$XoR}joV0H9I;XFh6<#!Lc5fj7}O)vZ*&vO)_z1fKTe7{dEA z45QizL7|wYbi!gsKVYa<|7Xvrh>WqqmMz7mNy)MTW zmsAM~KhKF`cgA>}9Fzpq-rts1c2?yMZ?Yxm*v_!(Y|0rQWy|2ZK1<;pj4||s!N?rm zFUpCnnE+R;M$B-;p}bC~83BT0al~7zP=-6ECJRzOhaoyuJqy}XWdVN=Bt#{jfgX85 zbjb-NX-nY^x_+l~ekt)B24q??0eU1>Zc>mV0`v4KY4{^74!~CjhS`K`Z0=Y z&YNvi6N&|O5ZiDl`Vq#V1ar(lh9TZok92gSd|(_pYm!w}E&gvB4Byqb1J1BWLU{lD z3LV+LWB!__&H=2~&gZ1kpn8Hw=Axe}VirrQMaw051z!qGDixv5Vo_CGsfCMHnMKt) zJ#`$@HW4|6Mzy$s;w|Cj2u|R@D2cW8oG5{c{WJ{M`>w`$pF-sG^ z03lZU9RJ~sOccDT3iOwPQsxX;|A>$7%Vw__|B^RJQ8#{Z?xK!`Qz_!_923F(Juh9| z*WEqUrNtzKVbQ5*IAZFxsCd6O`dkBjAF>ep9w9a&>X@y_iQcT(GfOIk3e=)1l zzXK6YRdg4TWwJj__+49{IjK=|=_%KEpRbl&+K0w(%OJo^BeXMOAZ@J4Vbnm^5MZwi zwCPaR#4KSFt;mI-mAFI?U$O1L)f^cx;X1_$#m;o6w!3buuOj=oT7(iO^asmS@|K5` z{?zHp_g;Un(QAvd1#>i8%%+(ui%)7b_9IUH-I2HT<9c)jL;T;-ZSSO?Pe(aw3FHb* znVMFC0Q%lYkJm34xf{Uzq<=w)x<16nI#Eh?y4O z|D9;MR^-#gn$hCBW$DL#pH*kKis+z&MU*5=`x|f1n2j2PQtWM<{2rt}I0!T8U*f4C?a^@DKhtt_sXrmiVs{ zegz_IsVpyIL&rZ?`dyoc$Efl#nJ9~*+n<0P?IYq|D`7MQ<>p%vI_*P=gC+WkeeG5g zY-!4eeUbErv<%d6hd%5UtUtRsBb}1%e-%eJ^+)$|d~iY6MBheSPrK|k4jC`)cK>`$ zoVrZYqkH|@8G@ba(Ot_38_Fl^Wn2je_J?N9&5eEwFGvg;C=eRgzf_Mh0{|HQ5Jm%d zf0bb%bJ**ul6FZg9Me5SRTGe~NPcj6Ze~i+^r%x}t-xDmKUs8gsF|t_|J2b&@GaEG zr~$>Bk(8Yc4w7r#|332(OE*WN)@h!B80QH8bnSz|K>ZmXMT`K2dP%|Q&L5mL?|km6 zrl3Fs8O=as*zclw-_S^tHX#R}GUDQ*D^la(=vPjA1w$e+v`K_N+kz}8msALKwVD1f z_tVkellemArnQV%*J^68{NA{}o~h$@p~5dJX%C$&<4fzW%iz~IMR&gT$tQ0x{rplC ze@XVZ%ljpMx~X0J;i%|BXs;vOme&e9n2=0A3IOMP3r7H9t)#A;RoOU@nCrl<5}`X1 zvCsdke*cZ~9cm(??B;bAqrDKLV(gWPI-obWmJ+MVIoR+NA6b^$tT=$zp%daoAb{c+ zR{#62?w328OWOei|IL7`zaG76gMq&!%6ZSj-$YMZmg>KIOz%oZIhR~0^j}XT(vv3s zKPEskr1cz8DY|^39J&O)M$7G?$QoH7pr!V8JXF1oE)J zKm;p8{Jyxxh{1URJo6HfnUyc*2Qh*PJXYTC?L`vu)YmTpe3>F|5p& zznjBN%Yj0O<**pG`Ky;ea5!XNeopri6UtT`Nq;FLM+z(9;C5a#+1dyx^VJN!!k4xL zf&oWcs!@=x5MEq~U?A^|lE`s{T@y)RY#{o8Vc$2myQ^W7YHT+fv=Ro41KAQC2&&xT z=x>+l}|rSIa|TNaN6iL z!Sjj4mAmMgQqAt!Tq$70*gfvfrw*R@vX&)Qfh=y{9orv-@lfIM4R4!4+-0^w<=lee zFH}SDaG#_yzdJlVXwVS1s%QMlJitnP)*o22CfvfIgwg1glV=d^FB)Z{ncE6LM=AC! z=Z}OJd(6o#r5Br=2`o_a@KU6#IQdUH5(Wziqm+>!^5x;<9XukD?!HcV){s4M`~J;1 zq!tNDXIDmthkdWljR}6Gm$rYQ$VmHJTxG)a1t3o#fU}~?nrR3=#0cI@z}h_AsAgf-p`CSALQ9nfEz4{>aTZ6D zLP4(?>1W-N|54>80_hzK(>sN<@WdmLk5RMdm8;n|(0Kel+PtV9upj-?&qq~u(4@y_<8lOKA zGAcW?ECziw(mCzQW-za9&uj?^EjB!w^jAJK9Hp^6*!}q6kznxq@kw<`R9`>KqOCVP zZ78|p61@H~ibEPpYjDu?Www0T7#tYfbX>6{!RcL}g^MClB%_{e06^Z_KS1}i?ZK(6 zu#cv84?e_*UsNi$_su|E^~14A@`Eg7cgat{*y^J9={q|f9wYbuUFhle z)pk+p56|;4;UG!gP`uRD{B|(11R$n;{{i66k1}MShC`*>OVO{GF+3^pKCQj(Q!}7z zUTO7k=@`@||2e3l3&%{TSMRDe?fLZa?GgUNB-b=ek!LNfe=YVQQduq!W>IS5Lirf1 z5?~hYh?+_(j;wr>9~G*4%?|_AYv1W8*ZA$%m$0;kk~(eqaU7N++?G=%7cZp_HQ(S* z&o;4n0|H^nDYeML(=pqeI~$O{ydNzmIxsqwc_+7=k)D(SB^F0N`^*~+&00{!@?TGZ zgpVxo94mkt#3f~+$$`+ zOEN54Mise(Dys*7!7cnDRq06Cm5B@EmnJ@~sg$Op*ugCCM?T>#k8O`vbivAGfdbF3 zS|7AwPX=$_#{k!19`c3;?%SJ<6RJMpTw8D^Z0(CWzcW*Jpa`o({Y-_L4%MZ41T&#g zd?COiaTg}ai^9~59IQB5`jzLKx<3X2XCIbG0ud0#u~Um>xp^X7+%#)-2-Q8QIRw66 zZhyniE8+Ee+wA*cuZAXHh0&ir4uGYxbOf0v;G^LnX`rAGGnY!hO>g1C*|l42lqXM; z0%#F=MdgSqNTtL&y~v{2@E<-RjWb4&#iQ=!5!5T7rOB&q58c9pSIG;#Tj=>}ppsEx`jm6z zIzQWs0PuvR`R?%dY%jQ0M&r;uGmFptfug>T zOr^P|{AJ>ef^Jl19#`Y%;X_WgtupL7_=~HQ5;D}HtVuaL*PefCTX7D=MtjaZRi)=H zMB3miBNxD61-I>1)gn?Qb-aIw5-mlIT9P2OK|m%5f}8J0bY^@ss4G1jphk;B9z~6E zE|6u%Df_$<^R$*`#!syppz+nxYbW*f4&83kb9%VS?sf3l80|w2ayg$)s8uB{8tIaI z97N7QAlm_hC@zM*z$~hi1KOr>8~4$U zARK*JUp)u_Abd2HC7qAJ5)9?8XjrIh+K$tiDkQWdEVZcwMb8)i;a?#H!G zoJ-msAVDsbhIT5`DmR=dq(ZXu!2E8MY(?O+Uy?9-zhoGOCt}#>ggFpVG)9h+2wyV7oru2h;mZmAvYOG9#vU$msK!QhJNxw4bB>0CZL2=&Q2U+3>`LJPPYO3w<^nGD!kfHz zcAp>H1LsD7%7-bfTwq3ijAT@2bg>GuW2t~AXYa2c)URpoSYHlMh7E&TYY-Vgu%nGo zcMIV@;|o3$G}Af^iXjAh!^<-mwg*|Z4+m32A(5?RhB0y8z+jqdZ}~rNw@PiArOP?7 zsHQ^DxVw7&mqwpTj|EmsWABB3zh3i;eG}l+PtU6fKM^LNr;eKnVaJstdVkh&~V?fu=B;m2zas#|@jv2d}$F7bL71 z6YZ_enh@ng^=SRvP*TkM*t@T$)5tHT&{RC>_`dcJ^*ZK2yY1w2J~aVjMKv0h?b8Bp zmGG$fv=&Gi-4c^HL}gK~%=4<$*-3+y*@NH!Y~>#q2(O?z35#cNC(&C2(|h_+3S(h?6)P(V4P05)z|K$Zz>j(W{YA2i&JWxAMP07xBp*Q@w2{cj zR^Iu=K#-AN`=t2*IlWm~bWoVeVeFS1+&g=y9s8;^?DA+-h}wi zrU4rV^InG`{+atdK}3{VP;hhlBw)b0;t4Qb>m|2;vETDd{UrXeYxh_4AD05Nf&Z}Q z3K3CPdHIr+V$!iPddAFp3~$~DX8noBG(dOh6;4uuMAu9yk`$8LQq1zlH|x8%0~glI zYu!%sjlk^udDPX5cSY^7;b^N+-viaj^$P)&*qdIWLZJiJ#dK`6O zDvATGiyEFv^F)YDqRpTgbSIyNs}Z z;Kl#?dpo0ILBPo7czn4=X41DR9eLydheg{AvzyeN@yr9(P)URxCr-pzW5#V{{ZI!W(BmTquq@3L3Pk7U;GJzJ2CtAB=KP|};g+x`+e8cg%DiPWTi-NXchpjI*E{ZllR1v%agte*d{ zXA9A4L{ocFfuGsu+@aQtVG)mnPu)pmnQ1nU**+rc>Zld3!YE5U#vK?OZdD}z6>2am z6kIGm>o1@aRf!&Zl?cg`ai6+8zZ~d)bG7J^`m5yZ67U8y6RstT->gg`3^E)|VXcxp z_(UFkiLD&06GyVm%kvm#tSV};-)#z{E&|!;3&TV-CLJWbNXIAyyrTpCnp=^#;RUSH z>t7K7DCnX!Nv!=q8Vo@b!0bLXT*}darna3KT@6`b^fA(p`=5>TKgx^kMmQ8ZXF!b_2zIVl6Wn1>yuDiJMquM#B z$4ZpgKB!hBWb8!*FcYtXXKfJ;YNr#Y9VZgfY#f>u%~?$O@TsEiKsfIA=4G-%bu^ZG zS-1m9{lE~sFkHzK3+6HkLS(bkNCkcZ9e-maVJ_i4pIOQs05ZD3 zP@E4K9II9-4jq^3W}Iy8+gqUzHh%=uoQYwa9Kf$2?%w;vbo*<0d85DIQG+p1%}nvm z=KlN}o3Lw{iHz$ek9~<5@4b`${r09lDOu!tu?{NG;FD>O!3^e0go!^%9)5HLi?)=Y za(XemS!6GMfDp^E(2iuYI26?j#DBFBR;0;npvj&If5Q8-|d|B*%%=$~?msMBB=T8-QV4e35ca>05? zGQ-oNuBj!Cj{ufsZR--p#|_JCujuW>>Ju9WmI*p{+Im6MyturPLix%az5}4_^Omg| z)oZMGhJ#)YKcj0CBslf@jmt1b{_BRhP#`?4!-IpII?7506*8MmWvff+$lzqaRDN=t ztR!J~bz~<^Hv)6`#Gx$(s>E4ddx?d^R|ZQ-=C&Gi%pvHLLH1e7%viGDt54Q$JW38J z8!aj!cYCfe6mft1J3W3XFQl)hF@auh^he2QrX<|e{0rH@6hO7h6ex^JbIB~EeZl6BKh861lI() z8z3~88$JJ+k^vRJAf0JQ;XT?4uLjEFip8F$1($l{uejhO+Hpbp;}4b&vYZlx%@$!= z?Z}IvoqUXC1rK%(#)EMO`;nUG_6iqqjcG?$lhsU|4;SySGp_5-Xv+;d=dwg^B6IeC zKicOMx3gh}Zrn0_y?RP$*FIi)*qSlAZm-$hT>f#F?3%SM1qOi2{fAAhWocsRd31W) zQcaATFR#T&EIosfq50HhR6!;8WIVP}lK4%Vs1bDb_ciL_mne|h-#bZZ7waeUXOvkE zKTU1}bW|&rnJsuL(in6rlk1;1fHj8sCS~ag(ehZbo|Ac8;oEcO!4gn~naQPo%>taR0nJhiKv7~vl0@Yg z!1`lBq^B+UpmbNYP9sN3had=9383nAFQcrFC>Wc4!YocF9ceTd&6Q;={*H5~Q>*1u zReFB>LClx(=^2$Nd$Sm_jNfu<-U3|g?f2~wa%~D^XbG}d{D*kB_4LjEtGLxj z#23A#cWV5Qz{%_g>&RvuJ`+VJtMBLEt1kIMu{?nRzZW|-b9Y{Dy`JiH3OOP@x<%t3 z6@-kk6s1D}Z~%JeL!i-f#hh{zv`V=$e!yUnZB02j9S|Uo+rCeDLdmp`NTpdK*kC*w z+;GUzm4LN8X4)=^xB|)f(n_WOlx>1p-V{SfC9HWx)mxBobNykjR6UP2_M_2465a}L zRjgYHEt6YdXhTEboru8=Di8pl^J$7 zu*3FB$I*SHW;4dfxgNG%8ARGAp-4S_J>cK7;Iof9dN_8{p$A&#Eyle!5WStwzgsM1 zQ}jGOk9=;!VF=HT#>{!2>S#bj3xFMgD7t^=I_VOAA~kda5PZWjS2gOge_MW#ZmKdV z5xlO3$PhAW*ZKa8Q+W)JgJ6n6R)YS+1 zVxBAlzv^jhUgxuD{9#P9|BL=@v+^AN&#P4H^NTs@atzKpDra7kRg>C~`QKtT0_FLmMv9btjzrlNR?L#HaYT{Ct(3BX_FOBRIxLbLq+2?j||vm#<$F4R;R?l`1N9_hjY%yuIbrlVbcIM_0iX z*Rli`celme7I!DOySp#$8Z5X5cMl%i-QC>-L4tdL1P}1`zVi#_J5$p=(_Pi2@@Q6d z^38zl{J8U($Ww$Zb^yd6gf6q@YocDJ zR@hy^^~@)#Z#GFkBm0U=OQf(lA7Ymgp9N<*P<8wHBIOHd*Xi%{BDs3N35{fu!+Ua- z4XL7`T=t;9?>O;$hMD^s<>@n(M~;!!m(AKya(kzku@iuyqOe%(LL=SLL0V^&Z5^?~ zJOH${kJXmvvFE7RWDTIGpg|0t^ct(|fHjWDf&c7fD;iw|58t9X&w=JlRpwl+0eGUb zoPdu6v-RUIOgl4&@_y4<204P0U88QvV2U@4{%o?Af6E$d5ll$UiuK1CO3=krxiu>( zZo=n}qd>(h_T&@74SiLkr7`bs1pTkC+mAjzua3L#&W8z5{&5}r)NtQl=r>uw6ba)bLRX)`2)o!@L?2_H?gsOX}Gqj-pl_h zjIcC^|HU}zE>D@NSo2d~96VDM$DWO%>&hyga1_#-e=ate_7k5G)OnfFhNIxxM_+ca zOqb@Gi!~EMBcb+16p}(F1wo~?UiWXszK%4%iQwzv>IzUP5D@Xwq`Z8T(# zE#&-l2Kh~@l?&`2uaH1jz#&Gx4LQb?;LW?u4&x4>9Yh#ggi77Xuf(QSYI9O*+&GCR z{CZRnQzPq~Uq-w1y4P;~I3?4wRC3f`?ieS4Und>n7E1ZNQ3P;Xx-|`YTWf7zNpIYq zp~`1CoW<}WnFc%31E~^NcAvru8+9{SB+Mk2citZj!ON}a*)BM$Crk1RJ7Med&aaT}#<$U) z@K=Ku<*=^oH6ZulY12^F-fg!{KPDj`on{6iYd?S zB#>YvKQq(DU{VAaOd{eu|Gq4wE!A^Se@mme&<4OR_wJL%m6gyum=7>Rg(4P}nW1LO zI#FtL(iO^)jK-^0Y2hc7#@_1i>&L@4%*rg0=-%By)I!)bPdS7|tdiK+L>X#7&$<1j zuk$THG0`W76^}C#?opd8e}@UOFmn)*29XBa_&RP@zo4)Te_3YD_K(6#mjLmt9lmy< zNX-ng1}@x=?v0rd1K__FKw~}Wr{Y3~43%Ip<6^PMM{o}Xj!PmE${5BkRXN>NgeFl* z6Pcv5#uJ`)-v(q({3(S3l)0*ZPiV8-`RX>YGJWI90}6LL9%<^f76g+z6HtF77tfT7 z;L?#M;!)lGIy*!Yni0Xd_@3=y?N{MPyzkjB7# z3z%a?T0vpiPvqUyC?6XwVWIU0+cyun25BDo{<4bz)XwqGD~OYA%3JLsqcL)zty8;f z++XJZ<9WR+7zW?<&xn7#?gySJn9Y-Mkt6vr89O<=?3%>r-~>74-?leDo&F_6{Ld0u zY7*Rk>`~u%KnAy3Z^o4G)Hr?{`wsnAyiGgBG8Qjtb1A zQi{S})Xy@<{4Rdz4bjb0|MeXajK6dIM4w(m@tp&Yno}7eY^AQ%b(29qB54LP377=L z2uz~RP4-wTbRC<168+9#rYMh}{74NBTMa<*D! zVD$QDad%oAVmWqaMhs(*^!O|TyK>KNEbaoG^2ikzytt=c!|b`5YQn%go|!vo0NoH| zDP_MAkB_Fsv0LHs&AH1YD1eOEj$ru2V52Bf2HN_4TO@I0MOwi~gHzBbesGg1r5^i; zeA**2r<3N-`tZitqeYcbqUELU;U4`OcFS~=ZT+!W%KKpWXGxc2?5g-q&=p8Y7u;sp zDRa@Q@m#B-d1O_+IS-Po3*fJVBtt}1Hq3M&L5jMv&$_Dw8 zQRX_QY3U1H%+F2&8yuAPS|FXT(8HTT_01@^5C^Bb(a>sQCC#tmFcM3PIM=V1>)8Uo zYaA!0yS_DUJBAvn6!;bVi>;K#3>MSSFdQBlfr*k?h=AUQ=k7(o7rSfYf{%7f==~3I z`{7m=>MP4k(iI8z$Wh?a@9Ia=no5oM`|O}|#tf=e6hM>Kfv?)BP7!CVKr$$|R2$D@ zpyMY4ZAYP1SvIKt>74WR#(sd4{BP}!3HF;!k^1#w!d2`baSzI*4gCRHJtk4@&bSeJ z%rU%29CORgrwaTc?%e9o)VN1tB$IA1=RBKp_+7vJ~)GONo|j(g}( zYSMeirwDv&10SjW&dD0$|{l6Mrm}+Qqg|?(3r19GR^}2fFXqm24ad>sv5ONOdSbD z#XMZyvY;sy%>wzR*(q|bsX)H%Z+M>Cb(;*e+oRZwu6nnB=;Exr+r^P4?CM^v$fT7X ze`2=9-+rs75CcGU`}m7FkVNOm1w$K~jj?rE%|pXPGiJLG361?Gn9_w~6uX6yg76FR z6nRAE^jfA%D+NdFM60@5b&tRR-Ext2<>zg7`}UcjS5#8$I*jy2jhJK9Q7cSLEYd&; z*NM6JNW&z>9}6%4dWJLBzHYmeGJj+>c(i4Azm&Jn{QUg-%KfP_!oIIw4)4F~Id1O{ z?sNMAFcY1v)*_{35fq69E+y@Y)Cf}$e_j5$`bk-$RVA_RAD}Zvy4=)9BsDj)h3bD< z^*R{#pPpu}5+9K_66iPhR75>qQCF#S^_+|E?!?tmsO`IJGgsd2N$p6spT<} z;N%nf`yCuJKMnorYRDB>%f~lokN7OE=&j^w#@8l z3TypGvMOrBdm@l`& z?VMwVLjqYF!H^$`1o{GJzXM%&K_HCMf|7v0(2~2 z)%7-OvO&6o?X)l5^9wAnK-M^YdMGnAZsA7x6U(hJQ&jowNj2$ z!e;hHK4WLr1ORwO_SL|Iglt?%;v-bMS%^?BKg1Z!mQk`PD5wC_qKsM5*dZkj3k`Y? z;>?`s)!FP}`US03P$3bz${Fy?I!>{$i$-(-B88U(J7JNsiD}?kxjiKearB;=@?28os+`XKn7- zX;P8$P-G#B9}f<{btsZkCfp}0*a~Vh&}!D>2}V^x_mG26nIiAx(^_3OcB7uddrUcsx1CI_$-??W7d! z4ww>yw4_w)3(F(m{xg!4BI?1Qnk=%u8&jm z474rpCoNZgM8?ih3bXvqB5=U;sZi6(Y+anpk0VNR*!y|2u`6SFtyXpnGh6iQvaIgj7EuL9B?c${dj9X_7%D^bXUmukoQyzLrIbH^(EdZ* z3A}Wpg=V)ZuVD69B3GMW?@Ad&f-?RkkgUL~r zuTp`F!Z!m4_8F1fHPc5f4OiSQ%t8Ph-zQAF4K+2!T*PpuvOFFH@J&2^n?Y5Rr%Q!4 z!|fHd5ZzPFKU)5@ghj3`b*MA8}V2biWa76|} zq8C)!JJXy-*uZB=coH-*@emN4hD~CV_~cgDm$DS~fr+rNiYsyN@CftTzsHt0(WvFT z`Q0GSa(#w<`bmf)j(Tl;Ink6n+T}5T@Z*zC!*8ibZVMRlcYiP&(#M@NtQ7D`x4;T~ zEYB%rjGt0-Kz>Iq@Ey5@eT`G5OYLT9Xtjx<5X)!STB5v?B4_S4R#EPTi&8h4`F-?Zg`Z(Buf{4To0vuGr-jLV`u-519X=P6;WgCx}u$(hwFBMq$ZN&bIy4zH}HRm zTMU)D)>_qMmLZB_>dFUOR%_kIXk0cD*`rlL`jExx^mg4LAzh6WvRLwbmPQ2=a^fS2 zIuUD11nfp0leHEdw`^BsqbVF+qzy^{+}LkCA)zBMTCOzgi;B=uTB68t{i=RW@*6GU zX&}1Cl+oLev{}$sC+5G-GHNSfFbeX`H71y~V`iW-*>GDl9{a^az$J=%{JGbxtbjhhUu~VV~ z01_%sh~gC7l7zwBWg~i0&;)u})L-mYb!6PFeue*0(_b6fz-J~U3MvEdCLYMLDtQ}3 ztZ%q!$?m4)wGG}QR+3u@%m%d^D3j=Gv4&fIDOx2G4bJ@MVaTsG9IIAa5eu`ZN0Bfz z@VKkz8MlE9Q>W)GS&q7Yzt4h58{#ON`52Op&l(_=Jendec4`b9F~{eI0+>T$9&Gqq z5oVUVEF-u~1&D=2P#vToyMQ zcbKD$$7pNX+%@B$wxrvn8>S?bp!A8y{pdFU`jTYObweDPJ|ew>o;dB+j!*gxVxr4C zdQ(JMve)|Tk80rvu@Nxc!bCDj#M1O!kl3~y@W7Pm1^`#t}RDf}s;+t?;8MP5z zqP&SYn0VSPdDi{Eea(;@|QNy8I zhBt$jj#d_@L^2;n-KGxw5ztY^Jv<9?p0Y4y$d7vdhk}BWY_EXJB41AGLwe32__OUR ze79~SV2_usXhKwGIbA8;S~M?PIhr)L=#=;%Sav&05Ca$@uI&L6;?+SB+la{fg6S|O zttFUj3Lz+%8UoFE=vB6t#JM=^ySJ`}wK4j}`F)Nu`P5HQwFVWwLYe~r02SZco~@m$ zTv2!$od2!x)zq#d(PvY*iH<7f>9}Sup9?hMT+Ekr&_^n>5zZx#nct z5``7;Q+p?rCwm>HfBjv^yd0XS=HH(np5h<^9V7Oak8iJ$>G76bKhWiAt&s)57U!5| zvrGLJ%93Z)ly{E%w+#QS07f`qqLjl-*ShPM8aj+pCM@i}*;*}{a0_D=C+BD0hMAfX z=5ER1zA5sUa%xxKIxQ4#wIpA4@93A*C;~kcJdN0Gp@r!QxN6Gg&>y=Us(7P)So*#XA@GHdLnJ(5v>A=Uu+Q-;}F&)^6v36E+{~>M_ zR%%O2dzncF6sCwg4?g{bo1dv((@SK*$z0W%S=6eKUo2WKph%8H+c>PHr!^unk&+Ul z-SMWi79j--qw1$FVbC#k`M_#5;=uglM4c7gUcy+QOnx7rNbw!56(3`m(Uay}?><2< z7uLpJrb6i`uPw~sFP!&mjYLkEZxlJZG}Tmu;1tI1hmVNy1W~WPeJV7;V~aqMUsa9m zK~|$mO0)@rB$Ej;i+`yM;(W5zUl=BMS$2vv)`C(lly0bVWF;&raUrn{*`q@S9#%G_ zgFT7CvjMvh6MhyZ%|aywM>ft8L-m4yN2&W^^Ups`AA;szbJW=5=;%MSeVR3Nj!>dwOBUqv z`vljC@fbO<`EN^X?_)KV&g`2pfb8a8JBt|EL-THUsP|em+~w&p9;cGH4U3aPNT`r= z0Z=Glh1JYJrL@o6t6qi@t5m0Sq!fk?pVe$n>Y6);#iWN(T<-jL37nt_%4P7PT}&9j z$rJl}5;1F1UU8qT(785i+adRJQc@Nd25$s0uD(9=Pbv2A;r;fFvJ3x0gXmz*)NNN=sD39Ghr-i%?Q={Z4#rA&3|Wb1(hx}kc=)1$o>=V4S*NrY z&^h7o6qY~XB<#>YgwiRu)g&nBBZ{Ggt~!`H(a=Hry64PT0me!u(oG?mY3}#X;_h0v zErq-}+J)BR;3_AcDY`%{)b9&0Gsj7sf-TV6FBi>7{r8%Hx)~1Q=7?@n#vo;_ z)SjJ+b=o+W)KwC1z5oluBv=|$Kw7`j3q?BkhgD4I1klr#W`rtu^+HEyb@Sgys+-$l z%;a$bhE(BxEdqrv&ng+(rD&A?Y9rm{s^8C*Y1Y%aqUVtKFN*c=kL?(=;ww8=7P`}yc)o8kNEt&gZWlBruz&dg?bw1tIj;(m z(M$TDCDK;-$c2guULf=HhgNKLuzHKiKYzv^Zhi@DyTlk}1mz^gjlCP_`-hjW++ zQ(?Qa)l^AtYjzAMl)h`7Xma}thK6sg;$svyRb}BV}bpHt}Z-M5lmqjT#~?{s;%Dn zofq#Bw8m|w>S9CLKcDb!z~^#BVzH8tzhr|HM(tw6c%zJpOwf* z1wZKY)g}!xm0&pdy-%AJck-HC?e}w_YjAzHYu?e3EB|~XZE`H@k`{@>7Uma7vWc!nkyuB8Y9FTPid*n$ps< z%D%|0dSdqVAfGY1P3!)|kpej;Xaf828u0p1*NJpBs8}3m6vm^mi-Zzho#{ua+`aS} z$C$#vpH)b#FQ(gEY>x87(s=XC%LLU$PIyRHDUD-6ZYo zQ(N6rp-u=X0shMh;#>YhvaMU*+R^YCHII1g6#!Vy-=R>v_^y+{DJ9sZ&~kfD+H8r& z3QYctU{Fh8QzNdI$}csoCL}AasV$O#o1j&HYCVVRrp;uhrnkzv0o*zRcM1BY$shKH z9Q;E=GV<~=><7wQyoC&s0eJC7D-g&#B#U})qk`SVgyM>lN5_AP3M#w(Ads;VfBFw` z)4|fjmfAwhG9a(W&0Z^;VO;$%t;?FtbM)`_t&j@v)0{@GNaHVrLqv6@qrlW{B`*Pz z*vpNwWt0A=5QJSJKlN^!Au}rgJWrrSh2kZwkWrB03_RvBiy&rN8<8yo{Rv{=(K3;I z^o)qi4;yHbdA9Rz@WzZ`rIVF;-Oo2S%$GyfYMn~9W}j@X1g}hH-m8$+kKOi!v3SI+ zf~PvC&o+AH=&2zGD)?L9vT~(-W0#{015vtUNZp#^LoPnNG`345m0}*RS25)vj2Y)g ztMRxMDOh=MWCsn0N%`s0$nY|Onk_GbgxJm3Zr-6psOdxjqXvAqu`dPo3$_$C@ssWF zG$k+W&EL@~bvd+YW|lBn*O>96=juq*#UrF>xw*3}*h z0ZVdr-B3r*!Hj4>0a>tJ&)Nnn?`FYyLa%rza^pa%p#E2F_Xxe)>wKl}rCMK3n8mFx z&I})tN$HV$l%~|wJcW&UXjgL>mR5rKFyKrUZO!cgu-!iF8v|6R*(I*9K$;4SyfPq{O>g#y;Hq|&3iPrKi#dD)e+&hE zsIMjrggOg<>i-yh>3^5w`DULSU=}vQYpxC3_#3vR<>d3}CtdYdVy$l&6Z@JRJg(EA*_nx$-c)GI8g8U{N{BTD!EH+GbD%;D^DWLNWWCTp zQ*9)$7xDMJ!Y5*+x!18E#O_M0UDuLBv)SXKN{maLcN5FTtG?UlL;U;*jykci$NPld z-GlD@ij>b5KMvk+J5wicq_@N{cc3I(lJ4&1>YH?#0?QA=p%}Q|?!Wi`zzd$eHs%4yv33Q+>AN{#9B@}8b z#uU{&)?$&Fn$h{9Oe94o5J82*`eTCc;3M1r3twAm-4XQ_es#1$iRkm!V}qi_jYAfO zM!!*HZlSL!3aN`Ic72TB{q_+Iw-einzT+@@V7p-j0~mMCU;=nC%)~RsFmcTi*cmy( zM%sbrPzpq>!;YYE+_$W<4Bx}Z+%@j-^|SuLIOt0CH7K1PUKGW!bK`I~UXLSoR=Ee; ze&*a#_{ruN#Y0E1X$SHr^cHFrQ(xnQFF=Z=lppt>x@1ztd2Q9FVpL8@Jf%kdL);>) zRj;x3G72v!88tTEoS_-FGF4NlXKf#!t%@-NxhyAoFM^Bw>&$r2>$ZEm6DJ4%g!s{P zUMjVr;Xxp#Nv%+P#Ru`RsKfK=ko!=$z%`zfT(GTj2yhIRAv;52Q8{kV9I0Z4kiVtM zqRVoD29icmLRd*d{F za+fz^OAjkGt`c3pU(rGBlBDXaKpPNsN~!vfQ*o+2ah0#`GrHOD^_ryQ_Tfm@Pt!ay zBLk5AmEVChb!J0RB6*Wz?YH@q!C?Hj$icl3EXHuop}*44E#DzVN7U`cP5siZp|l3p zh&#VivD`Hl3FBWCtzVn;)r#ZoHIJDXi=XS^Q9+#=- zL~^2mhJ6CC+aCv(OuNF@c8bg4QotQ#98=f)JXI4i(byEoF9 zk2j&S6p-~1c^pvL#=8zn>6z~j>qc|96%h!@x>K$ERaGwE+aFGKe}JCPs%7?j*of!S zED2*eX9%+~`m>^jfLOOv3*>3Z(J!vON6gr&m-+Nc$}W{Kju~M_*O~ljZ~Txn=z|&+ zZBnvXf_YRe>X}i5m86F8t7#$)?mBtedOJ@#JfK-vu5ccplkLY+j z=)ZCxWFz6j0baRt(xprJv6iQnsJEa_6_I#kcxG(b+w@*Z(bJIqA~MeA;aHTGX7a&P zw>L1C9L_M?@_9Y;=Is5sX#X8KsSnk)^Ks=<&WhanggyOv#%IC6%7{^fdHw$oHwO=f zHe7XpWYzFDdoSH~TdIr3l)}Duxmj zKg;f4F_QZcmXnk5u&%X+KHJR9>UJWCwy+`8If3CFsE79f2u;V90`OkN(iD1MV6qYs zjLS6-3adCG#4IcW>Atm0E2?Vr9rL)Twwu$ve4+XDaq#gGMAgzz5ah{0Lm^Hy{AVU@ zFx%gCcBa|f=wsI7l3};TgOMAA+?`&Hx2kYwV^k6@L-I0HRSwxgD1`?j4>|i-WD)%6 zEK)Dyj#2nv7>Br7bqu16O3uaOR2o<;oa#s5&(dDDpKv^CY5UJeJgQ`o5)NUVbx1}h zP&IcrQaz8GjM`jX;+y72^7Xqxcy&%+N>Q`>CtZe!ieEWRBAj6a<$}{}q6i}q;_6q* zZG33uHLE#2yUVhg7;#G^qVl(;CKMFRsiI~mG)i)9^dsOFlDeH3S|JF7Y8O=nO-1Fz z-jX1$e=Qfi8`AtG8E2WKp`oG1QI3RG7Zq__$WFPF7AP-t+V2*6m>g_H5&x~i8oE&| zcA1m=k>A*bH%{ml?bAVa@|fHvkbq=88-0y5;Y-o(y80Wk8;*9Fbid;5x|dL~VzQU% zxM{m7-N)rA1Ap5&lcw08E_nD3H9hQlM+qVr*pM(~OgKjNX_@GhXjD$~(fZR00n3zV z2X0TrtYI`NTf2N%2@X^oNX2-9Nn#}pg+Z)ZdfZn(ha_E2d775RjilK5_?aZr>Hdn3 z@fROSfRJ~t8a`Q(ZVG~a8$MK3X2!;rm6@K% zpF|T5V~kPBy6;0-kx{OAW*nq5#*h?`EH&K-rpdBi3FYR##$(eIlv@})%XNKe7gR_t zL_`E2rd&^}Jj}^TAd~6EQXpALCFI>@!)S8BX$MS*XZy{H7iuErq+MJ4>FHs&6p9Up zUz=LuEtqOZnmUjg!iUSG_g!uMZogn{_+=U^6-InPKSTcNs9FRi5ONYF%f*w41Wt3k zrZdUTR}*NG`jVw3+to&9Rm{|5xFjVa(lWBxE}+HXTz|k)#ZsW2v;C2>TQ}xOQuv=R z3O4UgxotFPJ~|#107T2|EFvh&r5rgY>QT`oC=JkO(vpyZQU-y7Ya4#ERNo)5&HnyY zk}2!aYv{ovqC6PDe}IFz?#rgoR1@y=cu%q1=RgrAO)X6oE{!Q-x}P;&;Qj(%Wgj#8EtDrT^h9pY1h*1dx@0ZLN?BH1PvNtR{dsr3%7 zZEb~(l^#Z_v%tosb0*CS7s#KiW%YR8Uy7Im(n@Q+g^7F!pgq7_S?Ic0U!*g>4ARoz>6rV60{~%`s$j#c$(x`slu!{Kp-!ngdA9 z7_B+5NxnoY#pZ)0M{(WaHI>=@&fY;)t!WvnJr*{p9T}I=WhaM+o9Gk+WC?TpBi1AW ztT!==|1d*l!i2>F#DbvO!j2B1#gKaUsjH(Sbs7xD3K>h)Bp<0z;_-AW#WLMB?WyVf zjC7GCot5sye$aK2tDV{fXs{}Bups-lI3}&z5(-x!=s6JcS8d5XkM^8BZZ9rr>)wyL=9k2j@wU2@^B18xFxR-GG*MzwMt)?f(W zh%)2oh#bY(bQ6A*4#@PAc9c`-!=p z{e43RrQD6{_^jB=&poABWX>Vx>C`L3G`-eMnY59s%x?0La9Z0wuB(L1r{e!?rKNB% zp4sw$^|(w&5HfcAeCMp^D6qOj8v|5)Eaapo|@*Z zZ#RP2kghcGSh}=zizEg7QqkxXgQUes{5li2+4e^2H9yZf4}4!0~<3tGAk zjyhM#mEy(EC5zJilPE!nE@izt!+nxMDPwF^vnBh_N$0nm;W(2tu#X;`;qJRWQ_H`b zaq1qf-x_Ls9ltAbw1q>~NxNIhDNZRCt5-uoh!|PP0$)5$xR~ekUB%1H<|`DtR~h_3 z3X()m6b;@J0RrDnEUb5SE4Ns*y`2*tnN^tF-)^L`HnyYZjX!}7dwlaZRNQw;CzugG zcS>H{dRL#f5(G;Vn<@BFc1q`c{^t8@kNC8<8|n6JZtJuMsR}<(By{-tbmw|nqVQ@U zqDI34urqsT1jCKMJ&Q6?EM{)tMhO^1n=i!HIIxwnNzz1y+-F`~77=mZm6@#j(P%^% z#jv9pG4K+<{%Rc+ayBV*n8jyfzIJ=mlu^z5ioo!8T2rXsPf_Ma`EH6>1F4P-Sj|9# zg)Fr+*?77Vr(a^hr^7gvi4es3gG4yb8Ka77(uE2fH}_L`EgxLfH{Tq)WdqXkB~Yle zS$?jqMQ{>c5)PlW)l~@2LftsGA<|BV6a%CUiv~OF8gcPceW4W#1gX21%7>sz8u%#3 z!8&HzEvpmnD`RoTL!Q!M0jiOW|K_@Y)>!gJS#+GDf+Xb4oUIwH);$9^F@+jUBgFaW z=y22MI-Ia?(jy^4Icl%r3`*bUxBG(<)PH~QZR-~EFRnY_D9woYgpBF8YwLP6tk<1p zDS^v=54VXsO9b)zLVHF(*tITa z+ZX4t)86|?T+*Aj?nv48jXaaXdF~cpQ;lkVxSq#}bhf8@pRLANdEvP&EY+iuYO70Q z*egQ%Q&y#|7>ee_5oBJ%KQbG2-2uS>xbHm`QiqYui;_A|;X^746@k~baW}yK()WER z>>YSj6NBq1;^Ms59A+FZBwgjo9AjUR!`?1Dk<|CZ9o}K1*Y&U9&s@-S8vZp}b2xla z9KLwRpS?Kms?IF2XAQXy(cRJ0ZK{pjF)fDjX+mk=rx1+yct73ehVe8?M6A3Hc6B;0 zv&7K6^$2(7SjvpKN{2dCIGPR|3W21ngs9MDT7<&K> zQz>Y*9|+FrVvQNbex>gFoQo4u_u|mgwJFATpF!o&QX)x?l{$P`8dHjTzX>Ep;yGiP z;&4|kDqo*h@hMrbL}F`x+4%n5G5VvjE9&r$1;_W+$~a$&?&N}C24N_x;G+(&r4?ZHU9_LYqi)O-PhWSLF0H4<1z920p)?A&YTvm)|xm8LRQaia+S z`V!AH-Aoo8jm!ehj2^yF4zBy!bJ{Y!JD!RKEWy{l-=3>$Nni}K)5w%d8rOqwsI3hT z5Izs~R1;c`@wAsL3kaj1U9&oReIwq;IcLP&kIFJS^VEAhbse6F?DX`<^-li(h4BI! z_Q-VA0Ye6qb?Fxfwj9;EP1aNv0aoEMfm)-Agntg!#*+xrC!wnW0Kv|tj3_hxP+rs$ zJ&s7H%Ta5j_F^r4rs|LhaheM`)hwld#N@r}(|UzU+_K|N9Z^1Bs3aU$j3Y8JE|f;N$7=$!`odY@ROj&~_)w4*QQ$y4RA? zOR1|SZD5vFgBMfg4_qoppBBp5x0#{=IQI4Ef&egKl!gtX9c&R*8Nis5j7gqTM8HlzTe1`lIcIi)jr2h(<#xW01`(&iL7IDy8Bj zDjM0GY8QxQZl zF^2Yi8le`XPn0jhH97lEmak&@Fp@{B-&5K?`>-?H{ga_I5o%Y$Yv&pqAc%yAcK+k)wenyk|2szE|Vl? z?uj+Wzc?cHA5RnvEA-K?`70&a9udc6{aJm-bv#bQ z`Xk6$|CITM9lkHH*(D^G!K#A6RYE{Q$E#6s;ROucC|GGP0!q-CD?$n2sDdSd&@tS7 z#nXqh;o`8>0%OyqG+;R}v31;?%bHaPM;5|YZtqETXn(uaiijz(_gBpv%jPYY8}l?M zA-2NueTDL`X!6rdOZe?k7Q~dgrc*z?>+L-?xc(rBdUV${DLSi&@oLSpC9fZ{opxNN zC|XIQ*DHE+Ou}JbRA+YOnaKw4tgKQyUAhIG{ zVM&&x?04dppt(eXq?A)-`~DfY^xLzUQ7%Fb;NIrv10?)oAb&H>YTR05Hoa0J!z*H+ z+N^z8x79_6WWKTH+GQj-mvBJhiR91e8K%9-UZ}rB2s0`G8i-4hH3*D1@`~CB=A9T?~cj*ifo%d3sHtv!&oMT7UO5ahbb8 z^lzVl?kguQo&dLNr*h~e3P5U~0$Nxi#m{;I0&XIrq{5HxHmRk%Bo;YCtgob(A0ArQ z`$BvesU%ua=6!-Ecf`Qo?C!yO|3)1sLBpi{NCk_Aq(IPgDHKi5u)$_Rt@Lgl|E#|O z34a2CT7;gnCuCL(W@lLpc+5ia3i_~S`+{@c>xyMl3v(7W4y4kH-`e5aYfhb5niGYh zwl0b=IDZNBO7$$VU|%qkBeqGZ#r%UpezUa>o69f~_Vk zSC^5GaqhZO_O$#5jsgT+ga*6--?tFVeI*ME%VTsLf%_xG{qb0A?zZ!?5q8g2G*Uk`!$pd2pSgaTRx*ZLPvw!464L8|CIM z*Ra>Mka-F2NiSOa#O^!d$%pp4MD;iyac)ox@4=Bi$w?g~Nv-8E<+clM_W~9wszoNccPn*5VOUc2fKWAvjhnC${s4-%6ShxOCWG zBi34+R^rznJKUPKs+oEkjY6PFc=}YdJyW?6N#PG&>dtb@R#-*Gv0=njz2%W`4~nPw zAgad}Dhn4t9Op>u7#l`HqXh{dfwv@fhRPTSB)Pdfr00}kcm?J3Jn&ZE#Qs!9kkd<5ZTQ}q=c8oCWn)Su=ij6rQKSpsTC>XXk|Me zO|Ypq>Pj@k$D&&EozZF18C(mG7RC)CIt>Z`VBm*eXlryX4{YHQImB}=|EnYUVn5~E zq~Y`_KK_?H(ZdL8o{u6=F8wrc5pYBo*rNcZ@GIuCJf3~+zFZ_d`1EeU^k{S6qFyG$ zUE;JTu-T@p(>KaF?OgbO<~F_mi@Ae1l{xt2jFM6o4KHbsPh;pVEe)M0^S@yF4iBek z1ySJgf)X7KAX;pHEy_e~rJjv*QU*{fM1gyk|CX0Bs16rzvZjfe($?rj-4I9C{%%3C zN|%mN_8@87>1g!PDbYV!J|`LX?fn4VC5kLb3gngHjLF{5euBOHLbyb;FV137b$R5$ z=XWHYRN0Lh1hpH~nxf3|DC;0(R7q`T4FiE8w92y{byeIL^f`V{Ly6j?cF5O6Up1!H z3Ri{INsWja~i zW~sQu`ZTFaZaO5peLgG$@u9_XZ{iz?@y!tI{r=MZ}<3z33emH;)iZQw4I_YN2hOmr?p} z+ooK!L95*F6Gk6qu{1{~ZteaL_~D!0I9!fj9$D*|8QOS*v`*fR$^X4u|Bs|=@T>Iu zy0^O7c9SRDwwvl^+jh-lO}1^^+=R)tjR{jt(_~xk{r=wPFF2p`?6ddUTFaVjqWArr zRj~J6q4)2N3Rr(K>vVDPKt%Vd7s(fj4vNToC^#8QEwOA6guDNqf0u$ukBSLkBktDle&er z7%_w-#nK(QQ+nB!e}~nU{k4@yzS>DLgR4@}En71m7bey;ssBv74yNy!OcZYzx62zT z_jB7@meT4q))ZK0is%AO3Q zJn2f#D473Z6}n%UJjk%)E0s?D;Q1%gJTaH z9S#bcwpY7>F}Ch zM_mdTXEd}+UtrYm80GOI;ov^gR%e^nYB9SJ#OprBknS_JsDzoCggxZqRoI>Qm3O9rDkU&VkW_c+I8?5D|-x6_4lxDDZ+9A4Uqf$^#Gi)Mf6I#-epH z7?h;NNZh7PG*>lsS-}I+a+R2O&p){TJKxl(D~Fxr<@mb$NB3WkM*2y?V0s8{2hyb- zX0!JNs8J@E>03Va%Z%#wlHrmj(SnZdqMIe6 zUQKpJ{#`MAV5{WLYaLh&0V5O662qCYPd3+e3)Zp^B4kujp-qW@0Q?*dDc+Dt_AAh<<7q_dDc$& zZ}|!sB&b<38l`0?3qcuUro!c|GV?@)xJ6sS>h(BX@qQdnFokG%eoOM0>!JsV024^j z2db(YK@YrQI6#Rm#}-E~j66``%9~rNg`BB{!{0G`;ao z@X|D%Hma%AXpr**owA`jDG^eym@Lr#QNJc)etOAUQH_RWMqZYiFrBqy2cN4xFLQfJ z&R6^n#>g)pRqQV5g<&Nhfc+bRH#&)8)bY2tOt?|)kjo>Gy=J3&6ItW)1cihw5xbnu z@3bO03FN7BisTenEHWRE?kFanR#8JFswvTtGT@s8+q@(wIYBMag)gt1;MGN2nOv5P z$=ZhCu|;>I#Tu`JUtiVs>jsLKLEyyG$2r0D$?v}J5%|lkZGOLgu&6s2jpo#Gfdt5x zB0)H+TOUA{@v40C@z}frI_uR{5+(iFTs>g%mx-Mm_#ni|eX&SX5{iRgEPWc&E<{%4 zJh0SV3)ySqpHsXr7A8{!)|<{28V5a=K*g2#R9B!)yn1$9FE>rOp*;rVKM;l!spoKN zBkdJ?dNP4*6oFdPe zLJ+xeu1HUXM_BvOTH>y`G{?NvZJ2z!R0nVOwPt59tIqru%LB766W!2cKG`F%X(qye zF~YRhr<~Q((86)2IR(iv zHSdy~HZ2Gg;|ZFn z0)PO-&q4&8P{h#lv1^2&2qSr~na!&d4r_igg3iWJHqqq1p`<+WzH&ygqTo5(Jd8|z zg=cUs+qC`Ioxw0M@prh|EBAw%_#Ae|qdlS>W65RwXRXCDj-((t;*9c>8@1emYvM6; zZpuGGu?KYVQp&uOAhV>l$b+&c73z;Sa*952m@upv;p~Va$kuyaO*Tgy7D*;uBKAmw zcreC7A{_SRFG?sLDRtPxKTSrM_#yZ9rqly4zphUpnN@n zH0=iAVswkCdSTj1GfCop60^uv*M&
    {##4APQ@q-5B6Pw1ph!D^gHzKSb#8W)hY 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

    ^%Vpe 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 z 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
    L+ea#oe@^xR0gOSTg{%BJU#i#N_V9|s88 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

    4p?(k-^;nxHhyL*T^1OZy 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%0D~bBp<#3Qbp4o^YG5PNDRQd{ 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⋘O=+{< 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%0A2hdpi9lJ>fb5zNP9QK+7SRbzC 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�>8sT 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 qK4Hme0VLMHg-H~RA`E6=MIwe14l|!&sA4IU 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

    Zt{6Vw+^38)fuTn|&lIDD0# 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 z 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

    Qf=*`zUm z5@yGjiUGtysnvCEPy{~~K2*ISgeIpVJO~FN8AH>pd9Dg3lC8}Nm`9pINGfRydg0LH zX1?lN1zRd5HrYnrLSdI90ePAF5r!o!P?RL3GNYzu39!#P%V%a{?{nw;)!p0r?t~Kq zQsoo3S96zQc-3{QD=WHc2Hq2&vN*5Wa*agjl1Oxp z%O*27@GGi9+*oq{B!G?$T!c-gh$?hD5Rf4S&Tiw!9s&-D%J4p$8%uFoW-KzY4v#Vt z+~Ax|Jm@G7gIJ*?5*LgBY|Awa0%;8+Xb~{nO#fL+32~mcqoxsM9cRH5myK5v%hM{u zbmA>k@+`#@e>?g#(DUYmClHeDCk?bjgJqX0+b%F8Vcib9kP1M$DoTrAmT5{VX|Ku{v${0gj_!7WC- zIEZ3OA>HV6w4GLwcq&<0AqlBUhrpC^W>O6))oSE;gMfCVaF*lPxUN~cUqFJb97P@R2YtUU=T5iINVhnYEVRf;8M%0AX>L#$!r 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 -9$L#d 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 z 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

    c>)LnXD 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⋘%lT&`j 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%0DnT_m0nuJ_+$BCZh`qwEXf`Rgu=PdjmhS8Zf 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%0DbIYE0sm!lIf*vr1L5#9zHeam{z^>1$1b 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

    c&e;yX&OG=Q|m1i^0|7BXVYY!Io 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�Sma}~Z5)tO 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

    5Yg)&$?te9(HHSZ$ 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�?o0uyH{`t;sw9LSebr7%;5+Q}{1Bei+ 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

    h~Q&ry--$yV;lmfB*pmtIYfa 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�k%$P5hI$t#={n0 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

    YAiHfPFQyfGO)eLt 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

    ))vF4fS8|HfYK=~j-=YH$ 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

    qvUeye3;#LW1#{q9 zlET}Eh*81A1YT9S!65#BRTVEYT~w1Kt;(1@ll`A7Uc8C|xlff_<0*YJvU=Ds&P{kv z(;X5GjA^N`Y9p-|IL^IK+PbjKcHGuPwkY1cE=v0@4bgx&u|sz*YV~mJ>u^QL!b}VD zj})Zq7;2B?F(%zVQ|*e?zPlnUfiu!oDN)mHSAx7jBPKz=`_j-KVCYpGcRU@nbh*n2 zrN>#i8%^rdL5Hw=*TJ< zNX~wX1nRXV2Y3qC8ElcMA1zerm=&iN&eNy;Qb=WFz*N?ql@mSQq z(?glF9mADH1va>%=kE1H+})6ez41K4;t|1X{e;DSGsU?HBPTTA*&1Ta3-ce&<~aHm z(T`p|JoJb8cs39QmX8l~8p%$QAX5ibjlsuMzy$F!XR9EPS!eh`j@e&g-m8S~(tS#Y z^=K<~b` z)!Z*VI3>wj&!wCZ1AMgaw{Y^U>^q-0_N0-g7 zqeA-RSIQvVhYWA!f*jcGc?3g%dU}*qB6C3$JZ9Ia(u*nfz2JwM{%MW<6esRW+4A2) ziK0hL|C*3UO?7K93oH`LJWn(gE6QL5n{cWsY`GY8?|lrDUynTlEJ;?hqcoeSvZrA5 zzTWy_%=B{0&q@pb@2`3a5bxGoJeMbB$htt1vj6Dgn7^sW7wA?6u-c%Opc~lI88@2k zQ{wBSDHEW&BMYtTdn>M~8sz z3n1lJf;V^}N*;|I)>$Sr5F}io%uany&3qMuu`JHsI;@IjID5+tm;8^v*S|)mY0^#t z>?hAZ8rB+eF?-Cmlx@T&3(C=x)vIaxBIhndPbK~B`d~w(T35x&lRG-OUBxf?opChV zw)gfmW-PvK<+1lz*&^Wc%56=ZCjDb-*ZbGX`b7V#uamJIRu{=%ng8?WS$8$0P=*^K z*3M|Iqyr&zn5NY~1{eM@-}k?5B(A0X!wGT94JB_U+VG+3!t z=p6rhd_!=U0A4|JhVf?H8MpFatp*n_$ziF|n&u}WcP4tOtzprasdE3D;Mip(3{$X) z+~t}PcA`$UEKN*#&~ScR*sM?Zn%2KCz_AP^N?nGlkBZDFXCN#M1zN}%p8a5{&isrq zKk0))QO4ob&rmQg!&FCbCIF*od=SLT-3|)8Hwh^4xFB@<{C-(Ot0vvypn8w3UhJf` zO!otB)5Re-lWA#>WzGw9tAmj>&|)o^2Zsg{v5qDjd;*h zF`r$*>g1)36!-s}KequA$mR=n-W=AM(zd!zh>_ST-tzy2UP>@j+I-N6UO~-A3uUv> z;c5*r*zqG|r{@IxzLjNIXo12ADc47aQI?5ic?2XVp@3cEAU5N+Dozvu?c~x0)&!3e zk8!lS`6A!|ba--$uhbeu52%DDh#;oMv>|b*5FK@G;XWFa9?{V?b>B)J#&3=@H6eW*}WwY&}q9W56v{PG$* zc5};G_TEffHvWcNQeTBWr|N3|)*i4jD;pTFI^fLc=4_Q-XC|C5d_!UZV%?*5{~FUv zp!Aeja4r7+rmIpQx~xu{wXtioAQ&((wSR16%1WMdn#C|r$ea@aB>5*U&x4=B*Z9JRpj zrDSEOEOzP1#bw>9mKP4oh634u&m0c%X|}%DG3z;Ya!5-lIQ^vDY*G{pJYb@I0&$mUv7XbSBRb-~j zKL~$E1eo$j_-szmg7WspvOWyM@^$b^nE5iEKeZQ`6OcHAemw&1CaGL!RVzo>XN<3W z9((xWNHSn@q!GWNTg9k24UrPSrU_kb6bVO2IdpwEN0_Djsc2s{p(Vx$IrB7U*A2lj zinlb^y$ngfXb#5xud2?44y73`bbVCSG`SDr8nuy{hMmI4R;Wsb?o^>9{Zmx7ta0@< zEhRZy_952J@zXcjnqVjva{-)IC?5XmBVYy!&GnIKP*$)<1Y{1cWq?G|WzWWEFBmB) zN=KBuMmR7^rH`SR5U~vDDHV_?qbJYsUDUehpRNOZQyI&ipnj`F6pyGKl{5_q__HJY|837NQ41hiWLb9V9UdHSh+g@z3x|RS02pCOd3@WG)7}E~?P3f+{ z+=jz-nF=N+F34XZ=WLrruGKhA8*`AcST5n4-3%A`B9qr!!yp>zfIni;maYRa9;2fvY$q zymGl2z?*YYicr{pRLSXJ@ob|7HEm+s*fU*Q8_H3vt@!^^DyrN;m8dm^elKGZhZF6g zGh6Cc2%pY~V%7!~F^TZB2!ET3kW2*1XkNjVxwGcYTblPnI63VRK)myxMj;tDr*Acg zi}K=Fd8U|UM`O|eIB`UE)ofD}6^cQW6H{4mjS_8{OKh9{{$`mr-W%db4I;}7vzAjs zIMfKcEWYCrGI~3;1oJ&p*TgqyBa|bHnHy z%$Or?FF(EreVQs_5ZX6CS2mPuGhQ4?`n_N3jq=L$Q{o!)$;%Xyatty#xh+9y_mgR~f zlEmE211XroCBalaD}s5s>>>hcg?W_quGyaU%$c4&vq2>FQo`$#6j~E%P6PHT-E)+^ zT%t7MB=rFTDymv2!Dtg4A|?{k#BVqVYlc3bI)7ZooT(VOW-pZ=87NiaZ$}-Z z%Wca`0y=6x?Dr`5Co%^k)q4U9_-n2VV46FK0k#S*HkI9EGIWq$$LzSlW&ZQ@2Ng>; zf}Zs>#zXIy1c0cMqYT~Atx)hx)<6{Smn}gstURG4t+@rbJL+^+zX>B8^*Tb^%jX1v zK;8j}f%FDp#E#_^r4$(=O>uHiZ}Zp4ak1%X`7->PqU_5@kt*itdbqk-m$!IyCWhf& z$0J4*yKINTc2KXWMPPSPM;38Pjb0T}u_y8)IYs_UJ|&2>lg#xoz4kqjY?j`1I1C1! zrEVGXpF!N9yt(7&Kx2XcaZq63VATG6;D7?RB2)}zY*-|*fD>g-AEvCz_v6h+Kg^V& zL7YKUam}K^K2~gf&0!cdr~?*Q#i+0r8@jq5Ng_ZSTH*AIt#FxqPv)KQ_4N{Esn+*a zi@}K8vD>H5#6Pu&BW~Wrcb=4P=L3Ydv zV2XuG5f=~Bj14{j^nrESOA@G@8w6)>X+-XER1>uGVNbSphA&o-w@@V%0%d2Ruqs+D zDexh)uHb|m$}lYgT}1Xwd;|(~Vk>xOy%1rW=rs!M%p5>MsjXE+3jTpL90uD7g*@g^ z1+R(-wC)7j7o1s)0+)(aBdGp3TjOwKBHa}X&J4L-@wN4RY0qh_f*^7QYM{%MtG&ch z5z;0COr?gpKPMvg2KKG&it@EtQepGMaVMq2M;`#nLd&#PXX=LshU)s&mGA z?HTvA=#nI68jQP>)OG)1#64)hyR>E>j_6&86X)S`BQZanG3YlwTA9CHGc`y5OIzv+ z7^nwD&#oD_Uyl6W75W80oU>je)*13y2B!kW#Q-K}vEr!-6DUkjX5^{-i(_5GVw&1G=9EZKyvnE7 z|Ke)ns(pUrl~#k~>KgNxTG`P^z&4?M!o_rr`^m$A=-hrA+g24FE3_iSWzmDQR@ySQ zFMJAqqA2G`XN-*E2^C}O#wSbCqU@@naDXPZ;P&jIU;|*Gz(E=ALB!6UkepjhcRI^N|Rs3(H65pzrVDp`y*nABOUr_uuJC zWrgLS6sH_(HFy2kOpnnC_{{0h_9DDqPoguZ+2c+X+Acf$ zR*DG4m*hC*mfoE9KHqp5^zBl0BV*F{Yn|@$k;Ca)csduF|FBAY{Vi{7f!HQu~>> zO7TRqD0Pn~51Hwk3|B z7mV16USGoln;S9Ali2fdY<$%kb+m#UfYPe=l|Jc9zI+mA+6_|enw04I)`BDjmIL>N zb9RR+1zc}o`Cn9XZ7w@b2fo$ScGN>$bYSW6M8)I5Z&4N8r7GbyC1l?+yh#FZOp9?k zLPil%3OFJZnFE+AG&CLOtCdqq*P`a0E1W}Omze9aCXcblC*KMVr6PQJ*(h7Nk z=E!y1(o7t===N&xQ81UISOMQCt#jlUQZ#X1W!>5bR1dD5Yt7W97Bsc{d$G>bKMm&H z9dwUc76YMrK8d;Q{?}kN0bsoU%Z(Kq2$A~;;imReMRc;r%ob zJrf<$&DkyOqRi`sVR9veyPU$JqV5ST$NOb((s8D;)*;*3m#OT}C|sz7h_zO+Q6uOsA+X*>9A#nAj2N7X)G{PJ&oh1>0IcJi^Sel#{c z^`nH}6k`C7tjrHvoy2&;f3nRxS7i|U^ew~BRe^qS0K;|hdR+2P^pw#RGK|ub`l-qi zF#Rf}v)%IS84)E8Amxm(EG@)mqSXP>d@#z5?bwggz-9qAh8N4RmCQODJY?Y5=65A7 zC0y3DsmtzKTNTf(&GtzbjoMz%AHJF1^+Mq8*JdO3X_H}eNsFuiEBd3~o`)&cfvLm# zQRCej1IyeEqzzTDhLUnKt0;kHc!eCmU}QWZQP)}>+fwgz=5JfN&e_asD~%#%2YH+C zuJo|aT4Y}8SKijQvgolzy4b~$h+q{~ zbNueKZ#D=>RYc3RD^30r-2DaMWNK^Jv9dph+f;3t92sHgFdEbl=vIkTpM5~vk1nvS zv;+0;LiO;ON3_>@R6Zn2y-j5H3szedITbf^ID}biZ+ZLi3uI6Uc537>5#p1#ZT zhD!a%4mGeKkaQk6YXWCh=p$N@&cv%BSCV5{*@5R_3>(0>uj%G6v0J$Y`ow`fP0Zd? z6`<}4OYsIYHxe@z=#WnPekhwu;0?i#iI?iGtlq7hIdgKhkTAF+)=obDzP#rDSYNwg zc>LuPjrp*IgH6i}%s>A~XKc>DX?ZRpd$|XSKd5D|UpGSj{)Q$J21q7Re^-HvX#z9% z4>Ca@c3TPfrCBYd%pzg%N(bXQ&3&@$vG`dsvnHx3(LL1UwT`{HiCt=ee>QFM*}r^W z0xXTR$b^4_4P6{OY2p6_t1tgOaUv9tyvi?YnQDdcWrl4e5=VzA5DOk%?n*mh96>-M zOk%x=7Qc1zX~e!b@kp~EBW6XK0083-K#J1lLqwU|R|Xg>BY0uxHAy4e@Ux>{h-kd^ zorW5h{G*0yCL%7o8p$#*fx^>Z4x9JK;=RvK{nx@fcJE58@3e5Pd*P@)HU_Iim>SHV z?`b`%7WV5PEiEFPC+z#&uDiPAXso9HVyd|3`_U?~-$_9C0*G4U^v0w7?XosCRn1_F z*W2#i7K#s_SeY0A>rJKg-`rv`5QbZRNsZ~lA^e=b*5uFuOT@=%sUe>s=57x?z9NC?#OrN8}k_2RZ z{rSX*E`>>r$d*PBl<|}uI&Sw!y`C{0@e(@3)~cbe&hGZDCS|#rxp3QzFe_h(qmwCp z+x2OmeAH^X1Uubp&3<(A>6S-tQhf0GZ$NJ^d-KcYUtK_1)XU(>=jQ0| z=x}&(zeCi&O3!JsWe8^A;p0KLae{|5@NwuacgHfcn~ZZzCZ}#UE8*w?!q5QVMwk(U zO<6W1@Crl(tpRsj6r0)`fRB{f9#ei-RD&g)9V6@Hr%3d7#x5Xxm#I3S8R6vEcvG9$ zTLgHexki`2Vaf2>wcXF`Q`Q_`O!%TMFRVdgNo!Rp?%Mgvgb~M-1zjNq8XJPKS#f6c z&zd8SSIh-fLbM}~*zbeQO#5KubQ$G@+7=sP8fce9j@qakl_m3ntaR?b*v7=2@2u6@-EE)~v0{$erQqdJEIuZ;GpwDJ2 z($|oI5c5#d@=bY$7sHkVbvcOVr+~s&6?A2lvS(t6a!dbvrYSRCtcHD-U^V%`bOi(W zd#RwlPxBbHo|pNQLYAv-5npQ81D@+PE_>hco|fyjkB)voe0Vpn@z0-9CoC8_h}ZcF z7_&uUyJa}NrdlmkdwR}mtp0vmSdZ%9EIWTE0tNw*rl@YQPgb6QNqlsD(y_pXLY!$P zpzaV10w(i53NHXS7M|VwC=dcfR2Qy-y$)2HA43$om`O#xwLEL=p8v8_4@5xW-LOZ- z1zD&qtoB_?2=W@z#{G#jSCiMbQ&;3)E|mV$?lsP~LE1j;vi|P-IkNu!Z80QVyfvZ# zr@2%??{eOorjYN9^Ems+3|uU*RMUK=>=Lhcv zR&(d#jY)+976-%uRAZDR=4fBo)NxbGgUAKi2+09a1mK~8IHooD`POH=;vbX03KJsE z@z-@LTweZx-2MbF6S7m|4Pi^gt=k2W-qXxs_5yjT^p7J{G%(9U?7up zwojK=BBq+InzFEOS-fh&^{B+=QZdI?_#!KlDgxW)F84+>$|Nd+xf>Eoq?s80kvIgw zlwVYs!r{(IppHO;kIF)XBcR6&4QtS9ki<*Tkda8@f)WclG_GMYIzqEEi>1%qC<`=P z-g_74-Wd$1#E?gH6#T_jooM@CBR3fs2GCMnkTk3)JU^4NpI*{*2@!WFeBKLXs6=fM z(znrvdS4*`BW*U;87PpcrPFJm(SK!N)x?aeV)9yKhmCmheB%t;KE^$Md5^!1M`u`_ za90Cs5Ban_?if-V3r{{i2Ee{ZUURZmIMtQKN33PR@$~p!3%yu+`}=qQV$T!`5<`W` zAW^pz2Z}X|phE%rD&OQ$C2L#RNMHZv;56Ig-0CD=eMrO zrzzb=?*Z?xcQm<|3`}QMGmCN8y(Qb0@zthAU(w-tTMg}$9cW4_^d%9)&4NTK4 zmP9S*DtC_$0J@;lFxjKYpiCTL%bW4IAUHN$0x+cj3==@MkK$V@pGXA%Bt$u+kTcCv4v~~ojMWXovFliJE8d6xxX}xo+)DTZE<2|Lv%ZPOel}-~ z{cfLg_qEn-t+19Cw<~2DYkmF9-t!%7;a*#_uHR3)_59O&>^@Sh)Uv~V35}UCSyPPHorS+Pt+Fs6$bHd8O`5`{2wY`e zSE?V@CVtB^`F^%uQ$Fc@qjfX$AG9|@C3rN|?5zDeYopGn+*p+`Q{9vl2s(>OSn0O9 znf;vh$f(5`!ZIY21g;m}>c+tchnQ5w*4&&rwO=1Ii4H8L;$o++Khb+IBEZRt-Ga$E zPN~RHIH1fhKO=Nw0@DxCtYtBY;-Uu0SJ_v-TT^~&kLf2-mL_aHs=yU7xd?nGOe`K^ zx!c6pwVEJ&E8QoprjO*{K^iGl(x+XLFg>cdn=rtIzN9-?{(@|{A>im>Jw6@d@;J&P zeE|_%qJGu<_Ypjp;jm~BiEuf(w-Zxclns@<88!I1+%K;q~1l@UJo&0SsKwyuEq~04FHK6f3aF3yDy8_E)5^ zNH=$DB&H9DiG%pWeX=Rfs}H02BbAw#_Myn*u{b zg*G%$1wqHyyk1H@cPas_JlScu#%JuT;$Ba8^5+ko<+|Bs?HAiEs#je%9h1PAh$ait z6_anqm6iovSoz|!vZHAE_UCZ$BG8bTDRS;>d1Yllt2Sq@j zYaB$OE#LKFMNs`UWzkEUKm(@~7OVk^=FunktROIN!PeNnp*@TwEl`;&`aF3ok3BKA z`_l-S(yB6b=#K1mp8a+P*m=wDJDP_hJF{=+F~ass&29NHbXWg)KA-LM_j3Z-axd{V zPp;qjae)7;RXiw&OkXE;@=6We%3V~SRiQh6TPyyv}I$n z@d!e<;85dF19>HO;rJf23x@CF?yuONX)CRl_n4UatT%XeT@MX06E3QBd?DusAdrxV z{f-XA(29EKFFvP5r`+1DcQTuV=+Buxe&Fkn3AKnwGPJ}9?fHtAAPqiT%$yz_6!_GGXr)G4jFIqtJ;A_fZ_PPE0nK*Qu=BN_UI zZfUytDwc95-AuwQmF+N<5K4IcWo9W06dDPh6orYh7)6yu4c-Gm1Ark`Yk0mV`;`8l zmRsX6uMt@XTd!BYBl37}+L*_@>G0*{3(Fja-ZWpW_w)Dnjm|A?<-hO`bACE$HYh2& z%=QJv)(5>sJgnUr2EUhA1bOSDEN5?ATSPAAKaVKt=yss(j)z}mNwqFKOwwtjE znh1>pFQ2v9PQ<^LWBi)*c{KawweP>jbSlt1Pk-UFHp6r7*%_4+y^_XhtfYg0x2Yvt z#c5eQb8NetV78H(_{w&-3~OY;u-n4aIQN^NpvU{awCs3+`E=zj#p##!cNU<&(ps1p zd)YoT8UZ0LG}r7Cht459F_@%ii!(G zK`;$XL=)DP`GFz8Jv2|@Ud>ea@{w{+(3p5;VW0bx`+2yM%GsWh(okwI;}1)u@B9GH z77~h%ErZ0CS$Ag(nM|@k-25#~N!1q zjE#-#2co=-jwQ-a+shSgj7rKk-CF^H(syG#W)Q*{fhKmknxBWoRvAOW&V87Hh%kL( zpa>vk!$m~gSsC0Xq94XMvEIuK3E)<+Ks>=yEeBZ?+am5XNt`mr(?uy);P>C>bL5tpRcOwmZ zEc2<}PGCB$8Fn%&v(d@?SR4L*Xb-GHKo2+Hu`1VUJ$7iV@y7)xx#}uUXwo$;vsGaV zwPyQ1s(KdY>5WS)f7AMX1p(00Pp>7jlMCmJ2%Dh^$mQyiS}{7tsiVvHrw$j6 zdVjAd1c1t%_+I6IENuQhCE|k2R0a35Q4CcDBW4B{SN9FdO~@N#1WGH9Sx^%(AdtY3 zREiJcm+WbM7IB@*ogsx*$nnTu*QmcyT8)pRNL>UGhKDX(|CU(c#*(c%Mm*!2#(bG&`0l=?5?DPUZ=)7?Mj5a$a39DYR zT4ywLrbfwZkyWc$rGD|t9!I?{&_jER72;Bdc^1jNP5Xz)S+?fwcKv?<*gz-0JHu{N zXV(8Qt6rXdv;Xs+VU}8tho(57RLG}GRqf2rhMN1cmV))5)i4lbZr=abkpYt<{K;=J zSd0*(XjI9kJA(m3Q5l_&3JQo62HP3~gmMKj%?66`Mp9VI6&f3XIddhMc?3bTX+qzL z)vBhC8~=<0BX)rTQbVjNf}N_s^pUDZ^9kDZ8|k6frjGhQZPTmDk~2a#o?VfhnH8#o z5Proo`Uz87on>s5m-(LWcl=$|DmF=~kbSGQ%p6+KCS?NzY$0VU*RR~JqNc5`%roS- zHGd!N&oaYVP%r=hWV-({TTJ#rqNbd=g(iB80+^VvNu)ej#FQjLwG6P4B>{B`fGP$a zf{7FZ=#nA0A%`2&00Um|GX#Q-%)yM&Ioy0+8Tq2hFX+^A^Kn};da_8>B}kIuR}MvW zCG23D28ifaX+$X$$~I3-g|6cX*e4enkZ}1yOS`(4eCL zL=dfT4G5OXAi`y6vYSNBqXAG-!I6*a*0<%>>sN%y<<%Veh@9SbCi*lfh(66FX4Z$e zIRcAw%WWc3d`BWpgZtm#aoNAa&!oIFqq*aMzRpq`Z@+>KEZz$a?ohHo_>mm-0~RP- zgb`5>%Xa`69o;XH?seh4a->G{pl&`)2mnB)|1=d2+yDEpME(RtTwc-}SxWe)3wlax z2zyishf7Tudg6|*X(_A~eG_hI>0ho_CH05TS8}Qeko|J5N&OG)?*< zg9E7J4;wg*?Gu}H+I1#9v@W;qC!qz6C*%_!ngG# z!P0&6M&6)6sc~C!QM76>y%Jo@hS7@K+yD97e2!Bj5rSc~XVve_#R(8z!)o^@G?OO?)`w5 zs@svwpl>Nu<>Lkd6s&~(tyq7t$JVPW^!d>f=LaIO!NIWPSZ|HjW||ikiuQAmut8C| zH|}QhO-AOB3&8_i7jpJr9-4FERE9cqhn&@RS`5u#(9~Y6b{^C;$Ppo8}GRTun=lB$>GX``|>`ghiQT)N3zIDDX`h zT5B&aAuX3rtiKhlRkW!Myk@*%Kqv#IK?y`JGW8xDxPb^oUv#yg^=DCJfkUwLQr4|5 z9U<sONWvuSz*@D2y~ z4u%tO;5SB*D-v_fPDslXh*5M4@)Veu2?s}6!?9%_0sv|kq^lA5ZVsaQW*}RMSh@|Nw=9jSUf_3#Ew5@-)N|wx1ELG99Rc3ZP>;A zf}^wXsM6F}NG*f2HvV!PcC%2oort>dxVp3;@4sm?13rWR|Q2goa-W zbkM}DOQmc<;mi)a8uzJz3qg?ufFc2Dl2u2Z6zvaqRU;G#f_|9HH$W5%%no5%#iE|& zlnVs}2&hoT0w~G#U^>-Rl(e_(5W7Ob3V`_oOfw-PWMe5q2xLVu%}WL(FF+GI){pm6ORUfl~9)ep~K_=xza`!f;1?aJf7(a9@>aW z5_K?ui4)a4M9v~|Y!f|7Fjq%71T<~66vb(=?{!s>qq`)U**Q2s!Nx&rZ;Iciz6cI9wZ%w0y8F2J}4RJzB40AJ*FD2NLxo|uBoo&yJ;~p_>i^2 zs?4ifZt$MqsYB*zYn4HSXX0^_-kIfIZCt#Mowy%t_g35PT(0+?rdwHD%e|;Qmkxq6 zul;O&T$WL{zNEL`NS!wjBOI5AZ0;wN?%fwPsrkOLL~qX{tVypdoVTiH&k16j5bY)io{T zf}qx?9VB)q8w4DBCV4{Qrfb1f%Xn@w=v4`W?)}vJ94WIIAK0-d2CRWth{3bIM!MOkXuteX01ZPmz z>kKt2gi1RdVdh^E0WVvuqUpuJkY)1|H-P;;o?{n>ATDKji?&Rqw zv>Z-r=lkdO)$Zk2&!m!T1zB$uXy!vn_2X_{T#;=ffXPd+G(lAdDY2qb>O-Zc6<0S} zRc?e_Y%TmOkxfcHIWi=AvQqOW-MED0D-LT8F}c}x9}YamvJNao>nk{!-;-?j9j=|R zv%E4}%2PTKuFm(~Vl!DPIxj9AY3V6`>GSuR$wf{!+q2AA5_=My?O)oxxVDcweNSV)I0N z4Nr*2ac*iCD5U#q^1s%p4DhynttmLnsr2?*x$|i{NLdCiYs%D#QjZZGM4kj(W@dA9 zLsM5dkz{wJP*YE~*5;e0-^y1dqH2DFhH0G`2O(%>cG)&x|`KDvG08+8W?*uT0LJ8r5{gf6ZbTpHyO^Tt-Xk1D*XwE}5SdG>UZx?jmC0?z6gqI6qgEAje_x8iL;)P^a`17Pc!5S2tUxIMz>tuR z9%TyNs91cS1CywvhfhjO)+#DpahY{-V^P+N>jze^ey)99Qaf-JBf8At4&}{5ykJO9 zz}Lhmgh3PsajFtYEFX|;k6sn%-E^?-;;^8LxXFYj0?|PpS87G3G^-8=K@Z(+!C?`Er$MQ(I8?=f1Z6&z{GoPS7O4BsP0t)Hy+%O z36Bb3DH|B$hJl03pl0eoM2LYAR83DI7!m;j01aF!CDNs!5-^3OMb0ELlknk@4E#_! zwX4L~6LYB%lE`hB;aAXDeOC(`h|*h$KJqK>8D(|1p0QsL2|9i|yjajZfan=kAf!rh zDpemieXaa32q9h|C7!7MPU`BgdhyD!Gw+! z4I_>LJ7a;UuwVl#(4(OWfslm|Mll#LWWfn!pexc^O3!#ueP$9BlyRKKtW2{dE4?!_ zCdeoRp0#L_^<{hAdy{ie!op&`jC!H4JEBg`wc_3EMOqH@2GQts-B6&28C8mr!hNdY zKamfvBf5^K_5b;oDI9R|l-jSAa>ECls*nK_a_%HRR3I6GEfoj`P+-yq0zBvmVM3X3 zh%qh&0Es3Hn$ofhFxrsKGXI5weoW(GxrfTVxa;pD)u)db;OmhJ@i-BiUwP+ZZI;FF z604KW_h%3yiSGK6t?={TW)Xe!Ht5`YA@h7Dw$*-ErU%#f24dZ zyURfUv_|bQ&lK?BcdC0xOOMB1&Rd10xY8|NF2+ z>V(9aO46G~9+;0RT2pT*UsA1WO6-_g>T<7W&7%)p1{zip1(5|Ud1QnFPC+IfSaLL~ zMq!CC(HUA<(mq^yX#;XY{6ZK_R0#5P6B1USP}@;KGFyssa=&6h>HRdlg3_ zf}_aBY7_)*gonkAtH*_~0$UBTwsfp6;tL_88FOaOGe(twS8()FM(4`vJ(I4)0|7zH z9wAw#KX0PMkm3moJYcJRDhwwF47TiDg{v~Mr($p?KUX~04ygHA9JIYS7Ej4_&) z&67bb!MU_`CXbOO7VFlHGRH0ZN4FizO0w<4R#%t=pt*SVjPaDy?~8+yTcf2|qQb2_ah9ivKZZy+WAv}ldIZgfjl)}iAV;Bp11L6RZeW-0;< zr~!}=sb#h;Vn&$+BEcZT$R^<^s$7CX%okV`WFqKX6ExHT2^hhQv&}hAtP-gKQeXx~ zz>+8qhXX7yW=!Z)1W*V()0Z!Ch!CbGFrk_xI84&DH|fk1gG3zImx+L=8SrKpf_$O? z6)B%GZf>2I=0KT?7-?fB5vS~J}ihjAhCA<%|19x0t^-fnUP>nV@M215rT#Q z8J!|vMVXSOEIB}M2o{IOv~c0JP#8eK5F!czGBj)m0JR1v(Go(3to0{Y`{*I9%mEJjG;@MiCgPlAFco$p~&C}K07?yVGlsHU`G-Ou=U=CJC2r| z1s8|hNmUeykT^)Z^+Rlh1nE^h4Iyja2O%NvYi&I|fycfIZjVSZUI|sE>QEX#DQjU{ zP=>&r3f{`HXTw5QR}V6KKC+Vdi0DR;66DP?bs%4WX((K=%ppSuV1@A6nFYuv`_KJgVq%mHW8vwFM1D5EErU#tB!5D*vXKTp)l_4M-(Q zU#327z_<-ViU>sqnk-mQI9b%k0Sc)j!fw0R z&&)fbf&hS0O>L?>g{OqBlxRhGz=cBO#-Wi= zE(MktVWOczDl=AQAQ(IdI1yBMfY!iz5FC==5Dx+P1~JDkAOOa01(5w9972K#gA9RC z?6e>Vm^_GqZIXs8Mt%+lB??KJ1gkO-7GPk)hz=4DKq>+T08GMo)r1W!q#^t`MFHdh zCUzQ%CMv8bWMd^DQNfgxR2(wYu&7C3#KZ{9Xq*B_4K^`BGQp71S*NU+VL640i9{KR ziHeOGafy(e833~a3Xp|BfX*f^Dq;X2z+((02z??JEFTdonb7f)1DPlYj4egLf+iwl z3<(|z6a`Qt03Ry>BnU7PF~CVEG$mAwY`7XCJXj$CG2!640e}X9fDAAJoq+%Wz#w2Y zF3(HaV1NtN{*yd02$YtVLGNsVSK~yyTEjKifk~d^IS7Q*(*S5neNJWVFm+-xFKs=B8MSt@rBW^}%C{D>VN{xC z=b7f|qiI@|Sy-N=QB$vh^EM!~-BricO-EDNGm>&VgqB@N2o1Q}OLd4A2#CVgF3_=v z2)@K(an+Q(@07~5lEwqFyb}uxMA+m*Py!}O)4iqMZP@rx)3tvWa@a2FZ|kY7{g)kG zt2AKsWojX6EvS~LWui@GN>(B;>}Z&_I5bt`N~4$=-A!jQ z2&ZOrbkX9I~{uOsii9Rwi+XI-c0;FD-izVi-L_8MjIOS(U#;g?$R&ur z?PN0PlYT^Y9!;q*G$}iIUH|Q3Gq+ZY9#4#9=Aqgz|^*%gV$Ry zOqGXjc8MjgTjNM2?_C4yK&;7~>D5E8oq zAu~0kh=D6v#`}kBEDE+GQ?4Hq3391#+~T+WI9bcGImBFw-4rQZt{ z7_JLkZ@c$?5iyY+)x!mmMOGu6rU!Dmkjp+qWxT0>Jks(NoH-_M z*&J5o$p8DmM63V=SytBjFBj$ zcZW+eFF+S!i3(pOO7(3Fu`$ZPk;t&R5iJ*2s>O(q^6r{DQ)e6Q-d8l1ZtRw!W3;5w zH1~*=%VSjg6GK~WPA0m2#oHT$bSX*U*z>X)tZP(Wgt0?lV0(u6cb!7wD~k;$H|Fyd z8|j~M%}9!o%lNa))M+}K4Rx9-RPt|8{B?1+wf#ob4Fd*xc`B}di4H(OoZB++w1+|_ z83u}=;}KM71%8J}bYumw2e8*Z9dC=Q=TvNv+sw}!%CXCelFbX-Nsi@^A1zq^C$tHE z1$`v$433r{{=oK_!>0%a#DD|fB$Fy)%v4sUbQX(?reS=t{zs<|DGfNS*2URmS7^i4 zHcUJJ#DW}y*ZALwk_Cszm?|YOb%H0RwrUSvfJ7yvWxg;#Ge)EwqUZz(VlL!(7Ri5^ zgXZM5X=~=zWE*O<^l3{A*|jUfG)2CDjBhSuqBE$Eh^QMYgN zY_wH?tQ_P3ZG$`9W4n2NdlzXioiVs{0F6Sobo(t9f;Isc+KCHnUv5$D#@Ev zy}eXhM3=wqA@%(;d_uo}|Fkk22rf)wkUZII=S@ir#px<-Pf9c`M}9wj2`s3HfCGN$ zk2$ZS$a^)8D?ttY8ou8J%bBW?NxNV*osqU zNM;e5Ya$`&7}R#dOL_nDmw(H+a*fr9$c&e|xkx(*R=NgGO4s5H!JU}ItJw{!-utr5 z5HPJ*u>7q9U;rAMN^zKAHUSk#PQ7D5!UHg6yo+N35DebD=m9RZ5~(GV^3PL_4`UA_ z=-2k1IM20rzj@t;;dGC#>DA-)A!a>qpou;Dj>Z@_JL))UIo^Wj)ccv_^M^Jn2pN4X zL4jrw)`t6q1SB?iOG?8k6$<8lUg8}~xT=)Ig+o^9rJBIX&lar+;5;}31hXhxe~kfr z000wPXs$Zh8ir!3#IUHqULR_RWq2q;}6b|Vk$mQ!SPXEdz|LWS!?0j+e+B}W!cm|nb)Voba>-kXqhYqklhKR18WB)K__A6 z$CER5#V_poUm1>M3`JuQ$`+|glk&OWrL|wg>6jjn0jhvt!Z_O@CedXYbe0cu0M zk8c`oOspX6E{c@`SFaNh0Upi+qL?fND!V;ZWxLYsa_n=`tEQ69_>ehbgr*;8K%v5| z1Q{m3mP{|EzK}`2JFYBTlVTiKW4Zn>w+QbXjbm{oh{>KgpU2T%SJM~}lr5?xs zDI!VQNZDOAV3|JBbIV6OZ+>gK9}CVA()_7YKXUu#ThIS6;?9iZz_%XjL^#kO3>NEI z+nfdf01+uW#8(0IP0CY}U>X?9n*@Ox1_%;G6vBWZ3J@f~qys|~4@6;#J977&d0Lhd ztsZYL1v`<20qz4C0|#>S9;HgNCuWNUYi5&>6x;a?L%XQW@wle~gsij|b43aJ*!)BC z_m)WG`37u*8cT{U6_k01OTsSa+iic@2+W_QPoI#CEaKV^h6~_(9j$L_m|S!~AZSdu zDZ~JF(f^@19Cca_%a9Io656}4ttcT@MpZb7u;;J$8pAz%?z|EU(M*-P&yNj+&%uC5afl@kG&wEAW1}h z-+>e6IUtHt1%Zk?;*eY!R&No4>%_(ltCn|r! zSvJTSxJ`&R2tsSN+K@a%K|PhN2@n_~iAISD3FZz70_6j3$od2XmfgUO=rT7nZ%Pb% z{Dej>afJm1IYf4+holM>lJx;ux%}ZlMkYTB0LGQP#^*Rh$tjwqLNVishe)TGiBb@Z zh+_)~I3x{{1$K-PJ5A{*w3HSWn@OAqun28R4J`+-Q`w*xGi6jx-@ePsX<{^*Lu`8E!K3QfF^c6Ct3! ztC^ZVDNw)~+(MDqplGk1`ij`U^$*BbB;@``|?5fQjX3(;HaK`6P`RGjCWQ9u1>eOfmH16*KDTl)mk5 z6AO3Xrya{?Z<{xea&4-!T|ulL7zxeOFpe)bdUvvCPg`D_-DxMUBf)wXI_r9riuZCD5|C#R2;=<7*fQ{zvPMqL7#k#p_JEmy z04*l?BIELD0L8Ze;0OZ&5Q*Kbwkn7cTxqHh;kyz7HAYt)sx&BANR##m0#Vcq^U3+zcrc-+TCA|fGeOKr z$!eu-#HczI!ufd^Fp4BmNL>ffr5rh9v&Tsuu0!3H6m(+)fff~7Q3PwnA8i;;i;0S<6N;BkpAI#)pD7z&>Zj*QdC z2c>d{1sYIv2kC=O#-`M|JgO<>fEOeITGvui*Rdd-t2_T(FIZ*J3!i1uk^y-jbz}o3lThAjaLO%_tk$wC8l9P24%S_B9k7hETfn&;R*rS0pUnU#Y0yl zhom+F<*k)CScuXfI@(e}iY{V9Bsw)CV|2AEOBj6?UZWtJnQLd}VaM1yh%++`Z8C{kfGw2DMf*r0#P*%2pr255+Z)3-PiWKSA?8D?>#WUiO(AypHkAkG|eEh%~2Mb~utSdW6dKWOqTnR*qXRsK; ztLrN6{b?o;1tYCa1!07PCIfB%`>;gN0R%>1+4~6_*o7<5H+`7Ii|h-`!3kY3>hS8-XUm|Ks_@kwj)U|De=O%tpAj z$xHulv7$f%jl`!4+)SZTia`=YvVpIv`DiMYRGNcwjE8!>oYOWV(&uQ-Z6UWgC&@E$ z-Mo>m_ckgi2JfGGL)xCS@<(!{?|c8KBSPy>s^zoRCqcdHmV}FotEmyg!}xrJoEIyc-QEhTYH$&5!^~M+%)2O4eDhNYu!YWvMQT>fSHV^wFXTYg)=-<8Kh*hhMBDaUv=( zs;QKY+8)E7QST0Oa6eVb$%6FnTGtoF77mCbq&OU04t(tPAMYvnj&x!UOMLtg?Bvkb=crA^My#Zy6FJG z0002nWnKjE70HyLl!98MQXE8xAR;1J^1!aD)F>?-8k7_Gs+)S|JtYBp;`QmhFKb!q zysMV3TH6b+oZA5ztl*VTqD|PBOHxJjQw6GVwiM~+%%C&CoFQZtEhzW(_iXDQq2_O0 z6!oMIF?kbD79IlxgVzs7_m%^wW!!qosO0A3ssFMbqyPY0Sls27Nh1J7o~mWU2pB*@ z>P4d9rv8}Qtk~}~PUN;&;u%bfr0h}pfAcTW>~~aRc(I6!r!G3V_n9CnbqbcV0U(S? zL@T|a=AsJ})s;gM07M8`S8ER%_=t+ion<4%P}y}`tT7QH zHm<4Nr;cPaT1bFP1sw>*hmI17ZIDJJSafr^IuaMOm1(Ul;U*m%5f-qEg9Y;>Y^u>K zP#((+awDKlxg>FEcy*6R_GycVc9!6kl4t{${QIWvXoytDNUOG-~2nV ze?-o(l0*OqlvUs!r$AuJLx>122rNukTM$9E_|S+}l3@tSl1g$+Q4R2{_$^W`L1h>3T*&R`Y#q~oHWDuzx&Uyl#SLS}xnQt2PA4)&`SjR1|BAQM1R9ZOEc}D0eCx+DQ z`qk0M<#YL1+wCUh=CV~k%oW(%SKrF)-M25#BhFhO#|lk-MgJA}`vE|?4Hyd*xA0OC zuwZBA{2B}t2WqPQ8(66+^`N+dfX9?IhNK7qE4JJM3YP#nmzKc~U>)o?FUpN&LW|3W zY}yRCa=b#L6HBkfPqy0+TVQTjty;uy($&saUoa4-#L9*NETk01w`|RnL1rYhSjR23 zM2SuG=VZ#UXVb!fpH7WnA0lX=0ssw;%fN6V<(X*&M)(UH6(v>I&EP<3*)ALfiUW-* zB#>ub8>b_9t!o^X9;@J`JF!C$>Vqnod4$u=j`pR3L!Izv#>k0_>RC$(K<1x#70x0D~C z?kpvqD~v{d_PW}F6#^9<;29`P;9z0~XdEE{0X+f(N&$fZiV|T6!XpRNSSTGpNM|Uc z$t6@pfpm=|tCX>WP%0uJ17PD_b?jGDq^ErIo1(NVhAjUzg&%O(^h!HkKKRLq6dEIN zr`+xiLfJ+oA(o0LBFebIV$Lj6M2kz}h6w3KkH<9fHFxfzl$18OiiBlH`ROg&?5|!wT=3FCL_wU4pX_hpS!z!)ZpLxpR2CC*ws&#Lk)jiAG#9T@z6ZJ0x>cT@1 zIfN8?RB9!8yQ3FAlD2oUh$yr3PZk%HW@=dHW`1U-K6Ah3CiPLmLAK5|mvA)rRH>*aCuph+x*`DRY*-}QnDb+!3JMs+K(DBL?TRU5krKgT`?6%1C=l$f zy6omnM5>MNYCk%!YG#TcAtcKuAb4SLLGnviad$5;v1Y?T6bw{^u9QFG4~Ojdkz0Bg zI!90bFGUo2<(yTdv_R^1Giz$hGq|oTex9%Y`>;gU1O%y1(VKWfXqJjv6K^POQAI0D zO&J<0DyC_jm!gzeo=+dF#Lk#P0Ml-8J#bZ1Qo=Bim=(YPcC2qE69VQx7un_5O=45=dL6&uC*E2s`l|i#ciVSLLd}dtV$)wW^H-U&bN;&iL z^2!05X5e!9m?&lm8$jSdCQvCL*`ZK{0KmusqeBcBM27HMH%q|-nQkJX0MpX|ki#90 zztYy>6WLH57Nn0npPRcmLJ1z#p-IYs3`s{UptB7*Kh9y@rnj^ur&pM|i2-$%FQgCW zGY5M8_NSSo5RvGU&{}sgPEVlYe=HQ%k>CH#gG_M{X}|ypd=5&P;lY#%A0UYF09*vZ z22!v>Fhn$B0mc%RV?YDPrq~)lxk1K6O6E4Z2+<6Ha1o@K5S1`E5%&$^F<^%>jxFX? z@!f`A+7lEOfZtEhIZveatJB@xtY~Sge&Tkiv)V$h6@*ivEoecGvIzeJ8u#J`ll2#v ztSNs#jcA6GG3C$(D1*wQ!YS+(xn;MqCt+tYQ(Z7*qTl{B083MYKnw$6nM$F|lNi{M zfewO6!N3Lc8crxW1R=B&NpLX2QxOzrrcO4B4`5sj9jrWRR4^7Cr4l5KqdPoAHLi(x z$Jg?H!%qWoZ5yeD6P19=8YYU&Rb~wXIf?SGzXWHu{$#0G?N@4Y_F4!kwbUf2PTnV> zo^Id!8CHoBumss!UXd`b(f@#{6}=Ds40B<~asT_UMBR+UJ4w=;OddF%Y1$)iCT~-r zO+sz3c;X7AsZErR6j50wYwX5i3;;?qfHnt+q}2jQ1xyOeC`fP$20U?Xgj}Lo!f~)j z$f-68E*zy!!6ix|RTQ&*fK9)IsY@QB?z9>>ZW~cp)V=qej;X77|I-38L4DA0dNPPF ztoE6H-V}5FvC&U`!wUqYJ}9tOxbI~=xC|l}IgyaGW&-6dxrTWU zyCFp+6!G@RH0nUuo)K!Q=yB_@WUD zXAK$Fr?H*V4qLnb|AEHeIzms|CcVY-Vsfx~h1LMb%>4iW0dOOdF@ykAdG-gHkSNHA zh+KH^MrxE|15*q&Gx1XcW-y==9I|7{$wwHPPY0ZhWO^9;Ved5NYI;Fc$#^-k!ol$ zw}t@5h=6Apco}@Lu3MOFS113Avuh>%2@OE!hSV zaRK{X-?y4Z7^t)&mvHaCk`&7fNfRLR03b@78zq_l`>;gejKpzGQJYyqYM%-!6K^JO zQRy>CZ6tc)C?shOoFTQ`iVh$c6__bhZ!1ty*AOg#iK1(cLjhkH)~6;MH7c#t9b_(9 zVC%Jk!__i!evBMM>Wo!ZxWj*K;(PWEL(LeJLv1ch{Buld-6Q1*w73&B$ddGX2H~&R z%0UGQr_6)fQe&{}YKIW;k3+4p$72%Unz4LlUtY~a508tTi8sY^OS@_T66N46d;%cX zNa;Wb?V~ko{2K!nFx%}YT+RmLNWdTf01{Q;M1lvVN!~_g2!H>!IkX8UE_8cQ#3;R6EDl*YMKVZTu|vjQs>#DvNoHQO|^=(?nfa# z%R|@m95zP@UDByf;Z4OzITrv) z*|;!S>e@RQRglbW+OVBu}6dy(|X_`n0hPYS(I~18qMVo?3Lc;kbrc zh7g3ySwPaC!c24dushIv$WFuw(Gd>m-G}fw#wL7A7U%L9tjX0P(}AZ5_5MoYjc_dh zf>z)YC;~9jt~~+FfWvlV$O<9?DlHNWIYJg?2uuZ&I6aNsl)o_c- zH(mCcOU>iz+Uovm{6eE@raNxQaY*{Q?BYj1ZFC{92!H?p1f-_{bih%DHd)RhWQiD} z0)Q6aTvAnwLq>8U12U?Dlo}DO?*w`BE^ETf$d?TR$H0Z%=~b$Z#XQuC5!h=Q0Sq6E zYSn0(=5`<{HyT5bC)|w{sU9dM>5mi`e3~2@*JKfNC{0S{Mc!M;t0kje(-77Cigi1pO^@i_Xb<10A@VHX8~a|p9BPm;;fNK6vUUAQ0p+>0K;#&o+dPP z!5IK;KqMJdK$J#`C<;o7T);*uE1Okd%kJDcOHC;PflnIr(N)b3%jtCQyPN0~py{DQ zsA$ugpg78UN#33YIor|W%ZPE+;Ipwdl)l?o0?AG(Z+i4asU8J z;K!jhhfH5nRuI68Kxu*`2?7-!;2gr>SE;}wln3DNO0eLBYFNOj2Py0@s0h`?fW;8N z6{KpattNWReTFUuTR`aG+)Q>;#@(pWbVuWearlS~i6DfC zbks1-5y0ReAXMT8r8}}w$IWnwgN==Y0t1o2zqX|zpyTFaDao^$`q(jh+MGwh&|dl$ZDYoX(pefCY1cCtjPG)r-Hw_Y^bQ{!U(97 zOFg6tvSsvufFbY*Hy&3o$P-KpFj0d|0R{vU6$pmLhYcjCM0yGv79$RwE;%sZB^gU) zLZF1cL?KYoFxfynn0$QrtpK6Rdv5@cqoaJe?1V3{1u36~PrKU@fHx^*vKhO8a;7LB z1w)6FcuhkMh!&RTnH7O&<%mh89y^^%JA{*Ti?!3a&bsD@Ma|7eUk(3?7zQ3G*k^qJ zK~DTCK(minobVG!KB=0O`R3ViXPbPCuq*AO?BaLlsT9klFr?|Ii?LkE4 z?Z3N@XX0^QUo}*hrYR@UMjid%{2K!t9fwa^96uw06`Y1LnE>BHn|#9!4}xZjpJhZufg7nn@fC791P}?FlGDPwM$(qE* zq?tOg-GPBd8ySg!uSTlTyh;@y%nVS~^O%U}Z2~2$96Tb2fT$yAP*P+l`cXg+)5QIt z;+Q9dLNL|?i!w`da0H4Qs~w3(9a&^hE+pM!5Y2fFBX*i)gmOT68=-pzQJ_H?x09q2 zlM}UsjD-UrY~!Z<^V#3JJyQ2i_U%K>^EX@nSNWMXF@uBxz+^Dmgy=*F(J7IH`41f8 zbi7|QFBeVL0N6k$zh6k4I&NG*%^7gS+|ZjgE*rQA01e=ffKfq{!I=;_pM#h(*=)c` zL{&d-5_LDL%u7Mw&nR|o}RjJ%LBcnT6)Dg@k4wws^~Y*&hTJDESunR^oPR@|a% z21$s~38#H08e8j3{#s%**5MfCTRKA27(_yPP#W--h$iYiIdxfVuD8| zMj}D{@6(gl)MbnBd-LC&-d^Uy{&f2mwkJ@B*Ea;(VTt?qzo#SxUk8GOpg|m>{+r>S z|9XPh{`E|r00086h>^nVSz?+jwKuvSWu$_Q!p7|sUd={|NG!X(hSBm zXwaKUj<~uE+B0t{Uul`6KyBw&<^8m0P0Z^o7Wfn#zf4>Rcty$t9SL@rI2a^kYPEI{ zg0%1e8eqPlAW35ah`Y~1II$%(w(c1UwB-R`tlhG$2ffKprsl6&1Me1xmJ)H&cVV~L zrm_Y|-JV(sCRTuOxN8}-O?k>jcLTfZLK|0+5un^xC3z>(bTU*bMFxQH$43b?n>kD~ zgGMBZAY{@w%^e2=3`W4XZPC$3wMK-7khg&Z0oZ2}fnim15kc^S6x_ssG6v+RK*7(q z;-i`2m?D^=mk61KE>xf+;F6(+@rd$-ON5YPQ3MP|M6EHw83ffG`hW~&h?rZ2$7Kb$ z3<1nxK+_FG%QkS2o7aYT>5&Ky3Md)`NkU;$v4W^HBV$j?dW6SaovQcQ8b|?Cwikhk z%OGWCR%QmJh>r!d8z2Ax6PO@QaMbu3f^g6{8nS9BfrQFtO$rJO2!!U6V3-8_KoBxm z$T94$#fxS+1foHM24*fu8NfzmP#XU*7z8W{GjJTT=2RP?e943a1i_T4S>RBx6ch#~ zmuWf^=fa2*U@GkbmRunK&)5_cS1#Fc=vu2PPKM+T5ebViv`WQ?K&H`_N!qFb(_F|v z$uyZWAz*ff2{LyH5Yt&OmLYHgfC$GK0hWkILUQgxTW~-iFvZ&1(kRHWX7Ruz(eZLF zmZ%^Q0;)cP3La5YhZtjyS#%G4VE1vas-b1T zL6{?k2E36F7?5)coX-X@1q{K0=%%<}^GN{K3Pi%PAS4UPJ`7QT;1GbKBTz6{F`{s1 zfg|aQ5{l#n08R`^(_BOy7*L2A8HfmDPoe;H@#}(tOhCXWlRpI6jWQ)niLqg0z|8sa z;%lUM7%&1*Trs3Tpi$=Hs5piI0f8z73WD6H>U!-2!>FW(I|cCW^xt4%+$n)Xmbh$E~eRQGlF4HyKdN!YEdU^@i!^D%OaI)N}-7~ zm9axVK>W&O@`vUAl*KRZl6$q{vr{y9<9=o(4N}d>=jmtjwT+7ya~kOalJo!o26GpI zIs-!}3N-+89RxT5a@Mt?QL7AKg?Xd}SBL%=P4FfcyiW15f(Nus^B1zl=bd*HkPKm%dFm3=8?FxPm@MlPs-8LRr5s)@ZVUh=v8!& zU1O#P+l*?sk8k-P?IvY3Y=FmIv86iw7I}zk8KfY2RI(&GZCmVv_I5R8| zk(bu-?=sGQm(I>QUlGFgdGCk0&{7BAPje6=6fAj^X^{g-5hYRGk}eMv5$;a8hjgus zj$7eJX4mZ|HT-EL7M${|#H=-y(x{T6A%=>r{c}_8(?rbq7razCbmskP0IvZ6BkN^O zLSO-az072I^46ASN+{bf7Jw=Z=j|q#QKOzV9gOIw$@NwmuwqxvIl_VEwTxt$*PW;% zv1@M|)S833Ni?&wPVx1n#~lX}nl-TJScr2HO|xO(pEnB&i;lPz;Lc;d<>sa))#)N6 z{IK9BgUf_I8}O+q>+{2!4JKftr@rm`0LG9AA(JFmtRawqe5Ow!=q58K~m3o3SWg-m{uecV0U!<%4cR%AA#cyZw zlBme;RaCd_dpp>t$^ST3K`Yl@e?Bwk)@EnNw*TYeeGE+$jy}z!V}A3UE4DpT*u%?f zBo(JkpO4;Dy#CylfGI!#1MRe@Em$Qp)|P@oAQ*5FX@)QhBrnp2&I}R^cDRz3iyJ5Z z`@lq>fCNBNS8FdDdXOx7{bA-`5v_4qth}r0DyOUUhoODLc>{6EizvA5Qd3etj>x!& zhvh0hcr7So2kK^%c^v$zhf%2$Q;UL2c%w`-`C{Smq=#L|O@`3)qY)Pr8Z5>+-3rbv z5=KLitD2~WySUIJLvU-w4T3ribQr$bY%4)cd{+X9Bgz+tf!_-5_2ckL|%^QXt z*z32G!$$E9bG|;|Z2A!Ek)zbRiyMB|3$>>vlulLml?@Hu3@^E)u59M(qe_e1KN-&G zcPB^EM`>XAqIwker)%>4RWJZ{np21pm?DQD@SsrvF(E;5GY-mlq)g;AAs+fS8Dfq= zyn#{v%$C#84^m@TFvCYvgN} zN*r#}S<{xrToYd~qwxdoF;a)Wy5dZ+%(?m}wAMyqQ-7CpB7{HxnW*eJkwnJU!-gin zRgi!HcF<3b9JK~xEGncjBr2DsucI3MK&aC*TnzcXXO=sH;gitb>{|$x?AyNo`9uA? zyc2psou}ce!PMDMN*y{6r%&lYZBl$TkSw|?=X&(q39tWSOflT%Cf+oEB8bgtCAHWk z5UDP!g5lG&x={p{fQM3?bA#s8%kV;H;PjDZap-^90TKZ?hiQCp2msl4ScPbD`nn!?pgqwmW}Wxf9zdIBiVyZ9Gd$f+f+h>T757WlqkK z@Hr?bH(>`P)^POn-~X{+|G_#D5bi{$5D3DsQ&LfP6r8wn1V4F^=?|nWX+$U_O%hM= zL{|U%uteg31X5VlJ4PO;h|5atV8hi>u{Tvryw7S8t?Q|S3tW0XPm}T3j`3+PpF3JV zfAQ}cTicuZ_$Vx=v8_8#l^0uAbX^>R=L7HHJKHqNVFluuozi56r`AecbG&e8-D02>{0@VX-vD9u#@l|_-`BB0s= zA2+FL-D@Yv^M>yB5e6pEOv6P81FPGW5zLp61({V$u&Llc-mn}#hclU^*t=9(1Lua4 zVa!$0ikvx<)-(3-^5+(x$_Gq_HC<;q3izz~dS&kO-?aM9Z&Gb(*0ZzM?AY#sPH0W( z%YNv;b}RnVxAo<+?drCkd#CP+fT%zNHp+ZPfsvpQG|2!8Do~7;fH)kOP!-O{QvjHh zL9SDtO`~9ip$E#cVfO(ctBW$LUJ6c_wVS|ye?}+as$4!(#atd1gNa&vxXgc?J5f#x z$(fXpQ-LXxge%2;O$}F-lvkcBMfh8WS87JqmZofIw?!GFX#o{4jAWTCGl5v)GVFE3 z;p?AG-{=GYHq&>QHlb*zE)lI5XhZry-pozy<&S z080{ggIOxlM)7WmgAZUp3fx9Sh-ZYM$WRohS|i?(zl-cV+O(@@kW4aB(Ku%;Z?Pm| z=4`_s|NF2+_W%TvUDVT0GuVyGs=8(4Z&FE(PVF#tB10@{wU>@Gg{)R3lH+GPY8hDq z3Z-)Tu%NRr!=wh*?RXF(HBxxmk@xK-CE(=8lS8W^pd^LS4y4b(q!fyM@kLJIaKfOX zF;H^z@1rwZyjAxVl7={NiyRWANB|OxyvSQL_l|y(MvUhXGjR+8GKwOCq-Fm?K#(w` zfom+K*bydm?Mlg|6bm3i*k7{w|3VI24UVSsGT{$7biTiFL3900063Q<*B}PXVKf0TOSa7&PHRWXntJ zlj0E|gkb{79VWUI#J^`1DQ-_5FLC-S@D-lH0;9k2pKmpOmA5utfZfMGa%on@Kgeq>I`*X$IL-*^5YRf+y+3UH>Sm)72{kwlXW{IH=($es=>itqyk?PP+a8NQPrz?u!^CFW}}O_us_t* zq;AZH zJyN2QIW<7H|NF2+;S9vsT+*9K9y*<>+EZyG)l+qWNNt#Us&^}?4YLbXVMjJ_NQ&&v z&Uj;WISe~2bWcD)q^~nmbC5ta0q}5HfQ^YjgaU~krlB#Zi3AFVD&$EHG7yP7h&=_$ zlyz88u#hebNkQQGvjq>eEn)GQd`0DH13*(z+~Q^o4ps{&q=40X=ZvCI-68uB!NVh1 ziT=|xk_63eLwio862^?5$swg2S+%<`YKI2y9-1=p=T~lynj%cR5-o(X#FZGi(*$MU zfdVCFPFr!RvpKu-2mlfibBg|*x~Y@~2!RYW5R?oY2sHqS!2-Y$rTAYV89gMM8 zW1ap^7Qm!}82b5k?PwJ`c&yCtm3Nf`5HLXlfo%hr5PRXlxFDf{a-O3@xkW!TNl6-0 zhxepwaKuNlIDq>Alj0Sb^jmm)03r&LoCBerQ5c%p00EsGf`!Ebgq~8|ykT+l1PKOq zq8bvHDF$IIcM^Ocg5QWkPPS_shX#hSLJF|AlJ<lVeb4G0*2sCNJRz+}$^6*OW}J9fTK^QVTDkK z@*xtB(y@>ZBP4RD3;?d>9E)pTT9#kEO^gkE>qc86fS2zmR@P%?lZ-SE9?_CrN}1pN zG!woM3$*mQpFE7d(_TJSeSyIsV5~5s{Geh1 z0+gJ}ZVhb=)W8flEY3y%KqG&mQ=6ttPqpzKruK% z2-*mY_`0g9S*giVg+4EAf`#Ulf)!7>G-3C9=yDn85|7TjJ14NOf|zbzLcv=31D8j($o>guc?to^9x;U**5zWd2}7&XyTk?~0V0&V-RC~V1gRKq6vmMdfOC>j2OkQqOO8p)d-EHM5+^Fd-v+s=gbq$ifZ1s-VF zSfo@%9)mYPff)=GL|5Qf7g!wQ+$Et09w?PTT_!JV{x|Yf`Qi6`%}SFRmRT(a?{>?E ze|#t<5?^VJF=N{d4FCJEMDYy8LtfGwc{2K>tJ*_vC|^>^bxLh8cp{lIDGjp^T<1Ul zlIJuxQ;aGxkaG+-GT;$vfIwobBn2o2F;F1@k%R&gjfw@146Ndy3gUkTL&UJfj)_Ca zfYmZ-x<)Q1AXRYTDaz0q)j0K7p zj)k5Fl2AJ6CLTByIoAM#b-AXkse8tu4E>xpc~gHV0-T-`^i;Mt6{|YAvB9hxUHH05 zV?r!cKO8HLsTm?H#Mr@ZFRMB(3elU7%C&l^SN>^8FQ2!GrWuNyabKBh^HGidM*sZW zc+?&!c!Vs4GLtsUwN$s2ip%Ii3f8sL} zatttFP@E>1TQ;e5E7pU`7*N;E#XeKWs3*-}#DFpqyP3p+jz1aFXtHQI5NWUsAWRkw z5F!#VfMlZ#MJ++B5*N}Q61Yie(7J(=jZTKl)`UbH@I#LximQrEJgg2837CUm`{J;z z+mw}*CIXAW_ag9&=c~>C`@lrg3`IL)(i?e0YNZScLv171Q~ixdZRAbrW~S+Btf73% zJ59W4uVad|ZG_bUPNAIPlvLmX8AUr*9%WX7_DCw|Xvg=cAw}S*4^qJph~UNpS63AE z3e;etv%-mBpu3{4CswElRe*p5idOSg;LCJ1kxW_e$)NUN&_w~(1!fqNfYab)S>Pao zpbSVEqQ|r#g{_M|LW+}&0Fr-3w}%komlBDYYUhls+xK5MfYIo)KP#YAHzz0YmA$$w zXkH_b`=i;uXK{zWPlQ%;lOF0T-pRxPxo6=jxZMTM65-R+&M zg+C9NT>_&CJ|P#oDjO#Ol$_ky{xNG#jWaR;YOzttdI*_sw^T1P%r;$lOPZ5+0QT3eS?+QmpB+DUgc@{%sWk3k-p^#x8S)-I}5C*bQID+_p7``Pi zZstqKW3mWj$}HnRKs&!QKh6Rpg2d1iF@uf!R4XeQGHp--LkLFF0u&$>v9fX$l3EhL z1f`8O$+r!v`wJD7zbI_bY{zA7f=2O1^)xs^)`y;C{3t+$NYeM&j*G@3bJdLWq1v|U z$UsIuh8vWKbz31slGCFLL^rbBSHSpvD$n-Snxa4D4$%^+*>0{bE51!2Hrk5x0EkX* zXa1Yz#T${N)*w3vP`rpRssaD|ute*O#J5e-8%Y+Jooi}CX(QDUolQz@F&H99FX>IB z3shp}O!7S74gi+vl9WNz5ia|}7&drR*wH%Tz#SkFDi?G}Qq7%wXV^n$k2+LUkx@MB zTz%cPAuRnsllN^T<60zAou-jELmBGb9~cYA&r-<)WA&L7BK8MBH|EibT7z{wHsy9y zUCrKy5HQT}?Y7h^y&76OR!bu^fV@kFquWOQDgFRH3%f1!lm2aRB`JM$caIKhgKSWB+fS@wIIP&h<20_3bw`%$rJQ zzCSCU8V4{kZTePK03utvnaC#B7&*XhG2~|CcyckI>0C_Q%0El?mS0Ia;b#Z|PO<&G0nO7kQ? z|NWb?N=}WB4VIn$g!AYWn#=HgwFKk5u0f8nCY+b@&p(5jH2L^#V z#vnjE6NsoOhm8{uiUEbdBLTpRZB-oC4M{okaRhC)+uoN;EQp3)S!4r&I5r;~CJiK$ z=9iy7zI66>8nM@ZKZ^3RHu)4Q+<}OgJ#$*$$=VuUrN8393IEzt7&i{UV74&g!0Df~ zvn1gp2$&p@snelpp=Zc`nRGeF|NF2+=#0dRP}3VsMi`wcx>IW?UsU;rNNuoq>Ugo~ z4ZNX!Pom6UHGm+KCow2MYS474nFywVs*)I}8~6zs7B(<-h4#P4stAmA<@{`3)MiOE zI07QjQZQ6b0MmT{l|uD{hHs*C>7!MD>Drg%0aaeYDdw0p6oU61p7q9;GotLwEK4o; zTE-F0td~s&(#zRwzl#?=5p8d`6E)YxK$ge%CX|tPUmq1wP|+5UY7gx_1<(Kf6E84v z3o~ib5j(xqHIH;v005$V&8R~!6iHYoFEs#(1|$|3tzuyTv2IN27Z4iE7E&+>G{s=E zZimd)7(r0PIB;Mf2o4??Y?K!cmH=S{aBu`2sUnHQ0)Pkr8deFyoXjw?L`4i(G2q~0 zYHWZr6c8|cWC9IA;e?+s;N#D@0MVcbVFd^RgeNTGFQ<~!r;Wj-yDj`$DS7;8=!9m( zqA`R33;>#nXyb?h1Be%_ykO#H0D#dGGB!jy7>Nmh6oe^UVgV^=I5=1U;4qA4oVkc> za-S4DGo`_U0_V*slLlPGFE!(h@*_ML(UkxO01-DU#g!VhrkxsRr#plIDHs^iyln!Y zn5UX!w!$*aFyH5mqPBKe%F<8-A}SYwl#u{gc0B}^?86OX0EB6+bC6I_BOss>4Q0P^ zE+E;KXbAPL|BL`-1lk+1m#9@TDa>e&$_#)&Q?5qe6jf57trTxBwYW0eHhk%pd?Rf>3s2w~Gic zq0DN-cD&83MuRe86&CV$FHe*WmbX(!}ThVA!$DQDYA$Y?&LFSD-w6dtCR!3lAB<$^>t2vALd_zt* zYRj?s^iVMz3GwS`Kh#9AP^@KGL&d!dqzR#`5VgWF4_ZzZ#4$>QALQ(voNPverF)E< zZY~PMAr?-@=8m>C8&ROJ{n5D4#)uw+w3nOb0p5;sGzpkU$NT){thbzH@j}kVnHMyB z%?}S$6y)HZB#Vv7lL)jDFzui!9We;R5l*N>1_)U)a2f_?mZK^WfO?tLkT4=pL)6-` z?{>^X;07ZtOJZW*w@tFj7!rOt>Nymi5Dk79cwzROh$=m|Nh^(7_5?Qup$vABp|?sc)N&7fCoOs zfo<|R5eZ$)(7dZHF40kCs%1!utO?`k5&bAS#eR zR0{z{hOIM9Rwcl_Xkg++0cjIo%^z(K^?8_UlEgX zK|+{gpY7^YVv-f-hJ+!h#yR6!1VfpDB*NO0F||XlE3^Gmi60Ypuwf@jTLLYi|_<=-PD zRHF|lh$youYK~Cj)ul^0HggzQR?_1RRyk{S`K)zeV<5G=@%mbXBbGu?0C&d{ogYU| zvWrb%pyGiDN`}W5YZ{nXb=*G>7JPNl_O#ybuj^A!g{$j7VdHHNBSxP)suz4MAiU9E-Uxj@Qha!& zGgUr@rxq- zwzQzTtTe#L;4Gt_%UUzwm4*zxy=-y%z&0d61lEWvjyWQWsA`I?JdnV3z=0HjEYo&f zDMqmFLfk_WFZ3Sy*I{3(;bdUI*v}3;hPG?%}W-V()DQo1(CC0 zovwHXmV#x8C^u|nPK`oMkfO3&7rY!6hS6NW2-XU5nx?DoIJu!;C3#vz6~er>VYgL= z&|S@oS(i<+QHdvwv2794Q^=dJc}4^#L;N7@|l_2&;m;g4Xz&JzM;0OlD`9nbSP(YZ?QQ5aXVt3jedK0dCU- zwM1_15sg3)rjfUKD%sR5fi7~4fex?Rs^9`4J2(lrm?mM0Y;3lnD-cq#mmK$(3Yh<= zF1MIVFh)(H5`#^2I3p!Ib_~-H>yX~2>Q$`PlknV@qkoDH{k^F_H?wJF^lnex|9z+0 zCfLf#QA}=dvMqPtR~)$3+fR=kq9pp>eLDWP6Te>lV{L8tdgxVHVl5^Sbs%a5Nu_xT zD5STHs>>{61_}mNtf;UF3E+JYPT~*_$yvM|4^^Mwna*ReB?fv&wTQ z>e<=fXqbew4(>_I5dbdJN^*oa>X^o$grdNpR}?Ut4f{ubRx~JNWWGjPtQ3&AhU!w8yr{Z>6<#dJV^4(pLZN z+*BhhkLYcqo?cLd)Q;S=d!51uP)fszW*7ex#P~?9mjhN2nYZG zGHp4>q%Z0*7BWPDH{jCStc0vUU~SR$MW=}s6h&YVH5wwoQlbM3iR3c&^^Eh4tfiBx zr89Gkprd!ovUylS+*f=ebIEp)^b;07|yTiXpTLX#CA%F!%tIfoMf?Hwh>n^Q6=E<1X z*bP|nWBr}8VbPYf9rK+Y32t2_S3St*DkdD&|8T}4g>Q#*P|JGM34=gYFeLFn(ePDc zMi5&l0MJ}p`#{79+e-4n2-fI>EipqZkjZG^I3i~M`>;gX07PS4R?`nNYK`eyt!3zY zP=Og;tT4@@A1i99myRTsdL+w9gluI(BTu&QhDD4laEZM}8vzYwNW_bXY13jPvTB5| z`?{Ve$X2a2IW84#n}-7y4MPc9!(oGh=xkcL5K2buV+zR9E+dy z&x%CZf3gNDcA!&~V~l-r&muu%l9jp!nL+>n7SSqj;KrB$7zKE@0!xTPO+uv5+QXFr zYsiAZ!>IrorKqQIP6wx>F!2<&VI0&(WlQ2i0mdCDKr9b;TV=?C7%Yc zmcXc`wG^ssqs3O8O;o}F0!b=x!DG=3U^5A56tE^?by0+oqxxWg!)W+gltC^Ma5H_> z90VWzH(Of0Yx$AQ+kt-i({4g&_$; z8iIge5K&zqB%_y(F$@MkfWgTCoi(bEnlw-^0BQJH%CwkA^q6g?PYKQkfetxZ5z-A99itG*Uppd$?lH*BCB! zl6a}k>?&*;F=1iX{n|o45{ioiAEYArRsVM#MS^HCV<9mvj@6vU$+&ct{RewWNc6y zzu=(zD-P|%;)E?j8DZE}ps}k@uG!X|d882(b%tAtwUI9a)Z9>F=BW5$P5iVNTj4tV=515jO%HTiDvT-BMh*TgILLeHLqahvRAQ|2&02UXWEYh7u+}ls1sc^7i z+~Y%J2inHYMe3U?8amb5v+HM$gt^rgxoTi@`-{O391yUhSrYy_pf3tk2S+Ct`<1vN z1Edip$tmi2vD2q85>@>#rvd-~1`1c?C=eDf=1iACzz6(MX9JFdMHEXighd3fFyR3Y zlKur;QRs-`05ee{CgK|_VNtN@wh$_A1BXk5((B&qArJTUd?Yt-h(6+0b{x-W#e-f$u51L+ja0nlE}2wJ2T%_~-4 z!cD;O0Yo9`EjM>b8d>5TLp;gpj6`@pQJYL2DwPSU zT5AZ2QEf3wZD9?f#jHp*c>&vU1%mAmdTjI6hy@? zMHSu|2LMJ_c-=C*5Cr{ZO{gUoxwk`|Vk#hUl`0L4HzwurZs;dyDp7{YY5VnCIelyO zHc^^2nt}?+xvNIg2xXe2A$?0o=2hb}l_CG6gBRRm8e!3>B~GHP?$^t1f7R^NS&NUAvcgc=}ekKd%1e@#oehkpKV)SB1kSuACW| zLS)17jfX)GQxK751fX%Ek&J?%&~#J+Jma4*LktN(L&gTv#z!4+!NSySU|%3fTgE-K z({~0I4igzx=324XgY?##gI*b1D1N0ehHS*=Xf)OxY%<_?b0L{VVz!B=4`7XSOuMB@a;GiA}6X?|Ga zEb1e3OkY$DcS!A+TPm+EsEy2-wFL`-1)!pkfGdTPCI*+QXz?jQIy-m}3sN@x+P_w%az|3IPBI zIfTw46gk#FhB+^TiN;SSnAj{39vK*bfyNmH7!(%j7#NNuFDxMEiw->eI`@g(PWy(l zWMIIbQwkQbLfw;sM@XSbyG0$2KYnEl+2Q^+O3vKAcBGy)dT-P7g3;{kzvQK@-Riy( zDD3_A`d^ow<{szCjWF+>sHSVPhf*rKre-~>w$)b5+xm0rqhd}KTV`bJwZv2>R7x2s zlxV740N_kX1tJQIH35|*ywEv1G6F9d;KD}@v5^qsgUJe?E7(9$T991K8c-#gDlMC4 z-GIwMvKjQ06jWq)?G^^71cPu}LV|pw>f@Yr>)hrmI2szJN z;YvV=q(CsL&Zb0KvM|LfhkTE{{K(EkLM*P*U5f0{BDQmnYABO1x621C1Zm2<>(p}a zX8i&HD{?=~VY70GBuFr%2t7CpqQ;)37?g0)1RSMt1ccyORwU#lAq3NI z>v0wLEY>AuhpQł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%0DbmpR<2(_%5tqvk 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

    RFl@gqls@$wWrF;zv`Y<5 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

    3wdz66JO1jmp!9)O8Uy{tRsen`I_q_ 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 zre

  1. qvlUBzs7v|MO>si*QU_P?k3=Z9F>oE7==WFAPTFDh${9lh<|;#TG<5(s+!y zocdCe>Xv*A-r^Qa#W1@_MfRIL_E%j8;xB?#ie`9ulRQeC4_clze62fc)D?7aapXvL z%XHJ1`$0qg zrdA|nWwr5cn#_^+v;HQMfmzd173P-hpS3?8G-tW4ewd`X6k5EhOU*z2pd-1OhvzQh zzZLz%G6p_M{_8c}k&5n%)3IH5)hET1>jQEy{G2i@Or3H83XlUQ?1l9Vdx{JFBYrus zV-BL!8lYnn6^3O3AMO#&XPA1hF5s(dE>DNb_!$ez3S-+8p`@ea@_rxm58F>X{)Uu!k|GRniVbRD}a zT~)pjRyk6fBLSHgqwfCm+yDBy9v(Zrt3xLrOey>YfNlh|&{HOeC)+2@Iw2q{C#C9j zT^c6O=RFaTH01wx)m`ObyXefS3jjZIK#rJn#Pkm#ItY-{i!krqwVh-HLjeGKz6@wM zz?DBT1BNu7a*m9(<~FJ59|sNq0nh#LP1*nv9>g!^XvX7l{Ue#fK?)v>7{)_cIN}UA zQv?IOH2B12k77i{J)m)=h)$C#7GtG2jZ>A9s4%1KI)Ll|I)zzcW{I51_gf48RN@qb zfmzcYzb}C?KQ^qq568Y)Ze*1&kE`P{lSOpRsUIwNUkW!->hY>dfmx1m(kV5I8(`l2ddBi zy9FNjJ}rjtx=wUd?}~HP8MjPRTewGjEXN)AsEk1+9ShFyG{H1X1tgeYR-?ZE{_l(a zZDw_Rf^4HsE$ILE7)KyedLqwup|5&z>iyriI9XbtPRT?b4h)C3fdY(ILI@?pgn)R& zlQ{>(b97Re$9Yl-?s#H5!UmNc$f$^2Y1l#dW`{LSGMt&s0s}K9yAR{E%!3r9@e_@F zDg_n|t6>XV;4-Bw^FGqW_S$^zQtK2F5-SlN7KSTF0#!vUZXmzzU2_6KNbd(;)A%~2 zfI7`wK7ES}?#rk|5`fC7k873*Rc0H-ywJVC;6mT}&PG{X zBrkm??1<2%C4=}0bv_aO7LQ&WxpO2mcNu<@I0A?9w~Lr^yyTI>J$~-;VwC#J(RId% zS^oL0u!?YAnZDE7CoIP?7&*wYhd6sFdDpr46>Hp|auXC)V&9z1!~L|LV#UcNi}3fe z?aB_7sfGc@w#OnA-g+O=I9H{X4U(~0rg?YN6%<6TGF2qnGO)u9ym}O)Lq%&;VlFN5 z8i|8^nwgbsbI9bqCT%(4J-c P%pjyocxR{k0Ph4^I}6=dQ7_q12al8{=`Vq=>12 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
    yYw$9J>i=>IIRN;9=2I|darJx`aPQ5 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

    3Y=v-F@&zXDCW(M@4lGK&Y@Zm1)YreF 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

    RPpSfKI$k-&TE{CiHh)oo>vV-{-( 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

    1=tTGz(I^@b_?2j!T{%!Gq@0MbHPEu( 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

    ipqC;Eyar$Qx|2?8uMd}b`^857pE4w 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 z zu6em(XRZu@KqyY@>eW_dO}s&YG~`Q8XuQTy0U<6fSWgGVgzNd|4} z60uUvot*p1C(#imDb}yxkFM4~I)KxIKyh3=qSMU7xdu$KT>w09BICDo%WfDab1#Hl z^lgWdn(^+FGTq|~^OH1A)L*Mdz#z4o`jpp?D#PJ>x}8>h?FXmQ%?AM<>x9`@V%V=k zOAVnD&EZ&b;%wa={QzZq(@_R@{V-m6{$H`)pvf{ckTW=uHH5*gbw$kalPQ*UNU%X zTNH;41-*s{QEpYroJ$r57M+{D40Hde&g3s-$jM7=DF3Sbz}FL-2xZf79Q|_m{B>*B zbf)OvQb(_a@&&`uc>Vdu1!lXpRSPV{Kr^~(ME^eH9Jk`)upn? zE1*c4)if3-CtI#g0t?0`x#OSaILirWf*HQl;P}cueW1{y!)B^2x`h1NcX0OAQ7Di> z)gzR3(q!wac)IqNvg`I4BbhYS<_kQ|on)=D$=ow6|2hOKG%Z!BsS?T>Tmm9L8s@C{ zfxnw#U4{eQ{_~y0Fy+R@$3#a>Rp~1)tritlXWgInl27V6xZf(2tv4{-zmdCZjJbPu z7P8Zfo0X|!@rea6@~b!hPSId9lo+iz%Ob6+ZP;q zlqK$@Fa-#61Wu>1d4A77J@$rxNs}@Y|b?#@x5OGzfK3B%Fhvl}Wf?29gpxI{^*ch^VFjZXwIiB*?CgQ~G z_q{j0H?GxTmrUWQYiV_)blQgn&OpY!zonEa9x7-}b7Fc7!MTqDxq#t+xFIPl@7^+iac`*8kUCXudW=H?C_g(Z`c5ZV*mL z35N)S=O0O#S)dOO`3y8Pux~}04QuaA|XSYDfTa4FKSN9H&xpCWd=L{VE6Ii zzQdye+lT2oDD}mt438it3Sz<*X{r)N33?H?dvbl30_|T~_qEAu1jtP*gQ?8x(?w+e zvi+&8jl6pI*<1n%of~@z62Q^{9>`%S?nO3BXo#5Fvp`O>_ljj5-KftdWM!x3zokcu z9aDGzrjeTQTUyCS+9)b*s+oOHtH_{wjz^S#=64@k=sBYlKisvYVJg9DRWbRU@zwX1 zU}1$7VfC^tiRZF&iXUGZNDESAJbak3FD+#@-TN&uH#F#vXNkD#lZLD%KM|eDk7;o= z?Zy}NXHsiiCbE3mbq(6DWHLu>HE4g96WNq}^Hx$S(=%uL?4M6zpzLLI&jgGtRp5+B zXh{J!%qQ_{ep>UN;FkF6aok*``)XjgZe?6;&$y!uUjFD>VFq?dwCGLALe5z+16Jox zHl>{IDb*0tEA)llZZIa)+41g3Q6y5fC-%$Uc&5bz4Yod!qmc3$qzrv zgZ>0Bg}kcqpE~iIEaYSlz|=@BQa{pU-sS(R-e_*$^W|nx;PLGJ!S1WDir1_nTGyNU z7z+%h@F_NjGji>Ar91g(TcYsEoqB=B-|*TuowhHhy}0!R^}>rYJ3=sW5xAq7e8L?1 zAFMt(-&dJ_$MxLogJtE&XQ2e1D*U$qfCquXH+%>k64JsH6%pWOCKKw=Qss{iK%9M- zc_i}VIiD+NLTD89@DBF59jybX)3sxU|r1`D;u5G9GqQ36d z376U~Ao=M(4p5QRz;=OB7zI#LqDok$4XIK} zwGO2JZdg+6-1Zlm8Q?*_D*&#&Xpt|5rYcji8=P67XJw&;Zg_f1_{Dh7x5$)Y>7Hty z1y9)Oj{Q}ws5=r8--`*r7WU~zME+tIpVtZ$NtACHzn>>;_Q17K{2qPrwMK=2Iq$DY$b6-k zes?EzP}K$2lcsv<_A`Z!yG@O@OLVl45pr(=0Wf~{Wc^8ptm(0OGR2{p`TSY6S*0>1 zM4{jf7a0eE!}2QCn~T)*kI30o(vZW4)s;DWXE|wJ?!x1|7XN1a6jXY~r7liRjrGg6 z>~aJXbO%0t@Lwo<>+)Pz^gbDb7p>om!swhwPT#+~h~B5gzGxWv>1g<~csVl?TQH+u zgAq}q!bCM0tjHJ+_U1!Ao6WR#Ek+bdS4m-Y%ggD%M|BJhv9;5^;naVRiXnVxdJ!Q?0ErM!6V)?FOLsTEu`4^yiVT9)1(qRR183`3XCF%z%9RBTV(7e#yo~1#UQDGH#QGTO{d(mSaPK$k3uBeE8`=Bw7@A^$ zkgFE?;I8U>1#NUG%kwxmsexo)N~rNjEZb;u(>UY13LnJY%Zm}YQ72PEGA@<;-RFWt zsWkDSh;1GO6|Y@wtVQwMTJih!Efpm!WS!Lu+P-LRKf{-`?RCU^Su-!m!_WBg=aox@ ze)37V%f;lW^d#bON@1G~rRflwLiAX=NyuD4-#QFrXQPDN^zmi`>Hm;dD=gdG{hFf1 zWO5-#HWRRK{0}Ps@KLrkoNP<}-w~*Xk&skQx^bm1#$}1(LAmAUklz*%In7@41<@d0 zWVhb(cqE-|SFgoy*(=Ao(UaBFpRE`EZ{qyFsbcOw_;@?-AcEzW2$CEhZns~Bq;>Gf zUlh)j5J{Ym)*}i?4Q+t9yx6YKC09}P50He?**m>qvHwYb-vEgGGo3(eWEw=c=WdIW zM=|HDSl=|`)Y!5s(oSbvYb-GGuJnXrAbhn=V=Rl=*vVO!Fyhlw215uV)u;}?bWrev zFQLCf!PY=NlveYzQL;xtr)r}wAfB5R%ZSk_VXL7XPXuQMw_ifTNI8b)nqQ`x8p~Bn* z*^m#9L$?ZWaC53M({n)-%<3M>lsfEV(p0o+JcKCaFy(DFC=bU9f;+m7l0&ViYG?ud zRX!qtB6KRc=$9Uch~@nLixPAVvi5NlG?RhR;Uy8Yxz^G(?lt$KiN@wghX_Y2U({ACR@49m!(6dW)n1MI8}6Y#d%Ap2BN?I;8&;Ae{f*Z2&8MF-+UPTS9S4j? zt+mXU(l_JH3>7?fImsos7c z)Q;m5bjqpEcN$+P?wMO)(fXrh!rE9v@W2lyCCx7z4Q`Kb**?A~wbAlQe6jE1Oz)=n z{3~<8K_T(GQYd9SzLO6UP8J!8AC%|M_Ak51QW6trF&^vDA=n*N#c>o)Wkw|~;F&4; zSUJDSB%ruv?kOvOd`BYnILSMIEB|3&|0HFpN@!0E;*Amy zPw4FqtXTfl=39O3ep#2Heslrpm>1{qu;sYKj+vI8h75|Yv4b z-~tMEzS-<+dR$0U&)*)~dnLKsjI(&Lo2a?5=ATN8ZhB;t+CSMHtcvN>+|p!Cby#}M zCccrGdp&DkI@9G*)e8oi3R zi8Pkolf|I3E1Im=>I(EqNrn6ck`~hDlHPpuS(T$>6UJJMRR{v60h>5w8>*CZIXeS~ z24|sZ`PGxZw5E?l=s5HQJm{3^Ur>_Jl&$bbb@P7rJEWmN2;&=T+G+_yY+gh0%&d2_ zbrrztKg!f`Q!2H^!QzAN(;xK5j~D%YK}ZBK0Wh7gE);|GV;KGNOS60?`mxb~`a=U( z*+~7J2X1 z*$AagZ~6Y33Npq7C$=Mt4F7@B|BQItD>T$Qb=EtD^#a|CrRrJNAB4esJj^~P zm&HKhlF@_UFa<h+flo2}kYo^L>2H3Nb$omDYm1}8UG^;;<=7~@R#hli?Vqb$UQ~vU6 zNzD|sPN68a%FH5Sup*b!L|RGgn=Y?+v2&G~QDHd8#a#nKJ)u;*GdDe^yiw($lbG ztxdLOB`PP#J!|xrZQqxg;EwZ~3n_7*tIc2Ke*)bxjZVJYr{B+RA=DX$2Bt0v06FyX zkte-8XA?l9gJ@x{FtUB|b%xNE+4wKrbAo);kyzG>6ba{``8np@H_U~dhWCHh@khq~ zXxsffwwtlfO};TV)6&+Fk=2!ale5n)wm0AA+0hf+)^x?5s$$4~BGMVilYj-wJDVQT z1xGK&cmHghz+mpbYrI?gbsKW*?AAWs>1iJFUxCy+OxJ1RQrq?5{@(x$W^(PSaXjSP zAht`>R%*!2maS>Ifo)1z4CqC~r7A2mF--J8uML6)B@F(;?EiduSw>F08J*LbBORyT z*vRE$AXPZ{Y(Y&sK3A1n3ZwpK1tUYSG$VKS%Pj_4dF>n(Mm&nh5+A89(p`2ZJFB3Zv8&%{qdccqwcLw^U8z3SyVBPF71^(5 z4+A?^O1cvaUYIwJy|vA5u=q!u`hl8Co0h#-0Xe{rQVdDgb7T9i`V7w-Ph8;b;SGF*y8H3pCbp&CIYuB41&a);|8$60^nleq6Tb zV8{GpFvSe38rL2VcPzV4za5W*JPQaMaD5d4i%}&#n^)s7TIyHJW|rgQNUqYd7cq;t z4$sSHsMA`>;QQBX6gYphZTx(D-*&Ek8M0IsQAMc``I#zww^%85_@WefCf9xU=607! znJ)2mG-<}-`mOm|#hXJdG4W)=Kk8tGKT5Hf3!l|LTOX%=%*DKHzTaV+VtSbi%k0Yh z!TfU*pdq3ogu2Nkh#e`7OwTsF=Btjtc0cq?2<&&jk7x0ki^JFNNrurxkiFB2j4JXT zYuRi1Yd|7Y!GH6>6?4~Z{?Nh?V_=~jzYF%Mev#Su4vRif3m=wDCd`y9iV#9ZMw3@L z)O{G!QI6H$ftnwD#j$fl-%eXp&@r~e#em=dr$eY({dU;g@+14id`8)q_qH79Q{4g! zL*e;Hb=rPdDxf&m-Ra!O-RBUiTwSN`ZavM*keigs?~z2Qu2oxEBycCbUtV zw*OWs?V@>vh?~r!cnZwL3!u#dnkaP7l_i#L1>0}kYoO7%EP2?f1 zg{Z0ibg;E0(mL2v?3mi{+B?2vRKw+M^~ScoIgRlTlwdRW{B|Ac>}|}4`67@B7aMt{ z3jii6A(3`b56>jPrBSFKjDboN3&1#N#6g7Ug#g(F7N2JEcPEC{gq6$H>a2N{jeCRy zg`tFM4Ar^LAY zxIB-o`FxDz!^H8xOoYS$y-aQ|ASg#9*p)!Y(G6RDM&k(*!Q%gP^@ z9;%%k55Mxi>KoYnIbkko@i4OEMbPfz4_*%X=b49he|CN5)8A&0kIpeH9wdKqdk!=Pi&B z0mAYVY9yHB2o{u4GJxt0dK?93O9u?-g^|bQbTzt~78;}8LK{CH_;8!38Os({h&ROw z>!vxK>|&{7SXuttqSODRQBKg1b`9Mdb+aM!=n;NLu2PCNQ_a8CXwIhEYT1@4$WzSx z@2*ywn5NHzs~MI)f&k z+-N1fG+!ig2U)$a3~x_1#7akm&(vMH2EQgYc4$U0q6wOQsF8|NdVB-vDKGa9Q<74I z_MZ|G#3)7`)6z+>SW$Ss22=!zGNPlx?6`nXMgYzzj;AIN8aE#nf`gaQGaa2w1w|K0 z6QAJV;DJ6PQDW6Q#Dq{#5nu(lRfT;fM8l*dHrj~=<|-`PDI<;=G9k1NaAFLLW&zC2 zI@Y~G_$++tm0v_SoA!ss34MU;juy-FN8k`D>|w;Tky1GMEQ&BbbS0cvzGna-0QiU< zJHqnKLSunYgrK0$du5^?l!t@&Q_X?CFGMAmPeMk`?qK%GdrJr_D}C{4_WAw_|q5=@-qPCmTUWGgKfiA&9vcavU^7k5^`a zx%1fd!|>;%*?J9as;8qYxa;;T{?AmNEP70xOhkM<{JDI?GAdR=|)M5IndSV;n(CuR$IPqPJ|WNP#a*2>?oJc4)g)#AY#_p14!CIA=73g?Nz8 z)exes2BlM=wee7&<-w(ko{He}rOAJ?g;&TJ^L1Ar_%EeQnI z0a9Xkv?FBY!a!FVLPJuawLaXOBEUG_cc}$GD=OkNs~n7-?cJL5j_!N7OtbaB#Q_6o2;k@?;_(-o83@T4 z?W7-HOOrd!_KIG?SBU)=?U1`7wBodbcY;?xq!ul<6N97GGnZl?JEQ|g0=xhB2owFXpys0j@5j*G zbxR!pkXOU{DS`gSltzn1ktI;P6&=SY1*dRJVq~b7^}p(q<+zCfe>ww4@}6-?ns<$y*KACz?x2IqxH=`Z$0dyEN zHqU!Wk}>d)_Vf81U-`W$I6Ym%^6}$0-$y)%#$L?T+_Qq;9nncEo&eN97$zB}gM^nW z49=6fOhc$T7FeidzYqUR9?j7{@J0&neuEa#Au`2A?ZwLL2PXpJ$IDWF^?Ow}=I-6U z&*9V($KSYD=i>6AC4P^NY_!V7rDQv zKyOX0bNxPMueN@l^Ezr6S5q~yuv3iTRVAZs`T*C%gYQhNoG<_!o5-cD)4n~GM?P=p zftL$_yTyXA2 zl)y(jd~&mjbdX>gi9kwvGOoUZmv2i(O#6MK1jtW4Mb8}W+o!LXsa_6at6|ub&Ny%* zc60-%NWD{;06B>%-D`Dm(PgXIug6jWwI^6&r( zP=Xq*4_MxAyeO^dEP(zaBgQsH9wdqGYu=2C2C=Fbswfl*$=*3dH&1U&hpTMj;YWQ@ zNg90paG7`MTV_t~;o=7mY~S$suk z2ykb7LzJprY!maVH%K+P(Ca&Gydwc77Q1G(l`|Or!_of~{3N1(9%l3|A-IW^z3=X~ zOXfXbJ=oR26&8OHW6{C_JOHNgX3^rsaZJ{cQGEDh# z1cmZ!4wbh?A9?nufY78+Dj56-hKj-?lqDrbk$>q8Q&dw_tGCKM5UED(9c1W^vUpNN z7MIyr%J+owi6+0T?8U9?Qmi6W5U=!PgnLU_MU2zAmZ_y$d!*gXhU{kho!hj07kQ2O zr-U(H!)R-NEVw?zBx`?oBETjXNmLKkZK$CA@b}rf^qq zBBi3Hw=#s{RWb$S;ScWRu#_7id`}sI&abPCA+!7P2GjS7sbx=Fal*=4u5E%(`Qiu8rMI^#PMO!<$tVlRi8 z#|e=*$@G#c8@gg|l>7^X9T889A3u(zU@ulUd!lgW$dVwN>p)&Y#*zqjr|85KYYheG zoxgNo=wrH3hh~yjY%SWKpMPvEp^Mdn3@}XYv%tC>Ht}VDK};$T0C>t#ZYK&PaB;^Hq^)Mul(kq;|J?}}Xh?v@?2U@Kh8tvw*D=ky?DYc^{0D=iRXnqW+R7icw2oh6!@+3TVk<%E$6vu%v^vbO0hmN6? zbAO1FZANXVShll#_9l}dv^;Z2CF=xJJyA+zQPV;E@Xks+7znpxN~VqQ{i1j zsDu)#cj7Ch2JbLj_*gxOF47W)&LC4?L>E+B@Ya@YnthUU|5eT&Vx#xt!F!IapQ1S5 zSQj7QBLD;(c~30JF&Ebd{L+lTuwZK}WK|Fyk`NKXDpP~(|$-?mD zd<$Xfrs|MF(6`CbXF)|-554)zyTxy;=UnR|4mbJzA^-w!iiIXSZf_R+D^v}k+hMC17=+e2WSuYDqWsw5;?SBOfdM$R)ns0K^=+kQF^ffWl|Li0eYeAc0*%8RIrvbD~JO5=okI;}9X}v%rwQB`y6AM(I4w+BA zPQA3_t~h~HX9ApFo6(C!O}p&wY^p4|BbYKZ!11CY*G-*rsv>qLMPh|7f`$+*zkJDqcO+cP$trYu{VK;9xi?qlb{+M`X2bLk=~48sO%N#_E*wvqHeB^Q z2O%=@nn?I4{Teqi*#=i~UB2Jh$_)^w@%1LUE3 zN9esEel81VZOc_I?G_pC6o9XeLykLLj0Z{&wU?n23kOD4YXh{ew>sF%rx?BSBUzrP zLxsXiRi|0oEKO{f3Jsm?E1Ar{&e{ju||E{SQxkBi=Kh7JCM zF-C!ojCv5go5WC1ifwL&!Rk&Aqlxe9`x2Jc2nCdrdQ>k&foSJrTu*1Csa&k?s#h1W zS8H2lVQhX)JTy9q;+fb8h$I}FRQu%luAWBgWkS6mA_7el!7}ls#V|CpNjmI*^l{MtyVNu%Ocq7~lI{-2Js_fwNln?1+ z2T*=4?$mHClJH2)?SSd@fi8_%aOZgMWXz?6^$_8H>WAi~u#>zF7J>^|DFRLEqtT3~ zt*L4&Gp?R_LY}rRb*~M}A8)5}ITd;XLFYSK#?1BKSEPk!#x$kCPHyGrBko2pAqOkPU0`L~Ngoka7% zsGBS7GIz7|v3@b63$wO=-3^hUP`_Zy^8V`O=vR5|=<^k;2?UE30Zja@`)%{1bP#MM zFiv)LxP~GQ2fZR?Y-zY_xFz(3mlYI&5)cIg3WOd#D1jKmO=u)c5KoAZ1J=)E>5Nl| zQ_b-Z(SX-LCcZ|wVDW=Ph*?%KT5XDsSxKu%JNjQXWivHV4lRL){hgr&b&>QC&LERyY0E| ztGQV1;D3g^?JF!Xozf5wTuohut-!*X9dJ?@zTVm*2vdGvYt@&5Xz|F{KP;e$CIz;| zq>6yia3mTuX~0-sT%48U8HWq%xe#nt(li!$izfiT2Lc#zjgaD`@O$epc7X(bqHy(u z2ts@x4%ahAO+3VB6Z*8@S652xoixD0zRh4A19D3hYvB_hhj^!n6`1Q4*HVUEXoAdbG-r;k~X zEa)}==yoHmp^+=B!T3ylqn;eaE+#o5*fl0l z$_u8kQTb=&we@90V9h@>G@n{rR%TRN{#Nxmjm{fGzmR7Pe(TJvID{S^VWa97%tDNltQu zS&Mrmi4vaC)1lfrgKI{U4QLOVi2~($w9mKy`-fbpAM0xt=RSI;_pBoCd3pY#hep(S)Hml{eo^(uE?D z>nYVUt&g=&h{6bUg$a@FRo@T_U0<`&Ny2`GKrMKzWuJaIS*`QY8C60{w4K) zuCm(hM zx;o7d^u)8(5|VuuDU>TsX+O?Bh-v+d;*GFe-R3z}8QCec(y?mg%`j{q1VC8|U}455 zt$1yEaGqrraciiR_LOC2p~>!n z4Rb~MIp$yYCit>1r1$qO<}Tk$Wt8m#lZOJMY{1kx>!5KhI$?JK2u=(;5(-DY^;S7j zgN3?&6jqIj7%4j6Ym!T~{m5-VlceJA5e%eIruaCdDWs~Iz24d@saKX>_%3z+D7{U6 ze>F>M!Yf!9RofjP)D<}UDS!1;{yl-spRrt%X zKSO>lg-W=UW-Hl1$Iz~%|0^OHSG%T|GgfVV7$(a7Qm+Dmq_L`@De53VM{QF^%YTk) ze8M+&=ng3S(tg|hd(O(`_W9x2$7_t?Gpt_)RL#}GGWk^;$+e0P7CCuD13XD1dmz{g z$q^JvMmP`{0W7GZCX_zng0^fYMVP8{BShL(xs?6Y?XOf{v&MkRk@7byp?0MOcAR;X zHc2*Li!#c_kVY^b6by76irz#goJvoP*X|KQnP(k;`J23Z*JmKgEv+?flk<+vsT%{{ z!R&rh4P0on4;&XosWPb=<(;ztoIPZ^eueNUM2%fcb3cC%f=KNVhaG9S6pTjveSU_k zXL5)74^&o|0zs(27k&l?dvV=qmD_dDC{=Q<8<-5=&#rCJWK#-t*fWi%w$!oXRb z$6tA4{O? zqq&%N*}Y_k-SQ72%Jm`HuZ?O9GU6ID3NO2lEf}~H9wzoNElihGj+hIN>&ZA1(SFWT z2;Fp)cWaSY%x)_)2q0{7IqBiNPqa3K1Yr5%)ni5j-!sE-p$s@k#{?$I4ipehmWo!DJW0dKKkoW@J_qfkrr;_;2m# z2CUN0b_`RzJm$%;4U@LFTm!^6v-ns4DvjE0M^)6`$8WWjo1LFGwh$FFS`(g~(@_?o z6?N@v@TI+R)fcrKdHuz`#z*%0mkH;=#_s^mY3JQjS`oQ59gHtsTwYB{O&&+%Uj6mp z$X-o%RaZsHIt%Jaui%TjcZ&KVR014yY9qwTdb2QR&#clkK9}`gs>KndT%trH9w4R2 zR>5v&G?h|UY+^`<_-Tc=?(E4Q$zId~m3&kt4lNhFqg=4gMLeCV>+ZihVIK{VRGkfc ztY~BwA<64Zz)9IwpkBXWZy8Qm-I<;^cHV0pTC?QgKMPFE0ca!2#XGkp+m+lqJS(;7 z6xOKNdvApBur*RQOdU6TLGa$C(hR)lAEEeoMZ=j4nMU82s#Vpuw#N;$pwC3d6RGEg zMNe%>=FL`u4QND6nQB_Lub0w8Tg&abKj!2F*YDS0eJea&T@6kRP7Vxn=Dy?U##&~x zGh*h7ipq&384qcgQm91Dt=+%fhFIJN8-3LfhT83FmbQ;Pv)_I?|YFX zHdG@>;`f4Hu|TE6kWdg$Ij`euVuKd;mD^W!xe-t3f262JSDR7JDnK~J&7>oDjzg$> z%o1?R&RAd+n0?HFDrSFe_~mckse!J~T4^_PeH34BlSb?b3sG2$3>J~iDJ*2lrPChA z2_z9;KUNSXl_%2*Q6wJJ8*`^1rh<(XkdeqRj1@5^P(sGUfH4Jtm>DlY390}-1wL;A zU@v10pc)Z~h|Z>HVgVi#^w{kUj`L;23k~MQ@3MI;Z3WY< zwPWl5_Yn?YoG}>c#~{)=dByQT4sl9@kox@(EaS>UQ6LcStSuC8xi^`Ibfsv1`Yc^& zNaiMZXF=k{JxxUvl&1A?YV^Ey2vYT{Ml4kZLSd3{PQ-FG1nQD}47c2G$=$~~fNaQ?mU%-O~}k2}3}4npz0(vZ&Fgbge8i9GTwT}F@v6U#__n>PR<8=KKI_v{1v#F5~=9eeL7fK zR9-S$s#7n+KeK-?p~JQGFQIYd`ID?=TE?c{U6Zl=vU{!^MVE3=NkUf|Vcx$EV|_WI zQ*rdouhw#2mz0#0UW<;>6<^~`DxV44II3AeGy>$Y&6_DvtjY)}T&FOwjq-9TgC(YW zrepcg{0iFdRN}tWRqcKna`5!;UDY$@R`v7&nxJTnmXw&Pnz%TX1D5DT4M*oT9^M#Q zN{Pxu0akEsl+6g0$zr$8{eBtEk2fVK;F>BdF2b6+PM}smg`6DBjA9WYPZ-a>Z{za& zYaz&d{N%cdhlFXDjdzMsAs2#dy=M7OJ^uj^D0=FBa|QsEM%?6YCI2ek&- zmq{*1s^!PBsFAZJQc&?dJ>yen@1)2fYfjPy@j>w+;yqvBR34s<*KIt}>9zbHJKWAr zc8wOGYrSL-;ZQ0DwUlFyg)&^{QNYpE|66lBld&(CvUtik1$~phyQdP)Mhh!GO~zR; z)7iONGV~mzX?Qf#xcu?@=q%D^Wv>$RGX!%)qIIVXM8?Lx%sW>Ca*kxSU>pL8_BgzD z;<$u;?{t7w(dT_|2-Oz^Tx1JvvHbRsdw_%dL5*I?TYfS|iXy+j?^|lAN@=NBX{^7h zFp_f0e);wBnlKOVp|>~F1Ty!Xn~^Nkp9&`4*DH_4Nx&V%0}J%2^vH+d{tL1U#pwkz zkP7>+cZt!{2&1f3@#Mmih!XK1(kmOAWT%w6mdIP!Gby}dhJwf_%G{jn!!D=2aX>_; zGQl>VN4$7VpD&YJ{4rPhz}QBwT6ryXK7zS+(x8-?eXQwf`#6<~&a#=>8iEHRyoWTR z8dFsZMHjt~q3db)&m%IY$f;o1dm?*WH8#>*wyvz_XqV)e?NBwZBEuOtTz)zl6tG&c z1x-1-%$W@FGH&De?md5fa_sd~;TPj>Sty;`p~4%LI5`Gv&)y_)0h9o?FQ)anqI}q9 zNZ7;h-UMg}ZWv}0*u16w!zEAtNUdqcUMjrpfO9ucis4(;My9JQ1pH4x5IbrwD~rBsNcj4+4ZEzyiZlu+u|k-zj9Tc__q z-ouTBel+9CS? zVd_1gnrNf0(MbppiV%9o0099h0YXub-g`$tH1r}(K&tfKdk3k~1SyL2-g^g8X@XLu zNE48foA=)D`~Ul_tjuJRwK7@rWX^N;IeTv{)-rYB3g>nbWfIZ|3!TDx1(N5B?|IF! z?qBx4zlS>hVT}ey0_wm<-oE93mm%6oDna|W-bS$bP?pDx3v|H!aj_iV!2)AzN&wf>J2UY% z3V@hLkW!-O*m^ffV6G;=BIDUl)6X%x1NnX+c>O%d2u$ z9gLR5HmS<3PPEFzcYJ-%QCV1@IZl+(tv)%|RG%6DN%uMyJ00ECvJyWhu|x6hZESUu zBtY!|7>dyJBQ=ym7y+nROv8Vlp?mQ?qU?T_d34)vmJ!Qa%R(pXdkXDHkUbC|fg%t< zkeHs`vYZk1k^R2W*mM)_mhVrZKii(!`K5WB+GkHHiRGx`)jn!Y;EQ487QfQq%l7HQ zexI={VKFYWm91@hj{S=(W(h;}+mq*?JYOp*56R0E8d*z3yq^x2IH14IQot*2ZOjOJ zIj7I=to8X2&bfEAA`P~ZS{h3RfV%AdVG{hDOF#@h%@m}8v;c|%ZGRm5x=jrmHw}OB zivR|sd*}h4IBf_bT7Z>B;)#%CgUNTM=S7s)t7p?4Q+{*T$#Gq-VSAK9zdr0=M~Sa| zqc#+82k;UA2uNLs{GL%{Trc%_%U|_ex^XCVZy{aC1{A_1!}63^9-o$*C=B!q064(l z2tptj#GQc;+;g=8G{fyR6?IYt!#Q^VA>=SID->Lmg(M&g!lMffT4qgsSi$-1*yoG` zKk{L)7|Z=3q0r5Gv43RayY%nrin9E9P4*BE``h0z(~xSDcF&;CX|a~v-B^zg+zB(C zYZu;OG-71Mg@B1+qeNV@LDamLd;7LM?WR@W*uq1VIN9Soscc1o`R!k=>aag%s@#vO zc0W`(e*92MT}p@APB(B)E^#Q^lWpJM*c{R<;46?~D14SL>FQD-CEI1; z&Nl!VEP*8e3b^v^cAMouXVUW?bVqUVsKccfvzXS;9MBMuFx`mXm`E`P9gCY{4B@Oc zlCz$kD-%b==xvFQjSjZA_qhZyZgAh`uENdH*+;9UZu=r8+HkqZEzk`jgI3NIyK!a-@gn-_x8a#C>z$4OHlzvM;HQb9jk%*K;;7yddQ zLjqJhdANijyYQVir;E1}Z5XfHn3y-?VGq0>t#zauHQzUNx6T%>D*N^-Z_P6p3?Y$bB`461 znp0NH&D)y3JF}oU!$KEv#5%0Fuo)bb9U5#CH{9JlJSt}|tHe1|EFTsY7EhN1=4$c| zQZVg*OZCO37l)!jUzVsu^g*0CF0DX3U46clPbjU`yA)X*)n-;z#=f*x?$3>iJ#Hxp zIuC6=xODl78mYOs1)53WulFcI#5RHb$VVcbHVeEsKo3p=lo=o)r47W3Z5ctNpbF+l zi&g0T!770>;^VjAo~Lj@yCi?7g}8h;ZfPm z=tWy!2F0{Ku~Vs~AS*GbK^U<(qqw+|VmxH%!%1_E2icW|#EtCvpRIfwp*9dd+6rjM zZ7(#xWB7G)$xKNYx?lt7Ek)X7zWg48)o&z)A+C=9{z z6JTCcF!->-0^ZHLvW%U<{)AxiBJn z?f*HS^qE-QY_m@-q?#VLH9l;No9TAw`54+~D<@s@WlGhz_@*QFs``Hwhr3lUUdx>t zUn)_*GlP{1NRX!5ulNxzG;Cxgq&tEDu&_|LA%oJo?xODvJ=^z?1>%WhF6GNt1ef}klWW>u zeF!leJUNW7y*dQyy?G{j@PWIk9;*~Cy>k|p9#@|s z*lFN7S?}31q^kM_0#FV z4=;=iC@h(KNk=UPf8;|9D5%J z&!Yhd(WPcs#4z9Zp=35~iq&TH<9y2OWchxt%*pWT-T%4^=Yj|pJQo7|*nwv4*87tv zFlP#l=~ZCYIY6$)3YWcM5zg-MwbG#WDsobyg3($;@N~qeK)_7l~oeY7< zgq9Hj4*3v&2`k|1Bwc8J95ZAN`smk4F@xD4`$iIs0FOjATNX)-Gv7^Fh*rsoj~`zY zqkN2<0}&Djv#R3|urlI4WaDWZ)`Qqd%R#tt@P&n|P}lh8gvEV~HXd8T*5W4WKFcO2 zHkv_UUtF+$$5E4c)~m}Y8y#jvvU#}l_Q{_g?{;b`T)o`+Cs{i*vbIg(6kqn)o1Dbo zSRvy0Dou$B6<%3qFA@JW&~H(IATURCUH5S0nuyPdFS-gmb0n-9L%Q}6{pL` zDT&{68=_r0kG`diF-9JW@;Z}_+ozfNv+>FO?b+m?oiB2u{&-5~Utsiu)PHv^2A>;T z>h|t9Titf2#E8rO?)Lv*x9ZUH%x=IE>i>8AyI&Ol_>;bL#MIy@VcG15AD-2&x)K6bq#wDO%R#(QVweXctWz_eP>S6Ux&mZ8Glek3rW7BU{WIIm8Yg=wY z0bOcLbSIC8N5^WRUBW-!{K;>KNm#g%6`mDL<6=7>EsPNXZ+FUh!js1 z4$bJ8jGXb54;LTXDk&4ERVa;>=Kp=0@iZ0OsreAgg-GF1@t8Ilsc7-b%T#;Ud))VK zZeaH6v|Mejyz8;w&BeA)?^(xVGrmbp%;}w()Xm{Jl^s1N&!`oCo-8`gBJ#7YIpC%y}TBV zbdxP8I9jOkapy}ZOQC!zY!tF zQKZe<;b4?qaFRVObEHw?HOB{)Vhz67(s;Q2wZ?;Nw>X<{tGmM&%P&G+#jlpnVv289 z$n7u0@6I$e_}6CDPn25`ZK+sY&4^HDQani#)T;;x@{e|4Na$dX>-|505b(VUhIL>{ zc2h=C<8?B^Qifv%isq<1Rzc+g9cUY*MUvT{6MG1$P%vXjzsnF%%Vv(=BaN@>EdG37@9WNA> zd5j`@@Wa23`U@Lb4i$RJ;-iMBD9vDU8n3c2`LpCl2xXV=?pOLh>T-*3A4I*)vD5y8 zhIcDMB%wrjBG^D15tughkR_CHbRc_l;K(ZkypFx|!f41Co^lJE4#-N6%$$@$PAL>^ z?~DP6_ZKpOykC-7ghjezmBlwDDNFq|Uj~&!W)-RaD`c_+#7+zf7h8wd^~wi)<6(frNwI=EH!@5H_$%B3|4QXw_mDfZp32W5fnWy zg&D%^eY?#!JFfybyu8C-y0j`;uvSNtdsx8Nwd>e{YBo!re|SCw97VGssCb&n&G&k; zTk1vj2Nsl~jIE}YKCi0Y?+kb9sirXcsoFb=w`ki{yxi4WL@JL>0Z7W2DskD!s(9`wdFsklR!dAxitU$P>mdOf zB53#cyS((Xps>VTQxV?QbC$j^Fr@_ueVIQzE1iQ%;)th5X)4A^2TRSA1{2Lnr}3$> zbqnf8oxZHG&CxhD>yrQr6-&LAfSz_wLT0w!;+5?AI7!y}+()ebZkG9Fme`WXWI2A( zcB>5*w)Bkb9CPgPVo0=3#m6J(wCb)a4z>`ur>&^*E)KW6%-R!cxW=*BeZZ{rv9?6s zTh8}oE2o-B!Ch#;y&QZ`dR##ltcnWsWP$q8c6nXu1B(Trq%Hw9`399__ccFsa z7nK{SI%^;z;6ANCqj_Ovjw}a)2o#K`ubmYS zpp#?-sPtNF9+PDsL9c2NySZ+=N(;=>VZu0`;?J^r6l^PK`bYOd zi1lZGv=K`IKCSD~jnSd5RWiv|5E3jNhLezK{jyF(HEt(kOXiPd+E$D6ix#4y{m&+D zn}c!Q!k(L@bXKz}9>sf(@5yb-te;>y0=9Ctbk8qV@*6KcwQqoyKz?IO1bY&aab3NI z>tMLD?sd=Z!p)M@IVN&@#s4u04M>t02@fJ)d|DS@Y~HP2pIcQDbp?;^v2`%q?3((a zUi&Vi-JnnW4ud)U-$0MStVNKT^xgd&_`gRm`F=l=HT!~K!o2BlU0iS;&oclF0z zT40F-vM+r?sO~+YgSEB_Hf+)m$ccFas%7vCmLNh^R{=Th*iU3ExS@_l7534zDa5CU z@WvRiZ9>j!JWksV(P_T1$jH;3M%C%xd^AF#h38#bn2Qy{OqnD_Bxh`_jHJTAD2o8vO$p&j@`#$XFG`DbnaVX@GI zv7y0ek9Ii~oww9>Q^c1utdRXT&G*VhT$bFO`qTB>K7RW+vtxNz>xpDerd0`Ql0blgHkF4yPC;v2Gk{ z<>l@tM~}^>3QpIaNWN+H_4xZ-;%DX&0r!cTi8MO>sUwUbLcyA_B)9;iB$J};d&J5Vp+V)!WZ|neYVK7)bN%e=-)hFeO zs>`m5J!xwcp#w@oN7ea!wB#kHVq zX*RI(+@}-$j);VEF1qy60%sniH_B63UtJ-bb>5OIGA$?DUVyPVx>fR7WBILM!0%?X zQ!Ty1e&`@^yof_LKtSZdMNmj&M32f5{ZtLo!Id_|>mjKsNj+F33I16q3ztYHNAUU5 z;3u~byZJDuB@;f+zEe-JC4ZCARj-MxuCV=PNOhn2qELlgc~15imV3b_gG(<34h0P| z+I15Nbj&Opr+8VfepB~zj{Vi~p-yLgy@!MthXI5qLHqqx1aAC#B;Er<`^o}LeMX%! zMteD^&yu5dySXp?Mg z6j^CxWKz|y!Nf+Qd4D)X`MuZ&T(gx2SK}*2KO!)4h{q`;+Ac)Uf=J(n^n6bD_n0&@ zwG#>0CCd=xzjDA8fb)~@n;#E@od~?mg@y}6wp;RF0cw2`>?C0u2SFkknUPYMKT?B3 zjPO*ygWJEwA)uf|Z$4uv%TuO^NmI&-iw^(u!FSn9a;=#D7QK23jMtr~(gDUF0P$R} zF{agn9;?$Q4HHZ|NmC&3l4N>lU$JqDk${`iaU6g0G^4o427@#psg_`wR*o}mLo>|~ ztDcF!4R|Ro+Ob~_Vp1j_>b_5V+@V%*LE$=}mHWZ2s`agdOKt84djV&EE#{Rq=cow- zJp(x>g?khFA}_E^Fw>jB2_xaNwQR>1RSusktCl~s4#xiGbad==dcViOS6KlA=-M>> z&Ktfc<4o_VH5eMaZuHL(3dakVo&LDE>R24ab?%ddZXTnOYBl-3BT`5xVlUAX85 z`b@3eb#-AnUUaEwscERFXu0K_KlxUG`JXWnfTcD5pV1NUvm1cDf+Rg64|0x^8ODNz z!03-2JY_xv*yegPL{tsdOrU^F%h8$&mDd>0yYGeD?f8gJxdLrrwSM@4M|NfhAIrV(6A14T`w8#2R_Qjfp{2I zB>r6(i?YgbXwFEb&lHaq4BS02WJv5OO6BJ26{c)hqqC?Cu=g7M&pt1rkSD2kY z`l$&`p%Q<6C=X4{aiPwksX2X$0_1gBG$-svZLvl%hT2O8r!D-m2fWs zXtn25fEOBYj~u~Fbc4xhPmOQOgScMC+F?EhL8{d(18HhkKW=~Lr8HquvEh!fh_*K8 zEJ@F*g^9LJHbdyB>)K24ZQWPCt6^bjr58YFP(^(}wo9`5c9pqy zY_V9}TeJ8r7uc?I7OIf#{`+wCs44R_nfWeG<~}f0r65Eq)HihV>gbg#j);Lzqu&G{z%g0Rx8~%z6wD_%X3EMdONbuWH|>XKhDq}@E}H(C zo~C1=i7bM0KhR+^H*-vs>305IZn)^nv5RE>d?P7VZmW2T3=(3r^o?+N1NHu zS)tj`fY#^>uh@vh;WCjFaCA zf>`M>EExd zWW=Y)_7;y&&(_CH0^2X!*d$*fR5>Sa`!zhzlHINi8lO&lT5wm;cB4Ou_@nI-6L~|u z>YhnIbA5c>U?-_pr2v2peVYB6{;uL8=|7dojB}-MX%Rs2M;_3Wlx9@zM%srqQ9s*w z%zyew1onWlqcmQAF-|m(Wl4`eN3?wUqAZwA+wSzPw8Y2%L6NVf#tP1KS->;T$!Bqm zY%Eq*_N${AYVCZfHi}BwMHp*5qA(}}nS#ZTgw01dpj>szf4*cE6at^oo^`aVu!}BE z2;tiLCr2N-G3aKD!IGIDb(;@EI zB5|Hmj_UAZ$8DJWCt^Hd<*^&p_-hT7n<$vI_;u<{YXLz|pGuYaQDw%3LE9S_r&ivS zk9@_=WzYHtK6iP%X432O!p~C%$P7O)-FE)wM7|~F`6!8I6tjP}M=%cH%SflUq&E&k zKKnzgF~UBd0ZlPnP&le@IL=wh%r~MC#aaFR=u~CNEtb#z@z_*rQ-fqdj>**M@3WPI z@*209Q`G3`x5=%xi5KRfD`RqlF=e>PZV1Ylk;r#BPvE6hVKN2);8*oIV8P6duLq48<8ORY>*O4Jjpp6 z9ZC#J?w07SpC`VTwW>l(%?u9HgZ6F`_RJA>lf%-K2_a#jI<&oDGF-DEZ}hz#NFTqT zjsAFFs5J-fv4?iBe>oJvNe8SW)4zJvBh+`dj>2sgf>MLhR3=p z-)RP~wT!YpMs^B4NEC)XevBgF*B~nmw4l7W->Oz0ZJM#nMdSC-Mc&+4?{QQ!W$o#Z zCmXrCXL+s?`cETHxbl64FsBzbz;(|b9$T!DW`~CR(eu*4?|y0XnK>3spDyC_JL}uB zyQ6;1{A{@3{WoQLguy0Bd4KOf3f}aj!F&z0)TAR>OrbHr0WvS44@$3QPycM0I~oqNjb!% z>sfq-6iCTMS=GkCsRq;tRZ>7kq|X$^o>^=^P_D^gd(UQ)b=1+O(Rh5!{$7Ct=Dzxjf>_%S_Cs6S(loY#A9D89z|=vn5(S z4euM`>T0_%nBS9aK{x&^xNYsiTwUEX`{jwb{?936YtmN$p;q|potHfD;ZK#;M1Kek zZ@~+!SsROX^vl4yZV2Yek~c2c4#@dn!BV^WNtR668}5#TZ*~6A2o6@ER@F$>k5)a8 zmC}v)Gwp4rU1VX(92#RXl;i7ccb)$%OG>-s7|Bs}j*1u3e4niv(GlRqo&In;lPzBAR`@_8_yU%0O-VRMP+PyPJkU@$Hqf z2FbT7HYb5nsaG70FW>n7Xl|^pk?fR&{|-c@s1$IO-`PL#{cHamBbB0pIgvc^={f

    ym7jO29;iG_jzl9my?zhw1E z#z6#VVGDAIHuP0XnZs-3&roXKpJ^ZUe6meyY&^ynPnH&o3@Z4ih60v{RpFcTSsJtg zMU8_l@UK){W-g?aT5$=_9Q>?ia~0pX6NK8Ogv}6eRa&Ul^d3sE*!@yqFt&bo`MH*i z6MVSlbhOz2J-Ff(vBwVN0bbtIuM9w`;Omjq&?1~Fe^aN4#rEHRe6$+{Cu^7&#`m@U z?tloYT72>Ymy1X6X@mPm!enI6YDw8ZJcPLPfCR2aZ!dX={-S9M+*q4wxG!Bx#Zy!c zuQR!;g`@L$?m*D&`}MeQR+cf!Li3D7IyV{rvDpd=j3}7yz`^*6J|ZL&`sa_}d>&1N zk!vg1Iu8*_3yh*hzSz-a-_y3}?IP~_@&4tbDWlKlBz-IMFKRsl$MgZhqjVbV(!Q+^ z?IcI^Bwiu#y3p~w#XMjTx6XhM)QQtHI7J{+1L!%SF z;j)Q62JFImBJq&m?@EoUThj3#*$1D?F!d>5=`n(w+fuemz>c=4TW`Nx!^D zi#1_lJT^N(c<)pO^Sq$|AiFsOzxQ73EloH2>jcT%52Sbg zUE_YlUO2U@`6qx94IOe7V7K)?4+-v1l-_c&AYRs5J?!YHdad;6uJ-rk;=ieId@(7` z7frYK3!$uh7EE1hiuoEPG8J!NuVyGjh@#pGe{pao;YqjYhu}+3Kje%5h%JLqB*N~i zY*m0tx$yN=2t~_M-x8M{eNUZkk&GktlHF2al|J0!k|5FQK+LL${6y6RQW7C1vQfZW z4gUITjLX3D?~Bzhuj-Xp{R;lIS6h^Se@`)CLvLc*Q3u0%*?6tpdafnG_o~+mQ7Mg; zXo^qlCKe;8viZC*j?woSXDZPSJjK)VsI>)!*?~Z

    aCRe-=JD%*+A@X;7R0s*lg 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 SgeC_GK$|8*0pY*ln*Rf~-lsJH diff --git a/src/field/arena.ts b/src/field/arena.ts index da74063ac06..afb202ecd23 100644 --- a/src/field/arena.ts +++ b/src/field/arena.ts @@ -707,7 +707,7 @@ export class Arena { case Biome.METROPOLIS: return 141.470; case Biome.FOREST: - return 4.294; + return 2.590; case Biome.SEA: return 0.024; case Biome.SWAMP: From 6733d81d11ab5b13c991cd2d52ac5ede3d9e4db4 Mon Sep 17 00:00:00 2001 From: AJ Fontaine <36677462+Fontbane@users.noreply.github.com> Date: Fri, 29 Nov 2024 20:59:43 -0500 Subject: [PATCH 013/119] [UI/UX] Pass egg hatch count to egg skip prompt (#4913) --- src/phases/egg-lapse-phase.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/phases/egg-lapse-phase.ts b/src/phases/egg-lapse-phase.ts index 4c57be09b79..8de26ee3ef0 100644 --- a/src/phases/egg-lapse-phase.ts +++ b/src/phases/egg-lapse-phase.ts @@ -34,7 +34,7 @@ export class EggLapsePhase extends Phase { if (eggsToHatchCount >= this.minEggsToSkip && this.scene.eggSkipPreference === 1) { this.scene.ui.showText(i18next.t("battle:eggHatching"), 0, () => { // show prompt for skip, blocking inputs for 1 second - this.scene.ui.showText(i18next.t("battle:eggSkipPrompt"), 0); + this.scene.ui.showText(i18next.t("battle:eggSkipPrompt", { eggsToHatch: eggsToHatchCount }), 0); this.scene.ui.setModeWithoutClear(Mode.CONFIRM, () => { this.hatchEggsSkipped(eggsToHatch); this.showSummary(); From 59925648427dc6aeb209733e2d14e61e0528cb1a Mon Sep 17 00:00:00 2001 From: Madmadness65 Date: Fri, 29 Nov 2024 20:07:31 -0600 Subject: [PATCH 014/119] Hotfix Forest BGM loop point It sounds less jarring now, loops a couple seconds earlier. --- src/field/arena.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/field/arena.ts b/src/field/arena.ts index afb202ecd23..3cbef659d7a 100644 --- a/src/field/arena.ts +++ b/src/field/arena.ts @@ -707,7 +707,7 @@ export class Arena { case Biome.METROPOLIS: return 141.470; case Biome.FOREST: - return 2.590; + return 0.341; case Biome.SEA: return 0.024; case Biome.SWAMP: From 3bf2059aaf37896ba3ffe3c89f9e7bad7dcb1e6e Mon Sep 17 00:00:00 2001 From: PigeonBar <56974298+PigeonBar@users.noreply.github.com> Date: Sat, 30 Nov 2024 01:02:29 -0500 Subject: [PATCH 015/119] [Balance] Safeguard to prevent Paradox Pokemon spawning in ME's (#4915) --- src/data/balance/special-species-groups.ts | 46 +++++ .../encounters/dark-deal-encounter.ts | 4 +- .../encounters/safari-zone-encounter.ts | 14 +- .../the-pokemon-salesman-encounter.ts | 16 +- .../utils/encounter-pokemon-utils.ts | 2 +- .../encounters/safari-zone.test.ts | 173 ++++++++++++++++++ .../the-pokemon-salesman-encounter.test.ts | 19 +- .../mystery-encounter-utils.test.ts | 12 +- 8 files changed, 269 insertions(+), 17 deletions(-) create mode 100644 src/data/balance/special-species-groups.ts create mode 100644 src/test/mystery-encounter/encounters/safari-zone.test.ts diff --git a/src/data/balance/special-species-groups.ts b/src/data/balance/special-species-groups.ts new file mode 100644 index 00000000000..eeba96595a6 --- /dev/null +++ b/src/data/balance/special-species-groups.ts @@ -0,0 +1,46 @@ +import { Species } from "#enums/species"; + +/** + * A list of all {@link https://bulbapedia.bulbagarden.net/wiki/Paradox_Pok%C3%A9mon | Paradox Pokemon}, NOT including the legendaries Miraidon and Koraidon. + */ +export const NON_LEGEND_PARADOX_POKEMON = [ + Species.GREAT_TUSK, + Species.SCREAM_TAIL, + Species.BRUTE_BONNET, + Species.FLUTTER_MANE, + Species.SLITHER_WING, + Species.SANDY_SHOCKS, + Species.ROARING_MOON, + Species.WALKING_WAKE, + Species.GOUGING_FIRE, + Species.RAGING_BOLT, + Species.IRON_TREADS, + Species.IRON_BUNDLE, + Species.IRON_HANDS, + Species.IRON_JUGULIS, + Species.IRON_MOTH, + Species.IRON_THORNS, + Species.IRON_VALIANT, + Species.IRON_LEAVES, + Species.IRON_BOULDER, + Species.IRON_CROWN, +]; + +/** + * A list of all {@link https://bulbapedia.bulbagarden.net/wiki/Ultra_Beast | Ultra Beasts}, NOT including legendaries such as Necrozma or the Cosmog line. + * + * Note that all of these Ultra Beasts are still considered Sub-Legendary. + */ +export const NON_LEGEND_ULTRA_BEASTS = [ + Species.NIHILEGO, + Species.BUZZWOLE, + Species.PHEROMOSA, + Species.XURKITREE, + Species.CELESTEELA, + Species.KARTANA, + Species.GUZZLORD, + Species.POIPOLE, + Species.NAGANADEL, + Species.STAKATAKA, + Species.BLACEPHALON, +]; diff --git a/src/data/mystery-encounters/encounters/dark-deal-encounter.ts b/src/data/mystery-encounters/encounters/dark-deal-encounter.ts index 2b801d70f61..05d6501f256 100644 --- a/src/data/mystery-encounters/encounters/dark-deal-encounter.ts +++ b/src/data/mystery-encounters/encounters/dark-deal-encounter.ts @@ -8,7 +8,7 @@ import { getPokemonSpecies } from "#app/data/pokemon-species"; import MysteryEncounter, { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; import { EnemyPartyConfig, EnemyPokemonConfig, initBattleWithEnemyConfig, leaveEncounterWithoutBattle, } from "../utils/encounter-phase-utils"; -import { getRandomPlayerPokemon, getRandomSpeciesByStarterTier } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; +import { getRandomPlayerPokemon, getRandomSpeciesByStarterCost } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { ModifierRewardPhase } from "#app/phases/modifier-reward-phase"; @@ -174,7 +174,7 @@ export const DarkDealEncounter: MysteryEncounter = const roll = randSeedInt(100); const starterTier: number | [number, number] = roll >= 65 ? 6 : roll >= 15 ? 7 : roll >= 5 ? 8 : [ 9, 10 ]; - const bossSpecies = getPokemonSpecies(getRandomSpeciesByStarterTier(starterTier, excludedBosses, bossTypes)); + const bossSpecies = getPokemonSpecies(getRandomSpeciesByStarterCost(starterTier, excludedBosses, bossTypes)); const pokemonConfig: EnemyPokemonConfig = { species: bossSpecies, isBoss: true, diff --git a/src/data/mystery-encounters/encounters/safari-zone-encounter.ts b/src/data/mystery-encounters/encounters/safari-zone-encounter.ts index 0353d52a592..e16cf2d6973 100644 --- a/src/data/mystery-encounters/encounters/safari-zone-encounter.ts +++ b/src/data/mystery-encounters/encounters/safari-zone-encounter.ts @@ -9,9 +9,9 @@ import { EnemyPokemon } from "#app/field/pokemon"; import { PokeballType } from "#enums/pokeball"; import { PlayerGender } from "#enums/player-gender"; import { IntegerHolder, randSeedInt } from "#app/utils"; -import { getPokemonSpecies } from "#app/data/pokemon-species"; +import PokemonSpecies, { getPokemonSpecies } from "#app/data/pokemon-species"; import { MoneyRequirement } from "#app/data/mystery-encounters/mystery-encounter-requirements"; -import { doPlayerFlee, doPokemonFlee, getRandomSpeciesByStarterTier, trainerThrowPokeball } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; +import { doPlayerFlee, doPokemonFlee, getRandomSpeciesByStarterCost, trainerThrowPokeball } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; import { getEncounterText, showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; import { getPokemonNameWithAffix } from "#app/messages"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; @@ -19,6 +19,7 @@ import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode import { ScanIvsPhase } from "#app/phases/scan-ivs-phase"; import { SummonPhase } from "#app/phases/summon-phase"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/game-mode"; +import { NON_LEGEND_PARADOX_POKEMON } from "#app/data/balance/special-species-groups"; /** the i18n namespace for the encounter */ const namespace = "mysteryEncounters/safariZone"; @@ -261,7 +262,7 @@ async function summonSafariPokemon(scene: BattleScene) { let enemySpecies; let pokemon; scene.executeWithSeedOffset(() => { - enemySpecies = getPokemonSpecies(getRandomSpeciesByStarterTier([ 0, 5 ], undefined, undefined, false, false, false)); + enemySpecies = getSafariSpeciesSpawn(); const level = scene.currentBattle.getLevelForWave(); enemySpecies = getPokemonSpecies(enemySpecies.getWildSpeciesForLevel(level, true, false, scene.gameMode)); pokemon = scene.addEnemyPokemon(enemySpecies, level, TrainerSlot.NONE, false); @@ -526,3 +527,10 @@ async function doEndTurn(scene: BattleScene, cursorIndex: number) { initSubsequentOptionSelect(scene, { overrideOptions: safariZoneGameOptions, startingCursorIndex: cursorIndex, hideDescription: true }); } } + +/** + * @returns A random species that has at most 5 starter cost and is not Mythical, Paradox, etc. + */ +export function getSafariSpeciesSpawn(): PokemonSpecies { + return getPokemonSpecies(getRandomSpeciesByStarterCost([ 0, 5 ], NON_LEGEND_PARADOX_POKEMON, undefined, false, false, false)); +} diff --git a/src/data/mystery-encounters/encounters/the-pokemon-salesman-encounter.ts b/src/data/mystery-encounters/encounters/the-pokemon-salesman-encounter.ts index 77d92e3749e..61a4de908e9 100644 --- a/src/data/mystery-encounters/encounters/the-pokemon-salesman-encounter.ts +++ b/src/data/mystery-encounters/encounters/the-pokemon-salesman-encounter.ts @@ -4,8 +4,8 @@ import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import BattleScene from "#app/battle-scene"; import MysteryEncounter, { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; import { MoneyRequirement } from "#app/data/mystery-encounters/mystery-encounter-requirements"; -import { catchPokemon, getRandomSpeciesByStarterTier, getSpriteKeysFromPokemon } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; -import { getPokemonSpecies } from "#app/data/pokemon-species"; +import { catchPokemon, getRandomSpeciesByStarterCost, getSpriteKeysFromPokemon } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; +import PokemonSpecies, { getPokemonSpecies } from "#app/data/pokemon-species"; import { speciesStarterCosts } from "#app/data/balance/starters"; import { Species } from "#enums/species"; import { PokeballType } from "#enums/pokeball"; @@ -17,6 +17,7 @@ import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/game-mode"; import { Abilities } from "#enums/abilities"; +import { NON_LEGEND_PARADOX_POKEMON } from "#app/data/balance/special-species-groups"; /** the i18n namespace for this encounter */ const namespace = "mysteryEncounters/thePokemonSalesman"; @@ -60,12 +61,12 @@ export const ThePokemonSalesmanEncounter: MysteryEncounter = .withOnInit((scene: BattleScene) => { const encounter = scene.currentBattle.mysteryEncounter!; - let species = getPokemonSpecies(getRandomSpeciesByStarterTier([ 0, 5 ], undefined, undefined, false, false, false)); + let species = getSalesmanSpeciesOffer(); let tries = 0; // Reroll any species that don't have HAs while ((isNullOrUndefined(species.abilityHidden) || species.abilityHidden === Abilities.NONE) && tries < 5) { - species = getPokemonSpecies(getRandomSpeciesByStarterTier([ 0, 5 ], undefined, undefined, false, false, false)); + species = getSalesmanSpeciesOffer(); tries++; } @@ -164,3 +165,10 @@ export const ThePokemonSalesmanEncounter: MysteryEncounter = } ) .build(); + +/** + * @returns A random species that has at most 5 starter cost and is not Mythical, Paradox, etc. + */ +export function getSalesmanSpeciesOffer(): PokemonSpecies { + return getPokemonSpecies(getRandomSpeciesByStarterCost([ 0, 5 ], NON_LEGEND_PARADOX_POKEMON, undefined, false, false, false)); +} diff --git a/src/data/mystery-encounters/utils/encounter-pokemon-utils.ts b/src/data/mystery-encounters/utils/encounter-pokemon-utils.ts index fc85754bdde..7adcfdc4974 100644 --- a/src/data/mystery-encounters/utils/encounter-pokemon-utils.ts +++ b/src/data/mystery-encounters/utils/encounter-pokemon-utils.ts @@ -207,7 +207,7 @@ export function getHighestStatTotalPlayerPokemon(scene: BattleScene, isAllowed: * @param allowMythical * @returns */ -export function getRandomSpeciesByStarterTier(starterTiers: number | [number, number], excludedSpecies?: Species[], types?: Type[], allowSubLegendary: boolean = true, allowLegendary: boolean = true, allowMythical: boolean = true): Species { +export function getRandomSpeciesByStarterCost(starterTiers: number | [number, number], excludedSpecies?: Species[], types?: Type[], allowSubLegendary: boolean = true, allowLegendary: boolean = true, allowMythical: boolean = true): Species { let min = Array.isArray(starterTiers) ? starterTiers[0] : starterTiers; let max = Array.isArray(starterTiers) ? starterTiers[1] : starterTiers; diff --git a/src/test/mystery-encounter/encounters/safari-zone.test.ts b/src/test/mystery-encounter/encounters/safari-zone.test.ts new file mode 100644 index 00000000000..5699afe254f --- /dev/null +++ b/src/test/mystery-encounter/encounters/safari-zone.test.ts @@ -0,0 +1,173 @@ +import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; +import { Biome } from "#enums/biome"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import { Species } from "#enums/species"; +import GameManager from "#test/utils/gameManager"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; +import { runMysteryEncounterToEnd, runSelectMysteryEncounterOption } from "#test/mystery-encounter/encounter-test-utils"; +import BattleScene from "#app/battle-scene"; +import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import { initSceneWithoutEncounterPhase } from "#test/utils/gameManagerUtils"; +import MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; +import { MysteryEncounterPhase } from "#app/phases/mystery-encounter-phases"; +import { getSafariSpeciesSpawn, SafariZoneEncounter } from "#app/data/mystery-encounters/encounters/safari-zone-encounter"; +import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import { NON_LEGEND_PARADOX_POKEMON } from "#app/data/balance/special-species-groups"; + +const namespace = "mysteryEncounters/safariZone"; +const defaultParty = [ Species.LAPRAS, Species.GENGAR, Species.ABRA ]; +const defaultBiome = Biome.SWAMP; +const defaultWave = 45; + +describe("Safari Zone - Mystery Encounter", () => { + let phaserGame: Phaser.Game; + let game: GameManager; + let scene: BattleScene; + + beforeAll(() => { + phaserGame = new Phaser.Game({ type: Phaser.HEADLESS }); + }); + + beforeEach(async () => { + game = new GameManager(phaserGame); + scene = game.scene; + game.override.mysteryEncounterChance(100); + game.override.startingWave(defaultWave); + game.override.startingBiome(defaultBiome); + game.override.disableTrainerWaves(); + + const biomeMap = new Map([ + [ Biome.VOLCANO, [ MysteryEncounterType.FIGHT_OR_FLIGHT ]], + [ Biome.FOREST, [ MysteryEncounterType.SAFARI_ZONE ]], + [ Biome.SWAMP, [ MysteryEncounterType.SAFARI_ZONE ]], + [ Biome.JUNGLE, [ MysteryEncounterType.SAFARI_ZONE ]], + ]); + vi.spyOn(MysteryEncounters, "mysteryEncountersByBiome", "get").mockReturnValue(biomeMap); + }); + + afterEach(() => { + game.phaseInterceptor.restoreOg(); + vi.clearAllMocks(); + vi.resetAllMocks(); + }); + + it("should have the correct properties", async () => { + await game.runToMysteryEncounter(MysteryEncounterType.SAFARI_ZONE, defaultParty); + + expect(SafariZoneEncounter.encounterType).toBe(MysteryEncounterType.SAFARI_ZONE); + expect(SafariZoneEncounter.encounterTier).toBe(MysteryEncounterTier.GREAT); + expect(SafariZoneEncounter.dialogue).toBeDefined(); + expect(SafariZoneEncounter.dialogue.intro).toStrictEqual([ + { text: `${namespace}:intro` }, + ]); + expect(SafariZoneEncounter.dialogue.encounterOptionsDialogue?.title).toBe(`${namespace}:title`); + expect(SafariZoneEncounter.dialogue.encounterOptionsDialogue?.description).toBe(`${namespace}:description`); + expect(SafariZoneEncounter.dialogue.encounterOptionsDialogue?.query).toBe(`${namespace}:query`); + expect(SafariZoneEncounter.options.length).toBe(2); + }); + + it("should not spawn outside of the forest, swamp, or jungle biomes", async () => { + game.override.mysteryEncounterTier(MysteryEncounterTier.GREAT); + game.override.startingBiome(Biome.VOLCANO); + await game.runToMysteryEncounter(); + + expect(scene.currentBattle?.mysteryEncounter?.encounterType).not.toBe(MysteryEncounterType.SAFARI_ZONE); + }); + + it("should initialize fully", async () => { + initSceneWithoutEncounterPhase(scene, defaultParty); + scene.currentBattle.mysteryEncounter = new MysteryEncounter(SafariZoneEncounter); + const encounter = scene.currentBattle.mysteryEncounter!; + scene.currentBattle.waveIndex = defaultWave; + + const { onInit } = encounter; + + expect(encounter.onInit).toBeDefined(); + + encounter.populateDialogueTokensFromRequirements(scene); + const onInitResult = onInit!(scene); + expect(onInitResult).toBe(true); + }); + + describe("Option 1 - Enter", () => { + it("should have the correct properties", () => { + const option = SafariZoneEncounter.options[0]; + expect(option.optionMode).toBe(MysteryEncounterOptionMode.DISABLED_OR_DEFAULT); + expect(option.dialogue).toBeDefined(); + expect(option.dialogue).toStrictEqual({ + buttonLabel: `${namespace}:option.1.label`, + buttonTooltip: `${namespace}:option.1.tooltip`, + selected: [ + { + text: `${namespace}:option.1.selected`, + }, + ], + }); + }); + + it("should NOT be selectable if the player doesn't have enough money", async () => { + game.scene.money = 0; + await game.runToMysteryEncounter(MysteryEncounterType.SAFARI_ZONE, defaultParty); + await game.phaseInterceptor.to(MysteryEncounterPhase, false); + + const encounterPhase = scene.getCurrentPhase(); + expect(encounterPhase?.constructor.name).toBe(MysteryEncounterPhase.name); + const mysteryEncounterPhase = encounterPhase as MysteryEncounterPhase; + vi.spyOn(mysteryEncounterPhase, "continueEncounter"); + vi.spyOn(mysteryEncounterPhase, "handleOptionSelect"); + vi.spyOn(scene.ui, "playError"); + + await runSelectMysteryEncounterOption(game, 1); + + expect(scene.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); + expect(scene.ui.playError).not.toHaveBeenCalled(); // No error sfx, option is disabled + expect(mysteryEncounterPhase.handleOptionSelect).not.toHaveBeenCalled(); + expect(mysteryEncounterPhase.continueEncounter).not.toHaveBeenCalled(); + }); + + it("should not spawn any Paradox Pokemon", async () => { + const NUM_ROLLS = 2000; // As long as this is greater than total number of species, this should cover all possible RNG rolls + let rngSweepProgress = 0; // Will simulate full range of RNG rolls by steadily increasing from 0 to 1 + + vi.spyOn(Phaser.Math.RND, "realInRange").mockImplementation((min: number, max: number) => { + return rngSweepProgress * (max - min) + min; + }); + vi.spyOn(Phaser.Math.RND, "shuffle").mockImplementation((arr: any[]) => arr); + + for (let i = 0; i < NUM_ROLLS; i++) { + rngSweepProgress = (2 * i + 1) / (2 * NUM_ROLLS); + const simSpecies = getSafariSpeciesSpawn().speciesId; + expect(NON_LEGEND_PARADOX_POKEMON).not.toContain(simSpecies); + } + }); + + // TODO: Tests for player actions inside the Safari Zone (Pokeball, Mud, Bait, Flee) + }); + + describe("Option 2 - Leave", () => { + it("should have the correct properties", () => { + const option = SafariZoneEncounter.options[1]; + expect(option.optionMode).toBe(MysteryEncounterOptionMode.DEFAULT); + expect(option.dialogue).toBeDefined(); + expect(option.dialogue).toStrictEqual({ + buttonLabel: `${namespace}:option.2.label`, + buttonTooltip: `${namespace}:option.2.tooltip`, + selected: [ + { + text: `${namespace}:option.2.selected`, + }, + ], + }); + }); + + it("should leave encounter without battle", async () => { + const leaveEncounterWithoutBattleSpy = vi.spyOn(EncounterPhaseUtils, "leaveEncounterWithoutBattle"); + + await game.runToMysteryEncounter(MysteryEncounterType.SAFARI_ZONE, defaultParty); + await runMysteryEncounterToEnd(game, 2); + + expect(leaveEncounterWithoutBattleSpy).toBeCalled(); + }); + }); +}); diff --git a/src/test/mystery-encounter/encounters/the-pokemon-salesman-encounter.test.ts b/src/test/mystery-encounter/encounters/the-pokemon-salesman-encounter.test.ts index a50c0cf4c9e..91b4a4bcab5 100644 --- a/src/test/mystery-encounter/encounters/the-pokemon-salesman-encounter.test.ts +++ b/src/test/mystery-encounter/encounters/the-pokemon-salesman-encounter.test.ts @@ -9,11 +9,12 @@ import { runMysteryEncounterToEnd, runSelectMysteryEncounterOption } from "#test import BattleScene from "#app/battle-scene"; import { PlayerPokemon } from "#app/field/pokemon"; import { HUMAN_TRANSITABLE_BIOMES } from "#app/data/mystery-encounters/mystery-encounters"; -import { ThePokemonSalesmanEncounter } from "#app/data/mystery-encounters/encounters/the-pokemon-salesman-encounter"; +import { getSalesmanSpeciesOffer, ThePokemonSalesmanEncounter } from "#app/data/mystery-encounters/encounters/the-pokemon-salesman-encounter"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { initSceneWithoutEncounterPhase } from "#test/utils/gameManagerUtils"; import { MysteryEncounterPhase } from "#app/phases/mystery-encounter-phases"; +import { NON_LEGEND_PARADOX_POKEMON } from "#app/data/balance/special-species-groups"; const namespace = "mysteryEncounters/thePokemonSalesman"; const defaultParty = [ Species.LAPRAS, Species.GENGAR, Species.ABRA ]; @@ -172,6 +173,22 @@ describe("The Pokemon Salesman - Mystery Encounter", () => { expect(mysteryEncounterPhase.continueEncounter).not.toHaveBeenCalled(); }); + it("should not offer any Paradox Pokemon", async () => { + const NUM_ROLLS = 2000; // As long as this is greater than total number of species, this should cover all possible RNG rolls + let rngSweepProgress = 0; // Will simulate full range of RNG rolls by steadily increasing from 0 to 1 + + vi.spyOn(Phaser.Math.RND, "realInRange").mockImplementation((min: number, max: number) => { + return rngSweepProgress * (max - min) + min; + }); + vi.spyOn(Phaser.Math.RND, "shuffle").mockImplementation((arr: any[]) => arr); + + for (let i = 0; i < NUM_ROLLS; i++) { + rngSweepProgress = (2 * i + 1) / (2 * NUM_ROLLS); + const simSpecies = getSalesmanSpeciesOffer().speciesId; + expect(NON_LEGEND_PARADOX_POKEMON).not.toContain(simSpecies); + } + }); + it("should leave encounter without battle", async () => { scene.money = 20000; const leaveEncounterWithoutBattleSpy = vi.spyOn(EncounterPhaseUtils, "leaveEncounterWithoutBattle"); diff --git a/src/test/mystery-encounter/mystery-encounter-utils.test.ts b/src/test/mystery-encounter/mystery-encounter-utils.test.ts index ab2d5f052c0..d17b5c8a587 100644 --- a/src/test/mystery-encounter/mystery-encounter-utils.test.ts +++ b/src/test/mystery-encounter/mystery-encounter-utils.test.ts @@ -2,7 +2,7 @@ import BattleScene from "#app/battle-scene"; import { speciesStarterCosts } from "#app/data/balance/starters"; import MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; import { getEncounterText, queueEncounterMessage, showEncounterDialogue, showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; -import { getHighestLevelPlayerPokemon, getLowestLevelPlayerPokemon, getRandomPlayerPokemon, getRandomSpeciesByStarterTier, koPlayerPokemon } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; +import { getHighestLevelPlayerPokemon, getLowestLevelPlayerPokemon, getRandomPlayerPokemon, getRandomSpeciesByStarterCost, koPlayerPokemon } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; import { getPokemonSpecies } from "#app/data/pokemon-species"; import { Type } from "#enums/type"; import { MessagePhase } from "#app/phases/message-phase"; @@ -204,9 +204,9 @@ describe("Mystery Encounter Utils", () => { }); }); - describe("getRandomSpeciesByStarterTier", () => { + describe("getRandomSpeciesByStarterCost", () => { it("gets species for a starter tier", () => { - const result = getRandomSpeciesByStarterTier(5); + const result = getRandomSpeciesByStarterCost(5); const pokeSpecies = getPokemonSpecies(result); expect(pokeSpecies.speciesId).toBe(result); @@ -214,7 +214,7 @@ describe("Mystery Encounter Utils", () => { }); it("gets species for a starter tier range", () => { - const result = getRandomSpeciesByStarterTier([ 5, 8 ]); + const result = getRandomSpeciesByStarterCost([ 5, 8 ]); const pokeSpecies = getPokemonSpecies(result); expect(pokeSpecies.speciesId).toBe(result); @@ -224,14 +224,14 @@ describe("Mystery Encounter Utils", () => { it("excludes species from search", () => { // Only 9 tiers are: Koraidon, Miraidon, Arceus, Rayquaza, Kyogre, Groudon, Zacian - const result = getRandomSpeciesByStarterTier(9, [ Species.KORAIDON, Species.MIRAIDON, Species.ARCEUS, Species.RAYQUAZA, Species.KYOGRE, Species.GROUDON ]); + const result = getRandomSpeciesByStarterCost(9, [ Species.KORAIDON, Species.MIRAIDON, Species.ARCEUS, Species.RAYQUAZA, Species.KYOGRE, Species.GROUDON ]); const pokeSpecies = getPokemonSpecies(result); expect(pokeSpecies.speciesId).toBe(Species.ZACIAN); }); it("gets species of specified types", () => { // Only 9 tiers are: Koraidon, Miraidon, Arceus, Rayquaza, Kyogre, Groudon, Zacian - const result = getRandomSpeciesByStarterTier(9, undefined, [ Type.GROUND ]); + const result = getRandomSpeciesByStarterCost(9, undefined, [ Type.GROUND ]); const pokeSpecies = getPokemonSpecies(result); expect(pokeSpecies.speciesId).toBe(Species.GROUDON); }); From 5fed690187f094d81604d8191d343c5057cf0116 Mon Sep 17 00:00:00 2001 From: Bertie690 <136088738+Bertie690@users.noreply.github.com> Date: Sat, 30 Nov 2024 04:47:47 -0500 Subject: [PATCH 016/119] [Bug] Fixed Super Fang interaction with Multi Lens (#4914) Co-authored-by: Jannik Tappert <38758606+CodeTappert@users.noreply.github.com> Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> --- src/data/move.ts | 28 ++++++++++++++-- src/field/pokemon.ts | 4 +-- src/test/items/multi_lens.test.ts | 53 +++++++++++++++++++++++++++++++ 3 files changed, 81 insertions(+), 4 deletions(-) diff --git a/src/data/move.ts b/src/data/move.ts index 9696e2e4d53..944b5c230a6 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -1385,14 +1385,38 @@ export class UserHpDamageAttr extends FixedDamageAttr { } export class TargetHalfHpDamageAttr extends FixedDamageAttr { + // the initial amount of hp the target had before the first hit + // used for multi lens + private initialHp: number; constructor() { super(0); } apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { - (args[0] as Utils.IntegerHolder).value = Utils.toDmgValue(target.hp / 2); + // first, determine if the hit is coming from multi lens or not + const lensCount = user.getHeldItems().find(i => i instanceof PokemonMultiHitModifier)?.getStackCount() ?? 0; + if (lensCount <= 0) { + // no multi lenses; we can just halve the target's hp and call it a day + (args[0] as Utils.NumberHolder).value = Utils.toDmgValue(target.hp / 2); + return true; + } - return true; + // figure out what hit # we're on + switch (user.turnData.hitCount - user.turnData.hitsLeft) { + case 0: + // first hit of move; update initialHp tracker + this.initialHp = target.hp; + default: + // multi lens added hit; use initialHp tracker to ensure correct damage + (args[0] as Utils.NumberHolder).value = Utils.toDmgValue(this.initialHp / 2); + return true; + break; + case lensCount + 1: + // parental bond added hit; calc damage as normal + (args[0] as Utils.NumberHolder).value = Utils.toDmgValue(target.hp / 2); + return true; + break; + } } getTargetBenefitScore(user: Pokemon, target: Pokemon, move: Move): number { diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index 961cb943731..397bf2cbf36 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -2618,8 +2618,8 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { }; } - // If the attack deals fixed damaged, return a result with that much damage - const fixedDamage = new Utils.IntegerHolder(0); + // If the attack deals fixed damage, return a result with that much damage + const fixedDamage = new Utils.NumberHolder(0); applyMoveAttrs(FixedDamageAttr, source, this, move, fixedDamage); if (fixedDamage.value) { const multiLensMultiplier = new Utils.NumberHolder(1); diff --git a/src/test/items/multi_lens.test.ts b/src/test/items/multi_lens.test.ts index c5e60c9f9e5..f4b4c5712ee 100644 --- a/src/test/items/multi_lens.test.ts +++ b/src/test/items/multi_lens.test.ts @@ -135,4 +135,57 @@ describe("Items - Multi Lens", () => { expect(damageResults[0]).toBe(Math.floor(playerPokemon.level * 0.75)); expect(damageResults[1]).toBe(Math.floor(playerPokemon.level * 0.25)); }); + + it("should result in correct damage for hp% attacks with 1 lens", async () => { + game.override.startingHeldItems([{ name: "MULTI_LENS", count: 1 }]) + .moveset(Moves.SUPER_FANG) + .ability(Abilities.COMPOUND_EYES) + .enemyLevel(1000) + .enemySpecies(Species.BLISSEY); // allows for unrealistically high levels of accuracy + + await game.classicMode.startBattle([ Species.MAGIKARP ]); + + const enemyPokemon = game.scene.getEnemyPokemon()!; + + game.move.select(Moves.SUPER_FANG); + await game.setTurnOrder([ BattlerIndex.PLAYER, BattlerIndex.ENEMY ]); + await game.phaseInterceptor.to("MoveEndPhase"); + expect(enemyPokemon.getHpRatio()).toBeCloseTo(0.5, 5); + }); + + it("should result in correct damage for hp% attacks with 2 lenses", async () => { + game.override.startingHeldItems([{ name: "MULTI_LENS", count: 2 }]) + .moveset(Moves.SUPER_FANG) + .ability(Abilities.COMPOUND_EYES) + .enemyMoveset(Moves.SPLASH) + .enemyLevel(1000) + .enemySpecies(Species.BLISSEY); // allows for unrealistically high levels of accuracy + + await game.classicMode.startBattle([ Species.MAGIKARP ]); + + const enemyPokemon = game.scene.getEnemyPokemon()!; + + game.move.select(Moves.SUPER_FANG); + await game.setTurnOrder([ BattlerIndex.PLAYER, BattlerIndex.ENEMY ]); + await game.phaseInterceptor.to("MoveEndPhase"); + expect(enemyPokemon.getHpRatio()).toBeCloseTo(0.5, 5); + }); + it("should result in correct damage for hp% attacks with 2 lenses + Parental Bond", async () => { + game.override.startingHeldItems([{ name: "MULTI_LENS", count: 2 }]) + .moveset(Moves.SUPER_FANG) + .ability(Abilities.PARENTAL_BOND) + .passiveAbility(Abilities.COMPOUND_EYES) + .enemyMoveset(Moves.SPLASH) + .enemyLevel(1000) + .enemySpecies(Species.BLISSEY); // allows for unrealistically high levels of accuracy + + await game.classicMode.startBattle([ Species.MAGIKARP ]); + + const enemyPokemon = game.scene.getEnemyPokemon()!; + + game.move.select(Moves.SUPER_FANG); + await game.setTurnOrder([ BattlerIndex.PLAYER, BattlerIndex.ENEMY ]); + await game.phaseInterceptor.to("MoveEndPhase"); + expect(enemyPokemon.getHpRatio()).toBeCloseTo(0.25, 5); + }); }); From 75af359154c8d589aaf8aa3e9e3b4817857c9bee Mon Sep 17 00:00:00 2001 From: PigeonBar <56974298+PigeonBar@users.noreply.github.com> Date: Sat, 30 Nov 2024 04:48:20 -0500 Subject: [PATCH 017/119] [Bug][Beta] Fix phazing moves forcing switches into fainted/ineligible Pokemon (#4951) --- src/data/move.ts | 24 +++++- src/test/moves/dragon_tail.test.ts | 122 +++++++++++++++++++++++++++++ src/test/moves/whirlwind.test.ts | 115 ++++++++++++++++++++++++++- 3 files changed, 254 insertions(+), 7 deletions(-) diff --git a/src/data/move.ts b/src/data/move.ts index 944b5c230a6..64f8e43cb7b 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -5999,14 +5999,22 @@ export class ForceSwitchOutAttr extends MoveEffectAttr { } } - if (switchOutTarget.scene.getPlayerParty().filter((p) => p.isAllowedInBattle() && !p.isOnField()).length < 1) { + // Find indices of off-field Pokemon that are eligible to be switched into + const eligibleNewIndices: number[] = []; + switchOutTarget.scene.getPlayerParty().forEach((pokemon, index) => { + if (pokemon.isAllowedInBattle() && !pokemon.isOnField()) { + eligibleNewIndices.push(index); + } + }); + + if (eligibleNewIndices.length < 1) { return false; } if (switchOutTarget.hp > 0) { if (this.switchType === SwitchType.FORCE_SWITCH) { switchOutTarget.leaveField(true); - const slotIndex = Utils.randIntRange(user.scene.currentBattle.getBattlerCount(), user.scene.getPlayerParty().length); + const slotIndex = eligibleNewIndices[user.randSeedInt(eligibleNewIndices.length)]; user.scene.prependToPhase( new SwitchSummonPhase( user.scene, @@ -6035,14 +6043,22 @@ export class ForceSwitchOutAttr extends MoveEffectAttr { } return false; } else if (user.scene.currentBattle.battleType !== BattleType.WILD) { // Switch out logic for enemy trainers - if (switchOutTarget.scene.getEnemyParty().filter((p) => p.isAllowedInBattle() && !p.isOnField()).length < 1) { + // Find indices of off-field Pokemon that are eligible to be switched into + const eligibleNewIndices: number[] = []; + switchOutTarget.scene.getEnemyParty().forEach((pokemon, index) => { + if (pokemon.isAllowedInBattle() && !pokemon.isOnField()) { + eligibleNewIndices.push(index); + } + }); + + if (eligibleNewIndices.length < 1) { return false; } if (switchOutTarget.hp > 0) { if (this.switchType === SwitchType.FORCE_SWITCH) { switchOutTarget.leaveField(true); - const slotIndex = Utils.randIntRange(user.scene.currentBattle.getBattlerCount(), user.scene.getEnemyParty().length); + const slotIndex = eligibleNewIndices[user.randSeedInt(eligibleNewIndices.length)]; user.scene.prependToPhase( new SwitchSummonPhase( user.scene, diff --git a/src/test/moves/dragon_tail.test.ts b/src/test/moves/dragon_tail.test.ts index 6b3e669f770..96db67279d3 100644 --- a/src/test/moves/dragon_tail.test.ts +++ b/src/test/moves/dragon_tail.test.ts @@ -1,5 +1,9 @@ import { BattlerIndex } from "#app/battle"; import { allMoves } from "#app/data/move"; +import { Status } from "#app/data/status-effect"; +import { Challenges } from "#enums/challenges"; +import { StatusEffect } from "#enums/status-effect"; +import { Type } from "#enums/type"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; @@ -193,4 +197,122 @@ describe("Moves - Dragon Tail", () => { expect(dratini.hp).toBe(Math.floor(dratini.getMaxHp() / 2)); expect(game.scene.getPlayerField().length).toBe(1); }); + + it("should force switches randomly", async () => { + game.override.enemyMoveset(Moves.DRAGON_TAIL) + .startingLevel(100) + .enemyLevel(1); + await game.classicMode.startBattle([ Species.BULBASAUR, Species.CHARMANDER, Species.SQUIRTLE ]); + + const [ bulbasaur, charmander, squirtle ] = game.scene.getPlayerParty(); + + // Turn 1: Mock an RNG call that calls for switching to 1st backup Pokemon (Charmander) + vi.spyOn(game.scene, "randBattleSeedInt").mockImplementation((range, min: number = 0) => { + return min; + }); + game.move.select(Moves.SPLASH); + await game.forceEnemyMove(Moves.DRAGON_TAIL); + await game.toNextTurn(); + + expect(bulbasaur.isOnField()).toBe(false); + expect(charmander.isOnField()).toBe(true); + expect(squirtle.isOnField()).toBe(false); + expect(bulbasaur.getInverseHp()).toBeGreaterThan(0); + + // Turn 2: Mock an RNG call that calls for switching to 2nd backup Pokemon (Squirtle) + vi.spyOn(game.scene, "randBattleSeedInt").mockImplementation((range, min: number = 0) => { + return min + 1; + }); + game.move.select(Moves.SPLASH); + await game.toNextTurn(); + + expect(bulbasaur.isOnField()).toBe(false); + expect(charmander.isOnField()).toBe(false); + expect(squirtle.isOnField()).toBe(true); + expect(charmander.getInverseHp()).toBeGreaterThan(0); + }); + + it("should not force a switch to a challenge-ineligible Pokemon", async () => { + game.override.enemyMoveset(Moves.DRAGON_TAIL) + .startingLevel(100) + .enemyLevel(1); + // Mono-Water challenge, Eevee is ineligible + game.challengeMode.addChallenge(Challenges.SINGLE_TYPE, Type.WATER + 1, 0); + await game.challengeMode.startBattle([ Species.LAPRAS, Species.EEVEE, Species.TOXAPEX, Species.PRIMARINA ]); + + const [ lapras, eevee, toxapex, primarina ] = game.scene.getPlayerParty(); + + // Turn 1: Mock an RNG call that would normally call for switching to Eevee, but it is ineligible + vi.spyOn(game.scene, "randBattleSeedInt").mockImplementation((range, min: number = 0) => { + return min; + }); + game.move.select(Moves.SPLASH); + await game.toNextTurn(); + + expect(lapras.isOnField()).toBe(false); + expect(eevee.isOnField()).toBe(false); + expect(toxapex.isOnField()).toBe(true); + expect(primarina.isOnField()).toBe(false); + expect(lapras.getInverseHp()).toBeGreaterThan(0); + }); + + it("should not force a switch to a fainted Pokemon", async () => { + game.override.enemyMoveset([ Moves.SPLASH, Moves.DRAGON_TAIL ]) + .startingLevel(100) + .enemyLevel(1); + await game.classicMode.startBattle([ Species.LAPRAS, Species.EEVEE, Species.TOXAPEX, Species.PRIMARINA ]); + + const [ lapras, eevee, toxapex, primarina ] = game.scene.getPlayerParty(); + + // Turn 1: Eevee faints + eevee.hp = 0; + eevee.status = new Status(StatusEffect.FAINT); + expect(eevee.isFainted()).toBe(true); + game.move.select(Moves.SPLASH); + await game.forceEnemyMove(Moves.SPLASH); + await game.toNextTurn(); + + // Turn 2: Mock an RNG call that would normally call for switching to Eevee, but it is fainted + vi.spyOn(game.scene, "randBattleSeedInt").mockImplementation((range, min: number = 0) => { + return min; + }); + game.move.select(Moves.SPLASH); + await game.forceEnemyMove(Moves.DRAGON_TAIL); + await game.toNextTurn(); + + expect(lapras.isOnField()).toBe(false); + expect(eevee.isOnField()).toBe(false); + expect(toxapex.isOnField()).toBe(true); + expect(primarina.isOnField()).toBe(false); + expect(lapras.getInverseHp()).toBeGreaterThan(0); + }); + + it("should not force a switch if there are no available Pokemon to switch into", async () => { + game.override.enemyMoveset([ Moves.SPLASH, Moves.DRAGON_TAIL ]) + .startingLevel(100) + .enemyLevel(1); + await game.classicMode.startBattle([ Species.LAPRAS, Species.EEVEE ]); + + const [ lapras, eevee ] = game.scene.getPlayerParty(); + + // Turn 1: Eevee faints + eevee.hp = 0; + eevee.status = new Status(StatusEffect.FAINT); + expect(eevee.isFainted()).toBe(true); + game.move.select(Moves.SPLASH); + await game.forceEnemyMove(Moves.SPLASH); + await game.toNextTurn(); + + // Turn 2: Mock an RNG call that would normally call for switching to Eevee, but it is fainted + vi.spyOn(game.scene, "randBattleSeedInt").mockImplementation((range, min: number = 0) => { + return min; + }); + game.move.select(Moves.SPLASH); + await game.forceEnemyMove(Moves.DRAGON_TAIL); + await game.toNextTurn(); + + expect(lapras.isOnField()).toBe(true); + expect(eevee.isOnField()).toBe(false); + expect(lapras.getInverseHp()).toBeGreaterThan(0); + }); }); diff --git a/src/test/moves/whirlwind.test.ts b/src/test/moves/whirlwind.test.ts index c16f38111f2..69232bee43a 100644 --- a/src/test/moves/whirlwind.test.ts +++ b/src/test/moves/whirlwind.test.ts @@ -1,11 +1,15 @@ -import { BattlerTagType } from "#app/enums/battler-tag-type"; +import { BattlerTagType } from "#enums/battler-tag-type"; +import { Challenges } from "#enums/challenges"; +import { Type } from "#enums/type"; import { MoveResult } from "#app/field/pokemon"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import GameManager from "#test/utils/gameManager"; import Phaser from "phaser"; -import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; +import { Status } from "#app/data/status-effect"; +import { StatusEffect } from "#enums/status-effect"; describe("Moves - Whirlwind", () => { let phaserGame: Phaser.Game; @@ -25,8 +29,9 @@ describe("Moves - Whirlwind", () => { game = new GameManager(phaserGame); game.override .battleType("single") + .moveset(Moves.SPLASH) .enemyAbility(Abilities.BALL_FETCH) - .enemyMoveset(Moves.WHIRLWIND) + .enemyMoveset([ Moves.SPLASH, Moves.WHIRLWIND ]) .enemySpecies(Species.PIDGEY); }); @@ -41,10 +46,114 @@ describe("Moves - Whirlwind", () => { const staraptor = game.scene.getPlayerPokemon()!; game.move.select(move); + await game.forceEnemyMove(Moves.WHIRLWIND); await game.phaseInterceptor.to("BerryPhase", false); expect(staraptor.findTag((t) => t.tagType === BattlerTagType.FLYING)).toBeDefined(); expect(game.scene.getEnemyPokemon()!.getLastXMoves(1)[0].result).toBe(MoveResult.MISS); }); + + it("should force switches randomly", async () => { + await game.classicMode.startBattle([ Species.BULBASAUR, Species.CHARMANDER, Species.SQUIRTLE ]); + + const [ bulbasaur, charmander, squirtle ] = game.scene.getPlayerParty(); + + // Turn 1: Mock an RNG call that calls for switching to 1st backup Pokemon (Charmander) + vi.spyOn(game.scene, "randBattleSeedInt").mockImplementation((range, min: number = 0) => { + return min; + }); + game.move.select(Moves.SPLASH); + await game.forceEnemyMove(Moves.WHIRLWIND); + await game.toNextTurn(); + + expect(bulbasaur.isOnField()).toBe(false); + expect(charmander.isOnField()).toBe(true); + expect(squirtle.isOnField()).toBe(false); + + // Turn 2: Mock an RNG call that calls for switching to 2nd backup Pokemon (Squirtle) + vi.spyOn(game.scene, "randBattleSeedInt").mockImplementation((range, min: number = 0) => { + return min + 1; + }); + game.move.select(Moves.SPLASH); + await game.forceEnemyMove(Moves.WHIRLWIND); + await game.toNextTurn(); + + expect(bulbasaur.isOnField()).toBe(false); + expect(charmander.isOnField()).toBe(false); + expect(squirtle.isOnField()).toBe(true); + }); + + it("should not force a switch to a challenge-ineligible Pokemon", async () => { + // Mono-Water challenge, Eevee is ineligible + game.challengeMode.addChallenge(Challenges.SINGLE_TYPE, Type.WATER + 1, 0); + await game.challengeMode.startBattle([ Species.LAPRAS, Species.EEVEE, Species.TOXAPEX, Species.PRIMARINA ]); + + const [ lapras, eevee, toxapex, primarina ] = game.scene.getPlayerParty(); + + // Turn 1: Mock an RNG call that would normally call for switching to Eevee, but it is ineligible + vi.spyOn(game.scene, "randBattleSeedInt").mockImplementation((range, min: number = 0) => { + return min; + }); + game.move.select(Moves.SPLASH); + await game.forceEnemyMove(Moves.WHIRLWIND); + await game.toNextTurn(); + + expect(lapras.isOnField()).toBe(false); + expect(eevee.isOnField()).toBe(false); + expect(toxapex.isOnField()).toBe(true); + expect(primarina.isOnField()).toBe(false); + }); + + it("should not force a switch to a fainted Pokemon", async () => { + await game.classicMode.startBattle([ Species.LAPRAS, Species.EEVEE, Species.TOXAPEX, Species.PRIMARINA ]); + + const [ lapras, eevee, toxapex, primarina ] = game.scene.getPlayerParty(); + + // Turn 1: Eevee faints + eevee.hp = 0; + eevee.status = new Status(StatusEffect.FAINT); + expect(eevee.isFainted()).toBe(true); + game.move.select(Moves.SPLASH); + await game.forceEnemyMove(Moves.SPLASH); + await game.toNextTurn(); + + // Turn 2: Mock an RNG call that would normally call for switching to Eevee, but it is fainted + vi.spyOn(game.scene, "randBattleSeedInt").mockImplementation((range, min: number = 0) => { + return min; + }); + game.move.select(Moves.SPLASH); + await game.forceEnemyMove(Moves.WHIRLWIND); + await game.toNextTurn(); + + expect(lapras.isOnField()).toBe(false); + expect(eevee.isOnField()).toBe(false); + expect(toxapex.isOnField()).toBe(true); + expect(primarina.isOnField()).toBe(false); + }); + + it("should not force a switch if there are no available Pokemon to switch into", async () => { + await game.classicMode.startBattle([ Species.LAPRAS, Species.EEVEE ]); + + const [ lapras, eevee ] = game.scene.getPlayerParty(); + + // Turn 1: Eevee faints + eevee.hp = 0; + eevee.status = new Status(StatusEffect.FAINT); + expect(eevee.isFainted()).toBe(true); + game.move.select(Moves.SPLASH); + await game.forceEnemyMove(Moves.SPLASH); + await game.toNextTurn(); + + // Turn 2: Mock an RNG call that would normally call for switching to Eevee, but it is fainted + vi.spyOn(game.scene, "randBattleSeedInt").mockImplementation((range, min: number = 0) => { + return min; + }); + game.move.select(Moves.SPLASH); + await game.forceEnemyMove(Moves.WHIRLWIND); + await game.toNextTurn(); + + expect(lapras.isOnField()).toBe(true); + expect(eevee.isOnField()).toBe(false); + }); }); From 5cc8013341f90587c910514cc9b8001ea3cd1e9b Mon Sep 17 00:00:00 2001 From: Moka <54149968+MokaStitcher@users.noreply.github.com> Date: Sat, 30 Nov 2024 10:48:46 +0100 Subject: [PATCH 018/119] [UI/UX][QoL] Ask confirmation before disabling touchpad controls in settings (#4949) * [UI] Ask Confirmation before disabling touch controls * show a message when asking for confirmation in settings * small cleanup * change settings message box to display 2 lines with word wrap --- src/system/settings/settings.ts | 71 ++++++++++++------- .../settings/abstract-settings-ui-handler.ts | 69 ++++++++++++++---- 2 files changed, 101 insertions(+), 39 deletions(-) diff --git a/src/system/settings/settings.ts b/src/system/settings/settings.ts index d71edf603dd..64ddfdae5cf 100644 --- a/src/system/settings/settings.ts +++ b/src/system/settings/settings.ts @@ -1,9 +1,9 @@ import { Mode } from "#app/ui/ui"; import i18next from "i18next"; -import BattleScene from "../../battle-scene"; -import { hasTouchscreen } from "../../touch-controls"; -import { updateWindowType } from "../../ui/ui-theme"; -import { CandyUpgradeNotificationChangedEvent } from "../../events/battle-scene"; +import BattleScene from "#app/battle-scene"; +import { hasTouchscreen } from "#app/touch-controls"; +import { updateWindowType } from "#app/ui/ui-theme"; +import { CandyUpgradeNotificationChangedEvent } from "#app/events/battle-scene"; import SettingsUiHandler from "#app/ui/settings/settings-ui-handler"; import { EaseType } from "#enums/ease-type"; import { MoneyFormat } from "#enums/money-format"; @@ -44,6 +44,7 @@ const OFF_ON: SettingOption[] = [ label: i18next.t("settings:on") } ]; + const AUTO_DISABLED: SettingOption[] = [ { value: "Auto", @@ -55,6 +56,19 @@ const AUTO_DISABLED: SettingOption[] = [ } ]; +const TOUCH_CONTROLS_OPTIONS: SettingOption[] = [ + { + value: "Auto", + label: i18next.t("settings:auto") + }, + { + value: "Disabled", + label: i18next.t("settings:disabled"), + needConfirmation: true, + confirmationMessage: i18next.t("settings:confirmDisableTouch") + } +]; + const SHOP_CURSOR_TARGET_OPTIONS: SettingOption[] = [ { value: "Rewards", @@ -100,7 +114,9 @@ export enum SettingType { type SettingOption = { value: string, - label: string + label: string, + needConfirmation?: boolean, + confirmationMessage?: string }; export interface Setting { @@ -344,13 +360,6 @@ export const Setting: Array = [ default: 1, type: SettingType.GENERAL }, - { - key: SettingKeys.Touch_Controls, - label: i18next.t("settings:touchControls"), - options: AUTO_DISABLED, - default: 0, - type: SettingType.GENERAL - }, { key: SettingKeys.Vibration, label: i18next.t("settings:vibrations"), @@ -358,6 +367,28 @@ export const Setting: Array = [ default: 0, type: SettingType.GENERAL }, + { + key: SettingKeys.Touch_Controls, + label: i18next.t("settings:touchControls"), + options: TOUCH_CONTROLS_OPTIONS, + default: 0, + type: SettingType.GENERAL, + isHidden: () => !hasTouchscreen() + }, + { + key: SettingKeys.Move_Touch_Controls, + label: i18next.t("settings:moveTouchControls"), + options: [ + { + value: "Configure", + label: i18next.t("settings:change") + } + ], + default: 0, + type: SettingType.GENERAL, + activatable: true, + isHidden: () => !hasTouchscreen() + }, { key: SettingKeys.Language, label: i18next.t("settings:language"), @@ -643,20 +674,6 @@ export const Setting: Array = [ type: SettingType.AUDIO, requireReload: true }, - { - key: SettingKeys.Move_Touch_Controls, - label: i18next.t("settings:moveTouchControls"), - options: [ - { - value: "Configure", - label: i18next.t("settings:change") - } - ], - default: 0, - type: SettingType.GENERAL, - activatable: true, - isHidden: () => !hasTouchscreen() - }, { key: SettingKeys.Shop_Cursor_Target, label: i18next.t("settings:shopCursorTarget"), @@ -849,7 +866,7 @@ export function setSetting(scene: BattleScene, setting: string, value: integer): if (scene.ui) { const cancelHandler = () => { scene.ui.revertMode(); - (scene.ui.getHandler() as SettingsUiHandler).setOptionCursor(0, 0, true); + (scene.ui.getHandler() as SettingsUiHandler).setOptionCursor(-1, 0, true); }; const changeLocaleHandler = (locale: string): boolean => { try { diff --git a/src/ui/settings/abstract-settings-ui-handler.ts b/src/ui/settings/abstract-settings-ui-handler.ts index 83219e1ef5a..cbc93887810 100644 --- a/src/ui/settings/abstract-settings-ui-handler.ts +++ b/src/ui/settings/abstract-settings-ui-handler.ts @@ -1,8 +1,7 @@ import BattleScene from "#app/battle-scene"; -import { hasTouchscreen, isMobile } from "#app/touch-controls"; import { TextStyle, addTextObject } from "#app/ui/text"; import { Mode } from "#app/ui/ui"; -import UiHandler from "#app/ui/ui-handler"; +import MessageUiHandler from "#app/ui/message-ui-handler"; import { addWindow } from "#app/ui/ui-theme"; import { ScrollBar } from "#app/ui/scroll-bar"; import { Button } from "#enums/buttons"; @@ -15,9 +14,10 @@ import i18next from "i18next"; /** * Abstract class for handling UI elements related to settings. */ -export default class AbstractSettingsUiHandler extends UiHandler { +export default class AbstractSettingsUiHandler extends MessageUiHandler { private settingsContainer: Phaser.GameObjects.Container; private optionsContainer: Phaser.GameObjects.Container; + private messageBoxContainer: Phaser.GameObjects.Container; private navigationContainer: NavigationMenu; private scrollCursor: number; @@ -135,6 +135,23 @@ export default class AbstractSettingsUiHandler extends UiHandler { this.scrollBar = new ScrollBar(this.scene, this.optionsBg.width - 9, this.optionsBg.y + 5, 4, this.optionsBg.height - 11, this.rowsToDisplay); this.scrollBar.setTotalRows(this.settings.length); + // Two-lines message box + this.messageBoxContainer = this.scene.add.container(0, this.scene.scaledCanvas.height); + this.messageBoxContainer.setName("settings-message-box"); + this.messageBoxContainer.setVisible(false); + + const settingsMessageBox = addWindow(this.scene, 0, -1, this.scene.scaledCanvas.width - 2, 48); + settingsMessageBox.setOrigin(0, 1); + this.messageBoxContainer.add(settingsMessageBox); + + const messageText = addTextObject(this.scene, 8, -40, "", TextStyle.WINDOW, { maxLines: 2 }); + messageText.setWordWrapWidth(this.scene.game.canvas.width - 60); + messageText.setName("settings-message"); + messageText.setOrigin(0, 0); + + this.messageBoxContainer.add(messageText); + this.message = messageText; + this.settingsContainer.add(this.optionsBg); this.settingsContainer.add(this.scrollBar); this.settingsContainer.add(this.navigationContainer); @@ -144,6 +161,7 @@ export default class AbstractSettingsUiHandler extends UiHandler { this.settingsContainer.add(iconCancel); this.settingsContainer.add(actionText); this.settingsContainer.add(cancelText); + this.settingsContainer.add(this.messageBoxContainer); ui.add(this.settingsContainer); @@ -326,18 +344,16 @@ export default class AbstractSettingsUiHandler extends UiHandler { /** * Set the option cursor to the specified position. * - * @param settingIndex - The index of the setting. + * @param settingIndex - The index of the setting or -1 to change the current setting * @param cursor - The cursor position to set. * @param save - Whether to save the setting to local storage. * @returns `true` if the option cursor was set successfully. */ setOptionCursor(settingIndex: number, cursor: number, save?: boolean): boolean { - const setting = this.settings[settingIndex]; - - if (setting.key === SettingKeys.Touch_Controls && cursor && hasTouchscreen() && isMobile()) { - this.getUi().playError(); - return false; + if (settingIndex === -1) { + settingIndex = this.cursor + this.scrollCursor; } + const setting = this.settings[settingIndex]; const lastCursor = this.optionCursors[settingIndex]; @@ -352,9 +368,33 @@ export default class AbstractSettingsUiHandler extends UiHandler { newValueLabel.setShadowColor(this.getTextColor(TextStyle.SETTINGS_SELECTED, true)); if (save) { - this.scene.gameData.saveSetting(setting.key, cursor); - if (this.reloadSettings.includes(setting)) { - this.reloadRequired = true; + const saveSetting = () => { + this.scene.gameData.saveSetting(setting.key, cursor); + if (setting.requireReload) { + this.reloadRequired = true; + } + }; + + // For settings that ask for confirmation, display confirmation message and a Yes/No prompt before saving the setting + if (setting.options[cursor].needConfirmation) { + const confirmUpdateSetting = () => { + this.scene.ui.revertMode(); + this.showText(""); + saveSetting(); + }; + const cancelUpdateSetting = () => { + this.scene.ui.revertMode(); + this.showText(""); + // Put the cursor back to its previous position without saving or asking for confirmation again + this.setOptionCursor(settingIndex, lastCursor, false); + }; + + const confirmationMessage = setting.options[cursor].confirmationMessage ?? i18next.t("settings:defaultConfirmMessage"); + this.scene.ui.showText(confirmationMessage, null, () => { + this.scene.ui.setOverlayMode(Mode.CONFIRM, confirmUpdateSetting, cancelUpdateSetting, null, null, 1, 750); + }); + } else { + saveSetting(); } } @@ -421,4 +461,9 @@ export default class AbstractSettingsUiHandler extends UiHandler { } this.cursorObj = null; } + + override showText(text: string, delay?: integer, callback?: Function, callbackDelay?: integer, prompt?: boolean, promptDelay?: integer) { + this.messageBoxContainer.setVisible(!!text?.length); + super.showText(text, delay, callback, callbackDelay, prompt, promptDelay); + } } From 75a50be3cef405236634af187f02fc4af98fcb00 Mon Sep 17 00:00:00 2001 From: Riley JM Young <84201457+Ventuswill@users.noreply.github.com> Date: Sat, 30 Nov 2024 04:51:23 -0500 Subject: [PATCH 019/119] [UI/UX] Added the (+) icon for newly non-shiny pokemon (#4920) Will only show the (+) icon if you catch a non-shiny, have caught a shiny of that species before, and have not caught a non-shiny before. Removed magic numbers from new non-shiny check Co-authored-by: Riley Young Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> --- src/ui/pokemon-info-container.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/ui/pokemon-info-container.ts b/src/ui/pokemon-info-container.ts index ead24e6d92f..e0d432265a3 100644 --- a/src/ui/pokemon-info-container.ts +++ b/src/ui/pokemon-info-container.ts @@ -313,6 +313,11 @@ export default class PokemonInfoContainer extends Phaser.GameObjects.Container { this.pokemonShinyNewIcon.setShadowColor(getTextColor(TextStyle.SUMMARY_BLUE, true, this.scene.uiTheme)); const newShinyOrVariant = ((newShiny & caughtAttr) === BigInt(0)) || ((newVariant & caughtAttr) === BigInt(0)); this.pokemonShinyNewIcon.setVisible(!!newShinyOrVariant); + } else if ((caughtAttr & DexAttr.NON_SHINY) === BigInt(0) && ((caughtAttr & DexAttr.SHINY) === DexAttr.SHINY)) { //If the player has *only* caught any shiny variant of this species, not a non-shiny + this.pokemonShinyNewIcon.setVisible(true); + this.pokemonShinyNewIcon.setText("(+)"); + this.pokemonShinyNewIcon.setColor(getTextColor(TextStyle.SUMMARY_BLUE, false, this.scene.uiTheme)); + this.pokemonShinyNewIcon.setShadowColor(getTextColor(TextStyle.SUMMARY_BLUE, true, this.scene.uiTheme)); } else { this.pokemonShinyNewIcon.setVisible(false); } From 4d75d902d8364fe87e88943adb999a878cdd5e0e Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Sat, 30 Nov 2024 04:05:07 -0600 Subject: [PATCH 020/119] [Fix] Replace hardcoded party size limit with constant `PLAYER_PARTY_MAX_SIZE` (#4943) --- src/ui/starter-select-ui-handler.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/ui/starter-select-ui-handler.ts b/src/ui/starter-select-ui-handler.ts index a08b7ceaec6..be78e7e1b44 100644 --- a/src/ui/starter-select-ui-handler.ts +++ b/src/ui/starter-select-ui-handler.ts @@ -51,6 +51,7 @@ import { Abilities } from "#enums/abilities"; import { getPassiveCandyCount, getValueReductionCandyCounts, getSameSpeciesEggCandyCounts } from "#app/data/balance/starters"; import { BooleanHolder, capitalizeString, fixedInt, getLocalizedSpriteKey, isNullOrUndefined, NumberHolder, padInt, randIntRange, rgbHexToRgba, toReadableString } from "#app/utils"; import type { Nature } from "#enums/nature"; +import { PLAYER_PARTY_MAX_SIZE } from "#app/constants"; export type StarterSelectCallback = (starters: Starter[]) => void; @@ -1462,7 +1463,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { const currentPartyValue = this.starterSpecies.map(s => s.generation).reduce((total: number, gen: number, i: number) => total += this.scene.gameData.getSpeciesStarterValue(this.starterSpecies[i].speciesId), 0); const newCost = this.scene.gameData.getSpeciesStarterValue(this.lastSpecies.speciesId); - if (!isDupe && isValidForChallenge.value && currentPartyValue + newCost <= this.getValueLimit() && this.starterSpecies.length < 6) { // this checks to make sure the pokemon doesn't exist in your party, it's valid for the challenge and that it won't go over the cost limit; if it meets all these criteria it will add it to your party + if (!isDupe && isValidForChallenge.value && currentPartyValue + newCost <= this.getValueLimit() && this.starterSpecies.length < PLAYER_PARTY_MAX_SIZE) { // this checks to make sure the pokemon doesn't exist in your party, it's valid for the challenge and that it won't go over the cost limit; if it meets all these criteria it will add it to your party options = [ { label: i18next.t("starterSelectUiHandler:addToParty"), From b70bf0f4aaed679bd1ae0f1e42b5a1ed2586a381 Mon Sep 17 00:00:00 2001 From: PrabbyDD <147005742+PrabbyDD@users.noreply.github.com> Date: Sat, 30 Nov 2024 02:06:09 -0800 Subject: [PATCH 021/119] [Bug] Fix for Octolock bypasses Ghost Invulnerability to lower Stats (#4923) Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> Co-authored-by: innerthunder <168692175+innerthunder@users.noreply.github.com> --- src/data/battler-tags.ts | 4 -- src/data/move.ts | 6 +++ src/test/battlerTags/octolock.test.ts | 29 +------------ src/test/moves/octolock.test.ts | 62 +++++++++++++++++++++------ 4 files changed, 55 insertions(+), 46 deletions(-) diff --git a/src/data/battler-tags.ts b/src/data/battler-tags.ts index ce25b56157c..75b7cddb904 100644 --- a/src/data/battler-tags.ts +++ b/src/data/battler-tags.ts @@ -1085,10 +1085,6 @@ export class OctolockTag extends TrappedTag { super(BattlerTagType.OCTOLOCK, BattlerTagLapseType.TURN_END, 1, Moves.OCTOLOCK, sourceId); } - canAdd(pokemon: Pokemon): boolean { - return !pokemon.getTag(BattlerTagType.OCTOLOCK); - } - lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { const shouldLapse = lapseType !== BattlerTagLapseType.CUSTOM || super.lapse(pokemon, lapseType); diff --git a/src/data/move.ts b/src/data/move.ts index 64f8e43cb7b..091301990f3 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -7541,6 +7541,8 @@ const failIfLastInPartyCondition: MoveConditionFunc = (user: Pokemon, target: Po return party.some(pokemon => pokemon.isActive() && !pokemon.isOnField()); }; +const failIfGhostTypeCondition: MoveConditionFunc = (user: Pokemon, target: Pokemon, move: Move) => !target.isOfType(Type.GHOST); + export type MoveAttrFilter = (attr: MoveAttr) => boolean; function applyMoveAttrsInternal(attrFilter: MoveAttrFilter, user: Pokemon | null, target: Pokemon | null, move: Move, args: any[]): Promise { @@ -8287,6 +8289,7 @@ export function initMoves() { new AttackMove(Moves.THIEF, Type.DARK, MoveCategory.PHYSICAL, 60, 100, 25, -1, 0, 2) .attr(StealHeldItemChanceAttr, 0.3), new StatusMove(Moves.SPIDER_WEB, Type.BUG, -1, 10, -1, 0, 2) + .condition(failIfGhostTypeCondition) .attr(AddBattlerTagAttr, BattlerTagType.TRAPPED, false, true, 1), new StatusMove(Moves.MIND_READER, Type.NORMAL, -1, 5, -1, 0, 2) .attr(IgnoreAccuracyAttr), @@ -8423,6 +8426,7 @@ export function initMoves() { new AttackMove(Moves.STEEL_WING, Type.STEEL, MoveCategory.PHYSICAL, 70, 90, 25, 10, 0, 2) .attr(StatStageChangeAttr, [ Stat.DEF ], 1, true), new StatusMove(Moves.MEAN_LOOK, Type.NORMAL, -1, 5, -1, 0, 2) + .condition(failIfGhostTypeCondition) .attr(AddBattlerTagAttr, BattlerTagType.TRAPPED, false, true, 1), new StatusMove(Moves.ATTRACT, Type.NORMAL, 100, 15, -1, 0, 2) .attr(AddBattlerTagAttr, BattlerTagType.INFATUATED) @@ -8802,6 +8806,7 @@ export function initMoves() { new SelfStatusMove(Moves.IRON_DEFENSE, Type.STEEL, -1, 15, -1, 0, 3) .attr(StatStageChangeAttr, [ Stat.DEF ], 2, true), new StatusMove(Moves.BLOCK, Type.NORMAL, -1, 5, -1, 0, 3) + .condition(failIfGhostTypeCondition) .attr(AddBattlerTagAttr, BattlerTagType.TRAPPED, false, true, 1), new StatusMove(Moves.HOWL, Type.NORMAL, -1, 40, -1, 0, 3) .attr(StatStageChangeAttr, [ Stat.ATK ], 1) @@ -10096,6 +10101,7 @@ export function initMoves() { .attr(EatBerryAttr) .target(MoveTarget.ALL), new StatusMove(Moves.OCTOLOCK, Type.FIGHTING, 100, 15, -1, 0, 8) + .condition(failIfGhostTypeCondition) .attr(AddBattlerTagAttr, BattlerTagType.OCTOLOCK, false, true, 1), new AttackMove(Moves.BOLT_BEAK, Type.ELECTRIC, MoveCategory.PHYSICAL, 85, 100, 10, -1, 0, 8) .attr(FirstAttackDoublePowerAttr), diff --git a/src/test/battlerTags/octolock.test.ts b/src/test/battlerTags/octolock.test.ts index ebd92dc6401..9efce220fe8 100644 --- a/src/test/battlerTags/octolock.test.ts +++ b/src/test/battlerTags/octolock.test.ts @@ -1,9 +1,8 @@ import BattleScene from "#app/battle-scene"; import { describe, expect, it, vi } from "vitest"; import Pokemon from "#app/field/pokemon"; -import { BattlerTag, BattlerTagLapseType, OctolockTag, TrappedTag } from "#app/data/battler-tags"; +import { BattlerTagLapseType, OctolockTag, TrappedTag } from "#app/data/battler-tags"; import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; -import { BattlerTagType } from "#app/enums/battler-tag-type"; import { Stat } from "#enums/stat"; vi.mock("#app/battle-scene.js"); @@ -33,30 +32,4 @@ describe("BattlerTag - OctolockTag", () => { it ("traps its target (extends TrappedTag)", async () => { expect(new OctolockTag(1)).toBeInstanceOf(TrappedTag); }); - - it("can be added to pokemon who are not octolocked", async => { - const mockPokemon = { - getTag: vi.fn().mockReturnValue(undefined) as Pokemon["getTag"], - } as Pokemon; - - const subject = new OctolockTag(1); - - expect(subject.canAdd(mockPokemon)).toBeTruthy(); - - expect(mockPokemon.getTag).toHaveBeenCalledTimes(1); - expect(mockPokemon.getTag).toHaveBeenCalledWith(BattlerTagType.OCTOLOCK); - }); - - it("cannot be added to pokemon who are octolocked", async => { - const mockPokemon = { - getTag: vi.fn().mockReturnValue(new BattlerTag(null!, null!, null!, null!)) as Pokemon["getTag"], - } as Pokemon; - - const subject = new OctolockTag(1); - - expect(subject.canAdd(mockPokemon)).toBeFalsy(); - - expect(mockPokemon.getTag).toHaveBeenCalledTimes(1); - expect(mockPokemon.getTag).toHaveBeenCalledWith(BattlerTagType.OCTOLOCK); - }); }); diff --git a/src/test/moves/octolock.test.ts b/src/test/moves/octolock.test.ts index d80b71a51e1..6ca96eeb464 100644 --- a/src/test/moves/octolock.test.ts +++ b/src/test/moves/octolock.test.ts @@ -1,11 +1,8 @@ -import { Stat } from "#enums/stat"; import { TrappedTag } from "#app/data/battler-tags"; -import { CommandPhase } from "#app/phases/command-phase"; -import { MoveEndPhase } from "#app/phases/move-end-phase"; -import { TurnInitPhase } from "#app/phases/turn-init-phase"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; +import { Stat } from "#enums/stat"; import GameManager from "#test/utils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -27,12 +24,13 @@ describe("Moves - Octolock", () => { beforeEach(() => { game = new GameManager(phaserGame); - game.override.battleType("single") - .enemySpecies(Species.RATTATA) + game.override + .battleType("single") + .enemySpecies(Species.MAGIKARP) .enemyMoveset(Moves.SPLASH) .enemyAbility(Abilities.BALL_FETCH) .startingLevel(2000) - .moveset([ Moves.OCTOLOCK, Moves.SPLASH ]) + .moveset([ Moves.OCTOLOCK, Moves.SPLASH, Moves.TRICK_OR_TREAT ]) .ability(Abilities.BALL_FETCH); }); @@ -43,16 +41,15 @@ describe("Moves - Octolock", () => { // use Octolock and advance to init phase of next turn to check for stat changes game.move.select(Moves.OCTOLOCK); - await game.phaseInterceptor.to(TurnInitPhase); + await game.toNextTurn(); expect(enemyPokemon.getStatStage(Stat.DEF)).toBe(-1); expect(enemyPokemon.getStatStage(Stat.SPDEF)).toBe(-1); // take a second turn to make sure stat changes occur again - await game.phaseInterceptor.to(CommandPhase); game.move.select(Moves.SPLASH); + await game.toNextTurn(); - await game.phaseInterceptor.to(TurnInitPhase); expect(enemyPokemon.getStatStage(Stat.DEF)).toBe(-2); expect(enemyPokemon.getStatStage(Stat.SPDEF)).toBe(-2); }); @@ -65,7 +62,7 @@ describe("Moves - Octolock", () => { // use Octolock and advance to init phase of next turn to check for stat changes game.move.select(Moves.OCTOLOCK); - await game.phaseInterceptor.to(TurnInitPhase); + await game.toNextTurn(); expect(enemyPokemon.getStatStage(Stat.DEF)).toBe(0); expect(enemyPokemon.getStatStage(Stat.SPDEF)).toBe(-1); @@ -79,7 +76,7 @@ describe("Moves - Octolock", () => { // use Octolock and advance to init phase of next turn to check for stat changes game.move.select(Moves.OCTOLOCK); - await game.phaseInterceptor.to(TurnInitPhase); + await game.toNextTurn(); expect(enemyPokemon.getStatStage(Stat.DEF)).toBe(0); expect(enemyPokemon.getStatStage(Stat.SPDEF)).toBe(0); @@ -93,7 +90,7 @@ describe("Moves - Octolock", () => { // use Octolock and advance to init phase of next turn to check for stat changes game.move.select(Moves.OCTOLOCK); - await game.phaseInterceptor.to(TurnInitPhase); + await game.toNextTurn(); expect(enemyPokemon.getStatStage(Stat.DEF)).toBe(0); expect(enemyPokemon.getStatStage(Stat.SPDEF)).toBe(0); @@ -110,7 +107,44 @@ describe("Moves - Octolock", () => { game.move.select(Moves.OCTOLOCK); // after Octolock - enemy should be trapped - await game.phaseInterceptor.to(MoveEndPhase); + await game.phaseInterceptor.to("MoveEndPhase"); expect(enemyPokemon.findTag(t => t instanceof TrappedTag)).toBeDefined(); }); + + it("does not work on ghost type pokemon", async () => { + game.override.enemyMoveset(Moves.OCTOLOCK); + await game.classicMode.startBattle([ Species.GASTLY ]); + + const playerPokemon = game.scene.getPlayerPokemon()!; + + // before Octolock - player should not be trapped + expect(playerPokemon.findTag(t => t instanceof TrappedTag)).toBeUndefined(); + + game.move.select(Moves.SPLASH); + await game.toNextTurn(); + + // after Octolock - player should still not be trapped, and no stat loss + expect(playerPokemon.findTag(t => t instanceof TrappedTag)).toBeUndefined(); + expect(playerPokemon.getStatStage(Stat.DEF)).toBe(0); + expect(playerPokemon.getStatStage(Stat.SPDEF)).toBe(0); + }); + + it("does not work on pokemon with added ghost type via Trick-or-Treat", async () => { + await game.classicMode.startBattle([ Species.FEEBAS ]); + + const enemy = game.scene.getEnemyPokemon()!; + + // before Octolock - pokemon should not be trapped + expect(enemy.findTag(t => t instanceof TrappedTag)).toBeUndefined(); + + game.move.select(Moves.TRICK_OR_TREAT); + await game.toNextTurn(); + game.move.select(Moves.OCTOLOCK); + await game.toNextTurn(); + + // after Octolock - pokemon should still not be trapped, and no stat loss + expect(enemy.findTag(t => t instanceof TrappedTag)).toBeUndefined(); + expect(enemy.getStatStage(Stat.DEF)).toBe(0); + expect(enemy.getStatStage(Stat.SPDEF)).toBe(0); + }); }); From cd6cee860a84f627748eda4d127de9f06d4d486e Mon Sep 17 00:00:00 2001 From: "Amani H." <109637146+xsn34kzx@users.noreply.github.com> Date: Sat, 30 Nov 2024 05:07:19 -0500 Subject: [PATCH 022/119] [Bug] Fix Eviolite Weight Condition (#3681) * [Bug] Fix Eviolite Weight Condition * Break Up Conditions for Legibility --------- Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> --- src/modifier/modifier-type.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/modifier/modifier-type.ts b/src/modifier/modifier-type.ts index 4986c1feab1..901aa422c61 100644 --- a/src/modifier/modifier-type.ts +++ b/src/modifier/modifier-type.ts @@ -1730,8 +1730,14 @@ const modifierPool: ModifierPool = { new WeightedModifierType(modifierTypes.EVIOLITE, (party: Pokemon[]) => { const { gameMode, gameData } = party[0].scene; if (gameMode.isDaily || (!gameMode.isFreshStartChallenge() && gameData.isUnlocked(Unlockables.EVIOLITE))) { - return party.some(p => ((p.getSpeciesForm(true).speciesId in pokemonEvolutions) || (p.isFusion() && (p.getFusionSpeciesForm(true).speciesId in pokemonEvolutions))) - && !p.getHeldItems().some(i => i instanceof EvolutionStatBoosterModifier) && !p.isMax()) ? 10 : 0; + return party.some(p => { + // Check if Pokemon's species (or fusion species, if applicable) can evolve or if they're G-Max'd + if (!p.isMax() && ((p.getSpeciesForm(true).speciesId in pokemonEvolutions) || (p.isFusion() && (p.getFusionSpeciesForm(true).speciesId in pokemonEvolutions)))) { + // Check if Pokemon is already holding an Eviolite + return !p.getHeldItems().some(i => i.type.id === "EVIOLITE"); + } + return false; + }) ? 10 : 0; } return 0; }), From eef01837614d97e3d861ba63a230af5a19b5bbbb Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Sat, 30 Nov 2024 02:28:31 -0800 Subject: [PATCH 023/119] [Bug] Stakeout should trigger if the enemy switches with U-Turn/etc (#4918) --- src/data/ability.ts | 2 +- src/test/abilities/stakeout.test.ts | 85 +++++++++++++++++++++++++++++ 2 files changed, 86 insertions(+), 1 deletion(-) create mode 100644 src/test/abilities/stakeout.test.ts diff --git a/src/data/ability.ts b/src/data/ability.ts index 8ff4cfea59b..66624f03436 100644 --- a/src/data/ability.ts +++ b/src/data/ability.ts @@ -5953,7 +5953,7 @@ export function initAbilities() { .bypassFaint() .partial(), // Meteor form should protect against status effects and yawn new Ability(Abilities.STAKEOUT, 7) - .attr(MovePowerBoostAbAttr, (user, target, move) => user?.scene.currentBattle.turnCommands[target?.getBattlerIndex() ?? BattlerIndex.ATTACKER]?.command === Command.POKEMON, 2), + .attr(MovePowerBoostAbAttr, (user, target, move) => !!target?.turnData.switchedInThisTurn, 2), new Ability(Abilities.WATER_BUBBLE, 7) .attr(ReceivedTypeDamageMultiplierAbAttr, Type.FIRE, 0.5) .attr(MoveTypePowerBoostAbAttr, Type.WATER, 2) diff --git a/src/test/abilities/stakeout.test.ts b/src/test/abilities/stakeout.test.ts new file mode 100644 index 00000000000..885169b284e --- /dev/null +++ b/src/test/abilities/stakeout.test.ts @@ -0,0 +1,85 @@ +import { BattlerIndex } from "#app/battle"; +import { isBetween } from "#app/utils"; +import { Abilities } from "#enums/abilities"; +import { Moves } from "#enums/moves"; +import { Species } from "#enums/species"; +import GameManager from "#test/utils/gameManager"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; + +describe("Abilities - Stakeout", () => { + let phaserGame: Phaser.Game; + let game: GameManager; + + beforeAll(() => { + phaserGame = new Phaser.Game({ + type: Phaser.HEADLESS, + }); + }); + + afterEach(() => { + game.phaseInterceptor.restoreOg(); + }); + + beforeEach(() => { + game = new GameManager(phaserGame); + game.override + .moveset([ Moves.SPLASH, Moves.SURF ]) + .ability(Abilities.STAKEOUT) + .battleType("single") + .disableCrits() + .startingLevel(100) + .enemyLevel(100) + .enemySpecies(Species.SNORLAX) + .enemyAbility(Abilities.BALL_FETCH) + .enemyMoveset([ Moves.SPLASH, Moves.FLIP_TURN ]) + .startingWave(5); + }); + + it("should do double damage to a pokemon that switched out", async () => { + await game.classicMode.startBattle([ Species.MILOTIC ]); + + const [ enemy1, ] = game.scene.getEnemyParty(); + + game.move.select(Moves.SURF); + await game.forceEnemyMove(Moves.SPLASH); + await game.toNextTurn(); + const damage1 = enemy1.getInverseHp(); + enemy1.hp = enemy1.getMaxHp(); + + game.move.select(Moves.SPLASH); + game.forceEnemyToSwitch(); + await game.toNextTurn(); + + game.move.select(Moves.SURF); + game.forceEnemyToSwitch(); + await game.toNextTurn(); + + expect(enemy1.isFainted()).toBe(false); + expect(isBetween(enemy1.getInverseHp(), (damage1 * 2) - 5, (damage1 * 2) + 5)).toBe(true); + }); + + it("should do double damage to a pokemon that switched out via U-Turn/etc", async () => { + await game.classicMode.startBattle([ Species.MILOTIC ]); + + const [ enemy1, ] = game.scene.getEnemyParty(); + + game.move.select(Moves.SURF); + await game.forceEnemyMove(Moves.SPLASH); + await game.toNextTurn(); + const damage1 = enemy1.getInverseHp(); + enemy1.hp = enemy1.getMaxHp(); + + game.move.select(Moves.SPLASH); + await game.forceEnemyMove(Moves.FLIP_TURN); + await game.toNextTurn(); + + game.move.select(Moves.SURF); + await game.forceEnemyMove(Moves.FLIP_TURN); + await game.setTurnOrder([ BattlerIndex.ENEMY, BattlerIndex.PLAYER ]); + await game.toNextTurn(); + + expect(enemy1.isFainted()).toBe(false); + expect(isBetween(enemy1.getInverseHp(), (damage1 * 2) - 5, (damage1 * 2) + 5)).toBe(true); + }); +}); From d1294caeb60b9a291a2558900a841e3d407d5019 Mon Sep 17 00:00:00 2001 From: star-krieg <113486223+star-krieg@users.noreply.github.com> Date: Sun, 1 Dec 2024 03:28:29 +0800 Subject: [PATCH 024/119] [Balance] Candy friendship changes (#4947) Changes: - Increase default value for friendship gain from winning a battle (from 2 to 3) - Increase Classic candy friendship multiplier (from 2 to 3) - Increase Rare Candy friendship gain (from 5 to 6) - Decrease value for friendship decrease from losing a battle (from 10 to 5) - Update Candy friendship thresholds for getting candy for some starter costs. - Change Soothe Bell from Rogue to Great (Weight: 2 in Great) - Adjust Map weight to account for change (Weight: 1 to 2) - Clowning around ME: When shuffling items, soothe bells will get replaced by a random Ultra Tier item - Clowning around ME: When shuffling items, no item will get replaced by a Soothe Bell Commit history: * Candy friendship changes Update default value for friendship gain from battle and adjust Soothe Bell tier to Great * Update modifier-type.ts * Update friendship constants * Clowning around encounter no longer consider soothe bell rogue tier * Expert Breeder ME test will no longer fail if candy gain per battle is changed --------- Co-authored-by: Starkrieg Co-authored-by: damocleas Co-authored-by: Moka Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> --- src/data/balance/starters.ts | 18 +++++++++--------- .../encounters/clowning-around-encounter.ts | 5 +++-- src/modifier/modifier-type.ts | 4 ++-- .../clowning-around-encounter.test.ts | 5 ++++- .../the-expert-breeder-encounter.test.ts | 10 +++++++--- 5 files changed, 25 insertions(+), 17 deletions(-) diff --git a/src/data/balance/starters.ts b/src/data/balance/starters.ts index d6a1f0c3eaf..a4a3c9d011c 100644 --- a/src/data/balance/starters.ts +++ b/src/data/balance/starters.ts @@ -3,10 +3,10 @@ import { Species } from "#enums/species"; export const POKERUS_STARTER_COUNT = 5; // #region Friendship constants -export const CLASSIC_CANDY_FRIENDSHIP_MULTIPLIER = 2; -export const FRIENDSHIP_GAIN_FROM_BATTLE = 2; -export const FRIENDSHIP_GAIN_FROM_RARE_CANDY = 5; -export const FRIENDSHIP_LOSS_FROM_FAINT = 10; +export const CLASSIC_CANDY_FRIENDSHIP_MULTIPLIER = 3; +export const FRIENDSHIP_GAIN_FROM_BATTLE = 3; +export const FRIENDSHIP_GAIN_FROM_RARE_CANDY = 6; +export const FRIENDSHIP_LOSS_FROM_FAINT = 5; /** * Function to get the cumulative friendship threshold at which a candy is earned @@ -16,19 +16,19 @@ export const FRIENDSHIP_LOSS_FROM_FAINT = 10; export function getStarterValueFriendshipCap(starterCost: number): number { switch (starterCost) { case 1: - return 20; + return 25; case 2: - return 40; + return 50; case 3: - return 60; + return 75; case 4: return 100; case 5: - return 140; + return 150; case 6: return 200; case 7: - return 280; + return 300; case 8: case 9: return 450; diff --git a/src/data/mystery-encounters/encounters/clowning-around-encounter.ts b/src/data/mystery-encounters/encounters/clowning-around-encounter.ts index ae6cabd4dae..6bd6856604b 100644 --- a/src/data/mystery-encounters/encounters/clowning-around-encounter.ts +++ b/src/data/mystery-encounters/encounters/clowning-around-encounter.ts @@ -276,6 +276,8 @@ export const ClowningAroundEncounter: MysteryEncounter = generateItemsOfTier(scene, mostHeldItemsPokemon, numBerries, "Berries"); // Shuffle Transferable held items in the same tier (only shuffles Ultra and Rogue atm) + // For the purpose of this ME, Soothe Bells and Lucky Eggs are counted as Ultra tier + // And Golden Eggs as Rogue tier let numUltra = 0; let numRogue = 0; items.filter(m => m.isTransferable && !(m instanceof BerryModifier)) @@ -285,7 +287,7 @@ export const ClowningAroundEncounter: MysteryEncounter = if (type.id === "GOLDEN_EGG" || tier === ModifierTier.ROGUE) { numRogue += m.stackCount; scene.removeModifier(m); - } else if (type.id === "LUCKY_EGG" || tier === ModifierTier.ULTRA) { + } else if (type.id === "LUCKY_EGG" || type.id === "SOOTHE_BELL" || tier === ModifierTier.ULTRA) { numUltra += m.stackCount; scene.removeModifier(m); } @@ -456,7 +458,6 @@ function generateItemsOfTier(scene: BattleScene, pokemon: PlayerPokemon, numItem [ modifierTypes.LEFTOVERS, 4 ], [ modifierTypes.SHELL_BELL, 4 ], [ modifierTypes.SOUL_DEW, 10 ], - [ modifierTypes.SOOTHE_BELL, 3 ], [ modifierTypes.SCOPE_LENS, 1 ], [ modifierTypes.BATON, 1 ], [ modifierTypes.FOCUS_BAND, 5 ], diff --git a/src/modifier/modifier-type.ts b/src/modifier/modifier-type.ts index 901aa422c61..04776afc624 100644 --- a/src/modifier/modifier-type.ts +++ b/src/modifier/modifier-type.ts @@ -1702,7 +1702,8 @@ const modifierPool: ModifierPool = { new WeightedModifierType(modifierTypes.EVOLUTION_ITEM, (party: Pokemon[]) => { return Math.min(Math.ceil(party[0].scene.currentBattle.waveIndex / 15), 8); }, 8), - new WeightedModifierType(modifierTypes.MAP, (party: Pokemon[]) => party[0].scene.gameMode.isClassic && party[0].scene.currentBattle.waveIndex < 180 ? 1 : 0, 1), + new WeightedModifierType(modifierTypes.MAP, (party: Pokemon[]) => party[0].scene.gameMode.isClassic && party[0].scene.currentBattle.waveIndex < 180 ? 2 : 0, 2), + new WeightedModifierType(modifierTypes.SOOTHE_BELL, 2), new WeightedModifierType(modifierTypes.TM_GREAT, 3), new WeightedModifierType(modifierTypes.MEMORY_MUSHROOM, (party: Pokemon[]) => { if (!party.find(p => p.getLearnableLevelMoves().length)) { @@ -1800,7 +1801,6 @@ const modifierPool: ModifierPool = { new WeightedModifierType(modifierTypes.SOUL_DEW, 7), //new WeightedModifierType(modifierTypes.OVAL_CHARM, 6), new WeightedModifierType(modifierTypes.CATCHING_CHARM, (party: Pokemon[]) => !party[0].scene.gameMode.isFreshStartChallenge() && party[0].scene.gameData.getSpeciesCount(d => !!d.caughtAttr) > 100 ? 4 : 0, 4), - new WeightedModifierType(modifierTypes.SOOTHE_BELL, 4), new WeightedModifierType(modifierTypes.ABILITY_CHARM, skipInClassicAfterWave(189, 6)), new WeightedModifierType(modifierTypes.FOCUS_BAND, 5), new WeightedModifierType(modifierTypes.KINGS_ROCK, 3), diff --git a/src/test/mystery-encounter/encounters/clowning-around-encounter.test.ts b/src/test/mystery-encounter/encounters/clowning-around-encounter.test.ts index a403a306b3d..e7ea6eea0ea 100644 --- a/src/test/mystery-encounter/encounters/clowning-around-encounter.test.ts +++ b/src/test/mystery-encounter/encounters/clowning-around-encounter.test.ts @@ -266,6 +266,9 @@ describe("Clowning Around - Mystery Encounter", () => { // 5 Lucky Egg on lead (ultra) itemType = generateModifierType(scene, modifierTypes.LUCKY_EGG) as PokemonHeldItemModifierType; await addItemToPokemon(scene, scene.getPlayerParty()[0], 5, itemType); + // 3 Soothe Bell on lead (great tier, but counted as ultra by this ME) + itemType = generateModifierType(scene, modifierTypes.SOOTHE_BELL) as PokemonHeldItemModifierType; + await addItemToPokemon(scene, scene.getPlayerParty()[0], 3, itemType); // 5 Soul Dew on lead (rogue) itemType = generateModifierType(scene, modifierTypes.SOUL_DEW) as PokemonHeldItemModifierType; await addItemToPokemon(scene, scene.getPlayerParty()[0], 5, itemType); @@ -286,7 +289,7 @@ describe("Clowning Around - Mystery Encounter", () => { const rogueCountAfter = leadItemsAfter .filter(m => m.type.tier === ModifierTier.ROGUE) .reduce((a, b) => a + b.stackCount, 0); - expect(ultraCountAfter).toBe(10); + expect(ultraCountAfter).toBe(13); expect(rogueCountAfter).toBe(7); const secondItemsAfter = scene.getPlayerParty()[1].getHeldItems(); diff --git a/src/test/mystery-encounter/encounters/the-expert-breeder-encounter.test.ts b/src/test/mystery-encounter/encounters/the-expert-breeder-encounter.test.ts index 7fc2490fcc9..87ccff71e22 100644 --- a/src/test/mystery-encounter/encounters/the-expert-breeder-encounter.test.ts +++ b/src/test/mystery-encounter/encounters/the-expert-breeder-encounter.test.ts @@ -18,6 +18,7 @@ import { TheExpertPokemonBreederEncounter } from "#app/data/mystery-encounters/e import { TrainerType } from "#enums/trainer-type"; import { EggTier } from "#enums/egg-type"; import { PostMysteryEncounterPhase } from "#app/phases/mystery-encounter-phases"; +import { FRIENDSHIP_GAIN_FROM_BATTLE } from "#app/data/balance/starters"; const namespace = "mysteryEncounters/theExpertPokemonBreeder"; const defaultParty = [ Species.LAPRAS, Species.GENGAR, Species.ABRA ]; @@ -182,7 +183,10 @@ describe("The Expert Pokémon Breeder - Mystery Encounter", () => { await game.phaseInterceptor.to(PostMysteryEncounterPhase); const friendshipAfter = scene.currentBattle.mysteryEncounter!.misc.pokemon1.friendship; - expect(friendshipAfter).toBe(friendshipBefore + 20 + 2); // +2 extra for friendship gained from winning battle + // 20 from ME + extra from winning battle (that extra is not accurate to what happens in game. + // The Pokemon normally gets FRIENDSHIP_GAIN_FROM_BATTLE 3 times, once for each defeated Pokemon + // but due to how skipBattleRunMysteryEncounterRewardsPhase is implemented, it only receives it once) + expect(friendshipAfter).toBe(friendshipBefore + 20 + FRIENDSHIP_GAIN_FROM_BATTLE); }); }); @@ -261,7 +265,7 @@ describe("The Expert Pokémon Breeder - Mystery Encounter", () => { await game.phaseInterceptor.to(PostMysteryEncounterPhase); const friendshipAfter = scene.currentBattle.mysteryEncounter!.misc.pokemon2.friendship; - expect(friendshipAfter).toBe(friendshipBefore + 20 + 2); // +2 extra for friendship gained from winning battle + expect(friendshipAfter).toBe(friendshipBefore + 20 + FRIENDSHIP_GAIN_FROM_BATTLE); // 20 from ME + extra for friendship gained from winning battle }); }); @@ -340,7 +344,7 @@ describe("The Expert Pokémon Breeder - Mystery Encounter", () => { await game.phaseInterceptor.to(PostMysteryEncounterPhase); const friendshipAfter = scene.currentBattle.mysteryEncounter!.misc.pokemon3.friendship; - expect(friendshipAfter).toBe(friendshipBefore + 20 + 2); // +2 extra for friendship gained from winning battle + expect(friendshipAfter).toBe(friendshipBefore + 20 + FRIENDSHIP_GAIN_FROM_BATTLE); // 20 + extra for friendship gained from winning battle }); }); }); From 5af2bcd5ec0a44dedbf49ae6d6f72b2536b359c4 Mon Sep 17 00:00:00 2001 From: muscode Date: Sat, 30 Nov 2024 13:44:06 -0600 Subject: [PATCH 025/119] [Bug] Prevent battle skip with Wimp Out (#4931) Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> Co-authored-by: Mumble <171087428+frutescens@users.noreply.github.com> Co-authored-by: PigeonBar <56974298+PigeonBar@users.noreply.github.com> Co-authored-by: Moka <54149968+MokaStitcher@users.noreply.github.com> --- src/data/ability.ts | 12 ++++----- src/data/arena-tag.ts | 2 +- src/data/move.ts | 2 +- src/field/pokemon.ts | 3 +++ src/phases/move-effect-phase.ts | 6 +++-- src/phases/post-turn-status-effect-phase.ts | 2 +- src/phases/turn-end-phase.ts | 26 +++++++++--------- src/phases/weather-effect-phase.ts | 10 ++++--- src/test/abilities/wimp_out.test.ts | 30 +++++++++++++++++++++ 9 files changed, 67 insertions(+), 26 deletions(-) diff --git a/src/data/ability.ts b/src/data/ability.ts index 66624f03436..234b502c23f 100644 --- a/src/data/ability.ts +++ b/src/data/ability.ts @@ -3720,16 +3720,16 @@ export class PostTurnHurtIfSleepingAbAttr extends PostTurnAbAttr { /** * Deals damage to all sleeping opponents equal to 1/8 of their max hp (min 1) - * @param {Pokemon} pokemon Pokemon that has this ability - * @param {boolean} passive N/A - * @param {boolean} simulated true if applying in a simulated call. - * @param {any[]} args N/A - * @returns {boolean} true if any opponents are sleeping + * @param pokemon Pokemon that has this ability + * @param passive N/A + * @param simulated `true` if applying in a simulated call. + * @param args N/A + * @returns `true` if any opponents are sleeping */ applyPostTurn(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean | Promise { let hadEffect: boolean = false; for (const opp of pokemon.getOpponents()) { - if ((opp.status?.effect === StatusEffect.SLEEP || opp.hasAbility(Abilities.COMATOSE)) && !opp.hasAbilityWithAttr(BlockNonDirectDamageAbAttr)) { + if ((opp.status?.effect === StatusEffect.SLEEP || opp.hasAbility(Abilities.COMATOSE)) && !opp.hasAbilityWithAttr(BlockNonDirectDamageAbAttr) && !opp.switchOutStatus) { if (!simulated) { opp.damageAndUpdate(Utils.toDmgValue(opp.getMaxHp() / 8), HitResult.OTHER); pokemon.scene.queueMessage(i18next.t("abilityTriggers:badDreams", { pokemonName: getPokemonNameWithAffix(opp) })); diff --git a/src/data/arena-tag.ts b/src/data/arena-tag.ts index 2f57650c65d..8bb74d29a4e 100644 --- a/src/data/arena-tag.ts +++ b/src/data/arena-tag.ts @@ -1144,7 +1144,7 @@ class FireGrassPledgeTag extends ArenaTag { ? arena.scene.getPlayerField() : arena.scene.getEnemyField(); - field.filter(pokemon => !pokemon.isOfType(Type.FIRE)).forEach(pokemon => { + field.filter(pokemon => !pokemon.isOfType(Type.FIRE) && !pokemon.switchOutStatus).forEach(pokemon => { // "{pokemonNameWithAffix} was hurt by the sea of fire!" pokemon.scene.queueMessage(i18next.t("arenaTag:fireGrassPledgeLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); // TODO: Replace this with a proper animation diff --git a/src/data/move.ts b/src/data/move.ts index 091301990f3..166058178f5 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -1867,7 +1867,7 @@ export class FlameBurstAttr extends MoveEffectAttr { applyAbAttrs(BlockNonDirectDamageAbAttr, targetAlly, cancelled); } - if (cancelled.value || !targetAlly) { + if (cancelled.value || !targetAlly || targetAlly.switchOutStatus) { return false; } diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index 397bf2cbf36..2638a6cfc62 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -3007,6 +3007,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { damageAndUpdate(damage: integer, result?: DamageResult, critical: boolean = false, ignoreSegments: boolean = false, preventEndure: boolean = false, ignoreFaintPhase: boolean = false, source?: Pokemon): integer { const damagePhase = new DamageAnimPhase(this.scene, this.getBattlerIndex(), damage, result as DamageResult, critical); this.scene.unshiftPhase(damagePhase); + if (this.switchOutStatus && source) { + damage = 0; + } damage = this.damage(damage, ignoreSegments, preventEndure, ignoreFaintPhase); // Damage amount may have changed, but needed to be queued before calling damage function damagePhase.updateAmount(damage); diff --git a/src/phases/move-effect-phase.ts b/src/phases/move-effect-phase.ts index f7a9b22c396..b85be5b46aa 100644 --- a/src/phases/move-effect-phase.ts +++ b/src/phases/move-effect-phase.ts @@ -228,9 +228,11 @@ export class MoveEffectPhase extends PokemonPhase { * If the move missed a target, stop all future hits against that target * and move on to the next target (if there is one). */ - if (isCommanding || (!isImmune && !isProtected && !targetHitChecks[target.getBattlerIndex()])) { + if (target.switchOutStatus || isCommanding || (!isImmune && !isProtected && !targetHitChecks[target.getBattlerIndex()])) { this.stopMultiHit(target); - this.scene.queueMessage(i18next.t("battle:attackMissed", { pokemonNameWithAffix: getPokemonNameWithAffix(target) })); + if (!target.switchOutStatus) { + this.scene.queueMessage(i18next.t("battle:attackMissed", { pokemonNameWithAffix: getPokemonNameWithAffix(target) })); + } if (moveHistoryEntry.result === MoveResult.PENDING) { moveHistoryEntry.result = MoveResult.MISS; } diff --git a/src/phases/post-turn-status-effect-phase.ts b/src/phases/post-turn-status-effect-phase.ts index 08e4d7cb952..378a932cdc5 100644 --- a/src/phases/post-turn-status-effect-phase.ts +++ b/src/phases/post-turn-status-effect-phase.ts @@ -16,7 +16,7 @@ export class PostTurnStatusEffectPhase extends PokemonPhase { start() { const pokemon = this.getPokemon(); - if (pokemon?.isActive(true) && pokemon.status && pokemon.status.isPostTurn()) { + if (pokemon?.isActive(true) && pokemon.status && pokemon.status.isPostTurn() && !pokemon.switchOutStatus) { pokemon.status.incrementTurn(); const cancelled = new Utils.BooleanHolder(false); applyAbAttrs(BlockNonDirectDamageAbAttr, pokemon, cancelled); diff --git a/src/phases/turn-end-phase.ts b/src/phases/turn-end-phase.ts index 60a2e6600db..e5f1850758d 100644 --- a/src/phases/turn-end-phase.ts +++ b/src/phases/turn-end-phase.ts @@ -23,22 +23,24 @@ export class TurnEndPhase extends FieldPhase { this.scene.eventTarget.dispatchEvent(new TurnEndEvent(this.scene.currentBattle.turn)); const handlePokemon = (pokemon: Pokemon) => { - pokemon.lapseTags(BattlerTagLapseType.TURN_END); + if (!pokemon.switchOutStatus) { + pokemon.lapseTags(BattlerTagLapseType.TURN_END); - this.scene.applyModifiers(TurnHealModifier, pokemon.isPlayer(), pokemon); + this.scene.applyModifiers(TurnHealModifier, pokemon.isPlayer(), pokemon); - if (this.scene.arena.terrain?.terrainType === TerrainType.GRASSY && pokemon.isGrounded()) { - this.scene.unshiftPhase(new PokemonHealPhase(this.scene, pokemon.getBattlerIndex(), - Math.max(pokemon.getMaxHp() >> 4, 1), i18next.t("battle:turnEndHpRestore", { pokemonName: getPokemonNameWithAffix(pokemon) }), true)); + if (this.scene.arena.terrain?.terrainType === TerrainType.GRASSY && pokemon.isGrounded()) { + this.scene.unshiftPhase(new PokemonHealPhase(this.scene, pokemon.getBattlerIndex(), + Math.max(pokemon.getMaxHp() >> 4, 1), i18next.t("battle:turnEndHpRestore", { pokemonName: getPokemonNameWithAffix(pokemon) }), true)); + } + + if (!pokemon.isPlayer()) { + this.scene.applyModifiers(EnemyTurnHealModifier, false, pokemon); + this.scene.applyModifier(EnemyStatusEffectHealChanceModifier, false, pokemon); + } + + applyPostTurnAbAttrs(PostTurnAbAttr, pokemon); } - if (!pokemon.isPlayer()) { - this.scene.applyModifiers(EnemyTurnHealModifier, false, pokemon); - this.scene.applyModifier(EnemyStatusEffectHealChanceModifier, false, pokemon); - } - - applyPostTurnAbAttrs(PostTurnAbAttr, pokemon); - this.scene.applyModifiers(TurnStatusEffectModifier, pokemon.isPlayer(), pokemon); this.scene.applyModifiers(TurnHeldItemTransferModifier, pokemon.isPlayer(), pokemon); diff --git a/src/phases/weather-effect-phase.ts b/src/phases/weather-effect-phase.ts index b48ee342780..442bafa0ca7 100644 --- a/src/phases/weather-effect-phase.ts +++ b/src/phases/weather-effect-phase.ts @@ -51,7 +51,7 @@ export class WeatherEffectPhase extends CommonAnimPhase { }; this.executeForAll((pokemon: Pokemon) => { - const immune = !pokemon || !!pokemon.getTypes(true, true).filter(t => this.weather?.isTypeDamageImmune(t)).length; + const immune = !pokemon || !!pokemon.getTypes(true, true).filter(t => this.weather?.isTypeDamageImmune(t)).length || pokemon.switchOutStatus; if (!immune) { inflictDamage(pokemon); } @@ -59,8 +59,12 @@ export class WeatherEffectPhase extends CommonAnimPhase { } } - this.scene.ui.showText(getWeatherLapseMessage(this.weather.weatherType)!, null, () => { // TODO: is this bang correct? - this.executeForAll((pokemon: Pokemon) => applyPostWeatherLapseAbAttrs(PostWeatherLapseAbAttr, pokemon, this.weather)); + this.scene.ui.showText(getWeatherLapseMessage(this.weather.weatherType) ?? "", null, () => { + this.executeForAll((pokemon: Pokemon) => { + if (!pokemon.switchOutStatus) { + applyPostWeatherLapseAbAttrs(PostWeatherLapseAbAttr, pokemon, this.weather); + } + }); super.start(); }); diff --git a/src/test/abilities/wimp_out.test.ts b/src/test/abilities/wimp_out.test.ts index 4283386b248..bff68b54c75 100644 --- a/src/test/abilities/wimp_out.test.ts +++ b/src/test/abilities/wimp_out.test.ts @@ -632,4 +632,34 @@ describe("Abilities - Wimp Out", () => { const hasFled = enemyPokemon.switchOutStatus; expect(isVisible && !hasFled).toBe(true); }); + it("wimp out will not skip battles when triggered in a double battle", async () => { + const wave = 2; + game.override + .enemyMoveset(Moves.SPLASH) + .enemySpecies(Species.WIMPOD) + .enemyAbility(Abilities.WIMP_OUT) + .moveset([ Moves.MATCHA_GOTCHA, Moves.FALSE_SWIPE ]) + .startingLevel(50) + .enemyLevel(1) + .battleType("double") + .startingWave(wave); + await game.classicMode.startBattle([ + Species.RAICHU, + Species.PIKACHU + ]); + const [ wimpod0, wimpod1 ] = game.scene.getEnemyField(); + + game.move.select(Moves.FALSE_SWIPE, 0, BattlerIndex.ENEMY); + game.move.select(Moves.MATCHA_GOTCHA, 1); + await game.setTurnOrder([ BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2 ]); + await game.phaseInterceptor.to("TurnEndPhase"); + + expect(wimpod0.hp).toBeGreaterThan(0); + expect(wimpod0.switchOutStatus).toBe(true); + expect(wimpod0.isFainted()).toBe(false); + expect(wimpod1.isFainted()).toBe(true); + + await game.toNextWave(); + expect(game.scene.currentBattle.waveIndex).toBe(wave + 1); + }); }); From 5fc41dfd16c00d061645e06dd625bcf0ed87d88b Mon Sep 17 00:00:00 2001 From: muscode Date: Sat, 30 Nov 2024 15:05:55 -0600 Subject: [PATCH 026/119] [Bug] Fix Wimp Out/EE Trainer Battle causing enemy stack with multi hit (#4935) * added fix for wimp out stack * Replace `integer` with `number` * Apply suggestions from code review Co-authored-by: innerthunder <168692175+innerthunder@users.noreply.github.com> * Update imports * Update `if` check * Modify `if` check conditions --------- Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> Co-authored-by: innerthunder <168692175+innerthunder@users.noreply.github.com> --- src/field/pokemon.ts | 20 +++++++++----------- src/phases/move-effect-phase.ts | 9 +++++++++ 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index 2638a6cfc62..d46e729274c 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -23,7 +23,7 @@ import { reverseCompatibleTms, tmSpecies, tmPoolTiers } from "#app/data/balance/ import { BattlerTag, BattlerTagLapseType, EncoreTag, GroundedTag, HighestStatBoostTag, SubstituteTag, TypeImmuneTag, getBattlerTag, SemiInvulnerableTag, TypeBoostTag, MoveRestrictionBattlerTag, ExposedTag, DragonCheerTag, CritBoostTag, TrappedTag, TarShotTag, AutotomizedTag, PowerTrickTag } from "../data/battler-tags"; import { WeatherType } from "#enums/weather-type"; import { ArenaTagSide, NoCritTag, WeakenMoveScreenTag } from "#app/data/arena-tag"; -import { Ability, AbAttr, StatMultiplierAbAttr, BlockCritAbAttr, BonusCritAbAttr, BypassBurnDamageReductionAbAttr, FieldPriorityMoveImmunityAbAttr, IgnoreOpponentStatStagesAbAttr, MoveImmunityAbAttr, PreDefendFullHpEndureAbAttr, ReceivedMoveDamageMultiplierAbAttr, StabBoostAbAttr, StatusEffectImmunityAbAttr, TypeImmunityAbAttr, WeightMultiplierAbAttr, allAbilities, applyAbAttrs, applyStatMultiplierAbAttrs, applyPreApplyBattlerTagAbAttrs, applyPreAttackAbAttrs, applyPreDefendAbAttrs, applyPreSetStatusAbAttrs, UnsuppressableAbilityAbAttr, SuppressFieldAbilitiesAbAttr, NoFusionAbilityAbAttr, MultCritAbAttr, IgnoreTypeImmunityAbAttr, DamageBoostAbAttr, IgnoreTypeStatusEffectImmunityAbAttr, ConditionalCritAbAttr, applyFieldStatMultiplierAbAttrs, FieldMultiplyStatAbAttr, AddSecondStrikeAbAttr, UserFieldStatusEffectImmunityAbAttr, UserFieldBattlerTagImmunityAbAttr, BattlerTagImmunityAbAttr, MoveTypeChangeAbAttr, FullHpResistTypeAbAttr, applyCheckTrappedAbAttrs, CheckTrappedAbAttr, PostSetStatusAbAttr, applyPostSetStatusAbAttrs, InfiltratorAbAttr, AlliedFieldDamageReductionAbAttr, PostDamageAbAttr, applyPostDamageAbAttrs, PostDamageForceSwitchAbAttr, CommanderAbAttr, applyPostItemLostAbAttrs, PostItemLostAbAttr } from "#app/data/ability"; +import { Ability, AbAttr, StatMultiplierAbAttr, BlockCritAbAttr, BonusCritAbAttr, BypassBurnDamageReductionAbAttr, FieldPriorityMoveImmunityAbAttr, IgnoreOpponentStatStagesAbAttr, MoveImmunityAbAttr, PreDefendFullHpEndureAbAttr, ReceivedMoveDamageMultiplierAbAttr, StabBoostAbAttr, StatusEffectImmunityAbAttr, TypeImmunityAbAttr, WeightMultiplierAbAttr, allAbilities, applyAbAttrs, applyStatMultiplierAbAttrs, applyPreApplyBattlerTagAbAttrs, applyPreAttackAbAttrs, applyPreDefendAbAttrs, applyPreSetStatusAbAttrs, UnsuppressableAbilityAbAttr, SuppressFieldAbilitiesAbAttr, NoFusionAbilityAbAttr, MultCritAbAttr, IgnoreTypeImmunityAbAttr, DamageBoostAbAttr, IgnoreTypeStatusEffectImmunityAbAttr, ConditionalCritAbAttr, applyFieldStatMultiplierAbAttrs, FieldMultiplyStatAbAttr, AddSecondStrikeAbAttr, UserFieldStatusEffectImmunityAbAttr, UserFieldBattlerTagImmunityAbAttr, BattlerTagImmunityAbAttr, MoveTypeChangeAbAttr, FullHpResistTypeAbAttr, applyCheckTrappedAbAttrs, CheckTrappedAbAttr, PostSetStatusAbAttr, applyPostSetStatusAbAttrs, InfiltratorAbAttr, AlliedFieldDamageReductionAbAttr, PostDamageAbAttr, applyPostDamageAbAttrs, CommanderAbAttr, applyPostItemLostAbAttrs, PostItemLostAbAttr } from "#app/data/ability"; import PokemonData from "#app/system/pokemon-data"; import { BattlerIndex } from "#app/battle"; import { Mode } from "#app/ui/ui"; @@ -2896,14 +2896,6 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { this.turnData.damageTaken += damage; this.battleData.hitCount++; - // Multi-Lens and Parental Bond check for Wimp Out/Emergency Exit - if (this.hasAbilityWithAttr(PostDamageForceSwitchAbAttr)) { - const multiHitModifier = source.getHeldItems().find(m => m instanceof PokemonMultiHitModifier); - if (multiHitModifier || source.hasAbilityWithAttr(AddSecondStrikeAbAttr)) { - applyPostDamageAbAttrs(PostDamageAbAttr, this, damage, this.hasPassive(), false, [], source); - } - } - const attackResult = { move: move.id, result: result as DamageResult, damage: damage, critical: isCritical, sourceId: source.id, sourceBattlerIndex: source.getBattlerIndex() }; this.turnData.attacksReceived.unshift(attackResult); if (source.isPlayer() && !this.isPlayer()) { @@ -3004,7 +2996,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * @param ignoreFaintPhase boolean to ignore adding a FaintPhase, passsed to damage() * @returns integer of damage done */ - damageAndUpdate(damage: integer, result?: DamageResult, critical: boolean = false, ignoreSegments: boolean = false, preventEndure: boolean = false, ignoreFaintPhase: boolean = false, source?: Pokemon): integer { + damageAndUpdate(damage: number, result?: DamageResult, critical: boolean = false, ignoreSegments: boolean = false, preventEndure: boolean = false, ignoreFaintPhase: boolean = false, source?: Pokemon): number { const damagePhase = new DamageAnimPhase(this.scene, this.getBattlerIndex(), damage, result as DamageResult, critical); this.scene.unshiftPhase(damagePhase); if (this.switchOutStatus && source) { @@ -3013,7 +3005,13 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { damage = this.damage(damage, ignoreSegments, preventEndure, ignoreFaintPhase); // Damage amount may have changed, but needed to be queued before calling damage function damagePhase.updateAmount(damage); - applyPostDamageAbAttrs(PostDamageAbAttr, this, damage, this.hasPassive(), false, [], source); + /** + * Run PostDamageAbAttr from any source of damage that is not from a multi-hit + * Multi-hits are handled in move-effect-phase.ts for PostDamageAbAttr + */ + if (!source || source.turnData.hitCount <= 1) { + applyPostDamageAbAttrs(PostDamageAbAttr, this, damage, this.hasPassive(), false, [], source); + } return damage; } diff --git a/src/phases/move-effect-phase.ts b/src/phases/move-effect-phase.ts index b85be5b46aa..ea45dc2b9e2 100644 --- a/src/phases/move-effect-phase.ts +++ b/src/phases/move-effect-phase.ts @@ -4,11 +4,13 @@ import { AddSecondStrikeAbAttr, AlwaysHitAbAttr, applyPostAttackAbAttrs, + applyPostDamageAbAttrs, applyPostDefendAbAttrs, applyPreAttackAbAttrs, IgnoreMoveEffectsAbAttr, MaxMultiHitAbAttr, PostAttackAbAttr, + PostDamageAbAttr, PostDefendAbAttr, TypeImmunityAbAttr, } from "#app/data/ability"; @@ -301,6 +303,13 @@ export class MoveEffectPhase extends PokemonPhase { */ if (lastHit) { this.scene.triggerPokemonFormChange(user, SpeciesFormChangePostMoveTrigger); + /** + * Multi-Lens, Multi Hit move and Parental Bond check for PostDamageAbAttr + * other damage source are calculated in damageAndUpdate in pokemon.ts + */ + if (user.turnData.hitCount > 1) { + applyPostDamageAbAttrs(PostDamageAbAttr, target, 0, target.hasPassive(), false, [], user); + } } /** From d5146a57b9a1e5dccbe09ba8a8d19549d8c67ab3 Mon Sep 17 00:00:00 2001 From: geeilhan <107366005+geeilhan@users.noreply.github.com> Date: Sat, 30 Nov 2024 22:08:32 +0100 Subject: [PATCH 027/119] [Bug] Fix Lingering Arena Trap if Pokemon Switches Out (#4755) * [P2 BUG] Fixed Lingering Arena Trap if Pokemon Switches Out (#3713) * added switchOutStatus for all relevant moves * Added Lingering Arena Trap Fix for Mystery Encounters * Removing Redundant switchOutStatus Sets * added automated test case to arena trap test * Update src/field/pokemon.ts Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> * Update src/test/abilities/arena_trap.test.ts Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> --------- Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> Co-authored-by: Moka <54149968+MokaStitcher@users.noreply.github.com> --- src/field/pokemon.ts | 10 ++++++- src/test/abilities/arena_trap.test.ts | 38 ++++++++++++++++++++++++++- 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index d46e729274c..5706725f763 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -325,6 +325,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (!this.scene) { return false; } + if (this.switchOutStatus) { + return false; + } return this.scene.field.getIndex(this) > -1; } @@ -1583,7 +1586,12 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } const trappedByAbility = new Utils.BooleanHolder(false); - const opposingField = this.isPlayer() ? this.scene.getEnemyField() : this.scene.getPlayerField(); + /** + * Contains opposing Pokemon (Enemy/Player Pokemon) depending on perspective + * Afterwards, it filters out Pokemon that have been switched out of the field so trapped abilities/moves do not trigger + */ + const opposingFieldUnfiltered = this.isPlayer() ? this.scene.getEnemyField() : this.scene.getPlayerField(); + const opposingField = opposingFieldUnfiltered.filter(enemyPkm => enemyPkm.switchOutStatus === false); opposingField.forEach((opponent) => applyCheckTrappedAbAttrs(CheckTrappedAbAttr, opponent, trappedByAbility, this, trappedAbMessages, simulated) diff --git a/src/test/abilities/arena_trap.test.ts b/src/test/abilities/arena_trap.test.ts index 5068fed6b77..12b9673080d 100644 --- a/src/test/abilities/arena_trap.test.ts +++ b/src/test/abilities/arena_trap.test.ts @@ -1,9 +1,10 @@ +import { allAbilities } from "#app/data/ability"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import GameManager from "#test/utils/gameManager"; import Phaser from "phaser"; -import { afterEach, beforeAll, beforeEach, describe, it, expect } from "vitest"; +import { afterEach, beforeAll, beforeEach, describe, it, expect, vi } from "vitest"; describe("Abilities - Arena Trap", () => { let phaserGame: Phaser.Game; @@ -55,4 +56,39 @@ describe("Abilities - Arena Trap", () => { expect(game.scene.getEnemyField().length).toBe(2); }); + + /** + * This checks if the Player Pokemon is able to switch out/run away after the Enemy Pokemon with {@linkcode Abilities.ARENA_TRAP} + * is forcefully moved out of the field from moves such as Roar {@linkcode Moves.ROAR} + * + * Note: It should be able to switch out/run away + */ + it("should lift if pokemon with this ability leaves the field", async () => { + game.override + .battleType("double") + .enemyMoveset(Moves.SPLASH) + .moveset([ Moves.ROAR, Moves.SPLASH ]) + .ability(Abilities.BALL_FETCH); + await game.classicMode.startBattle([ Species.MAGIKARP, Species.SUDOWOODO, Species.LUNATONE ]); + + const [ enemy1, enemy2 ] = game.scene.getEnemyField(); + const [ player1, player2 ] = game.scene.getPlayerField(); + + vi.spyOn(enemy1, "getAbility").mockReturnValue(allAbilities[Abilities.ARENA_TRAP]); + + game.move.select(Moves.ROAR); + game.move.select(Moves.SPLASH, 1); + + // This runs the fist command phase where the moves are selected + await game.toNextTurn(); + // During the next command phase the player pokemons should not be trapped anymore + game.move.select(Moves.SPLASH); + game.move.select(Moves.SPLASH, 1); + await game.toNextTurn(); + + expect(player1.isTrapped()).toBe(false); + expect(player2.isTrapped()).toBe(false); + expect(enemy1.isOnField()).toBe(false); + expect(enemy2.isOnField()).toBe(true); + }); }); From 80555be22c57c6bcc5f4f2a51e953b9f5de12628 Mon Sep 17 00:00:00 2001 From: innerthunder <168692175+innerthunder@users.noreply.github.com> Date: Sat, 30 Nov 2024 16:07:01 -0800 Subject: [PATCH 028/119] Fix Post-Summon abilities not applying after switch prompt (#4908) --- src/phases/check-switch-phase.ts | 2 -- src/phases/post-summon-phase.ts | 9 ++++++--- src/phases/switch-phase.ts | 4 ++++ 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/phases/check-switch-phase.ts b/src/phases/check-switch-phase.ts index acf17c75668..18b999ed210 100644 --- a/src/phases/check-switch-phase.ts +++ b/src/phases/check-switch-phase.ts @@ -5,7 +5,6 @@ import { getPokemonNameWithAffix } from "#app/messages"; import { Mode } from "#app/ui/ui"; import i18next from "i18next"; import { BattlePhase } from "./battle-phase"; -import { PostSummonPhase } from "./post-summon-phase"; import { SummonMissingPhase } from "./summon-missing-phase"; import { SwitchPhase } from "./switch-phase"; import { SwitchType } from "#enums/switch-type"; @@ -54,7 +53,6 @@ export class CheckSwitchPhase extends BattlePhase { this.scene.ui.showText(i18next.t("battle:switchQuestion", { pokemonName: this.useName ? getPokemonNameWithAffix(pokemon) : i18next.t("battle:pokemon") }), null, () => { this.scene.ui.setMode(Mode.CONFIRM, () => { this.scene.ui.setMode(Mode.MESSAGE); - this.scene.tryRemovePhase(p => p instanceof PostSummonPhase && p.player && p.fieldIndex === this.fieldIndex); this.scene.unshiftPhase(new SwitchPhase(this.scene, SwitchType.INITIAL_SWITCH, this.fieldIndex, false, true)); this.end(); }, () => { diff --git a/src/phases/post-summon-phase.ts b/src/phases/post-summon-phase.ts index 644a6235a42..42e5b930eb1 100644 --- a/src/phases/post-summon-phase.ts +++ b/src/phases/post-summon-phase.ts @@ -27,9 +27,12 @@ export class PostSummonPhase extends PokemonPhase { pokemon.lapseTag(BattlerTagType.MYSTERY_ENCOUNTER_POST_SUMMON); } - applyPostSummonAbAttrs(PostSummonAbAttr, pokemon).then(() => this.end()); + applyPostSummonAbAttrs(PostSummonAbAttr, pokemon) + .then(() => { + const field = pokemon.isPlayer() ? this.scene.getPlayerField() : this.scene.getEnemyField(); + field.forEach((p) => applyAbAttrs(CommanderAbAttr, p, null, false)); - const field = pokemon.isPlayer() ? this.scene.getPlayerField() : this.scene.getEnemyField(); - field.forEach((p) => applyAbAttrs(CommanderAbAttr, p, null, false)); + this.end(); + }); } } diff --git a/src/phases/switch-phase.ts b/src/phases/switch-phase.ts index 2abb109a529..481d64c451e 100644 --- a/src/phases/switch-phase.ts +++ b/src/phases/switch-phase.ts @@ -3,6 +3,7 @@ import PartyUiHandler, { PartyOption, PartyUiMode } from "#app/ui/party-ui-handl import { Mode } from "#app/ui/ui"; import { SwitchType } from "#enums/switch-type"; import { BattlePhase } from "./battle-phase"; +import { PostSummonPhase } from "./post-summon-phase"; import { SwitchSummonPhase } from "./switch-summon-phase"; /** @@ -63,6 +64,9 @@ export class SwitchPhase extends BattlePhase { this.scene.ui.setMode(Mode.PARTY, this.isModal ? PartyUiMode.FAINT_SWITCH : PartyUiMode.POST_BATTLE_SWITCH, fieldIndex, (slotIndex: integer, option: PartyOption) => { if (slotIndex >= this.scene.currentBattle.getBattlerCount() && slotIndex < 6) { + // Remove any pre-existing PostSummonPhase under the same field index. + // Pre-existing PostSummonPhases may occur when this phase is invoked during a prompt to switch at the start of a wave. + this.scene.tryRemovePhase(p => p instanceof PostSummonPhase && p.player && p.fieldIndex === this.fieldIndex); const switchType = (option === PartyOption.PASS_BATON) ? SwitchType.BATON_PASS : this.switchType; this.scene.unshiftPhase(new SwitchSummonPhase(this.scene, switchType, fieldIndex, slotIndex, this.doReturn)); } From 38d7a26053f9f6ac11862adbe94496adfceb6088 Mon Sep 17 00:00:00 2001 From: Moka <54149968+MokaStitcher@users.noreply.github.com> Date: Sun, 1 Dec 2024 01:08:53 +0100 Subject: [PATCH 029/119] [Sprite][Bug][ME] Fix ME Intro visuals for shinies and other shiny related fixes (#4827) * [ME] Fix GTS Wonder Trade shiny not giving luck * [ME] Shiny Magikarp from Pokemon Salesman can have any variant * [ME] Shiny lock MEs with custom or special sprites * [ME] GTS shows shiny sparkle for received Pokemon * [ME] Shiny lock 'Slumbering Snorlax' and 'The Strong Stuff' * [ME] Dancing Lessson: show shiny sparkle for Oricorio in intro * [ME] Show shiny sparkles for Pokemon in ME intro * fix tests * Ensure shiny sparkle animation is initialized before playing it (Fixes #3924) * make loading variant assets cleaner * cleanup EnemyPokemon shiny initialization * test fixes and final cleanup * Make 'getSpeciesFilterRandomPartyMemberFunc' more readable --------- Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> --- src/battle-scene.ts | 33 ++++++++- .../encounters/absolute-avarice-encounter.ts | 5 +- .../encounters/berries-abound-encounter.ts | 4 +- .../encounters/dancing-lessons-encounter.ts | 12 ++-- .../encounters/fight-or-flight-encounter.ts | 4 +- .../encounters/fun-and-games-encounter.ts | 4 +- .../global-trade-system-encounter.ts | 21 ++++-- .../slumbering-snorlax-encounter.ts | 1 + .../the-pokemon-salesman-encounter.ts | 12 ++-- .../encounters/the-strong-stuff-encounter.ts | 1 + .../encounters/trash-to-treasure-encounter.ts | 3 +- .../encounters/uncommon-breed-encounter.ts | 8 ++- .../utils/encounter-phase-utils.ts | 4 +- src/data/pokemon-species.ts | 27 +------ src/data/trainer-config.ts | 26 +++++-- src/field/anims.ts | 37 ++++++++-- src/field/mystery-encounter-intro.ts | 71 ++++++++++++++++--- src/field/pokemon.ts | 41 +++++------ src/phases/egg-hatch-phase.ts | 4 +- src/phases/encounter-phase.ts | 3 + src/system/pokemon-data.ts | 2 +- .../global-trade-system-encounter.test.ts | 18 +++++ .../the-pokemon-salesman-encounter.test.ts | 16 ++++- .../the-strong-stuff-encounter.test.ts | 1 + .../trash-to-treasure-encounter.test.ts | 1 + 25 files changed, 260 insertions(+), 99 deletions(-) diff --git a/src/battle-scene.ts b/src/battle-scene.ts index 62e9d8ea717..2c38bb6632f 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -47,7 +47,7 @@ import PokemonInfoContainer from "#app/ui/pokemon-info-container"; import { biomeDepths, getBiomeName } from "#app/data/balance/biomes"; import { SceneBase } from "#app/scene-base"; import CandyBar from "#app/ui/candy-bar"; -import { Variant, variantData } from "#app/data/variant"; +import { Variant, variantColorCache, variantData, VariantSet } from "#app/data/variant"; import { Localizable } from "#app/interfaces/locales"; import Overrides from "#app/overrides"; import { InputsController } from "#app/inputs-controller"; @@ -345,6 +345,33 @@ export default class BattleScene extends SceneBase { this.load.atlas(key, `images/pokemon/${variant ? "variant/" : ""}${experimental ? "exp/" : ""}${atlasPath}.png`, `images/pokemon/${variant ? "variant/" : ""}${experimental ? "exp/" : ""}${atlasPath}.json`); } + /** + * Load the variant assets for the given sprite and stores them in {@linkcode variantColorCache} + */ + loadPokemonVariantAssets(spriteKey: string, fileRoot: string, variant?: Variant) { + const useExpSprite = this.experimentalSprites && this.hasExpSprite(spriteKey); + if (useExpSprite) { + fileRoot = `exp/${fileRoot}`; + } + let variantConfig = variantData; + fileRoot.split("/").map(p => variantConfig ? variantConfig = variantConfig[p] : null); + const variantSet = variantConfig as VariantSet; + if (variantSet && (variant !== undefined && variantSet[variant] === 1)) { + const populateVariantColors = (key: string): Promise => { + return new Promise(resolve => { + if (variantColorCache.hasOwnProperty(key)) { + return resolve(); + } + this.cachedFetch(`./images/pokemon/variant/${fileRoot}.json`).then(res => res.json()).then(c => { + variantColorCache[key] = c; + resolve(); + }); + }); + }; + populateVariantColors(spriteKey); + } + } + async preload() { if (DEBUG_RNG) { const scene = this; @@ -891,7 +918,7 @@ export default class BattleScene extends SceneBase { return pokemon; } - addEnemyPokemon(species: PokemonSpecies, level: integer, trainerSlot: TrainerSlot, boss: boolean = false, dataSource?: PokemonData, postProcess?: (enemyPokemon: EnemyPokemon) => void): EnemyPokemon { + addEnemyPokemon(species: PokemonSpecies, level: integer, trainerSlot: TrainerSlot, boss: boolean = false, shinyLock: boolean = false, dataSource?: PokemonData, postProcess?: (enemyPokemon: EnemyPokemon) => void): EnemyPokemon { if (Overrides.OPP_LEVEL_OVERRIDE > 0) { level = Overrides.OPP_LEVEL_OVERRIDE; } @@ -901,7 +928,7 @@ export default class BattleScene extends SceneBase { boss = this.getEncounterBossSegments(this.currentBattle.waveIndex, level, species) > 1; } - const pokemon = new EnemyPokemon(this, species, level, trainerSlot, boss, dataSource); + const pokemon = new EnemyPokemon(this, species, level, trainerSlot, boss, shinyLock, dataSource); if (Overrides.OPP_FUSION_OVERRIDE) { pokemon.generateFusionSpecies(); } diff --git a/src/data/mystery-encounters/encounters/absolute-avarice-encounter.ts b/src/data/mystery-encounters/encounters/absolute-avarice-encounter.ts index 9c00148fbac..6b0f239d28d 100644 --- a/src/data/mystery-encounters/encounters/absolute-avarice-encounter.ts +++ b/src/data/mystery-encounters/encounters/absolute-avarice-encounter.ts @@ -216,6 +216,7 @@ export const AbsoluteAvariceEncounter: MysteryEncounter = species: getPokemonSpecies(Species.GREEDENT), isBoss: true, bossSegments: 3, + shiny: false, // Shiny lock because of consistency issues between the different options moveSet: [ Moves.THRASH, Moves.BODY_PRESS, Moves.STUFF_CHEEKS, Moves.CRUNCH ], modifierConfigs: bossModifierConfigs, tags: [ BattlerTagType.MYSTERY_ENCOUNTER_POST_SUMMON ], @@ -353,9 +354,9 @@ export const AbsoluteAvariceEncounter: MysteryEncounter = }) .withOptionPhase(async (scene: BattleScene) => { // Let it have the food - // Greedent joins the team, level equal to 2 below highest party member + // Greedent joins the team, level equal to 2 below highest party member (shiny locked) const level = getHighestLevelPlayerPokemon(scene, false, true).level - 2; - const greedent = new EnemyPokemon(scene, getPokemonSpecies(Species.GREEDENT), level, TrainerSlot.NONE, false); + const greedent = new EnemyPokemon(scene, getPokemonSpecies(Species.GREEDENT), level, TrainerSlot.NONE, false, true); greedent.moveset = [ new PokemonMove(Moves.THRASH), new PokemonMove(Moves.BODY_PRESS), new PokemonMove(Moves.STUFF_CHEEKS), new PokemonMove(Moves.SLACK_OFF) ]; greedent.passive = true; diff --git a/src/data/mystery-encounters/encounters/berries-abound-encounter.ts b/src/data/mystery-encounters/encounters/berries-abound-encounter.ts index 5524511c67b..786ca3e8fc0 100644 --- a/src/data/mystery-encounters/encounters/berries-abound-encounter.ts +++ b/src/data/mystery-encounters/encounters/berries-abound-encounter.ts @@ -98,7 +98,9 @@ export const BerriesAboundEncounter: MysteryEncounter = tint: 0.25, x: -5, repeat: true, - isPokemon: true + isPokemon: true, + isShiny: bossPokemon.shiny, + variant: bossPokemon.variant } ]; diff --git a/src/data/mystery-encounters/encounters/dancing-lessons-encounter.ts b/src/data/mystery-encounters/encounters/dancing-lessons-encounter.ts index bae5a8790e9..841aadd7c36 100644 --- a/src/data/mystery-encounters/encounters/dancing-lessons-encounter.ts +++ b/src/data/mystery-encounters/encounters/dancing-lessons-encounter.ts @@ -92,9 +92,13 @@ export const DancingLessonsEncounter: MysteryEncounter = .withCatchAllowed(true) .withFleeAllowed(false) .withOnVisualsStart((scene: BattleScene) => { - const danceAnim = new EncounterBattleAnim(EncounterAnim.DANCE, scene.getEnemyPokemon()!, scene.getPlayerPokemon()!); - danceAnim.play(scene); - + const oricorio = scene.getEnemyPokemon()!; + const danceAnim = new EncounterBattleAnim(EncounterAnim.DANCE, oricorio, scene.getPlayerPokemon()!); + danceAnim.play(scene, false, () => { + if (oricorio.shiny) { + oricorio.sparkle(); + } + }); return true; }) .withIntroDialogue([ @@ -136,7 +140,7 @@ export const DancingLessonsEncounter: MysteryEncounter = } const oricorioData = new PokemonData(enemyPokemon); - const oricorio = scene.addEnemyPokemon(species, level, TrainerSlot.NONE, false, oricorioData); + const oricorio = scene.addEnemyPokemon(species, level, TrainerSlot.NONE, false, false, oricorioData); // Adds a real Pokemon sprite to the field (required for the animation) scene.getEnemyParty().forEach(enemyPokemon => { diff --git a/src/data/mystery-encounters/encounters/fight-or-flight-encounter.ts b/src/data/mystery-encounters/encounters/fight-or-flight-encounter.ts index 3f9030dc3b2..3533e10df29 100644 --- a/src/data/mystery-encounters/encounters/fight-or-flight-encounter.ts +++ b/src/data/mystery-encounters/encounters/fight-or-flight-encounter.ts @@ -114,7 +114,9 @@ export const FightOrFlightEncounter: MysteryEncounter = tint: 0.25, x: -5, repeat: true, - isPokemon: true + isPokemon: true, + isShiny: bossPokemon.shiny, + variant: bossPokemon.variant }, ]; diff --git a/src/data/mystery-encounters/encounters/fun-and-games-encounter.ts b/src/data/mystery-encounters/encounters/fun-and-games-encounter.ts index c286fffe0de..84c3e56a836 100644 --- a/src/data/mystery-encounters/encounters/fun-and-games-encounter.ts +++ b/src/data/mystery-encounters/encounters/fun-and-games-encounter.ts @@ -194,10 +194,10 @@ async function summonPlayerPokemon(scene: BattleScene) { playerAnimationPromise = summonPlayerPokemonAnimation(scene, playerPokemon); }); - // Also loads Wobbuffet data + // Also loads Wobbuffet data (cannot be shiny) const enemySpecies = getPokemonSpecies(Species.WOBBUFFET); scene.currentBattle.enemyParty = []; - const wobbuffet = scene.addEnemyPokemon(enemySpecies, encounter.misc.playerPokemon.level, TrainerSlot.NONE, false); + const wobbuffet = scene.addEnemyPokemon(enemySpecies, encounter.misc.playerPokemon.level, TrainerSlot.NONE, false, true); wobbuffet.ivs = [ 0, 0, 0, 0, 0, 0 ]; wobbuffet.setNature(Nature.MILD); wobbuffet.setAlpha(0); diff --git a/src/data/mystery-encounters/encounters/global-trade-system-encounter.ts b/src/data/mystery-encounters/encounters/global-trade-system-encounter.ts index 2d569621449..934fc1b805b 100644 --- a/src/data/mystery-encounters/encounters/global-trade-system-encounter.ts +++ b/src/data/mystery-encounters/encounters/global-trade-system-encounter.ts @@ -12,8 +12,7 @@ import PokemonSpecies, { allSpecies, getPokemonSpecies } from "#app/data/pokemon import { getTypeRgb } from "#app/data/type"; import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import * as Utils from "#app/utils"; -import { IntegerHolder, isNullOrUndefined, randInt, randSeedInt, randSeedShuffle } from "#app/utils"; +import { NumberHolder, isNullOrUndefined, randInt, randSeedInt, randSeedShuffle } from "#app/utils"; import Pokemon, { EnemyPokemon, PlayerPokemon, PokemonMove } from "#app/field/pokemon"; import { HiddenAbilityRateBoosterModifier, PokemonFormChangeItemModifier, PokemonHeldItemModifier, ShinyRateBoosterModifier, SpeciesStatBoosterModifier } from "#app/modifier/modifier"; import { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; @@ -27,6 +26,7 @@ import { trainerNamePools } from "#app/data/trainer-names"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/game-mode"; import { addPokemonDataToDexAndValidateAchievements } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; import type { PokeballType } from "#enums/pokeball"; +import { doShinySparkleAnim } from "#app/field/anims"; /** the i18n namespace for the encounter */ const namespace = "mysteryEncounters/globalTradeSystem"; @@ -230,7 +230,7 @@ export const GlobalTradeSystemEncounter: MysteryEncounter = const tradePokemon = new EnemyPokemon(scene, randomTradeOption, pokemon.level, TrainerSlot.NONE, false); // Extra shiny roll at 1/128 odds (boosted by events and charms) if (!tradePokemon.shiny) { - const shinyThreshold = new Utils.IntegerHolder(WONDER_TRADE_SHINY_CHANCE); + const shinyThreshold = new NumberHolder(WONDER_TRADE_SHINY_CHANCE); if (scene.eventManager.isEventActive()) { shinyThreshold.value *= scene.eventManager.getShinyMultiplier(); } @@ -247,7 +247,7 @@ export const GlobalTradeSystemEncounter: MysteryEncounter = const hiddenIndex = tradePokemon.species.ability2 ? 2 : 1; if (tradePokemon.species.abilityHidden) { if (tradePokemon.abilityIndex < hiddenIndex) { - const hiddenAbilityChance = new IntegerHolder(64); + const hiddenAbilityChance = new NumberHolder(64); scene.applyModifiers(HiddenAbilityRateBoosterModifier, true, hiddenAbilityChance); const hasHiddenAbility = !randSeedInt(hiddenAbilityChance.value); @@ -797,6 +797,14 @@ function doTradeReceivedSequence(scene: BattleScene, receivedPokemon: PlayerPoke receivedPokeballSprite.x = tradeBaseBg.displayWidth / 2; receivedPokeballSprite.y = tradeBaseBg.displayHeight / 2 - 100; + // Received pokemon sparkles + let pokemonShinySparkle: Phaser.GameObjects.Sprite; + if (receivedPokemon.shiny) { + pokemonShinySparkle = scene.add.sprite(receivedPokemonSprite.x, receivedPokemonSprite.y, "shiny"); + pokemonShinySparkle.setVisible(false); + tradeContainer.add(pokemonShinySparkle); + } + const BASE_ANIM_DURATION = 1000; // Pokeball falls to the screen @@ -835,6 +843,11 @@ function doTradeReceivedSequence(scene: BattleScene, receivedPokemon: PlayerPoke scale: 1, alpha: 0, onComplete: () => { + if (receivedPokemon.shiny) { + scene.time.delayedCall(500, () => { + doShinySparkleAnim(scene, pokemonShinySparkle, receivedPokemon.variant); + }); + } receivedPokeballSprite.destroy(); scene.time.delayedCall(2000, () => resolve()); } diff --git a/src/data/mystery-encounters/encounters/slumbering-snorlax-encounter.ts b/src/data/mystery-encounters/encounters/slumbering-snorlax-encounter.ts index 3fb502be545..8dd03e12caa 100644 --- a/src/data/mystery-encounters/encounters/slumbering-snorlax-encounter.ts +++ b/src/data/mystery-encounters/encounters/slumbering-snorlax-encounter.ts @@ -60,6 +60,7 @@ export const SlumberingSnorlaxEncounter: MysteryEncounter = const pokemonConfig: EnemyPokemonConfig = { species: bossSpecies, isBoss: true, + shiny: false, // Shiny lock because shiny is rolled only if the battle option is picked status: [ StatusEffect.SLEEP, 5 ], // Extra turns on timer for Snorlax's start of fight moves moveSet: [ Moves.REST, Moves.SLEEP_TALK, Moves.CRUNCH, Moves.GIGA_IMPACT ], modifierConfigs: [ diff --git a/src/data/mystery-encounters/encounters/the-pokemon-salesman-encounter.ts b/src/data/mystery-encounters/encounters/the-pokemon-salesman-encounter.ts index 61a4de908e9..feb6e68d1d1 100644 --- a/src/data/mystery-encounters/encounters/the-pokemon-salesman-encounter.ts +++ b/src/data/mystery-encounters/encounters/the-pokemon-salesman-encounter.ts @@ -72,13 +72,11 @@ export const ThePokemonSalesmanEncounter: MysteryEncounter = let pokemon: PlayerPokemon; if (randSeedInt(SHINY_MAGIKARP_WEIGHT) === 0 || isNullOrUndefined(species.abilityHidden) || species.abilityHidden === Abilities.NONE) { - // If no HA mon found or you roll 1%, give shiny Magikarp + // If no HA mon found or you roll 1%, give shiny Magikarp with random variant species = getPokemonSpecies(Species.MAGIKARP); - const hiddenIndex = species.ability2 ? 2 : 1; - pokemon = new PlayerPokemon(scene, species, 5, hiddenIndex, species.formIndex, undefined, true, 0); + pokemon = new PlayerPokemon(scene, species, 5, 2, species.formIndex, undefined, true); } else { - const hiddenIndex = species.ability2 ? 2 : 1; - pokemon = new PlayerPokemon(scene, species, 5, hiddenIndex, species.formIndex); + pokemon = new PlayerPokemon(scene, species, 5, 2, species.formIndex); } pokemon.generateAndPopulateMoveset(); @@ -88,7 +86,9 @@ export const ThePokemonSalesmanEncounter: MysteryEncounter = fileRoot: fileRoot, hasShadow: true, repeat: true, - isPokemon: true + isPokemon: true, + isShiny: pokemon.shiny, + variant: pokemon.variant }); const starterTier = speciesStarterCosts[species.speciesId]; diff --git a/src/data/mystery-encounters/encounters/the-strong-stuff-encounter.ts b/src/data/mystery-encounters/encounters/the-strong-stuff-encounter.ts index 754632aedea..c5cfd3f954e 100644 --- a/src/data/mystery-encounters/encounters/the-strong-stuff-encounter.ts +++ b/src/data/mystery-encounters/encounters/the-strong-stuff-encounter.ts @@ -79,6 +79,7 @@ export const TheStrongStuffEncounter: MysteryEncounter = species: getPokemonSpecies(Species.SHUCKLE), isBoss: true, bossSegments: 5, + shiny: false, // Shiny lock because shiny is rolled only if the battle option is picked customPokemonData: new CustomPokemonData({ spriteScale: 1.25 }), nature: Nature.BOLD, moveSet: [ Moves.INFESTATION, Moves.SALT_CURE, Moves.GASTRO_ACID, Moves.HEAL_ORDER ], diff --git a/src/data/mystery-encounters/encounters/trash-to-treasure-encounter.ts b/src/data/mystery-encounters/encounters/trash-to-treasure-encounter.ts index fba3a6ca95e..dfd89cdfb63 100644 --- a/src/data/mystery-encounters/encounters/trash-to-treasure-encounter.ts +++ b/src/data/mystery-encounters/encounters/trash-to-treasure-encounter.ts @@ -61,11 +61,12 @@ export const TrashToTreasureEncounter: MysteryEncounter = .withOnInit((scene: BattleScene) => { const encounter = scene.currentBattle.mysteryEncounter!; - // Calculate boss mon + // Calculate boss mon (shiny locked) const bossSpecies = getPokemonSpecies(Species.GARBODOR); const pokemonConfig: EnemyPokemonConfig = { species: bossSpecies, isBoss: true, + shiny: false, // Shiny lock because of custom intro sprite formIndex: 1, // Gmax bossSegmentModifier: 1, // +1 Segment from normal moveSet: [ Moves.PAYBACK, Moves.GUNK_SHOT, Moves.STOMPING_TANTRUM, Moves.DRAIN_PUNCH ] diff --git a/src/data/mystery-encounters/encounters/uncommon-breed-encounter.ts b/src/data/mystery-encounters/encounters/uncommon-breed-encounter.ts index a2c32c6af40..d3679825ac8 100644 --- a/src/data/mystery-encounters/encounters/uncommon-breed-encounter.ts +++ b/src/data/mystery-encounters/encounters/uncommon-breed-encounter.ts @@ -100,7 +100,9 @@ export const UncommonBreedEncounter: MysteryEncounter = hasShadow: true, x: -5, repeat: true, - isPokemon: true + isPokemon: true, + isShiny: pokemon.shiny, + variant: pokemon.variant }, ]; @@ -113,13 +115,15 @@ export const UncommonBreedEncounter: MysteryEncounter = const encounter = scene.currentBattle.mysteryEncounter!; const pokemonSprite = encounter.introVisuals!.getSprites(); - scene.tweens.add({ // Bounce at the end + // Bounce at the end, then shiny sparkle if the Pokemon is shiny + scene.tweens.add({ targets: pokemonSprite, duration: 300, ease: "Cubic.easeOut", yoyo: true, y: "-=20", loop: 1, + onComplete: () => encounter.introVisuals?.playShinySparkles() }); scene.time.delayedCall(500, () => scene.playSound("battle_anims/PRSFX- Spotlight2")); diff --git a/src/data/mystery-encounters/utils/encounter-phase-utils.ts b/src/data/mystery-encounters/utils/encounter-phase-utils.ts index b5dd43a9221..d43bce0ace5 100644 --- a/src/data/mystery-encounters/utils/encounter-phase-utils.ts +++ b/src/data/mystery-encounters/utils/encounter-phase-utils.ts @@ -184,7 +184,7 @@ export async function initBattleWithEnemyConfig(scene: BattleScene, partyConfig: dataSource = config.dataSource; enemySpecies = config.species; isBoss = config.isBoss; - battle.enemyParty[e] = scene.addEnemyPokemon(enemySpecies, level, TrainerSlot.TRAINER, isBoss, dataSource); + battle.enemyParty[e] = scene.addEnemyPokemon(enemySpecies, level, TrainerSlot.TRAINER, isBoss, false, dataSource); } else { battle.enemyParty[e] = battle.trainer.genPartyMember(e); } @@ -202,7 +202,7 @@ export async function initBattleWithEnemyConfig(scene: BattleScene, partyConfig: enemySpecies = scene.randomSpecies(battle.waveIndex, level, true); } - battle.enemyParty[e] = scene.addEnemyPokemon(enemySpecies, level, TrainerSlot.NONE, isBoss, dataSource); + battle.enemyParty[e] = scene.addEnemyPokemon(enemySpecies, level, TrainerSlot.NONE, isBoss, false, dataSource); } } diff --git a/src/data/pokemon-species.ts b/src/data/pokemon-species.ts index ec104d4d4aa..09788e353cf 100644 --- a/src/data/pokemon-species.ts +++ b/src/data/pokemon-species.ts @@ -15,7 +15,7 @@ import { EvolutionLevel, SpeciesWildEvolutionDelay, pokemonEvolutions, pokemonPr import { Type } from "#enums/type"; import { LevelMoves, pokemonFormLevelMoves, pokemonFormLevelMoves as pokemonSpeciesFormLevelMoves, pokemonSpeciesLevelMoves } from "#app/data/balance/pokemon-level-moves"; import { Stat } from "#enums/stat"; -import { Variant, VariantSet, variantColorCache, variantData } from "#app/data/variant"; +import { Variant, VariantSet, variantData } from "#app/data/variant"; import { speciesStarterCosts, POKERUS_STARTER_COUNT } from "#app/data/balance/starters"; import { SpeciesFormKey } from "#enums/species-form-key"; @@ -511,29 +511,8 @@ export abstract class PokemonSpeciesForm { } else { scene.anims.get(spriteKey).frameRate = 10; } - let spritePath = this.getSpriteAtlasPath(female, formIndex, shiny, variant).replace("variant/", "").replace(/_[1-3]$/, ""); - const useExpSprite = scene.experimentalSprites && scene.hasExpSprite(spriteKey); - if (useExpSprite) { - spritePath = `exp/${spritePath}`; - } - let config = variantData; - spritePath.split("/").map(p => config ? config = config[p] : null); - const variantSet = config as VariantSet; - if (variantSet && (variant !== undefined && variantSet[variant] === 1)) { - const populateVariantColors = (key: string): Promise => { - return new Promise(resolve => { - if (variantColorCache.hasOwnProperty(key)) { - return resolve(); - } - scene.cachedFetch(`./images/pokemon/variant/${spritePath}.json`).then(res => res.json()).then(c => { - variantColorCache[key] = c; - resolve(); - }); - }); - }; - populateVariantColors(spriteKey).then(() => resolve()); - return; - } + const spritePath = this.getSpriteAtlasPath(female, formIndex, shiny, variant).replace("variant/", "").replace(/_[1-3]$/, ""); + scene.loadPokemonVariantAssets(spriteKey, spritePath, variant); resolve(); }); if (startLoad) { diff --git a/src/data/trainer-config.ts b/src/data/trainer-config.ts index 5e5f38bd00d..d99ca601bdf 100644 --- a/src/data/trainer-config.ts +++ b/src/data/trainer-config.ts @@ -1173,16 +1173,28 @@ export function getRandomPartyMemberFunc(speciesPool: Species[], trainerSlot: Tr if (!ignoreEvolution) { species = getPokemonSpecies(species).getTrainerSpeciesForLevel(level, true, strength, scene.currentBattle.waveIndex); } - return scene.addEnemyPokemon(getPokemonSpecies(species), level, trainerSlot, undefined, undefined, postProcess); + return scene.addEnemyPokemon(getPokemonSpecies(species), level, trainerSlot, undefined, false, undefined, postProcess); }; } -function getSpeciesFilterRandomPartyMemberFunc(speciesFilter: PokemonSpeciesFilter, trainerSlot: TrainerSlot = TrainerSlot.TRAINER, allowLegendaries?: boolean, postProcess?: (EnemyPokemon: EnemyPokemon) => void): PartyMemberFunc { - const originalSpeciesFilter = speciesFilter; - speciesFilter = (species: PokemonSpecies) => (allowLegendaries || (!species.legendary && !species.subLegendary && !species.mythical)) && !species.isTrainerForbidden() && originalSpeciesFilter(species); - return (scene: BattleScene, level: integer, strength: PartyMemberStrength) => { - const ret = scene.addEnemyPokemon(getPokemonSpecies(scene.randomSpecies(scene.currentBattle.waveIndex, level, false, speciesFilter).getTrainerSpeciesForLevel(level, true, strength, scene.currentBattle.waveIndex)), level, trainerSlot, undefined, undefined, postProcess); - return ret; +function getSpeciesFilterRandomPartyMemberFunc( + originalSpeciesFilter: PokemonSpeciesFilter, + trainerSlot: TrainerSlot = TrainerSlot.TRAINER, + allowLegendaries?: boolean, + postProcess?: (EnemyPokemon: EnemyPokemon) => void +): PartyMemberFunc { + + const speciesFilter = (species: PokemonSpecies): boolean => { + const notLegendary = !species.legendary && !species.subLegendary && !species.mythical; + return (allowLegendaries || notLegendary) && !species.isTrainerForbidden() && originalSpeciesFilter(species); + }; + + return (scene: BattleScene, level: number, strength: PartyMemberStrength) => { + const waveIndex = scene.currentBattle.waveIndex; + const species = getPokemonSpecies(scene.randomSpecies(waveIndex, level, false, speciesFilter) + .getTrainerSpeciesForLevel(level, true, strength, waveIndex)); + + return scene.addEnemyPokemon(species, level, trainerSlot, undefined, false, undefined, postProcess); }; } diff --git a/src/field/anims.ts b/src/field/anims.ts index dddf38e4a7e..10198c29005 100644 --- a/src/field/anims.ts +++ b/src/field/anims.ts @@ -1,6 +1,7 @@ -import BattleScene from "../battle-scene"; +import BattleScene from "#app/battle-scene"; import { PokeballType } from "#enums/pokeball"; -import * as Utils from "../utils"; +import { Variant } from "#app/data/variant"; +import { getFrameMs, randGauss } from "#app/utils"; export function addPokeballOpenParticles(scene: BattleScene, x: number, y: number, pokeballType: PokeballType): void { switch (pokeballType) { @@ -127,7 +128,7 @@ function doFanOutParticle(scene: BattleScene, trigIndex: integer, x: integer, y: const particleTimer = scene.tweens.addCounter({ repeat: -1, - duration: Utils.getFrameMs(1), + duration: getFrameMs(1), onRepeat: () => { updateParticle(); } @@ -159,7 +160,7 @@ export function addPokeballCaptureStars(scene: BattleScene, pokeball: Phaser.Gam } }); - const dist = Utils.randGauss(25); + const dist = randGauss(25); scene.tweens.add({ targets: particle, x: pokeball.x + dist, @@ -185,3 +186,31 @@ export function sin(index: integer, amplitude: integer): number { export function cos(index: integer, amplitude: integer): number { return amplitude * Math.cos(index * (Math.PI / 128)); } + +/** + * Play the shiny sparkle animation and sound effect for the given sprite + * First ensures that the animation has been properly initialized + * @param sparkleSprite the Sprite to play the animation on + * @param variant which shiny {@linkcode variant} to play the animation for + */ +export function doShinySparkleAnim(scene: BattleScene, sparkleSprite: Phaser.GameObjects.Sprite, variant: Variant) { + const keySuffix = variant ? `_${variant + 1}` : ""; + const spriteKey = `shiny${keySuffix}`; + const animationKey = `sparkle${keySuffix}`; + + // Make sure the animation exists, and create it if not + if (!scene.anims.exists(animationKey)) { + const frameNames = scene.anims.generateFrameNames(spriteKey, { suffix: ".png", end: 34 }); + scene.anims.create({ + key: `sparkle${keySuffix}`, + frames: frameNames, + frameRate: 32, + showOnStart: true, + hideOnComplete: true, + }); + } + + // Play the animation + sparkleSprite.play(animationKey); + scene.playSound("se/sparkle"); +} diff --git a/src/field/mystery-encounter-intro.ts b/src/field/mystery-encounter-intro.ts index 1577d1157d7..b1b85de9b29 100644 --- a/src/field/mystery-encounter-intro.ts +++ b/src/field/mystery-encounter-intro.ts @@ -1,10 +1,12 @@ import { GameObjects } from "phaser"; -import BattleScene from "../battle-scene"; -import MysteryEncounter from "../data/mystery-encounters/mystery-encounter"; +import BattleScene from "#app/battle-scene"; +import MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; import { Species } from "#enums/species"; import { isNullOrUndefined } from "#app/utils"; import { getSpriteKeysFromSpecies } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; import PlayAnimationConfig = Phaser.Types.Animations.PlayAnimationConfig; +import { Variant } from "#app/data/variant"; +import { doShinySparkleAnim } from "#app/field/anims"; type KnownFileRoot = | "arenas" @@ -59,6 +61,10 @@ export class MysteryEncounterSpriteConfig { scale?: number; /** If you are using a Pokemon sprite, set to `true`. This will ensure variant, form, gender, shiny sprites are loaded properly */ isPokemon?: boolean; + /** If using a Pokemon shiny sprite, needs to be set to ensure the correct variant assets get loaded and displayed */ + isShiny?: boolean; + /** If using a Pokemon shiny sprite, needs to be set to ensure the correct variant assets get loaded and displayed */ + variant?: Variant; /** If you are using an item sprite, set to `true` */ isItem?: boolean; /** The sprites alpha. `0` - `1` The lower the number, the more transparent */ @@ -74,6 +80,7 @@ export default class MysteryEncounterIntroVisuals extends Phaser.GameObjects.Con public encounter: MysteryEncounter; public spriteConfigs: MysteryEncounterSpriteConfig[]; public enterFromRight: boolean; + private shinySparkleSprites: { sprite: Phaser.GameObjects.Sprite, variant: Variant }[]; constructor(scene: BattleScene, encounter: MysteryEncounter) { super(scene, -72, 76); @@ -86,7 +93,7 @@ export default class MysteryEncounterIntroVisuals extends Phaser.GameObjects.Con }; if (!isNullOrUndefined(result.species)) { - const keys = getSpriteKeysFromSpecies(result.species); + const keys = getSpriteKeysFromSpecies(result.species, undefined, undefined, result.isShiny, result.variant); result.spriteKey = keys.spriteKey; result.fileRoot = keys.fileRoot; result.isPokemon = true; @@ -120,18 +127,36 @@ export default class MysteryEncounterIntroVisuals extends Phaser.GameObjects.Con // Sprites with custom X or Y defined will not count for normal spacing requirements const spacingValue = Math.round((maxX - minX) / Math.max(this.spriteConfigs.filter(s => !s.x && !s.y).length, 1)); + this.shinySparkleSprites = []; + const shinySparkleSprites = scene.add.container(0, 0); this.spriteConfigs?.forEach((config) => { - const { spriteKey, isItem, hasShadow, scale, x, y, yShadow, alpha } = config; + const { spriteKey, isItem, hasShadow, scale, x, y, yShadow, alpha, isPokemon, isShiny, variant } = config; let sprite: GameObjects.Sprite; let tintSprite: GameObjects.Sprite; + let pokemonShinySparkle: Phaser.GameObjects.Sprite | undefined; - if (!isItem) { - sprite = getSprite(spriteKey, hasShadow, yShadow); - tintSprite = getSprite(spriteKey); - } else { + if (isItem) { sprite = getItemSprite(spriteKey, hasShadow, yShadow); tintSprite = getItemSprite(spriteKey); + } else { + sprite = getSprite(spriteKey, hasShadow, yShadow); + tintSprite = getSprite(spriteKey); + if (isPokemon && isShiny) { + // Set Pipeline for shiny variant + sprite.setPipelineData("spriteKey", spriteKey); + tintSprite.setPipelineData("spriteKey", spriteKey); + sprite.setPipelineData("shiny", true); + sprite.setPipelineData("variant", variant); + tintSprite.setPipelineData("shiny", true); + tintSprite.setPipelineData("variant", variant); + // Create Sprite for shiny Sparkle + pokemonShinySparkle = scene.add.sprite(sprite.x, sprite.y, "shiny"); + pokemonShinySparkle.setOrigin(0.5, 1); + pokemonShinySparkle.setVisible(false); + this.shinySparkleSprites.push({ sprite: pokemonShinySparkle, variant: variant ?? 0 }); + shinySparkleSprites.add(pokemonShinySparkle); + } } sprite.setVisible(!config.hidden); @@ -165,6 +190,11 @@ export default class MysteryEncounterIntroVisuals extends Phaser.GameObjects.Con } } + if (!isNullOrUndefined(pokemonShinySparkle)) { + // Offset the sparkle to match the Pokemon's position + pokemonShinySparkle.setPosition(sprite.x, sprite.y); + } + if (!isNullOrUndefined(alpha)) { sprite.setAlpha(alpha); tintSprite.setAlpha(alpha); @@ -173,6 +203,7 @@ export default class MysteryEncounterIntroVisuals extends Phaser.GameObjects.Con this.add(sprite); this.add(tintSprite); }); + this.add(shinySparkleSprites); } /** @@ -187,6 +218,9 @@ export default class MysteryEncounterIntroVisuals extends Phaser.GameObjects.Con this.spriteConfigs.forEach((config) => { if (config.isPokemon) { this.scene.loadPokemonAtlas(config.spriteKey, config.fileRoot); + if (config.isShiny) { + this.scene.loadPokemonVariantAssets(config.spriteKey, config.fileRoot, config.variant); + } } else if (config.isItem) { this.scene.loadAtlas("items", ""); } else { @@ -240,11 +274,21 @@ export default class MysteryEncounterIntroVisuals extends Phaser.GameObjects.Con this.getSprites().map((sprite, i) => { if (!this.spriteConfigs[i].isItem) { sprite.setTexture(this.spriteConfigs[i].spriteKey).setFrame(0); + if (sprite.texture.frameTotal > 1) { + // Show the first animation frame for a smooth transition when the animation starts. + const firstFrame = sprite.texture.frames["0001.png"]; + sprite.setFrame(firstFrame ?? 0); + } } }); this.getTintSprites().map((tintSprite, i) => { if (!this.spriteConfigs[i].isItem) { tintSprite.setTexture(this.spriteConfigs[i].spriteKey).setFrame(0); + if (tintSprite.texture.frameTotal > 1) { + // Show the first frame for a smooth transition when the animation starts. + const firstFrame = tintSprite.texture.frames["0001.png"]; + tintSprite.setFrame(firstFrame ?? 0); + } } }); @@ -288,6 +332,17 @@ export default class MysteryEncounterIntroVisuals extends Phaser.GameObjects.Con return true; } + /** + * Play shiny sparkle animations if there are shiny Pokemon + */ + playShinySparkles() { + for (const sparkleConfig of this.shinySparkleSprites) { + this.scene.time.delayedCall(500, () => { + doShinySparkleAnim(this.scene, sparkleConfig.sprite, sparkleConfig.variant); + }); + } + } + /** * For sprites with animation and that do not have animation disabled, will begin frame animation */ diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index 5706725f763..0675b9485cf 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -69,6 +69,7 @@ import { SpeciesFormKey } from "#enums/species-form-key"; import { BASE_HIDDEN_ABILITY_CHANCE, BASE_SHINY_CHANCE, SHINY_EPIC_CHANCE, SHINY_VARIANT_CHANCE } from "#app/data/balance/rates"; import { Nature } from "#enums/nature"; import { StatusEffect } from "#enums/status-effect"; +import { doShinySparkleAnim } from "#app/field/anims"; export enum FieldPosition { CENTER, @@ -673,21 +674,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } initShinySparkle(): void { - const keySuffix = this.variant ? `_${this.variant + 1}` : ""; - const key = `shiny${keySuffix}`; - const shinySparkle = this.scene.addFieldSprite(0, 0, key); + const shinySparkle = this.scene.addFieldSprite(0, 0, "shiny"); shinySparkle.setVisible(false); shinySparkle.setOrigin(0.5, 1); - const frameNames = this.scene.anims.generateFrameNames(key, { suffix: ".png", end: 34 }); - if (!(this.scene.anims.exists(`sparkle${keySuffix}`))) { - this.scene.anims.create({ - key: `sparkle${keySuffix}`, - frames: frameNames, - frameRate: 32, - showOnStart: true, - hideOnComplete: true, - }); - } this.add(shinySparkle); this.shinySparkle = shinySparkle; @@ -1976,6 +1965,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { /** * Function that tries to set a Pokemon shiny based on seed. * For manual use only, usually to roll a Pokemon's shiny chance a second time. + * If it rolls shiny, also sets a random variant and give the Pokemon the associated luck. * * The base shiny odds are {@linkcode BASE_SHINY_CHANCE} / `65536` * @param thresholdOverride number that is divided by `2^16` (`65536`) to get the shiny chance, overrides {@linkcode shinyThreshold} if set (bypassing shiny rate modifiers such as Shiny Charm) @@ -2001,6 +1991,8 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { this.shiny = randSeedInt(65536) < shinyThreshold.value; if (this.shiny) { + this.variant = this.generateShinyVariant(); + this.luck = this.variant + 1 + (this.fusionShiny ? this.fusionVariant + 1 : 0); this.initShinySparkle(); } @@ -3802,8 +3794,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { sparkle(): void { if (this.shinySparkle) { - this.shinySparkle.play(`sparkle${this.variant ? `_${this.variant + 1}` : ""}`); - this.scene.playSound("se/sparkle"); + doShinySparkleAnim(this.scene, this.shinySparkle, this.variant); } } @@ -4646,12 +4637,13 @@ export class EnemyPokemon extends Pokemon { public aiType: AiType; public bossSegments: integer; public bossSegmentIndex: integer; - /** To indicate of the instance was populated with a dataSource -> e.g. loaded & populated from session data */ + /** To indicate if the instance was populated with a dataSource -> e.g. loaded & populated from session data */ public readonly isPopulatedFromDataSource: boolean; - constructor(scene: BattleScene, species: PokemonSpecies, level: integer, trainerSlot: TrainerSlot, boss: boolean, dataSource?: PokemonData) { - super(scene, 236, 84, species, level, dataSource?.abilityIndex, dataSource?.formIndex, - dataSource?.gender, dataSource ? dataSource.shiny : false, dataSource ? dataSource.variant : undefined, undefined, dataSource ? dataSource.nature : undefined, dataSource); + constructor(scene: BattleScene, species: PokemonSpecies, level: integer, trainerSlot: TrainerSlot, boss: boolean, shinyLock: boolean = false, dataSource?: PokemonData) { + super(scene, 236, 84, species, level, dataSource?.abilityIndex, dataSource?.formIndex, dataSource?.gender, + (!shinyLock && dataSource) ? dataSource.shiny : false, (!shinyLock && dataSource) ? dataSource.variant : undefined, + undefined, dataSource ? dataSource.nature : undefined, dataSource); this.trainerSlot = trainerSlot; this.isPopulatedFromDataSource = !!dataSource; // if a dataSource is provided, then it was populated from dataSource @@ -4680,12 +4672,15 @@ export class EnemyPokemon extends Pokemon { if (!dataSource) { this.generateAndPopulateMoveset(); - this.trySetShiny(); - if (Overrides.OPP_SHINY_OVERRIDE) { + if (shinyLock || Overrides.OPP_SHINY_OVERRIDE === false) { + this.shiny = false; + } else { + this.trySetShiny(); + } + + if (!this.shiny && Overrides.OPP_SHINY_OVERRIDE) { this.shiny = true; this.initShinySparkle(); - } else if (Overrides.OPP_SHINY_OVERRIDE === false) { - this.shiny = false; } if (this.shiny) { diff --git a/src/phases/egg-hatch-phase.ts b/src/phases/egg-hatch-phase.ts index 90aceeb46bc..d45c580228c 100644 --- a/src/phases/egg-hatch-phase.ts +++ b/src/phases/egg-hatch-phase.ts @@ -14,6 +14,7 @@ import SoundFade from "phaser3-rex-plugins/plugins/soundfade"; import * as Utils from "#app/utils"; import { EggLapsePhase } from "./egg-lapse-phase"; import { EggHatchData } from "#app/data/egg-hatch-data"; +import { doShinySparkleAnim } from "#app/field/anims"; /** @@ -341,8 +342,7 @@ export class EggHatchPhase extends Phase { this.pokemon.cry(); if (isShiny) { this.scene.time.delayedCall(Utils.fixedInt(500), () => { - this.pokemonShinySparkle.play(`sparkle${this.pokemon.variant ? `_${this.pokemon.variant + 1}` : ""}`); - this.scene.playSound("se/sparkle"); + doShinySparkleAnim(this.scene, this.pokemonShinySparkle, this.pokemon.variant); }); } this.scene.time.delayedCall(Utils.fixedInt(!this.skipped ? !isShiny ? 1250 : 1750 : !isShiny ? 250 : 750), () => { diff --git a/src/phases/encounter-phase.ts b/src/phases/encounter-phase.ts index 03126ba81bb..b524172af9d 100644 --- a/src/phases/encounter-phase.ts +++ b/src/phases/encounter-phase.ts @@ -379,6 +379,9 @@ export class EncounterPhase extends BattlePhase { if (encounter.onVisualsStart) { encounter.onVisualsStart(this.scene); + } else if (encounter.spriteConfigs && introVisuals) { + // If the encounter doesn't have any special visual intro, show sparkle for shiny Pokemon + introVisuals.playShinySparkles(); } const doEncounter = () => { diff --git a/src/system/pokemon-data.ts b/src/system/pokemon-data.ts index 443382186c7..64801cc0ff1 100644 --- a/src/system/pokemon-data.ts +++ b/src/system/pokemon-data.ts @@ -171,7 +171,7 @@ export default class PokemonData { playerPokemon.nickname = this.nickname; } }) - : scene.addEnemyPokemon(species, this.level, battleType === BattleType.TRAINER ? !double || !(partyMemberIndex % 2) ? TrainerSlot.TRAINER : TrainerSlot.TRAINER_PARTNER : TrainerSlot.NONE, this.boss, this); + : scene.addEnemyPokemon(species, this.level, battleType === BattleType.TRAINER ? !double || !(partyMemberIndex % 2) ? TrainerSlot.TRAINER : TrainerSlot.TRAINER_PARTNER : TrainerSlot.NONE, this.boss, false, this); if (this.summonData) { ret.primeSummonData(this.summonData); } diff --git a/src/test/mystery-encounter/encounters/global-trade-system-encounter.test.ts b/src/test/mystery-encounter/encounters/global-trade-system-encounter.test.ts index e8d19ff50b9..2c226df3c8c 100644 --- a/src/test/mystery-encounter/encounters/global-trade-system-encounter.test.ts +++ b/src/test/mystery-encounter/encounters/global-trade-system-encounter.test.ts @@ -18,6 +18,7 @@ import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; import { Mode } from "#app/ui/ui"; import ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; import { ModifierTier } from "#app/modifier/modifier-tier"; +import * as Utils from "#app/utils"; const namespace = "mysteryEncounters/globalTradeSystem"; const defaultParty = [ Species.LAPRAS, Species.GENGAR, Species.ABRA ]; @@ -176,6 +177,23 @@ describe("Global Trade System - Mystery Encounter", () => { expect(defaultParty.includes(speciesAfter!)).toBeFalsy(); }); + it("Should roll for shiny twice, with random variant and associated luck", async () => { + // This ensures that the first shiny roll gets ignored, to test the ME rerolling for shiny + game.override.enemyShiny(false); + + await game.runToMysteryEncounter(MysteryEncounterType.GLOBAL_TRADE_SYSTEM, defaultParty); + + vi.spyOn(Utils, "randSeedInt").mockReturnValue(1); // force shiny on reroll + + await runMysteryEncounterToEnd(game, 2, { pokemonNo: 1 }); + + const receivedPokemon = scene.getPlayerParty().at(-1)!; + + expect(receivedPokemon.shiny).toBeTruthy(); + expect(receivedPokemon.variant).toBeDefined(); + expect(receivedPokemon.luck).toBe(receivedPokemon.variant + 1); + }); + it("should leave encounter without battle", async () => { const leaveEncounterWithoutBattleSpy = vi.spyOn(EncounterPhaseUtils, "leaveEncounterWithoutBattle"); diff --git a/src/test/mystery-encounter/encounters/the-pokemon-salesman-encounter.test.ts b/src/test/mystery-encounter/encounters/the-pokemon-salesman-encounter.test.ts index 91b4a4bcab5..e90bc4efe56 100644 --- a/src/test/mystery-encounter/encounters/the-pokemon-salesman-encounter.test.ts +++ b/src/test/mystery-encounter/encounters/the-pokemon-salesman-encounter.test.ts @@ -123,7 +123,7 @@ describe("The Pokemon Salesman - Mystery Encounter", () => { }); }); - it("Should update the player's money properly", async () => { + it("should update the player's money properly", async () => { const initialMoney = 20000; scene.money = initialMoney; const updateMoneySpy = vi.spyOn(EncounterPhaseUtils, "updatePlayerMoney"); @@ -137,7 +137,7 @@ describe("The Pokemon Salesman - Mystery Encounter", () => { expect(scene.money).toBe(initialMoney - price); }); - it("Should add the Pokemon to the party", async () => { + it("should add the Pokemon to the party", async () => { scene.money = 20000; await game.runToMysteryEncounter(MysteryEncounterType.THE_POKEMON_SALESMAN, defaultParty); @@ -153,6 +153,18 @@ describe("The Pokemon Salesman - Mystery Encounter", () => { expect(newlyPurchasedPokemon!.moveset.length > 0).toBeTruthy(); }); + it("should give the purchased Pokemon its HA or make it shiny", async () => { + scene.money = 20000; + await game.runToMysteryEncounter(MysteryEncounterType.THE_POKEMON_SALESMAN, defaultParty); + await runMysteryEncounterToEnd(game, 1); + + const newlyPurchasedPokemon = scene.getPlayerParty()[scene.getPlayerParty().length - 1]; + const isshiny = newlyPurchasedPokemon.shiny; + const hasHA = newlyPurchasedPokemon.abilityIndex === 2; + expect(isshiny || hasHA).toBeTruthy(); + expect(isshiny && hasHA).toBeFalsy(); + }); + it("should be disabled if player does not have enough money", async () => { scene.money = 0; await game.runToMysteryEncounter(MysteryEncounterType.THE_POKEMON_SALESMAN, defaultParty); diff --git a/src/test/mystery-encounter/encounters/the-strong-stuff-encounter.test.ts b/src/test/mystery-encounter/encounters/the-strong-stuff-encounter.test.ts index ae725f3480a..5c965b13bd4 100644 --- a/src/test/mystery-encounter/encounters/the-strong-stuff-encounter.test.ts +++ b/src/test/mystery-encounter/encounters/the-strong-stuff-encounter.test.ts @@ -109,6 +109,7 @@ describe("The Strong Stuff - Mystery Encounter", () => { species: getPokemonSpecies(Species.SHUCKLE), isBoss: true, bossSegments: 5, + shiny: false, customPokemonData: new CustomPokemonData({ spriteScale: 1.25 }), nature: Nature.BOLD, moveSet: [ Moves.INFESTATION, Moves.SALT_CURE, Moves.GASTRO_ACID, Moves.HEAL_ORDER ], diff --git a/src/test/mystery-encounter/encounters/trash-to-treasure-encounter.test.ts b/src/test/mystery-encounter/encounters/trash-to-treasure-encounter.test.ts index 8286c6a694b..f8d96487092 100644 --- a/src/test/mystery-encounter/encounters/trash-to-treasure-encounter.test.ts +++ b/src/test/mystery-encounter/encounters/trash-to-treasure-encounter.test.ts @@ -92,6 +92,7 @@ describe("Trash to Treasure - Mystery Encounter", () => { { species: getPokemonSpecies(Species.GARBODOR), isBoss: true, + shiny: false, formIndex: 1, bossSegmentModifier: 1, moveSet: [ Moves.PAYBACK, Moves.GUNK_SHOT, Moves.STOMPING_TANTRUM, Moves.DRAIN_PUNCH ], From d6854c49690d78a43394298b7cce27713f2663c5 Mon Sep 17 00:00:00 2001 From: Mumble <171087428+frutescens@users.noreply.github.com> Date: Sat, 30 Nov 2024 16:09:34 -0800 Subject: [PATCH 030/119] [Tests] Enemy Held Item overrides are now applied after generateEnemyModifiers() (#4922) * Moved overrideModifiers and overrideHeldItems to after generateEnemyModifiers * Removed functions from scene * Fixed the test. Thank you pigeonbar. --- src/battle-scene.ts | 4 +--- src/phases/encounter-phase.ts | 6 ++++++ src/test/moves/effectiveness.test.ts | 14 ++++++++------ 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/battle-scene.ts b/src/battle-scene.ts index 2c38bb6632f..f5e3a714df6 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -4,7 +4,7 @@ import Pokemon, { EnemyPokemon, PlayerPokemon } from "#app/field/pokemon"; import PokemonSpecies, { allSpecies, getPokemonSpecies, PokemonSpeciesFilter } from "#app/data/pokemon-species"; import { Constructor, isNullOrUndefined, randSeedInt } from "#app/utils"; import * as Utils from "#app/utils"; -import { ConsumableModifier, ConsumablePokemonModifier, DoubleBattleChanceBoosterModifier, ExpBalanceModifier, ExpShareModifier, FusePokemonModifier, HealingBoosterModifier, Modifier, ModifierBar, ModifierPredicate, MultipleParticipantExpBonusModifier, overrideHeldItems, overrideModifiers, PersistentModifier, PokemonExpBoosterModifier, PokemonFormChangeItemModifier, PokemonHeldItemModifier, PokemonHpRestoreModifier, PokemonIncrementingStatModifier, RememberMoveModifier, TerastallizeModifier, TurnHeldItemTransferModifier } from "./modifier/modifier"; +import { ConsumableModifier, ConsumablePokemonModifier, DoubleBattleChanceBoosterModifier, ExpBalanceModifier, ExpShareModifier, FusePokemonModifier, HealingBoosterModifier, Modifier, ModifierBar, ModifierPredicate, MultipleParticipantExpBonusModifier, PersistentModifier, PokemonExpBoosterModifier, PokemonFormChangeItemModifier, PokemonHeldItemModifier, PokemonHpRestoreModifier, PokemonIncrementingStatModifier, RememberMoveModifier, TerastallizeModifier, TurnHeldItemTransferModifier } from "./modifier/modifier"; import { PokeballType } from "#enums/pokeball"; import { initCommonAnims, initMoveAnim, loadCommonAnimAssets, loadMoveAnimAssets, populateAnims } from "#app/data/battle-anims"; import { Phase } from "#app/phase"; @@ -933,8 +933,6 @@ export default class BattleScene extends SceneBase { pokemon.generateFusionSpecies(); } - overrideModifiers(this, false); - overrideHeldItems(this, pokemon, false); if (boss && !dataSource) { const secondaryIvs = Utils.getIvsFromId(Utils.randSeedInt(4294967296)); diff --git a/src/phases/encounter-phase.ts b/src/phases/encounter-phase.ts index b524172af9d..a4c9aa44b36 100644 --- a/src/phases/encounter-phase.ts +++ b/src/phases/encounter-phase.ts @@ -34,6 +34,7 @@ import { Biome } from "#enums/biome"; import { MysteryEncounterMode } from "#enums/mystery-encounter-mode"; import { PlayerGender } from "#enums/player-gender"; import { Species } from "#enums/species"; +import { overrideHeldItems, overrideModifiers } from "#app/modifier/modifier"; import i18next from "i18next"; import { WEIGHT_INCREMENT_ON_SPAWN_MISS } from "#app/data/mystery-encounters/mystery-encounters"; @@ -216,6 +217,11 @@ export class EncounterPhase extends BattlePhase { if (!this.loaded && battle.battleType !== BattleType.MYSTERY_ENCOUNTER) { regenerateModifierPoolThresholds(this.scene.getEnemyField(), battle.battleType === BattleType.TRAINER ? ModifierPoolType.TRAINER : ModifierPoolType.WILD); this.scene.generateEnemyModifiers(); + overrideModifiers(this.scene, false); + this.scene.getEnemyField().forEach(enemy => { + overrideHeldItems(this.scene, enemy, false); + }); + } this.scene.ui.setMode(Mode.MESSAGE).then(() => { diff --git a/src/test/moves/effectiveness.test.ts b/src/test/moves/effectiveness.test.ts index 829d4533f9b..5ad258d7990 100644 --- a/src/test/moves/effectiveness.test.ts +++ b/src/test/moves/effectiveness.test.ts @@ -6,7 +6,7 @@ import { Abilities } from "#app/enums/abilities"; import { Moves } from "#app/enums/moves"; import { Species } from "#app/enums/species"; import * as Messages from "#app/messages"; -import { TerastallizeModifier } from "#app/modifier/modifier"; +import { TerastallizeModifier, overrideHeldItems } from "#app/modifier/modifier"; import GameManager from "#test/utils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, describe, expect, it, vi } from "vitest"; @@ -15,15 +15,17 @@ function testMoveEffectiveness(game: GameManager, move: Moves, targetSpecies: Sp expected: number, targetAbility: Abilities = Abilities.BALL_FETCH, teraType?: Type): void { // Suppress getPokemonNameWithAffix because it calls on a null battle spec vi.spyOn(Messages, "getPokemonNameWithAffix").mockReturnValue(""); - game.override.enemyAbility(targetAbility); - - if (teraType !== undefined) { - game.override.enemyHeldItems([{ name:"TERA_SHARD", type: teraType }]); - } + game.override + .enemyAbility(targetAbility) + .enemyHeldItems([{ name:"TERA_SHARD", type: teraType }]); const user = game.scene.addPlayerPokemon(getPokemonSpecies(Species.SNORLAX), 5); const target = game.scene.addEnemyPokemon(getPokemonSpecies(targetSpecies), 5, TrainerSlot.NONE); + if (teraType !== undefined) { + overrideHeldItems(game.scene, target, false); + } + expect(target.getMoveEffectiveness(user, allMoves[move])).toBe(expected); user.destroy(); target.destroy(); From cef2f2adf7f26abf4f93d6fa2ee0f670408146ae Mon Sep 17 00:00:00 2001 From: Mumble <171087428+frutescens@users.noreply.github.com> Date: Sat, 30 Nov 2024 18:40:05 -0800 Subject: [PATCH 031/119] [Ability] Fully implement Sheer Force (#4890) * Added checks for Sheer Force interactions currently in the code. * Test for Relic Song interaction * Test for Shell Bell interaction * Created new Modifier class MoveEffectModifier * Applied new modifier class. * Revert "Applied new modifier class." This reverts commit 222bc8d42875485742ba8bd38fa5e9b978bbd53a. * Revert "Created new Modifier class MoveEffectModifier" This reverts commit 0e57ed03ff7c0e6fb59c7b3c2ea74b6fe6327f59. * Added checks for Shell Bell, Scope Lens, Wide Lens, Leek, and Golden Punch * Fixing function calls. * Fixed getSecondaryChanceMultiplier to just look at sheer force. * Rewrote old Sheer Force tests in accordance to current testing standards. * Resetting modifiers.ts * Update src/data/pokemon-forms.ts Co-authored-by: innerthunder <168692175+innerthunder@users.noreply.github.com> * Moved getSecondaryChanceMultiplier to FlinchChanceModifier and revised Serene Grace tests * Adding an additional override to prevent test failures. * Removed Serene Grace factor from modifier. * Added forgotten conditional. * Added comment --------- Co-authored-by: frutescens Co-authored-by: innerthunder <168692175+innerthunder@users.noreply.github.com> --- src/data/ability.ts | 4 +- src/data/pokemon-forms.ts | 4 + src/modifier/modifier.ts | 29 ++-- src/test/abilities/serene_grace.test.ts | 81 +++------ src/test/abilities/sheer_force.test.ts | 218 ++++++++++-------------- 5 files changed, 123 insertions(+), 213 deletions(-) diff --git a/src/data/ability.ts b/src/data/ability.ts index 234b502c23f..7fa046e2369 100644 --- a/src/data/ability.ts +++ b/src/data/ability.ts @@ -5713,9 +5713,7 @@ export function initAbilities() { .condition(getSheerForceHitDisableAbCondition()), new Ability(Abilities.SHEER_FORCE, 5) .attr(MovePowerBoostAbAttr, (user, target, move) => move.chance >= 1, 5461 / 4096) - .attr(MoveEffectChanceMultiplierAbAttr, 0) - .edgeCase() // Should disable shell bell and Meloetta's relic song transformation - .edgeCase(), // Should disable life orb, eject button, red card, kee/maranga berry if they get implemented + .attr(MoveEffectChanceMultiplierAbAttr, 0), // Should disable life orb, eject button, red card, kee/maranga berry if they get implemented new Ability(Abilities.CONTRARY, 5) .attr(StatStageChangeMultiplierAbAttr, -1) .ignorable(), diff --git a/src/data/pokemon-forms.ts b/src/data/pokemon-forms.ts index 2db0ed54294..a1b2d7896d7 100644 --- a/src/data/pokemon-forms.ts +++ b/src/data/pokemon-forms.ts @@ -351,6 +351,10 @@ export class MeloettaFormChangePostMoveTrigger extends SpeciesFormChangePostMove if (pokemon.scene.gameMode.hasChallenge(Challenges.SINGLE_TYPE)) { return false; } else { + // Meloetta will not transform if it has the ability Sheer Force when using Relic Song + if (pokemon.hasAbility(Abilities.SHEER_FORCE)) { + return false; + } return super.canChange(pokemon); } } diff --git a/src/modifier/modifier.ts b/src/modifier/modifier.ts index 5e5246269a3..05d9e8b9897 100644 --- a/src/modifier/modifier.ts +++ b/src/modifier/modifier.ts @@ -18,7 +18,6 @@ import type { VoucherType } from "#app/system/voucher"; import { Command } from "#app/ui/command-ui-handler"; import { addTextObject, TextStyle } from "#app/ui/text"; import { BooleanHolder, hslToHex, isNullOrUndefined, NumberHolder, toDmgValue } from "#app/utils"; -import { Abilities } from "#enums/abilities"; import { BattlerTagType } from "#enums/battler-tag-type"; import { BerryType } from "#enums/berry-type"; import { Moves } from "#enums/moves"; @@ -726,22 +725,6 @@ export abstract class PokemonHeldItemModifier extends PersistentModifier { return 1; } - //Applies to items with chance of activating secondary effects ie Kings Rock - getSecondaryChanceMultiplier(pokemon: Pokemon): number { - // Temporary quickfix to stop game from freezing when the opponet uses u-turn while holding on to king's rock - if (!pokemon.getLastXMoves()[0]) { - return 1; - } - const sheerForceAffected = allMoves[pokemon.getLastXMoves()[0].move].chance >= 0 && pokemon.hasAbility(Abilities.SHEER_FORCE); - - if (sheerForceAffected) { - return 0; - } else if (pokemon.hasAbility(Abilities.SERENE_GRACE)) { - return 2; - } - return 1; - } - getMaxStackCount(scene: BattleScene, forThreshold?: boolean): number { const pokemon = this.getPokemon(scene); if (!pokemon) { @@ -1614,9 +1597,16 @@ export class BypassSpeedChanceModifier extends PokemonHeldItemModifier { } } +/** + * Class for Pokemon held items like King's Rock + * Because King's Rock can be stacked in PokeRogue, unlike mainline, it does not receive a boost from Abilities.SERENE_GRACE + */ export class FlinchChanceModifier extends PokemonHeldItemModifier { + private chance: number; constructor(type: ModifierType, pokemonId: number, stackCount?: number) { super(type, pokemonId, stackCount); + + this.chance = 10; } matchType(modifier: Modifier) { @@ -1644,7 +1634,8 @@ export class FlinchChanceModifier extends PokemonHeldItemModifier { * @returns `true` if {@linkcode FlinchChanceModifier} has been applied */ override apply(pokemon: Pokemon, flinched: BooleanHolder): boolean { - if (!flinched.value && pokemon.randSeedInt(10) < (this.getStackCount() * this.getSecondaryChanceMultiplier(pokemon))) { + // The check for pokemon.battleSummonData is to ensure that a crash doesn't occur when a Pokemon with King's Rock procs a flinch + if (pokemon.battleSummonData && !flinched.value && pokemon.randSeedInt(100) < (this.getStackCount() * this.chance)) { flinched.value = true; return true; } @@ -1652,7 +1643,7 @@ export class FlinchChanceModifier extends PokemonHeldItemModifier { return false; } - getMaxHeldItemCount(pokemon: Pokemon): number { + getMaxHeldItemCount(_pokemon: Pokemon): number { return 3; } } diff --git a/src/test/abilities/serene_grace.test.ts b/src/test/abilities/serene_grace.test.ts index 3318c7fc27a..a19b5c82546 100644 --- a/src/test/abilities/serene_grace.test.ts +++ b/src/test/abilities/serene_grace.test.ts @@ -1,15 +1,12 @@ import { BattlerIndex } from "#app/battle"; -import { applyAbAttrs, MoveEffectChanceMultiplierAbAttr } from "#app/data/ability"; -import { Stat } from "#enums/stat"; -import { MoveEffectPhase } from "#app/phases/move-effect-phase"; -import * as Utils from "#app/utils"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import GameManager from "#test/utils/gameManager"; import Phaser from "phaser"; -import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; - +import { allMoves } from "#app/data/move"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; +import { FlinchAttr } from "#app/data/move"; describe("Abilities - Serene Grace", () => { let phaserGame: Phaser.Game; @@ -27,66 +24,26 @@ describe("Abilities - Serene Grace", () => { beforeEach(() => { game = new GameManager(phaserGame); - const movesToUse = [ Moves.AIR_SLASH, Moves.TACKLE ]; - game.override.battleType("single"); - game.override.enemySpecies(Species.ONIX); - game.override.startingLevel(100); - game.override.moveset(movesToUse); - game.override.enemyMoveset([ Moves.TACKLE, Moves.TACKLE, Moves.TACKLE, Moves.TACKLE ]); + game.override + .battleType("single") + .ability(Abilities.SERENE_GRACE) + .moveset([ Moves.AIR_SLASH, Moves.TACKLE ]) + .enemyLevel(10) + .enemyMoveset([ Moves.SPLASH ]); }); - it("Move chance without Serene Grace", async () => { - const moveToUse = Moves.AIR_SLASH; - await game.startBattle([ - Species.PIDGEOT - ]); + it("Serene Grace should double the secondary effect chance of a move", async () => { + await game.classicMode.startBattle([ Species.SHUCKLE ]); + const airSlashMove = allMoves[Moves.AIR_SLASH]; + const airSlashFlinchAttr = airSlashMove.getAttrs(FlinchAttr)[0]; + vi.spyOn(airSlashFlinchAttr, "getMoveChance"); - game.scene.getEnemyParty()[0].stats[Stat.SPDEF] = 10000; - expect(game.scene.getPlayerParty()[0].formIndex).toBe(0); - - game.move.select(moveToUse); - + game.move.select(Moves.AIR_SLASH); await game.setTurnOrder([ BattlerIndex.PLAYER, BattlerIndex.ENEMY ]); - await game.phaseInterceptor.to(MoveEffectPhase, false); + await game.move.forceHit(); + await game.phaseInterceptor.to("BerryPhase"); - // Check chance of Air Slash without Serene Grace - const phase = game.scene.getCurrentPhase() as MoveEffectPhase; - const move = phase.move.getMove(); - expect(move.id).toBe(Moves.AIR_SLASH); - - const chance = new Utils.IntegerHolder(move.chance); - console.log(move.chance + " Their ability is " + phase.getUserPokemon()!.getAbility().name); - applyAbAttrs(MoveEffectChanceMultiplierAbAttr, phase.getUserPokemon()!, null, false, chance, move, phase.getFirstTarget(), false); - expect(chance.value).toBe(30); - - }, 20000); - - it("Move chance with Serene Grace", async () => { - const moveToUse = Moves.AIR_SLASH; - game.override.ability(Abilities.SERENE_GRACE); - await game.startBattle([ - Species.TOGEKISS - ]); - - game.scene.getEnemyParty()[0].stats[Stat.SPDEF] = 10000; - expect(game.scene.getPlayerParty()[0].formIndex).toBe(0); - - game.move.select(moveToUse); - - await game.setTurnOrder([ BattlerIndex.PLAYER, BattlerIndex.ENEMY ]); - await game.phaseInterceptor.to(MoveEffectPhase, false); - - // Check chance of Air Slash with Serene Grace - const phase = game.scene.getCurrentPhase() as MoveEffectPhase; - const move = phase.move.getMove(); - expect(move.id).toBe(Moves.AIR_SLASH); - - const chance = new Utils.IntegerHolder(move.chance); - applyAbAttrs(MoveEffectChanceMultiplierAbAttr, phase.getUserPokemon()!, null, false, chance, move, phase.getFirstTarget(), false); - expect(chance.value).toBe(60); - - }, 20000); - - //TODO King's Rock Interaction Unit Test + expect(airSlashFlinchAttr.getMoveChance).toHaveLastReturnedWith(60); + }); }); diff --git a/src/test/abilities/sheer_force.test.ts b/src/test/abilities/sheer_force.test.ts index 826694752b7..a0ddf5bb9c6 100644 --- a/src/test/abilities/sheer_force.test.ts +++ b/src/test/abilities/sheer_force.test.ts @@ -1,15 +1,13 @@ import { BattlerIndex } from "#app/battle"; -import { applyAbAttrs, applyPostDefendAbAttrs, applyPreAttackAbAttrs, MoveEffectChanceMultiplierAbAttr, MovePowerBoostAbAttr, PostDefendTypeChangeAbAttr } from "#app/data/ability"; -import { MoveEffectPhase } from "#app/phases/move-effect-phase"; -import { NumberHolder } from "#app/utils"; +import { Type } from "#app/enums/type"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import { Stat } from "#enums/stat"; import GameManager from "#test/utils/gameManager"; import Phaser from "phaser"; -import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; -import { allMoves } from "#app/data/move"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; +import { allMoves, FlinchAttr } from "#app/data/move"; describe("Abilities - Sheer Force", () => { let phaserGame: Phaser.Game; @@ -27,143 +25,91 @@ describe("Abilities - Sheer Force", () => { beforeEach(() => { game = new GameManager(phaserGame); - const movesToUse = [ Moves.AIR_SLASH, Moves.BIND, Moves.CRUSH_CLAW, Moves.TACKLE ]; - game.override.battleType("single"); - game.override.enemySpecies(Species.ONIX); - game.override.startingLevel(100); - game.override.moveset(movesToUse); - game.override.enemyMoveset([ Moves.TACKLE, Moves.TACKLE, Moves.TACKLE, Moves.TACKLE ]); + game.override + .battleType("single") + .ability(Abilities.SHEER_FORCE) + .enemySpecies(Species.ONIX) + .enemyAbility(Abilities.BALL_FETCH) + .enemyMoveset([ Moves.SPLASH ]) + .disableCrits(); }); - it("Sheer Force", async () => { - const moveToUse = Moves.AIR_SLASH; - game.override.ability(Abilities.SHEER_FORCE); + const SHEER_FORCE_MULT = 5461 / 4096; + + it("Sheer Force should boost the power of the move but disable secondary effects", async () => { + game.override.moveset([ Moves.AIR_SLASH ]); + await game.classicMode.startBattle([ Species.SHUCKLE ]); + + const airSlashMove = allMoves[Moves.AIR_SLASH]; + vi.spyOn(airSlashMove, "calculateBattlePower"); + const airSlashFlinchAttr = airSlashMove.getAttrs(FlinchAttr)[0]; + vi.spyOn(airSlashFlinchAttr, "getMoveChance"); + + game.move.select(Moves.AIR_SLASH); + + await game.setTurnOrder([ BattlerIndex.PLAYER, BattlerIndex.ENEMY ]); + await game.move.forceHit(); + await game.phaseInterceptor.to("BerryPhase", false); + + expect(airSlashMove.calculateBattlePower).toHaveLastReturnedWith(airSlashMove.power * SHEER_FORCE_MULT); + expect(airSlashFlinchAttr.getMoveChance).toHaveLastReturnedWith(0); + }); + + it("Sheer Force does not affect the base damage or secondary effects of binding moves", async () => { + game.override.moveset([ Moves.BIND ]); + await game.classicMode.startBattle([ Species.SHUCKLE ]); + + const bindMove = allMoves[Moves.BIND]; + vi.spyOn(bindMove, "calculateBattlePower"); + + game.move.select(Moves.BIND); + + await game.setTurnOrder([ BattlerIndex.PLAYER, BattlerIndex.ENEMY ]); + await game.move.forceHit(); + await game.phaseInterceptor.to("BerryPhase", false); + + expect(bindMove.calculateBattlePower).toHaveLastReturnedWith(bindMove.power); + }, 20000); + + it("Sheer Force does not boost the base damage of moves with no secondary effect", async () => { + game.override.moveset([ Moves.TACKLE ]); await game.classicMode.startBattle([ Species.PIDGEOT ]); - game.scene.getEnemyPokemon()!.stats[Stat.SPDEF] = 10000; - expect(game.scene.getPlayerPokemon()!.formIndex).toBe(0); - - game.move.select(moveToUse); + const tackleMove = allMoves[Moves.TACKLE]; + vi.spyOn(tackleMove, "calculateBattlePower"); + game.move.select(Moves.TACKLE); await game.setTurnOrder([ BattlerIndex.PLAYER, BattlerIndex.ENEMY ]); - await game.phaseInterceptor.to(MoveEffectPhase, false); + await game.move.forceHit(); + await game.phaseInterceptor.to("BerryPhase", false); - const phase = game.scene.getCurrentPhase() as MoveEffectPhase; - const move = phase.move.getMove(); - expect(move.id).toBe(Moves.AIR_SLASH); + expect(tackleMove.calculateBattlePower).toHaveLastReturnedWith(tackleMove.power); + }); - //Verify the move is boosted and has no chance of secondary effects - const power = new NumberHolder(move.power); - const chance = new NumberHolder(move.chance); + it("Sheer Force can disable the on-hit activation of specific abilities", async () => { + game.override + .moveset([ Moves.HEADBUTT ]) + .enemySpecies(Species.SQUIRTLE) + .enemyLevel(10) + .enemyAbility(Abilities.COLOR_CHANGE); - applyAbAttrs(MoveEffectChanceMultiplierAbAttr, phase.getUserPokemon()!, null, false, chance, move, phase.getFirstTarget(), false); - applyPreAttackAbAttrs(MovePowerBoostAbAttr, phase.getUserPokemon()!, phase.getFirstTarget()!, move, false, power); - - expect(chance.value).toBe(0); - expect(power.value).toBe(move.power * 5461 / 4096); - - - }, 20000); - - it("Sheer Force with exceptions including binding moves", async () => { - const moveToUse = Moves.BIND; - game.override.ability(Abilities.SHEER_FORCE); await game.classicMode.startBattle([ Species.PIDGEOT ]); + const enemyPokemon = game.scene.getEnemyPokemon(); + const headbuttMove = allMoves[Moves.HEADBUTT]; + vi.spyOn(headbuttMove, "calculateBattlePower"); + const headbuttFlinchAttr = headbuttMove.getAttrs(FlinchAttr)[0]; + vi.spyOn(headbuttFlinchAttr, "getMoveChance"); - - game.scene.getEnemyPokemon()!.stats[Stat.DEF] = 10000; - expect(game.scene.getPlayerPokemon()!.formIndex).toBe(0); - - game.move.select(moveToUse); + game.move.select(Moves.HEADBUTT); await game.setTurnOrder([ BattlerIndex.PLAYER, BattlerIndex.ENEMY ]); - await game.phaseInterceptor.to(MoveEffectPhase, false); + await game.move.forceHit(); + await game.phaseInterceptor.to("BerryPhase", false); - const phase = game.scene.getCurrentPhase() as MoveEffectPhase; - const move = phase.move.getMove(); - expect(move.id).toBe(Moves.BIND); - - //Binding moves and other exceptions are not affected by Sheer Force and have a chance.value of -1 - const power = new NumberHolder(move.power); - const chance = new NumberHolder(move.chance); - - applyAbAttrs(MoveEffectChanceMultiplierAbAttr, phase.getUserPokemon()!, null, false, chance, move, phase.getFirstTarget(), false); - applyPreAttackAbAttrs(MovePowerBoostAbAttr, phase.getUserPokemon()!, phase.getFirstTarget()!, move, false, power); - - expect(chance.value).toBe(-1); - expect(power.value).toBe(move.power); - - - }, 20000); - - it("Sheer Force with moves with no secondary effect", async () => { - const moveToUse = Moves.TACKLE; - game.override.ability(Abilities.SHEER_FORCE); - await game.classicMode.startBattle([ Species.PIDGEOT ]); - - - game.scene.getEnemyPokemon()!.stats[Stat.DEF] = 10000; - expect(game.scene.getPlayerPokemon()!.formIndex).toBe(0); - - game.move.select(moveToUse); - - await game.setTurnOrder([ BattlerIndex.PLAYER, BattlerIndex.ENEMY ]); - await game.phaseInterceptor.to(MoveEffectPhase, false); - - const phase = game.scene.getCurrentPhase() as MoveEffectPhase; - const move = phase.move.getMove(); - expect(move.id).toBe(Moves.TACKLE); - - //Binding moves and other exceptions are not affected by Sheer Force and have a chance.value of -1 - const power = new NumberHolder(move.power); - const chance = new NumberHolder(move.chance); - - applyAbAttrs(MoveEffectChanceMultiplierAbAttr, phase.getUserPokemon()!, null, false, chance, move, phase.getFirstTarget(), false); - applyPreAttackAbAttrs(MovePowerBoostAbAttr, phase.getUserPokemon()!, phase.getFirstTarget()!, move, false, power); - - expect(chance.value).toBe(-1); - expect(power.value).toBe(move.power); - - - }, 20000); - - it("Sheer Force Disabling Specific Abilities", async () => { - const moveToUse = Moves.CRUSH_CLAW; - game.override.enemyAbility(Abilities.COLOR_CHANGE); - game.override.startingHeldItems([{ name: "KINGS_ROCK", count: 1 }]); - game.override.ability(Abilities.SHEER_FORCE); - await game.startBattle([ Species.PIDGEOT ]); - - - game.scene.getEnemyPokemon()!.stats[Stat.DEF] = 10000; - expect(game.scene.getPlayerPokemon()!.formIndex).toBe(0); - - game.move.select(moveToUse); - - await game.setTurnOrder([ BattlerIndex.PLAYER, BattlerIndex.ENEMY ]); - await game.phaseInterceptor.to(MoveEffectPhase, false); - - const phase = game.scene.getCurrentPhase() as MoveEffectPhase; - const move = phase.move.getMove(); - expect(move.id).toBe(Moves.CRUSH_CLAW); - - //Disable color change due to being hit by Sheer Force - const power = new NumberHolder(move.power); - const chance = new NumberHolder(move.chance); - const user = phase.getUserPokemon()!; - const target = phase.getFirstTarget()!; - const opponentType = target.getTypes()[0]; - - applyAbAttrs(MoveEffectChanceMultiplierAbAttr, user, null, false, chance, move, target, false); - applyPreAttackAbAttrs(MovePowerBoostAbAttr, user, target, move, false, power); - applyPostDefendAbAttrs(PostDefendTypeChangeAbAttr, target, user, move, target.apply(user, move)); - - expect(chance.value).toBe(0); - expect(power.value).toBe(move.power * 5461 / 4096); - expect(target.getTypes().length).toBe(2); - expect(target.getTypes()[0]).toBe(opponentType); - - }, 20000); + expect(enemyPokemon?.getTypes()[0]).toBe(Type.WATER); + expect(headbuttMove.calculateBattlePower).toHaveLastReturnedWith(headbuttMove.power * SHEER_FORCE_MULT); + expect(headbuttFlinchAttr.getMoveChance).toHaveLastReturnedWith(0); + }); it("Two Pokemon with abilities disabled by Sheer Force hitting each other should not cause a crash", async () => { const moveToUse = Moves.CRUNCH; @@ -191,5 +137,19 @@ describe("Abilities - Sheer Force", () => { expect(onix.getTypes()).toStrictEqual(expectedTypes); }); - //TODO King's Rock Interaction Unit Test + it("Sheer Force should disable Meloetta's transformation from Relic Song", async () => { + game.override + .ability(Abilities.SHEER_FORCE) + .moveset([ Moves.RELIC_SONG ]) + .enemyMoveset([ Moves.SPLASH ]) + .enemyLevel(100); + await game.classicMode.startBattle([ Species.MELOETTA ]); + + const playerPokemon = game.scene.getPlayerPokemon(); + const formKeyStart = playerPokemon?.getFormKey(); + + game.move.select(Moves.RELIC_SONG); + await game.phaseInterceptor.to("TurnEndPhase"); + expect(formKeyStart).toBe(playerPokemon?.getFormKey()); + }); }); From 9ce4d5eecaaf96766577f5bdb03640db513a1147 Mon Sep 17 00:00:00 2001 From: AJ Fontaine <36677462+Fontbane@users.noreply.github.com> Date: Sun, 1 Dec 2024 11:21:40 -0500 Subject: [PATCH 032/119] [Balance] Remove candy friendship loss from fainting (#4953) * Remove candy friendship loss from fainting * Apply Moka suggestions Co-authored-by: Moka <54149968+MokaStitcher@users.noreply.github.com> * Fix starterAmount using friendship instead of adjusted amount --------- Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> Co-authored-by: Moka <54149968+MokaStitcher@users.noreply.github.com> --- src/field/pokemon.ts | 39 +++++++++++++++++++-------------------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index 0675b9485cf..54b0b871b51 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -4271,28 +4271,29 @@ export class PlayerPokemon extends Pokemon { }); } - addFriendship(friendship: integer): void { - const starterSpeciesId = this.species.getRootSpeciesId(); - const fusionStarterSpeciesId = this.isFusion() && this.fusionSpecies ? this.fusionSpecies.getRootSpeciesId() : 0; - const starterData = [ - this.scene.gameData.starterData[starterSpeciesId], - fusionStarterSpeciesId ? this.scene.gameData.starterData[fusionStarterSpeciesId] : null - ].filter(d => !!d); - const amount = new Utils.IntegerHolder(friendship); - let candyFriendshipMultiplier = CLASSIC_CANDY_FRIENDSHIP_MULTIPLIER; - if (this.scene.eventManager.isEventActive()) { - candyFriendshipMultiplier *= this.scene.eventManager.getFriendshipMultiplier(); - } - const starterAmount = new Utils.IntegerHolder(Math.floor(friendship * (this.scene.gameMode.isClassic && friendship > 0 ? candyFriendshipMultiplier : 1) / (fusionStarterSpeciesId ? 2 : 1))); - if (amount.value > 0) { + addFriendship(friendship: number): void { + if (friendship > 0) { + const starterSpeciesId = this.species.getRootSpeciesId(); + const fusionStarterSpeciesId = this.isFusion() && this.fusionSpecies ? this.fusionSpecies.getRootSpeciesId() : 0; + const starterData = [ + this.scene.gameData.starterData[starterSpeciesId], + fusionStarterSpeciesId ? this.scene.gameData.starterData[fusionStarterSpeciesId] : null + ].filter(d => !!d); + const amount = new Utils.NumberHolder(friendship); this.scene.applyModifier(PokemonFriendshipBoosterModifier, true, this, amount); - this.scene.applyModifier(PokemonFriendshipBoosterModifier, true, this, starterAmount); + let candyFriendshipMultiplier = CLASSIC_CANDY_FRIENDSHIP_MULTIPLIER; + if (this.scene.eventManager.isEventActive()) { + candyFriendshipMultiplier *= this.scene.eventManager.getFriendshipMultiplier(); + } + const starterAmount = new Utils.NumberHolder(Math.floor(amount.value * (this.scene.gameMode.isClassic ? candyFriendshipMultiplier : 1) / (fusionStarterSpeciesId ? 2 : 1))); + // Add friendship to this PlayerPokemon this.friendship = Math.min(this.friendship + amount.value, 255); if (this.friendship === 255) { this.scene.validateAchv(achvs.MAX_FRIENDSHIP); } - starterData.forEach((sd: StarterDataEntry, i: integer) => { + // Add to candy progress for this mon's starter species and its fused species (if it has one) + starterData.forEach((sd: StarterDataEntry, i: number) => { const speciesId = !i ? starterSpeciesId : fusionStarterSpeciesId as Species; sd.friendship = (sd.friendship || 0) + starterAmount.value; if (sd.friendship >= getStarterValueFriendshipCap(speciesStarterCosts[speciesId])) { @@ -4301,10 +4302,8 @@ export class PlayerPokemon extends Pokemon { } }); } else { - this.friendship = Math.max(this.friendship + amount.value, 0); - for (const sd of starterData) { - sd.friendship = Math.max((sd.friendship || 0) + starterAmount.value, 0); - } + // Lose friendship upon fainting + this.friendship = Math.max(this.friendship + friendship, 0); } } /** From 7b06314940660ec4ffd05a61a2700679a9483830 Mon Sep 17 00:00:00 2001 From: AJ Fontaine <36677462+Fontbane@users.noreply.github.com> Date: Sun, 1 Dec 2024 11:38:16 -0500 Subject: [PATCH 033/119] [Bug] Fix fusions learning moves of wrong component mon on evolution (#4921) * Fix fusions learning moves of wrong component mon on evolution * Apply suggestions from code review Co-authored-by: Moka <54149968+MokaStitcher@users.noreply.github.com> --------- Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> Co-authored-by: Moka <54149968+MokaStitcher@users.noreply.github.com> --- src/data/balance/pokemon-level-moves.ts | 4 +- src/field/pokemon.ts | 57 +++++++++++++++---------- src/phases/evolution-phase.ts | 10 +++-- 3 files changed, 44 insertions(+), 27 deletions(-) diff --git a/src/data/balance/pokemon-level-moves.ts b/src/data/balance/pokemon-level-moves.ts index 71d98fb4fc2..2a3ab431424 100644 --- a/src/data/balance/pokemon-level-moves.ts +++ b/src/data/balance/pokemon-level-moves.ts @@ -16,9 +16,9 @@ interface PokemonSpeciesFormLevelMoves { } /** Moves that can only be learned with a memory-mushroom */ -const RELEARN_MOVE = -1; +export const RELEARN_MOVE = -1; /** Moves that can only be learned with an evolve */ -const EVOLVE_MOVE = 0; +export const EVOLVE_MOVE = 0; export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [Species.BULBASAUR]: [ diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index 54b0b871b51..c22c755fc6e 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -29,7 +29,7 @@ import { BattlerIndex } from "#app/battle"; import { Mode } from "#app/ui/ui"; import PartyUiHandler, { PartyOption, PartyUiMode } from "#app/ui/party-ui-handler"; import SoundFade from "phaser3-rex-plugins/plugins/soundfade"; -import { LevelMoves } from "#app/data/balance/pokemon-level-moves"; +import { EVOLVE_MOVE, LevelMoves, RELEARN_MOVE } from "#app/data/balance/pokemon-level-moves"; import { DamageAchv, achvs } from "#app/system/achv"; import { DexAttr, StarterDataEntry, StarterMoveset } from "#app/system/game-data"; import { QuantizerCelebi, argbFromRgba, rgbaFromArgb } from "@material/material-color-utilities"; @@ -71,6 +71,15 @@ import { Nature } from "#enums/nature"; import { StatusEffect } from "#enums/status-effect"; import { doShinySparkleAnim } from "#app/field/anims"; +export enum LearnMoveSituation { + MISC, + LEVEL_UP, + RELEARN, + EVOLUTION, + EVOLUTION_FUSED, // If fusionSpecies has Evolved + EVOLUTION_FUSED_BASE // If fusion's base species has Evolved +} + export enum FieldPosition { CENTER, LEFT, @@ -1817,40 +1826,44 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * @param {boolean} includeRelearnerMoves Whether to include moves that would require a relearner. Note the move relearner inherently allows evolution moves * @returns {LevelMoves} A list of moves and the levels they can be learned at */ - getLevelMoves(startingLevel?: integer, includeEvolutionMoves: boolean = false, simulateEvolutionChain: boolean = false, includeRelearnerMoves: boolean = false): LevelMoves { + getLevelMoves(startingLevel?: integer, includeEvolutionMoves: boolean = false, simulateEvolutionChain: boolean = false, includeRelearnerMoves: boolean = false, learnSituation: LearnMoveSituation = LearnMoveSituation.MISC): LevelMoves { const ret: LevelMoves = []; let levelMoves: LevelMoves = []; if (!startingLevel) { startingLevel = this.level; } - if (simulateEvolutionChain) { - const evolutionChain = this.species.getSimulatedEvolutionChain(this.level, this.hasTrainer(), this.isBoss(), this.isPlayer()); - for (let e = 0; e < evolutionChain.length; e++) { - // TODO: Might need to pass specific form index in simulated evolution chain - const speciesLevelMoves = getPokemonSpeciesForm(evolutionChain[e][0], this.formIndex).getLevelMoves(); - if (includeRelearnerMoves) { - levelMoves.push(...speciesLevelMoves); - } else { - levelMoves.push(...speciesLevelMoves.filter(lm => (includeEvolutionMoves && lm[0] === 0) || ((!e || lm[0] > 1) && (e === evolutionChain.length - 1 || lm[0] <= evolutionChain[e + 1][1])))); - } - } + if (learnSituation === LearnMoveSituation.EVOLUTION_FUSED && this.fusionSpecies) { // For fusion evolutions, get ONLY the moves of the component mon that evolved + levelMoves = this.getFusionSpeciesForm(true).getLevelMoves().filter(lm => (includeEvolutionMoves && lm[0] === EVOLVE_MOVE) || (includeRelearnerMoves && lm[0] === RELEARN_MOVE) || lm[0] > 0); } else { - levelMoves = this.getSpeciesForm(true).getLevelMoves().filter(lm => (includeEvolutionMoves && lm[0] === 0) || (includeRelearnerMoves && lm[0] === -1) || lm[0] > 0); - } - if (this.fusionSpecies) { if (simulateEvolutionChain) { - const fusionEvolutionChain = this.fusionSpecies.getSimulatedEvolutionChain(this.level, this.hasTrainer(), this.isBoss(), this.isPlayer()); - for (let e = 0; e < fusionEvolutionChain.length; e++) { + const evolutionChain = this.species.getSimulatedEvolutionChain(this.level, this.hasTrainer(), this.isBoss(), this.isPlayer()); + for (let e = 0; e < evolutionChain.length; e++) { // TODO: Might need to pass specific form index in simulated evolution chain - const speciesLevelMoves = getPokemonSpeciesForm(fusionEvolutionChain[e][0], this.fusionFormIndex).getLevelMoves(); + const speciesLevelMoves = getPokemonSpeciesForm(evolutionChain[e][0], this.formIndex).getLevelMoves(); if (includeRelearnerMoves) { - levelMoves.push(...speciesLevelMoves.filter(lm => (includeEvolutionMoves && lm[0] === 0) || lm[0] !== 0)); + levelMoves.push(...speciesLevelMoves); } else { - levelMoves.push(...speciesLevelMoves.filter(lm => (includeEvolutionMoves && lm[0] === 0) || ((!e || lm[0] > 1) && (e === fusionEvolutionChain.length - 1 || lm[0] <= fusionEvolutionChain[e + 1][1])))); + levelMoves.push(...speciesLevelMoves.filter(lm => (includeEvolutionMoves && lm[0] === EVOLVE_MOVE) || ((!e || lm[0] > 1) && (e === evolutionChain.length - 1 || lm[0] <= evolutionChain[e + 1][1])))); } } } else { - levelMoves.push(...this.getFusionSpeciesForm(true).getLevelMoves().filter(lm => (includeEvolutionMoves && lm[0] === 0) || (includeRelearnerMoves && lm[0] === -1) || lm[0] > 0)); + levelMoves = this.getSpeciesForm(true).getLevelMoves().filter(lm => (includeEvolutionMoves && lm[0] === EVOLVE_MOVE) || (includeRelearnerMoves && lm[0] === RELEARN_MOVE) || lm[0] > 0); + } + if (this.fusionSpecies && learnSituation !== LearnMoveSituation.EVOLUTION_FUSED_BASE) { // For fusion evolutions, get ONLY the moves of the component mon that evolved + if (simulateEvolutionChain) { + const fusionEvolutionChain = this.fusionSpecies.getSimulatedEvolutionChain(this.level, this.hasTrainer(), this.isBoss(), this.isPlayer()); + for (let e = 0; e < fusionEvolutionChain.length; e++) { + // TODO: Might need to pass specific form index in simulated evolution chain + const speciesLevelMoves = getPokemonSpeciesForm(fusionEvolutionChain[e][0], this.fusionFormIndex).getLevelMoves(); + if (includeRelearnerMoves) { + levelMoves.push(...speciesLevelMoves.filter(lm => (includeEvolutionMoves && lm[0] === EVOLVE_MOVE) || lm[0] !== EVOLVE_MOVE)); + } else { + levelMoves.push(...speciesLevelMoves.filter(lm => (includeEvolutionMoves && lm[0] === EVOLVE_MOVE) || ((!e || lm[0] > 1) && (e === fusionEvolutionChain.length - 1 || lm[0] <= fusionEvolutionChain[e + 1][1])))); + } + } + } else { + levelMoves.push(...this.getFusionSpeciesForm(true).getLevelMoves().filter(lm => (includeEvolutionMoves && lm[0] === EVOLVE_MOVE) || (includeRelearnerMoves && lm[0] === RELEARN_MOVE) || lm[0] > 0)); + } } } levelMoves.sort((lma: [integer, integer], lmb: [integer, integer]) => lma[0] > lmb[0] ? 1 : lma[0] < lmb[0] ? -1 : 0); diff --git a/src/phases/evolution-phase.ts b/src/phases/evolution-phase.ts index 01994263688..36bd3b7bd81 100644 --- a/src/phases/evolution-phase.ts +++ b/src/phases/evolution-phase.ts @@ -1,17 +1,18 @@ import SoundFade from "phaser3-rex-plugins/plugins/soundfade"; import { Phase } from "#app/phase"; import BattleScene, { AnySound } from "#app/battle-scene"; -import { SpeciesFormEvolution } from "#app/data/balance/pokemon-evolutions"; +import { FusionSpeciesFormEvolution, SpeciesFormEvolution } from "#app/data/balance/pokemon-evolutions"; import EvolutionSceneHandler from "#app/ui/evolution-scene-handler"; import * as Utils from "#app/utils"; import { Mode } from "#app/ui/ui"; import { cos, sin } from "#app/field/anims"; -import Pokemon, { PlayerPokemon } from "#app/field/pokemon"; +import Pokemon, { LearnMoveSituation, PlayerPokemon } from "#app/field/pokemon"; import { getTypeRgb } from "#app/data/type"; import i18next from "i18next"; import { getPokemonNameWithAffix } from "#app/messages"; import { LearnMovePhase } from "#app/phases/learn-move-phase"; import { EndEvolutionPhase } from "#app/phases/end-evolution-phase"; +import { EVOLVE_MOVE } from "#app/data/balance/pokemon-level-moves"; export class EvolutionPhase extends Phase { protected pokemon: PlayerPokemon; @@ -20,6 +21,7 @@ export class EvolutionPhase extends Phase { private preEvolvedPokemonName: string; private evolution: SpeciesFormEvolution | null; + private fusionSpeciesEvolved: boolean; // Whether the evolution is of the fused species private evolutionBgm: AnySound; private evolutionHandler: EvolutionSceneHandler; @@ -39,6 +41,7 @@ export class EvolutionPhase extends Phase { this.pokemon = pokemon; this.evolution = evolution; this.lastLevel = lastLevel; + this.fusionSpeciesEvolved = evolution instanceof FusionSpeciesFormEvolution; } validate(): boolean { @@ -261,7 +264,8 @@ export class EvolutionPhase extends Phase { this.evolutionHandler.canCancel = false; this.pokemon.evolve(this.evolution, this.pokemon.species).then(() => { - const levelMoves = this.pokemon.getLevelMoves(this.lastLevel + 1, true); + const learnSituation: LearnMoveSituation = this.fusionSpeciesEvolved ? LearnMoveSituation.EVOLUTION_FUSED : this.pokemon.fusionSpecies ? LearnMoveSituation.EVOLUTION_FUSED_BASE : LearnMoveSituation.EVOLUTION; + const levelMoves = this.pokemon.getLevelMoves(this.lastLevel + 1, true, false, false, learnSituation).filter(lm => lm[0] === EVOLVE_MOVE); for (const lm of levelMoves) { this.scene.unshiftPhase(new LearnMovePhase(this.scene, this.scene.getPlayerParty().indexOf(this.pokemon), lm[1])); } From 37b8c337e17aeb095ab25d14ec808016a06c20d7 Mon Sep 17 00:00:00 2001 From: Moka <54149968+MokaStitcher@users.noreply.github.com> Date: Sun, 1 Dec 2024 18:58:44 +0100 Subject: [PATCH 034/119] [UI] Add error message for too many eggs in starter UI (#4317) * [qol] add missing error messages in starter UI * remove locale change * revert empty party message change --------- Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> --- src/ui/starter-select-ui-handler.ts | 32 ++++++++++++++++++----------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/src/ui/starter-select-ui-handler.ts b/src/ui/starter-select-ui-handler.ts index be78e7e1b44..691e339eafc 100644 --- a/src/ui/starter-select-ui-handler.ts +++ b/src/ui/starter-select-ui-handler.ts @@ -39,7 +39,6 @@ import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import { Button } from "#enums/buttons"; import { EggSourceType } from "#enums/egg-source-types"; -import AwaitableUiHandler from "#app/ui/awaitable-ui-handler"; import { DropDown, DropDownLabel, DropDownOption, DropDownState, DropDownType, SortCriteria } from "#app/ui/dropdown"; import { StarterContainer } from "#app/ui/starter-container"; import { DropDownColumn, FilterBar } from "#app/ui/filter-bar"; @@ -1062,15 +1061,21 @@ export default class StarterSelectUiHandler extends MessageUiHandler { } } - showText(text: string, delay?: integer, callback?: Function, callbackDelay?: integer, prompt?: boolean, promptDelay?: integer) { + showText(text: string, delay?: integer, callback?: Function, callbackDelay?: integer, prompt?: boolean, promptDelay?: integer, moveToTop?: boolean) { super.showText(text, delay, callback, callbackDelay, prompt, promptDelay); - if (text?.indexOf("\n") === -1) { - this.starterSelectMessageBox.setSize(318, 28); - this.message.setY(-22); + const singleLine = text?.indexOf("\n") === -1; + + this.starterSelectMessageBox.setSize(318, singleLine ? 28 : 42); + + if (moveToTop) { + this.starterSelectMessageBox.setOrigin(0, 0); + this.starterSelectMessageBoxContainer.setY(0); + this.message.setY(4); } else { - this.starterSelectMessageBox.setSize(318, 42); - this.message.setY(-37); + this.starterSelectMessageBoxContainer.setY(this.scene.game.canvas.height / 6); + this.starterSelectMessageBox.setOrigin(0, 1); + this.message.setY(singleLine ? -22 : -37); } this.starterSelectMessageBoxContainer.setVisible(!!text?.length); @@ -1804,8 +1809,12 @@ export default class StarterSelectUiHandler extends MessageUiHandler { options.push({ label: `x${sameSpeciesEggCost} ${i18next.t("starterSelectUiHandler:sameSpeciesEgg")}`, handler: () => { - if ((this.scene.gameData.eggs.length < 99 || Overrides.UNLIMITED_EGG_COUNT_OVERRIDE) - && (Overrides.FREE_CANDY_UPGRADE_OVERRIDE || candyCount >= sameSpeciesEggCost)) { + if (Overrides.FREE_CANDY_UPGRADE_OVERRIDE || candyCount >= sameSpeciesEggCost) { + if (this.scene.gameData.eggs.length >= 99 && !Overrides.UNLIMITED_EGG_COUNT_OVERRIDE) { + // Egg list full, show error message at the top of the screen and abort + this.showText(i18next.t("egg:tooManyEggs"), undefined, () => this.showText("", 0, () => this.tutorialActive = false), 2000, false, undefined, true); + return false; + } if (!Overrides.FREE_CANDY_UPGRADE_OVERRIDE) { starterData.candyCount -= sameSpeciesEggCost; } @@ -3565,9 +3574,8 @@ export default class StarterSelectUiHandler extends MessageUiHandler { }, cancel, null, null, 19); }); } else { - const handler = this.scene.ui.getHandler() as AwaitableUiHandler; - handler.tutorialActive = true; - this.scene.ui.showText(i18next.t("starterSelectUiHandler:invalidParty"), null, () => this.scene.ui.showText("", 0, () => handler.tutorialActive = false), null, true); + this.tutorialActive = true; + this.showText(i18next.t("starterSelectUiHandler:invalidParty"), undefined, () => this.showText("", 0, () => this.tutorialActive = false), undefined, true); } return true; } From fad29ffc5195dac3bcc038cae60f6251faf27a7e Mon Sep 17 00:00:00 2001 From: Daniel Pochert Date: Sun, 1 Dec 2024 19:07:48 +0100 Subject: [PATCH 035/119] [P1 Bug] Prevent crash from missing pokemon sprite (#4821) * catch Sprite.play() errors in egg hatch phase * catch more Sprite.play() errors causing crashes if sprite missing * Add changes suggested by PigeonBar --------- Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> Co-authored-by: Moka <54149968+MokaStitcher@users.noreply.github.com> --- .../encounters/global-trade-system-encounter.ts | 16 ++++++++++++++-- .../utils/encounter-transformation-sequence.ts | 16 ++++++++++++++-- src/field/pokemon.ts | 12 ++++++++++-- src/phases/egg-hatch-phase.ts | 7 ++++++- src/phases/evolution-phase.ts | 16 ++++++++++++++-- src/phases/form-change-phase.ts | 8 +++++++- src/phases/quiet-form-change-phase.ts | 14 ++++++++++++-- src/ui/summary-ui-handler.ts | 8 ++++++-- 8 files changed, 83 insertions(+), 14 deletions(-) diff --git a/src/data/mystery-encounters/encounters/global-trade-system-encounter.ts b/src/data/mystery-encounters/encounters/global-trade-system-encounter.ts index 934fc1b805b..fa445d75d4f 100644 --- a/src/data/mystery-encounters/encounters/global-trade-system-encounter.ts +++ b/src/data/mystery-encounters/encounters/global-trade-system-encounter.ts @@ -582,7 +582,13 @@ function doPokemonTradeSequence(scene: BattleScene, tradedPokemon: PlayerPokemon receivedPokemonTintSprite.setTintFill(getPokeballTintColor(receivedPokemon.pokeball)); [ tradedPokemonSprite, tradedPokemonTintSprite ].map(sprite => { - sprite.play(tradedPokemon.getSpriteKey(true)); + const spriteKey = tradedPokemon.getSpriteKey(true); + try { + sprite.play(spriteKey); + } catch (err: unknown) { + console.error(`Failed to play animation for ${spriteKey}`, err); + } + sprite.setPipeline(scene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], hasShadow: false, teraColor: getTypeRgb(tradedPokemon.getTeraType()) }); sprite.setPipelineData("ignoreTimeTint", true); sprite.setPipelineData("spriteKey", tradedPokemon.getSpriteKey()); @@ -597,7 +603,13 @@ function doPokemonTradeSequence(scene: BattleScene, tradedPokemon: PlayerPokemon }); [ receivedPokemonSprite, receivedPokemonTintSprite ].map(sprite => { - sprite.play(receivedPokemon.getSpriteKey(true)); + const spriteKey = receivedPokemon.getSpriteKey(true); + try { + sprite.play(spriteKey); + } catch (err: unknown) { + console.error(`Failed to play animation for ${spriteKey}`, err); + } + sprite.setPipeline(scene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], hasShadow: false, teraColor: getTypeRgb(tradedPokemon.getTeraType()) }); sprite.setPipelineData("ignoreTimeTint", true); sprite.setPipelineData("spriteKey", receivedPokemon.getSpriteKey()); diff --git a/src/data/mystery-encounters/utils/encounter-transformation-sequence.ts b/src/data/mystery-encounters/utils/encounter-transformation-sequence.ts index fcadb101817..424ba15f811 100644 --- a/src/data/mystery-encounters/utils/encounter-transformation-sequence.ts +++ b/src/data/mystery-encounters/utils/encounter-transformation-sequence.ts @@ -54,7 +54,13 @@ export function doPokemonTransformationSequence(scene: BattleScene, previousPoke pokemonEvoTintSprite.setTintFill(0xFFFFFF); [ pokemonSprite, pokemonTintSprite, pokemonEvoSprite, pokemonEvoTintSprite ].map(sprite => { - sprite.play(previousPokemon.getSpriteKey(true)); + const spriteKey = previousPokemon.getSpriteKey(true); + try { + sprite.play(spriteKey); + } catch (err: unknown) { + console.error(`Failed to play animation for ${spriteKey}`, err); + } + sprite.setPipeline(scene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], hasShadow: false, teraColor: getTypeRgb(previousPokemon.getTeraType()) }); sprite.setPipelineData("ignoreTimeTint", true); sprite.setPipelineData("spriteKey", previousPokemon.getSpriteKey()); @@ -69,7 +75,13 @@ export function doPokemonTransformationSequence(scene: BattleScene, previousPoke }); [ pokemonEvoSprite, pokemonEvoTintSprite ].map(sprite => { - sprite.play(transformPokemon.getSpriteKey(true)); + const spriteKey = transformPokemon.getSpriteKey(true); + try { + sprite.play(spriteKey); + } catch (err: unknown) { + console.error(`Failed to play animation for ${spriteKey}`, err); + } + sprite.setPipelineData("ignoreTimeTint", true); sprite.setPipelineData("spriteKey", transformPokemon.getSpriteKey()); sprite.setPipelineData("shiny", transformPokemon.shiny); diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index c22c755fc6e..6aa4bd46a68 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -3741,8 +3741,16 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { setFrameRate(frameRate: integer) { this.scene.anims.get(this.getBattleSpriteKey()).frameRate = frameRate; - this.getSprite().play(this.getBattleSpriteKey()); - this.getTintSprite()?.play(this.getBattleSpriteKey()); + try { + this.getSprite().play(this.getBattleSpriteKey()); + } catch (err: unknown) { + console.error(`Failed to play animation for ${this.getBattleSpriteKey()}`, err); + } + try { + this.getTintSprite()?.play(this.getBattleSpriteKey()); + } catch (err: unknown) { + console.error(`Failed to play animation for ${this.getBattleSpriteKey()}`, err); + } } tint(color: number, alpha?: number, duration?: integer, ease?: string) { diff --git a/src/phases/egg-hatch-phase.ts b/src/phases/egg-hatch-phase.ts index d45c580228c..803fd478fd4 100644 --- a/src/phases/egg-hatch-phase.ts +++ b/src/phases/egg-hatch-phase.ts @@ -330,7 +330,12 @@ export class EggHatchPhase extends Phase { this.scene.validateAchv(achvs.HATCH_SHINY); } this.eggContainer.setVisible(false); - this.pokemonSprite.play(this.pokemon.getSpriteKey(true)); + const spriteKey = this.pokemon.getSpriteKey(true); + try { + this.pokemonSprite.play(spriteKey); + } catch (err: unknown) { + console.error(`Failed to play animation for ${spriteKey}`, err); + } this.pokemonSprite.setPipelineData("ignoreTimeTint", true); this.pokemonSprite.setPipelineData("spriteKey", this.pokemon.getSpriteKey()); this.pokemonSprite.setPipelineData("shiny", this.pokemon.shiny); diff --git a/src/phases/evolution-phase.ts b/src/phases/evolution-phase.ts index 36bd3b7bd81..76e521c9b3d 100644 --- a/src/phases/evolution-phase.ts +++ b/src/phases/evolution-phase.ts @@ -105,7 +105,13 @@ export class EvolutionPhase extends Phase { this.scene.ui.add(this.evolutionOverlay); [ this.pokemonSprite, this.pokemonTintSprite, this.pokemonEvoSprite, this.pokemonEvoTintSprite ].map(sprite => { - sprite.play(this.pokemon.getSpriteKey(true)); + const spriteKey = this.pokemon.getSpriteKey(true); + try { + sprite.play(spriteKey); + } catch (err: unknown) { + console.error(`Failed to play animation for ${spriteKey}`, err); + } + sprite.setPipeline(this.scene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], hasShadow: false, teraColor: getTypeRgb(this.pokemon.getTeraType()) }); sprite.setPipelineData("ignoreTimeTint", true); sprite.setPipelineData("spriteKey", this.pokemon.getSpriteKey()); @@ -130,7 +136,13 @@ export class EvolutionPhase extends Phase { this.pokemon.getPossibleEvolution(this.evolution).then(evolvedPokemon => { [ this.pokemonEvoSprite, this.pokemonEvoTintSprite ].map(sprite => { - sprite.play(evolvedPokemon.getSpriteKey(true)); + const spriteKey = evolvedPokemon.getSpriteKey(true); + try { + sprite.play(spriteKey); + } catch (err: unknown) { + console.error(`Failed to play animation for ${spriteKey}`, err); + } + sprite.setPipelineData("ignoreTimeTint", true); sprite.setPipelineData("spriteKey", evolvedPokemon.getSpriteKey()); sprite.setPipelineData("shiny", evolvedPokemon.shiny); diff --git a/src/phases/form-change-phase.ts b/src/phases/form-change-phase.ts index 410163a70e4..b042cd98294 100644 --- a/src/phases/form-change-phase.ts +++ b/src/phases/form-change-phase.ts @@ -39,7 +39,13 @@ export class FormChangePhase extends EvolutionPhase { this.pokemon.getPossibleForm(this.formChange).then(transformedPokemon => { [ this.pokemonEvoSprite, this.pokemonEvoTintSprite ].map(sprite => { - sprite.play(transformedPokemon.getSpriteKey(true)); + const spriteKey = transformedPokemon.getSpriteKey(true); + try { + sprite.play(spriteKey); + } catch (err: unknown) { + console.error(`Failed to play animation for ${spriteKey}`, err); + } + sprite.setPipelineData("ignoreTimeTint", true); sprite.setPipelineData("spriteKey", transformedPokemon.getSpriteKey()); sprite.setPipelineData("shiny", transformedPokemon.shiny); diff --git a/src/phases/quiet-form-change-phase.ts b/src/phases/quiet-form-change-phase.ts index 6c84c0d1a8a..c9e5bec845d 100644 --- a/src/phases/quiet-form-change-phase.ts +++ b/src/phases/quiet-form-change-phase.ts @@ -43,7 +43,12 @@ export class QuietFormChangePhase extends BattlePhase { const getPokemonSprite = () => { const sprite = this.scene.addPokemonSprite(this.pokemon, this.pokemon.x + this.pokemon.getSprite().x, this.pokemon.y + this.pokemon.getSprite().y, "pkmn__sub"); sprite.setOrigin(0.5, 1); - sprite.play(this.pokemon.getBattleSpriteKey()).stop(); + const spriteKey = this.pokemon.getBattleSpriteKey(); + try { + sprite.play(spriteKey).stop(); + } catch (err: unknown) { + console.error(`Failed to play animation for ${spriteKey}`, err); + } sprite.setPipeline(this.scene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], hasShadow: false, teraColor: getTypeRgb(this.pokemon.getTeraType()) }); [ "spriteColors", "fusionSpriteColors" ].map(k => { if (this.pokemon.summonData?.speciesForm) { @@ -81,7 +86,12 @@ export class QuietFormChangePhase extends BattlePhase { this.pokemon.setVisible(false); this.pokemon.changeForm(this.formChange).then(() => { pokemonFormTintSprite.setScale(0.01); - pokemonFormTintSprite.play(this.pokemon.getBattleSpriteKey()).stop(); + const spriteKey = this.pokemon.getBattleSpriteKey(); + try { + pokemonFormTintSprite.play(spriteKey).stop(); + } catch (err: unknown) { + console.error(`Failed to play animation for ${spriteKey}`, err); + } pokemonFormTintSprite.setVisible(true); this.scene.tweens.add({ targets: pokemonTintSprite, diff --git a/src/ui/summary-ui-handler.ts b/src/ui/summary-ui-handler.ts index 2e05f3de4c1..63ef6155fbc 100644 --- a/src/ui/summary-ui-handler.ts +++ b/src/ui/summary-ui-handler.ts @@ -321,8 +321,12 @@ export default class SummaryUiHandler extends UiHandler { this.numberText.setText(Utils.padInt(this.pokemon.species.speciesId, 4)); this.numberText.setColor(this.getTextColor(!this.pokemon.isShiny() ? TextStyle.SUMMARY : TextStyle.SUMMARY_GOLD)); this.numberText.setShadowColor(this.getTextColor(!this.pokemon.isShiny() ? TextStyle.SUMMARY : TextStyle.SUMMARY_GOLD, true)); - - this.pokemonSprite.play(this.pokemon.getSpriteKey(true)); + const spriteKey = this.pokemon.getSpriteKey(true); + try { + this.pokemonSprite.play(spriteKey); + } catch (err: unknown) { + console.error(`Failed to play animation for ${spriteKey}`, err); + } this.pokemonSprite.setPipelineData("teraColor", getTypeRgb(this.pokemon.getTeraType())); this.pokemonSprite.setPipelineData("ignoreTimeTint", true); this.pokemonSprite.setPipelineData("spriteKey", this.pokemon.getSpriteKey()); From 2b59a532856abe6490902158990f5a099984082a Mon Sep 17 00:00:00 2001 From: Mumble <171087428+frutescens@users.noreply.github.com> Date: Sun, 1 Dec 2024 10:48:43 -0800 Subject: [PATCH 036/119] [Bug][UI] Fixes to Run History Logging (#4716) * new function * weak attempt of documentation * mysterious chest handled...? maybe. * override comments * one more instruction * fixing up the logging lol * lah * fixing it up * coommrent * lalal * run info fixes * Addressed PigeonBar's comments * Centered run info text + fixed trainer sprites. * Fixed function name. * Update tsdoc in `overrides.ts` Co-authored-by: Moka <54149968+MokaStitcher@users.noreply.github.com> * Fix tsdoc comment * sligthly rewrite centering of biome and wave text in run info --------- Co-authored-by: frutescens Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> Co-authored-by: Moka <54149968+MokaStitcher@users.noreply.github.com> Co-authored-by: Moka --- .../encounters/mysterious-chest-encounter.ts | 1 + .../utils/encounter-pokemon-utils.ts | 5 ++- src/overrides.ts | 6 ++- src/phases/game-over-phase.ts | 44 +++++++++++++++++-- src/ui/run-info-ui-handler.ts | 25 +++++++---- 5 files changed, 68 insertions(+), 13 deletions(-) diff --git a/src/data/mystery-encounters/encounters/mysterious-chest-encounter.ts b/src/data/mystery-encounters/encounters/mysterious-chest-encounter.ts index ab6517e97af..877deee66b7 100644 --- a/src/data/mystery-encounters/encounters/mysterious-chest-encounter.ts +++ b/src/data/mystery-encounters/encounters/mysterious-chest-encounter.ts @@ -34,6 +34,7 @@ export const MysteriousChestEncounter: MysteryEncounter = MysteryEncounterBuilder.withEncounterType(MysteryEncounterType.MYSTERIOUS_CHEST) .withEncounterTier(MysteryEncounterTier.COMMON) .withSceneWaveRangeRequirement(...CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES) + .withScenePartySizeRequirement(2, 6, true) .withAutoHideIntroVisuals(false) .withCatchAllowed(true) .withIntroSpriteConfigs([ diff --git a/src/data/mystery-encounters/utils/encounter-pokemon-utils.ts b/src/data/mystery-encounters/utils/encounter-pokemon-utils.ts index 7adcfdc4974..072b5e5b160 100644 --- a/src/data/mystery-encounters/utils/encounter-pokemon-utils.ts +++ b/src/data/mystery-encounters/utils/encounter-pokemon-utils.ts @@ -290,7 +290,10 @@ export function applyDamageToPokemon(scene: BattleScene, pokemon: PlayerPokemon, if (damage <= 0) { console.warn("Healing pokemon with `applyDamageToPokemon` is not recommended! Please use `applyHealToPokemon` instead."); } - + // If a Pokemon would faint from the damage applied, its HP is instead set to 1. + if (pokemon.isAllowedInBattle() && pokemon.hp - damage <= 0) { + damage = pokemon.hp - 1; + } applyHpChangeToPokemon(scene, pokemon, -damage); } diff --git a/src/overrides.ts b/src/overrides.ts index dc166307314..85be47d95cc 100644 --- a/src/overrides.ts +++ b/src/overrides.ts @@ -177,7 +177,11 @@ class DefaultOverrides { // MYSTERY ENCOUNTER OVERRIDES // ------------------------- - /** 1 to 256, set to null to ignore */ + /** + * `1` (almost never) to `256` (always), set to `null` to disable the override + * + * Note: Make sure `STARTING_WAVE_OVERRIDE > 10`, otherwise MEs won't trigger + */ readonly MYSTERY_ENCOUNTER_RATE_OVERRIDE: number | null = null; readonly MYSTERY_ENCOUNTER_TIER_OVERRIDE: MysteryEncounterTier | null = null; readonly MYSTERY_ENCOUNTER_OVERRIDE: MysteryEncounterType | null = null; diff --git a/src/phases/game-over-phase.ts b/src/phases/game-over-phase.ts index 84a4a4e8ef9..52d0996b946 100644 --- a/src/phases/game-over-phase.ts +++ b/src/phases/game-over-phase.ts @@ -23,6 +23,12 @@ import * as Utils from "#app/utils"; import { PlayerGender } from "#enums/player-gender"; import { TrainerType } from "#enums/trainer-type"; import i18next from "i18next"; +import { SessionSaveData } from "#app/system/game-data"; +import PersistentModifierData from "#app/system/modifier-data"; +import PokemonData from "#app/system/pokemon-data"; +import ChallengeData from "#app/system/challenge-data"; +import TrainerData from "#app/system/trainer-data"; +import ArenaData from "#app/system/arena-data"; import { pokerogueApi } from "#app/plugins/api/pokerogue-api"; export class GameOverPhase extends BattlePhase { @@ -109,7 +115,7 @@ export class GameOverPhase extends BattlePhase { this.scene.gameData.gameStats.dailyRunSessionsWon++; } } - this.scene.gameData.saveRunHistory(this.scene, this.scene.gameData.getSessionSaveData(this.scene), this.isVictory); + const fadeDuration = this.isVictory ? 10000 : 5000; this.scene.fadeOutBgm(fadeDuration, true); const activeBattlers = this.scene.getField().filter(p => p?.isActive(true)); @@ -135,8 +141,11 @@ export class GameOverPhase extends BattlePhase { this.scene.unshiftPhase(new GameOverModifierRewardPhase(this.scene, modifierTypes.VOUCHER_PREMIUM)); } } - this.scene.pushPhase(new PostGameOverPhase(this.scene, endCardPhase)); - this.end(); + this.getRunHistoryEntry().then(runHistoryEntry => { + this.scene.gameData.saveRunHistory(this.scene, runHistoryEntry, this.isVictory); + this.scene.pushPhase(new PostGameOverPhase(this.scene, endCardPhase)); + this.end(); + }); }; if (this.isVictory && this.scene.gameMode.isClassic) { @@ -212,5 +221,34 @@ export class GameOverPhase extends BattlePhase { this.firstRibbons.push(getPokemonSpecies(pokemon.species.getRootSpeciesId(forStarter))); } } + + /** + * Slightly modified version of {@linkcode GameData.getSessionSaveData}. + * @returns A promise containing the {@linkcode SessionSaveData} + */ + private async getRunHistoryEntry(): Promise { + const preWaveSessionData = await this.scene.gameData.getSession(this.scene.sessionSlotId); + return { + seed: this.scene.seed, + playTime: this.scene.sessionPlayTime, + gameMode: this.scene.gameMode.modeId, + party: this.scene.getPlayerParty().map(p => new PokemonData(p)), + enemyParty: this.scene.getEnemyParty().map(p => new PokemonData(p)), + modifiers: preWaveSessionData ? preWaveSessionData.modifiers : this.scene.findModifiers(() => true).map(m => new PersistentModifierData(m, true)), + enemyModifiers: preWaveSessionData ? preWaveSessionData.enemyModifiers : this.scene.findModifiers(() => true, false).map(m => new PersistentModifierData(m, false)), + arena: new ArenaData(this.scene.arena), + pokeballCounts: this.scene.pokeballCounts, + money: Math.floor(this.scene.money), + score: this.scene.score, + waveIndex: this.scene.currentBattle.waveIndex, + battleType: this.scene.currentBattle.battleType, + trainer: this.scene.currentBattle.trainer ? new TrainerData(this.scene.currentBattle.trainer) : null, + gameVersion: this.scene.game.config.gameVersion, + timestamp: new Date().getTime(), + challenges: this.scene.gameMode.challenges.map(c => new ChallengeData(c)), + mysteryEncounterType: this.scene.currentBattle.mysteryEncounter?.encounterType ?? -1, + mysteryEncounterSaveData: this.scene.mysteryEncounterSaveData + } as SessionSaveData; + } } diff --git a/src/ui/run-info-ui-handler.ts b/src/ui/run-info-ui-handler.ts index ace9d956dd9..071690aee54 100644 --- a/src/ui/run-info-ui-handler.ts +++ b/src/ui/run-info-ui-handler.ts @@ -118,6 +118,7 @@ export default class RunInfoUiHandler extends UiHandler { this.runResultContainer = this.scene.add.container(0, 24); const runResultWindow = addWindow(this.scene, 0, 0, this.statsBgWidth - 11, 65); runResultWindow.setOrigin(0, 0); + runResultWindow.setName("Run_Result_Window"); this.runResultContainer.add(runResultWindow); if (this.runDisplayMode === RunDisplayMode.RUN_HISTORY) { this.parseRunResult(); @@ -254,8 +255,6 @@ export default class RunInfoUiHandler extends UiHandler { * Mystery Encounters contain sprites associated with MEs + the title of the specific ME. */ private parseRunStatus() { - const runStatusText = addTextObject(this.scene, 6, 5, `${i18next.t("saveSlotSelectUiHandler:wave")} ${this.runInfo.waveIndex} - ${getBiomeName(this.runInfo.arena.biome)}`, TextStyle.WINDOW, { fontSize : "65px", lineSpacing: 0.1 }); - const enemyContainer = this.scene.add.container(0, 0); this.runResultContainer.add(enemyContainer); if (this.runInfo.battleType === BattleType.WILD) { @@ -271,7 +270,7 @@ export default class RunInfoUiHandler extends UiHandler { const pokeball = this.scene.add.sprite(0, 0, "pb"); pokeball.setFrame(getPokeballAtlasKey(p.pokeball)); pokeball.setScale(0.5); - pokeball.setPosition(52 + ((i % row_limit) * 8), (i <= 2) ? 18 : 25); + pokeball.setPosition(58 + ((i % row_limit) * 8), (i <= 2) ? 18 : 25); enemyContainer.add(pokeball); }); const trainerObj = this.runInfo.trainer.toTrainer(this.scene); @@ -286,7 +285,7 @@ export default class RunInfoUiHandler extends UiHandler { const descContainer = this.scene.add.container(0, 0); const textBox = addTextObject(this.scene, 0, 0, boxString, TextStyle.WINDOW, { fontSize : "35px", wordWrap: { width: 200 }}); descContainer.add(textBox); - descContainer.setPosition(52, 29); + descContainer.setPosition(55, 32); this.runResultContainer.add(descContainer); } else if (this.runInfo.battleType === BattleType.MYSTERY_ENCOUNTER) { const encounterExclaim = this.scene.add.sprite(0, 0, "encounter_exclaim"); @@ -303,7 +302,17 @@ export default class RunInfoUiHandler extends UiHandler { this.runResultContainer.add([ encounterExclaim, subSprite, descContainer ]); } - this.runResultContainer.add(runStatusText); + const runResultWindow = this.runResultContainer.getByName("Run_Result_Window") as Phaser.GameObjects.Image; + const windowCenterX = runResultWindow.getTopCenter().x; + const windowBottomY = runResultWindow.getBottomCenter().y; + + const runStatusText = addTextObject(this.scene, windowCenterX, 5, `${i18next.t("saveSlotSelectUiHandler:wave")} ${this.runInfo.waveIndex}`, TextStyle.WINDOW, { fontSize : "60px", lineSpacing: 0.1 }); + runStatusText.setOrigin(0.5, 0); + + const currentBiomeText = addTextObject(this.scene, windowCenterX, windowBottomY - 5, `${getBiomeName(this.runInfo.arena.biome)}`, TextStyle.WINDOW, { fontSize: "60px" }); + currentBiomeText.setOrigin(0.5, 1); + + this.runResultContainer.add([ runStatusText, currentBiomeText ]); this.runContainer.add(this.runResultContainer); } @@ -387,12 +396,12 @@ export default class RunInfoUiHandler extends UiHandler { tObjSprite.setPosition(-9, -3); tObjPartnerSprite.setScale(0.55); doubleContainer.add([ tObjSprite, tObjPartnerSprite ]); - doubleContainer.setPosition(28, 40); + doubleContainer.setPosition(28, 34); } enemyContainer.add(doubleContainer); } else { - const scale = (this.runDisplayMode === RunDisplayMode.RUN_HISTORY) ? 0.35 : 0.65; - const position = (this.runDisplayMode === RunDisplayMode.RUN_HISTORY) ? [ 12, 28 ] : [ 32, 36 ]; + const scale = (this.runDisplayMode === RunDisplayMode.RUN_HISTORY) ? 0.35 : 0.55; + const position = (this.runDisplayMode === RunDisplayMode.RUN_HISTORY) ? [ 12, 28 ] : [ 30, 32 ]; tObjSprite.setScale(scale, scale); tObjSprite.setPosition(position[0], position[1]); enemyContainer.add(tObjSprite); From 282b0c82154e11b6f8bc9e67559e4f7a2eec9b95 Mon Sep 17 00:00:00 2001 From: Mumble <171087428+frutescens@users.noreply.github.com> Date: Sun, 1 Dec 2024 14:24:16 -0800 Subject: [PATCH 037/119] Added features to prevent test flakiness. (#4959) Co-authored-by: frutescens --- src/test/abilities/serene_grace.test.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/test/abilities/serene_grace.test.ts b/src/test/abilities/serene_grace.test.ts index a19b5c82546..6f9b2195a9c 100644 --- a/src/test/abilities/serene_grace.test.ts +++ b/src/test/abilities/serene_grace.test.ts @@ -25,10 +25,13 @@ describe("Abilities - Serene Grace", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override + .disableCrits() .battleType("single") .ability(Abilities.SERENE_GRACE) - .moveset([ Moves.AIR_SLASH, Moves.TACKLE ]) + .moveset([ Moves.AIR_SLASH ]) + .enemySpecies(Species.ALOLA_GEODUDE) .enemyLevel(10) + .enemyAbility(Abilities.BALL_FETCH) .enemyMoveset([ Moves.SPLASH ]); }); From 0556e1ad50e4c1b606242561e71861cdf7452748 Mon Sep 17 00:00:00 2001 From: "Amani H." <109637146+xsn34kzx@users.noreply.github.com> Date: Sun, 1 Dec 2024 17:24:47 -0500 Subject: [PATCH 038/119] [Balance] Adjust Flame/Toxic Orb Weight Functions (#4954) * [Balance] Adjust Flame/Toxic Orb Weight Functions * Adjust Booleans * Add Documentation * Implement More Granularity * Minor `if` Change --- src/field/pokemon.ts | 15 +++++++-- src/modifier/modifier-type.ts | 62 ++++++++++++++++++++++++++++------- 2 files changed, 63 insertions(+), 14 deletions(-) diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index 6aa4bd46a68..accd39e1f94 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -3501,12 +3501,21 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { return this.gender !== Gender.GENDERLESS && pokemon.gender === (this.gender === Gender.MALE ? Gender.FEMALE : Gender.MALE); } - canSetStatus(effect: StatusEffect | undefined, quiet: boolean = false, overrideStatus: boolean = false, sourcePokemon: Pokemon | null = null): boolean { + /** + * Checks if a status effect can be applied to the Pokemon. + * + * @param effect The {@linkcode StatusEffect} whose applicability is being checked + * @param quiet Whether in-battle messages should trigger or not + * @param overrideStatus Whether the Pokemon's current status can be overriden + * @param sourcePokemon The Pokemon that is setting the status effect + * @param ignoreField Whether any field effects (weather, terrain, etc.) should be considered + */ + canSetStatus(effect: StatusEffect | undefined, quiet: boolean = false, overrideStatus: boolean = false, sourcePokemon: Pokemon | null = null, ignoreField: boolean = false): boolean { if (effect !== StatusEffect.FAINT) { if (overrideStatus ? this.status?.effect === effect : this.status) { return false; } - if (this.isGrounded() && this.scene.arena.terrain?.terrainType === TerrainType.MISTY) { + if (this.isGrounded() && (!ignoreField && this.scene.arena.terrain?.terrainType === TerrainType.MISTY)) { return false; } } @@ -3556,7 +3565,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } break; case StatusEffect.FREEZE: - if (this.isOfType(Type.ICE) || (this.scene?.arena?.weather?.weatherType && [ WeatherType.SUNNY, WeatherType.HARSH_SUN ].includes(this.scene.arena.weather.weatherType))) { + if (this.isOfType(Type.ICE) || (!ignoreField && (this.scene?.arena?.weather?.weatherType && [ WeatherType.SUNNY, WeatherType.HARSH_SUN ].includes(this.scene.arena.weather.weatherType)))) { return false; } break; diff --git a/src/modifier/modifier-type.ts b/src/modifier/modifier-type.ts index 04776afc624..57b3ced1813 100644 --- a/src/modifier/modifier-type.ts +++ b/src/modifier/modifier-type.ts @@ -1751,19 +1751,59 @@ const modifierPool: ModifierPool = { || (p.isFusion() && checkedSpecies.includes(p.getFusionSpeciesForm(true).speciesId)))) ? 12 : 0; }, 12), new WeightedModifierType(modifierTypes.TOXIC_ORB, (party: Pokemon[]) => { - const checkedAbilities = [ Abilities.QUICK_FEET, Abilities.GUTS, Abilities.MARVEL_SCALE, Abilities.TOXIC_BOOST, Abilities.POISON_HEAL, Abilities.MAGIC_GUARD ]; - const checkedMoves = [ Moves.FACADE, Moves.TRICK, Moves.FLING, Moves.SWITCHEROO, Moves.PSYCHO_SHIFT ]; - // If a party member doesn't already have one of these two orbs and has one of the above moves or abilities, the orb can appear - return party.some(p => !p.getHeldItems().some(i => i instanceof TurnStatusEffectModifier) - && (checkedAbilities.some(a => p.hasAbility(a, false, true)) - || p.getMoveset(true).some(m => m && checkedMoves.includes(m.moveId)))) ? 10 : 0; + return party.some(p => { + const moveset = p.getMoveset(true).filter(m => !isNullOrUndefined(m)).map(m => m.moveId); + + const canSetStatus = p.canSetStatus(StatusEffect.TOXIC, true, true, null, true); + const isHoldingOrb = p.getHeldItems().some(i => i.type.id === "FLAME_ORB" || i.type.id === "TOXIC_ORB"); + + // Moves that take advantage of obtaining the actual status effect + const hasStatusMoves = [ Moves.FACADE, Moves.PSYCHO_SHIFT ] + .some(m => moveset.includes(m)); + // Moves that take advantage of being able to give the target a status orb + // TODO: Take moves from comment they are implemented + const hasItemMoves = [ /* Moves.TRICK, Moves.FLING, Moves.SWITCHEROO */ ] + .some(m => moveset.includes(m)); + // Abilities that take advantage of obtaining the actual status effect + const hasRelevantAbilities = [ Abilities.QUICK_FEET, Abilities.GUTS, Abilities.MARVEL_SCALE, Abilities.TOXIC_BOOST, Abilities.POISON_HEAL, Abilities.MAGIC_GUARD ] + .some(a => p.hasAbility(a, false, true)); + + if (!isHoldingOrb) { + if (canSetStatus) { + return hasRelevantAbilities || hasStatusMoves; + } else { + return hasItemMoves; + } + } + return false; + }) ? 10 : 0; }, 10), new WeightedModifierType(modifierTypes.FLAME_ORB, (party: Pokemon[]) => { - const checkedAbilities = [ Abilities.QUICK_FEET, Abilities.GUTS, Abilities.MARVEL_SCALE, Abilities.FLARE_BOOST, Abilities.MAGIC_GUARD ]; - const checkedMoves = [ Moves.FACADE, Moves.TRICK, Moves.FLING, Moves.SWITCHEROO, Moves.PSYCHO_SHIFT ]; - // If a party member doesn't already have one of these two orbs and has one of the above moves or abilities, the orb can appear - return party.some(p => !p.getHeldItems().some(i => i instanceof TurnStatusEffectModifier) - && (checkedAbilities.some(a => p.hasAbility(a, false, true)) || p.getMoveset(true).some(m => m && checkedMoves.includes(m.moveId)))) ? 10 : 0; + return party.some(p => { + const moveset = p.getMoveset(true).filter(m => !isNullOrUndefined(m)).map(m => m.moveId); + const canSetStatus = p.canSetStatus(StatusEffect.BURN, true, true, null, true); + const isHoldingOrb = p.getHeldItems().some(i => i.type.id === "FLAME_ORB" || i.type.id === "TOXIC_ORB"); + + // Moves that take advantage of obtaining the actual status effect + const hasStatusMoves = [ Moves.FACADE, Moves.PSYCHO_SHIFT ] + .some(m => moveset.includes(m)); + // Moves that take advantage of being able to give the target a status orb + // TODO: Take moves from comment they are implemented + const hasItemMoves = [ /* Moves.TRICK, Moves.FLING, Moves.SWITCHEROO */ ] + .some(m => moveset.includes(m)); + // Abilities that take advantage of obtaining the actual status effect + const hasRelevantAbilities = [ Abilities.QUICK_FEET, Abilities.GUTS, Abilities.MARVEL_SCALE, Abilities.FLARE_BOOST, Abilities.MAGIC_GUARD ] + .some(a => p.hasAbility(a, false, true)); + + if (!isHoldingOrb) { + if (canSetStatus) { + return hasRelevantAbilities || hasStatusMoves; + } else { + return hasItemMoves; + } + } + return false; + }) ? 10 : 0; }, 10), new WeightedModifierType(modifierTypes.WHITE_HERB, (party: Pokemon[]) => { const checkedAbilities = [ Abilities.WEAK_ARMOR, Abilities.CONTRARY, Abilities.MOODY, Abilities.ANGER_SHELL, Abilities.COMPETITIVE, Abilities.DEFIANT ]; From 1607a694c3795148b7ad9b87765e645c584780c3 Mon Sep 17 00:00:00 2001 From: Bertie690 <136088738+Bertie690@users.noreply.github.com> Date: Sun, 1 Dec 2024 17:27:17 -0500 Subject: [PATCH 039/119] [Move] Partially Implement Instruct (#4857) Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> Co-authored-by: innerthunder <168692175+innerthunder@users.noreply.github.com> Co-authored-by: Jannik Tappert <38758606+CodeTappert@users.noreply.github.com> --- src/battle-scene.ts | 18 ++ src/data/move.ts | 123 ++++++++++- src/field/pokemon.ts | 6 + src/phases/move-effect-phase.ts | 10 +- src/test/moves/instruct.test.ts | 315 +++++++++++++++++++++++++++ src/test/utils/helpers/moveHelper.ts | 19 ++ 6 files changed, 489 insertions(+), 2 deletions(-) create mode 100644 src/test/moves/instruct.test.ts diff --git a/src/battle-scene.ts b/src/battle-scene.ts index f5e3a714df6..c430a12ae3e 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -2469,6 +2469,24 @@ export default class BattleScene extends SceneBase { } } + /** + * Tries to add the input phase to index after target phase in the {@linkcode phaseQueue}, else simply calls {@linkcode unshiftPhase()} + * @param phase {@linkcode Phase} the phase to be added + * @param targetPhase {@linkcode Phase} the type of phase to search for in {@linkcode phaseQueue} + * @returns `true` if a `targetPhase` was found to append to + */ + appendToPhase(phase: Phase, targetPhase: Constructor): boolean { + const targetIndex = this.phaseQueue.findIndex(ph => ph instanceof targetPhase); + + if (targetIndex !== -1 && this.phaseQueue.length > targetIndex) { + this.phaseQueue.splice(targetIndex + 1, 0, phase); + return true; + } else { + this.unshiftPhase(phase); + return false; + } + } + /** * Adds a MessagePhase, either to PhaseQueuePrepend or nextCommandPhaseQueue * @param message string for MessagePhase diff --git a/src/data/move.ts b/src/data/move.ts index 166058178f5..b4c519c5bcf 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -6728,6 +6728,126 @@ export class CopyMoveAttr extends OverrideMoveEffectAttr { } } +/** + * Attribute used for moves that causes the target to repeat their last used move. + * + * Used for [Instruct](https://bulbapedia.bulbagarden.net/wiki/Instruct_(move)). +*/ +export class RepeatMoveAttr extends MoveEffectAttr { + constructor() { + super(false, { trigger: MoveEffectTrigger.POST_APPLY }); // needed to ensure correct protect interaction + } + + /** + * Forces the target to re-use their last used move again + * + * @param user {@linkcode Pokemon} that used the attack + * @param target {@linkcode Pokemon} targeted by the attack + * @param move N/A + * @param args N/A + * @returns `true` if the move succeeds + */ + apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { + // get the last move used (excluding status based failures) as well as the corresponding moveset slot + const lastMove = target.getLastXMoves(-1).find(m => m.move !== Moves.NONE)!; + const movesetMove = target.getMoveset().find(m => m?.moveId === lastMove.move)!; + const moveTargets = lastMove.targets ?? []; + + user.scene.queueMessage(i18next.t("moveTriggers:instructingMove", { + userPokemonName: getPokemonNameWithAffix(user), + targetPokemonName: getPokemonNameWithAffix(target) + })); + target.getMoveQueue().unshift({ move: lastMove.move, targets: moveTargets, ignorePP: false }); + target.turnData.extraTurns++; + target.scene.appendToPhase(new MovePhase(target.scene, target, moveTargets, movesetMove), MoveEndPhase); + return true; + } + + getCondition(): MoveConditionFunc { + return (user, target, move) => { + // TODO: Confirm behavior of instructing move known by target but called by another move + const lastMove = target.getLastXMoves(-1).find(m => m.move !== Moves.NONE); + const movesetMove = target.getMoveset().find(m => m?.moveId === lastMove?.move); + const moveTargets = lastMove?.targets ?? []; + // TODO: Add a way of adding moves to list procedurally rather than a pre-defined blacklist + const unrepeatablemoves = [ + // Locking/Continually Executed moves + Moves.OUTRAGE, + Moves.RAGING_FURY, + Moves.ROLLOUT, + Moves.PETAL_DANCE, + Moves.THRASH, + Moves.ICE_BALL, + // Multi-turn Moves + Moves.BIDE, + Moves.SHELL_TRAP, + Moves.BEAK_BLAST, + Moves.FOCUS_PUNCH, + // "First Turn Only" moves + Moves.FAKE_OUT, + Moves.FIRST_IMPRESSION, + Moves.MAT_BLOCK, + // Moves with a recharge turn + Moves.HYPER_BEAM, + Moves.ETERNABEAM, + Moves.FRENZY_PLANT, + Moves.BLAST_BURN, + Moves.HYDRO_CANNON, + Moves.GIGA_IMPACT, + Moves.PRISMATIC_LASER, + Moves.ROAR_OF_TIME, + Moves.ROCK_WRECKER, + Moves.METEOR_ASSAULT, + // Charging & 2-turn moves + Moves.DIG, + Moves.FLY, + Moves.BOUNCE, + Moves.SHADOW_FORCE, + Moves.PHANTOM_FORCE, + Moves.DIVE, + Moves.ELECTRO_SHOT, + Moves.ICE_BURN, + Moves.GEOMANCY, + Moves.FREEZE_SHOCK, + Moves.SKY_DROP, + Moves.SKY_ATTACK, + Moves.SKULL_BASH, + Moves.SOLAR_BEAM, + Moves.SOLAR_BLADE, + Moves.METEOR_BEAM, + // Other moves + Moves.INSTRUCT, + Moves.KINGS_SHIELD, + Moves.SKETCH, + Moves.TRANSFORM, + Moves.MIMIC, + Moves.STRUGGLE, + // TODO: Add Max/G-Move blockage if or when they are implemented + ]; + + if (!movesetMove // called move not in target's moveset (dancer, forgetting the move, etc.) + || movesetMove.ppUsed === movesetMove.getMovePp() // move out of pp + || allMoves[lastMove?.move ?? Moves.NONE].isChargingMove() // called move is a charging/recharging move + || !moveTargets.length // called move has no targets + || unrepeatablemoves.includes(lastMove?.move ?? Moves.NONE)) { // called move is explicitly in the banlist + return false; + } + return true; + }; + } + + getTargetBenefitScore(user: Pokemon, target: Pokemon, move: Move): integer { + // TODO: Make the AI acutally use instruct + /* Ideally, the AI would score instruct based on the scorings of the on-field pokemons' + * last used moves at the time of using Instruct (by the time the instructor gets to act) + * with respect to the user's side. + * In 99.9% of cases, this would be the pokemon's ally (unless the target had last + * used a move like Decorate on the user or its ally) + */ + return 2; + } +} + /** * Attribute used for moves that reduce PP of the target's last used move. * Used for Spite. @@ -9892,7 +10012,8 @@ export function initMoves() { .attr(StatStageChangeAttr, [ Stat.ATK ], -1), new StatusMove(Moves.INSTRUCT, Type.PSYCHIC, -1, 15, -1, 0, 7) .ignoresSubstitute() - .unimplemented(), + .attr(RepeatMoveAttr) + .edgeCase(), // incorrect interactions with Gigaton Hammer, Blood Moon & Torment new AttackMove(Moves.BEAK_BLAST, Type.FLYING, MoveCategory.PHYSICAL, 100, 100, 15, -1, -3, 7) .attr(BeakBlastHeaderAttr) .ballBombMove() diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index accd39e1f94..fcfc2ff7536 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -5294,6 +5294,7 @@ export class PokemonBattleSummonData { export class PokemonTurnData { public flinched: boolean = false; public acted: boolean = false; + /** How many times the move should hit the target(s) */ public hitCount: number = 0; /** * - `-1` = Calculate how many hits are left @@ -5312,6 +5313,11 @@ export class PokemonTurnData { public switchedInThisTurn: boolean = false; public failedRunAway: boolean = false; public joinedRound: boolean = false; + /** + * Used to make sure multi-hits occur properly when the user is + * forced to act again in the same turn + */ + public extraTurns: number = 0; } export enum AiType { diff --git a/src/phases/move-effect-phase.ts b/src/phases/move-effect-phase.ts index ea45dc2b9e2..96ded602b30 100644 --- a/src/phases/move-effect-phase.ts +++ b/src/phases/move-effect-phase.ts @@ -127,6 +127,14 @@ export class MoveEffectPhase extends PokemonPhase { user.lapseTags(BattlerTagLapseType.MOVE_EFFECT); + // If the user is acting again (such as due to Instruct), reset hitsLeft/hitCount so that + // the move executes correctly (ensures all hits of a multi-hit are properly calculated) + if (user.turnData.hitsLeft === 0 && user.turnData.hitCount > 0 && user.turnData.extraTurns > 0) { + user.turnData.hitsLeft = -1; + user.turnData.hitCount = 0; + user.turnData.extraTurns--; + } + /** * If this phase is for the first hit of the invoked move, * resolve the move's total hit count. This block combines the @@ -313,7 +321,7 @@ export class MoveEffectPhase extends PokemonPhase { } /** - * Create a Promise that applys *all* effects from the invoked move's MoveEffectAttrs. + * Create a Promise that applies *all* effects from the invoked move's MoveEffectAttrs. * These are ordered by trigger type (see {@linkcode MoveEffectTrigger}), and each trigger * type requires different conditions to be met with respect to the move's hit result. */ diff --git a/src/test/moves/instruct.test.ts b/src/test/moves/instruct.test.ts new file mode 100644 index 00000000000..0e227ef6a3f --- /dev/null +++ b/src/test/moves/instruct.test.ts @@ -0,0 +1,315 @@ +import { BattlerIndex } from "#app/battle"; +import type Pokemon from "#app/field/pokemon"; +import { MoveResult } from "#app/field/pokemon"; +import { Abilities } from "#enums/abilities"; +import { Moves } from "#enums/moves"; +import { Species } from "#enums/species"; +import GameManager from "#test/utils/gameManager"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; + +describe("Moves - Instruct", () => { + let phaserGame: Phaser.Game; + let game: GameManager; + + function instructSuccess(pokemon: Pokemon, move: Moves): void { + expect(pokemon.getLastXMoves(-1)[0].move).toBe(move); + expect(pokemon.getLastXMoves(-1)[1].move).toBe(pokemon.getLastXMoves()[0].move); + expect(pokemon.getMoveset().find(m => m?.moveId === move)?.ppUsed).toBe(2); + } + + beforeAll(() => { + phaserGame = new Phaser.Game({ + type: Phaser.HEADLESS, + }); + }); + + afterEach(() => { + game.phaseInterceptor.restoreOg(); + }); + + beforeEach(() => { + game = new GameManager(phaserGame); + game.override + .battleType("single") + .enemySpecies(Species.SHUCKLE) + .enemyAbility(Abilities.NO_GUARD) + .enemyLevel(100) + .startingLevel(100) + .ability(Abilities.BALL_FETCH) + .moveset([ Moves.INSTRUCT, Moves.SONIC_BOOM, Moves.SPLASH, Moves.TORMENT ]) + .disableCrits(); + }); + + it("should repeat enemy's attack move when moving last", async () => { + await game.classicMode.startBattle([ Species.AMOONGUSS ]); + + const enemy = game.scene.getEnemyPokemon()!; + game.move.changeMoveset(enemy, Moves.SONIC_BOOM); + + game.move.select(Moves.INSTRUCT, BattlerIndex.PLAYER, BattlerIndex.ENEMY); + await game.forceEnemyMove(Moves.SONIC_BOOM, BattlerIndex.PLAYER); + await game.setTurnOrder([ BattlerIndex.ENEMY, BattlerIndex.PLAYER ]); + await game.phaseInterceptor.to("TurnEndPhase", false); + + expect(game.scene.getPlayerPokemon()?.getInverseHp()).toBe(40); + instructSuccess(enemy, Moves.SONIC_BOOM); + }); + + it("should repeat enemy's move through substitute", async () => { + await game.classicMode.startBattle([ Species.AMOONGUSS ]); + + const enemy = game.scene.getEnemyPokemon()!; + game.move.changeMoveset(enemy, [ Moves.SONIC_BOOM, Moves.SUBSTITUTE ]); + + game.move.select(Moves.SPLASH); + await game.forceEnemyMove(Moves.SUBSTITUTE); + await game.setTurnOrder([ BattlerIndex.PLAYER, BattlerIndex.ENEMY ]); + await game.toNextTurn(); + + game.move.select(Moves.INSTRUCT); + await game.forceEnemyMove(Moves.SONIC_BOOM); + await game.setTurnOrder([ BattlerIndex.ENEMY, BattlerIndex.PLAYER ]); + await game.phaseInterceptor.to("TurnEndPhase", false); + + expect(game.scene.getPlayerPokemon()?.getInverseHp()).toBe(40); + instructSuccess(game.scene.getEnemyPokemon()!, Moves.SONIC_BOOM); + }); + + it("should repeat ally's attack on enemy", async () => { + game.override + .battleType("double") + .moveset([]); + await game.classicMode.startBattle([ Species.AMOONGUSS, Species.SHUCKLE ]); + + const [ amoonguss, shuckle ] = game.scene.getPlayerField(); + game.move.changeMoveset(amoonguss, Moves.INSTRUCT); + game.move.changeMoveset(shuckle, Moves.SONIC_BOOM); + + game.move.select(Moves.INSTRUCT, BattlerIndex.PLAYER, BattlerIndex.PLAYER_2); + game.move.select(Moves.SONIC_BOOM, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY); + await game.forceEnemyMove(Moves.SPLASH); + await game.forceEnemyMove(Moves.SPLASH); + await game.setTurnOrder([ BattlerIndex.PLAYER_2, BattlerIndex.PLAYER, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2 ]); + await game.phaseInterceptor.to("TurnEndPhase", false); + + expect(game.scene.getEnemyField()[0].getInverseHp()).toBe(40); + instructSuccess(shuckle, Moves.SONIC_BOOM); + }); + + // TODO: Enable test case once gigaton hammer (and blood moon) is fixed + it.todo("should repeat enemy's Gigaton Hammer", async () => { + game.override + .enemyLevel(5); + await game.classicMode.startBattle([ Species.AMOONGUSS ]); + + const enemy = game.scene.getEnemyPokemon()!; + game.move.changeMoveset(enemy, Moves.GIGATON_HAMMER); + + game.move.select(Moves.INSTRUCT); + await game.setTurnOrder([ BattlerIndex.ENEMY, BattlerIndex.PLAYER ]); + await game.phaseInterceptor.to("TurnEndPhase", false); + + instructSuccess(enemy, Moves.GIGATON_HAMMER); + }); + + it("should respect enemy's status condition", async () => { + game.override + .moveset([ Moves.THUNDER_WAVE, Moves.INSTRUCT ]) + .enemyMoveset([ Moves.SPLASH, Moves.SONIC_BOOM ]); + await game.classicMode.startBattle([ Species.AMOONGUSS ]); + + game.move.select(Moves.THUNDER_WAVE); + await game.forceEnemyMove(Moves.SONIC_BOOM); + await game.setTurnOrder([ BattlerIndex.ENEMY, BattlerIndex.PLAYER ]); + await game.toNextTurn(); + + game.move.select(Moves.INSTRUCT); + await game.forceEnemyMove(Moves.SPLASH); + await game.setTurnOrder([ BattlerIndex.ENEMY, BattlerIndex.PLAYER ]); + await game.move.forceStatusActivation(true); + await game.phaseInterceptor.to("MovePhase"); + await game.move.forceStatusActivation(false); + await game.phaseInterceptor.to("TurnEndPhase", false); + + const moveHistory = game.scene.getEnemyPokemon()!.getMoveHistory(); + expect(moveHistory.length).toBe(3); + expect(moveHistory[0].move).toBe(Moves.SONIC_BOOM); + expect(moveHistory[1].move).toBe(Moves.NONE); + expect(moveHistory[2].move).toBe(Moves.SONIC_BOOM); + }); + + it("should not repeat enemy's out of pp move", async () => { + game.override.enemySpecies(Species.UNOWN); + await game.classicMode.startBattle([ Species.AMOONGUSS ]); + + const enemyPokemon = game.scene.getEnemyPokemon()!; + game.move.changeMoveset(enemyPokemon, Moves.HIDDEN_POWER); + const moveUsed = enemyPokemon.moveset.find(m => m?.moveId === Moves.HIDDEN_POWER)!; + moveUsed.ppUsed = moveUsed.getMovePp() - 1; + + game.move.select(Moves.INSTRUCT); + await game.forceEnemyMove(Moves.HIDDEN_POWER); + await game.setTurnOrder([ BattlerIndex.ENEMY, BattlerIndex.PLAYER ]); + await game.phaseInterceptor.to("TurnEndPhase", false); + + const playerMove = game.scene.getPlayerPokemon()!.getLastXMoves()!; + expect(playerMove[0].result).toBe(MoveResult.FAIL); + expect(enemyPokemon.getMoveHistory().length).toBe(1); + }); + + it("should fail if no move has yet been used by target", async () => { + game.override.enemyMoveset(Moves.SPLASH); + await game.classicMode.startBattle([ Species.AMOONGUSS ]); + + game.move.select(Moves.INSTRUCT); + await game.forceEnemyMove(Moves.SPLASH); + await game.setTurnOrder([ BattlerIndex.PLAYER, BattlerIndex.ENEMY ]); + await game.phaseInterceptor.to("TurnEndPhase", false); + + expect(game.scene.getPlayerPokemon()!.getLastXMoves()[0].result).toBe(MoveResult.FAIL); + }); + + it("should attempt to call enemy's disabled move, but move use itself should fail", async () => { + game.override + .moveset([ Moves.INSTRUCT, Moves.DISABLE ]) + .battleType("double"); + await game.classicMode.startBattle([ Species.AMOONGUSS, Species.DROWZEE ]); + + const [ enemy1, enemy2 ] = game.scene.getEnemyField(); + game.move.changeMoveset(enemy1, Moves.SONIC_BOOM); + game.move.changeMoveset(enemy2, Moves.SPLASH); + + game.move.select(Moves.INSTRUCT, BattlerIndex.PLAYER, BattlerIndex.ENEMY); + game.move.select(Moves.DISABLE, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY); + await game.forceEnemyMove(Moves.SONIC_BOOM, BattlerIndex.PLAYER); + await game.forceEnemyMove(Moves.SPLASH); + await game.setTurnOrder([ BattlerIndex.ENEMY, BattlerIndex.PLAYER_2, BattlerIndex.PLAYER, BattlerIndex.ENEMY_2 ]); + await game.phaseInterceptor.to("TurnEndPhase", false); + + expect(game.scene.getPlayerField()[0].getLastXMoves()[0].result).toBe(MoveResult.SUCCESS); + const enemyMove = game.scene.getEnemyPokemon()!.getLastXMoves()[0]; + expect(enemyMove.result).toBe(MoveResult.FAIL); + expect(game.scene.getEnemyPokemon()!.getMoveset().find(m => m?.moveId === Moves.SONIC_BOOM)?.ppUsed).toBe(1); + + }); + + it("should not repeat enemy's move through protect", async () => { + await game.classicMode.startBattle([ Species.AMOONGUSS ]); + + const MoveToUse = Moves.PROTECT; + const enemyPokemon = game.scene.getEnemyPokemon()!; + game.move.changeMoveset(enemyPokemon, MoveToUse); + game.move.select(Moves.INSTRUCT); + await game.forceEnemyMove(Moves.PROTECT); + await game.setTurnOrder([ BattlerIndex.ENEMY, BattlerIndex.PLAYER ]); + await game.phaseInterceptor.to("TurnEndPhase", false); + + expect(enemyPokemon.getLastXMoves(-1)[0].move).toBe(Moves.PROTECT); + expect(enemyPokemon.getLastXMoves(-1)[1]).toBeUndefined(); // undefined because protect failed + expect(enemyPokemon.getMoveset().find(m => m?.moveId === Moves.PROTECT)?.ppUsed).toBe(1); + }); + + it("should not repeat enemy's charging move", async () => { + game.override + .enemyMoveset([ Moves.SONIC_BOOM, Moves.HYPER_BEAM ]) + .enemyLevel(5); + await game.classicMode.startBattle([ Species.SHUCKLE ]); + + const player = game.scene.getPlayerPokemon()!; + const enemyPokemon = game.scene.getEnemyPokemon()!; + enemyPokemon.battleSummonData.moveHistory = [{ move: Moves.SONIC_BOOM, targets: [ BattlerIndex.PLAYER ], result: MoveResult.SUCCESS, virtual: false }]; + + game.move.select(Moves.INSTRUCT); + await game.forceEnemyMove(Moves.HYPER_BEAM); + await game.setTurnOrder([ BattlerIndex.ENEMY, BattlerIndex.PLAYER ]); + await game.toNextTurn(); + + expect(player.getLastXMoves()[0].result).toBe(MoveResult.FAIL); + + game.move.select(Moves.INSTRUCT); + await game.setTurnOrder([ BattlerIndex.ENEMY, BattlerIndex.PLAYER ]); + await game.phaseInterceptor.to("TurnEndPhase", false); + + expect(player.getLastXMoves()[0].result).toBe(MoveResult.FAIL); + }); + + it("should not repeat dance move not known by target", async () => { + game.override + .battleType("double") + .moveset([ Moves.INSTRUCT, Moves.FIERY_DANCE ]) + .enemyMoveset(Moves.SPLASH) + .enemyAbility(Abilities.DANCER); + await game.classicMode.startBattle([ Species.SHUCKLE, Species.SHUCKLE ]); + + game.move.select(Moves.INSTRUCT, BattlerIndex.PLAYER, BattlerIndex.ENEMY); + game.move.select(Moves.FIERY_DANCE, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY); + await game.forceEnemyMove(Moves.SPLASH); + await game.forceEnemyMove(Moves.SPLASH); + await game.setTurnOrder([ BattlerIndex.PLAYER_2, BattlerIndex.PLAYER, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2 ]); + await game.phaseInterceptor.to("TurnEndPhase", false); + + expect(game.scene.getPlayerField()[0].getLastXMoves()[0].result).toBe(MoveResult.FAIL); + }); + + it("should cause multi-hit moves to hit the appropriate number of times in singles", async () => { + game.override + .enemyAbility(Abilities.SKILL_LINK) + .enemyMoveset(Moves.BULLET_SEED); + await game.classicMode.startBattle([ Species.BULBASAUR ]); + + const player = game.scene.getPlayerPokemon()!; + + game.move.select(Moves.SPLASH); + await game.toNextTurn(); + + game.move.select(Moves.INSTRUCT); + await game.setTurnOrder([ BattlerIndex.PLAYER, BattlerIndex.ENEMY ]); + await game.phaseInterceptor.to("BerryPhase"); + + expect(player.turnData.attacksReceived.length).toBe(10); + + await game.toNextTurn(); + game.move.select(Moves.INSTRUCT); + await game.setTurnOrder([ BattlerIndex.ENEMY, BattlerIndex.PLAYER ]); + await game.phaseInterceptor.to("BerryPhase"); + + expect(player.turnData.attacksReceived.length).toBe(10); + }); + + it("should cause multi-hit moves to hit the appropriate number of times in doubles", async () => { + game.override + .battleType("double") + .enemyAbility(Abilities.SKILL_LINK) + .enemyMoveset([ Moves.BULLET_SEED, Moves.SPLASH ]) + .enemyLevel(5); + await game.classicMode.startBattle([ Species.BULBASAUR, Species.IVYSAUR ]); + + const [ , ivysaur ] = game.scene.getPlayerField(); + + game.move.select(Moves.SPLASH); + game.move.select(Moves.SPLASH, 1); + await game.forceEnemyMove(Moves.BULLET_SEED, BattlerIndex.PLAYER_2); + await game.forceEnemyMove(Moves.SPLASH); + await game.toNextTurn(); + + game.move.select(Moves.INSTRUCT, 0, BattlerIndex.ENEMY); + game.move.select(Moves.INSTRUCT, 1, BattlerIndex.ENEMY); + await game.forceEnemyMove(Moves.BULLET_SEED, BattlerIndex.PLAYER_2); + await game.forceEnemyMove(Moves.SPLASH); + await game.setTurnOrder([ BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2 ]); + await game.phaseInterceptor.to("BerryPhase"); + + expect(ivysaur.turnData.attacksReceived.length).toBe(15); + + await game.toNextTurn(); + game.move.select(Moves.INSTRUCT, 0, BattlerIndex.ENEMY); + game.move.select(Moves.INSTRUCT, 1, BattlerIndex.ENEMY); + await game.forceEnemyMove(Moves.BULLET_SEED, BattlerIndex.PLAYER_2); + await game.forceEnemyMove(Moves.SPLASH); + await game.setTurnOrder([ BattlerIndex.ENEMY, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER, BattlerIndex.PLAYER_2 ]); + await game.phaseInterceptor.to("BerryPhase"); + + expect(ivysaur.turnData.attacksReceived.length).toBe(15); + }); +}); diff --git a/src/test/utils/helpers/moveHelper.ts b/src/test/utils/helpers/moveHelper.ts index 73fe63395fd..68d3b3d51d7 100644 --- a/src/test/utils/helpers/moveHelper.ts +++ b/src/test/utils/helpers/moveHelper.ts @@ -1,4 +1,6 @@ import { BattlerIndex } from "#app/battle"; +import type Pokemon from "#app/field/pokemon"; +import { PokemonMove } from "#app/field/pokemon"; import Overrides from "#app/overrides"; import { CommandPhase } from "#app/phases/command-phase"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; @@ -71,4 +73,21 @@ export class MoveHelper extends GameManagerHelper { await this.game.phaseInterceptor.to("MovePhase"); vi.spyOn(Overrides, "STATUS_ACTIVATION_OVERRIDE", "get").mockReturnValue(null); } + + /** + * Used when the normal moveset override can't be used (such as when it's necessary to check updated properties of the moveset). + * @param pokemon - The pokemon being modified + * @param moveset - The moveset to use + */ + public changeMoveset(pokemon: Pokemon, moveset: Moves | Moves[]): void { + if (!Array.isArray(moveset)) { + moveset = [ moveset ]; + } + pokemon.moveset = []; + moveset.forEach((move) => { + pokemon.moveset.push(new PokemonMove(move)); + }); + const movesetStr = moveset.map((moveId) => Moves[moveId]).join(", "); + console.log(`Pokemon ${pokemon.species.name}'s moveset manually set to ${movesetStr} (=[${moveset.join(", ")}])!`); + } } From e930536efee5e0fbd11fbaa678545ebe8fd11c50 Mon Sep 17 00:00:00 2001 From: innerthunder <168692175+innerthunder@users.noreply.github.com> Date: Sun, 1 Dec 2024 14:27:55 -0800 Subject: [PATCH 040/119] [Move] Implement Powder (with edge case) (#3662) * Powder basic implementation * Add Powder integration tests * Fix thaw test * Use new test utils and type check function * More edge case tests * Make Powder (P) * Add locale keys * Add placeholder common anim * Use CommonAnimPhase instead of async animation * Add comments with new English text * Make Powder `edgeCase` instead * ESLint * Fix imports * Add `moveName` key arg for other languages * ESLint * Update locales * Fix pages issues * Update Powder explosion animation * Update common-powder.json * Update src/test/moves/powder.test.ts Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> * Remove lingering TIMEOUTs * More test cleanup --------- Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> --- public/battle-anims/common-powder.json | 2496 +++++++++++++++++++ public/images/battle_anims/PRAS- Powder.png | Bin 4147 -> 4092 bytes src/data/battle-anims.ts | 1 + src/data/battler-tags.ts | 53 + src/data/move.ts | 3 +- src/enums/battler-tag-type.ts | 1 + src/test/moves/powder.test.ts | 205 ++ 7 files changed, 2758 insertions(+), 1 deletion(-) create mode 100644 public/battle-anims/common-powder.json create mode 100644 src/test/moves/powder.test.ts diff --git a/public/battle-anims/common-powder.json b/public/battle-anims/common-powder.json new file mode 100644 index 00000000000..698d68e7e81 --- /dev/null +++ b/public/battle-anims/common-powder.json @@ -0,0 +1,2496 @@ +{ + "graphic":"PRAS- Powder", + "frames":[ + [ + { + "x":0, + "y":0, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":0, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":2 + }, + { + "x":128, + "y":-64, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":1, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":1 + } + ], + [ + { + "x":0, + "y":0, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":0, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":2 + }, + { + "x":128, + "y":-64, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":1, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":1 + }, + { + "x":-6, + "y":-3, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 21, + "opacity": 255, + "priority": 1, + "focus":2 + } + ], + [ + { + "x":0, + "y":0, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":0, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":2 + }, + { + "x":128, + "y":-64, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":1, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":1 + }, + { + "x":-6, + "y":-3, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 21, + "opacity": 255, + "priority": 1, + "focus":2 + } + ], + [ + { + "x":0, + "y":0, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":0, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":2 + }, + { + "x":128, + "y":-64, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":1, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":1 + }, + { + "x":-6, + "y":-3, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 21, + "opacity": 255, + "priority": 1, + "focus":2 + } + ], + [ + { + "x":0, + "y":0, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":0, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":2 + }, + { + "x":128, + "y":-64, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":1, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":1 + }, + { + "x":-6, + "y":-3, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 22, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":-12, + "y":-20, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 21, + "opacity": 255, + "priority": 1, + "focus":2 + } + ], + [ + { + "x":0, + "y":0, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":0, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":2 + }, + { + "x":128, + "y":-64, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":1, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":1 + }, + { + "x":-6, + "y":-3, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 22, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":-12, + "y":-20, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 21, + "opacity": 255, + "priority": 1, + "focus":2 + } + ], + [ + { + "x":0, + "y":0, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":0, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":2 + }, + { + "x":128, + "y":-64, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":1, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":1 + }, + { + "x":-6, + "y":-3, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 22, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":-12, + "y":-20, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 21, + "opacity": 255, + "priority": 1, + "focus":2 + } + ], + [ + { + "x":0, + "y":0, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":0, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":2 + }, + { + "x":128, + "y":-64, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":1, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":1 + }, + { + "x":-6, + "y":-3, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 22, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":-12, + "y":-20, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 21, + "opacity": 255, + "priority": 1, + "focus":2 + } + ], + [ + { + "x":0, + "y":0, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":0, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":2 + }, + { + "x":128, + "y":-64, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":1, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":1 + }, + { + "x":-6, + "y":-3, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 22, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":-12, + "y":-20, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 21, + "opacity": 255, + "priority": 1, + "focus":2 + } + ], + [ + { + "x":0, + "y":0, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":0, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":2 + }, + { + "x":128, + "y":-64, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":1, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":1 + }, + { + "x":-6, + "y":-3, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 22, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":16, + "y":2, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 21, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":-12, + "y":-20, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 22, + "opacity": 255, + "priority": 1, + "focus":2 + } + ], + [ + { + "x":0, + "y":0, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":0, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":2 + }, + { + "x":128, + "y":-64, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":1, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":1 + }, + { + "x":-6, + "y":-3, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 23, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":16, + "y":2, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 21, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":-12, + "y":-20, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 22, + "opacity": 255, + "priority": 1, + "focus":2 + } + ], + [ + { + "x":0, + "y":0, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":0, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":2 + }, + { + "x":128, + "y":-64, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":1, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":1 + }, + { + "x":-6, + "y":-3, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 23, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":16, + "y":2, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 21, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":-12, + "y":-20, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 22, + "opacity": 255, + "priority": 1, + "focus":2 + } + ], + [ + { + "x":0, + "y":0, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":0, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":2 + }, + { + "x":128, + "y":-64, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":1, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":1 + }, + { + "x":-6, + "y":-3, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 24, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":16, + "y":2, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 21, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":-12, + "y":-20, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 22, + "opacity": 255, + "priority": 1, + "focus":2 + } + ], + [ + { + "x":0, + "y":0, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":0, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":2 + }, + { + "x":128, + "y":-64, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":1, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":1 + }, + { + "x":-6, + "y":-3, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 24, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":16, + "y":2, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 23, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":-12, + "y":-20, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 22, + "opacity": 255, + "priority": 1, + "focus":2 + } + ], + [ + { + "x":0, + "y":0, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":0, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":2 + }, + { + "x":128, + "y":-64, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":1, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":1 + }, + { + "x":-6, + "y":-3, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 24, + "opacity": 0 , + "focus":2 + }, + { + "x":16, + "y":2, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 23, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":-12, + "y":-20, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 24, + "opacity": 255, + "priority": 1, + "focus":2 + } + ], + [ + { + "x":0, + "y":0, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":0, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":2 + }, + { + "x":128, + "y":-64, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":1, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":1 + }, + { + "x":-6, + "y":-3, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 17, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":16, + "y":2, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 23, + "opacity": 0 , + "focus":2 + }, + { + "x":-12, + "y":-20, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 24, + "opacity": 255, + "priority": 1, + "focus":2 + } + ], + [ + { + "x":0, + "y":0, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":0, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":2 + }, + { + "x":128, + "y":-64, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":1, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":1 + }, + { + "x":-6, + "y":-3, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 18, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":16, + "y":2, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 17, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":-12, + "y":-20, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 24, + "opacity": 0, + "focus":2 + } + ], + [ + { + "x":0, + "y":0, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":0, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":2 + }, + { + "x":128, + "y":-64, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":1, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":1 + }, + { + "x":-6, + "y":-3, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 18, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":16, + "y":2, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 18, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":-12, + "y":-20, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 17, + "opacity": 255, + "priority": 1, + "focus":2 + } + ], + [ + { + "x":0, + "y":0, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":0, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":2 + }, + { + "x":128, + "y":-64, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":1, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":1 + }, + { + "x":-6, + "y":-3, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 19, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":-6, + "y":-3, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 8, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":16, + "y":2, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 18, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":-12, + "y":-20, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 18, + "opacity": 255, + "priority": 1, + "focus":2 + } + ], + [ + { + "x":0, + "y":0, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":0, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":2 + }, + { + "x":128, + "y":-64, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":1, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":1 + }, + { + "x":-6, + "y":-3, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 19, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":-6, + "y":-3, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 8, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":16, + "y":2, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 19, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":-12, + "y":-20, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 18, + "opacity": 255, + "priority": 1, + "focus":2 + } + ], + [ + { + "x":0, + "y":0, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":0, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":2 + }, + { + "x":128, + "y":-64, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":1, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":1 + }, + { + "x":-6, + "y":-3, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 9, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":16, + "y":2, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 19, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":12, + "y":0, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 8, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":-12, + "y":-20, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 19, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":-12, + "y":-20, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 8, + "opacity": 255, + "priority": 1, + "focus":2 + } + ], + [ + { + "x":0, + "y":0, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":0, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":2 + }, + { + "x":128, + "y":-64, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":1, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":1 + }, + { + "x":-6, + "y":-3, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 9, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":16, + "y":2, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 20, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":12, + "y":0, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 8, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":-12, + "y":-20, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 19, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":-12, + "y":-20, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 9, + "opacity": 255, + "priority": 1, + "focus":2 + } + ], + [ + { + "x":0, + "y":0, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":0, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":2 + }, + { + "x":128, + "y":-64, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":1, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":1 + }, + { + "x":-6, + "y":-3, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 9, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":16, + "y":2, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 20, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":12, + "y":0, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 9, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":-12, + "y":-20, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 20, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":-12, + "y":-20, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 9, + "opacity": 255, + "priority": 1, + "focus":2 + } + ], + [ + { + "x":0, + "y":0, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":0, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":2 + }, + { + "x":128, + "y":-64, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":1, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":1 + }, + { + "x":-6, + "y":-3, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 9, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":12, + "y":0, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 9, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":-12, + "y":-20, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 20, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":-12, + "y":-20, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 10, + "opacity": 255, + "priority": 1, + "focus":2 + } + ], + [ + { + "x":0, + "y":0, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":0, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":2 + }, + { + "x":128, + "y":-64, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":1, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":1 + }, + { + "x":-6, + "y":-3, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 10, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":12, + "y":0, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 10, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":-12, + "y":-20, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 10, + "opacity": 255, + "priority": 1, + "focus":2 + } + ], + [ + { + "x":0, + "y":0, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":0, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":2 + }, + { + "x":128, + "y":-64, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":1, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":1 + }, + { + "x":-6, + "y":-3, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 10, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":12, + "y":0, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 10, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":-12, + "y":-20, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 10, + "opacity": 255, + "priority": 1, + "focus":2 + } + ], + [ + { + "x":0, + "y":0, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":0, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":2 + }, + { + "x":128, + "y":-64, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":1, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":1 + }, + { + "x":-6, + "y":-3, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 11, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":12, + "y":0, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 11, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":-12, + "y":-20, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 11, + "opacity": 255, + "priority": 1, + "focus":2 + } + ], + [ + { + "x":0, + "y":0, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":0, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":2 + }, + { + "x":128, + "y":-64, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":1, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":1 + }, + { + "x":-6, + "y":-3, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 11, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":12, + "y":0, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 11, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":-12, + "y":-20, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 11, + "opacity": 255, + "priority": 1, + "focus":2 + } + ], + [ + { + "x":0, + "y":0, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":0, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":2 + }, + { + "x":128, + "y":-64, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":1, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":1 + }, + { + "x":-6, + "y":-3, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 12, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":12, + "y":0, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 12, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":-12, + "y":-20, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 12, + "opacity": 255, + "priority": 1, + "focus":2 + } + ], + [ + { + "x":0, + "y":0, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":0, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":2 + }, + { + "x":128, + "y":-64, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":1, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":1 + }, + { + "x":-6, + "y":-3, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 12, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":12, + "y":0, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 12, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":-12, + "y":-20, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 12, + "opacity": 255, + "priority": 1, + "focus":2 + } + ], + [ + { + "x":0, + "y":0, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":0, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":2 + }, + { + "x":128, + "y":-64, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":1, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":1 + }, + { + "x":-6, + "y":-3, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 13, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":12, + "y":0, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 13, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":-12, + "y":-20, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 13, + "opacity": 255, + "priority": 1, + "focus":2 + } + ], + [ + { + "x":0, + "y":0, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":0, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":2 + }, + { + "x":128, + "y":-64, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":1, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":1 + }, + { + "x":-6, + "y":-3, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 13, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":12, + "y":0, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 13, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":-12, + "y":-20, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 13, + "opacity": 255, + "priority": 1, + "focus":2 + } + ], + [ + { + "x":0, + "y":0, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":0, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":2 + }, + { + "x":128, + "y":-64, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":1, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":1 + }, + { + "x":-6, + "y":-3, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 14, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":12, + "y":0, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 14, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":-12, + "y":-20, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 14, + "opacity": 255, + "priority": 1, + "focus":2 + } + ], + [ + { + "x":0, + "y":0, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":0, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":2 + }, + { + "x":128, + "y":-64, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":1, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":1 + }, + { + "x":-6, + "y":-3, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 14, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":12, + "y":0, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 14, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":-12, + "y":-20, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 14, + "opacity": 255, + "priority": 1, + "focus":2 + } + ], + [ + { + "x":0, + "y":0, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":0, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":2 + }, + { + "x":128, + "y":-64, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":1, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":1 + }, + { + "x":-6, + "y":-3, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 15, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":12, + "y":0, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 15, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":-12, + "y":-20, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 15, + "opacity": 255, + "priority": 1, + "focus":2 + } + ], + [ + { + "x":0, + "y":0, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":0, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":2 + }, + { + "x":128, + "y":-64, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":1, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":1 + }, + { + "x":-6, + "y":-3, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 15, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":12, + "y":0, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 15, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":-12, + "y":-20, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 15, + "opacity": 255, + "priority": 1, + "focus":2 + } + ], + [ + { + "x":0, + "y":0, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":0, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":2 + }, + { + "x":128, + "y":-64, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":1, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":1 + }, + { + "x":-6, + "y":-3, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 16, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":12, + "y":0, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 16, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":-12, + "y":-20, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 16, + "opacity": 255, + "priority": 1, + "focus":2 + } + ], + [ + { + "x":0, + "y":0, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":0, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":2 + }, + { + "x":128, + "y":-64, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":1, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":1 + }, + { + "x":-6, + "y":-3, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 16, + "opacity": 155, + "focus":2 + }, + { + "x":12, + "y":0, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 16, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":-12, + "y":-20, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 16, + "opacity": 150, + "focus":2 + } + ], + [ + { + "x":0, + "y":0, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":0, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":2 + }, + { + "x":128, + "y":-64, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":1, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":1 + }, + { + "x":-6, + "y":-3, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 16, + "opacity": 155, + "focus":2 + }, + { + "x":12, + "y":0, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 16, + "opacity": 255, + "priority": 1, + "focus":2 + }, + { + "x":-12, + "y":-20, + "zoomX":130, + "zoomY":120, + "visible":true, + "target": 2, + "graphicFrame": 16, + "opacity": 150, + "focus":2 + } + ], + [ + { + "x":0, + "y":0, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":0, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":2 + }, + { + "x":128, + "y":-64, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":1, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":1 + } + ], + [ + { + "x":0, + "y":0, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":0, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":2 + }, + { + "x":128, + "y":-64, + "zoomX":100, + "zoomY":100, + "visible":true, + "target":1, + "graphicFrame":0, + "opacity": 255, + "locked": true, + "priority":1, + "focus":1 + } + ] + ], + "frameTimedEvents":{ + "16":[{"frameIndex":16,"resourceName":"PRSFX- Powder common1.wav","volume":100,"pitch":100,"eventType":"AnimTimedSoundEvent"}], + "18":[{"frameIndex":18,"resourceName":"PRSFX- Powder common2.wav","volume":30,"pitch":120,"eventType":"AnimTimedSoundEvent"}] + }, + "position":3, + "hue":0 +} \ No newline at end of file diff --git a/public/images/battle_anims/PRAS- Powder.png b/public/images/battle_anims/PRAS- Powder.png index 3c4a4d2db55552ea56556cd5b61bcac66a8dfbbd..9656c31e6c9663a934d5ef4883547b88db1ebcff 100644 GIT binary patch delta 3911 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 B(CYvI delta 3984 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 q@wYDk000000000000000001 target.status?.effect === StatusEffect.POISON || target.status?.effect === StatusEffect.TOXIC }) .target(MoveTarget.ALL_NEAR_ENEMIES), new StatusMove(Moves.POWDER, Type.BUG, 100, 20, -1, 1, 6) + .attr(AddBattlerTagAttr, BattlerTagType.POWDER, false, true) .ignoresSubstitute() .powderMove() - .unimplemented(), + .edgeCase(), // does not cancel Fire-type moves generated by Dancer new ChargingSelfStatusMove(Moves.GEOMANCY, Type.FAIRY, -1, 10, -1, 0, 6) .chargeText(i18next.t("moveTriggers:isChargingPower", { pokemonName: "{USER}" })) .attr(StatStageChangeAttr, [ Stat.SPATK, Stat.SPDEF, Stat.SPD ], 2, true) diff --git a/src/enums/battler-tag-type.ts b/src/enums/battler-tag-type.ts index bb969386630..f28ac37ae27 100644 --- a/src/enums/battler-tag-type.ts +++ b/src/enums/battler-tag-type.ts @@ -93,4 +93,5 @@ export enum BattlerTagType { GRUDGE = "GRUDGE", PSYCHO_SHIFT = "PSYCHO_SHIFT", ENDURE_TOKEN = "ENDURE_TOKEN", + POWDER = "POWDER", } diff --git a/src/test/moves/powder.test.ts b/src/test/moves/powder.test.ts new file mode 100644 index 00000000000..5c0f318d620 --- /dev/null +++ b/src/test/moves/powder.test.ts @@ -0,0 +1,205 @@ +import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; +import Phaser from "phaser"; +import GameManager from "#test/utils/gameManager"; +import { Abilities } from "#enums/abilities"; +import { Moves } from "#enums/moves"; +import { Species } from "#enums/species"; +import { BerryPhase } from "#app/phases/berry-phase"; +import { MoveResult } from "#app/field/pokemon"; +import { Type } from "#enums/type"; +import { MoveEffectPhase } from "#app/phases/move-effect-phase"; +import { StatusEffect } from "#enums/status-effect"; + +describe("Moves - Powder", () => { + let phaserGame: Phaser.Game; + let game: GameManager; + + beforeAll(() => { + phaserGame = new Phaser.Game({ + type: Phaser.HEADLESS, + }); + }); + + afterEach(() => { + game.phaseInterceptor.restoreOg(); + }); + + beforeEach(() => { + game = new GameManager(phaserGame); + game.override.battleType("single"); + + game.override + .enemySpecies(Species.SNORLAX) + .enemyLevel(100) + .enemyMoveset(Moves.EMBER) + .enemyAbility(Abilities.INSOMNIA) + .startingLevel(100) + .moveset([ Moves.POWDER, Moves.SPLASH, Moves.FIERY_DANCE ]); + }); + + it( + "should cancel the target's Fire-type move and damage the target", + async () => { + await game.classicMode.startBattle([ Species.CHARIZARD ]); + + const enemyPokemon = game.scene.getEnemyPokemon()!; + + game.move.select(Moves.POWDER); + + await game.phaseInterceptor.to(BerryPhase, false); + expect(enemyPokemon.getLastXMoves()[0].result).toBe(MoveResult.FAIL); + expect(enemyPokemon.hp).toBe(Math.ceil(3 * enemyPokemon.getMaxHp() / 4)); + + await game.toNextTurn(); + + game.move.select(Moves.SPLASH); + + await game.phaseInterceptor.to(BerryPhase, false); + expect(enemyPokemon.getLastXMoves()[0].result).toBe(MoveResult.SUCCESS); + expect(enemyPokemon.hp).toBe(Math.ceil(3 * enemyPokemon.getMaxHp() / 4)); + }); + + it( + "should have no effect against Grass-type Pokemon", + async () => { + game.override.enemySpecies(Species.AMOONGUSS); + + await game.classicMode.startBattle([ Species.CHARIZARD ]); + + const enemyPokemon = game.scene.getEnemyPokemon()!; + + game.move.select(Moves.POWDER); + + await game.phaseInterceptor.to(BerryPhase, false); + expect(enemyPokemon.getLastXMoves()[0].result).toBe(MoveResult.SUCCESS); + expect(enemyPokemon.hp).toBe(enemyPokemon.getMaxHp()); + }); + + it( + "should have no effect against Pokemon with Overcoat", + async () => { + game.override.enemyAbility(Abilities.OVERCOAT); + + await game.classicMode.startBattle([ Species.CHARIZARD ]); + + const enemyPokemon = game.scene.getEnemyPokemon()!; + + game.move.select(Moves.POWDER); + + await game.phaseInterceptor.to(BerryPhase, false); + expect(enemyPokemon.getLastXMoves()[0].result).toBe(MoveResult.SUCCESS); + expect(enemyPokemon.hp).toBe(enemyPokemon.getMaxHp()); + }); + + it( + "should not damage the target if the target has Magic Guard", + async () => { + game.override.enemyAbility(Abilities.MAGIC_GUARD); + + await game.classicMode.startBattle([ Species.CHARIZARD ]); + + const enemyPokemon = game.scene.getEnemyPokemon()!; + + game.move.select(Moves.POWDER); + + await game.phaseInterceptor.to(BerryPhase, false); + expect(enemyPokemon.getLastXMoves()[0].result).toBe(MoveResult.FAIL); + expect(enemyPokemon.hp).toBe(enemyPokemon.getMaxHp()); + }); + + it( + "should not prevent the target from thawing out with Flame Wheel", + async () => { + game.override + .enemyMoveset(Array(4).fill(Moves.FLAME_WHEEL)) + .enemyStatusEffect(StatusEffect.FREEZE); + + await game.classicMode.startBattle([ Species.CHARIZARD ]); + + const enemyPokemon = game.scene.getEnemyPokemon()!; + + game.move.select(Moves.POWDER); + + await game.phaseInterceptor.to(BerryPhase, false); + expect(enemyPokemon.status?.effect).not.toBe(StatusEffect.FREEZE); + expect(enemyPokemon.getLastXMoves()[0].result).toBe(MoveResult.FAIL); + expect(enemyPokemon.hp).toBe(Math.ceil(3 * enemyPokemon.getMaxHp() / 4)); + } + ); + + it( + "should not allow a target with Protean to change to Fire type", + async () => { + game.override.enemyAbility(Abilities.PROTEAN); + + await game.classicMode.startBattle([ Species.CHARIZARD ]); + + const enemyPokemon = game.scene.getEnemyPokemon()!; + + game.move.select(Moves.POWDER); + + await game.phaseInterceptor.to(BerryPhase, false); + expect(enemyPokemon.getLastXMoves()[0].result).toBe(MoveResult.FAIL); + expect(enemyPokemon.hp).toBeLessThan(enemyPokemon.getMaxHp()); + expect(enemyPokemon.summonData?.types).not.toBe(Type.FIRE); + }); + + // TODO: Implement this interaction to pass this test + it.skip( + "should cancel Fire-type moves generated by the target's Dancer ability", + async () => { + game.override + .enemySpecies(Species.BLASTOISE) + .enemyAbility(Abilities.DANCER); + + await game.classicMode.startBattle([ Species.CHARIZARD ]); + + const playerPokemon = game.scene.getPlayerPokemon()!; + const enemyPokemon = game.scene.getEnemyPokemon()!; + + game.move.select(Moves.FIERY_DANCE); + + await game.phaseInterceptor.to(MoveEffectPhase); + const enemyStartingHp = enemyPokemon.hp; + + await game.phaseInterceptor.to(BerryPhase, false); + // player should not take damage + expect(playerPokemon.hp).toBe(playerPokemon.getMaxHp()); + // enemy should have taken damage from player's Fiery Dance + 2 Powder procs + expect(enemyPokemon.hp).toBe(enemyStartingHp - 2 * Math.floor(enemyPokemon.getMaxHp() / 4)); + }); + + it( + "should cancel Revelation Dance if it becomes a Fire-type move", + async () => { + game.override + .enemySpecies(Species.CHARIZARD) + .enemyMoveset(Array(4).fill(Moves.REVELATION_DANCE)); + + await game.classicMode.startBattle([ Species.CHARIZARD ]); + + const enemyPokemon = game.scene.getEnemyPokemon()!; + + game.move.select(Moves.POWDER); + + await game.phaseInterceptor.to(BerryPhase, false); + expect(enemyPokemon.getLastXMoves()[0].result).toBe(MoveResult.FAIL); + expect(enemyPokemon.hp).toBe(Math.ceil(3 * enemyPokemon.getMaxHp() / 4)); + }); + + it( + "should cancel Shell Trap and damage the target, even if the move would fail", + async () => { + game.override.enemyMoveset(Array(4).fill(Moves.SHELL_TRAP)); + + await game.classicMode.startBattle([ Species.CHARIZARD ]); + + const enemyPokemon = game.scene.getEnemyPokemon()!; + + game.move.select(Moves.POWDER); + + await game.phaseInterceptor.to(BerryPhase, false); + expect(enemyPokemon.getLastXMoves()[0].result).toBe(MoveResult.FAIL); + expect(enemyPokemon.hp).toBe(Math.ceil(3 * enemyPokemon.getMaxHp() / 4)); + }); +}); From 2f377f26b745b938748a77ea2941a500069e7df8 Mon Sep 17 00:00:00 2001 From: PigeonBar <56974298+PigeonBar@users.noreply.github.com> Date: Mon, 2 Dec 2024 12:40:59 -0500 Subject: [PATCH 041/119] [P1 Bug] Fix multi lens granting infinite Future Sight hits (#4961) * [P1 Bug] Fix multi lens granting infinite Future Sight hits * Updated `.partial()` tags * Added corresponding TODO comments to tests --- src/data/move.ts | 4 ++-- src/phases/move-effect-phase.ts | 6 ++++-- src/test/abilities/parental_bond.test.ts | 25 ++++++++++++++++++++++-- src/test/items/multi_lens.test.ts | 23 +++++++++++++++++++++- 4 files changed, 51 insertions(+), 7 deletions(-) diff --git a/src/data/move.ts b/src/data/move.ts index 1283713ef30..27f7829a920 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -8666,7 +8666,7 @@ export function initMoves() { .attr(StatStageChangeAttr, [ Stat.SPDEF ], -1) .ballBombMove(), new AttackMove(Moves.FUTURE_SIGHT, Type.PSYCHIC, MoveCategory.SPECIAL, 120, 100, 10, -1, 0, 2) - .partial() // cannot be used on multiple Pokemon on the same side in a double battle, hits immediately when called by Metronome/etc + .partial() // cannot be used on multiple Pokemon on the same side in a double battle, hits immediately when called by Metronome/etc, should not apply abilities or held items if user is off the field .ignoresProtect() .attr(DelayedAttackAttr, ArenaTagType.FUTURE_SIGHT, ChargeAnim.FUTURE_SIGHT_CHARGING, i18next.t("moveTriggers:foresawAnAttack", { pokemonName: "{USER}" })), new AttackMove(Moves.ROCK_SMASH, Type.FIGHTING, MoveCategory.PHYSICAL, 40, 100, 15, 50, 0, 2) @@ -8976,7 +8976,7 @@ export function initMoves() { .attr(ConfuseAttr) .pulseMove(), new AttackMove(Moves.DOOM_DESIRE, Type.STEEL, MoveCategory.SPECIAL, 140, 100, 5, -1, 0, 3) - .partial() // cannot be used on multiple Pokemon on the same side in a double battle, hits immediately when called by Metronome/etc + .partial() // cannot be used on multiple Pokemon on the same side in a double battle, hits immediately when called by Metronome/etc, should not apply abilities or held items if user is off the field .ignoresProtect() .attr(DelayedAttackAttr, ArenaTagType.DOOM_DESIRE, ChargeAnim.DOOM_DESIRE_CHARGING, i18next.t("moveTriggers:choseDoomDesireAsDestiny", { pokemonName: "{USER}" })), new AttackMove(Moves.PSYCHO_BOOST, Type.PSYCHIC, MoveCategory.SPECIAL, 140, 90, 5, -1, 0, 3) diff --git a/src/phases/move-effect-phase.ts b/src/phases/move-effect-phase.ts index 96ded602b30..d08fc46e563 100644 --- a/src/phases/move-effect-phase.ts +++ b/src/phases/move-effect-phase.ts @@ -56,7 +56,7 @@ import { PokemonMultiHitModifier, } from "#app/modifier/modifier"; import { PokemonPhase } from "#app/phases/pokemon-phase"; -import { BooleanHolder, executeIf, NumberHolder } from "#app/utils"; +import { BooleanHolder, executeIf, isNullOrUndefined, NumberHolder } from "#app/utils"; import { BattlerTagType } from "#enums/battler-tag-type"; import { Moves } from "#enums/moves"; import i18next from "i18next"; @@ -106,7 +106,9 @@ export class MoveEffectPhase extends PokemonPhase { */ return super.end(); } - user.resetTurnData(); + if (isNullOrUndefined(user.turnData)) { + user.resetTurnData(); + } } } diff --git a/src/test/abilities/parental_bond.test.ts b/src/test/abilities/parental_bond.test.ts index 6790e7e632c..c2f54fa4cfc 100644 --- a/src/test/abilities/parental_bond.test.ts +++ b/src/test/abilities/parental_bond.test.ts @@ -1,5 +1,5 @@ import { Type } from "#enums/type"; -import { BattlerTagType } from "#app/enums/battler-tag-type"; +import { BattlerTagType } from "#enums/battler-tag-type"; import { toDmgValue } from "#app/utils"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; @@ -8,7 +8,7 @@ import { Stat } from "#enums/stat"; import { StatusEffect } from "#enums/status-effect"; import GameManager from "#test/utils/gameManager"; import Phaser from "phaser"; -import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; describe("Abilities - Parental Bond", () => { @@ -470,4 +470,25 @@ describe("Abilities - Parental Bond", () => { expect(enemyPokemon.getStatStage(Stat.SPATK)).toBe(1); } ); + + it("should not allow Future Sight to hit infinitely many times if the user switches out", async () => { + game.override.enemyLevel(1000) + .moveset(Moves.FUTURE_SIGHT); + await game.classicMode.startBattle([ Species.BULBASAUR, Species.CHARMANDER, Species.SQUIRTLE ]); + + const enemyPokemon = game.scene.getEnemyPokemon()!; + vi.spyOn(enemyPokemon, "damageAndUpdate"); + + game.move.select(Moves.FUTURE_SIGHT); + await game.toNextTurn(); + + game.doSwitchPokemon(1); + await game.toNextTurn(); + + game.doSwitchPokemon(2); + await game.toNextTurn(); + + // TODO: Update hit count to 1 once Future Sight is fixed to not activate abilities if user is off the field + expect(enemyPokemon.damageAndUpdate).toHaveBeenCalledTimes(2); + }); }); diff --git a/src/test/items/multi_lens.test.ts b/src/test/items/multi_lens.test.ts index f4b4c5712ee..bd586878fce 100644 --- a/src/test/items/multi_lens.test.ts +++ b/src/test/items/multi_lens.test.ts @@ -24,7 +24,7 @@ describe("Items - Multi Lens", () => { beforeEach(() => { game = new GameManager(phaserGame); game.override - .moveset([ Moves.TACKLE, Moves.TRAILBLAZE, Moves.TACHYON_CUTTER ]) + .moveset([ Moves.TACKLE, Moves.TRAILBLAZE, Moves.TACHYON_CUTTER, Moves.FUTURE_SIGHT ]) .ability(Abilities.BALL_FETCH) .startingHeldItems([{ name: "MULTI_LENS" }]) .battleType("single") @@ -170,6 +170,7 @@ describe("Items - Multi Lens", () => { await game.phaseInterceptor.to("MoveEndPhase"); expect(enemyPokemon.getHpRatio()).toBeCloseTo(0.5, 5); }); + it("should result in correct damage for hp% attacks with 2 lenses + Parental Bond", async () => { game.override.startingHeldItems([{ name: "MULTI_LENS", count: 2 }]) .moveset(Moves.SUPER_FANG) @@ -188,4 +189,24 @@ describe("Items - Multi Lens", () => { await game.phaseInterceptor.to("MoveEndPhase"); expect(enemyPokemon.getHpRatio()).toBeCloseTo(0.25, 5); }); + + it("should not allow Future Sight to hit infinitely many times if the user switches out", async () => { + game.override.enemyLevel(1000); + await game.classicMode.startBattle([ Species.BULBASAUR, Species.CHARMANDER, Species.SQUIRTLE ]); + + const enemyPokemon = game.scene.getEnemyPokemon()!; + vi.spyOn(enemyPokemon, "damageAndUpdate"); + + game.move.select(Moves.FUTURE_SIGHT); + await game.toNextTurn(); + + game.doSwitchPokemon(1); + await game.toNextTurn(); + + game.doSwitchPokemon(2); + await game.toNextTurn(); + + // TODO: Update hit count to 1 once Future Sight is fixed to not activate held items if user is off the field + expect(enemyPokemon.damageAndUpdate).toHaveBeenCalledTimes(2); + }); }); From 3ca0fdae6b76f3a43e166c09fa73e2d1f8ba7adb Mon Sep 17 00:00:00 2001 From: damocleas Date: Mon, 2 Dec 2024 14:59:02 -0500 Subject: [PATCH 042/119] [Balance] December Starter Balance Changes (#4883) * Update passives.ts * Update egg-moves.ts * Update egg-moves.ts * Update species-egg-tiers.ts * Update egg-moves.ts * Update egg-moves.ts * Update starters cost * Update egg-moves.ts * fixed mispell * update egg tests to match latest species egg tier changes * Update starters.ts - fixed placements and reduced Duraludon back to 5 * Update species-egg-tiers.ts fixed placements * Kartana and Iron Valiant passive change * Update passives.ts * Update egg-moves.ts * Update species-egg-tiers.ts * Update starters.ts * fix ' --------- Co-authored-by: Moka Co-authored-by: Moka <54149968+MokaStitcher@users.noreply.github.com> --- src/data/balance/egg-moves.ts | 334 +++++++++++++------------- src/data/balance/passives.ts | 148 ++++++------ src/data/balance/species-egg-tiers.ts | 130 +++++----- src/data/balance/starters.ts | 76 +++--- src/test/eggs/egg.test.ts | 32 +-- 5 files changed, 349 insertions(+), 371 deletions(-) diff --git a/src/data/balance/egg-moves.ts b/src/data/balance/egg-moves.ts index 8df92e179d9..7e90008be88 100644 --- a/src/data/balance/egg-moves.ts +++ b/src/data/balance/egg-moves.ts @@ -7,16 +7,16 @@ import { Species } from "#enums/species"; export const speciesEggMoves = { [Species.BULBASAUR]: [ Moves.SAPPY_SEED, Moves.MALIGNANT_CHAIN, Moves.EARTH_POWER, Moves.MATCHA_GOTCHA ], [Species.CHARMANDER]: [ Moves.DRAGON_DANCE, Moves.BITTER_BLADE, Moves.EARTH_POWER, Moves.OBLIVION_WING ], - [Species.SQUIRTLE]: [ Moves.FREEZE_DRY, Moves.SHORE_UP, Moves.BOUNCY_BUBBLE, Moves.ORIGIN_PULSE ], + [Species.SQUIRTLE]: [ Moves.FREEZE_DRY, Moves.ARMOR_CANNON, Moves.BOUNCY_BUBBLE, Moves.ORIGIN_PULSE ], [Species.CATERPIE]: [ Moves.SANDSEAR_STORM, Moves.SILK_TRAP, Moves.TWIN_BEAM, Moves.BLEAKWIND_STORM ], [Species.WEEDLE]: [ Moves.THOUSAND_ARROWS, Moves.NOXIOUS_TORQUE, Moves.ATTACK_ORDER, Moves.VICTORY_DANCE ], [Species.PIDGEY]: [ Moves.WILDBOLT_STORM, Moves.SANDSEAR_STORM, Moves.NASTY_PLOT, Moves.BOOMBURST ], [Species.RATTATA]: [ Moves.HYPER_FANG, Moves.PSYCHIC_FANGS, Moves.FIRE_FANG, Moves.EXTREME_SPEED ], - [Species.SPEAROW]: [ Moves.FLOATY_FALL, Moves.EXTREME_SPEED, Moves.TIDY_UP, Moves.TRIPLE_ARROWS ], + [Species.SPEAROW]: [ Moves.FLOATY_FALL, Moves.HYPER_DRILL, Moves.TIDY_UP, Moves.TRIPLE_ARROWS ], [Species.EKANS]: [ Moves.NOXIOUS_TORQUE, Moves.DRAGON_DANCE, Moves.SLACK_OFF, Moves.SHED_TAIL ], [Species.SANDSHREW]: [ Moves.HIGH_HORSEPOWER, Moves.DIRE_CLAW, Moves.SHORE_UP, Moves.MIGHTY_CLEAVE ], - [Species.NIDORAN_F]: [ Moves.NO_RETREAT, Moves.BANEFUL_BUNKER, Moves.SANDSEAR_STORM, Moves.MALIGNANT_CHAIN ], - [Species.NIDORAN_M]: [ Moves.NOXIOUS_TORQUE, Moves.KINGS_SHIELD, Moves.NO_RETREAT, Moves.PRECIPICE_BLADES ], + [Species.NIDORAN_F]: [ Moves.CALM_MIND, Moves.MOONLIGHT, Moves.MALIGNANT_CHAIN, Moves.SANDSEAR_STORM ], + [Species.NIDORAN_M]: [ Moves.DRAGON_DANCE, Moves.MOUNTAIN_GALE, Moves.NOXIOUS_TORQUE, Moves.PRECIPICE_BLADES ], [Species.VULPIX]: [ Moves.MOONBLAST, Moves.INFERNAL_PARADE, Moves.MORNING_SUN, Moves.TAIL_GLOW ], [Species.ZUBAT]: [ Moves.FLOATY_FALL, Moves.DIRE_CLAW, Moves.SWORDS_DANCE, Moves.COLLISION_COURSE ], [Species.ODDISH]: [ Moves.SLUDGE_BOMB, Moves.FIERY_DANCE, Moves.STRENGTH_SAP, Moves.SPORE ], @@ -31,105 +31,107 @@ export const speciesEggMoves = { [Species.ABRA]: [ Moves.AURA_SPHERE, Moves.BADDY_BAD, Moves.ICE_BEAM, Moves.PSYSTRIKE ], [Species.MACHOP]: [ Moves.COMBAT_TORQUE, Moves.METEOR_MASH, Moves.MOUNTAIN_GALE, Moves.FISSURE ], [Species.BELLSPROUT]: [ Moves.SOLAR_BLADE, Moves.STRENGTH_SAP, Moves.FIRE_LASH, Moves.VICTORY_DANCE ], - [Species.TENTACOOL]: [ Moves.BANEFUL_BUNKER, Moves.STRENGTH_SAP, Moves.BOUNCY_BUBBLE, Moves.MALIGNANT_CHAIN ], + [Species.TENTACOOL]: [ Moves.BANEFUL_BUNKER, Moves.MALIGNANT_CHAIN, Moves.BOUNCY_BUBBLE, Moves.STRENGTH_SAP ], [Species.GEODUDE]: [ Moves.FLARE_BLITZ, Moves.HEAD_SMASH, Moves.SHORE_UP, Moves.SHELL_SMASH ], - [Species.PONYTA]: [ Moves.HIGH_HORSEPOWER, Moves.FIRE_LASH, Moves.SWORDS_DANCE, Moves.VOLT_TACKLE ], - [Species.SLOWPOKE]: [ Moves.BOUNCY_BUBBLE, Moves.FLAMETHROWER, Moves.MYSTICAL_POWER, Moves.SHED_TAIL ], + [Species.PONYTA]: [ Moves.HEADLONG_RUSH, Moves.FIRE_LASH, Moves.SWORDS_DANCE, Moves.VOLT_TACKLE ], + [Species.SLOWPOKE]: [ Moves.BOUNCY_BUBBLE, Moves.FROST_BREATH, Moves.SHED_TAIL, Moves.MYSTICAL_POWER ], [Species.MAGNEMITE]: [ Moves.PARABOLIC_CHARGE, Moves.FLAMETHROWER, Moves.ICE_BEAM, Moves.THUNDERCLAP ], [Species.FARFETCHD]: [ Moves.IVY_CUDGEL, Moves.TRIPLE_ARROWS, Moves.DRILL_RUN, Moves.VICTORY_DANCE ], - [Species.DODUO]: [ Moves.TRIPLE_AXEL, Moves.MULTI_ATTACK, Moves.FLOATY_FALL, Moves.TRIPLE_ARROWS ], + [Species.DODUO]: [ Moves.TRIPLE_AXEL, Moves.HYPER_DRILL, Moves.FLOATY_FALL, Moves.TRIPLE_ARROWS ], [Species.SEEL]: [ Moves.FREEZE_DRY, Moves.BOUNCY_BUBBLE, Moves.SLACK_OFF, Moves.STEAM_ERUPTION ], - [Species.GRIMER]: [ Moves.SUCKER_PUNCH, Moves.CURSE, Moves.STRENGTH_SAP, Moves.NOXIOUS_TORQUE ], + [Species.GRIMER]: [ Moves.SUCKER_PUNCH, Moves.CURSE, Moves.NOXIOUS_TORQUE, Moves.STRENGTH_SAP ], [Species.SHELLDER]: [ Moves.ROCK_BLAST, Moves.WATER_SHURIKEN, Moves.BANEFUL_BUNKER, Moves.BONE_RUSH ], - [Species.GASTLY]: [ Moves.SLUDGE_BOMB, Moves.AURA_SPHERE, Moves.NASTY_PLOT, Moves.ASTRAL_BARRAGE ], + [Species.GASTLY]: [ Moves.MALIGNANT_CHAIN, Moves.AURA_SPHERE, Moves.PARTING_SHOT, Moves.DARK_VOID ], [Species.ONIX]: [ Moves.SHORE_UP, Moves.THOUSAND_WAVES, Moves.COIL, Moves.DIAMOND_STORM ], [Species.DROWZEE]: [ Moves.BADDY_BAD, Moves.STRENGTH_SAP, Moves.LUMINA_CRASH, Moves.DARK_VOID ], - [Species.KRABBY]: [ Moves.DIRE_CLAW, Moves.JET_PUNCH, Moves.IVY_CUDGEL, Moves.SHELL_SMASH ], + [Species.KRABBY]: [ Moves.DIRE_CLAW, Moves.DRAGON_HAMMER, Moves.IVY_CUDGEL, Moves.JET_PUNCH ], [Species.VOLTORB]: [ Moves.NASTY_PLOT, Moves.FUSION_FLARE, Moves.FROST_BREATH, Moves.ELECTRO_DRIFT ], [Species.EXEGGCUTE]: [ Moves.FICKLE_BEAM, Moves.APPLE_ACID, Moves.TRICK_ROOM, Moves.LUMINA_CRASH ], [Species.CUBONE]: [ Moves.HEAD_SMASH, Moves.WOOD_HAMMER, Moves.SHADOW_SNEAK, Moves.BITTER_BLADE ], [Species.LICKITUNG]: [ Moves.CRUSH_GRIP, Moves.FIRE_LASH, Moves.SLACK_OFF, Moves.MAGICAL_TORQUE ], [Species.KOFFING]: [ Moves.SCALD, Moves.RECOVER, Moves.BODY_PRESS, Moves.MALIGNANT_CHAIN ], [Species.RHYHORN]: [ Moves.SHORE_UP, Moves.ICE_HAMMER, Moves.ACCELEROCK, Moves.HEAD_SMASH ], - [Species.TANGELA]: [ Moves.STRENGTH_SAP, Moves.SNAP_TRAP, Moves.PARTING_SHOT, Moves.SAPPY_SEED ], + [Species.TANGELA]: [ Moves.NATURES_MADNESS, Moves.SNAP_TRAP, Moves.PARTING_SHOT, Moves.SAPPY_SEED ], [Species.KANGASKHAN]: [ Moves.POWER_UP_PUNCH, Moves.TRAILBLAZE, Moves.FACADE, Moves.SEISMIC_TOSS ], - [Species.HORSEA]: [ Moves.SNIPE_SHOT, Moves.FROST_BREATH, Moves.HURRICANE, Moves.SPACIAL_REND ], + [Species.HORSEA]: [ Moves.SNIPE_SHOT, Moves.FROST_BREATH, Moves.SLUDGE_BOMB, Moves.CLANGING_SCALES ], [Species.GOLDEEN]: [ Moves.GLACIAL_LANCE, Moves.SUPERCELL_SLAM, Moves.DRAGON_DANCE, Moves.FISHIOUS_REND ], [Species.STARYU]: [ Moves.CALM_MIND, Moves.BOUNCY_BUBBLE, Moves.MOONBLAST, Moves.MYSTICAL_POWER ], - [Species.SCYTHER]: [ Moves.MIGHTY_CLEAVE, Moves.BUG_BITE, Moves.STORM_THROW, Moves.DOUBLE_IRON_BASH ], + [Species.SCYTHER]: [ Moves.MIGHTY_CLEAVE, Moves.GEAR_GRIND, Moves.STORM_THROW, Moves.BITTER_BLADE ], [Species.PINSIR]: [ Moves.HEADLONG_RUSH, Moves.LEECH_LIFE, Moves.CRUSH_GRIP, Moves.EXTREME_SPEED ], - [Species.TAUROS]: [ Moves.HIGH_HORSEPOWER, Moves.FIRE_LASH, Moves.LIQUIDATION, Moves.COMBAT_TORQUE ], + [Species.TAUROS]: [ Moves.SWORDS_DANCE, Moves.FIRE_LASH, Moves.WICKED_TORQUE, Moves.COLLISION_COURSE ], [Species.MAGIKARP]: [ Moves.FLIP_TURN, Moves.ICE_SPINNER, Moves.DRAGON_ASCENT, Moves.SURGING_STRIKES ], [Species.LAPRAS]: [ Moves.RECOVER, Moves.FREEZE_DRY, Moves.SCALD, Moves.SHELL_SMASH ], [Species.DITTO]: [ Moves.MIMIC, Moves.SKETCH, Moves.METRONOME, Moves.IMPRISON ], [Species.EEVEE]: [ Moves.WISH, Moves.NO_RETREAT, Moves.ZIPPY_ZAP, Moves.BOOMBURST ], [Species.PORYGON]: [ Moves.THUNDERCLAP, Moves.AURA_SPHERE, Moves.FLAMETHROWER, Moves.TECHNO_BLAST ], - [Species.OMANYTE]: [ Moves.FREEZE_DRY, Moves.EARTH_POWER, Moves.POWER_GEM, Moves.STEAM_ERUPTION ], - [Species.KABUTO]: [ Moves.CEASELESS_EDGE, Moves.HIGH_HORSEPOWER, Moves.TRIPLE_DIVE, Moves.MIGHTY_CLEAVE ], + [Species.OMANYTE]: [ Moves.FREEZE_DRY, Moves.GIGA_DRAIN, Moves.POWER_GEM, Moves.STEAM_ERUPTION ], + [Species.KABUTO]: [ Moves.CEASELESS_EDGE, Moves.HIGH_HORSEPOWER, Moves.CRABHAMMER, Moves.MIGHTY_CLEAVE ], [Species.AERODACTYL]: [ Moves.FLOATY_FALL, Moves.FLARE_BLITZ, Moves.SWORDS_DANCE, Moves.MIGHTY_CLEAVE ], [Species.ARTICUNO]: [ Moves.EARTH_POWER, Moves.CALM_MIND, Moves.AURORA_VEIL, Moves.AEROBLAST ], [Species.ZAPDOS]: [ Moves.BLEAKWIND_STORM, Moves.CALM_MIND, Moves.SANDSEAR_STORM, Moves.ELECTRO_SHOT ], - [Species.MOLTRES]: [ Moves.SCORCHING_SANDS, Moves.CALM_MIND, Moves.AEROBLAST, Moves.TORCH_SONG ], + [Species.MOLTRES]: [ Moves.EARTH_POWER, Moves.CALM_MIND, Moves.AEROBLAST, Moves.TORCH_SONG ], [Species.DRATINI]: [ Moves.DRAGON_HAMMER, Moves.CRUSH_GRIP, Moves.FIRE_LASH, Moves.GIGATON_HAMMER ], [Species.MEWTWO]: [ Moves.METEOR_MASH, Moves.MOONBLAST, Moves.THUNDEROUS_KICK, Moves.PHOTON_GEYSER ], [Species.MEW]: [ Moves.PHOTON_GEYSER, Moves.MOONBLAST, Moves.ASTRAL_BARRAGE, Moves.SHELL_SMASH ], + [Species.CHIKORITA]: [ Moves.SAPPY_SEED, Moves.STONE_AXE, Moves.DRAGON_DANCE, Moves.SPORE ], [Species.CYNDAQUIL]: [ Moves.NASTY_PLOT, Moves.EARTH_POWER, Moves.FIERY_DANCE, Moves.ELECTRO_DRIFT ], - [Species.TOTODILE]: [ Moves.THUNDER_PUNCH, Moves.DRAGON_DANCE, Moves.TRIPLE_AXEL, Moves.FISHIOUS_REND ], + [Species.TOTODILE]: [ Moves.THUNDER_PUNCH, Moves.DRAGON_DANCE, Moves.TRIPLE_AXEL, Moves.SURGING_STRIKES ], [Species.SENTRET]: [ Moves.TIDY_UP, Moves.FAKE_OUT, Moves.NUZZLE, Moves.EXTREME_SPEED ], [Species.HOOTHOOT]: [ Moves.CALM_MIND, Moves.ESPER_WING, Moves.AEROBLAST, Moves.BOOMBURST ], - [Species.LEDYBA]: [ Moves.POLLEN_PUFF, Moves.THIEF, Moves.PARTING_SHOT, Moves.SPORE ], + [Species.LEDYBA]: [ Moves.POLLEN_PUFF, Moves.MAT_BLOCK, Moves.PARTING_SHOT, Moves.SPORE ], [Species.SPINARAK]: [ Moves.PARTING_SHOT, Moves.ATTACK_ORDER, Moves.GASTRO_ACID, Moves.STRENGTH_SAP ], [Species.CHINCHOU]: [ Moves.THUNDERCLAP, Moves.BOUNCY_BUBBLE, Moves.THUNDER_CAGE, Moves.TAIL_GLOW ], [Species.PICHU]: [ Moves.MOONBLAST, Moves.TRIPLE_AXEL, Moves.FIERY_DANCE, Moves.AURA_WHEEL ], [Species.CLEFFA]: [ Moves.CALM_MIND, Moves.EARTH_POWER, Moves.WISH, Moves.LIGHT_OF_RUIN ], [Species.IGGLYBUFF]: [ Moves.DRAIN_PUNCH, Moves.GRAV_APPLE, Moves.SOFT_BOILED, Moves.EXTREME_SPEED ], - [Species.TOGEPI]: [ Moves.SCORCHING_SANDS, Moves.ROOST, Moves.RELIC_SONG, Moves.FIERY_DANCE ], - [Species.NATU]: [ Moves.AEROBLAST, Moves.ROOST, Moves.MOONBLAST, Moves.LUMINA_CRASH ], + [Species.TOGEPI]: [ Moves.SCORCHING_SANDS, Moves.SPLISHY_SPLASH, Moves.RELIC_SONG, Moves.FIERY_DANCE ], + [Species.NATU]: [ Moves.REVIVAL_BLESSING, Moves.NASTY_PLOT, Moves.MOONBLAST, Moves.OBLIVION_WING ], [Species.MAREEP]: [ Moves.ICE_BEAM, Moves.PARABOLIC_CHARGE, Moves.CORE_ENFORCER, Moves.TAIL_GLOW ], [Species.HOPPIP]: [ Moves.FLOATY_FALL, Moves.STRENGTH_SAP, Moves.SAPPY_SEED, Moves.SPORE ], - [Species.AIPOM]: [ Moves.TIDY_UP, Moves.STORM_THROW, Moves.FAKE_OUT, Moves.POPULATION_BOMB ], + [Species.AIPOM]: [ Moves.ROCK_BLAST, Moves.STORM_THROW, Moves.FAKE_OUT, Moves.SWORDS_DANCE ], [Species.SUNKERN]: [ Moves.SPORE, Moves.QUIVER_DANCE, Moves.FIERY_DANCE, Moves.HYDRO_STEAM ], [Species.YANMA]: [ Moves.NASTY_PLOT, Moves.EARTH_POWER, Moves.HEAT_WAVE, Moves.BLEAKWIND_STORM ], - [Species.WOOPER]: [ Moves.SIZZLY_SLIDE, Moves.RECOVER, Moves.CURSE, Moves.SURGING_STRIKES ], + [Species.WOOPER]: [ Moves.SIZZLY_SLIDE, Moves.RECOVER, Moves.SHED_TAIL, Moves.SURGING_STRIKES ], [Species.MURKROW]: [ Moves.TRIPLE_ARROWS, Moves.FLOATY_FALL, Moves.TIDY_UP, Moves.WICKED_BLOW ], - [Species.MISDREAVUS]: [ Moves.TAKE_HEART, Moves.MOONBLAST, Moves.AURA_SPHERE, Moves.ASTRAL_BARRAGE ], + [Species.MISDREAVUS]: [ Moves.TAKE_HEART, Moves.MOONBLAST, Moves.AURA_SPHERE, Moves.MOONGEIST_BEAM ], [Species.UNOWN]: [ Moves.NATURE_POWER, Moves.COSMIC_POWER, Moves.ANCIENT_POWER, Moves.MYSTICAL_POWER ], [Species.GIRAFARIG]: [ Moves.MYSTICAL_POWER, Moves.NIGHT_DAZE, Moves.RECOVER, Moves.BOOMBURST ], [Species.PINECO]: [ Moves.METAL_BURST, Moves.SHORE_UP, Moves.BODY_PRESS, Moves.DIAMOND_STORM ], [Species.DUNSPARCE]: [ Moves.WICKED_TORQUE, Moves.MAGICAL_TORQUE, Moves.BLAZING_TORQUE, Moves.EXTREME_SPEED ], - [Species.GLIGAR]: [ Moves.FLOATY_FALL, Moves.THOUSAND_WAVES, Moves.ROOST, Moves.MIGHTY_CLEAVE ], - [Species.SNUBBULL]: [ Moves.FACADE, Moves.EARTHQUAKE, Moves.SWORDS_DANCE, Moves.EXTREME_SPEED ], - [Species.QWILFISH]: [ Moves.BARB_BARRAGE, Moves.BANEFUL_BUNKER, Moves.KNOCK_OFF, Moves.FISHIOUS_REND ], + [Species.GLIGAR]: [ Moves.FLOATY_FALL, Moves.THOUSAND_WAVES, Moves.SPIKY_SHIELD, Moves.MIGHTY_CLEAVE ], + [Species.SNUBBULL]: [ Moves.FACADE, Moves.HIGH_HORSEPOWER, Moves.SWORDS_DANCE, Moves.EXTREME_SPEED ], + [Species.QWILFISH]: [ Moves.BARB_BARRAGE, Moves.BANEFUL_BUNKER, Moves.RECOVER, Moves.FISHIOUS_REND ], [Species.SHUCKLE]: [ Moves.STUFF_CHEEKS, Moves.HEAL_ORDER, Moves.BODY_PRESS, Moves.SALT_CURE ], - [Species.HERACROSS]: [ Moves.ROCK_BLAST, Moves.FIRST_IMPRESSION, Moves.ICICLE_SPEAR, Moves.DRAGON_DANCE ], - [Species.SNEASEL]: [ Moves.DIRE_CLAW, Moves.STORM_THROW, Moves.TRIPLE_AXEL, Moves.WICKED_BLOW ], + [Species.HERACROSS]: [ Moves.ROCK_BLAST, Moves.FIRST_IMPRESSION, Moves.ICICLE_SPEAR, Moves.TIDY_UP ], + [Species.SNEASEL]: [ Moves.DIRE_CLAW, Moves.DARKEST_LARIAT, Moves.TRIPLE_AXEL, Moves.CLOSE_COMBAT ], [Species.TEDDIURSA]: [ Moves.MOUNTAIN_GALE, Moves.FAKE_OUT, Moves.SLACK_OFF, Moves.PRECIPICE_BLADES ], [Species.SLUGMA]: [ Moves.BURNING_BULWARK, Moves.POWER_GEM, Moves.SOLAR_BEAM, Moves.MAGMA_STORM ], - [Species.SWINUB]: [ Moves.SLACK_OFF, Moves.LANDS_WRATH, Moves.MIGHTY_CLEAVE, Moves.GLACIAL_LANCE ], + [Species.SWINUB]: [ Moves.SLACK_OFF, Moves.LANDS_WRATH, Moves.STONE_AXE, Moves.GLACIAL_LANCE ], [Species.CORSOLA]: [ Moves.SCALD, Moves.FREEZE_DRY, Moves.STRENGTH_SAP, Moves.SALT_CURE ], [Species.REMORAID]: [ Moves.WATER_SHURIKEN, Moves.TAKE_HEART, Moves.SHELL_SIDE_ARM, Moves.BOUNCY_BUBBLE ], [Species.DELIBIRD]: [ Moves.BONEMERANG, Moves.FLOATY_FALL, Moves.VICTORY_DANCE, Moves.GLACIAL_LANCE ], [Species.SKARMORY]: [ Moves.ROOST, Moves.BODY_PRESS, Moves.SPIKY_SHIELD, Moves.BEAK_BLAST ], - [Species.HOUNDOUR]: [ Moves.MOONLIGHT, Moves.FIERY_WRATH, Moves.SECRET_SWORD, Moves.HYDRO_STEAM ], - [Species.PHANPY]: [ Moves.SHORE_UP, Moves.SWORDS_DANCE, Moves.ICICLE_CRASH, Moves.COLLISION_COURSE ], + [Species.HOUNDOUR]: [ Moves.EARTH_POWER, Moves.THUNDERBOLT, Moves.MOONBLAST, Moves.FIERY_WRATH ], + [Species.PHANPY]: [ Moves.SHORE_UP, Moves.SWORDS_DANCE, Moves.MOUNTAIN_GALE, Moves.COLLISION_COURSE ], [Species.STANTLER]: [ Moves.THUNDEROUS_KICK, Moves.PHOTON_GEYSER, Moves.SWORDS_DANCE, Moves.BOOMBURST ], [Species.SMEARGLE]: [ Moves.CONVERSION, Moves.BURNING_BULWARK, Moves.SALT_CURE, Moves.DARK_VOID ], [Species.TYROGUE]: [ Moves.VICTORY_DANCE, Moves.THUNDEROUS_KICK, Moves.METEOR_MASH, Moves.WICKED_BLOW ], - [Species.SMOOCHUM]: [ Moves.EXPANDING_FORCE, Moves.AURA_SPHERE, Moves.FREEZE_DRY, Moves.QUIVER_DANCE ], + [Species.SMOOCHUM]: [ Moves.LUSTER_PURGE, Moves.AURA_SPHERE, Moves.FREEZE_DRY, Moves.QUIVER_DANCE ], [Species.ELEKID]: [ Moves.FIRE_LASH, Moves.ZING_ZAP, Moves.MOUNTAIN_GALE, Moves.SHIFT_GEAR ], - [Species.MAGBY]: [ Moves.THUNDERCLAP, Moves.EARTH_POWER, Moves.ARMOR_CANNON, Moves.FLEUR_CANNON ], - [Species.MILTANK]: [ Moves.BODY_PRESS, Moves.BULK_UP, Moves.YAWN, Moves.SIZZLY_SLIDE ], + [Species.MAGBY]: [ Moves.THUNDERCLAP, Moves.EARTH_POWER, Moves.ENERGY_BALL, Moves.BLUE_FLARE ], + [Species.MILTANK]: [ Moves.BODY_PRESS, Moves.BULK_UP, Moves.KNOCK_OFF, Moves.SIZZLY_SLIDE ], [Species.RAIKOU]: [ Moves.PARABOLIC_CHARGE, Moves.NASTY_PLOT, Moves.FROST_BREATH, Moves.ELECTRO_DRIFT ], - [Species.ENTEI]: [ Moves.BURNING_BULWARK, Moves.DRAGON_DANCE, Moves.EARTHQUAKE, Moves.MIGHTY_CLEAVE ], + [Species.ENTEI]: [ Moves.BURNING_BULWARK, Moves.DRAGON_DANCE, Moves.EARTHQUAKE, Moves.PYRO_BALL ], [Species.SUICUNE]: [ Moves.RECOVER, Moves.NASTY_PLOT, Moves.FREEZE_DRY, Moves.STEAM_ERUPTION ], [Species.LARVITAR]: [ Moves.DRAGON_DANCE, Moves.MOUNTAIN_GALE, Moves.SHORE_UP, Moves.DIAMOND_STORM ], [Species.LUGIA]: [ Moves.NASTY_PLOT, Moves.LUMINA_CRASH, Moves.AURA_SPHERE, Moves.OBLIVION_WING ], [Species.HO_OH]: [ Moves.BRAVE_BIRD, Moves.DRAGON_DANCE, Moves.REVIVAL_BLESSING, Moves.BOLT_BEAK ], [Species.CELEBI]: [ Moves.PHOTON_GEYSER, Moves.MATCHA_GOTCHA, Moves.REVIVAL_BLESSING, Moves.QUIVER_DANCE ], - [Species.TREECKO]: [ Moves.NASTY_PLOT, Moves.APPLE_ACID, Moves.SECRET_SWORD, Moves.DRAGON_ENERGY ], - [Species.TORCHIC]: [ Moves.HIGH_JUMP_KICK, Moves.SUPERCELL_SLAM, Moves.BURNING_BULWARK, Moves.V_CREATE ], - [Species.MUDKIP]: [ Moves.SHORE_UP, Moves.MOUNTAIN_GALE, Moves.BULK_UP, Moves.SURGING_STRIKES ], + + [Species.TREECKO]: [ Moves.NASTY_PLOT, Moves.CORE_ENFORCER, Moves.FLAMETHROWER, Moves.SEED_FLARE ], + [Species.TORCHIC]: [ Moves.THUNDEROUS_KICK, Moves.ZING_ZAP, Moves.BURNING_BULWARK, Moves.PYRO_BALL ], + [Species.MUDKIP]: [ Moves.SHORE_UP, Moves.MOUNTAIN_GALE, Moves.AQUA_STEP, Moves.PRECIPICE_BLADES ], [Species.POOCHYENA]: [ Moves.JAW_LOCK, Moves.CLOSE_COMBAT, Moves.DIRE_CLAW, Moves.NO_RETREAT ], [Species.ZIGZAGOON]: [ Moves.EXTREME_SPEED, Moves.NUZZLE, Moves.HIGH_HORSEPOWER, Moves.TIDY_UP ], [Species.WURMPLE]: [ Moves.BATON_PASS, Moves.BLEAKWIND_STORM, Moves.STORED_POWER, Moves.MALIGNANT_CHAIN ], @@ -151,35 +153,35 @@ export const speciesEggMoves = { [Species.MAWILE]: [ Moves.BULLET_PUNCH, Moves.MAGICAL_TORQUE, Moves.EARTHQUAKE, Moves.SHIFT_GEAR ], [Species.ARON]: [ Moves.HEAD_SMASH, Moves.BODY_PRESS, Moves.SHORE_UP, Moves.SALT_CURE ], [Species.MEDITITE]: [ Moves.THUNDEROUS_KICK, Moves.SUCKER_PUNCH, Moves.BULLET_PUNCH, Moves.PHOTON_GEYSER ], - [Species.ELECTRIKE]: [ Moves.RISING_VOLTAGE, Moves.FLAMETHROWER, Moves.NASTY_PLOT, Moves.ICE_BEAM ], + [Species.ELECTRIKE]: [ Moves.FROST_BREATH, Moves.HEAT_WAVE, Moves.NASTY_PLOT, Moves.ELECTRO_DRIFT ], [Species.PLUSLE]: [ Moves.FLAMETHROWER, Moves.GLITZY_GLOW, Moves.SPLISHY_SPLASH, Moves.TAIL_GLOW ], [Species.MINUN]: [ Moves.ICE_BEAM, Moves.BADDY_BAD, Moves.SPARKLY_SWIRL, Moves.TAIL_GLOW ], [Species.VOLBEAT]: [ Moves.BATON_PASS, Moves.STICKY_WEB, Moves.DECORATE, Moves.VICTORY_DANCE ], [Species.ILLUMISE]: [ Moves.PARTING_SHOT, Moves.GLITZY_GLOW, Moves.POWDER, Moves.QUIVER_DANCE ], - [Species.GULPIN]: [ Moves.STRENGTH_SAP, Moves.EARTH_POWER, Moves.CALM_MIND, Moves.MALIGNANT_CHAIN ], + [Species.GULPIN]: [ Moves.MALIGNANT_CHAIN, Moves.EARTH_POWER, Moves.CALM_MIND, Moves.STRENGTH_SAP ], [Species.CARVANHA]: [ Moves.THUNDER_FANG, Moves.SWORDS_DANCE, Moves.OBSTRUCT, Moves.SURGING_STRIKES ], - [Species.WAILMER]: [ Moves.TAKE_HEART, Moves.BOUNCY_BUBBLE, Moves.SLACK_OFF, Moves.COMEUPPANCE ], - [Species.NUMEL]: [ Moves.TRICK_ROOM, Moves.ENERGY_BALL, Moves.MORNING_SUN, Moves.BLUE_FLARE ], + [Species.WAILMER]: [ Moves.TAKE_HEART, Moves.COMEUPPANCE, Moves.SLACK_OFF, Moves.STEAM_ERUPTION ], + [Species.NUMEL]: [ Moves.TRICK_ROOM, Moves.ENERGY_BALL, Moves.SLACK_OFF, Moves.BLUE_FLARE ], [Species.TORKOAL]: [ Moves.MORNING_SUN, Moves.BURNING_BULWARK, Moves.BODY_PRESS, Moves.HYDRO_STEAM ], [Species.SPOINK]: [ Moves.AURA_SPHERE, Moves.MILK_DRINK, Moves.EXPANDING_FORCE, Moves.TAIL_GLOW ], [Species.SPINDA]: [ Moves.SUPERPOWER, Moves.SLACK_OFF, Moves.FLEUR_CANNON, Moves.V_CREATE ], [Species.TRAPINCH]: [ Moves.FIRE_LASH, Moves.DRAGON_DARTS, Moves.THOUSAND_ARROWS, Moves.DRAGON_ENERGY ], - [Species.CACNEA]: [ Moves.EARTH_POWER, Moves.CEASELESS_EDGE, Moves.NIGHT_DAZE, Moves.IVY_CUDGEL ], + [Species.CACNEA]: [ Moves.EARTH_POWER, Moves.CEASELESS_EDGE, Moves.NIGHT_DAZE, Moves.SAPPY_SEED ], [Species.SWABLU]: [ Moves.ROOST, Moves.NASTY_PLOT, Moves.FLOATY_FALL, Moves.BOOMBURST ], [Species.ZANGOOSE]: [ Moves.FACADE, Moves.HIGH_HORSEPOWER, Moves.EXTREME_SPEED, Moves.TIDY_UP ], [Species.SEVIPER]: [ Moves.ICE_BEAM, Moves.BITTER_BLADE, Moves.SUCKER_PUNCH, Moves.NO_RETREAT ], - [Species.LUNATONE]: [ Moves.POWER_GEM, Moves.MOONGEIST_BEAM, Moves.SHELL_SMASH, Moves.LUMINA_CRASH ], - [Species.SOLROCK]: [ Moves.PSYSHIELD_BASH, Moves.MIGHTY_CLEAVE, Moves.SHELL_SMASH, Moves.SACRED_FIRE ], + [Species.LUNATONE]: [ Moves.REVELATION_DANCE, Moves.MOONGEIST_BEAM, Moves.SHELL_SMASH, Moves.LUMINA_CRASH ], + [Species.SOLROCK]: [ Moves.MIGHTY_CLEAVE, Moves.PHOTON_GEYSER, Moves.SHELL_SMASH, Moves.SACRED_FIRE ], [Species.BARBOACH]: [ Moves.DRAGON_DANCE, Moves.ZING_ZAP, Moves.ICE_SPINNER, Moves.SURGING_STRIKES ], - [Species.CORPHISH]: [ Moves.CEASELESS_EDGE, Moves.JET_PUNCH, Moves.SUCKER_PUNCH, Moves.SHELL_SMASH ], - [Species.BALTOY]: [ Moves.RECOVER, Moves.STORED_POWER, Moves.BODY_PRESS, Moves.MYSTICAL_POWER ], + [Species.CORPHISH]: [ Moves.CEASELESS_EDGE, Moves.SHELL_SIDE_ARM, Moves.SUCKER_PUNCH, Moves.JET_PUNCH ], + [Species.BALTOY]: [ Moves.RECOVER, Moves.GLARE, Moves.RUINATION, Moves.MYSTICAL_POWER ], [Species.LILEEP]: [ Moves.POWER_GEM, Moves.SCALD, Moves.STRENGTH_SAP, Moves.SAPPY_SEED ], [Species.ANORITH]: [ Moves.FIRST_IMPRESSION, Moves.LEECH_LIFE, Moves.DRAGON_DANCE, Moves.MIGHTY_CLEAVE ], [Species.FEEBAS]: [ Moves.CALM_MIND, Moves.FREEZE_DRY, Moves.MOONBLAST, Moves.STEAM_ERUPTION ], [Species.CASTFORM]: [ Moves.BOOMBURST, Moves.HYDRO_STEAM, Moves.ERUPTION, Moves.QUIVER_DANCE ], [Species.KECLEON]: [ Moves.ZIPPY_ZAP, Moves.COIL, Moves.EXTREME_SPEED, Moves.MULTI_ATTACK ], [Species.SHUPPET]: [ Moves.STORM_THROW, Moves.TIDY_UP, Moves.PARTING_SHOT, Moves.SPECTRAL_THIEF ], - [Species.DUSKULL]: [ Moves.BULK_UP, Moves.DRAIN_PUNCH, Moves.STRENGTH_SAP, Moves.RAGE_FIST ], + [Species.DUSKULL]: [ Moves.BULK_UP, Moves.DRAIN_PUNCH, Moves.RECOVER, Moves.RAGE_FIST ], [Species.TROPIUS]: [ Moves.STUFF_CHEEKS, Moves.EARTH_POWER, Moves.APPLE_ACID, Moves.SAPPY_SEED ], [Species.ABSOL]: [ Moves.KOWTOW_CLEAVE, Moves.SACRED_SWORD, Moves.PSYBLADE, Moves.BITTER_BLADE ], [Species.WYNAUT]: [ Moves.RECOVER, Moves.SHED_TAIL, Moves.TAUNT, Moves.COMEUPPANCE ], @@ -188,21 +190,22 @@ export const speciesEggMoves = { [Species.CLAMPERL]: [ Moves.SHELL_SIDE_ARM, Moves.BOUNCY_BUBBLE, Moves.FREEZE_DRY, Moves.STEAM_ERUPTION ], [Species.RELICANTH]: [ Moves.DRAGON_DANCE, Moves.SHORE_UP, Moves.WAVE_CRASH, Moves.DIAMOND_STORM ], [Species.LUVDISC]: [ Moves.BATON_PASS, Moves.HEART_SWAP, Moves.GLITZY_GLOW, Moves.REVIVAL_BLESSING ], - [Species.BAGON]: [ Moves.FLOATY_FALL, Moves.FIRE_LASH, Moves.DRAGON_DANCE, Moves.GLAIVE_RUSH ], + [Species.BAGON]: [ Moves.FLOATY_FALL, Moves.FIRE_LASH, Moves.DRAGON_DANCE, Moves.DRAGON_DARTS ], [Species.BELDUM]: [ Moves.HEADLONG_RUSH, Moves.DRAIN_PUNCH, Moves.TRIPLE_AXEL, Moves.SHIFT_GEAR ], [Species.REGIROCK]: [ Moves.STONE_AXE, Moves.BODY_PRESS, Moves.SHORE_UP, Moves.SALT_CURE ], [Species.REGICE]: [ Moves.EARTH_POWER, Moves.TAKE_HEART, Moves.RECOVER, Moves.FREEZE_DRY ], [Species.REGISTEEL]: [ Moves.BODY_PRESS, Moves.SIZZLY_SLIDE, Moves.RECOVER, Moves.GIGATON_HAMMER ], [Species.LATIAS]: [ Moves.CORE_ENFORCER, Moves.FUSION_FLARE, Moves.SPARKLY_SWIRL, Moves.MYSTICAL_POWER ], [Species.LATIOS]: [ Moves.CORE_ENFORCER, Moves.BLUE_FLARE, Moves.NASTY_PLOT, Moves.TACHYON_CUTTER ], - [Species.KYOGRE]: [ Moves.RECOVER, Moves.HURRICANE, Moves.FREEZY_FROST, Moves.WILDBOLT_STORM ], + [Species.KYOGRE]: [ Moves.WILDBOLT_STORM, Moves.HURRICANE, Moves.FREEZY_FROST, Moves.BOUNCY_BUBBLE ], [Species.GROUDON]: [ Moves.STONE_AXE, Moves.SOLAR_BLADE, Moves.MORNING_SUN, Moves.SACRED_FIRE ], [Species.RAYQUAZA]: [ Moves.V_CREATE, Moves.DRAGON_DARTS, Moves.CORE_ENFORCER, Moves.OBLIVION_WING ], [Species.JIRACHI]: [ Moves.TACHYON_CUTTER, Moves.TRIPLE_ARROWS, Moves.ROCK_SLIDE, Moves.SHELL_SMASH ], - [Species.DEOXYS]: [ Moves.COLLISION_COURSE, Moves.EARTH_POWER, Moves.PARTING_SHOT, Moves.LUMINA_CRASH ], + [Species.DEOXYS]: [ Moves.COLLISION_COURSE, Moves.FUSION_FLARE, Moves.PARTING_SHOT, Moves.LUMINA_CRASH ], + [Species.TURTWIG]: [ Moves.SHELL_SMASH, Moves.MIGHTY_CLEAVE, Moves.ICE_SPINNER, Moves.SAPPY_SEED ], [Species.CHIMCHAR]: [ Moves.FIERY_DANCE, Moves.SECRET_SWORD, Moves.TRIPLE_AXEL, Moves.SACRED_FIRE ], - [Species.PIPLUP]: [ Moves.KINGS_SHIELD, Moves.TACHYON_CUTTER, Moves.ROOST, Moves.STEAM_ERUPTION ], + [Species.PIPLUP]: [ Moves.KINGS_SHIELD, Moves.TACHYON_CUTTER, Moves.FREEZE_DRY, Moves.STEAM_ERUPTION ], [Species.STARLY]: [ Moves.SWORDS_DANCE, Moves.HEAD_CHARGE, Moves.FLARE_BLITZ, Moves.EXTREME_SPEED ], [Species.BIDOOF]: [ Moves.EXTREME_SPEED, Moves.COSMIC_POWER, Moves.POWER_TRIP, Moves.AQUA_STEP ], [Species.KRICKETOT]: [ Moves.BONEMERANG, Moves.VICTORY_DANCE, Moves.STONE_AXE, Moves.POPULATION_BOMB ], @@ -214,7 +217,7 @@ export const speciesEggMoves = { [Species.COMBEE]: [ Moves.SPORE, Moves.FLOATY_FALL, Moves.KINGS_SHIELD, Moves.VICTORY_DANCE ], [Species.PACHIRISU]: [ Moves.FREEZY_FROST, Moves.SIZZLY_SLIDE, Moves.SLACK_OFF, Moves.ZIPPY_ZAP ], [Species.BUIZEL]: [ Moves.JET_PUNCH, Moves.TRIPLE_AXEL, Moves.SUPERCELL_SLAM, Moves.SURGING_STRIKES ], - [Species.CHERUBI]: [ Moves.SPORE, Moves.STRENGTH_SAP, Moves.FIRE_LASH, Moves.FLOWER_TRICK ], + [Species.CHERUBI]: [ Moves.SLEEP_POWDER, Moves.STRENGTH_SAP, Moves.FIRE_LASH, Moves.FLOWER_TRICK ], [Species.SHELLOS]: [ Moves.BOUNCY_BUBBLE, Moves.SCORCHING_SANDS, Moves.FREEZE_DRY, Moves.STEAM_ERUPTION ], [Species.DRIFLOON]: [ Moves.WILL_O_WISP, Moves.MIND_BLOWN, Moves.CALM_MIND, Moves.OBLIVION_WING ], [Species.BUNEARY]: [ Moves.TRIPLE_AXEL, Moves.SWORDS_DANCE, Moves.THUNDEROUS_KICK, Moves.MULTI_ATTACK ], @@ -225,36 +228,37 @@ export const speciesEggMoves = { [Species.BONSLY]: [ Moves.ACCELEROCK, Moves.SWORDS_DANCE, Moves.STRENGTH_SAP, Moves.SAPPY_SEED ], [Species.MIME_JR]: [ Moves.CHILLY_RECEPTION, Moves.MOONBLAST, Moves.FROST_BREATH, Moves.LUMINA_CRASH ], [Species.HAPPINY]: [ Moves.COTTON_GUARD, Moves.SEISMIC_TOSS, Moves.SIZZLY_SLIDE, Moves.REVIVAL_BLESSING ], - [Species.CHATOT]: [ Moves.SPARKLING_ARIA, Moves.TORCH_SONG, Moves.BATON_PASS, Moves.BOOMBURST ], + [Species.CHATOT]: [ Moves.SPARKLING_ARIA, Moves.BOOMBURST, Moves.BATON_PASS, Moves.TORCH_SONG ], [Species.SPIRITOMB]: [ Moves.PARTING_SHOT, Moves.BADDY_BAD, Moves.STRENGTH_SAP, Moves.SPECTRAL_THIEF ], - [Species.GIBLE]: [ Moves.DRAGON_DANCE, Moves.BITTER_BLADE, Moves.SHORE_UP, Moves.THOUSAND_ARROWS ], + [Species.GIBLE]: [ Moves.DRAGON_DANCE, Moves.BITTER_BLADE, Moves.DRAGON_HAMMER, Moves.PRECIPICE_BLADES ], [Species.MUNCHLAX]: [ Moves.STUFF_CHEEKS, Moves.GRAV_APPLE, Moves.SLACK_OFF, Moves.EXTREME_SPEED ], - [Species.RIOLU]: [ Moves.THUNDEROUS_KICK, Moves.TACHYON_CUTTER, Moves.TRIPLE_AXEL, Moves.DOUBLE_IRON_BASH ], + [Species.RIOLU]: [ Moves.THUNDEROUS_KICK, Moves.TACHYON_CUTTER, Moves.TRIPLE_AXEL, Moves.SUNSTEEL_STRIKE ], [Species.HIPPOPOTAS]: [ Moves.SHORE_UP, Moves.STONE_AXE, Moves.BULK_UP, Moves.SALT_CURE ], [Species.SKORUPI]: [ Moves.COIL, Moves.DIRE_CLAW, Moves.CRABHAMMER, Moves.WICKED_BLOW ], [Species.CROAGUNK]: [ Moves.DIRE_CLAW, Moves.ICE_SPINNER, Moves.THUNDEROUS_KICK, Moves.VICTORY_DANCE ], [Species.CARNIVINE]: [ Moves.STRENGTH_SAP, Moves.FIRE_LASH, Moves.COIL, Moves.SAPPY_SEED ], [Species.FINNEON]: [ Moves.QUIVER_DANCE, Moves.BOUNCY_BUBBLE, Moves.FREEZE_DRY, Moves.ORIGIN_PULSE ], [Species.MANTYKE]: [ Moves.SPLISHY_SPLASH, Moves.FREEZY_FROST, Moves.NASTY_PLOT, Moves.OBLIVION_WING ], - [Species.SNOVER]: [ Moves.HIGH_HORSEPOWER, Moves.STRENGTH_SAP, Moves.MATCHA_GOTCHA, Moves.SAPPY_SEED ], + [Species.SNOVER]: [ Moves.LANDS_WRATH, Moves.POWDER, Moves.CALM_MIND, Moves.MATCHA_GOTCHA ], [Species.ROTOM]: [ Moves.STRENGTH_SAP, Moves.FIERY_DANCE, Moves.SPLISHY_SPLASH, Moves.ELECTRO_DRIFT ], - [Species.UXIE]: [ Moves.COSMIC_POWER, Moves.BODY_PRESS, Moves.RECOVER, Moves.SPARKLY_SWIRL ], + [Species.UXIE]: [ Moves.COSMIC_POWER, Moves.SECRET_SWORD, Moves.RECOVER, Moves.SPARKLY_SWIRL ], [Species.MESPRIT]: [ Moves.TAIL_GLOW, Moves.AURA_SPHERE, Moves.RECOVER, Moves.LUMINA_CRASH ], [Species.AZELF]: [ Moves.PSYSTRIKE, Moves.ICE_BEAM, Moves.MOONBLAST, Moves.TAIL_GLOW ], [Species.DIALGA]: [ Moves.CORE_ENFORCER, Moves.TAKE_HEART, Moves.RECOVER, Moves.MAKE_IT_RAIN ], - [Species.PALKIA]: [ Moves.RECOVER, Moves.TAKE_HEART, Moves.FREEZE_DRY, Moves.ORIGIN_PULSE ], - [Species.HEATRAN]: [ Moves.MATCHA_GOTCHA, Moves.RECOVER, Moves.TACHYON_CUTTER, Moves.TORCH_SONG ], + [Species.PALKIA]: [ Moves.MALIGNANT_CHAIN, Moves.TAKE_HEART, Moves.RECOVER, Moves.ORIGIN_PULSE ], + [Species.HEATRAN]: [ Moves.MATCHA_GOTCHA, Moves.RECOVER, Moves.ERUPTION, Moves.TACHYON_CUTTER ], [Species.REGIGIGAS]: [ Moves.SKILL_SWAP, Moves.RECOVER, Moves.EXTREME_SPEED, Moves.GIGATON_HAMMER ], [Species.GIRATINA]: [ Moves.DRAGON_DANCE, Moves.GLAIVE_RUSH, Moves.RECOVER, Moves.SPECTRAL_THIEF ], - [Species.CRESSELIA]: [ Moves.COSMIC_POWER, Moves.SECRET_SWORD, Moves.SIZZLY_SLIDE, Moves.LUMINA_CRASH ], - [Species.PHIONE]: [ Moves.BOUNCY_BUBBLE, Moves.FREEZE_DRY, Moves.SPLISHY_SPLASH, Moves.QUIVER_DANCE ], - [Species.MANAPHY]: [ Moves.BOUNCY_BUBBLE, Moves.FREEZE_DRY, Moves.SPLISHY_SPLASH, Moves.QUIVER_DANCE ], + [Species.CRESSELIA]: [ Moves.COSMIC_POWER, Moves.BODY_PRESS, Moves.SIZZLY_SLIDE, Moves.LUMINA_CRASH ], + [Species.PHIONE]: [ Moves.BOUNCY_BUBBLE, Moves.FREEZE_DRY, Moves.STORED_POWER, Moves.ORIGIN_PULSE ], + [Species.MANAPHY]: [ Moves.BOUNCY_BUBBLE, Moves.FROST_BREATH, Moves.WILDBOLT_STORM, Moves.ORIGIN_PULSE ], [Species.DARKRAI]: [ Moves.FIERY_WRATH, Moves.MOONBLAST, Moves.FIERY_DANCE, Moves.MAKE_IT_RAIN ], [Species.SHAYMIN]: [ Moves.MATCHA_GOTCHA, Moves.FIERY_DANCE, Moves.AEROBLAST, Moves.QUIVER_DANCE ], [Species.ARCEUS]: [ Moves.NO_RETREAT, Moves.COLLISION_COURSE, Moves.ASTRAL_BARRAGE, Moves.MULTI_ATTACK ], + [Species.VICTINI]: [ Moves.BLUE_FLARE, Moves.BOLT_STRIKE, Moves.LUSTER_PURGE, Moves.VICTORY_DANCE ], [Species.SNIVY]: [ Moves.FLAMETHROWER, Moves.CLANGING_SCALES, Moves.MAKE_IT_RAIN, Moves.FLEUR_CANNON ], - [Species.TEPIG]: [ Moves.WAVE_CRASH, Moves.VOLT_TACKLE, Moves.DRAIN_PUNCH, Moves.VICTORY_DANCE ], + [Species.TEPIG]: [ Moves.WAVE_CRASH, Moves.VOLT_TACKLE, Moves.AXE_KICK, Moves.VICTORY_DANCE ], [Species.OSHAWOTT]: [ Moves.TRIPLE_AXEL, Moves.SHELL_SIDE_ARM, Moves.SACRED_SWORD, Moves.SHELL_SMASH ], [Species.PATRAT]: [ Moves.FAKE_OUT, Moves.SWORDS_DANCE, Moves.DYNAMIC_PUNCH, Moves.EXTREME_SPEED ], [Species.LILLIPUP]: [ Moves.CLOSE_COMBAT, Moves.BODY_SLAM, Moves.HIGH_HORSEPOWER, Moves.LAST_RESPECTS ], @@ -262,13 +266,13 @@ export const speciesEggMoves = { [Species.PANSAGE]: [ Moves.SWORDS_DANCE, Moves.FIRE_LASH, Moves.EARTHQUAKE, Moves.IVY_CUDGEL ], [Species.PANSEAR]: [ Moves.NASTY_PLOT, Moves.HYDRO_STEAM, Moves.SCORCHING_SANDS, Moves.TORCH_SONG ], [Species.PANPOUR]: [ Moves.NASTY_PLOT, Moves.ENERGY_BALL, Moves.EARTH_POWER, Moves.STEAM_ERUPTION ], - [Species.MUNNA]: [ Moves.COSMIC_POWER, Moves.AURA_SPHERE, Moves.EARTH_POWER, Moves.MYSTICAL_POWER ], + [Species.MUNNA]: [ Moves.COSMIC_POWER, Moves.AURA_SPHERE, Moves.LUNAR_BLESSING, Moves.MYSTICAL_POWER ], [Species.PIDOVE]: [ Moves.GUNK_SHOT, Moves.TIDY_UP, Moves.FLOATY_FALL, Moves.TRIPLE_ARROWS ], [Species.BLITZLE]: [ Moves.HORN_LEECH, Moves.SWORDS_DANCE, Moves.FLARE_BLITZ, Moves.BOLT_STRIKE ], [Species.ROGGENROLA]: [ Moves.BODY_PRESS, Moves.CURSE, Moves.SHORE_UP, Moves.DIAMOND_STORM ], [Species.WOOBAT]: [ Moves.ESPER_WING, Moves.STORED_POWER, Moves.MYSTICAL_FIRE, Moves.OBLIVION_WING ], - [Species.DRILBUR]: [ Moves.IRON_HEAD, Moves.MOUNTAIN_GALE, Moves.SHIFT_GEAR, Moves.THOUSAND_ARROWS ], - [Species.AUDINO]: [ Moves.FOLLOW_ME, Moves.MOONBLAST, Moves.WISH, Moves.LUNAR_BLESSING ], + [Species.DRILBUR]: [ Moves.METEOR_MASH, Moves.MOUNTAIN_GALE, Moves.SHIFT_GEAR, Moves.PRECIPICE_BLADES ], + [Species.AUDINO]: [ Moves.TAKE_HEART, Moves.MOONBLAST, Moves.WISH, Moves.MATCHA_GOTCHA ], [Species.TIMBURR]: [ Moves.MACH_PUNCH, Moves.DRAIN_PUNCH, Moves.ICE_HAMMER, Moves.DOUBLE_IRON_BASH ], [Species.TYMPOLE]: [ Moves.JET_PUNCH, Moves.HIGH_HORSEPOWER, Moves.BULK_UP, Moves.SURGING_STRIKES ], [Species.THROH]: [ Moves.MACH_PUNCH, Moves.SLACK_OFF, Moves.METEOR_MASH, Moves.RAGE_FIST ], @@ -278,41 +282,41 @@ export const speciesEggMoves = { [Species.COTTONEE]: [ Moves.POLLEN_PUFF, Moves.PARTING_SHOT, Moves.SLEEP_POWDER, Moves.SEED_FLARE ], [Species.PETILIL]: [ Moves.THUNDEROUS_KICK, Moves.SPARKLING_ARIA, Moves.FIERY_DANCE, Moves.FLOWER_TRICK ], [Species.BASCULIN]: [ Moves.LAST_RESPECTS, Moves.CLOSE_COMBAT, Moves.SPLISHY_SPLASH, Moves.NO_RETREAT ], - [Species.SANDILE]: [ Moves.DIRE_CLAW, Moves.HIGH_HORSEPOWER, Moves.FIRE_LASH, Moves.WICKED_BLOW ], - [Species.DARUMAKA]: [ Moves.DRAIN_PUNCH, Moves.ZIPPY_ZAP, Moves.EARTHQUAKE, Moves.PYRO_BALL ], + [Species.SANDILE]: [ Moves.DIRE_CLAW, Moves.HEADLONG_RUSH, Moves.FIRE_LASH, Moves.WICKED_BLOW ], + [Species.DARUMAKA]: [ Moves.DRAIN_PUNCH, Moves.ZIPPY_ZAP, Moves.HEADLONG_RUSH, Moves.PYRO_BALL ], [Species.MARACTUS]: [ Moves.EARTH_POWER, Moves.QUIVER_DANCE, Moves.FIERY_DANCE, Moves.SEED_FLARE ], [Species.DWEBBLE]: [ Moves.CRABHAMMER, Moves.STONE_AXE, Moves.LEECH_LIFE, Moves.MIGHTY_CLEAVE ], [Species.SCRAGGY]: [ Moves.SUCKER_PUNCH, Moves.BULLET_PUNCH, Moves.NOXIOUS_TORQUE, Moves.VICTORY_DANCE ], - [Species.SIGILYPH]: [ Moves.MOONBLAST, Moves.CALM_MIND, Moves.FREEZING_GLARE, Moves.OBLIVION_WING ], + [Species.SIGILYPH]: [ Moves.MOONBLAST, Moves.CALM_MIND, Moves.ESPER_WING, Moves.OBLIVION_WING ], [Species.YAMASK]: [ Moves.STRENGTH_SAP, Moves.GLARE, Moves.AURA_SPHERE, Moves.ASTRAL_BARRAGE ], [Species.TIRTOUGA]: [ Moves.ICE_SPINNER, Moves.AQUA_STEP, Moves.SHORE_UP, Moves.MIGHTY_CLEAVE ], [Species.ARCHEN]: [ Moves.ROOST, Moves.EARTHQUAKE, Moves.FLOATY_FALL, Moves.MIGHTY_CLEAVE ], [Species.TRUBBISH]: [ Moves.COIL, Moves.RECOVER, Moves.DIRE_CLAW, Moves.GIGATON_HAMMER ], - [Species.ZORUA]: [ Moves.FLAMETHROWER, Moves.MOONBLAST, Moves.AURA_SPHERE, Moves.FIERY_WRATH ], + [Species.ZORUA]: [ Moves.MALIGNANT_CHAIN, Moves.MOONBLAST, Moves.SECRET_SWORD, Moves.FIERY_WRATH ], [Species.MINCCINO]: [ Moves.ICICLE_SPEAR, Moves.TIDY_UP, Moves.KNOCK_OFF, Moves.POPULATION_BOMB ], [Species.GOTHITA]: [ Moves.RECOVER, Moves.MOONBLAST, Moves.AURA_SPHERE, Moves.LUMINA_CRASH ], - [Species.SOLOSIS]: [ Moves.EXPANDING_FORCE, Moves.TRICK_ROOM, Moves.AURA_SPHERE, Moves.LIGHT_OF_RUIN ], - [Species.DUCKLETT]: [ Moves.SPLISHY_SPLASH, Moves.EARTH_POWER, Moves.WILDBOLT_STORM, Moves.QUIVER_DANCE ], + [Species.SOLOSIS]: [ Moves.MIST_BALL, Moves.SPEED_SWAP, Moves.FLAMETHROWER, Moves.LIGHT_OF_RUIN ], + [Species.DUCKLETT]: [ Moves.SPLISHY_SPLASH, Moves.SANDSEAR_STORM, Moves.WILDBOLT_STORM, Moves.QUIVER_DANCE ], [Species.VANILLITE]: [ Moves.EARTH_POWER, Moves.AURORA_VEIL, Moves.CALM_MIND, Moves.SPARKLY_SWIRL ], [Species.DEERLING]: [ Moves.TIDY_UP, Moves.FLOWER_TRICK, Moves.BODY_SLAM, Moves.COMBAT_TORQUE ], - [Species.EMOLGA]: [ Moves.TRIPLE_AXEL, Moves.SPLISHY_SPLASH, Moves.FLOATY_FALL, Moves.AURA_WHEEL ], - [Species.KARRABLAST]: [ Moves.LEECH_LIFE, Moves.BITTER_BLADE, Moves.HIGH_HORSEPOWER, Moves.DOUBLE_IRON_BASH ], + [Species.EMOLGA]: [ Moves.ICICLE_CRASH, Moves.ZING_ZAP, Moves.FLOATY_FALL, Moves.ELECTRIFY ], + [Species.KARRABLAST]: [ Moves.LEECH_LIFE, Moves.BITTER_BLADE, Moves.OBSTRUCT, Moves.DOUBLE_IRON_BASH ], [Species.FOONGUS]: [ Moves.POLLEN_PUFF, Moves.PARTING_SHOT, Moves.FOUL_PLAY, Moves.SAPPY_SEED ], - [Species.FRILLISH]: [ Moves.STRENGTH_SAP, Moves.BUZZY_BUZZ, Moves.FREEZE_DRY, Moves.STEAM_ERUPTION ], + [Species.FRILLISH]: [ Moves.CALM_MIND, Moves.BUZZY_BUZZ, Moves.FREEZE_DRY, Moves.STEAM_ERUPTION ], [Species.ALOMOMOLA]: [ Moves.FLIP_TURN, Moves.HEART_SWAP, Moves.GLITZY_GLOW, Moves.REVIVAL_BLESSING ], [Species.JOLTIK]: [ Moves.WILDBOLT_STORM, Moves.PARABOLIC_CHARGE, Moves.EARTH_POWER, Moves.QUIVER_DANCE ], - [Species.FERROSEED]: [ Moves.STRENGTH_SAP, Moves.BODY_PRESS, Moves.SPIKY_SHIELD, Moves.SAPPY_SEED ], - [Species.KLINK]: [ Moves.TRIPLE_AXEL, Moves.HIGH_HORSEPOWER, Moves.FUSION_BOLT, Moves.DOUBLE_IRON_BASH ], + [Species.FERROSEED]: [ Moves.SYNTHESIS, Moves.COMBAT_TORQUE, Moves.SPIKY_SHIELD, Moves.SAPPY_SEED ], + [Species.KLINK]: [ Moves.TRIPLE_AXEL, Moves.HIGH_HORSEPOWER, Moves.RECOVER, Moves.AURA_WHEEL ], [Species.TYNAMO]: [ Moves.SCALD, Moves.STRENGTH_SAP, Moves.FIRE_LASH, Moves.AURA_WHEEL ], - [Species.ELGYEM]: [ Moves.LUSTER_PURGE, Moves.BADDY_BAD, Moves.AURA_SPHERE, Moves.TAIL_GLOW ], - [Species.LITWICK]: [ Moves.FIERY_DANCE, Moves.EARTH_POWER, Moves.MOONBLAST, Moves.ASTRAL_BARRAGE ], + [Species.ELGYEM]: [ Moves.THUNDERCLAP, Moves.BADDY_BAD, Moves.AURA_SPHERE, Moves.PHOTON_GEYSER ], + [Species.LITWICK]: [ Moves.PARTING_SHOT, Moves.EARTH_POWER, Moves.MOONBLAST, Moves.TORCH_SONG ], [Species.AXEW]: [ Moves.STONE_AXE, Moves.DIRE_CLAW, Moves.BITTER_BLADE, Moves.GLAIVE_RUSH ], [Species.CUBCHOO]: [ Moves.MOUNTAIN_GALE, Moves.AQUA_STEP, Moves.ICE_SHARD, Moves.COLLISION_COURSE ], [Species.CRYOGONAL]: [ Moves.FREEZING_GLARE, Moves.AURORA_VEIL, Moves.NASTY_PLOT, Moves.ORIGIN_PULSE ], [Species.SHELMET]: [ Moves.POWER_GEM, Moves.NASTY_PLOT, Moves.EARTH_POWER, Moves.STEAM_ERUPTION ], - [Species.STUNFISK]: [ Moves.BANEFUL_BUNKER, Moves.SANDSEAR_STORM, Moves.STRENGTH_SAP, Moves.THUNDERCLAP ], - [Species.MIENFOO]: [ Moves.GUNK_SHOT, Moves.SUPERCELL_SLAM, Moves.KNOCK_OFF, Moves.MOUNTAIN_GALE ], - [Species.DRUDDIGON]: [ Moves.FIRE_LASH, Moves.ROOST, Moves.DRAGON_DARTS, Moves.CLANGOROUS_SOUL ], + [Species.STUNFISK]: [ Moves.THUNDERCLAP, Moves.SANDSEAR_STORM, Moves.STRENGTH_SAP, Moves.THUNDER_CAGE ], + [Species.MIENFOO]: [ Moves.GUNK_SHOT, Moves.SUPERCELL_SLAM, Moves.MOUNTAIN_GALE, Moves.WICKED_BLOW ], + [Species.DRUDDIGON]: [ Moves.FIRE_LASH, Moves.MORNING_SUN, Moves.DRAGON_DARTS, Moves.CLANGOROUS_SOUL ], [Species.GOLETT]: [ Moves.SHIFT_GEAR, Moves.DRAIN_PUNCH, Moves.HEADLONG_RUSH, Moves.RAGE_FIST ], [Species.PAWNIARD]: [ Moves.SUCKER_PUNCH, Moves.CEASELESS_EDGE, Moves.BITTER_BLADE, Moves.LAST_RESPECTS ], [Species.BOUFFALANT]: [ Moves.SLACK_OFF, Moves.HIGH_JUMP_KICK, Moves.HEAD_SMASH, Moves.FLARE_BLITZ ], @@ -321,59 +325,62 @@ export const speciesEggMoves = { [Species.HEATMOR]: [ Moves.EARTH_POWER, Moves.OVERHEAT, Moves.THUNDERBOLT, Moves.V_CREATE ], [Species.DURANT]: [ Moves.HIGH_HORSEPOWER, Moves.FIRST_IMPRESSION, Moves.SWORDS_DANCE, Moves.BEHEMOTH_BASH ], [Species.DEINO]: [ Moves.FIERY_WRATH, Moves.ESPER_WING, Moves.SLUDGE_BOMB, Moves.FICKLE_BEAM ], - [Species.LARVESTA]: [ Moves.THUNDERBOLT, Moves.MATCHA_GOTCHA, Moves.EARTH_POWER, Moves.TORCH_SONG ], + [Species.LARVESTA]: [ Moves.THUNDERBOLT, Moves.MAGMA_STORM, Moves.EARTH_POWER, Moves.MATCHA_GOTCHA ], [Species.COBALION]: [ Moves.BEHEMOTH_BLADE, Moves.MIGHTY_CLEAVE, Moves.CEASELESS_EDGE, Moves.VICTORY_DANCE ], [Species.TERRAKION]: [ Moves.MIGHTY_CLEAVE, Moves.HEADLONG_RUSH, Moves.CEASELESS_EDGE, Moves.VICTORY_DANCE ], [Species.VIRIZION]: [ Moves.PSYBLADE, Moves.SAPPY_SEED, Moves.CEASELESS_EDGE, Moves.VICTORY_DANCE ], - [Species.TORNADUS]: [ Moves.EARTH_POWER, Moves.PARTING_SHOT, Moves.ICE_BEAM, Moves.OBLIVION_WING ], - [Species.THUNDURUS]: [ Moves.EARTH_POWER, Moves.HURRICANE, Moves.FROST_BREATH, Moves.ELECTRO_SHOT ], + [Species.TORNADUS]: [ Moves.SANDSEAR_STORM, Moves.PARTING_SHOT, Moves.SPLISHY_SPLASH, Moves.OBLIVION_WING ], + [Species.THUNDURUS]: [ Moves.SANDSEAR_STORM, Moves.HURRICANE, Moves.FROST_BREATH, Moves.ELECTRO_SHOT ], [Species.RESHIRAM]: [ Moves.ENERGY_BALL, Moves.TAKE_HEART, Moves.FICKLE_BEAM, Moves.ERUPTION ], [Species.ZEKROM]: [ Moves.TRIPLE_AXEL, Moves.THUNDEROUS_KICK, Moves.DRAGON_HAMMER, Moves.BOLT_BEAK ], [Species.LANDORUS]: [ Moves.STONE_AXE, Moves.FLOATY_FALL, Moves.ROOST, Moves.BLEAKWIND_STORM ], [Species.KYUREM]: [ Moves.DRAGON_DARTS, Moves.GLACIAL_LANCE, Moves.NO_RETREAT, Moves.DRAGON_ENERGY ], - [Species.KELDEO]: [ Moves.BOUNCY_BUBBLE, Moves.THUNDERBOLT, Moves.FREEZE_DRY, Moves.STEAM_ERUPTION ], + [Species.KELDEO]: [ Moves.BOUNCY_BUBBLE, Moves.THUNDERBOLT, Moves.ICE_BEAM, Moves.STEAM_ERUPTION ], [Species.MELOETTA]: [ Moves.BODY_SLAM, Moves.TORCH_SONG, Moves.TRIPLE_ARROWS, Moves.BOOMBURST ], - [Species.GENESECT]: [ Moves.EXTREME_SPEED, Moves.U_TURN, Moves.TACHYON_CUTTER, Moves.TAIL_GLOW ], - [Species.CHESPIN]: [ Moves.BODY_PRESS, Moves.SYNTHESIS, Moves.CEASELESS_EDGE, Moves.SAPPY_SEED ], - [Species.FENNEKIN]: [ Moves.EXPANDING_FORCE, Moves.MOONBLAST, Moves.THUNDERBOLT, Moves.TORCH_SONG ], + [Species.GENESECT]: [ Moves.EXTREME_SPEED, Moves.SHIFT_GEAR, Moves.BEHEMOTH_BASH, Moves.TACHYON_CUTTER ], + + [Species.CHESPIN]: [ Moves.COMBAT_TORQUE, Moves.SYNTHESIS, Moves.CEASELESS_EDGE, Moves.SAPPY_SEED ], + [Species.FENNEKIN]: [ Moves.TWIN_BEAM, Moves.FIERY_DANCE, Moves.THUNDERBOLT, Moves.SPARKLY_SWIRL ], [Species.FROAKIE]: [ Moves.MOONBLAST, Moves.SHELL_SIDE_ARM, Moves.FIERY_WRATH, Moves.STEAM_ERUPTION ], [Species.BUNNELBY]: [ Moves.DRAIN_PUNCH, Moves.TIDY_UP, Moves.FACADE, Moves.EXTREME_SPEED ], [Species.FLETCHLING]: [ Moves.DRILL_RUN, Moves.BURNING_BULWARK, Moves.HEAD_SMASH, Moves.VOLT_TACKLE ], [Species.SCATTERBUG]: [ Moves.FOCUS_BLAST, Moves.AFTER_YOU, Moves.DECORATE, Moves.BLIZZARD ], - [Species.LITLEO]: [ Moves.EARTH_POWER, Moves.NASTY_PLOT, Moves.YAWN, Moves.TORCH_SONG ], + [Species.LITLEO]: [ Moves.EARTH_POWER, Moves.NASTY_PLOT, Moves.BURNING_BULWARK, Moves.BLUE_FLARE ], [Species.FLABEBE]: [ Moves.GLITZY_GLOW, Moves.MYSTICAL_FIRE, Moves.TAKE_HEART, Moves.SEED_FLARE ], [Species.SKIDDO]: [ Moves.HIGH_HORSEPOWER, Moves.GRASSY_GLIDE, Moves.STONE_AXE, Moves.SAPPY_SEED ], [Species.PANCHAM]: [ Moves.DRAIN_PUNCH, Moves.SUCKER_PUNCH, Moves.METEOR_MASH, Moves.WICKED_BLOW ], [Species.FURFROU]: [ Moves.TIDY_UP, Moves.SLACK_OFF, Moves.COMBAT_TORQUE, Moves.MULTI_ATTACK ], [Species.ESPURR]: [ Moves.LUSTER_PURGE, Moves.MOONBLAST, Moves.AURA_SPHERE, Moves.DARK_VOID ], [Species.HONEDGE]: [ Moves.TACHYON_CUTTER, Moves.SHADOW_BONE, Moves.BITTER_BLADE, Moves.BEHEMOTH_BLADE ], - [Species.SPRITZEE]: [ Moves.SPEED_SWAP, Moves.TORCH_SONG, Moves.ROOST, Moves.REVIVAL_BLESSING ], + [Species.SPRITZEE]: [ Moves.SPEED_SWAP, Moves.REVIVAL_BLESSING, Moves.ROOST, Moves.TORCH_SONG ], [Species.SWIRLIX]: [ Moves.BELLY_DRUM, Moves.HEADLONG_RUSH, Moves.MAGICAL_TORQUE, Moves.REVIVAL_BLESSING ], [Species.INKAY]: [ Moves.POWER_TRIP, Moves.SPIN_OUT, Moves.RECOVER, Moves.PSYCHO_BOOST ], [Species.BINACLE]: [ Moves.TRIPLE_AXEL, Moves.CRABHAMMER, Moves.DIRE_CLAW, Moves.MIGHTY_CLEAVE ], [Species.SKRELP]: [ Moves.STRENGTH_SAP, Moves.TRICK_ROOM, Moves.CALM_MIND, Moves.CORE_ENFORCER ], - [Species.CLAUNCHER]: [ Moves.SHELL_SMASH, Moves.ARMOR_CANNON, Moves.WATER_SHURIKEN, Moves.ORIGIN_PULSE ], + [Species.CLAUNCHER]: [ Moves.SHELL_SMASH, Moves.ARMOR_CANNON, Moves.ENERGY_BALL, Moves.ORIGIN_PULSE ], [Species.HELIOPTILE]: [ Moves.WEATHER_BALL, Moves.HYDRO_STEAM, Moves.EARTH_POWER, Moves.BOOMBURST ], [Species.TYRUNT]: [ Moves.DRAGON_HAMMER, Moves.FLARE_BLITZ, Moves.VOLT_TACKLE, Moves.SHIFT_GEAR ], - [Species.AMAURA]: [ Moves.RECOVER, Moves.AURORA_VEIL, Moves.POWER_GEM, Moves.GEOMANCY ], + [Species.AMAURA]: [ Moves.RECOVER, Moves.TERA_STARSTORM, Moves.POWER_GEM, Moves.GEOMANCY ], [Species.HAWLUCHA]: [ Moves.TRIPLE_AXEL, Moves.HIGH_HORSEPOWER, Moves.FLOATY_FALL, Moves.WICKED_BLOW ], [Species.DEDENNE]: [ Moves.BOOMBURST, Moves.FAKE_OUT, Moves.NASTY_PLOT, Moves.REVIVAL_BLESSING ], [Species.CARBINK]: [ Moves.BODY_PRESS, Moves.SHORE_UP, Moves.SPARKLY_SWIRL, Moves.DIAMOND_STORM ], - [Species.GOOMY]: [ Moves.SCALD, Moves.RECOVER, Moves.CALM_MIND, Moves.MAKE_IT_RAIN ], + [Species.GOOMY]: [ Moves.DRAGON_HAMMER, Moves.RECOVER, Moves.CALM_MIND, Moves.MAKE_IT_RAIN ], [Species.KLEFKI]: [ Moves.HEAL_BELL, Moves.ENCORE, Moves.INSTRUCT, Moves.TOPSY_TURVY ], - [Species.PHANTUMP]: [ Moves.RAGE_FIST, Moves.TRICK_ROOM, Moves.SYNTHESIS, Moves.SAPPY_SEED ], + [Species.PHANTUMP]: [ Moves.RAGE_FIST, Moves.SLEEP_POWDER, Moves.SYNTHESIS, Moves.SAPPY_SEED ], [Species.PUMPKABOO]: [ Moves.SPIRIT_SHACKLE, Moves.FIRE_LASH, Moves.DIRE_CLAW, Moves.SAPPY_SEED ], [Species.BERGMITE]: [ Moves.STONE_AXE, Moves.METAL_BURST, Moves.BODY_PRESS, Moves.GLACIAL_LANCE ], [Species.NOIBAT]: [ Moves.AEROBLAST, Moves.OVERDRIVE, Moves.NASTY_PLOT, Moves.CLANGING_SCALES ], [Species.XERNEAS]: [ Moves.EARTH_POWER, Moves.SPRINGTIDE_STORM, Moves.STRENGTH_SAP, Moves.TAIL_GLOW ], [Species.YVELTAL]: [ Moves.SHELL_SIDE_ARM, Moves.POWER_TRIP, Moves.FIERY_WRATH, Moves.CLANGOROUS_SOUL ], [Species.ZYGARDE]: [ Moves.DRAGON_DARTS, Moves.HEAL_ORDER, Moves.CLANGOROUS_SOUL, Moves.DOUBLE_IRON_BASH ], - [Species.DIANCIE]: [ Moves.MAGICAL_TORQUE, Moves.AURA_SPHERE, Moves.SHORE_UP, Moves.GEOMANCY ], + [Species.DIANCIE]: [ Moves.MAGICAL_TORQUE, Moves.FIERY_DANCE, Moves.SHORE_UP, Moves.GEOMANCY ], [Species.HOOPA]: [ Moves.PHOTON_GEYSER, Moves.SECRET_SWORD, Moves.FIERY_WRATH, Moves.SHELL_SMASH ], [Species.VOLCANION]: [ Moves.HYDRO_STEAM, Moves.CALM_MIND, Moves.ENERGY_BALL, Moves.MAGMA_STORM ], + [Species.ETERNAL_FLOETTE]: [ Moves.MIND_BLOWN, Moves.CHLOROBLAST, Moves.LUSTER_PURGE, Moves.QUIVER_DANCE ], + [Species.ROWLET]: [ Moves.THOUSAND_ARROWS, Moves.SHADOW_BONE, Moves.FIRST_IMPRESSION, Moves.VICTORY_DANCE ], - [Species.LITTEN]: [ Moves.FAKE_OUT, Moves.PARTING_SHOT, Moves.MORNING_SUN, Moves.SACRED_FIRE ], - [Species.POPPLIO]: [ Moves.PSYCHIC_NOISE, Moves.BOUNCY_BUBBLE, Moves.ALLURING_VOICE, Moves.TORCH_SONG ], + [Species.LITTEN]: [ Moves.SUCKER_PUNCH, Moves.PARTING_SHOT, Moves.SLACK_OFF, Moves.SACRED_FIRE ], + [Species.POPPLIO]: [ Moves.PSYCHIC_NOISE, Moves.BOUNCY_BUBBLE, Moves.OVERDRIVE, Moves.TORCH_SONG ], [Species.PIKIPEK]: [ Moves.DUAL_WINGBEAT, Moves.BONE_RUSH, Moves.BURNING_BULWARK, Moves.POPULATION_BOMB ], [Species.YUNGOOS]: [ Moves.EXTREME_SPEED, Moves.KNOCK_OFF, Moves.TIDY_UP, Moves.MULTI_ATTACK ], [Species.GRUBBIN]: [ Moves.ICE_BEAM, Moves.EARTH_POWER, Moves.THUNDERCLAP, Moves.QUIVER_DANCE ], @@ -381,7 +388,7 @@ export const speciesEggMoves = { [Species.ORICORIO]: [ Moves.QUIVER_DANCE, Moves.FIERY_DANCE, Moves.THUNDERCLAP, Moves.OBLIVION_WING ], [Species.CUTIEFLY]: [ Moves.STICKY_WEB, Moves.SLEEP_POWDER, Moves.HEAT_WAVE, Moves.SPARKLY_SWIRL ], [Species.ROCKRUFF]: [ Moves.HIGH_HORSEPOWER, Moves.TIDY_UP, Moves.ICE_SPINNER, Moves.MIGHTY_CLEAVE ], - [Species.WISHIWASHI]: [ Moves.HEAL_ORDER, Moves.ICE_SPINNER, Moves.DRAGON_DANCE, Moves.JET_PUNCH ], + [Species.WISHIWASHI]: [ Moves.HEAL_ORDER, Moves.FREEZE_DRY, Moves.WATER_SHURIKEN, Moves.TAIL_GLOW ], [Species.MAREANIE]: [ Moves.CEASELESS_EDGE, Moves.SIZZLY_SLIDE, Moves.BODY_PRESS, Moves.LEECH_SEED ], [Species.MUDBRAY]: [ Moves.BODY_PRESS, Moves.YAWN, Moves.SHORE_UP, Moves.THOUSAND_WAVES ], [Species.DEWPIDER]: [ Moves.JET_PUNCH, Moves.SILK_TRAP, Moves.SWORDS_DANCE, Moves.AQUA_STEP ], @@ -392,27 +399,27 @@ export const speciesEggMoves = { [Species.BOUNSWEET]: [ Moves.TRIPLE_AXEL, Moves.AQUA_STEP, Moves.THUNDEROUS_KICK, Moves.SAPPY_SEED ], [Species.COMFEY]: [ Moves.REVIVAL_BLESSING, Moves.TAKE_HEART, Moves.STRENGTH_SAP, Moves.MATCHA_GOTCHA ], [Species.ORANGURU]: [ Moves.JUNGLE_HEALING, Moves.YAWN, Moves.FOLLOW_ME, Moves.LUMINA_CRASH ], - [Species.PASSIMIAN]: [ Moves.FAKE_OUT, Moves.SUCKER_PUNCH, Moves.ZING_ZAP, Moves.PYRO_BALL ], + [Species.PASSIMIAN]: [ Moves.PYRO_BALL, Moves.SUCKER_PUNCH, Moves.ZING_ZAP, Moves.VICTORY_DANCE ], [Species.WIMPOD]: [ Moves.TRIPLE_AXEL, Moves.OBSTRUCT, Moves.JET_PUNCH, Moves.SURGING_STRIKES ], - [Species.SANDYGAST]: [ Moves.SANDSEAR_STORM, Moves.SPLISHY_SPLASH, Moves.TAKE_HEART, Moves.SALT_CURE ], + [Species.SANDYGAST]: [ Moves.BITTER_MALICE, Moves.SPLISHY_SPLASH, Moves.TAKE_HEART, Moves.SALT_CURE ], [Species.PYUKUMUKU]: [ Moves.COMEUPPANCE, Moves.BANEFUL_BUNKER, Moves.TOXIC_SPIKES, Moves.SALT_CURE ], - [Species.TYPE_NULL]: [ Moves.DIRE_CLAW, Moves.RECOVER, Moves.EXTREME_SPEED, Moves.SHELL_SMASH ], + [Species.TYPE_NULL]: [ Moves.DIRE_CLAW, Moves.RECOVER, Moves.COMBAT_TORQUE, Moves.NO_RETREAT ], [Species.MINIOR]: [ Moves.EARTH_POWER, Moves.FLOATY_FALL, Moves.ZING_ZAP, Moves.DIAMOND_STORM ], [Species.KOMALA]: [ Moves.SLACK_OFF, Moves.EXTREME_SPEED, Moves.KNOCK_OFF, Moves.COLLISION_COURSE ], [Species.TURTONATOR]: [ Moves.BURNING_BULWARK, Moves.MORNING_SUN, Moves.BODY_PRESS, Moves.CORE_ENFORCER ], [Species.TOGEDEMARU]: [ Moves.FAKE_OUT, Moves.METAL_BURST, Moves.METEOR_MASH, Moves.AURA_WHEEL ], - [Species.MIMIKYU]: [ Moves.SPIRIT_BREAK, Moves.TIDY_UP, Moves.BITTER_BLADE, Moves.SPECTRAL_THIEF ], + [Species.MIMIKYU]: [ Moves.SPIRIT_BREAK, Moves.TIDY_UP, Moves.FIRE_LASH, Moves.SPECTRAL_THIEF ], [Species.BRUXISH]: [ Moves.PLAY_ROUGH, Moves.FIRE_FANG, Moves.DRAGON_DANCE, Moves.SURGING_STRIKES ], [Species.DRAMPA]: [ Moves.SLACK_OFF, Moves.TRICK_ROOM, Moves.CORE_ENFORCER, Moves.BOOMBURST ], - [Species.DHELMISE]: [ Moves.SHADOW_BONE, Moves.STRENGTH_SAP, Moves.LIQUIDATION, Moves.SAPPY_SEED ], + [Species.DHELMISE]: [ Moves.SHADOW_BONE, Moves.IVY_CUDGEL, Moves.TRIPLE_DIVE, Moves.STRENGTH_SAP ], [Species.JANGMO_O]: [ Moves.BODY_PRESS, Moves.SHELL_SIDE_ARM, Moves.SECRET_SWORD, Moves.GLAIVE_RUSH ], - [Species.TAPU_KOKO]: [ Moves.MAGICAL_TORQUE, Moves.TRIPLE_AXEL, Moves.RISING_VOLTAGE, Moves.BOLT_STRIKE ], + [Species.TAPU_KOKO]: [ Moves.MAGICAL_TORQUE, Moves.TRIPLE_AXEL, Moves.SWORDS_DANCE, Moves.BOLT_STRIKE ], [Species.TAPU_LELE]: [ Moves.MOONLIGHT, Moves.NASTY_PLOT, Moves.HEAT_WAVE, Moves.EXPANDING_FORCE ], [Species.TAPU_BULU]: [ Moves.SAPPY_SEED, Moves.DRAIN_PUNCH, Moves.MAGICAL_TORQUE, Moves.VICTORY_DANCE ], [Species.TAPU_FINI]: [ Moves.AURA_SPHERE, Moves.EARTH_POWER, Moves.RECOVER, Moves.QUIVER_DANCE ], [Species.COSMOG]: [ Moves.PHOTON_GEYSER, Moves.PRECIPICE_BLADES, Moves.SACRED_FIRE, Moves.ASTRAL_BARRAGE ], [Species.NIHILEGO]: [ Moves.STRENGTH_SAP, Moves.MALIGNANT_CHAIN, Moves.EARTH_POWER, Moves.QUIVER_DANCE ], - [Species.BUZZWOLE]: [ Moves.FIRST_IMPRESSION, Moves.COMBAT_TORQUE, Moves.ROCK_WRECKER, Moves.DOUBLE_IRON_BASH ], + [Species.BUZZWOLE]: [ Moves.FIRST_IMPRESSION, Moves.COMBAT_TORQUE, Moves.ROCK_BLAST, Moves.DOUBLE_IRON_BASH ], [Species.PHEROMOSA]: [ Moves.SECRET_SWORD, Moves.MAKE_IT_RAIN, Moves.ATTACK_ORDER, Moves.DIAMOND_STORM ], [Species.XURKITREE]: [ Moves.FLAMETHROWER, Moves.GIGA_DRAIN, Moves.TAIL_GLOW, Moves.THUNDERCLAP ], [Species.CELESTEELA]: [ Moves.RECOVER, Moves.BUZZY_BUZZ, Moves.SANDSEAR_STORM, Moves.OBLIVION_WING ], @@ -421,11 +428,19 @@ export const speciesEggMoves = { [Species.NECROZMA]: [ Moves.DYNAMAX_CANNON, Moves.SACRED_FIRE, Moves.ASTRAL_BARRAGE, Moves.CLANGOROUS_SOUL ], [Species.MAGEARNA]: [ Moves.STRENGTH_SAP, Moves.EARTH_POWER, Moves.MOONBLAST, Moves.MAKE_IT_RAIN ], [Species.MARSHADOW]: [ Moves.POWER_UP_PUNCH, Moves.TRIPLE_AXEL, Moves.METEOR_MASH, Moves.STORM_THROW ], - [Species.POIPOLE]: [ Moves.CORE_ENFORCER, Moves.ICE_BEAM, Moves.SEARING_SHOT, Moves.MALIGNANT_CHAIN ], + [Species.POIPOLE]: [ Moves.MALIGNANT_CHAIN, Moves.ICE_BEAM, Moves.ARMOR_CANNON, Moves.CLANGING_SCALES ], [Species.STAKATAKA]: [ Moves.HEAVY_SLAM, Moves.SHORE_UP, Moves.CURSE, Moves.SALT_CURE ], - [Species.BLACEPHALON]: [ Moves.NASTY_PLOT, Moves.AURA_SPHERE, Moves.CHLOROBLAST, Moves.ASTRAL_BARRAGE ], + [Species.BLACEPHALON]: [ Moves.STEEL_BEAM, Moves.MOONBLAST, Moves.CHLOROBLAST, Moves.MOONGEIST_BEAM ], [Species.ZERAORA]: [ Moves.SWORDS_DANCE, Moves.TRIPLE_AXEL, Moves.BOLT_STRIKE, Moves.PYRO_BALL ], [Species.MELTAN]: [ Moves.BULLET_PUNCH, Moves.DRAIN_PUNCH, Moves.BULK_UP, Moves.PLASMA_FISTS ], + [Species.ALOLA_RATTATA]: [ Moves.FALSE_SURRENDER, Moves.PSYCHIC_FANGS, Moves.COIL, Moves.EXTREME_SPEED ], + [Species.ALOLA_SANDSHREW]: [ Moves.SPIKY_SHIELD, Moves.AQUA_CUTTER, Moves.SHIFT_GEAR, Moves.GLACIAL_LANCE ], + [Species.ALOLA_VULPIX]: [ Moves.MOONBLAST, Moves.PARTING_SHOT, Moves.EARTH_POWER, Moves.REVIVAL_BLESSING ], + [Species.ALOLA_DIGLETT]: [ Moves.THOUSAND_WAVES, Moves.SWORDS_DANCE, Moves.TRIPLE_DIVE, Moves.MOUNTAIN_GALE ], + [Species.ALOLA_MEOWTH]: [ Moves.BADDY_BAD, Moves.BUZZY_BUZZ, Moves.PARTING_SHOT, Moves.MAKE_IT_RAIN ], + [Species.ALOLA_GEODUDE]: [ Moves.THOUSAND_WAVES, Moves.BULK_UP, Moves.STONE_AXE, Moves.EXTREME_SPEED ], + [Species.ALOLA_GRIMER]: [ Moves.SUCKER_PUNCH, Moves.BARB_BARRAGE, Moves.RECOVER, Moves.SURGING_STRIKES ], + [Species.GROOKEY]: [ Moves.HIGH_HORSEPOWER, Moves.CLANGOROUS_SOUL, Moves.GRASSY_GLIDE, Moves.SAPPY_SEED ], [Species.SCORBUNNY]: [ Moves.EXTREME_SPEED, Moves.HIGH_JUMP_KICK, Moves.TRIPLE_AXEL, Moves.BOLT_STRIKE ], [Species.SOBBLE]: [ Moves.AEROBLAST, Moves.FROST_BREATH, Moves.ENERGY_BALL, Moves.NASTY_PLOT ], @@ -433,15 +448,15 @@ export const speciesEggMoves = { [Species.ROOKIDEE]: [ Moves.ROOST, Moves.BODY_PRESS, Moves.KINGS_SHIELD, Moves.BEHEMOTH_BASH ], [Species.BLIPBUG]: [ Moves.HEAL_ORDER, Moves.LUSTER_PURGE, Moves.SLEEP_POWDER, Moves.TAIL_GLOW ], [Species.NICKIT]: [ Moves.BADDY_BAD, Moves.FLAMETHROWER, Moves.SPARKLY_SWIRL, Moves.MAKE_IT_RAIN ], - [Species.GOSSIFLEUR]: [ Moves.TAILWIND, Moves.STRENGTH_SAP, Moves.SAPPY_SEED, Moves.SEED_FLARE ], + [Species.GOSSIFLEUR]: [ Moves.PARTING_SHOT, Moves.STRENGTH_SAP, Moves.SAPPY_SEED, Moves.SEED_FLARE ], [Species.WOOLOO]: [ Moves.PSYSHIELD_BASH, Moves.MILK_DRINK, Moves.BODY_PRESS, Moves.MULTI_ATTACK ], - [Species.CHEWTLE]: [ Moves.ICE_FANG, Moves.ACCELEROCK, Moves.SHELL_SMASH, Moves.FISHIOUS_REND ], + [Species.CHEWTLE]: [ Moves.ICE_FANG, Moves.PSYCHIC_FANGS, Moves.SHELL_SMASH, Moves.MIGHTY_CLEAVE ], [Species.YAMPER]: [ Moves.ICE_FANG, Moves.SWORDS_DANCE, Moves.THUNDER_FANG, Moves.BOLT_STRIKE ], [Species.ROLYCOLY]: [ Moves.BITTER_BLADE, Moves.BODY_PRESS, Moves.BULK_UP, Moves.DIAMOND_STORM ], - [Species.APPLIN]: [ Moves.MATCHA_GOTCHA, Moves.DRAGON_HAMMER, Moves.FLOWER_TRICK, Moves.STRENGTH_SAP ], + [Species.APPLIN]: [ Moves.CORE_ENFORCER, Moves.DRAGON_HAMMER, Moves.FLOWER_TRICK, Moves.MATCHA_GOTCHA ], [Species.SILICOBRA]: [ Moves.SHORE_UP, Moves.SHED_TAIL, Moves.MOUNTAIN_GALE, Moves.THOUSAND_ARROWS ], [Species.CRAMORANT]: [ Moves.APPLE_ACID, Moves.SURF, Moves.SCORCHING_SANDS, Moves.OBLIVION_WING ], - [Species.ARROKUDA]: [ Moves.SUPERCELL_SLAM, Moves.KNOCK_OFF, Moves.ICE_SPINNER, Moves.FILLET_AWAY ], + [Species.ARROKUDA]: [ Moves.SUPERCELL_SLAM, Moves.TRIPLE_DIVE, Moves.ICE_SPINNER, Moves.SWORDS_DANCE ], [Species.TOXEL]: [ Moves.NASTY_PLOT, Moves.BUG_BUZZ, Moves.SPARKLING_ARIA, Moves.TORCH_SONG ], [Species.SIZZLIPEDE]: [ Moves.BURNING_BULWARK, Moves.ZING_ZAP, Moves.FIRST_IMPRESSION, Moves.BITTER_BLADE ], [Species.CLOBBOPUS]: [ Moves.STORM_THROW, Moves.JET_PUNCH, Moves.MACH_PUNCH, Moves.SURGING_STRIKES ], @@ -450,19 +465,19 @@ export const speciesEggMoves = { [Species.IMPIDIMP]: [ Moves.ENCORE, Moves.PARTING_SHOT, Moves.TOPSY_TURVY, Moves.WICKED_BLOW ], [Species.MILCERY]: [ Moves.MOONBLAST, Moves.CHILLY_RECEPTION, Moves.EARTH_POWER, Moves.GEOMANCY ], [Species.FALINKS]: [ Moves.COMBAT_TORQUE, Moves.PSYSHIELD_BASH, Moves.HEAL_ORDER, Moves.POPULATION_BOMB ], - [Species.PINCURCHIN]: [ Moves.TRICK_ROOM, Moves.RISING_VOLTAGE, Moves.STRENGTH_SAP, Moves.THUNDERCLAP ], + [Species.PINCURCHIN]: [ Moves.TRICK_ROOM, Moves.VOLT_SWITCH, Moves.STRENGTH_SAP, Moves.THUNDERCLAP ], [Species.SNOM]: [ Moves.FROST_BREATH, Moves.HEAL_ORDER, Moves.EARTH_POWER, Moves.SPORE ], [Species.STONJOURNER]: [ Moves.BODY_PRESS, Moves.HELPING_HAND, Moves.ACCELEROCK, Moves.DIAMOND_STORM ], [Species.EISCUE]: [ Moves.TRIPLE_AXEL, Moves.AQUA_STEP, Moves.SHELL_SMASH, Moves.GLACIAL_LANCE ], [Species.INDEEDEE]: [ Moves.MATCHA_GOTCHA, Moves.EXPANDING_FORCE, Moves.MOONBLAST, Moves.REVIVAL_BLESSING ], [Species.MORPEKO]: [ Moves.TRIPLE_AXEL, Moves.OBSTRUCT, Moves.SWORDS_DANCE, Moves.COLLISION_COURSE ], [Species.CUFANT]: [ Moves.LIQUIDATION, Moves.CURSE, Moves.COMBAT_TORQUE, Moves.GIGATON_HAMMER ], - [Species.DRACOZOLT]: [ Moves.TRIPLE_AXEL, Moves.SCALE_SHOT, Moves.FIRE_LASH, Moves.DRAGON_DANCE ], + [Species.DRACOZOLT]: [ Moves.TRIPLE_AXEL, Moves.GUNK_SHOT, Moves.FIRE_LASH, Moves.DRAGON_DANCE ], [Species.ARCTOZOLT]: [ Moves.MOUNTAIN_GALE, Moves.AQUA_STEP, Moves.HIGH_HORSEPOWER, Moves.SHIFT_GEAR ], [Species.DRACOVISH]: [ Moves.TRIPLE_AXEL, Moves.DRAGON_HAMMER, Moves.THUNDER_FANG, Moves.DRAGON_DANCE ], [Species.ARCTOVISH]: [ Moves.ICE_FANG, Moves.THUNDER_FANG, Moves.HIGH_HORSEPOWER, Moves.SHIFT_GEAR ], [Species.DURALUDON]: [ Moves.CORE_ENFORCER, Moves.BODY_PRESS, Moves.RECOVER, Moves.TACHYON_CUTTER ], - [Species.DREEPY]: [ Moves.SHADOW_BONE, Moves.NASTY_PLOT, Moves.FIRE_LASH, Moves.COLLISION_COURSE ], + [Species.DREEPY]: [ Moves.SHADOW_BONE, Moves.POWER_UP_PUNCH, Moves.FIRE_LASH, Moves.DIRE_CLAW ], [Species.ZACIAN]: [ Moves.MAGICAL_TORQUE, Moves.MIGHTY_CLEAVE, Moves.BITTER_BLADE, Moves.PRECIPICE_BLADES ], [Species.ZAMAZENTA]: [ Moves.BULK_UP, Moves.BODY_PRESS, Moves.SLACK_OFF, Moves.DIAMOND_STORM ], [Species.ETERNATUS]: [ Moves.BODY_PRESS, Moves.NASTY_PLOT, Moves.MALIGNANT_CHAIN, Moves.DRAGON_ENERGY ], @@ -470,18 +485,36 @@ export const speciesEggMoves = { [Species.ZARUDE]: [ Moves.SAPPY_SEED, Moves.MIGHTY_CLEAVE, Moves.WICKED_BLOW, Moves.VICTORY_DANCE ], [Species.REGIELEKI]: [ Moves.NASTY_PLOT, Moves.ICE_BEAM, Moves.EARTH_POWER, Moves.ELECTRO_DRIFT ], [Species.REGIDRAGO]: [ Moves.METEOR_MASH, Moves.FLAMETHROWER, Moves.TAKE_HEART, Moves.DRAGON_DARTS ], - [Species.GLASTRIER]: [ Moves.TRICK_ROOM, Moves.SLACK_OFF, Moves.HIGH_HORSEPOWER, Moves.GLACIAL_LANCE ], + [Species.GLASTRIER]: [ Moves.SPEED_SWAP, Moves.SLACK_OFF, Moves.HIGH_HORSEPOWER, Moves.GLACIAL_LANCE ], [Species.SPECTRIER]: [ Moves.EARTH_POWER, Moves.PARTING_SHOT, Moves.AURA_SPHERE, Moves.ASTRAL_BARRAGE ], [Species.CALYREX]: [ Moves.SAPPY_SEED, Moves.RECOVER, Moves.SECRET_SWORD, Moves.PHOTON_GEYSER ], - [Species.ENAMORUS]: [ Moves.FLEUR_CANNON, Moves.TAKE_HEART, Moves.STORED_POWER, Moves.OBLIVION_WING ], + [Species.ENAMORUS]: [ Moves.AEROBLAST, Moves.THOUSAND_ARROWS, Moves.STORED_POWER, Moves.FLEUR_CANNON ], + [Species.GALAR_MEOWTH]: [ Moves.LIQUIDATION, Moves.HORN_LEECH, Moves.BULLET_PUNCH, Moves.BEHEMOTH_BASH ], + [Species.GALAR_PONYTA]: [ Moves.MAGICAL_TORQUE, Moves.EXTREME_SPEED, Moves.FLARE_BLITZ, Moves.PHOTON_GEYSER ], + [Species.GALAR_SLOWPOKE]: [ Moves.SHED_TAIL, Moves.BADDY_BAD, Moves.MOONBLAST, Moves.PHOTON_GEYSER ], + [Species.GALAR_FARFETCHD]: [ Moves.ROOST, Moves.SACRED_SWORD, Moves.KINGS_SHIELD, Moves.BEHEMOTH_BLADE ], + [Species.GALAR_ARTICUNO]: [ Moves.SECRET_SWORD, Moves.NIGHT_DAZE, Moves.ICE_BEAM, Moves.OBLIVION_WING ], + [Species.GALAR_ZAPDOS]: [ Moves.TIDY_UP, Moves.FLOATY_FALL, Moves.ROOST, Moves.BOLT_BEAK ], + [Species.GALAR_MOLTRES]: [ Moves.ROOST, Moves.SLUDGE_BOMB, Moves.FLAMETHROWER, Moves.OBLIVION_WING ], + [Species.GALAR_CORSOLA]: [ Moves.SHELL_SMASH, Moves.AURA_SPHERE, Moves.INFERNAL_PARADE, Moves.ASTRAL_BARRAGE ], + [Species.GALAR_ZIGZAGOON]: [ Moves.CEASELESS_EDGE, Moves.FACADE, Moves.PARTING_SHOT, Moves.EXTREME_SPEED ], + [Species.GALAR_DARUMAKA]: [ Moves.ICE_SPINNER, Moves.ZING_ZAP, Moves.DRAIN_PUNCH, Moves.PYRO_BALL ], + [Species.GALAR_YAMASK]: [ Moves.STRENGTH_SAP, Moves.DIRE_CLAW, Moves.THOUSAND_WAVES, Moves.SPECTRAL_THIEF ], + [Species.GALAR_STUNFISK]: [ Moves.SPIKY_SHIELD, Moves.THOUSAND_ARROWS, Moves.STRENGTH_SAP, Moves.DOUBLE_IRON_BASH ], + [Species.HISUI_GROWLITHE]: [ Moves.WAVE_CRASH, Moves.HEAD_SMASH, Moves.VOLT_TACKLE, Moves.DRAGON_DANCE ], + [Species.HISUI_VOLTORB]: [ Moves.FROST_BREATH, Moves.NASTY_PLOT, Moves.APPLE_ACID, Moves.ELECTRO_DRIFT ], + [Species.HISUI_QWILFISH]: [ Moves.CEASELESS_EDGE, Moves.KNOCK_OFF, Moves.RECOVER, Moves.FISHIOUS_REND ], + [Species.HISUI_SNEASEL]: [ Moves.DRAIN_PUNCH, Moves.KNOCK_OFF, Moves.PSYCHIC_FANGS, Moves.TRIPLE_AXEL ], + [Species.HISUI_ZORUA]: [ Moves.MOONBLAST, Moves.HYPER_VOICE, Moves.PARTING_SHOT, Moves.BLOOD_MOON ], + [Species.SPRIGATITO]: [ Moves.FIRE_LASH, Moves.TRIPLE_AXEL, Moves.SUCKER_PUNCH, Moves.WICKED_BLOW ], [Species.FUECOCO]: [ Moves.ALLURING_VOICE, Moves.SLACK_OFF, Moves.OVERDRIVE, Moves.MOONGEIST_BEAM ], [Species.QUAXLY]: [ Moves.DRAGON_DANCE, Moves.TRIPLE_AXEL, Moves.POWER_TRIP, Moves.THUNDEROUS_KICK ], [Species.LECHONK]: [ Moves.MILK_DRINK, Moves.PSYSHIELD_BASH, Moves.FILLET_AWAY, Moves.MULTI_ATTACK ], [Species.TAROUNTULA]: [ Moves.STONE_AXE, Moves.LEECH_LIFE, Moves.THIEF, Moves.SPORE ], [Species.NYMBLE]: [ Moves.KNOCK_OFF, Moves.FELL_STINGER, Moves.ATTACK_ORDER, Moves.WICKED_BLOW ], - [Species.PAWMI]: [ Moves.DRAIN_PUNCH, Moves.ICE_PUNCH, Moves.MACH_PUNCH, Moves.PLASMA_FISTS ], - [Species.TANDEMAUS]: [ Moves.BATON_PASS, Moves.THIEF, Moves.SIZZLY_SLIDE, Moves.REVIVAL_BLESSING ], + [Species.PAWMI]: [ Moves.DRAIN_PUNCH, Moves.METEOR_MASH, Moves.JET_PUNCH, Moves.PLASMA_FISTS ], + [Species.TANDEMAUS]: [ Moves.BATON_PASS, Moves.COVET, Moves.SIZZLY_SLIDE, Moves.REVIVAL_BLESSING ], [Species.FIDOUGH]: [ Moves.SOFT_BOILED, Moves.HIGH_HORSEPOWER, Moves.SIZZLY_SLIDE, Moves.TIDY_UP ], [Species.SMOLIV]: [ Moves.STRENGTH_SAP, Moves.EARTH_POWER, Moves.CALM_MIND, Moves.BOOMBURST ], [Species.SQUAWKABILLY]: [ Moves.PARTING_SHOT, Moves.EARTHQUAKE, Moves.FLARE_BLITZ, Moves.EXTREME_SPEED ], @@ -497,24 +530,24 @@ export const speciesEggMoves = { [Species.CAPSAKID]: [ Moves.STRENGTH_SAP, Moves.APPLE_ACID, Moves.FROST_BREATH, Moves.TORCH_SONG ], [Species.RELLOR]: [ Moves.HEAL_BLOCK, Moves.RECOVER, Moves.HEAT_WAVE, Moves.LUMINA_CRASH ], [Species.FLITTLE]: [ Moves.COSMIC_POWER, Moves.AURA_SPHERE, Moves.ROOST, Moves.FIERY_DANCE ], - [Species.TINKATINK]: [ Moves.MAGICAL_TORQUE, Moves.PYRO_BALL, Moves.ICE_HAMMER, Moves.SHIFT_GEAR ], + [Species.TINKATINK]: [ Moves.MAGICAL_TORQUE, Moves.PYRO_BALL, Moves.IVY_CUDGEL, Moves.SHIFT_GEAR ], [Species.WIGLETT]: [ Moves.SHELL_SMASH, Moves.ICICLE_CRASH, Moves.SEED_BOMB, Moves.SURGING_STRIKES ], [Species.BOMBIRDIER]: [ Moves.FLOATY_FALL, Moves.SWORDS_DANCE, Moves.SUCKER_PUNCH, Moves.MIGHTY_CLEAVE ], [Species.FINIZEN]: [ Moves.TRIPLE_AXEL, Moves.DRAIN_PUNCH, Moves.HEADLONG_RUSH, Moves.SURGING_STRIKES ], [Species.VAROOM]: [ Moves.COMBAT_TORQUE, Moves.U_TURN, Moves.BLAZING_TORQUE, Moves.NOXIOUS_TORQUE ], - [Species.CYCLIZAR]: [ Moves.BATON_PASS, Moves.BLAZING_TORQUE, Moves.KNOCK_OFF, Moves.CLANGOROUS_SOUL ], + [Species.CYCLIZAR]: [ Moves.PARTING_SHOT, Moves.FIRE_LASH, Moves.MAGICAL_TORQUE, Moves.GLAIVE_RUSH ], [Species.ORTHWORM]: [ Moves.SIZZLY_SLIDE, Moves.COIL, Moves.BODY_PRESS, Moves.SHORE_UP ], [Species.GLIMMET]: [ Moves.CALM_MIND, Moves.EARTH_POWER, Moves.FIERY_DANCE, Moves.MALIGNANT_CHAIN ], [Species.GREAVARD]: [ Moves.SHADOW_BONE, Moves.YAWN, Moves.SHORE_UP, Moves.COLLISION_COURSE ], [Species.FLAMIGO]: [ Moves.THUNDEROUS_KICK, Moves.TRIPLE_AXEL, Moves.FLOATY_FALL, Moves.VICTORY_DANCE ], - [Species.CETODDLE]: [ Moves.MOUNTAIN_GALE, Moves.HIGH_HORSEPOWER, Moves.RECOVER, Moves.DRAGON_DANCE ], + [Species.CETODDLE]: [ Moves.MOUNTAIN_GALE, Moves.HIGH_HORSEPOWER, Moves.SLACK_OFF, Moves.DRAGON_DANCE ], [Species.VELUZA]: [ Moves.PSYBLADE, Moves.FLIP_TURN, Moves.ICE_SPINNER, Moves.BITTER_BLADE ], - [Species.DONDOZO]: [ Moves.SOFT_BOILED, Moves.SIZZLY_SLIDE, Moves.TOXIC, Moves.SALT_CURE ], - [Species.TATSUGIRI]: [ Moves.ICE_BEAM, Moves.FILLET_AWAY, Moves.CORE_ENFORCER, Moves.STEAM_ERUPTION ], + [Species.DONDOZO]: [ Moves.SOFT_BOILED, Moves.SIZZLY_SLIDE, Moves.BREAKING_SWIPE, Moves.SALT_CURE ], + [Species.TATSUGIRI]: [ Moves.SLUDGE_BOMB, Moves.FILLET_AWAY, Moves.CORE_ENFORCER, Moves.STEAM_ERUPTION ], [Species.GREAT_TUSK]: [ Moves.STONE_AXE, Moves.MORNING_SUN, Moves.COLLISION_COURSE, Moves.SHIFT_GEAR ], [Species.SCREAM_TAIL]: [ Moves.TORCH_SONG, Moves.GLITZY_GLOW, Moves.MOONLIGHT, Moves.SPARKLY_SWIRL ], [Species.BRUTE_BONNET]: [ Moves.SAPPY_SEED, Moves.STRENGTH_SAP, Moves.EARTHQUAKE, Moves.WICKED_BLOW ], - [Species.FLUTTER_MANE]: [ Moves.MOONLIGHT, Moves.FLAMETHROWER, Moves.EARTH_POWER, Moves.ASTRAL_BARRAGE ], + [Species.FLUTTER_MANE]: [ Moves.MOONLIGHT, Moves.NASTY_PLOT, Moves.EARTH_POWER, Moves.MOONGEIST_BEAM ], [Species.SLITHER_WING]: [ Moves.MIGHTY_CLEAVE, Moves.THUNDEROUS_KICK, Moves.FIRE_LASH, Moves.VICTORY_DANCE ], [Species.SANDY_SHOCKS]: [ Moves.MORNING_SUN, Moves.ICE_BEAM, Moves.NASTY_PLOT, Moves.THUNDERCLAP ], [Species.IRON_TREADS]: [ Moves.FUSION_BOLT, Moves.BULK_UP, Moves.SHORE_UP, Moves.SUNSTEEL_STRIKE ], @@ -523,57 +556,32 @@ export const speciesEggMoves = { [Species.IRON_JUGULIS]: [ Moves.FIERY_WRATH, Moves.ROOST, Moves.NASTY_PLOT, Moves.OBLIVION_WING ], [Species.IRON_MOTH]: [ Moves.EARTH_POWER, Moves.SEARING_SHOT, Moves.MALIGNANT_CHAIN, Moves.QUIVER_DANCE ], [Species.IRON_THORNS]: [ Moves.DIAMOND_STORM, Moves.SHORE_UP, Moves.SHIFT_GEAR, Moves.PLASMA_FISTS ], - [Species.FRIGIBAX]: [ Moves.DRAGON_DARTS, Moves.DRAGON_DANCE, Moves.EARTHQUAKE, Moves.GLACIAL_LANCE ], + [Species.FRIGIBAX]: [ Moves.BEHEMOTH_BLADE, Moves.DRAGON_DANCE, Moves.MOUNTAIN_GALE, Moves.PRECIPICE_BLADES ], [Species.GIMMIGHOUL]: [ Moves.HAPPY_HOUR, Moves.AURA_SPHERE, Moves.SURF, Moves.ASTRAL_BARRAGE ], [Species.WO_CHIEN]: [ Moves.SPORE, Moves.FIERY_WRATH, Moves.SAPPY_SEED, Moves.STRENGTH_SAP ], [Species.CHIEN_PAO]: [ Moves.KNOCK_OFF, Moves.PARTING_SHOT, Moves.BITTER_BLADE, Moves.GLACIAL_LANCE ], - [Species.TING_LU]: [ Moves.SHORE_UP, Moves.WICKED_BLOW, Moves.SAPPY_SEED, Moves.THOUSAND_ARROWS ], + [Species.TING_LU]: [ Moves.SHORE_UP, Moves.CEASELESS_EDGE, Moves.SAPPY_SEED, Moves.PRECIPICE_BLADES ], [Species.CHI_YU]: [ Moves.FIERY_WRATH, Moves.HYDRO_STEAM, Moves.MORNING_SUN, Moves.BLUE_FLARE ], [Species.ROARING_MOON]: [ Moves.FIRE_LASH, Moves.DRAGON_HAMMER, Moves.SUCKER_PUNCH, Moves.WICKED_BLOW ], [Species.IRON_VALIANT]: [ Moves.PLASMA_FISTS, Moves.NO_RETREAT, Moves.SECRET_SWORD, Moves.MAGICAL_TORQUE ], - [Species.KORAIDON]: [ Moves.SUNSTEEL_STRIKE, Moves.MORNING_SUN, Moves.DRAGON_DARTS, Moves.BITTER_BLADE ], + [Species.KORAIDON]: [ Moves.SUNSTEEL_STRIKE, Moves.SOLAR_BLADE, Moves.DRAGON_DARTS, Moves.BITTER_BLADE ], [Species.MIRAIDON]: [ Moves.ICE_BEAM, Moves.CLANGOROUS_SOUL, Moves.CORE_ENFORCER, Moves.RISING_VOLTAGE ], - [Species.WALKING_WAKE]: [ Moves.CORE_ENFORCER, Moves.NASTY_PLOT, Moves.EARTH_POWER, Moves.BOUNCY_BUBBLE ], + [Species.WALKING_WAKE]: [ Moves.BOUNCY_BUBBLE, Moves.NASTY_PLOT, Moves.SLUDGE_WAVE, Moves.CORE_ENFORCER ], [Species.IRON_LEAVES]: [ Moves.BITTER_BLADE, Moves.U_TURN, Moves.MIGHTY_CLEAVE, Moves.VICTORY_DANCE ], - [Species.POLTCHAGEIST]: [ Moves.SHELL_SMASH, Moves.BOUNCY_BUBBLE, Moves.LEECH_SEED, Moves.SPARKLY_SWIRL ], - [Species.OKIDOGI]: [ Moves.DRAIN_PUNCH, Moves.KNOCK_OFF, Moves.DIRE_CLAW, Moves.VICTORY_DANCE ], + [Species.POLTCHAGEIST]: [ Moves.PARABOLIC_CHARGE, Moves.BOUNCY_BUBBLE, Moves.LEECH_SEED, Moves.SPARKLY_SWIRL ], + [Species.OKIDOGI]: [ Moves.COMBAT_TORQUE, Moves.TIDY_UP, Moves.DIRE_CLAW, Moves.WICKED_BLOW ], [Species.MUNKIDORI]: [ Moves.PSYSTRIKE, Moves.HEAT_WAVE, Moves.EARTH_POWER, Moves.MALIGNANT_CHAIN ], - [Species.FEZANDIPITI]: [ Moves.BARB_BARRAGE, Moves.VICTORY_DANCE, Moves.TRIPLE_AXEL, Moves.MAGICAL_TORQUE ], - [Species.OGERPON]: [ Moves.FLOWER_TRICK, Moves.BONEMERANG, Moves.TRIPLE_AXEL, Moves.GIGATON_HAMMER ], + [Species.FEZANDIPITI]: [ Moves.BARB_BARRAGE, Moves.BONEMERANG, Moves.TRIPLE_AXEL, Moves.VICTORY_DANCE ], + [Species.OGERPON]: [ Moves.SLEEP_POWDER, Moves.BONEMERANG, Moves.TRIPLE_AXEL, Moves.FLOWER_TRICK ], [Species.GOUGING_FIRE]: [ Moves.EXTREME_SPEED, Moves.BULK_UP, Moves.SACRED_FIRE, Moves.GLAIVE_RUSH ], [Species.RAGING_BOLT]: [ Moves.NASTY_PLOT, Moves.FLAMETHROWER, Moves.MORNING_SUN, Moves.ELECTRO_DRIFT ], [Species.IRON_BOULDER]: [ Moves.PSYBLADE, Moves.KOWTOW_CLEAVE, Moves.STONE_AXE, Moves.BITTER_BLADE ], [Species.IRON_CROWN]: [ Moves.NASTY_PLOT, Moves.SECRET_SWORD, Moves.PSYSTRIKE, Moves.ELECTRO_DRIFT ], [Species.TERAPAGOS]: [ Moves.MOONBLAST, Moves.RECOVER, Moves.ICE_BEAM, Moves.SHELL_SMASH ], [Species.PECHARUNT]: [ Moves.TAKE_HEART, Moves.BODY_PRESS, Moves.SAPPY_SEED, Moves.KINGS_SHIELD ], - [Species.ALOLA_RATTATA]: [ Moves.FALSE_SURRENDER, Moves.PSYCHIC_FANGS, Moves.COIL, Moves.EXTREME_SPEED ], - [Species.ALOLA_SANDSHREW]: [ Moves.SPIKY_SHIELD, Moves.AQUA_CUTTER, Moves.SHIFT_GEAR, Moves.GLACIAL_LANCE ], - [Species.ALOLA_VULPIX]: [ Moves.MOONBLAST, Moves.PARTING_SHOT, Moves.FLAMETHROWER, Moves.REVIVAL_BLESSING ], - [Species.ALOLA_DIGLETT]: [ Moves.THOUSAND_WAVES, Moves.SWORDS_DANCE, Moves.TRIPLE_DIVE, Moves.MOUNTAIN_GALE ], - [Species.ALOLA_MEOWTH]: [ Moves.BADDY_BAD, Moves.BUZZY_BUZZ, Moves.PARTING_SHOT, Moves.MAKE_IT_RAIN ], - [Species.ALOLA_GEODUDE]: [ Moves.THOUSAND_WAVES, Moves.BULK_UP, Moves.STONE_AXE, Moves.EXTREME_SPEED ], - [Species.ALOLA_GRIMER]: [ Moves.SUCKER_PUNCH, Moves.BARB_BARRAGE, Moves.STRENGTH_SAP, Moves.SURGING_STRIKES ], - [Species.ETERNAL_FLOETTE]: [ Moves.MIND_BLOWN, Moves.CHLOROBLAST, Moves.PHOTON_GEYSER, Moves.QUIVER_DANCE ], - [Species.GALAR_MEOWTH]: [ Moves.AQUA_CUTTER, Moves.KNOCK_OFF, Moves.BULLET_PUNCH, Moves.BEHEMOTH_BASH ], - [Species.GALAR_PONYTA]: [ Moves.MAGICAL_TORQUE, Moves.EXTREME_SPEED, Moves.FLARE_BLITZ, Moves.PHOTON_GEYSER ], - [Species.GALAR_SLOWPOKE]: [ Moves.TRICK_ROOM, Moves.BADDY_BAD, Moves.MOONBLAST, Moves.TORCH_SONG ], - [Species.GALAR_FARFETCHD]: [ Moves.ROOST, Moves.SACRED_SWORD, Moves.KINGS_SHIELD, Moves.BEHEMOTH_BLADE ], - [Species.GALAR_ARTICUNO]: [ Moves.SECRET_SWORD, Moves.NIGHT_DAZE, Moves.ICE_BEAM, Moves.OBLIVION_WING ], - [Species.GALAR_ZAPDOS]: [ Moves.TIDY_UP, Moves.FLOATY_FALL, Moves.ROOST, Moves.BOLT_BEAK ], - [Species.GALAR_MOLTRES]: [ Moves.ROOST, Moves.SLUDGE_BOMB, Moves.FLAMETHROWER, Moves.OBLIVION_WING ], - [Species.GALAR_CORSOLA]: [ Moves.SHELL_SMASH, Moves.AURA_SPHERE, Moves.INFERNAL_PARADE, Moves.ASTRAL_BARRAGE ], - [Species.GALAR_ZIGZAGOON]: [ Moves.CEASELESS_EDGE, Moves.FACADE, Moves.PARTING_SHOT, Moves.EXTREME_SPEED ], - [Species.GALAR_DARUMAKA]: [ Moves.ICE_SPINNER, Moves.ENDURE, Moves.DRAIN_PUNCH, Moves.V_CREATE ], - [Species.GALAR_YAMASK]: [ Moves.STRENGTH_SAP, Moves.DIRE_CLAW, Moves.THOUSAND_WAVES, Moves.SPECTRAL_THIEF ], - [Species.GALAR_STUNFISK]: [ Moves.SPIKY_SHIELD, Moves.THOUSAND_ARROWS, Moves.STRENGTH_SAP, Moves.DOUBLE_IRON_BASH ], - [Species.HISUI_GROWLITHE]: [ Moves.WAVE_CRASH, Moves.HEAD_SMASH, Moves.VOLT_TACKLE, Moves.DRAGON_DANCE ], - [Species.HISUI_VOLTORB]: [ Moves.FROST_BREATH, Moves.NASTY_PLOT, Moves.APPLE_ACID, Moves.ELECTRO_DRIFT ], - [Species.HISUI_QWILFISH]: [ Moves.CEASELESS_EDGE, Moves.KNOCK_OFF, Moves.STRENGTH_SAP, Moves.FISHIOUS_REND ], - [Species.HISUI_SNEASEL]: [ Moves.THUNDEROUS_KICK, Moves.KNOCK_OFF, Moves.TRIPLE_AXEL, Moves.VICTORY_DANCE ], - [Species.HISUI_ZORUA]: [ Moves.MOONBLAST, Moves.HYPER_VOICE, Moves.PARTING_SHOT, Moves.BLOOD_MOON ], [Species.PALDEA_TAUROS]: [ Moves.NO_RETREAT, Moves.BLAZING_TORQUE, Moves.AQUA_STEP, Moves.THUNDEROUS_KICK ], - [Species.PALDEA_WOOPER]: [ Moves.RECOVER, Moves.STONE_AXE, Moves.BANEFUL_BUNKER, Moves.SAPPY_SEED ], - [Species.BLOODMOON_URSALUNA]: [ Moves.NASTY_PLOT, Moves.TRICK_ROOM, Moves.THUNDERBOLT, Moves.BOOMBURST ] + [Species.PALDEA_WOOPER]: [ Moves.STONE_AXE, Moves.RECOVER, Moves.BANEFUL_BUNKER, Moves.BARB_BARRAGE ], + [Species.BLOODMOON_URSALUNA]: [ Moves.NASTY_PLOT, Moves.ROCK_POLISH, Moves.SANDSEAR_STORM, Moves.BOOMBURST ] }; function parseEggMoves(content: string): void { diff --git a/src/data/balance/passives.ts b/src/data/balance/passives.ts index 6fb0e80e085..3a8285b4586 100644 --- a/src/data/balance/passives.ts +++ b/src/data/balance/passives.ts @@ -23,9 +23,9 @@ export const starterPassiveAbilities = { [Species.MEOWTH]: Abilities.TOUGH_CLAWS, [Species.PSYDUCK]: Abilities.SIMPLE, [Species.MANKEY]: Abilities.IRON_FIST, - [Species.GROWLITHE]: Abilities.SPEED_BOOST, + [Species.GROWLITHE]: Abilities.FLUFFY, [Species.POLIWAG]: Abilities.NO_GUARD, - [Species.ABRA]: Abilities.PSYCHIC_SURGE, + [Species.ABRA]: Abilities.MAGICIAN, [Species.MACHOP]: Abilities.QUICK_FEET, [Species.BELLSPROUT]: Abilities.FLOWER_GIFT, [Species.TENTACOOL]: Abilities.TOXIC_CHAIN, @@ -41,7 +41,7 @@ export const starterPassiveAbilities = { [Species.GASTLY]: Abilities.SHADOW_SHIELD, [Species.ONIX]: Abilities.ROCKY_PAYLOAD, [Species.DROWZEE]: Abilities.MAGICIAN, - [Species.KRABBY]: Abilities.THERMAL_EXCHANGE, + [Species.KRABBY]: Abilities.UNBURDEN, [Species.VOLTORB]: Abilities.TRANSISTOR, [Species.EXEGGCUTE]: Abilities.RIPEN, [Species.CUBONE]: Abilities.PARENTAL_BOND, @@ -70,6 +70,7 @@ export const starterPassiveAbilities = { [Species.DRATINI]: Abilities.AERILATE, [Species.MEWTWO]: Abilities.NEUROFORCE, [Species.MEW]: Abilities.PROTEAN, + [Species.CHIKORITA]: Abilities.THICK_FAT, [Species.CYNDAQUIL]: Abilities.DROUGHT, [Species.TOTODILE]: Abilities.TOUGH_CLAWS, @@ -77,12 +78,12 @@ export const starterPassiveAbilities = { [Species.HOOTHOOT]: Abilities.AERILATE, [Species.LEDYBA]: Abilities.PRANKSTER, [Species.SPINARAK]: Abilities.PRANKSTER, - [Species.CHINCHOU]: Abilities.WATER_BUBBLE, + [Species.CHINCHOU]: Abilities.REGENERATOR, [Species.PICHU]: Abilities.ELECTRIC_SURGE, [Species.CLEFFA]: Abilities.ANALYTIC, [Species.IGGLYBUFF]: Abilities.HUGE_POWER, [Species.TOGEPI]: Abilities.PIXILATE, - [Species.NATU]: Abilities.TINTED_LENS, + [Species.NATU]: Abilities.SHEER_FORCE, [Species.MAREEP]: Abilities.ELECTROMORPHOSIS, [Species.HOPPIP]: Abilities.FLUFFY, [Species.AIPOM]: Abilities.SCRAPPY, @@ -108,24 +109,25 @@ export const starterPassiveAbilities = { [Species.REMORAID]: Abilities.SIMPLE, [Species.DELIBIRD]: Abilities.HUGE_POWER, [Species.SKARMORY]: Abilities.LIGHTNING_ROD, - [Species.HOUNDOUR]: Abilities.DROUGHT, + [Species.HOUNDOUR]: Abilities.LIGHTNING_ROD, [Species.PHANPY]: Abilities.SPEED_BOOST, [Species.STANTLER]: Abilities.SPEED_BOOST, [Species.SMEARGLE]: Abilities.PRANKSTER, [Species.TYROGUE]: Abilities.MOXIE, [Species.SMOOCHUM]: Abilities.PSYCHIC_SURGE, [Species.ELEKID]: Abilities.SHEER_FORCE, - [Species.MAGBY]: Abilities.CONTRARY, + [Species.MAGBY]: Abilities.SHEER_FORCE, [Species.MILTANK]: Abilities.STAMINA, - [Species.RAIKOU]: Abilities.TRANSISTOR, - [Species.ENTEI]: Abilities.MOXIE, - [Species.SUICUNE]: Abilities.UNAWARE, + [Species.RAIKOU]: Abilities.BEAST_BOOST, + [Species.ENTEI]: Abilities.BEAST_BOOST, + [Species.SUICUNE]: Abilities.BEAST_BOOST, [Species.LARVITAR]: Abilities.SAND_RUSH, [Species.LUGIA]: Abilities.DELTA_STREAM, [Species.HO_OH]: Abilities.MAGIC_GUARD, [Species.CELEBI]: Abilities.PSYCHIC_SURGE, + [Species.TREECKO]: Abilities.TINTED_LENS, - [Species.TORCHIC]: Abilities.RECKLESS, + [Species.TORCHIC]: Abilities.DEFIANT, [Species.MUDKIP]: Abilities.DRIZZLE, [Species.POOCHYENA]: Abilities.TOUGH_CLAWS, [Species.ZIGZAGOON]: Abilities.RUN_AWAY, @@ -148,7 +150,7 @@ export const starterPassiveAbilities = { [Species.MAWILE]: Abilities.UNNERVE, [Species.ARON]: Abilities.EARTH_EATER, [Species.MEDITITE]: Abilities.MINDS_EYE, - [Species.ELECTRIKE]: Abilities.ELECTRIC_SURGE, + [Species.ELECTRIKE]: Abilities.FLASH_FIRE, [Species.PLUSLE]: Abilities.POWER_SPOT, [Species.MINUN]: Abilities.POWER_SPOT, [Species.VOLBEAT]: Abilities.HONEY_GATHER, @@ -162,7 +164,7 @@ export const starterPassiveAbilities = { [Species.SPINDA]: Abilities.SIMPLE, [Species.TRAPINCH]: Abilities.ADAPTABILITY, [Species.CACNEA]: Abilities.SAND_RUSH, - [Species.SWABLU]: Abilities.ADAPTABILITY, + [Species.SWABLU]: Abilities.FLUFFY, [Species.ZANGOOSE]: Abilities.POISON_HEAL, [Species.SEVIPER]: Abilities.MULTISCALE, [Species.LUNATONE]: Abilities.SHADOW_SHIELD, @@ -182,14 +184,14 @@ export const starterPassiveAbilities = { [Species.WYNAUT]: Abilities.STURDY, [Species.SNORUNT]: Abilities.SNOW_WARNING, [Species.SPHEAL]: Abilities.UNAWARE, - [Species.CLAMPERL]: Abilities.DRIZZLE, + [Species.CLAMPERL]: Abilities.ARENA_TRAP, [Species.RELICANTH]: Abilities.PRIMORDIAL_SEA, [Species.LUVDISC]: Abilities.MULTISCALE, - [Species.BAGON]: Abilities.DRAGONS_MAW, + [Species.BAGON]: Abilities.MOLD_BREAKER, [Species.BELDUM]: Abilities.LEVITATE, [Species.REGIROCK]: Abilities.SAND_STREAM, [Species.REGICE]: Abilities.SNOW_WARNING, - [Species.REGISTEEL]: Abilities.FILTER, + [Species.REGISTEEL]: Abilities.STEELY_SPIRIT, [Species.LATIAS]: Abilities.PRISM_ARMOR, [Species.LATIOS]: Abilities.TINTED_LENS, [Species.KYOGRE]: Abilities.MOLD_BREAKER, @@ -197,6 +199,7 @@ export const starterPassiveAbilities = { [Species.RAYQUAZA]: Abilities.UNNERVE, [Species.JIRACHI]: Abilities.COMATOSE, [Species.DEOXYS]: Abilities.PROTEAN, + [Species.TURTWIG]: Abilities.THICK_FAT, [Species.CHIMCHAR]: Abilities.BEAST_BOOST, [Species.PIPLUP]: Abilities.DRIZZLE, @@ -218,9 +221,9 @@ export const starterPassiveAbilities = { [Species.GLAMEOW]: Abilities.INTIMIDATE, [Species.CHINGLING]: Abilities.PUNK_ROCK, [Species.STUNKY]: Abilities.NEUTRALIZING_GAS, - [Species.BRONZOR]: Abilities.BULLETPROOF, + [Species.BRONZOR]: Abilities.MIRROR_ARMOR, [Species.BONSLY]: Abilities.SAP_SIPPER, - [Species.MIME_JR]: Abilities.OPPORTUNIST, + [Species.MIME_JR]: Abilities.PRANKSTER, [Species.HAPPINY]: Abilities.FUR_COAT, [Species.CHATOT]: Abilities.PUNK_ROCK, [Species.SPIRITOMB]: Abilities.VESSEL_OF_RUIN, @@ -233,7 +236,7 @@ export const starterPassiveAbilities = { [Species.CARNIVINE]: Abilities.ARENA_TRAP, [Species.FINNEON]: Abilities.WATER_BUBBLE, [Species.MANTYKE]: Abilities.UNAWARE, - [Species.SNOVER]: Abilities.THICK_FAT, + [Species.SNOVER]: Abilities.GRASSY_SURGE, [Species.ROTOM]: Abilities.HADRON_ENGINE, [Species.UXIE]: Abilities.UNAWARE, [Species.MESPRIT]: Abilities.MOODY, @@ -249,6 +252,7 @@ export const starterPassiveAbilities = { [Species.DARKRAI]: Abilities.UNNERVE, [Species.SHAYMIN]: Abilities.WIND_RIDER, [Species.ARCEUS]: Abilities.ADAPTABILITY, + [Species.VICTINI]: Abilities.SHEER_FORCE, [Species.SNIVY]: Abilities.MULTISCALE, [Species.TEPIG]: Abilities.ROCK_HEAD, @@ -264,7 +268,7 @@ export const starterPassiveAbilities = { [Species.BLITZLE]: Abilities.ELECTRIC_SURGE, [Species.ROGGENROLA]: Abilities.SOLID_ROCK, [Species.WOOBAT]: Abilities.OPPORTUNIST, - [Species.DRILBUR]: Abilities.SAND_STREAM, + [Species.DRILBUR]: Abilities.STURDY, [Species.AUDINO]: Abilities.FRIEND_GUARD, [Species.TIMBURR]: Abilities.ROCKY_PAYLOAD, [Species.TYMPOLE]: Abilities.POISON_HEAL, @@ -292,7 +296,7 @@ export const starterPassiveAbilities = { [Species.DUCKLETT]: Abilities.DRIZZLE, [Species.VANILLITE]: Abilities.SLUSH_RUSH, [Species.DEERLING]: Abilities.FUR_COAT, - [Species.EMOLGA]: Abilities.TRANSISTOR, + [Species.EMOLGA]: Abilities.SERENE_GRACE, [Species.KARRABLAST]: Abilities.QUICK_DRAW, [Species.FOONGUS]: Abilities.THICK_FAT, [Species.FRILLISH]: Abilities.POISON_HEAL, @@ -301,10 +305,10 @@ export const starterPassiveAbilities = { [Species.FERROSEED]: Abilities.ROUGH_SKIN, [Species.KLINK]: Abilities.STEELY_SPIRIT, [Species.TYNAMO]: Abilities.POISON_HEAL, - [Species.ELGYEM]: Abilities.PRISM_ARMOR, - [Species.LITWICK]: Abilities.SOUL_HEART, + [Species.ELGYEM]: Abilities.BEADS_OF_RUIN, + [Species.LITWICK]: Abilities.SHADOW_TAG, [Species.AXEW]: Abilities.DRAGONS_MAW, - [Species.CUBCHOO]: Abilities.TOUGH_CLAWS, + [Species.CUBCHOO]: Abilities.FUR_COAT, [Species.CRYOGONAL]: Abilities.SNOW_WARNING, [Species.SHELMET]: Abilities.PROTEAN, [Species.STUNFISK]: Abilities.STORM_DRAIN, @@ -331,6 +335,7 @@ export const starterPassiveAbilities = { [Species.KELDEO]: Abilities.GRIM_NEIGH, [Species.MELOETTA]: Abilities.MINDS_EYE, [Species.GENESECT]: Abilities.PROTEAN, + [Species.CHESPIN]: Abilities.DAUNTLESS_SHIELD, [Species.FENNEKIN]: Abilities.PSYCHIC_SURGE, [Species.FROAKIE]: Abilities.STAKEOUT, @@ -345,11 +350,11 @@ export const starterPassiveAbilities = { [Species.ESPURR]: Abilities.FUR_COAT, [Species.HONEDGE]: Abilities.SHARPNESS, [Species.SPRITZEE]: Abilities.FUR_COAT, - [Species.SWIRLIX]: Abilities.WELL_BAKED_BODY, + [Species.SWIRLIX]: Abilities.RIPEN, [Species.INKAY]: Abilities.UNNERVE, [Species.BINACLE]: Abilities.SAP_SIPPER, [Species.SKRELP]: Abilities.DRAGONS_MAW, - [Species.CLAUNCHER]: Abilities.SWIFT_SWIM, + [Species.CLAUNCHER]: Abilities.PROTEAN, [Species.HELIOPTILE]: Abilities.PROTEAN, [Species.TYRUNT]: Abilities.RECKLESS, [Species.AMAURA]: Abilities.ICE_SCALES, @@ -364,10 +369,12 @@ export const starterPassiveAbilities = { [Species.NOIBAT]: Abilities.PUNK_ROCK, [Species.XERNEAS]: Abilities.HARVEST, [Species.YVELTAL]: Abilities.SOUL_HEART, - [Species.ZYGARDE]: Abilities.HUGE_POWER, - [Species.DIANCIE]: Abilities.LEVITATE, + [Species.ZYGARDE]: Abilities.ADAPTABILITY, + [Species.DIANCIE]: Abilities.PRISM_ARMOR, [Species.HOOPA]: Abilities.OPPORTUNIST, [Species.VOLCANION]: Abilities.FILTER, + [Species.ETERNAL_FLOETTE]: Abilities.MAGIC_GUARD, + [Species.ROWLET]: Abilities.SNIPER, [Species.LITTEN]: Abilities.OPPORTUNIST, [Species.POPPLIO]: Abilities.PUNK_ROCK, @@ -403,7 +410,7 @@ export const starterPassiveAbilities = { [Species.DRAMPA]: Abilities.THICK_FAT, [Species.DHELMISE]: Abilities.WATER_BUBBLE, [Species.JANGMO_O]: Abilities.DAUNTLESS_SHIELD, - [Species.TAPU_KOKO]: Abilities.TRANSISTOR, + [Species.TAPU_KOKO]: Abilities.DAUNTLESS_SHIELD, [Species.TAPU_LELE]: Abilities.SHEER_FORCE, [Species.TAPU_BULU]: Abilities.TRIAGE, [Species.TAPU_FINI]: Abilities.FAIRY_AURA, @@ -413,16 +420,24 @@ export const starterPassiveAbilities = { [Species.PHEROMOSA]: Abilities.TINTED_LENS, [Species.XURKITREE]: Abilities.TRANSISTOR, [Species.CELESTEELA]: Abilities.HEATPROOF, - [Species.KARTANA]: Abilities.SHARPNESS, + [Species.KARTANA]: Abilities.LONG_REACH, [Species.GUZZLORD]: Abilities.POISON_HEAL, [Species.NECROZMA]: Abilities.BEAST_BOOST, [Species.MAGEARNA]: Abilities.STEELY_SPIRIT, [Species.MARSHADOW]: Abilities.IRON_FIST, - [Species.POIPOLE]: Abilities.SHEER_FORCE, + [Species.POIPOLE]: Abilities.LEVITATE, [Species.STAKATAKA]: Abilities.SOLID_ROCK, [Species.BLACEPHALON]: Abilities.MAGIC_GUARD, [Species.ZERAORA]: Abilities.TOUGH_CLAWS, - [Species.MELTAN]: Abilities.STEELY_SPIRIT, + [Species.MELTAN]: Abilities.HEATPROOF, + [Species.ALOLA_RATTATA]: Abilities.ADAPTABILITY, + [Species.ALOLA_SANDSHREW]: Abilities.ICE_SCALES, + [Species.ALOLA_VULPIX]: Abilities.SHEER_FORCE, + [Species.ALOLA_DIGLETT]: Abilities.STURDY, + [Species.ALOLA_MEOWTH]: Abilities.DARK_AURA, + [Species.ALOLA_GEODUDE]: Abilities.DRY_SKIN, + [Species.ALOLA_GRIMER]: Abilities.TOXIC_DEBRIS, + [Species.GROOKEY]: Abilities.GRASS_PELT, [Species.SCORBUNNY]: Abilities.NO_GUARD, [Species.SOBBLE]: Abilities.SUPER_LUCK, @@ -431,7 +446,7 @@ export const starterPassiveAbilities = { [Species.BLIPBUG]: Abilities.PSYCHIC_SURGE, [Species.NICKIT]: Abilities.MAGICIAN, [Species.GOSSIFLEUR]: Abilities.GRASSY_SURGE, - [Species.WOOLOO]: Abilities.SIMPLE, + [Species.WOOLOO]: Abilities.SCRAPPY, [Species.CHEWTLE]: Abilities.ROCKY_PAYLOAD, [Species.YAMPER]: Abilities.SHEER_FORCE, [Species.ROLYCOLY]: Abilities.SOLID_ROCK, @@ -444,7 +459,7 @@ export const starterPassiveAbilities = { [Species.CLOBBOPUS]: Abilities.WATER_BUBBLE, [Species.SINISTEA]: Abilities.SHADOW_SHIELD, [Species.HATENNA]: Abilities.FAIRY_AURA, - [Species.IMPIDIMP]: Abilities.FUR_COAT, + [Species.IMPIDIMP]: Abilities.INTIMIDATE, [Species.MILCERY]: Abilities.REGENERATOR, [Species.FALINKS]: Abilities.PARENTAL_BOND, [Species.PINCURCHIN]: Abilities.ELECTROMORPHOSIS, @@ -455,7 +470,7 @@ export const starterPassiveAbilities = { [Species.MORPEKO]: Abilities.MOODY, [Species.CUFANT]: Abilities.EARTH_EATER, [Species.DRACOZOLT]: Abilities.NO_GUARD, - [Species.ARCTOZOLT]: Abilities.TRANSISTOR, + [Species.ARCTOZOLT]: Abilities.WATER_ABSORB, [Species.DRACOVISH]: Abilities.SWIFT_SWIM, [Species.ARCTOVISH]: Abilities.STRONG_JAW, [Species.DURALUDON]: Abilities.STEELWORKER, @@ -471,6 +486,24 @@ export const starterPassiveAbilities = { [Species.SPECTRIER]: Abilities.SHADOW_SHIELD, [Species.CALYREX]: Abilities.HARVEST, [Species.ENAMORUS]: Abilities.FAIRY_AURA, + [Species.GALAR_MEOWTH]: Abilities.UNBURDEN, + [Species.GALAR_PONYTA]: Abilities.CHILLING_NEIGH, + [Species.GALAR_SLOWPOKE]: Abilities.UNAWARE, + [Species.GALAR_FARFETCHD]: Abilities.INTREPID_SWORD, + [Species.GALAR_ARTICUNO]: Abilities.SERENE_GRACE, + [Species.GALAR_ZAPDOS]: Abilities.TOUGH_CLAWS, + [Species.GALAR_MOLTRES]: Abilities.DARK_AURA, + [Species.GALAR_CORSOLA]: Abilities.SHADOW_SHIELD, + [Species.GALAR_ZIGZAGOON]: Abilities.POISON_HEAL, + [Species.GALAR_DARUMAKA]: Abilities.FLASH_FIRE, + [Species.GALAR_YAMASK]: Abilities.TABLETS_OF_RUIN, + [Species.GALAR_STUNFISK]: Abilities.ARENA_TRAP, + [Species.HISUI_GROWLITHE]: Abilities.RECKLESS, + [Species.HISUI_VOLTORB]: Abilities.TRANSISTOR, + [Species.HISUI_QWILFISH]: Abilities.MERCILESS, + [Species.HISUI_SNEASEL]: Abilities.SCRAPPY, + [Species.HISUI_ZORUA]: Abilities.ADAPTABILITY, + [Species.SPRIGATITO]: Abilities.MAGICIAN, [Species.FUECOCO]: Abilities.PUNK_ROCK, [Species.QUAXLY]: Abilities.OPPORTUNIST, @@ -502,40 +535,40 @@ export const starterPassiveAbilities = { [Species.CYCLIZAR]: Abilities.PROTEAN, [Species.ORTHWORM]: Abilities.REGENERATOR, [Species.GLIMMET]: Abilities.LEVITATE, - [Species.GREAVARD]: Abilities.FUR_COAT, + [Species.GREAVARD]: Abilities.UNAWARE, [Species.FLAMIGO]: Abilities.MOXIE, - [Species.CETODDLE]: Abilities.ICE_SCALES, + [Species.CETODDLE]: Abilities.REFRIGERATE, [Species.VELUZA]: Abilities.SUPER_LUCK, - [Species.DONDOZO]: Abilities.PARENTAL_BOND, - [Species.TATSUGIRI]: Abilities.ADAPTABILITY, + [Species.DONDOZO]: Abilities.DRAGONS_MAW, + [Species.TATSUGIRI]: Abilities.FLUFFY, [Species.GREAT_TUSK]: Abilities.INTIMIDATE, [Species.SCREAM_TAIL]: Abilities.UNAWARE, [Species.BRUTE_BONNET]: Abilities.CHLOROPHYLL, [Species.FLUTTER_MANE]: Abilities.DAZZLING, [Species.SLITHER_WING]: Abilities.SCRAPPY, - [Species.SANDY_SHOCKS]: Abilities.EARTH_EATER, + [Species.SANDY_SHOCKS]: Abilities.ELECTRIC_SURGE, [Species.IRON_TREADS]: Abilities.STEELY_SPIRIT, [Species.IRON_BUNDLE]: Abilities.SNOW_WARNING, [Species.IRON_HANDS]: Abilities.IRON_FIST, [Species.IRON_JUGULIS]: Abilities.LIGHTNING_ROD, [Species.IRON_MOTH]: Abilities.LEVITATE, [Species.IRON_THORNS]: Abilities.SAND_STREAM, - [Species.FRIGIBAX]: Abilities.SNOW_WARNING, + [Species.FRIGIBAX]: Abilities.INTIMIDATE, [Species.GIMMIGHOUL]: Abilities.HONEY_GATHER, [Species.WO_CHIEN]: Abilities.VESSEL_OF_RUIN, [Species.CHIEN_PAO]: Abilities.INTIMIDATE, [Species.TING_LU]: Abilities.STAMINA, [Species.CHI_YU]: Abilities.BERSERK, [Species.ROARING_MOON]: Abilities.TOUGH_CLAWS, - [Species.IRON_VALIANT]: Abilities.ADAPTABILITY, + [Species.IRON_VALIANT]: Abilities.NEUROFORCE, [Species.KORAIDON]: Abilities.OPPORTUNIST, [Species.MIRAIDON]: Abilities.OPPORTUNIST, [Species.WALKING_WAKE]: Abilities.BEAST_BOOST, [Species.IRON_LEAVES]: Abilities.SHARPNESS, [Species.POLTCHAGEIST]: Abilities.TRIAGE, - [Species.OKIDOGI]: Abilities.FUR_COAT, - [Species.MUNKIDORI]: Abilities.NEUROFORCE, - [Species.FEZANDIPITI]: Abilities.LEVITATE, + [Species.OKIDOGI]: Abilities.DARK_AURA, + [Species.MUNKIDORI]: Abilities.MAGICIAN, + [Species.FEZANDIPITI]: Abilities.PIXILATE, [Species.OGERPON]: Abilities.OPPORTUNIST, [Species.GOUGING_FIRE]: Abilities.BEAST_BOOST, [Species.RAGING_BOLT]: Abilities.BEAST_BOOST, @@ -543,31 +576,6 @@ export const starterPassiveAbilities = { [Species.IRON_CROWN]: Abilities.SHARPNESS, [Species.TERAPAGOS]: Abilities.SOUL_HEART, [Species.PECHARUNT]: Abilities.TOXIC_CHAIN, - [Species.ALOLA_RATTATA]: Abilities.ADAPTABILITY, - [Species.ALOLA_SANDSHREW]: Abilities.ICE_SCALES, - [Species.ALOLA_VULPIX]: Abilities.SHEER_FORCE, - [Species.ALOLA_DIGLETT]: Abilities.STURDY, - [Species.ALOLA_MEOWTH]: Abilities.DARK_AURA, - [Species.ALOLA_GEODUDE]: Abilities.DRY_SKIN, - [Species.ALOLA_GRIMER]: Abilities.TOXIC_DEBRIS, - [Species.ETERNAL_FLOETTE]: Abilities.MAGIC_GUARD, - [Species.GALAR_MEOWTH]: Abilities.STEELWORKER, - [Species.GALAR_PONYTA]: Abilities.MOXIE, - [Species.GALAR_SLOWPOKE]: Abilities.UNAWARE, - [Species.GALAR_FARFETCHD]: Abilities.INTREPID_SWORD, - [Species.GALAR_ARTICUNO]: Abilities.SERENE_GRACE, - [Species.GALAR_ZAPDOS]: Abilities.TOUGH_CLAWS, - [Species.GALAR_MOLTRES]: Abilities.DARK_AURA, - [Species.GALAR_CORSOLA]: Abilities.SHADOW_SHIELD, - [Species.GALAR_ZIGZAGOON]: Abilities.POISON_HEAL, - [Species.GALAR_DARUMAKA]: Abilities.FLASH_FIRE, - [Species.GALAR_YAMASK]: Abilities.TABLETS_OF_RUIN, - [Species.GALAR_STUNFISK]: Abilities.ARENA_TRAP, - [Species.HISUI_GROWLITHE]: Abilities.RECKLESS, - [Species.HISUI_VOLTORB]: Abilities.TRANSISTOR, - [Species.HISUI_QWILFISH]: Abilities.MERCILESS, - [Species.HISUI_SNEASEL]: Abilities.SCRAPPY, - [Species.HISUI_ZORUA]: Abilities.ADAPTABILITY, [Species.PALDEA_TAUROS]: Abilities.ADAPTABILITY, [Species.PALDEA_WOOPER]: Abilities.THICK_FAT, [Species.BLOODMOON_URSALUNA]: Abilities.BERSERK diff --git a/src/data/balance/species-egg-tiers.ts b/src/data/balance/species-egg-tiers.ts index 27baa18151a..fee48695565 100644 --- a/src/data/balance/species-egg-tiers.ts +++ b/src/data/balance/species-egg-tiers.ts @@ -14,13 +14,10 @@ export const speciesEggTiers = { [Species.RATTATA]: EggTier.COMMON, [Species.SPEAROW]: EggTier.COMMON, [Species.EKANS]: EggTier.COMMON, - [Species.PIKACHU]: EggTier.COMMON, [Species.SANDSHREW]: EggTier.COMMON, [Species.NIDORAN_F]: EggTier.COMMON, [Species.NIDORAN_M]: EggTier.COMMON, - [Species.CLEFAIRY]: EggTier.COMMON, [Species.VULPIX]: EggTier.COMMON, - [Species.JIGGLYPUFF]: EggTier.COMMON, [Species.ZUBAT]: EggTier.COMMON, [Species.ODDISH]: EggTier.COMMON, [Species.PARAS]: EggTier.COMMON, @@ -39,7 +36,7 @@ export const speciesEggTiers = { [Species.PONYTA]: EggTier.COMMON, [Species.SLOWPOKE]: EggTier.COMMON, [Species.MAGNEMITE]: EggTier.RARE, - [Species.FARFETCHD]: EggTier.COMMON, + [Species.FARFETCHD]: EggTier.RARE, [Species.DODUO]: EggTier.COMMON, [Species.SEEL]: EggTier.COMMON, [Species.GRIMER]: EggTier.COMMON, @@ -51,33 +48,25 @@ export const speciesEggTiers = { [Species.VOLTORB]: EggTier.COMMON, [Species.EXEGGCUTE]: EggTier.COMMON, [Species.CUBONE]: EggTier.COMMON, - [Species.HITMONLEE]: EggTier.RARE, - [Species.HITMONCHAN]: EggTier.RARE, - [Species.LICKITUNG]: EggTier.COMMON, + [Species.LICKITUNG]: EggTier.RARE, [Species.KOFFING]: EggTier.COMMON, - [Species.RHYHORN]: EggTier.COMMON, - [Species.CHANSEY]: EggTier.COMMON, + [Species.RHYHORN]: EggTier.RARE, [Species.TANGELA]: EggTier.COMMON, [Species.KANGASKHAN]: EggTier.RARE, [Species.HORSEA]: EggTier.COMMON, [Species.GOLDEEN]: EggTier.COMMON, [Species.STARYU]: EggTier.COMMON, - [Species.MR_MIME]: EggTier.COMMON, [Species.SCYTHER]: EggTier.RARE, - [Species.JYNX]: EggTier.RARE, - [Species.ELECTABUZZ]: EggTier.RARE, - [Species.MAGMAR]: EggTier.RARE, [Species.PINSIR]: EggTier.RARE, [Species.TAUROS]: EggTier.RARE, - [Species.MAGIKARP]: EggTier.RARE, + [Species.MAGIKARP]: EggTier.COMMON, [Species.LAPRAS]: EggTier.RARE, [Species.DITTO]: EggTier.COMMON, [Species.EEVEE]: EggTier.COMMON, [Species.PORYGON]: EggTier.RARE, - [Species.OMANYTE]: EggTier.COMMON, - [Species.KABUTO]: EggTier.COMMON, + [Species.OMANYTE]: EggTier.RARE, + [Species.KABUTO]: EggTier.RARE, [Species.AERODACTYL]: EggTier.RARE, - [Species.SNORLAX]: EggTier.RARE, [Species.ARTICUNO]: EggTier.EPIC, [Species.ZAPDOS]: EggTier.EPIC, [Species.MOLTRES]: EggTier.EPIC, @@ -93,14 +82,12 @@ export const speciesEggTiers = { [Species.LEDYBA]: EggTier.COMMON, [Species.SPINARAK]: EggTier.COMMON, [Species.CHINCHOU]: EggTier.COMMON, - [Species.PICHU]: EggTier.COMMON, + [Species.PICHU]: EggTier.RARE, [Species.CLEFFA]: EggTier.COMMON, [Species.IGGLYBUFF]: EggTier.COMMON, [Species.TOGEPI]: EggTier.COMMON, [Species.NATU]: EggTier.COMMON, [Species.MAREEP]: EggTier.COMMON, - [Species.MARILL]: EggTier.RARE, - [Species.SUDOWOODO]: EggTier.COMMON, [Species.HOPPIP]: EggTier.COMMON, [Species.AIPOM]: EggTier.COMMON, [Species.SUNKERN]: EggTier.COMMON, @@ -109,7 +96,6 @@ export const speciesEggTiers = { [Species.MURKROW]: EggTier.COMMON, [Species.MISDREAVUS]: EggTier.COMMON, [Species.UNOWN]: EggTier.COMMON, - [Species.WOBBUFFET]: EggTier.COMMON, [Species.GIRAFARIG]: EggTier.COMMON, [Species.PINECO]: EggTier.COMMON, [Species.DUNSPARCE]: EggTier.COMMON, @@ -125,7 +111,6 @@ export const speciesEggTiers = { [Species.CORSOLA]: EggTier.COMMON, [Species.REMORAID]: EggTier.COMMON, [Species.DELIBIRD]: EggTier.COMMON, - [Species.MANTINE]: EggTier.COMMON, [Species.SKARMORY]: EggTier.RARE, [Species.HOUNDOUR]: EggTier.COMMON, [Species.PHANPY]: EggTier.COMMON, @@ -145,7 +130,7 @@ export const speciesEggTiers = { [Species.CELEBI]: EggTier.EPIC, [Species.TREECKO]: EggTier.COMMON, - [Species.TORCHIC]: EggTier.RARE, + [Species.TORCHIC]: EggTier.COMMON, [Species.MUDKIP]: EggTier.COMMON, [Species.POOCHYENA]: EggTier.COMMON, [Species.ZIGZAGOON]: EggTier.COMMON, @@ -154,14 +139,14 @@ export const speciesEggTiers = { [Species.SEEDOT]: EggTier.COMMON, [Species.TAILLOW]: EggTier.COMMON, [Species.WINGULL]: EggTier.COMMON, - [Species.RALTS]: EggTier.COMMON, + [Species.RALTS]: EggTier.RARE, [Species.SURSKIT]: EggTier.COMMON, [Species.SHROOMISH]: EggTier.COMMON, [Species.SLAKOTH]: EggTier.RARE, [Species.NINCADA]: EggTier.RARE, [Species.WHISMUR]: EggTier.COMMON, [Species.MAKUHITA]: EggTier.COMMON, - [Species.AZURILL]: EggTier.RARE, + [Species.AZURILL]: EggTier.COMMON, [Species.NOSEPASS]: EggTier.COMMON, [Species.SKITTY]: EggTier.COMMON, [Species.SABLEYE]: EggTier.COMMON, @@ -173,7 +158,6 @@ export const speciesEggTiers = { [Species.MINUN]: EggTier.COMMON, [Species.VOLBEAT]: EggTier.COMMON, [Species.ILLUMISE]: EggTier.COMMON, - [Species.ROSELIA]: EggTier.COMMON, [Species.GULPIN]: EggTier.COMMON, [Species.CARVANHA]: EggTier.COMMON, [Species.WAILMER]: EggTier.COMMON, @@ -191,21 +175,20 @@ export const speciesEggTiers = { [Species.BARBOACH]: EggTier.COMMON, [Species.CORPHISH]: EggTier.COMMON, [Species.BALTOY]: EggTier.COMMON, - [Species.LILEEP]: EggTier.COMMON, - [Species.ANORITH]: EggTier.COMMON, + [Species.LILEEP]: EggTier.RARE, + [Species.ANORITH]: EggTier.RARE, [Species.FEEBAS]: EggTier.RARE, [Species.CASTFORM]: EggTier.COMMON, [Species.KECLEON]: EggTier.COMMON, [Species.SHUPPET]: EggTier.COMMON, [Species.DUSKULL]: EggTier.COMMON, [Species.TROPIUS]: EggTier.COMMON, - [Species.CHIMECHO]: EggTier.COMMON, [Species.ABSOL]: EggTier.RARE, [Species.WYNAUT]: EggTier.COMMON, [Species.SNORUNT]: EggTier.COMMON, [Species.SPHEAL]: EggTier.COMMON, [Species.CLAMPERL]: EggTier.COMMON, - [Species.RELICANTH]: EggTier.COMMON, + [Species.RELICANTH]: EggTier.RARE, [Species.LUVDISC]: EggTier.COMMON, [Species.BAGON]: EggTier.RARE, [Species.BELDUM]: EggTier.RARE, @@ -228,8 +211,8 @@ export const speciesEggTiers = { [Species.KRICKETOT]: EggTier.COMMON, [Species.SHINX]: EggTier.COMMON, [Species.BUDEW]: EggTier.COMMON, - [Species.CRANIDOS]: EggTier.COMMON, - [Species.SHIELDON]: EggTier.COMMON, + [Species.CRANIDOS]: EggTier.RARE, + [Species.SHIELDON]: EggTier.RARE, [Species.BURMY]: EggTier.COMMON, [Species.COMBEE]: EggTier.COMMON, [Species.PACHIRISU]: EggTier.COMMON, @@ -244,12 +227,12 @@ export const speciesEggTiers = { [Species.BRONZOR]: EggTier.COMMON, [Species.BONSLY]: EggTier.COMMON, [Species.MIME_JR]: EggTier.COMMON, - [Species.HAPPINY]: EggTier.COMMON, + [Species.HAPPINY]: EggTier.RARE, [Species.CHATOT]: EggTier.COMMON, [Species.SPIRITOMB]: EggTier.RARE, [Species.GIBLE]: EggTier.RARE, [Species.MUNCHLAX]: EggTier.RARE, - [Species.RIOLU]: EggTier.COMMON, + [Species.RIOLU]: EggTier.RARE, [Species.HIPPOPOTAS]: EggTier.COMMON, [Species.SKORUPI]: EggTier.COMMON, [Species.CROAGUNK]: EggTier.COMMON, @@ -264,10 +247,10 @@ export const speciesEggTiers = { [Species.DIALGA]: EggTier.LEGENDARY, [Species.PALKIA]: EggTier.LEGENDARY, [Species.HEATRAN]: EggTier.EPIC, - [Species.REGIGIGAS]: EggTier.EPIC, + [Species.REGIGIGAS]: EggTier.LEGENDARY, [Species.GIRATINA]: EggTier.LEGENDARY, [Species.CRESSELIA]: EggTier.EPIC, - [Species.PHIONE]: EggTier.RARE, + [Species.PHIONE]: EggTier.EPIC, [Species.MANAPHY]: EggTier.EPIC, [Species.DARKRAI]: EggTier.EPIC, [Species.SHAYMIN]: EggTier.EPIC, @@ -289,7 +272,7 @@ export const speciesEggTiers = { [Species.ROGGENROLA]: EggTier.COMMON, [Species.WOOBAT]: EggTier.COMMON, [Species.DRILBUR]: EggTier.RARE, - [Species.AUDINO]: EggTier.COMMON, + [Species.AUDINO]: EggTier.RARE, [Species.TIMBURR]: EggTier.RARE, [Species.TYMPOLE]: EggTier.COMMON, [Species.THROH]: EggTier.RARE, @@ -306,8 +289,8 @@ export const speciesEggTiers = { [Species.SCRAGGY]: EggTier.COMMON, [Species.SIGILYPH]: EggTier.RARE, [Species.YAMASK]: EggTier.COMMON, - [Species.TIRTOUGA]: EggTier.COMMON, - [Species.ARCHEN]: EggTier.COMMON, + [Species.TIRTOUGA]: EggTier.RARE, + [Species.ARCHEN]: EggTier.RARE, [Species.TRUBBISH]: EggTier.COMMON, [Species.ZORUA]: EggTier.COMMON, [Species.MINCCINO]: EggTier.COMMON, @@ -339,7 +322,7 @@ export const speciesEggTiers = { [Species.BOUFFALANT]: EggTier.RARE, [Species.RUFFLET]: EggTier.COMMON, [Species.VULLABY]: EggTier.COMMON, - [Species.HEATMOR]: EggTier.COMMON, + [Species.HEATMOR]: EggTier.RARE, [Species.DURANT]: EggTier.RARE, [Species.DEINO]: EggTier.RARE, [Species.LARVESTA]: EggTier.RARE, @@ -358,7 +341,7 @@ export const speciesEggTiers = { [Species.CHESPIN]: EggTier.COMMON, [Species.FENNEKIN]: EggTier.COMMON, - [Species.FROAKIE]: EggTier.RARE, + [Species.FROAKIE]: EggTier.COMMON, [Species.BUNNELBY]: EggTier.COMMON, [Species.FLETCHLING]: EggTier.COMMON, [Species.SCATTERBUG]: EggTier.COMMON, @@ -376,8 +359,8 @@ export const speciesEggTiers = { [Species.SKRELP]: EggTier.COMMON, [Species.CLAUNCHER]: EggTier.COMMON, [Species.HELIOPTILE]: EggTier.COMMON, - [Species.TYRUNT]: EggTier.COMMON, - [Species.AMAURA]: EggTier.COMMON, + [Species.TYRUNT]: EggTier.RARE, + [Species.AMAURA]: EggTier.RARE, [Species.HAWLUCHA]: EggTier.RARE, [Species.DEDENNE]: EggTier.COMMON, [Species.CARBINK]: EggTier.COMMON, @@ -386,18 +369,18 @@ export const speciesEggTiers = { [Species.PHANTUMP]: EggTier.COMMON, [Species.PUMPKABOO]: EggTier.COMMON, [Species.BERGMITE]: EggTier.COMMON, - [Species.NOIBAT]: EggTier.COMMON, + [Species.NOIBAT]: EggTier.RARE, [Species.XERNEAS]: EggTier.LEGENDARY, [Species.YVELTAL]: EggTier.LEGENDARY, [Species.ZYGARDE]: EggTier.LEGENDARY, [Species.DIANCIE]: EggTier.EPIC, [Species.HOOPA]: EggTier.EPIC, [Species.VOLCANION]: EggTier.EPIC, - [Species.ETERNAL_FLOETTE]: EggTier.RARE, + [Species.ETERNAL_FLOETTE]: EggTier.EPIC, [Species.ROWLET]: EggTier.COMMON, [Species.LITTEN]: EggTier.COMMON, - [Species.POPPLIO]: EggTier.RARE, + [Species.POPPLIO]: EggTier.COMMON, [Species.PIKIPEK]: EggTier.COMMON, [Species.YUNGOOS]: EggTier.COMMON, [Species.GRUBBIN]: EggTier.COMMON, @@ -420,7 +403,7 @@ export const speciesEggTiers = { [Species.WIMPOD]: EggTier.COMMON, [Species.SANDYGAST]: EggTier.COMMON, [Species.PYUKUMUKU]: EggTier.COMMON, - [Species.TYPE_NULL]: EggTier.RARE, + [Species.TYPE_NULL]: EggTier.EPIC, [Species.MINIOR]: EggTier.RARE, [Species.KOMALA]: EggTier.COMMON, [Species.TURTONATOR]: EggTier.RARE, @@ -434,7 +417,7 @@ export const speciesEggTiers = { [Species.TAPU_LELE]: EggTier.EPIC, [Species.TAPU_BULU]: EggTier.EPIC, [Species.TAPU_FINI]: EggTier.EPIC, - [Species.COSMOG]: EggTier.EPIC, + [Species.COSMOG]: EggTier.LEGENDARY, [Species.NIHILEGO]: EggTier.EPIC, [Species.BUZZWOLE]: EggTier.EPIC, [Species.PHEROMOSA]: EggTier.EPIC, @@ -451,15 +434,15 @@ export const speciesEggTiers = { [Species.ZERAORA]: EggTier.EPIC, [Species.MELTAN]: EggTier.EPIC, [Species.ALOLA_RATTATA]: EggTier.COMMON, - [Species.ALOLA_SANDSHREW]: EggTier.COMMON, - [Species.ALOLA_VULPIX]: EggTier.COMMON, - [Species.ALOLA_DIGLETT]: EggTier.COMMON, - [Species.ALOLA_MEOWTH]: EggTier.COMMON, - [Species.ALOLA_GEODUDE]: EggTier.COMMON, - [Species.ALOLA_GRIMER]: EggTier.COMMON, + [Species.ALOLA_SANDSHREW]: EggTier.RARE, + [Species.ALOLA_VULPIX]: EggTier.RARE, + [Species.ALOLA_DIGLETT]: EggTier.RARE, + [Species.ALOLA_MEOWTH]: EggTier.RARE, + [Species.ALOLA_GEODUDE]: EggTier.RARE, + [Species.ALOLA_GRIMER]: EggTier.RARE, [Species.GROOKEY]: EggTier.COMMON, - [Species.SCORBUNNY]: EggTier.RARE, + [Species.SCORBUNNY]: EggTier.COMMON, [Species.SOBBLE]: EggTier.COMMON, [Species.SKWOVET]: EggTier.COMMON, [Species.ROOKIDEE]: EggTier.COMMON, @@ -505,29 +488,28 @@ export const speciesEggTiers = { [Species.GLASTRIER]: EggTier.EPIC, [Species.SPECTRIER]: EggTier.EPIC, [Species.CALYREX]: EggTier.LEGENDARY, - [Species.GALAR_MEOWTH]: EggTier.COMMON, - [Species.GALAR_PONYTA]: EggTier.COMMON, - [Species.GALAR_SLOWPOKE]: EggTier.COMMON, - [Species.GALAR_FARFETCHD]: EggTier.COMMON, - [Species.GALAR_CORSOLA]: EggTier.COMMON, - [Species.GALAR_ZIGZAGOON]: EggTier.COMMON, - [Species.GALAR_DARUMAKA]: EggTier.RARE, - [Species.GALAR_YAMASK]: EggTier.COMMON, - [Species.GALAR_STUNFISK]: EggTier.COMMON, - [Species.GALAR_MR_MIME]: EggTier.COMMON, + [Species.ENAMORUS]: EggTier.EPIC, + [Species.GALAR_MEOWTH]: EggTier.RARE, + [Species.GALAR_PONYTA]: EggTier.RARE, + [Species.GALAR_SLOWPOKE]: EggTier.RARE, + [Species.GALAR_FARFETCHD]: EggTier.RARE, [Species.GALAR_ARTICUNO]: EggTier.EPIC, [Species.GALAR_ZAPDOS]: EggTier.EPIC, [Species.GALAR_MOLTRES]: EggTier.EPIC, + [Species.GALAR_CORSOLA]: EggTier.RARE, + [Species.GALAR_ZIGZAGOON]: EggTier.RARE, + [Species.GALAR_DARUMAKA]: EggTier.RARE, + [Species.GALAR_YAMASK]: EggTier.RARE, + [Species.GALAR_STUNFISK]: EggTier.RARE, [Species.HISUI_GROWLITHE]: EggTier.RARE, - [Species.HISUI_VOLTORB]: EggTier.COMMON, + [Species.HISUI_VOLTORB]: EggTier.RARE, [Species.HISUI_QWILFISH]: EggTier.RARE, [Species.HISUI_SNEASEL]: EggTier.RARE, - [Species.HISUI_ZORUA]: EggTier.COMMON, - [Species.ENAMORUS]: EggTier.EPIC, + [Species.HISUI_ZORUA]: EggTier.RARE, - [Species.SPRIGATITO]: EggTier.RARE, - [Species.FUECOCO]: EggTier.RARE, - [Species.QUAXLY]: EggTier.RARE, + [Species.SPRIGATITO]: EggTier.COMMON, + [Species.FUECOCO]: EggTier.COMMON, + [Species.QUAXLY]: EggTier.COMMON, [Species.LECHONK]: EggTier.COMMON, [Species.TAROUNTULA]: EggTier.COMMON, [Species.NYMBLE]: EggTier.COMMON, @@ -551,7 +533,7 @@ export const speciesEggTiers = { [Species.TINKATINK]: EggTier.RARE, [Species.WIGLETT]: EggTier.COMMON, [Species.BOMBIRDIER]: EggTier.COMMON, - [Species.FINIZEN]: EggTier.COMMON, + [Species.FINIZEN]: EggTier.RARE, [Species.VAROOM]: EggTier.RARE, [Species.CYCLIZAR]: EggTier.RARE, [Species.ORTHWORM]: EggTier.RARE, @@ -598,6 +580,6 @@ export const speciesEggTiers = { [Species.TERAPAGOS]: EggTier.LEGENDARY, [Species.PECHARUNT]: EggTier.EPIC, [Species.PALDEA_TAUROS]: EggTier.RARE, - [Species.PALDEA_WOOPER]: EggTier.COMMON, - [Species.BLOODMOON_URSALUNA]: EggTier.EPIC, + [Species.PALDEA_WOOPER]: EggTier.RARE, + [Species.BLOODMOON_URSALUNA]: EggTier.EPIC }; diff --git a/src/data/balance/starters.ts b/src/data/balance/starters.ts index a4a3c9d011c..ec66401675b 100644 --- a/src/data/balance/starters.ts +++ b/src/data/balance/starters.ts @@ -47,7 +47,7 @@ export const speciesStarterCosts = { [Species.RATTATA]: 1, [Species.SPEAROW]: 1, [Species.EKANS]: 2, - [Species.PIKACHU]: 3, + [Species.PIKACHU]: 4, [Species.SANDSHREW]: 2, [Species.NIDORAN_F]: 3, [Species.NIDORAN_M]: 3, @@ -88,7 +88,7 @@ export const speciesStarterCosts = { [Species.HITMONCHAN]: 4, [Species.LICKITUNG]: 3, [Species.KOFFING]: 2, - [Species.RHYHORN]: 3, + [Species.RHYHORN]: 4, [Species.CHANSEY]: 3, [Species.TANGELA]: 3, [Species.KANGASKHAN]: 4, @@ -111,12 +111,12 @@ export const speciesStarterCosts = { [Species.KABUTO]: 3, [Species.AERODACTYL]: 5, [Species.SNORLAX]: 5, - [Species.ARTICUNO]: 6, + [Species.ARTICUNO]: 5, [Species.ZAPDOS]: 6, [Species.MOLTRES]: 6, [Species.DRATINI]: 4, [Species.MEWTWO]: 8, - [Species.MEW]: 6, + [Species.MEW]: 5, [Species.CHIKORITA]: 2, [Species.CYNDAQUIL]: 3, @@ -126,7 +126,7 @@ export const speciesStarterCosts = { [Species.LEDYBA]: 1, [Species.SPINARAK]: 1, [Species.CHINCHOU]: 2, - [Species.PICHU]: 2, + [Species.PICHU]: 4, [Species.CLEFFA]: 2, [Species.IGGLYBUFF]: 1, [Species.TOGEPI]: 3, @@ -175,7 +175,7 @@ export const speciesStarterCosts = { [Species.LARVITAR]: 4, [Species.LUGIA]: 8, [Species.HO_OH]: 8, - [Species.CELEBI]: 6, + [Species.CELEBI]: 5, [Species.TREECKO]: 3, [Species.TORCHIC]: 4, @@ -187,7 +187,7 @@ export const speciesStarterCosts = { [Species.SEEDOT]: 2, [Species.TAILLOW]: 3, [Species.WINGULL]: 2, - [Species.RALTS]: 3, + [Species.RALTS]: 4, [Species.SURSKIT]: 2, [Species.SHROOMISH]: 3, [Species.SLAKOTH]: 4, @@ -198,7 +198,7 @@ export const speciesStarterCosts = { [Species.NOSEPASS]: 2, [Species.SKITTY]: 1, [Species.SABLEYE]: 2, - [Species.MAWILE]: 3, + [Species.MAWILE]: 2, [Species.ARON]: 3, [Species.MEDITITE]: 3, [Species.ELECTRIKE]: 2, @@ -243,7 +243,7 @@ export const speciesStarterCosts = { [Species.BAGON]: 4, [Species.BELDUM]: 4, [Species.REGIROCK]: 6, - [Species.REGICE]: 6, + [Species.REGICE]: 5, [Species.REGISTEEL]: 6, [Species.LATIAS]: 7, [Species.LATIOS]: 7, @@ -291,19 +291,19 @@ export const speciesStarterCosts = { [Species.MANTYKE]: 2, [Species.SNOVER]: 2, [Species.ROTOM]: 5, - [Species.UXIE]: 6, - [Species.MESPRIT]: 6, + [Species.UXIE]: 5, + [Species.MESPRIT]: 5, [Species.AZELF]: 6, [Species.DIALGA]: 8, [Species.PALKIA]: 8, - [Species.HEATRAN]: 6, + [Species.HEATRAN]: 7, [Species.REGIGIGAS]: 7, [Species.GIRATINA]: 8, [Species.CRESSELIA]: 6, [Species.PHIONE]: 4, [Species.MANAPHY]: 7, [Species.DARKRAI]: 7, - [Species.SHAYMIN]: 6, + [Species.SHAYMIN]: 5, [Species.ARCEUS]: 9, [Species.VICTINI]: 7, @@ -351,7 +351,7 @@ export const speciesStarterCosts = { [Species.DEERLING]: 2, [Species.EMOLGA]: 2, [Species.KARRABLAST]: 3, - [Species.FOONGUS]: 2, + [Species.FOONGUS]: 3, [Species.FRILLISH]: 3, [Species.ALOMOMOLA]: 4, [Species.JOLTIK]: 3, @@ -410,7 +410,7 @@ export const speciesStarterCosts = { [Species.CLAUNCHER]: 3, [Species.HELIOPTILE]: 3, [Species.TYRUNT]: 3, - [Species.AMAURA]: 3, + [Species.AMAURA]: 2, [Species.HAWLUCHA]: 4, [Species.DEDENNE]: 2, [Species.CARBINK]: 2, @@ -425,7 +425,7 @@ export const speciesStarterCosts = { [Species.ZYGARDE]: 8, [Species.DIANCIE]: 7, [Species.HOOPA]: 7, - [Species.VOLCANION]: 6, + [Species.VOLCANION]: 7, [Species.ETERNAL_FLOETTE]: 4, [Species.ROWLET]: 3, @@ -464,21 +464,21 @@ export const speciesStarterCosts = { [Species.DHELMISE]: 4, [Species.JANGMO_O]: 4, [Species.TAPU_KOKO]: 6, - [Species.TAPU_LELE]: 6, + [Species.TAPU_LELE]: 7, [Species.TAPU_BULU]: 6, - [Species.TAPU_FINI]: 6, + [Species.TAPU_FINI]: 5, [Species.COSMOG]: 7, [Species.NIHILEGO]: 6, [Species.BUZZWOLE]: 6, [Species.PHEROMOSA]: 7, [Species.XURKITREE]: 6, [Species.CELESTEELA]: 6, - [Species.KARTANA]: 7, + [Species.KARTANA]: 8, [Species.GUZZLORD]: 6, [Species.NECROZMA]: 8, [Species.MAGEARNA]: 7, [Species.MARSHADOW]: 7, - [Species.POIPOLE]: 7, + [Species.POIPOLE]: 8, [Species.STAKATAKA]: 6, [Species.BLACEPHALON]: 7, [Species.ZERAORA]: 6, @@ -532,31 +532,31 @@ export const speciesStarterCosts = { [Species.ZAMAZENTA]: 8, [Species.ETERNATUS]: 10, [Species.KUBFU]: 6, - [Species.ZARUDE]: 6, + [Species.ZARUDE]: 5, [Species.REGIELEKI]: 6, [Species.REGIDRAGO]: 6, [Species.GLASTRIER]: 6, - [Species.SPECTRIER]: 7, + [Species.SPECTRIER]: 8, [Species.CALYREX]: 8, + [Species.ENAMORUS]: 7, [Species.GALAR_MEOWTH]: 3, [Species.GALAR_PONYTA]: 2, [Species.GALAR_SLOWPOKE]: 3, [Species.GALAR_FARFETCHD]: 3, + [Species.GALAR_MR_MIME]: 3, + [Species.GALAR_ARTICUNO]: 6, + [Species.GALAR_ZAPDOS]: 6, + [Species.GALAR_MOLTRES]: 6, [Species.GALAR_CORSOLA]: 3, [Species.GALAR_ZIGZAGOON]: 3, [Species.GALAR_DARUMAKA]: 4, [Species.GALAR_YAMASK]: 3, [Species.GALAR_STUNFISK]: 2, - [Species.GALAR_MR_MIME]: 3, - [Species.GALAR_ARTICUNO]: 6, - [Species.GALAR_ZAPDOS]: 6, - [Species.GALAR_MOLTRES]: 6, [Species.HISUI_GROWLITHE]: 4, [Species.HISUI_VOLTORB]: 3, [Species.HISUI_QWILFISH]: 4, [Species.HISUI_SNEASEL]: 5, [Species.HISUI_ZORUA]: 3, - [Species.ENAMORUS]: 7, [Species.SPRIGATITO]: 4, [Species.FUECOCO]: 4, @@ -595,9 +595,9 @@ export const speciesStarterCosts = { [Species.VELUZA]: 4, [Species.DONDOZO]: 4, [Species.TATSUGIRI]: 4, - [Species.GREAT_TUSK]: 6, - [Species.SCREAM_TAIL]: 6, - [Species.BRUTE_BONNET]: 6, + [Species.GREAT_TUSK]: 7, + [Species.SCREAM_TAIL]: 5, + [Species.BRUTE_BONNET]: 5, [Species.FLUTTER_MANE]: 7, [Species.SLITHER_WING]: 6, [Species.SANDY_SHOCKS]: 6, @@ -606,33 +606,33 @@ export const speciesStarterCosts = { [Species.IRON_HANDS]: 6, [Species.IRON_JUGULIS]: 6, [Species.IRON_MOTH]: 6, - [Species.IRON_THORNS]: 6, + [Species.IRON_THORNS]: 5, [Species.FRIGIBAX]: 4, [Species.GIMMIGHOUL]: 4, - [Species.WO_CHIEN]: 6, + [Species.WO_CHIEN]: 5, [Species.CHIEN_PAO]: 7, [Species.TING_LU]: 6, [Species.CHI_YU]: 7, - [Species.ROARING_MOON]: 6, + [Species.ROARING_MOON]: 7, [Species.IRON_VALIANT]: 6, [Species.KORAIDON]: 9, [Species.MIRAIDON]: 9, - [Species.WALKING_WAKE]: 6, + [Species.WALKING_WAKE]: 7, [Species.IRON_LEAVES]: 6, [Species.POLTCHAGEIST]: 4, [Species.OKIDOGI]: 6, [Species.MUNKIDORI]: 6, - [Species.FEZANDIPITI]: 6, + [Species.FEZANDIPITI]: 5, [Species.OGERPON]: 7, [Species.GOUGING_FIRE]: 7, - [Species.RAGING_BOLT]: 6, + [Species.RAGING_BOLT]: 7, [Species.IRON_BOULDER]: 7, - [Species.IRON_CROWN]: 6, + [Species.IRON_CROWN]: 7, [Species.TERAPAGOS]: 8, [Species.PECHARUNT]: 6, [Species.PALDEA_TAUROS]: 5, [Species.PALDEA_WOOPER]: 3, - [Species.BLOODMOON_URSALUNA]: 6, + [Species.BLOODMOON_URSALUNA]: 5, }; const starterCandyCosts: { passive: number; costReduction: [number, number]; egg: number; }[] = [ diff --git a/src/test/eggs/egg.test.ts b/src/test/eggs/egg.test.ts index aebb196ff5e..1a33b4eff7c 100644 --- a/src/test/eggs/egg.test.ts +++ b/src/test/eggs/egg.test.ts @@ -1,5 +1,4 @@ import { speciesEggTiers } from "#app/data/balance/species-egg-tiers"; -import { speciesStarterCosts } from "#app/data/balance/starters"; import { Egg, getLegendaryGachaSpeciesForTimestamp, getValidLegendaryGachaSpecies } from "#app/data/egg"; import { allSpecies } from "#app/data/pokemon-species"; import { EggSourceType } from "#app/enums/egg-source-types"; @@ -33,28 +32,28 @@ describe("Egg Generation Tests", () => { await game.importData("src/test/utils/saves/everything.prsv"); }); - it("should return Arceus for the 10th of June", () => { + it("should return Kyogre for the 10th of June", () => { const scene = game.scene; const timestamp = new Date(2024, 5, 10, 15, 0, 0, 0).getTime(); - const expectedSpecies = Species.ARCEUS; + const expectedSpecies = Species.KYOGRE; const result = getLegendaryGachaSpeciesForTimestamp(scene, timestamp); expect(result).toBe(expectedSpecies); }); - it("should return Arceus for the 10th of July", () => { + it("should return Kyogre for the 10th of July", () => { const scene = game.scene; const timestamp = new Date(2024, 6, 10, 15, 0, 0, 0).getTime(); - const expectedSpecies = Species.ARCEUS; + const expectedSpecies = Species.KYOGRE; const result = getLegendaryGachaSpeciesForTimestamp(scene, timestamp); expect(result).toBe(expectedSpecies); }); - it("should hatch an Arceus around half the time. Set from legendary gacha", async () => { + it("should hatch a Kyogre around half the time. Set from legendary gacha", async () => { const scene = game.scene; const timestamp = new Date(2024, 6, 10, 15, 0, 0, 0).getTime(); - const expectedSpecies = Species.ARCEUS; + const expectedSpecies = Species.KYOGRE; let gachaSpeciesCount = 0; for (let i = 0; i < EGG_HATCH_COUNT; i++) { @@ -385,23 +384,4 @@ describe("Egg Generation Tests", () => { expect(diffShiny).toBe(true); expect(diffAbility).toBe(true); }); - - // For now, we are using this test to detect oversights in egg tiers. - // Delete this test if the balance team rebalances species costs independently of egg tiers. - it("should have correct egg tiers based on species costs", () => { - const getExpectedEggTier = (starterCost) => - starterCost <= 3 ? EggTier.COMMON - : starterCost <= 5 ? EggTier.RARE - : starterCost <= 7 ? EggTier.EPIC - : EggTier.LEGENDARY; - - allSpecies.forEach(pokemonSpecies => { - const rootSpecies = pokemonSpecies.getRootSpeciesId(); - const speciesCost = speciesStarterCosts[rootSpecies]; - const expectedEggTier = getExpectedEggTier(speciesCost); - const actualEggTier = speciesEggTiers[rootSpecies]; - - expect(actualEggTier).toBe(expectedEggTier); - }); - }); }); From c6e80de1be8bec58e515efc2c3a8b7d44c8d3f6c Mon Sep 17 00:00:00 2001 From: Moka <54149968+MokaStitcher@users.noreply.github.com> Date: Mon, 2 Dec 2024 21:15:43 +0100 Subject: [PATCH 043/119] [Misc] 1.3.0 bump version + locales update (#4956) * bump version + update locales --- package-lock.json | 4 ++-- package.json | 2 +- public/locales | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 78eabb07fd1..a4568b3f5ac 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "pokemon-rogue-battle", - "version": "1.2.2", + "version": "1.3.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "pokemon-rogue-battle", - "version": "1.2.2", + "version": "1.3.0", "hasInstallScript": true, "dependencies": { "@material/material-color-utilities": "^0.2.7", diff --git a/package.json b/package.json index bf24d2a6804..a8641bb0b98 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "pokemon-rogue-battle", "private": true, - "version": "1.2.2", + "version": "1.3.0", "type": "module", "scripts": { "start": "vite", diff --git a/public/locales b/public/locales index ed1b1df4776..7ad20e64caa 160000 --- a/public/locales +++ b/public/locales @@ -1 +1 @@ -Subproject commit ed1b1df4776ccd4330e8ac1d2f44de611d04c2bc +Subproject commit 7ad20e64caa9367b444712f10036fa9bbe4837a5 From dd72c5e189c5d20bb630854edc6740477f7158f4 Mon Sep 17 00:00:00 2001 From: PigeonBar <56974298+PigeonBar@users.noreply.github.com> Date: Tue, 3 Dec 2024 01:28:57 -0500 Subject: [PATCH 044/119] [Move][Beta] Powder edge cases (#4960) * [Move][Beta] Powder edge cases * Fix Heavy Rain check to account for weather suppression Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> * "{Pokemon} used {Fire-type move}!" now displays before Powder activation Co-authored-by: innerthunder <168692175+innerthunder@users.noreply.github.com> * Make `showMoveText()` and `showFailedText()` public for now --------- Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> Co-authored-by: innerthunder <168692175+innerthunder@users.noreply.github.com> --- src/data/battler-tags.ts | 6 +- src/data/move.ts | 3 +- src/phases/move-phase.ts | 4 +- src/test/moves/powder.test.ts | 139 ++++++++++++++++++++++++++++++---- 4 files changed, 133 insertions(+), 19 deletions(-) diff --git a/src/data/battler-tags.ts b/src/data/battler-tags.ts index 5e6ee334db7..0c0b8e9e034 100644 --- a/src/data/battler-tags.ts +++ b/src/data/battler-tags.ts @@ -885,8 +885,10 @@ export class PowderTag extends BattlerTag { const movePhase = pokemon.scene.getCurrentPhase(); if (movePhase instanceof MovePhase) { const move = movePhase.move.getMove(); - if (pokemon.getMoveType(move) === Type.FIRE) { - movePhase.cancel(); + const weather = pokemon.scene.arena.weather; + if (pokemon.getMoveType(move) === Type.FIRE && !(weather && weather.weatherType === WeatherType.HEAVY_RAIN && !weather.isEffectSuppressed(pokemon.scene))) { + movePhase.fail(); + movePhase.showMoveText(); pokemon.scene.unshiftPhase(new CommonAnimPhase(pokemon.scene, pokemon.getBattlerIndex(), pokemon.getBattlerIndex(), CommonAnim.POWDER)); diff --git a/src/data/move.ts b/src/data/move.ts index 27f7829a920..5a8ad208467 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -9734,8 +9734,7 @@ export function initMoves() { new StatusMove(Moves.POWDER, Type.BUG, 100, 20, -1, 1, 6) .attr(AddBattlerTagAttr, BattlerTagType.POWDER, false, true) .ignoresSubstitute() - .powderMove() - .edgeCase(), // does not cancel Fire-type moves generated by Dancer + .powderMove(), new ChargingSelfStatusMove(Moves.GEOMANCY, Type.FAIRY, -1, 10, -1, 0, 6) .chargeText(i18next.t("moveTriggers:isChargingPower", { pokemonName: "{USER}" })) .attr(StatStageChangeAttr, [ Stat.SPATK, Stat.SPDEF, Stat.SPD ], 2, true) diff --git a/src/phases/move-phase.ts b/src/phases/move-phase.ts index 005cdbe1716..089386bee00 100644 --- a/src/phases/move-phase.ts +++ b/src/phases/move-phase.ts @@ -529,7 +529,7 @@ export class MovePhase extends BattlePhase { * Displays the move's usage text to the player, unless it's a charge turn (ie: {@link Moves.SOLAR_BEAM Solar Beam}), * the pokemon is on a recharge turn (ie: {@link Moves.HYPER_BEAM Hyper Beam}), or a 2-turn move was interrupted (ie: {@link Moves.FLY Fly}). */ - protected showMoveText(): void { + public showMoveText(): void { if (this.move.moveId === Moves.NONE) { return; } @@ -545,7 +545,7 @@ export class MovePhase extends BattlePhase { applyMoveAttrs(PreMoveMessageAttr, this.pokemon, this.pokemon.getOpponents()[0], this.move.getMove()); } - protected showFailedText(failedText?: string): void { + public showFailedText(failedText?: string): void { this.scene.queueMessage(failedText ?? i18next.t("battle:attackFailed")); } } diff --git a/src/test/moves/powder.test.ts b/src/test/moves/powder.test.ts index 5c0f318d620..a1db2bced3a 100644 --- a/src/test/moves/powder.test.ts +++ b/src/test/moves/powder.test.ts @@ -5,10 +5,11 @@ import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import { BerryPhase } from "#app/phases/berry-phase"; -import { MoveResult } from "#app/field/pokemon"; +import { MoveResult, PokemonMove } from "#app/field/pokemon"; import { Type } from "#enums/type"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; import { StatusEffect } from "#enums/status-effect"; +import { BattlerIndex } from "#app/battle"; describe("Moves - Powder", () => { let phaserGame: Phaser.Game; @@ -34,21 +35,25 @@ describe("Moves - Powder", () => { .enemyMoveset(Moves.EMBER) .enemyAbility(Abilities.INSOMNIA) .startingLevel(100) - .moveset([ Moves.POWDER, Moves.SPLASH, Moves.FIERY_DANCE ]); + .moveset([ Moves.POWDER, Moves.SPLASH, Moves.FIERY_DANCE, Moves.ROAR ]); }); it( - "should cancel the target's Fire-type move and damage the target", + "should cancel the target's Fire-type move, damage the target, and still consume the target's PP", async () => { + // Cannot use enemy moveset override for this test, since it interferes with checking PP + game.override.enemyMoveset([]); await game.classicMode.startBattle([ Species.CHARIZARD ]); const enemyPokemon = game.scene.getEnemyPokemon()!; + enemyPokemon.moveset = [ new PokemonMove(Moves.EMBER) ]; game.move.select(Moves.POWDER); await game.phaseInterceptor.to(BerryPhase, false); expect(enemyPokemon.getLastXMoves()[0].result).toBe(MoveResult.FAIL); expect(enemyPokemon.hp).toBe(Math.ceil(3 * enemyPokemon.getMaxHp() / 4)); + expect(enemyPokemon.moveset[0]!.ppUsed).toBe(1); await game.toNextTurn(); @@ -57,6 +62,7 @@ describe("Moves - Powder", () => { await game.phaseInterceptor.to(BerryPhase, false); expect(enemyPokemon.getLastXMoves()[0].result).toBe(MoveResult.SUCCESS); expect(enemyPokemon.hp).toBe(Math.ceil(3 * enemyPokemon.getMaxHp() / 4)); + expect(enemyPokemon.moveset[0]!.ppUsed).toBe(2); }); it( @@ -107,6 +113,22 @@ describe("Moves - Powder", () => { expect(enemyPokemon.hp).toBe(enemyPokemon.getMaxHp()); }); + it( + "should not damage the target if Primordial Sea is active", + async () => { + game.override.enemyAbility(Abilities.PRIMORDIAL_SEA); + + await game.classicMode.startBattle([ Species.CHARIZARD ]); + + const enemyPokemon = game.scene.getEnemyPokemon()!; + + game.move.select(Moves.POWDER); + + await game.phaseInterceptor.to(BerryPhase, false); + expect(enemyPokemon.getLastXMoves()[0].result).toBe(MoveResult.FAIL); + expect(enemyPokemon.hp).toBe(enemyPokemon.getMaxHp()); + }); + it( "should not prevent the target from thawing out with Flame Wheel", async () => { @@ -144,29 +166,60 @@ describe("Moves - Powder", () => { expect(enemyPokemon.summonData?.types).not.toBe(Type.FIRE); }); - // TODO: Implement this interaction to pass this test - it.skip( + it( "should cancel Fire-type moves generated by the target's Dancer ability", async () => { game.override + .battleType("double") .enemySpecies(Species.BLASTOISE) .enemyAbility(Abilities.DANCER); + await game.classicMode.startBattle([ Species.CHARIZARD, Species.CHARIZARD ]); + + const playerPokemon = game.scene.getPlayerPokemon()!; + const enemyPokemon = game.scene.getEnemyPokemon()!; + + // Turn 1: Roar away 1 opponent + game.move.select(Moves.ROAR, 0, BattlerIndex.ENEMY_2); + game.move.select(Moves.SPLASH, 1); + await game.toNextTurn(); + await game.toNextTurn(); // Requires game.toNextTurn() twice due to double battle + + // Turn 2: Enemy should activate Powder twice: From using Ember, and from copying Fiery Dance via Dancer + playerPokemon.hp = playerPokemon.getMaxHp(); + game.move.select(Moves.FIERY_DANCE, 0, BattlerIndex.ENEMY); + game.move.select(Moves.POWDER, 1, BattlerIndex.ENEMY); + + await game.phaseInterceptor.to(MoveEffectPhase); + const enemyStartingHp = enemyPokemon.hp; + + await game.phaseInterceptor.to(BerryPhase, false); + + + // player should not take damage + expect(enemyPokemon.getLastXMoves()[0].result).toBe(MoveResult.FAIL); + expect(playerPokemon.hp).toBe(playerPokemon.getMaxHp()); + // enemy should have taken damage from player's Fiery Dance + 2 Powder procs + expect(enemyPokemon.hp).toBe(enemyStartingHp - playerPokemon.turnData.totalDamageDealt - 2 * Math.floor(enemyPokemon.getMaxHp() / 4)); + }); + + it( + "should cancel Fiery Dance, then prevent it from triggering Dancer", + async () => { + game.override.ability(Abilities.DANCER) + .enemyMoveset(Moves.FIERY_DANCE); + await game.classicMode.startBattle([ Species.CHARIZARD ]); const playerPokemon = game.scene.getPlayerPokemon()!; const enemyPokemon = game.scene.getEnemyPokemon()!; - game.move.select(Moves.FIERY_DANCE); - - await game.phaseInterceptor.to(MoveEffectPhase); - const enemyStartingHp = enemyPokemon.hp; + game.move.select(Moves.POWDER); await game.phaseInterceptor.to(BerryPhase, false); - // player should not take damage - expect(playerPokemon.hp).toBe(playerPokemon.getMaxHp()); - // enemy should have taken damage from player's Fiery Dance + 2 Powder procs - expect(enemyPokemon.hp).toBe(enemyStartingHp - 2 * Math.floor(enemyPokemon.getMaxHp() / 4)); + expect(enemyPokemon.getLastXMoves()[0].result).toBe(MoveResult.FAIL); + expect(enemyPokemon.hp).toBe(Math.ceil(3 * enemyPokemon.getMaxHp() / 4)); + expect(playerPokemon.getLastXMoves()[0].move).toBe(Moves.POWDER); }); it( @@ -202,4 +255,64 @@ describe("Moves - Powder", () => { expect(enemyPokemon.getLastXMoves()[0].result).toBe(MoveResult.FAIL); expect(enemyPokemon.hp).toBe(Math.ceil(3 * enemyPokemon.getMaxHp() / 4)); }); + + it( + "should cancel Grass Pledge if used after ally's Fire Pledge", + async () => { + game.override.enemyMoveset([ Moves.FIRE_PLEDGE, Moves.GRASS_PLEDGE ]) + .battleType("double"); + + await game.classicMode.startBattle([ Species.CHARIZARD, Species.CHARIZARD ]); + const enemyPokemon = game.scene.getEnemyPokemon()!; + + game.move.select(Moves.POWDER, 0, BattlerIndex.ENEMY); + game.move.select(Moves.SPLASH, 1); + await game.forceEnemyMove(Moves.GRASS_PLEDGE, BattlerIndex.PLAYER); + await game.forceEnemyMove(Moves.FIRE_PLEDGE, BattlerIndex.PLAYER); + await game.setTurnOrder([ BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY_2, BattlerIndex.ENEMY ]); + + await game.phaseInterceptor.to(BerryPhase, false); + expect(enemyPokemon.getLastXMoves()[0].result).toBe(MoveResult.FAIL); + expect(enemyPokemon.hp).toBe(Math.ceil(3 * enemyPokemon.getMaxHp() / 4)); + }); + + it( + "should cancel Fire Pledge if used before ally's Water Pledge", + async () => { + game.override.enemyMoveset([ Moves.FIRE_PLEDGE, Moves.WATER_PLEDGE ]) + .battleType("double"); + + await game.classicMode.startBattle([ Species.CHARIZARD, Species.CHARIZARD ]); + const enemyPokemon = game.scene.getEnemyPokemon()!; + + game.move.select(Moves.POWDER, 0, BattlerIndex.ENEMY); + game.move.select(Moves.SPLASH, 1); + await game.forceEnemyMove(Moves.FIRE_PLEDGE, BattlerIndex.PLAYER); + await game.forceEnemyMove(Moves.WATER_PLEDGE, BattlerIndex.PLAYER); + await game.setTurnOrder([ BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY, BattlerIndex.ENEMY_2 ]); + + await game.phaseInterceptor.to(BerryPhase, false); + expect(enemyPokemon.getLastXMoves()[0].result).toBe(MoveResult.FAIL); + expect(enemyPokemon.hp).toBe(Math.ceil(3 * enemyPokemon.getMaxHp() / 4)); + }); + + it( + "should NOT cancel Fire Pledge if used after ally's Water Pledge", + async () => { + game.override.enemyMoveset([ Moves.FIRE_PLEDGE, Moves.WATER_PLEDGE ]) + .battleType("double"); + + await game.classicMode.startBattle([ Species.CHARIZARD, Species.CHARIZARD ]); + const enemyPokemon = game.scene.getEnemyPokemon()!; + + game.move.select(Moves.POWDER, 0, BattlerIndex.ENEMY); + game.move.select(Moves.SPLASH, 1); + await game.forceEnemyMove(Moves.FIRE_PLEDGE, BattlerIndex.PLAYER); + await game.forceEnemyMove(Moves.WATER_PLEDGE, BattlerIndex.PLAYER); + await game.setTurnOrder([ BattlerIndex.PLAYER, BattlerIndex.PLAYER_2, BattlerIndex.ENEMY_2, BattlerIndex.ENEMY ]); + + await game.phaseInterceptor.to(BerryPhase, false); + expect(enemyPokemon.getLastXMoves()[0].result).toBe(MoveResult.SUCCESS); + expect(enemyPokemon.hp).toBe(enemyPokemon.getMaxHp()); + }); }); From 50a4669a26ec86f79860c318e1f0d062bd480bea Mon Sep 17 00:00:00 2001 From: damocleas Date: Tue, 3 Dec 2024 15:22:38 -0500 Subject: [PATCH 045/119] [Balance] [Beta] Egg Move Fixes (#4965) * Update egg-moves.ts * Update egg-moves.ts --- src/data/balance/egg-moves.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/data/balance/egg-moves.ts b/src/data/balance/egg-moves.ts index 7e90008be88..4855379f675 100644 --- a/src/data/balance/egg-moves.ts +++ b/src/data/balance/egg-moves.ts @@ -107,7 +107,7 @@ export const speciesEggMoves = { [Species.SNEASEL]: [ Moves.DIRE_CLAW, Moves.DARKEST_LARIAT, Moves.TRIPLE_AXEL, Moves.CLOSE_COMBAT ], [Species.TEDDIURSA]: [ Moves.MOUNTAIN_GALE, Moves.FAKE_OUT, Moves.SLACK_OFF, Moves.PRECIPICE_BLADES ], [Species.SLUGMA]: [ Moves.BURNING_BULWARK, Moves.POWER_GEM, Moves.SOLAR_BEAM, Moves.MAGMA_STORM ], - [Species.SWINUB]: [ Moves.SLACK_OFF, Moves.LANDS_WRATH, Moves.STONE_AXE, Moves.GLACIAL_LANCE ], + [Species.SWINUB]: [ Moves.SLACK_OFF, Moves.MOUNTAIN_GALE, Moves.STONE_AXE, Moves.PRECIPICE_BLADES ], [Species.CORSOLA]: [ Moves.SCALD, Moves.FREEZE_DRY, Moves.STRENGTH_SAP, Moves.SALT_CURE ], [Species.REMORAID]: [ Moves.WATER_SHURIKEN, Moves.TAKE_HEART, Moves.SHELL_SIDE_ARM, Moves.BOUNCY_BUBBLE ], [Species.DELIBIRD]: [ Moves.BONEMERANG, Moves.FLOATY_FALL, Moves.VICTORY_DANCE, Moves.GLACIAL_LANCE ], @@ -360,7 +360,7 @@ export const speciesEggMoves = { [Species.CLAUNCHER]: [ Moves.SHELL_SMASH, Moves.ARMOR_CANNON, Moves.ENERGY_BALL, Moves.ORIGIN_PULSE ], [Species.HELIOPTILE]: [ Moves.WEATHER_BALL, Moves.HYDRO_STEAM, Moves.EARTH_POWER, Moves.BOOMBURST ], [Species.TYRUNT]: [ Moves.DRAGON_HAMMER, Moves.FLARE_BLITZ, Moves.VOLT_TACKLE, Moves.SHIFT_GEAR ], - [Species.AMAURA]: [ Moves.RECOVER, Moves.TERA_STARSTORM, Moves.POWER_GEM, Moves.GEOMANCY ], + [Species.AMAURA]: [ Moves.RECOVER, Moves.WRING_OUT, Moves.POWER_GEM, Moves.GEOMANCY ], [Species.HAWLUCHA]: [ Moves.TRIPLE_AXEL, Moves.HIGH_HORSEPOWER, Moves.FLOATY_FALL, Moves.WICKED_BLOW ], [Species.DEDENNE]: [ Moves.BOOMBURST, Moves.FAKE_OUT, Moves.NASTY_PLOT, Moves.REVIVAL_BLESSING ], [Species.CARBINK]: [ Moves.BODY_PRESS, Moves.SHORE_UP, Moves.SPARKLY_SWIRL, Moves.DIAMOND_STORM ], @@ -468,7 +468,7 @@ export const speciesEggMoves = { [Species.PINCURCHIN]: [ Moves.TRICK_ROOM, Moves.VOLT_SWITCH, Moves.STRENGTH_SAP, Moves.THUNDERCLAP ], [Species.SNOM]: [ Moves.FROST_BREATH, Moves.HEAL_ORDER, Moves.EARTH_POWER, Moves.SPORE ], [Species.STONJOURNER]: [ Moves.BODY_PRESS, Moves.HELPING_HAND, Moves.ACCELEROCK, Moves.DIAMOND_STORM ], - [Species.EISCUE]: [ Moves.TRIPLE_AXEL, Moves.AQUA_STEP, Moves.SHELL_SMASH, Moves.GLACIAL_LANCE ], + [Species.EISCUE]: [ Moves.TRIPLE_AXEL, Moves.AQUA_STEP, Moves.AXE_KICK, Moves.SHELL_SMASH ], [Species.INDEEDEE]: [ Moves.MATCHA_GOTCHA, Moves.EXPANDING_FORCE, Moves.MOONBLAST, Moves.REVIVAL_BLESSING ], [Species.MORPEKO]: [ Moves.TRIPLE_AXEL, Moves.OBSTRUCT, Moves.SWORDS_DANCE, Moves.COLLISION_COURSE ], [Species.CUFANT]: [ Moves.LIQUIDATION, Moves.CURSE, Moves.COMBAT_TORQUE, Moves.GIGATON_HAMMER ], @@ -559,7 +559,7 @@ export const speciesEggMoves = { [Species.FRIGIBAX]: [ Moves.BEHEMOTH_BLADE, Moves.DRAGON_DANCE, Moves.MOUNTAIN_GALE, Moves.PRECIPICE_BLADES ], [Species.GIMMIGHOUL]: [ Moves.HAPPY_HOUR, Moves.AURA_SPHERE, Moves.SURF, Moves.ASTRAL_BARRAGE ], [Species.WO_CHIEN]: [ Moves.SPORE, Moves.FIERY_WRATH, Moves.SAPPY_SEED, Moves.STRENGTH_SAP ], - [Species.CHIEN_PAO]: [ Moves.KNOCK_OFF, Moves.PARTING_SHOT, Moves.BITTER_BLADE, Moves.GLACIAL_LANCE ], + [Species.CHIEN_PAO]: [ Moves.KNOCK_OFF, Moves.PARTING_SHOT, Moves.TRIPLE_AXEL, Moves.BITTER_BLADE ], [Species.TING_LU]: [ Moves.SHORE_UP, Moves.CEASELESS_EDGE, Moves.SAPPY_SEED, Moves.PRECIPICE_BLADES ], [Species.CHI_YU]: [ Moves.FIERY_WRATH, Moves.HYDRO_STEAM, Moves.MORNING_SUN, Moves.BLUE_FLARE ], [Species.ROARING_MOON]: [ Moves.FIRE_LASH, Moves.DRAGON_HAMMER, Moves.SUCKER_PUNCH, Moves.WICKED_BLOW ], From 757fe1a17c9944a4ab6c5d86d1c77638e4a608e4 Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Tue, 3 Dec 2024 14:52:13 -0800 Subject: [PATCH 046/119] [Misc] Update credits (#4942) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Create `CREDITS.md` * Add categories * added Firel biome * Update README.md Co-authored-by: Moka <54149968+MokaStitcher@users.noreply.github.com> * Add Leparagon to Trainer Sprites * Add balance team * Update music credits for Andr06 (new Forest BGM) * Add dev team and past contributors to credits * Add link to wiki credits page for pokemon sprites * Update indentation * Update dev credits * Add pancakes * Add wormhood * Add Mystery Event Sprites section in Art Add Past Contributors section in Balance * Standardize emojis to primary categories only * Update Mystery Event Sprites section * Fix typo * Add wiki team * Add Special Thanks section Used for external contributors/community members that aren't part of the main PokeRogue team * Add Discord mod team * Add Translation team * Add External Tools section * Update CREDITS.md * Update CREDITS.md * add missing é in Poké in various spot * Add Red (iOS App) to External Tools section * Update Red's credit * Update art credits * Update vari and kieran --------- Co-authored-by: damocleas Co-authored-by: Moka <54149968+MokaStitcher@users.noreply.github.com> Co-authored-by: Lugiad <2070109+Adri1@users.noreply.github.com> Co-authored-by: Moka --- CREDITS.md | 620 +++++++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 91 +------- 2 files changed, 622 insertions(+), 89 deletions(-) create mode 100644 CREDITS.md diff --git a/CREDITS.md b/CREDITS.md new file mode 100644 index 00000000000..0fe0a8dc290 --- /dev/null +++ b/CREDITS.md @@ -0,0 +1,620 @@ +# 🎵 Music + +## BGM +- Pokémon Mystery Dungeon: Explorers of Sky + - Arata Iiyoshi + - Hideki Sakamoto + - Keisuke Ito + - Ken-ichi Saito + - Yoshihiro Maeda +- Pokémon Black/White + - Go Ichinose + - Hitomi Sato + - Shota Kageyama +- Pokémon Mystery Dungeon: Rescue Team DX + - Keisuke Ito + - Arata Iiyoshi + - Atsuhiro Ishizuna +- Pokémon HeartGold/SoulSilver +- Pokémon Black/White 2 +- Pokémon X/Y +- Pokémon Omega Ruby/Alpha Sapphire +- Pokémon Sun/Moon +- Pokémon Ultra Sun/Ultra Moon +- Pokémon Sword/Shield +- Pokémon Legends: Arceus +- Pokémon Scarlet/Violet +- Firel (Custom Graveyard, Ice Cave, Laboratory, Metropolis, Plains, Power Plant, Seabed, Space, and Volcano biome music) +- Lmz (Custom Ancient Ruins, Jungle, and Lake biome music) +- Andr06 (Custom Forest, Slum and Sea biome music) +- _tresnoir +- unveiler + +## Sound Effects +- Pokémon Emerald +- Pokémon Black/White + + +# 🎨 Art + +## Backgrounds +- Squip (Paid Commissions) +- Contributions by Someonealive-QN + +## UI +- GAMEFREAK +- LJ Birdman + +## Pagefault Games Intro +- Spectremint + +## Game Logo +- Gonstar (Paid Commission) + +## Trainer Sprites +- GAMEFREAK (Pokémon Black/White 2, Pokémon Diamond/Pearl) +- kyledove +- Brumirage +- pkmn_realidea (Paid Commissions) +- IceJkai +- Leparagon +- wormhood + +## Mystery Event Sprites +- chrysomelinae +- koda_want_to_sleep +- “🐺Kieran/YJ 🐍” rival_kieran aka thedreadedden +- ImperialSympathizer +- wormhood +- gerolau +- otterwatch + +## Trainer Portraits +- pkmn_realidea (Paid Commissions) + +## Pokémon Sprites and Animation +In addition to the lists below, please check [the PokéRogue wiki](https://wiki.pokerogue.net/credits:credits) for a more detailed list of Pokémon Sprite credits. + +- GAMEFREAK (Pokémon Black/White 2) +- Smogon Sprite Project (Various Artists) +- Skyflyer +- Nolo33 +- Ebaru +- EricLostie +- kiriaura +- Caruban +- Sopita_Yorita +- Azrita +- AshnixsLaw +- Hellfire0raptor +- RetroNC +- Franark122k +- OldSoulja +- PKMarioG +- ItsYugen +- lucasomi +- Pkm Sinfonia +- Poki Papillon +- Fleimer_ +- bizcoeindoloro +- mangalos810 +- selstar + +### Static Sprites and Base Shiny Replacements Credits +- AMVictory +- Antiant +- Arhops +- arinoelle +- Arkeis +- aXl +- BananaToast +- Basic Vanillite +- BlackWhiteRobin +- Blaquaza +- Branflakes325 +- Brylark +- Buna +- Bynine +- Corson +- Cynda +- “Diashi” diazhi +- Dleep +- doomchaos +- Espeon Scientist +- Farriella +- fishbowlsoul90 +- “Follower” rulerofthesea11 +- Galifia +- GeoisEvil +- G.E.Z. +- Glustora +- Harrie +- HealnDeal +- Hematite +- HM100 +- Ice-cold Claws +- Involuntary Twitch +- “Jay” itsamejay +- KattenK +- KingOfThe-X-Roads +- KyleDove +- Kyleo +- Kyuzeth +- Larryturbo +- Layell +- Legitimate Username +- leParagon +- “LJ” lj_birdman +- Luigi Player +- Madmadness65 +- Mega-Pokebattlerz +- Mintly +- mjco +- “Momo” sphinx_sage +- MrDollSteak +- MyMarshlands +- N-Kin +- Noscium +- “Nova” fabunova +- “Omniv” omniv +- paintseagull +- princessofmusic +- PumpkinPastel +- Quanyails +- RadicalCharizard +- RedRooster +- “♂ROMEO⚧” gerolau +- ruleroftheseas11 +- SelenaArmorclaw +- “serif” serifaizawa +- Siiilver +- Sleet +- Snivy101 +- Speed-X +- Sphex +- Spook +- Squip +- TeraVolt +- TheAetherPlayer +- TheCynicalPoet +- Tooni +- TrainerSplash +- Travis +- Turtleye +- Tyrell D. Barnes +- “Vari” \_vari\_ +- Wobblebuns +- WolfPP +- WPS +- Wyverii +- “zan” smtif +- Zerudez +- Z-nogyroP + +### Animated Sprites Credits +- Antiant +- arinoelle +- Blaquaza +- Claire Starsword +- Coyotango +- DanEx +- “Diashi” diazhi +- GalacticArtistMuffin +- G.E.Z. +- hexagonereal +- HM100 +- Katten +- LeParagon +- localghost +- MallowOut +- mattiwarden +- “Momo” sphinx_sage +- N-Kin +- NoelleMBrooks +- Nyx +- “Omniv” omniv +- princessofmusic +- PumpkinPastel +- RadicalCharizard +- seleccion +- SelenaArmorclaw +- TheAetherPlayer +- Tinkatooni +- Typhlito +- uppa +- “Vari” \_vari\_ + +### Rare/Epic Shiny Variants Credits +- “Andr06” andr06 +- “Appo” appo +- “Ashhawk” k_redacted +- “Auralite” _auralite +- “Awesome_Soul” awesome_soul +- “Bagon” bagonganda +- “Bibble” nuts_. +- “BloomOfWoods” bloomofwoods +- “Buge” buge +- “bun” bunove +- “bukie” bukie +- cameranian +- “Caramel” saltedcarriemel +- “Chocolate Niblets” choconibs +- “CKC” ckc_ +- “ClawsHDi” clawshdi +- “Clown Princess” clown_princess +- “Cmac2173” cmac2173 +- “Corsola” corsola_bandit +- “Criminon” criminon +- “Cryptican Gogoat Enthusiast” crypticanexe +- “Diashi” diazhi +- “deviant.daffodil, bug enthusiast” deviant.daffodil +- “DigitalVaporeon” digitalvaporeon +- dingosig +- “Eku” ekusas00 +- “Elefante” +- “Esca” colossalsquid +- “Folf” folf. +- “Follower” ruleroftheseas11 +- “Fontbane” fontbane +- “Gallow” gallowhound +- “Giojoe” giojoe10 +- “Gonfold” gonfold +- greenninja757 +- “Grassy_Storm” grassy_storm +- “GreenMegaMan” greenmegaman +- “GROWL” myflixer.to +- “guy claiming to work on a guide” 7thatlas +- “h. 🍄” letterh. +- “hamez” .hamez +- “Hanniel” hanniel.15 +- “ImaginaryNeon” imaginaryneon +- “Jay” itsamejay +- “Jelke” jelke +- kalikimothy +- “🐺Kieran/YJ 🐍” rival_kieran aka thedreadedden +- “Koda” Koda_want_to_sleep +- “Lana” smogonian +- “LJ” lj_birdman +- “Long Girl” docamakesart +- “Lucky” luckyluckylucky +- “MissingNo.” clickonflareblitz +- “Momo” sphinx_sage +- monkehestman +- “Nexxus” nexxus_ +- “Nik :3” realniktrustme +- “Nikolatsu” +- “nora” ora.n +- “NOVA” fabunova +- officerporkchops +- “Omniv” omniv +- “Otterwatch” otterwatch_ +- “Pandoraz” pandoraz +- “Papa Pepsm An” papapepsman +- “Penguin” peng06 +- “Prodigy” lorekeeperprodigy +- “Purpenigma” purpenigma +- “Rage” ragerevival +- “♂ROMEO⚧” gerolau +- “Sagrell D'Arcadia” coffeerequired +- “serif” serifaizawa +- “SillyTopplingGoose” sillytopplinggoose +- “Splash Damage” splashceles +- “Sweg1b01” sweg1b01 +- “SyntheGrim” synthegrim +- “TaMenace” tamariontherestless +- “TheTRUEgge” thetruegge +- “Thorn” crownofthorns +- “Togepi” togepimax +- “Toopy” .toopy +- “Tristan” tristan.w +- “Umbreon” umbreon\_.\_ +- “Vari” \_vari\_ +- “Waasephi” +- wormhood +- “Yep, it's Caio” yepitscaio +- “Ymri” ymri +- “zaccie” zaccie +- “zan” smtif + +## Move Animations +- Pokémon Reborn + + +# ⚖️ Balance + +## Balance Team +- damocleas +- Blitzy aka Kazapple +- Cynthia_calliope +- Esca +- Fontbane +- Plasto +- Sethcurry +- Starkrieg + +## Past Members +- Swizzo +- Zaccie + +## Past Contributors +- chrysomelinae (Mystery Events) +- AsdarDevelops (Mystery Events) + + +# 💻 Development + +## Server Owner/Administrator +- pancakes aka patapancakes + +## Senior Developers +- Walker +- NightKev +- Moka +- Temp aka Tempo-anon +- Madmadness65 + +## Developers +- CodeTappert +- flx-sta +- innerthunder +- frutescens +- Opaquer +- SN34KZ +- Swain aka torranx + +## Junior Developers +- KimJeongSun +- ImperialSympathizer + +## Bug/Issue Managers +- Snailman +- Daleks +- Lily +- PigeonBar + +## Past Contributors +- Fontbane +- sodaMelon +- schmidtc1 +- shayebeadling +- DustinLin +- lucfd +- madibye +- EmberCM +- Mewtwo2387 +- hayuna +- sirzento +- ReneGV +- mattrossdev +- zacharied +- NxKarim +- td76099 +- Xiaphear +- j-diefenbach +- jaimefd +- EvasiveAce +- EmoUsedHM01 +- francktrouillez +- JakubHanko +- FredeX +- PigeonBar +- prime-dialga +- rnicar245 +- rationality6 +- Neverblade +- Corrade +- Admiral-Billy +- okimin +- Arxalc +- PrabbyDD +- JonStudders +- karl-police +- prateau +- meepen +- arColm +- allen925 +- InfernoVulpix +- snoozbuster +- zaccie +- happinyz +- PyGaVS +- mcmontag +- ElizaAlex +- AsdarDevelops +- Vassiat +- RedstonewolfX +- Sam/Flashfyre (initial developer, started PokéRogue) +- Greenlamp +- bennybroseph +- OrangeRed +- Dakurei +- Brain Frog + + +# 🌎 Translation + +## In-Game Translators + +### 🇩🇪 German (de) +- CodeTappert + +### 🇪🇸 Spanish (es-ES) +- Dan Stevenson +- Javi +- Lily Alterni +- Qyxgames + +### 🇫🇷 French (fr) +- Lugiadrien + +### 🇮🇹 Italian (it) +- Nicus + +### 🇯🇵 Japanese (ja) +- 6mozuke9 +- Chapybara +- PeachFresca + +### 🇰🇷 Korean (ko) +- Enoch +- KimJeongSun +- Returntoice +- sodamelon + +### 🇧🇷 Portuguese (pt-BR) +- Zé Ricardo + +### 🇨🇳 Chinese (zh-CN) +- dddsenic +- mercurius +- VittorioVeneto +- Yonmaru + +### 🇹🇼 Chinese (zh-TW) +- mercurius +- Seagull + +### Past contributors +- Asdar (es-ES) +- Rafa (es-ES) +- GINK-SS (ko) +- prostagma (pt-BR) +- Ei (zh-TW) + +## Wiki Translators + +### 🇪🇸 Spanish (es-ES) +- victorcooler + +### 🇫🇷 French (fr) +- Evan +- Mitsue +- Papier +- Sangara +- Voltarix + +### 🇮🇹 Italian (it) +- Purce +- T-reds + +### 🇰🇷 Korean (ko) +- LeKaaN +- Returntoice +- sodamelon + +### 🇵🇱 Polish (pl) +- Talo + +### 🇧🇷 Portuguese (pt-BR) +- Beast +- Sushi +- Zé Ricardo + +### 🇨🇳 Chinese (zh-CN) +- jw-0- + +### Past contributors +- Dietaube (de) +- Gnorpelltroll (de) +- xRegix (de) +- Broly Ikari (fr) +- Leo Edgar_Zimmer (fr) +- Telor (fr) +- dorri (ko) +- Little Moder_eldenring (ko) +- Andy (zh-CN) +- Black Feather (zh-CN) +- itschili (zh-CN) +- RimKnight (zh-CN) +- Yubari (zh-CN) + +## 🇺🇸 English Proofreaders +- Cheyu +- Faust +- HaywiredUp +- Irridescence +- Ke'ahi +- Louie +- Nully +- PeD +- The Programmer + +### Past contributors +- I... + + +# 📰 Wiki + +## Wiki Head +- H.A.R.V. + +## Wiki Lead +- Sangara +- Zac +- Smew +- Brain Frog +- Hannah + +## Editor +- Prodigy +- Akuma +- Dan Gioia +- Shimizoki +- Stave +- NalysArbur +- Ceimir +- Solanum Tuberosum +- Pom + +## Artist +- dub +- SmashMania +- Wren +- Lugiadrien + +## Contributor +- Daleks <3 +- Inferno Vulpix +- Embri +- Nekod +- P0kemonY +- Scoom +- BlueVaron + + +# ☎️ Discord + +## Head Moderator +- leah + +## Senior Moderators +- Solanum Tuberosum +- Madmadness65 +- Necrowmancer +- lana + +## Moderators +- Sethcurry + +## Junior Moderators +- chacolah +- ChaosGrimmon +- Cynthia +- Kat +- lyn +- Pom + + +# ✨ Special Thanks + +## Reddit Moderators +- TheZigglez +- Vicksin +- Sapphire +- Javi +- roi + +## External Tools +- Ydarissep (RogueDex) +- Admiral-Billy (Offline App - Desktop) +- Red aka StonedModder (iOS App) diff --git a/README.md b/README.md index 2b219b46afb..607a42e5125 100644 --- a/README.md +++ b/README.md @@ -37,93 +37,6 @@ For detailed guidelines on documenting your code, refer to the [comments.md](./d Check out [Github Issues](https://github.com/pagefaultgames/pokerogue/issues) to see how can you help us! # 📝 Credits -> If this project contains assets you have produced and you do not see your name here, **please** reach out. +> If this project contains assets you have produced and you do not see your name, **please** reach out, either [here on GitHub](https://github.com/pagefaultgames/pokerogue/issues/new) or via [Discord](https://discord.gg/pokerogue). -### 🎵 BGM - - Pokémon Mystery Dungeon: Explorers of Sky - - Arata Iiyoshi - - Hideki Sakamoto - - Keisuke Ito - - Ken-ichi Saito - - Yoshihiro Maeda - - Pokémon Black/White - - Go Ichinose - - Hitomi Sato - - Shota Kageyama - - Pokémon Mystery Dungeon: Rescue Team DX - - Keisuke Ito - - Arata Iiyoshi - - Atsuhiro Ishizuna - - Pokémon HeartGold/SoulSilver - - Pokémon Black/White 2 - - Pokémon X/Y - - Pokémon Omega Ruby/Alpha Sapphire - - Pokémon Sun/Moon - - Pokémon Ultra Sun/Ultra Moon - - Pokémon Sword/Shield - - Pokémon Legends: Arceus - - Pokémon Scarlet/Violet - - Firel (Custom Ice Cave, Laboratory, Metropolis, Plains, Power Plant, Seabed, Space, and Volcano biome music) - - Lmz (Custom Ancient Ruins, Jungle, and Lake biome music) - - Andr06 (Custom Slum and Sea biome music) - -### 🎵 Sound Effects - - Pokémon Emerald - - Pokémon Black/White - -### 🎨 Backgrounds - - Squip (Paid Commissions) - - Contributions by Someonealive-QN - -### 🎨 UI - - GAMEFREAK - - LJ Birdman - -### 🎨 Pagefault Games Intro - - Spectremint - -### 🎨 Game Logo - - Gonstar (Paid Commission) - -### 🎨 Trainer Sprites - - GAMEFREAK (Pokémon Black/White 2, Pokémon Diamond/Pearl) - - kyledove - - Brumirage - - pkmn_realidea (Paid Commissions) - - IceJkai - -### 🎨 Trainer Portraits - - pkmn_realidea (Paid Commissions) - -### 🎨 Pokemon Sprites and Animation - - GAMEFREAK (Pokémon Black/White 2) - - Smogon Sprite Project (Various Artists) - - Skyflyer - - Nolo33 - - Ebaru - - EricLostie - - KingOfThe-X-Roads - - kiriaura - - Caruban - - Sopita_Yorita - - Azrita - - AshnixsLaw - - Hellfire0raptor - - RetroNC - - Franark122k - - OldSoulja - - PKMarioG - - ItsYugen - - lucasomi - - Pkm Sinfonia - - Poki Papillon - - Fleimer_ - - bizcoeindoloro - - mangalos810 - - Involuntary-Twitch - - selstar - - koda_want_to_sleep - - thedreadedden - -### 🎨 Move Animations - - Pokémon Reborn +Thank you to all the wonderful people that have contributed to the PokéRogue project! You can find the credits [here](./CREDITS.md). From 22f4e747ab12ca225632312b095a4a4181cdeba6 Mon Sep 17 00:00:00 2001 From: Jannik Tappert <38758606+CodeTappert@users.noreply.github.com> Date: Sat, 7 Dec 2024 02:48:55 +0100 Subject: [PATCH 047/119] Login now shows "beta" when playing on beta (#4973) --- src/ui/login-form-ui-handler.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/ui/login-form-ui-handler.ts b/src/ui/login-form-ui-handler.ts index d3c3663ec4b..78755423604 100644 --- a/src/ui/login-form-ui-handler.ts +++ b/src/ui/login-form-ui-handler.ts @@ -81,7 +81,11 @@ export default class LoginFormUiHandler extends FormModalUiHandler { } override getModalTitle(_config?: ModalConfig): string { - return i18next.t("menu:login"); + let key = "menu:login"; + if (import.meta.env.VITE_SERVER_URL === "https://apibeta.pokerogue.net") { + key = "menu:loginBeta"; + } + return i18next.t(key); } override getWidth(_config?: ModalConfig): number { From f2ef3620b56576c35b5cf478cafef572c943b05c Mon Sep 17 00:00:00 2001 From: Lugiad <2070109+Adri1@users.noreply.github.com> Date: Sat, 7 Dec 2024 02:49:09 +0100 Subject: [PATCH 048/119] [Localization] Localizable Event Timer (#4971) --- src/timed-event-manager.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/timed-event-manager.ts b/src/timed-event-manager.ts index 3b2b3619397..9515be7b49e 100644 --- a/src/timed-event-manager.ts +++ b/src/timed-event-manager.ts @@ -189,7 +189,7 @@ export class TimedEventDisplay extends Phaser.GameObjects.Container { const secs = Math.round(diff % 6e4 / 1e3); // Return formatted string - return "Event Ends in : " + z(days) + "d " + z(hours) + "h " + z(mins) + "m " + z(secs) + "s"; + return i18next.t("menu:eventTimer", { days: z(days), hours: z(hours), mins: z(mins), secs: z(secs) }); } updateCountdown() { From 5db3074e2cbd42e93c9a36239beaf0cfed054cdc Mon Sep 17 00:00:00 2001 From: PrabbyDD <147005742+PrabbyDD@users.noreply.github.com> Date: Mon, 9 Dec 2024 19:25:28 -0800 Subject: [PATCH 049/119] [Move] Implement Lunar Dance (#4926) * beginning immplementation of lunar dance * adding tests * changing in game message and making full hp message not display * Reuse Healing Wish's move attr, update test --------- Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> --- src/data/move.ts | 30 +++++++++--- src/phases/pokemon-heal-phase.ts | 11 ++++- src/test/moves/lunar_dance.test.ts | 77 ++++++++++++++++++++++++++++++ 3 files changed, 110 insertions(+), 8 deletions(-) create mode 100644 src/test/moves/lunar_dance.test.ts diff --git a/src/data/move.ts b/src/data/move.ts index 5a8ad208467..7a6f08a5372 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -1881,8 +1881,14 @@ export class FlameBurstAttr extends MoveEffectAttr { } export class SacrificialFullRestoreAttr extends SacrificialAttr { - constructor() { + protected restorePP: boolean; + protected moveMessage: string; + + constructor(restorePP: boolean, moveMessage: string) { super(); + + this.restorePP = restorePP; + this.moveMessage = moveMessage; } apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { @@ -1893,8 +1899,19 @@ export class SacrificialFullRestoreAttr extends SacrificialAttr { // We don't know which party member will be chosen, so pick the highest max HP in the party const maxPartyMemberHp = user.scene.getPlayerParty().map(p => p.getMaxHp()).reduce((maxHp: integer, hp: integer) => Math.max(hp, maxHp), 0); - user.scene.pushPhase(new PokemonHealPhase(user.scene, user.getBattlerIndex(), - maxPartyMemberHp, i18next.t("moveTriggers:sacrificialFullRestore", { pokemonName: getPokemonNameWithAffix(user) }), true, false, false, true), true); + user.scene.pushPhase( + new PokemonHealPhase( + user.scene, + user.getBattlerIndex(), + maxPartyMemberHp, + i18next.t(this.moveMessage, { pokemonName: getPokemonNameWithAffix(user) }), + true, + false, + false, + true, + false, + this.restorePP), + true); return true; } @@ -9002,7 +9019,7 @@ export function initMoves() { .attr(GyroBallPowerAttr) .ballBombMove(), new SelfStatusMove(Moves.HEALING_WISH, Type.PSYCHIC, -1, 10, -1, 0, 4) - .attr(SacrificialFullRestoreAttr) + .attr(SacrificialFullRestoreAttr, false, "moveTriggers:sacrificialFullRestore") .triageMove(), new AttackMove(Moves.BRINE, Type.WATER, MoveCategory.SPECIAL, 65, 100, 10, -1, 0, 4) .attr(MovePowerMultiplierAttr, (user, target, move) => target.getHpRatio() < 0.5 ? 2 : 1), @@ -9279,10 +9296,9 @@ export function initMoves() { new AttackMove(Moves.SPACIAL_REND, Type.DRAGON, MoveCategory.SPECIAL, 100, 95, 5, -1, 0, 4) .attr(HighCritAttr), new SelfStatusMove(Moves.LUNAR_DANCE, Type.PSYCHIC, -1, 10, -1, 0, 4) - .attr(SacrificialAttrOnHit) + .attr(SacrificialFullRestoreAttr, true, "moveTriggers:lunarDanceRestore") .danceMove() - .triageMove() - .unimplemented(), + .triageMove(), new AttackMove(Moves.CRUSH_GRIP, Type.NORMAL, MoveCategory.PHYSICAL, -1, 100, 5, -1, 0, 4) .attr(OpponentHighHpPowerAttr, 120), new AttackMove(Moves.MAGMA_STORM, Type.FIRE, MoveCategory.SPECIAL, 100, 75, 5, -1, 0, 4) diff --git a/src/phases/pokemon-heal-phase.ts b/src/phases/pokemon-heal-phase.ts index dc0bd235bb5..c95b92e3b64 100644 --- a/src/phases/pokemon-heal-phase.ts +++ b/src/phases/pokemon-heal-phase.ts @@ -21,8 +21,9 @@ export class PokemonHealPhase extends CommonAnimPhase { private revive: boolean; private healStatus: boolean; private preventFullHeal: boolean; + private fullRestorePP: boolean; - constructor(scene: BattleScene, battlerIndex: BattlerIndex, hpHealed: integer, message: string | null, showFullHpMessage: boolean, skipAnim: boolean = false, revive: boolean = false, healStatus: boolean = false, preventFullHeal: boolean = false) { + constructor(scene: BattleScene, battlerIndex: BattlerIndex, hpHealed: integer, message: string | null, showFullHpMessage: boolean, skipAnim: boolean = false, revive: boolean = false, healStatus: boolean = false, preventFullHeal: boolean = false, fullRestorePP: boolean = false) { super(scene, battlerIndex, undefined, CommonAnim.HEALTH_UP); this.hpHealed = hpHealed; @@ -32,6 +33,7 @@ export class PokemonHealPhase extends CommonAnimPhase { this.revive = revive; this.healStatus = healStatus; this.preventFullHeal = preventFullHeal; + this.fullRestorePP = fullRestorePP; } start() { @@ -86,6 +88,13 @@ export class PokemonHealPhase extends CommonAnimPhase { lastStatusEffect = pokemon.status.effect; pokemon.resetStatus(); } + if (this.fullRestorePP) { + for (const move of this.getPokemon().getMoveset()) { + if (move) { + move.ppUsed = 0; + } + } + } pokemon.updateInfo().then(() => super.end()); } else if (this.healStatus && !this.revive && pokemon.status) { lastStatusEffect = pokemon.status.effect; diff --git a/src/test/moves/lunar_dance.test.ts b/src/test/moves/lunar_dance.test.ts new file mode 100644 index 00000000000..603247298ac --- /dev/null +++ b/src/test/moves/lunar_dance.test.ts @@ -0,0 +1,77 @@ +import { StatusEffect } from "#app/enums/status-effect"; +import { CommandPhase } from "#app/phases/command-phase"; +import { Abilities } from "#enums/abilities"; +import { Moves } from "#enums/moves"; +import { Species } from "#enums/species"; +import GameManager from "#test/utils/gameManager"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, it, expect } from "vitest"; + +describe("Moves - Lunar Dance", () => { + let phaserGame: Phaser.Game; + let game: GameManager; + + beforeAll(() => { + phaserGame = new Phaser.Game({ + type: Phaser.HEADLESS, + }); + }); + + afterEach(() => { + game.phaseInterceptor.restoreOg(); + }); + + beforeEach(() => { + game = new GameManager(phaserGame); + game.override + .statusEffect(StatusEffect.BURN) + .battleType("double") + .enemyAbility(Abilities.BALL_FETCH) + .enemyMoveset(Moves.SPLASH); + }); + + it("should full restore HP, PP and status of switched in pokemon, then fail second use because no remaining backup pokemon in party", async () => { + await game.classicMode.startBattle([ Species.BULBASAUR, Species.ODDISH, Species.RATTATA ]); + + const [ bulbasaur, oddish, rattata ] = game.scene.getPlayerParty(); + game.move.changeMoveset(bulbasaur, [ Moves.LUNAR_DANCE, Moves.SPLASH ]); + game.move.changeMoveset(oddish, [ Moves.LUNAR_DANCE, Moves.SPLASH ]); + game.move.changeMoveset(rattata, [ Moves.LUNAR_DANCE, Moves.SPLASH ]); + + game.move.select(Moves.SPLASH, 0); + game.move.select(Moves.SPLASH, 1); + await game.phaseInterceptor.to(CommandPhase); + await game.toNextTurn(); + + // Bulbasaur should still be burned and have used a PP for splash and not at max hp + expect(bulbasaur.status?.effect).toBe(StatusEffect.BURN); + expect(bulbasaur.moveset[1]?.ppUsed).toBe(1); + expect(bulbasaur.hp).toBeLessThan(bulbasaur.getMaxHp()); + + // Switch out Bulbasaur for Rattata so we can swtich bulbasaur back in with lunar dance + game.doSwitchPokemon(2); + game.move.select(Moves.SPLASH, 1); + await game.phaseInterceptor.to(CommandPhase); + await game.toNextTurn(); + + game.move.select(Moves.SPLASH, 0); + game.move.select(Moves.LUNAR_DANCE); + game.doSelectPartyPokemon(2); + await game.phaseInterceptor.to("SwitchPhase", false); + await game.toNextTurn(); + + // Bulbasaur should NOT have any status and have full PP for splash and be at max hp + expect(bulbasaur.status?.effect).toBeUndefined(); + expect(bulbasaur.moveset[1]?.ppUsed).toBe(0); + expect(bulbasaur.isFullHp()).toBe(true); + + game.move.select(Moves.SPLASH, 0); + game.move.select(Moves.LUNAR_DANCE); + await game.phaseInterceptor.to(CommandPhase); + await game.toNextTurn(); + + // Using Lunar dance again should fail because nothing in party and rattata should be alive + expect(rattata.status?.effect).toBe(StatusEffect.BURN); + expect(rattata.hp).toBeLessThan(rattata.getMaxHp()); + }); +}); From dfde40f1aeda67e41f9da65796501d1ed4cac702 Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Sat, 14 Dec 2024 06:55:23 -0800 Subject: [PATCH 050/119] [Misc] Update "Yda's Dex" credit (the tool is now gone) (#4988) --- CREDITS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CREDITS.md b/CREDITS.md index 0fe0a8dc290..cded7ea90a2 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -615,6 +615,6 @@ In addition to the lists below, please check [the PokéRogue wiki](https://wiki. - roi ## External Tools -- Ydarissep (RogueDex) +- Ydarissep (creator of the now defunct "Yda's Dex") - Admiral-Billy (Offline App - Desktop) - Red aka StonedModder (iOS App) From 90c8c9743714e95b0934551c7c2660d36f155844 Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Sat, 14 Dec 2024 10:15:21 -0800 Subject: [PATCH 051/119] Fix BattleBond Greninja moveset: Add Mat Block, remove duplicate move --- src/data/balance/pokemon-level-moves.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/balance/pokemon-level-moves.ts b/src/data/balance/pokemon-level-moves.ts index 2a3ab431424..8e28300eb8a 100644 --- a/src/data/balance/pokemon-level-moves.ts +++ b/src/data/balance/pokemon-level-moves.ts @@ -19464,7 +19464,6 @@ export const pokemonFormLevelMoves: PokemonSpeciesFormLevelMoves = { }, [Species.GRENINJA]: { 1: [ - [ EVOLVE_MOVE, Moves.WATER_SHURIKEN ], [ EVOLVE_MOVE, Moves.WATER_SHURIKEN ], [ 1, Moves.POUND ], [ 1, Moves.GROWL ], @@ -19475,6 +19474,7 @@ export const pokemonFormLevelMoves: PokemonSpeciesFormLevelMoves = { [ 1, Moves.SMACK_DOWN ], // Previous Stage Move [ 1, Moves.BOUNCE ], // Previous Stage Move [ 1, Moves.HAZE ], + [ 1, Moves.MAT_BLOCK ], [ 1, Moves.ROLE_PLAY ], [ 1, Moves.NIGHT_SLASH ], [ 10, Moves.LICK ], From f6f29f0f667f259d201ba2bdfcb58a937d21deeb Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Sun, 15 Dec 2024 13:38:51 -0800 Subject: [PATCH 052/119] [i18n] Update locales submodule (#4992) --- public/locales | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/locales b/public/locales index 7ad20e64caa..1dc4d5dd238 160000 --- a/public/locales +++ b/public/locales @@ -1 +1 @@ -Subproject commit 7ad20e64caa9367b444712f10036fa9bbe4837a5 +Subproject commit 1dc4d5dd238db8bbf64535c3274056abd199d404 From cb719d99a53130dbd99aa803ee02d25f89e86a74 Mon Sep 17 00:00:00 2001 From: Lugiad <2070109+Adri1@users.noreply.github.com> Date: Mon, 16 Dec 2024 12:34:14 +0100 Subject: [PATCH 053/119] [i18n] Update party-ui-handler.ts (#4986) --- src/ui/party-ui-handler.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/ui/party-ui-handler.ts b/src/ui/party-ui-handler.ts index bd3561dd0b4..0d20753f069 100644 --- a/src/ui/party-ui-handler.ts +++ b/src/ui/party-ui-handler.ts @@ -362,12 +362,12 @@ export default class PartyUiHandler extends MessageUiHandler { if (p !== this.transferCursor) { // this skips adding the able/not able labels on the pokemon doing the transfer if (matchingModifier) { // if matchingModifier exists then the item exists on the new pokemon if (matchingModifier.getMaxStackCount(this.scene) === matchingModifier.stackCount) { // checks to see if the stack of items is at max stack; if so, set the description label to "Not able" - ableToTransfer = "Not able"; + ableToTransfer = i18next.t("partyUiHandler:notAble"); } else { // if the pokemon isn't at max stack, make the label "Able" - ableToTransfer = "Able"; + ableToTransfer = i18next.t("partyUiHandler:able"); } } else { // if matchingModifier doesn't exist, that means the pokemon doesn't have any of the item, and we need to show "Able" - ableToTransfer = "Able"; + ableToTransfer = i18next.t("partyUiHandler:able"); } } else { // this else relates to the transfer pokemon. We set the text to be blank so there's no "Able"/"Not able" text ableToTransfer = ""; From 62e4a7ec54e4fdee78503adfd55cd44c00e3b399 Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Wed, 18 Dec 2024 12:01:19 -0800 Subject: [PATCH 054/119] [Misc] Update CREDITS.md (#5003) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add muscode and geeilhan to CREDITS.md * Sort list alphabetically * Change subcategory to "Other Code Contributors" * Add Lugiadrien and Zé Ricardo Co-authored-by: Moka <54149968+MokaStitcher@users.noreply.github.com> --------- Co-authored-by: Moka <54149968+MokaStitcher@users.noreply.github.com> --- CREDITS.md | 98 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 51 insertions(+), 47 deletions(-) diff --git a/CREDITS.md b/CREDITS.md index cded7ea90a2..fd9a3d7bde3 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -372,63 +372,67 @@ In addition to the lists below, please check [the PokéRogue wiki](https://wiki. - Lily - PigeonBar -## Past Contributors -- Fontbane -- sodaMelon -- schmidtc1 -- shayebeadling +## Other Code Contributors +- Admiral-Billy +- allen925 +- arColm +- Arxalc +- AsdarDevelops +- bennybroseph +- Brain Frog +- Corrade +- Dakurei - DustinLin -- lucfd -- madibye +- ElizaAlex - EmberCM -- Mewtwo2387 +- EmoUsedHM01 +- EvasiveAce +- Fontbane +- francktrouillez +- FredeX +- geeilhan +- Greenlamp +- happinyz - hayuna -- sirzento -- ReneGV -- mattrossdev -- zacharied -- NxKarim -- td76099 -- Xiaphear +- InfernoVulpix - j-diefenbach - jaimefd -- EvasiveAce -- EmoUsedHM01 -- francktrouillez - JakubHanko -- FredeX -- PigeonBar -- prime-dialga -- rnicar245 -- rationality6 -- Neverblade -- Corrade -- Admiral-Billy -- okimin -- Arxalc -- PrabbyDD - JonStudders - karl-police -- prateau -- meepen -- arColm -- allen925 -- InfernoVulpix -- snoozbuster -- zaccie -- happinyz -- PyGaVS +- lucfd +- Lugiadrien +- madibye +- mattrossdev - mcmontag -- ElizaAlex -- AsdarDevelops -- Vassiat -- RedstonewolfX -- Sam/Flashfyre (initial developer, started PokéRogue) -- Greenlamp -- bennybroseph +- meepen +- Mewtwo2387 +- muscode +- Neverblade +- NxKarim +- okimin - OrangeRed -- Dakurei -- Brain Frog +- PigeonBar +- PrabbyDD +- prateau +- prime-dialga +- PyGaVS +- rationality6 +- RedstonewolfX +- ReneGV +- rnicar245 +- Sam aka Flashfyre (initial developer, started PokéRogue) +- schmidtc1 +- shayebeadling +- sirzento +- snoozbuster +- sodaMelon +- td76099 +- Vassiat +- Xiaphear +- zaccie +- zacharied +- Zé Ricardo # 🌎 Translation From 708e58d0839b0debd4f26ff04bfe62a1d3ab4e87 Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Thu, 19 Dec 2024 11:44:24 -0800 Subject: [PATCH 055/119] [i18n] Update locales submodule --- public/locales | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/locales b/public/locales index 1dc4d5dd238..6592ec05fce 160000 --- a/public/locales +++ b/public/locales @@ -1 +1 @@ -Subproject commit 1dc4d5dd238db8bbf64535c3274056abd199d404 +Subproject commit 6592ec05fce7035ee93aad253279e97ab6cdc1ab From 806585f1a69a8059444c00aa87ca5ecedc71cf9b Mon Sep 17 00:00:00 2001 From: AJ Fontaine <36677462+Fontbane@users.noreply.github.com> Date: Thu, 19 Dec 2024 15:01:40 -0500 Subject: [PATCH 056/119] [UI/UX] Refactor and enable seasonal splash messages (#5009) * Refactor and enable seasonal splash texts * Update splash text test --- src/constants.ts | 2 +- src/data/splash-messages.ts | 180 +++++--------------------- src/test/data/splash_messages.test.ts | 18 +-- src/ui/title-ui-handler.ts | 3 +- 4 files changed, 42 insertions(+), 161 deletions(-) diff --git a/src/constants.ts b/src/constants.ts index 63f00b9f33f..927575c0a28 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -2,7 +2,7 @@ export const PLAYER_PARTY_MAX_SIZE: number = 6; /** Whether to use seasonal splash messages in general */ -export const USE_SEASONAL_SPLASH_MESSAGES: boolean = false; +export const USE_SEASONAL_SPLASH_MESSAGES: boolean = true; /** Name of the session ID cookie */ export const SESSION_ID_COOKIE_NAME: string = "pokerogue_sessionId"; diff --git a/src/data/splash-messages.ts b/src/data/splash-messages.ts index 1f00ce0d555..086a55189d0 100644 --- a/src/data/splash-messages.ts +++ b/src/data/splash-messages.ts @@ -1,4 +1,5 @@ import { USE_SEASONAL_SPLASH_MESSAGES } from "#app/constants"; +import i18next from "i18next"; //#region Interfaces/Types @@ -37,8 +38,6 @@ interface Season { start: `${Month}-${Day}`; /** The end day and month of the season. Format `MM-DD` */ end: `${Month}-${Day}`; - /** Collection of the messages to display (without the `i18next.t()` call!) */ - messages: string[]; } //#region Constants @@ -46,176 +45,57 @@ interface Season { /** The weight multiplier for the battles-won splash message */ const BATTLES_WON_WEIGHT_MULTIPLIER = 10; /** The weight multiplier for the seasonal splash messages */ -const SEASONAL_WEIGHT_MULTIPLIER = 10; - -//#region Common Messages - -const commonSplashMessages = [ - ...Array(BATTLES_WON_WEIGHT_MULTIPLIER).fill("battlesWon"), - "joinTheDiscord", - "infiniteLevels", - "everythingIsStackable", - "optionalSaveScumming", - "biomes", - "openSource", - "playWithSpeed", - "liveBugTesting", - "heavyInfluence", - "pokemonRiskAndPokemonRain", - "nowWithMoreSalt", - "infiniteFusionAtHome", - "brokenEggMoves", - "magnificent", - "doPeopleReadThis", - "thatsCrazy", - "gottaCatchEmAll", - "questionableBalancing", - "coolShaders", - "aiFree", - "suddenDifficultySpikes", - "basedOnAnUnfinishedFlashGame", - "moreAddictiveThanIntended", - "mostlyConsistentSeeds", - "achievementPointsDontDoAnything", - "nothingBeatsAJellyFilledDonut", - "dontTalkAboutTheTinkatonIncident", - "alsoTryPokengine", - "alsoTryEmeraldRogue", - "alsoTryRadicalRed", - "eeveeExpo", - "checkOutYnoproject", - "breedersInSpace", - "alsoTryPokemonUnbound", - "tryTheJohtoDragonChallenge", - "basicReadingAbilityRecommended", - "shoutoutsToTheArtists", - "gamblingNotEncouraged", - "dontForgetToTakeABreak", - "wEvent", - "ifItsNotAccurateItsAccurate", - "everyLossIsProgressMade", - "liveWoChienReaction", - "itsAFeatureNotABug", - "theEggsAreNotForEating", - "7.8outOf10TooManyWaterBiomes", - "butNothingHappened", - "thePowerOfScienceIsAmazing", - "freeToPlay", - "theresATimeAndPlaceForEverything", - "nowWithShinierShinies", - "smilesGoForMiles", - "certainlyNotDragonFree", - "haveANiceDay", - "redacted", - "hi", - "transRights", - "shinyOddsHigherThanYouThink", - "noFalseTrades", - "notForProfit", - "timeForYourDailyRun", - "moreEggsThanADaycare", - "disclaimerHarshSunDoesNotGiveVitaminD", - "whoNeedsAMap", - "luxrayIsNotADarkType", - "selfDestructiveEncounters", - "mostOptionsAreViable", - "pokerogueMorse", - "smiley", - "beAwareOfPassives", - "asSeenOnTheWorldWideWeb", - "vaultinVeluzas", - "tooManyStarters", - "checkTheWiki", - "winWithYourFavorites", - "alsoTryPokerogueWait", - "theWayISeeItKyogreIsSurrounded", - "tryOutHoneyGather", - "notForTheFaintOfHeart", - "p", - "flipYourDeviceToEvolveInkay", - "inArceusWeTrust", - "whyDidTheTorchicCrossTheRoad", - "goodLuck", - "fuseWisely", - "compensation", - "prepareForTroubleAndMakeItDouble", - "anEggForYourTroubles", - "regirock", - "hereForAGoodTime", - "getGoodOrDont", - "checkTheSubreddit", - "betterNerfGreninja", - "inCaseOfUpdateClearYourCache", - "insertTextHere", - "endingEndlessNotFound", - "iLikeMyEggsVouchered", - "YOU", - "noAddedSugar", - "notSponsored", - "notRated", - "justOneMoreWaveMom", - "saltCured", - "onlyOnPokerogueNet", - "pixelPerfection", - "openSource", - "probablyGood", - "itsAMonsterHouse", - "dontForgetYourPassword", - "tripleTripleTripleAxel", - "questionExclamation", - "clownEncounters", - "fullOfBerries", - "limitsAreMeantToBeBrokenSometimes", - "keepItCasual", - "serversProbablyWorking", - "mew", - "makeItRainAndYourProblemsGoAway", - "customMusicTracks", - "youAreValid", - "number591IsLookingOff", - "timeForYourDeliDelivery", - "goodFirstImpression", - "iPreferRarerCandies", -]; +const SEASONAL_WEIGHT_MULTIPLIER = 20; //#region Seasonal Messages const seasonalSplashMessages: Season[] = [ { - name: "Halloween", - start: "09-15", - end: "10-31", - messages: [ "halloween.pumpkabooAbout", "halloween.mayContainSpiders", "halloween.spookyScarySkeledirge", "halloween.gourgeistUsedTrickOrTreat", "halloween.letsSnuggleForever" ], + name: "halloween", + start: "10-15", + end: "10-31" }, { - name: "XMAS", - start: "12-01", - end: "12-26", - messages: [ "xmas.happyHolidays", "xmas.unaffilicatedWithDelibirdServices", "xmas.delibirdSeason", "xmas.diamondsFromTheSky", "xmas.holidayStylePikachuNotIncluded" ], + name: "xmas", + start: "12-16", + end: "12-31" }, { - name: "New Year's", - start: "01-01", - end: "01-31", - messages: [ "newYears.happyNewYear" ], + name: "newYears", + start: "12-31", + end: "01-14" }, ]; //#endregion export function getSplashMessages(): string[] { - const splashMessages: string[] = [ ...commonSplashMessages ]; + const existingKeys = i18next.getResourceBundle(i18next.language, "splashMessages"); + const splashMessages: string[] = [ ...Object.keys(existingKeys["common"]) ].map((message) => `common.${message}`); + if (splashMessages.includes("common.battlesWon")) { + splashMessages.push(...Array(Math.max(BATTLES_WON_WEIGHT_MULTIPLIER - 1, 1)).fill("common.battlesWon")); + } + console.log("use seasonal splash messages", USE_SEASONAL_SPLASH_MESSAGES); if (USE_SEASONAL_SPLASH_MESSAGES) { // add seasonal splash messages if the season is active - for (const { name, start, end, messages } of seasonalSplashMessages) { + for (const { name, start, end } of seasonalSplashMessages) { const now = new Date(); const startDate = new Date(`${start}-${now.getFullYear()}`); const endDate = new Date(`${end}-${now.getFullYear()}`); + if (endDate < startDate) { // If the end date is earlier in the year, that means it's next year + if (now >= startDate) { + endDate.setFullYear(endDate.getFullYear() + 1); //Ends next year + } else if (now <= endDate) { + startDate.setFullYear(startDate.getFullYear() - 1); //Started last year + } + } + console.log(`${name} event starts ${startDate} and ends ${endDate}`); - if (now >= startDate && now <= endDate) { - console.log(`Adding ${messages.length} ${name} splash messages (weight: x${SEASONAL_WEIGHT_MULTIPLIER})`); - messages.forEach((message) => { + if (existingKeys.hasOwnProperty(name) && now >= startDate && now <= endDate) { + const existingMessages: string[] = [ ...Object.keys(existingKeys[name]) ].map(m=>`${name}.${m}`); + console.log(`Adding ${existingMessages.length} ${name} splash messages from ${i18next.language} (weight: x${SEASONAL_WEIGHT_MULTIPLIER})`); + existingMessages.forEach((message) => { const weightedMessage = Array(SEASONAL_WEIGHT_MULTIPLIER).fill(message); splashMessages.push(...weightedMessage); }); diff --git a/src/test/data/splash_messages.test.ts b/src/test/data/splash_messages.test.ts index b9ed5b9d365..e4ad547b704 100644 --- a/src/test/data/splash_messages.test.ts +++ b/src/test/data/splash_messages.test.ts @@ -9,7 +9,7 @@ describe("Data - Splash Messages", () => { // make sure to adjust this test if the weight it changed! it("should add contain 10 `battlesWon` splash messages", () => { - const battlesWonMessages = getSplashMessages().filter((message) => message === "splashMessages:battlesWon"); + const battlesWonMessages = getSplashMessages().filter((message) => message === "splashMessages:common.battlesWon"); expect(battlesWonMessages).toHaveLength(10); }); @@ -22,16 +22,16 @@ describe("Data - Splash Messages", () => { vi.useRealTimers(); // reset system time }); - it("should contain halloween messages from Sep 15 to Oct 31", () => { - testSeason(new Date("2024-09-15"), new Date("2024-10-31"), "halloween"); + it("should contain halloween messages from Oct 15 to Oct 31", () => { + testSeason(new Date("2024-10-15"), new Date("2024-10-31"), "halloween"); }); - it("should contain xmas messages from Dec 1 to Dec 26", () => { - testSeason(new Date("2024-12-01"), new Date("2024-12-26"), "xmas"); + it("should contain xmas messages from Dec 16 to Dec 31", () => { + testSeason(new Date("2024-12-16"), new Date("2024-12-31"), "xmas"); }); - it("should contain new years messages frm Jan 1 to Jan 31", () => { - testSeason(new Date("2024-01-01"), new Date("2024-01-31"), "newYears"); + it("should contain new years messages from Dec 31 '24 to Jan 14 '25", () => { + testSeason(new Date("2024-12-31"), new Date("2025-01-14"), "newYears"); }); }); }); @@ -60,7 +60,7 @@ function testSeason(startDate: Date, endDate: Date, prefix: string) { }); expect(before).toBe(0); - expect(start).toBeGreaterThanOrEqual(10); // make sure to adjust if weight is changed! - expect(end).toBeGreaterThanOrEqual(10); // make sure to adjust if weight is changed! + expect(start).toBeGreaterThanOrEqual(20); // make sure to adjust if weight is changed! + expect(end).toBeGreaterThanOrEqual(20); // make sure to adjust if weight is changed! expect(after).toBe(0); } diff --git a/src/ui/title-ui-handler.ts b/src/ui/title-ui-handler.ts index aec80f049c9..f1b0a673ea0 100644 --- a/src/ui/title-ui-handler.ts +++ b/src/ui/title-ui-handler.ts @@ -83,7 +83,7 @@ export default class TitleUiHandler extends OptionSelectUiHandler { .then(stats => { if (stats) { this.playerCountLabel.setText(`${stats.playerCount} ${i18next.t("menu:playersOnline")}`); - if (this.splashMessage === "splashMessages:battlesWon") { + if (this.splashMessage === "splashMessages:common.battlesWon") { this.splashMessageText.setText(i18next.t(this.splashMessage, { count: stats.battleCount })); } } @@ -98,6 +98,7 @@ export default class TitleUiHandler extends OptionSelectUiHandler { if (ret) { this.splashMessage = Utils.randItem(getSplashMessages()); + console.log(this.splashMessage); this.splashMessageText.setText(i18next.t(this.splashMessage, { count: TitleUiHandler.BATTLES_WON_FALLBACK })); this.appVersionText.setText("v" + version); From 29a079cfd3f188c3975ab0eff1ae9f73e44e139d Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Thu, 19 Dec 2024 16:04:12 -0800 Subject: [PATCH 057/119] Revert "[UI/UX] Refactor and enable seasonal splash messages (#5009)" (#5014) This reverts commit 806585f1a69a8059444c00aa87ca5ecedc71cf9b. --- src/constants.ts | 2 +- src/data/splash-messages.ts | 180 +++++++++++++++++++++----- src/test/data/splash_messages.test.ts | 18 +-- src/ui/title-ui-handler.ts | 3 +- 4 files changed, 161 insertions(+), 42 deletions(-) diff --git a/src/constants.ts b/src/constants.ts index 927575c0a28..63f00b9f33f 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -2,7 +2,7 @@ export const PLAYER_PARTY_MAX_SIZE: number = 6; /** Whether to use seasonal splash messages in general */ -export const USE_SEASONAL_SPLASH_MESSAGES: boolean = true; +export const USE_SEASONAL_SPLASH_MESSAGES: boolean = false; /** Name of the session ID cookie */ export const SESSION_ID_COOKIE_NAME: string = "pokerogue_sessionId"; diff --git a/src/data/splash-messages.ts b/src/data/splash-messages.ts index 086a55189d0..1f00ce0d555 100644 --- a/src/data/splash-messages.ts +++ b/src/data/splash-messages.ts @@ -1,5 +1,4 @@ import { USE_SEASONAL_SPLASH_MESSAGES } from "#app/constants"; -import i18next from "i18next"; //#region Interfaces/Types @@ -38,6 +37,8 @@ interface Season { start: `${Month}-${Day}`; /** The end day and month of the season. Format `MM-DD` */ end: `${Month}-${Day}`; + /** Collection of the messages to display (without the `i18next.t()` call!) */ + messages: string[]; } //#region Constants @@ -45,57 +46,176 @@ interface Season { /** The weight multiplier for the battles-won splash message */ const BATTLES_WON_WEIGHT_MULTIPLIER = 10; /** The weight multiplier for the seasonal splash messages */ -const SEASONAL_WEIGHT_MULTIPLIER = 20; +const SEASONAL_WEIGHT_MULTIPLIER = 10; + +//#region Common Messages + +const commonSplashMessages = [ + ...Array(BATTLES_WON_WEIGHT_MULTIPLIER).fill("battlesWon"), + "joinTheDiscord", + "infiniteLevels", + "everythingIsStackable", + "optionalSaveScumming", + "biomes", + "openSource", + "playWithSpeed", + "liveBugTesting", + "heavyInfluence", + "pokemonRiskAndPokemonRain", + "nowWithMoreSalt", + "infiniteFusionAtHome", + "brokenEggMoves", + "magnificent", + "doPeopleReadThis", + "thatsCrazy", + "gottaCatchEmAll", + "questionableBalancing", + "coolShaders", + "aiFree", + "suddenDifficultySpikes", + "basedOnAnUnfinishedFlashGame", + "moreAddictiveThanIntended", + "mostlyConsistentSeeds", + "achievementPointsDontDoAnything", + "nothingBeatsAJellyFilledDonut", + "dontTalkAboutTheTinkatonIncident", + "alsoTryPokengine", + "alsoTryEmeraldRogue", + "alsoTryRadicalRed", + "eeveeExpo", + "checkOutYnoproject", + "breedersInSpace", + "alsoTryPokemonUnbound", + "tryTheJohtoDragonChallenge", + "basicReadingAbilityRecommended", + "shoutoutsToTheArtists", + "gamblingNotEncouraged", + "dontForgetToTakeABreak", + "wEvent", + "ifItsNotAccurateItsAccurate", + "everyLossIsProgressMade", + "liveWoChienReaction", + "itsAFeatureNotABug", + "theEggsAreNotForEating", + "7.8outOf10TooManyWaterBiomes", + "butNothingHappened", + "thePowerOfScienceIsAmazing", + "freeToPlay", + "theresATimeAndPlaceForEverything", + "nowWithShinierShinies", + "smilesGoForMiles", + "certainlyNotDragonFree", + "haveANiceDay", + "redacted", + "hi", + "transRights", + "shinyOddsHigherThanYouThink", + "noFalseTrades", + "notForProfit", + "timeForYourDailyRun", + "moreEggsThanADaycare", + "disclaimerHarshSunDoesNotGiveVitaminD", + "whoNeedsAMap", + "luxrayIsNotADarkType", + "selfDestructiveEncounters", + "mostOptionsAreViable", + "pokerogueMorse", + "smiley", + "beAwareOfPassives", + "asSeenOnTheWorldWideWeb", + "vaultinVeluzas", + "tooManyStarters", + "checkTheWiki", + "winWithYourFavorites", + "alsoTryPokerogueWait", + "theWayISeeItKyogreIsSurrounded", + "tryOutHoneyGather", + "notForTheFaintOfHeart", + "p", + "flipYourDeviceToEvolveInkay", + "inArceusWeTrust", + "whyDidTheTorchicCrossTheRoad", + "goodLuck", + "fuseWisely", + "compensation", + "prepareForTroubleAndMakeItDouble", + "anEggForYourTroubles", + "regirock", + "hereForAGoodTime", + "getGoodOrDont", + "checkTheSubreddit", + "betterNerfGreninja", + "inCaseOfUpdateClearYourCache", + "insertTextHere", + "endingEndlessNotFound", + "iLikeMyEggsVouchered", + "YOU", + "noAddedSugar", + "notSponsored", + "notRated", + "justOneMoreWaveMom", + "saltCured", + "onlyOnPokerogueNet", + "pixelPerfection", + "openSource", + "probablyGood", + "itsAMonsterHouse", + "dontForgetYourPassword", + "tripleTripleTripleAxel", + "questionExclamation", + "clownEncounters", + "fullOfBerries", + "limitsAreMeantToBeBrokenSometimes", + "keepItCasual", + "serversProbablyWorking", + "mew", + "makeItRainAndYourProblemsGoAway", + "customMusicTracks", + "youAreValid", + "number591IsLookingOff", + "timeForYourDeliDelivery", + "goodFirstImpression", + "iPreferRarerCandies", +]; //#region Seasonal Messages const seasonalSplashMessages: Season[] = [ { - name: "halloween", - start: "10-15", - end: "10-31" + name: "Halloween", + start: "09-15", + end: "10-31", + messages: [ "halloween.pumpkabooAbout", "halloween.mayContainSpiders", "halloween.spookyScarySkeledirge", "halloween.gourgeistUsedTrickOrTreat", "halloween.letsSnuggleForever" ], }, { - name: "xmas", - start: "12-16", - end: "12-31" + name: "XMAS", + start: "12-01", + end: "12-26", + messages: [ "xmas.happyHolidays", "xmas.unaffilicatedWithDelibirdServices", "xmas.delibirdSeason", "xmas.diamondsFromTheSky", "xmas.holidayStylePikachuNotIncluded" ], }, { - name: "newYears", - start: "12-31", - end: "01-14" + name: "New Year's", + start: "01-01", + end: "01-31", + messages: [ "newYears.happyNewYear" ], }, ]; //#endregion export function getSplashMessages(): string[] { - const existingKeys = i18next.getResourceBundle(i18next.language, "splashMessages"); - const splashMessages: string[] = [ ...Object.keys(existingKeys["common"]) ].map((message) => `common.${message}`); - if (splashMessages.includes("common.battlesWon")) { - splashMessages.push(...Array(Math.max(BATTLES_WON_WEIGHT_MULTIPLIER - 1, 1)).fill("common.battlesWon")); - } - + const splashMessages: string[] = [ ...commonSplashMessages ]; console.log("use seasonal splash messages", USE_SEASONAL_SPLASH_MESSAGES); if (USE_SEASONAL_SPLASH_MESSAGES) { // add seasonal splash messages if the season is active - for (const { name, start, end } of seasonalSplashMessages) { + for (const { name, start, end, messages } of seasonalSplashMessages) { const now = new Date(); const startDate = new Date(`${start}-${now.getFullYear()}`); const endDate = new Date(`${end}-${now.getFullYear()}`); - if (endDate < startDate) { // If the end date is earlier in the year, that means it's next year - if (now >= startDate) { - endDate.setFullYear(endDate.getFullYear() + 1); //Ends next year - } else if (now <= endDate) { - startDate.setFullYear(startDate.getFullYear() - 1); //Started last year - } - } - console.log(`${name} event starts ${startDate} and ends ${endDate}`); - if (existingKeys.hasOwnProperty(name) && now >= startDate && now <= endDate) { - const existingMessages: string[] = [ ...Object.keys(existingKeys[name]) ].map(m=>`${name}.${m}`); - console.log(`Adding ${existingMessages.length} ${name} splash messages from ${i18next.language} (weight: x${SEASONAL_WEIGHT_MULTIPLIER})`); - existingMessages.forEach((message) => { + if (now >= startDate && now <= endDate) { + console.log(`Adding ${messages.length} ${name} splash messages (weight: x${SEASONAL_WEIGHT_MULTIPLIER})`); + messages.forEach((message) => { const weightedMessage = Array(SEASONAL_WEIGHT_MULTIPLIER).fill(message); splashMessages.push(...weightedMessage); }); diff --git a/src/test/data/splash_messages.test.ts b/src/test/data/splash_messages.test.ts index e4ad547b704..b9ed5b9d365 100644 --- a/src/test/data/splash_messages.test.ts +++ b/src/test/data/splash_messages.test.ts @@ -9,7 +9,7 @@ describe("Data - Splash Messages", () => { // make sure to adjust this test if the weight it changed! it("should add contain 10 `battlesWon` splash messages", () => { - const battlesWonMessages = getSplashMessages().filter((message) => message === "splashMessages:common.battlesWon"); + const battlesWonMessages = getSplashMessages().filter((message) => message === "splashMessages:battlesWon"); expect(battlesWonMessages).toHaveLength(10); }); @@ -22,16 +22,16 @@ describe("Data - Splash Messages", () => { vi.useRealTimers(); // reset system time }); - it("should contain halloween messages from Oct 15 to Oct 31", () => { - testSeason(new Date("2024-10-15"), new Date("2024-10-31"), "halloween"); + it("should contain halloween messages from Sep 15 to Oct 31", () => { + testSeason(new Date("2024-09-15"), new Date("2024-10-31"), "halloween"); }); - it("should contain xmas messages from Dec 16 to Dec 31", () => { - testSeason(new Date("2024-12-16"), new Date("2024-12-31"), "xmas"); + it("should contain xmas messages from Dec 1 to Dec 26", () => { + testSeason(new Date("2024-12-01"), new Date("2024-12-26"), "xmas"); }); - it("should contain new years messages from Dec 31 '24 to Jan 14 '25", () => { - testSeason(new Date("2024-12-31"), new Date("2025-01-14"), "newYears"); + it("should contain new years messages frm Jan 1 to Jan 31", () => { + testSeason(new Date("2024-01-01"), new Date("2024-01-31"), "newYears"); }); }); }); @@ -60,7 +60,7 @@ function testSeason(startDate: Date, endDate: Date, prefix: string) { }); expect(before).toBe(0); - expect(start).toBeGreaterThanOrEqual(20); // make sure to adjust if weight is changed! - expect(end).toBeGreaterThanOrEqual(20); // make sure to adjust if weight is changed! + expect(start).toBeGreaterThanOrEqual(10); // make sure to adjust if weight is changed! + expect(end).toBeGreaterThanOrEqual(10); // make sure to adjust if weight is changed! expect(after).toBe(0); } diff --git a/src/ui/title-ui-handler.ts b/src/ui/title-ui-handler.ts index f1b0a673ea0..aec80f049c9 100644 --- a/src/ui/title-ui-handler.ts +++ b/src/ui/title-ui-handler.ts @@ -83,7 +83,7 @@ export default class TitleUiHandler extends OptionSelectUiHandler { .then(stats => { if (stats) { this.playerCountLabel.setText(`${stats.playerCount} ${i18next.t("menu:playersOnline")}`); - if (this.splashMessage === "splashMessages:common.battlesWon") { + if (this.splashMessage === "splashMessages:battlesWon") { this.splashMessageText.setText(i18next.t(this.splashMessage, { count: stats.battleCount })); } } @@ -98,7 +98,6 @@ export default class TitleUiHandler extends OptionSelectUiHandler { if (ret) { this.splashMessage = Utils.randItem(getSplashMessages()); - console.log(this.splashMessage); this.splashMessageText.setText(i18next.t(this.splashMessage, { count: TitleUiHandler.BATTLES_WON_FALLBACK })); this.appVersionText.setText("v" + version); From 6ef15eca4a01d5669aee411b594129c6e6c7796a Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Thu, 19 Dec 2024 16:18:32 -0800 Subject: [PATCH 058/119] [i18n] Update locales submodule --- public/locales | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/locales b/public/locales index 6592ec05fce..3a141b9faed 160000 --- a/public/locales +++ b/public/locales @@ -1 +1 @@ -Subproject commit 6592ec05fce7035ee93aad253279e97ab6cdc1ab +Subproject commit 3a141b9faed725d2f160c38e441cad1d38d9d5bd From 0022972be919bc502b4a0dc00b12e20fb4d22049 Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Fri, 20 Dec 2024 12:24:09 -0800 Subject: [PATCH 059/119] [i18n] Update locales submodule --- public/locales | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/locales b/public/locales index 3a141b9faed..6c6f0af398a 160000 --- a/public/locales +++ b/public/locales @@ -1 +1 @@ -Subproject commit 3a141b9faed725d2f160c38e441cad1d38d9d5bd +Subproject commit 6c6f0af398ae11f8d96c6ac064f171d927812c85 From ba285110467e7f7ee1e2015db2adf0e46efaca3a Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Fri, 20 Dec 2024 12:25:34 -0800 Subject: [PATCH 060/119] Bump version number to 1.4.0 (#5013) --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index a4568b3f5ac..ca6041e7048 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "pokemon-rogue-battle", - "version": "1.3.0", + "version": "1.4.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "pokemon-rogue-battle", - "version": "1.3.0", + "version": "1.4.0", "hasInstallScript": true, "dependencies": { "@material/material-color-utilities": "^0.2.7", diff --git a/package.json b/package.json index a8641bb0b98..fd756fd3937 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "pokemon-rogue-battle", "private": true, - "version": "1.3.0", + "version": "1.4.0", "type": "module", "scripts": { "start": "vite", From 1953e8dbe9a4003bd83c3c73ccaff983c7ea4b89 Mon Sep 17 00:00:00 2001 From: AJ Fontaine <36677462+Fontbane@users.noreply.github.com> Date: Fri, 20 Dec 2024 17:10:23 -0500 Subject: [PATCH 061/119] [Balance] Check previous level moves for redundancy when spawning TMs (#4996) --- src/modifier/modifier-type.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/modifier/modifier-type.ts b/src/modifier/modifier-type.ts index 57b3ced1813..540af8a0b41 100644 --- a/src/modifier/modifier-type.ts +++ b/src/modifier/modifier-type.ts @@ -1093,7 +1093,10 @@ class TmModifierTypeGenerator extends ModifierTypeGenerator { if (pregenArgs && (pregenArgs.length === 1) && (pregenArgs[0] in Moves)) { return new TmModifierType(pregenArgs[0] as Moves); } - const partyMemberCompatibleTms = party.map(p => (p as PlayerPokemon).compatibleTms.filter(tm => !p.moveset.find(m => m?.moveId === tm))); + const partyMemberCompatibleTms = party.map(p => { + const previousLevelMoves = p.getLearnableLevelMoves(); + return (p as PlayerPokemon).compatibleTms.filter(tm => !p.moveset.find(m => m?.moveId === tm) && !previousLevelMoves.find(lm=>lm === tm)); + }); const tierUniqueCompatibleTms = partyMemberCompatibleTms.flat().filter(tm => tmPoolTiers[tm] === tier).filter(tm => !allMoves[tm].name.endsWith(" (N)")).filter((tm, i, array) => array.indexOf(tm) === i); if (!tierUniqueCompatibleTms.length) { return null; From bbb6b46801245072d7674db479c89698826ee677 Mon Sep 17 00:00:00 2001 From: AJ Fontaine <36677462+Fontbane@users.noreply.github.com> Date: Fri, 20 Dec 2024 17:10:38 -0500 Subject: [PATCH 062/119] [Balance] Change a few early gym teams (#4998) * Change gyms accessible before wave 30 * Prevent wave 20 gym leader from evolving * Check game mode for wave 20 trainer evo ban * Add Whitney Girafarig Crasher Wake Magikarp --- src/data/trainer-config.ts | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/data/trainer-config.ts b/src/data/trainer-config.ts index d99ca601bdf..53174e81795 100644 --- a/src/data/trainer-config.ts +++ b/src/data/trainer-config.ts @@ -1170,6 +1170,9 @@ function getGymLeaderPartyTemplate(scene: BattleScene) { export function getRandomPartyMemberFunc(speciesPool: Species[], trainerSlot: TrainerSlot = TrainerSlot.TRAINER, ignoreEvolution: boolean = false, postProcess?: (enemyPokemon: EnemyPokemon) => void) { return (scene: BattleScene, level: number, strength: PartyMemberStrength) => { let species = Utils.randSeedItem(speciesPool); + if (scene.gameMode.isClassic && scene.currentBattle.waveIndex === 20) { + ignoreEvolution = true; + } if (!ignoreEvolution) { species = getPokemonSpecies(species).getTrainerSpeciesForLevel(level, true, strength, scene.currentBattle.waveIndex); } @@ -1229,7 +1232,7 @@ export const signatureSpecies: SignatureSpecies = { GIOVANNI: [ Species.SANDILE, Species.MURKROW, Species.NIDORAN_M, Species.NIDORAN_F ], FALKNER: [ Species.PIDGEY, Species.HOOTHOOT, Species.DODUO ], BUGSY: [ Species.SCYTHER, Species.HERACROSS, Species.SHUCKLE, Species.PINSIR ], - WHITNEY: [ Species.GIRAFARIG, Species.MILTANK ], + WHITNEY: [ Species.JIGGLYPUFF, Species.MILTANK, Species.AIPOM, Species.GIRAFARIG ], MORTY: [ Species.GASTLY, Species.MISDREAVUS, Species.SABLEYE ], CHUCK: [ Species.POLIWRATH, Species.MANKEY ], JASMINE: [ Species.MAGNEMITE, Species.STEELIX ], @@ -1239,7 +1242,7 @@ export const signatureSpecies: SignatureSpecies = { BRAWLY: [ Species.MACHOP, Species.MAKUHITA ], WATTSON: [ Species.MAGNEMITE, Species.VOLTORB, Species.ELECTRIKE ], FLANNERY: [ Species.SLUGMA, Species.TORKOAL, Species.NUMEL ], - NORMAN: [ Species.SLAKOTH, Species.SPINDA, Species.CHANSEY, Species.KANGASKHAN ], + NORMAN: [ Species.SLAKOTH, Species.SPINDA, Species.ZIGZAGOON, Species.KECLEON ], WINONA: [ Species.SWABLU, Species.WINGULL, Species.TROPIUS, Species.SKARMORY ], TATE: [ Species.SOLROCK, Species.NATU, Species.CHIMECHO, Species.GALLADE ], LIZA: [ Species.LUNATONE, Species.SPOINK, Species.BALTOY, Species.GARDEVOIR ], @@ -1247,16 +1250,16 @@ export const signatureSpecies: SignatureSpecies = { ROARK: [ Species.CRANIDOS, Species.LARVITAR, Species.GEODUDE ], GARDENIA: [ Species.ROSELIA, Species.TANGELA, Species.TURTWIG ], MAYLENE: [ Species.LUCARIO, Species.MEDITITE, Species.CHIMCHAR ], - CRASHER_WAKE: [ Species.BUIZEL, Species.MAGIKARP, Species.PIPLUP ], + CRASHER_WAKE: [ Species.BUIZEL, Species.WOOPER, Species.PIPLUP, Species.MAGIKARP ], FANTINA: [ Species.MISDREAVUS, Species.DRIFLOON, Species.SPIRITOMB ], BYRON: [ Species.SHIELDON, Species.BRONZOR, Species.AGGRON ], CANDICE: [ Species.SNEASEL, Species.SNOVER, Species.SNORUNT ], VOLKNER: [ Species.SHINX, Species.CHINCHOU, Species.ROTOM ], - CILAN: [ Species.PANSAGE, Species.COTTONEE, Species.PETILIL ], - CHILI: [ Species.PANSEAR, Species.DARUMAKA, Species.HEATMOR ], - CRESS: [ Species.PANPOUR, Species.BASCULIN, Species.TYMPOLE ], - CHEREN: [ Species.LILLIPUP, Species.MINCCINO, Species.PATRAT ], - LENORA: [ Species.KANGASKHAN, Species.DEERLING, Species.AUDINO ], + CILAN: [ Species.PANSAGE, Species.FOONGUS, Species.PETILIL ], + CHILI: [ Species.PANSEAR, Species.DARUMAKA, Species.NUMEL ], + CRESS: [ Species.PANPOUR, Species.TYMPOLE, Species.SLOWPOKE ], + CHEREN: [ Species.LILLIPUP, Species.MINCCINO, Species.PIDOVE ], + LENORA: [ Species.PATRAT, Species.DEERLING, Species.AUDINO ], ROXIE: [ Species.VENIPEDE, Species.TRUBBISH, Species.SKORUPI ], BURGH: [ Species.SEWADDLE, Species.SHELMET, Species.KARRABLAST ], ELESA: [ Species.EMOLGA, Species.BLITZLE, Species.JOLTIK ], @@ -1289,7 +1292,7 @@ export const signatureSpecies: SignatureSpecies = { BRASSIUS: [ Species.SMOLIV, Species.SHROOMISH, Species.ODDISH ], IONO: [ Species.TADBULB, Species.WATTREL, Species.VOLTORB ], KOFU: [ Species.VELUZA, Species.WIGLETT, Species.WINGULL ], - LARRY: [ Species.STARLY, Species.DUNSPARCE, Species.KOMALA ], + LARRY: [ Species.STARLY, Species.DUNSPARCE, Species.LECHONK, Species.KOMALA ], RYME: [ Species.GREAVARD, Species.SHUPPET, Species.MIMIKYU ], TULIP: [ Species.GIRAFARIG, Species.FLITTLE, Species.RALTS ], GRUSHA: [ Species.CETODDLE, Species.ALOLA_VULPIX, Species.CUBCHOO ], From e9d97db11bac59b5188d7b91c720dc4a6200ad00 Mon Sep 17 00:00:00 2001 From: damocleas Date: Fri, 20 Dec 2024 17:11:06 -0500 Subject: [PATCH 063/119] Winter Holiday Event (#5015) * Update trainer-victory-phase.ts * Update starters.ts for event * Update timed-event-manager.ts * Event stuff * Cleaning up * Winter Holiday 2024 Banners * Update timed-event-manager.ts * Fix event banner * Update trainer-config.ts * FoF, BBound, weather changes * Fix German Banner * Add Iron Bundle to event encounters * Update delibirdy-encounter.test.ts * Update src/data/weather.ts Co-authored-by: AJ Fontaine <36677462+Fontbane@users.noreply.github.com> --------- Co-authored-by: AJ Fontaine Co-authored-by: Lugiad <2070109+Adri1@users.noreply.github.com> Co-authored-by: AJ Fontaine <36677462+Fontbane@users.noreply.github.com> --- .../events/winter_holidays2024-event-de.png | Bin 0 -> 34954 bytes .../events/winter_holidays2024-event-en.png | Bin 0 -> 33277 bytes .../winter_holidays2024-event-es-ES.png | Bin 0 -> 34044 bytes .../events/winter_holidays2024-event-fr.png | Bin 0 -> 33435 bytes .../events/winter_holidays2024-event-it.png | Bin 0 -> 33346 bytes .../events/winter_holidays2024-event-ja.png | Bin 0 -> 38333 bytes .../events/winter_holidays2024-event-ko.png | Bin 0 -> 35510 bytes .../winter_holidays2024-event-pt-BR.png | Bin 0 -> 33017 bytes .../winter_holidays2024-event-zh-CN.png | Bin 0 -> 38505 bytes src/data/balance/starters.ts | 2 +- .../encounters/berries-abound-encounter.ts | 12 ++++- .../encounters/delibirdy-encounter.ts | 31 +++++++++++- .../encounters/fight-or-flight-encounter.ts | 12 ++++- .../encounters/uncommon-breed-encounter.ts | 12 ++++- .../mystery-encounters/mystery-encounters.ts | 8 +-- src/data/trainer-config.ts | 2 +- src/data/weather.ts | 6 ++- src/loading-scene.ts | 4 +- src/phases/trainer-victory-phase.ts | 2 +- .../encounters/delibirdy-encounter.test.ts | 2 +- src/timed-event-manager.ts | 47 +++++++++++++++--- 21 files changed, 115 insertions(+), 25 deletions(-) create mode 100644 public/images/events/winter_holidays2024-event-de.png create mode 100644 public/images/events/winter_holidays2024-event-en.png create mode 100644 public/images/events/winter_holidays2024-event-es-ES.png create mode 100644 public/images/events/winter_holidays2024-event-fr.png create mode 100644 public/images/events/winter_holidays2024-event-it.png create mode 100644 public/images/events/winter_holidays2024-event-ja.png create mode 100644 public/images/events/winter_holidays2024-event-ko.png create mode 100644 public/images/events/winter_holidays2024-event-pt-BR.png create mode 100644 public/images/events/winter_holidays2024-event-zh-CN.png diff --git a/public/images/events/winter_holidays2024-event-de.png b/public/images/events/winter_holidays2024-event-de.png new file mode 100644 index 0000000000000000000000000000000000000000..1c2e10086f2bf9679cf4fecdfd700b876a2a315f GIT binary patch literal 34954 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 literal 0 HcmV?d00001 diff --git a/public/images/events/winter_holidays2024-event-fr.png b/public/images/events/winter_holidays2024-event-fr.png new file mode 100644 index 0000000000000000000000000000000000000000..278f5f2afd46ada784af328232ff441f19f1bdab GIT binary patch literal 33435 zcmcG#1z42b);E6BrGNs`A<~F22|sXo(Ae_Vo(>Sd*+rd7FPFsom{V; z1tg?>UCp5mR-Q~2RyKCdlFYmH&CE=8mXgf+Lh5|#u5wnkcFO+lRyzI~x=?=ysHi2g zv=ozsuNazvla;4AldqGbvxk_kB=ax6V(84?zeqeCB$@AD31l)**J6@$akpX; zx+ly71qt#qiHP0<3G<2a3*Keo=L3oG@`><*1bFyBVtm440-{WRKFnxo?v~bK5P8Kv zve0Le%(kAMu425rK0ZG8d<5>fxZCi8L`6k;`S^MH`FYS3JRW||p60$h&K`IE;vjG3 z0d==?^|W(wX1d~NZsFqPDanl1^mh}ST>ob4?D5A;XoK zFL%dZ!Y!e^R*qIqR?eOtXj;(Uw63-;o-Q7?F8_x0-?#sZ0JLe<)&G|9FLiNp`dfsD zr-C=S8Gj7&FR49r{amehAyytPUhYsU1#h&Pcm8UPhbP49ANKrjJdP&+`(aNz>woj? z)t&#+C@WvPe?xk8=WkM1F*$cDb59p{T^AR}zp$hAmlc`hTJVS5 zO5WVlN|KqMk6(}n1mY3k)8z+=fke=K+Cr`31y;1jPjS z{tGD@!wa`umoH12nkvV@CXPA3i6nPErigm0f`8Shzj!y z2wMF0yu1t4>k4XD&;Ry1OBX1b$3LW634!^9tU-c2)*>SOJVK&^U>-0?z=8*AEi7Qg zCn_W&C?NV5H%)gtwBwsQ{xjDrtt`GocjfsE0XZX+ez zwes~;GxxJ{_xKZaWX)~<968$kQ?LG_(J*(q!kjM?H

    =pz5)hzAxueTE{DE|O&b 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%0A?$0`b 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 bIRXh|K2%ZXR|FCW_*0ZseOLL`H0b{Wij#z) literal 0 HcmV?d00001 diff --git a/public/images/events/winter_holidays2024-event-pt-BR.png b/public/images/events/winter_holidays2024-event-pt-BR.png new file mode 100644 index 0000000000000000000000000000000000000000..1f003be598689c50e24898b5a9d7a5ff534c1515 GIT binary patch literal 33017 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 G-uxf15W@xl literal 0 HcmV?d00001 diff --git a/public/images/events/winter_holidays2024-event-zh-CN.png b/public/images/events/winter_holidays2024-event-zh-CN.png new file mode 100644 index 0000000000000000000000000000000000000000..03a9f57c6f283325a53ea93f64f7704d7d292639 GIT binary patch literal 38505 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 { + const event_buff = scene.eventManager.activeEvent()?.delibirdyBuff ?? []; + if (event_buff.length > 0) { + const candidates = event_buff.filter((c => { + const mtype = generateModifierType(scene, modifierTypes[c]); + const existingCharm = scene.findModifier(m => m.type.id === mtype?.id); + return !(existingCharm && existingCharm.getStackCount() >= existingCharm.getMaxStackCount(scene)); + })); + if (candidates.length > 0) { + scene.unshiftPhase(new ModifierRewardPhase(scene, modifierTypes[randSeedItem(candidates)])); + } else { + // At max stacks, give a Voucher instead + scene.unshiftPhase(new ModifierRewardPhase(scene, modifierTypes.VOUCHER)); + } + } +}; /** * Delibird-y encounter. @@ -42,7 +60,8 @@ const DELIBIRDY_MONEY_PRICE_MULTIPLIER = 2; */ export const DelibirdyEncounter: MysteryEncounter = MysteryEncounterBuilder.withEncounterType(MysteryEncounterType.DELIBIRDY) - .withEncounterTier(MysteryEncounterTier.GREAT) + .withMaxAllowedEncounters(4) + .withEncounterTier(MysteryEncounterTier.COMMON) //Change back after event! .withSceneWaveRangeRequirement(...CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES) .withSceneRequirement(new MoneyRequirement(0, DELIBIRDY_MONEY_PRICE_MULTIPLIER)) // Must have enough money for it to spawn at the very least .withPrimaryPokemonRequirement( @@ -136,8 +155,10 @@ export const DelibirdyEncounter: MysteryEncounter = await applyModifierTypeToPlayerPokemon(scene, scene.getPlayerPokemon()!, shellBell); scene.playSound("item_fanfare"); await showEncounterText(scene, i18next.t("battle:rewardGain", { modifierName: shellBell.name }), null, undefined, true); + doEventReward(scene); } else { scene.unshiftPhase(new ModifierRewardPhase(scene, modifierTypes.AMULET_COIN)); + doEventReward(scene); } leaveEncounterWithoutBattle(scene, true); @@ -211,8 +232,10 @@ export const DelibirdyEncounter: MysteryEncounter = await applyModifierTypeToPlayerPokemon(scene, scene.getPlayerPokemon()!, shellBell); scene.playSound("item_fanfare"); await showEncounterText(scene, i18next.t("battle:rewardGain", { modifierName: shellBell.name }), null, undefined, true); + doEventReward(scene); } else { scene.unshiftPhase(new ModifierRewardPhase(scene, modifierTypes.CANDY_JAR)); + doEventReward(scene); } } else { // Check if the player has max stacks of that Berry Pouch already @@ -224,8 +247,10 @@ export const DelibirdyEncounter: MysteryEncounter = await applyModifierTypeToPlayerPokemon(scene, scene.getPlayerPokemon()!, shellBell); scene.playSound("item_fanfare"); await showEncounterText(scene, i18next.t("battle:rewardGain", { modifierName: shellBell.name }), null, undefined, true); + doEventReward(scene); } else { scene.unshiftPhase(new ModifierRewardPhase(scene, modifierTypes.BERRY_POUCH)); + doEventReward(scene); } } @@ -300,8 +325,10 @@ export const DelibirdyEncounter: MysteryEncounter = await applyModifierTypeToPlayerPokemon(scene, scene.getPlayerParty()[0], shellBell); scene.playSound("item_fanfare"); await showEncounterText(scene, i18next.t("battle:rewardGain", { modifierName: shellBell.name }), null, undefined, true); + doEventReward(scene); } else { scene.unshiftPhase(new ModifierRewardPhase(scene, modifierTypes.HEALING_CHARM)); + doEventReward(scene); } chosenPokemon.loseHeldItem(modifier, false); diff --git a/src/data/mystery-encounters/encounters/fight-or-flight-encounter.ts b/src/data/mystery-encounters/encounters/fight-or-flight-encounter.ts index 3533e10df29..07e7a15c65c 100644 --- a/src/data/mystery-encounters/encounters/fight-or-flight-encounter.ts +++ b/src/data/mystery-encounters/encounters/fight-or-flight-encounter.ts @@ -26,9 +26,10 @@ import { getEncounterPokemonLevelForWave, getSpriteKeysFromPokemon, STANDARD_ENC import PokemonData from "#app/system/pokemon-data"; import { BattlerTagType } from "#enums/battler-tag-type"; import { queueEncounterMessage } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; -import { randSeedInt } from "#app/utils"; +import { randSeedInt, randSeedItem } from "#app/utils"; import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/game-mode"; +import PokemonSpecies, { allSpecies } from "#app/data/pokemon-species"; /** the i18n namespace for the encounter */ const namespace = "mysteryEncounters/fightOrFlight"; @@ -56,7 +57,14 @@ export const FightOrFlightEncounter: MysteryEncounter = // Calculate boss mon const level = getEncounterPokemonLevelForWave(scene, STANDARD_ENCOUNTER_BOOSTED_LEVEL_MODIFIER); - const bossSpecies = scene.arena.randomSpecies(scene.currentBattle.waveIndex, level, 0, getPartyLuckValue(scene.getPlayerParty()), true); + let bossSpecies: PokemonSpecies; + if (scene.eventManager.isEventActive() && scene.eventManager.activeEvent()?.uncommonBreedEncounters && randSeedInt(2) === 1) { + const eventEncounter = randSeedItem(scene.eventManager.activeEvent()!.uncommonBreedEncounters!); + bossSpecies = allSpecies[eventEncounter.species]; + bossSpecies.speciesId = bossSpecies.getSpeciesForLevel(level, eventEncounter.allowEvolution); + } else { + bossSpecies = scene.arena.randomSpecies(scene.currentBattle.waveIndex, level, 0, getPartyLuckValue(scene.getPlayerParty()), true); + } const bossPokemon = new EnemyPokemon(scene, bossSpecies, level, TrainerSlot.NONE, true); encounter.setDialogueToken("enemyPokemon", bossPokemon.getNameToRender()); const config: EnemyPartyConfig = { diff --git a/src/data/mystery-encounters/encounters/uncommon-breed-encounter.ts b/src/data/mystery-encounters/encounters/uncommon-breed-encounter.ts index d3679825ac8..15f7bce8945 100644 --- a/src/data/mystery-encounters/encounters/uncommon-breed-encounter.ts +++ b/src/data/mystery-encounters/encounters/uncommon-breed-encounter.ts @@ -12,7 +12,7 @@ import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode import { TrainerSlot } from "#app/data/trainer-config"; import { catchPokemon, getHighestLevelPlayerPokemon, getSpriteKeysFromPokemon } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; import PokemonData from "#app/system/pokemon-data"; -import { isNullOrUndefined, randSeedInt } from "#app/utils"; +import { isNullOrUndefined, randSeedInt, randSeedItem } from "#app/utils"; import { Moves } from "#enums/moves"; import { BattlerIndex } from "#app/battle"; import { SelfStatusMove } from "#app/data/move"; @@ -23,6 +23,7 @@ import { BerryModifier } from "#app/modifier/modifier"; import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; import { Stat } from "#enums/stat"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/game-mode"; +import PokemonSpecies, { allSpecies } from "#app/data/pokemon-species"; /** the i18n namespace for the encounter */ const namespace = "mysteryEncounters/uncommonBreed"; @@ -51,7 +52,14 @@ export const UncommonBreedEncounter: MysteryEncounter = // Calculate boss mon // Level equal to 2 below highest party member const level = getHighestLevelPlayerPokemon(scene, false, true).level - 2; - const species = scene.arena.randomSpecies(scene.currentBattle.waveIndex, level, 0, getPartyLuckValue(scene.getPlayerParty()), true); + let species: PokemonSpecies; + if (scene.eventManager.isEventActive() && scene.eventManager.activeEvent()?.uncommonBreedEncounters && randSeedInt(2) === 1) { + const eventEncounter = randSeedItem(scene.eventManager.activeEvent()!.uncommonBreedEncounters!); + species = allSpecies[eventEncounter.species]; + species.speciesId = species.getSpeciesForLevel(level, eventEncounter.allowEvolution); + } else { + species = scene.arena.randomSpecies(scene.currentBattle.waveIndex, level, 0, getPartyLuckValue(scene.getPlayerParty()), true); + } const pokemon = new EnemyPokemon(scene, species, level, TrainerSlot.NONE, true); // Pokemon will always have one of its egg moves in its moveset diff --git a/src/data/mystery-encounters/mystery-encounters.ts b/src/data/mystery-encounters/mystery-encounters.ts index 8c1c3bf6de4..8a747cd4cd4 100644 --- a/src/data/mystery-encounters/mystery-encounters.ts +++ b/src/data/mystery-encounters/mystery-encounters.ts @@ -177,7 +177,7 @@ export const allMysteryEncounters: { [encounterType: number]: MysteryEncounter } const extremeBiomeEncounters: MysteryEncounterType[] = []; const nonExtremeBiomeEncounters: MysteryEncounterType[] = [ - MysteryEncounterType.FIELD_TRIP, + // MysteryEncounterType.FIELD_TRIP, Disabled for holiday event MysteryEncounterType.DANCING_LESSONS, // Is also in BADLANDS, DESERT, VOLCANO, WASTELAND, ABYSS ]; @@ -185,14 +185,14 @@ const humanTransitableBiomeEncounters: MysteryEncounterType[] = [ MysteryEncounterType.MYSTERIOUS_CHALLENGERS, MysteryEncounterType.SHADY_VITAMIN_DEALER, MysteryEncounterType.THE_POKEMON_SALESMAN, - MysteryEncounterType.AN_OFFER_YOU_CANT_REFUSE, + // MysteryEncounterType.AN_OFFER_YOU_CANT_REFUSE, Disabled for holiday event MysteryEncounterType.THE_WINSTRATE_CHALLENGE, MysteryEncounterType.THE_EXPERT_POKEMON_BREEDER ]; const civilizationBiomeEncounters: MysteryEncounterType[] = [ - MysteryEncounterType.DEPARTMENT_STORE_SALE, - MysteryEncounterType.PART_TIMER, + // MysteryEncounterType.DEPARTMENT_STORE_SALE, Disabled for holiday event + // MysteryEncounterType.PART_TIMER, Disabled for holiday event MysteryEncounterType.FUN_AND_GAMES, MysteryEncounterType.GLOBAL_TRADE_SYSTEM ]; diff --git a/src/data/trainer-config.ts b/src/data/trainer-config.ts index 53174e81795..707f6c5fdb9 100644 --- a/src/data/trainer-config.ts +++ b/src/data/trainer-config.ts @@ -1855,7 +1855,7 @@ export const trainerConfigs: TrainerConfigs = { [TrainerType.RIVAL]: new TrainerConfig((t = TrainerType.RIVAL)).setName("Finn").setHasGenders("Ivy").setHasCharSprite().setTitle("Rival").setStaticParty().setEncounterBgm(TrainerType.RIVAL).setBattleBgm("battle_rival").setMixedBattleBgm("battle_rival").setPartyTemplates(trainerPartyTemplates.RIVAL) .setModifierRewardFuncs(() => modifierTypes.SUPER_EXP_CHARM, () => modifierTypes.EXP_SHARE) - .setEventModifierRewardFuncs(() => modifierTypes.SHINY_CHARM, () => modifierTypes.ABILITY_CHARM) + .setEventModifierRewardFuncs(() => modifierTypes.SHINY_CHARM, () => modifierTypes.ABILITY_CHARM, () => modifierTypes.CATCHING_CHARM) .setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.BULBASAUR, Species.CHARMANDER, Species.SQUIRTLE, Species.CHIKORITA, Species.CYNDAQUIL, Species.TOTODILE, Species.TREECKO, Species.TORCHIC, Species.MUDKIP, Species.TURTWIG, Species.CHIMCHAR, Species.PIPLUP, Species.SNIVY, Species.TEPIG, Species.OSHAWOTT, Species.CHESPIN, Species.FENNEKIN, Species.FROAKIE, Species.ROWLET, Species.LITTEN, Species.POPPLIO, Species.GROOKEY, Species.SCORBUNNY, Species.SOBBLE, Species.SPRIGATITO, Species.FUECOCO, Species.QUAXLY ], TrainerSlot.TRAINER, true, (p => p.abilityIndex = 0))) .setPartyMemberFunc(1, getRandomPartyMemberFunc([ Species.PIDGEY, Species.HOOTHOOT, Species.TAILLOW, Species.STARLY, Species.PIDOVE, Species.FLETCHLING, Species.PIKIPEK, Species.ROOKIDEE, Species.WATTREL ], TrainerSlot.TRAINER, true)), diff --git a/src/data/weather.ts b/src/data/weather.ts index 0a76a015402..24434206bcd 100644 --- a/src/data/weather.ts +++ b/src/data/weather.ts @@ -242,7 +242,7 @@ export function getTerrainBlockMessage(pokemon: Pokemon, terrainType: TerrainTyp return i18next.t("terrain:defaultBlockMessage", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), terrainName: getTerrainName(terrainType) }); } -interface WeatherPoolEntry { +export interface WeatherPoolEntry { weatherType: WeatherType; weight: integer; } @@ -373,6 +373,10 @@ export function getRandomWeatherType(arena: any /* Importing from arena causes a break; } + if (arena.biomeType === Biome.TOWN && arena.scene.eventManager.isEventActive() && arena.scene.eventManager.activeEvent()?.weather?.length > 0) { + arena.scene.eventManager.activeEvent().weather.map(w => weatherPool.push(w)); + } + if (weatherPool.length > 1) { let totalWeight = 0; weatherPool.forEach(w => totalWeight += w.weight); diff --git a/src/loading-scene.ts b/src/loading-scene.ts index c49b8d5aaa9..2e9484a847d 100644 --- a/src/loading-scene.ts +++ b/src/loading-scene.ts @@ -246,9 +246,9 @@ export class LoadingScene extends SceneBase { } const availableLangs = [ "en", "de", "it", "fr", "ja", "ko", "es-ES", "pt-BR", "zh-CN" ]; if (lang && availableLangs.includes(lang)) { - this.loadImage("halloween2024-event-" + lang, "events"); + this.loadImage("winter_holidays2024-event-" + lang, "events"); } else { - this.loadImage("halloween2024-event-en", "events"); + this.loadImage("winter_holidays2024-event-en", "events"); } this.loadAtlas("statuses", ""); diff --git a/src/phases/trainer-victory-phase.ts b/src/phases/trainer-victory-phase.ts index d797e4360ac..456d548a9ba 100644 --- a/src/phases/trainer-victory-phase.ts +++ b/src/phases/trainer-victory-phase.ts @@ -39,7 +39,7 @@ export class TrainerVictoryPhase extends BattlePhase { // Validate Voucher for boss trainers if (vouchers.hasOwnProperty(TrainerType[trainerType])) { if (!this.scene.validateVoucher(vouchers[TrainerType[trainerType]]) && this.scene.currentBattle.trainer?.config.isBoss) { - this.scene.unshiftPhase(new ModifierRewardPhase(this.scene, [ modifierTypes.VOUCHER, modifierTypes.VOUCHER, modifierTypes.VOUCHER_PLUS, modifierTypes.VOUCHER_PREMIUM ][vouchers[TrainerType[trainerType]].voucherType])); + this.scene.unshiftPhase(new ModifierRewardPhase(this.scene, [ modifierTypes.VOUCHER_PLUS, modifierTypes.VOUCHER_PLUS, modifierTypes.VOUCHER_PLUS, modifierTypes.VOUCHER_PREMIUM ][vouchers[TrainerType[trainerType]].voucherType])); } } // Breeders in Space achievement diff --git a/src/test/mystery-encounter/encounters/delibirdy-encounter.test.ts b/src/test/mystery-encounter/encounters/delibirdy-encounter.test.ts index c226d60a9b4..71fb695111a 100644 --- a/src/test/mystery-encounter/encounters/delibirdy-encounter.test.ts +++ b/src/test/mystery-encounter/encounters/delibirdy-encounter.test.ts @@ -56,7 +56,7 @@ describe("Delibird-y - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.DELIBIRDY, defaultParty); expect(DelibirdyEncounter.encounterType).toBe(MysteryEncounterType.DELIBIRDY); - expect(DelibirdyEncounter.encounterTier).toBe(MysteryEncounterTier.GREAT); + expect(DelibirdyEncounter.encounterTier).toBe(MysteryEncounterTier.COMMON); expect(DelibirdyEncounter.dialogue).toBeDefined(); expect(DelibirdyEncounter.dialogue.intro).toStrictEqual([{ text: `${namespace}:intro` }]); expect(DelibirdyEncounter.dialogue.outro).toStrictEqual([{ text: `${namespace}:outro` }]); diff --git a/src/timed-event-manager.ts b/src/timed-event-manager.ts index 9515be7b49e..e4a376ac366 100644 --- a/src/timed-event-manager.ts +++ b/src/timed-event-manager.ts @@ -2,6 +2,9 @@ import BattleScene from "#app/battle-scene"; import { TextStyle, addTextObject } from "#app/ui/text"; import { nil } from "#app/utils"; import i18next from "i18next"; +import { Species } from "#enums/species"; +import { WeatherPoolEntry } from "#app/data/weather"; +import { WeatherType } from "#enums/weather-type"; export enum EventType { SHINY, @@ -16,6 +19,11 @@ interface EventBanner { availableLangs?: string[]; } +interface EventEncounter { + species: Species; + allowEvolution?: boolean; +} + interface TimedEvent extends EventBanner { name: string; eventType: EventType; @@ -23,19 +31,46 @@ interface TimedEvent extends EventBanner { friendshipMultiplier?: number; startDate: Date; endDate: Date; + uncommonBreedEncounters?: EventEncounter[]; + delibirdyBuff?: string[]; + weather?: WeatherPoolEntry[]; } const timedEvents: TimedEvent[] = [ { - name: "Halloween Update", + name: "Winter Holiday Update", eventType: EventType.SHINY, shinyMultiplier: 2, - friendshipMultiplier: 2, - startDate: new Date(Date.UTC(2024, 9, 27, 0)), - endDate: new Date(Date.UTC(2024, 10, 4, 0)), - bannerKey: "halloween2024-event-", + friendshipMultiplier: 1, + startDate: new Date(Date.UTC(2024, 11, 21, 0)), + endDate: new Date(Date.UTC(2025, 0, 4, 0)), + bannerKey: "winter_holidays2024-event-", scale: 0.21, - availableLangs: [ "en", "de", "it", "fr", "ja", "ko", "es-ES", "pt-BR", "zh-CN" ] + availableLangs: [ "en", "de", "it", "fr", "ja", "ko", "es-ES", "pt-BR", "zh-CN" ], + uncommonBreedEncounters: [ + { species: Species.GIMMIGHOUL }, + { species: Species.DELIBIRD }, + { species: Species.STANTLER }, + { species: Species.CYNDAQUIL, allowEvolution: true }, + { species: Species.PIPLUP, allowEvolution: true }, + { species: Species.CHESPIN, allowEvolution: true }, + { species: Species.BALTOY, allowEvolution: true }, + { species: Species.SNOVER, allowEvolution: true }, + { species: Species.CHINGLING, allowEvolution: true }, + { species: Species.LITWICK, allowEvolution: true }, + { species: Species.CUBCHOO, allowEvolution: true }, + { species: Species.SWIRLIX, allowEvolution: true }, + { species: Species.AMAURA, allowEvolution: true }, + { species: Species.MUDBRAY, allowEvolution: true }, + { species: Species.ROLYCOLY, allowEvolution: true }, + { species: Species.MILCERY, allowEvolution: true }, + { species: Species.SMOLIV, allowEvolution: true }, + { species: Species.ALOLA_VULPIX, allowEvolution: true }, + { species: Species.GALAR_DARUMAKA, allowEvolution: true }, + { species: Species.IRON_BUNDLE } + ], + delibirdyBuff: [ "CATCHING_CHARM", "SHINY_CHARM", "ABILITY_CHARM", "EXP_CHARM", "SUPER_EXP_CHARM", "HEALING_CHARM" ], + weather: [{ weatherType: WeatherType.SNOW, weight: 1 }] } ]; From 82dad5568c657a4a468b8eb6b062b58725a4143b Mon Sep 17 00:00:00 2001 From: AJ Fontaine <36677462+Fontbane@users.noreply.github.com> Date: Fri, 20 Dec 2024 17:14:16 -0500 Subject: [PATCH 064/119] [Balance] Fix Annihilape Tera Blast TM Compatibility (#5016) --- src/data/balance/tms.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/data/balance/tms.ts b/src/data/balance/tms.ts index 4882cf4f652..da900768987 100644 --- a/src/data/balance/tms.ts +++ b/src/data/balance/tms.ts @@ -67148,6 +67148,7 @@ export const tmSpecies: TmSpecies = { Species.VELUZA, Species.DONDOZO, Species.TATSUGIRI, + Species.ANNIHILAPE, Species.CLODSIRE, Species.FARIGIRAF, Species.DUDUNSPARCE, From e75fa0d16d1775798a5121cae13ec611652a0112 Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Fri, 20 Dec 2024 14:27:49 -0800 Subject: [PATCH 065/119] Merge main into beta to fix git history (#5020) Co-authored-by: Tempoanon <163687446+Tempo-anon@users.noreply.github.com> From 6392ee857c7f20be67bd6fe9597b85c06740f362 Mon Sep 17 00:00:00 2001 From: AJ Fontaine <36677462+Fontbane@users.noreply.github.com> Date: Fri, 20 Dec 2024 18:53:42 -0500 Subject: [PATCH 066/119] [Balance] Allow event Stantler to evolve (#5021) --- src/timed-event-manager.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/timed-event-manager.ts b/src/timed-event-manager.ts index e4a376ac366..926da91b352 100644 --- a/src/timed-event-manager.ts +++ b/src/timed-event-manager.ts @@ -50,7 +50,7 @@ const timedEvents: TimedEvent[] = [ uncommonBreedEncounters: [ { species: Species.GIMMIGHOUL }, { species: Species.DELIBIRD }, - { species: Species.STANTLER }, + { species: Species.STANTLER, allowEvolution: true }, { species: Species.CYNDAQUIL, allowEvolution: true }, { species: Species.PIPLUP, allowEvolution: true }, { species: Species.CHESPIN, allowEvolution: true }, From 8457fb96fe71b4141536d13841f4e8799356df6a Mon Sep 17 00:00:00 2001 From: AJ Fontaine <36677462+Fontbane@users.noreply.github.com> Date: Fri, 20 Dec 2024 21:41:07 -0500 Subject: [PATCH 067/119] [Hotfix] Fix off-by-one error for event encounters (#5022) * Fix off-by-one error for event encounters * Increment version to 1.4.1 --------- Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> --- package-lock.json | 4 ++-- package.json | 2 +- .../encounters/berries-abound-encounter.ts | 6 +++--- .../encounters/fight-or-flight-encounter.ts | 6 +++--- .../encounters/uncommon-breed-encounter.ts | 6 +++--- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index ca6041e7048..0ef89a8831f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "pokemon-rogue-battle", - "version": "1.4.0", + "version": "1.4.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "pokemon-rogue-battle", - "version": "1.4.0", + "version": "1.4.1", "hasInstallScript": true, "dependencies": { "@material/material-color-utilities": "^0.2.7", diff --git a/package.json b/package.json index fd756fd3937..980bcd2034e 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "pokemon-rogue-battle", "private": true, - "version": "1.4.0", + "version": "1.4.1", "type": "module", "scripts": { "start": "vite", diff --git a/src/data/mystery-encounters/encounters/berries-abound-encounter.ts b/src/data/mystery-encounters/encounters/berries-abound-encounter.ts index 090653e7ca9..eca358e51f3 100644 --- a/src/data/mystery-encounters/encounters/berries-abound-encounter.ts +++ b/src/data/mystery-encounters/encounters/berries-abound-encounter.ts @@ -31,7 +31,7 @@ import { BerryType } from "#enums/berry-type"; import { PERMANENT_STATS, Stat } from "#enums/stat"; import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/game-mode"; -import PokemonSpecies, { allSpecies } from "#app/data/pokemon-species"; +import PokemonSpecies, { getPokemonSpecies } from "#app/data/pokemon-species"; /** the i18n namespace for the encounter */ const namespace = "mysteryEncounters/berriesAbound"; @@ -62,8 +62,8 @@ export const BerriesAboundEncounter: MysteryEncounter = let bossSpecies: PokemonSpecies; if (scene.eventManager.isEventActive() && scene.eventManager.activeEvent()?.uncommonBreedEncounters && randSeedInt(2) === 1) { const eventEncounter = randSeedItem(scene.eventManager.activeEvent()!.uncommonBreedEncounters!); - bossSpecies = allSpecies[eventEncounter.species]; - bossSpecies.speciesId = bossSpecies.getSpeciesForLevel(level, eventEncounter.allowEvolution); + const levelSpecies = getPokemonSpecies(eventEncounter.species).getWildSpeciesForLevel(level, eventEncounter.allowEvolution ?? false, true, scene.gameMode); + bossSpecies = getPokemonSpecies( levelSpecies ); } else { bossSpecies = scene.arena.randomSpecies(scene.currentBattle.waveIndex, level, 0, getPartyLuckValue(scene.getPlayerParty()), true); } diff --git a/src/data/mystery-encounters/encounters/fight-or-flight-encounter.ts b/src/data/mystery-encounters/encounters/fight-or-flight-encounter.ts index 07e7a15c65c..e238fd51e66 100644 --- a/src/data/mystery-encounters/encounters/fight-or-flight-encounter.ts +++ b/src/data/mystery-encounters/encounters/fight-or-flight-encounter.ts @@ -29,7 +29,7 @@ import { queueEncounterMessage } from "#app/data/mystery-encounters/utils/encoun import { randSeedInt, randSeedItem } from "#app/utils"; import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/game-mode"; -import PokemonSpecies, { allSpecies } from "#app/data/pokemon-species"; +import PokemonSpecies, { getPokemonSpecies } from "#app/data/pokemon-species"; /** the i18n namespace for the encounter */ const namespace = "mysteryEncounters/fightOrFlight"; @@ -60,8 +60,8 @@ export const FightOrFlightEncounter: MysteryEncounter = let bossSpecies: PokemonSpecies; if (scene.eventManager.isEventActive() && scene.eventManager.activeEvent()?.uncommonBreedEncounters && randSeedInt(2) === 1) { const eventEncounter = randSeedItem(scene.eventManager.activeEvent()!.uncommonBreedEncounters!); - bossSpecies = allSpecies[eventEncounter.species]; - bossSpecies.speciesId = bossSpecies.getSpeciesForLevel(level, eventEncounter.allowEvolution); + const levelSpecies = getPokemonSpecies(eventEncounter.species).getWildSpeciesForLevel(level, eventEncounter.allowEvolution ?? false, true, scene.gameMode); + bossSpecies = getPokemonSpecies( levelSpecies ); } else { bossSpecies = scene.arena.randomSpecies(scene.currentBattle.waveIndex, level, 0, getPartyLuckValue(scene.getPlayerParty()), true); } diff --git a/src/data/mystery-encounters/encounters/uncommon-breed-encounter.ts b/src/data/mystery-encounters/encounters/uncommon-breed-encounter.ts index 15f7bce8945..ebea34253d1 100644 --- a/src/data/mystery-encounters/encounters/uncommon-breed-encounter.ts +++ b/src/data/mystery-encounters/encounters/uncommon-breed-encounter.ts @@ -23,7 +23,7 @@ import { BerryModifier } from "#app/modifier/modifier"; import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; import { Stat } from "#enums/stat"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/game-mode"; -import PokemonSpecies, { allSpecies } from "#app/data/pokemon-species"; +import PokemonSpecies, { getPokemonSpecies } from "#app/data/pokemon-species"; /** the i18n namespace for the encounter */ const namespace = "mysteryEncounters/uncommonBreed"; @@ -55,8 +55,8 @@ export const UncommonBreedEncounter: MysteryEncounter = let species: PokemonSpecies; if (scene.eventManager.isEventActive() && scene.eventManager.activeEvent()?.uncommonBreedEncounters && randSeedInt(2) === 1) { const eventEncounter = randSeedItem(scene.eventManager.activeEvent()!.uncommonBreedEncounters!); - species = allSpecies[eventEncounter.species]; - species.speciesId = species.getSpeciesForLevel(level, eventEncounter.allowEvolution); + const levelSpecies = getPokemonSpecies(eventEncounter.species).getWildSpeciesForLevel(level, eventEncounter.allowEvolution ?? false, true, scene.gameMode); + species = getPokemonSpecies( levelSpecies ); } else { species = scene.arena.randomSpecies(scene.currentBattle.waveIndex, level, 0, getPartyLuckValue(scene.getPlayerParty()), true); } From 8f884a7ef04411098f081185703c91746d256d4e Mon Sep 17 00:00:00 2001 From: Asuka Kuwahara <42548220+asukakuwahara@users.noreply.github.com> Date: Sun, 29 Dec 2024 21:09:11 -0500 Subject: [PATCH 068/119] [BUG] fix #5038 update shedinja's gender to genderless on evolution (#5039) * update shedinja's gender to genderless * update unit test --- src/field/pokemon.ts | 1 + src/test/evolution.test.ts | 3 +++ 2 files changed, 4 insertions(+) diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index fcfc2ff7536..30856ab416a 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -4484,6 +4484,7 @@ export class PlayerPokemon extends Pokemon { newPokemon.moveset = this.moveset.slice(); newPokemon.moveset = this.copyMoveset(); newPokemon.luck = this.luck; + newPokemon.gender = Gender.GENDERLESS; newPokemon.metLevel = this.metLevel; newPokemon.metBiome = this.metBiome; newPokemon.metSpecies = this.metSpecies; diff --git a/src/test/evolution.test.ts b/src/test/evolution.test.ts index 3046d103cbc..10748899d59 100644 --- a/src/test/evolution.test.ts +++ b/src/test/evolution.test.ts @@ -78,12 +78,15 @@ describe("Evolution", () => { const nincada = game.scene.getPlayerPokemon()!; nincada.abilityIndex = 2; nincada.metBiome = -1; + nincada.gender = 1; nincada.evolve(pokemonEvolutions[Species.NINCADA][0], nincada.getSpeciesForm()); const ninjask = game.scene.getPlayerParty()[0]; const shedinja = game.scene.getPlayerParty()[1]; expect(ninjask.abilityIndex).toBe(2); expect(shedinja.abilityIndex).toBe(1); + expect(ninjask.gender).toBe(1); + expect(shedinja.gender).toBe(-1); // Regression test for https://github.com/pagefaultgames/pokerogue/issues/3842 expect(shedinja.metBiome).toBe(-1); }); From 6946abadb8e25f7a4e73c7bd07e0afa22741360c Mon Sep 17 00:00:00 2001 From: Wlowscha <54003515+Wlowscha@users.noreply.github.com> Date: Mon, 30 Dec 2024 16:35:45 +0100 Subject: [PATCH 069/119] [UI/UX] Add cursor memory option (#5028) * Adding a new key determining whether the command cursor resets at the beginning of each new battle. * Allowing user to toggle commandCursorReset on and off. * Changing option name to commandCursorMemory * Fixed caps in settings.ts * Moved Command_Cursor_Memory from Display settings to General settings --- src/battle-scene.ts | 1 + src/phases/command-phase.ts | 8 +++++++- src/system/settings/settings.ts | 11 +++++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/battle-scene.ts b/src/battle-scene.ts index c430a12ae3e..11950f0a47f 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -147,6 +147,7 @@ export default class BattleScene extends SceneBase { public damageNumbersMode: integer = 0; public reroll: boolean = false; public shopCursorTarget: number = ShopCursorTarget.REWARDS; + public commandCursorMemory: boolean = false; public showMovesetFlyout: boolean = true; public showArenaFlyout: boolean = true; public showTimeOfDayWidget: boolean = true; diff --git a/src/phases/command-phase.ts b/src/phases/command-phase.ts index eab76282908..fa85f2427e5 100644 --- a/src/phases/command-phase.ts +++ b/src/phases/command-phase.ts @@ -35,8 +35,14 @@ export class CommandPhase extends FieldPhase { this.scene.updateGameInfo(); const commandUiHandler = this.scene.ui.handlers[Mode.COMMAND]; + + // If one of these conditions is true, we always reset the cursor to Command.FIGHT + const cursorResetEvent = this.scene.currentBattle.battleType === BattleType.MYSTERY_ENCOUNTER || + this.scene.currentBattle.battleType === BattleType.TRAINER || + this.scene.arena.biomeType === Biome.END; + if (commandUiHandler) { - if (this.scene.currentBattle.turn === 1 || commandUiHandler.getCursor() === Command.POKEMON) { + if ((this.scene.currentBattle.turn === 1 && (!this.scene.commandCursorMemory || cursorResetEvent)) || commandUiHandler.getCursor() === Command.POKEMON) { commandUiHandler.setCursor(Command.FIGHT); } else { commandUiHandler.setCursor(commandUiHandler.getCursor()); diff --git a/src/system/settings/settings.ts b/src/system/settings/settings.ts index 64ddfdae5cf..ebdcad1c4f9 100644 --- a/src/system/settings/settings.ts +++ b/src/system/settings/settings.ts @@ -157,6 +157,7 @@ export const SettingKeys = { Move_Animations: "MOVE_ANIMATIONS", Show_Stats_on_Level_Up: "SHOW_LEVEL_UP_STATS", Shop_Cursor_Target: "SHOP_CURSOR_TARGET", + Command_Cursor_Memory: "COMMAND_CURSOR_MEMORY", Candy_Upgrade_Notification: "CANDY_UPGRADE_NOTIFICATION", Candy_Upgrade_Display: "CANDY_UPGRADE_DISPLAY", Move_Info: "MOVE_INFO", @@ -339,6 +340,13 @@ export const Setting: Array = [ default: 0, type: SettingType.GENERAL }, + { + key: SettingKeys.Command_Cursor_Memory, + label: i18next.t("settings:commandCursorMemory"), + options: OFF_ON, + default: 0, + type: SettingType.GENERAL + }, { key: SettingKeys.Enable_Retries, label: i18next.t("settings:enableRetries"), @@ -827,6 +835,9 @@ export function setSetting(scene: BattleScene, setting: string, value: integer): const selectedValue = shopCursorTargetIndexMap[value]; scene.shopCursorTarget = selectedValue; break; + case SettingKeys.Command_Cursor_Memory: + scene.commandCursorMemory = Setting[index].options[value].value === "On"; + break; case SettingKeys.EXP_Gains_Speed: scene.expGainsSpeed = value; break; From 1b6374f4697c2cdb77c30eca694acf4a43ece8e9 Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Mon, 30 Dec 2024 18:55:28 -0800 Subject: [PATCH 070/119] [UI/UX] Change label for music settings (#5053) Changes from "Consistent/Mixed" to "Gen V + PMD"/"All Gens" Update `MusicPreferences` enum * Update locales submodule --- public/locales | 2 +- src/battle-scene.ts | 2 +- src/battle.ts | 6 +++--- .../encounters/global-trade-system-encounter.ts | 2 +- src/system/settings/settings.ts | 14 +++++++------- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/public/locales b/public/locales index 6c6f0af398a..b28ba1255c8 160000 --- a/public/locales +++ b/public/locales @@ -1 +1 @@ -Subproject commit 6c6f0af398ae11f8d96c6ac064f171d927812c85 +Subproject commit b28ba1255c8db12cb07947f88635cb6be0143a15 diff --git a/src/battle-scene.ts b/src/battle-scene.ts index 11950f0a47f..327ab1cc926 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -174,7 +174,7 @@ export default class BattleScene extends SceneBase { public uiTheme: UiTheme = UiTheme.DEFAULT; public windowType: integer = 0; public experimentalSprites: boolean = false; - public musicPreference: number = MusicPreference.MIXED; + public musicPreference: number = MusicPreference.ALLGENS; public moveAnimations: boolean = true; public expGainsSpeed: ExpGainsSpeed = ExpGainsSpeed.DEFAULT; public skipSeenDialogues: boolean = false; diff --git a/src/battle.ts b/src/battle.ts index 75f0dff2534..38ee7b5eae0 100644 --- a/src/battle.ts +++ b/src/battle.ts @@ -222,7 +222,7 @@ export default class Battle { if (!this.started && this.trainer?.config.encounterBgm && this.trainer?.getEncounterMessages()?.length) { return `encounter_${this.trainer?.getEncounterBgm()}`; } - if (scene.musicPreference === MusicPreference.CONSISTENT) { + if (scene.musicPreference === MusicPreference.GENFIVE) { return this.trainer?.getBattleBgm() ?? null; } else { return this.trainer?.getMixedBattleBgm() ?? null; @@ -239,7 +239,7 @@ export default class Battle { return "battle_final_encounter"; } if (pokemon.species.legendary || pokemon.species.subLegendary || pokemon.species.mythical) { - if (scene.musicPreference === MusicPreference.CONSISTENT) { + if (scene.musicPreference === MusicPreference.GENFIVE) { switch (pokemon.species.speciesId) { case Species.REGIROCK: case Species.REGICE: @@ -256,7 +256,7 @@ export default class Battle { } return "battle_legendary_unova"; } - } else if (scene.musicPreference === MusicPreference.MIXED) { + } else if (scene.musicPreference === MusicPreference.ALLGENS) { switch (pokemon.species.speciesId) { case Species.ARTICUNO: case Species.ZAPDOS: diff --git a/src/data/mystery-encounters/encounters/global-trade-system-encounter.ts b/src/data/mystery-encounters/encounters/global-trade-system-encounter.ts index fa445d75d4f..b7376c2bfd2 100644 --- a/src/data/mystery-encounters/encounters/global-trade-system-encounter.ts +++ b/src/data/mystery-encounters/encounters/global-trade-system-encounter.ts @@ -107,7 +107,7 @@ export const GlobalTradeSystemEncounter: MysteryEncounter = // Load bgm let bgmKey: string; - if (scene.musicPreference === MusicPreference.CONSISTENT) { + if (scene.musicPreference === MusicPreference.GENFIVE) { bgmKey = "mystery_encounter_gen_5_gts"; scene.loadBgm(bgmKey, `${bgmKey}.mp3`); } else { diff --git a/src/system/settings/settings.ts b/src/system/settings/settings.ts index ebdcad1c4f9..0a11648c171 100644 --- a/src/system/settings/settings.ts +++ b/src/system/settings/settings.ts @@ -181,8 +181,8 @@ export const SettingKeys = { }; export enum MusicPreference { - CONSISTENT, - MIXED + GENFIVE, + ALLGENS } /** @@ -670,15 +670,15 @@ export const Setting: Array = [ label: i18next.t("settings:musicPreference"), options: [ { - value: "Consistent", - label: i18next.t("settings:consistent") + value: "Gen V + PMD", + label: i18next.t("settings:musicGenFive") }, { - value: "Mixed", - label: i18next.t("settings:mixed") + value: "All Gens", + label: i18next.t("settings:musicAllGens") } ], - default: MusicPreference.MIXED, + default: MusicPreference.ALLGENS, type: SettingType.AUDIO, requireReload: true }, From 14902cdb60908eb98d01c3cd52134387f8061c7e Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Mon, 30 Dec 2024 20:20:23 -0800 Subject: [PATCH 071/119] [Hotfix] Prevent Keldeo from changing forms in Daily Run (#5060) * [Hotfix] Prevent Keldeo from changing forms in Daily Run * Update patch version --- package-lock.json | 4 ++-- package.json | 2 +- src/data/pokemon-forms.ts | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0ef89a8831f..c3c08a9ec00 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "pokemon-rogue-battle", - "version": "1.4.1", + "version": "1.4.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "pokemon-rogue-battle", - "version": "1.4.1", + "version": "1.4.2", "hasInstallScript": true, "dependencies": { "@material/material-color-utilities": "^0.2.7", diff --git a/package.json b/package.json index 980bcd2034e..d484927e5fc 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "pokemon-rogue-battle", "private": true, - "version": "1.4.1", + "version": "1.4.2", "type": "module", "scripts": { "start": "vite", diff --git a/src/data/pokemon-forms.ts b/src/data/pokemon-forms.ts index a1b2d7896d7..d3cccbefdba 100644 --- a/src/data/pokemon-forms.ts +++ b/src/data/pokemon-forms.ts @@ -770,8 +770,8 @@ export const pokemonFormChanges: PokemonFormChanges = { new SpeciesFormChange(Species.KYUREM, "", "white", new SpeciesFormChangeItemTrigger(FormChangeItem.LIGHT_STONE), false, getSpeciesDependentFormChangeCondition(Species.RESHIRAM)) ], [Species.KELDEO]: [ - new SpeciesFormChange(Species.KELDEO, "ordinary", "resolute", new SpeciesFormChangeMoveLearnedTrigger(Moves.SECRET_SWORD)), - new SpeciesFormChange(Species.KELDEO, "resolute", "ordinary", new SpeciesFormChangeMoveLearnedTrigger(Moves.SECRET_SWORD, false)) + new SpeciesFormChange(Species.KELDEO, "ordinary", "resolute", new SpeciesFormChangeMoveLearnedTrigger(Moves.SECRET_SWORD), false, new SpeciesFormChangeCondition((p) => p.scene.gameMode.isDaily !== true)), + new SpeciesFormChange(Species.KELDEO, "resolute", "ordinary", new SpeciesFormChangeMoveLearnedTrigger(Moves.SECRET_SWORD, false), false, new SpeciesFormChangeCondition((p) => p.scene.gameMode.isDaily !== true)) ], [Species.MELOETTA]: [ new SpeciesFormChange(Species.MELOETTA, "aria", "pirouette", new MeloettaFormChangePostMoveTrigger(Moves.RELIC_SONG), true), From ec5dadb4f4095edb999905119286ea172c0270be Mon Sep 17 00:00:00 2001 From: AJ Fontaine <36677462+Fontbane@users.noreply.github.com> Date: Fri, 3 Jan 2025 18:42:06 -0500 Subject: [PATCH 072/119] [Misc] Undo winter holiday event changes (#5068) --- src/data/balance/starters.ts | 2 +- .../mystery-encounters/encounters/delibirdy-encounter.ts | 5 ++--- src/data/mystery-encounters/mystery-encounters.ts | 8 ++++---- src/phases/trainer-victory-phase.ts | 2 +- .../encounters/delibirdy-encounter.test.ts | 2 +- 5 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/data/balance/starters.ts b/src/data/balance/starters.ts index abbe3897908..ec66401675b 100644 --- a/src/data/balance/starters.ts +++ b/src/data/balance/starters.ts @@ -4,7 +4,7 @@ export const POKERUS_STARTER_COUNT = 5; // #region Friendship constants export const CLASSIC_CANDY_FRIENDSHIP_MULTIPLIER = 3; -export const FRIENDSHIP_GAIN_FROM_BATTLE = 4; +export const FRIENDSHIP_GAIN_FROM_BATTLE = 3; export const FRIENDSHIP_GAIN_FROM_RARE_CANDY = 6; export const FRIENDSHIP_LOSS_FROM_FAINT = 5; diff --git a/src/data/mystery-encounters/encounters/delibirdy-encounter.ts b/src/data/mystery-encounters/encounters/delibirdy-encounter.ts index 1df87a3d17f..99668c76143 100644 --- a/src/data/mystery-encounters/encounters/delibirdy-encounter.ts +++ b/src/data/mystery-encounters/encounters/delibirdy-encounter.ts @@ -34,7 +34,7 @@ const OPTION_3_DISALLOWED_MODIFIERS = [ "PokemonBaseStatTotalModifier" ]; -const DELIBIRDY_MONEY_PRICE_MULTIPLIER = 1.5; +const DELIBIRDY_MONEY_PRICE_MULTIPLIER = 2; const doEventReward = (scene: BattleScene) => { const event_buff = scene.eventManager.activeEvent()?.delibirdyBuff ?? []; @@ -60,8 +60,7 @@ const doEventReward = (scene: BattleScene) => { */ export const DelibirdyEncounter: MysteryEncounter = MysteryEncounterBuilder.withEncounterType(MysteryEncounterType.DELIBIRDY) - .withMaxAllowedEncounters(4) - .withEncounterTier(MysteryEncounterTier.COMMON) //Change back after event! + .withEncounterTier(MysteryEncounterTier.GREAT) .withSceneWaveRangeRequirement(...CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES) .withSceneRequirement(new MoneyRequirement(0, DELIBIRDY_MONEY_PRICE_MULTIPLIER)) // Must have enough money for it to spawn at the very least .withPrimaryPokemonRequirement( diff --git a/src/data/mystery-encounters/mystery-encounters.ts b/src/data/mystery-encounters/mystery-encounters.ts index 8a747cd4cd4..44feabeeaea 100644 --- a/src/data/mystery-encounters/mystery-encounters.ts +++ b/src/data/mystery-encounters/mystery-encounters.ts @@ -177,7 +177,7 @@ export const allMysteryEncounters: { [encounterType: number]: MysteryEncounter } const extremeBiomeEncounters: MysteryEncounterType[] = []; const nonExtremeBiomeEncounters: MysteryEncounterType[] = [ - // MysteryEncounterType.FIELD_TRIP, Disabled for holiday event + // MysteryEncounterType.FIELD_TRIP, Disabled MysteryEncounterType.DANCING_LESSONS, // Is also in BADLANDS, DESERT, VOLCANO, WASTELAND, ABYSS ]; @@ -185,14 +185,14 @@ const humanTransitableBiomeEncounters: MysteryEncounterType[] = [ MysteryEncounterType.MYSTERIOUS_CHALLENGERS, MysteryEncounterType.SHADY_VITAMIN_DEALER, MysteryEncounterType.THE_POKEMON_SALESMAN, - // MysteryEncounterType.AN_OFFER_YOU_CANT_REFUSE, Disabled for holiday event + // MysteryEncounterType.AN_OFFER_YOU_CANT_REFUSE, Disabled MysteryEncounterType.THE_WINSTRATE_CHALLENGE, MysteryEncounterType.THE_EXPERT_POKEMON_BREEDER ]; const civilizationBiomeEncounters: MysteryEncounterType[] = [ - // MysteryEncounterType.DEPARTMENT_STORE_SALE, Disabled for holiday event - // MysteryEncounterType.PART_TIMER, Disabled for holiday event + MysteryEncounterType.DEPARTMENT_STORE_SALE, + MysteryEncounterType.PART_TIMER, MysteryEncounterType.FUN_AND_GAMES, MysteryEncounterType.GLOBAL_TRADE_SYSTEM ]; diff --git a/src/phases/trainer-victory-phase.ts b/src/phases/trainer-victory-phase.ts index 456d548a9ba..d797e4360ac 100644 --- a/src/phases/trainer-victory-phase.ts +++ b/src/phases/trainer-victory-phase.ts @@ -39,7 +39,7 @@ export class TrainerVictoryPhase extends BattlePhase { // Validate Voucher for boss trainers if (vouchers.hasOwnProperty(TrainerType[trainerType])) { if (!this.scene.validateVoucher(vouchers[TrainerType[trainerType]]) && this.scene.currentBattle.trainer?.config.isBoss) { - this.scene.unshiftPhase(new ModifierRewardPhase(this.scene, [ modifierTypes.VOUCHER_PLUS, modifierTypes.VOUCHER_PLUS, modifierTypes.VOUCHER_PLUS, modifierTypes.VOUCHER_PREMIUM ][vouchers[TrainerType[trainerType]].voucherType])); + this.scene.unshiftPhase(new ModifierRewardPhase(this.scene, [ modifierTypes.VOUCHER, modifierTypes.VOUCHER, modifierTypes.VOUCHER_PLUS, modifierTypes.VOUCHER_PREMIUM ][vouchers[TrainerType[trainerType]].voucherType])); } } // Breeders in Space achievement diff --git a/src/test/mystery-encounter/encounters/delibirdy-encounter.test.ts b/src/test/mystery-encounter/encounters/delibirdy-encounter.test.ts index 71fb695111a..c226d60a9b4 100644 --- a/src/test/mystery-encounter/encounters/delibirdy-encounter.test.ts +++ b/src/test/mystery-encounter/encounters/delibirdy-encounter.test.ts @@ -56,7 +56,7 @@ describe("Delibird-y - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.DELIBIRDY, defaultParty); expect(DelibirdyEncounter.encounterType).toBe(MysteryEncounterType.DELIBIRDY); - expect(DelibirdyEncounter.encounterTier).toBe(MysteryEncounterTier.COMMON); + expect(DelibirdyEncounter.encounterTier).toBe(MysteryEncounterTier.GREAT); expect(DelibirdyEncounter.dialogue).toBeDefined(); expect(DelibirdyEncounter.dialogue.intro).toStrictEqual([{ text: `${namespace}:intro` }]); expect(DelibirdyEncounter.dialogue.outro).toStrictEqual([{ text: `${namespace}:outro` }]); From 355e70328c7e079e7deaf598059108885b91c8e5 Mon Sep 17 00:00:00 2001 From: "Amani H." <109637146+xsn34kzx@users.noreply.github.com> Date: Fri, 3 Jan 2025 19:27:26 -0500 Subject: [PATCH 073/119] [Misc] `1.4.3` Version Bump + Locales Update (#5077) --- package-lock.json | 4 ++-- package.json | 2 +- public/locales | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index c3c08a9ec00..52cc628872a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "pokemon-rogue-battle", - "version": "1.4.2", + "version": "1.4.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "pokemon-rogue-battle", - "version": "1.4.2", + "version": "1.4.3", "hasInstallScript": true, "dependencies": { "@material/material-color-utilities": "^0.2.7", diff --git a/package.json b/package.json index d484927e5fc..e52c5928da7 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "pokemon-rogue-battle", "private": true, - "version": "1.4.2", + "version": "1.4.3", "type": "module", "scripts": { "start": "vite", diff --git a/public/locales b/public/locales index b28ba1255c8..2e03bc8f273 160000 --- a/public/locales +++ b/public/locales @@ -1 +1 @@ -Subproject commit b28ba1255c8db12cb07947f88635cb6be0143a15 +Subproject commit 2e03bc8f2736269bfa365faad587c3ec54a37621 From 1be95e8a1a36ec8ac9ac8b112d45b0abc61af496 Mon Sep 17 00:00:00 2001 From: Lugiad <2070109+Adri1@users.noreply.github.com> Date: Sat, 4 Jan 2025 23:43:40 +0100 Subject: [PATCH 074/119] [Localization] [UI/UX] Updates for pokemon-emerald-pro & pkmnems (#4968) * Add files via upload * Add files via upload --- public/fonts/pkmnems.ttf | Bin 26132 -> 26504 bytes public/fonts/pokemon-emerald-pro.ttf | Bin 93528 -> 93816 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/public/fonts/pkmnems.ttf b/public/fonts/pkmnems.ttf index b0b50d0f10ff8a64753acb663781be30d9b0213d..2cc7bfeee62569b1190a20ad91dcfada349b0d32 100644 GIT binary patch delta 1094 zcmY*YZ){Ul6hG(ny|!)*ZIL33+P?R0``SlzZflDKQBjwM5dH`(laRskwv`pLjfRzF z`hgN-3?a)TmJlOu*@p$^mkBgXd>_!@6ojc{A7-+U*p!42N%&?&*6}>|ZA5*^x#!>g zoqK-woqJ{mPyUJpKmhQ-32?xcbh>3nf93rgKz9#CgS+;=)Z~4X8V10vm z2g(3W4}fr`+vv|(79pX#i}LR7p7#!ojNX_8sHp<9B(oW#>#vU%3Y426*^s3`?E!Zq z)f35&WP9_4!3U9=7bq|WAimpkq|<15aJWLXrs;rQu zy#c`SPVPv5Ucde^ZSgp409kF716XOX&Gm#_ zHweWQsJrSo4%d}l!w($AG09V$7FQJ~Bv0v%_!br>i6FnEAc*jZt$h^nz;Uq9fnjXK zz1S(D=oWX2`{cFSn{*}AD~zFlA#A`scu)k#lXp`p!CUowWu4s=rik zR==-)TjnT!&cC0Jo55wDJ2&B$?ajc?xR!R;mCifAK<^FsX?YVVTvKdwzmC^SpS#at z;m7Bzp^c$jXejhq=xXR*SPkzC_k>S}uY}9thjNX)UfwSE$)Cy-@{D{>2`c-PL1jXj zQy!{LRaVpLesxeCSEtl@=445>on_exHp;HDN<@exBZnfxkxP*~Q6aiA+7NAx4n?m; zE1FN+thH!IwIS_NlQykYVk=^DtT~p8jmD;8v#~$o?zk4;7SF~{#m#tGU#U0i`}G0+ zj6R{yudgeWYhHXMBM}o*xKF>y0WPQoFRUYKsYF0wsf0hJ1SEybgkSL|{ESv6)SHX5 zriu9{LtMCJnxtLLrmgK2^9$ob{o*VQFt1-cm1ae0ldtJNU^1WXH%;mGQ>S`xsp8@+ z$D3xUHvOegu+l=kblYyx3!ns8>gB|949TFT81LX4q$cc|REgJH7#G`Ubomqt_odZj zJp+Ly?6ZUmFb8oA5FtMi|2=hpZTSJ5nr@Cg2f$M73m zfQzsI)#6;o=_KyJowy6%hOcoq?s3s0&1D;t&Nn)aW(G1&!&a_ieTN$wH#9BlL@D3d XE-<=rnq`3x6$$)4cZ;6x|6kKTDlJBg delta 714 zcmXX^Ur19?82`?8S!**j(V1@Cf4hICq~@}enFUe{1kEx`25MKG4sp5K9@dK!>A^sv zxY9#OL=1!wS>7l}DY3E;so{%06j(|4;DZlprWe*X>A>Nf-}n2@kMsS$Z}=-2T_iCe z0B{5b!3d3B@74Nn%*_J$cQNX?c>aPH)`=bQ3S#yhjO#QYlmde-e3fPv7nC_YKx+0Lv=Cm9>Ch>H6c;%8>hp`*a}Sk15txa|sIO zVn7H4Bhl~8mg9&M0F$(|Qajiw^0UVTBI*Wc;WtNX|i^@l0{Fol;q+&1lvX`E!u!zZNvFOsW< z%;(5QEn$94VoS7zmgow)g&w45=yfKWsbaiL2Q$RPnR#ZD1y*3svJp1HCOP0rIWO17 zMY$*36qn?5K9hIzZTtuy=V$p9e#dEZdYnGzi1V%Uw_p(}1fS3=3=5OOnph}$#DF*| zPKXQQnq-k2l1J*6qQ%mf^jX@GGv#8rR=zF|$j{_i`KK$#Rpsh+jk%^=UtAkSP~0k#{ZAuYYF|%*F~`334+*=!J^%m! diff --git a/public/fonts/pokemon-emerald-pro.ttf b/public/fonts/pokemon-emerald-pro.ttf index 84e49ebbc40def70813370e460324d84e021cc69..e4ee49dbff37948936b7770f697ab143b9f434d5 100644 GIT binary patch delta 4252 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 delta 3617 zcmY*c4=~$%w*UU}O@biezox43r>d$Es)Q;*8blh3qHRPF5d^=YibfKlC~0m-+;Y9F z>)Ni{*X^?&s%~ptw`+~p>GX9?$8$Tay$x$@*X{MJ)jrQ{-#5nGd3$DZzUQ3J`Jb80 z$%j{@g_k5XzyJU=#E1a!c-YJ<_>I_mP)Y)%@q-pH)a-1;Fm5qC7wM_1}Ff zP{Er3Sge=k*5D*Bkb-bI@@JIgmKIEYAL#{D+=(T zjiX4Wn;T-{6~X1W>JM~F)S(h3d9}L@w2ZptHerrk+oyt()0D^ylELU7uTsXv;{XrrGX zfT*sSAPR*LqV^zZ&q9V4&~g{Ef+f4J0+u4Y4E{SDM(+q5-L>9_WAFje$Kf~dA$+tK zJpq3YCwK90;S~H1;g9!_KM3IKJ#i8K838}QH@l9eJ?j!&-jn_U|F$Qs!5`r|MBl8L z;0F9V;+yavaBF1MISEr=0XWD9QXq%5pc;G$%0MxyR|Setf@aVS{{k*Slmf`WW%wEu z{4+KKS3n7>grMXZI~ zqQ;`f;;zM0iv^2yORA-xCEqg7vdOa7a>jDea@~q*#kS&FNvx`^)VHjLtY)niDKv^d zC5j@UG*KQ>7OjD`k2T9W-5R&nT8~=4vhlGI+T_{XwVALb+cIoLwhG&awllUS+a0PG zRY;XmHPmkEZR#j>mbz@mu*qETopS_Vx?8=%e8cI^G_`Sw-zo%W;lFYUJ-=nfGM z5(kY#zr#zlBhiuRD0b{{oN(N5@^cb6;Z8kHlTK^SHqN2WV&`V(QRh_`noF!pjZ44F zbC-{wX5FsuIpph9XCI>R5zvDJ+~kBQTBQ5OWB9-ySZ;{-#nd2XV8W8GI|Gn zjJ~*^u-|uo`hM;HvHh#=GLvCv zdOi2r_IC0P@aB4FcvpG1dG~pbde3>U_&E85_(*&-KEpl>K0Ake4si}i549c|I<(+x zqxR+aN_;zgXMI->yC04^Tywbh@VuXcUy5Ic-|P{>5zZ0qk=`RyM@;@ie-D3-f0=)` z|G57P{|`sqj`EJ;M|+RX9$gI}280F_2lNKa9RtT$$3(|kj}0ALVY)Gy%yecI)5x4= zt^^VT{Q?sLs{{K2p9OBRXe?c^w4kUUd5|&aY0yrvUvNfnbMQp)=5hA% zisRkKCy(!hutVe_Js~en&`w02P@R}M@gbBIstDDF4unpIn!>1IzG0lOj4*jvbC@w~ zG;AttE^Ik$lMUGJY=1V7oyV?X>)3;s3N)}9!5NgSUX8L>31^fr1)gT$$^tkPOe2#BmE=!k)p_&$ll1I$hpW5 zrD~CCV)-B#IYR6{U+Bi&}^#Mzf+N(bdtnqWhztMz3>hH~}09N5kph z407f<8!^NfuNZDjU5qhC{UpW|ONnL1rp7kMj>XQ$ZpFF8vEnk~n&P_S#^avHZE#(< z!Cai%%YDiFn6q)l`pE zeri>!F;zX2x}Ii}=9?CkmY$|eyPY zJ)4=$%TCQM&emiPWDjT0WWNel@v=_B}0;zxgeL38=H&g8gu9J9P)U1ZFx`f*7AMx#rdlIyZJBj*QIK@ zG*l{-%A`8!uyjtkQQ%&{F32lrEf_9%QSedbB8!lTWX-a>vU%B7p?e{_P*^A`#0!mu zcM8V}pBI`6*X0Cxh@2;v$~E%a@=5uee7nf2h*`uf!i!Wz#-hQZ*&2_IUSy@?s z*;Ls^IjualTvDztA1~j;J#Yao$8X|;_`)UPrN~RNOSdmQtFWmEt-ve#Dpo6 zsrBkRYW1{wUj0r((fDh)8eG$%8PE)CrZulLn+=u?J`L;!QA2A(U&F(Omkk?Q4{ek- zRV&uw+E#6!c2>LA=+qe8nAO=ye;d_IBLvllT*5`GDEG%$HC20hP(uHkSr$i91i?L}Jvd*BQXbZN*KqbtA) zvooAOOC#+%j^N^75uC}tWP-rTT+Hll;7b^WC#^R0Db6lwI8)fvM-GPK5NXh(F-S6; z4biR6hO#`0VMs_e-1{$@VO`=xG=n4Wa@(Qx|7+4PdG}b588KHQe40XBLoiQg4M33n zaeH{;xbt!JK|jVEROX`wn?lkEL6&4`zc&tA5(E~ziyE3|8t8l*m)(T_Jgs?;L-P^4 zT^R60!HA^%->mHS_W4T+M+2+H#o!>==e(N&b+h+P?Dk}3U}YS|G={}10VDIZ`}0Sv zUUSQ__YZ^uY=O)H!(ap&z!-P{reP--1^2-p;padL9)lKm3wFV7@LTu=n1Ma;U!W2G z3iiS;VIPoJ1nlpUrC|y((19=E_gxEV7%K#HgFB!Hd;xyiJxhNBI)Kr9nu4$4 z7WfQwg3sZ5_yK$a{|9cv|Ajm7XZZ0!R62%HAH?TjA(XCK1;&8rkH7O_$%T+5q<(B!q0^Fz#6L1DQ*oLp&F3TG1-LV7T98Mjn2^4gVyjmypAkw zunkzicG!+&9n_(_-T?K8e~tzwq9Jb~dl&3NQQfc`Mg1D~AoMrzHbMuo-~fWZhF>H2 z4!nclZ{WY8V!wwEk^M3J7V&8~jV!b9k4XLjevkMYbixzi-=GP}Yj6$4{s@0Wv77K6 Ku>OPyfd2zVR<#!Z From 197b264fb0bf07ece381bd7e9488f3e8048b058b Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Mon, 6 Jan 2025 16:24:08 -0800 Subject: [PATCH 075/119] [Bug] Gimmighoul & Eevee eggs will now properly randomize their forms (#5080) --- src/battle-scene.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/battle-scene.ts b/src/battle-scene.ts index 327ab1cc926..ae992f5c00f 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -1424,6 +1424,8 @@ export default class BattleScene extends SceneBase { return 0; } + const isEggPhase: boolean = [ "EggLapsePhase", "EggHatchPhase" ].includes(this.getCurrentPhase()?.constructor.name ?? ""); + switch (species.speciesId) { case Species.UNOWN: case Species.SHELLOS: @@ -1455,7 +1457,7 @@ export default class BattleScene extends SceneBase { } return Utils.randSeedInt(8); case Species.EEVEE: - if (this.currentBattle?.battleType === BattleType.TRAINER && this.currentBattle?.waveIndex < 30) { + if (this.currentBattle?.battleType === BattleType.TRAINER && this.currentBattle?.waveIndex < 30 && !isEggPhase) { return 0; // No Partner Eevee for Wave 12 Preschoolers } return Utils.randSeedInt(2); @@ -1483,7 +1485,7 @@ export default class BattleScene extends SceneBase { return 0; case Species.GIMMIGHOUL: // Chest form can only be found in Mysterious Chest Encounter, if this is a game mode with MEs - if (this.gameMode.hasMysteryEncounters) { + if (this.gameMode.hasMysteryEncounters && !isEggPhase) { return 1; // Wandering form } else { return Utils.randSeedInt(species.forms.length); From 07b69c9485841063a4fc0353c48460eaf1e8083e Mon Sep 17 00:00:00 2001 From: Unicornpowerstar Date: Tue, 7 Jan 2025 01:26:00 +0100 Subject: [PATCH 076/119] [Sprite] Fix Issues with the 658-ash.json to display sprite correctly (#5055) * [Sprite][Color] Fixing Issues with the 658-ash.json to display sprite correctly - Fix colors not being shown correctly in the json. - Said fix are adding a new entry to separate the whites that are F8f8f8 by adding f4f4f4 - Changed the wrong color into the correct one on the rare. --------- Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> --- public/images/pokemon/658-ash.png | Bin 1244 -> 1246 bytes public/images/pokemon/exp/658-ash.png | Bin 2468 -> 2472 bytes public/images/pokemon/shiny/658-ash.png | Bin 1247 -> 1247 bytes public/images/pokemon/variant/658-ash.json | 4 +++- .../images/pokemon/variant/exp/658-ash.json | 2 ++ 5 files changed, 5 insertions(+), 1 deletion(-) diff --git a/public/images/pokemon/658-ash.png b/public/images/pokemon/658-ash.png index a122df859bd0ed45c2bd78ee2d024b343a4cdc88..fa6ce5cb16521b9b690cd05cd6192b31b198b3fc 100644 GIT binary patch delta 1121 zcmV-n1fKic3El~iHUro1^pQC^3iR~!@E90I;80ePd?kMxg= zqE&PDC5!j0yfh(@tdofeQWtq2cpTUkiyW*k;eI6e27)r4V>}!?5R{uNuK)~OKMX0`&&PegUj-qJy~lr`defxu3tnwI`RBUVp5 z8J@GFpQ^jM!12+uH9T;f6xg_2o=*l*cU6%l>AK(%Cy@ot5J(yi%-7jzw&XcKea>m7 z@3((OXV7ak)s1F`Js~AL$8Tp+&?;B1i6|Z)R*r)Eb^d)kgICMFBp}+t(?r^@3!3+; zIrb)<^x;>+gXY;p?pX)Y{2BFdUglu{*=$YIh$n&8fu?z~C&$lXjAvE7WKXE2(vmw-@0P^2%HQMvWJXNFX%{*h`{E-iFdhbXnf7Tiu z$gA3e(23^{{RCc;zL@eZZ9$~uwNzMA6S8dN=%r=};Dh80mpT;k)+~ZO#wO;Szxu;GBGmn#AwK0;k zF4xSHlDcW#_%5n$t8^bJ#8`{N*37t%R(vh@T)cYUkyzLl4Hj3Oku0q&+mG}k?D-B1 zW#(-tkRxu28YO+&mTS7)FF7jwv7LV-OyZ(m(Q?Dchw~=sOAtnC=ZG79=ZZc}_GCrU z4|j5jY;OV#aV-l--46367K$dLw3z!2hd8TUTnuoGvp`&2pk*S6W&MBhUM0r}Za!h$ ziu`oD9^uaLn)|L^3}RvCEbDe1re*suBn(3XGsN7v$=SPyY<_FePu98voQcK1kWmZ-b^{S?i00000NkvXXu0mjf#V0qZ delta 1119 zcmV-l1fcug3ET;gHUj_v0FgO43i$Z=@E91BQ=k8ld?kM-Nklmj;EW9>DCmq`hD~ z^EeLrN$-EM?~^xx*MxiBb4V0g;?iXGqloGagJ|;rIrrTYjf0!`<{028B8um^VaSsG z$|Vgk+lmB|2<%0Uz#TUny_hNDx-R+KXK*0T?zrf|ScZo@CLOG;3l=Y!!4Z^u^M57} zwv7AGn7)n!2+GZtR{#cX+_seM=i|0*QxMWPdJKQ6H_!UM;3WqXJ!ebY=A0AHW=A3L zTxC-TK%jbW1?7B#ZJ#aui$M;j+WL@A zb9VAmbypWSK62ab~h8<)%T$sp>ks?sD~7d+x5vcMSvN#lX#Iy=plJm;s+InDI_ z*64o>dab3p(af+Xq=e`A?aT^VqaH5nvTY!nt?N4RB+xd{bWir=_*soHT}LE)hTp3s-UOQN zhdc}zOY*1DRniQSXXb=ap2}HYD1mIN_&V+5Yg?bb~{=Zv|_PjAq)#!S&ESNZd zs`elZ;`u{AftRE&ro2mg5Gi>*6_!**_TcGMhT6=Vz8?i-FB~iVAUS)m5HC312|a(^ z%HR^`@4+3|n7}f`GfwwaKQb7z4d;}K0VMIK^NXwWxD-pR*ZX+xsguFNDL zRsI6HM#uhxQWWPcE`R}tZ*C)4p!&NUDrz6h5MD>eYbP*Kq&uN7a5$O!@fyaGSoIE?>uK7VIr+_%5aO+t!mO l{Wr`HY^hu|qw1yBj6c9cS26bNh?M{U002ovPDHLkV1k{3Ky?5B diff --git a/public/images/pokemon/exp/658-ash.png b/public/images/pokemon/exp/658-ash.png index 6bb84f3e4fd622689fb60ec1c06599aad87670a7..ced4cbcec716965af329c30e41f496414ccc6716 100644 GIT binary patch delta 2351 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 delta 2347 zcmYk2c{~&TAIHBMGNP87qnUL;K=4{rcng`Q!6^zh0lu`}O#|KNa$&@=sj=>+9?3u1CbPE*Ea6 zM`>eu_UBH!VhY%vPwI=I3dbw-bf(YrZEw%d790r#KFyVk_(=>Xo1Yqb%lzRhGhR+t z7!vlK+|xR9MJoMcPLW^aF_PlUl3i#dmw%&;VvC^n9<(A$5V&R|+@j9Rru>N3rF=c! zH0$D|`9;$#0gmx7!Q$!Iaay^Gor6+1pO3v!wK3_@2s59Eh<+R@NV)$oW6LINouBM+ zNbPp>+OK_UmV~T~Eem`@$s<^H+r;x)1cQ5>Svg!?I^0ZL3!ek-H@rOIirK2j3KtkKs>~uuDP3`aZ7_Y|Sz&sIOlo5D8*S;Ch28)X0DIS> zuv(~68rAN7?L9h~|IG%+ooe(jGn!~sT+@GkWLR=`bu**W*U|>Va^Z+i;f#exIBixg zDdW~^Vf(I=PRfM@yWYRx+iRZa?*(mGdp*yvE^K~%^g3)Mw`DU3(>69xfy(+AM9-xm ztk%zYWV*F6UI%%g-`Ly&4w>MeVZGy#$%d(kgKzXxCd%um-xk!&iA_in-4= zJCoEEr||SCe4llSSEK;GI&*}?o*Of)#O_CMEA~Z?xQBgH?D2#dRl?mS2-RM&Z5{Hu z3#hcSLLRJb=t@xkr;zh(=m6mwd28q35OK71WYO2RKd|UWK#e#j2)lT18NC)L2G z*lbR2HglwvgJ5nz2O$#kgrk^a+Wl3Y8t$TylVt7~EK_`KCd-9! zg8Y6Zk?Qu-9{DVOX&d(hJi_C#UNT04lgbFMBa-2M$}QrXXB2=aAr8sOSg#)Ie@#ah z&GvTZ840fc;HkfGQ>KL5$oMyT!~U89yXjmItp& z_`b4HvTVE%;O~-RIHJ|L0Cs-h$8OcEk}i55!y7hOX-+dP)P)$55zP2hnBx;{fAto1 zoZrD`GZc~9|E?+=)<`K-Mw~);Vtl3CWkcM+M0E`y3pe>_mbutdB|RF7@+-1e){l-@ zV&UfIY2Qm20g(i!#7ce~NA-pKkl!{dD$n!a_F{m?kJn#a_%4s>4|lvzCNe*Ls-EY*W21#K6iyFE=r?C!ZVc@p%nDPh0xOiRL z<&UPugUV-bt%bMnUB|gOEc=Y_!KO}AL!cqRfxE%%s~!(9_x#&s(%9Xslwfa7ybDYd z)OmC6aA#6!C(btQRB!u$l?lc9%>aH&D%zgaZ3n%I5pcfX+Wm){z$XE4dl(Zfa*zQ74XI(?zw^ zRD!7z;J^OmUzww@@Y!!;t|>~t8{6dBwO2z-$Wg>$zSBZ5yrkAyAheBhC0dhJM2YV! zX4-eX@;1nk2p}xb42k$a1q~yzRL9`$XHo53VmFrS@D$a}ve)*PgKPL!S`p2b9z@Fc zJ|Fs!pvyk00lvU6t5ym7_A)d(P01)0r9%#ca(tXkzoNe|sb$y)22go~Idg7*v0Ood zq;bwt9Vd5j75&BXv6cs=j^ik2R9`|jURM=YU<`7UBsaZFh1X(FCCvi59NqhmK!#|<-sxVwI5J|90X zK>Cmz2TrXaV@Qs*)Dy_^oxD7-owmKSq~!q(D)S`U01coz%S zJWVeWgJ{MM6~#g{PygBf_;vOhSgB;WJ*W+-Y&n_04XONKKuzs3=(xt`%Ckjl-EnDj*v=M$&bm>on?41p%Tshg_%{w)bD*k^U|4)gKBHLpdgSr{$ZJpuv zNldaON?bIeBr!_dVYg%pc1P_@3h??Q_ECwg)diJ1X0ERpJGk@e(_?pi#CWtA5$aBF zNHwPdWJKRgP6Z@+QElJ8`bya~StwQ`g12>C=|g~rbzIrmuj5`iS7WHQ(_T9J4v?tg z$q#eVV(zXigN!iu-rWMwgJMfWhS*dv+A2VYr3jfWe3^GieA@Ug(Xv19bguf0Puzb2 D;d-~P diff --git a/public/images/pokemon/shiny/658-ash.png b/public/images/pokemon/shiny/658-ash.png index f5de608708eb8b505f1e837a4a697ad7e2c3f4cd..b25693fd24e91b07e97e897fe743ab36853a84b1 100644 GIT binary patch delta 690 zcmV;j0!{tj3Ev5jbqe(K^zaxM=HIC{k$*S^0;V8X=aIZ3f4JYPJe*EE*6O%3Pqb>z z9NeH6~U5K+Cp7j5n#<=%Uuac~pgdy{xt3nWPi~&s8#o00gS{ zP*Ca^+_~hk1p1l|yiYM89JQx684AzCGGh(#j$#9&R+>`GC zFkA6((Y3O8jj1`^XlB?GQo^(RbY=z9`cW#1$HmH0aKF|)4@wrk;_ea%<@$q%q zH_PW3?(U1aR6JV?vXNaOVy_^=Q%|PjshqX4Crdy)zKUjz@>LJ=s`y2Kd?-9cd#P6f zo?pZLzm-p0W#A`IN%#H7e$~GLP5GC9bS-`o3j*AF>muT@S>bWJw641YHMs=!16s*9 zkm&X~;LbxoT=6K{?>mvn-##sF)0^t@b{uBG-m?1dQfj|#J$R=-!`#4{ldEJDJ=Bu% Y4eqk$*S^f~Fu?=8?Q2e|S8qJRDCv*6O%3Pqb>z z9NeH6~U5K+Cp7j5bx<=%Uuad0Ewd8D0VCx#50~*}h(OT~`Gmj=jgAdefxO3m#IS=zZ>yTdlR?nWPi~&s8#o00gS{ zR8Z;@+_%{R#YP~9lkdK))N&*s@yW}3JbN)Z6i>4IcrXC04AzCGGh(#j$#9$*-IMPD zFkAU_(Y3O8jj1`^XlB?GQo^(RbS4GU`cW#1$HmH0aKF|)4@wrk;vNzZZQ*Gm?bmwE zdDR?ylTP}&D%Z80=di5v*op^}sR)I~|vM1$dX_I;a905g>mjXxv z^Nf?>0zv|u!;>WgNdcvkZvzz!l756e*Ma#g-2pjblaK=(EsWI85jVQd6(M@EBI(7Q zTqJKF0`ze$3+2cywD;IT(PWgCQrF=SXS9n80gjW|0~`VvYm@f_E`Pqhpa`Va`1m^Q zo8@y1clSkIDxR$c*~qRCu~!h`sVCF%QqEf0lO-S?Uq!P<`KkwbRs14AJ``S}t?HG4 z=htxmZ{^cg8TiRl(tZE2U-fT5Q~u>2U5lT@f&jPPGK+X@R(RYlEz9meO)f$GfL8Ji zB)WYLxbx5tS3HXLdpl(Ew@-`P_@=tN9fw)4H!uFXl-h4w58mm|FgLK~<{9 diff --git a/public/images/pokemon/variant/658-ash.json b/public/images/pokemon/variant/658-ash.json index 29b5bd2560b..1845b2b1bea 100644 --- a/public/images/pokemon/variant/658-ash.json +++ b/public/images/pokemon/variant/658-ash.json @@ -4,6 +4,7 @@ "3f4447": "466698", "de3431": "3fca9f", "f8f8f8": "a1e9f0", + "f4f4f4": "d7eff4", "7b282e": "0e3e81", "6b1d1d": "206d74", "4ebdd9": "41a7b0", @@ -11,7 +12,7 @@ "bfbfbf": "8cc7d4", "ffb2bf": "b7e9ff", "bf4c60": "4386df", - "fff0a6": "271f4c", + "fff0a6": "208698", "3e7acc": "6b4592", "18335c": "170738", "f2798d": "8dcfff", @@ -25,6 +26,7 @@ "3f4447": "466698", "de3431": "9ceec6", "f8f8f8": "89d2b8", + "f4f4f4": "d7eff4", "7b282e": "152a5c", "6b1d1d": "356e8d", "4ebdd9": "2f6e74", diff --git a/public/images/pokemon/variant/exp/658-ash.json b/public/images/pokemon/variant/exp/658-ash.json index 96b60b02adf..79cad7ea42d 100644 --- a/public/images/pokemon/variant/exp/658-ash.json +++ b/public/images/pokemon/variant/exp/658-ash.json @@ -4,6 +4,7 @@ "3f4447": "466698", "de3431": "3fca9f", "f8f8f8": "a1e9f0", + "f4f4f4": "d7effa", "7b282e": "0e3e81", "6b1d1d": "206d74", "4ebdd9": "41a7b0", @@ -25,6 +26,7 @@ "3f4447": "466698", "de3431": "9ceec6", "f8f8f8": "89d2b8", + "f4f4f4": "d7effa", "7b282e": "152a5c", "6b1d1d": "356e8d", "4ebdd9": "2f6e74", From d0db6a35d2afd6318e6bb9a8e9d2be7e0254b35f Mon Sep 17 00:00:00 2001 From: Jimmybald1 <122436263+Jimmybald1@users.noreply.github.com> Date: Wed, 8 Jan 2025 20:27:23 +0100 Subject: [PATCH 077/119] [Bug] fix #5102 Catching Charm now always max weight in Daily Mode (#5103) Co-authored-by: Jimmybald1 <147992650+IBBCalc@users.noreply.github.com> --- src/modifier/modifier-type.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modifier/modifier-type.ts b/src/modifier/modifier-type.ts index 540af8a0b41..e1c8cb04405 100644 --- a/src/modifier/modifier-type.ts +++ b/src/modifier/modifier-type.ts @@ -1843,7 +1843,7 @@ const modifierPool: ModifierPool = { new WeightedModifierType(modifierTypes.BATON, 2), new WeightedModifierType(modifierTypes.SOUL_DEW, 7), //new WeightedModifierType(modifierTypes.OVAL_CHARM, 6), - new WeightedModifierType(modifierTypes.CATCHING_CHARM, (party: Pokemon[]) => !party[0].scene.gameMode.isFreshStartChallenge() && party[0].scene.gameData.getSpeciesCount(d => !!d.caughtAttr) > 100 ? 4 : 0, 4), + new WeightedModifierType(modifierTypes.CATCHING_CHARM, (party: Pokemon[]) => party[0].scene.gameMode.isDaily || (!party[0].scene.gameMode.isFreshStartChallenge() && party[0].scene.gameData.getSpeciesCount(d => !!d.caughtAttr) > 100) ? 4 : 0, 4), new WeightedModifierType(modifierTypes.ABILITY_CHARM, skipInClassicAfterWave(189, 6)), new WeightedModifierType(modifierTypes.FOCUS_BAND, 5), new WeightedModifierType(modifierTypes.KINGS_ROCK, 3), From b0c347e20d8843885e9b3c8a9f569072ce2bdca8 Mon Sep 17 00:00:00 2001 From: Zain <34523777+Zain-A-Abbas@users.noreply.github.com> Date: Fri, 10 Jan 2025 19:29:25 -0500 Subject: [PATCH 078/119] [Bug] Fixed defog not removing the target's Safeguard and Mist (#5107) * Fixed defog not removing the target's Safeguard and Mist * Made requested changes and added unit test * Remove stray newline --------- Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> --- src/data/move.ts | 3 +- src/test/moves/defog.test.ts | 71 ++++++++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 src/test/moves/defog.test.ts diff --git a/src/data/move.ts b/src/data/move.ts index 7a6f08a5372..c86b168fb57 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -9220,7 +9220,8 @@ export function initMoves() { .attr(ClearWeatherAttr, WeatherType.FOG) .attr(ClearTerrainAttr) .attr(RemoveScreensAttr, false) - .attr(RemoveArenaTrapAttr, true), + .attr(RemoveArenaTrapAttr, true) + .attr(RemoveArenaTagsAttr, [ ArenaTagType.MIST, ArenaTagType.SAFEGUARD ], false), new StatusMove(Moves.TRICK_ROOM, Type.PSYCHIC, -1, 5, -1, -7, 4) .attr(AddArenaTagAttr, ArenaTagType.TRICK_ROOM, 5) .ignoresProtect() diff --git a/src/test/moves/defog.test.ts b/src/test/moves/defog.test.ts new file mode 100644 index 00000000000..c83cdc192bf --- /dev/null +++ b/src/test/moves/defog.test.ts @@ -0,0 +1,71 @@ +import { Stat } from "#enums/stat"; +import { Abilities } from "#enums/abilities"; +import { Moves } from "#enums/moves"; +import { Species } from "#enums/species"; +import GameManager from "#test/utils/gameManager"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; + +describe("Moves - Defog", () => { + let phaserGame: Phaser.Game; + let game: GameManager; + + beforeAll(() => { + phaserGame = new Phaser.Game({ + type: Phaser.HEADLESS, + }); + }); + + afterEach(() => { + game.phaseInterceptor.restoreOg(); + }); + + beforeEach(() => { + game = new GameManager(phaserGame); + game.override + .moveset([ Moves.MIST, Moves.SAFEGUARD, Moves.SPLASH ]) + .ability(Abilities.BALL_FETCH) + .battleType("single") + .disableCrits() + .enemySpecies(Species.SHUCKLE) + .enemyAbility(Abilities.BALL_FETCH) + .enemyMoveset([ Moves.DEFOG, Moves.GROWL ]); + }); + + it("should not allow Safeguard to be active", async () => { + await game.classicMode.startBattle([ Species.REGIELEKI ]); + + const playerPokemon = game.scene.getPlayerField(); + const enemyPokemon = game.scene.getEnemyField(); + + game.move.select(Moves.SAFEGUARD); + await game.forceEnemyMove(Moves.DEFOG); + await game.phaseInterceptor.to("BerryPhase"); + + expect(playerPokemon[0].isSafeguarded(enemyPokemon[0])).toBe(false); + + + expect(true).toBe(true); + }); + + + it("should not allow Mist to be active", async () => { + await game.classicMode.startBattle([ Species.REGIELEKI ]); + + const playerPokemon = game.scene.getPlayerField(); + + game.move.select(Moves.MIST); + await game.forceEnemyMove(Moves.DEFOG); + + await game.toNextTurn(); + + game.move.select(Moves.SPLASH); + await game.forceEnemyMove(Moves.GROWL); + + await game.phaseInterceptor.to("BerryPhase"); + + expect(playerPokemon[0].getStatStage(Stat.ATK)).toBe(-1); + + expect(true).toBe(true); + }); +}); From 29087710b7e180efe31594c5d178ec9770a3c2ad Mon Sep 17 00:00:00 2001 From: "Amani H." <109637146+xsn34kzx@users.noreply.github.com> Date: Fri, 10 Jan 2025 19:34:16 -0500 Subject: [PATCH 079/119] [Balance] Adjust Orb & Light Ball Weight Functions (#5070) * [Balance] Adjust Orb & Light Ball Weight Functions * Apply Kev's Suggestions Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> --------- Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> Co-authored-by: damocleas --- src/modifier/modifier-type.ts | 74 +++++++++++++++++++++-------------- 1 file changed, 44 insertions(+), 30 deletions(-) diff --git a/src/modifier/modifier-type.ts b/src/modifier/modifier-type.ts index e1c8cb04405..b6cf78fb414 100644 --- a/src/modifier/modifier-type.ts +++ b/src/modifier/modifier-type.ts @@ -1040,7 +1040,8 @@ class SpeciesStatBoosterModifierTypeGenerator extends ModifierTypeGenerator { for (const p of party) { const speciesId = p.getSpeciesForm(true).speciesId; const fusionSpeciesId = p.isFusion() ? p.getFusionSpeciesForm(true).speciesId : null; - const hasFling = p.getMoveset(true).some(m => m?.moveId === Moves.FLING); + // TODO: Use commented boolean when Fling is implemented + const hasFling = false; /* p.getMoveset(true).some(m => m?.moveId === Moves.FLING) */ for (const i in values) { const checkedSpecies = values[i].species; @@ -1755,56 +1756,69 @@ const modifierPool: ModifierPool = { }, 12), new WeightedModifierType(modifierTypes.TOXIC_ORB, (party: Pokemon[]) => { return party.some(p => { - const moveset = p.getMoveset(true).filter(m => !isNullOrUndefined(m)).map(m => m.moveId); - - const canSetStatus = p.canSetStatus(StatusEffect.TOXIC, true, true, null, true); const isHoldingOrb = p.getHeldItems().some(i => i.type.id === "FLAME_ORB" || i.type.id === "TOXIC_ORB"); - // Moves that take advantage of obtaining the actual status effect - const hasStatusMoves = [ Moves.FACADE, Moves.PSYCHO_SHIFT ] - .some(m => moveset.includes(m)); - // Moves that take advantage of being able to give the target a status orb - // TODO: Take moves from comment they are implemented - const hasItemMoves = [ /* Moves.TRICK, Moves.FLING, Moves.SWITCHEROO */ ] - .some(m => moveset.includes(m)); - // Abilities that take advantage of obtaining the actual status effect - const hasRelevantAbilities = [ Abilities.QUICK_FEET, Abilities.GUTS, Abilities.MARVEL_SCALE, Abilities.TOXIC_BOOST, Abilities.POISON_HEAL, Abilities.MAGIC_GUARD ] - .some(a => p.hasAbility(a, false, true)); - if (!isHoldingOrb) { + const moveset = p.getMoveset(true).filter(m => !isNullOrUndefined(m)).map(m => m.moveId); + const canSetStatus = p.canSetStatus(StatusEffect.TOXIC, true, true, null, true); + + // Moves that take advantage of obtaining the actual status effect + const hasStatusMoves = [ Moves.FACADE, Moves.PSYCHO_SHIFT ] + .some(m => moveset.includes(m)); + // Moves that take advantage of being able to give the target a status orb + // TODO: Take moves (Trick, Fling, Switcheroo) from comment when they are implemented + const hasItemMoves = [ /* Moves.TRICK, Moves.FLING, Moves.SWITCHEROO */ ] + .some(m => moveset.includes(m)); + if (canSetStatus) { - return hasRelevantAbilities || hasStatusMoves; + // Abilities that take advantage of obtaining the actual status effect, separated based on specificity to the orb + const hasGeneralAbility = [ Abilities.QUICK_FEET, Abilities.GUTS, Abilities.MARVEL_SCALE, Abilities.MAGIC_GUARD ] + .some(a => p.hasAbility(a, false, true)); + const hasSpecificAbility = [ Abilities.TOXIC_BOOST, Abilities.POISON_HEAL ] + .some(a => p.hasAbility(a, false, true)); + const hasOppositeAbility = [ Abilities.FLARE_BOOST ] + .some(a => p.hasAbility(a, false, true)); + + return hasSpecificAbility || (hasGeneralAbility && !hasOppositeAbility) || hasStatusMoves; } else { return hasItemMoves; } } + return false; }) ? 10 : 0; }, 10), new WeightedModifierType(modifierTypes.FLAME_ORB, (party: Pokemon[]) => { return party.some(p => { - const moveset = p.getMoveset(true).filter(m => !isNullOrUndefined(m)).map(m => m.moveId); - const canSetStatus = p.canSetStatus(StatusEffect.BURN, true, true, null, true); const isHoldingOrb = p.getHeldItems().some(i => i.type.id === "FLAME_ORB" || i.type.id === "TOXIC_ORB"); - // Moves that take advantage of obtaining the actual status effect - const hasStatusMoves = [ Moves.FACADE, Moves.PSYCHO_SHIFT ] - .some(m => moveset.includes(m)); - // Moves that take advantage of being able to give the target a status orb - // TODO: Take moves from comment they are implemented - const hasItemMoves = [ /* Moves.TRICK, Moves.FLING, Moves.SWITCHEROO */ ] - .some(m => moveset.includes(m)); - // Abilities that take advantage of obtaining the actual status effect - const hasRelevantAbilities = [ Abilities.QUICK_FEET, Abilities.GUTS, Abilities.MARVEL_SCALE, Abilities.FLARE_BOOST, Abilities.MAGIC_GUARD ] - .some(a => p.hasAbility(a, false, true)); - if (!isHoldingOrb) { + const moveset = p.getMoveset(true).filter(m => !isNullOrUndefined(m)).map(m => m.moveId); + const canSetStatus = p.canSetStatus(StatusEffect.TOXIC, true, true, null, true); + + // Moves that take advantage of obtaining the actual status effect + const hasStatusMoves = [ Moves.FACADE, Moves.PSYCHO_SHIFT ] + .some(m => moveset.includes(m)); + // Moves that take advantage of being able to give the target a status orb + // TODO: Take moves (Trick, Fling, Switcheroo) from comment when they are implemented + const hasItemMoves = [ /* Moves.TRICK, Moves.FLING, Moves.SWITCHEROO */ ] + .some(m => moveset.includes(m)); + if (canSetStatus) { - return hasRelevantAbilities || hasStatusMoves; + // Abilities that take advantage of obtaining the actual status effect, separated based on specificity to the orb + const hasGeneralAbility = [ Abilities.QUICK_FEET, Abilities.GUTS, Abilities.MARVEL_SCALE, Abilities.MAGIC_GUARD ] + .some(a => p.hasAbility(a, false, true)); + const hasSpecificAbility = [ Abilities.FLARE_BOOST ] + .some(a => p.hasAbility(a, false, true)); + const hasOppositeAbility = [ Abilities.TOXIC_BOOST, Abilities.POISON_HEAL ] + .some(a => p.hasAbility(a, false, true)); + + return hasSpecificAbility || (hasGeneralAbility && !hasOppositeAbility) || hasStatusMoves; } else { return hasItemMoves; } } + return false; }) ? 10 : 0; }, 10), From d3fafa27702f2121e89852cc45481dd935a6a7fd Mon Sep 17 00:00:00 2001 From: Ori shalhon Date: Sat, 11 Jan 2025 03:10:52 +0100 Subject: [PATCH 080/119] [UI/UX] Add random selection option during starter select (#5075) * Update submodule public/locales to the latest upstream commit * feat: add random selection option during starter select * move random selection behavior to seperate label * Update public/locales submodule reference * Remove debug console.log statement * Update locales * Update src/ui/starter-select-ui-handler.ts Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> * Update src/ui/starter-select-ui-handler.ts Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> * Update src/ui/starter-select-ui-handler.ts Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> * Update locales submodule --------- Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> --- public/locales | 2 +- src/ui/starter-select-ui-handler.ts | 166 +++++++++++++++++++++++----- 2 files changed, 140 insertions(+), 28 deletions(-) diff --git a/public/locales b/public/locales index 2e03bc8f273..4928231e22a 160000 --- a/public/locales +++ b/public/locales @@ -1 +1 @@ -Subproject commit 2e03bc8f2736269bfa365faad587c3ec54a37621 +Subproject commit 4928231e22a06dce2b55d9b04cd2b283c2ee4afb diff --git a/src/ui/starter-select-ui-handler.ts b/src/ui/starter-select-ui-handler.ts index 691e339eafc..38a2bb85de6 100644 --- a/src/ui/starter-select-ui-handler.ts +++ b/src/ui/starter-select-ui-handler.ts @@ -130,9 +130,10 @@ const valueReductionMax = 2; const filterBarHeight = 17; const speciesContainerX = 109; // if team on the RIGHT: 109 / if on the LEFT: 143 const teamWindowX = 285; // if team on the RIGHT: 285 / if on the LEFT: 109 -const teamWindowY = 18; +const teamWindowY = 38; const teamWindowWidth = 34; -const teamWindowHeight = 132; +const teamWindowHeight = 107; +const randomSelectionWindowHeight = 20; /** * Calculates the starter position for a Pokemon of a given UI index @@ -318,6 +319,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { private starterIconsCursorObj: Phaser.GameObjects.Image; private valueLimitLabel: Phaser.GameObjects.Text; private startCursorObj: Phaser.GameObjects.NineSlice; + private randomCursorObj: Phaser.GameObjects.NineSlice; private iconAnimHandler: PokemonIconAnimHandler; @@ -366,8 +368,9 @@ export default class StarterSelectUiHandler extends MessageUiHandler { starterContainerBg.setOrigin(0, 0); this.starterSelectContainer.add(starterContainerBg); - this.starterSelectContainer.add(addWindow(this.scene, teamWindowX, teamWindowY, teamWindowWidth, teamWindowHeight)); - this.starterSelectContainer.add(addWindow(this.scene, teamWindowX, teamWindowY + teamWindowHeight - 5, teamWindowWidth, teamWindowWidth, true)); + this.starterSelectContainer.add(addWindow(this.scene, teamWindowX, teamWindowY - randomSelectionWindowHeight, teamWindowWidth, randomSelectionWindowHeight, true)); + this.starterSelectContainer.add(addWindow(this.scene, teamWindowX, teamWindowY, teamWindowWidth, teamWindowHeight )); + this.starterSelectContainer.add(addWindow(this.scene, teamWindowX, teamWindowY + teamWindowHeight, teamWindowWidth, teamWindowWidth, true)); this.starterSelectContainer.add(starterContainerWindow); // Create and initialise filter bar @@ -605,6 +608,15 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.startCursorObj.setOrigin(0, 0); this.starterSelectContainer.add(this.startCursorObj); + const randomSelectLabel = addTextObject(this.scene, teamWindowX + 17, 23, i18next.t("starterSelectUiHandler:randomize"), TextStyle.TOOLTIP_CONTENT); + randomSelectLabel.setOrigin(0.5, 0); + this.starterSelectContainer.add(randomSelectLabel); + + this.randomCursorObj = this.scene.add.nineslice(teamWindowX + 4, 21, "select_cursor", undefined, 26, 15, 6, 6, 6, 6); + this.randomCursorObj.setVisible(false); + this.randomCursorObj.setOrigin(0, 0); + this.starterSelectContainer.add(this.randomCursorObj); + const starterSpecies: Species[] = []; const starterBoxContainer = this.scene.add.container(speciesContainerX + 6, 9); //115 @@ -1337,9 +1349,9 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.starterIconsCursorIndex = this.starterSpecies.length - 1; this.moveStarterIconsCursor(this.starterIconsCursorIndex); } else { + // TODO: how can we get here if start button can't be selected? this appears to be redundant this.startCursorObj.setVisible(false); - this.filterBarCursor = Math.max(1, this.filterBar.numFilters - 1); - this.setFilterMode(true); + this.randomCursorObj.setVisible(true); } success = true; break; @@ -1386,14 +1398,18 @@ export default class StarterSelectUiHandler extends MessageUiHandler { case Button.UP: if (this.filterBar.openDropDown) { success = this.filterBar.decDropDownCursor(); - } else if (this.filterBarCursor === this.filterBar.numFilters - 1 && this.starterSpecies.length > 0) { + } else if (this.filterBarCursor === this.filterBar.numFilters - 1 ) { // UP from the last filter, move to start button this.setFilterMode(false); this.cursorObj.setVisible(false); - this.startCursorObj.setVisible(true); + if (this.starterSpecies.length > 0) { + this.startCursorObj.setVisible(true); + } else { + this.randomCursorObj.setVisible(true); + } success = true; } else if (numberOfStarters > 0) { - // UP from filter bar to bottom of Pokemon list + // UP from filter bar to bottom of Pokemon list this.setFilterMode(false); this.scrollCursor = Math.max(0, numOfRows - 9); this.updateScroll(); @@ -1410,12 +1426,11 @@ export default class StarterSelectUiHandler extends MessageUiHandler { case Button.DOWN: if (this.filterBar.openDropDown) { success = this.filterBar.incDropDownCursor(); - } else if (this.filterBarCursor === this.filterBar.numFilters - 1 && this.starterSpecies.length > 0) { - // DOWN from the last filter, move to Pokemon in party if any + } else if (this.filterBarCursor === this.filterBar.numFilters - 1) { + // DOWN from the last filter, move to random selection label this.setFilterMode(false); this.cursorObj.setVisible(false); - this.starterIconsCursorIndex = 0; - this.moveStarterIconsCursor(this.starterIconsCursorIndex); + this.randomCursorObj.setVisible(true); success = true; } else if (numberOfStarters > 0) { // DOWN from filter bar to top of Pokemon list @@ -1437,8 +1452,100 @@ export default class StarterSelectUiHandler extends MessageUiHandler { success = true; break; } + } else if (this.randomCursorObj.visible) { + switch (button) { + case Button.ACTION: + if (this.starterSpecies.length >= 6) { + error = true; + break; + } + const currentPartyValue = this.starterSpecies.map(s => s.generation).reduce((total: number, _gen: number, i: number ) => total + this.scene.gameData.getSpeciesStarterValue(this.starterSpecies[i].speciesId), 0); + // Filter valid starters + const validStarters = this.filteredStarterContainers.filter(starter => { + const species = starter.species; + const [ isDupe ] = this.isInParty(species); + const starterCost = this.scene.gameData.getSpeciesStarterValue(species.speciesId); + const isValidForChallenge = new BooleanHolder(true); + Challenge.applyChallenges( + this.scene.gameMode, + Challenge.ChallengeType.STARTER_CHOICE, + species, + isValidForChallenge, + this.scene.gameData.getSpeciesDexAttrProps( + species, + this.getCurrentDexProps(species.speciesId) + ), + this.isPartyValid() + ); + const isCaught = this.scene.gameData.dexData[species.speciesId].caughtAttr; + return ( + !isDupe && + isValidForChallenge.value && + currentPartyValue + starterCost <= this.getValueLimit() && + isCaught + ); + }); + if (validStarters.length === 0) { + error = true; // No valid starters available + break; + } + // Select random starter + const randomStarter = validStarters[Math.floor(Math.random() * validStarters.length)]; + const randomSpecies = randomStarter.species; + // Set species and prepare attributes + this.setSpecies(randomSpecies); + const dexAttr = this.getCurrentDexProps(randomSpecies.speciesId); + const props = this.scene.gameData.getSpeciesDexAttrProps(randomSpecies, dexAttr); + const abilityIndex = this.abilityCursor; + const nature = this.natureCursor as unknown as Nature; + const moveset = this.starterMoveset?.slice(0) as StarterMoveset; + const starterCost = this.scene.gameData.getSpeciesStarterValue(randomSpecies.speciesId); + const speciesForm = getPokemonSpeciesForm(randomSpecies.speciesId, props.formIndex); + // Load assets and add to party + speciesForm + .loadAssets(this.scene, props.female, props.formIndex, props.shiny, props.variant, true) + .then(() => { + if (this.tryUpdateValue(starterCost, true)) { + this.addToParty(randomSpecies, dexAttr, abilityIndex, nature, moveset, true); + ui.playSelect(); + } + }); + break; + case Button.UP: + this.randomCursorObj.setVisible(false); + this.filterBarCursor = this.filterBar.numFilters - 1; + this.setFilterMode(true); + success = true; + break; + case Button.DOWN: + this.randomCursorObj.setVisible(false); + if (this.starterSpecies.length > 0) { + this.starterIconsCursorIndex = 0; + this.moveStarterIconsCursor(this.starterIconsCursorIndex); + } else { + this.filterBarCursor = this.filterBar.numFilters - 1; + this.setFilterMode(true); + } + success = true; + break; + case Button.LEFT: + if (numberOfStarters > 0) { + this.randomCursorObj.setVisible(false); + this.cursorObj.setVisible(true); + this.setCursor(onScreenFirstIndex + 8); // set last column + success = true; + } + break; + case Button.RIGHT: + if (numberOfStarters > 0) { + this.randomCursorObj.setVisible(false); + this.cursorObj.setVisible(true); + this.setCursor(onScreenFirstIndex); // set first column + success = true; + } + break; + } } else { - let starterContainer; const starterData = this.scene.gameData.starterData[this.lastSpecies.speciesId]; // prepare persistent starter data to store changes @@ -1466,7 +1573,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { Challenge.applyChallenges(this.scene.gameMode, Challenge.ChallengeType.STARTER_CHOICE, this.lastSpecies, isValidForChallenge, this.scene.gameData.getSpeciesDexAttrProps(this.lastSpecies, this.getCurrentDexProps(this.lastSpecies.speciesId)), isPartyValid); - const currentPartyValue = this.starterSpecies.map(s => s.generation).reduce((total: number, gen: number, i: number) => total += this.scene.gameData.getSpeciesStarterValue(this.starterSpecies[i].speciesId), 0); + const currentPartyValue = this.starterSpecies.map(s => s.generation).reduce((total: number, _gen: number, i: number) => total += this.scene.gameData.getSpeciesStarterValue(this.starterSpecies[i].speciesId), 0); const newCost = this.scene.gameData.getSpeciesStarterValue(this.lastSpecies.speciesId); if (!isDupe && isValidForChallenge.value && currentPartyValue + newCost <= this.getValueLimit() && this.starterSpecies.length < PLAYER_PARTY_MAX_SIZE) { // this checks to make sure the pokemon doesn't exist in your party, it's valid for the challenge and that it won't go over the cost limit; if it meets all these criteria it will add it to your party options = [ @@ -1605,7 +1712,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { ui.showText(i18next.t("starterSelectUiHandler:selectNature"), null, () => { const natures = this.scene.gameData.getNaturesForAttr(this.speciesStarterDexEntry?.natureAttr); ui.setModeWithoutClear(Mode.OPTION_SELECT, { - options: natures.map((n: Nature, i: number) => { + options: natures.map((n: Nature, _i: number) => { const option: OptionSelectItem = { label: getNatureName(n, true, true, true, this.scene.uiTheme), handler: () => { @@ -2016,11 +2123,10 @@ export default class StarterSelectUiHandler extends MessageUiHandler { } } else { if (this.starterIconsCursorIndex === 0) { - // Up from first Pokemon in the team > go to filter + // Up from first Pokemon in the team > go to Random selection this.starterIconsCursorObj.setVisible(false); this.setSpecies(null); - this.filterBarCursor = Math.max(1, this.filterBar.numFilters - 1); - this.setFilterMode(true); + this.randomCursorObj.setVisible(true); } else { this.starterIconsCursorIndex--; this.moveStarterIconsCursor(this.starterIconsCursorIndex); @@ -2065,9 +2171,12 @@ export default class StarterSelectUiHandler extends MessageUiHandler { success = this.setCursor(this.cursor - 1); } else { // LEFT from filtered Pokemon, on the left edge - - if (this.starterSpecies.length === 0) { - // no starter in team > wrap around to the last column + if ( onScreenCurrentRow === 0 ) { + // from the first row of starters we go to the random selection + this.cursorObj.setVisible(false); + this.randomCursorObj.setVisible(true); + } else if (this.starterSpecies.length === 0) { + // no starter in team and not on first row > wrap around to the last column success = this.setCursor(this.cursor + Math.min(8, numberOfStarters - this.cursor)); } else if (onScreenCurrentRow < 7) { @@ -2103,7 +2212,11 @@ export default class StarterSelectUiHandler extends MessageUiHandler { success = this.setCursor(this.cursor + 1); } else { // RIGHT from filtered Pokemon, on the right edge - if (this.starterSpecies.length === 0) { + if ( onScreenCurrentRow === 0 ) { + // from the first row of starters we go to the random selection + this.cursorObj.setVisible(false); + this.randomCursorObj.setVisible(true); + } else if (this.starterSpecies.length === 0) { // no selected starter in team > wrap around to the first column success = this.setCursor(this.cursor - Math.min(8, this.cursor % 9)); @@ -2159,7 +2272,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { return [ isDupe, removeIndex ]; } - addToParty(species: PokemonSpecies, dexAttr: bigint, abilityIndex: integer, nature: Nature, moveset: StarterMoveset) { + addToParty(species: PokemonSpecies, dexAttr: bigint, abilityIndex: integer, nature: Nature, moveset: StarterMoveset, randomSelection: boolean = false) { const props = this.scene.gameData.getSpeciesDexAttrProps(species, dexAttr); this.starterIcons[this.starterSpecies.length].setTexture(species.getIconAtlasKey(props.formIndex, props.shiny, props.variant)); this.starterIcons[this.starterSpecies.length].setFrame(species.getIconId(props.female, props.formIndex, props.shiny, props.variant)); @@ -2170,7 +2283,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.starterAbilityIndexes.push(abilityIndex); this.starterNatures.push(nature); this.starterMovesets.push(moveset); - if (this.speciesLoaded.get(species.speciesId)) { + if (this.speciesLoaded.get(species.speciesId) || randomSelection ) { getPokemonSpeciesForm(species.speciesId, props.formIndex).cry(this.scene); } this.updateInstructions(); @@ -3001,7 +3114,6 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.dexAttrCursor = 0n; this.abilityCursor = -1; this.natureCursor = -1; - // We will only update the sprite if there is a change to form, shiny/variant // or gender for species with gender sprite differences const shouldUpdateSprite = (species?.genderDiffs && !isNullOrUndefined(female)) @@ -3431,7 +3543,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { } tryUpdateValue(add?: integer, addingToParty?: boolean): boolean { - const value = this.starterSpecies.map(s => s.generation).reduce((total: integer, gen: integer, i: integer) => total += this.scene.gameData.getSpeciesStarterValue(this.starterSpecies[i].speciesId), 0); + const value = this.starterSpecies.map(s => s.generation).reduce((total: integer, _gen: integer, i: integer) => total += this.scene.gameData.getSpeciesStarterValue(this.starterSpecies[i].speciesId), 0); const newValue = value + (add || 0); const valueLimit = this.getValueLimit(); const overLimit = newValue > valueLimit; From f83ab00ce472511f346e4c6d914484b41c16436f Mon Sep 17 00:00:00 2001 From: Madmadness65 Date: Sun, 12 Jan 2025 13:34:21 -0600 Subject: [PATCH 081/119] Add missing 'unused' comment before Max Moves --- src/data/move.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/data/move.ts b/src/data/move.ts index c86b168fb57..98fb58b2d73 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -10248,6 +10248,7 @@ export function initMoves() { .bitingMove(), new StatusMove(Moves.COURT_CHANGE, Type.NORMAL, 100, 10, -1, 0, 8) .attr(SwapArenaTagsAttr, [ ArenaTagType.AURORA_VEIL, ArenaTagType.LIGHT_SCREEN, ArenaTagType.MIST, ArenaTagType.REFLECT, ArenaTagType.SPIKES, ArenaTagType.STEALTH_ROCK, ArenaTagType.STICKY_WEB, ArenaTagType.TAILWIND, ArenaTagType.TOXIC_SPIKES ]), + /* Unused */ new AttackMove(Moves.MAX_FLARE, Type.FIRE, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) .unimplemented() From 0107b1d47ea4a898f39dd3534fcccd4241c03470 Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Sun, 12 Jan 2025 15:33:05 -0800 Subject: [PATCH 082/119] [Refactor] Create global scene variable (#4766) * Replace various `scene` pass-arounds with global scene variable * Modify tests * Add scene back to `fade[in|out]()` calls Co-authored-by: Moka <54149968+MokaStitcher@users.noreply.github.com> * Fix Bug Superfan ME test Co-authored-by: Moka <54149968+MokaStitcher@users.noreply.github.com> * Re-enable fixed test Co-authored-by: Moka <54149968+MokaStitcher@users.noreply.github.com> * Rename `gScene` to `globalScene` * Move `globalScene` to its own file to fix import/async issues * Fix `SelectModifierPhase` tests * Fix ME tests by removing `scene` from `expect()`s * Resolve merge issues * Remove tsdocs referencing `scene` params Remove missed instances of `.scene` * Remove unnecessary `globalScene` usage in `loading-scene.ts` * Fix merge conflicts * Attempt to fix circular import issue * Found the source of the import issue * Fix merge issues --------- Co-authored-by: Moka <54149968+MokaStitcher@users.noreply.github.com> --- eslint.config.js | 1 + src/@types/common.ts | 4 +- src/@types/i18next.d.ts | 2 +- src/battle-scene.ts | 223 ++++--- src/battle.ts | 109 +-- src/data/ability.ts | 353 +++++----- src/data/arena-tag.ts | 173 +++-- src/data/balance/biomes.ts | 3 +- src/data/balance/pokemon-evolutions.ts | 123 ++-- src/data/battle-anims.ts | 152 +++-- src/data/battler-tags.ts | 330 +++++----- src/data/berry.ts | 14 +- src/data/challenge.ts | 18 +- src/data/custom-pokemon-data.ts | 6 +- src/data/daily-run.ts | 23 +- src/data/egg-hatch-data.ts | 21 +- src/data/egg.ts | 110 ++-- src/data/move.ts | 573 ++++++++-------- .../encounters/a-trainers-test-encounter.ts | 36 +- .../encounters/absolute-avarice-encounter.ts | 138 ++-- .../an-offer-you-cant-refuse-encounter.ts | 45 +- .../encounters/berries-abound-encounter.ts | 130 ++-- .../encounters/bug-type-superfan-encounter.ts | 120 ++-- .../encounters/clowning-around-encounter.ts | 132 ++-- .../encounters/dancing-lessons-encounter.ts | 104 +-- .../encounters/dark-deal-encounter.ts | 37 +- .../encounters/delibirdy-encounter.ts | 154 ++--- .../department-store-sale-encounter.ts | 31 +- .../encounters/field-trip-encounter.ts | 95 +-- .../encounters/fiery-fallout-encounter.ts | 96 +-- .../encounters/fight-or-flight-encounter.ts | 74 ++- .../encounters/fun-and-games-encounter.ts | 199 +++--- .../global-trade-system-encounter.ts | 275 ++++---- .../encounters/lost-at-sea-encounter.ts | 31 +- .../mysterious-challengers-encounter.ts | 60 +- .../encounters/mysterious-chest-encounter.ts | 66 +- .../encounters/part-timer-encounter.ts | 180 ++--- .../encounters/safari-zone-encounter.ts | 241 +++---- .../shady-vitamin-dealer-encounter.ts | 78 +-- .../slumbering-snorlax-encounter.ts | 47 +- .../teleporting-hijinks-encounter.ts | 135 ++-- .../the-expert-pokemon-breeder-encounter.ts | 143 ++-- .../the-pokemon-salesman-encounter.ts | 39 +- .../encounters/the-strong-stuff-encounter.ts | 60 +- .../the-winstrate-challenge-encounter.ts | 171 ++--- .../encounters/training-session-encounter.ts | 132 ++-- .../encounters/trash-to-treasure-encounter.ts | 109 +-- .../encounters/uncommon-breed-encounter.ts | 84 +-- .../encounters/weird-dream-encounter.ts | 177 ++--- .../mystery-encounter-dialogue.ts | 2 +- .../mystery-encounter-option.ts | 48 +- .../mystery-encounter-requirements.ts | 214 +++--- .../mystery-encounter-save-data.ts | 4 +- .../mystery-encounters/mystery-encounter.ts | 127 ++-- .../mystery-encounters/mystery-encounters.ts | 2 +- .../can-learn-move-requirement.ts | 13 +- .../utils/encounter-dialogue-utils.ts | 39 +- .../utils/encounter-phase-utils.ts | 369 +++++------ .../utils/encounter-pokemon-utils.ts | 254 +++---- .../encounter-transformation-sequence.ts | 86 +-- src/data/pokeball.ts | 31 +- src/data/pokemon-forms.ts | 35 +- src/data/pokemon-species.ts | 59 +- src/data/status-effect.ts | 3 +- src/data/terrain.ts | 6 +- src/data/trainer-config.ts | 148 +++-- src/data/weather.ts | 18 +- src/events/arena.ts | 8 +- src/events/battle-scene.ts | 4 +- src/field/anims.ts | 80 +-- src/field/arena.ts | 117 ++-- src/field/damage-number-handler.ts | 23 +- src/field/mystery-encounter-intro.ts | 63 +- src/field/pokemon-sprite-sparkle-handler.ts | 8 +- src/field/pokemon.ts | 566 ++++++++-------- src/field/trainer.ts | 72 +- src/game-mode.ts | 29 +- src/global-scene.ts | 7 + src/inputs-controller.ts | 57 +- src/interfaces/held-modifier-config.ts | 4 +- src/messages.ts | 5 +- src/modifier/modifier-type.ts | 206 +++--- src/modifier/modifier.ts | 294 ++++----- src/overrides.ts | 20 +- src/phase.ts | 14 +- src/phases/add-enemy-buff-modifier-phase.ts | 14 +- src/phases/attempt-capture-phase.ts | 127 ++-- src/phases/attempt-run-phase.ts | 31 +- src/phases/battle-end-phase.ts | 42 +- src/phases/battle-phase.ts | 18 +- src/phases/berry-phase.ts | 15 +- src/phases/check-status-effect-phase.ts | 13 +- src/phases/check-switch-phase.ts | 28 +- src/phases/command-phase.ts | 190 +++--- src/phases/common-anim-phase.ts | 15 +- src/phases/damage-anim-phase.ts | 28 +- src/phases/egg-hatch-phase.ts | 123 ++-- src/phases/egg-lapse-phase.ts | 49 +- src/phases/egg-summary-phase.ts | 16 +- src/phases/encounter-phase.ts | 287 ++++---- src/phases/end-card-phase.ts | 26 +- src/phases/end-evolution-phase.ts | 8 +- src/phases/enemy-command-phase.ts | 16 +- .../enemy-party-member-pokemon-phase.ts | 7 +- src/phases/evolution-phase.ts | 140 ++-- src/phases/exp-phase.ts | 12 +- src/phases/faint-phase.ts | 84 +-- src/phases/field-phase.ts | 5 +- src/phases/form-change-phase.ts | 67 +- src/phases/game-over-modifier-reward-phase.ts | 20 +- src/phases/game-over-phase.ts | 186 +++--- src/phases/hide-party-exp-bar-phase.ts | 8 +- src/phases/learn-move-phase.ts | 69 +- src/phases/level-cap-phase.ts | 12 +- src/phases/level-up-phase.ts | 28 +- src/phases/login-phase.ts | 49 +- src/phases/message-phase.ts | 16 +- src/phases/modifier-reward-phase.ts | 15 +- src/phases/money-reward-phase.ts | 16 +- src/phases/move-anim-test-phase.ts | 16 +- src/phases/move-charge-phase.ts | 22 +- src/phases/move-effect-phase.ts | 53 +- src/phases/move-end-phase.ts | 10 +- src/phases/move-header-phase.ts | 8 +- src/phases/move-phase.ts | 62 +- src/phases/mystery-encounter-phases.ts | 272 ++++---- src/phases/new-battle-phase.ts | 3 +- src/phases/new-biome-encounter-phase.ts | 22 +- src/phases/next-encounter-phase.ts | 44 +- src/phases/obtain-status-effect-phase.ts | 16 +- src/phases/party-exp-phase.ts | 8 +- src/phases/party-heal-phase.ts | 22 +- src/phases/party-member-pokemon-phase.ts | 12 +- .../player-party-member-pokemon-phase.ts | 7 +- src/phases/pokemon-anim-phase.ts | 74 +-- src/phases/pokemon-heal-phase.ts | 29 +- src/phases/pokemon-phase.ts | 14 +- src/phases/post-game-over-phase.ts | 24 +- src/phases/post-summon-phase.ts | 14 +- src/phases/post-turn-status-effect-phase.ts | 18 +- src/phases/quiet-form-change-phase.ts | 40 +- src/phases/reload-session-phase.ts | 14 +- src/phases/return-phase.ts | 10 +- src/phases/ribbon-modifier-reward-phase.ts | 20 +- src/phases/scan-ivs-phase.ts | 34 +- src/phases/select-biome-phase.ts | 44 +- src/phases/select-challenge-phase.ts | 10 +- src/phases/select-gender-phase.ts | 24 +- src/phases/select-modifier-phase.ts | 136 ++-- src/phases/select-starter-phase.ts | 64 +- src/phases/select-target-phase.ts | 24 +- src/phases/shiny-sparkle-phase.ts | 10 +- src/phases/show-ability-phase.ts | 10 +- src/phases/show-party-exp-bar-phase.ts | 26 +- src/phases/show-trainer-phase.ts | 14 +- src/phases/stat-stage-change-phase.ts | 58 +- src/phases/summon-missing-phase.ts | 10 +- src/phases/summon-phase.ts | 115 ++-- src/phases/switch-biome-phase.ts | 54 +- src/phases/switch-phase.ts | 25 +- src/phases/switch-summon-phase.ts | 61 +- src/phases/test-message-phase.ts | 5 +- src/phases/title-phase.ts | 138 ++-- src/phases/toggle-double-position-phase.ts | 12 +- src/phases/trainer-message-test-phase.ts | 10 +- src/phases/trainer-victory-phase.ts | 50 +- src/phases/turn-end-phase.ts | 38 +- src/phases/turn-init-phase.ts | 39 +- src/phases/turn-start-phase.ts | 61 +- src/phases/unavailable-phase.ts | 10 +- src/phases/unlock-phase.ts | 21 +- src/phases/victory-phase.ts | 84 +-- src/phases/weather-effect-phase.ts | 20 +- src/pipelines/field-sprite.ts | 17 +- src/pipelines/invert.ts | 2 +- src/pipelines/sprite.ts | 12 +- src/system/achv.ts | 91 +-- src/system/arena-data.ts | 5 +- src/system/challenge-data.ts | 3 +- src/system/egg-data.ts | 8 +- src/system/game-data.ts | 288 ++++---- src/system/game-speed.ts | 11 +- src/system/modifier-data.ts | 15 +- src/system/pokemon-data.ts | 20 +- src/system/session-history.ts | 6 +- src/system/settings/settings-gamepad.ts | 30 +- src/system/settings/settings-keyboard.ts | 35 +- src/system/settings/settings.ts | 136 ++-- src/system/trainer-data.ts | 7 +- .../version_migration/version_converter.ts | 2 +- .../version_migration/versions/v1_0_4.ts | 3 +- src/system/voucher.ts | 9 +- src/test/abilities/aroma_veil.test.ts | 2 +- src/test/abilities/commander.test.ts | 3 +- src/test/abilities/dancer.test.ts | 2 +- src/test/abilities/gulp_missile.test.ts | 2 +- src/test/abilities/infiltrator.test.ts | 2 +- src/test/abilities/libero.test.ts | 3 +- src/test/abilities/protean.test.ts | 3 +- src/test/abilities/speed_boost.test.ts | 2 +- src/test/abilities/sturdy.test.ts | 2 +- src/test/abilities/unburden.test.ts | 2 +- src/test/achievements/achievement.test.ts | 32 +- src/test/battle/battle.test.ts | 4 +- src/test/battle/error-handling.test.ts | 45 -- src/test/battlerTags/octolock.test.ts | 27 +- src/test/battlerTags/stockpiling.test.ts | 61 +- src/test/battlerTags/substitute.test.ts | 80 +-- src/test/boss-pokemon.test.ts | 2 +- src/test/eggs/egg.test.ts | 28 +- src/test/eggs/manaphy-egg.test.ts | 6 +- src/test/enemy_command.test.ts | 9 +- src/test/escape-calculations.test.ts | 2 +- src/test/field/pokemon.test.ts | 2 +- src/test/game-mode.test.ts | 3 +- src/test/items/dire_hit.test.ts | 2 +- .../double_battle_chance_booster.test.ts | 2 +- src/test/items/exp_booster.test.ts | 2 +- src/test/items/grip_claw.test.ts | 4 +- src/test/items/light_ball.test.ts | 40 +- src/test/items/lock_capsule.test.ts | 2 +- src/test/items/metal_powder.test.ts | 24 +- src/test/items/quick_powder.test.ts | 24 +- .../items/temp_stat_stage_booster.test.ts | 2 +- src/test/items/thick_club.test.ts | 36 +- src/test/moves/aurora_veil.test.ts | 12 +- src/test/moves/burning_jealousy.test.ts | 3 +- src/test/moves/destiny_bond.test.ts | 3 +- src/test/moves/dragon_rage.test.ts | 2 +- src/test/moves/dynamax_cannon.test.ts | 10 +- src/test/moves/effectiveness.test.ts | 2 +- src/test/moves/fissure.test.ts | 2 +- src/test/moves/flame_burst.test.ts | 2 +- src/test/moves/geomancy.test.ts | 3 +- src/test/moves/light_screen.test.ts | 12 +- src/test/moves/order_up.test.ts | 3 +- src/test/moves/parting_shot.test.ts | 10 +- src/test/moves/purify.test.ts | 2 +- src/test/moves/reflect.test.ts | 12 +- src/test/moves/round.test.ts | 2 +- src/test/moves/spit_up.test.ts | 3 +- src/test/moves/steamroller.test.ts | 2 +- src/test/moves/stockpile.test.ts | 3 +- src/test/moves/substitute.test.ts | 2 +- src/test/moves/swallow.test.ts | 3 +- src/test/moves/tera_blast.test.ts | 2 +- src/test/moves/thunder_wave.test.ts | 2 +- src/test/moves/toxic_spikes.test.ts | 13 +- .../mystery-encounter/encounter-test-utils.ts | 14 +- .../a-trainers-test-encounter.test.ts | 6 +- .../absolute-avarice-encounter.test.ts | 2 +- ...an-offer-you-cant-refuse-encounter.test.ts | 10 +- .../berries-abound-encounter.test.ts | 12 +- .../bug-type-superfan-encounter.test.ts | 8 +- .../clowning-around-encounter.test.ts | 34 +- .../dancing-lessons-encounter.test.ts | 2 +- .../encounters/delibirdy-encounter.test.ts | 36 +- .../department-store-sale-encounter.test.ts | 2 +- .../encounters/field-trip-encounter.test.ts | 2 +- .../fiery-fallout-encounter.test.ts | 6 +- .../fight-or-flight-encounter.test.ts | 6 +- .../fun-and-games-encounter.test.ts | 4 +- .../global-trade-system-encounter.test.ts | 6 +- .../encounters/lost-at-sea-encounter.test.ts | 6 +- .../mysterious-challengers-encounter.test.ts | 6 +- .../encounters/part-timer-encounter.test.ts | 12 +- .../encounters/safari-zone.test.ts | 6 +- .../teleporting-hijinks-encounter.test.ts | 6 +- .../the-expert-breeder-encounter.test.ts | 6 +- .../the-pokemon-salesman-encounter.test.ts | 8 +- .../the-strong-stuff-encounter.test.ts | 6 +- .../the-winstrate-challenge-encounter.test.ts | 8 +- .../trash-to-treasure-encounter.test.ts | 6 +- .../uncommon-breed-encounter.test.ts | 12 +- .../encounters/weird-dream-encounter.test.ts | 6 +- .../mystery-encounter-utils.test.ts | 50 +- .../mystery-encounter.test.ts | 2 +- src/test/phases/form-change-phase.test.ts | 2 +- .../phases/mystery-encounter-phase.test.ts | 4 +- src/test/phases/phases.test.ts | 8 +- src/test/phases/select-modifier-phase.test.ts | 125 ++-- src/test/reload.test.ts | 4 +- .../settingMenu/rebinding_setting.test.ts | 2 +- src/test/system/game_data.test.ts | 10 +- src/test/ui/starter-select.test.ts | 10 +- src/test/ui/transfer-item.test.ts | 2 +- src/test/ui/type-hints.test.ts | 2 +- src/test/utils/gameManager.ts | 34 +- src/test/utils/gameManagerUtils.ts | 35 +- src/test/utils/helpers/challengeModeHelper.ts | 10 +- src/test/utils/helpers/classicModeHelper.ts | 6 +- src/test/utils/helpers/dailyModeHelper.ts | 4 +- src/test/utils/helpers/gameManagerHelper.ts | 2 +- src/test/utils/helpers/modifiersHelper.ts | 3 +- src/test/utils/helpers/moveHelper.ts | 4 +- src/test/utils/helpers/overridesHelper.ts | 16 +- src/test/utils/helpers/reloadHelper.ts | 10 +- src/test/utils/inputsHandler.ts | 6 +- src/test/utils/mocks/mockGameObjectCreator.ts | 2 +- src/test/utils/mocks/mockTextureManager.ts | 2 +- src/test/utils/mocks/mockVideoGameObject.ts | 2 +- .../mocks/mocksContainer/mockContainer.ts | 4 +- .../mocks/mocksContainer/mockGraphics.ts | 2 +- .../mocks/mocksContainer/mockRectangle.ts | 2 +- .../utils/mocks/mocksContainer/mockSprite.ts | 2 +- .../utils/mocks/mocksContainer/mockText.ts | 2 +- .../utils/mocks/mocksContainer/mockTexture.ts | 4 +- src/test/utils/phaseInterceptor.ts | 8 +- src/test/vitest.setup.ts | 2 + src/timed-event-manager.ts | 17 +- src/touch-controls.ts | 6 +- src/tutorial.ts | 75 +-- src/ui-inputs.ts | 74 +-- src/ui/ability-bar.ts | 20 +- src/ui/abstact-option-select-ui-handler.ts | 28 +- src/ui/achv-bar.ts | 32 +- src/ui/achvs-ui-handler.ts | 68 +- src/ui/admin-ui-handler.ts | 39 +- src/ui/arena-flyout.ts | 71 +- src/ui/autocomplete-ui-handler.ts | 5 +- src/ui/awaitable-ui-handler.ts | 10 +- src/ui/ball-ui-handler.ts | 34 +- src/ui/battle-flyout.ts | 38 +- src/ui/battle-info.ts | 144 ++-- src/ui/battle-message-ui-handler.ts | 53 +- src/ui/bgm-bar.ts | 16 +- src/ui/candy-bar.ts | 31 +- src/ui/challenges-select-ui-handler.ts | 111 ++-- src/ui/char-sprite.ts | 24 +- src/ui/command-ui-handler.ts | 24 +- src/ui/confirm-ui-handler.ts | 13 +- src/ui/daily-run-scoreboard.ts | 40 +- src/ui/dropdown.ts | 23 +- src/ui/egg-counter-container.ts | 29 +- src/ui/egg-gacha-ui-handler.ts | 154 ++--- src/ui/egg-hatch-scene-handler.ts | 22 +- src/ui/egg-list-ui-handler.ts | 58 +- src/ui/egg-summary-ui-handler.ts | 44 +- src/ui/evolution-scene-handler.ts | 20 +- src/ui/fight-ui-handler.ts | 60 +- src/ui/filter-bar.ts | 21 +- src/ui/form-modal-ui-handler.ts | 25 +- src/ui/game-stats-ui-handler.ts | 43 +- src/ui/hatched-pokemon-container.ts | 25 +- src/ui/loading-modal-ui-handler.ts | 9 +- src/ui/login-form-ui-handler.ts | 47 +- src/ui/menu-ui-handler.ts | 87 +-- src/ui/message-ui-handler.ts | 34 +- src/ui/modal-ui-handler.ts | 30 +- src/ui/modifier-select-ui-handler.ts | 184 +++--- src/ui/move-info-overlay.ts | 52 +- src/ui/mystery-encounter-ui-handler.ts | 102 +-- src/ui/party-exp-bar.ts | 26 +- src/ui/party-ui-handler.ts | 172 ++--- src/ui/pokeball-tray.ts | 34 +- src/ui/pokemon-hatch-info-container.ts | 42 +- src/ui/pokemon-icon-anim-handler.ts | 6 +- src/ui/pokemon-info-container.ts | 131 ++-- src/ui/registration-form-ui-handler.ts | 14 +- src/ui/rename-form-ui-handler.ts | 7 +- src/ui/run-history-ui-handler.ts | 100 ++- src/ui/run-info-ui-handler.ts | 230 +++---- src/ui/save-slot-select-ui-handler.ts | 78 ++- src/ui/saving-icon-handler.ts | 14 +- src/ui/scroll-bar.ts | 13 +- src/ui/scrollable-grid-handler.ts | 9 +- src/ui/session-reload-modal-ui-handler.ts | 12 +- .../settings/abstract-binding-ui-handler.ts | 25 +- .../abstract-control-settings-ui-handler.ts | 63 +- .../settings/abstract-settings-ui-handler.ts | 71 +- src/ui/settings/gamepad-binding-ui-handler.ts | 28 +- .../settings/keyboard-binding-ui-handler.ts | 24 +- .../settings/move-touch-controls-handler.ts | 18 +- src/ui/settings/navigationMenu.ts | 36 +- src/ui/settings/option-select-ui-handler.ts | 5 +- src/ui/settings/settings-audio-ui-handler.ts | 10 +- .../settings/settings-display-ui-handler.ts | 10 +- .../settings/settings-gamepad-ui-handler.ts | 19 +- .../settings/settings-keyboard-ui-handler.ts | 33 +- src/ui/settings/settings-ui-handler.ts | 8 +- src/ui/starter-container.ts | 31 +- src/ui/starter-select-ui-handler.ts | 618 +++++++++--------- src/ui/stats-container.ts | 25 +- src/ui/summary-ui-handler.ts | 227 +++---- src/ui/target-select-ui-handler.ts | 24 +- src/ui/test-dialogue-ui-handler.ts | 13 +- src/ui/text.ts | 30 +- src/ui/time-of-day-widget.ts | 27 +- src/ui/title-ui-handler.ts | 33 +- src/ui/ui-handler.ts | 22 +- src/ui/ui-theme.ts | 38 +- src/ui/ui.ts | 175 +++-- src/ui/unavailable-modal-ui-handler.ts | 17 +- 393 files changed, 9517 insertions(+), 9449 deletions(-) create mode 100644 src/global-scene.ts delete mode 100644 src/test/battle/error-handling.test.ts diff --git a/eslint.config.js b/eslint.config.js index 2f2b466c66f..1cea5563a78 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -46,6 +46,7 @@ export default [ "computed-property-spacing": ["error", "never" ], // Enforces consistent spacing inside computed property brackets "space-infix-ops": ["error", { "int32Hint": false }], // Enforces spacing around infix operators "no-multiple-empty-lines": ["error", { "max": 2, "maxEOF": 1, "maxBOF": 0 }], // Disallows multiple empty lines + "@typescript-eslint/consistent-type-imports": "error", // Enforces type-only imports wherever possible } } ] diff --git a/src/@types/common.ts b/src/@types/common.ts index fcd946656dc..93d88a3b680 100644 --- a/src/@types/common.ts +++ b/src/@types/common.ts @@ -1,3 +1 @@ -import BattleScene from "#app/battle-scene"; - -export type ConditionFn = (scene: BattleScene, args?: any[]) => boolean; +export type ConditionFn = (args?: any[]) => boolean; diff --git a/src/@types/i18next.d.ts b/src/@types/i18next.d.ts index 3bd71bc6c61..0eaa1e6ff0f 100644 --- a/src/@types/i18next.d.ts +++ b/src/@types/i18next.d.ts @@ -1,4 +1,4 @@ -import { TOptions } from "i18next"; +import type { TOptions } from "i18next"; // Module declared to make referencing keys in the localization files type-safe. declare module "i18next" { diff --git a/src/battle-scene.ts b/src/battle-scene.ts index ae992f5c00f..6cc33dc476d 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -1,13 +1,18 @@ import Phaser from "phaser"; import UI from "#app/ui/ui"; -import Pokemon, { EnemyPokemon, PlayerPokemon } from "#app/field/pokemon"; -import PokemonSpecies, { allSpecies, getPokemonSpecies, PokemonSpeciesFilter } from "#app/data/pokemon-species"; -import { Constructor, isNullOrUndefined, randSeedInt } from "#app/utils"; +import type Pokemon from "#app/field/pokemon"; +import { EnemyPokemon, PlayerPokemon } from "#app/field/pokemon"; +import type { PokemonSpeciesFilter } from "#app/data/pokemon-species"; +import type PokemonSpecies from "#app/data/pokemon-species"; +import { allSpecies, getPokemonSpecies } from "#app/data/pokemon-species"; +import type { Constructor } from "#app/utils"; +import { isNullOrUndefined, randSeedInt } from "#app/utils"; import * as Utils from "#app/utils"; -import { ConsumableModifier, ConsumablePokemonModifier, DoubleBattleChanceBoosterModifier, ExpBalanceModifier, ExpShareModifier, FusePokemonModifier, HealingBoosterModifier, Modifier, ModifierBar, ModifierPredicate, MultipleParticipantExpBonusModifier, PersistentModifier, PokemonExpBoosterModifier, PokemonFormChangeItemModifier, PokemonHeldItemModifier, PokemonHpRestoreModifier, PokemonIncrementingStatModifier, RememberMoveModifier, TerastallizeModifier, TurnHeldItemTransferModifier } from "./modifier/modifier"; +import type { Modifier, ModifierPredicate, TurnHeldItemTransferModifier } from "./modifier/modifier"; +import { ConsumableModifier, ConsumablePokemonModifier, DoubleBattleChanceBoosterModifier, ExpBalanceModifier, ExpShareModifier, FusePokemonModifier, HealingBoosterModifier, ModifierBar, MultipleParticipantExpBonusModifier, PersistentModifier, PokemonExpBoosterModifier, PokemonFormChangeItemModifier, PokemonHeldItemModifier, PokemonHpRestoreModifier, PokemonIncrementingStatModifier, RememberMoveModifier, TerastallizeModifier } from "./modifier/modifier"; import { PokeballType } from "#enums/pokeball"; import { initCommonAnims, initMoveAnim, loadCommonAnimAssets, loadMoveAnimAssets, populateAnims } from "#app/data/battle-anims"; -import { Phase } from "#app/phase"; +import type { Phase } from "#app/phase"; import { initGameSpeed } from "#app/system/game-speed"; import { Arena, ArenaBase } from "#app/field/arena"; import { GameData } from "#app/system/game-data"; @@ -17,26 +22,32 @@ import { MusicPreference } from "#app/system/settings/settings"; import { getDefaultModifierTypeForTier, getEnemyModifierTypesForWave, getLuckString, getLuckTextTint, getModifierPoolForType, getModifierType, getPartyLuckValue, ModifierPoolType, modifierTypes, PokemonHeldItemModifierType } from "#app/modifier/modifier-type"; import AbilityBar from "#app/ui/ability-bar"; import { allAbilities, applyAbAttrs, applyPostBattleInitAbAttrs, applyPostItemLostAbAttrs, BlockItemTheftAbAttr, DoubleBattleChanceAbAttr, PostBattleInitAbAttr, PostItemLostAbAttr } from "#app/data/ability"; -import Battle, { BattleType, FixedBattleConfig } from "#app/battle"; -import { GameMode, GameModes, getGameMode } from "#app/game-mode"; +import type { FixedBattleConfig } from "#app/battle"; +import Battle, { BattleType } from "#app/battle"; +import type { GameMode } from "#app/game-mode"; +import { GameModes, getGameMode } from "#app/game-mode"; import FieldSpritePipeline from "#app/pipelines/field-sprite"; import SpritePipeline from "#app/pipelines/sprite"; import PartyExpBar from "#app/ui/party-exp-bar"; -import { trainerConfigs, TrainerSlot } from "#app/data/trainer-config"; +import type { TrainerSlot } from "#app/data/trainer-config"; +import { trainerConfigs } from "#app/data/trainer-config"; import Trainer, { TrainerVariant } from "#app/field/trainer"; -import TrainerData from "#app/system/trainer-data"; +import type TrainerData from "#app/system/trainer-data"; import SoundFade from "phaser3-rex-plugins/plugins/soundfade"; import { pokemonPrevolutions } from "#app/data/balance/pokemon-evolutions"; import PokeballTray from "#app/ui/pokeball-tray"; import InvertPostFX from "#app/pipelines/invert"; -import { Achv, achvs, ModifierAchv, MoneyAchv } from "#app/system/achv"; -import { Voucher, vouchers } from "#app/system/voucher"; +import type { Achv } from "#app/system/achv"; +import { achvs, ModifierAchv, MoneyAchv } from "#app/system/achv"; +import type { Voucher } from "#app/system/voucher"; +import { vouchers } from "#app/system/voucher"; import { Gender } from "#app/data/gender"; -import UIPlugin from "phaser3-rex-plugins/templates/ui/ui-plugin"; +import type UIPlugin from "phaser3-rex-plugins/templates/ui/ui-plugin"; import { addUiThemeOverrides } from "#app/ui/ui-theme"; -import PokemonData from "#app/system/pokemon-data"; +import type PokemonData from "#app/system/pokemon-data"; import { Nature } from "#enums/nature"; -import { FormChangeItem, pokemonFormChanges, SpeciesFormChange, SpeciesFormChangeManualTrigger, SpeciesFormChangeTimeOfDayTrigger, SpeciesFormChangeTrigger } from "#app/data/pokemon-forms"; +import type { SpeciesFormChange, SpeciesFormChangeTrigger } from "#app/data/pokemon-forms"; +import { FormChangeItem, pokemonFormChanges, SpeciesFormChangeManualTrigger, SpeciesFormChangeTimeOfDayTrigger } from "#app/data/pokemon-forms"; import { FormChangePhase } from "#app/phases/form-change-phase"; import { getTypeRgb } from "#app/data/type"; import { Type } from "#enums/type"; @@ -47,8 +58,9 @@ import PokemonInfoContainer from "#app/ui/pokemon-info-container"; import { biomeDepths, getBiomeName } from "#app/data/balance/biomes"; import { SceneBase } from "#app/scene-base"; import CandyBar from "#app/ui/candy-bar"; -import { Variant, variantColorCache, variantData, VariantSet } from "#app/data/variant"; -import { Localizable } from "#app/interfaces/locales"; +import type { Variant, VariantSet } from "#app/data/variant"; +import { variantColorCache, variantData } from "#app/data/variant"; +import type { Localizable } from "#app/interfaces/locales"; import Overrides from "#app/overrides"; import { InputsController } from "#app/inputs-controller"; import { UiInputs } from "#app/ui-inputs"; @@ -58,14 +70,14 @@ import { EaseType } from "#enums/ease-type"; import { BattleSpec } from "#enums/battle-spec"; import { BattleStyle } from "#enums/battle-style"; import { Biome } from "#enums/biome"; -import { ExpNotification } from "#enums/exp-notification"; +import type { ExpNotification } from "#enums/exp-notification"; import { MoneyFormat } from "#enums/money-format"; import { Moves } from "#enums/moves"; import { PlayerGender } from "#enums/player-gender"; import { Species } from "#enums/species"; import { UiTheme } from "#enums/ui-theme"; import { TimedEventManager } from "#app/timed-event-manager"; -import { PokemonAnimType } from "#enums/pokemon-anim-type"; +import type { PokemonAnimType } from "#enums/pokemon-anim-type"; import i18next from "i18next"; import { TrainerType } from "#enums/trainer-type"; import { battleSpecDialogue } from "#app/data/dialogue"; @@ -92,7 +104,7 @@ import { allMysteryEncounters, ANTI_VARIANCE_WEIGHT_MODIFIER, AVERAGE_ENCOUNTERS import { MysteryEncounterSaveData } from "#app/data/mystery-encounters/mystery-encounter-save-data"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import HeldModifierConfig from "#app/interfaces/held-modifier-config"; +import type HeldModifierConfig from "#app/interfaces/held-modifier-config"; import { ExpPhase } from "#app/phases/exp-phase"; import { ShowPartyExpBarPhase } from "#app/phases/show-party-exp-bar-phase"; import { MysteryEncounterMode } from "#enums/mystery-encounter-mode"; @@ -100,6 +112,7 @@ import { ExpGainsSpeed } from "#enums/exp-gains-speed"; import { BattlerTagType } from "#enums/battler-tag-type"; import { FRIENDSHIP_GAIN_FROM_BATTLE } from "#app/data/balance/starters"; import { StatusEffect } from "#enums/status-effect"; +import { globalScene, initGlobalScene } from "#app/global-scene"; export const bypassLogin = import.meta.env.VITE_BYPASS_LOGIN === "1"; @@ -330,6 +343,7 @@ export default class BattleScene extends SceneBase { this.nextCommandPhaseQueue = []; this.eventManager = new TimedEventManager(); this.updateGameInfo(); + initGlobalScene(this); } loadPokemonAtlas(key: string, atlasPath: string, experimental?: boolean) { @@ -375,14 +389,13 @@ export default class BattleScene extends SceneBase { async preload() { if (DEBUG_RNG) { - const scene = this; const originalRealInRange = Phaser.Math.RND.realInRange; Phaser.Math.RND.realInRange = function (min: number, max: number): number { const ret = originalRealInRange.apply(this, [ min, max ]); - const args = [ "RNG", ++scene.rngCounter, ret / (max - min), `min: ${min} / max: ${max}` ]; - args.push(`seed: ${scene.rngSeedOverride || scene.waveSeed || scene.seed}`); - if (scene.rngOffset) { - args.push(`offset: ${scene.rngOffset}`); + const args = [ "RNG", ++globalScene.rngCounter, ret / (max - min), `min: ${min} / max: ${max}` ]; + args.push(`seed: ${globalScene.rngSeedOverride || globalScene.waveSeed || globalScene.seed}`); + if (globalScene.rngOffset) { + args.push(`offset: ${globalScene.rngOffset}`); } console.log(...args); return ret; @@ -395,14 +408,14 @@ export default class BattleScene extends SceneBase { } create() { - this.scene.remove(LoadingScene.KEY); + globalScene.scene.remove(LoadingScene.KEY); initGameSpeed.apply(this); - this.inputController = new InputsController(this); - this.uiInputs = new UiInputs(this, this.inputController); + this.inputController = new InputsController(); + this.uiInputs = new UiInputs(this.inputController); - this.gameData = new GameData(this); + this.gameData = new GameData(); - addUiThemeOverrides(this); + addUiThemeOverrides(); this.load.setBaseURL(); @@ -489,76 +502,76 @@ export default class BattleScene extends SceneBase { this.modifiers = []; this.enemyModifiers = []; - this.modifierBar = new ModifierBar(this); + this.modifierBar = new ModifierBar(); this.modifierBar.setName("modifier-bar"); this.add.existing(this.modifierBar); uiContainer.add(this.modifierBar); - this.enemyModifierBar = new ModifierBar(this, true); + this.enemyModifierBar = new ModifierBar(true); this.enemyModifierBar.setName("enemy-modifier-bar"); this.add.existing(this.enemyModifierBar); uiContainer.add(this.enemyModifierBar); - this.charSprite = new CharSprite(this); + this.charSprite = new CharSprite(); this.charSprite.setName("sprite-char"); this.charSprite.setup(); this.fieldUI.add(this.charSprite); - this.pbTray = new PokeballTray(this, true); + this.pbTray = new PokeballTray(true); this.pbTray.setName("pb-tray"); this.pbTray.setup(); - this.pbTrayEnemy = new PokeballTray(this, false); + this.pbTrayEnemy = new PokeballTray(false); this.pbTrayEnemy.setName("enemy-pb-tray"); this.pbTrayEnemy.setup(); this.fieldUI.add(this.pbTray); this.fieldUI.add(this.pbTrayEnemy); - this.abilityBar = new AbilityBar(this); + this.abilityBar = new AbilityBar(); this.abilityBar.setName("ability-bar"); this.abilityBar.setup(); this.fieldUI.add(this.abilityBar); - this.partyExpBar = new PartyExpBar(this); + this.partyExpBar = new PartyExpBar(); this.partyExpBar.setName("party-exp-bar"); this.partyExpBar.setup(); this.fieldUI.add(this.partyExpBar); - this.candyBar = new CandyBar(this); + this.candyBar = new CandyBar(); this.candyBar.setName("candy-bar"); this.candyBar.setup(); this.fieldUI.add(this.candyBar); - this.biomeWaveText = addTextObject(this, (this.game.canvas.width / 6) - 2, 0, startingWave.toString(), TextStyle.BATTLE_INFO); + this.biomeWaveText = addTextObject((this.game.canvas.width / 6) - 2, 0, startingWave.toString(), TextStyle.BATTLE_INFO); this.biomeWaveText.setName("text-biome-wave"); this.biomeWaveText.setOrigin(1, 0.5); this.fieldUI.add(this.biomeWaveText); - this.moneyText = addTextObject(this, (this.game.canvas.width / 6) - 2, 0, "", TextStyle.MONEY); + this.moneyText = addTextObject((this.game.canvas.width / 6) - 2, 0, "", TextStyle.MONEY); this.moneyText.setName("text-money"); this.moneyText.setOrigin(1, 0.5); this.fieldUI.add(this.moneyText); - this.scoreText = addTextObject(this, (this.game.canvas.width / 6) - 2, 0, "", TextStyle.PARTY, { fontSize: "54px" }); + this.scoreText = addTextObject((this.game.canvas.width / 6) - 2, 0, "", TextStyle.PARTY, { fontSize: "54px" }); this.scoreText.setName("text-score"); this.scoreText.setOrigin(1, 0.5); this.fieldUI.add(this.scoreText); - this.luckText = addTextObject(this, (this.game.canvas.width / 6) - 2, 0, "", TextStyle.PARTY, { fontSize: "54px" }); + this.luckText = addTextObject((this.game.canvas.width / 6) - 2, 0, "", TextStyle.PARTY, { fontSize: "54px" }); this.luckText.setName("text-luck"); this.luckText.setOrigin(1, 0.5); this.luckText.setVisible(false); this.fieldUI.add(this.luckText); - this.luckLabelText = addTextObject(this, (this.game.canvas.width / 6) - 2, 0, i18next.t("common:luckIndicator"), TextStyle.PARTY, { fontSize: "54px" }); + this.luckLabelText = addTextObject((this.game.canvas.width / 6) - 2, 0, i18next.t("common:luckIndicator"), TextStyle.PARTY, { fontSize: "54px" }); this.luckLabelText.setName("text-luck-label"); this.luckLabelText.setOrigin(1, 0.5); this.luckLabelText.setVisible(false); this.fieldUI.add(this.luckLabelText); - this.arenaFlyout = new ArenaFlyout(this); + this.arenaFlyout = new ArenaFlyout(); this.fieldUI.add(this.arenaFlyout); this.fieldUI.moveBelow(this.arenaFlyout, this.fieldOverlay); @@ -567,9 +580,9 @@ export default class BattleScene extends SceneBase { this.damageNumberHandler = new DamageNumberHandler(); this.spriteSparkleHandler = new PokemonSpriteSparkleHandler(); - this.spriteSparkleHandler.setup(this); + this.spriteSparkleHandler.setup(); - this.pokemonInfoContainer = new PokemonInfoContainer(this, (this.game.canvas.width / 6) + 52, -(this.game.canvas.height / 6) + 66); + this.pokemonInfoContainer = new PokemonInfoContainer((this.game.canvas.width / 6) + 52, -(this.game.canvas.height / 6) + 66); this.pokemonInfoContainer.setup(); this.fieldUI.add(this.pokemonInfoContainer); @@ -578,13 +591,13 @@ export default class BattleScene extends SceneBase { const loadPokemonAssets = []; - this.arenaPlayer = new ArenaBase(this, true); + this.arenaPlayer = new ArenaBase(true); this.arenaPlayer.setName("arena-player"); - this.arenaPlayerTransition = new ArenaBase(this, true); + this.arenaPlayerTransition = new ArenaBase(true); this.arenaPlayerTransition.setName("arena-player-transition"); - this.arenaEnemy = new ArenaBase(this, false); + this.arenaEnemy = new ArenaBase(false); this.arenaEnemy.setName("arena-enemy"); - this.arenaNextEnemy = new ArenaBase(this, false); + this.arenaNextEnemy = new ArenaBase(false); this.arenaNextEnemy.setName("arena-next-enemy"); this.arenaBgTransition.setVisible(false); @@ -625,7 +638,7 @@ export default class BattleScene extends SceneBase { this.reset(false, false, true); - const ui = new UI(this); + const ui = new UI(); this.uiContainer.add(ui); this.ui = ui; @@ -636,12 +649,12 @@ export default class BattleScene extends SceneBase { Promise.all([ Promise.all(loadPokemonAssets), - initCommonAnims(this).then(() => loadCommonAnimAssets(this, true)), - Promise.all([ Moves.TACKLE, Moves.TAIL_WHIP, Moves.FOCUS_ENERGY, Moves.STRUGGLE ].map(m => initMoveAnim(this, m))).then(() => loadMoveAnimAssets(this, defaultMoves, true)), + initCommonAnims().then(() => loadCommonAnimAssets(true)), + Promise.all([ Moves.TACKLE, Moves.TAIL_WHIP, Moves.FOCUS_ENERGY, Moves.STRUGGLE ].map(m => initMoveAnim(m))).then(() => loadMoveAnimAssets(defaultMoves, true)), this.initStarterColors() ]).then(() => { - this.pushPhase(new LoginPhase(this)); - this.pushPhase(new TitlePhase(this)); + this.pushPhase(new LoginPhase()); + this.pushPhase(new TitlePhase()); this.shiftPhase(); }); @@ -911,7 +924,7 @@ export default class BattleScene extends SceneBase { } addPlayerPokemon(species: PokemonSpecies, level: integer, abilityIndex?: integer, formIndex?: integer, gender?: Gender, shiny?: boolean, variant?: Variant, ivs?: integer[], nature?: Nature, dataSource?: Pokemon | PokemonData, postProcess?: (playerPokemon: PlayerPokemon) => void): PlayerPokemon { - const pokemon = new PlayerPokemon(this, species, level, abilityIndex, formIndex, gender, shiny, variant, ivs, nature, dataSource); + const pokemon = new PlayerPokemon(species, level, abilityIndex, formIndex, gender, shiny, variant, ivs, nature, dataSource); if (postProcess) { postProcess(pokemon); } @@ -929,7 +942,7 @@ export default class BattleScene extends SceneBase { boss = this.getEncounterBossSegments(this.currentBattle.waveIndex, level, species) > 1; } - const pokemon = new EnemyPokemon(this, species, level, trainerSlot, boss, shinyLock, dataSource); + const pokemon = new EnemyPokemon(species, level, trainerSlot, boss, shinyLock, dataSource); if (Overrides.OPP_FUSION_OVERRIDE) { pokemon.generateFusionSpecies(); } @@ -1064,7 +1077,7 @@ export default class BattleScene extends SceneBase { /** * Generates a random number using the current battle's seed * - * This calls {@linkcode Battle.randSeedInt}(`scene`, {@linkcode range}, {@linkcode min}) in `src/battle.ts` + * This calls {@linkcode Battle.randSeedInt}({@linkcode range}, {@linkcode min}) in `src/battle.ts` * which calls {@linkcode Utils.randSeedInt randSeedInt}({@linkcode range}, {@linkcode min}) in `src/utils.ts` * * @param range How large of a range of random numbers to choose from. If {@linkcode range} <= 1, returns {@linkcode min} @@ -1072,12 +1085,12 @@ export default class BattleScene extends SceneBase { * @returns A random integer between {@linkcode min} and ({@linkcode min} + {@linkcode range} - 1) */ randBattleSeedInt(range: integer, min: integer = 0): integer { - return this.currentBattle?.randSeedInt(this, range, min); + return this.currentBattle?.randSeedInt(range, min); } reset(clearScene: boolean = false, clearData: boolean = false, reloadI18n: boolean = false): void { if (clearData) { - this.gameData = new GameData(this); + this.gameData = new GameData(); } this.gameMode = getGameMode(GameModes.CLASSIC); @@ -1210,7 +1223,7 @@ export default class BattleScene extends SceneBase { battleConfig = this.gameMode.getFixedBattle(newWaveIndex); newDouble = battleConfig.double; newBattleType = battleConfig.battleType; - this.executeWithSeedOffset(() => newTrainer = battleConfig?.getTrainer(this), (battleConfig.seedOffsetWaveIndex || newWaveIndex) << 8); + this.executeWithSeedOffset(() => newTrainer = battleConfig?.getTrainer(), (battleConfig.seedOffsetWaveIndex || newWaveIndex) << 8); if (newTrainer) { this.field.add(newTrainer); } @@ -1236,7 +1249,7 @@ export default class BattleScene extends SceneBase { } } const variant = doubleTrainer ? TrainerVariant.DOUBLE : (Utils.randSeedInt(2) ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT); - newTrainer = trainerData !== undefined ? trainerData.toTrainer(this) : new Trainer(this, trainerType, variant); + newTrainer = trainerData !== undefined ? trainerData.toTrainer() : new Trainer(trainerType, variant); this.field.add(newTrainer); } @@ -1314,7 +1327,7 @@ export default class BattleScene extends SceneBase { this.executeWithSeedOffset(() => { this.currentBattle = new Battle(this.gameMode, newWaveIndex, newBattleType, newTrainer, newDouble); }, newWaveIndex << 3, this.waveSeed); - this.currentBattle.incrementTurn(this); + this.currentBattle.incrementTurn(); if (newBattleType === BattleType.MYSTERY_ENCOUNTER) { // Will generate the actual Mystery Encounter during NextEncounterPhase, to ensure it uses proper biome @@ -1342,7 +1355,7 @@ export default class BattleScene extends SceneBase { playerField.forEach((pokemon, p) => { if (pokemon.isOnField()) { - this.pushPhase(new ReturnPhase(this, p)); + this.pushPhase(new ReturnPhase(p)); } }); @@ -1352,7 +1365,7 @@ export default class BattleScene extends SceneBase { } if (!this.trainer.visible) { - this.pushPhase(new ShowTrainerPhase(this)); + this.pushPhase(new ShowTrainerPhase()); } } @@ -1361,14 +1374,14 @@ export default class BattleScene extends SceneBase { } if (!this.gameMode.hasRandomBiomes && !isNewBiome) { - this.pushPhase(new NextEncounterPhase(this)); + this.pushPhase(new NextEncounterPhase()); } else { - this.pushPhase(new SelectBiomePhase(this)); - this.pushPhase(new NewBiomeEncounterPhase(this)); + this.pushPhase(new SelectBiomePhase()); + this.pushPhase(new NewBiomeEncounterPhase()); const newMaxExpLevel = this.getMaxExpLevel(); if (newMaxExpLevel > maxExpLevel) { - this.pushPhase(new LevelCapPhase(this)); + this.pushPhase(new LevelCapPhase()); } } } @@ -1377,7 +1390,7 @@ export default class BattleScene extends SceneBase { } newArena(biome: Biome): Arena { - this.arena = new Arena(this, biome, Biome[biome].toLowerCase()); + this.arena = new Arena(biome, Biome[biome].toLowerCase()); this.eventTarget.dispatchEvent(new NewArenaEvent()); this.arenaBg.pipelineData = { terrainColorRatio: this.arena.getBgTerrainColorRatioForBiome() }; @@ -1793,7 +1806,7 @@ export default class BattleScene extends SceneBase { } updateUIPositions(): void { - const enemyModifierCount = this.enemyModifiers.filter(m => m.isIconVisible(this)).length; + const enemyModifierCount = this.enemyModifiers.filter(m => m.isIconVisible()).length; const biomeWaveTextHeight = this.biomeWaveText.getBottomLeft().y - this.biomeWaveText.getTopLeft().y; this.biomeWaveText.setY( -(this.game.canvas.height / 6) + (enemyModifierCount ? enemyModifierCount <= 12 ? 15 : 24 : 0) + (biomeWaveTextHeight / 2) @@ -1880,7 +1893,7 @@ export default class BattleScene extends SceneBase { playBgm(bgmName?: string, fadeOut?: boolean): void { if (bgmName === undefined) { - bgmName = this.currentBattle?.getBgmOverride(this) || this.arena?.bgm; + bgmName = this.currentBattle?.getBgmOverride() || this.arena?.bgm; } if (this.bgm && bgmName === this.bgm.key) { if (!this.bgm.isPlaying) { @@ -2499,7 +2512,7 @@ export default class BattleScene extends SceneBase { * @param defer boolean for which queue to add it to, false -> add to PhaseQueuePrepend, true -> nextCommandPhaseQueue */ queueMessage(message: string, callbackDelay?: integer | null, prompt?: boolean | null, promptDelay?: integer | null, defer?: boolean | null) { - const phase = new MessagePhase(this, message, callbackDelay, prompt, promptDelay); + const phase = new MessagePhase(message, callbackDelay, prompt, promptDelay); if (!defer) { // adds to the end of PhaseQueuePrepend this.unshiftPhase(phase); @@ -2517,7 +2530,7 @@ export default class BattleScene extends SceneBase { this.phaseQueue.push(...this.nextCommandPhaseQueue); this.nextCommandPhaseQueue.splice(0, this.nextCommandPhaseQueue.length); } - this.phaseQueue.push(new TurnInitPhase(this)); + this.phaseQueue.push(new TurnInitPhase()); } addMoney(amount: integer): void { @@ -2548,7 +2561,7 @@ export default class BattleScene extends SceneBase { if (modifier instanceof TerastallizeModifier) { modifiersToRemove.push(...(this.findModifiers(m => m instanceof TerastallizeModifier && m.pokemonId === modifier.pokemonId))); } - if ((modifier as PersistentModifier).add(this.modifiers, !!virtual, this)) { + if ((modifier as PersistentModifier).add(this.modifiers, !!virtual)) { if (modifier instanceof PokemonFormChangeItemModifier || modifier instanceof TerastallizeModifier) { const pokemon = this.getPokemonById(modifier.pokemonId); if (pokemon) { @@ -2629,7 +2642,7 @@ export default class BattleScene extends SceneBase { if (modifier instanceof TerastallizeModifier) { modifiersToRemove.push(...(this.findModifiers(m => m instanceof TerastallizeModifier && m.pokemonId === modifier.pokemonId, false))); } - if ((modifier as PersistentModifier).add(this.enemyModifiers, false, this)) { + if ((modifier as PersistentModifier).add(this.enemyModifiers, false)) { if (modifier instanceof PokemonFormChangeItemModifier || modifier instanceof TerastallizeModifier) { const pokemon = this.getPokemonById(modifier.pokemonId); if (pokemon) { @@ -2664,7 +2677,7 @@ export default class BattleScene extends SceneBase { */ tryTransferHeldItemModifier(itemModifier: PokemonHeldItemModifier, target: Pokemon, playSound: boolean, transferQuantity: number = 1, instant?: boolean, ignoreUpdate?: boolean, itemLost: boolean = true): Promise { return new Promise(resolve => { - const source = itemModifier.pokemonId ? itemModifier.getPokemon(target.scene) : null; + const source = itemModifier.pokemonId ? itemModifier.getPokemon() : null; const cancelled = new Utils.BooleanHolder(false); Utils.executeIf(!!source && source.isPlayer() !== target.isPlayer(), () => applyAbAttrs(BlockItemTheftAbAttr, source! /* checked in condition*/, cancelled)).then(() => { if (cancelled.value) { @@ -2672,11 +2685,11 @@ export default class BattleScene extends SceneBase { } const newItemModifier = itemModifier.clone() as PokemonHeldItemModifier; newItemModifier.pokemonId = target.id; - const matchingModifier = target.scene.findModifier(m => m instanceof PokemonHeldItemModifier + const matchingModifier = this.findModifier(m => m instanceof PokemonHeldItemModifier && (m as PokemonHeldItemModifier).matchType(itemModifier) && m.pokemonId === target.id, target.isPlayer()) as PokemonHeldItemModifier; let removeOld = true; if (matchingModifier) { - const maxStackCount = matchingModifier.getMaxStackCount(target.scene); + const maxStackCount = matchingModifier.getMaxStackCount(); if (matchingModifier.stackCount >= maxStackCount) { return resolve(false); } @@ -2793,7 +2806,7 @@ export default class BattleScene extends SceneBase { count = Math.max(count, Math.floor(chances / 2)); } getEnemyModifierTypesForWave(difficultyWaveIndex, count, [ enemyPokemon ], this.currentBattle.battleType === BattleType.TRAINER ? ModifierPoolType.TRAINER : ModifierPoolType.WILD, upgradeChance) - .map(mt => mt.newModifier(enemyPokemon).add(this.enemyModifiers, false, this)); + .map(mt => mt.newModifier(enemyPokemon).add(this.enemyModifiers, false)); } return true; }); @@ -2817,7 +2830,7 @@ export default class BattleScene extends SceneBase { * @param pokemon - If specified, only removes held items from that {@linkcode Pokemon} */ clearEnemyHeldItemModifiers(pokemon?: Pokemon): void { - const modifiersToRemove = this.enemyModifiers.filter(m => m instanceof PokemonHeldItemModifier && (!pokemon || m.getPokemon(this) === pokemon)); + const modifiersToRemove = this.enemyModifiers.filter(m => m instanceof PokemonHeldItemModifier && (!pokemon || m.getPokemon() === pokemon)); for (const m of modifiersToRemove) { this.enemyModifiers.splice(this.enemyModifiers.indexOf(m), 1); } @@ -2866,9 +2879,7 @@ export default class BattleScene extends SceneBase { updatePartyForModifiers(party: Pokemon[], instant?: boolean): Promise { return new Promise(resolve => { Promise.allSettled(party.map(p => { - if (p.scene) { - p.calculateStats(); - } + p.calculateStats(); return p.updateInfo(instant); })).then(() => resolve()); }); @@ -2931,15 +2942,14 @@ export default class BattleScene extends SceneBase { /** * Apply all modifiers that match `modifierType` in a random order - * @param scene {@linkcode BattleScene} used to randomize the order of modifiers * @param modifierType The type of modifier to apply; must extend {@linkcode PersistentModifier} * @param player Whether to search the player (`true`) or the enemy (`false`); Defaults to `true` * @param ...args The list of arguments needed to invoke `modifierType.apply` * @returns the list of all modifiers that matched `modifierType` and were applied. */ - applyShuffledModifiers(scene: BattleScene, modifierType: Constructor, player: boolean = true, ...args: Parameters): T[] { + applyShuffledModifiers(modifierType: Constructor, player: boolean = true, ...args: Parameters): T[] { let modifiers = (player ? this.modifiers : this.enemyModifiers).filter((m): m is T => m instanceof modifierType && m.shouldApply(...args)); - scene.executeWithSeedOffset(() => { + globalScene.executeWithSeedOffset(() => { const shuffleModifiers = mods => { if (mods.length < 1) { return mods; @@ -2948,7 +2958,7 @@ export default class BattleScene extends SceneBase { return [ mods[rand], ...shuffleModifiers(mods.filter((_, i) => i !== rand)) ]; }; modifiers = shuffleModifiers(modifiers); - }, scene.currentBattle.turn << 4, scene.waveSeed); + }, globalScene.currentBattle.turn << 4, globalScene.waveSeed); return this.applyModifiersInternal(modifiers, player, args); } @@ -3018,9 +3028,9 @@ export default class BattleScene extends SceneBase { if (matchingFormChange) { let phase: Phase; if (pokemon instanceof PlayerPokemon && !matchingFormChange.quiet) { - phase = new FormChangePhase(this, pokemon, matchingFormChange, modal); + phase = new FormChangePhase(pokemon, matchingFormChange, modal); } else { - phase = new QuietFormChangePhase(this, pokemon, matchingFormChange); + phase = new QuietFormChangePhase(pokemon, matchingFormChange); } if (pokemon instanceof PlayerPokemon && !matchingFormChange.quiet && modal) { this.overridePhase(phase); @@ -3037,7 +3047,7 @@ export default class BattleScene extends SceneBase { } triggerPokemonBattleAnim(pokemon: Pokemon, battleAnimType: PokemonAnimType, fieldAssets?: Phaser.GameObjects.Sprite[], delayed: boolean = false): boolean { - const phase: Phase = new PokemonAnimPhase(this, battleAnimType, pokemon, fieldAssets); + const phase: Phase = new PokemonAnimPhase(battleAnimType, pokemon, fieldAssets); if (delayed) { this.pushPhase(phase); } else { @@ -3055,7 +3065,7 @@ export default class BattleScene extends SceneBase { validateAchv(achv: Achv, args?: unknown[]): boolean { if ((!this.gameData.achvUnlocks.hasOwnProperty(achv.id) || Overrides.ACHIEVEMENTS_REUNLOCK_OVERRIDE) - && achv.validate(this, args)) { + && achv.validate(args)) { this.gameData.achvUnlocks[achv.id] = new Date().getTime(); this.ui.achvBar.showAchv(achv); if (vouchers.hasOwnProperty(achv.id)) { @@ -3068,7 +3078,7 @@ export default class BattleScene extends SceneBase { } validateVoucher(voucher: Voucher, args?: unknown[]): boolean { - if (!this.gameData.voucherUnlocks.hasOwnProperty(voucher.id) && voucher.validate(this, args)) { + if (!this.gameData.voucherUnlocks.hasOwnProperty(voucher.id) && voucher.validate(args)) { this.gameData.voucherUnlocks[voucher.id] = new Date().getTime(); this.ui.achvBar.showAchv(voucher); this.gameData.voucherCounts[voucher.voucherType]++; @@ -3141,9 +3151,9 @@ export default class BattleScene extends SceneBase { this.currentBattle.double = true; const availablePartyMembers = this.getPlayerParty().filter((p) => p.isAllowedInBattle()); if (availablePartyMembers.length > 1) { - this.pushPhase(new ToggleDoublePositionPhase(this, true)); + this.pushPhase(new ToggleDoublePositionPhase(true)); if (!availablePartyMembers[1].isOnField()) { - this.pushPhase(new SummonPhase(this, 1)); + this.pushPhase(new SummonPhase(1)); } } @@ -3188,7 +3198,7 @@ export default class BattleScene extends SceneBase { if (participated && pokemonDefeated) { partyMember.addFriendship(FRIENDSHIP_GAIN_FROM_BATTLE); const machoBraceModifier = partyMember.getHeldItems().find(m => m instanceof PokemonIncrementingStatModifier); - if (machoBraceModifier && machoBraceModifier.stackCount < machoBraceModifier.getMaxStackCount(this)) { + if (machoBraceModifier && machoBraceModifier.stackCount < machoBraceModifier.getMaxStackCount()) { machoBraceModifier.stackCount++; this.updateModifiers(true, true); partyMember.updateInfo(); @@ -3250,7 +3260,7 @@ export default class BattleScene extends SceneBase { if (exp) { const partyMemberIndex = party.indexOf(expPartyMembers[pm]); - this.unshiftPhase(expPartyMembers[pm].isOnField() ? new ExpPhase(this, partyMemberIndex, exp) : new ShowPartyExpBarPhase(this, partyMemberIndex, exp)); + this.unshiftPhase(expPartyMembers[pm].isOnField() ? new ExpPhase(partyMemberIndex, exp) : new ShowPartyExpBarPhase(partyMemberIndex, exp)); } } } @@ -3342,7 +3352,7 @@ export default class BattleScene extends SceneBase { if (encounter) { encounter = new MysteryEncounter(encounter); - encounter.populateDialogueTokensFromRequirements(this); + encounter.populateDialogueTokensFromRequirements(); return encounter; } @@ -3370,8 +3380,9 @@ export default class BattleScene extends SceneBase { } let availableEncounters: MysteryEncounter[] = []; - // New encounter should never be the same as the most recent encounter - const previousEncounter = this.mysteryEncounterSaveData.encounteredEvents.length > 0 ? this.mysteryEncounterSaveData.encounteredEvents[this.mysteryEncounterSaveData.encounteredEvents.length - 1].type : null; + const previousEncounter = this.mysteryEncounterSaveData.encounteredEvents.length > 0 ? + this.mysteryEncounterSaveData.encounteredEvents[this.mysteryEncounterSaveData.encounteredEvents.length - 1].type + : null; const biomeMysteryEncounters = mysteryEncountersByBiome.get(this.arena.biomeType) ?? []; // If no valid encounters exist at tier, checks next tier down, continuing until there are some encounters available while (availableEncounters.length === 0 && tier !== null) { @@ -3381,27 +3392,27 @@ export default class BattleScene extends SceneBase { if (!encounterCandidate) { return false; } - if (encounterCandidate.encounterTier !== tier) { // Encounter is in tier + if (encounterCandidate.encounterTier !== tier) { return false; } const disallowedGameModes = encounterCandidate.disallowedGameModes; if (disallowedGameModes && disallowedGameModes.length > 0 - && disallowedGameModes.includes(this.gameMode.modeId)) { // Encounter is enabled for game mode + && disallowedGameModes.includes(this.gameMode.modeId)) { return false; } - if (this.gameMode.modeId === GameModes.CHALLENGE) { // Encounter is enabled for challenges + if (this.gameMode.modeId === GameModes.CHALLENGE) { const disallowedChallenges = encounterCandidate.disallowedChallenges; if (disallowedChallenges && disallowedChallenges.length > 0 && this.gameMode.challenges.some(challenge => disallowedChallenges.includes(challenge.id))) { return false; } } - if (!encounterCandidate.meetsRequirements(this)) { // Meets encounter requirements + if (!encounterCandidate.meetsRequirements()) { return false; } - if (previousEncounter !== null && encounterType === previousEncounter) { // Previous encounter was not this one + if (previousEncounter !== null && encounterType === previousEncounter) { return false; } - if (this.mysteryEncounterSaveData.encounteredEvents.length > 0 && // Encounter has not exceeded max allowed encounters + if (this.mysteryEncounterSaveData.encounteredEvents.length > 0 && (encounterCandidate.maxAllowedEncounters && encounterCandidate.maxAllowedEncounters > 0) && this.mysteryEncounterSaveData.encounteredEvents.filter(e => e.type === encounterType).length >= encounterCandidate.maxAllowedEncounters) { return false; @@ -3429,7 +3440,7 @@ export default class BattleScene extends SceneBase { encounter = availableEncounters[Utils.randSeedInt(availableEncounters.length)]; // New encounter object to not dirty flags encounter = new MysteryEncounter(encounter); - encounter.populateDialogueTokensFromRequirements(this); + encounter.populateDialogueTokensFromRequirements(); return encounter; } } diff --git a/src/battle.ts b/src/battle.ts index 38ee7b5eae0..6dae845bfe1 100644 --- a/src/battle.ts +++ b/src/battle.ts @@ -1,26 +1,27 @@ -import BattleScene from "./battle-scene"; -import { Command } from "./ui/command-ui-handler"; +import { globalScene } from "#app/global-scene"; +import type { Command } from "./ui/command-ui-handler"; import * as Utils from "./utils"; import Trainer, { TrainerVariant } from "./field/trainer"; -import { GameMode } from "./game-mode"; +import type { GameMode } from "./game-mode"; import { MoneyMultiplierModifier, PokemonHeldItemModifier } from "./modifier/modifier"; -import { PokeballType } from "#enums/pokeball"; +import type { PokeballType } from "#enums/pokeball"; import { trainerConfigs } from "#app/data/trainer-config"; import { SpeciesFormKey } from "#enums/species-form-key"; -import Pokemon, { EnemyPokemon, PlayerPokemon, QueuedMove } from "#app/field/pokemon"; +import type { EnemyPokemon, PlayerPokemon, QueuedMove } from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; import { ArenaTagType } from "#enums/arena-tag-type"; import { BattleSpec } from "#enums/battle-spec"; -import { Moves } from "#enums/moves"; +import type { Moves } from "#enums/moves"; import { PlayerGender } from "#enums/player-gender"; import { MusicPreference } from "#app/system/settings/settings"; import { Species } from "#enums/species"; import { TrainerType } from "#enums/trainer-type"; import i18next from "#app/plugins/i18n"; -import MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; +import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; import { MysteryEncounterMode } from "#enums/mystery-encounter-mode"; -import { CustomModifierSettings } from "#app/modifier/modifier-type"; +import type { CustomModifierSettings } from "#app/modifier/modifier-type"; import { ModifierTier } from "#app/modifier/modifier-tier"; -import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import type { MysteryEncounterType } from "#enums/mystery-encounter-type"; export enum ClassicFixedBossWaves { // TODO: other fixed wave battles should be added here @@ -154,7 +155,7 @@ export default class Battle { return this.double ? 2 : 1; } - incrementTurn(scene: BattleScene): void { + incrementTurn(): void { this.turn++; this.turnCommands = Object.fromEntries(Utils.getEnumValues(BattlerIndex).map(bt => [ bt, null ])); this.battleSeedState = null; @@ -169,7 +170,7 @@ export default class Battle { } addPostBattleLoot(enemyPokemon: EnemyPokemon): void { - this.postBattleLoot.push(...enemyPokemon.scene.findModifiers(m => m instanceof PokemonHeldItemModifier && m.pokemonId === enemyPokemon.id && m.isTransferable, false).map(i => { + this.postBattleLoot.push(...globalScene.findModifiers(m => m instanceof PokemonHeldItemModifier && m.pokemonId === enemyPokemon.id && m.isTransferable, false).map(i => { const ret = i as PokemonHeldItemModifier; //@ts-ignore - this is awful to fix/change ret.pokemonId = null; @@ -177,43 +178,43 @@ export default class Battle { })); } - pickUpScatteredMoney(scene: BattleScene): void { - const moneyAmount = new Utils.IntegerHolder(scene.currentBattle.moneyScattered); - scene.applyModifiers(MoneyMultiplierModifier, true, moneyAmount); + pickUpScatteredMoney(): void { + const moneyAmount = new Utils.IntegerHolder(globalScene.currentBattle.moneyScattered); + globalScene.applyModifiers(MoneyMultiplierModifier, true, moneyAmount); - if (scene.arena.getTag(ArenaTagType.HAPPY_HOUR)) { + if (globalScene.arena.getTag(ArenaTagType.HAPPY_HOUR)) { moneyAmount.value *= 2; } - scene.addMoney(moneyAmount.value); + globalScene.addMoney(moneyAmount.value); const userLocale = navigator.language || "en-US"; const formattedMoneyAmount = moneyAmount.value.toLocaleString(userLocale); const message = i18next.t("battle:moneyPickedUp", { moneyAmount: formattedMoneyAmount }); - scene.queueMessage(message, undefined, true); + globalScene.queueMessage(message, undefined, true); - scene.currentBattle.moneyScattered = 0; + globalScene.currentBattle.moneyScattered = 0; } - addBattleScore(scene: BattleScene): void { - let partyMemberTurnMultiplier = scene.getEnemyParty().length / 2 + 0.5; + addBattleScore(): void { + let partyMemberTurnMultiplier = globalScene.getEnemyParty().length / 2 + 0.5; if (this.double) { partyMemberTurnMultiplier /= 1.5; } - for (const p of scene.getEnemyParty()) { + for (const p of globalScene.getEnemyParty()) { if (p.isBoss()) { - partyMemberTurnMultiplier *= (p.bossSegments / 1.5) / scene.getEnemyParty().length; + partyMemberTurnMultiplier *= (p.bossSegments / 1.5) / globalScene.getEnemyParty().length; } } const turnMultiplier = Phaser.Tweens.Builders.GetEaseFunction("Sine.easeIn")(1 - Math.min(this.turn - 2, 10 * partyMemberTurnMultiplier) / (10 * partyMemberTurnMultiplier)); const finalBattleScore = Math.ceil(this.battleScore * turnMultiplier); - scene.score += finalBattleScore; + globalScene.score += finalBattleScore; console.log(`Battle Score: ${finalBattleScore} (${this.turn - 1} Turns x${Math.floor(turnMultiplier * 100) / 100})`); - console.log(`Total Score: ${scene.score}`); - scene.updateScoreText(); + console.log(`Total Score: ${globalScene.score}`); + globalScene.updateScoreText(); } - getBgmOverride(scene: BattleScene): string | null { + getBgmOverride(): string | null { if (this.isBattleMysteryEncounter() && this.mysteryEncounter?.encounterMode === MysteryEncounterMode.DEFAULT) { // Music is overridden for MEs during ME onInit() // Should not use any BGM overrides before swapping from DEFAULT mode @@ -222,7 +223,7 @@ export default class Battle { if (!this.started && this.trainer?.config.encounterBgm && this.trainer?.getEncounterMessages()?.length) { return `encounter_${this.trainer?.getEncounterBgm()}`; } - if (scene.musicPreference === MusicPreference.GENFIVE) { + if (globalScene.musicPreference === MusicPreference.GENFIVE) { return this.trainer?.getBattleBgm() ?? null; } else { return this.trainer?.getMixedBattleBgm() ?? null; @@ -230,7 +231,7 @@ export default class Battle { } else if (this.gameMode.isClassic && this.waveIndex > 195 && this.battleSpec !== BattleSpec.FINAL_BOSS) { return "end_summit"; } - const wildOpponents = scene.getEnemyParty(); + const wildOpponents = globalScene.getEnemyParty(); for (const pokemon of wildOpponents) { if (this.battleSpec === BattleSpec.FINAL_BOSS) { if (pokemon.species.getFormSpriteKey(pokemon.formIndex) === SpeciesFormKey.ETERNAMAX) { @@ -239,7 +240,7 @@ export default class Battle { return "battle_final_encounter"; } if (pokemon.species.legendary || pokemon.species.subLegendary || pokemon.species.mythical) { - if (scene.musicPreference === MusicPreference.GENFIVE) { + if (globalScene.musicPreference === MusicPreference.GENFIVE) { switch (pokemon.species.speciesId) { case Species.REGIROCK: case Species.REGICE: @@ -256,7 +257,7 @@ export default class Battle { } return "battle_legendary_unova"; } - } else if (scene.musicPreference === MusicPreference.ALLGENS) { + } else if (globalScene.musicPreference === MusicPreference.ALLGENS) { switch (pokemon.species.speciesId) { case Species.ARTICUNO: case Species.ZAPDOS: @@ -396,7 +397,7 @@ export default class Battle { } } - if (scene.gameMode.isClassic && this.waveIndex <= 4) { + if (globalScene.gameMode.isClassic && this.waveIndex <= 4) { return "battle_wild"; } @@ -409,12 +410,12 @@ export default class Battle { * @param min The minimum integer to pick, default `0` * @returns A random integer between {@linkcode min} and ({@linkcode min} + {@linkcode range} - 1) */ - randSeedInt(scene: BattleScene, range: number, min: number = 0): number { + randSeedInt(range: number, min: number = 0): number { if (range <= 1) { return min; } - const tempRngCounter = scene.rngCounter; - const tempSeedOverride = scene.rngSeedOverride; + const tempRngCounter = globalScene.rngCounter; + const tempSeedOverride = globalScene.rngSeedOverride; const state = Phaser.Math.RND.state(); if (this.battleSeedState) { Phaser.Math.RND.state(this.battleSeedState); @@ -422,13 +423,13 @@ export default class Battle { Phaser.Math.RND.sow([ Utils.shiftCharCodes(this.battleSeed, this.turn << 6) ]); console.log("Battle Seed:", this.battleSeed); } - scene.rngCounter = this.rngCounter++; - scene.rngSeedOverride = this.battleSeed; + globalScene.rngCounter = this.rngCounter++; + globalScene.rngSeedOverride = this.battleSeed; const ret = Utils.randSeedInt(range, min); this.battleSeedState = Phaser.Math.RND.state(); Phaser.Math.RND.state(state); - scene.rngCounter = tempRngCounter; - scene.rngSeedOverride = tempSeedOverride; + globalScene.rngCounter = tempRngCounter; + globalScene.rngSeedOverride = tempSeedOverride; return ret; } @@ -441,16 +442,16 @@ export default class Battle { } export class FixedBattle extends Battle { - constructor(scene: BattleScene, waveIndex: number, config: FixedBattleConfig) { - super(scene.gameMode, waveIndex, config.battleType, config.battleType === BattleType.TRAINER ? config.getTrainer(scene) : undefined, config.double); + constructor(waveIndex: number, config: FixedBattleConfig) { + super(globalScene.gameMode, waveIndex, config.battleType, config.battleType === BattleType.TRAINER ? config.getTrainer() : undefined, config.double); if (config.getEnemyParty) { - this.enemyParty = config.getEnemyParty(scene); + this.enemyParty = config.getEnemyParty(); } } } -type GetTrainerFunc = (scene: BattleScene) => Trainer; -type GetEnemyPartyFunc = (scene: BattleScene) => EnemyPokemon[]; +type GetTrainerFunc = () => Trainer; +type GetEnemyPartyFunc = () => EnemyPokemon[]; export class FixedBattleConfig { public battleType: BattleType; @@ -500,11 +501,11 @@ export class FixedBattleConfig { * @returns the generated trainer */ function getRandomTrainerFunc(trainerPool: (TrainerType | TrainerType[])[], randomGender: boolean = false, seedOffset: number = 0): GetTrainerFunc { - return (scene: BattleScene) => { + return () => { const rand = Utils.randSeedInt(trainerPool.length); const trainerTypes: TrainerType[] = []; - scene.executeWithSeedOffset(() => { + globalScene.executeWithSeedOffset(() => { for (const trainerPoolEntry of trainerPool) { const trainerType = Array.isArray(trainerPoolEntry) ? Utils.randSeedItem(trainerPoolEntry) @@ -523,10 +524,10 @@ function getRandomTrainerFunc(trainerPool: (TrainerType | TrainerType[])[], rand const isEvilTeamGrunt = evilTeamGrunts.includes(trainerTypes[rand]); if (trainerConfigs[trainerTypes[rand]].hasDouble && isEvilTeamGrunt) { - return new Trainer(scene, trainerTypes[rand], (Utils.randInt(3) === 0) ? TrainerVariant.DOUBLE : trainerGender); + return new Trainer(trainerTypes[rand], (Utils.randInt(3) === 0) ? TrainerVariant.DOUBLE : trainerGender); } - return new Trainer(scene, trainerTypes[rand], trainerGender); + return new Trainer(trainerTypes[rand], trainerGender); }; } @@ -544,16 +545,16 @@ export interface FixedBattleConfigs { */ export const classicFixedBattles: FixedBattleConfigs = { [5]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) - .setGetTrainerFunc(scene => new Trainer(scene, TrainerType.YOUNGSTER, Utils.randSeedInt(2) ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)), + .setGetTrainerFunc(() => new Trainer(TrainerType.YOUNGSTER, Utils.randSeedInt(2) ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)), [8]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) - .setGetTrainerFunc(scene => new Trainer(scene, TrainerType.RIVAL, scene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)), + .setGetTrainerFunc(() => new Trainer(TrainerType.RIVAL, globalScene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)), [25]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) - .setGetTrainerFunc(scene => new Trainer(scene, TrainerType.RIVAL_2, scene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)) + .setGetTrainerFunc(() => new Trainer(TrainerType.RIVAL_2, globalScene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)) .setCustomModifierRewards({ guaranteedModifierTiers: [ ModifierTier.ULTRA, ModifierTier.GREAT, ModifierTier.GREAT ], allowLuckUpgrades: false }), [35]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) .setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.ROCKET_GRUNT, TrainerType.MAGMA_GRUNT, TrainerType.AQUA_GRUNT, TrainerType.GALACTIC_GRUNT, TrainerType.PLASMA_GRUNT, TrainerType.FLARE_GRUNT, TrainerType.AETHER_GRUNT, TrainerType.SKULL_GRUNT, TrainerType.MACRO_GRUNT, TrainerType.STAR_GRUNT ], true)), [55]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) - .setGetTrainerFunc(scene => new Trainer(scene, TrainerType.RIVAL_3, scene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)) + .setGetTrainerFunc(() => new Trainer(TrainerType.RIVAL_3, globalScene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)) .setCustomModifierRewards({ guaranteedModifierTiers: [ ModifierTier.ULTRA, ModifierTier.ULTRA, ModifierTier.GREAT, ModifierTier.GREAT ], allowLuckUpgrades: false }), [62]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(35) .setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.ROCKET_GRUNT, TrainerType.MAGMA_GRUNT, TrainerType.AQUA_GRUNT, TrainerType.GALACTIC_GRUNT, TrainerType.PLASMA_GRUNT, TrainerType.FLARE_GRUNT, TrainerType.AETHER_GRUNT, TrainerType.SKULL_GRUNT, TrainerType.MACRO_GRUNT, TrainerType.STAR_GRUNT ], true)), @@ -562,7 +563,7 @@ export const classicFixedBattles: FixedBattleConfigs = { [66]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(35) .setGetTrainerFunc(getRandomTrainerFunc([[ TrainerType.ARCHER, TrainerType.ARIANA, TrainerType.PROTON, TrainerType.PETREL ], [ TrainerType.TABITHA, TrainerType.COURTNEY ], [ TrainerType.MATT, TrainerType.SHELLY ], [ TrainerType.JUPITER, TrainerType.MARS, TrainerType.SATURN ], [ TrainerType.ZINZOLIN, TrainerType.ROOD ], [ TrainerType.XEROSIC, TrainerType.BRYONY ], TrainerType.FABA, TrainerType.PLUMERIA, TrainerType.OLEANA, [ TrainerType.GIACOMO, TrainerType.MELA, TrainerType.ATTICUS, TrainerType.ORTEGA, TrainerType.ERI ]], true)), [95]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) - .setGetTrainerFunc(scene => new Trainer(scene, TrainerType.RIVAL_4, scene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)) + .setGetTrainerFunc(() => new Trainer(TrainerType.RIVAL_4, globalScene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)) .setCustomModifierRewards({ guaranteedModifierTiers: [ ModifierTier.ULTRA, ModifierTier.ULTRA, ModifierTier.ULTRA, ModifierTier.ULTRA ], allowLuckUpgrades: false }), [112]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(35) .setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.ROCKET_GRUNT, TrainerType.MAGMA_GRUNT, TrainerType.AQUA_GRUNT, TrainerType.GALACTIC_GRUNT, TrainerType.PLASMA_GRUNT, TrainerType.FLARE_GRUNT, TrainerType.AETHER_GRUNT, TrainerType.SKULL_GRUNT, TrainerType.MACRO_GRUNT, TrainerType.STAR_GRUNT ], true)), @@ -572,7 +573,7 @@ export const classicFixedBattles: FixedBattleConfigs = { .setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.ROCKET_BOSS_GIOVANNI_1, TrainerType.MAXIE, TrainerType.ARCHIE, TrainerType.CYRUS, TrainerType.GHETSIS, TrainerType.LYSANDRE, TrainerType.LUSAMINE, TrainerType.GUZMA, TrainerType.ROSE, TrainerType.PENNY ])) .setCustomModifierRewards({ guaranteedModifierTiers: [ ModifierTier.ROGUE, ModifierTier.ROGUE, ModifierTier.ULTRA, ModifierTier.ULTRA, ModifierTier.ULTRA ], allowLuckUpgrades: false }), [145]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) - .setGetTrainerFunc(scene => new Trainer(scene, TrainerType.RIVAL_5, scene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)) + .setGetTrainerFunc(() => new Trainer(TrainerType.RIVAL_5, globalScene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)) .setCustomModifierRewards({ guaranteedModifierTiers: [ ModifierTier.ROGUE, ModifierTier.ROGUE, ModifierTier.ROGUE, ModifierTier.ULTRA, ModifierTier.ULTRA ], allowLuckUpgrades: false }), [ClassicFixedBossWaves.EVIL_BOSS_2]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(35) .setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.ROCKET_BOSS_GIOVANNI_2, TrainerType.MAXIE_2, TrainerType.ARCHIE_2, TrainerType.CYRUS_2, TrainerType.GHETSIS_2, TrainerType.LYSANDRE_2, TrainerType.LUSAMINE_2, TrainerType.GUZMA_2, TrainerType.ROSE_2, TrainerType.PENNY_2 ])) @@ -588,6 +589,6 @@ export const classicFixedBattles: FixedBattleConfigs = { [190]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(182) .setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.BLUE, [ TrainerType.RED, TrainerType.LANCE_CHAMPION ], [ TrainerType.STEVEN, TrainerType.WALLACE ], TrainerType.CYNTHIA, [ TrainerType.ALDER, TrainerType.IRIS ], TrainerType.DIANTHA, TrainerType.HAU, TrainerType.LEON, [ TrainerType.GEETA, TrainerType.NEMONA ], TrainerType.KIERAN ])), [195]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) - .setGetTrainerFunc(scene => new Trainer(scene, TrainerType.RIVAL_6, scene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)) + .setGetTrainerFunc(() => new Trainer(TrainerType.RIVAL_6, globalScene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)) .setCustomModifierRewards({ guaranteedModifierTiers: [ ModifierTier.ROGUE, ModifierTier.ROGUE, ModifierTier.ULTRA, ModifierTier.ULTRA, ModifierTier.GREAT, ModifierTier.GREAT ], allowLuckUpgrades: false }) }; diff --git a/src/data/ability.ts b/src/data/ability.ts index 7fa046e2369..0e8b3c2392d 100644 --- a/src/data/ability.ts +++ b/src/data/ability.ts @@ -1,23 +1,29 @@ -import Pokemon, { EnemyPokemon, HitResult, MoveResult, PlayerPokemon, PokemonMove } from "../field/pokemon"; +import type { EnemyPokemon } from "../field/pokemon"; +import type Pokemon from "../field/pokemon"; +import { HitResult, MoveResult, PlayerPokemon, PokemonMove } from "../field/pokemon"; import { Type } from "#enums/type"; -import { Constructor } from "#app/utils"; +import type { Constructor } from "#app/utils"; import * as Utils from "../utils"; import { getPokemonNameWithAffix } from "../messages"; -import { Weather } from "#app/data/weather"; -import { BattlerTag, BattlerTagLapseType, GroundedTag } from "./battler-tags"; +import type { Weather } from "#app/data/weather"; +import type { BattlerTag } from "./battler-tags"; +import { BattlerTagLapseType, GroundedTag } from "./battler-tags"; import { getNonVolatileStatusEffects, getStatusEffectDescriptor, getStatusEffectHealText } from "#app/data/status-effect"; import { Gender } from "./gender"; -import Move, { AttackMove, MoveCategory, MoveFlags, MoveTarget, FlinchAttr, OneHitKOAttr, HitHealAttr, allMoves, StatusMove, SelfStatusMove, VariablePowerAttr, applyMoveAttrs, VariableMoveTypeAttr, RandomMovesetMoveAttr, RandomMoveAttr, NaturePowerAttr, CopyMoveAttr, NeutralDamageAgainstFlyingTypeMultiplierAttr, FixedDamageAttr } from "./move"; -import { ArenaTagSide, ArenaTrapTag } from "./arena-tag"; +import type Move from "./move"; +import { AttackMove, MoveCategory, MoveFlags, MoveTarget, FlinchAttr, OneHitKOAttr, HitHealAttr, allMoves, StatusMove, SelfStatusMove, VariablePowerAttr, applyMoveAttrs, VariableMoveTypeAttr, RandomMovesetMoveAttr, RandomMoveAttr, NaturePowerAttr, CopyMoveAttr, NeutralDamageAgainstFlyingTypeMultiplierAttr, FixedDamageAttr } from "./move"; +import type { ArenaTrapTag } from "./arena-tag"; +import { ArenaTagSide } from "./arena-tag"; import { BerryModifier, HitHealModifier, PokemonHeldItemModifier } from "../modifier/modifier"; import { TerrainType } from "./terrain"; import { SpeciesFormChangeManualTrigger, SpeciesFormChangeRevertWeatherFormTrigger, SpeciesFormChangeWeatherTrigger } from "./pokemon-forms"; import i18next from "i18next"; -import { Localizable } from "#app/interfaces/locales"; +import type { Localizable } from "#app/interfaces/locales"; import { Command } from "../ui/command-ui-handler"; import { BerryModifierType } from "#app/modifier/modifier-type"; import { getPokeballName } from "./pokeball"; -import { BattlerIndex, BattleType } from "#app/battle"; +import type { BattlerIndex } from "#app/battle"; +import { BattleType } from "#app/battle"; import { Abilities } from "#enums/abilities"; import { ArenaTagType } from "#enums/arena-tag-type"; import { BattlerTagType } from "#enums/battler-tag-type"; @@ -28,7 +34,7 @@ import { MovePhase } from "#app/phases/move-phase"; import { PokemonHealPhase } from "#app/phases/pokemon-heal-phase"; import { ShowAbilityPhase } from "#app/phases/show-ability-phase"; import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { SwitchType } from "#app/enums/switch-type"; import { SwitchPhase } from "#app/phases/switch-phase"; import { SwitchSummonPhase } from "#app/phases/switch-summon-phase"; @@ -226,7 +232,7 @@ export class PostBattleInitFormChangeAbAttr extends PostBattleInitAbAttr { applyPostBattleInit(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { const formIndex = this.formFunc(pokemon); if (formIndex !== pokemon.formIndex && !simulated) { - return pokemon.scene.triggerPokemonFormChange(pokemon, SpeciesFormChangeManualTrigger, false); + return globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeManualTrigger, false); } return false; @@ -251,18 +257,18 @@ export class PostBattleInitStatStageChangeAbAttr extends PostBattleInitAbAttr { if (!simulated) { if (this.selfTarget) { - statStageChangePhases.push(new StatStageChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, this.stats, this.stages)); + statStageChangePhases.push(new StatStageChangePhase(pokemon.getBattlerIndex(), true, this.stats, this.stages)); } else { for (const opponent of pokemon.getOpponents()) { - statStageChangePhases.push(new StatStageChangePhase(pokemon.scene, opponent.getBattlerIndex(), false, this.stats, this.stages)); + statStageChangePhases.push(new StatStageChangePhase(opponent.getBattlerIndex(), false, this.stats, this.stages)); } } for (const statStageChangePhase of statStageChangePhases) { if (!this.selfTarget && !statStageChangePhase.getPokemon()?.summonData) { - pokemon.scene.pushPhase(statStageChangePhase); + globalScene.pushPhase(statStageChangePhase); } else { // TODO: This causes the ability bar to be shown at the wrong time - pokemon.scene.unshiftPhase(statStageChangePhase); + globalScene.unshiftPhase(statStageChangePhase); } } } @@ -447,7 +453,7 @@ export class TypeImmunityHealAbAttr extends TypeImmunityAbAttr { if (ret) { if (!pokemon.isFullHp() && !simulated) { const abilityName = (!passive ? pokemon.getAbility() : pokemon.getPassiveAbility()).name; - pokemon.scene.unshiftPhase(new PokemonHealPhase(pokemon.scene, pokemon.getBattlerIndex(), + globalScene.unshiftPhase(new PokemonHealPhase(pokemon.getBattlerIndex(), Utils.toDmgValue(pokemon.getMaxHp() / 4), i18next.t("abilityTriggers:typeImmunityHeal", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), abilityName }), true)); cancelled.value = true; // Suppresses "No Effect" message } @@ -475,7 +481,7 @@ class TypeImmunityStatStageChangeAbAttr extends TypeImmunityAbAttr { if (ret) { cancelled.value = true; // Suppresses "No Effect" message if (!simulated) { - pokemon.scene.unshiftPhase(new StatStageChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [ this.stat ], this.stages)); + globalScene.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, [ this.stat ], this.stages)); } } @@ -658,7 +664,7 @@ export class MoveImmunityStatStageChangeAbAttr extends MoveImmunityAbAttr { applyPreDefend(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, cancelled: Utils.BooleanHolder, args: any[]): boolean { const ret = super.applyPreDefend(pokemon, passive, simulated, attacker, move, cancelled, args); if (ret && !simulated) { - pokemon.scene.unshiftPhase(new StatStageChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [ this.stat ], this.stages)); + globalScene.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, [ this.stat ], this.stages)); } return ret; @@ -685,7 +691,7 @@ export class ReverseDrainAbAttr extends PostDefendAbAttr { override applyPostDefend(pokemon: Pokemon, _passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, _hitResult: HitResult, _args: any[]): boolean { if (move.hasAttr(HitHealAttr) && !move.hitsSubstitute(attacker, pokemon)) { if (!simulated) { - pokemon.scene.queueMessage(i18next.t("abilityTriggers:reverseDrain", { pokemonNameWithAffix: getPokemonNameWithAffix(attacker) })); + globalScene.queueMessage(i18next.t("abilityTriggers:reverseDrain", { pokemonNameWithAffix: getPokemonNameWithAffix(attacker) })); } return true; } @@ -719,11 +725,11 @@ export class PostDefendStatStageChangeAbAttr extends PostDefendAbAttr { if (this.allOthers) { const otherPokemon = pokemon.getAlly() ? pokemon.getOpponents().concat([ pokemon.getAlly() ]) : pokemon.getOpponents(); for (const other of otherPokemon) { - other.scene.unshiftPhase(new StatStageChangePhase(other.scene, (other).getBattlerIndex(), false, [ this.stat ], this.stages)); + globalScene.unshiftPhase(new StatStageChangePhase((other).getBattlerIndex(), false, [ this.stat ], this.stages)); } return true; } - pokemon.scene.unshiftPhase(new StatStageChangePhase(pokemon.scene, (this.selfTarget ? pokemon : attacker).getBattlerIndex(), this.selfTarget, [ this.stat ], this.stages)); + globalScene.unshiftPhase(new StatStageChangePhase((this.selfTarget ? pokemon : attacker).getBattlerIndex(), this.selfTarget, [ this.stat ], this.stages)); return true; } @@ -755,7 +761,7 @@ export class PostDefendHpGatedStatStageChangeAbAttr extends PostDefendAbAttr { if (this.condition(pokemon, attacker, move) && (pokemon.hp <= hpGateFlat && (pokemon.hp + damageReceived) > hpGateFlat) && !move.hitsSubstitute(attacker, pokemon)) { if (!simulated) { - pokemon.scene.unshiftPhase(new StatStageChangePhase(pokemon.scene, (this.selfTarget ? pokemon : attacker).getBattlerIndex(), true, this.stats, this.stages)); + globalScene.unshiftPhase(new StatStageChangePhase((this.selfTarget ? pokemon : attacker).getBattlerIndex(), true, this.stats, this.stages)); } return true; } @@ -777,10 +783,10 @@ export class PostDefendApplyArenaTrapTagAbAttr extends PostDefendAbAttr { override applyPostDefend(pokemon: Pokemon, _passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, _hitResult: HitResult, _args: any[]): boolean { if (this.condition(pokemon, attacker, move) && !move.hitsSubstitute(attacker, pokemon)) { - const tag = pokemon.scene.arena.getTag(this.tagType) as ArenaTrapTag; - if (!pokemon.scene.arena.getTag(this.tagType) || tag.layers < tag.maxLayers) { + const tag = globalScene.arena.getTag(this.tagType) as ArenaTrapTag; + if (!globalScene.arena.getTag(this.tagType) || tag.layers < tag.maxLayers) { if (!simulated) { - pokemon.scene.arena.addTag(this.tagType, 0, undefined, pokemon.id, pokemon.isPlayer() ? ArenaTagSide.ENEMY : ArenaTagSide.PLAYER); + globalScene.arena.addTag(this.tagType, 0, undefined, pokemon.id, pokemon.isPlayer() ? ArenaTagSide.ENEMY : ArenaTagSide.PLAYER); } return true; } @@ -803,7 +809,7 @@ export class PostDefendApplyBattlerTagAbAttr extends PostDefendAbAttr { if (this.condition(pokemon, attacker, move) && !move.hitsSubstitute(attacker, pokemon)) { if (!pokemon.getTag(this.tagType) && !simulated) { pokemon.addTag(this.tagType, undefined, undefined, pokemon.id); - pokemon.scene.queueMessage(i18next.t("abilityTriggers:windPowerCharged", { pokemonName: getPokemonNameWithAffix(pokemon), moveName: move.name })); + globalScene.queueMessage(i18next.t("abilityTriggers:windPowerCharged", { pokemonName: getPokemonNameWithAffix(pokemon), moveName: move.name })); } return true; } @@ -849,9 +855,9 @@ export class PostDefendTerrainChangeAbAttr extends PostDefendAbAttr { override applyPostDefend(pokemon: Pokemon, _passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, hitResult: HitResult, _args: any[]): boolean { if (hitResult < HitResult.NO_EFFECT && !move.hitsSubstitute(attacker, pokemon)) { if (simulated) { - return pokemon.scene.arena.terrain?.terrainType !== (this.terrainType || undefined); + return globalScene.arena.terrain?.terrainType !== (this.terrainType || undefined); } else { - return pokemon.scene.arena.trySetTerrain(this.terrainType, true); + return globalScene.arena.trySetTerrain(this.terrainType, true); } } @@ -941,7 +947,7 @@ export class PostDefendCritStatStageChangeAbAttr extends PostDefendAbAttr { } if (!simulated) { - pokemon.scene.unshiftPhase(new StatStageChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [ this.stat ], this.stages)); + globalScene.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, [ this.stat ], this.stages)); } return true; @@ -1030,11 +1036,11 @@ export class PostDefendWeatherChangeAbAttr extends PostDefendAbAttr { if (this.condition && !this.condition(pokemon, attacker, move) || move.hitsSubstitute(attacker, pokemon)) { return false; } - if (!pokemon.scene.arena.weather?.isImmutable()) { + if (!globalScene.arena.weather?.isImmutable()) { if (simulated) { - return pokemon.scene.arena.weather?.weatherType !== this.weatherType; + return globalScene.arena.weather?.weatherType !== this.weatherType; } - return pokemon.scene.arena.trySetWeather(this.weatherType, true); + return globalScene.arena.trySetWeather(this.weatherType, true); } return false; @@ -1138,7 +1144,7 @@ export class PostStatStageChangeStatStageChangeAbAttr extends PostStatStageChang applyPostStatStageChange(pokemon: Pokemon, simulated: boolean, statStagesChanged: BattleStat[], stagesChanged: number, selfTarget: boolean, args: any[]): boolean { if (this.condition(pokemon, statStagesChanged, stagesChanged) && !selfTarget) { if (!simulated) { - pokemon.scene.unshiftPhase(new StatStageChangePhase(pokemon.scene, (pokemon).getBattlerIndex(), true, this.statsToChange, this.stages)); + globalScene.unshiftPhase(new StatStageChangePhase((pokemon).getBattlerIndex(), true, this.statsToChange, this.stages)); } return true; } @@ -1661,9 +1667,9 @@ export class PostAttackStealHeldItemAbAttr extends PostAttackAbAttr { const heldItems = this.getTargetHeldItems(defender).filter(i => i.isTransferable); if (heldItems.length) { const stolenItem = heldItems[pokemon.randSeedInt(heldItems.length)]; - pokemon.scene.tryTransferHeldItemModifier(stolenItem, pokemon, false).then(success => { + globalScene.tryTransferHeldItemModifier(stolenItem, pokemon, false).then(success => { if (success) { - pokemon.scene.queueMessage(i18next.t("abilityTriggers:postAttackStealHeldItem", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), defenderName: defender.name, stolenItemType: stolenItem.type.name })); + globalScene.queueMessage(i18next.t("abilityTriggers:postAttackStealHeldItem", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), defenderName: defender.name, stolenItemType: stolenItem.type.name })); } resolve(success); }); @@ -1675,7 +1681,7 @@ export class PostAttackStealHeldItemAbAttr extends PostAttackAbAttr { } getTargetHeldItems(target: Pokemon): PokemonHeldItemModifier[] { - return target.scene.findModifiers(m => m instanceof PokemonHeldItemModifier + return globalScene.findModifiers(m => m instanceof PokemonHeldItemModifier && m.pokemonId === target.id, target.isPlayer()) as PokemonHeldItemModifier[]; } } @@ -1754,9 +1760,9 @@ export class PostDefendStealHeldItemAbAttr extends PostDefendAbAttr { const heldItems = this.getTargetHeldItems(attacker).filter(i => i.isTransferable); if (heldItems.length) { const stolenItem = heldItems[pokemon.randSeedInt(heldItems.length)]; - pokemon.scene.tryTransferHeldItemModifier(stolenItem, pokemon, false).then(success => { + globalScene.tryTransferHeldItemModifier(stolenItem, pokemon, false).then(success => { if (success) { - pokemon.scene.queueMessage(i18next.t("abilityTriggers:postDefendStealHeldItem", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), attackerName: attacker.name, stolenItemType: stolenItem.type.name })); + globalScene.queueMessage(i18next.t("abilityTriggers:postDefendStealHeldItem", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), attackerName: attacker.name, stolenItemType: stolenItem.type.name })); } resolve(success); }); @@ -1768,7 +1774,7 @@ export class PostDefendStealHeldItemAbAttr extends PostDefendAbAttr { } getTargetHeldItems(target: Pokemon): PokemonHeldItemModifier[] { - return target.scene.findModifiers(m => m instanceof PokemonHeldItemModifier + return globalScene.findModifiers(m => m instanceof PokemonHeldItemModifier && m.pokemonId === target.id, target.isPlayer()) as PokemonHeldItemModifier[]; } } @@ -1850,7 +1856,7 @@ class PostVictoryStatStageChangeAbAttr extends PostVictoryAbAttr { ? this.stat(pokemon) : this.stat; if (!simulated) { - pokemon.scene.unshiftPhase(new StatStageChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [ stat ], this.stages)); + globalScene.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, [ stat ], this.stages)); } return true; } @@ -1869,7 +1875,7 @@ export class PostVictoryFormChangeAbAttr extends PostVictoryAbAttr { const formIndex = this.formFunc(pokemon); if (formIndex !== pokemon.formIndex) { if (!simulated) { - pokemon.scene.triggerPokemonFormChange(pokemon, SpeciesFormChangeManualTrigger, false); + globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeManualTrigger, false); } return true; } @@ -1900,7 +1906,7 @@ export class PostKnockOutStatStageChangeAbAttr extends PostKnockOutAbAttr { ? this.stat(pokemon) : this.stat; if (!simulated) { - pokemon.scene.unshiftPhase(new StatStageChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [ stat ], this.stages)); + globalScene.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, [ stat ], this.stages)); } return true; } @@ -1915,7 +1921,7 @@ export class CopyFaintedAllyAbilityAbAttr extends PostKnockOutAbAttr { if (pokemon.isPlayer() === knockedOut.isPlayer() && !knockedOut.getAbility().hasAttr(UncopiableAbilityAbAttr)) { if (!simulated) { pokemon.summonData.ability = knockedOut.getAbility().id; - pokemon.scene.queueMessage(i18next.t("abilityTriggers:copyFaintedAllyAbility", { pokemonNameWithAffix: getPokemonNameWithAffix(knockedOut), abilityName: allAbilities[knockedOut.getAbility().id].name })); + globalScene.queueMessage(i18next.t("abilityTriggers:copyFaintedAllyAbility", { pokemonNameWithAffix: getPokemonNameWithAffix(knockedOut), abilityName: allAbilities[knockedOut.getAbility().id].name })); } return true; } @@ -1987,7 +1993,7 @@ export class PostIntimidateStatStageChangeAbAttr extends AbAttr { apply(pokemon: Pokemon, passive: boolean, simulated:boolean, cancelled: Utils.BooleanHolder, args: any[]): boolean { if (!simulated) { - pokemon.scene.pushPhase(new StatStageChangePhase(pokemon.scene, pokemon.getBattlerIndex(), false, this.stats, this.stages)); + globalScene.pushPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), false, this.stats, this.stages)); } cancelled.value = this.overwrites; return true; @@ -2029,7 +2035,7 @@ export class PostSummonRemoveArenaTagAbAttr extends PostSummonAbAttr { applyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean | Promise { if (!simulated) { for (const arenaTag of this.arenaTags) { - pokemon.scene.arena.removeTag(arenaTag); + globalScene.arena.removeTag(arenaTag); } } return true; @@ -2047,7 +2053,7 @@ export class PostSummonMessageAbAttr extends PostSummonAbAttr { applyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { if (!simulated) { - pokemon.scene.queueMessage(this.messageFunc(pokemon)); + globalScene.queueMessage(this.messageFunc(pokemon)); } return true; @@ -2066,7 +2072,7 @@ export class PostSummonUnnamedMessageAbAttr extends PostSummonAbAttr { applyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { if (!simulated) { - pokemon.scene.queueMessage(this.message); + globalScene.queueMessage(this.message); } return true; @@ -2117,7 +2123,7 @@ export class PostSummonStatStageChangeAbAttr extends PostSummonAbAttr { if (this.selfTarget) { // we unshift the StatStageChangePhase to put it right after the showAbility and not at the end of the // phase list (which could be after CommandPhase for example) - pokemon.scene.unshiftPhase(new StatStageChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, this.stats, this.stages)); + globalScene.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, this.stats, this.stages)); return true; } for (const opponent of pokemon.getOpponents()) { @@ -2131,7 +2137,7 @@ export class PostSummonStatStageChangeAbAttr extends PostSummonAbAttr { } } if (!cancelled.value) { - pokemon.scene.unshiftPhase(new StatStageChangePhase(pokemon.scene, opponent.getBattlerIndex(), false, this.stats, this.stages)); + globalScene.unshiftPhase(new StatStageChangePhase(opponent.getBattlerIndex(), false, this.stats, this.stages)); } } return true; @@ -2153,7 +2159,7 @@ export class PostSummonAllyHealAbAttr extends PostSummonAbAttr { const target = pokemon.getAlly(); if (target?.isActive(true)) { if (!simulated) { - target.scene.unshiftPhase(new PokemonHealPhase(target.scene, target.getBattlerIndex(), + globalScene.unshiftPhase(new PokemonHealPhase(target.getBattlerIndex(), Utils.toDmgValue(pokemon.getMaxHp() / this.healRatio), i18next.t("abilityTriggers:postSummonAllyHeal", { pokemonNameWithAffix: getPokemonNameWithAffix(target), pokemonName: pokemon.name }), true, !this.showAnim)); } @@ -2185,7 +2191,7 @@ export class PostSummonClearAllyStatStagesAbAttr extends PostSummonAbAttr { target.setStatStage(s, 0); } - target.scene.queueMessage(i18next.t("abilityTriggers:postSummonClearAllyStats", { pokemonNameWithAffix: getPokemonNameWithAffix(target) })); + globalScene.queueMessage(i18next.t("abilityTriggers:postSummonClearAllyStats", { pokemonNameWithAffix: getPokemonNameWithAffix(target) })); } return true; @@ -2237,7 +2243,7 @@ export class DownloadAbAttr extends PostSummonAbAttr { if (this.enemyDef > 0 && this.enemySpDef > 0) { // only activate if there's actually an enemy to download from if (!simulated) { - pokemon.scene.unshiftPhase(new StatStageChangePhase(pokemon.scene, pokemon.getBattlerIndex(), false, this.stats, 1)); + globalScene.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), false, this.stats, 1)); } return true; } @@ -2258,11 +2264,11 @@ export class PostSummonWeatherChangeAbAttr extends PostSummonAbAttr { applyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { if ((this.weatherType === WeatherType.HEAVY_RAIN || this.weatherType === WeatherType.HARSH_SUN || - this.weatherType === WeatherType.STRONG_WINDS) || !pokemon.scene.arena.weather?.isImmutable()) { + this.weatherType === WeatherType.STRONG_WINDS) || !globalScene.arena.weather?.isImmutable()) { if (simulated) { - return pokemon.scene.arena.weather?.weatherType !== this.weatherType; + return globalScene.arena.weather?.weatherType !== this.weatherType; } else { - return pokemon.scene.arena.trySetWeather(this.weatherType, true); + return globalScene.arena.trySetWeather(this.weatherType, true); } } @@ -2281,9 +2287,9 @@ export class PostSummonTerrainChangeAbAttr extends PostSummonAbAttr { applyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { if (simulated) { - return pokemon.scene.arena.terrain?.terrainType !== this.terrainType; + return globalScene.arena.terrain?.terrainType !== this.terrainType; } else { - return pokemon.scene.arena.trySetTerrain(this.terrainType, true); + return globalScene.arena.trySetTerrain(this.terrainType, true); } } } @@ -2300,7 +2306,7 @@ export class PostSummonFormChangeAbAttr extends PostSummonAbAttr { applyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { const formIndex = this.formFunc(pokemon); if (formIndex !== pokemon.formIndex) { - return simulated || pokemon.scene.triggerPokemonFormChange(pokemon, SpeciesFormChangeManualTrigger, false); + return simulated || globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeManualTrigger, false); } return false; @@ -2320,7 +2326,7 @@ export class PostSummonCopyAbilityAbAttr extends PostSummonAbAttr { let target: Pokemon; if (targets.length > 1) { - pokemon.scene.executeWithSeedOffset(() => target = Utils.randSeedItem(targets), pokemon.scene.currentBattle.waveIndex); + globalScene.executeWithSeedOffset(() => target = Utils.randSeedItem(targets), globalScene.currentBattle.waveIndex); } else { target = targets[0]; } @@ -2377,7 +2383,7 @@ export class PostSummonUserFieldRemoveStatusEffectAbAttr extends PostSummonAbAtt * @returns A boolean or a promise that resolves to a boolean indicating the result of the ability application. */ applyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean | Promise { - const party = pokemon instanceof PlayerPokemon ? pokemon.scene.getPlayerField() : pokemon.scene.getEnemyField(); + const party = pokemon instanceof PlayerPokemon ? globalScene.getPlayerField() : globalScene.getEnemyField(); const allowedParty = party.filter(p => p.isAllowedInBattle()); if (allowedParty.length < 1) { @@ -2387,7 +2393,7 @@ export class PostSummonUserFieldRemoveStatusEffectAbAttr extends PostSummonAbAtt if (!simulated) { for (const pokemon of allowedParty) { if (pokemon.status && this.statusEffect.includes(pokemon.status.effect)) { - pokemon.scene.queueMessage(getStatusEffectHealText(pokemon.status.effect, getPokemonNameWithAffix(pokemon))); + globalScene.queueMessage(getStatusEffectHealText(pokemon.status.effect, getPokemonNameWithAffix(pokemon))); pokemon.resetStatus(false); pokemon.updateInfo(); } @@ -2401,7 +2407,7 @@ export class PostSummonUserFieldRemoveStatusEffectAbAttr extends PostSummonAbAtt /** Attempt to copy the stat changes on an ally pokemon */ export class PostSummonCopyAllyStatsAbAttr extends PostSummonAbAttr { applyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { - if (!pokemon.scene.currentBattle.double) { + if (!globalScene.currentBattle.double) { return false; } @@ -2445,7 +2451,7 @@ export class PostSummonTransformAbAttr extends PostSummonAbAttr { let target: Pokemon; if (targets.length > 1) { - pokemon.scene.executeWithSeedOffset(() => { + globalScene.executeWithSeedOffset(() => { // in a double battle, if one of the opposing pokemon is fused the other one will be chosen // if both are fused, then Imposter will fail below if (targets[0].fusionSpecies) { @@ -2456,7 +2462,7 @@ export class PostSummonTransformAbAttr extends PostSummonAbAttr { return; } target = Utils.randSeedItem(targets); - }, pokemon.scene.currentBattle.waveIndex); + }, globalScene.currentBattle.waveIndex); } else { target = targets[0]; } @@ -2493,8 +2499,8 @@ export class PostSummonTransformAbAttr extends PostSummonAbAttr { pokemon.summonData.types = target.getTypes(); promises.push(pokemon.updateInfo()); - pokemon.scene.queueMessage(i18next.t("abilityTriggers:postSummonTransform", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), targetName: target.name, })); - pokemon.scene.playSound("battle_anims/PRSFX- Transform"); + globalScene.queueMessage(i18next.t("abilityTriggers:postSummonTransform", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), targetName: target.name, })); + globalScene.playSound("battle_anims/PRSFX- Transform"); promises.push(pokemon.loadAssets(false).then(() => { pokemon.playAnim(); pokemon.updateInfo(); @@ -2520,14 +2526,14 @@ export class PostSummonWeatherSuppressedFormChangeAbAttr extends PostSummonAbAtt * @returns whether a Pokemon was reverted to its normal form */ applyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]) { - const pokemonToTransform = getPokemonWithWeatherBasedForms(pokemon.scene); + const pokemonToTransform = getPokemonWithWeatherBasedForms(); if (pokemonToTransform.length < 1) { return false; } if (!simulated) { - pokemon.scene.arena.triggerWeatherBasedFormChangesToNormal(); + globalScene.arena.triggerWeatherBasedFormChangesToNormal(); } return true; @@ -2567,8 +2573,8 @@ export class PostSummonFormChangeByWeatherAbAttr extends PostSummonAbAttr { return simulated; } - pokemon.scene.triggerPokemonFormChange(pokemon, SpeciesFormChangeWeatherTrigger); - pokemon.scene.triggerPokemonFormChange(pokemon, SpeciesFormChangeRevertWeatherFormTrigger); + globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeWeatherTrigger); + globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeRevertWeatherFormTrigger); queueShowAbility(pokemon, passive); return true; } @@ -2589,7 +2595,7 @@ export class CommanderAbAttr extends AbAttr { override apply(pokemon: Pokemon, passive: boolean, simulated: boolean, cancelled: null, args: any[]): boolean { // TODO: Should this work with X + Dondozo fusions? - if (pokemon.scene.currentBattle?.double && pokemon.getAlly()?.species.speciesId === Species.DONDOZO) { + if (globalScene.currentBattle?.double && pokemon.getAlly()?.species.speciesId === Species.DONDOZO) { // If the ally Dondozo is fainted or was previously "commanded" by // another Pokemon, this effect cannot apply. if (pokemon.getAlly().isFainted() || pokemon.getAlly().getTag(BattlerTagType.COMMANDED)) { @@ -2600,11 +2606,11 @@ export class CommanderAbAttr extends AbAttr { // Lapse the source's semi-invulnerable tags (to avoid visual inconsistencies) pokemon.lapseTags(BattlerTagLapseType.MOVE_EFFECT); // Play an animation of the source jumping into the ally Dondozo's mouth - pokemon.scene.triggerPokemonBattleAnim(pokemon, PokemonAnimType.COMMANDER_APPLY); + globalScene.triggerPokemonBattleAnim(pokemon, PokemonAnimType.COMMANDER_APPLY); // Apply boosts from this effect to the ally Dondozo pokemon.getAlly().addTag(BattlerTagType.COMMANDED, 0, Moves.NONE, pokemon.id); // Cancel the source Pokemon's next move (if a move is queued) - pokemon.scene.tryRemovePhase((phase) => phase instanceof MovePhase && phase.pokemon === pokemon); + globalScene.tryRemovePhase((phase) => phase instanceof MovePhase && phase.pokemon === pokemon); } return true; } @@ -2649,26 +2655,26 @@ export class PreSwitchOutClearWeatherAbAttr extends PreSwitchOutAbAttr { * @returns {boolean} Returns true if the weather clears, otherwise false. */ applyPreSwitchOut(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean | Promise { - const weatherType = pokemon.scene.arena.weather?.weatherType; + const weatherType = globalScene.arena.weather?.weatherType; let turnOffWeather = false; // Clear weather only if user's ability matches the weather and no other pokemon has the ability. switch (weatherType) { case (WeatherType.HARSH_SUN): if (pokemon.hasAbility(Abilities.DESOLATE_LAND) - && pokemon.scene.getField(true).filter(p => p !== pokemon).filter(p => p.hasAbility(Abilities.DESOLATE_LAND)).length === 0) { + && globalScene.getField(true).filter(p => p !== pokemon).filter(p => p.hasAbility(Abilities.DESOLATE_LAND)).length === 0) { turnOffWeather = true; } break; case (WeatherType.HEAVY_RAIN): if (pokemon.hasAbility(Abilities.PRIMORDIAL_SEA) - && pokemon.scene.getField(true).filter(p => p !== pokemon).filter(p => p.hasAbility(Abilities.PRIMORDIAL_SEA)).length === 0) { + && globalScene.getField(true).filter(p => p !== pokemon).filter(p => p.hasAbility(Abilities.PRIMORDIAL_SEA)).length === 0) { turnOffWeather = true; } break; case (WeatherType.STRONG_WINDS): if (pokemon.hasAbility(Abilities.DELTA_STREAM) - && pokemon.scene.getField(true).filter(p => p !== pokemon).filter(p => p.hasAbility(Abilities.DELTA_STREAM)).length === 0) { + && globalScene.getField(true).filter(p => p !== pokemon).filter(p => p.hasAbility(Abilities.DELTA_STREAM)).length === 0) { turnOffWeather = true; } break; @@ -2679,7 +2685,7 @@ export class PreSwitchOutClearWeatherAbAttr extends PreSwitchOutAbAttr { } if (turnOffWeather) { - pokemon.scene.arena.trySetWeather(WeatherType.NONE, false); + globalScene.arena.trySetWeather(WeatherType.NONE, false); return true; } @@ -2728,7 +2734,7 @@ export class PreSwitchOutFormChangeAbAttr extends PreSwitchOutAbAttr { const formIndex = this.formFunc(pokemon); if (formIndex !== pokemon.formIndex) { if (!simulated) { - pokemon.scene.triggerPokemonFormChange(pokemon, SpeciesFormChangeManualTrigger, false); + globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeManualTrigger, false); } return true; } @@ -3159,14 +3165,14 @@ function getSheerForceHitDisableAbCondition(): AbAttrCondition { } function getWeatherCondition(...weatherTypes: WeatherType[]): AbAttrCondition { - return (pokemon: Pokemon) => { - if (!pokemon.scene?.arena) { + return () => { + if (!globalScene?.arena) { return false; } - if (pokemon.scene.arena.weather?.isEffectSuppressed(pokemon.scene)) { + if (globalScene.arena.weather?.isEffectSuppressed()) { return false; } - const weatherType = pokemon.scene.arena.weather?.weatherType; + const weatherType = globalScene.arena.weather?.weatherType; return !!weatherType && weatherTypes.indexOf(weatherType) > -1; }; } @@ -3255,7 +3261,7 @@ export class ForewarnAbAttr extends PostSummonAbAttr { } } if (!simulated) { - pokemon.scene.queueMessage(i18next.t("abilityTriggers:forewarn", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), moveName: maxMove })); + globalScene.queueMessage(i18next.t("abilityTriggers:forewarn", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), moveName: maxMove })); } return true; } @@ -3269,7 +3275,7 @@ export class FriskAbAttr extends PostSummonAbAttr { applyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { if (!simulated) { for (const opponent of pokemon.getOpponents()) { - pokemon.scene.queueMessage(i18next.t("abilityTriggers:frisk", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), opponentName: opponent.name, opponentAbilityName: opponent.getAbility().name })); + globalScene.queueMessage(i18next.t("abilityTriggers:frisk", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), opponentName: opponent.name, opponentAbilityName: opponent.getAbility().name })); setAbilityRevealed(opponent); } } @@ -3317,12 +3323,12 @@ export class PostWeatherChangeFormChangeAbAttr extends PostWeatherChangeAbAttr { return simulated; } - const weatherType = pokemon.scene.arena.weather?.weatherType; + const weatherType = globalScene.arena.weather?.weatherType; if (weatherType && this.formRevertingWeathers.includes(weatherType)) { - pokemon.scene.arena.triggerWeatherBasedFormChangesToNormal(); + globalScene.arena.triggerWeatherBasedFormChangesToNormal(); } else { - pokemon.scene.arena.triggerWeatherBasedFormChanges(); + globalScene.arena.triggerWeatherBasedFormChanges(); } return true; } @@ -3386,10 +3392,9 @@ export class PostWeatherLapseHealAbAttr extends PostWeatherLapseAbAttr { applyPostWeatherLapse(pokemon: Pokemon, passive: boolean, simulated: boolean, weather: Weather, args: any[]): boolean { if (!pokemon.isFullHp()) { - const scene = pokemon.scene; const abilityName = (!passive ? pokemon.getAbility() : pokemon.getPassiveAbility()).name; if (!simulated) { - scene.unshiftPhase(new PokemonHealPhase(scene, pokemon.getBattlerIndex(), + globalScene.unshiftPhase(new PokemonHealPhase(pokemon.getBattlerIndex(), Utils.toDmgValue(pokemon.getMaxHp() / (16 / this.healFactor)), i18next.t("abilityTriggers:postWeatherLapseHeal", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), abilityName }), true)); } return true; @@ -3409,14 +3414,13 @@ export class PostWeatherLapseDamageAbAttr extends PostWeatherLapseAbAttr { } applyPostWeatherLapse(pokemon: Pokemon, passive: boolean, simulated: boolean, weather: Weather, args: any[]): boolean { - const scene = pokemon.scene; if (pokemon.hasAbilityWithAttr(BlockNonDirectDamageAbAttr)) { return false; } if (!simulated) { const abilityName = (!passive ? pokemon.getAbility() : pokemon.getPassiveAbility()).name; - scene.queueMessage(i18next.t("abilityTriggers:postWeatherLapseDamage", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), abilityName })); + globalScene.queueMessage(i18next.t("abilityTriggers:postWeatherLapseDamage", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), abilityName })); pokemon.damageAndUpdate(Utils.toDmgValue(pokemon.getMaxHp() / (16 / this.damageFactor)), HitResult.OTHER); } @@ -3458,7 +3462,7 @@ export class PostTerrainChangeAddBattlerTagAttr extends PostTerrainChangeAbAttr function getTerrainCondition(...terrainTypes: TerrainType[]): AbAttrCondition { return (pokemon: Pokemon) => { - const terrainType = pokemon.scene.arena.terrain?.terrainType; + const terrainType = globalScene.arena.terrain?.terrainType; return !!terrainType && terrainTypes.indexOf(terrainType) > -1; }; } @@ -3494,9 +3498,8 @@ export class PostTurnStatusHealAbAttr extends PostTurnAbAttr { if (pokemon.status && this.effects.includes(pokemon.status.effect)) { if (!pokemon.isFullHp()) { if (!simulated) { - const scene = pokemon.scene; const abilityName = (!passive ? pokemon.getAbility() : pokemon.getPassiveAbility()).name; - scene.unshiftPhase(new PokemonHealPhase(scene, pokemon.getBattlerIndex(), + globalScene.unshiftPhase(new PokemonHealPhase(pokemon.getBattlerIndex(), Utils.toDmgValue(pokemon.getMaxHp() / 8), i18next.t("abilityTriggers:poisonHeal", { pokemonName: getPokemonNameWithAffix(pokemon), abilityName }), true)); } return true; @@ -3527,7 +3530,7 @@ export class PostTurnResetStatusAbAttr extends PostTurnAbAttr { } if (this.target?.status) { if (!simulated) { - this.target.scene.queueMessage(getStatusEffectHealText(this.target.status?.effect, getPokemonNameWithAffix(this.target))); + globalScene.queueMessage(getStatusEffectHealText(this.target.status?.effect, getPokemonNameWithAffix(this.target))); this.target.resetStatus(false); this.target.updateInfo(); } @@ -3592,7 +3595,7 @@ export class PostTurnLootAbAttr extends PostTurnAbAttr { const chosenBerry = new BerryModifierType(chosenBerryType); berriesEaten.splice(randomIdx); // Remove berry from memory - const berryModifier = pokemon.scene.findModifier( + const berryModifier = globalScene.findModifier( (m) => m instanceof BerryModifier && m.berryType === chosenBerryType, pokemon.isPlayer() ) as BerryModifier | undefined; @@ -3600,16 +3603,16 @@ export class PostTurnLootAbAttr extends PostTurnAbAttr { if (!berryModifier) { const newBerry = new BerryModifier(chosenBerry, pokemon.id, chosenBerryType, 1); if (pokemon.isPlayer()) { - pokemon.scene.addModifier(newBerry); + globalScene.addModifier(newBerry); } else { - pokemon.scene.addEnemyModifier(newBerry); + globalScene.addEnemyModifier(newBerry); } } else if (berryModifier.stackCount < berryModifier.getMaxHeldItemCount(pokemon)) { berryModifier.stackCount++; } - pokemon.scene.queueMessage(i18next.t("abilityTriggers:postTurnLootCreateEatenBerry", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), berryName: chosenBerry.name })); - pokemon.scene.updateModifiers(pokemon.isPlayer()); + globalScene.queueMessage(i18next.t("abilityTriggers:postTurnLootCreateEatenBerry", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), berryName: chosenBerry.name })); + globalScene.updateModifiers(pokemon.isPlayer()); return true; } @@ -3642,11 +3645,11 @@ export class MoodyAbAttr extends PostTurnAbAttr { if (canRaise.length > 0) { const raisedStat = canRaise[pokemon.randSeedInt(canRaise.length)]; canLower = canRaise.filter(s => s !== raisedStat); - pokemon.scene.unshiftPhase(new StatStageChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [ raisedStat ], 2)); + globalScene.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, [ raisedStat ], 2)); } if (canLower.length > 0) { const loweredStat = canLower[pokemon.randSeedInt(canLower.length)]; - pokemon.scene.unshiftPhase(new StatStageChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [ loweredStat ], -1)); + globalScene.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, [ loweredStat ], -1)); } } @@ -3663,7 +3666,7 @@ export class SpeedBoostAbAttr extends PostTurnAbAttr { applyPostTurn(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { if (!simulated) { if (!pokemon.turnData.switchedInThisTurn && !pokemon.turnData.failedRunAway) { - pokemon.scene.unshiftPhase(new StatStageChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [ Stat.SPD ], 1)); + globalScene.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, [ Stat.SPD ], 1)); } else { return false; } @@ -3676,9 +3679,8 @@ export class PostTurnHealAbAttr extends PostTurnAbAttr { applyPostTurn(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { if (!pokemon.isFullHp()) { if (!simulated) { - const scene = pokemon.scene; const abilityName = (!passive ? pokemon.getAbility() : pokemon.getPassiveAbility()).name; - scene.unshiftPhase(new PokemonHealPhase(scene, pokemon.getBattlerIndex(), + globalScene.unshiftPhase(new PokemonHealPhase(pokemon.getBattlerIndex(), Utils.toDmgValue(pokemon.getMaxHp() / 16), i18next.t("abilityTriggers:postTurnHeal", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), abilityName }), true)); } @@ -3702,7 +3704,7 @@ export class PostTurnFormChangeAbAttr extends PostTurnAbAttr { const formIndex = this.formFunc(pokemon); if (formIndex !== pokemon.formIndex) { if (!simulated) { - pokemon.scene.triggerPokemonFormChange(pokemon, SpeciesFormChangeManualTrigger, false); + globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeManualTrigger, false); } return true; @@ -3732,7 +3734,7 @@ export class PostTurnHurtIfSleepingAbAttr extends PostTurnAbAttr { if ((opp.status?.effect === StatusEffect.SLEEP || opp.hasAbility(Abilities.COMATOSE)) && !opp.hasAbilityWithAttr(BlockNonDirectDamageAbAttr) && !opp.switchOutStatus) { if (!simulated) { opp.damageAndUpdate(Utils.toDmgValue(opp.getMaxHp() / 8), HitResult.OTHER); - pokemon.scene.queueMessage(i18next.t("abilityTriggers:badDreams", { pokemonName: getPokemonNameWithAffix(opp) })); + globalScene.queueMessage(i18next.t("abilityTriggers:badDreams", { pokemonName: getPokemonNameWithAffix(opp) })); } hadEffect = true; } @@ -3762,11 +3764,11 @@ export class FetchBallAbAttr extends PostTurnAbAttr { if (simulated) { return false; } - const lastUsed = pokemon.scene.currentBattle.lastUsedPokeball; + const lastUsed = globalScene.currentBattle.lastUsedPokeball; if (lastUsed !== null && !!pokemon.isPlayer) { - pokemon.scene.pokeballCounts[lastUsed]++; - pokemon.scene.currentBattle.lastUsedPokeball = null; - pokemon.scene.queueMessage(i18next.t("abilityTriggers:fetchBall", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), pokeballName: getPokeballName(lastUsed) })); + globalScene.pokeballCounts[lastUsed]++; + globalScene.currentBattle.lastUsedPokeball = null; + globalScene.queueMessage(i18next.t("abilityTriggers:fetchBall", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), pokeballName: getPokeballName(lastUsed) })); return true; } return false; @@ -3785,11 +3787,11 @@ export class PostBiomeChangeWeatherChangeAbAttr extends PostBiomeChangeAbAttr { } apply(pokemon: Pokemon, passive: boolean, simulated: boolean, cancelled: Utils.BooleanHolder, args: any[]): boolean { - if (!pokemon.scene.arena.weather?.isImmutable()) { + if (!globalScene.arena.weather?.isImmutable()) { if (simulated) { - return pokemon.scene.arena.weather?.weatherType !== this.weatherType; + return globalScene.arena.weather?.weatherType !== this.weatherType; } else { - return pokemon.scene.arena.trySetWeather(this.weatherType, true); + return globalScene.arena.trySetWeather(this.weatherType, true); } } @@ -3808,9 +3810,9 @@ export class PostBiomeChangeTerrainChangeAbAttr extends PostBiomeChangeAbAttr { apply(pokemon: Pokemon, passive: boolean, simulated: boolean, cancelled: Utils.BooleanHolder, args: any[]): boolean { if (simulated) { - return pokemon.scene.arena.terrain?.terrainType !== this.terrainType; + return globalScene.arena.terrain?.terrainType !== this.terrainType; } else { - return pokemon.scene.arena.trySetTerrain(this.terrainType, true); + return globalScene.arena.trySetTerrain(this.terrainType, true); } } } @@ -3852,10 +3854,10 @@ export class PostDancingMoveAbAttr extends PostMoveUsedAbAttr { // If the move is an AttackMove or a StatusMove the Dancer must replicate the move on the source of the Dance if (move.getMove() instanceof AttackMove || move.getMove() instanceof StatusMove) { const target = this.getTarget(dancer, source, targets); - dancer.scene.unshiftPhase(new MovePhase(dancer.scene, dancer, target, move, true, true)); + globalScene.unshiftPhase(new MovePhase(dancer, target, move, true, true)); } else if (move.getMove() instanceof SelfStatusMove) { // If the move is a SelfStatusMove (ie. Swords Dance) the Dancer should replicate it on itself - dancer.scene.unshiftPhase(new MovePhase(dancer.scene, dancer, [ dancer.getBattlerIndex() ], move, true, true)); + globalScene.unshiftPhase(new MovePhase(dancer, [ dancer.getBattlerIndex() ], move, true, true)); } } return true; @@ -3932,7 +3934,7 @@ export class StatStageChangeMultiplierAbAttr extends AbAttr { export class StatStageChangeCopyAbAttr extends AbAttr { apply(pokemon: Pokemon, passive: boolean, simulated: boolean, cancelled: Utils.BooleanHolder, args: any[]): boolean | Promise { if (!simulated) { - pokemon.scene.unshiftPhase(new StatStageChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, (args[0] as BattleStat[]), (args[1] as number), true, false, false)); + globalScene.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, (args[0] as BattleStat[]), (args[1] as number), true, false, false)); } return true; } @@ -4009,9 +4011,8 @@ export class HealFromBerryUseAbAttr extends AbAttr { apply(pokemon: Pokemon, passive: boolean, simulated: boolean, ...args: [Utils.BooleanHolder, any[]]): boolean { const { name: abilityName } = passive ? pokemon.getPassiveAbility() : pokemon.getAbility(); if (!simulated) { - pokemon.scene.unshiftPhase( + globalScene.unshiftPhase( new PokemonHealPhase( - pokemon.scene, pokemon.getBattlerIndex(), Utils.toDmgValue(pokemon.getMaxHp() * this.healPercent), i18next.t("abilityTriggers:healFromBerryUse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), abilityName }), @@ -4117,13 +4118,13 @@ export class PostBattleLootAbAttr extends PostBattleAbAttr { * @returns `true` if successful */ applyPostBattle(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { - const postBattleLoot = pokemon.scene.currentBattle.postBattleLoot; + const postBattleLoot = globalScene.currentBattle.postBattleLoot; if (!simulated && postBattleLoot.length && args[0]) { const randItem = Utils.randSeedItem(postBattleLoot); //@ts-ignore - TODO see below - if (pokemon.scene.tryTransferHeldItemModifier(randItem, pokemon, true, 1, true, undefined, false)) { // TODO: fix. This is a promise!? + if (globalScene.tryTransferHeldItemModifier(randItem, pokemon, true, 1, true, undefined, false)) { // TODO: fix. This is a promise!? postBattleLoot.splice(postBattleLoot.indexOf(randItem), 1); - pokemon.scene.queueMessage(i18next.t("abilityTriggers:postBattleLoot", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), itemName: randItem.type.name })); + globalScene.queueMessage(i18next.t("abilityTriggers:postBattleLoot", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), itemName: randItem.type.name })); return true; } } @@ -4156,14 +4157,14 @@ export class PostFaintUnsuppressedWeatherFormChangeAbAttr extends PostFaintAbAtt * @returns whether the form change was triggered */ applyPostFaint(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, hitResult: HitResult, args: any[]): boolean { - const pokemonToTransform = getPokemonWithWeatherBasedForms(pokemon.scene); + const pokemonToTransform = getPokemonWithWeatherBasedForms(); if (pokemonToTransform.length < 1) { return false; } if (!simulated) { - pokemon.scene.arena.triggerWeatherBasedFormChanges(); + globalScene.arena.triggerWeatherBasedFormChanges(); } return true; @@ -4185,26 +4186,26 @@ export class PostFaintClearWeatherAbAttr extends PostFaintAbAttr { * @returns {boolean} Returns true if the weather clears, otherwise false. */ applyPostFaint(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker?: Pokemon, move?: Move, hitResult?: HitResult, ...args: any[]): boolean { - const weatherType = pokemon.scene.arena.weather?.weatherType; + const weatherType = globalScene.arena.weather?.weatherType; let turnOffWeather = false; // Clear weather only if user's ability matches the weather and no other pokemon has the ability. switch (weatherType) { case (WeatherType.HARSH_SUN): if (pokemon.hasAbility(Abilities.DESOLATE_LAND) - && pokemon.scene.getField(true).filter(p => p.hasAbility(Abilities.DESOLATE_LAND)).length === 0) { + && globalScene.getField(true).filter(p => p.hasAbility(Abilities.DESOLATE_LAND)).length === 0) { turnOffWeather = true; } break; case (WeatherType.HEAVY_RAIN): if (pokemon.hasAbility(Abilities.PRIMORDIAL_SEA) - && pokemon.scene.getField(true).filter(p => p.hasAbility(Abilities.PRIMORDIAL_SEA)).length === 0) { + && globalScene.getField(true).filter(p => p.hasAbility(Abilities.PRIMORDIAL_SEA)).length === 0) { turnOffWeather = true; } break; case (WeatherType.STRONG_WINDS): if (pokemon.hasAbility(Abilities.DELTA_STREAM) - && pokemon.scene.getField(true).filter(p => p.hasAbility(Abilities.DELTA_STREAM)).length === 0) { + && globalScene.getField(true).filter(p => p.hasAbility(Abilities.DELTA_STREAM)).length === 0) { turnOffWeather = true; } break; @@ -4215,7 +4216,7 @@ export class PostFaintClearWeatherAbAttr extends PostFaintAbAttr { } if (turnOffWeather) { - pokemon.scene.arena.trySetWeather(WeatherType.NONE, false); + globalScene.arena.trySetWeather(WeatherType.NONE, false); return true; } @@ -4235,7 +4236,7 @@ export class PostFaintContactDamageAbAttr extends PostFaintAbAttr { applyPostFaint(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker?: Pokemon, move?: Move, hitResult?: HitResult, ...args: any[]): boolean { if (move !== undefined && attacker !== undefined && move.checkFlag(MoveFlags.MAKES_CONTACT, attacker, pokemon)) { //If the mon didn't die to indirect damage const cancelled = new Utils.BooleanHolder(false); - pokemon.scene.getField(true).map(p => applyAbAttrs(FieldPreventExplosiveMovesAbAttr, p, cancelled, simulated)); + globalScene.getField(true).map(p => applyAbAttrs(FieldPreventExplosiveMovesAbAttr, p, cancelled, simulated)); if (cancelled.value || attacker.hasAbilityWithAttr(BlockNonDirectDamageAbAttr)) { return false; } @@ -4366,7 +4367,7 @@ export class FlinchStatStageChangeAbAttr extends FlinchEffectAbAttr { apply(pokemon: Pokemon, passive: boolean, simulated: boolean, cancelled: Utils.BooleanHolder, args: any[]): boolean { if (!simulated) { - pokemon.scene.unshiftPhase(new StatStageChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, this.stats, this.stages)); + globalScene.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, this.stats, this.stages)); } return true; } @@ -4584,7 +4585,7 @@ export class MoneyAbAttr extends PostBattleAbAttr { */ applyPostBattle(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { if (!simulated && args[0]) { - pokemon.scene.currentBattle.moneyScattered += pokemon.scene.getWaveMoneyAmount(0.2); + globalScene.currentBattle.moneyScattered += globalScene.getWaveMoneyAmount(0.2); return true; } return false; @@ -4627,7 +4628,7 @@ export class PostSummonStatStageChangeOnArenaAbAttr extends PostSummonStatStageC applyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { const side = pokemon.isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY; - if (pokemon.scene.arena.getTagOnSide(this.tagType, side)) { + if (globalScene.arena.getTagOnSide(this.tagType, side)) { return super.applyPostSummon(pokemon, passive, simulated, args); } return false; @@ -4725,7 +4726,7 @@ export class BypassSpeedChanceAbAttr extends AbAttr { if (!bypassSpeed.value && pokemon.randSeedInt(100) < this.chance) { const turnCommand = - pokemon.scene.currentBattle.turnCommands[pokemon.getBattlerIndex()]; + globalScene.currentBattle.turnCommands[pokemon.getBattlerIndex()]; const isCommandFight = turnCommand?.command === Command.FIGHT; const move = turnCommand?.move?.move ? allMoves[turnCommand.move.move] : null; const isDamageMove = move?.category === MoveCategory.PHYSICAL || move?.category === MoveCategory.SPECIAL; @@ -4767,7 +4768,7 @@ export class PreventBypassSpeedChanceAbAttr extends AbAttr { const bypassSpeed = args[0] as Utils.BooleanHolder; const canCheckHeldItems = args[1] as Utils.BooleanHolder; - const turnCommand = pokemon.scene.currentBattle.turnCommands[pokemon.getBattlerIndex()]; + const turnCommand = globalScene.currentBattle.turnCommands[pokemon.getBattlerIndex()]; const isCommandFight = turnCommand?.command === Command.FIGHT; const move = turnCommand?.move?.move ? allMoves[turnCommand.move.move] : null; if (this.condition(pokemon, move!) && isCommandFight) { @@ -4792,7 +4793,7 @@ export class TerrainEventTypeChangeAbAttr extends PostSummonAbAttr { if (pokemon.isTerastallized()) { return false; } - const currentTerrain = pokemon.scene.arena.getTerrainType(); + const currentTerrain = globalScene.arena.getTerrainType(); const typeChange: Type[] = this.determineTypeChange(pokemon, currentTerrain); if (typeChange.length !== 0) { if (pokemon.summonData.addedType && typeChange.includes(pokemon.summonData.addedType)) { @@ -4839,14 +4840,14 @@ export class TerrainEventTypeChangeAbAttr extends PostSummonAbAttr { * @returns `true` if there is an active terrain requiring a type change | `false` if not */ override applyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean | Promise { - if (pokemon.scene.arena.getTerrainType() !== TerrainType.NONE) { + if (globalScene.arena.getTerrainType() !== TerrainType.NONE) { return this.apply(pokemon, passive, simulated, new Utils.BooleanHolder(false), []); } return false; } override getTriggerMessage(pokemon: Pokemon, abilityName: string, ...args: any[]) { - const currentTerrain = pokemon.scene.arena.getTerrainType(); + const currentTerrain = globalScene.arena.getTerrainType(); const pokemonNameWithAffix = getPokemonNameWithAffix(pokemon); if (currentTerrain === TerrainType.NONE) { return i18next.t("abilityTriggers:pokemonTypeChangeRevert", { pokemonNameWithAffix }); @@ -4878,7 +4879,7 @@ async function applyAbAttrsInternal( continue; } - pokemon.scene.setPhaseQueueSplice(); + globalScene.setPhaseQueueSplice(); let result = applyFunc(attr, passive); // TODO Remove this when promises get reworked @@ -4894,7 +4895,7 @@ async function applyAbAttrsInternal( } if (attr.showAbility && !simulated) { if (showAbilityInstant) { - pokemon.scene.abilityBar.showAbility(pokemon, passive); + globalScene.abilityBar.showAbility(pokemon, passive); } else { queueShowAbility(pokemon, passive); } @@ -4902,13 +4903,13 @@ async function applyAbAttrsInternal( const message = attr.getTriggerMessage(pokemon, ability.name, args); if (message) { if (!simulated) { - pokemon.scene.queueMessage(message); + globalScene.queueMessage(message); } } messages.push(message!); } } - pokemon.scene.clearPhaseQueueSplice(); + globalScene.clearPhaseQueueSplice(); } } @@ -4929,28 +4930,27 @@ class ForceSwitchOutHelper { * - If the Pokémon is still alive (hp > 0), and if so, it leaves the field and a new SwitchPhase is initiated. */ if (switchOutTarget instanceof PlayerPokemon) { - if (switchOutTarget.scene.getPlayerParty().filter((p) => p.isAllowedInBattle() && !p.isOnField()).length < 1) { + if (globalScene.getPlayerParty().filter((p) => p.isAllowedInBattle() && !p.isOnField()).length < 1) { return false; } if (switchOutTarget.hp > 0) { switchOutTarget.leaveField(this.switchType === SwitchType.SWITCH); - pokemon.scene.prependToPhase(new SwitchPhase(pokemon.scene, this.switchType, switchOutTarget.getFieldIndex(), true, true), MoveEndPhase); + globalScene.prependToPhase(new SwitchPhase(this.switchType, switchOutTarget.getFieldIndex(), true, true), MoveEndPhase); return true; } /** * For non-wild battles, it checks if the opposing party has any available Pokémon to switch in. * If yes, the Pokémon leaves the field and a new SwitchSummonPhase is initiated. */ - } else if (pokemon.scene.currentBattle.battleType !== BattleType.WILD) { - if (switchOutTarget.scene.getEnemyParty().filter((p) => p.isAllowedInBattle() && !p.isOnField()).length < 1) { + } else if (globalScene.currentBattle.battleType !== BattleType.WILD) { + if (globalScene.getEnemyParty().filter((p) => p.isAllowedInBattle() && !p.isOnField()).length < 1) { return false; } if (switchOutTarget.hp > 0) { switchOutTarget.leaveField(this.switchType === SwitchType.SWITCH); - pokemon.scene.prependToPhase(new SwitchSummonPhase(pokemon.scene, this.switchType, switchOutTarget.getFieldIndex(), - (pokemon.scene.currentBattle.trainer ? pokemon.scene.currentBattle.trainer.getNextSummonIndex((switchOutTarget as EnemyPokemon).trainerSlot) : 0), - false, false), MoveEndPhase); + const summonIndex = (globalScene.currentBattle.trainer ? globalScene.currentBattle.trainer.getNextSummonIndex((switchOutTarget as EnemyPokemon).trainerSlot) : 0); + globalScene.prependToPhase(new SwitchSummonPhase(this.switchType, switchOutTarget.getFieldIndex(), summonIndex, false, false), MoveEndPhase); return true; } /** @@ -4958,26 +4958,26 @@ class ForceSwitchOutHelper { * It will not flee if it is a Mystery Encounter with fleeing disabled (checked in `getSwitchOutCondition()`) or if it is a wave 10x wild boss */ } else { - if (!pokemon.scene.currentBattle.waveIndex || pokemon.scene.currentBattle.waveIndex % 10 === 0) { + if (!globalScene.currentBattle.waveIndex || globalScene.currentBattle.waveIndex % 10 === 0) { return false; } if (switchOutTarget.hp > 0) { switchOutTarget.leaveField(false); - pokemon.scene.queueMessage(i18next.t("moveTriggers:fled", { pokemonName: getPokemonNameWithAffix(switchOutTarget) }), null, true, 500); + globalScene.queueMessage(i18next.t("moveTriggers:fled", { pokemonName: getPokemonNameWithAffix(switchOutTarget) }), null, true, 500); - if (switchOutTarget.scene.currentBattle.double) { + if (globalScene.currentBattle.double) { const allyPokemon = switchOutTarget.getAlly(); - switchOutTarget.scene.redirectPokemonMoves(switchOutTarget, allyPokemon); + globalScene.redirectPokemonMoves(switchOutTarget, allyPokemon); } } if (!switchOutTarget.getAlly()?.isActive(true)) { - pokemon.scene.clearEnemyHeldItemModifiers(); + globalScene.clearEnemyHeldItemModifiers(); if (switchOutTarget.hp) { - pokemon.scene.pushPhase(new BattleEndPhase(pokemon.scene, false)); - pokemon.scene.pushPhase(new NewBattlePhase(pokemon.scene)); + globalScene.pushPhase(new BattleEndPhase(false)); + globalScene.pushPhase(new NewBattlePhase()); } } } @@ -5001,20 +5001,20 @@ class ForceSwitchOutHelper { return !blockedByAbility.value; } - if (!player && pokemon.scene.currentBattle.battleType === BattleType.WILD) { - if (!pokemon.scene.currentBattle.waveIndex && pokemon.scene.currentBattle.waveIndex % 10 === 0) { + if (!player && globalScene.currentBattle.battleType === BattleType.WILD) { + if (!globalScene.currentBattle.waveIndex && globalScene.currentBattle.waveIndex % 10 === 0) { return false; } } - if (!player && pokemon.scene.currentBattle.isBattleMysteryEncounter() && !pokemon.scene.currentBattle.mysteryEncounter?.fleeAllowed) { + if (!player && globalScene.currentBattle.isBattleMysteryEncounter() && !globalScene.currentBattle.mysteryEncounter?.fleeAllowed) { return false; } - const party = player ? pokemon.scene.getPlayerParty() : pokemon.scene.getEnemyParty(); - return (!player && pokemon.scene.currentBattle.battleType === BattleType.WILD) + const party = player ? globalScene.getPlayerParty() : globalScene.getEnemyParty(); + return (!player && globalScene.currentBattle.battleType === BattleType.WILD) || party.filter(p => p.isAllowedInBattle() - && (player || (p as EnemyPokemon).trainerSlot === (switchOutTarget as EnemyPokemon).trainerSlot)).length > pokemon.scene.currentBattle.getBattlerCount(); + && (player || (p as EnemyPokemon).trainerSlot === (switchOutTarget as EnemyPokemon).trainerSlot)).length > globalScene.currentBattle.getBattlerCount(); } /** @@ -5295,8 +5295,8 @@ export function applyPostItemLostAbAttrs(attrType: Constructor +function getPokemonWithWeatherBasedForms() { + return globalScene.getField(true).filter(p => (p.hasAbility(Abilities.FORECAST) && p.species.speciesId === Species.CASTFORM) || (p.hasAbility(Abilities.FLOWER_GIFT) && p.species.speciesId === Species.CHERRIM) ); @@ -5412,7 +5411,7 @@ export function initAbilities() { .attr(UnswappableAbilityAbAttr) .ignorable(), new Ability(Abilities.LEVITATE, 3) - .attr(AttackTypeImmunityAbAttr, Type.GROUND, (pokemon: Pokemon) => !pokemon.getTag(GroundedTag) && !pokemon.scene.arena.getTag(ArenaTagType.GRAVITY)) + .attr(AttackTypeImmunityAbAttr, Type.GROUND, (pokemon: Pokemon) => !pokemon.getTag(GroundedTag) && !globalScene.arena.getTag(ArenaTagType.GRAVITY)) .ignorable(), new Ability(Abilities.EFFECT_SPORE, 3) .attr(EffectSporeAbAttr), @@ -5504,9 +5503,9 @@ export function initAbilities() { new Ability(Abilities.CUTE_CHARM, 3) .attr(PostDefendContactApplyTagChanceAbAttr, 30, BattlerTagType.INFATUATED), new Ability(Abilities.PLUS, 3) - .conditionalAttr(p => p.scene.currentBattle.double && [ Abilities.PLUS, Abilities.MINUS ].some(a => p.getAlly().hasAbility(a)), StatMultiplierAbAttr, Stat.SPATK, 1.5), + .conditionalAttr(p => globalScene.currentBattle.double && [ Abilities.PLUS, Abilities.MINUS ].some(a => p.getAlly().hasAbility(a)), StatMultiplierAbAttr, Stat.SPATK, 1.5), new Ability(Abilities.MINUS, 3) - .conditionalAttr(p => p.scene.currentBattle.double && [ Abilities.PLUS, Abilities.MINUS ].some(a => p.getAlly().hasAbility(a)), StatMultiplierAbAttr, Stat.SPATK, 1.5), + .conditionalAttr(p => globalScene.currentBattle.double && [ Abilities.PLUS, Abilities.MINUS ].some(a => p.getAlly().hasAbility(a)), StatMultiplierAbAttr, Stat.SPATK, 1.5), new Ability(Abilities.FORECAST, 3) .attr(UncopiableAbilityAbAttr) .attr(NoFusionAbilityAbAttr) @@ -5782,7 +5781,7 @@ export function initAbilities() { .ignorable(), new Ability(Abilities.ANALYTIC, 5) .attr(MovePowerBoostAbAttr, (user, target, move) => { - const movePhase = user?.scene.findPhase((phase) => phase instanceof MovePhase && phase.pokemon.id !== user.id); + const movePhase = globalScene.findPhase((phase) => phase instanceof MovePhase && phase.pokemon.id !== user?.id); return Utils.isNullOrUndefined(movePhase); }, 1.3), new Ability(Abilities.ILLUSION, 5) @@ -5906,9 +5905,9 @@ export function initAbilities() { .attr(FieldMoveTypePowerBoostAbAttr, Type.FAIRY, 4 / 3), new Ability(Abilities.AURA_BREAK, 6) .ignorable() - .conditionalAttr(pokemon => pokemon.scene.getField(true).some(p => p.hasAbility(Abilities.DARK_AURA)), FieldMoveTypePowerBoostAbAttr, Type.DARK, 9 / 16) - .conditionalAttr(pokemon => pokemon.scene.getField(true).some(p => p.hasAbility(Abilities.FAIRY_AURA)), FieldMoveTypePowerBoostAbAttr, Type.FAIRY, 9 / 16) - .conditionalAttr(pokemon => pokemon.scene.getField(true).some(p => p.hasAbility(Abilities.DARK_AURA) || p.hasAbility(Abilities.FAIRY_AURA)), + .conditionalAttr(pokemon => globalScene.getField(true).some(p => p.hasAbility(Abilities.DARK_AURA)), FieldMoveTypePowerBoostAbAttr, Type.DARK, 9 / 16) + .conditionalAttr(pokemon => globalScene.getField(true).some(p => p.hasAbility(Abilities.FAIRY_AURA)), FieldMoveTypePowerBoostAbAttr, Type.FAIRY, 9 / 16) + .conditionalAttr(pokemon => globalScene.getField(true).some(p => p.hasAbility(Abilities.DARK_AURA) || p.hasAbility(Abilities.FAIRY_AURA)), PostSummonMessageAbAttr, (pokemon: Pokemon) => i18next.t("abilityTriggers:postSummonAuraBreak", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })), new Ability(Abilities.PRIMORDIAL_SEA, 6) .attr(PostSummonWeatherChangeAbAttr, WeatherType.HEAVY_RAIN) @@ -6320,7 +6319,7 @@ export function initAbilities() { new Ability(Abilities.SHARPNESS, 9) .attr(MovePowerBoostAbAttr, (user, target, move) => move.hasFlag(MoveFlags.SLICING_MOVE), 1.5), new Ability(Abilities.SUPREME_OVERLORD, 9) - .attr(VariableMovePowerBoostAbAttr, (user, target, move) => 1 + 0.1 * Math.min(user.isPlayer() ? user.scene.currentBattle.playerFaints : user.scene.currentBattle.enemyFaints, 5)) + .attr(VariableMovePowerBoostAbAttr, (user, target, move) => 1 + 0.1 * Math.min(user.isPlayer() ? globalScene.currentBattle.playerFaints : globalScene.currentBattle.enemyFaints, 5)) .partial(), // Counter resets every wave instead of on arena reset new Ability(Abilities.COSTAR, 9) .attr(PostSummonCopyAllyStatsAbAttr), diff --git a/src/data/arena-tag.ts b/src/data/arena-tag.ts index 8bb74d29a4e..816de3e824c 100644 --- a/src/data/arena-tag.ts +++ b/src/data/arena-tag.ts @@ -1,12 +1,13 @@ -import { Arena } from "#app/field/arena"; -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; +import type { Arena } from "#app/field/arena"; import { Type } from "#enums/type"; import { BooleanHolder, NumberHolder, toDmgValue } from "#app/utils"; import { MoveCategory, allMoves, MoveTarget } from "#app/data/move"; import { getPokemonNameWithAffix } from "#app/messages"; -import Pokemon, { HitResult, PokemonMove } from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; +import { HitResult, PokemonMove } from "#app/field/pokemon"; import { StatusEffect } from "#enums/status-effect"; -import { BattlerIndex } from "#app/battle"; +import type { BattlerIndex } from "#app/battle"; import { BlockNonDirectDamageAbAttr, InfiltratorAbAttr, ProtectStatAbAttr, applyAbAttrs } from "#app/data/ability"; import { Stat } from "#enums/stat"; import { CommonAnim, CommonBattleAnim } from "#app/data/battle-anims"; @@ -44,7 +45,7 @@ export abstract class ArenaTag { onRemove(arena: Arena, quiet: boolean = false): void { if (!quiet) { - arena.scene.queueMessage(i18next.t(`arenaTag:arenaOnRemove${this.side === ArenaTagSide.PLAYER ? "Player" : this.side === ArenaTagSide.ENEMY ? "Enemy" : ""}`, { moveName: this.getMoveName() })); + globalScene.queueMessage(i18next.t(`arenaTag:arenaOnRemove${this.side === ArenaTagSide.PLAYER ? "Player" : this.side === ArenaTagSide.ENEMY ? "Enemy" : ""}`, { moveName: this.getMoveName() })); } } @@ -74,27 +75,25 @@ export abstract class ArenaTag { /** * Helper function that retrieves the source Pokemon - * @param scene medium to retrieve the source Pokemon * @returns The source {@linkcode Pokemon} or `null` if none is found */ - public getSourcePokemon(scene: BattleScene): Pokemon | null { - return this.sourceId ? scene.getPokemonById(this.sourceId) : null; + public getSourcePokemon(): Pokemon | null { + return this.sourceId ? globalScene.getPokemonById(this.sourceId) : null; } /** * Helper function that retrieves the Pokemon affected - * @param scene - medium to retrieve the involved Pokemon * @returns list of PlayerPokemon or EnemyPokemon on the field */ - public getAffectedPokemon(scene: BattleScene): Pokemon[] { + public getAffectedPokemon(): Pokemon[] { switch (this.side) { case ArenaTagSide.PLAYER: - return scene.getPlayerField() ?? []; + return globalScene.getPlayerField() ?? []; case ArenaTagSide.ENEMY: - return scene.getEnemyField() ?? []; + return globalScene.getEnemyField() ?? []; case ArenaTagSide.BOTH: default: - return scene.getField(true) ?? []; + return globalScene.getField(true) ?? []; } } } @@ -112,10 +111,10 @@ export class MistTag extends ArenaTag { super.onAdd(arena); if (this.sourceId) { - const source = arena.scene.getPokemonById(this.sourceId); + const source = globalScene.getPokemonById(this.sourceId); if (!quiet && source) { - arena.scene.queueMessage(i18next.t("arenaTag:mistOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(source) })); + globalScene.queueMessage(i18next.t("arenaTag:mistOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(source) })); } else if (!quiet) { console.warn("Failed to get source for MistTag onAdd"); } @@ -146,7 +145,7 @@ export class MistTag extends ArenaTag { cancelled.value = true; if (!simulated) { - arena.scene.queueMessage(i18next.t("arenaTag:mistApply")); + globalScene.queueMessage(i18next.t("arenaTag:mistApply")); } return true; @@ -193,7 +192,7 @@ export class WeakenMoveScreenTag extends ArenaTag { if (bypassed.value) { return false; } - damageMultiplier.value = arena.scene.currentBattle.double ? 2732 / 4096 : 0.5; + damageMultiplier.value = globalScene.currentBattle.double ? 2732 / 4096 : 0.5; return true; } return false; @@ -211,7 +210,7 @@ class ReflectTag extends WeakenMoveScreenTag { onAdd(arena: Arena, quiet: boolean = false): void { if (!quiet) { - arena.scene.queueMessage(i18next.t(`arenaTag:reflectOnAdd${this.side === ArenaTagSide.PLAYER ? "Player" : this.side === ArenaTagSide.ENEMY ? "Enemy" : ""}`)); + globalScene.queueMessage(i18next.t(`arenaTag:reflectOnAdd${this.side === ArenaTagSide.PLAYER ? "Player" : this.side === ArenaTagSide.ENEMY ? "Enemy" : ""}`)); } } } @@ -227,7 +226,7 @@ class LightScreenTag extends WeakenMoveScreenTag { onAdd(arena: Arena, quiet: boolean = false): void { if (!quiet) { - arena.scene.queueMessage(i18next.t(`arenaTag:lightScreenOnAdd${this.side === ArenaTagSide.PLAYER ? "Player" : this.side === ArenaTagSide.ENEMY ? "Enemy" : ""}`)); + globalScene.queueMessage(i18next.t(`arenaTag:lightScreenOnAdd${this.side === ArenaTagSide.PLAYER ? "Player" : this.side === ArenaTagSide.ENEMY ? "Enemy" : ""}`)); } } } @@ -243,7 +242,7 @@ class AuroraVeilTag extends WeakenMoveScreenTag { onAdd(arena: Arena, quiet: boolean = false): void { if (!quiet) { - arena.scene.queueMessage(i18next.t(`arenaTag:auroraVeilOnAdd${this.side === ArenaTagSide.PLAYER ? "Player" : this.side === ArenaTagSide.ENEMY ? "Enemy" : ""}`)); + globalScene.queueMessage(i18next.t(`arenaTag:auroraVeilOnAdd${this.side === ArenaTagSide.PLAYER ? "Player" : this.side === ArenaTagSide.ENEMY ? "Enemy" : ""}`)); } } } @@ -268,7 +267,7 @@ export class ConditionalProtectTag extends ArenaTag { } onAdd(arena: Arena): void { - arena.scene.queueMessage(i18next.t(`arenaTag:conditionalProtectOnAdd${this.side === ArenaTagSide.PLAYER ? "Player" : this.side === ArenaTagSide.ENEMY ? "Enemy" : ""}`, { moveName: super.getMoveName() })); + globalScene.queueMessage(i18next.t(`arenaTag:conditionalProtectOnAdd${this.side === ArenaTagSide.PLAYER ? "Player" : this.side === ArenaTagSide.ENEMY ? "Enemy" : ""}`, { moveName: super.getMoveName() })); } // Removes default message for effect removal @@ -296,8 +295,8 @@ export class ConditionalProtectTag extends ArenaTag { if (!simulated) { attacker.stopMultiHit(defender); - new CommonBattleAnim(CommonAnim.PROTECT, defender).play(arena.scene); - arena.scene.queueMessage(i18next.t("arenaTag:conditionalProtectApply", { moveName: super.getMoveName(), pokemonNameWithAffix: getPokemonNameWithAffix(defender) })); + new CommonBattleAnim(CommonAnim.PROTECT, defender).play(); + globalScene.queueMessage(i18next.t("arenaTag:conditionalProtectApply", { moveName: super.getMoveName(), pokemonNameWithAffix: getPokemonNameWithAffix(defender) })); } } @@ -318,7 +317,7 @@ export class ConditionalProtectTag extends ArenaTag { */ const QuickGuardConditionFunc: ProtectConditionFunc = (arena, moveId) => { const move = allMoves[moveId]; - const effectPhase = arena.scene.getCurrentPhase(); + const effectPhase = globalScene.getCurrentPhase(); if (effectPhase instanceof MoveEffectPhase) { const attacker = effectPhase.getUserPokemon(); @@ -393,9 +392,9 @@ class MatBlockTag extends ConditionalProtectTag { onAdd(arena: Arena) { if (this.sourceId) { - const source = arena.scene.getPokemonById(this.sourceId); + const source = globalScene.getPokemonById(this.sourceId); if (source) { - arena.scene.queueMessage(i18next.t("arenaTag:matBlockOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(source) })); + globalScene.queueMessage(i18next.t("arenaTag:matBlockOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(source) })); } else { console.warn("Failed to get source for MatBlockTag onAdd"); } @@ -448,15 +447,15 @@ export class NoCritTag extends ArenaTag { /** Queues a message upon adding this effect to the field */ onAdd(arena: Arena): void { - arena.scene.queueMessage(i18next.t(`arenaTag:noCritOnAdd${this.side === ArenaTagSide.PLAYER ? "Player" : "Enemy"}`, { + globalScene.queueMessage(i18next.t(`arenaTag:noCritOnAdd${this.side === ArenaTagSide.PLAYER ? "Player" : "Enemy"}`, { moveName: this.getMoveName() })); } /** Queues a message upon removing this effect from the field */ onRemove(arena: Arena): void { - const source = arena.scene.getPokemonById(this.sourceId!); // TODO: is this bang correct? - arena.scene.queueMessage(i18next.t("arenaTag:noCritOnRemove", { + const source = globalScene.getPokemonById(this.sourceId!); // TODO: is this bang correct? + globalScene.queueMessage(i18next.t("arenaTag:noCritOnRemove", { pokemonNameWithAffix: getPokemonNameWithAffix(source ?? undefined), moveName: this.getMoveName() })); @@ -478,7 +477,7 @@ class WishTag extends ArenaTag { onAdd(arena: Arena): void { if (this.sourceId) { - const user = arena.scene.getPokemonById(this.sourceId); + const user = globalScene.getPokemonById(this.sourceId); if (user) { this.battlerIndex = user.getBattlerIndex(); this.triggerMessage = i18next.t("arenaTag:wishTagOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(user) }); @@ -490,10 +489,10 @@ class WishTag extends ArenaTag { } onRemove(arena: Arena): void { - const target = arena.scene.getField()[this.battlerIndex]; + const target = globalScene.getField()[this.battlerIndex]; if (target?.isActive(true)) { - arena.scene.queueMessage(this.triggerMessage); - arena.scene.unshiftPhase(new PokemonHealPhase(target.scene, target.getBattlerIndex(), this.healHp, null, true, false)); + globalScene.queueMessage(this.triggerMessage); + globalScene.unshiftPhase(new PokemonHealPhase(target.getBattlerIndex(), this.healHp, null, true, false)); } } } @@ -546,11 +545,11 @@ class MudSportTag extends WeakenMoveTypeTag { } onAdd(arena: Arena): void { - arena.scene.queueMessage(i18next.t("arenaTag:mudSportOnAdd")); + globalScene.queueMessage(i18next.t("arenaTag:mudSportOnAdd")); } onRemove(arena: Arena): void { - arena.scene.queueMessage(i18next.t("arenaTag:mudSportOnRemove")); + globalScene.queueMessage(i18next.t("arenaTag:mudSportOnRemove")); } } @@ -564,11 +563,11 @@ class WaterSportTag extends WeakenMoveTypeTag { } onAdd(arena: Arena): void { - arena.scene.queueMessage(i18next.t("arenaTag:waterSportOnAdd")); + globalScene.queueMessage(i18next.t("arenaTag:waterSportOnAdd")); } onRemove(arena: Arena): void { - arena.scene.queueMessage(i18next.t("arenaTag:waterSportOnRemove")); + globalScene.queueMessage(i18next.t("arenaTag:waterSportOnRemove")); } } @@ -584,7 +583,7 @@ export class IonDelugeTag extends ArenaTag { /** Queues an on-add message */ onAdd(arena: Arena): void { - arena.scene.queueMessage(i18next.t("arenaTag:plasmaFistsOnAdd")); + globalScene.queueMessage(i18next.t("arenaTag:plasmaFistsOnAdd")); } onRemove(arena: Arena): void { } // Removes default on-remove message @@ -679,9 +678,9 @@ class SpikesTag extends ArenaTrapTag { onAdd(arena: Arena, quiet: boolean = false): void { super.onAdd(arena); - const source = this.sourceId ? arena.scene.getPokemonById(this.sourceId) : null; + const source = this.sourceId ? globalScene.getPokemonById(this.sourceId) : null; if (!quiet && source) { - arena.scene.queueMessage(i18next.t("arenaTag:spikesOnAdd", { moveName: this.getMoveName(), opponentDesc: source.getOpponentDescriptor() })); + globalScene.queueMessage(i18next.t("arenaTag:spikesOnAdd", { moveName: this.getMoveName(), opponentDesc: source.getOpponentDescriptor() })); } } @@ -698,7 +697,7 @@ class SpikesTag extends ArenaTrapTag { const damageHpRatio = 1 / (10 - 2 * this.layers); const damage = toDmgValue(pokemon.getMaxHp() * damageHpRatio); - pokemon.scene.queueMessage(i18next.t("arenaTag:spikesActivateTrap", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); + globalScene.queueMessage(i18next.t("arenaTag:spikesActivateTrap", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); pokemon.damageAndUpdate(damage, HitResult.OTHER); if (pokemon.turnData) { pokemon.turnData.damageTaken += damage; @@ -728,9 +727,9 @@ class ToxicSpikesTag extends ArenaTrapTag { onAdd(arena: Arena, quiet: boolean = false): void { super.onAdd(arena); - const source = this.sourceId ? arena.scene.getPokemonById(this.sourceId) : null; + const source = this.sourceId ? globalScene.getPokemonById(this.sourceId) : null; if (!quiet && source) { - arena.scene.queueMessage(i18next.t("arenaTag:toxicSpikesOnAdd", { moveName: this.getMoveName(), opponentDesc: source.getOpponentDescriptor() })); + globalScene.queueMessage(i18next.t("arenaTag:toxicSpikesOnAdd", { moveName: this.getMoveName(), opponentDesc: source.getOpponentDescriptor() })); } } @@ -747,8 +746,8 @@ class ToxicSpikesTag extends ArenaTrapTag { } if (pokemon.isOfType(Type.POISON)) { this.neutralized = true; - if (pokemon.scene.arena.removeTag(this.tagType)) { - pokemon.scene.queueMessage(i18next.t("arenaTag:toxicSpikesActivateTrapPoison", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), moveName: this.getMoveName() })); + if (globalScene.arena.removeTag(this.tagType)) { + globalScene.queueMessage(i18next.t("arenaTag:toxicSpikesActivateTrapPoison", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), moveName: this.getMoveName() })); return true; } } else if (!pokemon.status) { @@ -792,7 +791,7 @@ export class DelayedAttackTag extends ArenaTag { const ret = super.lapse(arena); if (!ret) { - arena.scene.unshiftPhase(new MoveEffectPhase(arena.scene, this.sourceId!, [ this.targetIndex ], new PokemonMove(this.sourceMove!, 0, 0, true))); // TODO: are those bangs correct? + globalScene.unshiftPhase(new MoveEffectPhase(this.sourceId!, [ this.targetIndex ], new PokemonMove(this.sourceMove!, 0, 0, true))); // TODO: are those bangs correct? } return ret; @@ -814,9 +813,9 @@ class StealthRockTag extends ArenaTrapTag { onAdd(arena: Arena, quiet: boolean = false): void { super.onAdd(arena); - const source = this.sourceId ? arena.scene.getPokemonById(this.sourceId) : null; + const source = this.sourceId ? globalScene.getPokemonById(this.sourceId) : null; if (!quiet && source) { - arena.scene.queueMessage(i18next.t("arenaTag:stealthRockOnAdd", { opponentDesc: source.getOpponentDescriptor() })); + globalScene.queueMessage(i18next.t("arenaTag:stealthRockOnAdd", { opponentDesc: source.getOpponentDescriptor() })); } } @@ -864,7 +863,7 @@ class StealthRockTag extends ArenaTrapTag { return true; } const damage = toDmgValue(pokemon.getMaxHp() * damageHpRatio); - pokemon.scene.queueMessage(i18next.t("arenaTag:stealthRockActivateTrap", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); + globalScene.queueMessage(i18next.t("arenaTag:stealthRockActivateTrap", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); pokemon.damageAndUpdate(damage, HitResult.OTHER); if (pokemon.turnData) { pokemon.turnData.damageTaken += damage; @@ -893,9 +892,9 @@ class StickyWebTag extends ArenaTrapTag { onAdd(arena: Arena, quiet: boolean = false): void { super.onAdd(arena); - const source = this.sourceId ? arena.scene.getPokemonById(this.sourceId) : null; + const source = this.sourceId ? globalScene.getPokemonById(this.sourceId) : null; if (!quiet && source) { - arena.scene.queueMessage(i18next.t("arenaTag:stickyWebOnAdd", { moveName: this.getMoveName(), opponentDesc: source.getOpponentDescriptor() })); + globalScene.queueMessage(i18next.t("arenaTag:stickyWebOnAdd", { moveName: this.getMoveName(), opponentDesc: source.getOpponentDescriptor() })); } } @@ -909,9 +908,9 @@ class StickyWebTag extends ArenaTrapTag { } if (!cancelled.value) { - pokemon.scene.queueMessage(i18next.t("arenaTag:stickyWebActivateTrap", { pokemonName: pokemon.getNameToRender() })); + globalScene.queueMessage(i18next.t("arenaTag:stickyWebActivateTrap", { pokemonName: pokemon.getNameToRender() })); const stages = new NumberHolder(-1); - pokemon.scene.unshiftPhase(new StatStageChangePhase(pokemon.scene, pokemon.getBattlerIndex(), false, [ Stat.SPD ], stages.value)); + globalScene.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), false, [ Stat.SPD ], stages.value)); return true; } } @@ -945,14 +944,14 @@ export class TrickRoomTag extends ArenaTag { } onAdd(arena: Arena): void { - const source = this.sourceId ? arena.scene.getPokemonById(this.sourceId) : null; + const source = this.sourceId ? globalScene.getPokemonById(this.sourceId) : null; if (source) { - arena.scene.queueMessage(i18next.t("arenaTag:trickRoomOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(source) })); + globalScene.queueMessage(i18next.t("arenaTag:trickRoomOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(source) })); } } onRemove(arena: Arena): void { - arena.scene.queueMessage(i18next.t("arenaTag:trickRoomOnRemove")); + globalScene.queueMessage(i18next.t("arenaTag:trickRoomOnRemove")); } } @@ -967,8 +966,8 @@ export class GravityTag extends ArenaTag { } onAdd(arena: Arena): void { - arena.scene.queueMessage(i18next.t("arenaTag:gravityOnAdd")); - arena.scene.getField(true).forEach((pokemon) => { + globalScene.queueMessage(i18next.t("arenaTag:gravityOnAdd")); + globalScene.getField(true).forEach((pokemon) => { if (pokemon !== null) { pokemon.removeTag(BattlerTagType.FLOATING); pokemon.removeTag(BattlerTagType.TELEKINESIS); @@ -980,7 +979,7 @@ export class GravityTag extends ArenaTag { } onRemove(arena: Arena): void { - arena.scene.queueMessage(i18next.t("arenaTag:gravityOnRemove")); + globalScene.queueMessage(i18next.t("arenaTag:gravityOnRemove")); } } @@ -996,29 +995,29 @@ class TailwindTag extends ArenaTag { onAdd(arena: Arena, quiet: boolean = false): void { if (!quiet) { - arena.scene.queueMessage(i18next.t(`arenaTag:tailwindOnAdd${this.side === ArenaTagSide.PLAYER ? "Player" : this.side === ArenaTagSide.ENEMY ? "Enemy" : ""}`)); + globalScene.queueMessage(i18next.t(`arenaTag:tailwindOnAdd${this.side === ArenaTagSide.PLAYER ? "Player" : this.side === ArenaTagSide.ENEMY ? "Enemy" : ""}`)); } - const source = arena.scene.getPokemonById(this.sourceId!); //TODO: this bang is questionable! - const party = (source?.isPlayer() ? source.scene.getPlayerField() : source?.scene.getEnemyField()) ?? []; + const source = globalScene.getPokemonById(this.sourceId!); //TODO: this bang is questionable! + const party = (source?.isPlayer() ? globalScene.getPlayerField() : globalScene.getEnemyField()) ?? []; for (const pokemon of party) { // Apply the CHARGED tag to party members with the WIND_POWER ability if (pokemon.hasAbility(Abilities.WIND_POWER) && !pokemon.getTag(BattlerTagType.CHARGED)) { pokemon.addTag(BattlerTagType.CHARGED); - pokemon.scene.queueMessage(i18next.t("abilityTriggers:windPowerCharged", { pokemonName: getPokemonNameWithAffix(pokemon), moveName: this.getMoveName() })); + globalScene.queueMessage(i18next.t("abilityTriggers:windPowerCharged", { pokemonName: getPokemonNameWithAffix(pokemon), moveName: this.getMoveName() })); } // Raise attack by one stage if party member has WIND_RIDER ability if (pokemon.hasAbility(Abilities.WIND_RIDER)) { - pokemon.scene.unshiftPhase(new ShowAbilityPhase(pokemon.scene, pokemon.getBattlerIndex())); - pokemon.scene.unshiftPhase(new StatStageChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [ Stat.ATK ], 1, true)); + globalScene.unshiftPhase(new ShowAbilityPhase(pokemon.getBattlerIndex())); + globalScene.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, [ Stat.ATK ], 1, true)); } } } onRemove(arena: Arena, quiet: boolean = false): void { if (!quiet) { - arena.scene.queueMessage(i18next.t(`arenaTag:tailwindOnRemove${this.side === ArenaTagSide.PLAYER ? "Player" : this.side === ArenaTagSide.ENEMY ? "Enemy" : ""}`)); + globalScene.queueMessage(i18next.t(`arenaTag:tailwindOnRemove${this.side === ArenaTagSide.PLAYER ? "Player" : this.side === ArenaTagSide.ENEMY ? "Enemy" : ""}`)); } } } @@ -1033,11 +1032,11 @@ class HappyHourTag extends ArenaTag { } onAdd(arena: Arena): void { - arena.scene.queueMessage(i18next.t("arenaTag:happyHourOnAdd")); + globalScene.queueMessage(i18next.t("arenaTag:happyHourOnAdd")); } onRemove(arena: Arena): void { - arena.scene.queueMessage(i18next.t("arenaTag:happyHourOnRemove")); + globalScene.queueMessage(i18next.t("arenaTag:happyHourOnRemove")); } } @@ -1047,11 +1046,11 @@ class SafeguardTag extends ArenaTag { } onAdd(arena: Arena): void { - arena.scene.queueMessage(i18next.t(`arenaTag:safeguardOnAdd${this.side === ArenaTagSide.PLAYER ? "Player" : this.side === ArenaTagSide.ENEMY ? "Enemy" : ""}`)); + globalScene.queueMessage(i18next.t(`arenaTag:safeguardOnAdd${this.side === ArenaTagSide.PLAYER ? "Player" : this.side === ArenaTagSide.ENEMY ? "Enemy" : ""}`)); } onRemove(arena: Arena): void { - arena.scene.queueMessage(i18next.t(`arenaTag:safeguardOnRemove${this.side === ArenaTagSide.PLAYER ? "Player" : this.side === ArenaTagSide.ENEMY ? "Enemy" : ""}`)); + globalScene.queueMessage(i18next.t(`arenaTag:safeguardOnRemove${this.side === ArenaTagSide.PLAYER ? "Player" : this.side === ArenaTagSide.ENEMY ? "Enemy" : ""}`)); } } @@ -1074,16 +1073,16 @@ class ImprisonTag extends ArenaTrapTag { * This function applies the effects of Imprison to the opposing Pokemon already present on the field. * @param arena */ - override onAdd({ scene }: Arena) { - const source = this.getSourcePokemon(scene); + override onAdd() { + const source = this.getSourcePokemon(); if (source) { - const party = this.getAffectedPokemon(scene); + const party = this.getAffectedPokemon(); party?.forEach((p: Pokemon ) => { if (p.isAllowedInBattle()) { p.addTag(BattlerTagType.IMPRISON, 1, Moves.IMPRISON, this.sourceId); } }); - scene.queueMessage(i18next.t("battlerTags:imprisonOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(source) })); + globalScene.queueMessage(i18next.t("battlerTags:imprisonOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(source) })); } } @@ -1092,8 +1091,8 @@ class ImprisonTag extends ArenaTrapTag { * @param _arena * @returns `true` if the source of the tag is still active on the field | `false` if not */ - override lapse({ scene }: Arena): boolean { - const source = this.getSourcePokemon(scene); + override lapse(): boolean { + const source = this.getSourcePokemon(); return source ? source.isActive(true) : false; } @@ -1103,7 +1102,7 @@ class ImprisonTag extends ArenaTrapTag { * @returns `true` */ override activateTrap(pokemon: Pokemon): boolean { - const source = this.getSourcePokemon(pokemon.scene); + const source = this.getSourcePokemon(); if (source && source.isActive(true) && pokemon.isAllowedInBattle()) { pokemon.addTag(BattlerTagType.IMPRISON, 1, Moves.IMPRISON, this.sourceId); } @@ -1114,8 +1113,8 @@ class ImprisonTag extends ArenaTrapTag { * When the arena tag is removed, it also attempts to remove any related Battler Tags if they haven't already been removed from the affected Pokemon * @param arena */ - override onRemove({ scene }: Arena): void { - const party = this.getAffectedPokemon(scene); + override onRemove(): void { + const party = this.getAffectedPokemon(); party?.forEach((p: Pokemon) => { p.removeTag(BattlerTagType.IMPRISON); }); @@ -1136,19 +1135,19 @@ class FireGrassPledgeTag extends ArenaTag { override onAdd(arena: Arena): void { // "A sea of fire enveloped your/the opposing team!" - arena.scene.queueMessage(i18next.t(`arenaTag:fireGrassPledgeOnAdd${this.side === ArenaTagSide.PLAYER ? "Player" : this.side === ArenaTagSide.ENEMY ? "Enemy" : ""}`)); + globalScene.queueMessage(i18next.t(`arenaTag:fireGrassPledgeOnAdd${this.side === ArenaTagSide.PLAYER ? "Player" : this.side === ArenaTagSide.ENEMY ? "Enemy" : ""}`)); } override lapse(arena: Arena): boolean { const field: Pokemon[] = (this.side === ArenaTagSide.PLAYER) - ? arena.scene.getPlayerField() - : arena.scene.getEnemyField(); + ? globalScene.getPlayerField() + : globalScene.getEnemyField(); field.filter(pokemon => !pokemon.isOfType(Type.FIRE) && !pokemon.switchOutStatus).forEach(pokemon => { // "{pokemonNameWithAffix} was hurt by the sea of fire!" - pokemon.scene.queueMessage(i18next.t("arenaTag:fireGrassPledgeLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); + globalScene.queueMessage(i18next.t("arenaTag:fireGrassPledgeLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); // TODO: Replace this with a proper animation - pokemon.scene.unshiftPhase(new CommonAnimPhase(pokemon.scene, pokemon.getBattlerIndex(), pokemon.getBattlerIndex(), CommonAnim.MAGMA_STORM)); + globalScene.unshiftPhase(new CommonAnimPhase(pokemon.getBattlerIndex(), pokemon.getBattlerIndex(), CommonAnim.MAGMA_STORM)); pokemon.damageAndUpdate(toDmgValue(pokemon.getMaxHp() / 8)); }); @@ -1170,7 +1169,7 @@ class WaterFirePledgeTag extends ArenaTag { override onAdd(arena: Arena): void { // "A rainbow appeared in the sky on your/the opposing team's side!" - arena.scene.queueMessage(i18next.t(`arenaTag:waterFirePledgeOnAdd${this.side === ArenaTagSide.PLAYER ? "Player" : this.side === ArenaTagSide.ENEMY ? "Enemy" : ""}`)); + globalScene.queueMessage(i18next.t(`arenaTag:waterFirePledgeOnAdd${this.side === ArenaTagSide.PLAYER ? "Player" : this.side === ArenaTagSide.ENEMY ? "Enemy" : ""}`)); } /** @@ -1200,7 +1199,7 @@ class GrassWaterPledgeTag extends ArenaTag { override onAdd(arena: Arena): void { // "A swamp enveloped your/the opposing team!" - arena.scene.queueMessage(i18next.t(`arenaTag:grassWaterPledgeOnAdd${this.side === ArenaTagSide.PLAYER ? "Player" : this.side === ArenaTagSide.ENEMY ? "Enemy" : ""}`)); + globalScene.queueMessage(i18next.t(`arenaTag:grassWaterPledgeOnAdd${this.side === ArenaTagSide.PLAYER ? "Player" : this.side === ArenaTagSide.ENEMY ? "Enemy" : ""}`)); } } @@ -1217,7 +1216,7 @@ export class FairyLockTag extends ArenaTag { } onAdd(arena: Arena): void { - arena.scene.queueMessage(i18next.t("arenaTag:fairyLockOnAdd")); + globalScene.queueMessage(i18next.t("arenaTag:fairyLockOnAdd")); } } diff --git a/src/data/balance/biomes.ts b/src/data/balance/biomes.ts index 0f4926cf7c7..240881ad580 100644 --- a/src/data/balance/biomes.ts +++ b/src/data/balance/biomes.ts @@ -1,6 +1,7 @@ import { Type } from "#enums/type"; import * as Utils from "#app/utils"; -import { pokemonEvolutions, SpeciesFormEvolution } from "#app/data/balance/pokemon-evolutions"; +import type { SpeciesFormEvolution } from "#app/data/balance/pokemon-evolutions"; +import { pokemonEvolutions } from "#app/data/balance/pokemon-evolutions"; import i18next from "i18next"; import { Biome } from "#enums/biome"; import { Species } from "#enums/species"; diff --git a/src/data/balance/pokemon-evolutions.ts b/src/data/balance/pokemon-evolutions.ts index 9e86ea7397b..bf34b5122dc 100644 --- a/src/data/balance/pokemon-evolutions.ts +++ b/src/data/balance/pokemon-evolutions.ts @@ -1,6 +1,7 @@ +import { globalScene } from "#app/global-scene"; import { Gender } from "#app/data/gender"; import { PokeballType } from "#enums/pokeball"; -import Pokemon from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; import { Type } from "#enums/type"; import * as Utils from "#app/utils"; import { WeatherType } from "#enums/weather-type"; @@ -266,8 +267,8 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.ELECTRODE, 30, null, null) ], [Species.CUBONE]: [ - new SpeciesEvolution(Species.ALOLA_MAROWAK, 28, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DUSK || p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT)), - new SpeciesEvolution(Species.MAROWAK, 28, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DAWN || p.scene.arena.getTimeOfDay() === TimeOfDay.DAY)) + new SpeciesEvolution(Species.ALOLA_MAROWAK, 28, null, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DUSK || globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT)), + new SpeciesEvolution(Species.MAROWAK, 28, null, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DAWN || globalScene.arena.getTimeOfDay() === TimeOfDay.DAY)) ], [Species.TYROGUE]: [ /** @@ -287,8 +288,8 @@ export const pokemonEvolutions: PokemonEvolutions = { )), ], [Species.KOFFING]: [ - new SpeciesEvolution(Species.GALAR_WEEZING, 35, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DUSK || p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT)), - new SpeciesEvolution(Species.WEEZING, 35, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DAWN || p.scene.arena.getTimeOfDay() === TimeOfDay.DAY)) + new SpeciesEvolution(Species.GALAR_WEEZING, 35, null, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DUSK || globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT)), + new SpeciesEvolution(Species.WEEZING, 35, null, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DAWN || globalScene.arena.getTimeOfDay() === TimeOfDay.DAY)) ], [Species.RHYHORN]: [ new SpeciesEvolution(Species.RHYDON, 42, null, null) @@ -333,8 +334,8 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.QUILAVA, 14, null, null) ], [Species.QUILAVA]: [ - new SpeciesEvolution(Species.HISUI_TYPHLOSION, 36, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DUSK || p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT)), - new SpeciesEvolution(Species.TYPHLOSION, 36, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DAWN || p.scene.arena.getTimeOfDay() === TimeOfDay.DAY)) + new SpeciesEvolution(Species.HISUI_TYPHLOSION, 36, null, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DUSK || globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT)), + new SpeciesEvolution(Species.TYPHLOSION, 36, null, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DAWN || globalScene.arena.getTimeOfDay() === TimeOfDay.DAY)) ], [Species.TOTODILE]: [ new SpeciesEvolution(Species.CROCONAW, 18, null, null) @@ -436,8 +437,8 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.LINOONE, 20, null, null) ], [Species.WURMPLE]: [ - new SpeciesEvolution(Species.SILCOON, 7, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DAWN || p.scene.arena.getTimeOfDay() === TimeOfDay.DAY)), - new SpeciesEvolution(Species.CASCOON, 7, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DUSK || p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT)) + new SpeciesEvolution(Species.SILCOON, 7, null, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DAWN || globalScene.arena.getTimeOfDay() === TimeOfDay.DAY)), + new SpeciesEvolution(Species.CASCOON, 7, null, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DUSK || globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT)) ], [Species.SILCOON]: [ new SpeciesEvolution(Species.BEAUTIFLY, 10, null, null) @@ -478,7 +479,7 @@ export const pokemonEvolutions: PokemonEvolutions = { ], [Species.NINCADA]: [ new SpeciesEvolution(Species.NINJASK, 20, null, null), - new SpeciesEvolution(Species.SHEDINJA, 20, null, new SpeciesEvolutionCondition(p => p.scene.getPlayerParty().length < 6 && p.scene.pokeballCounts[PokeballType.POKEBALL] > 0)) + new SpeciesEvolution(Species.SHEDINJA, 20, null, new SpeciesEvolutionCondition(p => globalScene.getPlayerParty().length < 6 && globalScene.pokeballCounts[PokeballType.POKEBALL] > 0)) ], [Species.WHISMUR]: [ new SpeciesEvolution(Species.LOUDRED, 20, null, null) @@ -660,7 +661,7 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.LUMINEON, 31, null, null) ], [Species.MANTYKE]: [ - new SpeciesEvolution(Species.MANTINE, 32, null, new SpeciesEvolutionCondition(p => !!p.scene.gameData.dexData[Species.REMORAID].caughtAttr), SpeciesWildEvolutionDelay.MEDIUM) + new SpeciesEvolution(Species.MANTINE, 32, null, new SpeciesEvolutionCondition(p => !!globalScene.gameData.dexData[Species.REMORAID].caughtAttr), SpeciesWildEvolutionDelay.MEDIUM) ], [Species.SNOVER]: [ new SpeciesEvolution(Species.ABOMASNOW, 40, null, null) @@ -681,8 +682,8 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.DEWOTT, 17, null, null) ], [Species.DEWOTT]: [ - new SpeciesEvolution(Species.HISUI_SAMUROTT, 36, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DUSK || p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT)), - new SpeciesEvolution(Species.SAMUROTT, 36, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DAWN || p.scene.arena.getTimeOfDay() === TimeOfDay.DAY)) + new SpeciesEvolution(Species.HISUI_SAMUROTT, 36, null, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DUSK || globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT)), + new SpeciesEvolution(Species.SAMUROTT, 36, null, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DAWN || globalScene.arena.getTimeOfDay() === TimeOfDay.DAY)) ], [Species.PATRAT]: [ new SpeciesEvolution(Species.WATCHOG, 20, null, null) @@ -832,8 +833,8 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.KINGAMBIT, 1, EvolutionItem.LEADERS_CREST, null, SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.RUFFLET]: [ - new SpeciesEvolution(Species.HISUI_BRAVIARY, 54, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DUSK || p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT)), - new SpeciesEvolution(Species.BRAVIARY, 54, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DAWN || p.scene.arena.getTimeOfDay() === TimeOfDay.DAY)) + new SpeciesEvolution(Species.HISUI_BRAVIARY, 54, null, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DUSK || globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT)), + new SpeciesEvolution(Species.BRAVIARY, 54, null, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DAWN || globalScene.arena.getTimeOfDay() === TimeOfDay.DAY)) ], [Species.VULLABY]: [ new SpeciesEvolution(Species.MANDIBUZZ, 54, null, null) @@ -890,7 +891,7 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.GOGOAT, 32, null, null) ], [Species.PANCHAM]: [ - new SpeciesEvolution(Species.PANGORO, 32, null, new SpeciesEvolutionCondition(p => !!p.scene.getPlayerParty().find(p => p.getTypes(false, false, true).indexOf(Type.DARK) > -1)), SpeciesWildEvolutionDelay.MEDIUM) + new SpeciesEvolution(Species.PANGORO, 32, null, new SpeciesEvolutionCondition(p => !!globalScene.getPlayerParty().find(p => p.getTypes(false, false, true).indexOf(Type.DARK) > -1)), SpeciesWildEvolutionDelay.MEDIUM) ], [Species.ESPURR]: [ new SpeciesFormEvolution(Species.MEOWSTIC, "", "female", 25, null, new SpeciesEvolutionCondition(p => p.gender === Gender.FEMALE, p => p.gender = Gender.FEMALE)), @@ -912,21 +913,21 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.CLAWITZER, 37, null, null) ], [Species.TYRUNT]: [ - new SpeciesEvolution(Species.TYRANTRUM, 39, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DAWN || p.scene.arena.getTimeOfDay() === TimeOfDay.DAY)) + new SpeciesEvolution(Species.TYRANTRUM, 39, null, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DAWN || globalScene.arena.getTimeOfDay() === TimeOfDay.DAY)) ], [Species.AMAURA]: [ - new SpeciesEvolution(Species.AURORUS, 39, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DUSK || p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT)) + new SpeciesEvolution(Species.AURORUS, 39, null, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DUSK || globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT)) ], [Species.GOOMY]: [ - new SpeciesEvolution(Species.HISUI_SLIGGOO, 40, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DUSK || p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT)), - new SpeciesEvolution(Species.SLIGGOO, 40, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DAWN || p.scene.arena.getTimeOfDay() === TimeOfDay.DAY)) + new SpeciesEvolution(Species.HISUI_SLIGGOO, 40, null, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DUSK || globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT)), + new SpeciesEvolution(Species.SLIGGOO, 40, null, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DAWN || globalScene.arena.getTimeOfDay() === TimeOfDay.DAY)) ], [Species.SLIGGOO]: [ - new SpeciesEvolution(Species.GOODRA, 50, null, new SpeciesEvolutionCondition(p => [ WeatherType.RAIN, WeatherType.FOG, WeatherType.HEAVY_RAIN ].indexOf(p.scene.arena.weather?.weatherType || WeatherType.NONE) > -1), SpeciesWildEvolutionDelay.LONG) + new SpeciesEvolution(Species.GOODRA, 50, null, new SpeciesEvolutionCondition(p => [ WeatherType.RAIN, WeatherType.FOG, WeatherType.HEAVY_RAIN ].indexOf(globalScene.arena.weather?.weatherType || WeatherType.NONE) > -1), SpeciesWildEvolutionDelay.LONG) ], [Species.BERGMITE]: [ - new SpeciesEvolution(Species.HISUI_AVALUGG, 37, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DUSK || p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT)), - new SpeciesEvolution(Species.AVALUGG, 37, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DAWN || p.scene.arena.getTimeOfDay() === TimeOfDay.DAY)) + new SpeciesEvolution(Species.HISUI_AVALUGG, 37, null, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DUSK || globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT)), + new SpeciesEvolution(Species.AVALUGG, 37, null, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DAWN || globalScene.arena.getTimeOfDay() === TimeOfDay.DAY)) ], [Species.NOIBAT]: [ new SpeciesEvolution(Species.NOIVERN, 48, null, null) @@ -935,8 +936,8 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.DARTRIX, 17, null, null) ], [Species.DARTRIX]: [ - new SpeciesEvolution(Species.HISUI_DECIDUEYE, 36, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DUSK || p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT)), - new SpeciesEvolution(Species.DECIDUEYE, 34, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DAWN || p.scene.arena.getTimeOfDay() === TimeOfDay.DAY)) + new SpeciesEvolution(Species.HISUI_DECIDUEYE, 36, null, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DUSK || globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT)), + new SpeciesEvolution(Species.DECIDUEYE, 34, null, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DAWN || globalScene.arena.getTimeOfDay() === TimeOfDay.DAY)) ], [Species.LITTEN]: [ new SpeciesEvolution(Species.TORRACAT, 17, null, null) @@ -957,7 +958,7 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.TOUCANNON, 28, null, null) ], [Species.YUNGOOS]: [ - new SpeciesEvolution(Species.GUMSHOOS, 20, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DAWN || p.scene.arena.getTimeOfDay() === TimeOfDay.DAY)) + new SpeciesEvolution(Species.GUMSHOOS, 20, null, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DAWN || globalScene.arena.getTimeOfDay() === TimeOfDay.DAY)) ], [Species.GRUBBIN]: [ new SpeciesEvolution(Species.CHARJABUG, 20, null, null) @@ -975,7 +976,7 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.ARAQUANID, 22, null, null) ], [Species.FOMANTIS]: [ - new SpeciesEvolution(Species.LURANTIS, 34, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DAWN || p.scene.arena.getTimeOfDay() === TimeOfDay.DAY)) + new SpeciesEvolution(Species.LURANTIS, 34, null, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DAWN || globalScene.arena.getTimeOfDay() === TimeOfDay.DAY)) ], [Species.MORELULL]: [ new SpeciesEvolution(Species.SHIINOTIC, 24, null, null) @@ -1012,7 +1013,7 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.MELMETAL, 48, null, null) ], [Species.ALOLA_RATTATA]: [ - new SpeciesEvolution(Species.ALOLA_RATICATE, 20, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DUSK || p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT)) + new SpeciesEvolution(Species.ALOLA_RATICATE, 20, null, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DUSK || globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT)) ], [Species.ALOLA_DIGLETT]: [ new SpeciesEvolution(Species.ALOLA_DUGTRIO, 26, null, null) @@ -1135,7 +1136,7 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.GALAR_LINOONE, 20, null, null) ], [Species.GALAR_LINOONE]: [ - new SpeciesEvolution(Species.OBSTAGOON, 35, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DUSK || p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT)) + new SpeciesEvolution(Species.OBSTAGOON, 35, null, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DUSK || globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT)) ], [Species.GALAR_YAMASK]: [ new SpeciesEvolution(Species.RUNERIGUS, 34, null, null) @@ -1144,7 +1145,7 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.HISUI_ZOROARK, 30, null, null) ], [Species.HISUI_SLIGGOO]: [ - new SpeciesEvolution(Species.HISUI_GOODRA, 50, null, new SpeciesEvolutionCondition(p => [ WeatherType.RAIN, WeatherType.FOG, WeatherType.HEAVY_RAIN ].indexOf(p.scene.arena.weather?.weatherType || WeatherType.NONE) > -1), SpeciesWildEvolutionDelay.LONG) + new SpeciesEvolution(Species.HISUI_GOODRA, 50, null, new SpeciesEvolutionCondition(p => [ WeatherType.RAIN, WeatherType.FOG, WeatherType.HEAVY_RAIN ].indexOf(globalScene.arena.weather?.weatherType || WeatherType.NONE) > -1), SpeciesWildEvolutionDelay.LONG) ], [Species.SPRIGATITO]: [ new SpeciesEvolution(Species.FLORAGATO, 16, null, null) @@ -1183,7 +1184,7 @@ export const pokemonEvolutions: PokemonEvolutions = { [Species.TANDEMAUS]: [ new SpeciesFormEvolution(Species.MAUSHOLD, "", "three", 25, null, new SpeciesEvolutionCondition(p => { let ret = false; - p.scene.executeWithSeedOffset(() => ret = !Utils.randSeedInt(4), p.id); + globalScene.executeWithSeedOffset(() => ret = !Utils.randSeedInt(4), p.id); return ret; })), new SpeciesEvolution(Species.MAUSHOLD, 25, null, null) @@ -1243,7 +1244,7 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.GLIMMORA, 35, null, null) ], [Species.GREAVARD]: [ - new SpeciesEvolution(Species.HOUNDSTONE, 30, null, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DUSK || p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT)) + new SpeciesEvolution(Species.HOUNDSTONE, 30, null, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DUSK || globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT)) ], [Species.FRIGIBAX]: [ new SpeciesEvolution(Species.ARCTIBAX, 35, null, null) @@ -1311,10 +1312,10 @@ export const pokemonEvolutions: PokemonEvolutions = { [Species.EEVEE]: [ new SpeciesFormEvolution(Species.SYLVEON, "", "", 1, null, new SpeciesFriendshipEvolutionCondition(120, p => !!p.getMoveset().find(m => m?.getMove().type === Type.FAIRY)), SpeciesWildEvolutionDelay.LONG), new SpeciesFormEvolution(Species.SYLVEON, "partner", "", 1, null, new SpeciesFriendshipEvolutionCondition(120, p => !!p.getMoveset().find(m => m?.getMove().type === Type.FAIRY)), SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.ESPEON, "", "", 1, null, new SpeciesFriendshipEvolutionCondition(120, p => p.scene.arena.getTimeOfDay() === TimeOfDay.DAY), SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.ESPEON, "partner", "", 1, null, new SpeciesFriendshipEvolutionCondition(120, p => p.scene.arena.getTimeOfDay() === TimeOfDay.DAY), SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.UMBREON, "", "", 1, null, new SpeciesFriendshipEvolutionCondition(120, p => p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT), SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.UMBREON, "partner", "", 1, null, new SpeciesFriendshipEvolutionCondition(120, p => p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT), SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(Species.ESPEON, "", "", 1, null, new SpeciesFriendshipEvolutionCondition(120, p => globalScene.arena.getTimeOfDay() === TimeOfDay.DAY), SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(Species.ESPEON, "partner", "", 1, null, new SpeciesFriendshipEvolutionCondition(120, p => globalScene.arena.getTimeOfDay() === TimeOfDay.DAY), SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(Species.UMBREON, "", "", 1, null, new SpeciesFriendshipEvolutionCondition(120, p => globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT), SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(Species.UMBREON, "partner", "", 1, null, new SpeciesFriendshipEvolutionCondition(120, p => globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT), SpeciesWildEvolutionDelay.LONG), new SpeciesFormEvolution(Species.VAPOREON, "", "", 1, EvolutionItem.WATER_STONE, null, SpeciesWildEvolutionDelay.LONG), new SpeciesFormEvolution(Species.VAPOREON, "partner", "", 1, EvolutionItem.WATER_STONE, null, SpeciesWildEvolutionDelay.LONG), new SpeciesFormEvolution(Species.JOLTEON, "", "", 1, EvolutionItem.THUNDER_STONE, null, SpeciesWildEvolutionDelay.LONG), @@ -1351,17 +1352,17 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesFormEvolution(Species.DUDUNSPARCE, "", "three-segment", 32, null, new SpeciesEvolutionCondition(p => { let ret = false; if (p.moveset.filter(m => m?.moveId === Moves.HYPER_DRILL).length > 0) { - p.scene.executeWithSeedOffset(() => ret = !Utils.randSeedInt(4), p.id); + globalScene.executeWithSeedOffset(() => ret = !Utils.randSeedInt(4), p.id); } return ret; }), SpeciesWildEvolutionDelay.LONG), new SpeciesEvolution(Species.DUDUNSPARCE, 32, null, new SpeciesEvolutionCondition(p => p.moveset.filter(m => m?.moveId === Moves.HYPER_DRILL).length > 0), SpeciesWildEvolutionDelay.LONG) ], [Species.GLIGAR]: [ - new SpeciesEvolution(Species.GLISCOR, 1, EvolutionItem.RAZOR_FANG, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DUSK || p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT /* Razor fang at night*/), SpeciesWildEvolutionDelay.VERY_LONG) + new SpeciesEvolution(Species.GLISCOR, 1, EvolutionItem.RAZOR_FANG, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DUSK || globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT /* Razor fang at night*/), SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.SNEASEL]: [ - new SpeciesEvolution(Species.WEAVILE, 1, EvolutionItem.RAZOR_CLAW, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DUSK || p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT /* Razor claw at night*/), SpeciesWildEvolutionDelay.VERY_LONG) + new SpeciesEvolution(Species.WEAVILE, 1, EvolutionItem.RAZOR_CLAW, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DUSK || globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT /* Razor claw at night*/), SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.URSARING]: [ new SpeciesEvolution(Species.URSALUNA, 1, EvolutionItem.PEAT_BLOCK, null, SpeciesWildEvolutionDelay.VERY_LONG) //Ursaring does not evolve into Bloodmoon Ursaluna @@ -1391,8 +1392,8 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.SUDOWOODO, 1, null, new SpeciesEvolutionCondition(p => p.moveset.filter(m => m?.moveId === Moves.MIMIC).length > 0), SpeciesWildEvolutionDelay.MEDIUM) ], [Species.MIME_JR]: [ - new SpeciesEvolution(Species.GALAR_MR_MIME, 1, null, new SpeciesEvolutionCondition(p => p.moveset.filter(m => m?.moveId === Moves.MIMIC).length > 0 && (p.scene.arena.getTimeOfDay() === TimeOfDay.DUSK || p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT)), SpeciesWildEvolutionDelay.MEDIUM), - new SpeciesEvolution(Species.MR_MIME, 1, null, new SpeciesEvolutionCondition(p => p.moveset.filter(m => m?.moveId === Moves.MIMIC).length > 0 && (p.scene.arena.getTimeOfDay() === TimeOfDay.DAWN || p.scene.arena.getTimeOfDay() === TimeOfDay.DAY)), SpeciesWildEvolutionDelay.MEDIUM) + new SpeciesEvolution(Species.GALAR_MR_MIME, 1, null, new SpeciesEvolutionCondition(p => p.moveset.filter(m => m?.moveId === Moves.MIMIC).length > 0 && (globalScene.arena.getTimeOfDay() === TimeOfDay.DUSK || globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT)), SpeciesWildEvolutionDelay.MEDIUM), + new SpeciesEvolution(Species.MR_MIME, 1, null, new SpeciesEvolutionCondition(p => p.moveset.filter(m => m?.moveId === Moves.MIMIC).length > 0 && (globalScene.arena.getTimeOfDay() === TimeOfDay.DAWN || globalScene.arena.getTimeOfDay() === TimeOfDay.DAY)), SpeciesWildEvolutionDelay.MEDIUM) ], [Species.PANSAGE]: [ new SpeciesEvolution(Species.SIMISAGE, 1, EvolutionItem.LEAF_STONE, null, SpeciesWildEvolutionDelay.LONG) @@ -1442,9 +1443,9 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.CRABOMINABLE, 1, EvolutionItem.ICE_STONE, null, SpeciesWildEvolutionDelay.LONG) ], [Species.ROCKRUFF]: [ - new SpeciesFormEvolution(Species.LYCANROC, "", "midday", 25, null, new SpeciesEvolutionCondition(p => (p.scene.arena.getTimeOfDay() === TimeOfDay.DAWN || p.scene.arena.getTimeOfDay() === TimeOfDay.DAY) && (p.formIndex === 0))), + new SpeciesFormEvolution(Species.LYCANROC, "", "midday", 25, null, new SpeciesEvolutionCondition(p => (globalScene.arena.getTimeOfDay() === TimeOfDay.DAWN || globalScene.arena.getTimeOfDay() === TimeOfDay.DAY) && (p.formIndex === 0))), new SpeciesFormEvolution(Species.LYCANROC, "own-tempo", "dusk", 25, null, new SpeciesEvolutionCondition(p => p.formIndex === 1)), - new SpeciesFormEvolution(Species.LYCANROC, "", "midnight", 25, null, new SpeciesEvolutionCondition(p => (p.scene.arena.getTimeOfDay() === TimeOfDay.DUSK || p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT) && (p.formIndex === 0))) + new SpeciesFormEvolution(Species.LYCANROC, "", "midnight", 25, null, new SpeciesEvolutionCondition(p => (globalScene.arena.getTimeOfDay() === TimeOfDay.DUSK || globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT) && (p.formIndex === 0))) ], [Species.STEENEE]: [ new SpeciesEvolution(Species.TSAREENA, 28, null, new SpeciesEvolutionCondition(p => p.moveset.filter(m => m?.moveId === Moves.STOMP).length > 0), SpeciesWildEvolutionDelay.LONG) @@ -1471,15 +1472,15 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesFormEvolution(Species.POLTEAGEIST, "antique", "antique", 1, EvolutionItem.CHIPPED_POT, null, SpeciesWildEvolutionDelay.LONG) ], [Species.MILCERY]: [ - new SpeciesFormEvolution(Species.ALCREMIE, "", "vanilla-cream", 1, EvolutionItem.STRAWBERRY_SWEET, new SpeciesEvolutionCondition(p => p.scene.arena.biomeType === Biome.TOWN || p.scene.arena.biomeType === Biome.PLAINS || p.scene.arena.biomeType === Biome.GRASS || p.scene.arena.biomeType === Biome.TALL_GRASS || p.scene.arena.biomeType === Biome.METROPOLIS), SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.ALCREMIE, "", "ruby-cream", 1, EvolutionItem.STRAWBERRY_SWEET, new SpeciesEvolutionCondition(p => p.scene.arena.biomeType === Biome.BADLANDS || p.scene.arena.biomeType === Biome.VOLCANO || p.scene.arena.biomeType === Biome.GRAVEYARD || p.scene.arena.biomeType === Biome.FACTORY || p.scene.arena.biomeType === Biome.SLUM), SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.ALCREMIE, "", "matcha-cream", 1, EvolutionItem.STRAWBERRY_SWEET, new SpeciesEvolutionCondition(p => p.scene.arena.biomeType === Biome.FOREST || p.scene.arena.biomeType === Biome.SWAMP || p.scene.arena.biomeType === Biome.MEADOW || p.scene.arena.biomeType === Biome.JUNGLE), SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.ALCREMIE, "", "mint-cream", 1, EvolutionItem.STRAWBERRY_SWEET, new SpeciesEvolutionCondition(p => p.scene.arena.biomeType === Biome.SEA || p.scene.arena.biomeType === Biome.BEACH || p.scene.arena.biomeType === Biome.LAKE || p.scene.arena.biomeType === Biome.SEABED), SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.ALCREMIE, "", "lemon-cream", 1, EvolutionItem.STRAWBERRY_SWEET, new SpeciesEvolutionCondition(p => p.scene.arena.biomeType === Biome.DESERT || p.scene.arena.biomeType === Biome.POWER_PLANT || p.scene.arena.biomeType === Biome.DOJO || p.scene.arena.biomeType === Biome.RUINS || p.scene.arena.biomeType === Biome.CONSTRUCTION_SITE), SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.ALCREMIE, "", "salted-cream", 1, EvolutionItem.STRAWBERRY_SWEET, new SpeciesEvolutionCondition(p => p.scene.arena.biomeType === Biome.MOUNTAIN || p.scene.arena.biomeType === Biome.CAVE || p.scene.arena.biomeType === Biome.ICE_CAVE || p.scene.arena.biomeType === Biome.FAIRY_CAVE || p.scene.arena.biomeType === Biome.SNOWY_FOREST), SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.ALCREMIE, "", "ruby-swirl", 1, EvolutionItem.STRAWBERRY_SWEET, new SpeciesEvolutionCondition(p => p.scene.arena.biomeType === Biome.WASTELAND || p.scene.arena.biomeType === Biome.LABORATORY), SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.ALCREMIE, "", "caramel-swirl", 1, EvolutionItem.STRAWBERRY_SWEET, new SpeciesEvolutionCondition(p => p.scene.arena.biomeType === Biome.TEMPLE || p.scene.arena.biomeType === Biome.ISLAND), SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.ALCREMIE, "", "rainbow-swirl", 1, EvolutionItem.STRAWBERRY_SWEET, new SpeciesEvolutionCondition(p => p.scene.arena.biomeType === Biome.ABYSS || p.scene.arena.biomeType === Biome.SPACE || p.scene.arena.biomeType === Biome.END), SpeciesWildEvolutionDelay.LONG) + new SpeciesFormEvolution(Species.ALCREMIE, "", "vanilla-cream", 1, EvolutionItem.STRAWBERRY_SWEET, new SpeciesEvolutionCondition(p => globalScene.arena.biomeType === Biome.TOWN || globalScene.arena.biomeType === Biome.PLAINS || globalScene.arena.biomeType === Biome.GRASS || globalScene.arena.biomeType === Biome.TALL_GRASS || globalScene.arena.biomeType === Biome.METROPOLIS), SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(Species.ALCREMIE, "", "ruby-cream", 1, EvolutionItem.STRAWBERRY_SWEET, new SpeciesEvolutionCondition(p => globalScene.arena.biomeType === Biome.BADLANDS || globalScene.arena.biomeType === Biome.VOLCANO || globalScene.arena.biomeType === Biome.GRAVEYARD || globalScene.arena.biomeType === Biome.FACTORY || globalScene.arena.biomeType === Biome.SLUM), SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(Species.ALCREMIE, "", "matcha-cream", 1, EvolutionItem.STRAWBERRY_SWEET, new SpeciesEvolutionCondition(p => globalScene.arena.biomeType === Biome.FOREST || globalScene.arena.biomeType === Biome.SWAMP || globalScene.arena.biomeType === Biome.MEADOW || globalScene.arena.biomeType === Biome.JUNGLE), SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(Species.ALCREMIE, "", "mint-cream", 1, EvolutionItem.STRAWBERRY_SWEET, new SpeciesEvolutionCondition(p => globalScene.arena.biomeType === Biome.SEA || globalScene.arena.biomeType === Biome.BEACH || globalScene.arena.biomeType === Biome.LAKE || globalScene.arena.biomeType === Biome.SEABED), SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(Species.ALCREMIE, "", "lemon-cream", 1, EvolutionItem.STRAWBERRY_SWEET, new SpeciesEvolutionCondition(p => globalScene.arena.biomeType === Biome.DESERT || globalScene.arena.biomeType === Biome.POWER_PLANT || globalScene.arena.biomeType === Biome.DOJO || globalScene.arena.biomeType === Biome.RUINS || globalScene.arena.biomeType === Biome.CONSTRUCTION_SITE), SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(Species.ALCREMIE, "", "salted-cream", 1, EvolutionItem.STRAWBERRY_SWEET, new SpeciesEvolutionCondition(p => globalScene.arena.biomeType === Biome.MOUNTAIN || globalScene.arena.biomeType === Biome.CAVE || globalScene.arena.biomeType === Biome.ICE_CAVE || globalScene.arena.biomeType === Biome.FAIRY_CAVE || globalScene.arena.biomeType === Biome.SNOWY_FOREST), SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(Species.ALCREMIE, "", "ruby-swirl", 1, EvolutionItem.STRAWBERRY_SWEET, new SpeciesEvolutionCondition(p => globalScene.arena.biomeType === Biome.WASTELAND || globalScene.arena.biomeType === Biome.LABORATORY), SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(Species.ALCREMIE, "", "caramel-swirl", 1, EvolutionItem.STRAWBERRY_SWEET, new SpeciesEvolutionCondition(p => globalScene.arena.biomeType === Biome.TEMPLE || globalScene.arena.biomeType === Biome.ISLAND), SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(Species.ALCREMIE, "", "rainbow-swirl", 1, EvolutionItem.STRAWBERRY_SWEET, new SpeciesEvolutionCondition(p => globalScene.arena.biomeType === Biome.ABYSS || globalScene.arena.biomeType === Biome.SPACE || globalScene.arena.biomeType === Biome.END), SpeciesWildEvolutionDelay.LONG) ], [Species.DURALUDON]: [ new SpeciesFormEvolution(Species.ARCHALUDON, "", "", 1, EvolutionItem.METAL_ALLOY, null, SpeciesWildEvolutionDelay.VERY_LONG) @@ -1501,7 +1502,7 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.OVERQWIL, 28, null, new SpeciesEvolutionCondition(p => p.moveset.filter(m => m?.moveId === Moves.BARB_BARRAGE).length > 0), SpeciesWildEvolutionDelay.LONG) ], [Species.HISUI_SNEASEL]: [ - new SpeciesEvolution(Species.SNEASLER, 1, EvolutionItem.RAZOR_CLAW, new SpeciesEvolutionCondition(p => p.scene.arena.getTimeOfDay() === TimeOfDay.DAWN || p.scene.arena.getTimeOfDay() === TimeOfDay.DAY /* Razor claw at day*/), SpeciesWildEvolutionDelay.VERY_LONG) + new SpeciesEvolution(Species.SNEASLER, 1, EvolutionItem.RAZOR_CLAW, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DAWN || globalScene.arena.getTimeOfDay() === TimeOfDay.DAY /* Razor claw at day*/), SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.CHARCADET]: [ new SpeciesEvolution(Species.ARMAROUGE, 1, EvolutionItem.AUSPICIOUS_ARMOR, null, SpeciesWildEvolutionDelay.LONG), @@ -1581,10 +1582,10 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.CONKELDURR, 1, EvolutionItem.LINKING_CORD, null, SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.KARRABLAST]: [ - new SpeciesEvolution(Species.ESCAVALIER, 1, EvolutionItem.LINKING_CORD, new SpeciesEvolutionCondition(p => !!p.scene.gameData.dexData[Species.SHELMET].caughtAttr), SpeciesWildEvolutionDelay.VERY_LONG) + new SpeciesEvolution(Species.ESCAVALIER, 1, EvolutionItem.LINKING_CORD, new SpeciesEvolutionCondition(p => !!globalScene.gameData.dexData[Species.SHELMET].caughtAttr), SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.SHELMET]: [ - new SpeciesEvolution(Species.ACCELGOR, 1, EvolutionItem.LINKING_CORD, new SpeciesEvolutionCondition(p => !!p.scene.gameData.dexData[Species.KARRABLAST].caughtAttr), SpeciesWildEvolutionDelay.VERY_LONG) + new SpeciesEvolution(Species.ACCELGOR, 1, EvolutionItem.LINKING_CORD, new SpeciesEvolutionCondition(p => !!globalScene.gameData.dexData[Species.KARRABLAST].caughtAttr), SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.SPRITZEE]: [ new SpeciesEvolution(Species.AROMATISSE, 1, EvolutionItem.SACHET, null, SpeciesWildEvolutionDelay.VERY_LONG) @@ -1627,13 +1628,13 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.MARILL, 1, null, new SpeciesFriendshipEvolutionCondition(70), SpeciesWildEvolutionDelay.SHORT) ], [Species.BUDEW]: [ - new SpeciesEvolution(Species.ROSELIA, 1, null, new SpeciesFriendshipEvolutionCondition(70, p => p.scene.arena.getTimeOfDay() === TimeOfDay.DAWN || p.scene.arena.getTimeOfDay() === TimeOfDay.DAY), SpeciesWildEvolutionDelay.SHORT) + new SpeciesEvolution(Species.ROSELIA, 1, null, new SpeciesFriendshipEvolutionCondition(70, p => globalScene.arena.getTimeOfDay() === TimeOfDay.DAWN || globalScene.arena.getTimeOfDay() === TimeOfDay.DAY), SpeciesWildEvolutionDelay.SHORT) ], [Species.BUNEARY]: [ new SpeciesEvolution(Species.LOPUNNY, 1, null, new SpeciesFriendshipEvolutionCondition(70), SpeciesWildEvolutionDelay.MEDIUM) ], [Species.CHINGLING]: [ - new SpeciesEvolution(Species.CHIMECHO, 1, null, new SpeciesFriendshipEvolutionCondition(90, p => p.scene.arena.getTimeOfDay() === TimeOfDay.DUSK || p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT), SpeciesWildEvolutionDelay.MEDIUM) + new SpeciesEvolution(Species.CHIMECHO, 1, null, new SpeciesFriendshipEvolutionCondition(90, p => globalScene.arena.getTimeOfDay() === TimeOfDay.DUSK || globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT), SpeciesWildEvolutionDelay.MEDIUM) ], [Species.HAPPINY]: [ new SpeciesEvolution(Species.CHANSEY, 1, null, new SpeciesFriendshipEvolutionCondition(160), SpeciesWildEvolutionDelay.SHORT) @@ -1642,7 +1643,7 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.SNORLAX, 1, null, new SpeciesFriendshipEvolutionCondition(120), SpeciesWildEvolutionDelay.LONG) ], [Species.RIOLU]: [ - new SpeciesEvolution(Species.LUCARIO, 1, null, new SpeciesFriendshipEvolutionCondition(120, p => p.scene.arena.getTimeOfDay() === TimeOfDay.DAWN || p.scene.arena.getTimeOfDay() === TimeOfDay.DAY), SpeciesWildEvolutionDelay.LONG) + new SpeciesEvolution(Species.LUCARIO, 1, null, new SpeciesFriendshipEvolutionCondition(120, p => globalScene.arena.getTimeOfDay() === TimeOfDay.DAWN || globalScene.arena.getTimeOfDay() === TimeOfDay.DAY), SpeciesWildEvolutionDelay.LONG) ], [Species.WOOBAT]: [ new SpeciesEvolution(Species.SWOOBAT, 1, null, new SpeciesFriendshipEvolutionCondition(90), SpeciesWildEvolutionDelay.MEDIUM) @@ -1657,16 +1658,16 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.ALOLA_PERSIAN, 1, null, new SpeciesFriendshipEvolutionCondition(120), SpeciesWildEvolutionDelay.LONG) ], [Species.SNOM]: [ - new SpeciesEvolution(Species.FROSMOTH, 1, null, new SpeciesFriendshipEvolutionCondition(90, p => p.scene.arena.getTimeOfDay() === TimeOfDay.DUSK || p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT), SpeciesWildEvolutionDelay.MEDIUM) + new SpeciesEvolution(Species.FROSMOTH, 1, null, new SpeciesFriendshipEvolutionCondition(90, p => globalScene.arena.getTimeOfDay() === TimeOfDay.DUSK || globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT), SpeciesWildEvolutionDelay.MEDIUM) ], [Species.GIMMIGHOUL]: [ new SpeciesFormEvolution(Species.GHOLDENGO, "chest", "", 1, null, new SpeciesEvolutionCondition(p => p.evoCounter + p.getHeldItems().filter(m => m instanceof DamageMoneyRewardModifier).length - + p.scene.findModifiers(m => m instanceof MoneyMultiplierModifier + + globalScene.findModifiers(m => m instanceof MoneyMultiplierModifier || m instanceof ExtraModifierModifier || m instanceof TempExtraModifierModifier).length > 9), SpeciesWildEvolutionDelay.VERY_LONG), new SpeciesFormEvolution(Species.GHOLDENGO, "roaming", "", 1, null, new SpeciesEvolutionCondition(p => p.evoCounter + p.getHeldItems().filter(m => m instanceof DamageMoneyRewardModifier).length - + p.scene.findModifiers(m => m instanceof MoneyMultiplierModifier + + globalScene.findModifiers(m => m instanceof MoneyMultiplierModifier || m instanceof ExtraModifierModifier || m instanceof TempExtraModifierModifier).length > 9), SpeciesWildEvolutionDelay.VERY_LONG) ] }; diff --git a/src/data/battle-anims.ts b/src/data/battle-anims.ts index 26ad65bd9b0..c3da8db57c4 100644 --- a/src/data/battle-anims.ts +++ b/src/data/battle-anims.ts @@ -1,16 +1,14 @@ -//import { battleAnimRawData } from "./battle-anim-raw-data"; -import BattleScene from "../battle-scene"; +import { globalScene } from "#app/global-scene"; import { AttackMove, BeakBlastHeaderAttr, DelayedAttackAttr, MoveFlags, SelfStatusMove, allMoves } from "./move"; -import Pokemon from "../field/pokemon"; +import type Pokemon from "../field/pokemon"; import * as Utils from "../utils"; -import { BattlerIndex } from "../battle"; -import { Element } from "json-stable-stringify"; +import type { BattlerIndex } from "../battle"; +import type { Element } from "json-stable-stringify"; import { Moves } from "#enums/moves"; import { SubstituteTag } from "./battler-tags"; import { isNullOrUndefined } from "../utils"; import Phaser from "phaser"; import { EncounterAnim } from "#enums/encounter-anims"; -//import fs from 'vite-plugin-fs/browser'; export enum AnimFrameTarget { USER, @@ -308,7 +306,7 @@ abstract class AnimTimedEvent { this.resourceName = resourceName; } - abstract execute(scene: BattleScene, battleAnim: BattleAnim, priority?: number): integer; + abstract execute(battleAnim: BattleAnim, priority?: number): integer; abstract getEventType(): string; } @@ -326,15 +324,15 @@ class AnimTimedSoundEvent extends AnimTimedEvent { } } - execute(scene: BattleScene, battleAnim: BattleAnim, priority?: number): integer { + execute(battleAnim: BattleAnim, priority?: number): integer { const soundConfig = { rate: (this.pitch * 0.01), volume: (this.volume * 0.01) }; if (this.resourceName) { try { - scene.playSound(`battle_anims/${this.resourceName}`, soundConfig); + globalScene.playSound(`battle_anims/${this.resourceName}`, soundConfig); } catch (err) { console.error(err); } - return Math.ceil((scene.sound.get(`battle_anims/${this.resourceName}`).totalDuration * 1000) / 33.33); + return Math.ceil((globalScene.sound.get(`battle_anims/${this.resourceName}`).totalDuration * 1000) / 33.33); } else { return Math.ceil((battleAnim.user!.cry(soundConfig).totalDuration * 1000) / 33.33); // TODO: is the bang behind user correct? } @@ -388,7 +386,7 @@ class AnimTimedUpdateBgEvent extends AnimTimedBgEvent { super(frameIndex, resourceName, source); } - execute(scene: BattleScene, moveAnim: MoveAnim, priority?: number): integer { + execute(moveAnim: MoveAnim, priority?: number): integer { const tweenProps = {}; if (this.bgX !== undefined) { tweenProps["x"] = (this.bgX * 0.5) - 320; @@ -400,7 +398,7 @@ class AnimTimedUpdateBgEvent extends AnimTimedBgEvent { tweenProps["alpha"] = (this.opacity || 0) / 255; } if (Object.keys(tweenProps).length) { - scene.tweens.add(Object.assign({ + globalScene.tweens.add(Object.assign({ targets: moveAnim.bgSprite, duration: Utils.getFrameMs(this.duration * 3) }, tweenProps)); @@ -418,25 +416,25 @@ class AnimTimedAddBgEvent extends AnimTimedBgEvent { super(frameIndex, resourceName, source); } - execute(scene: BattleScene, moveAnim: MoveAnim, priority?: number): integer { + execute(moveAnim: MoveAnim, priority?: number): integer { if (moveAnim.bgSprite) { moveAnim.bgSprite.destroy(); } moveAnim.bgSprite = this.resourceName - ? scene.add.tileSprite(this.bgX - 320, this.bgY - 284, 896, 576, this.resourceName) - : scene.add.rectangle(this.bgX - 320, this.bgY - 284, 896, 576, 0); + ? globalScene.add.tileSprite(this.bgX - 320, this.bgY - 284, 896, 576, this.resourceName) + : globalScene.add.rectangle(this.bgX - 320, this.bgY - 284, 896, 576, 0); moveAnim.bgSprite.setOrigin(0, 0); moveAnim.bgSprite.setScale(1.25); moveAnim.bgSprite.setAlpha(this.opacity / 255); - scene.field.add(moveAnim.bgSprite); - const fieldPokemon = scene.getEnemyPokemon(false) ?? scene.getPlayerPokemon(false); + globalScene.field.add(moveAnim.bgSprite); + const fieldPokemon = globalScene.getEnemyPokemon(false) ?? globalScene.getPlayerPokemon(false); if (!isNullOrUndefined(priority)) { - scene.field.moveTo(moveAnim.bgSprite as Phaser.GameObjects.GameObject, priority); + globalScene.field.moveTo(moveAnim.bgSprite as Phaser.GameObjects.GameObject, priority); } else if (fieldPokemon?.isOnField()) { - scene.field.moveBelow(moveAnim.bgSprite as Phaser.GameObjects.GameObject, fieldPokemon); + globalScene.field.moveBelow(moveAnim.bgSprite as Phaser.GameObjects.GameObject, fieldPokemon); } - scene.tweens.add({ + globalScene.tweens.add({ targets: moveAnim.bgSprite, duration: Utils.getFrameMs(this.duration * 3) }); @@ -454,14 +452,14 @@ export const chargeAnims = new Map(); export const encounterAnims = new Map(); -export function initCommonAnims(scene: BattleScene): Promise { +export function initCommonAnims(): Promise { return new Promise(resolve => { const commonAnimNames = Utils.getEnumKeys(CommonAnim); const commonAnimIds = Utils.getEnumValues(CommonAnim); const commonAnimFetches: Promise>[] = []; for (let ca = 0; ca < commonAnimIds.length; ca++) { const commonAnimId = commonAnimIds[ca]; - commonAnimFetches.push(scene.cachedFetch(`./battle-anims/common-${commonAnimNames[ca].toLowerCase().replace(/\_/g, "-")}.json`) + commonAnimFetches.push(globalScene.cachedFetch(`./battle-anims/common-${commonAnimNames[ca].toLowerCase().replace(/\_/g, "-")}.json`) .then(response => response.json()) .then(cas => commonAnims.set(commonAnimId, new AnimConfig(cas)))); } @@ -469,7 +467,7 @@ export function initCommonAnims(scene: BattleScene): Promise { }); } -export function initMoveAnim(scene: BattleScene, move: Moves): Promise { +export function initMoveAnim(move: Moves): Promise { return new Promise(resolve => { if (moveAnims.has(move)) { if (moveAnims.get(move) !== null) { @@ -494,7 +492,7 @@ export function initMoveAnim(scene: BattleScene, move: Moves): Promise { const defaultMoveAnim = allMoves[move] instanceof AttackMove ? Moves.TACKLE : allMoves[move] instanceof SelfStatusMove ? Moves.FOCUS_ENERGY : Moves.TAIL_WHIP; const fetchAnimAndResolve = (move: Moves) => { - scene.cachedFetch(`./battle-anims/${Utils.animationFileName(move)}.json`) + globalScene.cachedFetch(`./battle-anims/${Utils.animationFileName(move)}.json`) .then(response => { const contentType = response.headers.get("content-type"); if (!response.ok || contentType?.indexOf("application/json") === -1) { @@ -516,7 +514,7 @@ export function initMoveAnim(scene: BattleScene, move: Moves): Promise { : (allMoves[move].getAttrs(DelayedAttackAttr)[0] ?? allMoves[move].getAttrs(BeakBlastHeaderAttr)[0]); if (chargeAnimSource) { - initMoveChargeAnim(scene, chargeAnimSource.chargeAnim).then(() => resolve()); + initMoveChargeAnim(chargeAnimSource.chargeAnim).then(() => resolve()); } else { resolve(); } @@ -557,10 +555,9 @@ function logMissingMoveAnim(move: Moves, ...optionalParams: any[]) { /** * Fetches animation configs to be used in a Mystery Encounter - * @param scene * @param encounterAnim one or more animations to fetch */ -export async function initEncounterAnims(scene: BattleScene, encounterAnim: EncounterAnim | EncounterAnim[]): Promise { +export async function initEncounterAnims(encounterAnim: EncounterAnim | EncounterAnim[]): Promise { const anims = Array.isArray(encounterAnim) ? encounterAnim : [ encounterAnim ]; const encounterAnimNames = Utils.getEnumKeys(EncounterAnim); const encounterAnimFetches: Promise>[] = []; @@ -568,14 +565,14 @@ export async function initEncounterAnims(scene: BattleScene, encounterAnim: Enco if (encounterAnims.has(anim) && !isNullOrUndefined(encounterAnims.get(anim))) { continue; } - encounterAnimFetches.push(scene.cachedFetch(`./battle-anims/encounter-${encounterAnimNames[anim].toLowerCase().replace(/\_/g, "-")}.json`) + encounterAnimFetches.push(globalScene.cachedFetch(`./battle-anims/encounter-${encounterAnimNames[anim].toLowerCase().replace(/\_/g, "-")}.json`) .then(response => response.json()) .then(cas => encounterAnims.set(anim, new AnimConfig(cas)))); } await Promise.allSettled(encounterAnimFetches); } -export function initMoveChargeAnim(scene: BattleScene, chargeAnim: ChargeAnim): Promise { +export function initMoveChargeAnim(chargeAnim: ChargeAnim): Promise { return new Promise(resolve => { if (chargeAnims.has(chargeAnim)) { if (chargeAnims.get(chargeAnim) !== null) { @@ -590,7 +587,7 @@ export function initMoveChargeAnim(scene: BattleScene, chargeAnim: ChargeAnim): } } else { chargeAnims.set(chargeAnim, null); - scene.cachedFetch(`./battle-anims/${ChargeAnim[chargeAnim].toLowerCase().replace(/\_/g, "-")}.json`) + globalScene.cachedFetch(`./battle-anims/${ChargeAnim[chargeAnim].toLowerCase().replace(/\_/g, "-")}.json`) .then(response => response.json()) .then(ca => { if (Array.isArray(ca)) { @@ -623,23 +620,22 @@ function populateMoveChargeAnim(chargeAnim: ChargeAnim, animSource: any) { chargeAnims.set(chargeAnim, [ chargeAnims.get(chargeAnim) as AnimConfig, moveChargeAnim ]); } -export function loadCommonAnimAssets(scene: BattleScene, startLoad?: boolean): Promise { +export function loadCommonAnimAssets(startLoad?: boolean): Promise { return new Promise(resolve => { - loadAnimAssets(scene, Array.from(commonAnims.values()), startLoad).then(() => resolve()); + loadAnimAssets(Array.from(commonAnims.values()), startLoad).then(() => resolve()); }); } /** * Loads encounter animation assets to scene * MUST be called after {@linkcode initEncounterAnims()} to load all required animations properly - * @param scene * @param startLoad */ -export async function loadEncounterAnimAssets(scene: BattleScene, startLoad?: boolean): Promise { - await loadAnimAssets(scene, Array.from(encounterAnims.values()), startLoad); +export async function loadEncounterAnimAssets(startLoad?: boolean): Promise { + await loadAnimAssets(Array.from(encounterAnims.values()), startLoad); } -export function loadMoveAnimAssets(scene: BattleScene, moveIds: Moves[], startLoad?: boolean): Promise { +export function loadMoveAnimAssets(moveIds: Moves[], startLoad?: boolean): Promise { return new Promise(resolve => { const moveAnimations = moveIds.map(m => moveAnims.get(m) as AnimConfig).flat(); for (const moveId of moveIds) { @@ -655,11 +651,11 @@ export function loadMoveAnimAssets(scene: BattleScene, moveIds: Moves[], startLo } } } - loadAnimAssets(scene, moveAnimations, startLoad).then(() => resolve()); + loadAnimAssets(moveAnimations, startLoad).then(() => resolve()); }); } -function loadAnimAssets(scene: BattleScene, anims: AnimConfig[], startLoad?: boolean): Promise { +function loadAnimAssets(anims: AnimConfig[], startLoad?: boolean): Promise { return new Promise(resolve => { const backgrounds = new Set(); const sounds = new Set(); @@ -676,19 +672,19 @@ function loadAnimAssets(scene: BattleScene, anims: AnimConfig[], startLoad?: boo backgrounds.add(abg); } if (a.graphic) { - scene.loadSpritesheet(a.graphic, "battle_anims", 96); + globalScene.loadSpritesheet(a.graphic, "battle_anims", 96); } } for (const bg of backgrounds) { - scene.loadImage(bg, "battle_anims"); + globalScene.loadImage(bg, "battle_anims"); } for (const s of sounds) { - scene.loadSe(s, "battle_anims", s); + globalScene.loadSe(s, "battle_anims", s); } if (startLoad) { - scene.load.once(Phaser.Loader.Events.COMPLETE, () => resolve()); - if (!scene.load.isLoading()) { - scene.load.start(); + globalScene.load.once(Phaser.Loader.Events.COMPLETE, () => resolve()); + if (!globalScene.load.isLoading()) { + globalScene.load.start(); } } else { resolve(); @@ -778,7 +774,7 @@ export abstract class BattleAnim { return false; } - private getGraphicFrameData(scene: BattleScene, frames: AnimFrame[], onSubstitute?: boolean): Map> { + private getGraphicFrameData(frames: AnimFrame[], onSubstitute?: boolean): Map> { const ret: Map> = new Map([ [ AnimFrameTarget.GRAPHIC, new Map() ], [ AnimFrameTarget.USER, new Map() ], @@ -835,7 +831,7 @@ export abstract class BattleAnim { return ret; } - play(scene: BattleScene, onSubstitute?: boolean, callback?: Function) { + play(onSubstitute?: boolean, callback?: Function) { const isOppAnim = this.isOppAnim(); const user = !isOppAnim ? this.user! : this.target!; // TODO: are those bangs correct? const target = !isOppAnim ? this.target! : this.user!; @@ -907,7 +903,7 @@ export abstract class BattleAnim { } }; - if (!scene.moveAnimations && !this.playRegardlessOfIssues) { + if (!globalScene.moveAnimations && !this.playRegardlessOfIssues) { return cleanUpAndComplete(); } @@ -924,7 +920,7 @@ export abstract class BattleAnim { let r = anim?.frames.length ?? 0; let f = 0; - scene.tweens.addCounter({ + globalScene.tweens.addCounter({ duration: Utils.getFrameMs(3), repeat: anim?.frames.length ?? 0, onRepeat: () => { @@ -934,7 +930,7 @@ export abstract class BattleAnim { } const spriteFrames = anim!.frames[f]; // TODO: is the bang correcT? - const frameData = this.getGraphicFrameData(scene, anim!.frames[f], onSubstitute); // TODO: is the bang correct? + const frameData = this.getGraphicFrameData(anim!.frames[f], onSubstitute); // TODO: is the bang correct? let u = 0; let t = 0; let g = 0; @@ -950,19 +946,19 @@ export abstract class BattleAnim { const spriteSource = isUser ? userSprite : targetSprite; if ((isUser ? u : t) === sprites.length) { if (isUser || !targetSubstitute) { - const sprite = scene.addPokemonSprite(isUser ? user! : target, 0, 0, spriteSource!.texture, spriteSource!.frame.name, true); // TODO: are those bangs correct? + const sprite = globalScene.addPokemonSprite(isUser ? user! : target, 0, 0, spriteSource!.texture, spriteSource!.frame.name, true); // TODO: are those bangs correct? [ "spriteColors", "fusionSpriteColors" ].map(k => sprite.pipelineData[k] = (isUser ? user! : target).getSprite().pipelineData[k]); // TODO: are those bangs correct? sprite.setPipelineData("spriteKey", (isUser ? user! : target).getBattleSpriteKey()); sprite.setPipelineData("shiny", (isUser ? user : target).shiny); sprite.setPipelineData("variant", (isUser ? user : target).variant); sprite.setPipelineData("ignoreFieldPos", true); spriteSource.on("animationupdate", (_anim, frame) => sprite.setFrame(frame.textureFrame)); - scene.field.add(sprite); + globalScene.field.add(sprite); sprites.push(sprite); } else { - const sprite = scene.addFieldSprite(spriteSource.x, spriteSource.y, spriteSource.texture); + const sprite = globalScene.addFieldSprite(spriteSource.x, spriteSource.y, spriteSource.texture); spriteSource.on("animationupdate", (_anim, frame) => sprite.setFrame(frame.textureFrame)); - scene.field.add(sprite); + globalScene.field.add(sprite); sprites.push(sprite); } } @@ -987,9 +983,9 @@ export abstract class BattleAnim { } else { const sprites = spriteCache[AnimFrameTarget.GRAPHIC]; if (g === sprites.length) { - const newSprite: Phaser.GameObjects.Sprite = scene.addFieldSprite(0, 0, anim!.graphic, 1); // TODO: is the bang correct? + const newSprite: Phaser.GameObjects.Sprite = globalScene.addFieldSprite(0, 0, anim!.graphic, 1); // TODO: is the bang correct? sprites.push(newSprite); - scene.field.add(newSprite); + globalScene.field.add(newSprite); spritePriorities.push(1); } @@ -1000,22 +996,22 @@ export abstract class BattleAnim { const setSpritePriority = (priority: integer) => { switch (priority) { case 0: - scene.field.moveBelow(moveSprite as Phaser.GameObjects.GameObject, scene.getEnemyPokemon(false) ?? scene.getPlayerPokemon(false)!); // TODO: is this bang correct? + globalScene.field.moveBelow(moveSprite as Phaser.GameObjects.GameObject, globalScene.getEnemyPokemon(false) ?? globalScene.getPlayerPokemon(false)!); // TODO: is this bang correct? break; case 1: - scene.field.moveTo(moveSprite, scene.field.getAll().length - 1); + globalScene.field.moveTo(moveSprite, globalScene.field.getAll().length - 1); break; case 2: switch (frame.focus) { case AnimFocus.USER: if (this.bgSprite) { - scene.field.moveAbove(moveSprite as Phaser.GameObjects.GameObject, this.bgSprite); + globalScene.field.moveAbove(moveSprite as Phaser.GameObjects.GameObject, this.bgSprite); } else { - scene.field.moveBelow(moveSprite as Phaser.GameObjects.GameObject, this.user!); // TODO: is this bang correct? + globalScene.field.moveBelow(moveSprite as Phaser.GameObjects.GameObject, this.user!); // TODO: is this bang correct? } break; case AnimFocus.TARGET: - scene.field.moveBelow(moveSprite as Phaser.GameObjects.GameObject, this.target!); // TODO: is this bang correct? + globalScene.field.moveBelow(moveSprite as Phaser.GameObjects.GameObject, this.target!); // TODO: is this bang correct? break; default: setSpritePriority(1); @@ -1025,10 +1021,10 @@ export abstract class BattleAnim { case 3: switch (frame.focus) { case AnimFocus.USER: - scene.field.moveAbove(moveSprite as Phaser.GameObjects.GameObject, this.user!); // TODO: is this bang correct? + globalScene.field.moveAbove(moveSprite as Phaser.GameObjects.GameObject, this.user!); // TODO: is this bang correct? break; case AnimFocus.TARGET: - scene.field.moveAbove(moveSprite as Phaser.GameObjects.GameObject, this.target!); // TODO: is this bang correct? + globalScene.field.moveAbove(moveSprite as Phaser.GameObjects.GameObject, this.target!); // TODO: is this bang correct? break; default: setSpritePriority(1); @@ -1056,7 +1052,7 @@ export abstract class BattleAnim { } if (anim?.frameTimedEvents.has(f)) { for (const event of anim.frameTimedEvents.get(f)!) { // TODO: is this bang correct? - r = Math.max((anim.frames.length - f) + event.execute(scene, this), r); + r = Math.max((anim.frames.length - f) + event.execute(this), r); } } const targets = Utils.getEnumValues(AnimFrameTarget); @@ -1086,7 +1082,7 @@ export abstract class BattleAnim { } } if (r) { - scene.tweens.addCounter({ + globalScene.tweens.addCounter({ duration: Utils.getFrameMs(r), onComplete: () => cleanUpAndComplete() }); @@ -1123,8 +1119,6 @@ export abstract class BattleAnim { } /** - * - * @param scene * @param targetInitialX * @param targetInitialY * @param frameTimeMult @@ -1135,7 +1129,7 @@ export abstract class BattleAnim { * - 5 is on top of player sprite * @param callback */ - playWithoutTargets(scene: BattleScene, targetInitialX: number, targetInitialY: number, frameTimeMult: number, frameTimedEventPriority?: 0 | 1 | 3 | 5, callback?: Function) { + playWithoutTargets(targetInitialX: number, targetInitialY: number, frameTimeMult: number, frameTimedEventPriority?: 0 | 1 | 3 | 5, callback?: Function) { const spriteCache: SpriteCache = { [AnimFrameTarget.GRAPHIC]: [], [AnimFrameTarget.USER]: [], @@ -1156,7 +1150,7 @@ export abstract class BattleAnim { } }; - if (!scene.moveAnimations && !this.playRegardlessOfIssues) { + if (!globalScene.moveAnimations && !this.playRegardlessOfIssues) { return cleanUpAndComplete(); } @@ -1168,13 +1162,13 @@ export abstract class BattleAnim { let totalFrames = anim!.frames.length; let frameCount = 0; - let existingFieldSprites = scene.field.getAll().slice(0); + let existingFieldSprites = globalScene.field.getAll().slice(0); - scene.tweens.addCounter({ + globalScene.tweens.addCounter({ duration: Utils.getFrameMs(3) * frameTimeMult, repeat: anim!.frames.length, onRepeat: () => { - existingFieldSprites = scene.field.getAll().slice(0); + existingFieldSprites = globalScene.field.getAll().slice(0); const spriteFrames = anim!.frames[frameCount]; const frameData = this.getGraphicFrameDataWithoutTarget(anim!.frames[frameCount], targetInitialX, targetInitialY); let graphicFrameCount = 0; @@ -1186,9 +1180,9 @@ export abstract class BattleAnim { const sprites = spriteCache[AnimFrameTarget.GRAPHIC]; if (graphicFrameCount === sprites.length) { - const newSprite: Phaser.GameObjects.Sprite = scene.addFieldSprite(0, 0, anim!.graphic, 1); + const newSprite: Phaser.GameObjects.Sprite = globalScene.addFieldSprite(0, 0, anim!.graphic, 1); sprites.push(newSprite); - scene.field.add(newSprite); + globalScene.field.add(newSprite); } const graphicIndex = graphicFrameCount++; @@ -1197,11 +1191,11 @@ export abstract class BattleAnim { const setSpritePriority = (priority: integer) => { if (existingFieldSprites.length > priority) { // Move to specified priority index - const index = scene.field.getIndex(existingFieldSprites[priority]); - scene.field.moveTo(moveSprite, index); + const index = globalScene.field.getIndex(existingFieldSprites[priority]); + globalScene.field.moveTo(moveSprite, index); } else { // Move to top of scene - scene.field.moveTo(moveSprite, scene.field.getAll().length - 1); + globalScene.field.moveTo(moveSprite, globalScene.field.getAll().length - 1); } }; setSpritePriority(frame.priority); @@ -1221,7 +1215,7 @@ export abstract class BattleAnim { } if (anim?.frameTimedEvents.get(frameCount)) { for (const event of anim.frameTimedEvents.get(frameCount)!) { - totalFrames = Math.max((anim.frames.length - frameCount) + event.execute(scene, this, frameTimedEventPriority), totalFrames); + totalFrames = Math.max((anim.frames.length - frameCount) + event.execute(this, frameTimedEventPriority), totalFrames); } } const targets = Utils.getEnumValues(AnimFrameTarget); @@ -1248,7 +1242,7 @@ export abstract class BattleAnim { } } if (totalFrames) { - scene.tweens.addCounter({ + globalScene.tweens.addCounter({ duration: Utils.getFrameMs(totalFrames), onComplete: () => cleanUpAndComplete() }); @@ -1282,7 +1276,7 @@ export class MoveAnim extends BattleAnim { public move: Moves; constructor(move: Moves, user: Pokemon, target: BattlerIndex, playOnEmptyField: boolean = false) { - super(user, user.scene.getField()[target], playOnEmptyField); + super(user, globalScene.getField()[target], playOnEmptyField); this.move = move; } diff --git a/src/data/battler-tags.ts b/src/data/battler-tags.ts index 0c0b8e9e034..2743c36e7b5 100644 --- a/src/data/battler-tags.ts +++ b/src/data/battler-tags.ts @@ -1,4 +1,4 @@ -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { allAbilities, applyAbAttrs, @@ -8,7 +8,8 @@ import { ReverseDrainAbAttr } from "#app/data/ability"; import { ChargeAnim, CommonAnim, CommonBattleAnim, MoveChargeAnim } from "#app/data/battle-anims"; -import Move, { +import type Move from "#app/data/move"; +import { allMoves, applyMoveAttrs, ConsecutiveUseDoublePowerAttr, @@ -21,14 +22,16 @@ import { SpeciesFormChangeManualTrigger } from "#app/data/pokemon-forms"; import { getStatusEffectHealText } from "#app/data/status-effect"; import { TerrainType } from "#app/data/terrain"; import { Type } from "#enums/type"; -import Pokemon, { HitResult, MoveResult } from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; +import { HitResult, MoveResult } from "#app/field/pokemon"; import { getPokemonNameWithAffix } from "#app/messages"; import { CommonAnimPhase } from "#app/phases/common-anim-phase"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; import { MovePhase } from "#app/phases/move-phase"; import { PokemonHealPhase } from "#app/phases/pokemon-heal-phase"; import { ShowAbilityPhase } from "#app/phases/show-ability-phase"; -import { StatStageChangeCallback, StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; +import type { StatStageChangeCallback } from "#app/phases/stat-stage-change-phase"; +import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; import i18next from "#app/plugins/i18n"; import { BooleanHolder, getFrameMs, NumberHolder, toDmgValue } from "#app/utils"; import { Abilities } from "#enums/abilities"; @@ -110,11 +113,10 @@ export class BattlerTag { /** * Helper function that retrieves the source Pokemon object - * @param scene medium to retrieve the source Pokemon * @returns The source {@linkcode Pokemon} or `null` if none is found */ - public getSourcePokemon(scene: BattleScene): Pokemon | null { - return this.sourceId ? scene.getPokemonById(this.sourceId) : null; + public getSourcePokemon(): Pokemon | null { + return this.sourceId ? globalScene.getPokemonById(this.sourceId) : null; } } @@ -143,12 +145,12 @@ export abstract class MoveRestrictionBattlerTag extends BattlerTag { override lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { if (lapseType === BattlerTagLapseType.PRE_MOVE) { // Cancel the affected pokemon's selected move - const phase = pokemon.scene.getCurrentPhase() as MovePhase; + const phase = globalScene.getCurrentPhase() as MovePhase; const move = phase.move; if (this.isMoveRestricted(move.moveId, pokemon)) { if (this.interruptedText(pokemon, move.moveId)) { - pokemon.scene.queueMessage(this.interruptedText(pokemon, move.moveId)); + globalScene.queueMessage(this.interruptedText(pokemon, move.moveId)); } phase.cancel(); } @@ -280,14 +282,14 @@ export class DisabledTag extends MoveRestrictionBattlerTag { this.moveId = move.move; - pokemon.scene.queueMessage(i18next.t("battlerTags:disabledOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), moveName: allMoves[this.moveId].name })); + globalScene.queueMessage(i18next.t("battlerTags:disabledOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), moveName: allMoves[this.moveId].name })); } /** @override */ override onRemove(pokemon: Pokemon): void { super.onRemove(pokemon); - pokemon.scene.queueMessage(i18next.t("battlerTags:disabledLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), moveName: allMoves[this.moveId].name })); + globalScene.queueMessage(i18next.t("battlerTags:disabledLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), moveName: allMoves[this.moveId].name })); } /** @override */ @@ -406,8 +408,8 @@ export class RechargingTag extends BattlerTag { /** Cancels the source's move this turn and queues a "__ must recharge!" message */ lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { if (lapseType === BattlerTagLapseType.PRE_MOVE) { - pokemon.scene.queueMessage(i18next.t("battlerTags:rechargingLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); - (pokemon.scene.getCurrentPhase() as MovePhase).cancel(); + globalScene.queueMessage(i18next.t("battlerTags:rechargingLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); + (globalScene.getCurrentPhase() as MovePhase).cancel(); pokemon.getMoveQueue().shift(); } return super.lapse(pokemon, lapseType); @@ -426,10 +428,10 @@ export class BeakBlastChargingTag extends BattlerTag { onAdd(pokemon: Pokemon): void { // Play Beak Blast's charging animation - new MoveChargeAnim(ChargeAnim.BEAK_BLAST_CHARGING, this.sourceMove, pokemon).play(pokemon.scene); + new MoveChargeAnim(ChargeAnim.BEAK_BLAST_CHARGING, this.sourceMove, pokemon).play(); // Queue Beak Blast's header message - pokemon.scene.queueMessage(i18next.t("moveTriggers:startedHeatingUpBeak", { pokemonName: getPokemonNameWithAffix(pokemon) })); + globalScene.queueMessage(i18next.t("moveTriggers:startedHeatingUpBeak", { pokemonName: getPokemonNameWithAffix(pokemon) })); } /** @@ -464,7 +466,7 @@ export class ShellTrapTag extends BattlerTag { } onAdd(pokemon: Pokemon): void { - pokemon.scene.queueMessage(i18next.t("moveTriggers:setUpShellTrap", { pokemonName: getPokemonNameWithAffix(pokemon) })); + globalScene.queueMessage(i18next.t("moveTriggers:setUpShellTrap", { pokemonName: getPokemonNameWithAffix(pokemon) })); } /** @@ -479,17 +481,17 @@ export class ShellTrapTag extends BattlerTag { // Trap should only be triggered by opponent's Physical moves if (phaseData?.move.category === MoveCategory.PHYSICAL && pokemon.isOpponent(phaseData.attacker)) { - const shellTrapPhaseIndex = pokemon.scene.phaseQueue.findIndex( + const shellTrapPhaseIndex = globalScene.phaseQueue.findIndex( phase => phase instanceof MovePhase && phase.pokemon === pokemon ); - const firstMovePhaseIndex = pokemon.scene.phaseQueue.findIndex( + const firstMovePhaseIndex = globalScene.phaseQueue.findIndex( phase => phase instanceof MovePhase ); // Only shift MovePhase timing if it's not already next up if (shellTrapPhaseIndex !== -1 && shellTrapPhaseIndex !== firstMovePhaseIndex) { - const shellTrapMovePhase = pokemon.scene.phaseQueue.splice(shellTrapPhaseIndex, 1)[0]; - pokemon.scene.prependToPhase(shellTrapMovePhase, MovePhase); + const shellTrapMovePhase = globalScene.phaseQueue.splice(shellTrapPhaseIndex, 1)[0]; + globalScene.prependToPhase(shellTrapMovePhase, MovePhase); } this.activated = true; @@ -508,7 +510,7 @@ export class TrappedTag extends BattlerTag { } canAdd(pokemon: Pokemon): boolean { - const source = pokemon.scene.getPokemonById(this.sourceId!)!; + const source = globalScene.getPokemonById(this.sourceId!)!; const move = allMoves[this.sourceMove]; const isGhost = pokemon.isOfType(Type.GHOST); @@ -521,13 +523,13 @@ export class TrappedTag extends BattlerTag { onAdd(pokemon: Pokemon): void { super.onAdd(pokemon); - pokemon.scene.queueMessage(this.getTrapMessage(pokemon)); + globalScene.queueMessage(this.getTrapMessage(pokemon)); } onRemove(pokemon: Pokemon): void { super.onRemove(pokemon); - pokemon.scene.queueMessage(i18next.t("battlerTags:trappedOnRemove", { + globalScene.queueMessage(i18next.t("battlerTags:trappedOnRemove", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), moveName: this.getMoveName() })); @@ -585,8 +587,8 @@ export class FlinchedTag extends BattlerTag { */ lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { if (lapseType === BattlerTagLapseType.PRE_MOVE) { - (pokemon.scene.getCurrentPhase() as MovePhase).cancel(); - pokemon.scene.queueMessage(i18next.t("battlerTags:flinchedLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); + (globalScene.getCurrentPhase() as MovePhase).cancel(); + globalScene.queueMessage(i18next.t("battlerTags:flinchedLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); } return super.lapse(pokemon, lapseType); @@ -614,7 +616,7 @@ export class InterruptedTag extends BattlerTag { } lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { - (pokemon.scene.getCurrentPhase() as MovePhase).cancel(); + (globalScene.getCurrentPhase() as MovePhase).cancel(); return super.lapse(pokemon, lapseType); } } @@ -628,44 +630,44 @@ export class ConfusedTag extends BattlerTag { } canAdd(pokemon: Pokemon): boolean { - return pokemon.scene.arena.terrain?.terrainType !== TerrainType.MISTY || !pokemon.isGrounded(); + return globalScene.arena.terrain?.terrainType !== TerrainType.MISTY || !pokemon.isGrounded(); } onAdd(pokemon: Pokemon): void { super.onAdd(pokemon); - pokemon.scene.unshiftPhase(new CommonAnimPhase(pokemon.scene, pokemon.getBattlerIndex(), undefined, CommonAnim.CONFUSION)); - pokemon.scene.queueMessage(i18next.t("battlerTags:confusedOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); + globalScene.unshiftPhase(new CommonAnimPhase(pokemon.getBattlerIndex(), undefined, CommonAnim.CONFUSION)); + globalScene.queueMessage(i18next.t("battlerTags:confusedOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); } onRemove(pokemon: Pokemon): void { super.onRemove(pokemon); - pokemon.scene.queueMessage(i18next.t("battlerTags:confusedOnRemove", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); + globalScene.queueMessage(i18next.t("battlerTags:confusedOnRemove", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); } onOverlap(pokemon: Pokemon): void { super.onOverlap(pokemon); - pokemon.scene.queueMessage(i18next.t("battlerTags:confusedOnOverlap", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); + globalScene.queueMessage(i18next.t("battlerTags:confusedOnOverlap", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); } lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { const ret = lapseType !== BattlerTagLapseType.CUSTOM && super.lapse(pokemon, lapseType); if (ret) { - pokemon.scene.queueMessage(i18next.t("battlerTags:confusedLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); - pokemon.scene.unshiftPhase(new CommonAnimPhase(pokemon.scene, pokemon.getBattlerIndex(), undefined, CommonAnim.CONFUSION)); + globalScene.queueMessage(i18next.t("battlerTags:confusedLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); + globalScene.unshiftPhase(new CommonAnimPhase(pokemon.getBattlerIndex(), undefined, CommonAnim.CONFUSION)); // 1/3 chance of hitting self with a 40 base power move if (pokemon.randSeedInt(3) === 0) { const atk = pokemon.getEffectiveStat(Stat.ATK); const def = pokemon.getEffectiveStat(Stat.DEF); const damage = toDmgValue(((((2 * pokemon.level / 5 + 2) * 40 * atk / def) / 50) + 2) * (pokemon.randSeedIntRange(85, 100) / 100)); - pokemon.scene.queueMessage(i18next.t("battlerTags:confusedLapseHurtItself")); + globalScene.queueMessage(i18next.t("battlerTags:confusedLapseHurtItself")); pokemon.damageAndUpdate(damage); pokemon.battleData.hitCount++; - (pokemon.scene.getCurrentPhase() as MovePhase).cancel(); + (globalScene.getCurrentPhase() as MovePhase).cancel(); } } @@ -700,7 +702,7 @@ export class DestinyBondTag extends BattlerTag { if (lapseType !== BattlerTagLapseType.CUSTOM) { return super.lapse(pokemon, lapseType); } - const source = this.sourceId ? pokemon.scene.getPokemonById(this.sourceId) : null; + const source = this.sourceId ? globalScene.getPokemonById(this.sourceId) : null; if (!source?.isFainted()) { return true; } @@ -710,11 +712,11 @@ export class DestinyBondTag extends BattlerTag { } if (pokemon.isBossImmune()) { - pokemon.scene.queueMessage(i18next.t("battlerTags:destinyBondLapseIsBoss", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); + globalScene.queueMessage(i18next.t("battlerTags:destinyBondLapseIsBoss", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); return false; } - pokemon.scene.queueMessage( + globalScene.queueMessage( i18next.t("battlerTags:destinyBondLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(source), pokemonNameWithAffix2: getPokemonNameWithAffix(pokemon) @@ -732,7 +734,7 @@ export class InfatuatedTag extends BattlerTag { canAdd(pokemon: Pokemon): boolean { if (this.sourceId) { - const pkm = pokemon.scene.getPokemonById(this.sourceId); + const pkm = globalScene.getPokemonById(this.sourceId); if (pkm) { return pokemon.isOppositeGender(pkm); @@ -749,10 +751,10 @@ export class InfatuatedTag extends BattlerTag { onAdd(pokemon: Pokemon): void { super.onAdd(pokemon); - pokemon.scene.queueMessage( + globalScene.queueMessage( i18next.t("battlerTags:infatuatedOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), - sourcePokemonName: getPokemonNameWithAffix(pokemon.scene.getPokemonById(this.sourceId!) ?? undefined) // TODO: is that bang correct? + sourcePokemonName: getPokemonNameWithAffix(globalScene.getPokemonById(this.sourceId!) ?? undefined) // TODO: is that bang correct? }) ); } @@ -760,24 +762,24 @@ export class InfatuatedTag extends BattlerTag { onOverlap(pokemon: Pokemon): void { super.onOverlap(pokemon); - pokemon.scene.queueMessage(i18next.t("battlerTags:infatuatedOnOverlap", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); + globalScene.queueMessage(i18next.t("battlerTags:infatuatedOnOverlap", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); } lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { const ret = lapseType !== BattlerTagLapseType.CUSTOM || super.lapse(pokemon, lapseType); if (ret) { - pokemon.scene.queueMessage( + globalScene.queueMessage( i18next.t("battlerTags:infatuatedLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), - sourcePokemonName: getPokemonNameWithAffix(pokemon.scene.getPokemonById(this.sourceId!) ?? undefined) // TODO: is that bang correct? + sourcePokemonName: getPokemonNameWithAffix(globalScene.getPokemonById(this.sourceId!) ?? undefined) // TODO: is that bang correct? }) ); - pokemon.scene.unshiftPhase(new CommonAnimPhase(pokemon.scene, pokemon.getBattlerIndex(), undefined, CommonAnim.ATTRACT)); + globalScene.unshiftPhase(new CommonAnimPhase(pokemon.getBattlerIndex(), undefined, CommonAnim.ATTRACT)); if (pokemon.randSeedInt(2)) { - pokemon.scene.queueMessage(i18next.t("battlerTags:infatuatedLapseImmobilize", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); - (pokemon.scene.getCurrentPhase() as MovePhase).cancel(); + globalScene.queueMessage(i18next.t("battlerTags:infatuatedLapseImmobilize", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); + (globalScene.getCurrentPhase() as MovePhase).cancel(); } } @@ -787,7 +789,7 @@ export class InfatuatedTag extends BattlerTag { onRemove(pokemon: Pokemon): void { super.onRemove(pokemon); - pokemon.scene.queueMessage(i18next.t("battlerTags:infatuatedOnRemove", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); + globalScene.queueMessage(i18next.t("battlerTags:infatuatedOnRemove", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); } isSourceLinked(): boolean { @@ -822,8 +824,8 @@ export class SeedTag extends BattlerTag { onAdd(pokemon: Pokemon): void { super.onAdd(pokemon); - pokemon.scene.queueMessage(i18next.t("battlerTags:seededOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); - this.sourceIndex = pokemon.scene.getPokemonById(this.sourceId!)!.getBattlerIndex(); // TODO: are those bangs correct? + globalScene.queueMessage(i18next.t("battlerTags:seededOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); + this.sourceIndex = globalScene.getPokemonById(this.sourceId!)!.getBattlerIndex(); // TODO: are those bangs correct? } lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { @@ -836,11 +838,11 @@ export class SeedTag extends BattlerTag { applyAbAttrs(BlockNonDirectDamageAbAttr, pokemon, cancelled); if (!cancelled.value) { - pokemon.scene.unshiftPhase(new CommonAnimPhase(pokemon.scene, source.getBattlerIndex(), pokemon.getBattlerIndex(), CommonAnim.LEECH_SEED)); + globalScene.unshiftPhase(new CommonAnimPhase(source.getBattlerIndex(), pokemon.getBattlerIndex(), CommonAnim.LEECH_SEED)); const damage = pokemon.damageAndUpdate(toDmgValue(pokemon.getMaxHp() / 8)); const reverseDrain = pokemon.hasAbilityWithAttr(ReverseDrainAbAttr, false); - pokemon.scene.unshiftPhase(new PokemonHealPhase(pokemon.scene, source.getBattlerIndex(), + globalScene.unshiftPhase(new PokemonHealPhase(source.getBattlerIndex(), !reverseDrain ? damage : damage * -1, !reverseDrain ? i18next.t("battlerTags:seededLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) }) : i18next.t("battlerTags:seededLapseShed", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) }), false, true)); @@ -870,7 +872,7 @@ export class PowderTag extends BattlerTag { super.onAdd(pokemon); // "{Pokemon} is covered in powder!" - pokemon.scene.queueMessage(i18next.t("battlerTags:powderOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); + globalScene.queueMessage(i18next.t("battlerTags:powderOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); } /** @@ -882,15 +884,15 @@ export class PowderTag extends BattlerTag { */ lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { if (lapseType === BattlerTagLapseType.PRE_MOVE) { - const movePhase = pokemon.scene.getCurrentPhase(); + const movePhase = globalScene.getCurrentPhase(); if (movePhase instanceof MovePhase) { const move = movePhase.move.getMove(); - const weather = pokemon.scene.arena.weather; - if (pokemon.getMoveType(move) === Type.FIRE && !(weather && weather.weatherType === WeatherType.HEAVY_RAIN && !weather.isEffectSuppressed(pokemon.scene))) { + const weather = globalScene.arena.weather; + if (pokemon.getMoveType(move) === Type.FIRE && !(weather && weather.weatherType === WeatherType.HEAVY_RAIN && !weather.isEffectSuppressed())) { movePhase.fail(); movePhase.showMoveText(); - pokemon.scene.unshiftPhase(new CommonAnimPhase(pokemon.scene, pokemon.getBattlerIndex(), pokemon.getBattlerIndex(), CommonAnim.POWDER)); + globalScene.unshiftPhase(new CommonAnimPhase(pokemon.getBattlerIndex(), pokemon.getBattlerIndex(), CommonAnim.POWDER)); const cancelDamage = new BooleanHolder(false); applyAbAttrs(BlockNonDirectDamageAbAttr, pokemon, cancelDamage); @@ -899,7 +901,7 @@ export class PowderTag extends BattlerTag { } // "When the flame touched the powder\non the Pokémon, it exploded!" - pokemon.scene.queueMessage(i18next.t("battlerTags:powderLapse", { moveName: move.name })); + globalScene.queueMessage(i18next.t("battlerTags:powderLapse", { moveName: move.name })); } } return true; @@ -917,21 +919,21 @@ export class NightmareTag extends BattlerTag { onAdd(pokemon: Pokemon): void { super.onAdd(pokemon); - pokemon.scene.queueMessage(i18next.t("battlerTags:nightmareOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); + globalScene.queueMessage(i18next.t("battlerTags:nightmareOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); } onOverlap(pokemon: Pokemon): void { super.onOverlap(pokemon); - pokemon.scene.queueMessage(i18next.t("battlerTags:nightmareOnOverlap", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); + globalScene.queueMessage(i18next.t("battlerTags:nightmareOnOverlap", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); } lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { const ret = lapseType !== BattlerTagLapseType.CUSTOM || super.lapse(pokemon, lapseType); if (ret) { - pokemon.scene.queueMessage(i18next.t("battlerTags:nightmareLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); - pokemon.scene.unshiftPhase(new CommonAnimPhase(pokemon.scene, pokemon.getBattlerIndex(), undefined, CommonAnim.CURSE)); // TODO: Update animation type + globalScene.queueMessage(i18next.t("battlerTags:nightmareLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); + globalScene.unshiftPhase(new CommonAnimPhase(pokemon.getBattlerIndex(), undefined, CommonAnim.CURSE)); // TODO: Update animation type const cancelled = new BooleanHolder(false); applyAbAttrs(BlockNonDirectDamageAbAttr, pokemon, cancelled); @@ -1014,15 +1016,15 @@ export class EncoreTag extends MoveRestrictionBattlerTag { onAdd(pokemon: Pokemon): void { super.onRemove(pokemon); - pokemon.scene.queueMessage(i18next.t("battlerTags:encoreOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); + globalScene.queueMessage(i18next.t("battlerTags:encoreOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); - const movePhase = pokemon.scene.findPhase(m => m instanceof MovePhase && m.pokemon === pokemon); + const movePhase = globalScene.findPhase(m => m instanceof MovePhase && m.pokemon === pokemon); if (movePhase) { const movesetMove = pokemon.getMoveset().find(m => m!.moveId === this.moveId); // TODO: is this bang correct? if (movesetMove) { const lastMove = pokemon.getLastXMoves(1)[0]; - pokemon.scene.tryReplacePhase((m => m instanceof MovePhase && m.pokemon === pokemon), - new MovePhase(pokemon.scene, pokemon, lastMove.targets!, movesetMove)); // TODO: is this bang correct? + globalScene.tryReplacePhase((m => m instanceof MovePhase && m.pokemon === pokemon), + new MovePhase(pokemon, lastMove.targets!, movesetMove)); // TODO: is this bang correct? } } } @@ -1063,7 +1065,7 @@ export class EncoreTag extends MoveRestrictionBattlerTag { onRemove(pokemon: Pokemon): void { super.onRemove(pokemon); - pokemon.scene.queueMessage(i18next.t("battlerTags:encoreOnRemove", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); + globalScene.queueMessage(i18next.t("battlerTags:encoreOnRemove", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); } } @@ -1073,9 +1075,9 @@ export class HelpingHandTag extends BattlerTag { } onAdd(pokemon: Pokemon): void { - pokemon.scene.queueMessage( + globalScene.queueMessage( i18next.t("battlerTags:helpingHandOnAdd", { - pokemonNameWithAffix: getPokemonNameWithAffix(pokemon.scene.getPokemonById(this.sourceId!) ?? undefined), // TODO: is that bang correct? + pokemonNameWithAffix: getPokemonNameWithAffix(globalScene.getPokemonById(this.sourceId!) ?? undefined), // TODO: is that bang correct? pokemonName: getPokemonNameWithAffix(pokemon) }) ); @@ -1106,9 +1108,8 @@ export class IngrainTag extends TrappedTag { const ret = lapseType !== BattlerTagLapseType.CUSTOM || super.lapse(pokemon, lapseType); if (ret) { - pokemon.scene.unshiftPhase( + globalScene.unshiftPhase( new PokemonHealPhase( - pokemon.scene, pokemon.getBattlerIndex(), toDmgValue(pokemon.getMaxHp() / 16), i18next.t("battlerTags:ingrainLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) }), @@ -1142,7 +1143,7 @@ export class OctolockTag extends TrappedTag { const shouldLapse = lapseType !== BattlerTagLapseType.CUSTOM || super.lapse(pokemon, lapseType); if (shouldLapse) { - pokemon.scene.unshiftPhase(new StatStageChangePhase(pokemon.scene, pokemon.getBattlerIndex(), false, [ Stat.DEF, Stat.SPDEF ], -1)); + globalScene.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), false, [ Stat.DEF, Stat.SPDEF ], -1)); return true; } @@ -1158,16 +1159,15 @@ export class AquaRingTag extends BattlerTag { onAdd(pokemon: Pokemon): void { super.onAdd(pokemon); - pokemon.scene.queueMessage(i18next.t("battlerTags:aquaRingOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); + globalScene.queueMessage(i18next.t("battlerTags:aquaRingOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); } lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { const ret = lapseType !== BattlerTagLapseType.CUSTOM || super.lapse(pokemon, lapseType); if (ret) { - pokemon.scene.unshiftPhase( + globalScene.unshiftPhase( new PokemonHealPhase( - pokemon.scene, pokemon.getBattlerIndex(), toDmgValue(pokemon.getMaxHp() / 16), i18next.t("battlerTags:aquaRingLapse", { @@ -1206,13 +1206,13 @@ export class DrowsyTag extends BattlerTag { } canAdd(pokemon: Pokemon): boolean { - return pokemon.scene.arena.terrain?.terrainType !== TerrainType.ELECTRIC || !pokemon.isGrounded(); + return globalScene.arena.terrain?.terrainType !== TerrainType.ELECTRIC || !pokemon.isGrounded(); } onAdd(pokemon: Pokemon): void { super.onAdd(pokemon); - pokemon.scene.queueMessage(i18next.t("battlerTags:drowsyOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); + globalScene.queueMessage(i18next.t("battlerTags:drowsyOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); } lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { @@ -1255,13 +1255,13 @@ export abstract class DamagingTrapTag extends TrappedTag { const ret = super.lapse(pokemon, lapseType); if (ret) { - pokemon.scene.queueMessage( + globalScene.queueMessage( i18next.t("battlerTags:damagingTrapLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), moveName: this.getMoveName() }) ); - pokemon.scene.unshiftPhase(new CommonAnimPhase(pokemon.scene, pokemon.getBattlerIndex(), undefined, this.commonAnim)); + globalScene.unshiftPhase(new CommonAnimPhase(pokemon.getBattlerIndex(), undefined, this.commonAnim)); const cancelled = new BooleanHolder(false); applyAbAttrs(BlockNonDirectDamageAbAttr, pokemon, cancelled); @@ -1283,7 +1283,7 @@ export class BindTag extends DamagingTrapTag { getTrapMessage(pokemon: Pokemon): string { return i18next.t("battlerTags:bindOnTrap", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), - sourcePokemonName: getPokemonNameWithAffix(pokemon.scene.getPokemonById(this.sourceId!) ?? undefined), // TODO: is that bang correct? + sourcePokemonName: getPokemonNameWithAffix(globalScene.getPokemonById(this.sourceId!) ?? undefined), // TODO: is that bang correct? moveName: this.getMoveName() }); } @@ -1297,7 +1297,7 @@ export class WrapTag extends DamagingTrapTag { getTrapMessage(pokemon: Pokemon): string { return i18next.t("battlerTags:wrapOnTrap", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), - sourcePokemonName: getPokemonNameWithAffix(pokemon.scene.getPokemonById(this.sourceId!) ?? undefined), // TODO: is that bang correct? + sourcePokemonName: getPokemonNameWithAffix(globalScene.getPokemonById(this.sourceId!) ?? undefined), // TODO: is that bang correct? }); } } @@ -1331,7 +1331,7 @@ export class ClampTag extends DamagingTrapTag { getTrapMessage(pokemon: Pokemon): string { return i18next.t("battlerTags:clampOnTrap", { - sourcePokemonNameWithAffix: getPokemonNameWithAffix(pokemon.scene.getPokemonById(this.sourceId!) ?? undefined), // TODO: is that bang correct? + sourcePokemonNameWithAffix: getPokemonNameWithAffix(globalScene.getPokemonById(this.sourceId!) ?? undefined), // TODO: is that bang correct? pokemonName: getPokemonNameWithAffix(pokemon), }); } @@ -1378,7 +1378,7 @@ export class ThunderCageTag extends DamagingTrapTag { getTrapMessage(pokemon: Pokemon): string { return i18next.t("battlerTags:thunderCageOnTrap", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), - sourcePokemonNameWithAffix: getPokemonNameWithAffix(pokemon.scene.getPokemonById(this.sourceId!) ?? undefined), // TODO: is that bang correct? + sourcePokemonNameWithAffix: getPokemonNameWithAffix(globalScene.getPokemonById(this.sourceId!) ?? undefined), // TODO: is that bang correct? }); } } @@ -1391,7 +1391,7 @@ export class InfestationTag extends DamagingTrapTag { getTrapMessage(pokemon: Pokemon): string { return i18next.t("battlerTags:infestationOnTrap", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), - sourcePokemonNameWithAffix: getPokemonNameWithAffix(pokemon.scene.getPokemonById(this.sourceId!) ?? undefined), // TODO: is that bang correct? + sourcePokemonNameWithAffix: getPokemonNameWithAffix(globalScene.getPokemonById(this.sourceId!) ?? undefined), // TODO: is that bang correct? }); } } @@ -1405,16 +1405,16 @@ export class ProtectedTag extends BattlerTag { onAdd(pokemon: Pokemon): void { super.onAdd(pokemon); - pokemon.scene.queueMessage(i18next.t("battlerTags:protectedOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); + globalScene.queueMessage(i18next.t("battlerTags:protectedOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); } lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { if (lapseType === BattlerTagLapseType.CUSTOM) { - new CommonBattleAnim(CommonAnim.PROTECT, pokemon).play(pokemon.scene); - pokemon.scene.queueMessage(i18next.t("battlerTags:protectedLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); + new CommonBattleAnim(CommonAnim.PROTECT, pokemon).play(); + globalScene.queueMessage(i18next.t("battlerTags:protectedLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); // Stop multi-hit moves early - const effectPhase = pokemon.scene.getCurrentPhase(); + const effectPhase = globalScene.getCurrentPhase(); if (effectPhase instanceof MoveEffectPhase) { effectPhase.stopMultiHit(pokemon); } @@ -1454,7 +1454,7 @@ export class ContactDamageProtectedTag extends ProtectedTag { const ret = super.lapse(pokemon, lapseType); if (lapseType === BattlerTagLapseType.CUSTOM) { - const effectPhase = pokemon.scene.getCurrentPhase(); + const effectPhase = globalScene.getCurrentPhase(); if (effectPhase instanceof MoveEffectPhase && effectPhase.move.getMove().hasFlag(MoveFlags.MAKES_CONTACT)) { const attacker = effectPhase.getPokemon(); if (!attacker.hasAbilityWithAttr(BlockNonDirectDamageAbAttr)) { @@ -1496,10 +1496,10 @@ export class ContactStatStageChangeProtectedTag extends DamageProtectedTag { const ret = super.lapse(pokemon, lapseType); if (lapseType === BattlerTagLapseType.CUSTOM) { - const effectPhase = pokemon.scene.getCurrentPhase(); + const effectPhase = globalScene.getCurrentPhase(); if (effectPhase instanceof MoveEffectPhase && effectPhase.move.getMove().hasFlag(MoveFlags.MAKES_CONTACT)) { const attacker = effectPhase.getPokemon(); - pokemon.scene.unshiftPhase(new StatStageChangePhase(pokemon.scene, attacker.getBattlerIndex(), false, [ this.stat ], this.levels)); + globalScene.unshiftPhase(new StatStageChangePhase(attacker.getBattlerIndex(), false, [ this.stat ], this.levels)); } } @@ -1516,7 +1516,7 @@ export class ContactPoisonProtectedTag extends ProtectedTag { const ret = super.lapse(pokemon, lapseType); if (lapseType === BattlerTagLapseType.CUSTOM) { - const effectPhase = pokemon.scene.getCurrentPhase(); + const effectPhase = globalScene.getCurrentPhase(); if (effectPhase instanceof MoveEffectPhase && effectPhase.move.getMove().hasFlag(MoveFlags.MAKES_CONTACT)) { const attacker = effectPhase.getPokemon(); attacker.trySetStatus(StatusEffect.POISON, true, pokemon); @@ -1540,7 +1540,7 @@ export class ContactBurnProtectedTag extends DamageProtectedTag { const ret = super.lapse(pokemon, lapseType); if (lapseType === BattlerTagLapseType.CUSTOM) { - const effectPhase = pokemon.scene.getCurrentPhase(); + const effectPhase = globalScene.getCurrentPhase(); if (effectPhase instanceof MoveEffectPhase && effectPhase.move.getMove().hasFlag(MoveFlags.MAKES_CONTACT)) { const attacker = effectPhase.getPokemon(); attacker.trySetStatus(StatusEffect.BURN, true); @@ -1564,12 +1564,12 @@ export class EnduringTag extends BattlerTag { onAdd(pokemon: Pokemon): void { super.onAdd(pokemon); - pokemon.scene.queueMessage(i18next.t("battlerTags:enduringOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); + globalScene.queueMessage(i18next.t("battlerTags:enduringOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); } lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { if (lapseType === BattlerTagLapseType.CUSTOM) { - pokemon.scene.queueMessage(i18next.t("battlerTags:enduringLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); + globalScene.queueMessage(i18next.t("battlerTags:enduringLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); return true; } @@ -1584,7 +1584,7 @@ export class SturdyTag extends BattlerTag { lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { if (lapseType === BattlerTagLapseType.CUSTOM) { - pokemon.scene.queueMessage(i18next.t("battlerTags:sturdyLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); + globalScene.queueMessage(i18next.t("battlerTags:sturdyLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); return true; } @@ -1605,7 +1605,7 @@ export class PerishSongTag extends BattlerTag { const ret = super.lapse(pokemon, lapseType); if (ret) { - pokemon.scene.queueMessage( + globalScene.queueMessage( i18next.t("battlerTags:perishSongLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), turnCount: this.turnCount @@ -1634,7 +1634,7 @@ export class CenterOfAttentionTag extends BattlerTag { /** "Center of Attention" can't be added if an ally is already the Center of Attention. */ canAdd(pokemon: Pokemon): boolean { - const activeTeam = pokemon.isPlayer() ? pokemon.scene.getPlayerField() : pokemon.scene.getEnemyField(); + const activeTeam = pokemon.isPlayer() ? globalScene.getPlayerField() : globalScene.getEnemyField(); return !activeTeam.find(p => p.getTag(BattlerTagType.CENTER_OF_ATTENTION)); } @@ -1642,7 +1642,7 @@ export class CenterOfAttentionTag extends BattlerTag { onAdd(pokemon: Pokemon): void { super.onAdd(pokemon); - pokemon.scene.queueMessage(i18next.t("battlerTags:centerOfAttentionOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); + globalScene.queueMessage(i18next.t("battlerTags:centerOfAttentionOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); } } @@ -1695,9 +1695,9 @@ export class TruantTag extends AbilityBattlerTag { const lastMove = pokemon.getLastXMoves().find(() => true); if (lastMove && lastMove.move !== Moves.NONE) { - (pokemon.scene.getCurrentPhase() as MovePhase).cancel(); - pokemon.scene.unshiftPhase(new ShowAbilityPhase(pokemon.scene, pokemon.id, passive)); - pokemon.scene.queueMessage(i18next.t("battlerTags:truantLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); + (globalScene.getCurrentPhase() as MovePhase).cancel(); + globalScene.unshiftPhase(new ShowAbilityPhase(pokemon.id, passive)); + globalScene.queueMessage(i18next.t("battlerTags:truantLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); } return true; @@ -1712,7 +1712,7 @@ export class SlowStartTag extends AbilityBattlerTag { onAdd(pokemon: Pokemon): void { super.onAdd(pokemon); - pokemon.scene.queueMessage(i18next.t("battlerTags:slowStartOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) }), null, false, null, true); + globalScene.queueMessage(i18next.t("battlerTags:slowStartOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) }), null, false, null, true); } lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { @@ -1726,7 +1726,7 @@ export class SlowStartTag extends AbilityBattlerTag { onRemove(pokemon: Pokemon): void { super.onRemove(pokemon); - pokemon.scene.queueMessage(i18next.t("battlerTags:slowStartOnRemove", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) }), null, false, null); + globalScene.queueMessage(i18next.t("battlerTags:slowStartOnRemove", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) }), null, false, null); } } @@ -1772,13 +1772,13 @@ export class HighestStatBoostTag extends AbilityBattlerTag { break; } - pokemon.scene.queueMessage(i18next.t("battlerTags:highestStatBoostOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), statName: i18next.t(getStatKey(highestStat)) }), null, false, null, true); + globalScene.queueMessage(i18next.t("battlerTags:highestStatBoostOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), statName: i18next.t(getStatKey(highestStat)) }), null, false, null, true); } onRemove(pokemon: Pokemon): void { super.onRemove(pokemon); - pokemon.scene.queueMessage(i18next.t("battlerTags:highestStatBoostOnRemove", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), abilityName: allAbilities[this.ability].name })); + globalScene.queueMessage(i18next.t("battlerTags:highestStatBoostOnRemove", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), abilityName: allAbilities[this.ability].name })); } } @@ -1831,7 +1831,7 @@ export class SemiInvulnerableTag extends BattlerTag { onRemove(pokemon: Pokemon): void { // Wait 2 frames before setting visible for battle animations that don't immediately show the sprite invisible - pokemon.scene.tweens.addCounter({ + globalScene.tweens.addCounter({ duration: getFrameMs(2), onComplete: () => pokemon.setVisible(true) }); @@ -1871,7 +1871,7 @@ export class FloatingTag extends TypeImmuneTag { super.onAdd(pokemon); if (this.sourceMove === Moves.MAGNET_RISE) { - pokemon.scene.queueMessage(i18next.t("battlerTags:magnetRisenOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); + globalScene.queueMessage(i18next.t("battlerTags:magnetRisenOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); } } @@ -1879,7 +1879,7 @@ export class FloatingTag extends TypeImmuneTag { onRemove(pokemon: Pokemon): void { super.onRemove(pokemon); if (this.sourceMove === Moves.MAGNET_RISE) { - pokemon.scene.queueMessage(i18next.t("battlerTags:magnetRisenOnRemove", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); + globalScene.queueMessage(i18next.t("battlerTags:magnetRisenOnRemove", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); } } } @@ -1921,7 +1921,7 @@ export class CritBoostTag extends BattlerTag { onAdd(pokemon: Pokemon): void { super.onAdd(pokemon); - pokemon.scene.queueMessage(i18next.t("battlerTags:critBoostOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); + globalScene.queueMessage(i18next.t("battlerTags:critBoostOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); } lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { @@ -1931,7 +1931,7 @@ export class CritBoostTag extends BattlerTag { onRemove(pokemon: Pokemon): void { super.onRemove(pokemon); - pokemon.scene.queueMessage(i18next.t("battlerTags:critBoostOnRemove", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); + globalScene.queueMessage(i18next.t("battlerTags:critBoostOnRemove", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); } } @@ -1973,15 +1973,15 @@ export class SaltCuredTag extends BattlerTag { onAdd(pokemon: Pokemon): void { super.onAdd(pokemon); - pokemon.scene.queueMessage(i18next.t("battlerTags:saltCuredOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); - this.sourceIndex = pokemon.scene.getPokemonById(this.sourceId!)!.getBattlerIndex(); // TODO: are those bangs correct? + globalScene.queueMessage(i18next.t("battlerTags:saltCuredOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); + this.sourceIndex = globalScene.getPokemonById(this.sourceId!)!.getBattlerIndex(); // TODO: are those bangs correct? } lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { const ret = lapseType !== BattlerTagLapseType.CUSTOM || super.lapse(pokemon, lapseType); if (ret) { - pokemon.scene.unshiftPhase(new CommonAnimPhase(pokemon.scene, pokemon.getBattlerIndex(), pokemon.getBattlerIndex(), CommonAnim.SALT_CURE)); + globalScene.unshiftPhase(new CommonAnimPhase(pokemon.getBattlerIndex(), pokemon.getBattlerIndex(), CommonAnim.SALT_CURE)); const cancelled = new BooleanHolder(false); applyAbAttrs(BlockNonDirectDamageAbAttr, pokemon, cancelled); @@ -1990,7 +1990,7 @@ export class SaltCuredTag extends BattlerTag { const pokemonSteelOrWater = pokemon.isOfType(Type.STEEL) || pokemon.isOfType(Type.WATER); pokemon.damageAndUpdate(toDmgValue(pokemonSteelOrWater ? pokemon.getMaxHp() / 4 : pokemon.getMaxHp() / 8)); - pokemon.scene.queueMessage( + globalScene.queueMessage( i18next.t("battlerTags:saltCuredLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), moveName: this.getMoveName() @@ -2021,21 +2021,21 @@ export class CursedTag extends BattlerTag { onAdd(pokemon: Pokemon): void { super.onAdd(pokemon); - this.sourceIndex = pokemon.scene.getPokemonById(this.sourceId!)!.getBattlerIndex(); // TODO: are those bangs correct? + this.sourceIndex = globalScene.getPokemonById(this.sourceId!)!.getBattlerIndex(); // TODO: are those bangs correct? } lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { const ret = lapseType !== BattlerTagLapseType.CUSTOM || super.lapse(pokemon, lapseType); if (ret) { - pokemon.scene.unshiftPhase(new CommonAnimPhase(pokemon.scene, pokemon.getBattlerIndex(), pokemon.getBattlerIndex(), CommonAnim.SALT_CURE)); + globalScene.unshiftPhase(new CommonAnimPhase(pokemon.getBattlerIndex(), pokemon.getBattlerIndex(), CommonAnim.SALT_CURE)); const cancelled = new BooleanHolder(false); applyAbAttrs(BlockNonDirectDamageAbAttr, pokemon, cancelled); if (!cancelled.value) { pokemon.damageAndUpdate(toDmgValue(pokemon.getMaxHp() / 4)); - pokemon.scene.queueMessage(i18next.t("battlerTags:cursedLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); + globalScene.queueMessage(i18next.t("battlerTags:cursedLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); } } @@ -2149,7 +2149,7 @@ export class FormBlockDamageTag extends BattlerTag { super.onAdd(pokemon); if (pokemon.formIndex !== 0) { - pokemon.scene.triggerPokemonFormChange(pokemon, SpeciesFormChangeManualTrigger); + globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeManualTrigger); } } @@ -2161,7 +2161,7 @@ export class FormBlockDamageTag extends BattlerTag { onRemove(pokemon: Pokemon): void { super.onRemove(pokemon); - pokemon.scene.triggerPokemonFormChange(pokemon, SpeciesFormChangeManualTrigger); + globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeManualTrigger); } } /** Provides the additional weather-based effects of the Ice Face ability */ @@ -2176,7 +2176,7 @@ export class IceFaceBlockDamageTag extends FormBlockDamageTag { * @returns {boolean} True if the tag can be added, false otherwise. */ canAdd(pokemon: Pokemon): boolean { - const weatherType = pokemon.scene.arena.weather?.weatherType; + const weatherType = globalScene.arena.weather?.weatherType; const isWeatherSnowOrHail = weatherType === WeatherType.HAIL || weatherType === WeatherType.SNOW; return super.canAdd(pokemon) || isWeatherSnowOrHail; @@ -2200,16 +2200,14 @@ export class CommandedTag extends BattlerTag { /** Caches the Tatsugiri's form key and sharply boosts the tagged Pokemon's stats */ override onAdd(pokemon: Pokemon): void { - this._tatsugiriFormKey = this.getSourcePokemon(pokemon.scene)?.getFormKey() ?? "curly"; - pokemon.scene.unshiftPhase(new StatStageChangePhase( - pokemon.scene, pokemon.getBattlerIndex(), true, [ Stat.ATK, Stat.DEF, Stat.SPATK, Stat.SPDEF, Stat.SPD ], 2 - )); + this._tatsugiriFormKey = this.getSourcePokemon()?.getFormKey() ?? "curly"; + globalScene.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, [ Stat.ATK, Stat.DEF, Stat.SPATK, Stat.SPDEF, Stat.SPD ], 2)); } /** Triggers an {@linkcode PokemonAnimType | animation} of the tagged Pokemon "spitting out" Tatsugiri */ override onRemove(pokemon: Pokemon): void { - if (this.getSourcePokemon(pokemon.scene)?.isActive(true)) { - pokemon.scene.triggerPokemonBattleAnim(pokemon, PokemonAnimType.COMMANDER_REMOVE); + if (this.getSourcePokemon()?.isActive(true)) { + globalScene.triggerPokemonBattleAnim(pokemon, PokemonAnimType.COMMANDER_REMOVE); } } @@ -2271,14 +2269,14 @@ export class StockpilingTag extends BattlerTag { if (this.stockpiledCount < 3) { this.stockpiledCount++; - pokemon.scene.queueMessage(i18next.t("battlerTags:stockpilingOnAdd", { + globalScene.queueMessage(i18next.t("battlerTags:stockpilingOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), stockpiledCount: this.stockpiledCount })); // Attempt to increase DEF and SPDEF by one stage, keeping track of successful changes. - pokemon.scene.unshiftPhase(new StatStageChangePhase( - pokemon.scene, pokemon.getBattlerIndex(), true, + globalScene.unshiftPhase(new StatStageChangePhase( + pokemon.getBattlerIndex(), true, [ Stat.SPDEF, Stat.DEF ], 1, true, false, true, this.onStatStagesChanged )); } @@ -2297,11 +2295,11 @@ export class StockpilingTag extends BattlerTag { const spDefChange = this.statChangeCounts[Stat.SPDEF]; if (defChange) { - pokemon.scene.unshiftPhase(new StatStageChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [ Stat.DEF ], -defChange, true, false, true)); + globalScene.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, [ Stat.DEF ], -defChange, true, false, true)); } if (spDefChange) { - pokemon.scene.unshiftPhase(new StatStageChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [ Stat.SPDEF ], -spDefChange, true, false, true)); + globalScene.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, [ Stat.SPDEF ], -spDefChange, true, false, true)); } } } @@ -2320,7 +2318,7 @@ export class GulpMissileTag extends BattlerTag { return true; } - const moveEffectPhase = pokemon.scene.getCurrentPhase(); + const moveEffectPhase = globalScene.getCurrentPhase(); if (moveEffectPhase instanceof MoveEffectPhase) { const attacker = moveEffectPhase.getUserPokemon(); @@ -2340,7 +2338,7 @@ export class GulpMissileTag extends BattlerTag { } if (this.tagType === BattlerTagType.GULP_MISSILE_ARROKUDA) { - pokemon.scene.unshiftPhase(new StatStageChangePhase(pokemon.scene, attacker.getBattlerIndex(), false, [ Stat.DEF ], -1)); + globalScene.unshiftPhase(new StatStageChangePhase(attacker.getBattlerIndex(), false, [ Stat.DEF ], -1)); } else { attacker.trySetStatus(StatusEffect.PARALYSIS, true, pokemon); } @@ -2363,12 +2361,12 @@ export class GulpMissileTag extends BattlerTag { onAdd(pokemon: Pokemon): void { super.onAdd(pokemon); - pokemon.scene.triggerPokemonFormChange(pokemon, SpeciesFormChangeManualTrigger); + globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeManualTrigger); } onRemove(pokemon: Pokemon): void { super.onRemove(pokemon); - pokemon.scene.triggerPokemonFormChange(pokemon, SpeciesFormChangeManualTrigger); + globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeManualTrigger); } } @@ -2476,7 +2474,7 @@ export class HealBlockTag extends MoveRestrictionBattlerTag { override onRemove(pokemon: Pokemon): void { super.onRemove(pokemon); - pokemon.scene.queueMessage(i18next.t("battle:battlerTagsHealBlockOnRemove", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) }), null, false, null); + globalScene.queueMessage(i18next.t("battle:battlerTagsHealBlockOnRemove", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) }), null, false, null); } } @@ -2499,7 +2497,7 @@ export class TarShotTag extends BattlerTag { } override onAdd(pokemon: Pokemon): void { - pokemon.scene.queueMessage(i18next.t("battlerTags:tarShotOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); + globalScene.queueMessage(i18next.t("battlerTags:tarShotOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); } } @@ -2514,7 +2512,7 @@ export class ElectrifiedTag extends BattlerTag { override onAdd(pokemon: Pokemon): void { // "{pokemonNameWithAffix}'s moves have been electrified!" - pokemon.scene.queueMessage(i18next.t("battlerTags:electrifiedOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); + globalScene.queueMessage(i18next.t("battlerTags:electrifiedOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); } } @@ -2536,7 +2534,7 @@ export class AutotomizedTag extends BattlerTag { onAdd(pokemon: Pokemon): void { const minWeight = 0.1; if (pokemon.getWeight() > minWeight) { - pokemon.scene.queueMessage(i18next.t("battlerTags:autotomizeOnAdd", { + globalScene.queueMessage(i18next.t("battlerTags:autotomizeOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); } @@ -2567,15 +2565,15 @@ export class SubstituteTag extends BattlerTag { /** Sets the Substitute's HP and queues an on-add battle animation that initializes the Substitute's sprite. */ onAdd(pokemon: Pokemon): void { - this.hp = Math.floor(pokemon.scene.getPokemonById(this.sourceId!)!.getMaxHp() / 4); + this.hp = Math.floor(globalScene.getPokemonById(this.sourceId!)!.getMaxHp() / 4); this.sourceInFocus = false; // Queue battle animation and message - pokemon.scene.triggerPokemonBattleAnim(pokemon, PokemonAnimType.SUBSTITUTE_ADD); + globalScene.triggerPokemonBattleAnim(pokemon, PokemonAnimType.SUBSTITUTE_ADD); if (this.sourceMove === Moves.SHED_TAIL) { - pokemon.scene.queueMessage(i18next.t("battlerTags:shedTailOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) }), 1500); + globalScene.queueMessage(i18next.t("battlerTags:shedTailOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) }), 1500); } else { - pokemon.scene.queueMessage(i18next.t("battlerTags:substituteOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) }), 1500); + globalScene.queueMessage(i18next.t("battlerTags:substituteOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) }), 1500); } // Remove any binding effects from the user @@ -2586,11 +2584,11 @@ export class SubstituteTag extends BattlerTag { onRemove(pokemon: Pokemon): void { // Only play the animation if the cause of removal isn't from the source's own move if (!this.sourceInFocus) { - pokemon.scene.triggerPokemonBattleAnim(pokemon, PokemonAnimType.SUBSTITUTE_REMOVE, [ this.sprite ]); + globalScene.triggerPokemonBattleAnim(pokemon, PokemonAnimType.SUBSTITUTE_REMOVE, [ this.sprite ]); } else { this.sprite.destroy(); } - pokemon.scene.queueMessage(i18next.t("battlerTags:substituteOnRemove", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); + globalScene.queueMessage(i18next.t("battlerTags:substituteOnRemove", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); } lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { @@ -2610,19 +2608,19 @@ export class SubstituteTag extends BattlerTag { /** Triggers an animation that brings the Pokemon into focus before it uses a move */ onPreMove(pokemon: Pokemon): void { - pokemon.scene.triggerPokemonBattleAnim(pokemon, PokemonAnimType.SUBSTITUTE_PRE_MOVE, [ this.sprite ]); + globalScene.triggerPokemonBattleAnim(pokemon, PokemonAnimType.SUBSTITUTE_PRE_MOVE, [ this.sprite ]); this.sourceInFocus = true; } /** Triggers an animation that brings the Pokemon out of focus after it uses a move */ onAfterMove(pokemon: Pokemon): void { - pokemon.scene.triggerPokemonBattleAnim(pokemon, PokemonAnimType.SUBSTITUTE_POST_MOVE, [ this.sprite ]); + globalScene.triggerPokemonBattleAnim(pokemon, PokemonAnimType.SUBSTITUTE_POST_MOVE, [ this.sprite ]); this.sourceInFocus = false; } /** If the Substitute redirects damage, queue a message to indicate it. */ onHit(pokemon: Pokemon): void { - const moveEffectPhase = pokemon.scene.getCurrentPhase(); + const moveEffectPhase = globalScene.getCurrentPhase(); if (moveEffectPhase instanceof MoveEffectPhase) { const attacker = moveEffectPhase.getUserPokemon(); if (!attacker) { @@ -2632,7 +2630,7 @@ export class SubstituteTag extends BattlerTag { const firstHit = (attacker.turnData.hitCount === attacker.turnData.hitsLeft); if (firstHit && move.hitsSubstitute(attacker, pokemon)) { - pokemon.scene.queueMessage(i18next.t("battlerTags:substituteOnHit", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); + globalScene.queueMessage(i18next.t("battlerTags:substituteOnHit", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); } } } @@ -2704,7 +2702,7 @@ export class TormentTag extends MoveRestrictionBattlerTag { */ override onAdd(pokemon: Pokemon) { super.onAdd(pokemon); - pokemon.scene.queueMessage(i18next.t("battlerTags:tormentOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) }), 1500); + globalScene.queueMessage(i18next.t("battlerTags:tormentOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) }), 1500); } /** @@ -2758,7 +2756,7 @@ export class TauntTag extends MoveRestrictionBattlerTag { override onAdd(pokemon: Pokemon) { super.onAdd(pokemon); - pokemon.scene.queueMessage(i18next.t("battlerTags:tauntOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) }), 1500); + globalScene.queueMessage(i18next.t("battlerTags:tauntOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) }), 1500); } /** @@ -2796,7 +2794,7 @@ export class ImprisonTag extends MoveRestrictionBattlerTag { * @returns `true` if the source is still active */ public override lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { - const source = this.getSourcePokemon(pokemon.scene); + const source = this.getSourcePokemon(); if (source) { if (lapseType === BattlerTagLapseType.PRE_MOVE) { return super.lapse(pokemon, lapseType) && source.isActive(true); @@ -2814,7 +2812,7 @@ export class ImprisonTag extends MoveRestrictionBattlerTag { * @returns `false` if either condition is not met */ public override isMoveRestricted(move: Moves, user: Pokemon): boolean { - const source = this.getSourcePokemon(user.scene); + const source = this.getSourcePokemon(); if (source) { const sourceMoveset = source.getMoveset().map(m => m!.moveId); return sourceMoveset?.includes(move) && source.isActive(true); @@ -2847,7 +2845,7 @@ export class SyrupBombTag extends BattlerTag { */ override onAdd(pokemon: Pokemon) { super.onAdd(pokemon); - pokemon.scene.queueMessage(i18next.t("battlerTags:syrupBombOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); + globalScene.queueMessage(i18next.t("battlerTags:syrupBombOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); } /** @@ -2857,13 +2855,13 @@ export class SyrupBombTag extends BattlerTag { * @returns `true` if the `turnCount` is still greater than `0`; `false` if the `turnCount` is `0` or the target or source Pokemon has been removed from the field */ override lapse(pokemon: Pokemon, _lapseType: BattlerTagLapseType): boolean { - if (this.sourceId && !pokemon.scene.getPokemonById(this.sourceId)?.isActive(true)) { + if (this.sourceId && !globalScene.getPokemonById(this.sourceId)?.isActive(true)) { return false; } // Custom message in lieu of an animation in mainline - pokemon.scene.queueMessage(i18next.t("battlerTags:syrupBombLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); - pokemon.scene.unshiftPhase(new StatStageChangePhase( - pokemon.scene, pokemon.getBattlerIndex(), true, + globalScene.queueMessage(i18next.t("battlerTags:syrupBombLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); + globalScene.unshiftPhase(new StatStageChangePhase( + pokemon.getBattlerIndex(), true, [ Stat.SPD ], -1, true, false, true )); return --this.turnCount > 0; @@ -2882,7 +2880,7 @@ export class TelekinesisTag extends BattlerTag { } override onAdd(pokemon: Pokemon) { - pokemon.scene.queueMessage(i18next.t("battlerTags:telekinesisOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); + globalScene.queueMessage(i18next.t("battlerTags:telekinesisOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); } } @@ -2897,12 +2895,12 @@ export class PowerTrickTag extends BattlerTag { onAdd(pokemon: Pokemon): void { this.swapStat(pokemon); - pokemon.scene.queueMessage(i18next.t("battlerTags:powerTrickActive", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); + globalScene.queueMessage(i18next.t("battlerTags:powerTrickActive", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); } onRemove(pokemon: Pokemon): void { this.swapStat(pokemon); - pokemon.scene.queueMessage(i18next.t("battlerTags:powerTrickActive", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); + globalScene.queueMessage(i18next.t("battlerTags:powerTrickActive", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); } /** @@ -2936,7 +2934,7 @@ export class GrudgeTag extends BattlerTag { onAdd(pokemon: Pokemon) { super.onAdd(pokemon); - pokemon.scene.queueMessage(i18next.t("battlerTags:grudgeOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); + globalScene.queueMessage(i18next.t("battlerTags:grudgeOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); } /** @@ -2953,7 +2951,7 @@ export class GrudgeTag extends BattlerTag { const lastMoveData = sourcePokemon.getMoveset().find(m => m?.moveId === lastMove.move); if (lastMoveData && lastMove.move !== Moves.STRUGGLE) { lastMoveData.ppUsed = lastMoveData.getMovePp(); - pokemon.scene.queueMessage(i18next.t("battlerTags:grudgeLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), moveName: lastMoveData.getName() })); + globalScene.queueMessage(i18next.t("battlerTags:grudgeLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), moveName: lastMoveData.getName() })); } } return false; @@ -2977,7 +2975,7 @@ export class PsychoShiftTag extends BattlerTag { */ override lapse(pokemon: Pokemon, _lapseType: BattlerTagLapseType): boolean { if (pokemon.status && pokemon.isActive(true)) { - pokemon.scene.queueMessage(getStatusEffectHealText(pokemon.status.effect, getPokemonNameWithAffix(pokemon))); + globalScene.queueMessage(getStatusEffectHealText(pokemon.status.effect, getPokemonNameWithAffix(pokemon))); pokemon.resetStatus(); pokemon.updateInfo(); } @@ -3199,7 +3197,7 @@ export function loadBattlerTag(source: BattlerTag | any): BattlerTag { * corresponding {@linkcode Move} and user {@linkcode Pokemon} */ function getMoveEffectPhaseData(pokemon: Pokemon): {phase: MoveEffectPhase, attacker: Pokemon, move: Move} | null { - const phase = pokemon.scene.getCurrentPhase(); + const phase = globalScene.getCurrentPhase(); if (phase instanceof MoveEffectPhase) { return { phase : phase, diff --git a/src/data/berry.ts b/src/data/berry.ts index dfd6a7ddcf0..06f52b2f38b 100644 --- a/src/data/berry.ts +++ b/src/data/berry.ts @@ -1,5 +1,6 @@ import { getPokemonNameWithAffix } from "../messages"; -import Pokemon, { HitResult } from "../field/pokemon"; +import type Pokemon from "../field/pokemon"; +import { HitResult } from "../field/pokemon"; import { getStatusEffectHealText } from "./status-effect"; import * as Utils from "../utils"; import { DoubleBerryEffectAbAttr, PostItemLostAbAttr, ReduceBerryUseThresholdAbAttr, applyAbAttrs, applyPostItemLostAbAttrs } from "./ability"; @@ -9,6 +10,7 @@ import { BerryType } from "#enums/berry-type"; import { Stat, type BattleStat } from "#app/enums/stat"; import { PokemonHealPhase } from "#app/phases/pokemon-heal-phase"; import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; +import { globalScene } from "#app/global-scene"; export function getBerryName(berryType: BerryType): string { return i18next.t(`berry:${BerryType[berryType]}.name`); @@ -73,7 +75,7 @@ export function getBerryEffectFunc(berryType: BerryType): BerryEffectFunc { } const hpHealed = new Utils.NumberHolder(Utils.toDmgValue(pokemon.getMaxHp() / 4)); applyAbAttrs(DoubleBerryEffectAbAttr, pokemon, null, false, hpHealed); - pokemon.scene.unshiftPhase(new PokemonHealPhase(pokemon.scene, pokemon.getBattlerIndex(), + globalScene.unshiftPhase(new PokemonHealPhase(pokemon.getBattlerIndex(), hpHealed.value, i18next.t("battle:hpHealBerry", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), berryName: getBerryName(berryType) }), true)); applyPostItemLostAbAttrs(PostItemLostAbAttr, berryOwner ?? pokemon, false); }; @@ -83,7 +85,7 @@ export function getBerryEffectFunc(berryType: BerryType): BerryEffectFunc { pokemon.battleData.berriesEaten.push(berryType); } if (pokemon.status) { - pokemon.scene.queueMessage(getStatusEffectHealText(pokemon.status.effect, getPokemonNameWithAffix(pokemon))); + globalScene.queueMessage(getStatusEffectHealText(pokemon.status.effect, getPokemonNameWithAffix(pokemon))); } pokemon.resetStatus(true, true); pokemon.updateInfo(); @@ -102,7 +104,7 @@ export function getBerryEffectFunc(berryType: BerryType): BerryEffectFunc { const stat: BattleStat = berryType - BerryType.ENIGMA; const statStages = new Utils.NumberHolder(1); applyAbAttrs(DoubleBerryEffectAbAttr, pokemon, null, false, statStages); - pokemon.scene.unshiftPhase(new StatStageChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [ stat ], statStages.value)); + globalScene.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, [ stat ], statStages.value)); applyPostItemLostAbAttrs(PostItemLostAbAttr, berryOwner ?? pokemon, false); }; case BerryType.LANSAT: @@ -121,7 +123,7 @@ export function getBerryEffectFunc(berryType: BerryType): BerryEffectFunc { const randStat = Utils.randSeedInt(Stat.SPD, Stat.ATK); const stages = new Utils.NumberHolder(2); applyAbAttrs(DoubleBerryEffectAbAttr, pokemon, null, false, stages); - pokemon.scene.unshiftPhase(new StatStageChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [ randStat ], stages.value)); + globalScene.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, [ randStat ], stages.value)); applyPostItemLostAbAttrs(PostItemLostAbAttr, berryOwner ?? pokemon, false); }; case BerryType.LEPPA: @@ -132,7 +134,7 @@ export function getBerryEffectFunc(berryType: BerryType): BerryEffectFunc { const ppRestoreMove = pokemon.getMoveset().find(m => !m?.getPpRatio()) ? pokemon.getMoveset().find(m => !m?.getPpRatio()) : pokemon.getMoveset().find(m => m!.getPpRatio() < 1); // TODO: is this bang correct? if (ppRestoreMove !== undefined) { ppRestoreMove!.ppUsed = Math.max(ppRestoreMove!.ppUsed - 10, 0); - pokemon.scene.queueMessage(i18next.t("battle:ppHealBerry", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), moveName: ppRestoreMove!.getName(), berryName: getBerryName(berryType) })); + globalScene.queueMessage(i18next.t("battle:ppHealBerry", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), moveName: ppRestoreMove!.getName(), berryName: getBerryName(berryType) })); applyPostItemLostAbAttrs(PostItemLostAbAttr, berryOwner ?? pokemon, false); } }; diff --git a/src/data/challenge.ts b/src/data/challenge.ts index 4301ea7b375..b5eca55cb71 100644 --- a/src/data/challenge.ts +++ b/src/data/challenge.ts @@ -1,18 +1,22 @@ import * as Utils from "#app/utils"; import i18next from "i18next"; -import { defaultStarterSpecies, DexAttrProps, GameData } from "#app/system/game-data"; -import PokemonSpecies, { getPokemonSpecies, getPokemonSpeciesForm } from "#app/data/pokemon-species"; +import type { DexAttrProps, GameData } from "#app/system/game-data"; +import { defaultStarterSpecies } from "#app/system/game-data"; +import type PokemonSpecies from "#app/data/pokemon-species"; +import { getPokemonSpecies, getPokemonSpeciesForm } from "#app/data/pokemon-species"; import { speciesStarterCosts } from "#app/data/balance/starters"; -import Pokemon, { PokemonMove } from "#app/field/pokemon"; -import { BattleType, FixedBattleConfig } from "#app/battle"; +import type Pokemon from "#app/field/pokemon"; +import { PokemonMove } from "#app/field/pokemon"; +import type { FixedBattleConfig } from "#app/battle"; +import { BattleType } from "#app/battle"; import Trainer, { TrainerVariant } from "#app/field/trainer"; -import { GameMode } from "#app/game-mode"; +import type { GameMode } from "#app/game-mode"; import { Type } from "#enums/type"; import { Challenges } from "#enums/challenges"; import { Species } from "#enums/species"; import { TrainerType } from "#enums/trainer-type"; import { Nature } from "#enums/nature"; -import { Moves } from "#enums/moves"; +import type { Moves } from "#enums/moves"; import { TypeColor, TypeShadow } from "#enums/color"; import { pokemonEvolutions } from "#app/data/balance/pokemon-evolutions"; import { pokemonFormChanges } from "#app/data/pokemon-forms"; @@ -467,7 +471,7 @@ export class SingleGenerationChallenge extends Challenge { if (trainerTypes.length === 0) { return false; } else { - battleConfig.setBattleType(BattleType.TRAINER).setGetTrainerFunc(scene => new Trainer(scene, trainerTypes[this.value - 1], TrainerVariant.DEFAULT)); + battleConfig.setBattleType(BattleType.TRAINER).setGetTrainerFunc(() => new Trainer(trainerTypes[this.value - 1], TrainerVariant.DEFAULT)); return true; } } diff --git a/src/data/custom-pokemon-data.ts b/src/data/custom-pokemon-data.ts index 7bc884cff50..1c3bbbc3180 100644 --- a/src/data/custom-pokemon-data.ts +++ b/src/data/custom-pokemon-data.ts @@ -1,7 +1,7 @@ -import { Abilities } from "#enums/abilities"; -import { Type } from "#enums/type"; +import type { Abilities } from "#enums/abilities"; +import type { Type } from "#enums/type"; import { isNullOrUndefined } from "#app/utils"; -import { Nature } from "#enums/nature"; +import type { Nature } from "#enums/nature"; /** * Data that can customize a Pokemon in non-standard ways from its Species diff --git a/src/data/daily-run.ts b/src/data/daily-run.ts index 506ea0471c6..b0ce38cebd2 100644 --- a/src/data/daily-run.ts +++ b/src/data/daily-run.ts @@ -1,10 +1,11 @@ import { PartyMemberStrength } from "#enums/party-member-strength"; -import { Species } from "#enums/species"; -import BattleScene from "#app/battle-scene"; +import type { Species } from "#enums/species"; +import { globalScene } from "#app/global-scene"; import { PlayerPokemon } from "#app/field/pokemon"; -import { Starter } from "#app/ui/starter-select-ui-handler"; +import type { Starter } from "#app/ui/starter-select-ui-handler"; import * as Utils from "#app/utils"; -import PokemonSpecies, { PokemonSpeciesForm, getPokemonSpecies, getPokemonSpeciesForm } from "#app/data/pokemon-species"; +import type { PokemonSpeciesForm } from "#app/data/pokemon-species"; +import PokemonSpecies, { getPokemonSpecies, getPokemonSpeciesForm } from "#app/data/pokemon-species"; import { speciesStarterCosts } from "#app/data/balance/starters"; import { pokerogueApi } from "#app/plugins/api/pokerogue-api"; @@ -21,17 +22,17 @@ export function fetchDailyRunSeed(): Promise { }); } -export function getDailyRunStarters(scene: BattleScene, seed: string): Starter[] { +export function getDailyRunStarters(seed: string): Starter[] { const starters: Starter[] = []; - scene.executeWithSeedOffset(() => { - const startingLevel = scene.gameMode.getStartingLevel(); + globalScene.executeWithSeedOffset(() => { + const startingLevel = globalScene.gameMode.getStartingLevel(); if (/\d{18}$/.test(seed)) { for (let s = 0; s < 3; s++) { const offset = 6 + s * 6; const starterSpeciesForm = getPokemonSpeciesForm(parseInt(seed.slice(offset, offset + 4)) as Species, parseInt(seed.slice(offset + 4, offset + 6))); - starters.push(getDailyRunStarter(scene, starterSpeciesForm, startingLevel)); + starters.push(getDailyRunStarter(starterSpeciesForm, startingLevel)); } return; } @@ -48,17 +49,17 @@ export function getDailyRunStarters(scene: BattleScene, seed: string): Starter[] .filter(s => speciesStarterCosts[s] === cost); const randPkmSpecies = getPokemonSpecies(Utils.randSeedItem(costSpecies)); const starterSpecies = getPokemonSpecies(randPkmSpecies.getTrainerSpeciesForLevel(startingLevel, true, PartyMemberStrength.STRONGER)); - starters.push(getDailyRunStarter(scene, starterSpecies, startingLevel)); + starters.push(getDailyRunStarter(starterSpecies, startingLevel)); } }, 0, seed); return starters; } -function getDailyRunStarter(scene: BattleScene, starterSpeciesForm: PokemonSpeciesForm, startingLevel: integer): Starter { +function getDailyRunStarter(starterSpeciesForm: PokemonSpeciesForm, startingLevel: integer): Starter { const starterSpecies = starterSpeciesForm instanceof PokemonSpecies ? starterSpeciesForm : getPokemonSpecies(starterSpeciesForm.speciesId); const formIndex = starterSpeciesForm instanceof PokemonSpecies ? undefined : starterSpeciesForm.formIndex; - const pokemon = new PlayerPokemon(scene, starterSpecies, startingLevel, undefined, formIndex, undefined, undefined, undefined, undefined, undefined, undefined); + const pokemon = new PlayerPokemon(starterSpecies, startingLevel, undefined, formIndex, undefined, undefined, undefined, undefined, undefined, undefined); const starter: Starter = { species: starterSpecies, dexAttr: pokemon.getDexAttr(), diff --git a/src/data/egg-hatch-data.ts b/src/data/egg-hatch-data.ts index ba553b55c4f..37ee9bede09 100644 --- a/src/data/egg-hatch-data.ts +++ b/src/data/egg-hatch-data.ts @@ -1,6 +1,6 @@ -import BattleScene from "#app/battle-scene"; -import { PlayerPokemon } from "#app/field/pokemon"; -import { DexEntry, StarterDataEntry } from "#app/system/game-data"; +import { globalScene } from "#app/global-scene"; +import type { PlayerPokemon } from "#app/field/pokemon"; +import type { DexEntry, StarterDataEntry } from "#app/system/game-data"; /** * Stores data associated with a specific egg and the hatched pokemon @@ -17,11 +17,8 @@ export class EggHatchData { public dexEntryBeforeUpdate: DexEntry; /** stored copy of the hatched pokemon's starter entry before it was updated due to hatch */ public starterDataEntryBeforeUpdate: StarterDataEntry; - /** reference to the battle scene to get gamedata and update dex */ - private scene: BattleScene; - constructor(scene: BattleScene, pokemon: PlayerPokemon, eggMoveIndex: number) { - this.scene = scene; + constructor(pokemon: PlayerPokemon, eggMoveIndex: number) { this.pokemon = pokemon; this.eggMoveIndex = eggMoveIndex; } @@ -39,8 +36,8 @@ export class EggHatchData { * Used before updating the dex, so comparing the pokemon to these entries will show the new attributes */ setDex() { - const currDexEntry = this.scene.gameData.dexData[this.pokemon.species.speciesId]; - const currStarterDataEntry = this.scene.gameData.starterData[this.pokemon.species.getRootSpeciesId()]; + const currDexEntry = globalScene.gameData.dexData[this.pokemon.species.speciesId]; + const currStarterDataEntry = globalScene.gameData.starterData[this.pokemon.species.getRootSpeciesId()]; this.dexEntryBeforeUpdate = { seenAttr: currDexEntry.seenAttr, caughtAttr: currDexEntry.caughtAttr, @@ -86,9 +83,9 @@ export class EggHatchData { */ updatePokemon(showMessage : boolean = false) { return new Promise(resolve => { - this.scene.gameData.setPokemonCaught(this.pokemon, true, true, showMessage).then(() => { - this.scene.gameData.updateSpeciesDexIvs(this.pokemon.species.speciesId, this.pokemon.ivs); - this.scene.gameData.setEggMoveUnlocked(this.pokemon.species, this.eggMoveIndex, showMessage).then((value) => { + globalScene.gameData.setPokemonCaught(this.pokemon, true, true, showMessage).then(() => { + globalScene.gameData.updateSpeciesDexIvs(this.pokemon.species.speciesId, this.pokemon.ivs); + globalScene.gameData.setEggMoveUnlocked(this.pokemon.species, this.eggMoveIndex, showMessage).then((value) => { this.setEggMoveUnlocked(value); resolve(); }); diff --git a/src/data/egg.ts b/src/data/egg.ts index 7f1deecc63f..2599994ecf6 100644 --- a/src/data/egg.ts +++ b/src/data/egg.ts @@ -1,11 +1,13 @@ -import BattleScene from "#app/battle-scene"; -import PokemonSpecies, { getPokemonSpecies } from "#app/data/pokemon-species"; +import type BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; +import type PokemonSpecies from "#app/data/pokemon-species"; +import { getPokemonSpecies } from "#app/data/pokemon-species"; import { speciesStarterCosts } from "#app/data/balance/starters"; import { VariantTier } from "#enums/variant-tier"; import * as Utils from "#app/utils"; import Overrides from "#app/overrides"; import { pokemonPrevolutions } from "#app/data/balance/pokemon-evolutions"; -import { PlayerPokemon } from "#app/field/pokemon"; +import type { PlayerPokemon } from "#app/field/pokemon"; import i18next from "i18next"; import { EggTier } from "#enums/egg-type"; import { Species } from "#enums/species"; @@ -22,9 +24,8 @@ export interface IEggOptions { /** Timestamp when this egg got created */ timestamp?: number; /** - * Defines if the egg got pulled from a gacha or not. If true, egg pity and pull statistics will be applyed. + * Defines if the egg got pulled from a gacha or not. If true, egg pity and pull statistics will be applied. * Egg will be automaticly added to the game data. - * NEEDS `scene` `eggOption` to work. */ pulled?: boolean; /** @@ -32,7 +33,7 @@ export interface IEggOptions { * Will also define the text displayed in the egg list. */ sourceType?: EggSourceType; - /** Needs to be defined if `eggOption` pulled is defined or if no species or `isShiny` is defined since this will be needed to generate them. */ + /** Legacy field, kept for backwards-compatibility */ scene?: BattleScene; /** * Sets the tier of the egg. Only species of this tier can be hatched from this egg. @@ -41,10 +42,7 @@ export interface IEggOptions { tier?: EggTier; /** Sets how many waves it will take till this egg hatches. */ hatchWaves?: number; - /** - * Sets the exact species that will hatch from this egg. - * Needs `scene` `eggOption` if not provided. - */ + /** Sets the exact species that will hatch from this egg. */ species?: Species; /** Defines if the hatched pokemon will be a shiny. */ isShiny?: boolean; @@ -56,8 +54,7 @@ export interface IEggOptions { * Defines if the egg will hatch with the hidden ability of this species. * If no hidden ability exist, a random one will get choosen. */ - overrideHiddenAbility?: boolean, - + overrideHiddenAbility?: boolean; /** Can customize the message displayed for where the egg was obtained */ eggDescriptor?: string; } @@ -148,7 +145,7 @@ export class Egg { // If egg was pulled, check if egg pity needs to override the egg tier if (eggOptions?.pulled) { // Needs this._tier and this._sourceType to work - this.checkForPityTierOverrides(eggOptions.scene!); // TODO: is this bang correct? + this.checkForPityTierOverrides(); } this._id = eggOptions?.id ?? Utils.randInt(EGG_SEED, EGG_SEED * this._tier); @@ -160,7 +157,7 @@ export class Egg { // First roll shiny and variant so we can filter if species with an variant exist this._isShiny = eggOptions?.isShiny ?? (Overrides.EGG_SHINY_OVERRIDE || this.rollShiny()); this._variantTier = eggOptions?.variantTier ?? (Overrides.EGG_VARIANT_OVERRIDE ?? this.rollVariant()); - this._species = eggOptions?.species ?? this.rollSpecies(eggOptions!.scene!)!; // TODO: Are those bangs correct? + this._species = eggOptions?.species ?? this.rollSpecies()!; // TODO: Is this bang correct? this._overrideHiddenAbility = eggOptions?.overrideHiddenAbility ?? false; @@ -178,19 +175,15 @@ export class Egg { // Needs this._tier so it needs to be generated afer the tier override if bought from same species this._eggMoveIndex = eggOptions?.eggMoveIndex ?? this.rollEggMoveIndex(); if (eggOptions?.pulled) { - this.increasePullStatistic(eggOptions.scene!); // TODO: is this bang correct? - this.addEggToGameData(eggOptions.scene!); // TODO: is this bang correct? + this.increasePullStatistic(); + this.addEggToGameData(); } }; - if (eggOptions?.scene) { - const seedOverride = Utils.randomString(24); - eggOptions?.scene.executeWithSeedOffset(() => { - generateEggProperties(eggOptions); - }, 0, seedOverride); - } else { // For legacy eggs without scene + const seedOverride = Utils.randomString(24); + globalScene.executeWithSeedOffset(() => { generateEggProperties(eggOptions); - } + }, 0, seedOverride); this._eggDescriptor = eggOptions?.eggDescriptor; } @@ -212,14 +205,14 @@ export class Egg { } // Generates a PlayerPokemon from an egg - public generatePlayerPokemon(scene: BattleScene): PlayerPokemon { + public generatePlayerPokemon(): PlayerPokemon { let ret: PlayerPokemon; - const generatePlayerPokemonHelper = (scene: BattleScene) => { + const generatePlayerPokemonHelper = () => { // Legacy egg wants to hatch. Generate missing properties if (!this._species) { this._isShiny = this.rollShiny(); - this._species = this.rollSpecies(scene!)!; // TODO: are these bangs correct? + this._species = this.rollSpecies()!; // TODO: is this bang correct? } let pokemonSpecies = getPokemonSpecies(this._species); @@ -238,7 +231,7 @@ export class Egg { } // This function has way to many optional parameters - ret = scene.addPlayerPokemon(pokemonSpecies, 1, abilityIndex, undefined, undefined, false); + ret = globalScene.addPlayerPokemon(pokemonSpecies, 1, abilityIndex, undefined, undefined, false); ret.shiny = this._isShiny; ret.variant = this._variantTier; @@ -250,16 +243,16 @@ export class Egg { }; ret = ret!; // Tell TS compiler it's defined now - scene.executeWithSeedOffset(() => { - generatePlayerPokemonHelper(scene); + globalScene.executeWithSeedOffset(() => { + generatePlayerPokemonHelper(); }, this._id, EGG_SEED.toString()); return ret; } // Doesn't need to be called if the egg got pulled by a gacha machiene - public addEggToGameData(scene: BattleScene): void { - scene.gameData.eggs.push(this); + public addEggToGameData(): void { + globalScene.gameData.eggs.push(this); } public getEggDescriptor(): string { @@ -291,12 +284,12 @@ export class Egg { return i18next.t("egg:hatchWavesMessageLongTime"); } - public getEggTypeDescriptor(scene: BattleScene): string { + public getEggTypeDescriptor(): string { switch (this.sourceType) { case EggSourceType.SAME_SPECIES_EGG: return this._eggDescriptor ?? i18next.t("egg:sameSpeciesEgg", { species: getPokemonSpecies(this._species).getName() }); case EggSourceType.GACHA_LEGENDARY: - return this._eggDescriptor ?? `${i18next.t("egg:gachaTypeLegendary")} (${getPokemonSpecies(getLegendaryGachaSpeciesForTimestamp(scene, this.timestamp)).getName()})`; + return this._eggDescriptor ?? `${i18next.t("egg:gachaTypeLegendary")} (${getPokemonSpecies(getLegendaryGachaSpeciesForTimestamp(this.timestamp)).getName()})`; case EggSourceType.GACHA_SHINY: return this._eggDescriptor ?? i18next.t("egg:gachaTypeShiny"); case EggSourceType.GACHA_MOVE: @@ -356,8 +349,8 @@ export class Egg { return tierValue >= GACHA_DEFAULT_COMMON_EGG_THRESHOLD + tierValueOffset ? EggTier.COMMON : tierValue >= GACHA_DEFAULT_RARE_EGG_THRESHOLD + tierValueOffset ? EggTier.RARE : tierValue >= GACHA_DEFAULT_EPIC_EGG_THRESHOLD + tierValueOffset ? EggTier.EPIC : EggTier.LEGENDARY; } - private rollSpecies(scene: BattleScene): Species | null { - if (!scene) { + private rollSpecies(): Species | null { + if (!globalScene) { return null; } /** @@ -376,7 +369,7 @@ export class Egg { } else if (this.tier === EggTier.LEGENDARY && this._sourceType === EggSourceType.GACHA_LEGENDARY) { if (!Utils.randSeedInt(2)) { - return getLegendaryGachaSpeciesForTimestamp(scene, this.timestamp); + return getLegendaryGachaSpeciesForTimestamp(this.timestamp); } } @@ -410,8 +403,8 @@ export class Egg { .filter(s => !pokemonPrevolutions.hasOwnProperty(s) && getPokemonSpecies(s).isObtainable() && ignoredSpecies.indexOf(s) === -1); // If this is the 10th egg without unlocking something new, attempt to force it. - if (scene.gameData.unlockPity[this.tier] >= 9) { - const lockedPool = speciesPool.filter(s => !scene.gameData.dexData[s].caughtAttr && !scene.gameData.eggs.some(e => e.species === s)); + if (globalScene.gameData.unlockPity[this.tier] >= 9) { + const lockedPool = speciesPool.filter(s => !globalScene.gameData.dexData[s].caughtAttr && !globalScene.gameData.eggs.some(e => e.species === s)); if (lockedPool.length) { // Skip this if everything is unlocked speciesPool = lockedPool; } @@ -454,10 +447,10 @@ export class Egg { } species = species!; // tell TS compiled it's defined now! - if (!!scene.gameData.dexData[species].caughtAttr || scene.gameData.eggs.some(e => e.species === species)) { - scene.gameData.unlockPity[this.tier] = Math.min(scene.gameData.unlockPity[this.tier] + 1, 10); + if (globalScene.gameData.dexData[species].caughtAttr || globalScene.gameData.eggs.some(e => e.species === species)) { + globalScene.gameData.unlockPity[this.tier] = Math.min(globalScene.gameData.unlockPity[this.tier] + 1, 10); } else { - scene.gameData.unlockPity[this.tier] = 0; + globalScene.gameData.unlockPity[this.tier] = 0; } return species; @@ -465,7 +458,7 @@ export class Egg { /** * Rolls whether the egg is shiny or not. - * @returns True if the egg is shiny + * @returns `true` if the egg is shiny **/ private rollShiny(): boolean { let shinyChance = GACHA_DEFAULT_SHINY_RATE; @@ -485,6 +478,7 @@ export class Egg { // Uses the same logic as pokemon.generateVariant(). I would like to only have this logic in one // place but I don't want to touch the pokemon class. + // TODO: Remove this or replace the one in the Pokemon class. private rollVariant(): VariantTier { if (!this.isShiny) { return VariantTier.STANDARD; @@ -500,38 +494,38 @@ export class Egg { } } - private checkForPityTierOverrides(scene: BattleScene): void { + private checkForPityTierOverrides(): void { const tierValueOffset = this._sourceType === EggSourceType.GACHA_LEGENDARY ? GACHA_LEGENDARY_UP_THRESHOLD_OFFSET : 0; - scene.gameData.eggPity[EggTier.RARE] += 1; - scene.gameData.eggPity[EggTier.EPIC] += 1; - scene.gameData.eggPity[EggTier.LEGENDARY] += 1 + tierValueOffset; + globalScene.gameData.eggPity[EggTier.RARE] += 1; + globalScene.gameData.eggPity[EggTier.EPIC] += 1; + globalScene.gameData.eggPity[EggTier.LEGENDARY] += 1 + tierValueOffset; // These numbers are roughly the 80% mark. That is, 80% of the time you'll get an egg before this gets triggered. - if (scene.gameData.eggPity[EggTier.LEGENDARY] >= EGG_PITY_LEGENDARY_THRESHOLD && this._tier === EggTier.COMMON) { + if (globalScene.gameData.eggPity[EggTier.LEGENDARY] >= EGG_PITY_LEGENDARY_THRESHOLD && this._tier === EggTier.COMMON) { this._tier = EggTier.LEGENDARY; - } else if (scene.gameData.eggPity[EggTier.EPIC] >= EGG_PITY_EPIC_THRESHOLD && this._tier === EggTier.COMMON) { + } else if (globalScene.gameData.eggPity[EggTier.EPIC] >= EGG_PITY_EPIC_THRESHOLD && this._tier === EggTier.COMMON) { this._tier = EggTier.EPIC; - } else if (scene.gameData.eggPity[EggTier.RARE] >= EGG_PITY_RARE_THRESHOLD && this._tier === EggTier.COMMON) { + } else if (globalScene.gameData.eggPity[EggTier.RARE] >= EGG_PITY_RARE_THRESHOLD && this._tier === EggTier.COMMON) { this._tier = EggTier.RARE; } - scene.gameData.eggPity[this._tier] = 0; + globalScene.gameData.eggPity[this._tier] = 0; } - private increasePullStatistic(scene: BattleScene): void { - scene.gameData.gameStats.eggsPulled++; + private increasePullStatistic(): void { + globalScene.gameData.gameStats.eggsPulled++; if (this.isManaphyEgg()) { - scene.gameData.gameStats.manaphyEggsPulled++; + globalScene.gameData.gameStats.manaphyEggsPulled++; this._hatchWaves = this.getEggTierDefaultHatchWaves(EggTier.EPIC); return; } switch (this.tier) { case EggTier.RARE: - scene.gameData.gameStats.rareEggsPulled++; + globalScene.gameData.gameStats.rareEggsPulled++; break; case EggTier.EPIC: - scene.gameData.gameStats.epicEggsPulled++; + globalScene.gameData.gameStats.epicEggsPulled++; break; case EggTier.LEGENDARY: - scene.gameData.gameStats.legendaryEggsPulled++; + globalScene.gameData.gameStats.legendaryEggsPulled++; break; } } @@ -552,7 +546,7 @@ export function getValidLegendaryGachaSpecies() : Species[] { .filter(s => getPokemonSpecies(s).isObtainable() && s !== Species.ETERNATUS); } -export function getLegendaryGachaSpeciesForTimestamp(scene: BattleScene, timestamp: number): Species { +export function getLegendaryGachaSpeciesForTimestamp(timestamp: number): Species { const legendarySpecies = getValidLegendaryGachaSpecies(); let ret: Species; @@ -563,7 +557,7 @@ export function getLegendaryGachaSpeciesForTimestamp(scene: BattleScene, timesta const offset = Math.floor(Math.floor(dayTimestamp / 86400000) / legendarySpecies.length); // Cycle number const index = Math.floor(dayTimestamp / 86400000) % legendarySpecies.length; // Index within cycle - scene.executeWithSeedOffset(() => { + globalScene.executeWithSeedOffset(() => { ret = Phaser.Math.RND.shuffle(legendarySpecies)[index]; }, offset, EGG_SEED.toString()); ret = ret!; // tell TS compiler it's diff --git a/src/data/move.ts b/src/data/move.ts index 98fb58b2d73..b83b2d06394 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -1,22 +1,27 @@ import { ChargeAnim, initMoveAnim, loadMoveAnimAssets, MoveChargeAnim } from "./battle-anims"; import { CommandedTag, EncoreTag, GulpMissileTag, HelpingHandTag, SemiInvulnerableTag, ShellTrapTag, StockpilingTag, SubstituteTag, TrappedTag, TypeBoostTag } from "./battler-tags"; import { getPokemonNameWithAffix } from "../messages"; -import Pokemon, { AttackMoveResult, EnemyPokemon, HitResult, MoveResult, PlayerPokemon, PokemonMove, TurnMove } from "../field/pokemon"; +import type { AttackMoveResult, TurnMove } from "../field/pokemon"; +import type Pokemon from "../field/pokemon"; +import { EnemyPokemon, HitResult, MoveResult, PlayerPokemon, PokemonMove } from "../field/pokemon"; import { getNonVolatileStatusEffects, getStatusEffectHealText, isNonVolatileStatusEffect } from "./status-effect"; import { getTypeDamageMultiplier } from "./type"; import { Type } from "#enums/type"; -import { Constructor, NumberHolder } from "#app/utils"; +import type { Constructor } from "#app/utils"; +import { NumberHolder } from "#app/utils"; import * as Utils from "../utils"; import { WeatherType } from "#enums/weather-type"; -import { ArenaTagSide, ArenaTrapTag, WeakenMoveTypeTag } from "./arena-tag"; +import type { ArenaTrapTag } from "./arena-tag"; +import { ArenaTagSide, WeakenMoveTypeTag } from "./arena-tag"; import { allAbilities, AllyMoveCategoryPowerBoostAbAttr, applyAbAttrs, applyPostAttackAbAttrs, applyPostItemLostAbAttrs, applyPreAttackAbAttrs, applyPreDefendAbAttrs, BlockItemTheftAbAttr, BlockNonDirectDamageAbAttr, BlockOneHitKOAbAttr, BlockRecoilDamageAttr, ChangeMovePriorityAbAttr, ConfusionOnStatusEffectAbAttr, FieldMoveTypePowerBoostAbAttr, FieldPreventExplosiveMovesAbAttr, ForceSwitchOutImmunityAbAttr, HealFromBerryUseAbAttr, IgnoreContactAbAttr, IgnoreMoveEffectsAbAttr, IgnoreProtectOnContactAbAttr, InfiltratorAbAttr, MaxMultiHitAbAttr, MoveAbilityBypassAbAttr, MoveEffectChanceMultiplierAbAttr, MoveTypeChangeAbAttr, PostDamageForceSwitchAbAttr, PostItemLostAbAttr, ReverseDrainAbAttr, UncopiableAbilityAbAttr, UnsuppressableAbilityAbAttr, UnswappableAbilityAbAttr, UserFieldMoveTypePowerBoostAbAttr, VariableMovePowerAbAttr, WonderSkinAbAttr } from "./ability"; import { AttackTypeBoosterModifier, BerryModifier, PokemonHeldItemModifier, PokemonMoveAccuracyBoosterModifier, PokemonMultiHitModifier, PreserveBerryModifier } from "../modifier/modifier"; -import { BattlerIndex, BattleType } from "../battle"; +import type { BattlerIndex } from "../battle"; +import { BattleType } from "../battle"; import { TerrainType } from "./terrain"; import { ModifierPoolType } from "#app/modifier/modifier-type"; import { Command } from "../ui/command-ui-handler"; import i18next from "i18next"; -import { Localizable } from "#app/interfaces/locales"; +import type { Localizable } from "#app/interfaces/locales"; import { getBerryEffectFunc } from "./berry"; import { Abilities } from "#enums/abilities"; import { ArenaTagType } from "#enums/arena-tag-type"; @@ -36,10 +41,11 @@ import { SwitchPhase } from "#app/phases/switch-phase"; import { SwitchSummonPhase } from "#app/phases/switch-summon-phase"; import { ShowAbilityPhase } from "#app/phases/show-ability-phase"; import { SpeciesFormChangeRevertWeatherFormTrigger } from "./pokemon-forms"; -import { GameMode } from "#app/game-mode"; +import type { GameMode } from "#app/game-mode"; import { applyChallenges, ChallengeType } from "./challenge"; import { SwitchType } from "#enums/switch-type"; import { StatusEffect } from "enums/status-effect"; +import { globalScene } from "#app/global-scene"; export enum MoveCategory { PHYSICAL, @@ -716,7 +722,7 @@ export default class Move implements Localizable { getTargetBenefitScore(user: Pokemon, target: Pokemon, move: Move): integer { let score = 0; - if (target.getAlly()?.getTag(BattlerTagType.COMMANDED)?.getSourcePokemon(target.scene) === target) { + if (target.getAlly()?.getTag(BattlerTagType.COMMANDED)?.getSourcePokemon() === target) { return 20 * (target.isPlayer() === user.isPlayer() ? -1 : 1); // always -20 with how the AI handles this score } @@ -748,10 +754,10 @@ export default class Move implements Localizable { const isOhko = this.hasAttr(OneHitKOAccuracyAttr); if (!isOhko) { - user.scene.applyModifiers(PokemonMoveAccuracyBoosterModifier, user.isPlayer(), user, moveAccuracy); + globalScene.applyModifiers(PokemonMoveAccuracyBoosterModifier, user.isPlayer(), user, moveAccuracy); } - if (user.scene.arena.weather?.weatherType === WeatherType.FOG) { + if (globalScene.arena.weather?.weatherType === WeatherType.FOG) { /** * The 0.9 multiplier is PokeRogue-only implementation, Bulbapedia uses 3/5 * See Fog {@link https://bulbapedia.bulbagarden.net/wiki/Fog} @@ -759,7 +765,7 @@ export default class Move implements Localizable { moveAccuracy.value = Math.floor(moveAccuracy.value * 0.9); } - if (!isOhko && user.scene.arena.getTag(ArenaTagType.GRAVITY)) { + if (!isOhko && globalScene.arena.getTag(ArenaTagType.GRAVITY)) { moveAccuracy.value = Math.floor(moveAccuracy.value * 1.67); } @@ -784,7 +790,7 @@ export default class Move implements Localizable { applyPreAttackAbAttrs(MoveTypeChangeAbAttr, source, target, this, true, null, typeChangeMovePowerMultiplier); const sourceTeraType = source.getTeraType(); - if (sourceTeraType !== Type.UNKNOWN && sourceTeraType === this.type && power.value < 60 && this.priority <= 0 && !this.hasAttr(MultiHitAttr) && !source.scene.findModifier(m => m instanceof PokemonMultiHitModifier && m.pokemonId === source.id)) { + if (sourceTeraType !== Type.UNKNOWN && sourceTeraType === this.type && power.value < 60 && this.priority <= 0 && !this.hasAttr(MultiHitAttr) && !globalScene.findModifier(m => m instanceof PokemonMultiHitModifier && m.pokemonId === source.id)) { power.value = 60; } @@ -795,7 +801,7 @@ export default class Move implements Localizable { } const fieldAuras = new Set( - source.scene.getField(true) + globalScene.getField(true) .map((p) => p.getAbilityAttrs(FieldMoveTypePowerBoostAbAttr).filter(attr => { const condition = attr.getCondition(); return (!condition || condition(p)); @@ -806,7 +812,7 @@ export default class Move implements Localizable { aura.applyPreAttack(source, null, simulated, target, this, [ power ]); } - const alliedField: Pokemon[] = source instanceof PlayerPokemon ? source.scene.getPlayerField() : source.scene.getEnemyField(); + const alliedField: Pokemon[] = source instanceof PlayerPokemon ? globalScene.getPlayerField() : globalScene.getEnemyField(); alliedField.forEach(p => applyPreAttackAbAttrs(UserFieldMoveTypePowerBoostAbAttr, p, target, this, simulated, power)); power.value *= typeChangeMovePowerMultiplier.value; @@ -819,8 +825,8 @@ export default class Move implements Localizable { applyMoveAttrs(VariablePowerAttr, source, target, this, power); if (!this.hasAttr(TypelessAttr)) { - source.scene.arena.applyTags(WeakenMoveTypeTag, simulated, this.type, power); - source.scene.applyModifiers(AttackTypeBoosterModifier, source.isPlayer(), source, this.type, power); + globalScene.arena.applyTags(WeakenMoveTypeTag, simulated, this.type, power); + globalScene.applyModifiers(AttackTypeBoosterModifier, source.isPlayer(), source, this.type, power); } if (source.getTag(HelpingHandTag)) { @@ -982,7 +988,7 @@ function ChargeMove(Base: TBase) { * @param target the {@linkcode Pokemon} targeted by this move (optional) */ showChargeText(user: Pokemon, target?: Pokemon): void { - user.scene.queueMessage(this._chargeText + globalScene.queueMessage(this._chargeText .replace("{USER}", getPokemonNameWithAffix(user)) .replace("{TARGET}", getPokemonNameWithAffix(target)) ); @@ -1213,7 +1219,7 @@ export class MoveEffectAttr extends MoveAttr { if ((!move.hasAttr(FlinchAttr) || moveChance.value <= move.chance) && !move.hasAttr(SecretPowerAttr)) { const userSide = user.isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY; - user.scene.arena.applyTagsForSide(ArenaTagType.WATER_FIRE_PLEDGE, userSide, false, moveChance); + globalScene.arena.applyTagsForSide(ArenaTagType.WATER_FIRE_PLEDGE, userSide, false, moveChance); } if (!selfEffect) { @@ -1253,7 +1259,7 @@ export class MessageHeaderAttr extends MoveHeaderAttr { : this.message(user, move); if (message) { - user.scene.queueMessage(message); + globalScene.queueMessage(message); return true; } return false; @@ -1306,7 +1312,7 @@ export class PreMoveMessageAttr extends MoveAttr { ? this.message as string : this.message(user, target, move); if (message) { - user.scene.queueMessage(message, 500); + globalScene.queueMessage(message, 500); return true; } return false; @@ -1562,7 +1568,7 @@ export class RecoilAttr extends MoveEffectAttr { } user.damageAndUpdate(recoilDamage, HitResult.OTHER, false, true, true); - user.scene.queueMessage(i18next.t("moveTriggers:hitWithRecoil", { pokemonName: getPokemonNameWithAffix(user) })); + globalScene.queueMessage(i18next.t("moveTriggers:hitWithRecoil", { pokemonName: getPokemonNameWithAffix(user) })); user.turnData.damageTaken += recoilDamage; return true; @@ -1674,7 +1680,7 @@ export class HalfSacrificialAttr extends MoveEffectAttr { applyAbAttrs(BlockNonDirectDamageAbAttr, user, cancelled); if (!cancelled.value) { user.damageAndUpdate(Utils.toDmgValue(user.getMaxHp() / 2), HitResult.OTHER, false, true, true); - user.scene.queueMessage(i18next.t("moveTriggers:cutHpPowerUpMove", { pokemonName: getPokemonNameWithAffix(user) })); // Queue recoil message + globalScene.queueMessage(i18next.t("moveTriggers:cutHpPowerUpMove", { pokemonName: getPokemonNameWithAffix(user) })); // Queue recoil message } return true; } @@ -1779,7 +1785,7 @@ export class HealAttr extends MoveEffectAttr { * This heals the target and shows the appropriate message. */ addHealPhase(target: Pokemon, healRatio: number) { - target.scene.unshiftPhase(new PokemonHealPhase(target.scene, target.getBattlerIndex(), + globalScene.unshiftPhase(new PokemonHealPhase(target.getBattlerIndex(), Utils.toDmgValue(target.getMaxHp() * healRatio), i18next.t("moveTriggers:healHp", { pokemonName: getPokemonNameWithAffix(target) }), true, !this.showAnim)); } @@ -1819,11 +1825,11 @@ export class PartyStatusCureAttr extends MoveEffectAttr { if (!this.canApply(user, target, move, args)) { return false; } - const partyPokemon = user.isPlayer() ? user.scene.getPlayerParty() : user.scene.getEnemyParty(); + const partyPokemon = user.isPlayer() ? globalScene.getPlayerParty() : globalScene.getEnemyParty(); partyPokemon.forEach(p => this.cureStatus(p, user.id)); if (this.message) { - user.scene.queueMessage(this.message); + globalScene.queueMessage(this.message); } return true; @@ -1842,7 +1848,7 @@ export class PartyStatusCureAttr extends MoveEffectAttr { pokemon.resetStatus(); pokemon.updateInfo(); } else { - pokemon.scene.unshiftPhase(new ShowAbilityPhase(pokemon.scene, pokemon.id, pokemon.getPassiveAbility()?.id === this.abilityCondition)); + globalScene.unshiftPhase(new ShowAbilityPhase(pokemon.id, pokemon.getPassiveAbility()?.id === this.abilityCondition)); } } } @@ -1897,11 +1903,10 @@ export class SacrificialFullRestoreAttr extends SacrificialAttr { } // We don't know which party member will be chosen, so pick the highest max HP in the party - const maxPartyMemberHp = user.scene.getPlayerParty().map(p => p.getMaxHp()).reduce((maxHp: integer, hp: integer) => Math.max(hp, maxHp), 0); + const maxPartyMemberHp = globalScene.getPlayerParty().map(p => p.getMaxHp()).reduce((maxHp: integer, hp: integer) => Math.max(hp, maxHp), 0); - user.scene.pushPhase( + globalScene.pushPhase( new PokemonHealPhase( - user.scene, user.getBattlerIndex(), maxPartyMemberHp, i18next.t(this.moveMessage, { pokemonName: getPokemonNameWithAffix(user) }), @@ -1921,7 +1926,7 @@ export class SacrificialFullRestoreAttr extends SacrificialAttr { } getCondition(): MoveConditionFunc { - return (user, _target, _move) => user.scene.getPlayerParty().filter(p => p.isActive()).length > user.scene.currentBattle.getBattlerCount(); + return (user, _target, _move) => globalScene.getPlayerParty().filter(p => p.isActive()).length > globalScene.currentBattle.getBattlerCount(); } } @@ -1950,7 +1955,7 @@ export class IgnoreWeatherTypeDebuffAttr extends MoveAttr { apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { const weatherModifier = args[0] as Utils.NumberHolder; //If the type-based attack power modifier due to weather (e.g. Water moves in Sun) is below 1, set it to 1 - if (user.scene.arena.weather?.weatherType === this.weather) { + if (globalScene.arena.weather?.weatherType === this.weather) { weatherModifier.value = Math.max(weatherModifier.value, 1); } return true; @@ -1964,8 +1969,8 @@ export abstract class WeatherHealAttr extends HealAttr { apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { let healRatio = 0.5; - if (!user.scene.arena.weather?.isEffectSuppressed(user.scene)) { - const weatherType = user.scene.arena.weather?.weatherType || WeatherType.NONE; + if (!globalScene.arena.weather?.isEffectSuppressed()) { + const weatherType = globalScene.arena.weather?.weatherType || WeatherType.NONE; healRatio = this.getWeatherHealRatio(weatherType); } this.addHealPhase(user, healRatio); @@ -2112,7 +2117,7 @@ export class HitHealAttr extends MoveEffectAttr { message = ""; } } - user.scene.unshiftPhase(new PokemonHealPhase(user.scene, user.getBattlerIndex(), healAmount, message, false, true)); + globalScene.unshiftPhase(new PokemonHealPhase(user.getBattlerIndex(), healAmount, message, false, true)); return true; } @@ -2251,7 +2256,7 @@ export class MultiHitAttr extends MoveAttr { case MultiHitType._10: return 10; case MultiHitType.BEAT_UP: - const party = user.isPlayer() ? user.scene.getPlayerParty() : user.scene.getEnemyParty(); + const party = user.isPlayer() ? globalScene.getPlayerParty() : globalScene.getEnemyParty(); // No status means the ally pokemon can contribute to Beat Up return party.reduce((total, pokemon) => { return total + (pokemon.id === user.id ? 1 : pokemon?.status && pokemon.status.effect !== StatusEffect.NONE ? 0 : 1); @@ -2309,7 +2314,7 @@ export class StatusEffectAttr extends MoveEffectAttr { if (user !== target && target.isSafeguarded(user)) { if (move.category === MoveCategory.STATUS) { - user.scene.queueMessage(i18next.t("moveTriggers:safeguard", { targetName: getPokemonNameWithAffix(target) })); + globalScene.queueMessage(i18next.t("moveTriggers:safeguard", { targetName: getPokemonNameWithAffix(target) })); } return false; } @@ -2414,9 +2419,9 @@ export class StealHeldItemChanceAttr extends MoveEffectAttr { const highestItemTier = heldItems.map(m => m.type.getOrInferTier(poolType)).reduce((highestTier, tier) => Math.max(tier!, highestTier), 0); // TODO: is the bang after tier correct? const tierHeldItems = heldItems.filter(m => m.type.getOrInferTier(poolType) === highestItemTier); const stolenItem = tierHeldItems[user.randSeedInt(tierHeldItems.length)]; - user.scene.tryTransferHeldItemModifier(stolenItem, user, false).then(success => { + globalScene.tryTransferHeldItemModifier(stolenItem, user, false).then(success => { if (success) { - user.scene.queueMessage(i18next.t("moveTriggers:stoleItem", { pokemonName: getPokemonNameWithAffix(user), targetName: getPokemonNameWithAffix(target), itemName: stolenItem.type.name })); + globalScene.queueMessage(i18next.t("moveTriggers:stoleItem", { pokemonName: getPokemonNameWithAffix(user), targetName: getPokemonNameWithAffix(target), itemName: stolenItem.type.name })); } resolve(success); }); @@ -2428,7 +2433,7 @@ export class StealHeldItemChanceAttr extends MoveEffectAttr { } getTargetHeldItems(target: Pokemon): PokemonHeldItemModifier[] { - return target.scene.findModifiers(m => m instanceof PokemonHeldItemModifier + return globalScene.findModifiers(m => m instanceof PokemonHeldItemModifier && m.pokemonId === target.id, target.isPlayer()) as PokemonHeldItemModifier[]; } @@ -2496,13 +2501,13 @@ export class RemoveHeldItemAttr extends MoveEffectAttr { // Decrease item amount and update icon target.loseHeldItem(removedItem); - target.scene.updateModifiers(target.isPlayer()); + globalScene.updateModifiers(target.isPlayer()); if (this.berriesOnly) { - user.scene.queueMessage(i18next.t("moveTriggers:incineratedItem", { pokemonName: getPokemonNameWithAffix(user), targetName: getPokemonNameWithAffix(target), itemName: removedItem.type.name })); + globalScene.queueMessage(i18next.t("moveTriggers:incineratedItem", { pokemonName: getPokemonNameWithAffix(user), targetName: getPokemonNameWithAffix(target), itemName: removedItem.type.name })); } else { - user.scene.queueMessage(i18next.t("moveTriggers:knockedOffItem", { pokemonName: getPokemonNameWithAffix(user), targetName: getPokemonNameWithAffix(target), itemName: removedItem.type.name })); + globalScene.queueMessage(i18next.t("moveTriggers:knockedOffItem", { pokemonName: getPokemonNameWithAffix(user), targetName: getPokemonNameWithAffix(target), itemName: removedItem.type.name })); } } @@ -2510,7 +2515,7 @@ export class RemoveHeldItemAttr extends MoveEffectAttr { } getTargetHeldItems(target: Pokemon): PokemonHeldItemModifier[] { - return target.scene.findModifiers(m => m instanceof PokemonHeldItemModifier + return globalScene.findModifiers(m => m instanceof PokemonHeldItemModifier && m.pokemonId === target.id, target.isPlayer()) as PokemonHeldItemModifier[]; } @@ -2552,7 +2557,7 @@ export class EatBerryAttr extends MoveEffectAttr { } this.chosenBerry = heldBerries[user.randSeedInt(heldBerries.length)]; const preserve = new Utils.BooleanHolder(false); - target.scene.applyModifiers(PreserveBerryModifier, target.isPlayer(), target, preserve); // check for berry pouch preservation + globalScene.applyModifiers(PreserveBerryModifier, target.isPlayer(), target, preserve); // check for berry pouch preservation if (!preserve.value) { this.reduceBerryModifier(target); } @@ -2561,7 +2566,7 @@ export class EatBerryAttr extends MoveEffectAttr { } getTargetHeldBerries(target: Pokemon): BerryModifier[] { - return target.scene.findModifiers(m => m instanceof BerryModifier + return globalScene.findModifiers(m => m instanceof BerryModifier && (m as BerryModifier).pokemonId === target.id, target.isPlayer()) as BerryModifier[]; } @@ -2569,7 +2574,7 @@ export class EatBerryAttr extends MoveEffectAttr { if (this.chosenBerry) { target.loseHeldItem(this.chosenBerry); } - target.scene.updateModifiers(target.isPlayer()); + globalScene.updateModifiers(target.isPlayer()); } eatBerry(consumer: Pokemon, berryOwner?: Pokemon) { @@ -2612,7 +2617,7 @@ export class StealEatBerryAttr extends EatBerryAttr { this.chosenBerry = heldBerries[user.randSeedInt(heldBerries.length)]; applyPostItemLostAbAttrs(PostItemLostAbAttr, target, false); const message = i18next.t("battle:stealEatBerry", { pokemonName: user.name, targetName: target.name, berryName: this.chosenBerry.type.name }); - user.scene.queueMessage(message); + globalScene.queueMessage(message); this.reduceBerryModifier(target); this.eatBerry(user, target); return true; @@ -2660,7 +2665,7 @@ export class HealStatusEffectAttr extends MoveEffectAttr { const pokemon = this.selfTarget ? user : target; if (pokemon.status && this.effects.includes(pokemon.status.effect)) { - pokemon.scene.queueMessage(getStatusEffectHealText(pokemon.status.effect, getPokemonNameWithAffix(pokemon))); + globalScene.queueMessage(getStatusEffectHealText(pokemon.status.effect, getPokemonNameWithAffix(pokemon))); pokemon.resetStatus(); pokemon.updateInfo(); @@ -2731,11 +2736,11 @@ export class WeatherChangeAttr extends MoveEffectAttr { } apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { - return user.scene.arena.trySetWeather(this.weatherType, true); + return globalScene.arena.trySetWeather(this.weatherType, true); } getCondition(): MoveConditionFunc { - return (user, target, move) => !user.scene.arena.weather || (user.scene.arena.weather.weatherType !== this.weatherType && !user.scene.arena.weather.isImmutable()); + return (user, target, move) => !globalScene.arena.weather || (globalScene.arena.weather.weatherType !== this.weatherType && !globalScene.arena.weather.isImmutable()); } } @@ -2749,8 +2754,8 @@ export class ClearWeatherAttr extends MoveEffectAttr { } apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { - if (user.scene.arena.weather?.weatherType === this.weatherType) { - return user.scene.arena.trySetWeather(WeatherType.NONE, true); + if (globalScene.arena.weather?.weatherType === this.weatherType) { + return globalScene.arena.trySetWeather(WeatherType.NONE, true); } return false; @@ -2767,16 +2772,16 @@ export class TerrainChangeAttr extends MoveEffectAttr { } apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { - return user.scene.arena.trySetTerrain(this.terrainType, true, true); + return globalScene.arena.trySetTerrain(this.terrainType, true, true); } getCondition(): MoveConditionFunc { - return (user, target, move) => !user.scene.arena.terrain || (user.scene.arena.terrain.terrainType !== this.terrainType); + return (user, target, move) => !globalScene.arena.terrain || (globalScene.arena.terrain.terrainType !== this.terrainType); } getUserBenefitScore(user: Pokemon, target: Pokemon, move: Move): number { // TODO: Expand on this - return user.scene.arena.terrain ? 0 : 6; + return globalScene.arena.terrain ? 0 : 6; } } @@ -2786,7 +2791,7 @@ export class ClearTerrainAttr extends MoveEffectAttr { } apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { - return user.scene.arena.trySetTerrain(TerrainType.NONE, true, true); + return globalScene.arena.trySetTerrain(TerrainType.NONE, true, true); } } @@ -2855,12 +2860,12 @@ export class InstantChargeAttr extends MoveAttr { export class WeatherInstantChargeAttr extends InstantChargeAttr { constructor(weatherTypes: WeatherType[]) { super((user, move) => { - const currentWeather = user.scene.arena.weather; + const currentWeather = globalScene.arena.weather; if (Utils.isNullOrUndefined(currentWeather?.weatherType)) { return false; } else { - return !currentWeather?.isEffectSuppressed(user.scene) + return !currentWeather?.isEffectSuppressed() && weatherTypes.includes(currentWeather?.weatherType); } }); @@ -2904,16 +2909,16 @@ export class DelayedAttackAttr extends OverrideMoveEffectAttr { const side = target.isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY; return new Promise(resolve => { if (args.length < 2 || !args[1]) { - new MoveChargeAnim(this.chargeAnim, move.id, user).play(user.scene, false, () => { + new MoveChargeAnim(this.chargeAnim, move.id, user).play(false, () => { (args[0] as Utils.BooleanHolder).value = true; - user.scene.queueMessage(this.chargeText.replace("{TARGET}", getPokemonNameWithAffix(target)).replace("{USER}", getPokemonNameWithAffix(user))); + globalScene.queueMessage(this.chargeText.replace("{TARGET}", getPokemonNameWithAffix(target)).replace("{USER}", getPokemonNameWithAffix(user))); user.pushMoveHistory({ move: move.id, targets: [ target.getBattlerIndex() ], result: MoveResult.OTHER }); - user.scene.arena.addTag(this.tagType, 3, move.id, user.id, side, false, target.getBattlerIndex()); + globalScene.arena.addTag(this.tagType, 3, move.id, user.id, side, false, target.getBattlerIndex()); resolve(true); }); } else { - user.scene.ui.showText(i18next.t("moveTriggers:tookMoveAttack", { pokemonName: getPokemonNameWithAffix(user.scene.getPokemonById(target.id) ?? undefined), moveName: move.name }), null, () => resolve(true)); + globalScene.ui.showText(i18next.t("moveTriggers:tookMoveAttack", { pokemonName: getPokemonNameWithAffix(globalScene.getPokemonById(target.id) ?? undefined), moveName: move.name }), null, () => resolve(true)); } }); } @@ -2942,29 +2947,29 @@ export class AwaitCombinedPledgeAttr extends OverrideMoveEffectAttr { override apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { if (user.turnData.combiningPledge) { // "The two moves have become one!\nIt's a combined move!" - user.scene.queueMessage(i18next.t("moveTriggers:combiningPledge")); + globalScene.queueMessage(i18next.t("moveTriggers:combiningPledge")); return false; } const overridden = args[0] as Utils.BooleanHolder; - const allyMovePhase = user.scene.findPhase((phase) => phase instanceof MovePhase && phase.pokemon.isPlayer() === user.isPlayer()); + const allyMovePhase = globalScene.findPhase((phase) => phase instanceof MovePhase && phase.pokemon.isPlayer() === user.isPlayer()); if (allyMovePhase) { const allyMove = allyMovePhase.move.getMove(); if (allyMove !== move && allyMove.hasAttr(AwaitCombinedPledgeAttr)) { [ user, allyMovePhase.pokemon ].forEach((p) => p.turnData.combiningPledge = move.id); // "{userPokemonName} is waiting for {allyPokemonName}'s move..." - user.scene.queueMessage(i18next.t("moveTriggers:awaitingPledge", { + globalScene.queueMessage(i18next.t("moveTriggers:awaitingPledge", { userPokemonName: getPokemonNameWithAffix(user), allyPokemonName: getPokemonNameWithAffix(allyMovePhase.pokemon) })); // Move the ally's MovePhase (if needed) so that the ally moves next - const allyMovePhaseIndex = user.scene.phaseQueue.indexOf(allyMovePhase); - const firstMovePhaseIndex = user.scene.phaseQueue.findIndex((phase) => phase instanceof MovePhase); + const allyMovePhaseIndex = globalScene.phaseQueue.indexOf(allyMovePhase); + const firstMovePhaseIndex = globalScene.phaseQueue.findIndex((phase) => phase instanceof MovePhase); if (allyMovePhaseIndex !== firstMovePhaseIndex) { - user.scene.prependToPhase(user.scene.phaseQueue.splice(allyMovePhaseIndex, 1)[0], MovePhase); + globalScene.prependToPhase(globalScene.phaseQueue.splice(allyMovePhaseIndex, 1)[0], MovePhase); } overridden.value = true; @@ -3058,7 +3063,7 @@ export class StatStageChangeAttr extends MoveEffectAttr { const moveChance = this.getMoveChance(user, target, move, this.selfTarget, true); if (moveChance < 0 || moveChance === 100 || user.randSeedInt(100) < moveChance) { const stages = this.getLevels(user); - user.scene.unshiftPhase(new StatStageChangePhase(user.scene, (this.selfTarget ? user : target).getBattlerIndex(), this.selfTarget, this.stats, stages, this.showMessage)); + globalScene.unshiftPhase(new StatStageChangePhase((this.selfTarget ? user : target).getBattlerIndex(), this.selfTarget, this.stats, stages, this.showMessage)); return true; } @@ -3129,11 +3134,11 @@ export class SecretPowerAttr extends MoveEffectAttr { return false; } let secondaryEffect: MoveEffectAttr; - const terrain = user.scene.arena.getTerrainType(); + const terrain = globalScene.arena.getTerrainType(); if (terrain !== TerrainType.NONE) { secondaryEffect = this.determineTerrainEffect(terrain); } else { - const biome = user.scene.arena.biomeType; + const biome = globalScene.arena.biomeType; secondaryEffect = this.determineBiomeEffect(biome); } return secondaryEffect.apply(user, target, move, []); @@ -3283,7 +3288,7 @@ export class AcupressureStatStageChangeAttr extends MoveEffectAttr { const randStats = BATTLE_STATS.filter(s => target.getStatStage(s) < 6); if (randStats.length > 0) { const boostStat = [ randStats[user.randSeedInt(randStats.length)] ]; - user.scene.unshiftPhase(new StatStageChangePhase(user.scene, target.getBattlerIndex(), this.selfTarget, boostStat, 2)); + globalScene.unshiftPhase(new StatStageChangePhase(target.getBattlerIndex(), this.selfTarget, boostStat, 2)); return true; } return false; @@ -3296,8 +3301,8 @@ export class GrowthStatStageChangeAttr extends StatStageChangeAttr { } getLevels(user: Pokemon): number { - if (!user.scene.arena.weather?.isEffectSuppressed(user.scene)) { - const weatherType = user.scene.arena.weather?.weatherType; + if (!globalScene.arena.weather?.isEffectSuppressed()) { + const weatherType = globalScene.arena.weather?.weatherType; if (weatherType === WeatherType.SUNNY || weatherType === WeatherType.HARSH_SUN) { return this.stages + 1; } @@ -3365,7 +3370,7 @@ export class OrderUpStatBoostAttr extends MoveEffectAttr { break; } - user.scene.unshiftPhase(new StatStageChangePhase(user.scene, user.getBattlerIndex(), this.selfTarget, [ increasedStat ], 1)); + globalScene.unshiftPhase(new StatStageChangePhase(user.getBattlerIndex(), this.selfTarget, [ increasedStat ], 1)); return true; } } @@ -3388,7 +3393,7 @@ export class CopyStatsAttr extends MoveEffectAttr { } target.updateInfo(); user.updateInfo(); - target.scene.queueMessage(i18next.t("moveTriggers:copiedStatChanges", { pokemonName: getPokemonNameWithAffix(user), targetName: getPokemonNameWithAffix(target) })); + globalScene.queueMessage(i18next.t("moveTriggers:copiedStatChanges", { pokemonName: getPokemonNameWithAffix(user), targetName: getPokemonNameWithAffix(target) })); return true; } @@ -3407,7 +3412,7 @@ export class InvertStatsAttr extends MoveEffectAttr { target.updateInfo(); user.updateInfo(); - target.scene.queueMessage(i18next.t("moveTriggers:invertStats", { pokemonName: getPokemonNameWithAffix(target) })); + globalScene.queueMessage(i18next.t("moveTriggers:invertStats", { pokemonName: getPokemonNameWithAffix(target) })); return true; } @@ -3422,13 +3427,13 @@ export class ResetStatsAttr extends MoveEffectAttr { async apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): Promise { const promises: Promise[] = []; if (this.targetAllPokemon) { // Target all pokemon on the field when Freezy Frost or Haze are used - const activePokemon = user.scene.getField(true); + const activePokemon = globalScene.getField(true); activePokemon.forEach(p => promises.push(this.resetStats(p))); - target.scene.queueMessage(i18next.t("moveTriggers:statEliminated")); + globalScene.queueMessage(i18next.t("moveTriggers:statEliminated")); } else { // Affects only the single target when Clear Smog is used if (!move.hitsSubstitute(user, target)) { promises.push(this.resetStats(target)); - target.scene.queueMessage(i18next.t("moveTriggers:resetStats", { pokemonName: getPokemonNameWithAffix(target) })); + globalScene.queueMessage(i18next.t("moveTriggers:resetStats", { pokemonName: getPokemonNameWithAffix(target) })); } } @@ -3481,9 +3486,9 @@ export class SwapStatStagesAttr extends MoveEffectAttr { user.updateInfo(); if (this.stats.length === 7) { - user.scene.queueMessage(i18next.t("moveTriggers:switchedStatChanges", { pokemonName: getPokemonNameWithAffix(user) })); + globalScene.queueMessage(i18next.t("moveTriggers:switchedStatChanges", { pokemonName: getPokemonNameWithAffix(user) })); } else if (this.stats.length === 2) { - user.scene.queueMessage(i18next.t("moveTriggers:switchedTwoStatChanges", { + globalScene.queueMessage(i18next.t("moveTriggers:switchedTwoStatChanges", { pokemonName: getPokemonNameWithAffix(user), firstStat: i18next.t(getStatKey(this.stats[0])), secondStat: i18next.t(getStatKey(this.stats[1])) @@ -3508,12 +3513,12 @@ export class HpSplitAttr extends MoveEffectAttr { if (user.hp < hpValue) { const healing = user.heal(hpValue - user.hp); if (healing) { - user.scene.damageNumberHandler.add(user, healing, HitResult.HEAL); + globalScene.damageNumberHandler.add(user, healing, HitResult.HEAL); } } else if (user.hp > hpValue) { const damage = user.damage(user.hp - hpValue, true); if (damage) { - user.scene.damageNumberHandler.add(user, damage); + globalScene.damageNumberHandler.add(user, damage); } } infoUpdates.push(user.updateInfo()); @@ -3521,12 +3526,12 @@ export class HpSplitAttr extends MoveEffectAttr { if (target.hp < hpValue) { const healing = target.heal(hpValue - target.hp); if (healing) { - user.scene.damageNumberHandler.add(user, healing, HitResult.HEAL); + globalScene.damageNumberHandler.add(user, healing, HitResult.HEAL); } } else if (target.hp > hpValue) { const damage = target.damage(target.hp - hpValue, true); if (damage) { - target.scene.damageNumberHandler.add(target, damage); + globalScene.damageNumberHandler.add(target, damage); } } infoUpdates.push(target.updateInfo()); @@ -3609,7 +3614,7 @@ export class MovePowerMultiplierAttr extends VariablePowerAttr { * @returns The base power of the Beat Up hit. */ const beatUpFunc = (user: Pokemon, allyIndex: number): number => { - const party = user.isPlayer() ? user.scene.getPlayerParty() : user.scene.getEnemyParty(); + const party = user.isPlayer() ? globalScene.getPlayerParty() : globalScene.getEnemyParty(); for (let i = allyIndex; i < party.length; i++) { const pokemon = party[i]; @@ -3637,7 +3642,7 @@ export class BeatUpAttr extends VariablePowerAttr { apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { const power = args[0] as Utils.NumberHolder; - const party = user.isPlayer() ? user.scene.getPlayerParty() : user.scene.getEnemyParty(); + const party = user.isPlayer() ? globalScene.getPlayerParty() : globalScene.getEnemyParty(); const allyCount = party.filter(pokemon => { return pokemon.id === user.id || !pokemon.status?.effect; }).length; @@ -3649,19 +3654,19 @@ export class BeatUpAttr extends VariablePowerAttr { const doublePowerChanceMessageFunc = (user: Pokemon, target: Pokemon, move: Move) => { let message: string = ""; - user.scene.executeWithSeedOffset(() => { + globalScene.executeWithSeedOffset(() => { const rand = Utils.randSeedInt(100); if (rand < move.chance) { message = i18next.t("moveTriggers:goingAllOutForAttack", { pokemonName: getPokemonNameWithAffix(user) }); } - }, user.scene.currentBattle.turn << 6, user.scene.waveSeed); + }, globalScene.currentBattle.turn << 6, globalScene.waveSeed); return message; }; export class DoublePowerChanceAttr extends VariablePowerAttr { apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { let rand: integer; - user.scene.executeWithSeedOffset(() => rand = Utils.randSeedInt(100), user.scene.currentBattle.turn << 6, user.scene.waveSeed); + globalScene.executeWithSeedOffset(() => rand = Utils.randSeedInt(100), globalScene.currentBattle.turn << 6, globalScene.waveSeed); if (rand! < move.chance) { const power = args[0] as Utils.NumberHolder; power.value *= 2; @@ -3895,8 +3900,8 @@ export class OpponentHighHpPowerAttr extends VariablePowerAttr { export class FirstAttackDoublePowerAttr extends VariablePowerAttr { apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { - console.log(target.getLastXMoves(1), target.scene.currentBattle.turn); - if (!target.getLastXMoves(1).find(m => m.turn === target.scene.currentBattle.turn)) { + console.log(target.getLastXMoves(1), globalScene.currentBattle.turn); + if (!target.getLastXMoves(1).find(m => m.turn === globalScene.currentBattle.turn)) { (args[0] as Utils.NumberHolder).value *= 2; return true; } @@ -3919,7 +3924,7 @@ export class TurnDamagedDoublePowerAttr extends VariablePowerAttr { const magnitudeMessageFunc = (user: Pokemon, target: Pokemon, move: Move) => { let message: string; - user.scene.executeWithSeedOffset(() => { + globalScene.executeWithSeedOffset(() => { const magnitudeThresholds = [ 5, 15, 35, 65, 75, 95 ]; const rand = Utils.randSeedInt(100); @@ -3932,7 +3937,7 @@ const magnitudeMessageFunc = (user: Pokemon, target: Pokemon, move: Move) => { } message = i18next.t("moveTriggers:magnitudeMessage", { magnitude: m + 4 }); - }, user.scene.currentBattle.turn << 6, user.scene.waveSeed); + }, globalScene.currentBattle.turn << 6, globalScene.waveSeed); return message!; }; @@ -3945,7 +3950,7 @@ export class MagnitudePowerAttr extends VariablePowerAttr { let rand: integer; - user.scene.executeWithSeedOffset(() => rand = Utils.randSeedInt(100), user.scene.currentBattle.turn << 6, user.scene.waveSeed); + globalScene.executeWithSeedOffset(() => rand = Utils.randSeedInt(100), globalScene.currentBattle.turn << 6, globalScene.waveSeed); let m = 0; for (; m < magnitudeThresholds.length; m++) { @@ -3962,9 +3967,9 @@ export class MagnitudePowerAttr extends VariablePowerAttr { export class AntiSunlightPowerDecreaseAttr extends VariablePowerAttr { apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { - if (!user.scene.arena.weather?.isEffectSuppressed(user.scene)) { + if (!globalScene.arena.weather?.isEffectSuppressed()) { const power = args[0] as Utils.NumberHolder; - const weatherType = user.scene.arena.weather?.weatherType || WeatherType.NONE; + const weatherType = globalScene.arena.weather?.weatherType || WeatherType.NONE; switch (weatherType) { case WeatherType.RAIN: case WeatherType.SANDSTORM: @@ -4080,7 +4085,7 @@ export class PresentPowerAttr extends VariablePowerAttr { } else if (80 < powerSeed && powerSeed <= 100) { // If this move is multi-hit, disable all other hits user.stopMultiHit(); - target.scene.unshiftPhase(new PokemonHealPhase(target.scene, target.getBattlerIndex(), + globalScene.unshiftPhase(new PokemonHealPhase(target.getBattlerIndex(), Utils.toDmgValue(target.getMaxHp() / 4), i18next.t("moveTriggers:regainedHealth", { pokemonName: getPokemonNameWithAffix(target) }), true)); } @@ -4230,7 +4235,7 @@ export class LastMoveDoublePowerAttr extends VariablePowerAttr { pokemonActed.push(enemy); } - if (user.scene.currentBattle.double) { + if (globalScene.currentBattle.double) { const userAlly = user.getAlly(); const enemyAlly = enemy?.getAlly(); @@ -4332,7 +4337,7 @@ export class CueNextRoundAttr extends MoveEffectAttr { } override apply(user: Pokemon, target: Pokemon, move: Move, args?: any[]): boolean { - const nextRoundPhase = user.scene.findPhase(phase => + const nextRoundPhase = globalScene.findPhase(phase => phase instanceof MovePhase && phase.move.moveId === Moves.ROUND ); @@ -4341,10 +4346,10 @@ export class CueNextRoundAttr extends MoveEffectAttr { } // Update the phase queue so that the next Pokemon using Round moves next - const nextRoundIndex = user.scene.phaseQueue.indexOf(nextRoundPhase); - const nextMoveIndex = user.scene.phaseQueue.findIndex(phase => phase instanceof MovePhase); + const nextRoundIndex = globalScene.phaseQueue.indexOf(nextRoundPhase); + const nextMoveIndex = globalScene.phaseQueue.findIndex(phase => phase instanceof MovePhase); if (nextRoundIndex !== nextMoveIndex) { - user.scene.prependToPhase(user.scene.phaseQueue.splice(nextRoundIndex, 1)[0], MovePhase); + globalScene.prependToPhase(globalScene.phaseQueue.splice(nextRoundIndex, 1)[0], MovePhase); } // Mark the corresponding Pokemon as having "joined the Round" (for doubling power later) @@ -4419,9 +4424,9 @@ export class VariableAccuracyAttr extends MoveAttr { */ export class ThunderAccuracyAttr extends VariableAccuracyAttr { apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { - if (!user.scene.arena.weather?.isEffectSuppressed(user.scene)) { + if (!globalScene.arena.weather?.isEffectSuppressed()) { const accuracy = args[0] as Utils.NumberHolder; - const weatherType = user.scene.arena.weather?.weatherType || WeatherType.NONE; + const weatherType = globalScene.arena.weather?.weatherType || WeatherType.NONE; switch (weatherType) { case WeatherType.SUNNY: case WeatherType.HARSH_SUN: @@ -4445,9 +4450,9 @@ export class ThunderAccuracyAttr extends VariableAccuracyAttr { */ export class StormAccuracyAttr extends VariableAccuracyAttr { apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { - if (!user.scene.arena.weather?.isEffectSuppressed(user.scene)) { + if (!globalScene.arena.weather?.isEffectSuppressed()) { const accuracy = args[0] as Utils.NumberHolder; - const weatherType = user.scene.arena.weather?.weatherType || WeatherType.NONE; + const weatherType = globalScene.arena.weather?.weatherType || WeatherType.NONE; switch (weatherType) { case WeatherType.RAIN: case WeatherType.HEAVY_RAIN: @@ -4501,9 +4506,9 @@ export class ToxicAccuracyAttr extends VariableAccuracyAttr { export class BlizzardAccuracyAttr extends VariableAccuracyAttr { apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { - if (!user.scene.arena.weather?.isEffectSuppressed(user.scene)) { + if (!globalScene.arena.weather?.isEffectSuppressed()) { const accuracy = args[0] as Utils.NumberHolder; - const weatherType = user.scene.arena.weather?.weatherType || WeatherType.NONE; + const weatherType = globalScene.arena.weather?.weatherType || WeatherType.NONE; if (weatherType === WeatherType.HAIL || weatherType === WeatherType.SNOW) { accuracy.value = -1; return true; @@ -4800,8 +4805,8 @@ export class WeatherBallTypeAttr extends VariableMoveTypeAttr { return false; } - if (!user.scene.arena.weather?.isEffectSuppressed(user.scene)) { - switch (user.scene.arena.weather?.weatherType) { + if (!globalScene.arena.weather?.isEffectSuppressed()) { + switch (globalScene.arena.weather?.weatherType) { case WeatherType.SUNNY: case WeatherType.HARSH_SUN: moveType.value = Type.FIRE; @@ -4851,7 +4856,7 @@ export class TerrainPulseTypeAttr extends VariableMoveTypeAttr { return false; } - const currentTerrain = user.scene.arena.getTerrainType(); + const currentTerrain = globalScene.arena.getTerrainType(); switch (currentTerrain) { case TerrainType.MISTY: moveType.value = Type.FAIRY; @@ -5146,7 +5151,7 @@ const crashDamageFunc = (user: Pokemon, move: Move) => { } user.damageAndUpdate(Utils.toDmgValue(user.getMaxHp() / 2), HitResult.OTHER, false, true); - user.scene.queueMessage(i18next.t("moveTriggers:keptGoingAndCrashed", { pokemonName: getPokemonNameWithAffix(user) })); + globalScene.queueMessage(i18next.t("moveTriggers:keptGoingAndCrashed", { pokemonName: getPokemonNameWithAffix(user) })); user.turnData.damageTaken += Utils.toDmgValue(user.getMaxHp() / 2); return true; @@ -5436,12 +5441,12 @@ export class CurseAttr extends MoveEffectAttr { apply(user: Pokemon, target: Pokemon, move:Move, args: any[]): boolean { if (user.getTypes(true).includes(Type.GHOST)) { if (target.getTag(BattlerTagType.CURSED)) { - user.scene.queueMessage(i18next.t("battle:attackFailed")); + globalScene.queueMessage(i18next.t("battle:attackFailed")); return false; } const curseRecoilDamage = Math.max(1, Math.floor(user.getMaxHp() / 2)); user.damageAndUpdate(curseRecoilDamage, HitResult.OTHER, false, true, true); - user.scene.queueMessage( + globalScene.queueMessage( i18next.t("battlerTags:cursedOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(user), pokemonName: getPokemonNameWithAffix(target) @@ -5451,8 +5456,8 @@ export class CurseAttr extends MoveEffectAttr { target.addTag(BattlerTagType.CURSED, 0, move.id, user.id); return true; } else { - user.scene.unshiftPhase(new StatStageChangePhase(user.scene, user.getBattlerIndex(), true, [ Stat.ATK, Stat.DEF ], 1)); - user.scene.unshiftPhase(new StatStageChangePhase(user.scene, user.getBattlerIndex(), true, [ Stat.SPD ], -1)); + globalScene.unshiftPhase(new StatStageChangePhase(user.getBattlerIndex(), true, [ Stat.ATK, Stat.DEF ], 1)); + globalScene.unshiftPhase(new StatStageChangePhase(user.getBattlerIndex(), true, [ Stat.SPD ], -1)); return true; } } @@ -5523,7 +5528,7 @@ export class ConfuseAttr extends AddBattlerTagAttr { apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { if (!this.selfTarget && target.isSafeguarded(user)) { if (move.category === MoveCategory.STATUS) { - user.scene.queueMessage(i18next.t("moveTriggers:safeguard", { targetName: getPokemonNameWithAffix(target) })); + globalScene.queueMessage(i18next.t("moveTriggers:safeguard", { targetName: getPokemonNameWithAffix(target) })); } return false; } @@ -5583,7 +5588,7 @@ export class IgnoreAccuracyAttr extends AddBattlerTagAttr { return false; } - user.scene.queueMessage(i18next.t("moveTriggers:tookAimAtTarget", { pokemonName: getPokemonNameWithAffix(user), targetName: getPokemonNameWithAffix(target) })); + globalScene.queueMessage(i18next.t("moveTriggers:tookAimAtTarget", { pokemonName: getPokemonNameWithAffix(user), targetName: getPokemonNameWithAffix(target) })); return true; } @@ -5599,7 +5604,7 @@ export class FaintCountdownAttr extends AddBattlerTagAttr { return false; } - user.scene.queueMessage(i18next.t("moveTriggers:faintCountdown", { pokemonName: getPokemonNameWithAffix(target), turnCount: this.turnCountMin - 1 })); + globalScene.queueMessage(i18next.t("moveTriggers:faintCountdown", { pokemonName: getPokemonNameWithAffix(target), turnCount: this.turnCountMin - 1 })); return true; } @@ -5629,7 +5634,7 @@ export class RemoveAllSubstitutesAttr extends MoveEffectAttr { return false; } - user.scene.getField(true).forEach(pokemon => + globalScene.getField(true).forEach(pokemon => pokemon.findAndRemoveTags(tag => tag.tagType === BattlerTagType.SUBSTITUTE)); return true; } @@ -5692,7 +5697,7 @@ export class AddArenaTagAttr extends MoveEffectAttr { if ((move.chance < 0 || move.chance === 100 || user.randSeedInt(100) < move.chance) && user.getLastXMoves(1)[0]?.result === MoveResult.SUCCESS) { const side = (this.selfSideTarget ? user : target).isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY; - user.scene.arena.addTag(this.tagType, this.turnCount, move.id, user.id, side); + globalScene.arena.addTag(this.tagType, this.turnCount, move.id, user.id, side); return true; } @@ -5701,7 +5706,7 @@ export class AddArenaTagAttr extends MoveEffectAttr { getCondition(): MoveConditionFunc | null { return this.failOnOverlap - ? (user, target, move) => !user.scene.arena.getTagOnSide(this.tagType, target.isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY) + ? (user, target, move) => !globalScene.arena.getTagOnSide(this.tagType, target.isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY) : null; } } @@ -5730,7 +5735,7 @@ export class RemoveArenaTagsAttr extends MoveEffectAttr { const side = (this.selfSideTarget ? user : target).isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY; for (const tagType of this.tagTypes) { - user.scene.arena.removeTagOnSide(tagType, side); + globalScene.arena.removeTagOnSide(tagType, side); } return true; @@ -5741,7 +5746,7 @@ export class AddArenaTrapTagAttr extends AddArenaTagAttr { getCondition(): MoveConditionFunc { return (user, target, move) => { const side = (this.selfSideTarget ? user : target).isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY; - const tag = user.scene.arena.getTagOnSide(this.tagType, side) as ArenaTrapTag; + const tag = globalScene.arena.getTagOnSide(this.tagType, side) as ArenaTrapTag; if (!tag) { return true; } @@ -5765,9 +5770,9 @@ export class AddArenaTrapTagHitAttr extends AddArenaTagAttr { apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { const moveChance = this.getMoveChance(user, target, move, this.selfTarget, true); const side = (this.selfSideTarget ? user : target).isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY; - const tag = user.scene.arena.getTagOnSide(this.tagType, side) as ArenaTrapTag; + const tag = globalScene.arena.getTagOnSide(this.tagType, side) as ArenaTrapTag; if ((moveChance < 0 || moveChance === 100 || user.randSeedInt(100) < moveChance) && user.getLastXMoves(1)[0]?.result === MoveResult.SUCCESS) { - user.scene.arena.addTag(this.tagType, 0, move.id, user.id, side); + globalScene.arena.addTag(this.tagType, 0, move.id, user.id, side); if (!tag) { return true; } @@ -5793,20 +5798,20 @@ export class RemoveArenaTrapAttr extends MoveEffectAttr { } if (this.targetBothSides) { - user.scene.arena.removeTagOnSide(ArenaTagType.SPIKES, ArenaTagSide.PLAYER); - user.scene.arena.removeTagOnSide(ArenaTagType.TOXIC_SPIKES, ArenaTagSide.PLAYER); - user.scene.arena.removeTagOnSide(ArenaTagType.STEALTH_ROCK, ArenaTagSide.PLAYER); - user.scene.arena.removeTagOnSide(ArenaTagType.STICKY_WEB, ArenaTagSide.PLAYER); + globalScene.arena.removeTagOnSide(ArenaTagType.SPIKES, ArenaTagSide.PLAYER); + globalScene.arena.removeTagOnSide(ArenaTagType.TOXIC_SPIKES, ArenaTagSide.PLAYER); + globalScene.arena.removeTagOnSide(ArenaTagType.STEALTH_ROCK, ArenaTagSide.PLAYER); + globalScene.arena.removeTagOnSide(ArenaTagType.STICKY_WEB, ArenaTagSide.PLAYER); - user.scene.arena.removeTagOnSide(ArenaTagType.SPIKES, ArenaTagSide.ENEMY); - user.scene.arena.removeTagOnSide(ArenaTagType.TOXIC_SPIKES, ArenaTagSide.ENEMY); - user.scene.arena.removeTagOnSide(ArenaTagType.STEALTH_ROCK, ArenaTagSide.ENEMY); - user.scene.arena.removeTagOnSide(ArenaTagType.STICKY_WEB, ArenaTagSide.ENEMY); + globalScene.arena.removeTagOnSide(ArenaTagType.SPIKES, ArenaTagSide.ENEMY); + globalScene.arena.removeTagOnSide(ArenaTagType.TOXIC_SPIKES, ArenaTagSide.ENEMY); + globalScene.arena.removeTagOnSide(ArenaTagType.STEALTH_ROCK, ArenaTagSide.ENEMY); + globalScene.arena.removeTagOnSide(ArenaTagType.STICKY_WEB, ArenaTagSide.ENEMY); } else { - user.scene.arena.removeTagOnSide(ArenaTagType.SPIKES, target.isPlayer() ? ArenaTagSide.ENEMY : ArenaTagSide.PLAYER); - user.scene.arena.removeTagOnSide(ArenaTagType.TOXIC_SPIKES, target.isPlayer() ? ArenaTagSide.ENEMY : ArenaTagSide.PLAYER); - user.scene.arena.removeTagOnSide(ArenaTagType.STEALTH_ROCK, target.isPlayer() ? ArenaTagSide.ENEMY : ArenaTagSide.PLAYER); - user.scene.arena.removeTagOnSide(ArenaTagType.STICKY_WEB, target.isPlayer() ? ArenaTagSide.ENEMY : ArenaTagSide.PLAYER); + globalScene.arena.removeTagOnSide(ArenaTagType.SPIKES, target.isPlayer() ? ArenaTagSide.ENEMY : ArenaTagSide.PLAYER); + globalScene.arena.removeTagOnSide(ArenaTagType.TOXIC_SPIKES, target.isPlayer() ? ArenaTagSide.ENEMY : ArenaTagSide.PLAYER); + globalScene.arena.removeTagOnSide(ArenaTagType.STEALTH_ROCK, target.isPlayer() ? ArenaTagSide.ENEMY : ArenaTagSide.PLAYER); + globalScene.arena.removeTagOnSide(ArenaTagType.STICKY_WEB, target.isPlayer() ? ArenaTagSide.ENEMY : ArenaTagSide.PLAYER); } return true; @@ -5829,17 +5834,17 @@ export class RemoveScreensAttr extends MoveEffectAttr { } if (this.targetBothSides) { - user.scene.arena.removeTagOnSide(ArenaTagType.REFLECT, ArenaTagSide.PLAYER); - user.scene.arena.removeTagOnSide(ArenaTagType.LIGHT_SCREEN, ArenaTagSide.PLAYER); - user.scene.arena.removeTagOnSide(ArenaTagType.AURORA_VEIL, ArenaTagSide.PLAYER); + globalScene.arena.removeTagOnSide(ArenaTagType.REFLECT, ArenaTagSide.PLAYER); + globalScene.arena.removeTagOnSide(ArenaTagType.LIGHT_SCREEN, ArenaTagSide.PLAYER); + globalScene.arena.removeTagOnSide(ArenaTagType.AURORA_VEIL, ArenaTagSide.PLAYER); - user.scene.arena.removeTagOnSide(ArenaTagType.REFLECT, ArenaTagSide.ENEMY); - user.scene.arena.removeTagOnSide(ArenaTagType.LIGHT_SCREEN, ArenaTagSide.ENEMY); - user.scene.arena.removeTagOnSide(ArenaTagType.AURORA_VEIL, ArenaTagSide.ENEMY); + globalScene.arena.removeTagOnSide(ArenaTagType.REFLECT, ArenaTagSide.ENEMY); + globalScene.arena.removeTagOnSide(ArenaTagType.LIGHT_SCREEN, ArenaTagSide.ENEMY); + globalScene.arena.removeTagOnSide(ArenaTagType.AURORA_VEIL, ArenaTagSide.ENEMY); } else { - user.scene.arena.removeTagOnSide(ArenaTagType.REFLECT, target.isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY); - user.scene.arena.removeTagOnSide(ArenaTagType.LIGHT_SCREEN, target.isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY); - user.scene.arena.removeTagOnSide(ArenaTagType.AURORA_VEIL, target.isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY); + globalScene.arena.removeTagOnSide(ArenaTagType.REFLECT, target.isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY); + globalScene.arena.removeTagOnSide(ArenaTagType.LIGHT_SCREEN, target.isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY); + globalScene.arena.removeTagOnSide(ArenaTagType.AURORA_VEIL, target.isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY); } return true; @@ -5865,25 +5870,25 @@ export class SwapArenaTagsAttr extends MoveEffectAttr { return false; } - const tagPlayerTemp = user.scene.arena.findTagsOnSide((t => this.SwapTags.includes(t.tagType)), ArenaTagSide.PLAYER); - const tagEnemyTemp = user.scene.arena.findTagsOnSide((t => this.SwapTags.includes(t.tagType)), ArenaTagSide.ENEMY); + const tagPlayerTemp = globalScene.arena.findTagsOnSide((t => this.SwapTags.includes(t.tagType)), ArenaTagSide.PLAYER); + const tagEnemyTemp = globalScene.arena.findTagsOnSide((t => this.SwapTags.includes(t.tagType)), ArenaTagSide.ENEMY); if (tagPlayerTemp) { for (const swapTagsType of tagPlayerTemp) { - user.scene.arena.removeTagOnSide(swapTagsType.tagType, ArenaTagSide.PLAYER, true); - user.scene.arena.addTag(swapTagsType.tagType, swapTagsType.turnCount, swapTagsType.sourceMove, swapTagsType.sourceId!, ArenaTagSide.ENEMY, true); // TODO: is the bang correct? + globalScene.arena.removeTagOnSide(swapTagsType.tagType, ArenaTagSide.PLAYER, true); + globalScene.arena.addTag(swapTagsType.tagType, swapTagsType.turnCount, swapTagsType.sourceMove, swapTagsType.sourceId!, ArenaTagSide.ENEMY, true); // TODO: is the bang correct? } } if (tagEnemyTemp) { for (const swapTagsType of tagEnemyTemp) { - user.scene.arena.removeTagOnSide(swapTagsType.tagType, ArenaTagSide.ENEMY, true); - user.scene.arena.addTag(swapTagsType.tagType, swapTagsType.turnCount, swapTagsType.sourceMove, swapTagsType.sourceId!, ArenaTagSide.PLAYER, true); // TODO: is the bang correct? + globalScene.arena.removeTagOnSide(swapTagsType.tagType, ArenaTagSide.ENEMY, true); + globalScene.arena.addTag(swapTagsType.tagType, swapTagsType.turnCount, swapTagsType.sourceMove, swapTagsType.sourceId!, ArenaTagSide.PLAYER, true); // TODO: is the bang correct? } } - user.scene.queueMessage(i18next.t("moveTriggers:swapArenaTags", { pokemonName: getPokemonNameWithAffix(user) })); + globalScene.queueMessage(i18next.t("moveTriggers:swapArenaTags", { pokemonName: getPokemonNameWithAffix(user) })); return true; } } @@ -5936,40 +5941,40 @@ export class RevivalBlessingAttr extends MoveEffectAttr { return new Promise(resolve => { // If user is player, checks if the user has fainted pokemon if (user instanceof PlayerPokemon - && user.scene.getPlayerParty().findIndex(p => p.isFainted()) > -1) { + && globalScene.getPlayerParty().findIndex(p => p.isFainted()) > -1) { (user as PlayerPokemon).revivalBlessing().then(() => { resolve(true); }); // If user is enemy, checks that it is a trainer, and it has fainted non-boss pokemon in party } else if (user instanceof EnemyPokemon && user.hasTrainer() - && user.scene.getEnemyParty().findIndex(p => p.isFainted() && !p.isBoss()) > -1) { + && globalScene.getEnemyParty().findIndex(p => p.isFainted() && !p.isBoss()) > -1) { // Selects a random fainted pokemon - const faintedPokemon = user.scene.getEnemyParty().filter(p => p.isFainted() && !p.isBoss()); + const faintedPokemon = globalScene.getEnemyParty().filter(p => p.isFainted() && !p.isBoss()); const pokemon = faintedPokemon[user.randSeedInt(faintedPokemon.length)]; - const slotIndex = user.scene.getEnemyParty().findIndex(p => pokemon.id === p.id); + const slotIndex = globalScene.getEnemyParty().findIndex(p => pokemon.id === p.id); pokemon.resetStatus(); pokemon.heal(Math.min(Utils.toDmgValue(0.5 * pokemon.getMaxHp()), pokemon.getMaxHp())); - user.scene.queueMessage(i18next.t("moveTriggers:revivalBlessing", { pokemonName: getPokemonNameWithAffix(pokemon) }), 0, true); + globalScene.queueMessage(i18next.t("moveTriggers:revivalBlessing", { pokemonName: getPokemonNameWithAffix(pokemon) }), 0, true); - if (user.scene.currentBattle.double && user.scene.getEnemyParty().length > 1) { + if (globalScene.currentBattle.double && globalScene.getEnemyParty().length > 1) { const allyPokemon = user.getAlly(); if (slotIndex <= 1) { - user.scene.unshiftPhase(new SwitchSummonPhase(user.scene, SwitchType.SWITCH, pokemon.getFieldIndex(), slotIndex, false, false)); + globalScene.unshiftPhase(new SwitchSummonPhase(SwitchType.SWITCH, pokemon.getFieldIndex(), slotIndex, false, false)); } else if (allyPokemon.isFainted()) { - user.scene.unshiftPhase(new SwitchSummonPhase(user.scene, SwitchType.SWITCH, allyPokemon.getFieldIndex(), slotIndex, false, false)); + globalScene.unshiftPhase(new SwitchSummonPhase(SwitchType.SWITCH, allyPokemon.getFieldIndex(), slotIndex, false, false)); } } resolve(true); } else { - user.scene.queueMessage(i18next.t("battle:attackFailed")); + globalScene.queueMessage(i18next.t("battle:attackFailed")); resolve(false); } }); } getUserBenefitScore(user: Pokemon, target: Pokemon, move: Move): integer { - if (user.hasTrainer() && user.scene.getEnemyParty().findIndex(p => p.isFainted() && !p.isBoss()) > -1) { + if (user.hasTrainer() && globalScene.getEnemyParty().findIndex(p => p.isFainted() && !p.isBoss()) > -1) { return 20; } @@ -6018,7 +6023,7 @@ export class ForceSwitchOutAttr extends MoveEffectAttr { // Find indices of off-field Pokemon that are eligible to be switched into const eligibleNewIndices: number[] = []; - switchOutTarget.scene.getPlayerParty().forEach((pokemon, index) => { + globalScene.getPlayerParty().forEach((pokemon, index) => { if (pokemon.isAllowedInBattle() && !pokemon.isOnField()) { eligibleNewIndices.push(index); } @@ -6032,9 +6037,8 @@ export class ForceSwitchOutAttr extends MoveEffectAttr { if (this.switchType === SwitchType.FORCE_SWITCH) { switchOutTarget.leaveField(true); const slotIndex = eligibleNewIndices[user.randSeedInt(eligibleNewIndices.length)]; - user.scene.prependToPhase( + globalScene.prependToPhase( new SwitchSummonPhase( - user.scene, this.switchType, switchOutTarget.getFieldIndex(), slotIndex, @@ -6045,9 +6049,8 @@ export class ForceSwitchOutAttr extends MoveEffectAttr { ); } else { switchOutTarget.leaveField(this.switchType === SwitchType.SWITCH); - user.scene.prependToPhase( + globalScene.prependToPhase( new SwitchPhase( - user.scene, this.switchType, switchOutTarget.getFieldIndex(), true, @@ -6059,10 +6062,10 @@ export class ForceSwitchOutAttr extends MoveEffectAttr { } } return false; - } else if (user.scene.currentBattle.battleType !== BattleType.WILD) { // Switch out logic for enemy trainers + } else if (globalScene.currentBattle.battleType !== BattleType.WILD) { // Switch out logic for enemy trainers // Find indices of off-field Pokemon that are eligible to be switched into const eligibleNewIndices: number[] = []; - switchOutTarget.scene.getEnemyParty().forEach((pokemon, index) => { + globalScene.getEnemyParty().forEach((pokemon, index) => { if (pokemon.isAllowedInBattle() && !pokemon.isOnField()) { eligibleNewIndices.push(index); } @@ -6076,9 +6079,8 @@ export class ForceSwitchOutAttr extends MoveEffectAttr { if (this.switchType === SwitchType.FORCE_SWITCH) { switchOutTarget.leaveField(true); const slotIndex = eligibleNewIndices[user.randSeedInt(eligibleNewIndices.length)]; - user.scene.prependToPhase( + globalScene.prependToPhase( new SwitchSummonPhase( - user.scene, this.switchType, switchOutTarget.getFieldIndex(), slotIndex, @@ -6089,12 +6091,11 @@ export class ForceSwitchOutAttr extends MoveEffectAttr { ); } else { switchOutTarget.leaveField(this.switchType === SwitchType.SWITCH); - user.scene.prependToPhase( + globalScene.prependToPhase( new SwitchSummonPhase( - user.scene, this.switchType, switchOutTarget.getFieldIndex(), - (user.scene.currentBattle.trainer ? user.scene.currentBattle.trainer.getNextSummonIndex((switchOutTarget as EnemyPokemon).trainerSlot) : 0), + (globalScene.currentBattle.trainer ? globalScene.currentBattle.trainer.getNextSummonIndex((switchOutTarget as EnemyPokemon).trainerSlot) : 0), false, false ), @@ -6115,7 +6116,7 @@ export class ForceSwitchOutAttr extends MoveEffectAttr { } } - if (user.scene.currentBattle.waveIndex % 10 === 0) { + if (globalScene.currentBattle.waveIndex % 10 === 0) { return false; } @@ -6126,21 +6127,21 @@ export class ForceSwitchOutAttr extends MoveEffectAttr { if (switchOutTarget.hp > 0) { switchOutTarget.leaveField(false); - user.scene.queueMessage(i18next.t("moveTriggers:fled", { pokemonName: getPokemonNameWithAffix(switchOutTarget) }), null, true, 500); + globalScene.queueMessage(i18next.t("moveTriggers:fled", { pokemonName: getPokemonNameWithAffix(switchOutTarget) }), null, true, 500); // in double battles redirect potential moves off fled pokemon - if (switchOutTarget.scene.currentBattle.double) { + if (globalScene.currentBattle.double) { const allyPokemon = switchOutTarget.getAlly(); - switchOutTarget.scene.redirectPokemonMoves(switchOutTarget, allyPokemon); + globalScene.redirectPokemonMoves(switchOutTarget, allyPokemon); } } if (!switchOutTarget.getAlly()?.isActive(true)) { - user.scene.clearEnemyHeldItemModifiers(); + globalScene.clearEnemyHeldItemModifiers(); if (switchOutTarget.hp) { - user.scene.pushPhase(new BattleEndPhase(user.scene, false)); - user.scene.pushPhase(new NewBattlePhase(user.scene)); + globalScene.pushPhase(new BattleEndPhase(false)); + globalScene.pushPhase(new NewBattlePhase()); } } } @@ -6170,11 +6171,11 @@ export class ForceSwitchOutAttr extends MoveEffectAttr { // Dondozo with an allied Tatsugiri in its mouth cannot be forced out const commandedTag = switchOutTarget.getTag(BattlerTagType.COMMANDED); - if (commandedTag?.getSourcePokemon(switchOutTarget.scene)?.isActive(true)) { + if (commandedTag?.getSourcePokemon()?.isActive(true)) { return false; } - if (!player && user.scene.currentBattle.isBattleMysteryEncounter() && !user.scene.currentBattle.mysteryEncounter?.fleeAllowed) { + if (!player && globalScene.currentBattle.isBattleMysteryEncounter() && !globalScene.currentBattle.mysteryEncounter?.fleeAllowed) { // Don't allow wild opponents to be force switched during MEs with flee disabled return false; } @@ -6184,25 +6185,25 @@ export class ForceSwitchOutAttr extends MoveEffectAttr { return !blockedByAbility.value; } - if (!player && user.scene.currentBattle.battleType === BattleType.WILD) { + if (!player && globalScene.currentBattle.battleType === BattleType.WILD) { if (this.isBatonPass()) { return false; } // Don't allow wild opponents to flee on the boss stage since it can ruin a run early on - if (user.scene.currentBattle.waveIndex % 10 === 0) { + if (globalScene.currentBattle.waveIndex % 10 === 0) { return false; } } - const party = player ? user.scene.getPlayerParty() : user.scene.getEnemyParty(); - return (!player && !user.scene.currentBattle.battleType) + const party = player ? globalScene.getPlayerParty() : globalScene.getEnemyParty(); + return (!player && !globalScene.currentBattle.battleType) || party.filter(p => p.isAllowedInBattle() - && (player || (p as EnemyPokemon).trainerSlot === (switchOutTarget as EnemyPokemon).trainerSlot)).length > user.scene.currentBattle.getBattlerCount(); + && (player || (p as EnemyPokemon).trainerSlot === (switchOutTarget as EnemyPokemon).trainerSlot)).length > globalScene.currentBattle.getBattlerCount(); }; } getUserBenefitScore(user: Pokemon, target: Pokemon, move: Move): integer { - if (!user.scene.getEnemyParty().find(p => p.isActive() && !p.isOnField())) { + if (!globalScene.getEnemyParty().find(p => p.isActive() && !p.isOnField())) { return -20; } let ret = this.selfSwitch ? Math.floor((1 - user.getHpRatio()) * 20) : super.getUserBenefitScore(user, target, move); @@ -6231,13 +6232,13 @@ export class ForceSwitchOutAttr extends MoveEffectAttr { export class ChillyReceptionAttr extends ForceSwitchOutAttr { apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { - user.scene.arena.trySetWeather(WeatherType.SNOW, true); + globalScene.arena.trySetWeather(WeatherType.SNOW, true); return super.apply(user, target, move, args); } getCondition(): MoveConditionFunc { // chilly reception move will go through if the weather is change-able to snow, or the user can switch out, else move will fail - return (user, target, move) => user.scene.arena.weather?.weatherType !== WeatherType.SNOW || super.getSwitchOutCondition()(user, target, move); + return (user, target, move) => globalScene.arena.weather?.weatherType !== WeatherType.SNOW || super.getSwitchOutCondition()(user, target, move); } } export class RemoveTypeAttr extends MoveEffectAttr { @@ -6295,7 +6296,7 @@ export class CopyTypeAttr extends MoveEffectAttr { user.summonData.types = targetTypes; user.updateInfo(); - user.scene.queueMessage(i18next.t("moveTriggers:copyType", { pokemonName: getPokemonNameWithAffix(user), targetPokemonName: getPokemonNameWithAffix(target) })); + globalScene.queueMessage(i18next.t("moveTriggers:copyType", { pokemonName: getPokemonNameWithAffix(user), targetPokemonName: getPokemonNameWithAffix(target) })); return true; } @@ -6315,18 +6316,18 @@ export class CopyBiomeTypeAttr extends MoveEffectAttr { return false; } - const terrainType = user.scene.arena.getTerrainType(); + const terrainType = globalScene.arena.getTerrainType(); let typeChange: Type; if (terrainType !== TerrainType.NONE) { - typeChange = this.getTypeForTerrain(user.scene.arena.getTerrainType()); + typeChange = this.getTypeForTerrain(globalScene.arena.getTerrainType()); } else { - typeChange = this.getTypeForBiome(user.scene.arena.biomeType); + typeChange = this.getTypeForBiome(globalScene.arena.biomeType); } user.summonData.types = [ typeChange ]; user.updateInfo(); - user.scene.queueMessage(i18next.t("moveTriggers:transformedIntoType", { pokemonName: getPokemonNameWithAffix(user), typeName: i18next.t(`pokemonInfo:Type.${Type[typeChange]}`) })); + globalScene.queueMessage(i18next.t("moveTriggers:transformedIntoType", { pokemonName: getPokemonNameWithAffix(user), typeName: i18next.t(`pokemonInfo:Type.${Type[typeChange]}`) })); return true; } @@ -6431,7 +6432,7 @@ export class ChangeTypeAttr extends MoveEffectAttr { target.summonData.types = [ this.type ]; target.updateInfo(); - user.scene.queueMessage(i18next.t("moveTriggers:transformedIntoType", { pokemonName: getPokemonNameWithAffix(target), typeName: i18next.t(`pokemonInfo:Type.${Type[this.type]}`) })); + globalScene.queueMessage(i18next.t("moveTriggers:transformedIntoType", { pokemonName: getPokemonNameWithAffix(target), typeName: i18next.t(`pokemonInfo:Type.${Type[this.type]}`) })); return true; } @@ -6454,7 +6455,7 @@ export class AddTypeAttr extends MoveEffectAttr { target.summonData.addedType = this.type; target.updateInfo(); - user.scene.queueMessage(i18next.t("moveTriggers:addType", { typeName: i18next.t(`pokemonInfo:Type.${Type[this.type]}`), pokemonName: getPokemonNameWithAffix(target) })); + globalScene.queueMessage(i18next.t("moveTriggers:addType", { typeName: i18next.t(`pokemonInfo:Type.${Type[this.type]}`), pokemonName: getPokemonNameWithAffix(target) })); return true; } @@ -6476,7 +6477,7 @@ export class FirstMoveTypeAttr extends MoveEffectAttr { const firstMoveType = target.getMoveset()[0]?.getMove().type!; // TODO: is this bang correct? user.summonData.types = [ firstMoveType ]; - user.scene.queueMessage(i18next.t("battle:transformedIntoType", { pokemonName: getPokemonNameWithAffix(user), type: i18next.t(`pokemonInfo:Type.${Type[firstMoveType]}`) })); + globalScene.queueMessage(i18next.t("battle:transformedIntoType", { pokemonName: getPokemonNameWithAffix(user), type: i18next.t(`pokemonInfo:Type.${Type[firstMoveType]}`) })); return true; } @@ -6519,7 +6520,7 @@ export class RandomMovesetMoveAttr extends OverrideMoveEffectAttr { } const targets = selectTargets; user.getMoveQueue().push({ move: move?.moveId!, targets: targets, ignorePP: true }); // TODO: is this bang correct? - user.scene.unshiftPhase(new MovePhase(user.scene, user, targets, moveset[moveIndex]!, true)); // There's a PR to re-do the move(s) that use this Attr, gonna put `!` for now + globalScene.unshiftPhase(new MovePhase(user, targets, moveset[moveIndex]!, true)); // There's a PR to re-do the move(s) that use this Attr, gonna put `!` for now return true; } @@ -6551,9 +6552,9 @@ export class RandomMoveAttr extends OverrideMoveEffectAttr { ? [ target.getBattlerIndex() ] : [ moveTargets.targets[user.randSeedInt(moveTargets.targets.length)] ]; user.getMoveQueue().push({ move: moveId, targets: targets, ignorePP: true }); - user.scene.unshiftPhase(new MovePhase(user.scene, user, targets, new PokemonMove(moveId, 0, 0, true), true)); - initMoveAnim(user.scene, moveId).then(() => { - loadMoveAnimAssets(user.scene, [ moveId ], true) + globalScene.unshiftPhase(new MovePhase(user, targets, new PokemonMove(moveId, 0, 0, true), true)); + initMoveAnim(moveId).then(() => { + loadMoveAnimAssets([ moveId ], true) .then(() => resolve(true)); }); }); @@ -6564,10 +6565,10 @@ export class NaturePowerAttr extends OverrideMoveEffectAttr { apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): Promise { return new Promise(resolve => { let moveId; - switch (user.scene.arena.getTerrainType()) { + switch (globalScene.arena.getTerrainType()) { // this allows terrains to 'override' the biome move case TerrainType.NONE: - switch (user.scene.arena.biomeType) { + switch (globalScene.arena.biomeType) { case Biome.TOWN: moveId = Moves.ROUND; break; @@ -6694,9 +6695,9 @@ export class NaturePowerAttr extends OverrideMoveEffectAttr { } user.getMoveQueue().push({ move: moveId, targets: [ target.getBattlerIndex() ], ignorePP: true }); - user.scene.unshiftPhase(new MovePhase(user.scene, user, [ target.getBattlerIndex() ], new PokemonMove(moveId, 0, 0, true), true)); - initMoveAnim(user.scene, moveId).then(() => { - loadMoveAnimAssets(user.scene, [ moveId ], true) + globalScene.unshiftPhase(new MovePhase(user, [ target.getBattlerIndex() ], new PokemonMove(moveId, 0, 0, true), true)); + initMoveAnim(moveId).then(() => { + loadMoveAnimAssets([ moveId ], true) .then(() => resolve(true)); }); }); @@ -6704,7 +6705,7 @@ export class NaturePowerAttr extends OverrideMoveEffectAttr { } const lastMoveCopiableCondition: MoveConditionFunc = (user, target, move) => { - const copiableMove = user.scene.currentBattle.lastMove; + const copiableMove = globalScene.currentBattle.lastMove; if (!copiableMove) { return false; @@ -6721,7 +6722,7 @@ const lastMoveCopiableCondition: MoveConditionFunc = (user, target, move) => { export class CopyMoveAttr extends OverrideMoveEffectAttr { apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { - const lastMove = user.scene.currentBattle.lastMove; + const lastMove = globalScene.currentBattle.lastMove; const moveTargets = getMoveTargets(user, lastMove); if (!moveTargets.targets.length) { @@ -6735,7 +6736,7 @@ export class CopyMoveAttr extends OverrideMoveEffectAttr { : [ moveTargets.targets[user.randSeedInt(moveTargets.targets.length)] ]; user.getMoveQueue().push({ move: lastMove, targets: targets, ignorePP: true }); - user.scene.unshiftPhase(new MovePhase(user.scene, user as PlayerPokemon, targets, new PokemonMove(lastMove, 0, 0, true), true)); + globalScene.unshiftPhase(new MovePhase(user as PlayerPokemon, targets, new PokemonMove(lastMove, 0, 0, true), true)); return true; } @@ -6770,13 +6771,13 @@ export class RepeatMoveAttr extends MoveEffectAttr { const movesetMove = target.getMoveset().find(m => m?.moveId === lastMove.move)!; const moveTargets = lastMove.targets ?? []; - user.scene.queueMessage(i18next.t("moveTriggers:instructingMove", { + globalScene.queueMessage(i18next.t("moveTriggers:instructingMove", { userPokemonName: getPokemonNameWithAffix(user), targetPokemonName: getPokemonNameWithAffix(target) })); target.getMoveQueue().unshift({ move: lastMove.move, targets: moveTargets, ignorePP: false }); target.turnData.extraTurns++; - target.scene.appendToPhase(new MovePhase(target.scene, target, moveTargets, movesetMove), MoveEndPhase); + globalScene.appendToPhase(new MovePhase(target, moveTargets, movesetMove), MoveEndPhase); return true; } @@ -6893,8 +6894,8 @@ export class ReducePpMoveAttr extends MoveEffectAttr { movesetMove!.ppUsed = Math.min((movesetMove?.ppUsed!) + this.reduction, movesetMove?.getMovePp()!); // TODO: is the bang correct? const message = i18next.t("battle:ppReduced", { targetName: getPokemonNameWithAffix(target), moveName: movesetMove?.getName(), reduction: (movesetMove?.ppUsed!) - lastPpUsed }); // TODO: is the bang correct? - user.scene.eventTarget.dispatchEvent(new MoveUsedEvent(target?.id, movesetMove?.getMove()!, movesetMove?.ppUsed!)); // TODO: are these bangs correct? - user.scene.queueMessage(message); + globalScene.eventTarget.dispatchEvent(new MoveUsedEvent(target?.id, movesetMove?.getMove()!, movesetMove?.ppUsed!)); // TODO: are these bangs correct? + globalScene.queueMessage(message); return true; } @@ -7005,7 +7006,7 @@ export class MovesetCopyMoveAttr extends OverrideMoveEffectAttr { user.summonData.moveset = user.getMoveset().slice(0); user.summonData.moveset[thisMoveIndex] = new PokemonMove(copiedMove.id, 0, 0); - user.scene.queueMessage(i18next.t("moveTriggers:copiedMove", { pokemonName: getPokemonNameWithAffix(user), moveName: copiedMove.name })); + globalScene.queueMessage(i18next.t("moveTriggers:copiedMove", { pokemonName: getPokemonNameWithAffix(user), moveName: copiedMove.name })); return true; } @@ -7055,7 +7056,7 @@ export class SketchAttr extends MoveEffectAttr { user.setMove(sketchIndex, sketchedMove.id); - user.scene.queueMessage(i18next.t("moveTriggers:sketchedMove", { pokemonName: getPokemonNameWithAffix(user), moveName: sketchedMove.name })); + globalScene.queueMessage(i18next.t("moveTriggers:sketchedMove", { pokemonName: getPokemonNameWithAffix(user), moveName: sketchedMove.name })); return true; } @@ -7113,9 +7114,9 @@ export class AbilityChangeAttr extends MoveEffectAttr { const moveTarget = this.selfTarget ? user : target; moveTarget.summonData.ability = this.ability; - user.scene.triggerPokemonFormChange(moveTarget, SpeciesFormChangeRevertWeatherFormTrigger); + globalScene.triggerPokemonFormChange(moveTarget, SpeciesFormChangeRevertWeatherFormTrigger); - user.scene.queueMessage(i18next.t("moveTriggers:acquiredAbility", { pokemonName: getPokemonNameWithAffix((this.selfTarget ? user : target)), abilityName: allAbilities[this.ability].name })); + globalScene.queueMessage(i18next.t("moveTriggers:acquiredAbility", { pokemonName: getPokemonNameWithAffix((this.selfTarget ? user : target)), abilityName: allAbilities[this.ability].name })); return true; } @@ -7141,11 +7142,11 @@ export class AbilityCopyAttr extends MoveEffectAttr { user.summonData.ability = target.getAbility().id; - user.scene.queueMessage(i18next.t("moveTriggers:copiedTargetAbility", { pokemonName: getPokemonNameWithAffix(user), targetName: getPokemonNameWithAffix(target), abilityName: allAbilities[target.getAbility().id].name })); + globalScene.queueMessage(i18next.t("moveTriggers:copiedTargetAbility", { pokemonName: getPokemonNameWithAffix(user), targetName: getPokemonNameWithAffix(target), abilityName: allAbilities[target.getAbility().id].name })); - if (this.copyToPartner && user.scene.currentBattle?.double && user.getAlly().hp) { + if (this.copyToPartner && globalScene.currentBattle?.double && user.getAlly().hp) { user.getAlly().summonData.ability = target.getAbility().id; - user.getAlly().scene.queueMessage(i18next.t("moveTriggers:copiedTargetAbility", { pokemonName: getPokemonNameWithAffix(user.getAlly()), targetName: getPokemonNameWithAffix(target), abilityName: allAbilities[target.getAbility().id].name })); + globalScene.queueMessage(i18next.t("moveTriggers:copiedTargetAbility", { pokemonName: getPokemonNameWithAffix(user.getAlly()), targetName: getPokemonNameWithAffix(target), abilityName: allAbilities[target.getAbility().id].name })); } return true; @@ -7154,7 +7155,7 @@ export class AbilityCopyAttr extends MoveEffectAttr { getCondition(): MoveConditionFunc { return (user, target, move) => { let ret = !target.getAbility().hasAttr(UncopiableAbilityAbAttr) && !user.getAbility().hasAttr(UnsuppressableAbilityAbAttr); - if (this.copyToPartner && user.scene.currentBattle?.double) { + if (this.copyToPartner && globalScene.currentBattle?.double) { ret = ret && (!user.getAlly().hp || !user.getAlly().getAbility().hasAttr(UnsuppressableAbilityAbAttr)); } else { ret = ret && user.getAbility().id !== target.getAbility().id; @@ -7178,7 +7179,7 @@ export class AbilityGiveAttr extends MoveEffectAttr { target.summonData.ability = user.getAbility().id; - user.scene.queueMessage(i18next.t("moveTriggers:acquiredAbility", { pokemonName: getPokemonNameWithAffix(target), abilityName: allAbilities[user.getAbility().id].name })); + globalScene.queueMessage(i18next.t("moveTriggers:acquiredAbility", { pokemonName: getPokemonNameWithAffix(target), abilityName: allAbilities[user.getAbility().id].name })); return true; } @@ -7198,11 +7199,11 @@ export class SwitchAbilitiesAttr extends MoveEffectAttr { user.summonData.ability = target.getAbility().id; target.summonData.ability = tempAbilityId; - user.scene.queueMessage(i18next.t("moveTriggers:swappedAbilitiesWithTarget", { pokemonName: getPokemonNameWithAffix(user) })); + globalScene.queueMessage(i18next.t("moveTriggers:swappedAbilitiesWithTarget", { pokemonName: getPokemonNameWithAffix(user) })); // Swaps Forecast/Flower Gift from Castform/Cherrim - user.scene.arena.triggerWeatherBasedFormChangesToNormal(); + globalScene.arena.triggerWeatherBasedFormChangesToNormal(); // Swaps Forecast/Flower Gift to Castform/Cherrim (edge case) - user.scene.arena.triggerWeatherBasedFormChanges(); + globalScene.arena.triggerWeatherBasedFormChanges(); return true; } @@ -7228,9 +7229,9 @@ export class SuppressAbilitiesAttr extends MoveEffectAttr { } target.summonData.abilitySuppressed = true; - target.scene.arena.triggerWeatherBasedFormChangesToNormal(); + globalScene.arena.triggerWeatherBasedFormChangesToNormal(); - target.scene.queueMessage(i18next.t("moveTriggers:suppressAbilities", { pokemonName: getPokemonNameWithAffix(target) })); + globalScene.queueMessage(i18next.t("moveTriggers:suppressAbilities", { pokemonName: getPokemonNameWithAffix(target) })); return true; } @@ -7309,7 +7310,7 @@ export class TransformAttr extends MoveEffectAttr { user.summonData.types = target.getTypes(); promises.push(user.updateInfo()); - user.scene.queueMessage(i18next.t("moveTriggers:transformedIntoTarget", { pokemonName: getPokemonNameWithAffix(user), targetName: getPokemonNameWithAffix(target) })); + globalScene.queueMessage(i18next.t("moveTriggers:transformedIntoTarget", { pokemonName: getPokemonNameWithAffix(user), targetName: getPokemonNameWithAffix(target) })); promises.push(user.loadAssets(false).then(() => { user.playAnim(); @@ -7352,7 +7353,7 @@ export class SwapStatAttr extends MoveEffectAttr { user.setStat(this.stat, target.getStat(this.stat, false), false); target.setStat(this.stat, temp, false); - user.scene.queueMessage(i18next.t("moveTriggers:switchedStat", { + globalScene.queueMessage(i18next.t("moveTriggers:switchedStat", { pokemonName: getPokemonNameWithAffix(user), stat: i18next.t(getStatKey(this.stat)), })); @@ -7398,7 +7399,7 @@ export class ShiftStatAttr extends MoveEffectAttr { user.setStat(this.statToSwitch, secondStat, false); user.setStat(this.statToSwitchWith, firstStat, false); - user.scene.queueMessage(i18next.t("moveTriggers:shiftedStats", { + globalScene.queueMessage(i18next.t("moveTriggers:shiftedStats", { pokemonName: getPokemonNameWithAffix(user), statToSwitch: i18next.t(getStatKey(this.statToSwitch)), statToSwitchWith: i18next.t(getStatKey(this.statToSwitchWith)) @@ -7457,7 +7458,7 @@ export class AverageStatsAttr extends MoveEffectAttr { target.setStat(s, avg, false); } - user.scene.queueMessage(i18next.t(this.msgKey, { pokemonName: getPokemonNameWithAffix(user) })); + globalScene.queueMessage(i18next.t(this.msgKey, { pokemonName: getPokemonNameWithAffix(user) })); return true; } @@ -7485,8 +7486,8 @@ export class MoneyAttr extends MoveEffectAttr { } apply(user: Pokemon, target: Pokemon, move: Move): boolean { - user.scene.currentBattle.moneyScattered += user.scene.getWaveMoneyAmount(0.2); - user.scene.queueMessage(i18next.t("moveTriggers:coinsScatteredEverywhere")); + globalScene.currentBattle.moneyScattered += globalScene.getWaveMoneyAmount(0.2); + globalScene.queueMessage(i18next.t("moveTriggers:coinsScatteredEverywhere")); return true; } } @@ -7510,7 +7511,7 @@ export class DestinyBondAttr extends MoveEffectAttr { * @returns true */ apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { - user.scene.queueMessage(`${i18next.t("moveTriggers:tryingToTakeFoeDown", { pokemonName: getPokemonNameWithAffix(user) })}`); + globalScene.queueMessage(`${i18next.t("moveTriggers:tryingToTakeFoeDown", { pokemonName: getPokemonNameWithAffix(user) })}`); user.addTag(BattlerTagType.DESTINY_BOND, undefined, move.id, user.id); return true; } @@ -7600,7 +7601,7 @@ export class AttackedByItemAttr extends MoveAttr { } const itemName = heldItems[0]?.type?.name ?? "item"; - target.scene.queueMessage(i18next.t("moveTriggers:attackedByItem", { pokemonName: getPokemonNameWithAffix(target), itemName: itemName })); + globalScene.queueMessage(i18next.t("moveTriggers:attackedByItem", { pokemonName: getPokemonNameWithAffix(target), itemName: itemName })); return true; }; @@ -7639,30 +7640,30 @@ export class AfterYouAttr extends MoveEffectAttr { * @returns true */ override apply(user: Pokemon, target: Pokemon, _move: Move, _args: any[]): boolean { - user.scene.queueMessage(i18next.t("moveTriggers:afterYou", { targetName: getPokemonNameWithAffix(target) })); + globalScene.queueMessage(i18next.t("moveTriggers:afterYou", { targetName: getPokemonNameWithAffix(target) })); //Will find next acting phase of the targeted pokémon, delete it and queue it next on successful delete. - const nextAttackPhase = target.scene.findPhase((phase) => phase.pokemon === target); - if (nextAttackPhase && target.scene.tryRemovePhase((phase: MovePhase) => phase.pokemon === target)) { - target.scene.prependToPhase(new MovePhase(target.scene, target, [ ...nextAttackPhase.targets ], nextAttackPhase.move), MovePhase); + const nextAttackPhase = globalScene.findPhase((phase) => phase.pokemon === target); + if (nextAttackPhase && globalScene.tryRemovePhase((phase: MovePhase) => phase.pokemon === target)) { + globalScene.prependToPhase(new MovePhase(target, [ ...nextAttackPhase.targets ], nextAttackPhase.move), MovePhase); } return true; } } -const failOnGravityCondition: MoveConditionFunc = (user, target, move) => !user.scene.arena.getTag(ArenaTagType.GRAVITY); +const failOnGravityCondition: MoveConditionFunc = (user, target, move) => !globalScene.arena.getTag(ArenaTagType.GRAVITY); const failOnBossCondition: MoveConditionFunc = (user, target, move) => !target.isBossImmune(); -const failIfSingleBattle: MoveConditionFunc = (user, target, move) => user.scene.currentBattle.double; +const failIfSingleBattle: MoveConditionFunc = (user, target, move) => globalScene.currentBattle.double; const failIfDampCondition: MoveConditionFunc = (user, target, move) => { const cancelled = new Utils.BooleanHolder(false); - user.scene.getField(true).map(p=>applyAbAttrs(FieldPreventExplosiveMovesAbAttr, p, cancelled)); + globalScene.getField(true).map(p=>applyAbAttrs(FieldPreventExplosiveMovesAbAttr, p, cancelled)); // Queue a message if an ability prevented usage of the move if (cancelled.value) { - user.scene.queueMessage(i18next.t("moveTriggers:cannotUseMove", { pokemonName: getPokemonNameWithAffix(user), moveName: move.name })); + globalScene.queueMessage(i18next.t("moveTriggers:cannotUseMove", { pokemonName: getPokemonNameWithAffix(user), moveName: move.name })); } return !cancelled.value; }; @@ -7671,10 +7672,10 @@ const userSleptOrComatoseCondition: MoveConditionFunc = (user: Pokemon, target: const targetSleptOrComatoseCondition: MoveConditionFunc = (user: Pokemon, target: Pokemon, move: Move) => target.status?.effect === StatusEffect.SLEEP || target.hasAbility(Abilities.COMATOSE); -const failIfLastCondition: MoveConditionFunc = (user: Pokemon, target: Pokemon, move: Move) => user.scene.phaseQueue.find(phase => phase instanceof MovePhase) !== undefined; +const failIfLastCondition: MoveConditionFunc = (user: Pokemon, target: Pokemon, move: Move) => globalScene.phaseQueue.find(phase => phase instanceof MovePhase) !== undefined; const failIfLastInPartyCondition: MoveConditionFunc = (user: Pokemon, target: Pokemon, move: Move) => { - const party: Pokemon[] = user.isPlayer() ? user.scene.getPlayerParty() : user.scene.getEnemyParty(); + const party: Pokemon[] = user.isPlayer() ? globalScene.getPlayerParty() : globalScene.getEnemyParty(); return party.some(pokemon => pokemon.isActive() && !pokemon.isOnField()); }; @@ -7757,7 +7758,7 @@ export class FirstMoveCondition extends MoveCondition { export class UpperHandCondition extends MoveCondition { constructor() { super((user, target, move) => { - const targetCommand = user.scene.currentBattle.turnCommands[target.getBattlerIndex()]; + const targetCommand = globalScene.currentBattle.turnCommands[target.getBattlerIndex()]; return !!targetCommand && targetCommand.command === Command.FIGHT @@ -7816,13 +7817,13 @@ export class ResistLastMoveTypeAttr extends MoveEffectAttr { return false; } const userTypes = user.getTypes(); - const validTypes = this.getTypeResistances(user.scene.gameMode, moveData.type).filter(t => !userTypes.includes(t)); // valid types are ones that are not already the user's types + const validTypes = this.getTypeResistances(globalScene.gameMode, moveData.type).filter(t => !userTypes.includes(t)); // valid types are ones that are not already the user's types if (!validTypes.length) { return false; } const type = validTypes[user.randSeedInt(validTypes.length)]; user.summonData.types = [ type ]; - user.scene.queueMessage(i18next.t("battle:transformedIntoType", { pokemonName: getPokemonNameWithAffix(user), type: Utils.toReadableString(Type[type]) })); + globalScene.queueMessage(i18next.t("battle:transformedIntoType", { pokemonName: getPokemonNameWithAffix(user), type: Utils.toReadableString(Type[type]) })); user.updateInfo(); return true; @@ -7881,7 +7882,7 @@ export class ExposedMoveAttr extends AddBattlerTagAttr { return false; } - user.scene.queueMessage(i18next.t("moveTriggers:exposedMove", { pokemonName: getPokemonNameWithAffix(user), targetPokemonName: getPokemonNameWithAffix(target) })); + globalScene.queueMessage(i18next.t("moveTriggers:exposedMove", { pokemonName: getPokemonNameWithAffix(user), targetPokemonName: getPokemonNameWithAffix(target) })); return true; } @@ -8200,7 +8201,7 @@ export function initMoves() { .makesContact(false), new AttackMove(Moves.EARTHQUAKE, Type.GROUND, MoveCategory.PHYSICAL, 100, 100, 10, -1, 0, 1) .attr(HitsTagForDoubleDamageAttr, BattlerTagType.UNDERGROUND) - .attr(MovePowerMultiplierAttr, (user, target, move) => user.scene.arena.getTerrainType() === TerrainType.GRASSY && target.isGrounded() ? 0.5 : 1) + .attr(MovePowerMultiplierAttr, (user, target, move) => globalScene.arena.getTerrainType() === TerrainType.GRASSY && target.isGrounded() ? 0.5 : 1) .makesContact(false) .target(MoveTarget.ALL_NEAR_OTHERS), new AttackMove(Moves.FISSURE, Type.GROUND, MoveCategory.PHYSICAL, 200, 30, 5, -1, 0, 1) @@ -8479,7 +8480,7 @@ export function initMoves() { .attr(ConfuseAttr), new SelfStatusMove(Moves.BELLY_DRUM, Type.NORMAL, -1, 10, -1, 0, 2) .attr(CutHpStatStageBoostAttr, [ Stat.ATK ], 12, 2, (user) => { - user.scene.queueMessage(i18next.t("moveTriggers:cutOwnHpAndMaximizedStat", { pokemonName: getPokemonNameWithAffix(user), statName: i18next.t(getStatKey(Stat.ATK)) })); + globalScene.queueMessage(i18next.t("moveTriggers:cutOwnHpAndMaximizedStat", { pokemonName: getPokemonNameWithAffix(user), statName: i18next.t(getStatKey(Stat.ATK)) })); }), new AttackMove(Moves.SLUDGE_BOMB, Type.POISON, MoveCategory.SPECIAL, 90, 100, 10, 30, 0, 2) .attr(StatusEffectAttr, StatusEffect.POISON) @@ -8599,7 +8600,7 @@ export function initMoves() { new AttackMove(Moves.MAGNITUDE, Type.GROUND, MoveCategory.PHYSICAL, -1, 100, 30, -1, 0, 2) .attr(PreMoveMessageAttr, magnitudeMessageFunc) .attr(MagnitudePowerAttr) - .attr(MovePowerMultiplierAttr, (user, target, move) => user.scene.arena.getTerrainType() === TerrainType.GRASSY && target.isGrounded() ? 0.5 : 1) + .attr(MovePowerMultiplierAttr, (user, target, move) => globalScene.arena.getTerrainType() === TerrainType.GRASSY && target.isGrounded() ? 0.5 : 1) .attr(HitsTagForDoubleDamageAttr, BattlerTagType.UNDERGROUND) .makesContact(false) .target(MoveTarget.ALL_NEAR_OTHERS), @@ -8875,7 +8876,7 @@ export function initMoves() { .attr(FlinchAttr), new AttackMove(Moves.WEATHER_BALL, Type.NORMAL, MoveCategory.SPECIAL, 50, 100, 10, -1, 0, 3) .attr(WeatherBallTypeAttr) - .attr(MovePowerMultiplierAttr, (user, target, move) => [ WeatherType.SUNNY, WeatherType.RAIN, WeatherType.SANDSTORM, WeatherType.HAIL, WeatherType.SNOW, WeatherType.FOG, WeatherType.HEAVY_RAIN, WeatherType.HARSH_SUN ].includes(user.scene.arena.weather?.weatherType!) && !user.scene.arena.weather?.isEffectSuppressed(user.scene) ? 2 : 1) // TODO: is this bang correct? + .attr(MovePowerMultiplierAttr, (user, target, move) => [ WeatherType.SUNNY, WeatherType.RAIN, WeatherType.SANDSTORM, WeatherType.HAIL, WeatherType.SNOW, WeatherType.FOG, WeatherType.HEAVY_RAIN, WeatherType.HARSH_SUN ].includes(globalScene.arena.weather?.weatherType!) && !globalScene.arena.weather?.isEffectSuppressed() ? 2 : 1) // TODO: is this bang correct? .ballBombMove(), new StatusMove(Moves.AROMATHERAPY, Type.GRASS, -1, 5, -1, 0, 3) .attr(PartyStatusCureAttr, i18next.t("moveTriggers:soothingAromaWaftedThroughArea"), Abilities.SAP_SIPPER) @@ -9050,7 +9051,7 @@ export function initMoves() { new AttackMove(Moves.CLOSE_COMBAT, Type.FIGHTING, MoveCategory.PHYSICAL, 120, 100, 5, -1, 0, 4) .attr(StatStageChangeAttr, [ Stat.DEF, Stat.SPDEF ], -1, true), new AttackMove(Moves.PAYBACK, Type.DARK, MoveCategory.PHYSICAL, 50, 100, 10, -1, 0, 4) - .attr(MovePowerMultiplierAttr, (user, target, move) => target.getLastXMoves(1).find(m => m.turn === target.scene.currentBattle.turn) || user.scene.currentBattle.turnCommands[target.getBattlerIndex()]?.command === Command.BALL ? 2 : 1), + .attr(MovePowerMultiplierAttr, (user, target, move) => target.getLastXMoves(1).find(m => m.turn === globalScene.currentBattle.turn) || globalScene.currentBattle.turnCommands[target.getBattlerIndex()]?.command === Command.BALL ? 2 : 1), new AttackMove(Moves.ASSURANCE, Type.DARK, MoveCategory.PHYSICAL, 60, 100, 10, -1, 0, 4) .attr(MovePowerMultiplierAttr, (user, target, move) => target.turnData.damageTaken > 0 ? 2 : 1), new StatusMove(Moves.EMBARGO, Type.DARK, 100, 15, -1, 0, 4) @@ -9106,7 +9107,7 @@ export function initMoves() { new StatusMove(Moves.WORRY_SEED, Type.GRASS, 100, 10, -1, 0, 4) .attr(AbilityChangeAttr, Abilities.INSOMNIA), new AttackMove(Moves.SUCKER_PUNCH, Type.DARK, MoveCategory.PHYSICAL, 70, 100, 5, -1, 1, 4) - .condition((user, target, move) => user.scene.currentBattle.turnCommands[target.getBattlerIndex()]?.command === Command.FIGHT && !target.turnData.acted && allMoves[user.scene.currentBattle.turnCommands[target.getBattlerIndex()]?.move?.move!].category !== MoveCategory.STATUS), // TODO: is this bang correct? + .condition((user, target, move) => globalScene.currentBattle.turnCommands[target.getBattlerIndex()]?.command === Command.FIGHT && !target.turnData.acted && allMoves[globalScene.currentBattle.turnCommands[target.getBattlerIndex()]?.move?.move!].category !== MoveCategory.STATUS), // TODO: is this bang correct? new StatusMove(Moves.TOXIC_SPIKES, Type.POISON, -1, 20, -1, 0, 4) .attr(AddArenaTrapTagAttr, ArenaTagType.TOXIC_SPIKES) .target(MoveTarget.ENEMY_SIDE), @@ -9117,7 +9118,7 @@ export function initMoves() { .attr(AddBattlerTagAttr, BattlerTagType.AQUA_RING, true, true), new SelfStatusMove(Moves.MAGNET_RISE, Type.ELECTRIC, -1, 10, -1, 0, 4) .attr(AddBattlerTagAttr, BattlerTagType.FLOATING, true, true, 5) - .condition((user, target, move) => !user.scene.arena.getTag(ArenaTagType.GRAVITY) && [ BattlerTagType.FLOATING, BattlerTagType.IGNORE_FLYING, BattlerTagType.INGRAIN ].every((tag) => !user.getTag(tag))), + .condition((user, target, move) => !globalScene.arena.getTag(ArenaTagType.GRAVITY) && [ BattlerTagType.FLOATING, BattlerTagType.IGNORE_FLYING, BattlerTagType.INGRAIN ].every((tag) => !user.getTag(tag))), new AttackMove(Moves.FLARE_BLITZ, Type.FIRE, MoveCategory.PHYSICAL, 120, 100, 15, 10, 0, 4) .attr(RecoilAttr, false, 0.33) .attr(HealStatusEffectAttr, true, StatusEffect.FREEZE) @@ -9464,9 +9465,9 @@ export function initMoves() { .attr(CopyTypeAttr), new AttackMove(Moves.RETALIATE, Type.NORMAL, MoveCategory.PHYSICAL, 70, 100, 5, -1, 0, 5) .attr(MovePowerMultiplierAttr, (user, target, move) => { - const turn = user.scene.currentBattle.turn; - const lastPlayerFaint = user.scene.currentBattle.playerFaintsHistory[user.scene.currentBattle.playerFaintsHistory.length - 1]; - const lastEnemyFaint = user.scene.currentBattle.enemyFaintsHistory[user.scene.currentBattle.enemyFaintsHistory.length - 1]; + const turn = globalScene.currentBattle.turn; + const lastPlayerFaint = globalScene.currentBattle.playerFaintsHistory[globalScene.currentBattle.playerFaintsHistory.length - 1]; + const lastEnemyFaint = globalScene.currentBattle.enemyFaintsHistory[globalScene.currentBattle.enemyFaintsHistory.length - 1]; return ( (lastPlayerFaint !== undefined && turn - lastPlayerFaint.turn === 1 && user.isPlayer()) || (lastEnemyFaint !== undefined && turn - lastEnemyFaint.turn === 1 && !user.isPlayer()) @@ -9512,7 +9513,7 @@ export function initMoves() { .target(MoveTarget.ALL_NEAR_ENEMIES), new AttackMove(Moves.BULLDOZE, Type.GROUND, MoveCategory.PHYSICAL, 60, 100, 20, 100, 0, 5) .attr(StatStageChangeAttr, [ Stat.SPD ], -1) - .attr(MovePowerMultiplierAttr, (user, target, move) => user.scene.arena.getTerrainType() === TerrainType.GRASSY && target.isGrounded() ? 0.5 : 1) + .attr(MovePowerMultiplierAttr, (user, target, move) => globalScene.arena.getTerrainType() === TerrainType.GRASSY && target.isGrounded() ? 0.5 : 1) .makesContact(false) .target(MoveTarget.ALL_NEAR_OTHERS), new AttackMove(Moves.FROST_BREATH, Type.ICE, MoveCategory.SPECIAL, 60, 90, 10, 100, 0, 5) @@ -9633,7 +9634,7 @@ export function initMoves() { .target(MoveTarget.ALL) .condition((user, target, move) => { // If any fielded pokémon is grass-type and grounded. - return [ ...user.scene.getEnemyParty(), ...user.scene.getPlayerParty() ].some((poke) => poke.isOfType(Type.GRASS) && poke.isGrounded()); + return [ ...globalScene.getEnemyParty(), ...globalScene.getPlayerParty() ].some((poke) => poke.isOfType(Type.GRASS) && poke.isGrounded()); }) .attr(StatStageChangeAttr, [ Stat.ATK, Stat.SPATK ], 1, false, { condition: (user, target, move) => target.isOfType(Type.GRASS) && target.isGrounded() }), new StatusMove(Moves.STICKY_WEB, Type.BUG, -1, 20, -1, 0, 6) @@ -9954,7 +9955,7 @@ export function initMoves() { .attr(StatStageChangeAttr, [ Stat.SPD ], -1, true) .punchingMove(), new StatusMove(Moves.FLORAL_HEALING, Type.FAIRY, -1, 10, -1, 0, 7) - .attr(BoostHealAttr, 0.5, 2 / 3, true, false, (user, target, move) => user.scene.arena.terrain?.terrainType === TerrainType.GRASSY) + .attr(BoostHealAttr, 0.5, 2 / 3, true, false, (user, target, move) => globalScene.arena.terrain?.terrainType === TerrainType.GRASSY) .triageMove(), new AttackMove(Moves.HIGH_HORSEPOWER, Type.GROUND, MoveCategory.PHYSICAL, 95, 95, 10, -1, 0, 7), new StatusMove(Moves.STRENGTH_SAP, Type.GRASS, 100, 10, -1, 0, 7) @@ -10007,7 +10008,7 @@ export function initMoves() { .attr(HealStatusEffectAttr, true, StatusEffect.FREEZE) .attr(AddBattlerTagAttr, BattlerTagType.BURNED_UP, true, false) .attr(RemoveTypeAttr, Type.FIRE, (user) => { - user.scene.queueMessage(i18next.t("moveTriggers:burnedItselfOut", { pokemonName: getPokemonNameWithAffix(user) })); + globalScene.queueMessage(i18next.t("moveTriggers:burnedItselfOut", { pokemonName: getPokemonNameWithAffix(user) })); }), new StatusMove(Moves.SPEED_SWAP, Type.PSYCHIC, -1, 10, -1, 0, 7) .attr(SwapStatAttr, Stat.SPD) @@ -10043,7 +10044,7 @@ export function initMoves() { new AttackMove(Moves.BRUTAL_SWING, Type.DARK, MoveCategory.PHYSICAL, 60, 100, 20, -1, 0, 7) .target(MoveTarget.ALL_NEAR_OTHERS), new StatusMove(Moves.AURORA_VEIL, Type.ICE, -1, 20, -1, 0, 7) - .condition((user, target, move) => (user.scene.arena.weather?.weatherType === WeatherType.HAIL || user.scene.arena.weather?.weatherType === WeatherType.SNOW) && !user.scene.arena.weather?.isEffectSuppressed(user.scene)) + .condition((user, target, move) => (globalScene.arena.weather?.weatherType === WeatherType.HAIL || globalScene.arena.weather?.weatherType === WeatherType.SNOW) && !globalScene.arena.weather?.isEffectSuppressed()) .attr(AddArenaTagAttr, ArenaTagType.AURORA_VEIL, 5, true) .target(MoveTarget.USER_SIDE), /* Unused */ @@ -10196,10 +10197,10 @@ export function initMoves() { new AttackMove(Moves.DYNAMAX_CANNON, Type.DRAGON, MoveCategory.SPECIAL, 100, 100, 5, -1, 0, 8) .attr(MovePowerMultiplierAttr, (user, target, move) => { // Move is only stronger against overleveled foes. - if (target.level > target.scene.getMaxExpLevel()) { + if (target.level > globalScene.getMaxExpLevel()) { const dynamaxCannonPercentMarginBeforeFullDamage = 0.05; // How much % above MaxExpLevel of wave will the target need to be to take full damage. // The move's power scales as the margin is approached, reaching double power when it does or goes over it. - return 1 + Math.min(1, (target.level - target.scene.getMaxExpLevel()) / (target.scene.getMaxExpLevel() * dynamaxCannonPercentMarginBeforeFullDamage)); + return 1 + Math.min(1, (target.level - globalScene.getMaxExpLevel()) / (globalScene.getMaxExpLevel() * dynamaxCannonPercentMarginBeforeFullDamage)); } else { return 1; } @@ -10217,7 +10218,7 @@ export function initMoves() { .attr(EatBerryAttr) .attr(StatStageChangeAttr, [ Stat.DEF ], 2, true) .condition((user) => { - const userBerries = user.scene.findModifiers(m => m instanceof BerryModifier, user.isPlayer()); + const userBerries = globalScene.findModifiers(m => m instanceof BerryModifier, user.isPlayer()); return userBerries.length > 0; }) .edgeCase(), // Stuff Cheeks should not be selectable when the user does not have a berry, see wiki @@ -10359,7 +10360,7 @@ export function initMoves() { .attr(StatStageChangeAttr, [ Stat.SPDEF ], -1), new AttackMove(Moves.GRAV_APPLE, Type.GRASS, MoveCategory.PHYSICAL, 80, 100, 10, 100, 0, 8) .attr(StatStageChangeAttr, [ Stat.DEF ], -1) - .attr(MovePowerMultiplierAttr, (user, target, move) => user.scene.arena.getTag(ArenaTagType.GRAVITY) ? 1.5 : 1) + .attr(MovePowerMultiplierAttr, (user, target, move) => globalScene.arena.getTag(ArenaTagType.GRAVITY) ? 1.5 : 1) .makesContact(false), new AttackMove(Moves.SPIRIT_BREAK, Type.FAIRY, MoveCategory.PHYSICAL, 75, 100, 15, 100, 0, 8) .attr(StatStageChangeAttr, [ Stat.SPATK ], -1), @@ -10381,11 +10382,11 @@ export function initMoves() { new AttackMove(Moves.STEEL_BEAM, Type.STEEL, MoveCategory.SPECIAL, 140, 95, 5, -1, 0, 8) .attr(HalfSacrificialAttr), new AttackMove(Moves.EXPANDING_FORCE, Type.PSYCHIC, MoveCategory.SPECIAL, 80, 100, 10, -1, 0, 8) - .attr(MovePowerMultiplierAttr, (user, target, move) => user.scene.arena.getTerrainType() === TerrainType.PSYCHIC && user.isGrounded() ? 1.5 : 1) - .attr(VariableTargetAttr, (user, target, move) => user.scene.arena.getTerrainType() === TerrainType.PSYCHIC && user.isGrounded() ? MoveTarget.ALL_NEAR_ENEMIES : MoveTarget.NEAR_OTHER), + .attr(MovePowerMultiplierAttr, (user, target, move) => globalScene.arena.getTerrainType() === TerrainType.PSYCHIC && user.isGrounded() ? 1.5 : 1) + .attr(VariableTargetAttr, (user, target, move) => globalScene.arena.getTerrainType() === TerrainType.PSYCHIC && user.isGrounded() ? MoveTarget.ALL_NEAR_ENEMIES : MoveTarget.NEAR_OTHER), new AttackMove(Moves.STEEL_ROLLER, Type.STEEL, MoveCategory.PHYSICAL, 130, 100, 5, -1, 0, 8) .attr(ClearTerrainAttr) - .condition((user, target, move) => !!user.scene.arena.terrain), + .condition((user, target, move) => !!globalScene.arena.terrain), new AttackMove(Moves.SCALE_SHOT, Type.DRAGON, MoveCategory.PHYSICAL, 25, 90, 20, -1, 0, 8) .attr(StatStageChangeAttr, [ Stat.SPD ], 1, true, { lastHitOnly: true }) .attr(StatStageChangeAttr, [ Stat.DEF ], -1, true, { lastHitOnly: true }) @@ -10402,16 +10403,16 @@ export function initMoves() { new AttackMove(Moves.MISTY_EXPLOSION, Type.FAIRY, MoveCategory.SPECIAL, 100, 100, 5, -1, 0, 8) .attr(SacrificialAttr) .target(MoveTarget.ALL_NEAR_OTHERS) - .attr(MovePowerMultiplierAttr, (user, target, move) => user.scene.arena.getTerrainType() === TerrainType.MISTY && user.isGrounded() ? 1.5 : 1) + .attr(MovePowerMultiplierAttr, (user, target, move) => globalScene.arena.getTerrainType() === TerrainType.MISTY && user.isGrounded() ? 1.5 : 1) .condition(failIfDampCondition) .makesContact(false), new AttackMove(Moves.GRASSY_GLIDE, Type.GRASS, MoveCategory.PHYSICAL, 55, 100, 20, -1, 0, 8) - .attr(IncrementMovePriorityAttr, (user, target, move) => user.scene.arena.getTerrainType() === TerrainType.GRASSY && user.isGrounded()), + .attr(IncrementMovePriorityAttr, (user, target, move) => globalScene.arena.getTerrainType() === TerrainType.GRASSY && user.isGrounded()), new AttackMove(Moves.RISING_VOLTAGE, Type.ELECTRIC, MoveCategory.SPECIAL, 70, 100, 20, -1, 0, 8) - .attr(MovePowerMultiplierAttr, (user, target, move) => user.scene.arena.getTerrainType() === TerrainType.ELECTRIC && target.isGrounded() ? 2 : 1), + .attr(MovePowerMultiplierAttr, (user, target, move) => globalScene.arena.getTerrainType() === TerrainType.ELECTRIC && target.isGrounded() ? 2 : 1), new AttackMove(Moves.TERRAIN_PULSE, Type.NORMAL, MoveCategory.SPECIAL, 50, 100, 10, -1, 0, 8) .attr(TerrainPulseTypeAttr) - .attr(MovePowerMultiplierAttr, (user, target, move) => user.scene.arena.getTerrainType() !== TerrainType.NONE && user.isGrounded() ? 2 : 1) + .attr(MovePowerMultiplierAttr, (user, target, move) => globalScene.arena.getTerrainType() !== TerrainType.NONE && user.isGrounded() ? 2 : 1) .pulseMove(), new AttackMove(Moves.SKITTER_SMACK, Type.BUG, MoveCategory.PHYSICAL, 70, 90, 10, 100, 0, 8) .attr(StatStageChangeAttr, [ Stat.SPATK ], -1), @@ -10671,7 +10672,7 @@ export function initMoves() { .recklessMove(), new AttackMove(Moves.LAST_RESPECTS, Type.GHOST, MoveCategory.PHYSICAL, 50, 100, 10, -1, 0, 9) .partial() // Counter resets every wave instead of on arena reset - .attr(MovePowerMultiplierAttr, (user, target, move) => 1 + Math.min(user.isPlayer() ? user.scene.currentBattle.playerFaints : user.scene.currentBattle.enemyFaints, 100)) + .attr(MovePowerMultiplierAttr, (user, target, move) => 1 + Math.min(user.isPlayer() ? globalScene.currentBattle.playerFaints : globalScene.currentBattle.enemyFaints, 100)) .makesContact(false), new AttackMove(Moves.LUMINA_CRASH, Type.PSYCHIC, MoveCategory.SPECIAL, 80, 100, 10, 100, 0, 9) .attr(StatStageChangeAttr, [ Stat.SPDEF ], -2), @@ -10695,7 +10696,7 @@ export function initMoves() { .attr(AddBattlerTagAttr, BattlerTagType.ALWAYS_GET_HIT, true, false, 0, 0, true) .attr(AddBattlerTagAttr, BattlerTagType.RECEIVE_DOUBLE_DAMAGE, true, false, 0, 0, true) .condition((user, target, move) => { - return !(target.getTag(BattlerTagType.PROTECTED)?.tagType === "PROTECTED" || target.scene.arena.getTag(ArenaTagType.MAT_BLOCK)?.tagType === "MAT_BLOCK"); + return !(target.getTag(BattlerTagType.PROTECTED)?.tagType === "PROTECTED" || globalScene.arena.getTag(ArenaTagType.MAT_BLOCK)?.tagType === "MAT_BLOCK"); }), new StatusMove(Moves.REVIVAL_BLESSING, Type.NORMAL, -1, 1, -1, 0, 9) .triageMove() @@ -10746,11 +10747,11 @@ export function initMoves() { .attr(StatStageChangeAttr, [ Stat.SPATK ], -1, true, { firstTargetOnly: true }) .target(MoveTarget.ALL_NEAR_ENEMIES), new AttackMove(Moves.PSYBLADE, Type.PSYCHIC, MoveCategory.PHYSICAL, 80, 100, 15, -1, 0, 9) - .attr(MovePowerMultiplierAttr, (user, target, move) => user.scene.arena.getTerrainType() === TerrainType.ELECTRIC && user.isGrounded() ? 1.5 : 1) + .attr(MovePowerMultiplierAttr, (user, target, move) => globalScene.arena.getTerrainType() === TerrainType.ELECTRIC && user.isGrounded() ? 1.5 : 1) .slicingMove(), new AttackMove(Moves.HYDRO_STEAM, Type.WATER, MoveCategory.SPECIAL, 80, 100, 15, -1, 0, 9) .attr(IgnoreWeatherTypeDebuffAttr, WeatherType.SUNNY) - .attr(MovePowerMultiplierAttr, (user, target, move) => [ WeatherType.SUNNY, WeatherType.HARSH_SUN ].includes(user.scene.arena.weather?.weatherType!) && !user.scene.arena.weather?.isEffectSuppressed(user.scene) ? 1.5 : 1), // TODO: is this bang correct? + .attr(MovePowerMultiplierAttr, (user, target, move) => [ WeatherType.SUNNY, WeatherType.HARSH_SUN ].includes(globalScene.arena.weather?.weatherType!) && !globalScene.arena.weather?.isEffectSuppressed() ? 1.5 : 1), // TODO: is this bang correct? new AttackMove(Moves.RUINATION, Type.DARK, MoveCategory.SPECIAL, -1, 90, 10, -1, 0, 9) .attr(TargetHalfHpDamageAttr), new AttackMove(Moves.COLLISION_COURSE, Type.FIGHTING, MoveCategory.PHYSICAL, 100, 100, 5, -1, 0, 9) @@ -10799,7 +10800,7 @@ export function initMoves() { }) .attr(AddBattlerTagAttr, BattlerTagType.DOUBLE_SHOCKED, true, false) .attr(RemoveTypeAttr, Type.ELECTRIC, (user) => { - user.scene.queueMessage(i18next.t("moveTriggers:usedUpAllElectricity", { pokemonName: getPokemonNameWithAffix(user) })); + globalScene.queueMessage(i18next.t("moveTriggers:usedUpAllElectricity", { pokemonName: getPokemonNameWithAffix(user) })); }), new AttackMove(Moves.GIGATON_HAMMER, Type.STEEL, MoveCategory.PHYSICAL, 160, 100, 5, -1, 0, 9) .makesContact(false) @@ -10866,7 +10867,7 @@ export function initMoves() { .attr(ProtectAttr, BattlerTagType.BURNING_BULWARK) .condition(failIfLastCondition), new AttackMove(Moves.THUNDERCLAP, Type.ELECTRIC, MoveCategory.SPECIAL, 70, 100, 5, -1, 1, 9) - .condition((user, target, move) => user.scene.currentBattle.turnCommands[target.getBattlerIndex()]?.command === Command.FIGHT && !target.turnData.acted && allMoves[user.scene.currentBattle.turnCommands[target.getBattlerIndex()]?.move?.move!].category !== MoveCategory.STATUS), // TODO: is this bang correct? + .condition((user, target, move) => globalScene.currentBattle.turnCommands[target.getBattlerIndex()]?.command === Command.FIGHT && !target.turnData.acted && allMoves[globalScene.currentBattle.turnCommands[target.getBattlerIndex()]?.move?.move!].category !== MoveCategory.STATUS), // TODO: is this bang correct? new AttackMove(Moves.MIGHTY_CLEAVE, Type.ROCK, MoveCategory.PHYSICAL, 95, 100, 5, -1, 0, 9) .slicingMove() .ignoresProtect(), diff --git a/src/data/mystery-encounters/encounters/a-trainers-test-encounter.ts b/src/data/mystery-encounters/encounters/a-trainers-test-encounter.ts index f0155b4f2a4..407644ee939 100644 --- a/src/data/mystery-encounters/encounters/a-trainers-test-encounter.ts +++ b/src/data/mystery-encounters/encounters/a-trainers-test-encounter.ts @@ -1,15 +1,17 @@ -import { EnemyPartyConfig, initBattleWithEnemyConfig, leaveEncounterWithoutBattle, setEncounterRewards, transitionMysteryEncounterIntroVisuals, } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import { globalScene } from "#app/global-scene"; +import type { EnemyPartyConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import { initBattleWithEnemyConfig, leaveEncounterWithoutBattle, setEncounterRewards, transitionMysteryEncounterIntroVisuals, } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { trainerConfigs, } from "#app/data/trainer-config"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import BattleScene from "#app/battle-scene"; -import MysteryEncounter, { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; +import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { TrainerType } from "#enums/trainer-type"; import { Species } from "#enums/species"; import { getSpriteKeysFromSpecies } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; import { randSeedInt } from "#app/utils"; import i18next from "i18next"; -import { IEggOptions } from "#app/data/egg"; +import type { IEggOptions } from "#app/data/egg"; import { EggSourceType } from "#enums/egg-source-types"; import { EggTier } from "#enums/egg-type"; import { PartyHealPhase } from "#app/phases/party-heal-phase"; @@ -36,8 +38,8 @@ export const ATrainersTestEncounter: MysteryEncounter = }, ]) .withAutoHideIntroVisuals(false) - .withOnInit((scene: BattleScene) => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withOnInit(() => { + const encounter = globalScene.currentBattle.mysteryEncounter!; // Randomly pick from 1 of the 5 stat trainers to spawn let trainerType: TrainerType; @@ -138,23 +140,22 @@ export const ATrainersTestEncounter: MysteryEncounter = buttonLabel: `${namespace}:option.1.label`, buttonTooltip: `${namespace}:option.1.tooltip` }, - async (scene: BattleScene) => { - const encounter = scene.currentBattle.mysteryEncounter!; + async () => { + const encounter = globalScene.currentBattle.mysteryEncounter!; // Battle the stat trainer for an Egg and great rewards const config: EnemyPartyConfig = encounter.enemyPartyConfigs[0]; - await transitionMysteryEncounterIntroVisuals(scene); + await transitionMysteryEncounterIntroVisuals(); const eggOptions: IEggOptions = { - scene, pulled: false, sourceType: EggSourceType.EVENT, eggDescriptor: encounter.misc.trainerEggDescription, tier: EggTier.EPIC }; encounter.setDialogueToken("eggType", i18next.t(`${namespace}:eggTypes.epic`)); - setEncounterRewards(scene, { guaranteedModifierTypeFuncs: [ modifierTypes.SACRED_ASH ], guaranteedModifierTiers: [ ModifierTier.ROGUE, ModifierTier.ULTRA ], fillRemaining: true }, [ eggOptions ]); - await initBattleWithEnemyConfig(scene, config); + setEncounterRewards({ guaranteedModifierTypeFuncs: [ modifierTypes.SACRED_ASH ], guaranteedModifierTiers: [ ModifierTier.ROGUE, ModifierTier.ULTRA ], fillRemaining: true }, [ eggOptions ]); + await initBattleWithEnemyConfig(config); } ) .withSimpleOption( @@ -162,21 +163,20 @@ export const ATrainersTestEncounter: MysteryEncounter = buttonLabel: `${namespace}:option.2.label`, buttonTooltip: `${namespace}:option.2.tooltip` }, - async (scene: BattleScene) => { - const encounter = scene.currentBattle.mysteryEncounter!; + async () => { + const encounter = globalScene.currentBattle.mysteryEncounter!; // Full heal party - scene.unshiftPhase(new PartyHealPhase(scene, true)); + globalScene.unshiftPhase(new PartyHealPhase(true)); const eggOptions: IEggOptions = { - scene, pulled: false, sourceType: EggSourceType.EVENT, eggDescriptor: encounter.misc.trainerEggDescription, tier: EggTier.RARE }; encounter.setDialogueToken("eggType", i18next.t(`${namespace}:eggTypes.rare`)); - setEncounterRewards(scene, { fillRemaining: false, rerollMultiplier: -1 }, [ eggOptions ]); - leaveEncounterWithoutBattle(scene); + setEncounterRewards({ fillRemaining: false, rerollMultiplier: -1 }, [ eggOptions ]); + leaveEncounterWithoutBattle(); } ) .withOutroDialogue([ diff --git a/src/data/mystery-encounters/encounters/absolute-avarice-encounter.ts b/src/data/mystery-encounters/encounters/absolute-avarice-encounter.ts index 6b0f239d28d..1499d953941 100644 --- a/src/data/mystery-encounters/encounters/absolute-avarice-encounter.ts +++ b/src/data/mystery-encounters/encounters/absolute-avarice-encounter.ts @@ -1,10 +1,14 @@ -import { EnemyPartyConfig, generateModifierType, initBattleWithEnemyConfig, leaveEncounterWithoutBattle, setEncounterRewards, transitionMysteryEncounterIntroVisuals, } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import Pokemon, { EnemyPokemon, PokemonMove } from "#app/field/pokemon"; -import { BerryModifierType, modifierTypes, PokemonHeldItemModifierType } from "#app/modifier/modifier-type"; +import type { EnemyPartyConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import { generateModifierType, initBattleWithEnemyConfig, leaveEncounterWithoutBattle, setEncounterRewards, transitionMysteryEncounterIntroVisuals, } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import type Pokemon from "#app/field/pokemon"; +import { EnemyPokemon, PokemonMove } from "#app/field/pokemon"; +import type { BerryModifierType, PokemonHeldItemModifierType } from "#app/modifier/modifier-type"; +import { modifierTypes } from "#app/modifier/modifier-type"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { Species } from "#enums/species"; -import BattleScene from "#app/battle-scene"; -import MysteryEncounter, { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; +import { globalScene } from "#app/global-scene"; +import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; import { PersistentModifierRequirement } from "#app/data/mystery-encounters/mystery-encounter-requirements"; import { queueEncounterMessage } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; @@ -19,8 +23,8 @@ import { BattlerIndex } from "#app/battle"; import { applyModifierTypeToPlayerPokemon, catchPokemon, getHighestLevelPlayerPokemon } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; import { TrainerSlot } from "#app/data/trainer-config"; import { PokeballType } from "#enums/pokeball"; -import HeldModifierConfig from "#app/interfaces/held-modifier-config"; -import { BerryType } from "#enums/berry-type"; +import type HeldModifierConfig from "#app/interfaces/held-modifier-config"; +import type { BerryType } from "#enums/berry-type"; import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; import { Stat } from "#enums/stat"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/game-mode"; @@ -170,18 +174,18 @@ export const AbsoluteAvariceEncounter: MysteryEncounter = .withTitle(`${namespace}:title`) .withDescription(`${namespace}:description`) .withQuery(`${namespace}:query`) - .withOnInit((scene: BattleScene) => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withOnInit(() => { + const encounter = globalScene.currentBattle.mysteryEncounter!; - scene.loadSe("PRSFX- Bug Bite", "battle_anims", "PRSFX- Bug Bite.wav"); - scene.loadSe("Follow Me", "battle_anims", "Follow Me.mp3"); + globalScene.loadSe("PRSFX- Bug Bite", "battle_anims", "PRSFX- Bug Bite.wav"); + globalScene.loadSe("Follow Me", "battle_anims", "Follow Me.mp3"); // Get all player berry items, remove from party, and store reference - const berryItems = scene.findModifiers(m => m instanceof BerryModifier) as BerryModifier[]; + const berryItems = globalScene.findModifiers(m => m instanceof BerryModifier) as BerryModifier[]; // Sort berries by party member ID to more easily re-add later if necessary const berryItemsMap = new Map(); - scene.getPlayerParty().forEach(pokemon => { + globalScene.getPlayerParty().forEach(pokemon => { const pokemonBerries = berryItems.filter(b => b.pokemonId === pokemon.id); if (pokemonBerries?.length > 0) { berryItemsMap.set(pokemon.id, pokemonBerries); @@ -196,7 +200,7 @@ export const AbsoluteAvariceEncounter: MysteryEncounter = // Can't define stack count on a ModifierType, have to just create separate instances for each stack // Overflow berries will be "lost" on the boss, but it's un-catchable anyway for (let i = 0; i < berryMod.stackCount; i++) { - const modifierType = generateModifierType(scene, modifierTypes.BERRY, [ berryMod.berryType ]) as PokemonHeldItemModifierType; + const modifierType = generateModifierType(modifierTypes.BERRY, [ berryMod.berryType ]) as PokemonHeldItemModifierType; bossModifierConfigs.push({ modifier: modifierType }); } }); @@ -204,7 +208,7 @@ export const AbsoluteAvariceEncounter: MysteryEncounter = // Do NOT remove the real berries yet or else it will be persisted in the session data // SpDef buff below wave 50, +1 to all stats otherwise - const statChangesForBattle: (Stat.ATK | Stat.DEF | Stat.SPATK | Stat.SPDEF | Stat.SPD | Stat.ACC | Stat.EVA)[] = scene.currentBattle.waveIndex < 50 ? + const statChangesForBattle: (Stat.ATK | Stat.DEF | Stat.SPATK | Stat.SPDEF | Stat.SPD | Stat.ACC | Stat.EVA)[] = globalScene.currentBattle.waveIndex < 50 ? [ Stat.SPDEF ] : [ Stat.ATK, Stat.DEF, Stat.SPATK, Stat.SPDEF, Stat.SPD ]; @@ -221,8 +225,8 @@ export const AbsoluteAvariceEncounter: MysteryEncounter = modifierConfigs: bossModifierConfigs, tags: [ BattlerTagType.MYSTERY_ENCOUNTER_POST_SUMMON ], mysteryEncounterBattleEffects: (pokemon: Pokemon) => { - queueEncounterMessage(pokemon.scene, `${namespace}:option.1.boss_enraged`); - pokemon.scene.unshiftPhase(new StatStageChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, statChangesForBattle, 1)); + queueEncounterMessage(`${namespace}:option.1.boss_enraged`); + globalScene.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, statChangesForBattle, 1)); } } ], @@ -233,18 +237,18 @@ export const AbsoluteAvariceEncounter: MysteryEncounter = return true; }) - .withOnVisualsStart((scene: BattleScene) => { - doGreedentSpriteSteal(scene); - doBerrySpritePile(scene); + .withOnVisualsStart(() => { + doGreedentSpriteSteal(); + doBerrySpritePile(); // Remove the berries from the party // Session has been safely saved at this point, so data won't be lost - const berryItems = scene.findModifiers(m => m instanceof BerryModifier) as BerryModifier[]; + const berryItems = globalScene.findModifiers(m => m instanceof BerryModifier) as BerryModifier[]; berryItems.forEach(berryMod => { - scene.removeModifier(berryMod); + globalScene.removeModifier(berryMod); }); - scene.updateModifiers(true); + globalScene.updateModifiers(true); return true; }) @@ -260,26 +264,26 @@ export const AbsoluteAvariceEncounter: MysteryEncounter = }, ], }) - .withOptionPhase(async (scene: BattleScene) => { + .withOptionPhase(async () => { // Pick battle - const encounter = scene.currentBattle.mysteryEncounter!; + const encounter = globalScene.currentBattle.mysteryEncounter!; // Provides 1x Reviver Seed to each party member at end of battle - const revSeed = generateModifierType(scene, modifierTypes.REVIVER_SEED); + const revSeed = generateModifierType(modifierTypes.REVIVER_SEED); encounter.setDialogueToken("foodReward", revSeed?.name ?? i18next.t("modifierType:ModifierType.REVIVER_SEED.name")); const givePartyPokemonReviverSeeds = () => { - const party = scene.getPlayerParty(); + const party = globalScene.getPlayerParty(); party.forEach(p => { const heldItems = p.getHeldItems(); if (revSeed && !heldItems.some(item => item instanceof PokemonInstantReviveModifier)) { const seedModifier = revSeed.newModifier(p); - scene.addModifier(seedModifier, false, false, false, true); + globalScene.addModifier(seedModifier, false, false, false, true); } }); - queueEncounterMessage(scene, `${namespace}:option.1.food_stash`); + queueEncounterMessage(`${namespace}:option.1.food_stash`); }; - setEncounterRewards(scene, { fillRemaining: true }, undefined, givePartyPokemonReviverSeeds); + setEncounterRewards({ fillRemaining: true }, undefined, givePartyPokemonReviverSeeds); encounter.startOfBattleEffects.push({ sourceBattlerIndex: BattlerIndex.ENEMY, targets: [ BattlerIndex.ENEMY ], @@ -287,8 +291,8 @@ export const AbsoluteAvariceEncounter: MysteryEncounter = ignorePp: true }); - await transitionMysteryEncounterIntroVisuals(scene, true, true, 500); - await initBattleWithEnemyConfig(scene, encounter.enemyPartyConfigs[0]); + await transitionMysteryEncounterIntroVisuals(true, true, 500); + await initBattleWithEnemyConfig(encounter.enemyPartyConfigs[0]); }) .build() ) @@ -304,12 +308,12 @@ export const AbsoluteAvariceEncounter: MysteryEncounter = }, ], }) - .withOptionPhase(async (scene: BattleScene) => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withOptionPhase(async () => { + const encounter = globalScene.currentBattle.mysteryEncounter!; const berryMap = encounter.misc.berryItemsMap; // Returns 2/5 of the berries stolen to each Pokemon - const party = scene.getPlayerParty(); + const party = globalScene.getPlayerParty(); party.forEach(pokemon => { const stolenBerries: BerryModifier[] = berryMap.get(pokemon.id); const berryTypesAsArray: BerryType[] = []; @@ -322,15 +326,15 @@ export const AbsoluteAvariceEncounter: MysteryEncounter = Phaser.Math.RND.shuffle(berryTypesAsArray); const randBerryType = berryTypesAsArray.pop(); - const berryModType = generateModifierType(scene, modifierTypes.BERRY, [ randBerryType ]) as BerryModifierType; - applyModifierTypeToPlayerPokemon(scene, pokemon, berryModType); + const berryModType = generateModifierType(modifierTypes.BERRY, [ randBerryType ]) as BerryModifierType; + applyModifierTypeToPlayerPokemon(pokemon, berryModType); } } }); - await scene.updateModifiers(true); + await globalScene.updateModifiers(true); - await transitionMysteryEncounterIntroVisuals(scene, true, true, 500); - leaveEncounterWithoutBattle(scene, true); + await transitionMysteryEncounterIntroVisuals(true, true, 500); + leaveEncounterWithoutBattle(true); }) .build() ) @@ -346,36 +350,36 @@ export const AbsoluteAvariceEncounter: MysteryEncounter = }, ], }) - .withPreOptionPhase(async (scene: BattleScene) => { + .withPreOptionPhase(async () => { // Animate berries being eaten - doGreedentEatBerries(scene); - doBerrySpritePile(scene, true); + doGreedentEatBerries(); + doBerrySpritePile(true); return true; }) - .withOptionPhase(async (scene: BattleScene) => { + .withOptionPhase(async () => { // Let it have the food // Greedent joins the team, level equal to 2 below highest party member (shiny locked) - const level = getHighestLevelPlayerPokemon(scene, false, true).level - 2; - const greedent = new EnemyPokemon(scene, getPokemonSpecies(Species.GREEDENT), level, TrainerSlot.NONE, false, true); + const level = getHighestLevelPlayerPokemon(false, true).level - 2; + const greedent = new EnemyPokemon(getPokemonSpecies(Species.GREEDENT), level, TrainerSlot.NONE, false, true); greedent.moveset = [ new PokemonMove(Moves.THRASH), new PokemonMove(Moves.BODY_PRESS), new PokemonMove(Moves.STUFF_CHEEKS), new PokemonMove(Moves.SLACK_OFF) ]; greedent.passive = true; - await transitionMysteryEncounterIntroVisuals(scene, true, true, 500); - await catchPokemon(scene, greedent, null, PokeballType.POKEBALL, false); - leaveEncounterWithoutBattle(scene, true); + await transitionMysteryEncounterIntroVisuals(true, true, 500); + await catchPokemon(greedent, null, PokeballType.POKEBALL, false); + leaveEncounterWithoutBattle(true); }) .build() ) .build(); -function doGreedentSpriteSteal(scene: BattleScene) { +function doGreedentSpriteSteal() { const shakeDelay = 50; const slideDelay = 500; - const greedentSprites = scene.currentBattle.mysteryEncounter!.introVisuals?.getSpriteAtIndex(1); + const greedentSprites = globalScene.currentBattle.mysteryEncounter!.introVisuals?.getSpriteAtIndex(1); - scene.playSound("battle_anims/Follow Me"); - scene.tweens.chain({ + globalScene.playSound("battle_anims/Follow Me"); + globalScene.tweens.chain({ targets: greedentSprites, tweens: [ { // Slide Greedent diagonally @@ -445,10 +449,10 @@ function doGreedentSpriteSteal(scene: BattleScene) { }); } -function doGreedentEatBerries(scene: BattleScene) { - const greedentSprites = scene.currentBattle.mysteryEncounter!.introVisuals?.getSpriteAtIndex(1); +function doGreedentEatBerries() { + const greedentSprites = globalScene.currentBattle.mysteryEncounter!.introVisuals?.getSpriteAtIndex(1); let index = 1; - scene.tweens.add({ + globalScene.tweens.add({ targets: greedentSprites, duration: 150, ease: "Cubic.easeOut", @@ -456,11 +460,11 @@ function doGreedentEatBerries(scene: BattleScene) { y: "-=8", loop: 5, onStart: () => { - scene.playSound("battle_anims/PRSFX- Bug Bite"); + globalScene.playSound("battle_anims/PRSFX- Bug Bite"); }, onLoop: () => { if (index % 2 === 0) { - scene.playSound("battle_anims/PRSFX- Bug Bite"); + globalScene.playSound("battle_anims/PRSFX- Bug Bite"); } index++; } @@ -468,17 +472,15 @@ function doGreedentEatBerries(scene: BattleScene) { } /** - * - * @param scene * @param isEat Default false. Will "create" pile when false, and remove pile when true. */ -function doBerrySpritePile(scene: BattleScene, isEat: boolean = false) { +function doBerrySpritePile(isEat: boolean = false) { const berryAddDelay = 150; let animationOrder = [ "starf", "sitrus", "lansat", "salac", "apicot", "enigma", "liechi", "ganlon", "lum", "petaya", "leppa" ]; if (isEat) { animationOrder = animationOrder.reverse(); } - const encounter = scene.currentBattle.mysteryEncounter!; + const encounter = globalScene.currentBattle.mysteryEncounter!; animationOrder.forEach((berry, i) => { const introVisualsIndex = encounter.spriteConfigs.findIndex(config => config.spriteKey?.includes(berry)); let sprite: Phaser.GameObjects.Sprite, tintSprite: Phaser.GameObjects.Sprite; @@ -487,7 +489,7 @@ function doBerrySpritePile(scene: BattleScene, isEat: boolean = false) { sprite = sprites[0]; tintSprite = sprites[1]; } - scene.time.delayedCall(berryAddDelay * i + 400, () => { + globalScene.time.delayedCall(berryAddDelay * i + 400, () => { if (sprite) { sprite.setVisible(!isEat); } @@ -497,20 +499,20 @@ function doBerrySpritePile(scene: BattleScene, isEat: boolean = false) { // Animate Petaya berry falling off the pile if (berry === "petaya" && sprite && tintSprite && !isEat) { - scene.time.delayedCall(200, () => { - doBerryBounce(scene, [ sprite, tintSprite ], 30, 500); + globalScene.time.delayedCall(200, () => { + doBerryBounce([ sprite, tintSprite ], 30, 500); }); } }); }); } -function doBerryBounce(scene: BattleScene, berrySprites: Phaser.GameObjects.Sprite[], yd: number, baseBounceDuration: number) { +function doBerryBounce(berrySprites: Phaser.GameObjects.Sprite[], yd: number, baseBounceDuration: number) { let bouncePower = 1; let bounceYOffset = yd; const doBounce = () => { - scene.tweens.add({ + globalScene.tweens.add({ targets: berrySprites, y: "+=" + bounceYOffset, x: { value: "+=" + (bouncePower * bouncePower * 10), ease: "Linear" }, @@ -522,7 +524,7 @@ function doBerryBounce(scene: BattleScene, berrySprites: Phaser.GameObjects.Spri if (bouncePower) { bounceYOffset = bounceYOffset * bouncePower; - scene.tweens.add({ + globalScene.tweens.add({ targets: berrySprites, y: "-=" + bounceYOffset, x: { value: "+=" + (bouncePower * bouncePower * 10), ease: "Linear" }, diff --git a/src/data/mystery-encounters/encounters/an-offer-you-cant-refuse-encounter.ts b/src/data/mystery-encounters/encounters/an-offer-you-cant-refuse-encounter.ts index 1e20b73e351..671eb3d3ab8 100644 --- a/src/data/mystery-encounters/encounters/an-offer-you-cant-refuse-encounter.ts +++ b/src/data/mystery-encounters/encounters/an-offer-you-cant-refuse-encounter.ts @@ -2,8 +2,9 @@ import { generateModifierType, leaveEncounterWithoutBattle, setEncounterExp, upd import { modifierTypes } from "#app/modifier/modifier-type"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { Species } from "#enums/species"; -import BattleScene from "#app/battle-scene"; -import MysteryEncounter, { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; +import { globalScene } from "#app/global-scene"; +import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; import { AbilityRequirement, CombinationPokemonRequirement, MoveRequirement } from "#app/data/mystery-encounters/mystery-encounter-requirements"; import { getHighestStatTotalPlayerPokemon } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; @@ -69,14 +70,14 @@ export const AnOfferYouCantRefuseEncounter: MysteryEncounter = .withTitle(`${namespace}:title`) .withDescription(`${namespace}:description`) .withQuery(`${namespace}:query`) - .withOnInit((scene: BattleScene) => { - const encounter = scene.currentBattle.mysteryEncounter!; - const pokemon = getHighestStatTotalPlayerPokemon(scene, true, true); + .withOnInit(() => { + const encounter = globalScene.currentBattle.mysteryEncounter!; + const pokemon = getHighestStatTotalPlayerPokemon(true, true); const baseSpecies = pokemon.getSpeciesForm().getRootSpeciesId(); const starterValue: number = speciesStarterCosts[baseSpecies] ?? 1; const multiplier = Math.max(MONEY_MAXIMUM_MULTIPLIER / 10 * starterValue, MONEY_MINIMUM_MULTIPLIER); - const price = scene.getWaveMoneyAmount(multiplier); + const price = globalScene.getWaveMoneyAmount(multiplier); encounter.setDialogueToken("strongestPokemon", pokemon.getNameToRender()); encounter.setDialogueToken("price", price.toString()); @@ -89,7 +90,7 @@ export const AnOfferYouCantRefuseEncounter: MysteryEncounter = // If player meets the combo OR requirements for option 2, populate the token const opt2Req = encounter.options[1].primaryPokemonRequirements[0]; - if (opt2Req.meetsRequirement(scene)) { + if (opt2Req.meetsRequirement()) { const abilityToken = encounter.dialogueTokens["option2PrimaryAbility"]; const moveToken = encounter.dialogueTokens["option2PrimaryMove"]; if (abilityToken) { @@ -99,7 +100,7 @@ export const AnOfferYouCantRefuseEncounter: MysteryEncounter = } } - const shinyCharm = generateModifierType(scene, modifierTypes.SHINY_CHARM); + const shinyCharm = generateModifierType(modifierTypes.SHINY_CHARM); encounter.setDialogueToken("itemName", shinyCharm?.name ?? i18next.t("modifierType:ModifierType.SHINY_CHARM.name")); encounter.setDialogueToken("liepardName", getPokemonSpecies(Species.LIEPARD).getName()); @@ -118,17 +119,17 @@ export const AnOfferYouCantRefuseEncounter: MysteryEncounter = }, ], }) - .withPreOptionPhase(async (scene: BattleScene): Promise => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withPreOptionPhase(async (): Promise => { + const encounter = globalScene.currentBattle.mysteryEncounter!; // Update money and remove pokemon from party - updatePlayerMoney(scene, encounter.misc.price); - scene.removePokemonFromPlayerParty(encounter.misc.pokemon); + updatePlayerMoney(encounter.misc.price); + globalScene.removePokemonFromPlayerParty(encounter.misc.pokemon); return true; }) - .withOptionPhase(async (scene: BattleScene) => { + .withOptionPhase(async () => { // Give the player a Shiny Charm - scene.unshiftPhase(new ModifierRewardPhase(scene, modifierTypes.SHINY_CHARM)); - leaveEncounterWithoutBattle(scene, true); + globalScene.unshiftPhase(new ModifierRewardPhase(modifierTypes.SHINY_CHARM)); + leaveEncounterWithoutBattle(true); }) .build() ) @@ -152,15 +153,15 @@ export const AnOfferYouCantRefuseEncounter: MysteryEncounter = }, ], }) - .withOptionPhase(async (scene: BattleScene) => { + .withOptionPhase(async () => { // Extort the rich kid for money - const encounter = scene.currentBattle.mysteryEncounter!; + const encounter = globalScene.currentBattle.mysteryEncounter!; // Update money and remove pokemon from party - updatePlayerMoney(scene, encounter.misc.price); + updatePlayerMoney(encounter.misc.price); - setEncounterExp(scene, encounter.options[1].primaryPokemon!.id, getPokemonSpecies(Species.LIEPARD).baseExp, true); + setEncounterExp(encounter.options[1].primaryPokemon!.id, getPokemonSpecies(Species.LIEPARD).baseExp, true); - leaveEncounterWithoutBattle(scene, true); + leaveEncounterWithoutBattle(true); }) .build() ) @@ -175,9 +176,9 @@ export const AnOfferYouCantRefuseEncounter: MysteryEncounter = }, ], }, - async (scene: BattleScene) => { + async () => { // Leave encounter with no rewards or exp - leaveEncounterWithoutBattle(scene, true); + leaveEncounterWithoutBattle(true); return true; } ) diff --git a/src/data/mystery-encounters/encounters/berries-abound-encounter.ts b/src/data/mystery-encounters/encounters/berries-abound-encounter.ts index eca358e51f3..20179f4c618 100644 --- a/src/data/mystery-encounters/encounters/berries-abound-encounter.ts +++ b/src/data/mystery-encounters/encounters/berries-abound-encounter.ts @@ -1,23 +1,32 @@ import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; +import type { + EnemyPartyConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { - EnemyPartyConfig, generateModifierType, generateModifierTypeOption, + generateModifierType, + generateModifierTypeOption, initBattleWithEnemyConfig, - leaveEncounterWithoutBattle, setEncounterExp, + leaveEncounterWithoutBattle, + setEncounterExp, setEncounterRewards } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import Pokemon, { EnemyPokemon, PlayerPokemon } from "#app/field/pokemon"; -import { +import type { PlayerPokemon } from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; +import { EnemyPokemon } from "#app/field/pokemon"; +import type { BerryModifierType, + ModifierTypeOption } from "#app/modifier/modifier-type"; +import { getPartyLuckValue, ModifierPoolType, - ModifierTypeOption, modifierTypes, + modifierTypes, regenerateModifierPoolThresholds, } from "#app/modifier/modifier-type"; import { randSeedInt, randSeedItem } from "#app/utils"; import { BattlerTagType } from "#enums/battler-tag-type"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import BattleScene from "#app/battle-scene"; -import MysteryEncounter, { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; +import { globalScene } from "#app/global-scene"; +import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; import { queueEncounterMessage, showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; import { getPokemonNameWithAffix } from "#app/messages"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; @@ -31,7 +40,8 @@ import { BerryType } from "#enums/berry-type"; import { PERMANENT_STATS, Stat } from "#enums/stat"; import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/game-mode"; -import PokemonSpecies, { getPokemonSpecies } from "#app/data/pokemon-species"; +import type PokemonSpecies from "#app/data/pokemon-species"; +import { getPokemonSpecies } from "#app/data/pokemon-species"; /** the i18n namespace for the encounter */ const namespace = "mysteryEncounters/berriesAbound"; @@ -54,20 +64,20 @@ export const BerriesAboundEncounter: MysteryEncounter = text: `${namespace}:intro`, }, ]) - .withOnInit((scene: BattleScene) => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withOnInit(() => { + const encounter = globalScene.currentBattle.mysteryEncounter!; // Calculate boss mon - const level = getEncounterPokemonLevelForWave(scene, STANDARD_ENCOUNTER_BOOSTED_LEVEL_MODIFIER); + const level = getEncounterPokemonLevelForWave(STANDARD_ENCOUNTER_BOOSTED_LEVEL_MODIFIER); let bossSpecies: PokemonSpecies; - if (scene.eventManager.isEventActive() && scene.eventManager.activeEvent()?.uncommonBreedEncounters && randSeedInt(2) === 1) { - const eventEncounter = randSeedItem(scene.eventManager.activeEvent()!.uncommonBreedEncounters!); - const levelSpecies = getPokemonSpecies(eventEncounter.species).getWildSpeciesForLevel(level, eventEncounter.allowEvolution ?? false, true, scene.gameMode); + if (globalScene.eventManager.isEventActive() && globalScene.eventManager.activeEvent()?.uncommonBreedEncounters && randSeedInt(2) === 1) { + const eventEncounter = randSeedItem(globalScene.eventManager.activeEvent()!.uncommonBreedEncounters!); + const levelSpecies = getPokemonSpecies(eventEncounter.species).getWildSpeciesForLevel(level, eventEncounter.allowEvolution ?? false, true, globalScene.gameMode); bossSpecies = getPokemonSpecies( levelSpecies ); } else { - bossSpecies = scene.arena.randomSpecies(scene.currentBattle.waveIndex, level, 0, getPartyLuckValue(scene.getPlayerParty()), true); + bossSpecies = globalScene.arena.randomSpecies(globalScene.currentBattle.waveIndex, level, 0, getPartyLuckValue(globalScene.getPlayerParty()), true); } - const bossPokemon = new EnemyPokemon(scene, bossSpecies, level, TrainerSlot.NONE, true); + const bossPokemon = new EnemyPokemon(bossSpecies, level, TrainerSlot.NONE, true); encounter.setDialogueToken("enemyPokemon", getPokemonNameWithAffix(bossPokemon)); const config: EnemyPartyConfig = { pokemonConfigs: [{ @@ -82,10 +92,10 @@ export const BerriesAboundEncounter: MysteryEncounter = // Calculate the number of extra berries that player receives // 10-40: 2, 40-120: 4, 120-160: 5, 160-180: 7 const numBerries = - scene.currentBattle.waveIndex > 160 ? 7 - : scene.currentBattle.waveIndex > 120 ? 5 - : scene.currentBattle.waveIndex > 40 ? 4 : 2; - regenerateModifierPoolThresholds(scene.getPlayerParty(), ModifierPoolType.PLAYER, 0); + globalScene.currentBattle.waveIndex > 160 ? 7 + : globalScene.currentBattle.waveIndex > 120 ? 5 + : globalScene.currentBattle.waveIndex > 40 ? 4 : 2; + regenerateModifierPoolThresholds(globalScene.getPlayerParty(), ModifierPoolType.PLAYER, 0); encounter.misc = { numBerries }; const { spriteKey, fileRoot } = getSpriteKeysFromPokemon(bossPokemon); @@ -113,7 +123,7 @@ export const BerriesAboundEncounter: MysteryEncounter = ]; // Get fastest party pokemon for option 2 - const fastestPokemon = getHighestStatPlayerPokemon(scene, PERMANENT_STATS[Stat.SPD], true, false); + const fastestPokemon = getHighestStatPlayerPokemon(PERMANENT_STATS[Stat.SPD], true, false); encounter.misc.fastestPokemon = fastestPokemon; encounter.misc.enemySpeed = bossPokemon.getStat(Stat.SPD); encounter.setDialogueToken("fastestPokemon", fastestPokemon.getNameToRender()); @@ -134,34 +144,34 @@ export const BerriesAboundEncounter: MysteryEncounter = }, ], }, - async (scene: BattleScene) => { + async () => { // Pick battle - const encounter = scene.currentBattle.mysteryEncounter!; + const encounter = globalScene.currentBattle.mysteryEncounter!; const numBerries = encounter.misc.numBerries; const doBerryRewards = () => { const berryText = i18next.t(`${namespace}:berries`); - scene.playSound("item_fanfare"); - queueEncounterMessage(scene, i18next.t("battle:rewardGainCount", { modifierName: berryText, count: numBerries })); + globalScene.playSound("item_fanfare"); + queueEncounterMessage(i18next.t("battle:rewardGainCount", { modifierName: berryText, count: numBerries })); // Generate a random berry and give it to the first Pokemon with room for it for (let i = 0; i < numBerries; i++) { - tryGiveBerry(scene); + tryGiveBerry(); } }; const shopOptions: ModifierTypeOption[] = []; for (let i = 0; i < 5; i++) { // Generate shop berries - const mod = generateModifierTypeOption(scene, modifierTypes.BERRY); + const mod = generateModifierTypeOption(modifierTypes.BERRY); if (mod) { shopOptions.push(mod); } } - setEncounterRewards(scene, { guaranteedModifierTypeOptions: shopOptions, fillRemaining: false }, undefined, doBerryRewards); - await initBattleWithEnemyConfig(scene, scene.currentBattle.mysteryEncounter!.enemyPartyConfigs[0]); + setEncounterRewards({ guaranteedModifierTypeOptions: shopOptions, fillRemaining: false }, undefined, doBerryRewards); + await initBattleWithEnemyConfig(globalScene.currentBattle.mysteryEncounter!.enemyPartyConfigs[0]); } ) .withOption( @@ -171,9 +181,9 @@ export const BerriesAboundEncounter: MysteryEncounter = buttonLabel: `${namespace}:option.2.label`, buttonTooltip: `${namespace}:option.2.tooltip` }) - .withOptionPhase(async (scene: BattleScene) => { + .withOptionPhase(async () => { // Pick race for berries - const encounter = scene.currentBattle.mysteryEncounter!; + const encounter = globalScene.currentBattle.mysteryEncounter!; const fastestPokemon: PlayerPokemon = encounter.misc.fastestPokemon; const enemySpeed: number = encounter.misc.enemySpeed; const speedDiff = fastestPokemon.getStat(Stat.SPD) / (enemySpeed * 1.1); @@ -182,7 +192,7 @@ export const BerriesAboundEncounter: MysteryEncounter = const shopOptions: ModifierTypeOption[] = []; for (let i = 0; i < 5; i++) { // Generate shop berries - const mod = generateModifierTypeOption(scene, modifierTypes.BERRY); + const mod = generateModifierTypeOption(modifierTypes.BERRY); if (mod) { shopOptions.push(mod); } @@ -193,29 +203,29 @@ export const BerriesAboundEncounter: MysteryEncounter = const doBerryRewards = () => { const berryText = i18next.t(`${namespace}:berries`); - scene.playSound("item_fanfare"); - queueEncounterMessage(scene, i18next.t("battle:rewardGainCount", { modifierName: berryText, count: numBerries })); + globalScene.playSound("item_fanfare"); + queueEncounterMessage(i18next.t("battle:rewardGainCount", { modifierName: berryText, count: numBerries })); // Generate a random berry and give it to the first Pokemon with room for it for (let i = 0; i < numBerries; i++) { - tryGiveBerry(scene); + tryGiveBerry(); } }; // Defense/Spd buffs below wave 50, +1 to all stats otherwise - const statChangesForBattle: (Stat.ATK | Stat.DEF | Stat.SPATK | Stat.SPDEF | Stat.SPD | Stat.ACC | Stat.EVA)[] = scene.currentBattle.waveIndex < 50 ? + const statChangesForBattle: (Stat.ATK | Stat.DEF | Stat.SPATK | Stat.SPDEF | Stat.SPD | Stat.ACC | Stat.EVA)[] = globalScene.currentBattle.waveIndex < 50 ? [ Stat.DEF, Stat.SPDEF, Stat.SPD ] : [ Stat.ATK, Stat.DEF, Stat.SPATK, Stat.SPDEF, Stat.SPD ]; - const config = scene.currentBattle.mysteryEncounter!.enemyPartyConfigs[0]; + const config = globalScene.currentBattle.mysteryEncounter!.enemyPartyConfigs[0]; config.pokemonConfigs![0].tags = [ BattlerTagType.MYSTERY_ENCOUNTER_POST_SUMMON ]; config.pokemonConfigs![0].mysteryEncounterBattleEffects = (pokemon: Pokemon) => { - queueEncounterMessage(pokemon.scene, `${namespace}:option.2.boss_enraged`); - pokemon.scene.unshiftPhase(new StatStageChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, statChangesForBattle, 1)); + queueEncounterMessage(`${namespace}:option.2.boss_enraged`); + globalScene.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, statChangesForBattle, 1)); }; - setEncounterRewards(scene, { guaranteedModifierTypeOptions: shopOptions, fillRemaining: false }, undefined, doBerryRewards); - await showEncounterText(scene, `${namespace}:option.2.selected_bad`); - await initBattleWithEnemyConfig(scene, config); + setEncounterRewards({ guaranteedModifierTypeOptions: shopOptions, fillRemaining: false }, undefined, doBerryRewards); + await showEncounterText(`${namespace}:option.2.selected_bad`); + await initBattleWithEnemyConfig(config); return; } else { // Gains 1 berry for every 10% faster the player's pokemon is than the enemy, up to a max of numBerries, minimum of 2 @@ -224,19 +234,19 @@ export const BerriesAboundEncounter: MysteryEncounter = const doFasterBerryRewards = () => { const berryText = i18next.t(`${namespace}:berries`); - scene.playSound("item_fanfare"); - queueEncounterMessage(scene, i18next.t("battle:rewardGainCount", { modifierName: berryText, count: numBerriesGrabbed })); + globalScene.playSound("item_fanfare"); + queueEncounterMessage(i18next.t("battle:rewardGainCount", { modifierName: berryText, count: numBerriesGrabbed })); // Generate a random berry and give it to the first Pokemon with room for it (trying to give to fastest first) for (let i = 0; i < numBerriesGrabbed; i++) { - tryGiveBerry(scene, fastestPokemon); + tryGiveBerry(fastestPokemon); } }; - setEncounterExp(scene, fastestPokemon.id, encounter.enemyPartyConfigs[0].pokemonConfigs![0].species.baseExp); - setEncounterRewards(scene, { guaranteedModifierTypeOptions: shopOptions, fillRemaining: false }, undefined, doFasterBerryRewards); - await showEncounterText(scene, `${namespace}:option.2.selected`); - leaveEncounterWithoutBattle(scene); + setEncounterExp(fastestPokemon.id, encounter.enemyPartyConfigs[0].pokemonConfigs![0].species.baseExp); + setEncounterRewards({ guaranteedModifierTypeOptions: shopOptions, fillRemaining: false }, undefined, doFasterBerryRewards); + await showEncounterText(`${namespace}:option.2.selected`); + leaveEncounterWithoutBattle(); } }) .build() @@ -251,38 +261,38 @@ export const BerriesAboundEncounter: MysteryEncounter = }, ], }, - async (scene: BattleScene) => { + async () => { // Leave encounter with no rewards or exp - leaveEncounterWithoutBattle(scene, true); + leaveEncounterWithoutBattle(true); return true; } ) .build(); -function tryGiveBerry(scene: BattleScene, prioritizedPokemon?: PlayerPokemon) { +function tryGiveBerry(prioritizedPokemon?: PlayerPokemon) { const berryType = randSeedInt(Object.keys(BerryType).filter(s => !isNaN(Number(s))).length) as BerryType; - const berry = generateModifierType(scene, modifierTypes.BERRY, [ berryType ]) as BerryModifierType; + const berry = generateModifierType(modifierTypes.BERRY, [ berryType ]) as BerryModifierType; - const party = scene.getPlayerParty(); + const party = globalScene.getPlayerParty(); // Will try to apply to prioritized pokemon first, then do normal application method if it fails if (prioritizedPokemon) { - const heldBerriesOfType = scene.findModifier(m => m instanceof BerryModifier + const heldBerriesOfType = globalScene.findModifier(m => m instanceof BerryModifier && m.pokemonId === prioritizedPokemon.id && (m as BerryModifier).berryType === berryType, true) as BerryModifier; - if (!heldBerriesOfType || heldBerriesOfType.getStackCount() < heldBerriesOfType.getMaxStackCount(scene)) { - applyModifierTypeToPlayerPokemon(scene, prioritizedPokemon, berry); + if (!heldBerriesOfType || heldBerriesOfType.getStackCount() < heldBerriesOfType.getMaxStackCount()) { + applyModifierTypeToPlayerPokemon(prioritizedPokemon, berry); return; } } // Iterate over the party until berry was successfully given for (const pokemon of party) { - const heldBerriesOfType = scene.findModifier(m => m instanceof BerryModifier + const heldBerriesOfType = globalScene.findModifier(m => m instanceof BerryModifier && m.pokemonId === pokemon.id && (m as BerryModifier).berryType === berryType, true) as BerryModifier; - if (!heldBerriesOfType || heldBerriesOfType.getStackCount() < heldBerriesOfType.getMaxStackCount(scene)) { - applyModifierTypeToPlayerPokemon(scene, pokemon, berry); + if (!heldBerriesOfType || heldBerriesOfType.getStackCount() < heldBerriesOfType.getMaxStackCount()) { + applyModifierTypeToPlayerPokemon(pokemon, berry); return; } } diff --git a/src/data/mystery-encounters/encounters/bug-type-superfan-encounter.ts b/src/data/mystery-encounters/encounters/bug-type-superfan-encounter.ts index ecd6972902b..209cc7a7ec5 100644 --- a/src/data/mystery-encounters/encounters/bug-type-superfan-encounter.ts +++ b/src/data/mystery-encounters/encounters/bug-type-superfan-encounter.ts @@ -1,5 +1,7 @@ +import type { + EnemyPartyConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { - EnemyPartyConfig, generateModifierType, + generateModifierType, generateModifierTypeOption, initBattleWithEnemyConfig, leaveEncounterWithoutBattle, @@ -17,17 +19,20 @@ import { } from "#app/data/trainer-config"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { PartyMemberStrength } from "#enums/party-member-strength"; -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { isNullOrUndefined, randSeedInt, randSeedShuffle } from "#app/utils"; -import MysteryEncounter, { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; +import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { TrainerType } from "#enums/trainer-type"; import { Species } from "#enums/species"; -import Pokemon, { PlayerPokemon, PokemonMove } from "#app/field/pokemon"; +import type { PlayerPokemon } from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; +import { PokemonMove } from "#app/field/pokemon"; import { getEncounterText, showEncounterDialogue } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; import { LearnMovePhase } from "#app/phases/learn-move-phase"; import { Moves } from "#enums/moves"; -import { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; +import type { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { @@ -37,14 +42,17 @@ import { TypeRequirement } from "#app/data/mystery-encounters/mystery-encounter-requirements"; import { Type } from "#enums/type"; -import { AttackTypeBoosterModifierType, ModifierTypeOption, modifierTypes } from "#app/modifier/modifier-type"; +import type { AttackTypeBoosterModifierType, ModifierTypeOption } from "#app/modifier/modifier-type"; +import { modifierTypes } from "#app/modifier/modifier-type"; +import type { + PokemonHeldItemModifier +} from "#app/modifier/modifier"; import { AttackTypeBoosterModifier, BypassSpeedChanceModifier, ContactHeldItemTransferChanceModifier, GigantamaxAccessModifier, - MegaEvolutionAccessModifier, - PokemonHeldItemModifier + MegaEvolutionAccessModifier } from "#app/modifier/modifier"; import i18next from "i18next"; import MoveInfoOverlay from "#app/ui/move-info-overlay"; @@ -214,12 +222,12 @@ export const BugTypeSuperfanEncounter: MysteryEncounter = text: `${namespace}:intro_dialogue`, }, ]) - .withOnInit((scene: BattleScene) => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withOnInit(() => { + const encounter = globalScene.currentBattle.mysteryEncounter!; // Calculates what trainers are available for battle in the encounter // Bug type superfan trainer config - const config = getTrainerConfigForWave(scene.currentBattle.waveIndex); + const config = getTrainerConfigForWave(globalScene.currentBattle.waveIndex); const spriteKey = config.getSpriteKey(); encounter.enemyPartyConfigs.push({ trainerConfig: config, @@ -227,7 +235,7 @@ export const BugTypeSuperfanEncounter: MysteryEncounter = }); let beedrillKeys: { spriteKey: string, fileRoot: string }, butterfreeKeys: { spriteKey: string, fileRoot: string }; - if (scene.currentBattle.waveIndex < WAVE_LEVEL_BREAKPOINTS[3]) { + if (globalScene.currentBattle.waveIndex < WAVE_LEVEL_BREAKPOINTS[3]) { beedrillKeys = getSpriteKeysFromSpecies(Species.BEEDRILL, false); butterfreeKeys = getSpriteKeysFromSpecies(Species.BUTTERFREE, false); } else { @@ -270,9 +278,9 @@ export const BugTypeSuperfanEncounter: MysteryEncounter = ]; const requiredItems = [ - generateModifierType(scene, modifierTypes.QUICK_CLAW), - generateModifierType(scene, modifierTypes.GRIP_CLAW), - generateModifierType(scene, modifierTypes.ATTACK_TYPE_BOOSTER, [ Type.BUG ]), + generateModifierType(modifierTypes.QUICK_CLAW), + generateModifierType(modifierTypes.GRIP_CLAW), + generateModifierType(modifierTypes.ATTACK_TYPE_BOOSTER, [ Type.BUG ]), ]; const requiredItemString = requiredItems.map(m => m?.name ?? "unknown").join("/"); @@ -295,9 +303,9 @@ export const BugTypeSuperfanEncounter: MysteryEncounter = }, ], }, - async (scene: BattleScene) => { + async () => { // Select battle the bug trainer - const encounter = scene.currentBattle.mysteryEncounter!; + const encounter = globalScene.currentBattle.mysteryEncounter!; const config: EnemyPartyConfig = encounter.enemyPartyConfigs[0]; // Init the moves available for tutor @@ -313,9 +321,9 @@ export const BugTypeSuperfanEncounter: MysteryEncounter = // Assigns callback that teaches move before continuing to rewards encounter.onRewards = doBugTypeMoveTutor; - setEncounterRewards(scene, { fillRemaining: true }); - await transitionMysteryEncounterIntroVisuals(scene, true, true); - await initBattleWithEnemyConfig(scene, config); + setEncounterRewards({ fillRemaining: true }); + await transitionMysteryEncounterIntroVisuals(true, true); + await initBattleWithEnemyConfig(config); } ) .withOption(MysteryEncounterOptionBuilder @@ -326,17 +334,17 @@ export const BugTypeSuperfanEncounter: MysteryEncounter = buttonTooltip: `${namespace}:option.2.tooltip`, disabledButtonTooltip: `${namespace}:option.2.disabled_tooltip` }) - .withPreOptionPhase(async (scene: BattleScene) => { + .withPreOptionPhase(async () => { // Player shows off their bug types - const encounter = scene.currentBattle.mysteryEncounter!; + const encounter = globalScene.currentBattle.mysteryEncounter!; // Player gets different rewards depending on the number of bug types they have - const numBugTypes = scene.getPlayerParty().filter(p => p.isOfType(Type.BUG, true)).length; + const numBugTypes = globalScene.getPlayerParty().filter(p => p.isOfType(Type.BUG, true)).length; const numBugTypesText = i18next.t(`${namespace}:numBugTypes`, { count: numBugTypes }); encounter.setDialogueToken("numBugTypes", numBugTypesText); if (numBugTypes < 2) { - setEncounterRewards(scene, { guaranteedModifierTypeFuncs: [ modifierTypes.SUPER_LURE, modifierTypes.GREAT_BALL ], fillRemaining: false }); + setEncounterRewards({ guaranteedModifierTypeFuncs: [ modifierTypes.SUPER_LURE, modifierTypes.GREAT_BALL ], fillRemaining: false }); encounter.selectedOption!.dialogue!.selected = [ { speaker: `${namespace}:speaker`, @@ -344,7 +352,7 @@ export const BugTypeSuperfanEncounter: MysteryEncounter = }, ]; } else if (numBugTypes < 4) { - setEncounterRewards(scene, { guaranteedModifierTypeFuncs: [ modifierTypes.QUICK_CLAW, modifierTypes.MAX_LURE, modifierTypes.ULTRA_BALL ], fillRemaining: false }); + setEncounterRewards({ guaranteedModifierTypeFuncs: [ modifierTypes.QUICK_CLAW, modifierTypes.MAX_LURE, modifierTypes.ULTRA_BALL ], fillRemaining: false }); encounter.selectedOption!.dialogue!.selected = [ { speaker: `${namespace}:speaker`, @@ -352,7 +360,7 @@ export const BugTypeSuperfanEncounter: MysteryEncounter = }, ]; } else if (numBugTypes < 6) { - setEncounterRewards(scene, { guaranteedModifierTypeFuncs: [ modifierTypes.GRIP_CLAW, modifierTypes.MAX_LURE, modifierTypes.ROGUE_BALL ], fillRemaining: false }); + setEncounterRewards({ guaranteedModifierTypeFuncs: [ modifierTypes.GRIP_CLAW, modifierTypes.MAX_LURE, modifierTypes.ROGUE_BALL ], fillRemaining: false }); encounter.selectedOption!.dialogue!.selected = [ { speaker: `${namespace}:speaker`, @@ -362,28 +370,28 @@ export const BugTypeSuperfanEncounter: MysteryEncounter = } else { // If the player has any evolution/form change items that are valid for their party, // spawn one of those items in addition to Dynamax Band, Mega Band, and Master Ball - const modifierOptions: ModifierTypeOption[] = [ generateModifierTypeOption(scene, modifierTypes.MASTER_BALL)! ]; + const modifierOptions: ModifierTypeOption[] = [ generateModifierTypeOption(modifierTypes.MASTER_BALL)! ]; const specialOptions: ModifierTypeOption[] = []; - if (!scene.findModifier(m => m instanceof MegaEvolutionAccessModifier)) { - modifierOptions.push(generateModifierTypeOption(scene, modifierTypes.MEGA_BRACELET)!); + if (!globalScene.findModifier(m => m instanceof MegaEvolutionAccessModifier)) { + modifierOptions.push(generateModifierTypeOption(modifierTypes.MEGA_BRACELET)!); } - if (!scene.findModifier(m => m instanceof GigantamaxAccessModifier)) { - modifierOptions.push(generateModifierTypeOption(scene, modifierTypes.DYNAMAX_BAND)!); + if (!globalScene.findModifier(m => m instanceof GigantamaxAccessModifier)) { + modifierOptions.push(generateModifierTypeOption(modifierTypes.DYNAMAX_BAND)!); } - const nonRareEvolutionModifier = generateModifierTypeOption(scene, modifierTypes.EVOLUTION_ITEM); + const nonRareEvolutionModifier = generateModifierTypeOption(modifierTypes.EVOLUTION_ITEM); if (nonRareEvolutionModifier) { specialOptions.push(nonRareEvolutionModifier); } - const rareEvolutionModifier = generateModifierTypeOption(scene, modifierTypes.RARE_EVOLUTION_ITEM); + const rareEvolutionModifier = generateModifierTypeOption(modifierTypes.RARE_EVOLUTION_ITEM); if (rareEvolutionModifier) { specialOptions.push(rareEvolutionModifier); } - const formChangeModifier = generateModifierTypeOption(scene, modifierTypes.FORM_CHANGE_ITEM); + const formChangeModifier = generateModifierTypeOption(modifierTypes.FORM_CHANGE_ITEM); if (formChangeModifier) { specialOptions.push(formChangeModifier); } - const rareFormChangeModifier = generateModifierTypeOption(scene, modifierTypes.RARE_FORM_CHANGE_ITEM); + const rareFormChangeModifier = generateModifierTypeOption(modifierTypes.RARE_FORM_CHANGE_ITEM); if (rareFormChangeModifier) { specialOptions.push(rareFormChangeModifier); } @@ -391,7 +399,7 @@ export const BugTypeSuperfanEncounter: MysteryEncounter = modifierOptions.push(specialOptions[randSeedInt(specialOptions.length)]); } - setEncounterRewards(scene, { guaranteedModifierTypeOptions: modifierOptions, fillRemaining: false }); + setEncounterRewards({ guaranteedModifierTypeOptions: modifierOptions, fillRemaining: false }); encounter.selectedOption!.dialogue!.selected = [ { speaker: `${namespace}:speaker`, @@ -400,9 +408,9 @@ export const BugTypeSuperfanEncounter: MysteryEncounter = ]; } }) - .withOptionPhase(async (scene: BattleScene) => { + .withOptionPhase(async () => { // Player shows off their bug types - leaveEncounterWithoutBattle(scene); + leaveEncounterWithoutBattle(); }) .build()) .withOption(MysteryEncounterOptionBuilder @@ -429,8 +437,8 @@ export const BugTypeSuperfanEncounter: MysteryEncounter = ], secondOptionPrompt: `${namespace}:option.3.select_prompt`, }) - .withPreOptionPhase(async (scene: BattleScene): Promise => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withPreOptionPhase(async (): Promise => { + const encounter = globalScene.currentBattle.mysteryEncounter!; const onPokemonSelected = (pokemon: PlayerPokemon) => { // Get Pokemon held items and filter for valid ones @@ -466,27 +474,27 @@ export const BugTypeSuperfanEncounter: MysteryEncounter = (item instanceof AttackTypeBoosterModifier && (item.type as AttackTypeBoosterModifierType).moveType === Type.BUG); }); if (!hasValidItem) { - return getEncounterText(scene, `${namespace}:option.3.invalid_selection`) ?? null; + return getEncounterText(`${namespace}:option.3.invalid_selection`) ?? null; } return null; }; - return selectPokemonForOption(scene, onPokemonSelected, undefined, selectableFilter); + return selectPokemonForOption(onPokemonSelected, undefined, selectableFilter); }) - .withOptionPhase(async (scene: BattleScene) => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withOptionPhase(async () => { + const encounter = globalScene.currentBattle.mysteryEncounter!; const modifier = encounter.misc.chosenModifier; const chosenPokemon: PlayerPokemon = encounter.misc.chosenPokemon; chosenPokemon.loseHeldItem(modifier, false); - scene.updateModifiers(true, true); + globalScene.updateModifiers(true, true); - const bugNet = generateModifierTypeOption(scene, modifierTypes.MYSTERY_ENCOUNTER_GOLDEN_BUG_NET)!; + const bugNet = generateModifierTypeOption(modifierTypes.MYSTERY_ENCOUNTER_GOLDEN_BUG_NET)!; bugNet.type.tier = ModifierTier.ROGUE; - setEncounterRewards(scene, { guaranteedModifierTypeOptions: [ bugNet ], guaranteedModifierTypeFuncs: [ modifierTypes.REVIVER_SEED ], fillRemaining: false }); - leaveEncounterWithoutBattle(scene, true); + setEncounterRewards({ guaranteedModifierTypeOptions: [ bugNet ], guaranteedModifierTypeFuncs: [ modifierTypes.REVIVER_SEED ], fillRemaining: false }); + leaveEncounterWithoutBattle(true); }) .build()) .withOutroDialogue([ @@ -642,22 +650,22 @@ function getTrainerConfigForWave(waveIndex: number) { return config; } -function doBugTypeMoveTutor(scene: BattleScene): Promise { +function doBugTypeMoveTutor(): Promise { return new Promise(async resolve => { - const moveOptions = scene.currentBattle.mysteryEncounter!.misc.moveTutorOptions; - await showEncounterDialogue(scene, `${namespace}:battle_won`, `${namespace}:speaker`); + const moveOptions = globalScene.currentBattle.mysteryEncounter!.misc.moveTutorOptions; + await showEncounterDialogue(`${namespace}:battle_won`, `${namespace}:speaker`); const overlayScale = 1; - const moveInfoOverlay = new MoveInfoOverlay(scene, { + const moveInfoOverlay = new MoveInfoOverlay({ delayVisibility: false, scale: overlayScale, onSide: true, right: true, x: 1, y: -MoveInfoOverlay.getHeight(overlayScale, true) - 1, - width: (scene.game.canvas.width / 6) - 2, + width: (globalScene.game.canvas.width / 6) - 2, }); - scene.ui.add(moveInfoOverlay); + globalScene.ui.add(moveInfoOverlay); const optionSelectItems = moveOptions.map((move: PokemonMove) => { const option: OptionSelectItem = { @@ -680,7 +688,7 @@ function doBugTypeMoveTutor(scene: BattleScene): Promise { moveInfoOverlay.setVisible(false); }; - const result = await selectOptionThenPokemon(scene, optionSelectItems, `${namespace}:teach_move_prompt`, undefined, onHoverOverCancel); + const result = await selectOptionThenPokemon(optionSelectItems, `${namespace}:teach_move_prompt`, undefined, onHoverOverCancel); // let forceExit = !!result; if (!result) { moveInfoOverlay.active = false; @@ -691,7 +699,7 @@ function doBugTypeMoveTutor(scene: BattleScene): Promise { // Option select complete, handle if they are learning a move if (result && result.selectedOptionIndex < moveOptions.length) { - scene.unshiftPhase(new LearnMovePhase(scene, result.selectedPokemonIndex, moveOptions[result.selectedOptionIndex].moveId)); + globalScene.unshiftPhase(new LearnMovePhase(result.selectedPokemonIndex, moveOptions[result.selectedOptionIndex].moveId)); } // Complete battle and go to rewards diff --git a/src/data/mystery-encounters/encounters/clowning-around-encounter.ts b/src/data/mystery-encounters/encounters/clowning-around-encounter.ts index 6bd6856604b..f6700bb3716 100644 --- a/src/data/mystery-encounters/encounters/clowning-around-encounter.ts +++ b/src/data/mystery-encounters/encounters/clowning-around-encounter.ts @@ -1,26 +1,30 @@ -import { EnemyPartyConfig, generateModifierType, initBattleWithEnemyConfig, leaveEncounterWithoutBattle, loadCustomMovesForEncounter, selectPokemonForOption, setEncounterRewards, transitionMysteryEncounterIntroVisuals } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import type { EnemyPartyConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import { generateModifierType, initBattleWithEnemyConfig, leaveEncounterWithoutBattle, loadCustomMovesForEncounter, selectPokemonForOption, setEncounterRewards, transitionMysteryEncounterIntroVisuals } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { trainerConfigs, TrainerPartyCompoundTemplate, TrainerPartyTemplate, } from "#app/data/trainer-config"; import { ModifierTier } from "#app/modifier/modifier-tier"; -import { ModifierPoolType, modifierTypes, PokemonHeldItemModifierType } from "#app/modifier/modifier-type"; +import type { PokemonHeldItemModifierType } from "#app/modifier/modifier-type"; +import { ModifierPoolType, modifierTypes } from "#app/modifier/modifier-type"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { PartyMemberStrength } from "#enums/party-member-strength"; -import BattleScene from "#app/battle-scene"; -import MysteryEncounter, { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; +import { globalScene } from "#app/global-scene"; +import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { Species } from "#enums/species"; import { TrainerType } from "#enums/trainer-type"; import { getPokemonSpecies } from "#app/data/pokemon-species"; import { Abilities } from "#enums/abilities"; import { applyAbilityOverrideToPokemon, applyModifierTypeToPlayerPokemon } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; -import { Type } from "#enums/type"; +import type { Type } from "#enums/type"; import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { randSeedInt, randSeedShuffle } from "#app/utils"; import { showEncounterDialogue, showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; import { Mode } from "#app/ui/ui"; import i18next from "i18next"; -import { OptionSelectConfig } from "#app/ui/abstact-option-select-ui-handler"; -import { PlayerPokemon, PokemonMove } from "#app/field/pokemon"; +import type { OptionSelectConfig } from "#app/ui/abstact-option-select-ui-handler"; +import type { PlayerPokemon } from "#app/field/pokemon"; +import { PokemonMove } from "#app/field/pokemon"; import { Ability } from "#app/data/ability"; import { BerryModifier } from "#app/modifier/modifier"; import { BerryType } from "#enums/berry-type"; @@ -105,8 +109,8 @@ export const ClowningAroundEncounter: MysteryEncounter = speaker: `${namespace}:speaker` }, ]) - .withOnInit((scene: BattleScene) => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withOnInit(() => { + const encounter = globalScene.currentBattle.mysteryEncounter!; const clownTrainerType = TrainerType.HARLEQUIN; const clownConfig = trainerConfigs[clownTrainerType].clone(); @@ -142,7 +146,7 @@ export const ClowningAroundEncounter: MysteryEncounter = }); // Load animations/sfx for start of fight moves - loadCustomMovesForEncounter(scene, [ Moves.ROLE_PLAY, Moves.TAUNT ]); + loadCustomMovesForEncounter([ Moves.ROLE_PLAY, Moves.TAUNT ]); encounter.setDialogueToken("blacephalonName", getPokemonSpecies(Species.BLACEPHALON).getName()); @@ -165,12 +169,12 @@ export const ClowningAroundEncounter: MysteryEncounter = }, ], }) - .withOptionPhase(async (scene: BattleScene) => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withOptionPhase(async () => { + const encounter = globalScene.currentBattle.mysteryEncounter!; // Spawn battle const config: EnemyPartyConfig = encounter.enemyPartyConfigs[0]; - setEncounterRewards(scene, { fillRemaining: true }); + setEncounterRewards({ fillRemaining: true }); // TODO: when Magic Room and Wonder Room are implemented, add those to start of battle encounter.startOfBattleEffects.push( @@ -193,28 +197,28 @@ export const ClowningAroundEncounter: MysteryEncounter = ignorePp: true }); - await transitionMysteryEncounterIntroVisuals(scene); - await initBattleWithEnemyConfig(scene, config); + await transitionMysteryEncounterIntroVisuals(); + await initBattleWithEnemyConfig(config); }) - .withPostOptionPhase(async (scene: BattleScene): Promise => { + .withPostOptionPhase(async (): Promise => { // After the battle, offer the player the opportunity to permanently swap ability - const abilityWasSwapped = await handleSwapAbility(scene); + const abilityWasSwapped = await handleSwapAbility(); if (abilityWasSwapped) { - await showEncounterText(scene, `${namespace}:option.1.ability_gained`); + await showEncounterText(`${namespace}:option.1.ability_gained`); } // Play animations once ability swap is complete // Trainer sprite that is shown at end of battle is not the same as mystery encounter intro visuals - scene.tweens.add({ - targets: scene.currentBattle.trainer, + globalScene.tweens.add({ + targets: globalScene.currentBattle.trainer, x: "+=16", y: "-=16", alpha: 0, ease: "Sine.easeInOut", duration: 250 }); - const background = new EncounterBattleAnim(EncounterAnim.SMOKESCREEN, scene.getPlayerPokemon()!, scene.getPlayerPokemon()); - background.playWithoutTargets(scene, 230, 40, 2); + const background = new EncounterBattleAnim(EncounterAnim.SMOKESCREEN, globalScene.getPlayerPokemon()!, globalScene.getPlayerPokemon()); + background.playWithoutTargets(230, 40, 2); return true; }) .build() @@ -239,13 +243,13 @@ export const ClowningAroundEncounter: MysteryEncounter = }, ], }) - .withPreOptionPhase(async (scene: BattleScene) => { + .withPreOptionPhase(async () => { // Swap player's items on pokemon with the most items // Item comparisons look at whichever Pokemon has the greatest number of TRANSFERABLE, non-berry items // So Vitamins, form change items, etc. are not included - const encounter = scene.currentBattle.mysteryEncounter!; + const encounter = globalScene.currentBattle.mysteryEncounter!; - const party = scene.getPlayerParty(); + const party = globalScene.getPlayerParty(); let mostHeldItemsPokemon = party[0]; let count = mostHeldItemsPokemon.getHeldItems() .filter(m => m.isTransferable && !(m instanceof BerryModifier)) @@ -270,10 +274,10 @@ export const ClowningAroundEncounter: MysteryEncounter = items.filter(m => m instanceof BerryModifier) .forEach(m => { numBerries += m.stackCount; - scene.removeModifier(m); + globalScene.removeModifier(m); }); - generateItemsOfTier(scene, mostHeldItemsPokemon, numBerries, "Berries"); + generateItemsOfTier(mostHeldItemsPokemon, numBerries, "Berries"); // Shuffle Transferable held items in the same tier (only shuffles Ultra and Rogue atm) // For the purpose of this ME, Soothe Bells and Lucky Eggs are counted as Ultra tier @@ -286,24 +290,24 @@ export const ClowningAroundEncounter: MysteryEncounter = const tier = type.tier ?? ModifierTier.ULTRA; if (type.id === "GOLDEN_EGG" || tier === ModifierTier.ROGUE) { numRogue += m.stackCount; - scene.removeModifier(m); + globalScene.removeModifier(m); } else if (type.id === "LUCKY_EGG" || type.id === "SOOTHE_BELL" || tier === ModifierTier.ULTRA) { numUltra += m.stackCount; - scene.removeModifier(m); + globalScene.removeModifier(m); } }); - generateItemsOfTier(scene, mostHeldItemsPokemon, numUltra, ModifierTier.ULTRA); - generateItemsOfTier(scene, mostHeldItemsPokemon, numRogue, ModifierTier.ROGUE); + generateItemsOfTier(mostHeldItemsPokemon, numUltra, ModifierTier.ULTRA); + generateItemsOfTier(mostHeldItemsPokemon, numRogue, ModifierTier.ROGUE); }) - .withOptionPhase(async (scene: BattleScene) => { - leaveEncounterWithoutBattle(scene, true); + .withOptionPhase(async () => { + leaveEncounterWithoutBattle(true); }) - .withPostOptionPhase(async (scene: BattleScene) => { + .withPostOptionPhase(async () => { // Play animations - const background = new EncounterBattleAnim(EncounterAnim.SMOKESCREEN, scene.getPlayerPokemon()!, scene.getPlayerPokemon()); - background.playWithoutTargets(scene, 230, 40, 2); - await transitionMysteryEncounterIntroVisuals(scene, true, true, 200); + const background = new EncounterBattleAnim(EncounterAnim.SMOKESCREEN, globalScene.getPlayerPokemon()!, globalScene.getPlayerPokemon()); + background.playWithoutTargets(230, 40, 2); + await transitionMysteryEncounterIntroVisuals(true, true, 200); }) .build() ) @@ -327,10 +331,10 @@ export const ClowningAroundEncounter: MysteryEncounter = }, ], }) - .withPreOptionPhase(async (scene: BattleScene) => { + .withPreOptionPhase(async () => { // Randomize the second type of all player's pokemon // If the pokemon does not normally have a second type, it will gain 1 - for (const pokemon of scene.getPlayerParty()) { + for (const pokemon of globalScene.getPlayerParty()) { const originalTypes = pokemon.getTypes(false, false, true); // If the Pokemon has non-status moves that don't match the Pokemon's type, prioritizes those as the new type @@ -367,14 +371,14 @@ export const ClowningAroundEncounter: MysteryEncounter = } } }) - .withOptionPhase(async (scene: BattleScene) => { - leaveEncounterWithoutBattle(scene, true); + .withOptionPhase(async () => { + leaveEncounterWithoutBattle(true); }) - .withPostOptionPhase(async (scene: BattleScene) => { + .withPostOptionPhase(async () => { // Play animations - const background = new EncounterBattleAnim(EncounterAnim.SMOKESCREEN, scene.getPlayerPokemon()!, scene.getPlayerPokemon()); - background.playWithoutTargets(scene, 230, 40, 2); - await transitionMysteryEncounterIntroVisuals(scene, true, true, 200); + const background = new EncounterBattleAnim(EncounterAnim.SMOKESCREEN, globalScene.getPlayerPokemon()!, globalScene.getPlayerPokemon()); + background.playWithoutTargets(230, 40, 2); + await transitionMysteryEncounterIntroVisuals(true, true, 200); }) .build() ) @@ -385,24 +389,24 @@ export const ClowningAroundEncounter: MysteryEncounter = ]) .build(); -async function handleSwapAbility(scene: BattleScene) { +async function handleSwapAbility() { return new Promise(async resolve => { - await showEncounterDialogue(scene, `${namespace}:option.1.apply_ability_dialogue`, `${namespace}:speaker`); - await showEncounterText(scene, `${namespace}:option.1.apply_ability_message`); + await showEncounterDialogue(`${namespace}:option.1.apply_ability_dialogue`, `${namespace}:speaker`); + await showEncounterText(`${namespace}:option.1.apply_ability_message`); - scene.ui.setMode(Mode.MESSAGE).then(() => { - displayYesNoOptions(scene, resolve); + globalScene.ui.setMode(Mode.MESSAGE).then(() => { + displayYesNoOptions(resolve); }); }); } -function displayYesNoOptions(scene: BattleScene, resolve) { - showEncounterText(scene, `${namespace}:option.1.ability_prompt`, null, 500, false); +function displayYesNoOptions(resolve) { + showEncounterText(`${namespace}:option.1.ability_prompt`, null, 500, false); const fullOptions = [ { label: i18next.t("menu:yes"), handler: () => { - onYesAbilitySwap(scene, resolve); + onYesAbilitySwap(resolve); return true; } }, @@ -420,29 +424,29 @@ function displayYesNoOptions(scene: BattleScene, resolve) { maxOptions: 7, yOffset: 0 }; - scene.ui.setModeWithoutClear(Mode.OPTION_SELECT, config, null, true); + globalScene.ui.setModeWithoutClear(Mode.OPTION_SELECT, config, null, true); } -function onYesAbilitySwap(scene: BattleScene, resolve) { +function onYesAbilitySwap(resolve) { const onPokemonSelected = (pokemon: PlayerPokemon) => { // Do ability swap - const encounter = scene.currentBattle.mysteryEncounter!; + const encounter = globalScene.currentBattle.mysteryEncounter!; applyAbilityOverrideToPokemon(pokemon, encounter.misc.ability); encounter.setDialogueToken("chosenPokemon", pokemon.getNameToRender()); - scene.ui.setMode(Mode.MESSAGE).then(() => resolve(true)); + globalScene.ui.setMode(Mode.MESSAGE).then(() => resolve(true)); }; const onPokemonNotSelected = () => { - scene.ui.setMode(Mode.MESSAGE).then(() => { - displayYesNoOptions(scene, resolve); + globalScene.ui.setMode(Mode.MESSAGE).then(() => { + displayYesNoOptions(resolve); }); }; - selectPokemonForOption(scene, onPokemonSelected, onPokemonNotSelected); + selectPokemonForOption(onPokemonSelected, onPokemonNotSelected); } -function generateItemsOfTier(scene: BattleScene, pokemon: PlayerPokemon, numItems: number, tier: ModifierTier | "Berries") { +function generateItemsOfTier(pokemon: PlayerPokemon, numItems: number, tier: ModifierTier | "Berries") { // These pools have to be defined at runtime so that modifierTypes exist // Pools have instances of the modifier type equal to the max stacks that modifier can be applied to any one pokemon // This is to prevent "over-generating" a random item of a certain type during item swaps @@ -495,11 +499,11 @@ function generateItemsOfTier(scene: BattleScene, pokemon: PlayerPokemon, numItem const newItemType = pool[randIndex]; let newMod: PokemonHeldItemModifierType; if (tier === "Berries") { - newMod = generateModifierType(scene, modifierTypes.BERRY, [ newItemType[0] ]) as PokemonHeldItemModifierType; + newMod = generateModifierType(modifierTypes.BERRY, [ newItemType[0] ]) as PokemonHeldItemModifierType; } else { - newMod = generateModifierType(scene, newItemType[0]) as PokemonHeldItemModifierType; + newMod = generateModifierType(newItemType[0]) as PokemonHeldItemModifierType; } - applyModifierTypeToPlayerPokemon(scene, pokemon, newMod); + applyModifierTypeToPlayerPokemon(pokemon, newMod); // Decrement max stacks and remove from pool if at max newItemType[1]--; if (newItemType[1] <= 0) { diff --git a/src/data/mystery-encounters/encounters/dancing-lessons-encounter.ts b/src/data/mystery-encounters/encounters/dancing-lessons-encounter.ts index 841aadd7c36..6dcac277525 100644 --- a/src/data/mystery-encounters/encounters/dancing-lessons-encounter.ts +++ b/src/data/mystery-encounters/encounters/dancing-lessons-encounter.ts @@ -1,22 +1,26 @@ import { BattlerIndex } from "#app/battle"; -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { EncounterBattleAnim } from "#app/data/battle-anims"; -import MysteryEncounter, { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; +import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; import { MoveRequirement } from "#app/data/mystery-encounters/mystery-encounter-requirements"; import { DANCING_MOVES } from "#app/data/mystery-encounters/requirements/requirement-groups"; import { getEncounterText, queueEncounterMessage } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; -import { EnemyPartyConfig, initBattleWithEnemyConfig, leaveEncounterWithoutBattle, selectPokemonForOption, setEncounterRewards } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import type { EnemyPartyConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import { initBattleWithEnemyConfig, leaveEncounterWithoutBattle, selectPokemonForOption, setEncounterRewards } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { catchPokemon, getEncounterPokemonLevelForWave, STANDARD_ENCOUNTER_BOOSTED_LEVEL_MODIFIER } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; import { getPokemonSpecies } from "#app/data/pokemon-species"; import { TrainerSlot } from "#app/data/trainer-config"; -import Pokemon, { EnemyPokemon, PlayerPokemon, PokemonMove } from "#app/field/pokemon"; +import type { PlayerPokemon } from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; +import { EnemyPokemon, PokemonMove } from "#app/field/pokemon"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/game-mode"; import { modifierTypes } from "#app/modifier/modifier-type"; import { LearnMovePhase } from "#app/phases/learn-move-phase"; import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; import PokemonData from "#app/system/pokemon-data"; -import { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; +import type { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; import { BattlerTagType } from "#enums/battler-tag-type"; import { Biome } from "#enums/biome"; import { EncounterAnim } from "#enums/encounter-anims"; @@ -91,10 +95,10 @@ export const DancingLessonsEncounter: MysteryEncounter = .withAutoHideIntroVisuals(false) .withCatchAllowed(true) .withFleeAllowed(false) - .withOnVisualsStart((scene: BattleScene) => { - const oricorio = scene.getEnemyPokemon()!; - const danceAnim = new EncounterBattleAnim(EncounterAnim.DANCE, oricorio, scene.getPlayerPokemon()!); - danceAnim.play(scene, false, () => { + .withOnVisualsStart(() => { + const oricorio = globalScene.getEnemyPokemon()!; + const danceAnim = new EncounterBattleAnim(EncounterAnim.DANCE, oricorio, globalScene.getPlayerPokemon()!); + danceAnim.play(false, () => { if (oricorio.shiny) { oricorio.sparkle(); } @@ -110,12 +114,12 @@ export const DancingLessonsEncounter: MysteryEncounter = .withTitle(`${namespace}:title`) .withDescription(`${namespace}:description`) .withQuery(`${namespace}:query`) - .withOnInit((scene: BattleScene) => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withOnInit(() => { + const encounter = globalScene.currentBattle.mysteryEncounter!; const species = getPokemonSpecies(Species.ORICORIO); - const level = getEncounterPokemonLevelForWave(scene, STANDARD_ENCOUNTER_BOOSTED_LEVEL_MODIFIER); - const enemyPokemon = new EnemyPokemon(scene, species, level, TrainerSlot.NONE, false); + const level = getEncounterPokemonLevelForWave(STANDARD_ENCOUNTER_BOOSTED_LEVEL_MODIFIER); + const enemyPokemon = new EnemyPokemon(species, level, TrainerSlot.NONE, false); if (!enemyPokemon.moveset.some(m => m && m.getMove().id === Moves.REVELATION_DANCE)) { if (enemyPokemon.moveset.length < 4) { enemyPokemon.moveset.push(new PokemonMove(Moves.REVELATION_DANCE)); @@ -126,7 +130,7 @@ export const DancingLessonsEncounter: MysteryEncounter = // Set the form index based on the biome // Defaults to Baile style if somehow nothing matches - const currentBiome = scene.arena.biomeType; + const currentBiome = globalScene.arena.biomeType; if (BAILE_STYLE_BIOMES.includes(currentBiome)) { enemyPokemon.formIndex = 0; } else if (POM_POM_STYLE_BIOMES.includes(currentBiome)) { @@ -140,14 +144,14 @@ export const DancingLessonsEncounter: MysteryEncounter = } const oricorioData = new PokemonData(enemyPokemon); - const oricorio = scene.addEnemyPokemon(species, level, TrainerSlot.NONE, false, false, oricorioData); + const oricorio = globalScene.addEnemyPokemon(species, level, TrainerSlot.NONE, false, false, oricorioData); // Adds a real Pokemon sprite to the field (required for the animation) - scene.getEnemyParty().forEach(enemyPokemon => { - scene.field.remove(enemyPokemon, true); + globalScene.getEnemyParty().forEach(enemyPokemon => { + globalScene.field.remove(enemyPokemon, true); }); - scene.currentBattle.enemyParty = [ oricorio ]; - scene.field.add(oricorio); + globalScene.currentBattle.enemyParty = [ oricorio ]; + globalScene.field.add(oricorio); // Spawns on offscreen field oricorio.x -= 300; encounter.loadAssets.push(oricorio.loadAssets()); @@ -160,8 +164,8 @@ export const DancingLessonsEncounter: MysteryEncounter = // Gets +1 to all stats except SPD on battle start tags: [ BattlerTagType.MYSTERY_ENCOUNTER_POST_SUMMON ], mysteryEncounterBattleEffects: (pokemon: Pokemon) => { - queueEncounterMessage(pokemon.scene, `${namespace}:option.1.boss_enraged`); - pokemon.scene.unshiftPhase(new StatStageChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [ Stat.ATK, Stat.DEF, Stat.SPATK, Stat.SPDEF ], 1)); + queueEncounterMessage(`${namespace}:option.1.boss_enraged`); + globalScene.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, [ Stat.ATK, Stat.DEF, Stat.SPATK, Stat.SPDEF ], 1)); } }], }; @@ -186,9 +190,9 @@ export const DancingLessonsEncounter: MysteryEncounter = }, ], }) - .withOptionPhase(async (scene: BattleScene) => { + .withOptionPhase(async () => { // Pick battle - const encounter = scene.currentBattle.mysteryEncounter!; + const encounter = globalScene.currentBattle.mysteryEncounter!; encounter.startOfBattleEffects.push({ sourceBattlerIndex: BattlerIndex.ENEMY, @@ -197,9 +201,9 @@ export const DancingLessonsEncounter: MysteryEncounter = ignorePp: true }); - await hideOricorioPokemon(scene); - setEncounterRewards(scene, { guaranteedModifierTypeFuncs: [ modifierTypes.BATON ], fillRemaining: true }); - await initBattleWithEnemyConfig(scene, encounter.enemyPartyConfigs[0]); + await hideOricorioPokemon(); + setEncounterRewards({ guaranteedModifierTypeFuncs: [ modifierTypes.BATON ], fillRemaining: true }); + await initBattleWithEnemyConfig(encounter.enemyPartyConfigs[0]); }) .build() ) @@ -215,25 +219,25 @@ export const DancingLessonsEncounter: MysteryEncounter = }, ], }) - .withPreOptionPhase(async (scene: BattleScene) => { + .withPreOptionPhase(async () => { // Learn its Dance - const encounter = scene.currentBattle.mysteryEncounter!; + const encounter = globalScene.currentBattle.mysteryEncounter!; const onPokemonSelected = (pokemon: PlayerPokemon) => { encounter.setDialogueToken("selectedPokemon", pokemon.getNameToRender()); - scene.unshiftPhase(new LearnMovePhase(scene, scene.getPlayerParty().indexOf(pokemon), Moves.REVELATION_DANCE)); + globalScene.unshiftPhase(new LearnMovePhase(globalScene.getPlayerParty().indexOf(pokemon), Moves.REVELATION_DANCE)); // Play animation again to "learn" the dance - const danceAnim = new EncounterBattleAnim(EncounterAnim.DANCE, scene.getEnemyPokemon()!, scene.getPlayerPokemon()); - danceAnim.play(scene); + const danceAnim = new EncounterBattleAnim(EncounterAnim.DANCE, globalScene.getEnemyPokemon()!, globalScene.getPlayerPokemon()); + danceAnim.play(); }; - return selectPokemonForOption(scene, onPokemonSelected); + return selectPokemonForOption(onPokemonSelected); }) - .withOptionPhase(async (scene: BattleScene) => { + .withOptionPhase(async () => { // Learn its Dance - await hideOricorioPokemon(scene); - leaveEncounterWithoutBattle(scene, true); + await hideOricorioPokemon(); + leaveEncounterWithoutBattle(true); }) .build() ) @@ -252,9 +256,9 @@ export const DancingLessonsEncounter: MysteryEncounter = }, ], }) - .withPreOptionPhase(async (scene: BattleScene) => { + .withPreOptionPhase(async () => { // Open menu for selecting pokemon with a Dancing move - const encounter = scene.currentBattle.mysteryEncounter!; + const encounter = globalScene.currentBattle.mysteryEncounter!; const onPokemonSelected = (pokemon: PlayerPokemon) => { // Return the options for nature selection return pokemon.moveset @@ -281,20 +285,20 @@ export const DancingLessonsEncounter: MysteryEncounter = if (!pokemon.isAllowedInBattle()) { return i18next.t("partyUiHandler:cantBeUsed", { pokemonName: pokemon.getNameToRender() }) ?? null; } - const meetsReqs = encounter.options[2].pokemonMeetsPrimaryRequirements(scene, pokemon); + const meetsReqs = encounter.options[2].pokemonMeetsPrimaryRequirements(pokemon); if (!meetsReqs) { - return getEncounterText(scene, `${namespace}:invalid_selection`) ?? null; + return getEncounterText(`${namespace}:invalid_selection`) ?? null; } return null; }; - return selectPokemonForOption(scene, onPokemonSelected, undefined, selectableFilter); + return selectPokemonForOption(onPokemonSelected, undefined, selectableFilter); }) - .withOptionPhase(async (scene: BattleScene) => { + .withOptionPhase(async () => { // Show the Oricorio a dance, and recruit it - const encounter = scene.currentBattle.mysteryEncounter!; - const oricorio = encounter.misc.oricorioData.toPokemon(scene); + const encounter = globalScene.currentBattle.mysteryEncounter!; + const oricorio = encounter.misc.oricorioData.toPokemon(); oricorio.passive = true; // Ensure the Oricorio's moveset gains the Dance move the player used @@ -307,18 +311,18 @@ export const DancingLessonsEncounter: MysteryEncounter = } } - await hideOricorioPokemon(scene); - await catchPokemon(scene, oricorio, null, PokeballType.POKEBALL, false); - leaveEncounterWithoutBattle(scene, true); + await hideOricorioPokemon(); + await catchPokemon(oricorio, null, PokeballType.POKEBALL, false); + leaveEncounterWithoutBattle(true); }) .build() ) .build(); -function hideOricorioPokemon(scene: BattleScene) { +function hideOricorioPokemon() { return new Promise(resolve => { - const oricorioSprite = scene.getEnemyParty()[0]; - scene.tweens.add({ + const oricorioSprite = globalScene.getEnemyParty()[0]; + globalScene.tweens.add({ targets: oricorioSprite, x: "+=16", y: "-=16", @@ -326,7 +330,7 @@ function hideOricorioPokemon(scene: BattleScene) { ease: "Sine.easeInOut", duration: 750, onComplete: () => { - scene.field.remove(oricorioSprite, true); + globalScene.field.remove(oricorioSprite, true); resolve(); } }); diff --git a/src/data/mystery-encounters/encounters/dark-deal-encounter.ts b/src/data/mystery-encounters/encounters/dark-deal-encounter.ts index 05d6501f256..3b6ab8b0c05 100644 --- a/src/data/mystery-encounters/encounters/dark-deal-encounter.ts +++ b/src/data/mystery-encounters/encounters/dark-deal-encounter.ts @@ -1,18 +1,21 @@ -import { Type } from "#enums/type"; +import type { Type } from "#enums/type"; import { isNullOrUndefined, randSeedInt } from "#app/utils"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { Species } from "#enums/species"; -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { modifierTypes } from "#app/modifier/modifier-type"; import { getPokemonSpecies } from "#app/data/pokemon-species"; -import MysteryEncounter, { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; +import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; -import { EnemyPartyConfig, EnemyPokemonConfig, initBattleWithEnemyConfig, leaveEncounterWithoutBattle, } from "../utils/encounter-phase-utils"; +import type { EnemyPartyConfig, EnemyPokemonConfig } from "../utils/encounter-phase-utils"; +import { initBattleWithEnemyConfig, leaveEncounterWithoutBattle, } from "../utils/encounter-phase-utils"; import { getRandomPlayerPokemon, getRandomSpeciesByStarterCost } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { ModifierRewardPhase } from "#app/phases/modifier-reward-phase"; -import { PokemonFormChangeItemModifier, PokemonHeldItemModifier } from "#app/modifier/modifier"; +import type { PokemonHeldItemModifier } from "#app/modifier/modifier"; +import { PokemonFormChangeItemModifier } from "#app/modifier/modifier"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/game-mode"; import { Challenges } from "#enums/challenges"; @@ -138,16 +141,16 @@ export const DarkDealEncounter: MysteryEncounter = }, ], }) - .withPreOptionPhase(async (scene: BattleScene) => { + .withPreOptionPhase(async () => { // Removes random pokemon (including fainted) from party and adds name to dialogue data tokens // Will never return last battle able mon and instead pick fainted/unable to battle - const removedPokemon = getRandomPlayerPokemon(scene, true, false, true); + const removedPokemon = getRandomPlayerPokemon(true, false, true); // Get all the pokemon's held items const modifiers = removedPokemon.getHeldItems().filter(m => !(m instanceof PokemonFormChangeItemModifier)); - scene.removePokemonFromPlayerParty(removedPokemon); + globalScene.removePokemonFromPlayerParty(removedPokemon); - const encounter = scene.currentBattle.mysteryEncounter!; + const encounter = globalScene.currentBattle.mysteryEncounter!; encounter.setDialogueToken("pokeName", removedPokemon.getNameToRender()); // Store removed pokemon types @@ -156,16 +159,16 @@ export const DarkDealEncounter: MysteryEncounter = modifiers }; }) - .withOptionPhase(async (scene: BattleScene) => { + .withOptionPhase(async () => { // Give the player 5 Rogue Balls - const encounter = scene.currentBattle.mysteryEncounter!; - scene.unshiftPhase(new ModifierRewardPhase(scene, modifierTypes.ROGUE_BALL)); + const encounter = globalScene.currentBattle.mysteryEncounter!; + globalScene.unshiftPhase(new ModifierRewardPhase(modifierTypes.ROGUE_BALL)); // Start encounter with random legendary (7-10 starter strength) that has level additive // If this is a mono-type challenge, always ensure the required type is filtered for let bossTypes: Type[] = encounter.misc.removedTypes; - const singleTypeChallenges = scene.gameMode.challenges.filter(c => c.value && c.id === Challenges.SINGLE_TYPE); - if (scene.gameMode.isChallenge && singleTypeChallenges.length > 0) { + const singleTypeChallenges = globalScene.gameMode.challenges.filter(c => c.value && c.id === Challenges.SINGLE_TYPE); + if (globalScene.gameMode.isChallenge && singleTypeChallenges.length > 0) { bossTypes = singleTypeChallenges.map(c => (c.value - 1) as Type); } @@ -191,7 +194,7 @@ export const DarkDealEncounter: MysteryEncounter = const config: EnemyPartyConfig = { pokemonConfigs: [ pokemonConfig ], }; - await initBattleWithEnemyConfig(scene, config); + await initBattleWithEnemyConfig(config); }) .build() ) @@ -206,9 +209,9 @@ export const DarkDealEncounter: MysteryEncounter = }, ], }, - async (scene: BattleScene) => { + async () => { // Leave encounter with no rewards or exp - leaveEncounterWithoutBattle(scene, true); + leaveEncounterWithoutBattle(true); return true; } ) diff --git a/src/data/mystery-encounters/encounters/delibirdy-encounter.ts b/src/data/mystery-encounters/encounters/delibirdy-encounter.ts index 99668c76143..d710dffab8c 100644 --- a/src/data/mystery-encounters/encounters/delibirdy-encounter.ts +++ b/src/data/mystery-encounters/encounters/delibirdy-encounter.ts @@ -1,18 +1,22 @@ -import BattleScene from "#app/battle-scene"; -import MysteryEncounter, { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; +import { globalScene } from "#app/global-scene"; +import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; import { CombinationPokemonRequirement, HeldItemRequirement, MoneyRequirement } from "#app/data/mystery-encounters/mystery-encounter-requirements"; import { getEncounterText, showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; import { generateModifierType, leaveEncounterWithoutBattle, selectPokemonForOption, updatePlayerMoney, } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { applyModifierTypeToPlayerPokemon } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; import { getPokemonSpecies } from "#app/data/pokemon-species"; -import Pokemon, { PlayerPokemon } from "#app/field/pokemon"; +import type { PlayerPokemon } from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/game-mode"; -import { BerryModifier, HealingBoosterModifier, LevelIncrementBoosterModifier, MoneyMultiplierModifier, PokemonHeldItemModifier, PokemonInstantReviveModifier, PreserveBerryModifier } from "#app/modifier/modifier"; -import { modifierTypes, PokemonHeldItemModifierType } from "#app/modifier/modifier-type"; +import type { PokemonHeldItemModifier, PokemonInstantReviveModifier } from "#app/modifier/modifier"; +import { BerryModifier, HealingBoosterModifier, LevelIncrementBoosterModifier, MoneyMultiplierModifier, PreserveBerryModifier } from "#app/modifier/modifier"; +import type { PokemonHeldItemModifierType } from "#app/modifier/modifier-type"; +import { modifierTypes } from "#app/modifier/modifier-type"; import { ModifierRewardPhase } from "#app/phases/modifier-reward-phase"; import i18next from "#app/plugins/i18n"; -import { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; +import type { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; import { randSeedItem } from "#app/utils"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; @@ -36,19 +40,19 @@ const OPTION_3_DISALLOWED_MODIFIERS = [ const DELIBIRDY_MONEY_PRICE_MULTIPLIER = 2; -const doEventReward = (scene: BattleScene) => { - const event_buff = scene.eventManager.activeEvent()?.delibirdyBuff ?? []; +const doEventReward = () => { + const event_buff = globalScene.eventManager.activeEvent()?.delibirdyBuff ?? []; if (event_buff.length > 0) { const candidates = event_buff.filter((c => { - const mtype = generateModifierType(scene, modifierTypes[c]); - const existingCharm = scene.findModifier(m => m.type.id === mtype?.id); - return !(existingCharm && existingCharm.getStackCount() >= existingCharm.getMaxStackCount(scene)); + const mtype = generateModifierType(modifierTypes[c]); + const existingCharm = globalScene.findModifier(m => m.type.id === mtype?.id); + return !(existingCharm && existingCharm.getStackCount() >= existingCharm.getMaxStackCount()); })); if (candidates.length > 0) { - scene.unshiftPhase(new ModifierRewardPhase(scene, modifierTypes[randSeedItem(candidates)])); + globalScene.unshiftPhase(new ModifierRewardPhase(modifierTypes[randSeedItem(candidates)])); } else { // At max stacks, give a Voucher instead - scene.unshiftPhase(new ModifierRewardPhase(scene, modifierTypes.VOUCHER)); + globalScene.unshiftPhase(new ModifierRewardPhase(modifierTypes.VOUCHER)); } } }; @@ -114,15 +118,15 @@ export const DelibirdyEncounter: MysteryEncounter = text: `${namespace}:outro`, } ]) - .withOnInit((scene: BattleScene) => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withOnInit(() => { + const encounter = globalScene.currentBattle.mysteryEncounter!; encounter.setDialogueToken("delibirdName", getPokemonSpecies(Species.DELIBIRD).getName()); - scene.loadBgm("mystery_encounter_delibirdy", "mystery_encounter_delibirdy.mp3"); + globalScene.loadBgm("mystery_encounter_delibirdy", "mystery_encounter_delibirdy.mp3"); return true; }) - .withOnVisualsStart((scene: BattleScene) => { - scene.fadeAndSwitchBgm("mystery_encounter_delibirdy"); + .withOnVisualsStart(() => { + globalScene.fadeAndSwitchBgm("mystery_encounter_delibirdy"); return true; }) .withOption( @@ -138,29 +142,29 @@ export const DelibirdyEncounter: MysteryEncounter = }, ], }) - .withPreOptionPhase(async (scene: BattleScene): Promise => { - const encounter = scene.currentBattle.mysteryEncounter!; - updatePlayerMoney(scene, -(encounter.options[0].requirements[0] as MoneyRequirement).requiredMoney, true, false); + .withPreOptionPhase(async (): Promise => { + const encounter = globalScene.currentBattle.mysteryEncounter!; + updatePlayerMoney(-(encounter.options[0].requirements[0] as MoneyRequirement).requiredMoney, true, false); return true; }) - .withOptionPhase(async (scene: BattleScene) => { + .withOptionPhase(async () => { // Give the player an Amulet Coin // Check if the player has max stacks of that item already - const existing = scene.findModifier(m => m instanceof MoneyMultiplierModifier) as MoneyMultiplierModifier; + const existing = globalScene.findModifier(m => m instanceof MoneyMultiplierModifier) as MoneyMultiplierModifier; - if (existing && existing.getStackCount() >= existing.getMaxStackCount(scene)) { + if (existing && existing.getStackCount() >= existing.getMaxStackCount()) { // At max stacks, give the first party pokemon a Shell Bell instead - const shellBell = generateModifierType(scene, modifierTypes.SHELL_BELL) as PokemonHeldItemModifierType; - await applyModifierTypeToPlayerPokemon(scene, scene.getPlayerPokemon()!, shellBell); - scene.playSound("item_fanfare"); - await showEncounterText(scene, i18next.t("battle:rewardGain", { modifierName: shellBell.name }), null, undefined, true); - doEventReward(scene); + const shellBell = generateModifierType(modifierTypes.SHELL_BELL) as PokemonHeldItemModifierType; + await applyModifierTypeToPlayerPokemon(globalScene.getPlayerPokemon()!, shellBell); + globalScene.playSound("item_fanfare"); + await showEncounterText(i18next.t("battle:rewardGain", { modifierName: shellBell.name }), null, undefined, true); + doEventReward(); } else { - scene.unshiftPhase(new ModifierRewardPhase(scene, modifierTypes.AMULET_COIN)); - doEventReward(scene); + globalScene.unshiftPhase(new ModifierRewardPhase(modifierTypes.AMULET_COIN)); + doEventReward(); } - leaveEncounterWithoutBattle(scene, true); + leaveEncounterWithoutBattle(true); }) .build() ) @@ -178,8 +182,8 @@ export const DelibirdyEncounter: MysteryEncounter = }, ], }) - .withPreOptionPhase(async (scene: BattleScene): Promise => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withPreOptionPhase(async (): Promise => { + const encounter = globalScene.currentBattle.mysteryEncounter!; const onPokemonSelected = (pokemon: PlayerPokemon) => { // Get Pokemon held items and filter for valid ones const validItems = pokemon.getHeldItems().filter((it) => { @@ -205,57 +209,57 @@ export const DelibirdyEncounter: MysteryEncounter = const selectableFilter = (pokemon: Pokemon) => { // If pokemon has valid item, it can be selected - const meetsReqs = encounter.options[1].pokemonMeetsPrimaryRequirements(scene, pokemon); + const meetsReqs = encounter.options[1].pokemonMeetsPrimaryRequirements(pokemon); if (!meetsReqs) { - return getEncounterText(scene, `${namespace}:invalid_selection`) ?? null; + return getEncounterText(`${namespace}:invalid_selection`) ?? null; } return null; }; - return selectPokemonForOption(scene, onPokemonSelected, undefined, selectableFilter); + return selectPokemonForOption(onPokemonSelected, undefined, selectableFilter); }) - .withOptionPhase(async (scene: BattleScene) => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withOptionPhase(async () => { + const encounter = globalScene.currentBattle.mysteryEncounter!; const modifier: BerryModifier | PokemonInstantReviveModifier = encounter.misc.chosenModifier; const chosenPokemon: PlayerPokemon = encounter.misc.chosenPokemon; // Give the player a Candy Jar if they gave a Berry, and a Berry Pouch for Reviver Seed if (modifier instanceof BerryModifier) { // Check if the player has max stacks of that Candy Jar already - const existing = scene.findModifier(m => m instanceof LevelIncrementBoosterModifier) as LevelIncrementBoosterModifier; + const existing = globalScene.findModifier(m => m instanceof LevelIncrementBoosterModifier) as LevelIncrementBoosterModifier; - if (existing && existing.getStackCount() >= existing.getMaxStackCount(scene)) { + if (existing && existing.getStackCount() >= existing.getMaxStackCount()) { // At max stacks, give the first party pokemon a Shell Bell instead - const shellBell = generateModifierType(scene, modifierTypes.SHELL_BELL) as PokemonHeldItemModifierType; - await applyModifierTypeToPlayerPokemon(scene, scene.getPlayerPokemon()!, shellBell); - scene.playSound("item_fanfare"); - await showEncounterText(scene, i18next.t("battle:rewardGain", { modifierName: shellBell.name }), null, undefined, true); - doEventReward(scene); + const shellBell = generateModifierType(modifierTypes.SHELL_BELL) as PokemonHeldItemModifierType; + await applyModifierTypeToPlayerPokemon(globalScene.getPlayerPokemon()!, shellBell); + globalScene.playSound("item_fanfare"); + await showEncounterText(i18next.t("battle:rewardGain", { modifierName: shellBell.name }), null, undefined, true); + doEventReward(); } else { - scene.unshiftPhase(new ModifierRewardPhase(scene, modifierTypes.CANDY_JAR)); - doEventReward(scene); + globalScene.unshiftPhase(new ModifierRewardPhase(modifierTypes.CANDY_JAR)); + doEventReward(); } } else { // Check if the player has max stacks of that Berry Pouch already - const existing = scene.findModifier(m => m instanceof PreserveBerryModifier) as PreserveBerryModifier; + const existing = globalScene.findModifier(m => m instanceof PreserveBerryModifier) as PreserveBerryModifier; - if (existing && existing.getStackCount() >= existing.getMaxStackCount(scene)) { + if (existing && existing.getStackCount() >= existing.getMaxStackCount()) { // At max stacks, give the first party pokemon a Shell Bell instead - const shellBell = generateModifierType(scene, modifierTypes.SHELL_BELL) as PokemonHeldItemModifierType; - await applyModifierTypeToPlayerPokemon(scene, scene.getPlayerPokemon()!, shellBell); - scene.playSound("item_fanfare"); - await showEncounterText(scene, i18next.t("battle:rewardGain", { modifierName: shellBell.name }), null, undefined, true); - doEventReward(scene); + const shellBell = generateModifierType(modifierTypes.SHELL_BELL) as PokemonHeldItemModifierType; + await applyModifierTypeToPlayerPokemon(globalScene.getPlayerPokemon()!, shellBell); + globalScene.playSound("item_fanfare"); + await showEncounterText(i18next.t("battle:rewardGain", { modifierName: shellBell.name }), null, undefined, true); + doEventReward(); } else { - scene.unshiftPhase(new ModifierRewardPhase(scene, modifierTypes.BERRY_POUCH)); - doEventReward(scene); + globalScene.unshiftPhase(new ModifierRewardPhase(modifierTypes.BERRY_POUCH)); + doEventReward(); } } chosenPokemon.loseHeldItem(modifier, false); - leaveEncounterWithoutBattle(scene, true); + leaveEncounterWithoutBattle(true); }) .build() ) @@ -273,8 +277,8 @@ export const DelibirdyEncounter: MysteryEncounter = }, ], }) - .withPreOptionPhase(async (scene: BattleScene): Promise => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withPreOptionPhase(async (): Promise => { + const encounter = globalScene.currentBattle.mysteryEncounter!; const onPokemonSelected = (pokemon: PlayerPokemon) => { // Get Pokemon held items and filter for valid ones const validItems = pokemon.getHeldItems().filter((it) => { @@ -300,39 +304,39 @@ export const DelibirdyEncounter: MysteryEncounter = const selectableFilter = (pokemon: Pokemon) => { // If pokemon has valid item, it can be selected - const meetsReqs = encounter.options[2].pokemonMeetsPrimaryRequirements(scene, pokemon); + const meetsReqs = encounter.options[2].pokemonMeetsPrimaryRequirements(pokemon); if (!meetsReqs) { - return getEncounterText(scene, `${namespace}:invalid_selection`) ?? null; + return getEncounterText(`${namespace}:invalid_selection`) ?? null; } return null; }; - return selectPokemonForOption(scene, onPokemonSelected, undefined, selectableFilter); + return selectPokemonForOption(onPokemonSelected, undefined, selectableFilter); }) - .withOptionPhase(async (scene: BattleScene) => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withOptionPhase(async () => { + const encounter = globalScene.currentBattle.mysteryEncounter!; const modifier = encounter.misc.chosenModifier; const chosenPokemon: PlayerPokemon = encounter.misc.chosenPokemon; // Check if the player has max stacks of Healing Charm already - const existing = scene.findModifier(m => m instanceof HealingBoosterModifier) as HealingBoosterModifier; + const existing = globalScene.findModifier(m => m instanceof HealingBoosterModifier) as HealingBoosterModifier; - if (existing && existing.getStackCount() >= existing.getMaxStackCount(scene)) { + if (existing && existing.getStackCount() >= existing.getMaxStackCount()) { // At max stacks, give the first party pokemon a Shell Bell instead - const shellBell = generateModifierType(scene, modifierTypes.SHELL_BELL) as PokemonHeldItemModifierType; - await applyModifierTypeToPlayerPokemon(scene, scene.getPlayerParty()[0], shellBell); - scene.playSound("item_fanfare"); - await showEncounterText(scene, i18next.t("battle:rewardGain", { modifierName: shellBell.name }), null, undefined, true); - doEventReward(scene); + const shellBell = generateModifierType(modifierTypes.SHELL_BELL) as PokemonHeldItemModifierType; + await applyModifierTypeToPlayerPokemon(globalScene.getPlayerParty()[0], shellBell); + globalScene.playSound("item_fanfare"); + await showEncounterText(i18next.t("battle:rewardGain", { modifierName: shellBell.name }), null, undefined, true); + doEventReward(); } else { - scene.unshiftPhase(new ModifierRewardPhase(scene, modifierTypes.HEALING_CHARM)); - doEventReward(scene); + globalScene.unshiftPhase(new ModifierRewardPhase(modifierTypes.HEALING_CHARM)); + doEventReward(); } chosenPokemon.loseHeldItem(modifier, false); - leaveEncounterWithoutBattle(scene, true); + leaveEncounterWithoutBattle(true); }) .build() ) diff --git a/src/data/mystery-encounters/encounters/department-store-sale-encounter.ts b/src/data/mystery-encounters/encounters/department-store-sale-encounter.ts index 10034d19263..b2bc13ca744 100644 --- a/src/data/mystery-encounters/encounters/department-store-sale-encounter.ts +++ b/src/data/mystery-encounters/encounters/department-store-sale-encounter.ts @@ -2,12 +2,13 @@ import { leaveEncounterWithoutBattle, setEncounterRewards, } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { ModifierTypeFunc, modifierTypes } from "#app/modifier/modifier-type"; +import type { ModifierTypeFunc } from "#app/modifier/modifier-type"; +import { modifierTypes } from "#app/modifier/modifier-type"; import { randSeedInt } from "#app/utils"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { Species } from "#enums/species"; -import BattleScene from "#app/battle-scene"; -import MysteryEncounter, { +import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder, } from "#app/data/mystery-encounters/mystery-encounter"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; @@ -60,7 +61,7 @@ export const DepartmentStoreSaleEncounter: MysteryEncounter = buttonLabel: `${namespace}:option.1.label`, buttonTooltip: `${namespace}:option.1.tooltip`, }, - async (scene: BattleScene) => { + async () => { // Choose TMs const modifiers: ModifierTypeFunc[] = []; let i = 0; @@ -77,8 +78,8 @@ export const DepartmentStoreSaleEncounter: MysteryEncounter = i++; } - setEncounterRewards(scene, { guaranteedModifierTypeFuncs: modifiers, fillRemaining: false, }); - leaveEncounterWithoutBattle(scene); + setEncounterRewards({ guaranteedModifierTypeFuncs: modifiers, fillRemaining: false, }); + leaveEncounterWithoutBattle(); } ) .withSimpleOption( @@ -86,7 +87,7 @@ export const DepartmentStoreSaleEncounter: MysteryEncounter = buttonLabel: `${namespace}:option.2.label`, buttonTooltip: `${namespace}:option.2.tooltip`, }, - async (scene: BattleScene) => { + async () => { // Choose Vitamins const modifiers: ModifierTypeFunc[] = []; let i = 0; @@ -101,8 +102,8 @@ export const DepartmentStoreSaleEncounter: MysteryEncounter = i++; } - setEncounterRewards(scene, { guaranteedModifierTypeFuncs: modifiers, fillRemaining: false, }); - leaveEncounterWithoutBattle(scene); + setEncounterRewards({ guaranteedModifierTypeFuncs: modifiers, fillRemaining: false, }); + leaveEncounterWithoutBattle(); } ) .withSimpleOption( @@ -110,7 +111,7 @@ export const DepartmentStoreSaleEncounter: MysteryEncounter = buttonLabel: `${namespace}:option.3.label`, buttonTooltip: `${namespace}:option.3.tooltip`, }, - async (scene: BattleScene) => { + async () => { // Choose X Items const modifiers: ModifierTypeFunc[] = []; let i = 0; @@ -125,8 +126,8 @@ export const DepartmentStoreSaleEncounter: MysteryEncounter = i++; } - setEncounterRewards(scene, { guaranteedModifierTypeFuncs: modifiers, fillRemaining: false, }); - leaveEncounterWithoutBattle(scene); + setEncounterRewards({ guaranteedModifierTypeFuncs: modifiers, fillRemaining: false, }); + leaveEncounterWithoutBattle(); } ) .withSimpleOption( @@ -134,7 +135,7 @@ export const DepartmentStoreSaleEncounter: MysteryEncounter = buttonLabel: `${namespace}:option.4.label`, buttonTooltip: `${namespace}:option.4.tooltip`, }, - async (scene: BattleScene) => { + async () => { // Choose Pokeballs const modifiers: ModifierTypeFunc[] = []; let i = 0; @@ -153,8 +154,8 @@ export const DepartmentStoreSaleEncounter: MysteryEncounter = i++; } - setEncounterRewards(scene, { guaranteedModifierTypeFuncs: modifiers, fillRemaining: false, }); - leaveEncounterWithoutBattle(scene); + setEncounterRewards({ guaranteedModifierTypeFuncs: modifiers, fillRemaining: false, }); + leaveEncounterWithoutBattle(); } ) .withOutroDialogue([ diff --git a/src/data/mystery-encounters/encounters/field-trip-encounter.ts b/src/data/mystery-encounters/encounters/field-trip-encounter.ts index 1c26df0cf71..8bb5c68eec0 100644 --- a/src/data/mystery-encounters/encounters/field-trip-encounter.ts +++ b/src/data/mystery-encounters/encounters/field-trip-encounter.ts @@ -1,12 +1,13 @@ import { MoveCategory } from "#app/data/move"; import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; import { generateModifierTypeOption, leaveEncounterWithoutBattle, selectPokemonForOption, setEncounterExp, setEncounterRewards } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { PlayerPokemon, PokemonMove } from "#app/field/pokemon"; +import type { PlayerPokemon, PokemonMove } from "#app/field/pokemon"; import { modifierTypes } from "#app/modifier/modifier-type"; -import { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; +import type { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import BattleScene from "#app/battle-scene"; -import MysteryEncounter, { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; +import { globalScene } from "#app/global-scene"; +import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { Stat } from "#enums/stat"; @@ -64,8 +65,8 @@ export const FieldTripEncounter: MysteryEncounter = buttonTooltip: `${namespace}:option.1.tooltip`, secondOptionPrompt: `${namespace}:second_option_prompt`, }) - .withPreOptionPhase(async (scene: BattleScene): Promise => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withPreOptionPhase(async (): Promise => { + const encounter = globalScene.currentBattle.mysteryEncounter!; const onPokemonSelected = (pokemon: PlayerPokemon) => { // Return the options for Pokemon move valid for this option return pokemon.moveset.map((move: PokemonMove) => { @@ -74,7 +75,7 @@ export const FieldTripEncounter: MysteryEncounter = handler: () => { // Pokemon and move selected encounter.setDialogueToken("moveCategory", i18next.t(`${namespace}:physical`)); - pokemonAndMoveChosen(scene, pokemon, move, MoveCategory.PHYSICAL); + pokemonAndMoveChosen(pokemon, move, MoveCategory.PHYSICAL); return true; }, }; @@ -82,23 +83,23 @@ export const FieldTripEncounter: MysteryEncounter = }); }; - return selectPokemonForOption(scene, onPokemonSelected); + return selectPokemonForOption(onPokemonSelected); }) - .withOptionPhase(async (scene: BattleScene) => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withOptionPhase(async () => { + const encounter = globalScene.currentBattle.mysteryEncounter!; if (encounter.misc.correctMove) { const modifiers = [ - generateModifierTypeOption(scene, modifierTypes.TEMP_STAT_STAGE_BOOSTER, [ Stat.ATK ])!, - generateModifierTypeOption(scene, modifierTypes.TEMP_STAT_STAGE_BOOSTER, [ Stat.DEF ])!, - generateModifierTypeOption(scene, modifierTypes.TEMP_STAT_STAGE_BOOSTER, [ Stat.SPD ])!, - generateModifierTypeOption(scene, modifierTypes.DIRE_HIT)!, - generateModifierTypeOption(scene, modifierTypes.RARER_CANDY)!, + generateModifierTypeOption(modifierTypes.TEMP_STAT_STAGE_BOOSTER, [ Stat.ATK ])!, + generateModifierTypeOption(modifierTypes.TEMP_STAT_STAGE_BOOSTER, [ Stat.DEF ])!, + generateModifierTypeOption(modifierTypes.TEMP_STAT_STAGE_BOOSTER, [ Stat.SPD ])!, + generateModifierTypeOption(modifierTypes.DIRE_HIT)!, + generateModifierTypeOption(modifierTypes.RARER_CANDY)!, ]; - setEncounterRewards(scene, { guaranteedModifierTypeOptions: modifiers, fillRemaining: false }); + setEncounterRewards({ guaranteedModifierTypeOptions: modifiers, fillRemaining: false }); } - leaveEncounterWithoutBattle(scene, !encounter.misc.correctMove); + leaveEncounterWithoutBattle(!encounter.misc.correctMove); }) .build() ) @@ -110,8 +111,8 @@ export const FieldTripEncounter: MysteryEncounter = buttonTooltip: `${namespace}:option.2.tooltip`, secondOptionPrompt: `${namespace}:second_option_prompt`, }) - .withPreOptionPhase(async (scene: BattleScene): Promise => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withPreOptionPhase(async (): Promise => { + const encounter = globalScene.currentBattle.mysteryEncounter!; const onPokemonSelected = (pokemon: PlayerPokemon) => { // Return the options for Pokemon move valid for this option return pokemon.moveset.map((move: PokemonMove) => { @@ -120,7 +121,7 @@ export const FieldTripEncounter: MysteryEncounter = handler: () => { // Pokemon and move selected encounter.setDialogueToken("moveCategory", i18next.t(`${namespace}:special`)); - pokemonAndMoveChosen(scene, pokemon, move, MoveCategory.SPECIAL); + pokemonAndMoveChosen(pokemon, move, MoveCategory.SPECIAL); return true; }, }; @@ -128,23 +129,23 @@ export const FieldTripEncounter: MysteryEncounter = }); }; - return selectPokemonForOption(scene, onPokemonSelected); + return selectPokemonForOption(onPokemonSelected); }) - .withOptionPhase(async (scene: BattleScene) => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withOptionPhase(async () => { + const encounter = globalScene.currentBattle.mysteryEncounter!; if (encounter.misc.correctMove) { const modifiers = [ - generateModifierTypeOption(scene, modifierTypes.TEMP_STAT_STAGE_BOOSTER, [ Stat.SPATK ])!, - generateModifierTypeOption(scene, modifierTypes.TEMP_STAT_STAGE_BOOSTER, [ Stat.SPDEF ])!, - generateModifierTypeOption(scene, modifierTypes.TEMP_STAT_STAGE_BOOSTER, [ Stat.SPD ])!, - generateModifierTypeOption(scene, modifierTypes.DIRE_HIT)!, - generateModifierTypeOption(scene, modifierTypes.RARER_CANDY)!, + generateModifierTypeOption(modifierTypes.TEMP_STAT_STAGE_BOOSTER, [ Stat.SPATK ])!, + generateModifierTypeOption(modifierTypes.TEMP_STAT_STAGE_BOOSTER, [ Stat.SPDEF ])!, + generateModifierTypeOption(modifierTypes.TEMP_STAT_STAGE_BOOSTER, [ Stat.SPD ])!, + generateModifierTypeOption(modifierTypes.DIRE_HIT)!, + generateModifierTypeOption(modifierTypes.RARER_CANDY)!, ]; - setEncounterRewards(scene, { guaranteedModifierTypeOptions: modifiers, fillRemaining: false }); + setEncounterRewards({ guaranteedModifierTypeOptions: modifiers, fillRemaining: false }); } - leaveEncounterWithoutBattle(scene, !encounter.misc.correctMove); + leaveEncounterWithoutBattle(!encounter.misc.correctMove); }) .build() ) @@ -156,8 +157,8 @@ export const FieldTripEncounter: MysteryEncounter = buttonTooltip: `${namespace}:option.3.tooltip`, secondOptionPrompt: `${namespace}:second_option_prompt`, }) - .withPreOptionPhase(async (scene: BattleScene): Promise => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withPreOptionPhase(async (): Promise => { + const encounter = globalScene.currentBattle.mysteryEncounter!; const onPokemonSelected = (pokemon: PlayerPokemon) => { // Return the options for Pokemon move valid for this option return pokemon.moveset.map((move: PokemonMove) => { @@ -166,7 +167,7 @@ export const FieldTripEncounter: MysteryEncounter = handler: () => { // Pokemon and move selected encounter.setDialogueToken("moveCategory", i18next.t(`${namespace}:status`)); - pokemonAndMoveChosen(scene, pokemon, move, MoveCategory.STATUS); + pokemonAndMoveChosen(pokemon, move, MoveCategory.STATUS); return true; }, }; @@ -174,30 +175,30 @@ export const FieldTripEncounter: MysteryEncounter = }); }; - return selectPokemonForOption(scene, onPokemonSelected); + return selectPokemonForOption(onPokemonSelected); }) - .withOptionPhase(async (scene: BattleScene) => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withOptionPhase(async () => { + const encounter = globalScene.currentBattle.mysteryEncounter!; if (encounter.misc.correctMove) { const modifiers = [ - generateModifierTypeOption(scene, modifierTypes.TEMP_STAT_STAGE_BOOSTER, [ Stat.ACC ])!, - generateModifierTypeOption(scene, modifierTypes.TEMP_STAT_STAGE_BOOSTER, [ Stat.SPD ])!, - generateModifierTypeOption(scene, modifierTypes.GREAT_BALL)!, - generateModifierTypeOption(scene, modifierTypes.IV_SCANNER)!, - generateModifierTypeOption(scene, modifierTypes.RARER_CANDY)!, + generateModifierTypeOption(modifierTypes.TEMP_STAT_STAGE_BOOSTER, [ Stat.ACC ])!, + generateModifierTypeOption(modifierTypes.TEMP_STAT_STAGE_BOOSTER, [ Stat.SPD ])!, + generateModifierTypeOption(modifierTypes.GREAT_BALL)!, + generateModifierTypeOption(modifierTypes.IV_SCANNER)!, + generateModifierTypeOption(modifierTypes.RARER_CANDY)!, ]; - setEncounterRewards(scene, { guaranteedModifierTypeOptions: modifiers, fillRemaining: false }); + setEncounterRewards({ guaranteedModifierTypeOptions: modifiers, fillRemaining: false }); } - leaveEncounterWithoutBattle(scene, !encounter.misc.correctMove); + leaveEncounterWithoutBattle(!encounter.misc.correctMove); }) .build() ) .build(); -function pokemonAndMoveChosen(scene: BattleScene, pokemon: PlayerPokemon, move: PokemonMove, correctMoveCategory: MoveCategory) { - const encounter = scene.currentBattle.mysteryEncounter!; +function pokemonAndMoveChosen(pokemon: PlayerPokemon, move: PokemonMove, correctMoveCategory: MoveCategory) { + const encounter = globalScene.currentBattle.mysteryEncounter!; const correctMove = move.getMove().category === correctMoveCategory; encounter.setDialogueToken("pokeName", pokemon.getNameToRender()); encounter.setDialogueToken("move", move.getName()); @@ -214,7 +215,7 @@ function pokemonAndMoveChosen(scene: BattleScene, pokemon: PlayerPokemon, move: text: `${namespace}:incorrect_exp`, }, ]; - setEncounterExp(scene, scene.getPlayerParty().map((p) => p.id), 50); + setEncounterExp(globalScene.getPlayerParty().map((p) => p.id), 50); } else { encounter.selectedOption!.dialogue!.selected = [ { @@ -228,7 +229,7 @@ function pokemonAndMoveChosen(scene: BattleScene, pokemon: PlayerPokemon, move: text: `${namespace}:correct_exp`, }, ]; - setEncounterExp(scene, [ pokemon.id ], 100); + setEncounterExp([ pokemon.id ], 100); } encounter.misc = { correctMove: correctMove, diff --git a/src/data/mystery-encounters/encounters/fiery-fallout-encounter.ts b/src/data/mystery-encounters/encounters/fiery-fallout-encounter.ts index bbc979e844e..c52540584b3 100644 --- a/src/data/mystery-encounters/encounters/fiery-fallout-encounter.ts +++ b/src/data/mystery-encounters/encounters/fiery-fallout-encounter.ts @@ -1,16 +1,20 @@ import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; -import { EnemyPartyConfig, initBattleWithEnemyConfig, loadCustomMovesForEncounter, leaveEncounterWithoutBattle, setEncounterExp, setEncounterRewards, transitionMysteryEncounterIntroVisuals, generateModifierType } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { AttackTypeBoosterModifierType, modifierTypes, } from "#app/modifier/modifier-type"; +import type { EnemyPartyConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import { initBattleWithEnemyConfig, loadCustomMovesForEncounter, leaveEncounterWithoutBattle, setEncounterExp, setEncounterRewards, transitionMysteryEncounterIntroVisuals, generateModifierType } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import type { AttackTypeBoosterModifierType } from "#app/modifier/modifier-type"; +import { modifierTypes, } from "#app/modifier/modifier-type"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import BattleScene from "#app/battle-scene"; -import MysteryEncounter, { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; +import { globalScene } from "#app/global-scene"; +import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; import { AbilityRequirement, CombinationPokemonRequirement, TypeRequirement } from "#app/data/mystery-encounters/mystery-encounter-requirements"; import { Species } from "#enums/species"; import { getPokemonSpecies } from "#app/data/pokemon-species"; import { Gender } from "#app/data/gender"; import { Type } from "#enums/type"; import { BattlerIndex } from "#app/battle"; -import Pokemon, { PokemonMove } from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; +import { PokemonMove } from "#app/field/pokemon"; import { Moves } from "#enums/moves"; import { EncounterBattleAnim } from "#app/data/battle-anims"; import { WeatherType } from "#enums/weather-type"; @@ -58,8 +62,8 @@ export const FieryFalloutEncounter: MysteryEncounter = text: `${namespace}:intro`, }, ]) - .withOnInit((scene: BattleScene) => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withOnInit(() => { + const encounter = globalScene.currentBattle.mysteryEncounter!; // Calculate boss mons const volcaronaSpecies = getPokemonSpecies(Species.VOLCARONA); @@ -71,7 +75,7 @@ export const FieryFalloutEncounter: MysteryEncounter = gender: Gender.MALE, tags: [ BattlerTagType.MYSTERY_ENCOUNTER_POST_SUMMON ], mysteryEncounterBattleEffects: (pokemon: Pokemon) => { - pokemon.scene.unshiftPhase(new StatStageChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [ Stat.SPDEF, Stat.SPD ], 1)); + globalScene.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, [ Stat.SPDEF, Stat.SPD ], 1)); } }, { @@ -80,7 +84,7 @@ export const FieryFalloutEncounter: MysteryEncounter = gender: Gender.FEMALE, tags: [ BattlerTagType.MYSTERY_ENCOUNTER_POST_SUMMON ], mysteryEncounterBattleEffects: (pokemon: Pokemon) => { - pokemon.scene.unshiftPhase(new StatStageChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [ Stat.SPDEF, Stat.SPD ], 1)); + globalScene.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, [ Stat.SPDEF, Stat.SPD ], 1)); } } ], @@ -113,25 +117,25 @@ export const FieryFalloutEncounter: MysteryEncounter = ]; // Load animations/sfx for Volcarona moves - loadCustomMovesForEncounter(scene, [ Moves.FIRE_SPIN, Moves.QUIVER_DANCE ]); + loadCustomMovesForEncounter([ Moves.FIRE_SPIN, Moves.QUIVER_DANCE ]); - scene.arena.trySetWeather(WeatherType.SUNNY, true); + globalScene.arena.trySetWeather(WeatherType.SUNNY, true); encounter.setDialogueToken("volcaronaName", getPokemonSpecies(Species.VOLCARONA).getName()); return true; }) - .withOnVisualsStart((scene: BattleScene) => { + .withOnVisualsStart(() => { // Play animations - const background = new EncounterBattleAnim(EncounterAnim.MAGMA_BG, scene.getPlayerPokemon()!, scene.getPlayerPokemon()); - background.playWithoutTargets(scene, 200, 70, 2, 3); - const animation = new EncounterBattleAnim(EncounterAnim.MAGMA_SPOUT, scene.getPlayerPokemon()!, scene.getPlayerPokemon()); - animation.playWithoutTargets(scene, 80, 100, 2); - scene.time.delayedCall(600, () => { - animation.playWithoutTargets(scene, -20, 100, 2); + const background = new EncounterBattleAnim(EncounterAnim.MAGMA_BG, globalScene.getPlayerPokemon()!, globalScene.getPlayerPokemon()); + background.playWithoutTargets(200, 70, 2, 3); + const animation = new EncounterBattleAnim(EncounterAnim.MAGMA_SPOUT, globalScene.getPlayerPokemon()!, globalScene.getPlayerPokemon()); + animation.playWithoutTargets(80, 100, 2); + globalScene.time.delayedCall(600, () => { + animation.playWithoutTargets(-20, 100, 2); }); - scene.time.delayedCall(1200, () => { - animation.playWithoutTargets(scene, 140, 150, 2); + globalScene.time.delayedCall(1200, () => { + animation.playWithoutTargets(140, 150, 2); }); return true; @@ -150,10 +154,10 @@ export const FieryFalloutEncounter: MysteryEncounter = }, ], }, - async (scene: BattleScene) => { + async () => { // Pick battle - const encounter = scene.currentBattle.mysteryEncounter!; - setEncounterRewards(scene, { fillRemaining: true }, undefined, () => giveLeadPokemonAttackTypeBoostItem(scene)); + const encounter = globalScene.currentBattle.mysteryEncounter!; + setEncounterRewards({ fillRemaining: true }, undefined, () => giveLeadPokemonAttackTypeBoostItem()); encounter.startOfBattleEffects.push( { @@ -168,7 +172,7 @@ export const FieryFalloutEncounter: MysteryEncounter = move: new PokemonMove(Moves.FIRE_SPIN), ignorePp: true }); - await initBattleWithEnemyConfig(scene, scene.currentBattle.mysteryEncounter!.enemyPartyConfigs[0]); + await initBattleWithEnemyConfig(globalScene.currentBattle.mysteryEncounter!.enemyPartyConfigs[0]); } ) .withSimpleOption( @@ -181,15 +185,15 @@ export const FieryFalloutEncounter: MysteryEncounter = }, ], }, - async (scene: BattleScene) => { + async () => { // Damage non-fire types and burn 1 random non-fire type member + give it Heatproof - const encounter = scene.currentBattle.mysteryEncounter!; - const nonFireTypes = scene.getPlayerParty().filter((p) => p.isAllowedInBattle() && !p.getTypes().includes(Type.FIRE)); + const encounter = globalScene.currentBattle.mysteryEncounter!; + const nonFireTypes = globalScene.getPlayerParty().filter((p) => p.isAllowedInBattle() && !p.getTypes().includes(Type.FIRE)); for (const pkm of nonFireTypes) { const percentage = DAMAGE_PERCENTAGE / 100; const damage = Math.floor(pkm.getMaxHp() * percentage); - applyDamageToPokemon(scene, pkm, damage); + applyDamageToPokemon(pkm, damage); } // Burn random member @@ -201,7 +205,7 @@ export const FieryFalloutEncounter: MysteryEncounter = // Burn applied encounter.setDialogueToken("burnedPokemon", chosenPokemon.getNameToRender()); encounter.setDialogueToken("abilityName", new Ability(Abilities.HEATPROOF, 3).name); - queueEncounterMessage(scene, `${namespace}:option.2.target_burned`); + queueEncounterMessage(`${namespace}:option.2.target_burned`); // Also permanently change the burned Pokemon's ability to Heatproof applyAbilityOverrideToPokemon(chosenPokemon, Abilities.HEATPROOF); @@ -209,7 +213,7 @@ export const FieryFalloutEncounter: MysteryEncounter = } // No rewards - leaveEncounterWithoutBattle(scene, true); + leaveEncounterWithoutBattle(true); } ) .withOption( @@ -231,44 +235,44 @@ export const FieryFalloutEncounter: MysteryEncounter = }, ], }) - .withPreOptionPhase(async (scene: BattleScene) => { + .withPreOptionPhase(async () => { // Do NOT await this, to prevent player from repeatedly pressing options - transitionMysteryEncounterIntroVisuals(scene, false, false, 2000); + transitionMysteryEncounterIntroVisuals(false, false, 2000); }) - .withOptionPhase(async (scene: BattleScene) => { + .withOptionPhase(async () => { // Fire types help calm the Volcarona - const encounter = scene.currentBattle.mysteryEncounter!; - await transitionMysteryEncounterIntroVisuals(scene); - setEncounterRewards(scene, + const encounter = globalScene.currentBattle.mysteryEncounter!; + await transitionMysteryEncounterIntroVisuals(); + setEncounterRewards( { fillRemaining: true }, undefined, () => { - giveLeadPokemonAttackTypeBoostItem(scene); + giveLeadPokemonAttackTypeBoostItem(); }); const primary = encounter.options[2].primaryPokemon!; - setEncounterExp(scene, [ primary.id ], getPokemonSpecies(Species.VOLCARONA).baseExp * 2); - leaveEncounterWithoutBattle(scene); + setEncounterExp([ primary.id ], getPokemonSpecies(Species.VOLCARONA).baseExp * 2); + leaveEncounterWithoutBattle(); }) .build() ) .build(); -function giveLeadPokemonAttackTypeBoostItem(scene: BattleScene) { +function giveLeadPokemonAttackTypeBoostItem() { // Give first party pokemon attack type boost item for free at end of battle - const leadPokemon = scene.getPlayerParty()?.[0]; + const leadPokemon = globalScene.getPlayerParty()?.[0]; if (leadPokemon) { // Generate type booster held item, default to Charcoal if item fails to generate - let boosterModifierType = generateModifierType(scene, modifierTypes.ATTACK_TYPE_BOOSTER) as AttackTypeBoosterModifierType; + let boosterModifierType = generateModifierType(modifierTypes.ATTACK_TYPE_BOOSTER) as AttackTypeBoosterModifierType; if (!boosterModifierType) { - boosterModifierType = generateModifierType(scene, modifierTypes.ATTACK_TYPE_BOOSTER, [ Type.FIRE ]) as AttackTypeBoosterModifierType; + boosterModifierType = generateModifierType(modifierTypes.ATTACK_TYPE_BOOSTER, [ Type.FIRE ]) as AttackTypeBoosterModifierType; } - applyModifierTypeToPlayerPokemon(scene, leadPokemon, boosterModifierType); + applyModifierTypeToPlayerPokemon(leadPokemon, boosterModifierType); - const encounter = scene.currentBattle.mysteryEncounter!; + const encounter = globalScene.currentBattle.mysteryEncounter!; encounter.setDialogueToken("itemName", boosterModifierType.name); encounter.setDialogueToken("leadPokemon", leadPokemon.getNameToRender()); - queueEncounterMessage(scene, `${namespace}:found_item`); + queueEncounterMessage(`${namespace}:found_item`); } } diff --git a/src/data/mystery-encounters/encounters/fight-or-flight-encounter.ts b/src/data/mystery-encounters/encounters/fight-or-flight-encounter.ts index e238fd51e66..fc6f163010b 100644 --- a/src/data/mystery-encounters/encounters/fight-or-flight-encounter.ts +++ b/src/data/mystery-encounters/encounters/fight-or-flight-encounter.ts @@ -1,23 +1,28 @@ import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; +import type { + EnemyPartyConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { - EnemyPartyConfig, initBattleWithEnemyConfig, - leaveEncounterWithoutBattle, setEncounterExp, + leaveEncounterWithoutBattle, + setEncounterExp, setEncounterRewards } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { STEALING_MOVES } from "#app/data/mystery-encounters/requirements/requirement-groups"; -import Pokemon, { EnemyPokemon } from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; +import { EnemyPokemon } from "#app/field/pokemon"; import { ModifierTier } from "#app/modifier/modifier-tier"; +import type { + ModifierTypeOption } from "#app/modifier/modifier-type"; import { getPartyLuckValue, getPlayerModifierTypeOptions, ModifierPoolType, - ModifierTypeOption, regenerateModifierPoolThresholds, } from "#app/modifier/modifier-type"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import BattleScene from "#app/battle-scene"; -import MysteryEncounter, { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; +import { globalScene } from "#app/global-scene"; +import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; import { MoveRequirement } from "#app/data/mystery-encounters/mystery-encounter-requirements"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; @@ -29,7 +34,8 @@ import { queueEncounterMessage } from "#app/data/mystery-encounters/utils/encoun import { randSeedInt, randSeedItem } from "#app/utils"; import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/game-mode"; -import PokemonSpecies, { getPokemonSpecies } from "#app/data/pokemon-species"; +import type PokemonSpecies from "#app/data/pokemon-species"; +import { getPokemonSpecies } from "#app/data/pokemon-species"; /** the i18n namespace for the encounter */ const namespace = "mysteryEncounters/fightOrFlight"; @@ -52,20 +58,20 @@ export const FightOrFlightEncounter: MysteryEncounter = text: `${namespace}:intro`, }, ]) - .withOnInit((scene: BattleScene) => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withOnInit(() => { + const encounter = globalScene.currentBattle.mysteryEncounter!; // Calculate boss mon - const level = getEncounterPokemonLevelForWave(scene, STANDARD_ENCOUNTER_BOOSTED_LEVEL_MODIFIER); + const level = getEncounterPokemonLevelForWave(STANDARD_ENCOUNTER_BOOSTED_LEVEL_MODIFIER); let bossSpecies: PokemonSpecies; - if (scene.eventManager.isEventActive() && scene.eventManager.activeEvent()?.uncommonBreedEncounters && randSeedInt(2) === 1) { - const eventEncounter = randSeedItem(scene.eventManager.activeEvent()!.uncommonBreedEncounters!); - const levelSpecies = getPokemonSpecies(eventEncounter.species).getWildSpeciesForLevel(level, eventEncounter.allowEvolution ?? false, true, scene.gameMode); + if (globalScene.eventManager.isEventActive() && globalScene.eventManager.activeEvent()?.uncommonBreedEncounters && randSeedInt(2) === 1) { + const eventEncounter = randSeedItem(globalScene.eventManager.activeEvent()!.uncommonBreedEncounters!); + const levelSpecies = getPokemonSpecies(eventEncounter.species).getWildSpeciesForLevel(level, eventEncounter.allowEvolution ?? false, true, globalScene.gameMode); bossSpecies = getPokemonSpecies( levelSpecies ); } else { - bossSpecies = scene.arena.randomSpecies(scene.currentBattle.waveIndex, level, 0, getPartyLuckValue(scene.getPlayerParty()), true); + bossSpecies = globalScene.arena.randomSpecies(globalScene.currentBattle.waveIndex, level, 0, getPartyLuckValue(globalScene.getPlayerParty()), true); } - const bossPokemon = new EnemyPokemon(scene, bossSpecies, level, TrainerSlot.NONE, true); + const bossPokemon = new EnemyPokemon(bossSpecies, level, TrainerSlot.NONE, true); encounter.setDialogueToken("enemyPokemon", bossPokemon.getNameToRender()); const config: EnemyPartyConfig = { pokemonConfigs: [{ @@ -75,10 +81,10 @@ export const FightOrFlightEncounter: MysteryEncounter = isBoss: true, tags: [ BattlerTagType.MYSTERY_ENCOUNTER_POST_SUMMON ], mysteryEncounterBattleEffects: (pokemon: Pokemon) => { - queueEncounterMessage(pokemon.scene, `${namespace}:option.1.stat_boost`); + queueEncounterMessage(`${namespace}:option.1.stat_boost`); // Randomly boost 1 stat 2 stages // Cannot boost Spd, Acc, or Evasion - pokemon.scene.unshiftPhase(new StatStageChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [ randSeedInt(4, 1) ], 2)); + globalScene.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, [ randSeedInt(4, 1) ], 2)); } }], }; @@ -87,18 +93,18 @@ export const FightOrFlightEncounter: MysteryEncounter = // Calculate item // Waves 10-40 GREAT, 60-120 ULTRA, 120-160 ROGUE, 160-180 MASTER const tier = - scene.currentBattle.waveIndex > 160 + globalScene.currentBattle.waveIndex > 160 ? ModifierTier.MASTER - : scene.currentBattle.waveIndex > 120 + : globalScene.currentBattle.waveIndex > 120 ? ModifierTier.ROGUE - : scene.currentBattle.waveIndex > 40 + : globalScene.currentBattle.waveIndex > 40 ? ModifierTier.ULTRA : ModifierTier.GREAT; - regenerateModifierPoolThresholds(scene.getPlayerParty(), ModifierPoolType.PLAYER, 0); + regenerateModifierPoolThresholds(globalScene.getPlayerParty(), ModifierPoolType.PLAYER, 0); let item: ModifierTypeOption | null = null; // TMs and Candy Jar excluded from possible rewards as they're too swingy in value for a singular item reward while (!item || item.type.id.includes("TM_") || item.type.id === "CANDY_JAR") { - item = getPlayerModifierTypeOptions(1, scene.getPlayerParty(), [], { guaranteedModifierTiers: [ tier ], allowLuckUpgrades: false })[0]; + item = getPlayerModifierTypeOptions(1, globalScene.getPlayerParty(), [], { guaranteedModifierTiers: [ tier ], allowLuckUpgrades: false })[0]; } encounter.setDialogueToken("itemName", item.type.name); encounter.misc = item; @@ -144,12 +150,12 @@ export const FightOrFlightEncounter: MysteryEncounter = }, ], }, - async (scene: BattleScene) => { + async () => { // Pick battle // Pokemon will randomly boost 1 stat by 2 stages - const item = scene.currentBattle.mysteryEncounter!.misc as ModifierTypeOption; - setEncounterRewards(scene, { guaranteedModifierTypeOptions: [ item ], fillRemaining: false }); - await initBattleWithEnemyConfig(scene, scene.currentBattle.mysteryEncounter!.enemyPartyConfigs[0]); + const item = globalScene.currentBattle.mysteryEncounter!.misc as ModifierTypeOption; + setEncounterRewards({ guaranteedModifierTypeOptions: [ item ], fillRemaining: false }); + await initBattleWithEnemyConfig(globalScene.currentBattle.mysteryEncounter!.enemyPartyConfigs[0]); } ) .withOption( @@ -166,16 +172,16 @@ export const FightOrFlightEncounter: MysteryEncounter = } ] }) - .withOptionPhase(async (scene: BattleScene) => { + .withOptionPhase(async () => { // Pick steal - const encounter = scene.currentBattle.mysteryEncounter!; - const item = scene.currentBattle.mysteryEncounter!.misc as ModifierTypeOption; - setEncounterRewards(scene, { guaranteedModifierTypeOptions: [ item ], fillRemaining: false }); + const encounter = globalScene.currentBattle.mysteryEncounter!; + const item = globalScene.currentBattle.mysteryEncounter!.misc as ModifierTypeOption; + setEncounterRewards({ guaranteedModifierTypeOptions: [ item ], fillRemaining: false }); // Use primaryPokemon to execute the thievery const primaryPokemon = encounter.options[1].primaryPokemon!; - setEncounterExp(scene, primaryPokemon.id, encounter.enemyPartyConfigs[0].pokemonConfigs![0].species.baseExp); - leaveEncounterWithoutBattle(scene); + setEncounterExp(primaryPokemon.id, encounter.enemyPartyConfigs[0].pokemonConfigs![0].species.baseExp); + leaveEncounterWithoutBattle(); }) .build() ) @@ -189,9 +195,9 @@ export const FightOrFlightEncounter: MysteryEncounter = }, ], }, - async (scene: BattleScene) => { + async () => { // Leave encounter with no rewards or exp - leaveEncounterWithoutBattle(scene, true); + leaveEncounterWithoutBattle(true); return true; } ) diff --git a/src/data/mystery-encounters/encounters/fun-and-games-encounter.ts b/src/data/mystery-encounters/encounters/fun-and-games-encounter.ts index 84c3e56a836..4556c3ab6a0 100644 --- a/src/data/mystery-encounters/encounters/fun-and-games-encounter.ts +++ b/src/data/mystery-encounters/encounters/fun-and-games-encounter.ts @@ -1,10 +1,13 @@ import { leaveEncounterWithoutBattle, selectPokemonForOption, setEncounterRewards, transitionMysteryEncounterIntroVisuals, updatePlayerMoney, } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import BattleScene from "#app/battle-scene"; -import MysteryEncounter, { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; +import { globalScene } from "#app/global-scene"; +import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; import { TrainerSlot } from "#app/data/trainer-config"; -import Pokemon, { FieldPosition, PlayerPokemon } from "#app/field/pokemon"; +import type { PlayerPokemon } from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; +import { FieldPosition } from "#app/field/pokemon"; import { getPokemonSpecies } from "#app/data/pokemon-species"; import { MoneyRequirement } from "#app/data/mystery-encounters/mystery-encounter-requirements"; import { queueEncounterMessage, showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; @@ -80,14 +83,14 @@ export const FunAndGamesEncounter: MysteryEncounter = .withTitle(`${namespace}:title`) .withDescription(`${namespace}:description`) .withQuery(`${namespace}:query`) - .withOnInit((scene: BattleScene) => { - const encounter = scene.currentBattle.mysteryEncounter!; - scene.loadBgm("mystery_encounter_fun_and_games", "mystery_encounter_fun_and_games.mp3"); + .withOnInit(() => { + const encounter = globalScene.currentBattle.mysteryEncounter!; + globalScene.loadBgm("mystery_encounter_fun_and_games", "mystery_encounter_fun_and_games.mp3"); encounter.setDialogueToken("wobbuffetName", getPokemonSpecies(Species.WOBBUFFET).getName()); return true; }) - .withOnVisualsStart((scene: BattleScene) => { - scene.fadeAndSwitchBgm("mystery_encounter_fun_and_games"); + .withOnVisualsStart(() => { + globalScene.fadeAndSwitchBgm("mystery_encounter_fun_and_games"); return true; }) .withOption(MysteryEncounterOptionBuilder @@ -102,9 +105,9 @@ export const FunAndGamesEncounter: MysteryEncounter = }, ], }) - .withPreOptionPhase(async (scene: BattleScene) => { + .withPreOptionPhase(async () => { // Select Pokemon for minigame - const encounter = scene.currentBattle.mysteryEncounter!; + const encounter = globalScene.currentBattle.mysteryEncounter!; const onPokemonSelected = (pokemon: PlayerPokemon) => { encounter.misc = { playerPokemon: pokemon, @@ -113,28 +116,28 @@ export const FunAndGamesEncounter: MysteryEncounter = // Only Pokemon that are not KOed/legal can be selected const selectableFilter = (pokemon: Pokemon) => { - return isPokemonValidForEncounterOptionSelection(pokemon, scene, `${namespace}:invalid_selection`); + return isPokemonValidForEncounterOptionSelection(pokemon, `${namespace}:invalid_selection`); }; - return selectPokemonForOption(scene, onPokemonSelected, undefined, selectableFilter); + return selectPokemonForOption(onPokemonSelected, undefined, selectableFilter); }) - .withOptionPhase(async (scene: BattleScene) => { + .withOptionPhase(async () => { // Start minigame - const encounter = scene.currentBattle.mysteryEncounter!; + const encounter = globalScene.currentBattle.mysteryEncounter!; encounter.misc.turnsRemaining = 3; // Update money const moneyCost = (encounter.options[0].requirements[0] as MoneyRequirement).requiredMoney; - updatePlayerMoney(scene, -moneyCost, true, false); - await showEncounterText(scene, i18next.t("mysteryEncounterMessages:paid_money", { amount: moneyCost })); + updatePlayerMoney(-moneyCost, true, false); + await showEncounterText(i18next.t("mysteryEncounterMessages:paid_money", { amount: moneyCost })); // Handlers for battle events encounter.onTurnStart = handleNextTurn; // triggered during TurnInitPhase encounter.doContinueEncounter = handleLoseMinigame; // triggered during MysteryEncounterRewardsPhase, post VictoryPhase if the player KOs Wobbuffet - hideShowmanIntroSprite(scene); - await summonPlayerPokemon(scene); - await showWobbuffetHealthBar(scene); + hideShowmanIntroSprite(); + await summonPlayerPokemon(); + await showWobbuffetHealthBar(); return true; }) @@ -150,22 +153,22 @@ export const FunAndGamesEncounter: MysteryEncounter = }, ], }, - async (scene: BattleScene) => { + async () => { // Leave encounter with no rewards or exp - await transitionMysteryEncounterIntroVisuals(scene, true, true); - leaveEncounterWithoutBattle(scene, true); + await transitionMysteryEncounterIntroVisuals(true, true); + leaveEncounterWithoutBattle(true); return true; } ) .build(); -async function summonPlayerPokemon(scene: BattleScene) { +async function summonPlayerPokemon() { return new Promise(async resolve => { - const encounter = scene.currentBattle.mysteryEncounter!; + const encounter = globalScene.currentBattle.mysteryEncounter!; const playerPokemon = encounter.misc.playerPokemon; // Swaps the chosen Pokemon and the first player's lead Pokemon in the party - const party = scene.getPlayerParty(); + const party = globalScene.getPlayerParty(); const chosenIndex = party.indexOf(playerPokemon); if (chosenIndex !== 0) { const leadPokemon = party[0]; @@ -175,36 +178,36 @@ async function summonPlayerPokemon(scene: BattleScene) { // Do trainer summon animation let playerAnimationPromise: Promise | undefined; - scene.ui.showText(i18next.t("battle:playerGo", { pokemonName: getPokemonNameWithAffix(playerPokemon) })); - scene.pbTray.hide(); - scene.trainer.setTexture(`trainer_${scene.gameData.gender === PlayerGender.FEMALE ? "f" : "m"}_back_pb`); - scene.time.delayedCall(562, () => { - scene.trainer.setFrame("2"); - scene.time.delayedCall(64, () => { - scene.trainer.setFrame("3"); + globalScene.ui.showText(i18next.t("battle:playerGo", { pokemonName: getPokemonNameWithAffix(playerPokemon) })); + globalScene.pbTray.hide(); + globalScene.trainer.setTexture(`trainer_${globalScene.gameData.gender === PlayerGender.FEMALE ? "f" : "m"}_back_pb`); + globalScene.time.delayedCall(562, () => { + globalScene.trainer.setFrame("2"); + globalScene.time.delayedCall(64, () => { + globalScene.trainer.setFrame("3"); }); }); - scene.tweens.add({ - targets: scene.trainer, + globalScene.tweens.add({ + targets: globalScene.trainer, x: -36, duration: 1000, - onComplete: () => scene.trainer.setVisible(false) + onComplete: () => globalScene.trainer.setVisible(false) }); - scene.time.delayedCall(750, () => { - playerAnimationPromise = summonPlayerPokemonAnimation(scene, playerPokemon); + globalScene.time.delayedCall(750, () => { + playerAnimationPromise = summonPlayerPokemonAnimation(playerPokemon); }); // Also loads Wobbuffet data (cannot be shiny) const enemySpecies = getPokemonSpecies(Species.WOBBUFFET); - scene.currentBattle.enemyParty = []; - const wobbuffet = scene.addEnemyPokemon(enemySpecies, encounter.misc.playerPokemon.level, TrainerSlot.NONE, false, true); + globalScene.currentBattle.enemyParty = []; + const wobbuffet = globalScene.addEnemyPokemon(enemySpecies, encounter.misc.playerPokemon.level, TrainerSlot.NONE, false, true); wobbuffet.ivs = [ 0, 0, 0, 0, 0, 0 ]; wobbuffet.setNature(Nature.MILD); wobbuffet.setAlpha(0); wobbuffet.setVisible(false); wobbuffet.calculateStats(); - scene.currentBattle.enemyParty[0] = wobbuffet; - scene.gameData.setPokemonSeen(wobbuffet, true); + globalScene.currentBattle.enemyParty[0] = wobbuffet; + globalScene.gameData.setPokemonSeen(wobbuffet, true); await wobbuffet.loadAssets(); const id = setInterval(checkPlayerAnimationPromise, 500); async function checkPlayerAnimationPromise() { @@ -217,37 +220,37 @@ async function summonPlayerPokemon(scene: BattleScene) { }); } -function handleLoseMinigame(scene: BattleScene) { +function handleLoseMinigame() { return new Promise(async resolve => { // Check Wobbuffet is still alive - const wobbuffet = scene.getEnemyPokemon(); + const wobbuffet = globalScene.getEnemyPokemon(); if (!wobbuffet || wobbuffet.isFainted(true) || wobbuffet.hp === 0) { // Player loses // End the battle if (wobbuffet) { wobbuffet.hideInfo(); - scene.field.remove(wobbuffet); + globalScene.field.remove(wobbuffet); } - transitionMysteryEncounterIntroVisuals(scene, true, true); - scene.currentBattle.enemyParty = []; - scene.currentBattle.mysteryEncounter!.doContinueEncounter = undefined; - leaveEncounterWithoutBattle(scene, true); - await showEncounterText(scene, `${namespace}:ko`); - const reviveCost = scene.getWaveMoneyAmount(1.5); - updatePlayerMoney(scene, -reviveCost, true, false); + transitionMysteryEncounterIntroVisuals(true, true); + globalScene.currentBattle.enemyParty = []; + globalScene.currentBattle.mysteryEncounter!.doContinueEncounter = undefined; + leaveEncounterWithoutBattle(true); + await showEncounterText(`${namespace}:ko`); + const reviveCost = globalScene.getWaveMoneyAmount(1.5); + updatePlayerMoney(-reviveCost, true, false); } resolve(); }); } -function handleNextTurn(scene: BattleScene) { - const encounter = scene.currentBattle.mysteryEncounter!; +function handleNextTurn() { + const encounter = globalScene.currentBattle.mysteryEncounter!; - const wobbuffet = scene.getEnemyPokemon(); + const wobbuffet = globalScene.getEnemyPokemon(); if (!wobbuffet) { // Should never be triggered, just handling the edge case - handleLoseMinigame(scene); + handleLoseMinigame(); return true; } if (encounter.misc.turnsRemaining <= 0) { @@ -257,15 +260,15 @@ function handleNextTurn(scene: BattleScene) { let isHealPhase = false; if (healthRatio < 0.03) { // Grand prize - setEncounterRewards(scene, { guaranteedModifierTypeFuncs: [ modifierTypes.MULTI_LENS ], fillRemaining: false }); + setEncounterRewards({ guaranteedModifierTypeFuncs: [ modifierTypes.MULTI_LENS ], fillRemaining: false }); resultMessageKey = `${namespace}:best_result`; } else if (healthRatio < 0.15) { // 2nd prize - setEncounterRewards(scene, { guaranteedModifierTypeFuncs: [ modifierTypes.SCOPE_LENS ], fillRemaining: false }); + setEncounterRewards({ guaranteedModifierTypeFuncs: [ modifierTypes.SCOPE_LENS ], fillRemaining: false }); resultMessageKey = `${namespace}:great_result`; } else if (healthRatio < 0.33) { // 3rd prize - setEncounterRewards(scene, { guaranteedModifierTypeFuncs: [ modifierTypes.WIDE_LENS ], fillRemaining: false }); + setEncounterRewards({ guaranteedModifierTypeFuncs: [ modifierTypes.WIDE_LENS ], fillRemaining: false }); resultMessageKey = `${namespace}:good_result`; } else { // No prize @@ -275,22 +278,22 @@ function handleNextTurn(scene: BattleScene) { // End the battle wobbuffet.hideInfo(); - scene.field.remove(wobbuffet); - scene.currentBattle.enemyParty = []; - scene.currentBattle.mysteryEncounter!.doContinueEncounter = undefined; - leaveEncounterWithoutBattle(scene, isHealPhase); + globalScene.field.remove(wobbuffet); + globalScene.currentBattle.enemyParty = []; + globalScene.currentBattle.mysteryEncounter!.doContinueEncounter = undefined; + leaveEncounterWithoutBattle(isHealPhase); // Must end the TurnInit phase prematurely so battle phases aren't added to queue - queueEncounterMessage(scene, `${namespace}:end_game`); - queueEncounterMessage(scene, resultMessageKey); + queueEncounterMessage(`${namespace}:end_game`); + queueEncounterMessage(resultMessageKey); // Skip remainder of TurnInitPhase return true; } else { if (encounter.misc.turnsRemaining < 3) { // Display charging messages on turns that aren't the initial turn - queueEncounterMessage(scene, `${namespace}:charging_continue`); + queueEncounterMessage(`${namespace}:charging_continue`); } - queueEncounterMessage(scene, `${namespace}:turn_remaining_${encounter.misc.turnsRemaining}`); + queueEncounterMessage(`${namespace}:turn_remaining_${encounter.misc.turnsRemaining}`); encounter.misc.turnsRemaining--; } @@ -298,33 +301,33 @@ function handleNextTurn(scene: BattleScene) { return false; } -async function showWobbuffetHealthBar(scene: BattleScene) { - const wobbuffet = scene.getEnemyPokemon()!; +async function showWobbuffetHealthBar() { + const wobbuffet = globalScene.getEnemyPokemon()!; - scene.add.existing(wobbuffet); - scene.field.add(wobbuffet); + globalScene.add.existing(wobbuffet); + globalScene.field.add(wobbuffet); - const playerPokemon = scene.getPlayerPokemon() as Pokemon; + const playerPokemon = globalScene.getPlayerPokemon() as Pokemon; if (playerPokemon?.isOnField()) { - scene.field.moveBelow(wobbuffet, playerPokemon); + globalScene.field.moveBelow(wobbuffet, playerPokemon); } // Show health bar and trigger cry wobbuffet.showInfo(); - scene.time.delayedCall(1000, () => { + globalScene.time.delayedCall(1000, () => { wobbuffet.cry(); }); wobbuffet.resetSummonData(); // Track the HP change across turns - scene.currentBattle.mysteryEncounter!.misc.wobbuffetHealth = wobbuffet.hp; + globalScene.currentBattle.mysteryEncounter!.misc.wobbuffetHealth = wobbuffet.hp; } -function summonPlayerPokemonAnimation(scene: BattleScene, pokemon: PlayerPokemon): Promise { +function summonPlayerPokemonAnimation(pokemon: PlayerPokemon): Promise { return new Promise(resolve => { - const pokeball = scene.addFieldSprite(36, 80, "pb", getPokeballAtlasKey(pokemon.pokeball)); + const pokeball = globalScene.addFieldSprite(36, 80, "pb", getPokeballAtlasKey(pokemon.pokeball)); pokeball.setVisible(false); pokeball.setOrigin(0.5, 0.625); - scene.field.add(pokeball); + globalScene.field.add(pokeball); pokemon.setFieldPosition(FieldPosition.CENTER, 0); @@ -332,32 +335,32 @@ function summonPlayerPokemonAnimation(scene: BattleScene, pokemon: PlayerPokemon pokeball.setVisible(true); - scene.tweens.add({ + globalScene.tweens.add({ targets: pokeball, duration: 650, x: 100 + fpOffset[0] }); - scene.tweens.add({ + globalScene.tweens.add({ targets: pokeball, duration: 150, ease: "Cubic.easeOut", y: 70 + fpOffset[1], onComplete: () => { - scene.tweens.add({ + globalScene.tweens.add({ targets: pokeball, duration: 500, ease: "Cubic.easeIn", angle: 1440, y: 132 + fpOffset[1], onComplete: () => { - scene.playSound("se/pb_rel"); + globalScene.playSound("se/pb_rel"); pokeball.destroy(); - scene.add.existing(pokemon); - scene.field.add(pokemon); - addPokeballOpenParticles(scene, pokemon.x, pokemon.y - 16, pokemon.pokeball); - scene.updateModifiers(true); - scene.updateFieldScale(); + globalScene.add.existing(pokemon); + globalScene.field.add(pokemon); + addPokeballOpenParticles(pokemon.x, pokemon.y - 16, pokemon.pokeball); + globalScene.updateModifiers(true); + globalScene.updateFieldScale(); pokemon.showInfo(); pokemon.playAnim(); pokemon.setVisible(true); @@ -365,8 +368,8 @@ function summonPlayerPokemonAnimation(scene: BattleScene, pokemon: PlayerPokemon pokemon.setScale(0.5); pokemon.tint(getPokeballTintColor(pokemon.pokeball)); pokemon.untint(250, "Sine.easeIn"); - scene.updateFieldScale(); - scene.tweens.add({ + globalScene.updateFieldScale(); + globalScene.tweens.add({ targets: pokemon, duration: 250, ease: "Sine.easeIn", @@ -375,15 +378,15 @@ function summonPlayerPokemonAnimation(scene: BattleScene, pokemon: PlayerPokemon pokemon.cry(pokemon.getHpRatio() > 0.25 ? undefined : { rate: 0.85 }); pokemon.getSprite().clearTint(); pokemon.resetSummonData(); - scene.time.delayedCall(1000, () => { + globalScene.time.delayedCall(1000, () => { if (pokemon.isShiny()) { - scene.unshiftPhase(new ShinySparklePhase(scene, pokemon.getBattlerIndex())); + globalScene.unshiftPhase(new ShinySparklePhase(pokemon.getBattlerIndex())); } pokemon.resetTurnData(); - scene.triggerPokemonFormChange(pokemon, SpeciesFormChangeActiveTrigger, true); - scene.pushPhase(new PostSummonPhase(scene, pokemon.getBattlerIndex())); + globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeActiveTrigger, true); + globalScene.pushPhase(new PostSummonPhase(pokemon.getBattlerIndex())); resolve(); }); } @@ -395,13 +398,13 @@ function summonPlayerPokemonAnimation(scene: BattleScene, pokemon: PlayerPokemon }); } -function hideShowmanIntroSprite(scene: BattleScene) { - const carnivalGame = scene.currentBattle.mysteryEncounter!.introVisuals?.getSpriteAtIndex(0)[0]; - const wobbuffet = scene.currentBattle.mysteryEncounter!.introVisuals?.getSpriteAtIndex(1)[0]; - const showMan = scene.currentBattle.mysteryEncounter!.introVisuals?.getSpriteAtIndex(2)[0]; +function hideShowmanIntroSprite() { + const carnivalGame = globalScene.currentBattle.mysteryEncounter!.introVisuals?.getSpriteAtIndex(0)[0]; + const wobbuffet = globalScene.currentBattle.mysteryEncounter!.introVisuals?.getSpriteAtIndex(1)[0]; + const showMan = globalScene.currentBattle.mysteryEncounter!.introVisuals?.getSpriteAtIndex(2)[0]; // Hide the showman - scene.tweens.add({ + globalScene.tweens.add({ targets: showMan, x: "+=16", y: "-=16", @@ -411,7 +414,7 @@ function hideShowmanIntroSprite(scene: BattleScene) { }); // Slide the Wobbuffet and Game over slightly - scene.tweens.add({ + globalScene.tweens.add({ targets: [ wobbuffet, carnivalGame ], x: "+=16", ease: "Sine.easeInOut", diff --git a/src/data/mystery-encounters/encounters/global-trade-system-encounter.ts b/src/data/mystery-encounters/encounters/global-trade-system-encounter.ts index b7376c2bfd2..b50ced69918 100644 --- a/src/data/mystery-encounters/encounters/global-trade-system-encounter.ts +++ b/src/data/mystery-encounters/encounters/global-trade-system-encounter.ts @@ -2,20 +2,26 @@ import { leaveEncounterWithoutBattle, selectPokemonForOption, setEncounterReward import { TrainerSlot, } from "#app/data/trainer-config"; import { ModifierTier } from "#app/modifier/modifier-tier"; import { MusicPreference } from "#app/system/settings/settings"; -import { getPlayerModifierTypeOptions, ModifierPoolType, ModifierTypeOption, regenerateModifierPoolThresholds } from "#app/modifier/modifier-type"; +import type { ModifierTypeOption } from "#app/modifier/modifier-type"; +import { getPlayerModifierTypeOptions, ModifierPoolType, regenerateModifierPoolThresholds } from "#app/modifier/modifier-type"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import BattleScene from "#app/battle-scene"; -import MysteryEncounter, { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; +import { globalScene } from "#app/global-scene"; +import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { Species } from "#enums/species"; -import PokemonSpecies, { allSpecies, getPokemonSpecies } from "#app/data/pokemon-species"; +import type PokemonSpecies from "#app/data/pokemon-species"; +import { allSpecies, getPokemonSpecies } from "#app/data/pokemon-species"; import { getTypeRgb } from "#app/data/type"; import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { NumberHolder, isNullOrUndefined, randInt, randSeedInt, randSeedShuffle } from "#app/utils"; -import Pokemon, { EnemyPokemon, PlayerPokemon, PokemonMove } from "#app/field/pokemon"; -import { HiddenAbilityRateBoosterModifier, PokemonFormChangeItemModifier, PokemonHeldItemModifier, ShinyRateBoosterModifier, SpeciesStatBoosterModifier } from "#app/modifier/modifier"; -import { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; +import type { PlayerPokemon } from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; +import { EnemyPokemon, PokemonMove } from "#app/field/pokemon"; +import type { PokemonHeldItemModifier } from "#app/modifier/modifier"; +import { HiddenAbilityRateBoosterModifier, PokemonFormChangeItemModifier, ShinyRateBoosterModifier, SpeciesStatBoosterModifier } from "#app/modifier/modifier"; +import type { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; import PokemonData from "#app/system/pokemon-data"; import i18next from "i18next"; import { Gender, getGenderSymbol } from "#app/data/gender"; @@ -102,24 +108,24 @@ export const GlobalTradeSystemEncounter: MysteryEncounter = .withTitle(`${namespace}:title`) .withDescription(`${namespace}:description`) .withQuery(`${namespace}:query`) - .withOnInit((scene: BattleScene) => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withOnInit(() => { + const encounter = globalScene.currentBattle.mysteryEncounter!; // Load bgm let bgmKey: string; - if (scene.musicPreference === MusicPreference.GENFIVE) { + if (globalScene.musicPreference === MusicPreference.GENFIVE) { bgmKey = "mystery_encounter_gen_5_gts"; - scene.loadBgm(bgmKey, `${bgmKey}.mp3`); + globalScene.loadBgm(bgmKey, `${bgmKey}.mp3`); } else { // Mixed option bgmKey = "mystery_encounter_gen_6_gts"; - scene.loadBgm(bgmKey, `${bgmKey}.mp3`); + globalScene.loadBgm(bgmKey, `${bgmKey}.mp3`); } // Load possible trade options // Maps current party member's id to 3 EnemyPokemon objects // None of the trade options can be the same species - const tradeOptionsMap: Map = getPokemonTradeOptions(scene); + const tradeOptionsMap: Map = getPokemonTradeOptions(); encounter.misc = { tradeOptionsMap, bgmKey @@ -127,8 +133,8 @@ export const GlobalTradeSystemEncounter: MysteryEncounter = return true; }) - .withOnVisualsStart((scene: BattleScene) => { - scene.fadeAndSwitchBgm(scene.currentBattle.mysteryEncounter!.misc.bgmKey); + .withOnVisualsStart(() => { + globalScene.fadeAndSwitchBgm(globalScene.currentBattle.mysteryEncounter!.misc.bgmKey); return true; }) .withOption( @@ -140,8 +146,8 @@ export const GlobalTradeSystemEncounter: MysteryEncounter = buttonTooltip: `${namespace}:option.1.tooltip`, secondOptionPrompt: `${namespace}:option.1.trade_options_prompt`, }) - .withPreOptionPhase(async (scene: BattleScene): Promise => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withPreOptionPhase(async (): Promise => { + const encounter = globalScene.currentBattle.mysteryEncounter!; const onPokemonSelected = (pokemon: PlayerPokemon) => { // Get the trade species options for the selected pokemon const tradeOptionsMap: Map = encounter.misc.tradeOptionsMap; @@ -165,17 +171,17 @@ export const GlobalTradeSystemEncounter: MysteryEncounter = const formName = tradePokemon.species.forms && tradePokemon.species.forms.length > tradePokemon.formIndex ? tradePokemon.species.forms[tradePokemon.formIndex].formName : null; const line1 = i18next.t("pokemonInfoContainer:ability") + " " + tradePokemon.getAbility().name + (tradePokemon.getGender() !== Gender.GENDERLESS ? " | " + i18next.t("pokemonInfoContainer:gender") + " " + getGenderSymbol(tradePokemon.getGender()) : ""); const line2 = i18next.t("pokemonInfoContainer:nature") + " " + getNatureName(tradePokemon.getNature()) + (formName ? " | " + i18next.t("pokemonInfoContainer:form") + " " + formName : ""); - showEncounterText(scene, `${line1}\n${line2}`, 0, 0, false); + showEncounterText(`${line1}\n${line2}`, 0, 0, false); }, }; return option; }); }; - return selectPokemonForOption(scene, onPokemonSelected); + return selectPokemonForOption(onPokemonSelected); }) - .withOptionPhase(async (scene: BattleScene) => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withOptionPhase(async () => { + const encounter = globalScene.currentBattle.mysteryEncounter!; const tradedPokemon: PlayerPokemon = encounter.misc.tradedPokemon; const receivedPokemonData: EnemyPokemon = encounter.misc.receivedPokemon; const modifiers = tradedPokemon.getHeldItems().filter(m => !(m instanceof PokemonFormChangeItemModifier) && !(m instanceof SpeciesStatBoosterModifier)); @@ -185,32 +191,32 @@ export const GlobalTradeSystemEncounter: MysteryEncounter = encounter.setDialogueToken("tradeTrainerName", traderName.trim()); // Remove the original party member from party - scene.removePokemonFromPlayerParty(tradedPokemon, false); + globalScene.removePokemonFromPlayerParty(tradedPokemon, false); // Set data properly, then generate the new Pokemon's assets receivedPokemonData.passive = tradedPokemon.passive; // Pokeball to Ultra ball, randomly receivedPokemonData.pokeball = randInt(4) as PokeballType; const dataSource = new PokemonData(receivedPokemonData); - const newPlayerPokemon = scene.addPlayerPokemon(receivedPokemonData.species, receivedPokemonData.level, dataSource.abilityIndex, dataSource.formIndex, dataSource.gender, dataSource.shiny, dataSource.variant, dataSource.ivs, dataSource.nature, dataSource); - scene.getPlayerParty().push(newPlayerPokemon); + const newPlayerPokemon = globalScene.addPlayerPokemon(receivedPokemonData.species, receivedPokemonData.level, dataSource.abilityIndex, dataSource.formIndex, dataSource.gender, dataSource.shiny, dataSource.variant, dataSource.ivs, dataSource.nature, dataSource); + globalScene.getPlayerParty().push(newPlayerPokemon); await newPlayerPokemon.loadAssets(); for (const mod of modifiers) { mod.pokemonId = newPlayerPokemon.id; - scene.addModifier(mod, true, false, false, true); + globalScene.addModifier(mod, true, false, false, true); } // Show the trade animation - await showTradeBackground(scene); - await doPokemonTradeSequence(scene, tradedPokemon, newPlayerPokemon); - await showEncounterText(scene, `${namespace}:trade_received`, null, 0, true, 4000); - scene.playBgm(encounter.misc.bgmKey); - await addPokemonDataToDexAndValidateAchievements(scene, newPlayerPokemon); - await hideTradeBackground(scene); + await showTradeBackground(); + await doPokemonTradeSequence(tradedPokemon, newPlayerPokemon); + await showEncounterText(`${namespace}:trade_received`, null, 0, true, 4000); + globalScene.playBgm(encounter.misc.bgmKey); + await addPokemonDataToDexAndValidateAchievements(newPlayerPokemon); + await hideTradeBackground(); tradedPokemon.destroy(); - leaveEncounterWithoutBattle(scene, true); + leaveEncounterWithoutBattle(true); }) .build() ) @@ -222,19 +228,19 @@ export const GlobalTradeSystemEncounter: MysteryEncounter = buttonLabel: `${namespace}:option.2.label`, buttonTooltip: `${namespace}:option.2.tooltip`, }) - .withPreOptionPhase(async (scene: BattleScene): Promise => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withPreOptionPhase(async (): Promise => { + const encounter = globalScene.currentBattle.mysteryEncounter!; const onPokemonSelected = (pokemon: PlayerPokemon) => { // Randomly generate a Wonder Trade pokemon - const randomTradeOption = generateTradeOption(scene.getPlayerParty().map(p => p.species)); - const tradePokemon = new EnemyPokemon(scene, randomTradeOption, pokemon.level, TrainerSlot.NONE, false); + const randomTradeOption = generateTradeOption(globalScene.getPlayerParty().map(p => p.species)); + const tradePokemon = new EnemyPokemon(randomTradeOption, pokemon.level, TrainerSlot.NONE, false); // Extra shiny roll at 1/128 odds (boosted by events and charms) if (!tradePokemon.shiny) { const shinyThreshold = new NumberHolder(WONDER_TRADE_SHINY_CHANCE); - if (scene.eventManager.isEventActive()) { - shinyThreshold.value *= scene.eventManager.getShinyMultiplier(); + if (globalScene.eventManager.isEventActive()) { + shinyThreshold.value *= globalScene.eventManager.getShinyMultiplier(); } - scene.applyModifiers(ShinyRateBoosterModifier, true, shinyThreshold); + globalScene.applyModifiers(ShinyRateBoosterModifier, true, shinyThreshold); // Base shiny chance of 512/65536 -> 1/128, affected by events and Shiny Charms // Maximum shiny chance of 4096/65536 -> 1/16, cannot improve further after that @@ -248,7 +254,7 @@ export const GlobalTradeSystemEncounter: MysteryEncounter = if (tradePokemon.species.abilityHidden) { if (tradePokemon.abilityIndex < hiddenIndex) { const hiddenAbilityChance = new NumberHolder(64); - scene.applyModifiers(HiddenAbilityRateBoosterModifier, true, hiddenAbilityChance); + globalScene.applyModifiers(HiddenAbilityRateBoosterModifier, true, hiddenAbilityChance); const hasHiddenAbility = !randSeedInt(hiddenAbilityChance.value); @@ -281,10 +287,10 @@ export const GlobalTradeSystemEncounter: MysteryEncounter = encounter.misc.receivedPokemon = tradePokemon; }; - return selectPokemonForOption(scene, onPokemonSelected); + return selectPokemonForOption(onPokemonSelected); }) - .withOptionPhase(async (scene: BattleScene) => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withOptionPhase(async () => { + const encounter = globalScene.currentBattle.mysteryEncounter!; const tradedPokemon: PlayerPokemon = encounter.misc.tradedPokemon; const receivedPokemonData: EnemyPokemon = encounter.misc.receivedPokemon; const modifiers = tradedPokemon.getHeldItems().filter(m => !(m instanceof PokemonFormChangeItemModifier) && !(m instanceof SpeciesStatBoosterModifier)); @@ -294,31 +300,31 @@ export const GlobalTradeSystemEncounter: MysteryEncounter = encounter.setDialogueToken("tradeTrainerName", traderName.trim()); // Remove the original party member from party - scene.removePokemonFromPlayerParty(tradedPokemon, false); + globalScene.removePokemonFromPlayerParty(tradedPokemon, false); // Set data properly, then generate the new Pokemon's assets receivedPokemonData.passive = tradedPokemon.passive; receivedPokemonData.pokeball = randInt(4) as PokeballType; const dataSource = new PokemonData(receivedPokemonData); - const newPlayerPokemon = scene.addPlayerPokemon(receivedPokemonData.species, receivedPokemonData.level, dataSource.abilityIndex, dataSource.formIndex, dataSource.gender, dataSource.shiny, dataSource.variant, dataSource.ivs, dataSource.nature, dataSource); - scene.getPlayerParty().push(newPlayerPokemon); + const newPlayerPokemon = globalScene.addPlayerPokemon(receivedPokemonData.species, receivedPokemonData.level, dataSource.abilityIndex, dataSource.formIndex, dataSource.gender, dataSource.shiny, dataSource.variant, dataSource.ivs, dataSource.nature, dataSource); + globalScene.getPlayerParty().push(newPlayerPokemon); await newPlayerPokemon.loadAssets(); for (const mod of modifiers) { mod.pokemonId = newPlayerPokemon.id; - scene.addModifier(mod, true, false, false, true); + globalScene.addModifier(mod, true, false, false, true); } // Show the trade animation - await showTradeBackground(scene); - await doPokemonTradeSequence(scene, tradedPokemon, newPlayerPokemon); - await showEncounterText(scene, `${namespace}:trade_received`, null, 0, true, 4000); - scene.playBgm(encounter.misc.bgmKey); - await addPokemonDataToDexAndValidateAchievements(scene, newPlayerPokemon); - await hideTradeBackground(scene); + await showTradeBackground(); + await doPokemonTradeSequence(tradedPokemon, newPlayerPokemon); + await showEncounterText(`${namespace}:trade_received`, null, 0, true, 4000); + globalScene.playBgm(encounter.misc.bgmKey); + await addPokemonDataToDexAndValidateAchievements(newPlayerPokemon); + await hideTradeBackground(); tradedPokemon.destroy(); - leaveEncounterWithoutBattle(scene, true); + leaveEncounterWithoutBattle(true); }) .build() ) @@ -330,8 +336,8 @@ export const GlobalTradeSystemEncounter: MysteryEncounter = buttonTooltip: `${namespace}:option.3.tooltip`, secondOptionPrompt: `${namespace}:option.3.trade_options_prompt`, }) - .withPreOptionPhase(async (scene: BattleScene): Promise => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withPreOptionPhase(async (): Promise => { + const encounter = globalScene.currentBattle.mysteryEncounter!; const onPokemonSelected = (pokemon: PlayerPokemon) => { // Get Pokemon held items and filter for valid ones const validItems = pokemon.getHeldItems().filter((it) => { @@ -359,18 +365,18 @@ export const GlobalTradeSystemEncounter: MysteryEncounter = return it.isTransferable; }).length > 0; if (!meetsReqs) { - return getEncounterText(scene, `${namespace}:option.3.invalid_selection`) ?? null; + return getEncounterText(`${namespace}:option.3.invalid_selection`) ?? null; } return null; }; - return selectPokemonForOption(scene, onPokemonSelected, undefined, selectableFilter); + return selectPokemonForOption(onPokemonSelected, undefined, selectableFilter); }) - .withOptionPhase(async (scene: BattleScene) => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withOptionPhase(async () => { + const encounter = globalScene.currentBattle.mysteryEncounter!; const modifier = encounter.misc.chosenModifier as PokemonHeldItemModifier; - const party = scene.getPlayerParty(); + const party = globalScene.getPlayerParty(); const chosenPokemon: PlayerPokemon = encounter.misc.chosenPokemon; // Check tier of the traded item, the received item will be one tier up @@ -397,16 +403,16 @@ export const GlobalTradeSystemEncounter: MysteryEncounter = } encounter.setDialogueToken("itemName", item.type.name); - setEncounterRewards(scene, { guaranteedModifierTypeOptions: [ item ], fillRemaining: false }); + setEncounterRewards({ guaranteedModifierTypeOptions: [ item ], fillRemaining: false }); chosenPokemon.loseHeldItem(modifier, false); - await scene.updateModifiers(true, true); + await globalScene.updateModifiers(true, true); // Generate a trainer name const traderName = generateRandomTraderName(); encounter.setDialogueToken("tradeTrainerName", traderName.trim()); - await showEncounterText(scene, `${namespace}:item_trade_selected`); - leaveEncounterWithoutBattle(scene); + await showEncounterText(`${namespace}:item_trade_selected`); + leaveEncounterWithoutBattle(); }) .build() ) @@ -420,26 +426,26 @@ export const GlobalTradeSystemEncounter: MysteryEncounter = }, ], }, - async (scene: BattleScene) => { + async () => { // Leave encounter with no rewards or exp - leaveEncounterWithoutBattle(scene, true); + leaveEncounterWithoutBattle(true); return true; } ) .build(); -function getPokemonTradeOptions(scene: BattleScene): Map { +function getPokemonTradeOptions(): Map { const tradeOptionsMap: Map = new Map(); // Starts by filtering out any current party members as valid resulting species - const alreadyUsedSpecies: PokemonSpecies[] = scene.getPlayerParty().map(p => p.species); + const alreadyUsedSpecies: PokemonSpecies[] = globalScene.getPlayerParty().map(p => p.species); - scene.getPlayerParty().forEach(pokemon => { + globalScene.getPlayerParty().forEach(pokemon => { // If the party member is legendary/mythical, the only trade options available are always pulled from generation-specific legendary trade pools if (pokemon.species.legendary || pokemon.species.subLegendary || pokemon.species.mythical) { const generation = pokemon.species.generation; const tradeOptions: EnemyPokemon[] = LEGENDARY_TRADE_POOLS[generation].map(s => { const pokemonSpecies = getPokemonSpecies(s); - return new EnemyPokemon(scene, pokemonSpecies, 5, TrainerSlot.NONE, false); + return new EnemyPokemon(pokemonSpecies, 5, TrainerSlot.NONE, false); }); tradeOptionsMap.set(pokemon.id, tradeOptions); } else { @@ -454,7 +460,7 @@ function getPokemonTradeOptions(scene: BattleScene): Map // Add trade options to map tradeOptionsMap.set(pokemon.id, tradeOptions.map(s => { - return new EnemyPokemon(scene, s, pokemon.level, TrainerSlot.NONE, false); + return new EnemyPokemon(s, pokemon.level, TrainerSlot.NONE, false); })); } }); @@ -497,28 +503,28 @@ function generateTradeOption(alreadyUsedSpecies: PokemonSpecies[], originalBst?: return newSpecies!; } -function showTradeBackground(scene: BattleScene) { +function showTradeBackground() { return new Promise(resolve => { - const tradeContainer = scene.add.container(0, -scene.game.canvas.height / 6); + const tradeContainer = globalScene.add.container(0, -globalScene.game.canvas.height / 6); tradeContainer.setName("Trade Background"); - const flyByStaticBg = scene.add.rectangle(0, 0, scene.game.canvas.width / 6, scene.game.canvas.height / 6, 0); + const flyByStaticBg = globalScene.add.rectangle(0, 0, globalScene.game.canvas.width / 6, globalScene.game.canvas.height / 6, 0); flyByStaticBg.setName("Black Background"); flyByStaticBg.setOrigin(0, 0); flyByStaticBg.setVisible(false); tradeContainer.add(flyByStaticBg); - const tradeBaseBg = scene.add.image(0, 0, "default_bg"); + const tradeBaseBg = globalScene.add.image(0, 0, "default_bg"); tradeBaseBg.setName("Trade Background Image"); tradeBaseBg.setOrigin(0, 0); tradeContainer.add(tradeBaseBg); - scene.fieldUI.add(tradeContainer); - scene.fieldUI.bringToTop(tradeContainer); + globalScene.fieldUI.add(tradeContainer); + globalScene.fieldUI.bringToTop(tradeContainer); tradeContainer.setVisible(true); tradeContainer.alpha = 0; - scene.tweens.add({ + globalScene.tweens.add({ targets: tradeContainer, alpha: 1, duration: 500, @@ -530,17 +536,17 @@ function showTradeBackground(scene: BattleScene) { }); } -function hideTradeBackground(scene: BattleScene) { +function hideTradeBackground() { return new Promise(resolve => { - const transformationContainer = scene.fieldUI.getByName("Trade Background"); + const transformationContainer = globalScene.fieldUI.getByName("Trade Background"); - scene.tweens.add({ + globalScene.tweens.add({ targets: transformationContainer, alpha: 0, duration: 1000, ease: "Sine.easeInOut", onComplete: () => { - scene.fieldUI.remove(transformationContainer, true); + globalScene.fieldUI.remove(transformationContainer, true); resolve(); } }); @@ -549,13 +555,12 @@ function hideTradeBackground(scene: BattleScene) { /** * Initiates an "evolution-like" animation to transform a previousPokemon (presumably from the player's party) into a new one, not necessarily an evolution species. - * @param scene * @param tradedPokemon * @param receivedPokemon */ -function doPokemonTradeSequence(scene: BattleScene, tradedPokemon: PlayerPokemon, receivedPokemon: PlayerPokemon) { +function doPokemonTradeSequence(tradedPokemon: PlayerPokemon, receivedPokemon: PlayerPokemon) { return new Promise(resolve => { - const tradeContainer = scene.fieldUI.getByName("Trade Background") as Phaser.GameObjects.Container; + const tradeContainer = globalScene.fieldUI.getByName("Trade Background") as Phaser.GameObjects.Container; const tradeBaseBg = tradeContainer.getByName("Trade Background Image") as Phaser.GameObjects.Image; let tradedPokemonSprite: Phaser.GameObjects.Sprite; @@ -564,8 +569,8 @@ function doPokemonTradeSequence(scene: BattleScene, tradedPokemon: PlayerPokemon let receivedPokemonTintSprite: Phaser.GameObjects.Sprite; const getPokemonSprite = () => { - const ret = scene.addPokemonSprite(tradedPokemon, tradeBaseBg.displayWidth / 2, tradeBaseBg.displayHeight / 2, "pkmn__sub"); - ret.setPipeline(scene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], ignoreTimeTint: true }); + const ret = globalScene.addPokemonSprite(tradedPokemon, tradeBaseBg.displayWidth / 2, tradeBaseBg.displayHeight / 2, "pkmn__sub"); + ret.setPipeline(globalScene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], ignoreTimeTint: true }); return ret; }; @@ -589,7 +594,7 @@ function doPokemonTradeSequence(scene: BattleScene, tradedPokemon: PlayerPokemon console.error(`Failed to play animation for ${spriteKey}`, err); } - sprite.setPipeline(scene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], hasShadow: false, teraColor: getTypeRgb(tradedPokemon.getTeraType()) }); + sprite.setPipeline(globalScene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], hasShadow: false, teraColor: getTypeRgb(tradedPokemon.getTeraType()) }); sprite.setPipelineData("ignoreTimeTint", true); sprite.setPipelineData("spriteKey", tradedPokemon.getSpriteKey()); sprite.setPipelineData("shiny", tradedPokemon.shiny); @@ -610,7 +615,7 @@ function doPokemonTradeSequence(scene: BattleScene, tradedPokemon: PlayerPokemon console.error(`Failed to play animation for ${spriteKey}`, err); } - sprite.setPipeline(scene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], hasShadow: false, teraColor: getTypeRgb(tradedPokemon.getTeraType()) }); + sprite.setPipeline(globalScene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], hasShadow: false, teraColor: getTypeRgb(tradedPokemon.getTeraType()) }); sprite.setPipelineData("ignoreTimeTint", true); sprite.setPipelineData("spriteKey", receivedPokemon.getSpriteKey()); sprite.setPipelineData("shiny", receivedPokemon.shiny); @@ -625,45 +630,45 @@ function doPokemonTradeSequence(scene: BattleScene, tradedPokemon: PlayerPokemon // Traded pokemon pokeball const tradedPbAtlasKey = getPokeballAtlasKey(tradedPokemon.pokeball); - const tradedPokeball: Phaser.GameObjects.Sprite = scene.add.sprite(tradeBaseBg.displayWidth / 2, tradeBaseBg.displayHeight / 2, "pb", tradedPbAtlasKey); + const tradedPokeball: Phaser.GameObjects.Sprite = globalScene.add.sprite(tradeBaseBg.displayWidth / 2, tradeBaseBg.displayHeight / 2, "pb", tradedPbAtlasKey); tradedPokeball.setVisible(false); tradeContainer.add(tradedPokeball); // Received pokemon pokeball const receivedPbAtlasKey = getPokeballAtlasKey(receivedPokemon.pokeball); - const receivedPokeball: Phaser.GameObjects.Sprite = scene.add.sprite(tradeBaseBg.displayWidth / 2, tradeBaseBg.displayHeight / 2, "pb", receivedPbAtlasKey); + const receivedPokeball: Phaser.GameObjects.Sprite = globalScene.add.sprite(tradeBaseBg.displayWidth / 2, tradeBaseBg.displayHeight / 2, "pb", receivedPbAtlasKey); receivedPokeball.setVisible(false); tradeContainer.add(receivedPokeball); - scene.tweens.add({ + globalScene.tweens.add({ targets: tradedPokemonSprite, alpha: 1, ease: "Cubic.easeInOut", duration: 500, onComplete: async () => { - scene.fadeOutBgm(1000, false); - await showEncounterText(scene, `${namespace}:pokemon_trade_selected`); + globalScene.fadeOutBgm(1000, false); + await showEncounterText(`${namespace}:pokemon_trade_selected`); tradedPokemon.cry(); - scene.playBgm("evolution"); - await showEncounterText(scene, `${namespace}:pokemon_trade_goodbye`); + globalScene.playBgm("evolution"); + await showEncounterText(`${namespace}:pokemon_trade_goodbye`); tradedPokeball.setAlpha(0); tradedPokeball.setVisible(true); - scene.tweens.add({ + globalScene.tweens.add({ targets: tradedPokeball, alpha: 1, ease: "Cubic.easeInOut", duration: 250, onComplete: () => { tradedPokeball.setTexture("pb", `${tradedPbAtlasKey}_opening`); - scene.time.delayedCall(17, () => tradedPokeball.setTexture("pb", `${tradedPbAtlasKey}_open`)); - scene.playSound("se/pb_rel"); + globalScene.time.delayedCall(17, () => tradedPokeball.setTexture("pb", `${tradedPbAtlasKey}_open`)); + globalScene.playSound("se/pb_rel"); tradedPokemonTintSprite.setVisible(true); // TODO: need to add particles to fieldUI instead of field - // addPokeballOpenParticles(scene, tradedPokemon.x, tradedPokemon.y, tradedPokemon.pokeball); + // addPokeballOpenParticles(tradedPokemon.x, tradedPokemon.y, tradedPokemon.pokeball); - scene.tweens.add({ + globalScene.tweens.add({ targets: [ tradedPokemonTintSprite, tradedPokemonSprite ], duration: 500, ease: "Sine.easeIn", @@ -672,30 +677,30 @@ function doPokemonTradeSequence(scene: BattleScene, tradedPokemon: PlayerPokemon tradedPokemonSprite.setVisible(false); tradedPokeball.setTexture("pb", `${tradedPbAtlasKey}_opening`); tradedPokemonTintSprite.setVisible(false); - scene.playSound("se/pb_catch"); - scene.time.delayedCall(17, () => tradedPokeball.setTexture("pb", `${tradedPbAtlasKey}`)); + globalScene.playSound("se/pb_catch"); + globalScene.time.delayedCall(17, () => tradedPokeball.setTexture("pb", `${tradedPbAtlasKey}`)); - scene.tweens.add({ + globalScene.tweens.add({ targets: tradedPokeball, y: "+=10", duration: 200, delay: 250, ease: "Cubic.easeIn", onComplete: () => { - scene.playSound("se/pb_bounce_1"); + globalScene.playSound("se/pb_bounce_1"); - scene.tweens.add({ + globalScene.tweens.add({ targets: tradedPokeball, y: "-=100", duration: 200, delay: 1000, ease: "Cubic.easeInOut", onStart: () => { - scene.playSound("se/pb_throw"); + globalScene.playSound("se/pb_throw"); }, onComplete: async () => { - await doPokemonTradeFlyBySequence(scene, tradedPokemonSprite, receivedPokemonSprite); - await doTradeReceivedSequence(scene, receivedPokemon, receivedPokemonSprite, receivedPokemonTintSprite, receivedPokeball, receivedPbAtlasKey); + await doPokemonTradeFlyBySequence(tradedPokemonSprite, receivedPokemonSprite); + await doTradeReceivedSequence(receivedPokemon, receivedPokemonSprite, receivedPokemonTintSprite, receivedPokeball, receivedPbAtlasKey); resolve(); } }); @@ -710,9 +715,9 @@ function doPokemonTradeSequence(scene: BattleScene, tradedPokemon: PlayerPokemon }); } -function doPokemonTradeFlyBySequence(scene: BattleScene, tradedPokemonSprite: Phaser.GameObjects.Sprite, receivedPokemonSprite: Phaser.GameObjects.Sprite) { +function doPokemonTradeFlyBySequence(tradedPokemonSprite: Phaser.GameObjects.Sprite, receivedPokemonSprite: Phaser.GameObjects.Sprite) { return new Promise(resolve => { - const tradeContainer = scene.fieldUI.getByName("Trade Background") as Phaser.GameObjects.Container; + const tradeContainer = globalScene.fieldUI.getByName("Trade Background") as Phaser.GameObjects.Container; const tradeBaseBg = tradeContainer.getByName("Trade Background Image") as Phaser.GameObjects.Image; const flyByStaticBg = tradeContainer.getByName("Black Background") as Phaser.GameObjects.Rectangle; flyByStaticBg.setVisible(true); @@ -733,47 +738,47 @@ function doPokemonTradeFlyBySequence(scene: BattleScene, tradedPokemonSprite: Ph const BASE_ANIM_DURATION = 1000; // Fade out trade background - scene.tweens.add({ + globalScene.tweens.add({ targets: tradeBaseBg, alpha: 0, ease: "Cubic.easeInOut", duration: FADE_DELAY, onComplete: () => { - scene.tweens.add({ + globalScene.tweens.add({ targets: [ receivedPokemonSprite, tradedPokemonSprite ], y: tradeBaseBg.displayWidth / 2 - 100, ease: "Cubic.easeInOut", duration: BASE_ANIM_DURATION * 3, onComplete: () => { - scene.tweens.add({ + globalScene.tweens.add({ targets: receivedPokemonSprite, x: tradeBaseBg.displayWidth / 4, ease: "Cubic.easeInOut", duration: BASE_ANIM_DURATION / 2, delay: ANIM_DELAY }); - scene.tweens.add({ + globalScene.tweens.add({ targets: tradedPokemonSprite, x: tradeBaseBg.displayWidth * 3 / 4, ease: "Cubic.easeInOut", duration: BASE_ANIM_DURATION / 2, delay: ANIM_DELAY, onComplete: () => { - scene.tweens.add({ + globalScene.tweens.add({ targets: receivedPokemonSprite, y: "+=200", ease: "Cubic.easeInOut", duration: BASE_ANIM_DURATION * 2, delay: ANIM_DELAY, }); - scene.tweens.add({ + globalScene.tweens.add({ targets: tradedPokemonSprite, y: "-=200", ease: "Cubic.easeInOut", duration: BASE_ANIM_DURATION * 2, delay: ANIM_DELAY, onComplete: () => { - scene.tweens.add({ + globalScene.tweens.add({ targets: tradeBaseBg, alpha: 1, ease: "Cubic.easeInOut", @@ -793,9 +798,9 @@ function doPokemonTradeFlyBySequence(scene: BattleScene, tradedPokemonSprite: Ph }); } -function doTradeReceivedSequence(scene: BattleScene, receivedPokemon: PlayerPokemon, receivedPokemonSprite: Phaser.GameObjects.Sprite, receivedPokemonTintSprite: Phaser.GameObjects.Sprite, receivedPokeballSprite: Phaser.GameObjects.Sprite, receivedPbAtlasKey: string) { +function doTradeReceivedSequence(receivedPokemon: PlayerPokemon, receivedPokemonSprite: Phaser.GameObjects.Sprite, receivedPokemonTintSprite: Phaser.GameObjects.Sprite, receivedPokeballSprite: Phaser.GameObjects.Sprite, receivedPbAtlasKey: string) { return new Promise(resolve => { - const tradeContainer = scene.fieldUI.getByName("Trade Background") as Phaser.GameObjects.Container; + const tradeContainer = globalScene.fieldUI.getByName("Trade Background") as Phaser.GameObjects.Container; const tradeBaseBg = tradeContainer.getByName("Trade Background Image") as Phaser.GameObjects.Image; receivedPokemonSprite.setVisible(false); @@ -812,7 +817,7 @@ function doTradeReceivedSequence(scene: BattleScene, receivedPokemon: PlayerPoke // Received pokemon sparkles let pokemonShinySparkle: Phaser.GameObjects.Sprite; if (receivedPokemon.shiny) { - pokemonShinySparkle = scene.add.sprite(receivedPokemonSprite.x, receivedPokemonSprite.y, "shiny"); + pokemonShinySparkle = globalScene.add.sprite(receivedPokemonSprite.x, receivedPokemonSprite.y, "shiny"); pokemonShinySparkle.setVisible(false); tradeContainer.add(pokemonShinySparkle); } @@ -820,19 +825,19 @@ function doTradeReceivedSequence(scene: BattleScene, receivedPokemon: PlayerPoke const BASE_ANIM_DURATION = 1000; // Pokeball falls to the screen - scene.playSound("se/pb_throw"); - scene.tweens.add({ + globalScene.playSound("se/pb_throw"); + globalScene.tweens.add({ targets: receivedPokeballSprite, y: "+=100", ease: "Cubic.easeInOut", duration: BASE_ANIM_DURATION, onComplete: () => { - scene.playSound("se/pb_bounce_1"); - scene.time.delayedCall(100, () => scene.playSound("se/pb_bounce_1")); + globalScene.playSound("se/pb_bounce_1"); + globalScene.time.delayedCall(100, () => globalScene.playSound("se/pb_bounce_1")); - scene.time.delayedCall(2000, () => { - scene.playSound("se/pb_rel"); - scene.fadeOutBgm(500, false); + globalScene.time.delayedCall(2000, () => { + globalScene.playSound("se/pb_rel"); + globalScene.fadeOutBgm(500, false); receivedPokemon.cry(); receivedPokemonTintSprite.scale = 0.25; receivedPokemonTintSprite.alpha = 1; @@ -841,14 +846,14 @@ function doTradeReceivedSequence(scene: BattleScene, receivedPokemon: PlayerPoke receivedPokemonTintSprite.alpha = 1; receivedPokemonTintSprite.setVisible(true); receivedPokeballSprite.setTexture("pb", `${receivedPbAtlasKey}_opening`); - scene.time.delayedCall(17, () => receivedPokeballSprite.setTexture("pb", `${receivedPbAtlasKey}_open`)); - scene.tweens.add({ + globalScene.time.delayedCall(17, () => receivedPokeballSprite.setTexture("pb", `${receivedPbAtlasKey}_open`)); + globalScene.tweens.add({ targets: receivedPokemonSprite, duration: 250, ease: "Sine.easeOut", scale: 1 }); - scene.tweens.add({ + globalScene.tweens.add({ targets: receivedPokemonTintSprite, duration: 250, ease: "Sine.easeOut", @@ -856,12 +861,12 @@ function doTradeReceivedSequence(scene: BattleScene, receivedPokemon: PlayerPoke alpha: 0, onComplete: () => { if (receivedPokemon.shiny) { - scene.time.delayedCall(500, () => { - doShinySparkleAnim(scene, pokemonShinySparkle, receivedPokemon.variant); + globalScene.time.delayedCall(500, () => { + doShinySparkleAnim(pokemonShinySparkle, receivedPokemon.variant); }); } receivedPokeballSprite.destroy(); - scene.time.delayedCall(2000, () => resolve()); + globalScene.time.delayedCall(2000, () => resolve()); } }); }); diff --git a/src/data/mystery-encounters/encounters/lost-at-sea-encounter.ts b/src/data/mystery-encounters/encounters/lost-at-sea-encounter.ts index a8cb076bbe9..34c808359b7 100644 --- a/src/data/mystery-encounters/encounters/lost-at-sea-encounter.ts +++ b/src/data/mystery-encounters/encounters/lost-at-sea-encounter.ts @@ -2,8 +2,9 @@ import { getPokemonSpecies } from "#app/data/pokemon-species"; import { Moves } from "#app/enums/moves"; import { Species } from "#app/enums/species"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import BattleScene from "#app/battle-scene"; -import MysteryEncounter, { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; +import { globalScene } from "#app/global-scene"; +import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; import { leaveEncounterWithoutBattle, setEncounterExp } from "../utils/encounter-phase-utils"; import { applyDamageToPokemon } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; @@ -41,8 +42,8 @@ export const LostAtSeaEncounter: MysteryEncounter = MysteryEncounterBuilder.with }, ]) .withIntroDialogue([{ text: `${namespace}:intro` }]) - .withOnInit((scene: BattleScene) => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withOnInit(() => { + const encounter = globalScene.currentBattle.mysteryEncounter!; encounter.setDialogueToken("damagePercentage", String(DAMAGE_PERCENTAGE)); encounter.setDialogueToken("option1RequiredMove", new PokemonMove(OPTION_1_REQUIRED_MOVE).getName()); @@ -70,7 +71,7 @@ export const LostAtSeaEncounter: MysteryEncounter = MysteryEncounterBuilder.with }, ], }) - .withOptionPhase(async (scene: BattleScene) => handlePokemonGuidingYouPhase(scene)) + .withOptionPhase(async () => handlePokemonGuidingYouPhase()) .build() ) .withOption( @@ -89,7 +90,7 @@ export const LostAtSeaEncounter: MysteryEncounter = MysteryEncounterBuilder.with }, ], }) - .withOptionPhase(async (scene: BattleScene) => handlePokemonGuidingYouPhase(scene)) + .withOptionPhase(async () => handlePokemonGuidingYouPhase()) .build() ) .withSimpleOption( @@ -103,16 +104,16 @@ export const LostAtSeaEncounter: MysteryEncounter = MysteryEncounterBuilder.with }, ], }, - async (scene: BattleScene) => { - const allowedPokemon = scene.getPlayerParty().filter((p) => p.isAllowedInBattle()); + async () => { + const allowedPokemon = globalScene.getPlayerParty().filter((p) => p.isAllowedInBattle()); for (const pkm of allowedPokemon) { const percentage = DAMAGE_PERCENTAGE / 100; const damage = Math.floor(pkm.getMaxHp() * percentage); - applyDamageToPokemon(scene, pkm, damage); + applyDamageToPokemon(pkm, damage); } - leaveEncounterWithoutBattle(scene); + leaveEncounterWithoutBattle(); return true; } @@ -126,19 +127,17 @@ export const LostAtSeaEncounter: MysteryEncounter = MysteryEncounterBuilder.with /** * Generic handler for using a guiding pokemon to guide you back. - * - * @param scene Battle scene */ -function handlePokemonGuidingYouPhase(scene: BattleScene) { +function handlePokemonGuidingYouPhase() { const laprasSpecies = getPokemonSpecies(Species.LAPRAS); - const { mysteryEncounter } = scene.currentBattle; + const { mysteryEncounter } = globalScene.currentBattle; if (mysteryEncounter?.selectedOption?.primaryPokemon?.id) { - setEncounterExp(scene, mysteryEncounter.selectedOption.primaryPokemon.id, laprasSpecies.baseExp, true); + setEncounterExp(mysteryEncounter.selectedOption.primaryPokemon.id, laprasSpecies.baseExp, true); } else { console.warn("Lost at sea: No guide pokemon found but pokemon guides player. huh!?"); } - leaveEncounterWithoutBattle(scene); + leaveEncounterWithoutBattle(); return true; } diff --git a/src/data/mystery-encounters/encounters/mysterious-challengers-encounter.ts b/src/data/mystery-encounters/encounters/mysterious-challengers-encounter.ts index 7fdd29d36a2..36e12b34e10 100644 --- a/src/data/mystery-encounters/encounters/mysterious-challengers-encounter.ts +++ b/src/data/mystery-encounters/encounters/mysterious-challengers-encounter.ts @@ -1,5 +1,6 @@ +import type { + EnemyPartyConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { - EnemyPartyConfig, initBattleWithEnemyConfig, setEncounterRewards, } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; @@ -13,9 +14,10 @@ import { ModifierTier } from "#app/modifier/modifier-tier"; import { modifierTypes } from "#app/modifier/modifier-type"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { PartyMemberStrength } from "#enums/party-member-strength"; -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import * as Utils from "#app/utils"; -import MysteryEncounter, { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; +import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/game-mode"; @@ -37,12 +39,12 @@ export const MysteriousChallengersEncounter: MysteryEncounter = text: `${namespace}:intro`, }, ]) - .withOnInit((scene: BattleScene) => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withOnInit(() => { + const encounter = globalScene.currentBattle.mysteryEncounter!; // Calculates what trainers are available for battle in the encounter // Normal difficulty trainer is randomly pulled from biome - const normalTrainerType = scene.arena.randomTrainerType(scene.currentBattle.waveIndex); + const normalTrainerType = globalScene.arena.randomTrainerType(globalScene.currentBattle.waveIndex); const normalConfig = trainerConfigs[normalTrainerType].clone(); let female = false; if (normalConfig.hasGenders) { @@ -57,16 +59,16 @@ export const MysteriousChallengersEncounter: MysteryEncounter = // Hard difficulty trainer is another random trainer, but with AVERAGE_BALANCED config // Number of mons is based off wave: 1-20 is 2, 20-40 is 3, etc. capping at 6 after wave 100 let retries = 0; - let hardTrainerType = scene.arena.randomTrainerType(scene.currentBattle.waveIndex); + let hardTrainerType = globalScene.arena.randomTrainerType(globalScene.currentBattle.waveIndex); while (retries < 5 && hardTrainerType === normalTrainerType) { // Will try to use a different trainer from the normal trainer type - hardTrainerType = scene.arena.randomTrainerType(scene.currentBattle.waveIndex); + hardTrainerType = globalScene.arena.randomTrainerType(globalScene.currentBattle.waveIndex); retries++; } const hardTemplate = new TrainerPartyCompoundTemplate( new TrainerPartyTemplate(1, PartyMemberStrength.STRONGER, false, true), new TrainerPartyTemplate( - Math.min(Math.ceil(scene.currentBattle.waveIndex / 20), 5), + Math.min(Math.ceil(globalScene.currentBattle.waveIndex / 20), 5), PartyMemberStrength.AVERAGE, false, true @@ -87,8 +89,8 @@ export const MysteriousChallengersEncounter: MysteryEncounter = // Brutal trainer is pulled from pool of boss trainers (gym leaders) for the biome // They are given an E4 template team, so will be stronger than usual boss encounter and always have 6 mons - const brutalTrainerType = scene.arena.randomTrainerType( - scene.currentBattle.waveIndex, + const brutalTrainerType = globalScene.arena.randomTrainerType( + globalScene.currentBattle.waveIndex, true ); const e4Template = trainerPartyTemplates.ELITE_FOUR; @@ -145,18 +147,18 @@ export const MysteriousChallengersEncounter: MysteryEncounter = }, ], }, - async (scene: BattleScene) => { - const encounter = scene.currentBattle.mysteryEncounter!; + async () => { + const encounter = globalScene.currentBattle.mysteryEncounter!; // Spawn standard trainer battle with memory mushroom reward const config: EnemyPartyConfig = encounter.enemyPartyConfigs[0]; - setEncounterRewards(scene, { guaranteedModifierTypeFuncs: [ modifierTypes.TM_COMMON, modifierTypes.TM_GREAT, modifierTypes.MEMORY_MUSHROOM ], fillRemaining: true }); + setEncounterRewards({ guaranteedModifierTypeFuncs: [ modifierTypes.TM_COMMON, modifierTypes.TM_GREAT, modifierTypes.MEMORY_MUSHROOM ], fillRemaining: true }); // Seed offsets to remove possibility of different trainers having exact same teams let initBattlePromise: Promise; - scene.executeWithSeedOffset(() => { - initBattlePromise = initBattleWithEnemyConfig(scene, config); - }, scene.currentBattle.waveIndex * 10); + globalScene.executeWithSeedOffset(() => { + initBattlePromise = initBattleWithEnemyConfig(config); + }, globalScene.currentBattle.waveIndex * 10); await initBattlePromise!; } ) @@ -170,18 +172,18 @@ export const MysteriousChallengersEncounter: MysteryEncounter = }, ], }, - async (scene: BattleScene) => { - const encounter = scene.currentBattle.mysteryEncounter!; + async () => { + const encounter = globalScene.currentBattle.mysteryEncounter!; // Spawn hard fight const config: EnemyPartyConfig = encounter.enemyPartyConfigs[1]; - setEncounterRewards(scene, { guaranteedModifierTiers: [ ModifierTier.ULTRA, ModifierTier.ULTRA, ModifierTier.GREAT, ModifierTier.GREAT ], fillRemaining: true }); + setEncounterRewards({ guaranteedModifierTiers: [ ModifierTier.ULTRA, ModifierTier.ULTRA, ModifierTier.GREAT, ModifierTier.GREAT ], fillRemaining: true }); // Seed offsets to remove possibility of different trainers having exact same teams let initBattlePromise: Promise; - scene.executeWithSeedOffset(() => { - initBattlePromise = initBattleWithEnemyConfig(scene, config); - }, scene.currentBattle.waveIndex * 100); + globalScene.executeWithSeedOffset(() => { + initBattlePromise = initBattleWithEnemyConfig(config); + }, globalScene.currentBattle.waveIndex * 100); await initBattlePromise!; } ) @@ -195,21 +197,21 @@ export const MysteriousChallengersEncounter: MysteryEncounter = }, ], }, - async (scene: BattleScene) => { - const encounter = scene.currentBattle.mysteryEncounter!; + async () => { + const encounter = globalScene.currentBattle.mysteryEncounter!; // Spawn brutal fight const config: EnemyPartyConfig = encounter.enemyPartyConfigs[2]; // To avoid player level snowballing from picking this option encounter.expMultiplier = 0.9; - setEncounterRewards(scene, { guaranteedModifierTiers: [ ModifierTier.ROGUE, ModifierTier.ROGUE, ModifierTier.ULTRA, ModifierTier.GREAT ], fillRemaining: true }); + setEncounterRewards({ guaranteedModifierTiers: [ ModifierTier.ROGUE, ModifierTier.ROGUE, ModifierTier.ULTRA, ModifierTier.GREAT ], fillRemaining: true }); // Seed offsets to remove possibility of different trainers having exact same teams let initBattlePromise: Promise; - scene.executeWithSeedOffset(() => { - initBattlePromise = initBattleWithEnemyConfig(scene, config); - }, scene.currentBattle.waveIndex * 1000); + globalScene.executeWithSeedOffset(() => { + initBattlePromise = initBattleWithEnemyConfig(config); + }, globalScene.currentBattle.waveIndex * 1000); await initBattlePromise!; } ) diff --git a/src/data/mystery-encounters/encounters/mysterious-chest-encounter.ts b/src/data/mystery-encounters/encounters/mysterious-chest-encounter.ts index 877deee66b7..9b4999020d0 100644 --- a/src/data/mystery-encounters/encounters/mysterious-chest-encounter.ts +++ b/src/data/mystery-encounters/encounters/mysterious-chest-encounter.ts @@ -1,8 +1,10 @@ -import BattleScene from "#app/battle-scene"; -import MysteryEncounter, { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; +import { globalScene } from "#app/global-scene"; +import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; import { queueEncounterMessage, showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; -import { EnemyPartyConfig, initBattleWithEnemyConfig, leaveEncounterWithoutBattle, setEncounterRewards, transitionMysteryEncounterIntroVisuals } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import type { EnemyPartyConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import { initBattleWithEnemyConfig, leaveEncounterWithoutBattle, setEncounterRewards, transitionMysteryEncounterIntroVisuals } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { getHighestLevelPlayerPokemon, koPlayerPokemon } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; import { getPokemonSpecies } from "#app/data/pokemon-species"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/game-mode"; @@ -66,8 +68,8 @@ export const MysteriousChestEncounter: MysteryEncounter = .withTitle(`${namespace}:title`) .withDescription(`${namespace}:description`) .withQuery(`${namespace}:query`) - .withOnInit((scene: BattleScene) => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withOnInit(() => { + const encounter = globalScene.currentBattle.mysteryEncounter!; // Calculate boss mon const config: EnemyPartyConfig = { @@ -106,9 +108,9 @@ export const MysteriousChestEncounter: MysteryEncounter = }, ], }) - .withPreOptionPhase(async (scene: BattleScene) => { + .withPreOptionPhase(async () => { // Play animation - const encounter = scene.currentBattle.mysteryEncounter!; + const encounter = globalScene.currentBattle.mysteryEncounter!; const introVisuals = encounter.introVisuals!; // Determine roll first @@ -128,13 +130,13 @@ export const MysteriousChestEncounter: MysteryEncounter = introVisuals.spriteConfigs[1].disableAnimation = false; introVisuals.playAnim(); }) - .withOptionPhase(async (scene: BattleScene) => { + .withOptionPhase(async () => { // Open the chest - const encounter = scene.currentBattle.mysteryEncounter!; + const encounter = globalScene.currentBattle.mysteryEncounter!; const roll = encounter.misc.roll; if (roll >= RAND_LENGTH - COMMON_REWARDS_PERCENT) { // Choose between 2 COMMON / 2 GREAT tier items (20%) - setEncounterRewards(scene, { + setEncounterRewards({ guaranteedModifierTiers: [ ModifierTier.COMMON, ModifierTier.COMMON, @@ -143,11 +145,11 @@ export const MysteriousChestEncounter: MysteryEncounter = ], }); // Display result message then proceed to rewards - queueEncounterMessage(scene, `${namespace}:option.1.normal`); - leaveEncounterWithoutBattle(scene); + queueEncounterMessage(`${namespace}:option.1.normal`); + leaveEncounterWithoutBattle(); } else if (roll >= RAND_LENGTH - COMMON_REWARDS_PERCENT - ULTRA_REWARDS_PERCENT) { // Choose between 3 ULTRA tier items (30%) - setEncounterRewards(scene, { + setEncounterRewards({ guaranteedModifierTiers: [ ModifierTier.ULTRA, ModifierTier.ULTRA, @@ -155,39 +157,39 @@ export const MysteriousChestEncounter: MysteryEncounter = ], }); // Display result message then proceed to rewards - queueEncounterMessage(scene, `${namespace}:option.1.good`); - leaveEncounterWithoutBattle(scene); + queueEncounterMessage(`${namespace}:option.1.good`); + leaveEncounterWithoutBattle(); } else if (roll >= RAND_LENGTH - COMMON_REWARDS_PERCENT - ULTRA_REWARDS_PERCENT - ROGUE_REWARDS_PERCENT) { // Choose between 2 ROGUE tier items (10%) - setEncounterRewards(scene, { guaranteedModifierTiers: [ ModifierTier.ROGUE, ModifierTier.ROGUE ]}); + setEncounterRewards({ guaranteedModifierTiers: [ ModifierTier.ROGUE, ModifierTier.ROGUE ]}); // Display result message then proceed to rewards - queueEncounterMessage(scene, `${namespace}:option.1.great`); - leaveEncounterWithoutBattle(scene); + queueEncounterMessage(`${namespace}:option.1.great`); + leaveEncounterWithoutBattle(); } else if (roll >= RAND_LENGTH - COMMON_REWARDS_PERCENT - ULTRA_REWARDS_PERCENT - ROGUE_REWARDS_PERCENT - MASTER_REWARDS_PERCENT) { // Choose 1 MASTER tier item (5%) - setEncounterRewards(scene, { guaranteedModifierTiers: [ ModifierTier.MASTER ]}); + setEncounterRewards({ guaranteedModifierTiers: [ ModifierTier.MASTER ]}); // Display result message then proceed to rewards - queueEncounterMessage(scene, `${namespace}:option.1.amazing`); - leaveEncounterWithoutBattle(scene); + queueEncounterMessage(`${namespace}:option.1.amazing`); + leaveEncounterWithoutBattle(); } else { // Your highest level unfainted Pokemon gets OHKO. Start battle against a Gimmighoul (35%) - const highestLevelPokemon = getHighestLevelPlayerPokemon(scene, true, false); - koPlayerPokemon(scene, highestLevelPokemon); + const highestLevelPokemon = getHighestLevelPlayerPokemon(true, false); + koPlayerPokemon(highestLevelPokemon); encounter.setDialogueToken("pokeName", highestLevelPokemon.getNameToRender()); - await showEncounterText(scene, `${namespace}:option.1.bad`); + await showEncounterText(`${namespace}:option.1.bad`); // Handle game over edge case - const allowedPokemon = scene.getPokemonAllowedInBattle(); + const allowedPokemon = globalScene.getPokemonAllowedInBattle(); if (allowedPokemon.length === 0) { // If there are no longer any legal pokemon in the party, game over. - scene.clearPhaseQueue(); - scene.unshiftPhase(new GameOverPhase(scene)); + globalScene.clearPhaseQueue(); + globalScene.unshiftPhase(new GameOverPhase()); } else { // Show which Pokemon was KOed, then start battle against Gimmighoul - await transitionMysteryEncounterIntroVisuals(scene, true, true, 500); - setEncounterRewards(scene, { fillRemaining: true }); - await initBattleWithEnemyConfig(scene, encounter.enemyPartyConfigs[0]); + await transitionMysteryEncounterIntroVisuals(true, true, 500); + setEncounterRewards({ fillRemaining: true }); + await initBattleWithEnemyConfig(encounter.enemyPartyConfigs[0]); } } }) @@ -203,9 +205,9 @@ export const MysteriousChestEncounter: MysteryEncounter = }, ], }, - async (scene: BattleScene) => { + async () => { // Leave encounter with no rewards or exp - leaveEncounterWithoutBattle(scene, true); + leaveEncounterWithoutBattle(true); return true; } ) diff --git a/src/data/mystery-encounters/encounters/part-timer-encounter.ts b/src/data/mystery-encounters/encounters/part-timer-encounter.ts index 092d2ab2673..4db8e2eb6e8 100644 --- a/src/data/mystery-encounters/encounters/part-timer-encounter.ts +++ b/src/data/mystery-encounters/encounters/part-timer-encounter.ts @@ -1,8 +1,9 @@ import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; import { leaveEncounterWithoutBattle, selectPokemonForOption, setEncounterExp, setEncounterRewards, transitionMysteryEncounterIntroVisuals, updatePlayerMoney } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import BattleScene from "#app/battle-scene"; -import MysteryEncounter, { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; +import { globalScene } from "#app/global-scene"; +import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; import { MoveRequirement } from "#app/data/mystery-encounters/mystery-encounter-requirements"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; @@ -10,7 +11,8 @@ import { Stat } from "#enums/stat"; import { CHARMING_MOVES } from "#app/data/mystery-encounters/requirements/requirement-groups"; import { showEncounterDialogue, showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; import i18next from "i18next"; -import Pokemon, { PlayerPokemon } from "#app/field/pokemon"; +import type { PlayerPokemon } from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/game-mode"; import { isPokemonValidForEncounterOptionSelection } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; @@ -52,20 +54,20 @@ export const PartTimerEncounter: MysteryEncounter = text: `${namespace}:intro_dialogue`, }, ]) - .withOnInit((scene: BattleScene) => { + .withOnInit(() => { // Load sfx - scene.loadSe("PRSFX- Horn Drill1", "battle_anims", "PRSFX- Horn Drill1.wav"); - scene.loadSe("PRSFX- Horn Drill3", "battle_anims", "PRSFX- Horn Drill3.wav"); - scene.loadSe("PRSFX- Guillotine2", "battle_anims", "PRSFX- Guillotine2.wav"); - scene.loadSe("PRSFX- Heavy Slam2", "battle_anims", "PRSFX- Heavy Slam2.wav"); + globalScene.loadSe("PRSFX- Horn Drill1", "battle_anims", "PRSFX- Horn Drill1.wav"); + globalScene.loadSe("PRSFX- Horn Drill3", "battle_anims", "PRSFX- Horn Drill3.wav"); + globalScene.loadSe("PRSFX- Guillotine2", "battle_anims", "PRSFX- Guillotine2.wav"); + globalScene.loadSe("PRSFX- Heavy Slam2", "battle_anims", "PRSFX- Heavy Slam2.wav"); - scene.loadSe("PRSFX- Agility", "battle_anims", "PRSFX- Agility.wav"); - scene.loadSe("PRSFX- Extremespeed1", "battle_anims", "PRSFX- Extremespeed1.wav"); - scene.loadSe("PRSFX- Accelerock1", "battle_anims", "PRSFX- Accelerock1.wav"); + globalScene.loadSe("PRSFX- Agility", "battle_anims", "PRSFX- Agility.wav"); + globalScene.loadSe("PRSFX- Extremespeed1", "battle_anims", "PRSFX- Extremespeed1.wav"); + globalScene.loadSe("PRSFX- Accelerock1", "battle_anims", "PRSFX- Accelerock1.wav"); - scene.loadSe("PRSFX- Captivate", "battle_anims", "PRSFX- Captivate.wav"); - scene.loadSe("PRSFX- Attract2", "battle_anims", "PRSFX- Attract2.wav"); - scene.loadSe("PRSFX- Aurora Veil2", "battle_anims", "PRSFX- Aurora Veil2.wav"); + globalScene.loadSe("PRSFX- Captivate", "battle_anims", "PRSFX- Captivate.wav"); + globalScene.loadSe("PRSFX- Attract2", "battle_anims", "PRSFX- Attract2.wav"); + globalScene.loadSe("PRSFX- Aurora Veil2", "battle_anims", "PRSFX- Aurora Veil2.wav"); return true; }) @@ -84,8 +86,8 @@ export const PartTimerEncounter: MysteryEncounter = } ] }) - .withPreOptionPhase(async (scene: BattleScene) => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withPreOptionPhase(async () => { + const encounter = globalScene.currentBattle.mysteryEncounter!; const onPokemonSelected = (pokemon: PlayerPokemon) => { encounter.setDialogueToken("selectedPokemon", pokemon.getNameToRender()); @@ -109,41 +111,41 @@ export const PartTimerEncounter: MysteryEncounter = } }); - setEncounterExp(scene, pokemon.id, 100); + setEncounterExp(pokemon.id, 100); // Hide intro visuals - transitionMysteryEncounterIntroVisuals(scene, true, false); + transitionMysteryEncounterIntroVisuals(true, false); // Play sfx for "working" - doDeliverySfx(scene); + doDeliverySfx(); }; // Only Pokemon non-KOd pokemon can be selected const selectableFilter = (pokemon: Pokemon) => { - return isPokemonValidForEncounterOptionSelection(pokemon, scene, `${namespace}:invalid_selection`); + return isPokemonValidForEncounterOptionSelection(pokemon, `${namespace}:invalid_selection`); }; - return selectPokemonForOption(scene, onPokemonSelected, undefined, selectableFilter); + return selectPokemonForOption(onPokemonSelected, undefined, selectableFilter); }) - .withOptionPhase(async (scene: BattleScene) => { + .withOptionPhase(async () => { // Pick Deliveries // Bring visuals back in - await transitionMysteryEncounterIntroVisuals(scene, false, false); + await transitionMysteryEncounterIntroVisuals(false, false); - const moneyMultiplier = scene.currentBattle.mysteryEncounter!.misc.moneyMultiplier; + const moneyMultiplier = globalScene.currentBattle.mysteryEncounter!.misc.moneyMultiplier; // Give money and do dialogue if (moneyMultiplier > 2.5) { - await showEncounterDialogue(scene, `${namespace}:job_complete_good`, `${namespace}:speaker`); + await showEncounterDialogue(`${namespace}:job_complete_good`, `${namespace}:speaker`); } else { - await showEncounterDialogue(scene, `${namespace}:job_complete_bad`, `${namespace}:speaker`); + await showEncounterDialogue(`${namespace}:job_complete_bad`, `${namespace}:speaker`); } - const moneyChange = scene.getWaveMoneyAmount(moneyMultiplier); - updatePlayerMoney(scene, moneyChange, true, false); - await showEncounterText(scene, i18next.t("mysteryEncounterMessages:receive_money", { amount: moneyChange })); - await showEncounterText(scene, `${namespace}:pokemon_tired`); + const moneyChange = globalScene.getWaveMoneyAmount(moneyMultiplier); + updatePlayerMoney(moneyChange, true, false); + await showEncounterText(i18next.t("mysteryEncounterMessages:receive_money", { amount: moneyChange })); + await showEncounterText(`${namespace}:pokemon_tired`); - setEncounterRewards(scene, { fillRemaining: true }); - leaveEncounterWithoutBattle(scene); + setEncounterRewards({ fillRemaining: true }); + leaveEncounterWithoutBattle(); }) .build() ) @@ -158,8 +160,8 @@ export const PartTimerEncounter: MysteryEncounter = } ] }) - .withPreOptionPhase(async (scene: BattleScene) => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withPreOptionPhase(async () => { + const encounter = globalScene.currentBattle.mysteryEncounter!; const onPokemonSelected = (pokemon: PlayerPokemon) => { encounter.setDialogueToken("selectedPokemon", pokemon.getNameToRender()); @@ -186,41 +188,41 @@ export const PartTimerEncounter: MysteryEncounter = } }); - setEncounterExp(scene, pokemon.id, 100); + setEncounterExp(pokemon.id, 100); // Hide intro visuals - transitionMysteryEncounterIntroVisuals(scene, true, false); + transitionMysteryEncounterIntroVisuals(true, false); // Play sfx for "working" - doStrongWorkSfx(scene); + doStrongWorkSfx(); }; // Only Pokemon non-KOd pokemon can be selected const selectableFilter = (pokemon: Pokemon) => { - return isPokemonValidForEncounterOptionSelection(pokemon, scene, `${namespace}:invalid_selection`); + return isPokemonValidForEncounterOptionSelection(pokemon, `${namespace}:invalid_selection`); }; - return selectPokemonForOption(scene, onPokemonSelected, undefined, selectableFilter); + return selectPokemonForOption(onPokemonSelected, undefined, selectableFilter); }) - .withOptionPhase(async (scene: BattleScene) => { + .withOptionPhase(async () => { // Pick Move Warehouse items // Bring visuals back in - await transitionMysteryEncounterIntroVisuals(scene, false, false); + await transitionMysteryEncounterIntroVisuals(false, false); - const moneyMultiplier = scene.currentBattle.mysteryEncounter!.misc.moneyMultiplier; + const moneyMultiplier = globalScene.currentBattle.mysteryEncounter!.misc.moneyMultiplier; // Give money and do dialogue if (moneyMultiplier > 2.5) { - await showEncounterDialogue(scene, `${namespace}:job_complete_good`, `${namespace}:speaker`); + await showEncounterDialogue(`${namespace}:job_complete_good`, `${namespace}:speaker`); } else { - await showEncounterDialogue(scene, `${namespace}:job_complete_bad`, `${namespace}:speaker`); + await showEncounterDialogue(`${namespace}:job_complete_bad`, `${namespace}:speaker`); } - const moneyChange = scene.getWaveMoneyAmount(moneyMultiplier); - updatePlayerMoney(scene, moneyChange, true, false); - await showEncounterText(scene, i18next.t("mysteryEncounterMessages:receive_money", { amount: moneyChange })); - await showEncounterText(scene, `${namespace}:pokemon_tired`); + const moneyChange = globalScene.getWaveMoneyAmount(moneyMultiplier); + updatePlayerMoney(moneyChange, true, false); + await showEncounterText(i18next.t("mysteryEncounterMessages:receive_money", { amount: moneyChange })); + await showEncounterText(`${namespace}:pokemon_tired`); - setEncounterRewards(scene, { fillRemaining: true }); - leaveEncounterWithoutBattle(scene); + setEncounterRewards({ fillRemaining: true }); + leaveEncounterWithoutBattle(); }) .build() ) @@ -238,8 +240,8 @@ export const PartTimerEncounter: MysteryEncounter = }, ], }) - .withPreOptionPhase(async (scene: BattleScene) => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withPreOptionPhase(async () => { + const encounter = globalScene.currentBattle.mysteryEncounter!; const selectedPokemon = encounter.selectedOption?.primaryPokemon!; encounter.setDialogueToken("selectedPokemon", selectedPokemon.getNameToRender()); @@ -251,28 +253,28 @@ export const PartTimerEncounter: MysteryEncounter = } }); - setEncounterExp(scene, selectedPokemon.id, 100); + setEncounterExp(selectedPokemon.id, 100); // Hide intro visuals - transitionMysteryEncounterIntroVisuals(scene, true, false); + transitionMysteryEncounterIntroVisuals(true, false); // Play sfx for "working" - doSalesSfx(scene); + doSalesSfx(); return true; }) - .withOptionPhase(async (scene: BattleScene) => { + .withOptionPhase(async () => { // Assist with Sales // Bring visuals back in - await transitionMysteryEncounterIntroVisuals(scene, false, false); + await transitionMysteryEncounterIntroVisuals(false, false); // Give money and do dialogue - await showEncounterDialogue(scene, `${namespace}:job_complete_good`, `${namespace}:speaker`); - const moneyChange = scene.getWaveMoneyAmount(2.5); - updatePlayerMoney(scene, moneyChange, true, false); - await showEncounterText(scene, i18next.t("mysteryEncounterMessages:receive_money", { amount: moneyChange })); - await showEncounterText(scene, `${namespace}:pokemon_tired`); + await showEncounterDialogue(`${namespace}:job_complete_good`, `${namespace}:speaker`); + const moneyChange = globalScene.getWaveMoneyAmount(2.5); + updatePlayerMoney(moneyChange, true, false); + await showEncounterText(i18next.t("mysteryEncounterMessages:receive_money", { amount: moneyChange })); + await showEncounterText(`${namespace}:pokemon_tired`); - setEncounterRewards(scene, { fillRemaining: true }); - leaveEncounterWithoutBattle(scene); + setEncounterRewards({ fillRemaining: true }); + leaveEncounterWithoutBattle(); }) .build() ) @@ -284,51 +286,51 @@ export const PartTimerEncounter: MysteryEncounter = ]) .build(); -function doStrongWorkSfx(scene: BattleScene) { - scene.playSound("battle_anims/PRSFX- Horn Drill1"); - scene.playSound("battle_anims/PRSFX- Horn Drill1"); +function doStrongWorkSfx() { + globalScene.playSound("battle_anims/PRSFX- Horn Drill1"); + globalScene.playSound("battle_anims/PRSFX- Horn Drill1"); - scene.time.delayedCall(1000, () => { - scene.playSound("battle_anims/PRSFX- Guillotine2"); + globalScene.time.delayedCall(1000, () => { + globalScene.playSound("battle_anims/PRSFX- Guillotine2"); }); - scene.time.delayedCall(2000, () => { - scene.playSound("battle_anims/PRSFX- Heavy Slam2"); + globalScene.time.delayedCall(2000, () => { + globalScene.playSound("battle_anims/PRSFX- Heavy Slam2"); }); - scene.time.delayedCall(2500, () => { - scene.playSound("battle_anims/PRSFX- Guillotine2"); + globalScene.time.delayedCall(2500, () => { + globalScene.playSound("battle_anims/PRSFX- Guillotine2"); }); } -function doDeliverySfx(scene: BattleScene) { - scene.playSound("battle_anims/PRSFX- Accelerock1"); +function doDeliverySfx() { + globalScene.playSound("battle_anims/PRSFX- Accelerock1"); - scene.time.delayedCall(1500, () => { - scene.playSound("battle_anims/PRSFX- Extremespeed1"); + globalScene.time.delayedCall(1500, () => { + globalScene.playSound("battle_anims/PRSFX- Extremespeed1"); }); - scene.time.delayedCall(2000, () => { - scene.playSound("battle_anims/PRSFX- Extremespeed1"); + globalScene.time.delayedCall(2000, () => { + globalScene.playSound("battle_anims/PRSFX- Extremespeed1"); }); - scene.time.delayedCall(2250, () => { - scene.playSound("battle_anims/PRSFX- Agility"); + globalScene.time.delayedCall(2250, () => { + globalScene.playSound("battle_anims/PRSFX- Agility"); }); } -function doSalesSfx(scene: BattleScene) { - scene.playSound("battle_anims/PRSFX- Captivate"); +function doSalesSfx() { + globalScene.playSound("battle_anims/PRSFX- Captivate"); - scene.time.delayedCall(1500, () => { - scene.playSound("battle_anims/PRSFX- Attract2"); + globalScene.time.delayedCall(1500, () => { + globalScene.playSound("battle_anims/PRSFX- Attract2"); }); - scene.time.delayedCall(2000, () => { - scene.playSound("battle_anims/PRSFX- Aurora Veil2"); + globalScene.time.delayedCall(2000, () => { + globalScene.playSound("battle_anims/PRSFX- Aurora Veil2"); }); - scene.time.delayedCall(3000, () => { - scene.playSound("battle_anims/PRSFX- Attract2"); + globalScene.time.delayedCall(3000, () => { + globalScene.playSound("battle_anims/PRSFX- Attract2"); }); } diff --git a/src/data/mystery-encounters/encounters/safari-zone-encounter.ts b/src/data/mystery-encounters/encounters/safari-zone-encounter.ts index e16cf2d6973..fd078e1ffaa 100644 --- a/src/data/mystery-encounters/encounters/safari-zone-encounter.ts +++ b/src/data/mystery-encounters/encounters/safari-zone-encounter.ts @@ -1,15 +1,18 @@ import { initSubsequentOptionSelect, leaveEncounterWithoutBattle, transitionMysteryEncounterIntroVisuals, updatePlayerMoney, } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import BattleScene from "#app/battle-scene"; -import MysteryEncounter, { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; -import MysteryEncounterOption, { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; +import { globalScene } from "#app/global-scene"; +import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; +import type MysteryEncounterOption from "#app/data/mystery-encounters/mystery-encounter-option"; +import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; import { TrainerSlot } from "#app/data/trainer-config"; import { HiddenAbilityRateBoosterModifier, IvScannerModifier } from "#app/modifier/modifier"; -import { EnemyPokemon } from "#app/field/pokemon"; +import type { EnemyPokemon } from "#app/field/pokemon"; import { PokeballType } from "#enums/pokeball"; import { PlayerGender } from "#enums/player-gender"; import { IntegerHolder, randSeedInt } from "#app/utils"; -import PokemonSpecies, { getPokemonSpecies } from "#app/data/pokemon-species"; +import type PokemonSpecies from "#app/data/pokemon-species"; +import { getPokemonSpecies } from "#app/data/pokemon-species"; import { MoneyRequirement } from "#app/data/mystery-encounters/mystery-encounter-requirements"; import { doPlayerFlee, doPokemonFlee, getRandomSpeciesByStarterCost, trainerThrowPokeball } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; import { getEncounterText, showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; @@ -59,8 +62,8 @@ export const SafariZoneEncounter: MysteryEncounter = .withTitle(`${namespace}:title`) .withDescription(`${namespace}:description`) .withQuery(`${namespace}:query`) - .withOnInit((scene: BattleScene) => { - scene.currentBattle.mysteryEncounter?.setDialogueToken("numEncounters", NUM_SAFARI_ENCOUNTERS.toString()); + .withOnInit(() => { + globalScene.currentBattle.mysteryEncounter?.setDialogueToken("numEncounters", NUM_SAFARI_ENCOUNTERS.toString()); return true; }) .withOption(MysteryEncounterOptionBuilder @@ -75,25 +78,25 @@ export const SafariZoneEncounter: MysteryEncounter = }, ], }) - .withOptionPhase(async (scene: BattleScene) => { + .withOptionPhase(async () => { // Start safari encounter - const encounter = scene.currentBattle.mysteryEncounter!; + const encounter = globalScene.currentBattle.mysteryEncounter!; encounter.continuousEncounter = true; encounter.misc = { safariPokemonRemaining: NUM_SAFARI_ENCOUNTERS }; - updatePlayerMoney(scene, -(encounter.options[0].requirements[0] as MoneyRequirement).requiredMoney); + updatePlayerMoney(-(encounter.options[0].requirements[0] as MoneyRequirement).requiredMoney); // Load bait/mud assets - scene.loadSe("PRSFX- Bug Bite", "battle_anims", "PRSFX- Bug Bite.wav"); - scene.loadSe("PRSFX- Sludge Bomb2", "battle_anims", "PRSFX- Sludge Bomb2.wav"); - scene.loadSe("PRSFX- Taunt2", "battle_anims", "PRSFX- Taunt2.wav"); - scene.loadAtlas("safari_zone_bait", "mystery-encounters"); - scene.loadAtlas("safari_zone_mud", "mystery-encounters"); + globalScene.loadSe("PRSFX- Bug Bite", "battle_anims", "PRSFX- Bug Bite.wav"); + globalScene.loadSe("PRSFX- Sludge Bomb2", "battle_anims", "PRSFX- Sludge Bomb2.wav"); + globalScene.loadSe("PRSFX- Taunt2", "battle_anims", "PRSFX- Taunt2.wav"); + globalScene.loadAtlas("safari_zone_bait", "mystery-encounters"); + globalScene.loadAtlas("safari_zone_mud", "mystery-encounters"); // Clear enemy party - scene.currentBattle.enemyParty = []; - await transitionMysteryEncounterIntroVisuals(scene); - await summonSafariPokemon(scene); - initSubsequentOptionSelect(scene, { overrideOptions: safariZoneGameOptions, hideDescription: true }); + globalScene.currentBattle.enemyParty = []; + await transitionMysteryEncounterIntroVisuals(); + await summonSafariPokemon(); + initSubsequentOptionSelect({ overrideOptions: safariZoneGameOptions, hideDescription: true }); return true; }) .build() @@ -108,9 +111,9 @@ export const SafariZoneEncounter: MysteryEncounter = }, ], }, - async (scene: BattleScene) => { + async () => { // Leave encounter with no rewards or exp - leaveEncounterWithoutBattle(scene, true); + leaveEncounterWithoutBattle(true); return true; } ) @@ -143,26 +146,26 @@ const safariZoneGameOptions: MysteryEncounterOption[] = [ } ], }) - .withOptionPhase(async (scene: BattleScene) => { + .withOptionPhase(async () => { // Throw a ball option - const encounter = scene.currentBattle.mysteryEncounter!; + const encounter = globalScene.currentBattle.mysteryEncounter!; const pokemon = encounter.misc.pokemon; - const catchResult = await throwPokeball(scene, pokemon); + const catchResult = await throwPokeball(pokemon); if (catchResult) { // You caught pokemon // Check how many safari pokemon left if (encounter.misc.safariPokemonRemaining > 0) { - await summonSafariPokemon(scene); - initSubsequentOptionSelect(scene, { overrideOptions: safariZoneGameOptions, startingCursorIndex: 0, hideDescription: true }); + await summonSafariPokemon(); + initSubsequentOptionSelect({ overrideOptions: safariZoneGameOptions, startingCursorIndex: 0, hideDescription: true }); } else { // End safari mode encounter.continuousEncounter = false; - leaveEncounterWithoutBattle(scene, true); + leaveEncounterWithoutBattle(true); } } else { // Pokemon catch failed, end turn - await doEndTurn(scene, 0); + await doEndTurn(0); } return true; }) @@ -178,22 +181,22 @@ const safariZoneGameOptions: MysteryEncounterOption[] = [ }, ], }) - .withOptionPhase(async (scene: BattleScene) => { + .withOptionPhase(async () => { // Throw bait option - const pokemon = scene.currentBattle.mysteryEncounter!.misc.pokemon; - await throwBait(scene, pokemon); + const pokemon = globalScene.currentBattle.mysteryEncounter!.misc.pokemon; + await throwBait(pokemon); // 100% chance to increase catch stage +2 - tryChangeCatchStage(scene, 2); + tryChangeCatchStage(2); // 80% chance to increase flee stage +1 - const fleeChangeResult = tryChangeFleeStage(scene, 1, 8); + const fleeChangeResult = tryChangeFleeStage(1, 8); if (!fleeChangeResult) { - await showEncounterText(scene, getEncounterText(scene, `${namespace}:safari.busy_eating`) ?? "", null, 1000, false ); + await showEncounterText(getEncounterText(`${namespace}:safari.busy_eating`) ?? "", null, 1000, false ); } else { - await showEncounterText(scene, getEncounterText(scene, `${namespace}:safari.eating`) ?? "", null, 1000, false); + await showEncounterText(getEncounterText(`${namespace}:safari.eating`) ?? "", null, 1000, false); } - await doEndTurn(scene, 1); + await doEndTurn(1); return true; }) .build(), @@ -208,21 +211,21 @@ const safariZoneGameOptions: MysteryEncounterOption[] = [ }, ], }) - .withOptionPhase(async (scene: BattleScene) => { + .withOptionPhase(async () => { // Throw mud option - const pokemon = scene.currentBattle.mysteryEncounter!.misc.pokemon; - await throwMud(scene, pokemon); + const pokemon = globalScene.currentBattle.mysteryEncounter!.misc.pokemon; + await throwMud(pokemon); // 100% chance to decrease flee stage -2 - tryChangeFleeStage(scene, -2); + tryChangeFleeStage(-2); // 80% chance to decrease catch stage -1 - const catchChangeResult = tryChangeCatchStage(scene, -1, 8); + const catchChangeResult = tryChangeCatchStage(-1, 8); if (!catchChangeResult) { - await showEncounterText(scene, getEncounterText(scene, `${namespace}:safari.beside_itself_angry`) ?? "", null, 1000, false ); + await showEncounterText(getEncounterText(`${namespace}:safari.beside_itself_angry`) ?? "", null, 1000, false ); } else { - await showEncounterText(scene, getEncounterText(scene, `${namespace}:safari.angry`) ?? "", null, 1000, false ); + await showEncounterText(getEncounterText(`${namespace}:safari.angry`) ?? "", null, 1000, false ); } - await doEndTurn(scene, 2); + await doEndTurn(2); return true; }) .build(), @@ -232,40 +235,40 @@ const safariZoneGameOptions: MysteryEncounterOption[] = [ buttonLabel: `${namespace}:safari.4.label`, buttonTooltip: `${namespace}:safari.4.tooltip`, }) - .withOptionPhase(async (scene: BattleScene) => { + .withOptionPhase(async () => { // Flee option - const encounter = scene.currentBattle.mysteryEncounter!; + const encounter = globalScene.currentBattle.mysteryEncounter!; const pokemon = encounter.misc.pokemon; - await doPlayerFlee(scene, pokemon); + await doPlayerFlee(pokemon); // Check how many safari pokemon left if (encounter.misc.safariPokemonRemaining > 0) { - await summonSafariPokemon(scene); - initSubsequentOptionSelect(scene, { overrideOptions: safariZoneGameOptions, startingCursorIndex: 3, hideDescription: true }); + await summonSafariPokemon(); + initSubsequentOptionSelect({ overrideOptions: safariZoneGameOptions, startingCursorIndex: 3, hideDescription: true }); } else { // End safari mode encounter.continuousEncounter = false; - leaveEncounterWithoutBattle(scene, true); + leaveEncounterWithoutBattle(true); } return true; }) .build() ]; -async function summonSafariPokemon(scene: BattleScene) { - const encounter = scene.currentBattle.mysteryEncounter!; +async function summonSafariPokemon() { + const encounter = globalScene.currentBattle.mysteryEncounter!; // Message pokemon remaining encounter.setDialogueToken("remainingCount", encounter.misc.safariPokemonRemaining); - scene.queueMessage(getEncounterText(scene, `${namespace}:safari.remaining_count`) ?? "", null, true); + globalScene.queueMessage(getEncounterText(`${namespace}:safari.remaining_count`) ?? "", null, true); // Generate pokemon using safariPokemonRemaining so they are always the same pokemon no matter how many turns are taken // Safari pokemon roll twice on shiny and HA chances, but are otherwise normal let enemySpecies; let pokemon; - scene.executeWithSeedOffset(() => { + globalScene.executeWithSeedOffset(() => { enemySpecies = getSafariSpeciesSpawn(); - const level = scene.currentBattle.getLevelForWave(); - enemySpecies = getPokemonSpecies(enemySpecies.getWildSpeciesForLevel(level, true, false, scene.gameMode)); - pokemon = scene.addEnemyPokemon(enemySpecies, level, TrainerSlot.NONE, false); + const level = globalScene.currentBattle.getLevelForWave(); + enemySpecies = getPokemonSpecies(enemySpecies.getWildSpeciesForLevel(level, true, false, globalScene.gameMode)); + pokemon = globalScene.addEnemyPokemon(enemySpecies, level, TrainerSlot.NONE, false); // Roll shiny twice if (!pokemon.shiny) { @@ -277,7 +280,7 @@ async function summonSafariPokemon(scene: BattleScene) { const hiddenIndex = pokemon.species.ability2 ? 2 : 1; if (pokemon.abilityIndex < hiddenIndex) { const hiddenAbilityChance = new IntegerHolder(256); - scene.applyModifiers(HiddenAbilityRateBoosterModifier, true, hiddenAbilityChance); + globalScene.applyModifiers(HiddenAbilityRateBoosterModifier, true, hiddenAbilityChance); const hasHiddenAbility = !randSeedInt(hiddenAbilityChance.value); @@ -289,10 +292,10 @@ async function summonSafariPokemon(scene: BattleScene) { pokemon.calculateStats(); - scene.currentBattle.enemyParty.unshift(pokemon); - }, scene.currentBattle.waveIndex * 1000 * encounter.misc.safariPokemonRemaining); + globalScene.currentBattle.enemyParty.unshift(pokemon); + }, globalScene.currentBattle.waveIndex * 1000 * encounter.misc.safariPokemonRemaining); - scene.gameData.setPokemonSeen(pokemon, true); + globalScene.gameData.setPokemonSeen(pokemon, true); await pokemon.loadAssets(); // Reset safari catch and flee rates @@ -301,7 +304,7 @@ async function summonSafariPokemon(scene: BattleScene) { encounter.misc.pokemon = pokemon; encounter.misc.safariPokemonRemaining -= 1; - scene.unshiftPhase(new SummonPhase(scene, 0, false)); + globalScene.unshiftPhase(new SummonPhase(0, false)); encounter.setDialogueToken("pokemonName", getPokemonNameWithAffix(pokemon)); @@ -310,49 +313,49 @@ async function summonSafariPokemon(scene: BattleScene) { // shows up and the IV scanner breaks. For now, we place the IV scanner code // separately so that at least the IV scanner works. - const ivScannerModifier = scene.findModifier(m => m instanceof IvScannerModifier); + const ivScannerModifier = globalScene.findModifier(m => m instanceof IvScannerModifier); if (ivScannerModifier) { - scene.pushPhase(new ScanIvsPhase(scene, pokemon.getBattlerIndex(), Math.min(ivScannerModifier.getStackCount() * 2, 6))); + globalScene.pushPhase(new ScanIvsPhase(pokemon.getBattlerIndex(), Math.min(ivScannerModifier.getStackCount() * 2, 6))); } } -function throwPokeball(scene: BattleScene, pokemon: EnemyPokemon): Promise { +function throwPokeball(pokemon: EnemyPokemon): Promise { const baseCatchRate = pokemon.species.catchRate; // Catch stage ranges from -6 to +6 (like stat boost stages) - const safariCatchStage = scene.currentBattle.mysteryEncounter!.misc.catchStage; + const safariCatchStage = globalScene.currentBattle.mysteryEncounter!.misc.catchStage; // Catch modifier ranges from 2/8 (-6 stage) to 8/2 (+6) const safariModifier = (2 + Math.min(Math.max(safariCatchStage, 0), 6)) / (2 - Math.max(Math.min(safariCatchStage, 0), -6)); // Catch rate same as safari ball const pokeballMultiplier = 1.5; const catchRate = Math.round(baseCatchRate * pokeballMultiplier * safariModifier); const ballTwitchRate = Math.round(1048560 / Math.sqrt(Math.sqrt(16711680 / catchRate))); - return trainerThrowPokeball(scene, pokemon, PokeballType.POKEBALL, ballTwitchRate); + return trainerThrowPokeball(pokemon, PokeballType.POKEBALL, ballTwitchRate); } -async function throwBait(scene: BattleScene, pokemon: EnemyPokemon): Promise { +async function throwBait(pokemon: EnemyPokemon): Promise { const originalY: number = pokemon.y; const fpOffset = pokemon.getFieldPositionOffset(); - const bait: Phaser.GameObjects.Sprite = scene.addFieldSprite(16 + 75, 80 + 25, "safari_zone_bait", "0001.png"); + const bait: Phaser.GameObjects.Sprite = globalScene.addFieldSprite(16 + 75, 80 + 25, "safari_zone_bait", "0001.png"); bait.setOrigin(0.5, 0.625); - scene.field.add(bait); + globalScene.field.add(bait); return new Promise(resolve => { - scene.trainer.setTexture(`trainer_${scene.gameData.gender === PlayerGender.FEMALE ? "f" : "m"}_back_pb`); - scene.time.delayedCall(TRAINER_THROW_ANIMATION_TIMES[0], () => { - scene.playSound("se/pb_throw"); + globalScene.trainer.setTexture(`trainer_${globalScene.gameData.gender === PlayerGender.FEMALE ? "f" : "m"}_back_pb`); + globalScene.time.delayedCall(TRAINER_THROW_ANIMATION_TIMES[0], () => { + globalScene.playSound("se/pb_throw"); // Trainer throw frames - scene.trainer.setFrame("2"); - scene.time.delayedCall(TRAINER_THROW_ANIMATION_TIMES[1], () => { - scene.trainer.setFrame("3"); - scene.time.delayedCall(TRAINER_THROW_ANIMATION_TIMES[2], () => { - scene.trainer.setTexture(`trainer_${scene.gameData.gender === PlayerGender.FEMALE ? "f" : "m"}_back`); + globalScene.trainer.setFrame("2"); + globalScene.time.delayedCall(TRAINER_THROW_ANIMATION_TIMES[1], () => { + globalScene.trainer.setFrame("3"); + globalScene.time.delayedCall(TRAINER_THROW_ANIMATION_TIMES[2], () => { + globalScene.trainer.setTexture(`trainer_${globalScene.gameData.gender === PlayerGender.FEMALE ? "f" : "m"}_back`); }); }); // Pokeball move and catch logic - scene.tweens.add({ + globalScene.tweens.add({ targets: bait, x: { value: 210 + fpOffset[0], ease: "Linear" }, y: { value: 55 + fpOffset[1], ease: "Cubic.easeOut" }, @@ -360,8 +363,8 @@ async function throwBait(scene: BattleScene, pokemon: EnemyPokemon): Promise { let index = 1; - scene.time.delayedCall(768, () => { - scene.tweens.add({ + globalScene.time.delayedCall(768, () => { + globalScene.tweens.add({ targets: pokemon, duration: 150, ease: "Cubic.easeOut", @@ -369,12 +372,12 @@ async function throwBait(scene: BattleScene, pokemon: EnemyPokemon): Promise { - scene.playSound("battle_anims/PRSFX- Bug Bite"); + globalScene.playSound("battle_anims/PRSFX- Bug Bite"); bait.setFrame("0002.png"); }, onLoop: () => { if (index % 2 === 0) { - scene.playSound("battle_anims/PRSFX- Bug Bite"); + globalScene.playSound("battle_anims/PRSFX- Bug Bite"); } if (index === 4) { bait.setFrame("0003.png"); @@ -382,7 +385,7 @@ async function throwBait(scene: BattleScene, pokemon: EnemyPokemon): Promise { - scene.time.delayedCall(256, () => { + globalScene.time.delayedCall(256, () => { bait.destroy(); resolve(true); }); @@ -395,55 +398,55 @@ async function throwBait(scene: BattleScene, pokemon: EnemyPokemon): Promise { +async function throwMud(pokemon: EnemyPokemon): Promise { const originalY: number = pokemon.y; const fpOffset = pokemon.getFieldPositionOffset(); - const mud: Phaser.GameObjects.Sprite = scene.addFieldSprite(16 + 75, 80 + 35, "safari_zone_mud", "0001.png"); + const mud: Phaser.GameObjects.Sprite = globalScene.addFieldSprite(16 + 75, 80 + 35, "safari_zone_mud", "0001.png"); mud.setOrigin(0.5, 0.625); - scene.field.add(mud); + globalScene.field.add(mud); return new Promise(resolve => { - scene.trainer.setTexture(`trainer_${scene.gameData.gender === PlayerGender.FEMALE ? "f" : "m"}_back_pb`); - scene.time.delayedCall(TRAINER_THROW_ANIMATION_TIMES[0], () => { - scene.playSound("se/pb_throw"); + globalScene.trainer.setTexture(`trainer_${globalScene.gameData.gender === PlayerGender.FEMALE ? "f" : "m"}_back_pb`); + globalScene.time.delayedCall(TRAINER_THROW_ANIMATION_TIMES[0], () => { + globalScene.playSound("se/pb_throw"); // Trainer throw frames - scene.trainer.setFrame("2"); - scene.time.delayedCall(TRAINER_THROW_ANIMATION_TIMES[1], () => { - scene.trainer.setFrame("3"); - scene.time.delayedCall(TRAINER_THROW_ANIMATION_TIMES[2], () => { - scene.trainer.setTexture(`trainer_${scene.gameData.gender === PlayerGender.FEMALE ? "f" : "m"}_back`); + globalScene.trainer.setFrame("2"); + globalScene.time.delayedCall(TRAINER_THROW_ANIMATION_TIMES[1], () => { + globalScene.trainer.setFrame("3"); + globalScene.time.delayedCall(TRAINER_THROW_ANIMATION_TIMES[2], () => { + globalScene.trainer.setTexture(`trainer_${globalScene.gameData.gender === PlayerGender.FEMALE ? "f" : "m"}_back`); }); }); // Mud throw and splat - scene.tweens.add({ + globalScene.tweens.add({ targets: mud, x: { value: 230 + fpOffset[0], ease: "Linear" }, y: { value: 55 + fpOffset[1], ease: "Cubic.easeOut" }, duration: 500, onComplete: () => { // Mud frame 2 - scene.playSound("battle_anims/PRSFX- Sludge Bomb2"); + globalScene.playSound("battle_anims/PRSFX- Sludge Bomb2"); mud.setFrame("0002.png"); // Mud splat - scene.time.delayedCall(200, () => { + globalScene.time.delayedCall(200, () => { mud.setFrame("0003.png"); - scene.time.delayedCall(400, () => { + globalScene.time.delayedCall(400, () => { mud.setFrame("0004.png"); }); }); // Fade mud then angry animation - scene.tweens.add({ + globalScene.tweens.add({ targets: mud, alpha: 0, ease: "Cubic.easeIn", duration: 1000, onComplete: () => { mud.destroy(); - scene.tweens.add({ + globalScene.tweens.add({ targets: pokemon, duration: 300, ease: "Cubic.easeOut", @@ -451,10 +454,10 @@ async function throwMud(scene: BattleScene, pokemon: EnemyPokemon): Promise { - scene.playSound("battle_anims/PRSFX- Taunt2"); + globalScene.playSound("battle_anims/PRSFX- Taunt2"); }, onLoop: () => { - scene.playSound("battle_anims/PRSFX- Taunt2"); + globalScene.playSound("battle_anims/PRSFX- Taunt2"); }, onComplete: () => { resolve(true); @@ -478,53 +481,53 @@ function isPokemonFlee(pokemon: EnemyPokemon, fleeStage: number): boolean { return roll < fleeRate; } -function tryChangeFleeStage(scene: BattleScene, change: number, chance?: number): boolean { +function tryChangeFleeStage(change: number, chance?: number): boolean { if (chance && randSeedInt(10) >= chance) { return false; } - const currentFleeStage = scene.currentBattle.mysteryEncounter!.misc.fleeStage ?? 0; - scene.currentBattle.mysteryEncounter!.misc.fleeStage = Math.min(Math.max(currentFleeStage + change, -6), 6); + const currentFleeStage = globalScene.currentBattle.mysteryEncounter!.misc.fleeStage ?? 0; + globalScene.currentBattle.mysteryEncounter!.misc.fleeStage = Math.min(Math.max(currentFleeStage + change, -6), 6); return true; } -function tryChangeCatchStage(scene: BattleScene, change: number, chance?: number): boolean { +function tryChangeCatchStage(change: number, chance?: number): boolean { if (chance && randSeedInt(10) >= chance) { return false; } - const currentCatchStage = scene.currentBattle.mysteryEncounter!.misc.catchStage ?? 0; - scene.currentBattle.mysteryEncounter!.misc.catchStage = Math.min(Math.max(currentCatchStage + change, -6), 6); + const currentCatchStage = globalScene.currentBattle.mysteryEncounter!.misc.catchStage ?? 0; + globalScene.currentBattle.mysteryEncounter!.misc.catchStage = Math.min(Math.max(currentCatchStage + change, -6), 6); return true; } -async function doEndTurn(scene: BattleScene, cursorIndex: number) { +async function doEndTurn(cursorIndex: number) { // First cleanup and destroy old Pokemon objects that were left in the enemyParty // They are left in enemyParty temporarily so that VictoryPhase properly handles EXP - const party = scene.getEnemyParty(); + const party = globalScene.getEnemyParty(); if (party.length > 1) { for (let i = 1; i < party.length; i++) { party[i].destroy(); } - scene.currentBattle.enemyParty = party.slice(0, 1); + globalScene.currentBattle.enemyParty = party.slice(0, 1); } - const encounter = scene.currentBattle.mysteryEncounter!; + const encounter = globalScene.currentBattle.mysteryEncounter!; const pokemon = encounter.misc.pokemon; const isFlee = isPokemonFlee(pokemon, encounter.misc.fleeStage); if (isFlee) { // Pokemon flees! - await doPokemonFlee(scene, pokemon); + await doPokemonFlee(pokemon); // Check how many safari pokemon left if (encounter.misc.safariPokemonRemaining > 0) { - await summonSafariPokemon(scene); - initSubsequentOptionSelect(scene, { overrideOptions: safariZoneGameOptions, startingCursorIndex: cursorIndex, hideDescription: true }); + await summonSafariPokemon(); + initSubsequentOptionSelect({ overrideOptions: safariZoneGameOptions, startingCursorIndex: cursorIndex, hideDescription: true }); } else { // End safari mode encounter.continuousEncounter = false; - leaveEncounterWithoutBattle(scene, true); + leaveEncounterWithoutBattle(true); } } else { - scene.queueMessage(getEncounterText(scene, `${namespace}:safari.watching`) ?? "", 0, null, 1000); - initSubsequentOptionSelect(scene, { overrideOptions: safariZoneGameOptions, startingCursorIndex: cursorIndex, hideDescription: true }); + globalScene.queueMessage(getEncounterText(`${namespace}:safari.watching`) ?? "", 0, null, 1000); + initSubsequentOptionSelect({ overrideOptions: safariZoneGameOptions, startingCursorIndex: cursorIndex, hideDescription: true }); } } diff --git a/src/data/mystery-encounters/encounters/shady-vitamin-dealer-encounter.ts b/src/data/mystery-encounters/encounters/shady-vitamin-dealer-encounter.ts index 3f1ace47b0f..d5362df28e7 100644 --- a/src/data/mystery-encounters/encounters/shady-vitamin-dealer-encounter.ts +++ b/src/data/mystery-encounters/encounters/shady-vitamin-dealer-encounter.ts @@ -1,18 +1,20 @@ import { generateModifierType, leaveEncounterWithoutBattle, selectPokemonForOption, setEncounterExp, updatePlayerMoney, } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import Pokemon, { PlayerPokemon } from "#app/field/pokemon"; +import type { PlayerPokemon } from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; import { modifierTypes } from "#app/modifier/modifier-type"; import { randSeedInt } from "#app/utils"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { Species } from "#enums/species"; -import BattleScene from "#app/battle-scene"; -import MysteryEncounter, { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; +import { globalScene } from "#app/global-scene"; +import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; import { MoneyRequirement } from "#app/data/mystery-encounters/mystery-encounter-requirements"; import { getEncounterText, queueEncounterMessage } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; import { applyDamageToPokemon, applyModifierTypeToPlayerPokemon, isPokemonValidForEncounterOptionSelection } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import { Nature } from "#enums/nature"; +import type { Nature } from "#enums/nature"; import { getNatureName } from "#app/data/nature"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/game-mode"; import i18next from "i18next"; @@ -79,15 +81,15 @@ export const ShadyVitaminDealerEncounter: MysteryEncounter = }, ], }) - .withPreOptionPhase(async (scene: BattleScene): Promise => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withPreOptionPhase(async (): Promise => { + const encounter = globalScene.currentBattle.mysteryEncounter!; const onPokemonSelected = (pokemon: PlayerPokemon) => { // Update money - updatePlayerMoney(scene, -(encounter.options[0].requirements[0] as MoneyRequirement).requiredMoney); + updatePlayerMoney(-(encounter.options[0].requirements[0] as MoneyRequirement).requiredMoney); // Calculate modifiers and dialogue tokens const modifiers = [ - generateModifierType(scene, modifierTypes.BASE_STAT_BOOSTER)!, - generateModifierType(scene, modifierTypes.BASE_STAT_BOOSTER)!, + generateModifierType(modifierTypes.BASE_STAT_BOOSTER)!, + generateModifierType(modifierTypes.BASE_STAT_BOOSTER)!, ]; encounter.setDialogueToken("boost1", modifiers[0].name); encounter.setDialogueToken("boost2", modifiers[1].name); @@ -103,34 +105,34 @@ export const ShadyVitaminDealerEncounter: MysteryEncounter = if (!pokemon.isAllowedInChallenge()) { return i18next.t("partyUiHandler:cantBeUsed", { pokemonName: pokemon.getNameToRender() }) ?? null; } - if (!encounter.pokemonMeetsPrimaryRequirements(scene, pokemon)) { - return getEncounterText(scene, `${namespace}:invalid_selection`) ?? null; + if (!encounter.pokemonMeetsPrimaryRequirements(pokemon)) { + return getEncounterText(`${namespace}:invalid_selection`) ?? null; } return null; }; - return selectPokemonForOption(scene, onPokemonSelected, undefined, selectableFilter); + return selectPokemonForOption(onPokemonSelected, undefined, selectableFilter); }) - .withOptionPhase(async (scene: BattleScene) => { + .withOptionPhase(async () => { // Choose Cheap Option - const encounter = scene.currentBattle.mysteryEncounter!; + const encounter = globalScene.currentBattle.mysteryEncounter!; const chosenPokemon = encounter.misc.chosenPokemon; const modifiers = encounter.misc.modifiers; for (const modType of modifiers) { - await applyModifierTypeToPlayerPokemon(scene, chosenPokemon, modType); + await applyModifierTypeToPlayerPokemon(chosenPokemon, modType); } - leaveEncounterWithoutBattle(scene, true); + leaveEncounterWithoutBattle(true); }) - .withPostOptionPhase(async (scene: BattleScene) => { + .withPostOptionPhase(async () => { // Damage and status applied after dealer leaves (to make thematic sense) - const encounter = scene.currentBattle.mysteryEncounter!; + const encounter = globalScene.currentBattle.mysteryEncounter!; const chosenPokemon = encounter.misc.chosenPokemon as PlayerPokemon; // Pokemon takes half max HP damage and nature is randomized (does not update dex) - applyDamageToPokemon(scene, chosenPokemon, Math.floor(chosenPokemon.getMaxHp() / 2)); + applyDamageToPokemon(chosenPokemon, Math.floor(chosenPokemon.getMaxHp() / 2)); const currentNature = chosenPokemon.nature; let newNature = randSeedInt(25) as Nature; @@ -140,8 +142,8 @@ export const ShadyVitaminDealerEncounter: MysteryEncounter = chosenPokemon.setCustomNature(newNature); encounter.setDialogueToken("newNature", getNatureName(newNature)); - queueEncounterMessage(scene, `${namespace}:cheap_side_effects`); - setEncounterExp(scene, [ chosenPokemon.id ], 100); + queueEncounterMessage(`${namespace}:cheap_side_effects`); + setEncounterExp([ chosenPokemon.id ], 100); await chosenPokemon.updateInfo(); }) .build() @@ -159,15 +161,15 @@ export const ShadyVitaminDealerEncounter: MysteryEncounter = }, ], }) - .withPreOptionPhase(async (scene: BattleScene): Promise => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withPreOptionPhase(async (): Promise => { + const encounter = globalScene.currentBattle.mysteryEncounter!; const onPokemonSelected = (pokemon: PlayerPokemon) => { // Update money - updatePlayerMoney(scene, -(encounter.options[1].requirements[0] as MoneyRequirement).requiredMoney); + updatePlayerMoney(-(encounter.options[1].requirements[0] as MoneyRequirement).requiredMoney); // Calculate modifiers and dialogue tokens const modifiers = [ - generateModifierType(scene, modifierTypes.BASE_STAT_BOOSTER)!, - generateModifierType(scene, modifierTypes.BASE_STAT_BOOSTER)!, + generateModifierType(modifierTypes.BASE_STAT_BOOSTER)!, + generateModifierType(modifierTypes.BASE_STAT_BOOSTER)!, ]; encounter.setDialogueToken("boost1", modifiers[0].name); encounter.setDialogueToken("boost2", modifiers[1].name); @@ -179,30 +181,30 @@ export const ShadyVitaminDealerEncounter: MysteryEncounter = // Only Pokemon that can gain benefits are unfainted const selectableFilter = (pokemon: Pokemon) => { - return isPokemonValidForEncounterOptionSelection(pokemon, scene, `${namespace}:invalid_selection`); + return isPokemonValidForEncounterOptionSelection(pokemon, `${namespace}:invalid_selection`); }; - return selectPokemonForOption(scene, onPokemonSelected, undefined, selectableFilter); + return selectPokemonForOption(onPokemonSelected, undefined, selectableFilter); }) - .withOptionPhase(async (scene: BattleScene) => { + .withOptionPhase(async () => { // Choose Expensive Option - const encounter = scene.currentBattle.mysteryEncounter!; + const encounter = globalScene.currentBattle.mysteryEncounter!; const chosenPokemon = encounter.misc.chosenPokemon; const modifiers = encounter.misc.modifiers; for (const modType of modifiers) { - await applyModifierTypeToPlayerPokemon(scene, chosenPokemon, modType); + await applyModifierTypeToPlayerPokemon(chosenPokemon, modType); } - leaveEncounterWithoutBattle(scene, true); + leaveEncounterWithoutBattle(true); }) - .withPostOptionPhase(async (scene: BattleScene) => { + .withPostOptionPhase(async () => { // Status applied after dealer leaves (to make thematic sense) - const encounter = scene.currentBattle.mysteryEncounter!; + const encounter = globalScene.currentBattle.mysteryEncounter!; const chosenPokemon = encounter.misc.chosenPokemon; - queueEncounterMessage(scene, `${namespace}:no_bad_effects`); - setEncounterExp(scene, [ chosenPokemon.id ], 100); + queueEncounterMessage(`${namespace}:no_bad_effects`); + setEncounterExp([ chosenPokemon.id ], 100); await chosenPokemon.updateInfo(); }) @@ -219,9 +221,9 @@ export const ShadyVitaminDealerEncounter: MysteryEncounter = } ] }, - async (scene: BattleScene) => { + async () => { // Leave encounter with no rewards or exp - leaveEncounterWithoutBattle(scene, true); + leaveEncounterWithoutBattle(true); return true; } ) diff --git a/src/data/mystery-encounters/encounters/slumbering-snorlax-encounter.ts b/src/data/mystery-encounters/encounters/slumbering-snorlax-encounter.ts index 8dd03e12caa..923d8f06c23 100644 --- a/src/data/mystery-encounters/encounters/slumbering-snorlax-encounter.ts +++ b/src/data/mystery-encounters/encounters/slumbering-snorlax-encounter.ts @@ -1,13 +1,16 @@ import { STEALING_MOVES } from "#app/data/mystery-encounters/requirements/requirement-groups"; -import { modifierTypes, PokemonHeldItemModifierType } from "#app/modifier/modifier-type"; +import type { PokemonHeldItemModifierType } from "#app/modifier/modifier-type"; +import { modifierTypes } from "#app/modifier/modifier-type"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { Species } from "#enums/species"; -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { StatusEffect } from "#enums/status-effect"; -import MysteryEncounter, { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; +import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; import { MoveRequirement } from "#app/data/mystery-encounters/mystery-encounter-requirements"; -import { EnemyPartyConfig, EnemyPokemonConfig, generateModifierType, initBattleWithEnemyConfig, leaveEncounterWithoutBattle, loadCustomMovesForEncounter, setEncounterExp, setEncounterRewards, } from "../utils/encounter-phase-utils"; +import type { EnemyPartyConfig, EnemyPokemonConfig } from "../utils/encounter-phase-utils"; +import { generateModifierType, initBattleWithEnemyConfig, leaveEncounterWithoutBattle, loadCustomMovesForEncounter, setEncounterExp, setEncounterRewards, } from "../utils/encounter-phase-utils"; import { queueEncounterMessage } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; import { Moves } from "#enums/moves"; import { BattlerIndex } from "#app/battle"; @@ -51,8 +54,8 @@ export const SlumberingSnorlaxEncounter: MysteryEncounter = text: `${namespace}:intro`, }, ]) - .withOnInit((scene: BattleScene) => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withOnInit(() => { + const encounter = globalScene.currentBattle.mysteryEncounter!; console.log(encounter); // Calculate boss mon @@ -65,11 +68,11 @@ export const SlumberingSnorlaxEncounter: MysteryEncounter = moveSet: [ Moves.REST, Moves.SLEEP_TALK, Moves.CRUNCH, Moves.GIGA_IMPACT ], modifierConfigs: [ { - modifier: generateModifierType(scene, modifierTypes.BERRY, [ BerryType.SITRUS ]) as PokemonHeldItemModifierType, + modifier: generateModifierType(modifierTypes.BERRY, [ BerryType.SITRUS ]) as PokemonHeldItemModifierType, stackCount: 2 }, { - modifier: generateModifierType(scene, modifierTypes.BERRY, [ BerryType.ENIGMA ]) as PokemonHeldItemModifierType, + modifier: generateModifierType(modifierTypes.BERRY, [ BerryType.ENIGMA ]) as PokemonHeldItemModifierType, stackCount: 2 }, ], @@ -83,7 +86,7 @@ export const SlumberingSnorlaxEncounter: MysteryEncounter = encounter.enemyPartyConfigs = [ config ]; // Load animations/sfx for Snorlax fight start moves - loadCustomMovesForEncounter(scene, [ Moves.SNORE ]); + loadCustomMovesForEncounter([ Moves.SNORE ]); encounter.setDialogueToken("snorlaxName", getPokemonSpecies(Species.SNORLAX).getName()); @@ -103,10 +106,10 @@ export const SlumberingSnorlaxEncounter: MysteryEncounter = }, ], }, - async (scene: BattleScene) => { + async () => { // Pick battle - const encounter = scene.currentBattle.mysteryEncounter!; - setEncounterRewards(scene, { guaranteedModifierTypeFuncs: [ modifierTypes.LEFTOVERS ], fillRemaining: true }); + const encounter = globalScene.currentBattle.mysteryEncounter!; + setEncounterRewards({ guaranteedModifierTypeFuncs: [ modifierTypes.LEFTOVERS ], fillRemaining: true }); encounter.startOfBattleEffects.push( { sourceBattlerIndex: BattlerIndex.ENEMY, @@ -120,7 +123,7 @@ export const SlumberingSnorlaxEncounter: MysteryEncounter = move: new PokemonMove(Moves.SNORE), ignorePp: true }); - await initBattleWithEnemyConfig(scene, encounter.enemyPartyConfigs[0]); + await initBattleWithEnemyConfig(encounter.enemyPartyConfigs[0]); } ) .withSimpleOption( @@ -133,12 +136,12 @@ export const SlumberingSnorlaxEncounter: MysteryEncounter = }, ], }, - async (scene: BattleScene) => { + async () => { // Fall asleep waiting for Snorlax // Full heal party - scene.unshiftPhase(new PartyHealPhase(scene, true)); - queueEncounterMessage(scene, `${namespace}:option.2.rest_result`); - leaveEncounterWithoutBattle(scene); + globalScene.unshiftPhase(new PartyHealPhase(true)); + queueEncounterMessage(`${namespace}:option.2.rest_result`); + leaveEncounterWithoutBattle(); } ) .withOption( @@ -155,13 +158,13 @@ export const SlumberingSnorlaxEncounter: MysteryEncounter = } ] }) - .withOptionPhase(async (scene: BattleScene) => { + .withOptionPhase(async () => { // Steal the Snorlax's Leftovers - const instance = scene.currentBattle.mysteryEncounter!; - setEncounterRewards(scene, { guaranteedModifierTypeFuncs: [ modifierTypes.LEFTOVERS ], fillRemaining: false }); + const instance = globalScene.currentBattle.mysteryEncounter!; + setEncounterRewards({ guaranteedModifierTypeFuncs: [ modifierTypes.LEFTOVERS ], fillRemaining: false }); // Snorlax exp to Pokemon that did the stealing - setEncounterExp(scene, instance.primaryPokemon!.id, getPokemonSpecies(Species.SNORLAX).baseExp); - leaveEncounterWithoutBattle(scene); + setEncounterExp(instance.primaryPokemon!.id, getPokemonSpecies(Species.SNORLAX).baseExp); + leaveEncounterWithoutBattle(); }) .build() ) diff --git a/src/data/mystery-encounters/encounters/teleporting-hijinks-encounter.ts b/src/data/mystery-encounters/encounters/teleporting-hijinks-encounter.ts index 042e9278673..84768519bea 100644 --- a/src/data/mystery-encounters/encounters/teleporting-hijinks-encounter.ts +++ b/src/data/mystery-encounters/encounters/teleporting-hijinks-encounter.ts @@ -1,10 +1,13 @@ -import { EnemyPartyConfig, generateModifierTypeOption, initBattleWithEnemyConfig, setEncounterExp, setEncounterRewards, transitionMysteryEncounterIntroVisuals, updatePlayerMoney, } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import type { EnemyPartyConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import { generateModifierTypeOption, initBattleWithEnemyConfig, setEncounterExp, setEncounterRewards, transitionMysteryEncounterIntroVisuals, updatePlayerMoney, } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { randSeedInt } from "#app/utils"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import BattleScene from "#app/battle-scene"; -import MysteryEncounter, { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; +import { globalScene } from "#app/global-scene"; +import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; import { MoneyRequirement, WaveModulusRequirement } from "#app/data/mystery-encounters/mystery-encounter-requirements"; -import Pokemon, { EnemyPokemon } from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; +import { EnemyPokemon } from "#app/field/pokemon"; import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; import { queueEncounterMessage, showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; import PokemonData from "#app/system/pokemon-data"; @@ -62,9 +65,9 @@ export const TeleportingHijinksEncounter: MysteryEncounter = .withTitle(`${namespace}:title`) .withDescription(`${namespace}:description`) .withQuery(`${namespace}:query`) - .withOnInit((scene: BattleScene) => { - const encounter = scene.currentBattle.mysteryEncounter!; - const price = scene.getWaveMoneyAmount(MONEY_COST_MULTIPLIER); + .withOnInit(() => { + const encounter = globalScene.currentBattle.mysteryEncounter!; + const price = globalScene.getWaveMoneyAmount(MONEY_COST_MULTIPLIER); encounter.setDialogueToken("price", price.toString()); encounter.misc = { price @@ -85,14 +88,14 @@ export const TeleportingHijinksEncounter: MysteryEncounter = } ], }) - .withPreOptionPhase(async (scene: BattleScene) => { + .withPreOptionPhase(async () => { // Update money - updatePlayerMoney(scene, -scene.currentBattle.mysteryEncounter!.misc.price, true, false); + updatePlayerMoney(-globalScene.currentBattle.mysteryEncounter!.misc.price, true, false); }) - .withOptionPhase(async (scene: BattleScene) => { - const config: EnemyPartyConfig = await doBiomeTransitionDialogueAndBattleInit(scene); - setEncounterRewards(scene, { fillRemaining: true }); - await initBattleWithEnemyConfig(scene, config); + .withOptionPhase(async () => { + const config: EnemyPartyConfig = await doBiomeTransitionDialogueAndBattleInit(); + setEncounterRewards({ fillRemaining: true }); + await initBattleWithEnemyConfig(config); }) .build() ) @@ -110,11 +113,11 @@ export const TeleportingHijinksEncounter: MysteryEncounter = } ], }) - .withOptionPhase(async (scene: BattleScene) => { - const config: EnemyPartyConfig = await doBiomeTransitionDialogueAndBattleInit(scene); - setEncounterRewards(scene, { fillRemaining: true }); - setEncounterExp(scene, scene.currentBattle.mysteryEncounter!.selectedOption!.primaryPokemon!.id, 100); - await initBattleWithEnemyConfig(scene, config); + .withOptionPhase(async () => { + const config: EnemyPartyConfig = await doBiomeTransitionDialogueAndBattleInit(); + setEncounterRewards({ fillRemaining: true }); + setEncounterExp(globalScene.currentBattle.mysteryEncounter!.selectedOption!.primaryPokemon!.id, 100); + await initBattleWithEnemyConfig(config); }) .build() ) @@ -128,14 +131,14 @@ export const TeleportingHijinksEncounter: MysteryEncounter = }, ], }, - async (scene: BattleScene) => { + async () => { // Inspect the Machine - const encounter = scene.currentBattle.mysteryEncounter!; + const encounter = globalScene.currentBattle.mysteryEncounter!; // Init enemy - const level = getEncounterPokemonLevelForWave(scene, STANDARD_ENCOUNTER_BOOSTED_LEVEL_MODIFIER); - const bossSpecies = scene.arena.randomSpecies(scene.currentBattle.waveIndex, level, 0, getPartyLuckValue(scene.getPlayerParty()), true); - const bossPokemon = new EnemyPokemon(scene, bossSpecies, level, TrainerSlot.NONE, true); + const level = getEncounterPokemonLevelForWave(STANDARD_ENCOUNTER_BOOSTED_LEVEL_MODIFIER); + const bossSpecies = globalScene.arena.randomSpecies(globalScene.currentBattle.waveIndex, level, 0, getPartyLuckValue(globalScene.getPlayerParty()), true); + const bossPokemon = new EnemyPokemon(bossSpecies, level, TrainerSlot.NONE, true); encounter.setDialogueToken("enemyPokemon", getPokemonNameWithAffix(bossPokemon)); const config: EnemyPartyConfig = { pokemonConfigs: [{ @@ -146,36 +149,36 @@ export const TeleportingHijinksEncounter: MysteryEncounter = }], }; - const magnet = generateModifierTypeOption(scene, modifierTypes.ATTACK_TYPE_BOOSTER, [ Type.STEEL ])!; - const metalCoat = generateModifierTypeOption(scene, modifierTypes.ATTACK_TYPE_BOOSTER, [ Type.ELECTRIC ])!; - setEncounterRewards(scene, { guaranteedModifierTypeOptions: [ magnet, metalCoat ], fillRemaining: true }); - await transitionMysteryEncounterIntroVisuals(scene, true, true); - await initBattleWithEnemyConfig(scene, config); + const magnet = generateModifierTypeOption(modifierTypes.ATTACK_TYPE_BOOSTER, [ Type.STEEL ])!; + const metalCoat = generateModifierTypeOption(modifierTypes.ATTACK_TYPE_BOOSTER, [ Type.ELECTRIC ])!; + setEncounterRewards({ guaranteedModifierTypeOptions: [ magnet, metalCoat ], fillRemaining: true }); + await transitionMysteryEncounterIntroVisuals(true, true); + await initBattleWithEnemyConfig(config); } ) .build(); -async function doBiomeTransitionDialogueAndBattleInit(scene: BattleScene) { - const encounter = scene.currentBattle.mysteryEncounter!; +async function doBiomeTransitionDialogueAndBattleInit() { + const encounter = globalScene.currentBattle.mysteryEncounter!; // Calculate new biome (cannot be current biome) - const filteredBiomes = BIOME_CANDIDATES.filter(b => scene.arena.biomeType !== b); + const filteredBiomes = BIOME_CANDIDATES.filter(b => globalScene.arena.biomeType !== b); const newBiome = filteredBiomes[randSeedInt(filteredBiomes.length)]; // Show dialogue and transition biome - await showEncounterText(scene, `${namespace}:transport`); - await Promise.all([ animateBiomeChange(scene, newBiome), transitionMysteryEncounterIntroVisuals(scene) ]); - scene.playBgm(); - await showEncounterText(scene, `${namespace}:attacked`); + await showEncounterText(`${namespace}:transport`); + await Promise.all([ animateBiomeChange(newBiome), transitionMysteryEncounterIntroVisuals() ]); + globalScene.playBgm(); + await showEncounterText(`${namespace}:attacked`); // Init enemy - const level = getEncounterPokemonLevelForWave(scene, STANDARD_ENCOUNTER_BOOSTED_LEVEL_MODIFIER); - const bossSpecies = scene.arena.randomSpecies(scene.currentBattle.waveIndex, level, 0, getPartyLuckValue(scene.getPlayerParty()), true); - const bossPokemon = new EnemyPokemon(scene, bossSpecies, level, TrainerSlot.NONE, true); + const level = getEncounterPokemonLevelForWave(STANDARD_ENCOUNTER_BOOSTED_LEVEL_MODIFIER); + const bossSpecies = globalScene.arena.randomSpecies(globalScene.currentBattle.waveIndex, level, 0, getPartyLuckValue(globalScene.getPlayerParty()), true); + const bossPokemon = new EnemyPokemon(bossSpecies, level, TrainerSlot.NONE, true); encounter.setDialogueToken("enemyPokemon", getPokemonNameWithAffix(bossPokemon)); // Defense/Spd buffs below wave 50, +1 to all stats otherwise - const statChangesForBattle: (Stat.ATK | Stat.DEF | Stat.SPATK | Stat.SPDEF | Stat.SPD | Stat.ACC | Stat.EVA)[] = scene.currentBattle.waveIndex < 50 ? + const statChangesForBattle: (Stat.ATK | Stat.DEF | Stat.SPATK | Stat.SPDEF | Stat.SPD | Stat.ACC | Stat.EVA)[] = globalScene.currentBattle.waveIndex < 50 ? [ Stat.DEF, Stat.SPDEF, Stat.SPD ] : [ Stat.ATK, Stat.DEF, Stat.SPATK, Stat.SPDEF, Stat.SPD ]; @@ -187,8 +190,8 @@ async function doBiomeTransitionDialogueAndBattleInit(scene: BattleScene) { isBoss: true, tags: [ BattlerTagType.MYSTERY_ENCOUNTER_POST_SUMMON ], mysteryEncounterBattleEffects: (pokemon: Pokemon) => { - queueEncounterMessage(pokemon.scene, `${namespace}:boss_enraged`); - pokemon.scene.unshiftPhase(new StatStageChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, statChangesForBattle, 1)); + queueEncounterMessage(`${namespace}:boss_enraged`); + globalScene.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, statChangesForBattle, 1)); } }], }; @@ -196,46 +199,46 @@ async function doBiomeTransitionDialogueAndBattleInit(scene: BattleScene) { return config; } -async function animateBiomeChange(scene: BattleScene, nextBiome: Biome) { +async function animateBiomeChange(nextBiome: Biome) { return new Promise(resolve => { - scene.tweens.add({ - targets: [ scene.arenaEnemy, scene.lastEnemyTrainer ], + globalScene.tweens.add({ + targets: [ globalScene.arenaEnemy, globalScene.lastEnemyTrainer ], x: "+=300", duration: 2000, onComplete: () => { - scene.newArena(nextBiome); + globalScene.newArena(nextBiome); const biomeKey = getBiomeKey(nextBiome); const bgTexture = `${biomeKey}_bg`; - scene.arenaBgTransition.setTexture(bgTexture); - scene.arenaBgTransition.setAlpha(0); - scene.arenaBgTransition.setVisible(true); - scene.arenaPlayerTransition.setBiome(nextBiome); - scene.arenaPlayerTransition.setAlpha(0); - scene.arenaPlayerTransition.setVisible(true); + globalScene.arenaBgTransition.setTexture(bgTexture); + globalScene.arenaBgTransition.setAlpha(0); + globalScene.arenaBgTransition.setVisible(true); + globalScene.arenaPlayerTransition.setBiome(nextBiome); + globalScene.arenaPlayerTransition.setAlpha(0); + globalScene.arenaPlayerTransition.setVisible(true); - scene.tweens.add({ - targets: [ scene.arenaPlayer, scene.arenaBgTransition, scene.arenaPlayerTransition ], + globalScene.tweens.add({ + targets: [ globalScene.arenaPlayer, globalScene.arenaBgTransition, globalScene.arenaPlayerTransition ], duration: 1000, ease: "Sine.easeInOut", - alpha: (target: any) => target === scene.arenaPlayer ? 0 : 1, + alpha: (target: any) => target === globalScene.arenaPlayer ? 0 : 1, onComplete: () => { - scene.arenaBg.setTexture(bgTexture); - scene.arenaPlayer.setBiome(nextBiome); - scene.arenaPlayer.setAlpha(1); - scene.arenaEnemy.setBiome(nextBiome); - scene.arenaEnemy.setAlpha(1); - scene.arenaNextEnemy.setBiome(nextBiome); - scene.arenaBgTransition.setVisible(false); - scene.arenaPlayerTransition.setVisible(false); - if (scene.lastEnemyTrainer) { - scene.lastEnemyTrainer.destroy(); + globalScene.arenaBg.setTexture(bgTexture); + globalScene.arenaPlayer.setBiome(nextBiome); + globalScene.arenaPlayer.setAlpha(1); + globalScene.arenaEnemy.setBiome(nextBiome); + globalScene.arenaEnemy.setAlpha(1); + globalScene.arenaNextEnemy.setBiome(nextBiome); + globalScene.arenaBgTransition.setVisible(false); + globalScene.arenaPlayerTransition.setVisible(false); + if (globalScene.lastEnemyTrainer) { + globalScene.lastEnemyTrainer.destroy(); } resolve(); - scene.tweens.add({ - targets: scene.arenaEnemy, + globalScene.tweens.add({ + targets: globalScene.arenaEnemy, x: "-=300", }); } diff --git a/src/data/mystery-encounters/encounters/the-expert-pokemon-breeder-encounter.ts b/src/data/mystery-encounters/encounters/the-expert-pokemon-breeder-encounter.ts index 5ac9852f27a..702d8262cb6 100644 --- a/src/data/mystery-encounters/encounters/the-expert-pokemon-breeder-encounter.ts +++ b/src/data/mystery-encounters/encounters/the-expert-pokemon-breeder-encounter.ts @@ -1,9 +1,11 @@ -import { EnemyPartyConfig, generateModifierType, handleMysteryEncounterBattleFailed, initBattleWithEnemyConfig, setEncounterRewards, } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import type { EnemyPartyConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import { generateModifierType, handleMysteryEncounterBattleFailed, initBattleWithEnemyConfig, setEncounterRewards, } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { trainerConfigs } from "#app/data/trainer-config"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { randSeedShuffle } from "#app/utils"; -import MysteryEncounter, { MysteryEncounterBuilder } from "../mystery-encounter"; +import type MysteryEncounter from "../mystery-encounter"; +import { MysteryEncounterBuilder } from "../mystery-encounter"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/game-mode"; import { Biome } from "#enums/biome"; @@ -14,17 +16,18 @@ import { getPokemonSpecies } from "#app/data/pokemon-species"; import { speciesStarterCosts } from "#app/data/balance/starters"; import { Nature } from "#enums/nature"; import { Moves } from "#enums/moves"; -import { PlayerPokemon } from "#app/field/pokemon"; +import type { PlayerPokemon } from "#app/field/pokemon"; import { getEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; -import { IEggOptions } from "#app/data/egg"; +import type { IEggOptions } from "#app/data/egg"; import { EggSourceType } from "#enums/egg-source-types"; import { EggTier } from "#enums/egg-type"; import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import { modifierTypes, PokemonHeldItemModifierType } from "#app/modifier/modifier-type"; +import type { PokemonHeldItemModifierType } from "#app/modifier/modifier-type"; +import { modifierTypes } from "#app/modifier/modifier-type"; import { Type } from "#enums/type"; import { getPokeballTintColor } from "#app/data/pokeball"; -import { PokemonHeldItemModifier } from "#app/modifier/modifier"; +import type { PokemonHeldItemModifier } from "#app/modifier/modifier"; /** the i18n namespace for the encounter */ const namespace = "mysteryEncounters/theExpertPokemonBreeder"; @@ -93,14 +96,14 @@ export const TheExpertPokemonBreederEncounter: MysteryEncounter = text: `${namespace}:intro_dialogue`, }, ]) - .withOnInit((scene: BattleScene) => { - const encounter = scene.currentBattle.mysteryEncounter!; - const waveIndex = scene.currentBattle.waveIndex; + .withOnInit(() => { + const encounter = globalScene.currentBattle.mysteryEncounter!; + const waveIndex = globalScene.currentBattle.waveIndex; // Calculates what trainers are available for battle in the encounter // If player is in space biome, uses special "Space" version of the trainer encounter.enemyPartyConfigs = [ - getPartyConfig(scene) + getPartyConfig() ]; const cleffaSpecies = waveIndex < FIRST_STAGE_EVOLUTION_WAVE ? Species.CLEFFA : waveIndex < FINAL_STAGE_EVOLUTION_WAVE ? Species.CLEFAIRY : Species.CLEFABLE; @@ -125,7 +128,7 @@ export const TheExpertPokemonBreederEncounter: MysteryEncounter = ]; // Determine the 3 pokemon the player can battle with - let partyCopy = scene.getPlayerParty().slice(0); + let partyCopy = globalScene.getPlayerParty().slice(0); partyCopy = partyCopy .filter(p => p.isAllowedInBattle()) .sort((a, b) => a.friendship - b.friendship); @@ -139,7 +142,7 @@ export const TheExpertPokemonBreederEncounter: MysteryEncounter = // Dialogue and egg calcs for Pokemon 1 const [ pokemon1CommonEggs, pokemon1RareEggs ] = calculateEggRewardsForPokemon(pokemon1); - let pokemon1Tooltip = getEncounterText(scene, `${namespace}:option.1.tooltip_base`)!; + let pokemon1Tooltip = getEncounterText(`${namespace}:option.1.tooltip_base`)!; if (pokemon1RareEggs > 0) { const eggsText = i18next.t(`${namespace}:numEggs`, { count: pokemon1RareEggs, rarity: i18next.t("egg:greatTier") }); pokemon1Tooltip += i18next.t(`${namespace}:eggs_tooltip`, { eggs: eggsText }); @@ -154,7 +157,7 @@ export const TheExpertPokemonBreederEncounter: MysteryEncounter = // Dialogue and egg calcs for Pokemon 2 const [ pokemon2CommonEggs, pokemon2RareEggs ] = calculateEggRewardsForPokemon(pokemon2); - let pokemon2Tooltip = getEncounterText(scene, `${namespace}:option.2.tooltip_base`)!; + let pokemon2Tooltip = getEncounterText(`${namespace}:option.2.tooltip_base`)!; if (pokemon2RareEggs > 0) { const eggsText = i18next.t(`${namespace}:numEggs`, { count: pokemon2RareEggs, rarity: i18next.t("egg:greatTier") }); pokemon2Tooltip += i18next.t(`${namespace}:eggs_tooltip`, { eggs: eggsText }); @@ -169,7 +172,7 @@ export const TheExpertPokemonBreederEncounter: MysteryEncounter = // Dialogue and egg calcs for Pokemon 3 const [ pokemon3CommonEggs, pokemon3RareEggs ] = calculateEggRewardsForPokemon(pokemon3); - let pokemon3Tooltip = getEncounterText(scene, `${namespace}:option.3.tooltip_base`)!; + let pokemon3Tooltip = getEncounterText(`${namespace}:option.3.tooltip_base`)!; if (pokemon3RareEggs > 0) { const eggsText = i18next.t(`${namespace}:numEggs`, { count: pokemon3RareEggs, rarity: i18next.t("egg:greatTier") }); pokemon3Tooltip += i18next.t(`${namespace}:eggs_tooltip`, { eggs: eggsText }); @@ -212,22 +215,22 @@ export const TheExpertPokemonBreederEncounter: MysteryEncounter = }, ], }) - .withOptionPhase(async (scene: BattleScene) => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withOptionPhase(async () => { + const encounter = globalScene.currentBattle.mysteryEncounter!; // Spawn battle with first pokemon const config: EnemyPartyConfig = encounter.enemyPartyConfigs[0]; const { pokemon1, pokemon1CommonEggs, pokemon1RareEggs } = encounter.misc; encounter.misc.chosenPokemon = pokemon1; encounter.setDialogueToken("chosenPokemon", pokemon1.getNameToRender()); - const eggOptions = getEggOptions(scene, pokemon1CommonEggs, pokemon1RareEggs); - setEncounterRewards(scene, + const eggOptions = getEggOptions(pokemon1CommonEggs, pokemon1RareEggs); + setEncounterRewards( { guaranteedModifierTypeFuncs: [ modifierTypes.SOOTHE_BELL ], fillRemaining: true }, eggOptions, - () => doPostEncounterCleanup(scene)); + () => doPostEncounterCleanup()); // Remove all Pokemon from the party except the chosen Pokemon - removePokemonFromPartyAndStoreHeldItems(scene, encounter, pokemon1); + removePokemonFromPartyAndStoreHeldItems(encounter, pokemon1); // Configure outro dialogue for egg rewards encounter.dialogue.outro = [ @@ -248,7 +251,7 @@ export const TheExpertPokemonBreederEncounter: MysteryEncounter = } encounter.onGameOver = onGameOver; - await initBattleWithEnemyConfig(scene, config); + await initBattleWithEnemyConfig(config); }) .build() ) @@ -264,22 +267,22 @@ export const TheExpertPokemonBreederEncounter: MysteryEncounter = }, ], }) - .withOptionPhase(async (scene: BattleScene) => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withOptionPhase(async () => { + const encounter = globalScene.currentBattle.mysteryEncounter!; // Spawn battle with second pokemon const config: EnemyPartyConfig = encounter.enemyPartyConfigs[0]; const { pokemon2, pokemon2CommonEggs, pokemon2RareEggs } = encounter.misc; encounter.misc.chosenPokemon = pokemon2; encounter.setDialogueToken("chosenPokemon", pokemon2.getNameToRender()); - const eggOptions = getEggOptions(scene, pokemon2CommonEggs, pokemon2RareEggs); - setEncounterRewards(scene, + const eggOptions = getEggOptions(pokemon2CommonEggs, pokemon2RareEggs); + setEncounterRewards( { guaranteedModifierTypeFuncs: [ modifierTypes.SOOTHE_BELL ], fillRemaining: true }, eggOptions, - () => doPostEncounterCleanup(scene)); + () => doPostEncounterCleanup()); // Remove all Pokemon from the party except the chosen Pokemon - removePokemonFromPartyAndStoreHeldItems(scene, encounter, pokemon2); + removePokemonFromPartyAndStoreHeldItems(encounter, pokemon2); // Configure outro dialogue for egg rewards encounter.dialogue.outro = [ @@ -300,7 +303,7 @@ export const TheExpertPokemonBreederEncounter: MysteryEncounter = } encounter.onGameOver = onGameOver; - await initBattleWithEnemyConfig(scene, config); + await initBattleWithEnemyConfig(config); }) .build() ) @@ -316,22 +319,22 @@ export const TheExpertPokemonBreederEncounter: MysteryEncounter = }, ], }) - .withOptionPhase(async (scene: BattleScene) => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withOptionPhase(async () => { + const encounter = globalScene.currentBattle.mysteryEncounter!; // Spawn battle with third pokemon const config: EnemyPartyConfig = encounter.enemyPartyConfigs[0]; const { pokemon3, pokemon3CommonEggs, pokemon3RareEggs } = encounter.misc; encounter.misc.chosenPokemon = pokemon3; encounter.setDialogueToken("chosenPokemon", pokemon3.getNameToRender()); - const eggOptions = getEggOptions(scene, pokemon3CommonEggs, pokemon3RareEggs); - setEncounterRewards(scene, + const eggOptions = getEggOptions(pokemon3CommonEggs, pokemon3RareEggs); + setEncounterRewards( { guaranteedModifierTypeFuncs: [ modifierTypes.SOOTHE_BELL ], fillRemaining: true }, eggOptions, - () => doPostEncounterCleanup(scene)); + () => doPostEncounterCleanup()); // Remove all Pokemon from the party except the chosen Pokemon - removePokemonFromPartyAndStoreHeldItems(scene, encounter, pokemon3); + removePokemonFromPartyAndStoreHeldItems(encounter, pokemon3); // Configure outro dialogue for egg rewards encounter.dialogue.outro = [ @@ -352,7 +355,7 @@ export const TheExpertPokemonBreederEncounter: MysteryEncounter = } encounter.onGameOver = onGameOver; - await initBattleWithEnemyConfig(scene, config); + await initBattleWithEnemyConfig(config); }) .build() ) @@ -364,9 +367,9 @@ export const TheExpertPokemonBreederEncounter: MysteryEncounter = ]) .build(); -function getPartyConfig(scene: BattleScene): EnemyPartyConfig { +function getPartyConfig(): EnemyPartyConfig { // Bug type superfan trainer config - const waveIndex = scene.currentBattle.waveIndex; + const waveIndex = globalScene.currentBattle.waveIndex; const breederConfig = trainerConfigs[TrainerType.EXPERT_POKEMON_BREEDER].clone(); breederConfig.name = i18next.t(trainerNameKey); @@ -386,14 +389,14 @@ function getPartyConfig(scene: BattleScene): EnemyPartyConfig { ivs: [ 31, 31, 31, 31, 31, 31 ], modifierConfigs: [ { - modifier: generateModifierType(scene, modifierTypes.TERA_SHARD, [ Type.STEEL ]) as PokemonHeldItemModifierType, + modifier: generateModifierType(modifierTypes.TERA_SHARD, [ Type.STEEL ]) as PokemonHeldItemModifierType, } ] } ] }; - if (scene.arena.biomeType === Biome.SPACE) { + if (globalScene.arena.biomeType === Biome.SPACE) { // All 3 members always Cleffa line, but different configs baseConfig.pokemonConfigs!.push({ nickname: i18next.t(`${namespace}:cleffa_2_nickname`, { speciesName: getPokemonSpecies(cleffaSpecies).getName() }), @@ -476,14 +479,13 @@ function calculateEggRewardsForPokemon(pokemon: PlayerPokemon): [number, number] return [ numCommons, numRares ]; } -function getEggOptions(scene: BattleScene, commonEggs: number, rareEggs: number) { +function getEggOptions(commonEggs: number, rareEggs: number) { const eggDescription = i18next.t(`${namespace}:title`) + ":\n" + i18next.t(trainerNameKey); const eggOptions: IEggOptions[] = []; if (commonEggs > 0) { for (let i = 0; i < commonEggs; i++) { eggOptions.push({ - scene, pulled: false, sourceType: EggSourceType.EVENT, eggDescriptor: eggDescription, @@ -494,7 +496,6 @@ function getEggOptions(scene: BattleScene, commonEggs: number, rareEggs: number) if (rareEggs > 0) { for (let i = 0; i < rareEggs; i++) { eggOptions.push({ - scene, pulled: false, sourceType: EggSourceType.EVENT, eggDescriptor: eggDescription, @@ -506,36 +507,36 @@ function getEggOptions(scene: BattleScene, commonEggs: number, rareEggs: number) return eggOptions; } -function removePokemonFromPartyAndStoreHeldItems(scene: BattleScene, encounter: MysteryEncounter, chosenPokemon: PlayerPokemon) { - const party = scene.getPlayerParty(); +function removePokemonFromPartyAndStoreHeldItems(encounter: MysteryEncounter, chosenPokemon: PlayerPokemon) { + const party = globalScene.getPlayerParty(); const chosenIndex = party.indexOf(chosenPokemon); party[chosenIndex] = party[0]; party[0] = chosenPokemon; - encounter.misc.originalParty = scene.getPlayerParty().slice(1); + encounter.misc.originalParty = globalScene.getPlayerParty().slice(1); encounter.misc.originalPartyHeldItems = encounter.misc.originalParty .map(p => p.getHeldItems()); - scene["party"] = [ + globalScene["party"] = [ chosenPokemon ]; } -function restorePartyAndHeldItems(scene: BattleScene) { - const encounter = scene.currentBattle.mysteryEncounter!; +function restorePartyAndHeldItems() { + const encounter = globalScene.currentBattle.mysteryEncounter!; // Restore original party - scene.getPlayerParty().push(...encounter.misc.originalParty); + globalScene.getPlayerParty().push(...encounter.misc.originalParty); // Restore held items const originalHeldItems = encounter.misc.originalPartyHeldItems; originalHeldItems.forEach((pokemonHeldItemsList: PokemonHeldItemModifier[]) => { pokemonHeldItemsList.forEach(heldItem => { - scene.addModifier(heldItem, true, false, false, true); + globalScene.addModifier(heldItem, true, false, false, true); }); }); - scene.updateModifiers(true); + globalScene.updateModifiers(true); } -function onGameOver(scene: BattleScene) { - const encounter = scene.currentBattle.mysteryEncounter!; +function onGameOver() { + const encounter = globalScene.currentBattle.mysteryEncounter!; encounter.dialogue.outro = [ { @@ -545,7 +546,7 @@ function onGameOver(scene: BattleScene) { ]; // Restore original party, player loses all friendship with chosen mon (it remains fainted) - restorePartyAndHeldItems(scene); + restorePartyAndHeldItems(); const chosenPokemon = encounter.misc.chosenPokemon; chosenPokemon.friendship = 0; @@ -556,33 +557,33 @@ function onGameOver(scene: BattleScene) { encounter.misc.encounterFailed = true; // Revert BGM - scene.playBgm(scene.arena.bgm); + globalScene.playBgm(globalScene.arena.bgm); // Clear any leftover battle phases - scene.clearPhaseQueue(); - scene.clearPhaseQueueSplice(); + globalScene.clearPhaseQueue(); + globalScene.clearPhaseQueueSplice(); // Return enemy Pokemon - const pokemon = scene.getEnemyPokemon(); + const pokemon = globalScene.getEnemyPokemon(); if (pokemon) { - scene.playSound("se/pb_rel"); + globalScene.playSound("se/pb_rel"); pokemon.hideInfo(); pokemon.tint(getPokeballTintColor(pokemon.pokeball), 1, 250, "Sine.easeIn"); - scene.tweens.add({ + globalScene.tweens.add({ targets: pokemon, duration: 250, ease: "Sine.easeIn", scale: 0.5, onComplete: () => { - scene.field.remove(pokemon, true); + globalScene.field.remove(pokemon, true); } }); } // Show the enemy trainer - scene.time.delayedCall(250, () => { - const sprites = scene.currentBattle.trainer?.getSprites(); - const tintSprites = scene.currentBattle.trainer?.getTintSprites(); + globalScene.time.delayedCall(250, () => { + const sprites = globalScene.currentBattle.trainer?.getSprites(); + const tintSprites = globalScene.currentBattle.trainer?.getTintSprites(); if (sprites && tintSprites) { for (let i = 0; i < sprites.length; i++) { sprites[i].setVisible(true); @@ -591,8 +592,8 @@ function onGameOver(scene: BattleScene) { tintSprites[i].clearTint(); } } - scene.tweens.add({ - targets: scene.currentBattle.trainer, + globalScene.tweens.add({ + targets: globalScene.currentBattle.trainer, x: "-=16", y: "+=16", alpha: 1, @@ -602,16 +603,16 @@ function onGameOver(scene: BattleScene) { }); - handleMysteryEncounterBattleFailed(scene, true); + handleMysteryEncounterBattleFailed(true); return false; } -function doPostEncounterCleanup(scene: BattleScene) { - const encounter = scene.currentBattle.mysteryEncounter!; +function doPostEncounterCleanup() { + const encounter = globalScene.currentBattle.mysteryEncounter!; if (!encounter.misc.encounterFailed) { // Give 20 friendship to the chosen pokemon encounter.misc.chosenPokemon.addFriendship(FRIENDSHIP_ADDED); - restorePartyAndHeldItems(scene); + restorePartyAndHeldItems(); } } diff --git a/src/data/mystery-encounters/encounters/the-pokemon-salesman-encounter.ts b/src/data/mystery-encounters/encounters/the-pokemon-salesman-encounter.ts index feb6e68d1d1..ff4dd9750c9 100644 --- a/src/data/mystery-encounters/encounters/the-pokemon-salesman-encounter.ts +++ b/src/data/mystery-encounters/encounters/the-pokemon-salesman-encounter.ts @@ -1,15 +1,18 @@ import { leaveEncounterWithoutBattle, transitionMysteryEncounterIntroVisuals, updatePlayerMoney, } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { isNullOrUndefined, randSeedInt } from "#app/utils"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import BattleScene from "#app/battle-scene"; -import MysteryEncounter, { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; +import { globalScene } from "#app/global-scene"; +import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; import { MoneyRequirement } from "#app/data/mystery-encounters/mystery-encounter-requirements"; import { catchPokemon, getRandomSpeciesByStarterCost, getSpriteKeysFromPokemon } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; -import PokemonSpecies, { getPokemonSpecies } from "#app/data/pokemon-species"; +import type PokemonSpecies from "#app/data/pokemon-species"; +import { getPokemonSpecies } from "#app/data/pokemon-species"; import { speciesStarterCosts } from "#app/data/balance/starters"; import { Species } from "#enums/species"; import { PokeballType } from "#enums/pokeball"; -import { EnemyPokemon, PlayerPokemon } from "#app/field/pokemon"; +import type { EnemyPokemon } from "#app/field/pokemon"; +import { PlayerPokemon } from "#app/field/pokemon"; import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; import { showEncounterDialogue } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; import PokemonData from "#app/system/pokemon-data"; @@ -58,8 +61,8 @@ export const ThePokemonSalesmanEncounter: MysteryEncounter = .withTitle(`${namespace}:title`) .withDescription(`${namespace}:description`) .withQuery(`${namespace}:query`) - .withOnInit((scene: BattleScene) => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withOnInit(() => { + const encounter = globalScene.currentBattle.mysteryEncounter!; let species = getSalesmanSpeciesOffer(); let tries = 0; @@ -74,9 +77,9 @@ export const ThePokemonSalesmanEncounter: MysteryEncounter = if (randSeedInt(SHINY_MAGIKARP_WEIGHT) === 0 || isNullOrUndefined(species.abilityHidden) || species.abilityHidden === Abilities.NONE) { // If no HA mon found or you roll 1%, give shiny Magikarp with random variant species = getPokemonSpecies(Species.MAGIKARP); - pokemon = new PlayerPokemon(scene, species, 5, 2, species.formIndex, undefined, true); + pokemon = new PlayerPokemon(species, 5, 2, species.formIndex, undefined, true); } else { - pokemon = new PlayerPokemon(scene, species, 5, 2, species.formIndex); + pokemon = new PlayerPokemon(species, 5, 2, species.formIndex); } pokemon.generateAndPopulateMoveset(); @@ -101,7 +104,7 @@ export const ThePokemonSalesmanEncounter: MysteryEncounter = encounter.dialogue.encounterOptionsDialogue!.description = `${namespace}:description_shiny`; encounter.options[0].dialogue!.buttonTooltip = `${namespace}:option.1.tooltip_shiny`; } - const price = scene.getWaveMoneyAmount(priceMultiplier); + const price = globalScene.getWaveMoneyAmount(priceMultiplier); encounter.setDialogueToken("purchasePokemon", pokemon.getNameToRender()); encounter.setDialogueToken("price", price.toString()); encounter.misc = { @@ -127,24 +130,24 @@ export const ThePokemonSalesmanEncounter: MysteryEncounter = } ], }) - .withOptionPhase(async (scene: BattleScene) => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withOptionPhase(async () => { + const encounter = globalScene.currentBattle.mysteryEncounter!; const price = encounter.misc.price; const purchasedPokemon = encounter.misc.pokemon as PlayerPokemon; // Update money - updatePlayerMoney(scene, -price, true, false); + updatePlayerMoney(-price, true, false); // Show dialogue - await showEncounterDialogue(scene, `${namespace}:option.1.selected_dialogue`, `${namespace}:speaker`); - await transitionMysteryEncounterIntroVisuals(scene); + await showEncounterDialogue(`${namespace}:option.1.selected_dialogue`, `${namespace}:speaker`); + await transitionMysteryEncounterIntroVisuals(); // "Catch" purchased pokemon const data = new PokemonData(purchasedPokemon); data.player = false; - await catchPokemon(scene, data.toPokemon(scene) as EnemyPokemon, null, PokeballType.POKEBALL, true, true); + await catchPokemon(data.toPokemon() as EnemyPokemon, null, PokeballType.POKEBALL, true, true); - leaveEncounterWithoutBattle(scene, true); + leaveEncounterWithoutBattle(true); }) .build() ) @@ -158,9 +161,9 @@ export const ThePokemonSalesmanEncounter: MysteryEncounter = }, ], }, - async (scene: BattleScene) => { + async () => { // Leave encounter with no rewards or exp - leaveEncounterWithoutBattle(scene, true); + leaveEncounterWithoutBattle(true); return true; } ) diff --git a/src/data/mystery-encounters/encounters/the-strong-stuff-encounter.ts b/src/data/mystery-encounters/encounters/the-strong-stuff-encounter.ts index c5cfd3f954e..6748d133d67 100644 --- a/src/data/mystery-encounters/encounters/the-strong-stuff-encounter.ts +++ b/src/data/mystery-encounters/encounters/the-strong-stuff-encounter.ts @@ -1,12 +1,16 @@ -import { EnemyPartyConfig, initBattleWithEnemyConfig, loadCustomMovesForEncounter, leaveEncounterWithoutBattle, setEncounterRewards, transitionMysteryEncounterIntroVisuals, generateModifierType } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { modifierTypes, PokemonHeldItemModifierType, } from "#app/modifier/modifier-type"; +import type { EnemyPartyConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import { initBattleWithEnemyConfig, loadCustomMovesForEncounter, leaveEncounterWithoutBattle, setEncounterRewards, transitionMysteryEncounterIntroVisuals, generateModifierType } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import type { PokemonHeldItemModifierType } from "#app/modifier/modifier-type"; +import { modifierTypes } from "#app/modifier/modifier-type"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import BattleScene from "#app/battle-scene"; -import MysteryEncounter, { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; +import { globalScene } from "#app/global-scene"; +import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; import { getPokemonSpecies } from "#app/data/pokemon-species"; import { Species } from "#enums/species"; import { Nature } from "#enums/nature"; -import Pokemon, { PokemonMove } from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; +import { PokemonMove } from "#app/field/pokemon"; import { queueEncounterMessage, showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; import { modifyPlayerPokemonBST } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; import { Moves } from "#enums/moves"; @@ -67,8 +71,8 @@ export const TheStrongStuffEncounter: MysteryEncounter = text: `${namespace}:intro`, }, ]) - .withOnInit((scene: BattleScene) => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withOnInit(() => { + const encounter = globalScene.currentBattle.mysteryEncounter!; // Calculate boss mon const config: EnemyPartyConfig = { @@ -85,26 +89,26 @@ export const TheStrongStuffEncounter: MysteryEncounter = moveSet: [ Moves.INFESTATION, Moves.SALT_CURE, Moves.GASTRO_ACID, Moves.HEAL_ORDER ], modifierConfigs: [ { - modifier: generateModifierType(scene, modifierTypes.BERRY, [ BerryType.SITRUS ]) as PokemonHeldItemModifierType + modifier: generateModifierType(modifierTypes.BERRY, [ BerryType.SITRUS ]) as PokemonHeldItemModifierType }, { - modifier: generateModifierType(scene, modifierTypes.BERRY, [ BerryType.ENIGMA ]) as PokemonHeldItemModifierType + modifier: generateModifierType(modifierTypes.BERRY, [ BerryType.ENIGMA ]) as PokemonHeldItemModifierType }, { - modifier: generateModifierType(scene, modifierTypes.BERRY, [ BerryType.APICOT ]) as PokemonHeldItemModifierType + modifier: generateModifierType(modifierTypes.BERRY, [ BerryType.APICOT ]) as PokemonHeldItemModifierType }, { - modifier: generateModifierType(scene, modifierTypes.BERRY, [ BerryType.GANLON ]) as PokemonHeldItemModifierType + modifier: generateModifierType(modifierTypes.BERRY, [ BerryType.GANLON ]) as PokemonHeldItemModifierType }, { - modifier: generateModifierType(scene, modifierTypes.BERRY, [ BerryType.LUM ]) as PokemonHeldItemModifierType, + modifier: generateModifierType(modifierTypes.BERRY, [ BerryType.LUM ]) as PokemonHeldItemModifierType, stackCount: 2 } ], tags: [ BattlerTagType.MYSTERY_ENCOUNTER_POST_SUMMON ], mysteryEncounterBattleEffects: (pokemon: Pokemon) => { - queueEncounterMessage(pokemon.scene, `${namespace}:option.2.stat_boost`); - pokemon.scene.unshiftPhase(new StatStageChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [ Stat.DEF, Stat.SPDEF ], 2)); + queueEncounterMessage(`${namespace}:option.2.stat_boost`); + globalScene.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, [ Stat.DEF, Stat.SPDEF ], 2)); } } ], @@ -112,7 +116,7 @@ export const TheStrongStuffEncounter: MysteryEncounter = encounter.enemyPartyConfigs = [ config ]; - loadCustomMovesForEncounter(scene, [ Moves.GASTRO_ACID, Moves.STEALTH_ROCK ]); + loadCustomMovesForEncounter([ Moves.GASTRO_ACID, Moves.STEALTH_ROCK ]); encounter.setDialogueToken("shuckleName", getPokemonSpecies(Species.SHUCKLE).getName()); @@ -132,16 +136,16 @@ export const TheStrongStuffEncounter: MysteryEncounter = } ] }, - async (scene: BattleScene) => { - const encounter = scene.currentBattle.mysteryEncounter!; + async () => { + const encounter = globalScene.currentBattle.mysteryEncounter!; // Do blackout and hide intro visuals during blackout - scene.time.delayedCall(750, () => { - transitionMysteryEncounterIntroVisuals(scene, true, true, 50); + globalScene.time.delayedCall(750, () => { + transitionMysteryEncounterIntroVisuals(true, true, 50); }); // -15 to all base stats of highest BST (halved for HP), +10 to all base stats of rest of party (halved for HP) // Sort party by bst - const sortedParty = scene.getPlayerParty().slice(0) + const sortedParty = globalScene.getPlayerParty().slice(0) .sort((pokemon1, pokemon2) => { const pokemon1Bst = pokemon1.calculateBaseStats().reduce((a, b) => a + b, 0); const pokemon2Bst = pokemon2.calculateBaseStats().reduce((a, b) => a + b, 0); @@ -161,15 +165,15 @@ export const TheStrongStuffEncounter: MysteryEncounter = encounter.setDialogueToken("reductionValue", HIGH_BST_REDUCTION_VALUE.toString()); encounter.setDialogueToken("increaseValue", BST_INCREASE_VALUE.toString()); - await showEncounterText(scene, `${namespace}:option.1.selected_2`, null, undefined, true); + await showEncounterText(`${namespace}:option.1.selected_2`, null, undefined, true); encounter.dialogue.outro = [ { text: `${namespace}:outro`, } ]; - setEncounterRewards(scene, { fillRemaining: true }); - leaveEncounterWithoutBattle(scene, true); + setEncounterRewards({ fillRemaining: true }); + leaveEncounterWithoutBattle(true); return true; } ) @@ -183,10 +187,10 @@ export const TheStrongStuffEncounter: MysteryEncounter = }, ], }, - async (scene: BattleScene) => { + async () => { // Pick battle - const encounter = scene.currentBattle.mysteryEncounter!; - setEncounterRewards(scene, { guaranteedModifierTypeFuncs: [ modifierTypes.SOUL_DEW ], fillRemaining: true }); + const encounter = globalScene.currentBattle.mysteryEncounter!; + setEncounterRewards({ guaranteedModifierTypeFuncs: [ modifierTypes.SOUL_DEW ], fillRemaining: true }); encounter.startOfBattleEffects.push( { sourceBattlerIndex: BattlerIndex.ENEMY, @@ -202,8 +206,8 @@ export const TheStrongStuffEncounter: MysteryEncounter = }); encounter.dialogue.outro = []; - await transitionMysteryEncounterIntroVisuals(scene, true, true, 500); - await initBattleWithEnemyConfig(scene, encounter.enemyPartyConfigs[0]); + await transitionMysteryEncounterIntroVisuals(true, true, 500); + await initBattleWithEnemyConfig(encounter.enemyPartyConfigs[0]); } ) .build(); diff --git a/src/data/mystery-encounters/encounters/the-winstrate-challenge-encounter.ts b/src/data/mystery-encounters/encounters/the-winstrate-challenge-encounter.ts index f4446241873..d0a44504763 100644 --- a/src/data/mystery-encounters/encounters/the-winstrate-challenge-encounter.ts +++ b/src/data/mystery-encounters/encounters/the-winstrate-challenge-encounter.ts @@ -1,8 +1,11 @@ -import { EnemyPartyConfig, generateModifierType, generateModifierTypeOption, initBattleWithEnemyConfig, leaveEncounterWithoutBattle, setEncounterRewards, transitionMysteryEncounterIntroVisuals, } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { modifierTypes, PokemonHeldItemModifierType } from "#app/modifier/modifier-type"; +import type { EnemyPartyConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import { generateModifierType, generateModifierTypeOption, initBattleWithEnemyConfig, leaveEncounterWithoutBattle, setEncounterRewards, transitionMysteryEncounterIntroVisuals, } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import type { PokemonHeldItemModifierType } from "#app/modifier/modifier-type"; +import { modifierTypes } from "#app/modifier/modifier-type"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import BattleScene from "#app/battle-scene"; -import MysteryEncounter, { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; +import { globalScene } from "#app/global-scene"; +import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { TrainerType } from "#enums/trainer-type"; import { Species } from "#enums/species"; @@ -83,15 +86,15 @@ export const TheWinstrateChallengeEncounter: MysteryEncounter = }, ]) .withAutoHideIntroVisuals(false) - .withOnInit((scene: BattleScene) => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withOnInit(() => { + const encounter = globalScene.currentBattle.mysteryEncounter!; // Loaded back to front for pop() operations - encounter.enemyPartyConfigs.push(getVitoTrainerConfig(scene)); - encounter.enemyPartyConfigs.push(getVickyTrainerConfig(scene)); - encounter.enemyPartyConfigs.push(getViviTrainerConfig(scene)); - encounter.enemyPartyConfigs.push(getVictoriaTrainerConfig(scene)); - encounter.enemyPartyConfigs.push(getVictorTrainerConfig(scene)); + encounter.enemyPartyConfigs.push(getVitoTrainerConfig()); + encounter.enemyPartyConfigs.push(getVickyTrainerConfig()); + encounter.enemyPartyConfigs.push(getViviTrainerConfig()); + encounter.enemyPartyConfigs.push(getVictoriaTrainerConfig()); + encounter.enemyPartyConfigs.push(getVictorTrainerConfig()); return true; }) @@ -110,13 +113,13 @@ export const TheWinstrateChallengeEncounter: MysteryEncounter = }, ], }, - async (scene: BattleScene) => { + async () => { // Spawn 5 trainer battles back to back with Macho Brace in rewards - scene.currentBattle.mysteryEncounter!.doContinueEncounter = async (scene: BattleScene) => { - await endTrainerBattleAndShowDialogue(scene); + globalScene.currentBattle.mysteryEncounter!.doContinueEncounter = async () => { + await endTrainerBattleAndShowDialogue(); }; - await transitionMysteryEncounterIntroVisuals(scene, true, false); - await spawnNextTrainerOrEndEncounter(scene); + await transitionMysteryEncounterIntroVisuals(true, false); + await spawnNextTrainerOrEndEncounter(); } ) .withSimpleOption( @@ -130,47 +133,47 @@ export const TheWinstrateChallengeEncounter: MysteryEncounter = }, ], }, - async (scene: BattleScene) => { + async () => { // Refuse the challenge, they full heal the party and give the player a Rarer Candy - scene.unshiftPhase(new PartyHealPhase(scene, true)); - setEncounterRewards(scene, { guaranteedModifierTypeFuncs: [ modifierTypes.RARER_CANDY ], fillRemaining: false }); - leaveEncounterWithoutBattle(scene); + globalScene.unshiftPhase(new PartyHealPhase(true)); + setEncounterRewards({ guaranteedModifierTypeFuncs: [ modifierTypes.RARER_CANDY ], fillRemaining: false }); + leaveEncounterWithoutBattle(); } ) .build(); -async function spawnNextTrainerOrEndEncounter(scene: BattleScene) { - const encounter = scene.currentBattle.mysteryEncounter!; +async function spawnNextTrainerOrEndEncounter() { + const encounter = globalScene.currentBattle.mysteryEncounter!; const nextConfig = encounter.enemyPartyConfigs.pop(); if (!nextConfig) { - await transitionMysteryEncounterIntroVisuals(scene, false, false); - await showEncounterDialogue(scene, `${namespace}:victory`, `${namespace}:speaker`); + await transitionMysteryEncounterIntroVisuals(false, false); + await showEncounterDialogue(`${namespace}:victory`, `${namespace}:speaker`); // Give 10x Voucher const newModifier = modifierTypes.VOUCHER_PREMIUM().newModifier(); - await scene.addModifier(newModifier); - scene.playSound("item_fanfare"); - await showEncounterText(scene, i18next.t("battle:rewardGain", { modifierName: newModifier?.type.name })); + await globalScene.addModifier(newModifier); + globalScene.playSound("item_fanfare"); + await showEncounterText(i18next.t("battle:rewardGain", { modifierName: newModifier?.type.name })); - await showEncounterDialogue(scene, `${namespace}:victory_2`, `${namespace}:speaker`); - scene.ui.clearText(); // Clears "Winstrate" title from screen as rewards get animated in - const machoBrace = generateModifierTypeOption(scene, modifierTypes.MYSTERY_ENCOUNTER_MACHO_BRACE)!; + await showEncounterDialogue(`${namespace}:victory_2`, `${namespace}:speaker`); + globalScene.ui.clearText(); // Clears "Winstrate" title from screen as rewards get animated in + const machoBrace = generateModifierTypeOption(modifierTypes.MYSTERY_ENCOUNTER_MACHO_BRACE)!; machoBrace.type.tier = ModifierTier.MASTER; - setEncounterRewards(scene, { guaranteedModifierTypeOptions: [ machoBrace ], fillRemaining: false }); + setEncounterRewards({ guaranteedModifierTypeOptions: [ machoBrace ], fillRemaining: false }); encounter.doContinueEncounter = undefined; - leaveEncounterWithoutBattle(scene, false, MysteryEncounterMode.NO_BATTLE); + leaveEncounterWithoutBattle(false, MysteryEncounterMode.NO_BATTLE); } else { - await initBattleWithEnemyConfig(scene, nextConfig); + await initBattleWithEnemyConfig(nextConfig); } } -function endTrainerBattleAndShowDialogue(scene: BattleScene): Promise { +function endTrainerBattleAndShowDialogue(): Promise { return new Promise(async resolve => { - if (scene.currentBattle.mysteryEncounter!.enemyPartyConfigs.length === 0) { + if (globalScene.currentBattle.mysteryEncounter!.enemyPartyConfigs.length === 0) { // Battle is over - const trainer = scene.currentBattle.trainer; + const trainer = globalScene.currentBattle.trainer; if (trainer) { - scene.tweens.add({ + globalScene.tweens.add({ targets: trainer, x: "+=16", y: "-=16", @@ -178,38 +181,38 @@ function endTrainerBattleAndShowDialogue(scene: BattleScene): Promise { ease: "Sine.easeInOut", duration: 750, onComplete: () => { - scene.field.remove(trainer, true); + globalScene.field.remove(trainer, true); } }); } - await spawnNextTrainerOrEndEncounter(scene); + await spawnNextTrainerOrEndEncounter(); resolve(); // Wait for all dialogue/post battle stuff to complete before resolving } else { - scene.arena.resetArenaEffects(); - const playerField = scene.getPlayerField(); + globalScene.arena.resetArenaEffects(); + const playerField = globalScene.getPlayerField(); playerField.forEach((pokemon) => pokemon.lapseTag(BattlerTagType.COMMANDED)); - playerField.forEach((_, p) => scene.unshiftPhase(new ReturnPhase(scene, p))); + playerField.forEach((_, p) => globalScene.unshiftPhase(new ReturnPhase(p))); - for (const pokemon of scene.getPlayerParty()) { + for (const pokemon of globalScene.getPlayerParty()) { // Only trigger form change when Eiscue is in Noice form // Hardcoded Eiscue for now in case it is fused with another pokemon if (pokemon.species.speciesId === Species.EISCUE && pokemon.hasAbility(Abilities.ICE_FACE) && pokemon.formIndex === 1) { - scene.triggerPokemonFormChange(pokemon, SpeciesFormChangeManualTrigger); + globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeManualTrigger); } pokemon.resetBattleData(); applyPostBattleInitAbAttrs(PostBattleInitAbAttr, pokemon); } - scene.unshiftPhase(new ShowTrainerPhase(scene)); + globalScene.unshiftPhase(new ShowTrainerPhase()); // Hide the trainer and init next battle - const trainer = scene.currentBattle.trainer; + const trainer = globalScene.currentBattle.trainer; // Unassign previous trainer from battle so it isn't destroyed before animation completes - scene.currentBattle.trainer = null; - await spawnNextTrainerOrEndEncounter(scene); + globalScene.currentBattle.trainer = null; + await spawnNextTrainerOrEndEncounter(); if (trainer) { - scene.tweens.add({ + globalScene.tweens.add({ targets: trainer, x: "+=16", y: "-=16", @@ -217,7 +220,7 @@ function endTrainerBattleAndShowDialogue(scene: BattleScene): Promise { ease: "Sine.easeInOut", duration: 750, onComplete: () => { - scene.field.remove(trainer, true); + globalScene.field.remove(trainer, true); resolve(); } }); @@ -226,7 +229,7 @@ function endTrainerBattleAndShowDialogue(scene: BattleScene): Promise { }); } -function getVictorTrainerConfig(scene: BattleScene): EnemyPartyConfig { +function getVictorTrainerConfig(): EnemyPartyConfig { return { trainerType: TrainerType.VICTOR, pokemonConfigs: [ @@ -238,11 +241,11 @@ function getVictorTrainerConfig(scene: BattleScene): EnemyPartyConfig { moveSet: [ Moves.FACADE, Moves.BRAVE_BIRD, Moves.PROTECT, Moves.QUICK_ATTACK ], modifierConfigs: [ { - modifier: generateModifierType(scene, modifierTypes.FLAME_ORB) as PokemonHeldItemModifierType, + modifier: generateModifierType(modifierTypes.FLAME_ORB) as PokemonHeldItemModifierType, isTransferable: false }, { - modifier: generateModifierType(scene, modifierTypes.FOCUS_BAND) as PokemonHeldItemModifierType, + modifier: generateModifierType(modifierTypes.FOCUS_BAND) as PokemonHeldItemModifierType, stackCount: 2, isTransferable: false }, @@ -256,11 +259,11 @@ function getVictorTrainerConfig(scene: BattleScene): EnemyPartyConfig { moveSet: [ Moves.FACADE, Moves.OBSTRUCT, Moves.NIGHT_SLASH, Moves.FIRE_PUNCH ], modifierConfigs: [ { - modifier: generateModifierType(scene, modifierTypes.FLAME_ORB) as PokemonHeldItemModifierType, + modifier: generateModifierType(modifierTypes.FLAME_ORB) as PokemonHeldItemModifierType, isTransferable: false }, { - modifier: generateModifierType(scene, modifierTypes.LEFTOVERS) as PokemonHeldItemModifierType, + modifier: generateModifierType(modifierTypes.LEFTOVERS) as PokemonHeldItemModifierType, stackCount: 2, isTransferable: false } @@ -270,7 +273,7 @@ function getVictorTrainerConfig(scene: BattleScene): EnemyPartyConfig { }; } -function getVictoriaTrainerConfig(scene: BattleScene): EnemyPartyConfig { +function getVictoriaTrainerConfig(): EnemyPartyConfig { return { trainerType: TrainerType.VICTORIA, pokemonConfigs: [ @@ -282,11 +285,11 @@ function getVictoriaTrainerConfig(scene: BattleScene): EnemyPartyConfig { moveSet: [ Moves.SYNTHESIS, Moves.SLUDGE_BOMB, Moves.GIGA_DRAIN, Moves.SLEEP_POWDER ], modifierConfigs: [ { - modifier: generateModifierType(scene, modifierTypes.SOUL_DEW) as PokemonHeldItemModifierType, + modifier: generateModifierType(modifierTypes.SOUL_DEW) as PokemonHeldItemModifierType, isTransferable: false }, { - modifier: generateModifierType(scene, modifierTypes.QUICK_CLAW) as PokemonHeldItemModifierType, + modifier: generateModifierType(modifierTypes.QUICK_CLAW) as PokemonHeldItemModifierType, stackCount: 2, isTransferable: false } @@ -300,12 +303,12 @@ function getVictoriaTrainerConfig(scene: BattleScene): EnemyPartyConfig { moveSet: [ Moves.PSYSHOCK, Moves.MOONBLAST, Moves.SHADOW_BALL, Moves.WILL_O_WISP ], modifierConfigs: [ { - modifier: generateModifierType(scene, modifierTypes.ATTACK_TYPE_BOOSTER, [ Type.PSYCHIC ]) as PokemonHeldItemModifierType, + modifier: generateModifierType(modifierTypes.ATTACK_TYPE_BOOSTER, [ Type.PSYCHIC ]) as PokemonHeldItemModifierType, stackCount: 1, isTransferable: false }, { - modifier: generateModifierType(scene, modifierTypes.ATTACK_TYPE_BOOSTER, [ Type.FAIRY ]) as PokemonHeldItemModifierType, + modifier: generateModifierType(modifierTypes.ATTACK_TYPE_BOOSTER, [ Type.FAIRY ]) as PokemonHeldItemModifierType, stackCount: 1, isTransferable: false } @@ -315,7 +318,7 @@ function getVictoriaTrainerConfig(scene: BattleScene): EnemyPartyConfig { }; } -function getViviTrainerConfig(scene: BattleScene): EnemyPartyConfig { +function getViviTrainerConfig(): EnemyPartyConfig { return { trainerType: TrainerType.VIVI, pokemonConfigs: [ @@ -327,12 +330,12 @@ function getViviTrainerConfig(scene: BattleScene): EnemyPartyConfig { moveSet: [ Moves.WATERFALL, Moves.MEGAHORN, Moves.KNOCK_OFF, Moves.REST ], modifierConfigs: [ { - modifier: generateModifierType(scene, modifierTypes.BERRY, [ BerryType.LUM ]) as PokemonHeldItemModifierType, + modifier: generateModifierType(modifierTypes.BERRY, [ BerryType.LUM ]) as PokemonHeldItemModifierType, stackCount: 2, isTransferable: false }, { - modifier: generateModifierType(scene, modifierTypes.BASE_STAT_BOOSTER, [ Stat.HP ]) as PokemonHeldItemModifierType, + modifier: generateModifierType(modifierTypes.BASE_STAT_BOOSTER, [ Stat.HP ]) as PokemonHeldItemModifierType, stackCount: 4, isTransferable: false } @@ -346,12 +349,12 @@ function getViviTrainerConfig(scene: BattleScene): EnemyPartyConfig { moveSet: [ Moves.SPORE, Moves.SWORDS_DANCE, Moves.SEED_BOMB, Moves.DRAIN_PUNCH ], modifierConfigs: [ { - modifier: generateModifierType(scene, modifierTypes.BASE_STAT_BOOSTER, [ Stat.HP ]) as PokemonHeldItemModifierType, + modifier: generateModifierType(modifierTypes.BASE_STAT_BOOSTER, [ Stat.HP ]) as PokemonHeldItemModifierType, stackCount: 4, isTransferable: false }, { - modifier: generateModifierType(scene, modifierTypes.TOXIC_ORB) as PokemonHeldItemModifierType, + modifier: generateModifierType(modifierTypes.TOXIC_ORB) as PokemonHeldItemModifierType, isTransferable: false } ] @@ -364,7 +367,7 @@ function getViviTrainerConfig(scene: BattleScene): EnemyPartyConfig { moveSet: [ Moves.EARTH_POWER, Moves.FIRE_BLAST, Moves.YAWN, Moves.PROTECT ], modifierConfigs: [ { - modifier: generateModifierType(scene, modifierTypes.QUICK_CLAW) as PokemonHeldItemModifierType, + modifier: generateModifierType(modifierTypes.QUICK_CLAW) as PokemonHeldItemModifierType, stackCount: 3, isTransferable: false }, @@ -374,7 +377,7 @@ function getViviTrainerConfig(scene: BattleScene): EnemyPartyConfig { }; } -function getVickyTrainerConfig(scene: BattleScene): EnemyPartyConfig { +function getVickyTrainerConfig(): EnemyPartyConfig { return { trainerType: TrainerType.VICKY, pokemonConfigs: [ @@ -386,7 +389,7 @@ function getVickyTrainerConfig(scene: BattleScene): EnemyPartyConfig { moveSet: [ Moves.AXE_KICK, Moves.ICE_PUNCH, Moves.ZEN_HEADBUTT, Moves.BULLET_PUNCH ], modifierConfigs: [ { - modifier: generateModifierType(scene, modifierTypes.SHELL_BELL) as PokemonHeldItemModifierType, + modifier: generateModifierType(modifierTypes.SHELL_BELL) as PokemonHeldItemModifierType, isTransferable: false } ] @@ -395,7 +398,7 @@ function getVickyTrainerConfig(scene: BattleScene): EnemyPartyConfig { }; } -function getVitoTrainerConfig(scene: BattleScene): EnemyPartyConfig { +function getVitoTrainerConfig(): EnemyPartyConfig { return { trainerType: TrainerType.VITO, pokemonConfigs: [ @@ -407,7 +410,7 @@ function getVitoTrainerConfig(scene: BattleScene): EnemyPartyConfig { moveSet: [ Moves.THUNDERBOLT, Moves.GIGA_DRAIN, Moves.FOUL_PLAY, Moves.THUNDER_WAVE ], modifierConfigs: [ { - modifier: generateModifierType(scene, modifierTypes.BASE_STAT_BOOSTER, [ Stat.SPD ]) as PokemonHeldItemModifierType, + modifier: generateModifierType(modifierTypes.BASE_STAT_BOOSTER, [ Stat.SPD ]) as PokemonHeldItemModifierType, stackCount: 2, isTransferable: false } @@ -421,47 +424,47 @@ function getVitoTrainerConfig(scene: BattleScene): EnemyPartyConfig { moveSet: [ Moves.SLUDGE_BOMB, Moves.GIGA_DRAIN, Moves.ICE_BEAM, Moves.EARTHQUAKE ], modifierConfigs: [ { - modifier: generateModifierType(scene, modifierTypes.BERRY, [ BerryType.SITRUS ]) as PokemonHeldItemModifierType, + modifier: generateModifierType(modifierTypes.BERRY, [ BerryType.SITRUS ]) as PokemonHeldItemModifierType, stackCount: 2, }, { - modifier: generateModifierType(scene, modifierTypes.BERRY, [ BerryType.APICOT ]) as PokemonHeldItemModifierType, + modifier: generateModifierType(modifierTypes.BERRY, [ BerryType.APICOT ]) as PokemonHeldItemModifierType, stackCount: 2, }, { - modifier: generateModifierType(scene, modifierTypes.BERRY, [ BerryType.GANLON ]) as PokemonHeldItemModifierType, + modifier: generateModifierType(modifierTypes.BERRY, [ BerryType.GANLON ]) as PokemonHeldItemModifierType, stackCount: 2, }, { - modifier: generateModifierType(scene, modifierTypes.BERRY, [ BerryType.STARF ]) as PokemonHeldItemModifierType, + modifier: generateModifierType(modifierTypes.BERRY, [ BerryType.STARF ]) as PokemonHeldItemModifierType, stackCount: 2, }, { - modifier: generateModifierType(scene, modifierTypes.BERRY, [ BerryType.SALAC ]) as PokemonHeldItemModifierType, + modifier: generateModifierType(modifierTypes.BERRY, [ BerryType.SALAC ]) as PokemonHeldItemModifierType, stackCount: 2, }, { - modifier: generateModifierType(scene, modifierTypes.BERRY, [ BerryType.LUM ]) as PokemonHeldItemModifierType, + modifier: generateModifierType(modifierTypes.BERRY, [ BerryType.LUM ]) as PokemonHeldItemModifierType, stackCount: 2, }, { - modifier: generateModifierType(scene, modifierTypes.BERRY, [ BerryType.LANSAT ]) as PokemonHeldItemModifierType, + modifier: generateModifierType(modifierTypes.BERRY, [ BerryType.LANSAT ]) as PokemonHeldItemModifierType, stackCount: 2, }, { - modifier: generateModifierType(scene, modifierTypes.BERRY, [ BerryType.LIECHI ]) as PokemonHeldItemModifierType, + modifier: generateModifierType(modifierTypes.BERRY, [ BerryType.LIECHI ]) as PokemonHeldItemModifierType, stackCount: 2, }, { - modifier: generateModifierType(scene, modifierTypes.BERRY, [ BerryType.PETAYA ]) as PokemonHeldItemModifierType, + modifier: generateModifierType(modifierTypes.BERRY, [ BerryType.PETAYA ]) as PokemonHeldItemModifierType, stackCount: 2, }, { - modifier: generateModifierType(scene, modifierTypes.BERRY, [ BerryType.ENIGMA ]) as PokemonHeldItemModifierType, + modifier: generateModifierType(modifierTypes.BERRY, [ BerryType.ENIGMA ]) as PokemonHeldItemModifierType, stackCount: 2, }, { - modifier: generateModifierType(scene, modifierTypes.BERRY, [ BerryType.LEPPA ]) as PokemonHeldItemModifierType, + modifier: generateModifierType(modifierTypes.BERRY, [ BerryType.LEPPA ]) as PokemonHeldItemModifierType, stackCount: 2, } ] @@ -474,7 +477,7 @@ function getVitoTrainerConfig(scene: BattleScene): EnemyPartyConfig { moveSet: [ Moves.DRILL_PECK, Moves.QUICK_ATTACK, Moves.THRASH, Moves.KNOCK_OFF ], modifierConfigs: [ { - modifier: generateModifierType(scene, modifierTypes.KINGS_ROCK) as PokemonHeldItemModifierType, + modifier: generateModifierType(modifierTypes.KINGS_ROCK) as PokemonHeldItemModifierType, stackCount: 2, isTransferable: false } @@ -488,7 +491,7 @@ function getVitoTrainerConfig(scene: BattleScene): EnemyPartyConfig { moveSet: [ Moves.PSYCHIC, Moves.SHADOW_BALL, Moves.FOCUS_BLAST, Moves.THUNDERBOLT ], modifierConfigs: [ { - modifier: generateModifierType(scene, modifierTypes.WIDE_LENS) as PokemonHeldItemModifierType, + modifier: generateModifierType(modifierTypes.WIDE_LENS) as PokemonHeldItemModifierType, stackCount: 2, isTransferable: false }, @@ -502,7 +505,7 @@ function getVitoTrainerConfig(scene: BattleScene): EnemyPartyConfig { moveSet: [ Moves.EARTHQUAKE, Moves.U_TURN, Moves.FLARE_BLITZ, Moves.ROCK_SLIDE ], modifierConfigs: [ { - modifier: generateModifierType(scene, modifierTypes.QUICK_CLAW) as PokemonHeldItemModifierType, + modifier: generateModifierType(modifierTypes.QUICK_CLAW) as PokemonHeldItemModifierType, stackCount: 2, isTransferable: false }, diff --git a/src/data/mystery-encounters/encounters/training-session-encounter.ts b/src/data/mystery-encounters/encounters/training-session-encounter.ts index 725c4ba79eb..9cb388e343c 100644 --- a/src/data/mystery-encounters/encounters/training-session-encounter.ts +++ b/src/data/mystery-encounters/encounters/training-session-encounter.ts @@ -1,22 +1,26 @@ -import { Ability, allAbilities } from "#app/data/ability"; -import { EnemyPartyConfig, initBattleWithEnemyConfig, leaveEncounterWithoutBattle, selectPokemonForOption, setEncounterRewards, } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import type { Ability } from "#app/data/ability"; +import { allAbilities } from "#app/data/ability"; +import type { EnemyPartyConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import { initBattleWithEnemyConfig, leaveEncounterWithoutBattle, selectPokemonForOption, setEncounterRewards, } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { getNatureName } from "#app/data/nature"; import { speciesStarterCosts } from "#app/data/balance/starters"; -import Pokemon, { PlayerPokemon } from "#app/field/pokemon"; -import { PokemonHeldItemModifier } from "#app/modifier/modifier"; +import type { PlayerPokemon } from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; +import type { PokemonHeldItemModifier } from "#app/modifier/modifier"; import { AbilityAttr } from "#app/system/game-data"; import PokemonData from "#app/system/pokemon-data"; -import { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; +import type { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; import { isNullOrUndefined, randSeedShuffle } from "#app/utils"; import { BattlerTagType } from "#enums/battler-tag-type"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import BattleScene from "#app/battle-scene"; -import MysteryEncounter, { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; +import { globalScene } from "#app/global-scene"; +import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; import { queueEncounterMessage, showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import HeldModifierConfig from "#app/interfaces/held-modifier-config"; +import type HeldModifierConfig from "#app/interfaces/held-modifier-config"; import i18next from "i18next"; import { getStatKey } from "#enums/stat"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/game-mode"; @@ -71,8 +75,8 @@ export const TrainingSessionEncounter: MysteryEncounter = }, ], }) - .withPreOptionPhase(async (scene: BattleScene): Promise => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withPreOptionPhase(async (): Promise => { + const encounter = globalScene.currentBattle.mysteryEncounter!; const onPokemonSelected = (pokemon: PlayerPokemon) => { encounter.misc = { playerPokemon: pokemon, @@ -81,24 +85,24 @@ export const TrainingSessionEncounter: MysteryEncounter = // Only Pokemon that are not KOed/legal can be trained const selectableFilter = (pokemon: Pokemon) => { - return isPokemonValidForEncounterOptionSelection(pokemon, scene, `${namespace}:invalid_selection`); + return isPokemonValidForEncounterOptionSelection(pokemon, `${namespace}:invalid_selection`); }; - return selectPokemonForOption(scene, onPokemonSelected, undefined, selectableFilter); + return selectPokemonForOption(onPokemonSelected, undefined, selectableFilter); }) - .withOptionPhase(async (scene: BattleScene) => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withOptionPhase(async () => { + const encounter = globalScene.currentBattle.mysteryEncounter!; const playerPokemon: PlayerPokemon = encounter.misc.playerPokemon; // Spawn light training session with chosen pokemon // Every 50 waves, add +1 boss segment, capping at 5 const segments = Math.min( - 2 + Math.floor(scene.currentBattle.waveIndex / 50), + 2 + Math.floor(globalScene.currentBattle.waveIndex / 50), 5 ); const modifiers = new ModifiersHolder(); - const config = getEnemyConfig(scene, playerPokemon, segments, modifiers); - scene.removePokemonFromPlayerParty(playerPokemon, false); + const config = getEnemyConfig(playerPokemon, segments, modifiers); + globalScene.removePokemonFromPlayerParty(playerPokemon, false); const onBeforeRewardsPhase = () => { encounter.setDialogueToken("stat1", "-"); @@ -148,23 +152,23 @@ export const TrainingSessionEncounter: MysteryEncounter = if (improvedCount > 0) { playerPokemon.calculateStats(); - scene.gameData.updateSpeciesDexIvs(playerPokemon.species.getRootSpeciesId(true), playerPokemon.ivs); - scene.gameData.setPokemonCaught(playerPokemon, false); + globalScene.gameData.updateSpeciesDexIvs(playerPokemon.species.getRootSpeciesId(true), playerPokemon.ivs); + globalScene.gameData.setPokemonCaught(playerPokemon, false); } // Add pokemon and mods back - scene.getPlayerParty().push(playerPokemon); + globalScene.getPlayerParty().push(playerPokemon); for (const mod of modifiers.value) { mod.pokemonId = playerPokemon.id; - scene.addModifier(mod, true, false, false, true); + globalScene.addModifier(mod, true, false, false, true); } - scene.updateModifiers(true); - queueEncounterMessage(scene, `${namespace}:option.1.finished`); + globalScene.updateModifiers(true); + queueEncounterMessage(`${namespace}:option.1.finished`); }; - setEncounterRewards(scene, { fillRemaining: true }, undefined, onBeforeRewardsPhase); + setEncounterRewards({ fillRemaining: true }, undefined, onBeforeRewardsPhase); - await initBattleWithEnemyConfig(scene, config); + await initBattleWithEnemyConfig(config); }) .build() ) @@ -182,15 +186,15 @@ export const TrainingSessionEncounter: MysteryEncounter = }, ], }) - .withPreOptionPhase(async (scene: BattleScene): Promise => { + .withPreOptionPhase(async (): Promise => { // Open menu for selecting pokemon and Nature - const encounter = scene.currentBattle.mysteryEncounter!; + const encounter = globalScene.currentBattle.mysteryEncounter!; const natures = new Array(25).fill(null).map((val, i) => i as Nature); const onPokemonSelected = (pokemon: PlayerPokemon) => { // Return the options for nature selection return natures.map((nature: Nature) => { const option: OptionSelectItem = { - label: getNatureName(nature, true, true, true, scene.uiTheme), + label: getNatureName(nature, true, true, true, globalScene.uiTheme), handler: () => { // Pokemon and second option selected encounter.setDialogueToken("nature", getNatureName(nature)); @@ -207,40 +211,40 @@ export const TrainingSessionEncounter: MysteryEncounter = // Only Pokemon that are not KOed/legal can be trained const selectableFilter = (pokemon: Pokemon) => { - return isPokemonValidForEncounterOptionSelection(pokemon, scene, `${namespace}:invalid_selection`); + return isPokemonValidForEncounterOptionSelection(pokemon, `${namespace}:invalid_selection`); }; - return selectPokemonForOption(scene, onPokemonSelected, undefined, selectableFilter); + return selectPokemonForOption(onPokemonSelected, undefined, selectableFilter); }) - .withOptionPhase(async (scene: BattleScene) => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withOptionPhase(async () => { + const encounter = globalScene.currentBattle.mysteryEncounter!; const playerPokemon: PlayerPokemon = encounter.misc.playerPokemon; // Spawn medium training session with chosen pokemon // Every 40 waves, add +1 boss segment, capping at 6 - const segments = Math.min(2 + Math.floor(scene.currentBattle.waveIndex / 40), 6); + const segments = Math.min(2 + Math.floor(globalScene.currentBattle.waveIndex / 40), 6); const modifiers = new ModifiersHolder(); - const config = getEnemyConfig(scene, playerPokemon, segments, modifiers); - scene.removePokemonFromPlayerParty(playerPokemon, false); + const config = getEnemyConfig(playerPokemon, segments, modifiers); + globalScene.removePokemonFromPlayerParty(playerPokemon, false); const onBeforeRewardsPhase = () => { - queueEncounterMessage(scene, `${namespace}:option.2.finished`); + queueEncounterMessage(`${namespace}:option.2.finished`); // Add the pokemon back to party with Nature change playerPokemon.setCustomNature(encounter.misc.chosenNature); - scene.gameData.unlockSpeciesNature(playerPokemon.species, encounter.misc.chosenNature); + globalScene.gameData.unlockSpeciesNature(playerPokemon.species, encounter.misc.chosenNature); // Add pokemon and modifiers back - scene.getPlayerParty().push(playerPokemon); + globalScene.getPlayerParty().push(playerPokemon); for (const mod of modifiers.value) { mod.pokemonId = playerPokemon.id; - scene.addModifier(mod, true, false, false, true); + globalScene.addModifier(mod, true, false, false, true); } - scene.updateModifiers(true); + globalScene.updateModifiers(true); }; - setEncounterRewards(scene, { fillRemaining: true }, undefined, onBeforeRewardsPhase); + setEncounterRewards({ fillRemaining: true }, undefined, onBeforeRewardsPhase); - await initBattleWithEnemyConfig(scene, config); + await initBattleWithEnemyConfig(config); }) .build() ) @@ -258,9 +262,9 @@ export const TrainingSessionEncounter: MysteryEncounter = }, ], }) - .withPreOptionPhase(async (scene: BattleScene): Promise => { + .withPreOptionPhase(async (): Promise => { // Open menu for selecting pokemon and ability to learn - const encounter = scene.currentBattle.mysteryEncounter!; + const encounter = globalScene.currentBattle.mysteryEncounter!; const onPokemonSelected = (pokemon: PlayerPokemon) => { // Return the options for ability selection const speciesForm = !!pokemon.getFusionSpeciesForm() @@ -286,7 +290,7 @@ export const TrainingSessionEncounter: MysteryEncounter = return true; }, onHover: () => { - showEncounterText(scene, ability.description, 0, 0, false); + showEncounterText(ability.description, 0, 0, false); }, }; optionSelectItems.push(option); @@ -298,28 +302,28 @@ export const TrainingSessionEncounter: MysteryEncounter = // Only Pokemon that are not KOed/legal can be trained const selectableFilter = (pokemon: Pokemon) => { - return isPokemonValidForEncounterOptionSelection(pokemon, scene, `${namespace}:invalid_selection`); + return isPokemonValidForEncounterOptionSelection(pokemon, `${namespace}:invalid_selection`); }; - return selectPokemonForOption(scene, onPokemonSelected, undefined, selectableFilter); + return selectPokemonForOption(onPokemonSelected, undefined, selectableFilter); }) - .withOptionPhase(async (scene: BattleScene) => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withOptionPhase(async () => { + const encounter = globalScene.currentBattle.mysteryEncounter!; const playerPokemon: PlayerPokemon = encounter.misc.playerPokemon; // Spawn hard training session with chosen pokemon // Every 30 waves, add +1 boss segment, capping at 6 // Also starts with +1 to all stats - const segments = Math.min(2 + Math.floor(scene.currentBattle.waveIndex / 30), 6); + const segments = Math.min(2 + Math.floor(globalScene.currentBattle.waveIndex / 30), 6); const modifiers = new ModifiersHolder(); - const config = getEnemyConfig(scene, playerPokemon, segments, modifiers); + const config = getEnemyConfig(playerPokemon, segments, modifiers); config.pokemonConfigs![0].tags = [ BattlerTagType.MYSTERY_ENCOUNTER_POST_SUMMON, ]; - scene.removePokemonFromPlayerParty(playerPokemon, false); + globalScene.removePokemonFromPlayerParty(playerPokemon, false); const onBeforeRewardsPhase = () => { - queueEncounterMessage(scene, `${namespace}:option.3.finished`); + queueEncounterMessage(`${namespace}:option.3.finished`); // Add the pokemon back to party with ability change const abilityIndex = encounter.misc.abilityIndex; @@ -330,8 +334,8 @@ export const TrainingSessionEncounter: MysteryEncounter = const rootFusionSpecies = playerPokemon.fusionSpecies?.getRootSpeciesId(); if (!isNullOrUndefined(rootFusionSpecies) && speciesStarterCosts.hasOwnProperty(rootFusionSpecies) - && !!scene.gameData.dexData[rootFusionSpecies].caughtAttr) { - scene.gameData.starterData[rootFusionSpecies].abilityAttr |= playerPokemon.fusionAbilityIndex !== 1 || playerPokemon.fusionSpecies?.ability2 + && !!globalScene.gameData.dexData[rootFusionSpecies].caughtAttr) { + globalScene.gameData.starterData[rootFusionSpecies].abilityAttr |= playerPokemon.fusionAbilityIndex !== 1 || playerPokemon.fusionSpecies?.ability2 ? 1 << playerPokemon.fusionAbilityIndex : AbilityAttr.ABILITY_HIDDEN; } @@ -340,20 +344,20 @@ export const TrainingSessionEncounter: MysteryEncounter = } playerPokemon.calculateStats(); - scene.gameData.setPokemonCaught(playerPokemon, false); + globalScene.gameData.setPokemonCaught(playerPokemon, false); // Add pokemon and mods back - scene.getPlayerParty().push(playerPokemon); + globalScene.getPlayerParty().push(playerPokemon); for (const mod of modifiers.value) { mod.pokemonId = playerPokemon.id; - scene.addModifier(mod, true, false, false, true); + globalScene.addModifier(mod, true, false, false, true); } - scene.updateModifiers(true); + globalScene.updateModifiers(true); }; - setEncounterRewards(scene, { fillRemaining: true }, undefined, onBeforeRewardsPhase); + setEncounterRewards({ fillRemaining: true }, undefined, onBeforeRewardsPhase); - await initBattleWithEnemyConfig(scene, config); + await initBattleWithEnemyConfig(config); }) .build() ) @@ -367,15 +371,15 @@ export const TrainingSessionEncounter: MysteryEncounter = }, ], }, - async (scene: BattleScene) => { + async () => { // Leave encounter with no rewards or exp - leaveEncounterWithoutBattle(scene, true); + leaveEncounterWithoutBattle(true); return true; } ) .build(); -function getEnemyConfig(scene: BattleScene, playerPokemon: PlayerPokemon, segments: number, modifiers: ModifiersHolder): EnemyPartyConfig { +function getEnemyConfig(playerPokemon: PlayerPokemon, segments: number, modifiers: ModifiersHolder): EnemyPartyConfig { playerPokemon.resetSummonData(); // Passes modifiers by reference diff --git a/src/data/mystery-encounters/encounters/trash-to-treasure-encounter.ts b/src/data/mystery-encounters/encounters/trash-to-treasure-encounter.ts index dfd89cdfb63..a17b05c4e33 100644 --- a/src/data/mystery-encounters/encounters/trash-to-treasure-encounter.ts +++ b/src/data/mystery-encounters/encounters/trash-to-treasure-encounter.ts @@ -1,8 +1,11 @@ -import { EnemyPartyConfig, EnemyPokemonConfig, generateModifierType, initBattleWithEnemyConfig, leaveEncounterWithoutBattle, loadCustomMovesForEncounter, setEncounterRewards, transitionMysteryEncounterIntroVisuals, } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import { modifierTypes, PokemonHeldItemModifierType } from "#app/modifier/modifier-type"; +import type { EnemyPartyConfig, EnemyPokemonConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import { generateModifierType, initBattleWithEnemyConfig, leaveEncounterWithoutBattle, loadCustomMovesForEncounter, setEncounterRewards, transitionMysteryEncounterIntroVisuals, } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import type { PokemonHeldItemModifierType } from "#app/modifier/modifier-type"; +import { modifierTypes } from "#app/modifier/modifier-type"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import BattleScene from "#app/battle-scene"; -import MysteryEncounter, { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; +import { globalScene } from "#app/global-scene"; +import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; @@ -58,8 +61,8 @@ export const TrashToTreasureEncounter: MysteryEncounter = .withTitle(`${namespace}:title`) .withDescription(`${namespace}:description`) .withQuery(`${namespace}:query`) - .withOnInit((scene: BattleScene) => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withOnInit(() => { + const encounter = globalScene.currentBattle.mysteryEncounter!; // Calculate boss mon (shiny locked) const bossSpecies = getPokemonSpecies(Species.GARBODOR); @@ -79,10 +82,10 @@ export const TrashToTreasureEncounter: MysteryEncounter = encounter.enemyPartyConfigs = [ config ]; // Load animations/sfx for Garbodor fight start moves - loadCustomMovesForEncounter(scene, [ Moves.TOXIC, Moves.AMNESIA ]); + loadCustomMovesForEncounter([ Moves.TOXIC, Moves.AMNESIA ]); - scene.loadSe("PRSFX- Dig2", "battle_anims", "PRSFX- Dig2.wav"); - scene.loadSe("PRSFX- Venom Drench", "battle_anims", "PRSFX- Venom Drench.wav"); + globalScene.loadSe("PRSFX- Dig2", "battle_anims", "PRSFX- Dig2.wav"); + globalScene.loadSe("PRSFX- Venom Drench", "battle_anims", "PRSFX- Venom Drench.wav"); encounter.setDialogueToken("costMultiplier", SHOP_ITEM_COST_MULTIPLIER.toString()); @@ -100,24 +103,24 @@ export const TrashToTreasureEncounter: MysteryEncounter = }, ], }) - .withPreOptionPhase(async (scene: BattleScene) => { + .withPreOptionPhase(async () => { // Play Dig2 and then Venom Drench sfx - doGarbageDig(scene); + doGarbageDig(); }) - .withOptionPhase(async (scene: BattleScene) => { + .withOptionPhase(async () => { // Gain 2 Leftovers and 2 Shell Bell - await transitionMysteryEncounterIntroVisuals(scene); - await tryApplyDigRewardItems(scene); + await transitionMysteryEncounterIntroVisuals(); + await tryApplyDigRewardItems(); - const blackSludge = generateModifierType(scene, modifierTypes.MYSTERY_ENCOUNTER_BLACK_SLUDGE, [ SHOP_ITEM_COST_MULTIPLIER ]); + const blackSludge = generateModifierType(modifierTypes.MYSTERY_ENCOUNTER_BLACK_SLUDGE, [ SHOP_ITEM_COST_MULTIPLIER ]); const modifier = blackSludge?.newModifier(); if (modifier) { - await scene.addModifier(modifier, false, false, false, true); - scene.playSound("battle_anims/PRSFX- Venom Drench", { volume: 2 }); - await showEncounterText(scene, i18next.t("battle:rewardGain", { modifierName: modifier.type.name }), null, undefined, true); + await globalScene.addModifier(modifier, false, false, false, true); + globalScene.playSound("battle_anims/PRSFX- Venom Drench", { volume: 2 }); + await showEncounterText(i18next.t("battle:rewardGain", { modifierName: modifier.type.name }), null, undefined, true); } - leaveEncounterWithoutBattle(scene, true); + leaveEncounterWithoutBattle(true); }) .build() ) @@ -133,15 +136,15 @@ export const TrashToTreasureEncounter: MysteryEncounter = }, ], }) - .withOptionPhase(async (scene: BattleScene) => { + .withOptionPhase(async () => { // Investigate garbage, battle Gmax Garbodor - scene.setFieldScale(0.75); - await showEncounterText(scene, `${namespace}:option.2.selected_2`); - await transitionMysteryEncounterIntroVisuals(scene); + globalScene.setFieldScale(0.75); + await showEncounterText(`${namespace}:option.2.selected_2`); + await transitionMysteryEncounterIntroVisuals(); - const encounter = scene.currentBattle.mysteryEncounter!; + const encounter = globalScene.currentBattle.mysteryEncounter!; - setEncounterRewards(scene, { guaranteedModifierTiers: [ ModifierTier.ROGUE, ModifierTier.ROGUE, ModifierTier.ULTRA, ModifierTier.GREAT ], fillRemaining: true }); + setEncounterRewards({ guaranteedModifierTiers: [ ModifierTier.ROGUE, ModifierTier.ROGUE, ModifierTier.ULTRA, ModifierTier.GREAT ], fillRemaining: true }); encounter.startOfBattleEffects.push( { sourceBattlerIndex: BattlerIndex.ENEMY, @@ -155,81 +158,81 @@ export const TrashToTreasureEncounter: MysteryEncounter = move: new PokemonMove(Moves.AMNESIA), ignorePp: true }); - await initBattleWithEnemyConfig(scene, encounter.enemyPartyConfigs[0]); + await initBattleWithEnemyConfig(encounter.enemyPartyConfigs[0]); }) .build() ) .build(); -async function tryApplyDigRewardItems(scene: BattleScene) { - const shellBell = generateModifierType(scene, modifierTypes.SHELL_BELL) as PokemonHeldItemModifierType; - const leftovers = generateModifierType(scene, modifierTypes.LEFTOVERS) as PokemonHeldItemModifierType; +async function tryApplyDigRewardItems() { + const shellBell = generateModifierType(modifierTypes.SHELL_BELL) as PokemonHeldItemModifierType; + const leftovers = generateModifierType(modifierTypes.LEFTOVERS) as PokemonHeldItemModifierType; - const party = scene.getPlayerParty(); + const party = globalScene.getPlayerParty(); // Iterate over the party until an item was successfully given // First leftovers for (const pokemon of party) { - const heldItems = scene.findModifiers(m => m instanceof PokemonHeldItemModifier + const heldItems = globalScene.findModifiers(m => m instanceof PokemonHeldItemModifier && m.pokemonId === pokemon.id, true) as PokemonHeldItemModifier[]; const existingLeftovers = heldItems.find(m => m instanceof TurnHealModifier) as TurnHealModifier; - if (!existingLeftovers || existingLeftovers.getStackCount() < existingLeftovers.getMaxStackCount(scene)) { - await applyModifierTypeToPlayerPokemon(scene, pokemon, leftovers); + if (!existingLeftovers || existingLeftovers.getStackCount() < existingLeftovers.getMaxStackCount()) { + await applyModifierTypeToPlayerPokemon(pokemon, leftovers); break; } } // Second leftovers for (const pokemon of party) { - const heldItems = scene.findModifiers(m => m instanceof PokemonHeldItemModifier + const heldItems = globalScene.findModifiers(m => m instanceof PokemonHeldItemModifier && m.pokemonId === pokemon.id, true) as PokemonHeldItemModifier[]; const existingLeftovers = heldItems.find(m => m instanceof TurnHealModifier) as TurnHealModifier; - if (!existingLeftovers || existingLeftovers.getStackCount() < existingLeftovers.getMaxStackCount(scene)) { - await applyModifierTypeToPlayerPokemon(scene, pokemon, leftovers); + if (!existingLeftovers || existingLeftovers.getStackCount() < existingLeftovers.getMaxStackCount()) { + await applyModifierTypeToPlayerPokemon(pokemon, leftovers); break; } } - scene.playSound("item_fanfare"); - await showEncounterText(scene, i18next.t("battle:rewardGainCount", { modifierName: leftovers.name, count: 2 }), null, undefined, true); + globalScene.playSound("item_fanfare"); + await showEncounterText(i18next.t("battle:rewardGainCount", { modifierName: leftovers.name, count: 2 }), null, undefined, true); // First Shell bell for (const pokemon of party) { - const heldItems = scene.findModifiers(m => m instanceof PokemonHeldItemModifier + const heldItems = globalScene.findModifiers(m => m instanceof PokemonHeldItemModifier && m.pokemonId === pokemon.id, true) as PokemonHeldItemModifier[]; const existingShellBell = heldItems.find(m => m instanceof HitHealModifier) as HitHealModifier; - if (!existingShellBell || existingShellBell.getStackCount() < existingShellBell.getMaxStackCount(scene)) { - await applyModifierTypeToPlayerPokemon(scene, pokemon, shellBell); + if (!existingShellBell || existingShellBell.getStackCount() < existingShellBell.getMaxStackCount()) { + await applyModifierTypeToPlayerPokemon(pokemon, shellBell); break; } } // Second Shell bell for (const pokemon of party) { - const heldItems = scene.findModifiers(m => m instanceof PokemonHeldItemModifier + const heldItems = globalScene.findModifiers(m => m instanceof PokemonHeldItemModifier && m.pokemonId === pokemon.id, true) as PokemonHeldItemModifier[]; const existingShellBell = heldItems.find(m => m instanceof HitHealModifier) as HitHealModifier; - if (!existingShellBell || existingShellBell.getStackCount() < existingShellBell.getMaxStackCount(scene)) { - await applyModifierTypeToPlayerPokemon(scene, pokemon, shellBell); + if (!existingShellBell || existingShellBell.getStackCount() < existingShellBell.getMaxStackCount()) { + await applyModifierTypeToPlayerPokemon(pokemon, shellBell); break; } } - scene.playSound("item_fanfare"); - await showEncounterText(scene, i18next.t("battle:rewardGainCount", { modifierName: shellBell.name, count: 2 }), null, undefined, true); + globalScene.playSound("item_fanfare"); + await showEncounterText(i18next.t("battle:rewardGainCount", { modifierName: shellBell.name, count: 2 }), null, undefined, true); } -function doGarbageDig(scene: BattleScene) { - scene.playSound("battle_anims/PRSFX- Dig2"); - scene.time.delayedCall(SOUND_EFFECT_WAIT_TIME, () => { - scene.playSound("battle_anims/PRSFX- Dig2"); - scene.playSound("battle_anims/PRSFX- Venom Drench", { volume: 2 }); +function doGarbageDig() { + globalScene.playSound("battle_anims/PRSFX- Dig2"); + globalScene.time.delayedCall(SOUND_EFFECT_WAIT_TIME, () => { + globalScene.playSound("battle_anims/PRSFX- Dig2"); + globalScene.playSound("battle_anims/PRSFX- Venom Drench", { volume: 2 }); }); - scene.time.delayedCall(SOUND_EFFECT_WAIT_TIME * 2, () => { - scene.playSound("battle_anims/PRSFX- Dig2"); + globalScene.time.delayedCall(SOUND_EFFECT_WAIT_TIME * 2, () => { + globalScene.playSound("battle_anims/PRSFX- Dig2"); }); } diff --git a/src/data/mystery-encounters/encounters/uncommon-breed-encounter.ts b/src/data/mystery-encounters/encounters/uncommon-breed-encounter.ts index ebea34253d1..39297ab95b6 100644 --- a/src/data/mystery-encounters/encounters/uncommon-breed-encounter.ts +++ b/src/data/mystery-encounters/encounters/uncommon-breed-encounter.ts @@ -1,11 +1,14 @@ import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; -import { EnemyPartyConfig, initBattleWithEnemyConfig, leaveEncounterWithoutBattle, setEncounterExp, setEncounterRewards } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import type { EnemyPartyConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import { initBattleWithEnemyConfig, leaveEncounterWithoutBattle, setEncounterExp, setEncounterRewards } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { CHARMING_MOVES } from "#app/data/mystery-encounters/requirements/requirement-groups"; -import Pokemon, { EnemyPokemon, PokemonMove } from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; +import { EnemyPokemon, PokemonMove } from "#app/field/pokemon"; import { getPartyLuckValue } from "#app/modifier/modifier-type"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import BattleScene from "#app/battle-scene"; -import MysteryEncounter, { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; +import { globalScene } from "#app/global-scene"; +import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; import { MoveRequirement, PersistentModifierRequirement } from "#app/data/mystery-encounters/mystery-encounter-requirements"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; @@ -13,7 +16,7 @@ import { TrainerSlot } from "#app/data/trainer-config"; import { catchPokemon, getHighestLevelPlayerPokemon, getSpriteKeysFromPokemon } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; import PokemonData from "#app/system/pokemon-data"; import { isNullOrUndefined, randSeedInt, randSeedItem } from "#app/utils"; -import { Moves } from "#enums/moves"; +import type { Moves } from "#enums/moves"; import { BattlerIndex } from "#app/battle"; import { SelfStatusMove } from "#app/data/move"; import { PokeballType } from "#enums/pokeball"; @@ -23,7 +26,8 @@ import { BerryModifier } from "#app/modifier/modifier"; import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; import { Stat } from "#enums/stat"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/game-mode"; -import PokemonSpecies, { getPokemonSpecies } from "#app/data/pokemon-species"; +import type PokemonSpecies from "#app/data/pokemon-species"; +import { getPokemonSpecies } from "#app/data/pokemon-species"; /** the i18n namespace for the encounter */ const namespace = "mysteryEncounters/uncommonBreed"; @@ -46,21 +50,21 @@ export const UncommonBreedEncounter: MysteryEncounter = text: `${namespace}:intro`, }, ]) - .withOnInit((scene: BattleScene) => { - const encounter = scene.currentBattle.mysteryEncounter!; + .withOnInit(() => { + const encounter = globalScene.currentBattle.mysteryEncounter!; // Calculate boss mon // Level equal to 2 below highest party member - const level = getHighestLevelPlayerPokemon(scene, false, true).level - 2; + const level = getHighestLevelPlayerPokemon(false, true).level - 2; let species: PokemonSpecies; - if (scene.eventManager.isEventActive() && scene.eventManager.activeEvent()?.uncommonBreedEncounters && randSeedInt(2) === 1) { - const eventEncounter = randSeedItem(scene.eventManager.activeEvent()!.uncommonBreedEncounters!); - const levelSpecies = getPokemonSpecies(eventEncounter.species).getWildSpeciesForLevel(level, eventEncounter.allowEvolution ?? false, true, scene.gameMode); + if (globalScene.eventManager.isEventActive() && globalScene.eventManager.activeEvent()?.uncommonBreedEncounters && randSeedInt(2) === 1) { + const eventEncounter = randSeedItem(globalScene.eventManager.activeEvent()!.uncommonBreedEncounters!); + const levelSpecies = getPokemonSpecies(eventEncounter.species).getWildSpeciesForLevel(level, eventEncounter.allowEvolution ?? false, true, globalScene.gameMode); species = getPokemonSpecies( levelSpecies ); } else { - species = scene.arena.randomSpecies(scene.currentBattle.waveIndex, level, 0, getPartyLuckValue(scene.getPlayerParty()), true); + species = globalScene.arena.randomSpecies(globalScene.currentBattle.waveIndex, level, 0, getPartyLuckValue(globalScene.getPlayerParty()), true); } - const pokemon = new EnemyPokemon(scene, species, level, TrainerSlot.NONE, true); + const pokemon = new EnemyPokemon(species, level, TrainerSlot.NONE, true); // Pokemon will always have one of its egg moves in its moveset const eggMoves = pokemon.getEggMoves(); @@ -81,7 +85,7 @@ export const UncommonBreedEncounter: MysteryEncounter = } // Defense/Spd buffs below wave 50, +1 to all stats otherwise - const statChangesForBattle: (Stat.ATK | Stat.DEF | Stat.SPATK | Stat.SPDEF | Stat.SPD | Stat.ACC | Stat.EVA)[] = scene.currentBattle.waveIndex < 50 ? + const statChangesForBattle: (Stat.ATK | Stat.DEF | Stat.SPATK | Stat.SPDEF | Stat.SPD | Stat.ACC | Stat.EVA)[] = globalScene.currentBattle.waveIndex < 50 ? [ Stat.DEF, Stat.SPDEF, Stat.SPD ] : [ Stat.ATK, Stat.DEF, Stat.SPATK, Stat.SPDEF, Stat.SPD ]; @@ -93,8 +97,8 @@ export const UncommonBreedEncounter: MysteryEncounter = isBoss: false, tags: [ BattlerTagType.MYSTERY_ENCOUNTER_POST_SUMMON ], mysteryEncounterBattleEffects: (pokemon: Pokemon) => { - queueEncounterMessage(pokemon.scene, `${namespace}:option.1.stat_boost`); - pokemon.scene.unshiftPhase(new StatStageChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, statChangesForBattle, 1)); + queueEncounterMessage(`${namespace}:option.1.stat_boost`); + globalScene.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, statChangesForBattle, 1)); } }], }; @@ -115,16 +119,16 @@ export const UncommonBreedEncounter: MysteryEncounter = ]; encounter.setDialogueToken("enemyPokemon", pokemon.getNameToRender()); - scene.loadSe("PRSFX- Spotlight2", "battle_anims", "PRSFX- Spotlight2.wav"); + globalScene.loadSe("PRSFX- Spotlight2", "battle_anims", "PRSFX- Spotlight2.wav"); return true; }) - .withOnVisualsStart((scene: BattleScene) => { + .withOnVisualsStart(() => { // Animate the pokemon - const encounter = scene.currentBattle.mysteryEncounter!; + const encounter = globalScene.currentBattle.mysteryEncounter!; const pokemonSprite = encounter.introVisuals!.getSprites(); // Bounce at the end, then shiny sparkle if the Pokemon is shiny - scene.tweens.add({ + globalScene.tweens.add({ targets: pokemonSprite, duration: 300, ease: "Cubic.easeOut", @@ -134,7 +138,7 @@ export const UncommonBreedEncounter: MysteryEncounter = onComplete: () => encounter.introVisuals?.playShinySparkles() }); - scene.time.delayedCall(500, () => scene.playSound("battle_anims/PRSFX- Spotlight2")); + globalScene.time.delayedCall(500, () => globalScene.playSound("battle_anims/PRSFX- Spotlight2")); return true; }) .setLocalizationKey(`${namespace}`) @@ -151,9 +155,9 @@ export const UncommonBreedEncounter: MysteryEncounter = }, ], }, - async (scene: BattleScene) => { + async () => { // Pick battle - const encounter = scene.currentBattle.mysteryEncounter!; + const encounter = globalScene.currentBattle.mysteryEncounter!; const eggMove = encounter.misc.eggMove; if (!isNullOrUndefined(eggMove)) { @@ -171,8 +175,8 @@ export const UncommonBreedEncounter: MysteryEncounter = }); } - setEncounterRewards(scene, { fillRemaining: true }); - await initBattleWithEnemyConfig(scene, encounter.enemyPartyConfigs[0]); + setEncounterRewards({ fillRemaining: true }); + await initBattleWithEnemyConfig(encounter.enemyPartyConfigs[0]); } ) .withOption( @@ -189,33 +193,33 @@ export const UncommonBreedEncounter: MysteryEncounter = } ] }) - .withOptionPhase(async (scene: BattleScene) => { + .withOptionPhase(async () => { // Give it some food // Remove 4 random berries from player's party // Get all player berry items, remove from party, and store reference - const berryItems: BerryModifier[] = scene.findModifiers(m => m instanceof BerryModifier) as BerryModifier[]; + const berryItems: BerryModifier[] = globalScene.findModifiers(m => m instanceof BerryModifier) as BerryModifier[]; for (let i = 0; i < 4; i++) { const index = randSeedInt(berryItems.length); const randBerry = berryItems[index]; randBerry.stackCount--; if (randBerry.stackCount === 0) { - scene.removeModifier(randBerry); + globalScene.removeModifier(randBerry); berryItems.splice(index, 1); } } - await scene.updateModifiers(true, true); + await globalScene.updateModifiers(true, true); // Pokemon joins the team, with 2 egg moves - const encounter = scene.currentBattle.mysteryEncounter!; + const encounter = globalScene.currentBattle.mysteryEncounter!; const pokemon = encounter.misc.pokemon; // Give 1 additional egg move givePokemonExtraEggMove(pokemon, encounter.misc.eggMove); - await catchPokemon(scene, pokemon, null, PokeballType.POKEBALL, false); - setEncounterRewards(scene, { fillRemaining: true }); - leaveEncounterWithoutBattle(scene); + await catchPokemon(pokemon, null, PokeballType.POKEBALL, false); + setEncounterRewards({ fillRemaining: true }); + leaveEncounterWithoutBattle(); }) .build() ) @@ -233,10 +237,10 @@ export const UncommonBreedEncounter: MysteryEncounter = } ] }) - .withOptionPhase(async (scene: BattleScene) => { + .withOptionPhase(async () => { // Attract the pokemon with a move // Pokemon joins the team, with 2 egg moves and IVs rolled an additional time - const encounter = scene.currentBattle.mysteryEncounter!; + const encounter = globalScene.currentBattle.mysteryEncounter!; const pokemon = encounter.misc.pokemon; // Give 1 additional egg move @@ -248,12 +252,12 @@ export const UncommonBreedEncounter: MysteryEncounter = return newValue > iv ? newValue : iv; }); - await catchPokemon(scene, pokemon, null, PokeballType.POKEBALL, false); + await catchPokemon(pokemon, null, PokeballType.POKEBALL, false); if (encounter.selectedOption?.primaryPokemon?.id) { - setEncounterExp(scene, encounter.selectedOption.primaryPokemon.id, pokemon.getExpValue(), false); + setEncounterExp(encounter.selectedOption.primaryPokemon.id, pokemon.getExpValue(), false); } - setEncounterRewards(scene, { fillRemaining: true }); - leaveEncounterWithoutBattle(scene); + setEncounterRewards({ fillRemaining: true }); + leaveEncounterWithoutBattle(); }) .build() ) diff --git a/src/data/mystery-encounters/encounters/weird-dream-encounter.ts b/src/data/mystery-encounters/encounters/weird-dream-encounter.ts index 3d2e8493d44..392a963e639 100644 --- a/src/data/mystery-encounters/encounters/weird-dream-encounter.ts +++ b/src/data/mystery-encounters/encounters/weird-dream-encounter.ts @@ -1,20 +1,27 @@ -import { Type } from "#enums/type"; +import type { Type } from "#enums/type"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { Species } from "#enums/species"; -import BattleScene from "#app/battle-scene"; -import MysteryEncounter, { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; +import { globalScene } from "#app/global-scene"; +import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; +import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; -import { EnemyPartyConfig, EnemyPokemonConfig, generateModifierType, initBattleWithEnemyConfig, leaveEncounterWithoutBattle, setEncounterRewards, } from "../utils/encounter-phase-utils"; +import type { EnemyPartyConfig, EnemyPokemonConfig } from "../utils/encounter-phase-utils"; +import { generateModifierType, initBattleWithEnemyConfig, leaveEncounterWithoutBattle, setEncounterRewards, } from "../utils/encounter-phase-utils"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import Pokemon, { PlayerPokemon, PokemonMove } from "#app/field/pokemon"; +import type { PlayerPokemon } from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; +import { PokemonMove } from "#app/field/pokemon"; import { IntegerHolder, isNullOrUndefined, randSeedInt, randSeedShuffle } from "#app/utils"; -import PokemonSpecies, { allSpecies, getPokemonSpecies } from "#app/data/pokemon-species"; -import { HiddenAbilityRateBoosterModifier, PokemonFormChangeItemModifier, PokemonHeldItemModifier } from "#app/modifier/modifier"; +import type PokemonSpecies from "#app/data/pokemon-species"; +import { allSpecies, getPokemonSpecies } from "#app/data/pokemon-species"; +import type { PokemonHeldItemModifier } from "#app/modifier/modifier"; +import { HiddenAbilityRateBoosterModifier, PokemonFormChangeItemModifier } from "#app/modifier/modifier"; import { achvs } from "#app/system/achv"; import { CustomPokemonData } from "#app/data/custom-pokemon-data"; import { showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; -import { modifierTypes, PokemonHeldItemModifierType } from "#app/modifier/modifier-type"; +import type { PokemonHeldItemModifierType } from "#app/modifier/modifier-type"; +import { modifierTypes } from "#app/modifier/modifier-type"; import i18next from "#app/plugins/i18n"; import { doPokemonTransformationSequence, TransformationScreenPosition } from "#app/data/mystery-encounters/utils/encounter-transformation-sequence"; import { getLevelTotalExp } from "#app/data/exp"; @@ -25,7 +32,7 @@ import { PlayerGender } from "#enums/player-gender"; import { TrainerType } from "#enums/trainer-type"; import PokemonData from "#app/system/pokemon-data"; import { Nature } from "#enums/nature"; -import HeldModifierConfig from "#app/interfaces/held-modifier-config"; +import type HeldModifierConfig from "#app/interfaces/held-modifier-config"; import { trainerConfigs, TrainerPartyTemplate } from "#app/data/trainer-config"; import { PartyMemberStrength } from "#enums/party-member-strength"; @@ -138,21 +145,21 @@ export const WeirdDreamEncounter: MysteryEncounter = .withTitle(`${namespace}:title`) .withDescription(`${namespace}:description`) .withQuery(`${namespace}:query`) - .withOnInit((scene: BattleScene) => { - scene.loadBgm("mystery_encounter_weird_dream", "mystery_encounter_weird_dream.mp3"); + .withOnInit(() => { + globalScene.loadBgm("mystery_encounter_weird_dream", "mystery_encounter_weird_dream.mp3"); // Calculate all the newly transformed Pokemon and begin asset load - const teamTransformations = getTeamTransformations(scene); + const teamTransformations = getTeamTransformations(); const loadAssets = teamTransformations.map(t => (t.newPokemon as PlayerPokemon).loadAssets()); - scene.currentBattle.mysteryEncounter!.misc = { + globalScene.currentBattle.mysteryEncounter!.misc = { teamTransformations, loadAssets }; return true; }) - .withOnVisualsStart((scene: BattleScene) => { - scene.fadeAndSwitchBgm("mystery_encounter_weird_dream"); + .withOnVisualsStart(() => { + globalScene.fadeAndSwitchBgm("mystery_encounter_weird_dream"); return true; }) .withOption( @@ -168,25 +175,25 @@ export const WeirdDreamEncounter: MysteryEncounter = } ], }) - .withPreOptionPhase(async (scene: BattleScene) => { + .withPreOptionPhase(async () => { // Play the animation as the player goes through the dialogue - scene.time.delayedCall(1000, () => { - doShowDreamBackground(scene); + globalScene.time.delayedCall(1000, () => { + doShowDreamBackground(); }); - for (const transformation of scene.currentBattle.mysteryEncounter!.misc.teamTransformations) { - scene.removePokemonFromPlayerParty(transformation.previousPokemon, false); - scene.getPlayerParty().push(transformation.newPokemon); + for (const transformation of globalScene.currentBattle.mysteryEncounter!.misc.teamTransformations) { + globalScene.removePokemonFromPlayerParty(transformation.previousPokemon, false); + globalScene.getPlayerParty().push(transformation.newPokemon); } }) - .withOptionPhase(async (scene: BattleScene) => { + .withOptionPhase(async () => { // Starts cutscene dialogue, but does not await so that cutscene plays as player goes through dialogue - const cutsceneDialoguePromise = showEncounterText(scene, `${namespace}:option.1.cutscene`); + const cutsceneDialoguePromise = showEncounterText(`${namespace}:option.1.cutscene`); // Change the entire player's party // Wait for all new Pokemon assets to be loaded before showing transformation animations - await Promise.all(scene.currentBattle.mysteryEncounter!.misc.loadAssets); - const transformations = scene.currentBattle.mysteryEncounter!.misc.teamTransformations; + await Promise.all(globalScene.currentBattle.mysteryEncounter!.misc.loadAssets); + const transformations = globalScene.currentBattle.mysteryEncounter!.misc.teamTransformations; // If there are 1-3 transformations, do them centered back to back // Otherwise, the first 3 transformations are executed side-by-side, then any remaining 1-3 transformations occur in those same respective positions @@ -195,21 +202,21 @@ export const WeirdDreamEncounter: MysteryEncounter = const pokemon1 = transformation.previousPokemon; const pokemon2 = transformation.newPokemon; - await doPokemonTransformationSequence(scene, pokemon1, pokemon2, TransformationScreenPosition.CENTER); + await doPokemonTransformationSequence(pokemon1, pokemon2, TransformationScreenPosition.CENTER); } } else { - await doSideBySideTransformations(scene, transformations); + await doSideBySideTransformations(transformations); } // Make sure player has finished cutscene dialogue await cutsceneDialoguePromise; - doHideDreamBackground(scene); - await showEncounterText(scene, `${namespace}:option.1.dream_complete`); + doHideDreamBackground(); + await showEncounterText(`${namespace}:option.1.dream_complete`); - await doNewTeamPostProcess(scene, transformations); - setEncounterRewards(scene, { guaranteedModifierTypeFuncs: [ modifierTypes.MEMORY_MUSHROOM, modifierTypes.ROGUE_BALL, modifierTypes.MINT, modifierTypes.MINT, modifierTypes.MINT ], fillRemaining: false }); - leaveEncounterWithoutBattle(scene, true); + await doNewTeamPostProcess(transformations); + setEncounterRewards({ guaranteedModifierTypeFuncs: [ modifierTypes.MEMORY_MUSHROOM, modifierTypes.ROGUE_BALL, modifierTypes.MINT, modifierTypes.MINT, modifierTypes.MINT ], fillRemaining: false }); + leaveEncounterWithoutBattle(true); }) .build() ) @@ -223,9 +230,9 @@ export const WeirdDreamEncounter: MysteryEncounter = }, ], }, - async (scene: BattleScene) => { + async () => { // Battle your "future" team for some item rewards - const transformations: PokemonTransformation[] = scene.currentBattle.mysteryEncounter!.misc.teamTransformations; + const transformations: PokemonTransformation[] = globalScene.currentBattle.mysteryEncounter!.misc.teamTransformations; // Uses the pokemon that player's party would have transformed into const enemyPokemonConfigs: EnemyPokemonConfig[] = []; @@ -233,7 +240,7 @@ export const WeirdDreamEncounter: MysteryEncounter = const newPokemon = transformation.newPokemon; const previousPokemon = transformation.previousPokemon; - await postProcessTransformedPokemon(scene, previousPokemon, newPokemon, newPokemon.species.getRootSpeciesId(), true); + await postProcessTransformedPokemon(previousPokemon, newPokemon, newPokemon.species.getRootSpeciesId(), true); const dataSource = new PokemonData(newPokemon); dataSource.player = false; @@ -251,7 +258,7 @@ export const WeirdDreamEncounter: MysteryEncounter = if (shouldGetOldGateau(newPokemon)) { const stats = getOldGateauBoostedStats(newPokemon); newPokemonHeldItemConfigs.push({ - modifier: generateModifierType(scene, modifierTypes.MYSTERY_ENCOUNTER_OLD_GATEAU, [ OLD_GATEAU_STATS_UP, stats ]) as PokemonHeldItemModifierType, + modifier: generateModifierType(modifierTypes.MYSTERY_ENCOUNTER_OLD_GATEAU, [ OLD_GATEAU_STATS_UP, stats ]) as PokemonHeldItemModifierType, stackCount: 1, isTransferable: false }); @@ -268,7 +275,7 @@ export const WeirdDreamEncounter: MysteryEncounter = enemyPokemonConfigs.push(enemyConfig); } - const genderIndex = scene.gameData.gender ?? PlayerGender.UNSET; + const genderIndex = globalScene.gameData.gender ?? PlayerGender.UNSET; const trainerConfig = trainerConfigs[genderIndex === PlayerGender.FEMALE ? TrainerType.FUTURE_SELF_F : TrainerType.FUTURE_SELF_M].clone(); trainerConfig.setPartyTemplates(new TrainerPartyTemplate(transformations.length, PartyMemberStrength.STRONG)); const enemyPartyConfig: EnemyPartyConfig = { @@ -280,7 +287,7 @@ export const WeirdDreamEncounter: MysteryEncounter = const onBeforeRewards = () => { // Before battle rewards, unlock the passive on a pokemon in the player's team for the rest of the run (not permanently) // One random pokemon will get its passive unlocked - const passiveDisabledPokemon = scene.getPlayerParty().filter(p => !p.passive); + const passiveDisabledPokemon = globalScene.getPlayerParty().filter(p => !p.passive); if (passiveDisabledPokemon?.length > 0) { const enablePassiveMon = passiveDisabledPokemon[randSeedInt(passiveDisabledPokemon.length)]; enablePassiveMon.passive = true; @@ -288,10 +295,10 @@ export const WeirdDreamEncounter: MysteryEncounter = } }; - setEncounterRewards(scene, { guaranteedModifierTiers: [ ModifierTier.ROGUE, ModifierTier.ROGUE, ModifierTier.ULTRA, ModifierTier.ULTRA, ModifierTier.GREAT, ModifierTier.GREAT ], fillRemaining: false }, undefined, onBeforeRewards); + setEncounterRewards({ guaranteedModifierTiers: [ ModifierTier.ROGUE, ModifierTier.ROGUE, ModifierTier.ULTRA, ModifierTier.ULTRA, ModifierTier.GREAT, ModifierTier.GREAT ], fillRemaining: false }, undefined, onBeforeRewards); - await showEncounterText(scene, `${namespace}:option.2.selected_2`, null, undefined, true); - await initBattleWithEnemyConfig(scene, enemyPartyConfig); + await showEncounterText(`${namespace}:option.2.selected_2`, null, undefined, true); + await initBattleWithEnemyConfig(enemyPartyConfig); } ) .withSimpleOption( @@ -304,9 +311,9 @@ export const WeirdDreamEncounter: MysteryEncounter = }, ], }, - async (scene: BattleScene) => { + async () => { // Leave, reduce party levels by 10% - for (const pokemon of scene.getPlayerParty()) { + for (const pokemon of globalScene.getPlayerParty()) { pokemon.level = Math.max(Math.ceil((100 - PERCENT_LEVEL_LOSS_ON_REFUSE) / 100 * pokemon.level), 1); pokemon.exp = getLevelTotalExp(pokemon.level, pokemon.species.growthRate); pokemon.levelExp = 0; @@ -316,7 +323,7 @@ export const WeirdDreamEncounter: MysteryEncounter = await pokemon.updateInfo(); } - leaveEncounterWithoutBattle(scene, true); + leaveEncounterWithoutBattle(true); return true; } ) @@ -329,8 +336,8 @@ interface PokemonTransformation { heldItems: PokemonHeldItemModifier[]; } -function getTeamTransformations(scene: BattleScene): PokemonTransformation[] { - const party = scene.getPlayerParty(); +function getTeamTransformations(): PokemonTransformation[] { + const party = globalScene.getPlayerParty(); // Removes all pokemon from the party const alreadyUsedSpecies: PokemonSpecies[] = party.map(p => p.species); const pokemonTransformations: PokemonTransformation[] = party.map(p => { @@ -379,37 +386,37 @@ function getTeamTransformations(scene: BattleScene): PokemonTransformation[] { for (const transformation of pokemonTransformations) { const newAbilityIndex = randSeedInt(transformation.newSpecies.getAbilityCount()); - transformation.newPokemon = scene.addPlayerPokemon(transformation.newSpecies, transformation.previousPokemon.level, newAbilityIndex, undefined); + transformation.newPokemon = globalScene.addPlayerPokemon(transformation.newSpecies, transformation.previousPokemon.level, newAbilityIndex, undefined); } return pokemonTransformations; } -async function doNewTeamPostProcess(scene: BattleScene, transformations: PokemonTransformation[]) { +async function doNewTeamPostProcess(transformations: PokemonTransformation[]) { let atLeastOneNewStarter = false; for (const transformation of transformations) { const previousPokemon = transformation.previousPokemon; const newPokemon = transformation.newPokemon; const speciesRootForm = newPokemon.species.getRootSpeciesId(); - if (await postProcessTransformedPokemon(scene, previousPokemon, newPokemon, speciesRootForm)) { + if (await postProcessTransformedPokemon(previousPokemon, newPokemon, speciesRootForm)) { atLeastOneNewStarter = true; } // Copy old items to new pokemon for (const item of transformation.heldItems) { item.pokemonId = newPokemon.id; - await scene.addModifier(item, false, false, false, true); + await globalScene.addModifier(item, false, false, false, true); } // Any pokemon that is below 570 BST gets +20 permanent BST to 3 stats if (shouldGetOldGateau(newPokemon)) { const stats = getOldGateauBoostedStats(newPokemon); const modType = modifierTypes.MYSTERY_ENCOUNTER_OLD_GATEAU() - .generateType(scene.getPlayerParty(), [ OLD_GATEAU_STATS_UP, stats ]) + .generateType(globalScene.getPlayerParty(), [ OLD_GATEAU_STATS_UP, stats ]) ?.withIdFromFunc(modifierTypes.MYSTERY_ENCOUNTER_OLD_GATEAU); const modifier = modType?.newModifier(newPokemon); if (modifier) { - await scene.addModifier(modifier, false, false, false, true); + await globalScene.addModifier(modifier, false, false, false, true); } } @@ -418,7 +425,7 @@ async function doNewTeamPostProcess(scene: BattleScene, transformations: Pokemon } // One random pokemon will get its passive unlocked - const passiveDisabledPokemon = scene.getPlayerParty().filter(p => !p.passive); + const passiveDisabledPokemon = globalScene.getPlayerParty().filter(p => !p.passive); if (passiveDisabledPokemon?.length > 0) { const enablePassiveMon = passiveDisabledPokemon[randSeedInt(passiveDisabledPokemon.length)]; enablePassiveMon.passive = true; @@ -427,27 +434,26 @@ async function doNewTeamPostProcess(scene: BattleScene, transformations: Pokemon // If at least one new starter was unlocked, play 1 fanfare if (atLeastOneNewStarter) { - scene.playSound("level_up_fanfare"); + globalScene.playSound("level_up_fanfare"); } } /** * Applies special changes to the newly transformed pokemon, such as passing previous moves, gaining egg moves, etc. * Returns whether the transformed pokemon unlocks a new starter for the player. - * @param scene * @param previousPokemon * @param newPokemon * @param speciesRootForm * @param forBattle Default `false`. If false, will perform achievements and dex unlocks for the player. */ -async function postProcessTransformedPokemon(scene: BattleScene, previousPokemon: PlayerPokemon, newPokemon: PlayerPokemon, speciesRootForm: Species, forBattle: boolean = false): Promise { +async function postProcessTransformedPokemon(previousPokemon: PlayerPokemon, newPokemon: PlayerPokemon, speciesRootForm: Species, forBattle: boolean = false): Promise { let isNewStarter = false; // Roll HA a second time if (newPokemon.species.abilityHidden) { const hiddenIndex = newPokemon.species.ability2 ? 2 : 1; if (newPokemon.abilityIndex < hiddenIndex) { const hiddenAbilityChance = new IntegerHolder(256); - scene.applyModifiers(HiddenAbilityRateBoosterModifier, true, hiddenAbilityChance); + globalScene.applyModifiers(HiddenAbilityRateBoosterModifier, true, hiddenAbilityChance); const hasHiddenAbility = !randSeedInt(hiddenAbilityChance.value); @@ -469,26 +475,26 @@ async function postProcessTransformedPokemon(scene: BattleScene, previousPokemon // For pokemon at/below 570 BST or any shiny pokemon, unlock it permanently as if you had caught it if (!forBattle && (newPokemon.getSpeciesForm().getBaseStatTotal() <= NON_LEGENDARY_BST_THRESHOLD || newPokemon.isShiny())) { if (newPokemon.getSpeciesForm().abilityHidden && newPokemon.abilityIndex === newPokemon.getSpeciesForm().getAbilityCount() - 1) { - scene.validateAchv(achvs.HIDDEN_ABILITY); + globalScene.validateAchv(achvs.HIDDEN_ABILITY); } if (newPokemon.species.subLegendary) { - scene.validateAchv(achvs.CATCH_SUB_LEGENDARY); + globalScene.validateAchv(achvs.CATCH_SUB_LEGENDARY); } if (newPokemon.species.legendary) { - scene.validateAchv(achvs.CATCH_LEGENDARY); + globalScene.validateAchv(achvs.CATCH_LEGENDARY); } if (newPokemon.species.mythical) { - scene.validateAchv(achvs.CATCH_MYTHICAL); + globalScene.validateAchv(achvs.CATCH_MYTHICAL); } - scene.gameData.updateSpeciesDexIvs(newPokemon.species.getRootSpeciesId(true), newPokemon.ivs); - const newStarterUnlocked = await scene.gameData.setPokemonCaught(newPokemon, true, false, false); + globalScene.gameData.updateSpeciesDexIvs(newPokemon.species.getRootSpeciesId(true), newPokemon.ivs); + const newStarterUnlocked = await globalScene.gameData.setPokemonCaught(newPokemon, true, false, false); if (newStarterUnlocked) { isNewStarter = true; - await showEncounterText(scene, i18next.t("battle:addedAsAStarter", { pokemonName: getPokemonSpecies(speciesRootForm).getName() })); + await showEncounterText(i18next.t("battle:addedAsAStarter", { pokemonName: getPokemonSpecies(speciesRootForm).getName() })); } } @@ -504,8 +510,8 @@ async function postProcessTransformedPokemon(scene: BattleScene, previousPokemon }); // For pokemon that the player owns (including ones just caught), gain a candy - if (!forBattle && !!scene.gameData.dexData[speciesRootForm].caughtAttr) { - scene.gameData.addStarterCandy(getPokemonSpecies(speciesRootForm), 1); + if (!forBattle && !!globalScene.gameData.dexData[speciesRootForm].caughtAttr) { + globalScene.gameData.addStarterCandy(getPokemonSpecies(speciesRootForm), 1); } // Set the moveset of the new pokemon to be the same as previous, but with 1 egg move and 1 (attempted) STAB move of the new species @@ -515,7 +521,7 @@ async function postProcessTransformedPokemon(scene: BattleScene, previousPokemon newPokemon.moveset = previousPokemon.moveset.slice(0); - const newEggMoveIndex = await addEggMoveToNewPokemonMoveset(scene, newPokemon, speciesRootForm, forBattle); + const newEggMoveIndex = await addEggMoveToNewPokemonMoveset(newPokemon, speciesRootForm, forBattle); // Try to add a favored STAB move (might fail if Pokemon already knows a bunch of moves from newPokemonGeneratedMoveset) addFavoredMoveToNewPokemonMoveset(newPokemon, newPokemonGeneratedMoveset, newEggMoveIndex); @@ -597,31 +603,31 @@ function getTransformedSpecies(originalBst: number, bstSearchRange: [number, num return newSpecies; } -function doShowDreamBackground(scene: BattleScene) { - const transformationContainer = scene.add.container(0, -scene.game.canvas.height / 6); +function doShowDreamBackground() { + const transformationContainer = globalScene.add.container(0, -globalScene.game.canvas.height / 6); transformationContainer.name = "Dream Background"; // In case it takes a bit for video to load - const transformationStaticBg = scene.add.rectangle(0, 0, scene.game.canvas.width / 6, scene.game.canvas.height / 6, 0); + const transformationStaticBg = globalScene.add.rectangle(0, 0, globalScene.game.canvas.width / 6, globalScene.game.canvas.height / 6, 0); transformationStaticBg.setName("Black Background"); transformationStaticBg.setOrigin(0, 0); transformationContainer.add(transformationStaticBg); transformationStaticBg.setVisible(true); - const transformationVideoBg: Phaser.GameObjects.Video = scene.add.video(0, 0, "evo_bg").stop(); + const transformationVideoBg: Phaser.GameObjects.Video = globalScene.add.video(0, 0, "evo_bg").stop(); transformationVideoBg.setLoop(true); transformationVideoBg.setOrigin(0, 0); transformationVideoBg.setScale(0.4359673025); transformationContainer.add(transformationVideoBg); - scene.fieldUI.add(transformationContainer); - scene.fieldUI.bringToTop(transformationContainer); + globalScene.fieldUI.add(transformationContainer); + globalScene.fieldUI.bringToTop(transformationContainer); transformationVideoBg.play(); transformationContainer.setVisible(true); transformationContainer.alpha = 0; - scene.tweens.add({ + globalScene.tweens.add({ targets: transformationContainer, alpha: 1, duration: 3000, @@ -629,39 +635,39 @@ function doShowDreamBackground(scene: BattleScene) { }); } -function doHideDreamBackground(scene: BattleScene) { - const transformationContainer = scene.fieldUI.getByName("Dream Background"); +function doHideDreamBackground() { + const transformationContainer = globalScene.fieldUI.getByName("Dream Background"); - scene.tweens.add({ + globalScene.tweens.add({ targets: transformationContainer, alpha: 0, duration: 3000, ease: "Sine.easeInOut", onComplete: () => { - scene.fieldUI.remove(transformationContainer, true); + globalScene.fieldUI.remove(transformationContainer, true); } }); } -function doSideBySideTransformations(scene: BattleScene, transformations: PokemonTransformation[]) { +function doSideBySideTransformations(transformations: PokemonTransformation[]) { return new Promise(resolve => { const allTransformationPromises: Promise[] = []; for (let i = 0; i < 3; i++) { const delay = i * 4000; - scene.time.delayedCall(delay, () => { + globalScene.time.delayedCall(delay, () => { const transformation = transformations[i]; const pokemon1 = transformation.previousPokemon; const pokemon2 = transformation.newPokemon; const screenPosition = i as TransformationScreenPosition; - const transformationPromise = doPokemonTransformationSequence(scene, pokemon1, pokemon2, screenPosition) + const transformationPromise = doPokemonTransformationSequence(pokemon1, pokemon2, screenPosition) .then(() => { if (transformations.length > i + 3) { const nextTransformationAtPosition = transformations[i + 3]; const nextPokemon1 = nextTransformationAtPosition.previousPokemon; const nextPokemon2 = nextTransformationAtPosition.newPokemon; - allTransformationPromises.push(doPokemonTransformationSequence(scene, nextPokemon1, nextPokemon2, screenPosition)); + allTransformationPromises.push(doPokemonTransformationSequence(nextPokemon1, nextPokemon2, screenPosition)); } }); allTransformationPromises.push(transformationPromise); @@ -682,11 +688,10 @@ function doSideBySideTransformations(scene: BattleScene, transformations: Pokemo /** * Returns index of the new egg move within the Pokemon's moveset (not the index of the move in `speciesEggMoves`) - * @param scene * @param newPokemon * @param speciesRootForm */ -async function addEggMoveToNewPokemonMoveset(scene: BattleScene, newPokemon: PlayerPokemon, speciesRootForm: Species, forBattle: boolean = false): Promise { +async function addEggMoveToNewPokemonMoveset(newPokemon: PlayerPokemon, speciesRootForm: Species, forBattle: boolean = false): Promise { let eggMoveIndex: null | number = null; const eggMoves = newPokemon.getEggMoves()?.slice(0); if (eggMoves) { @@ -712,8 +717,8 @@ async function addEggMoveToNewPokemonMoveset(scene: BattleScene, newPokemon: Pla } // For pokemon that the player owns (including ones just caught), unlock the egg move - if (!forBattle && !isNullOrUndefined(randomEggMoveIndex) && !!scene.gameData.dexData[speciesRootForm].caughtAttr) { - await scene.gameData.setEggMoveUnlocked(getPokemonSpecies(speciesRootForm), randomEggMoveIndex, true); + if (!forBattle && !isNullOrUndefined(randomEggMoveIndex) && !!globalScene.gameData.dexData[speciesRootForm].caughtAttr) { + await globalScene.gameData.setEggMoveUnlocked(getPokemonSpecies(speciesRootForm), randomEggMoveIndex, true); } } } diff --git a/src/data/mystery-encounters/mystery-encounter-dialogue.ts b/src/data/mystery-encounters/mystery-encounter-dialogue.ts index e0ba8512d34..39db3d58690 100644 --- a/src/data/mystery-encounters/mystery-encounter-dialogue.ts +++ b/src/data/mystery-encounters/mystery-encounter-dialogue.ts @@ -1,4 +1,4 @@ -import { TextStyle } from "#app/ui/text"; +import type { TextStyle } from "#app/ui/text"; export class TextDisplay { speaker?: string; diff --git a/src/data/mystery-encounters/mystery-encounter-option.ts b/src/data/mystery-encounters/mystery-encounter-option.ts index 4ff8fd95f85..d0078b3686e 100644 --- a/src/data/mystery-encounters/mystery-encounter-option.ts +++ b/src/data/mystery-encounters/mystery-encounter-option.ts @@ -1,15 +1,17 @@ -import { OptionTextDisplay } from "#app/data/mystery-encounters/mystery-encounter-dialogue"; -import { Moves } from "#app/enums/moves"; -import Pokemon, { PlayerPokemon } from "#app/field/pokemon"; -import BattleScene from "#app/battle-scene"; -import { Type } from "#enums/type"; +import type { OptionTextDisplay } from "#app/data/mystery-encounters/mystery-encounter-dialogue"; +import type { Moves } from "#app/enums/moves"; +import type { PlayerPokemon } from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; +import { globalScene } from "#app/global-scene"; +import type { Type } from "#enums/type"; import { EncounterPokemonRequirement, EncounterSceneRequirement, MoneyRequirement, TypeRequirement } from "#app/data/mystery-encounters/mystery-encounter-requirements"; -import { CanLearnMoveRequirement, CanLearnMoveRequirementOptions } from "./requirements/can-learn-move-requirement"; +import type { CanLearnMoveRequirementOptions } from "./requirements/can-learn-move-requirement"; +import { CanLearnMoveRequirement } from "./requirements/can-learn-move-requirement"; import { isNullOrUndefined, randSeedInt } from "#app/utils"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -export type OptionPhaseCallback = (scene: BattleScene) => Promise; +export type OptionPhaseCallback = () => Promise; /** * Used by {@linkcode MysteryEncounterOptionBuilder} class to define required/optional properties on the {@linkcode MysteryEncounterOption} class when building. @@ -74,21 +76,19 @@ export default class MysteryEncounterOption implements IMysteryEncounterOption { /** * Returns true if all {@linkcode EncounterRequirement}s for the option are met - * @param scene */ - meetsRequirements(scene: BattleScene): boolean { - return !this.requirements.some(requirement => !requirement.meetsRequirement(scene)) - && this.meetsSupportingRequirementAndSupportingPokemonSelected(scene) - && this.meetsPrimaryRequirementAndPrimaryPokemonSelected(scene); + meetsRequirements(): boolean { + return !this.requirements.some(requirement => !requirement.meetsRequirement()) + && this.meetsSupportingRequirementAndSupportingPokemonSelected() + && this.meetsPrimaryRequirementAndPrimaryPokemonSelected(); } /** * Returns true if all PRIMARY {@linkcode EncounterRequirement}s for the option are met - * @param scene * @param pokemon */ - pokemonMeetsPrimaryRequirements(scene: BattleScene, pokemon: Pokemon): boolean { - return !this.primaryPokemonRequirements.some(req => !req.queryParty(scene.getPlayerParty()).map(p => p.id).includes(pokemon.id)); + pokemonMeetsPrimaryRequirements(pokemon: Pokemon): boolean { + return !this.primaryPokemonRequirements.some(req => !req.queryParty(globalScene.getPlayerParty()).map(p => p.id).includes(pokemon.id)); } /** @@ -96,16 +96,15 @@ export default class MysteryEncounterOption implements IMysteryEncounterOption { * AND there is a valid Pokemon assigned to {@linkcode primaryPokemon}. * If both {@linkcode primaryPokemonRequirements} and {@linkcode secondaryPokemonRequirements} are defined, * can cause scenarios where there are not enough Pokemon that are sufficient for all requirements. - * @param scene */ - meetsPrimaryRequirementAndPrimaryPokemonSelected(scene: BattleScene): boolean { + meetsPrimaryRequirementAndPrimaryPokemonSelected(): boolean { if (!this.primaryPokemonRequirements || this.primaryPokemonRequirements.length === 0) { return true; } - let qualified: PlayerPokemon[] = scene.getPlayerParty(); + let qualified: PlayerPokemon[] = globalScene.getPlayerParty(); for (const req of this.primaryPokemonRequirements) { - if (req.meetsRequirement(scene)) { - const queryParty = req.queryParty(scene.getPlayerParty()); + if (req.meetsRequirement()) { + const queryParty = req.queryParty(globalScene.getPlayerParty()); qualified = qualified.filter(pkmn => queryParty.includes(pkmn)); } else { this.primaryPokemon = undefined; @@ -154,18 +153,17 @@ export default class MysteryEncounterOption implements IMysteryEncounterOption { * AND there is a valid Pokemon assigned to {@linkcode secondaryPokemon} (if applicable). * If both {@linkcode primaryPokemonRequirements} and {@linkcode secondaryPokemonRequirements} are defined, * can cause scenarios where there are not enough Pokemon that are sufficient for all requirements. - * @param scene */ - meetsSupportingRequirementAndSupportingPokemonSelected(scene: BattleScene): boolean { + meetsSupportingRequirementAndSupportingPokemonSelected(): boolean { if (!this.secondaryPokemonRequirements || this.secondaryPokemonRequirements.length === 0) { this.secondaryPokemon = []; return true; } - let qualified: PlayerPokemon[] = scene.getPlayerParty(); + let qualified: PlayerPokemon[] = globalScene.getPlayerParty(); for (const req of this.secondaryPokemonRequirements) { - if (req.meetsRequirement(scene)) { - const queryParty = req.queryParty(scene.getPlayerParty()); + if (req.meetsRequirement()) { + const queryParty = req.queryParty(globalScene.getPlayerParty()); qualified = qualified.filter(pkmn => queryParty.includes(pkmn)); } else { this.secondaryPokemon = []; diff --git a/src/data/mystery-encounters/mystery-encounter-requirements.ts b/src/data/mystery-encounters/mystery-encounter-requirements.ts index 811b622de76..63fb0cc5380 100644 --- a/src/data/mystery-encounters/mystery-encounter-requirements.ts +++ b/src/data/mystery-encounters/mystery-encounter-requirements.ts @@ -1,4 +1,4 @@ -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { allAbilities } from "#app/data/ability"; import { EvolutionItem, pokemonEvolutions } from "#app/data/balance/pokemon-evolutions"; import { Nature } from "#enums/nature"; @@ -6,35 +6,33 @@ import { FormChangeItem, pokemonFormChanges, SpeciesFormChangeItemTrigger } from import { StatusEffect } from "#enums/status-effect"; import { Type } from "#enums/type"; import { WeatherType } from "#enums/weather-type"; -import { PlayerPokemon } from "#app/field/pokemon"; +import type { PlayerPokemon } from "#app/field/pokemon"; import { AttackTypeBoosterModifier } from "#app/modifier/modifier"; -import { AttackTypeBoosterModifierType } from "#app/modifier/modifier-type"; +import type { AttackTypeBoosterModifierType } from "#app/modifier/modifier-type"; import { isNullOrUndefined } from "#app/utils"; -import { Abilities } from "#enums/abilities"; +import type { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; -import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import type { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { Species } from "#enums/species"; import { SpeciesFormKey } from "#enums/species-form-key"; import { TimeOfDay } from "#enums/time-of-day"; export interface EncounterRequirement { - meetsRequirement(scene: BattleScene): boolean; // Boolean to see if a requirement is met - getDialogueToken(scene: BattleScene, pokemon?: PlayerPokemon): [string, string]; + meetsRequirement(): boolean; // Boolean to see if a requirement is met + getDialogueToken(pokemon?: PlayerPokemon): [string, string]; } export abstract class EncounterSceneRequirement implements EncounterRequirement { /** * Returns whether the EncounterSceneRequirement's... requirements, are met by the given scene - * @param partyPokemon */ - abstract meetsRequirement(scene: BattleScene): boolean; + abstract meetsRequirement(): boolean; /** * Returns a dialogue token key/value pair for a given Requirement. * Should be overridden by child Requirement classes. - * @param scene * @param pokemon */ - abstract getDialogueToken(scene: BattleScene, pokemon?: PlayerPokemon): [string, string]; + abstract getDialogueToken(pokemon?: PlayerPokemon): [string, string]; } /** @@ -61,33 +59,31 @@ export class CombinationSceneRequirement extends EncounterSceneRequirement { /** * Checks if all/any requirements are met (depends on {@linkcode isAnd}) - * @param scene The {@linkcode BattleScene} to check against * @returns true if all/any requirements are met (depends on {@linkcode isAnd}) */ - override meetsRequirement(scene: BattleScene): boolean { + override meetsRequirement(): boolean { return this.isAnd - ? this.requirements.every(req => req.meetsRequirement(scene)) - : this.requirements.some(req => req.meetsRequirement(scene)); + ? this.requirements.every(req => req.meetsRequirement()) + : this.requirements.some(req => req.meetsRequirement()); } /** * Retrieves a dialogue token key/value pair for the given {@linkcode EncounterSceneRequirement | requirements}. - * @param scene The {@linkcode BattleScene} to check against * @param pokemon The {@linkcode PlayerPokemon} to check against * @returns A dialogue token key/value pair * @throws An {@linkcode Error} if {@linkcode isAnd} is `true` (not supported) */ - override getDialogueToken(scene: BattleScene, pokemon?: PlayerPokemon): [string, string] { + override getDialogueToken(pokemon?: PlayerPokemon): [string, string] { if (this.isAnd) { throw new Error("Not implemented (Sorry)"); } else { for (const req of this.requirements) { - if (req.meetsRequirement(scene)) { - return req.getDialogueToken(scene, pokemon); + if (req.meetsRequirement()) { + return req.getDialogueToken(pokemon); } } - return this.requirements[0].getDialogueToken(scene, pokemon); + return this.requirements[0].getDialogueToken(pokemon); } } } @@ -98,9 +94,8 @@ export abstract class EncounterPokemonRequirement implements EncounterRequiremen /** * Returns whether the EncounterPokemonRequirement's... requirements, are met by the given scene - * @param partyPokemon */ - abstract meetsRequirement(scene: BattleScene): boolean; + abstract meetsRequirement(): boolean; /** * Returns all party members that are compatible with this requirement. For non pokemon related requirements, the entire party is returned. @@ -111,10 +106,9 @@ export abstract class EncounterPokemonRequirement implements EncounterRequiremen /** * Returns a dialogue token key/value pair for a given Requirement. * Should be overridden by child Requirement classes. - * @param scene * @param pokemon */ - abstract getDialogueToken(scene: BattleScene, pokemon?: PlayerPokemon): [string, string]; + abstract getDialogueToken(pokemon?: PlayerPokemon): [string, string]; } /** @@ -143,13 +137,12 @@ export class CombinationPokemonRequirement extends EncounterPokemonRequirement { /** * Checks if all/any requirements are met (depends on {@linkcode isAnd}) - * @param scene The {@linkcode BattleScene} to check against * @returns true if all/any requirements are met (depends on {@linkcode isAnd}) */ - override meetsRequirement(scene: BattleScene): boolean { + override meetsRequirement(): boolean { return this.isAnd - ? this.requirements.every(req => req.meetsRequirement(scene)) - : this.requirements.some(req => req.meetsRequirement(scene)); + ? this.requirements.every(req => req.meetsRequirement()) + : this.requirements.some(req => req.meetsRequirement()); } /** @@ -168,22 +161,21 @@ export class CombinationPokemonRequirement extends EncounterPokemonRequirement { /** * Retrieves a dialogue token key/value pair for the given {@linkcode EncounterPokemonRequirement | requirements}. - * @param scene The {@linkcode BattleScene} to check against * @param pokemon The {@linkcode PlayerPokemon} to check against * @returns A dialogue token key/value pair * @throws An {@linkcode Error} if {@linkcode isAnd} is `true` (not supported) */ - override getDialogueToken(scene: BattleScene, pokemon?: PlayerPokemon): [string, string] { + override getDialogueToken(pokemon?: PlayerPokemon): [string, string] { if (this.isAnd) { throw new Error("Not implemented (Sorry)"); } else { for (const req of this.requirements) { - if (req.meetsRequirement(scene)) { - return req.getDialogueToken(scene, pokemon); + if (req.meetsRequirement()) { + return req.getDialogueToken(pokemon); } } - return this.requirements[0].getDialogueToken(scene, pokemon); + return this.requirements[0].getDialogueToken(pokemon); } } } @@ -200,12 +192,12 @@ export class PreviousEncounterRequirement extends EncounterSceneRequirement { this.previousEncounterRequirement = previousEncounterRequirement; } - override meetsRequirement(scene: BattleScene): boolean { - return scene.mysteryEncounterSaveData.encounteredEvents.some(e => e.type === this.previousEncounterRequirement); + override meetsRequirement(): boolean { + return globalScene.mysteryEncounterSaveData.encounteredEvents.some(e => e.type === this.previousEncounterRequirement); } - override getDialogueToken(scene: BattleScene, pokemon?: PlayerPokemon): [string, string] { - return [ "previousEncounter", scene.mysteryEncounterSaveData.encounteredEvents.find(e => e.type === this.previousEncounterRequirement)?.[0].toString() ?? "" ]; + override getDialogueToken(pokemon?: PlayerPokemon): [string, string] { + return [ "previousEncounter", globalScene.mysteryEncounterSaveData.encounteredEvents.find(e => e.type === this.previousEncounterRequirement)?.[0].toString() ?? "" ]; } } @@ -222,9 +214,9 @@ export class WaveRangeRequirement extends EncounterSceneRequirement { this.waveRange = waveRange; } - override meetsRequirement(scene: BattleScene): boolean { + override meetsRequirement(): boolean { if (!isNullOrUndefined(this.waveRange) && this.waveRange[0] <= this.waveRange[1]) { - const waveIndex = scene.currentBattle.waveIndex; + const waveIndex = globalScene.currentBattle.waveIndex; if (waveIndex >= 0 && (this.waveRange[0] >= 0 && this.waveRange[0] > waveIndex) || (this.waveRange[1] >= 0 && this.waveRange[1] < waveIndex)) { return false; } @@ -232,8 +224,8 @@ export class WaveRangeRequirement extends EncounterSceneRequirement { return true; } - override getDialogueToken(scene: BattleScene, pokemon?: PlayerPokemon): [string, string] { - return [ "waveIndex", scene.currentBattle.waveIndex.toString() ]; + override getDialogueToken(pokemon?: PlayerPokemon): [string, string] { + return [ "waveIndex", globalScene.currentBattle.waveIndex.toString() ]; } } @@ -257,12 +249,12 @@ export class WaveModulusRequirement extends EncounterSceneRequirement { this.modulusValue = modulusValue; } - override meetsRequirement(scene: BattleScene): boolean { - return this.waveModuli.includes(scene.currentBattle.waveIndex % this.modulusValue); + override meetsRequirement(): boolean { + return this.waveModuli.includes(globalScene.currentBattle.waveIndex % this.modulusValue); } - override getDialogueToken(scene: BattleScene, pokemon?: PlayerPokemon): [string, string] { - return [ "waveIndex", scene.currentBattle.waveIndex.toString() ]; + override getDialogueToken(pokemon?: PlayerPokemon): [string, string] { + return [ "waveIndex", globalScene.currentBattle.waveIndex.toString() ]; } } @@ -274,8 +266,8 @@ export class TimeOfDayRequirement extends EncounterSceneRequirement { this.requiredTimeOfDay = Array.isArray(timeOfDay) ? timeOfDay : [ timeOfDay ]; } - override meetsRequirement(scene: BattleScene): boolean { - const timeOfDay = scene.arena?.getTimeOfDay(); + override meetsRequirement(): boolean { + const timeOfDay = globalScene.arena?.getTimeOfDay(); if (!isNullOrUndefined(timeOfDay) && this.requiredTimeOfDay?.length > 0 && !this.requiredTimeOfDay.includes(timeOfDay)) { return false; } @@ -283,8 +275,8 @@ export class TimeOfDayRequirement extends EncounterSceneRequirement { return true; } - override getDialogueToken(scene: BattleScene, pokemon?: PlayerPokemon): [string, string] { - return [ "timeOfDay", TimeOfDay[scene.arena.getTimeOfDay()].toLocaleLowerCase() ]; + override getDialogueToken(pokemon?: PlayerPokemon): [string, string] { + return [ "timeOfDay", TimeOfDay[globalScene.arena.getTimeOfDay()].toLocaleLowerCase() ]; } } @@ -296,8 +288,8 @@ export class WeatherRequirement extends EncounterSceneRequirement { this.requiredWeather = Array.isArray(weather) ? weather : [ weather ]; } - override meetsRequirement(scene: BattleScene): boolean { - const currentWeather = scene.arena.weather?.weatherType; + override meetsRequirement(): boolean { + const currentWeather = globalScene.arena.weather?.weatherType; if (!isNullOrUndefined(currentWeather) && this.requiredWeather?.length > 0 && !this.requiredWeather.includes(currentWeather!)) { return false; } @@ -305,8 +297,8 @@ export class WeatherRequirement extends EncounterSceneRequirement { return true; } - override getDialogueToken(scene: BattleScene, pokemon?: PlayerPokemon): [string, string] { - const currentWeather = scene.arena.weather?.weatherType; + override getDialogueToken(pokemon?: PlayerPokemon): [string, string] { + const currentWeather = globalScene.arena.weather?.weatherType; let token = ""; if (!isNullOrUndefined(currentWeather)) { token = WeatherType[currentWeather].replace("_", " ").toLocaleLowerCase(); @@ -331,9 +323,9 @@ export class PartySizeRequirement extends EncounterSceneRequirement { this.excludeDisallowedPokemon = excludeDisallowedPokemon; } - override meetsRequirement(scene: BattleScene): boolean { + override meetsRequirement(): boolean { if (!isNullOrUndefined(this.partySizeRange) && this.partySizeRange[0] <= this.partySizeRange[1]) { - const partySize = this.excludeDisallowedPokemon ? scene.getPokemonAllowedInBattle().length : scene.getPlayerParty().length; + const partySize = this.excludeDisallowedPokemon ? globalScene.getPokemonAllowedInBattle().length : globalScene.getPlayerParty().length; if (partySize >= 0 && (this.partySizeRange[0] >= 0 && this.partySizeRange[0] > partySize) || (this.partySizeRange[1] >= 0 && this.partySizeRange[1] < partySize)) { return false; } @@ -342,8 +334,8 @@ export class PartySizeRequirement extends EncounterSceneRequirement { return true; } - override getDialogueToken(scene: BattleScene, pokemon?: PlayerPokemon): [string, string] { - return [ "partySize", scene.getPlayerParty().length.toString() ]; + override getDialogueToken(pokemon?: PlayerPokemon): [string, string] { + return [ "partySize", globalScene.getPlayerParty().length.toString() ]; } } @@ -357,14 +349,14 @@ export class PersistentModifierRequirement extends EncounterSceneRequirement { this.requiredHeldItemModifiers = Array.isArray(heldItem) ? heldItem : [ heldItem ]; } - override meetsRequirement(scene: BattleScene): boolean { - const partyPokemon = scene.getPlayerParty(); + override meetsRequirement(): boolean { + const partyPokemon = globalScene.getPlayerParty(); if (isNullOrUndefined(partyPokemon) || this.requiredHeldItemModifiers?.length < 0) { return false; } let modifierCount = 0; this.requiredHeldItemModifiers.forEach(modifier => { - const matchingMods = scene.findModifiers(m => m.constructor.name === modifier); + const matchingMods = globalScene.findModifiers(m => m.constructor.name === modifier); if (matchingMods?.length > 0) { matchingMods.forEach(matchingMod => { modifierCount += matchingMod.stackCount; @@ -375,7 +367,7 @@ export class PersistentModifierRequirement extends EncounterSceneRequirement { return modifierCount >= this.minNumberOfItems; } - override getDialogueToken(scene: BattleScene, pokemon?: PlayerPokemon): [string, string] { + override getDialogueToken(pokemon?: PlayerPokemon): [string, string] { return [ "requiredItem", this.requiredHeldItemModifiers[0] ]; } } @@ -390,20 +382,20 @@ export class MoneyRequirement extends EncounterSceneRequirement { this.scalingMultiplier = scalingMultiplier ?? 0; } - override meetsRequirement(scene: BattleScene): boolean { - const money = scene.money; + override meetsRequirement(): boolean { + const money = globalScene.money; if (isNullOrUndefined(money)) { return false; } if (this.scalingMultiplier > 0) { - this.requiredMoney = scene.getWaveMoneyAmount(this.scalingMultiplier); + this.requiredMoney = globalScene.getWaveMoneyAmount(this.scalingMultiplier); } return !(this.requiredMoney > 0 && this.requiredMoney > money); } - override getDialogueToken(scene: BattleScene, pokemon?: PlayerPokemon): [string, string] { - const value = this.scalingMultiplier > 0 ? scene.getWaveMoneyAmount(this.scalingMultiplier).toString() : this.requiredMoney.toString(); + override getDialogueToken(pokemon?: PlayerPokemon): [string, string] { + const value = this.scalingMultiplier > 0 ? globalScene.getWaveMoneyAmount(this.scalingMultiplier).toString() : this.requiredMoney.toString(); return [ "money", value ]; } } @@ -420,8 +412,8 @@ export class SpeciesRequirement extends EncounterPokemonRequirement { this.requiredSpecies = Array.isArray(species) ? species : [ species ]; } - override meetsRequirement(scene: BattleScene): boolean { - const partyPokemon = scene.getPlayerParty(); + override meetsRequirement(): boolean { + const partyPokemon = globalScene.getPlayerParty(); if (isNullOrUndefined(partyPokemon) || this.requiredSpecies?.length < 0) { return false; } @@ -437,7 +429,7 @@ export class SpeciesRequirement extends EncounterPokemonRequirement { } } - override getDialogueToken(scene: BattleScene, pokemon?: PlayerPokemon): [string, string] { + override getDialogueToken(pokemon?: PlayerPokemon): [string, string] { if (pokemon?.species.speciesId && this.requiredSpecies.includes(pokemon.species.speciesId)) { return [ "species", Species[pokemon.species.speciesId] ]; } @@ -458,8 +450,8 @@ export class NatureRequirement extends EncounterPokemonRequirement { this.requiredNature = Array.isArray(nature) ? nature : [ nature ]; } - override meetsRequirement(scene: BattleScene): boolean { - const partyPokemon = scene.getPlayerParty(); + override meetsRequirement(): boolean { + const partyPokemon = globalScene.getPlayerParty(); if (isNullOrUndefined(partyPokemon) || this.requiredNature?.length < 0) { return false; } @@ -475,7 +467,7 @@ export class NatureRequirement extends EncounterPokemonRequirement { } } - override getDialogueToken(scene: BattleScene, pokemon?: PlayerPokemon): [string, string] { + override getDialogueToken(pokemon?: PlayerPokemon): [string, string] { if (!isNullOrUndefined(pokemon?.nature) && this.requiredNature.includes(pokemon.nature)) { return [ "nature", Nature[pokemon.nature] ]; } @@ -497,8 +489,8 @@ export class TypeRequirement extends EncounterPokemonRequirement { this.requiredType = Array.isArray(type) ? type : [ type ]; } - override meetsRequirement(scene: BattleScene): boolean { - let partyPokemon = scene.getPlayerParty(); + override meetsRequirement(): boolean { + let partyPokemon = globalScene.getPlayerParty(); if (isNullOrUndefined(partyPokemon)) { return false; @@ -520,7 +512,7 @@ export class TypeRequirement extends EncounterPokemonRequirement { } } - override getDialogueToken(scene: BattleScene, pokemon?: PlayerPokemon): [string, string] { + override getDialogueToken(pokemon?: PlayerPokemon): [string, string] { const includedTypes = this.requiredType.filter((ty) => pokemon?.getTypes().includes(ty)); if (includedTypes.length > 0) { return [ "type", Type[includedTypes[0]] ]; @@ -544,8 +536,8 @@ export class MoveRequirement extends EncounterPokemonRequirement { this.requiredMoves = Array.isArray(moves) ? moves : [ moves ]; } - override meetsRequirement(scene: BattleScene): boolean { - const partyPokemon = scene.getPlayerParty(); + override meetsRequirement(): boolean { + const partyPokemon = globalScene.getPlayerParty(); if (isNullOrUndefined(partyPokemon) || this.requiredMoves?.length < 0) { return false; } @@ -566,7 +558,7 @@ export class MoveRequirement extends EncounterPokemonRequirement { } } - override getDialogueToken(scene: BattleScene, pokemon?: PlayerPokemon): [string, string] { + override getDialogueToken(pokemon?: PlayerPokemon): [string, string] { const includedMoves = pokemon?.moveset.filter((move) => move?.moveId && this.requiredMoves.includes(move.moveId)); if (includedMoves && includedMoves.length > 0 && includedMoves[0]) { return [ "move", includedMoves[0].getName() ]; @@ -593,8 +585,8 @@ export class CompatibleMoveRequirement extends EncounterPokemonRequirement { this.requiredMoves = Array.isArray(learnableMove) ? learnableMove : [ learnableMove ]; } - override meetsRequirement(scene: BattleScene): boolean { - const partyPokemon = scene.getPlayerParty(); + override meetsRequirement(): boolean { + const partyPokemon = globalScene.getPlayerParty(); if (isNullOrUndefined(partyPokemon) || this.requiredMoves?.length < 0) { return false; } @@ -610,7 +602,7 @@ export class CompatibleMoveRequirement extends EncounterPokemonRequirement { } } - override getDialogueToken(scene: BattleScene, pokemon?: PlayerPokemon): [string, string] { + override getDialogueToken(pokemon?: PlayerPokemon): [string, string] { const includedCompatMoves = this.requiredMoves.filter((reqMove) => pokemon?.compatibleTms.filter((tm) => !pokemon.moveset.find(m => m?.moveId === tm)).includes(reqMove)); if (includedCompatMoves.length > 0) { return [ "compatibleMove", Moves[includedCompatMoves[0]] ]; @@ -634,8 +626,8 @@ export class AbilityRequirement extends EncounterPokemonRequirement { this.requiredAbilities = Array.isArray(abilities) ? abilities : [ abilities ]; } - override meetsRequirement(scene: BattleScene): boolean { - const partyPokemon = scene.getPlayerParty(); + override meetsRequirement(): boolean { + const partyPokemon = globalScene.getPlayerParty(); if (isNullOrUndefined(partyPokemon) || this.requiredAbilities?.length < 0) { return false; } @@ -655,7 +647,7 @@ export class AbilityRequirement extends EncounterPokemonRequirement { } } - override getDialogueToken(_scene: BattleScene, pokemon?: PlayerPokemon): [string, string] { + override getDialogueToken(pokemon?: PlayerPokemon): [string, string] { const matchingAbility = this.requiredAbilities.find(a => pokemon?.hasAbility(a, false)); if (!isNullOrUndefined(matchingAbility)) { return [ "ability", allAbilities[matchingAbility].name ]; @@ -676,8 +668,8 @@ export class StatusEffectRequirement extends EncounterPokemonRequirement { this.requiredStatusEffect = Array.isArray(statusEffect) ? statusEffect : [ statusEffect ]; } - override meetsRequirement(scene: BattleScene): boolean { - const partyPokemon = scene.getPlayerParty(); + override meetsRequirement(): boolean { + const partyPokemon = globalScene.getPlayerParty(); if (isNullOrUndefined(partyPokemon) || this.requiredStatusEffect?.length < 0) { return false; } @@ -713,7 +705,7 @@ export class StatusEffectRequirement extends EncounterPokemonRequirement { } } - override getDialogueToken(scene: BattleScene, pokemon?: PlayerPokemon): [string, string] { + override getDialogueToken(pokemon?: PlayerPokemon): [string, string] { const reqStatus = this.requiredStatusEffect.filter((a) => { if (a === StatusEffect.NONE) { return isNullOrUndefined(pokemon?.status) || isNullOrUndefined(pokemon.status.effect) || pokemon.status.effect === a; @@ -745,8 +737,8 @@ export class CanFormChangeWithItemRequirement extends EncounterPokemonRequiremen this.requiredFormChangeItem = Array.isArray(formChangeItem) ? formChangeItem : [ formChangeItem ]; } - override meetsRequirement(scene: BattleScene): boolean { - const partyPokemon = scene.getPlayerParty(); + override meetsRequirement(): boolean { + const partyPokemon = globalScene.getPlayerParty(); if (isNullOrUndefined(partyPokemon) || this.requiredFormChangeItem?.length < 0) { return false; } @@ -775,7 +767,7 @@ export class CanFormChangeWithItemRequirement extends EncounterPokemonRequiremen } } - override getDialogueToken(scene: BattleScene, pokemon?: PlayerPokemon): [string, string] { + override getDialogueToken(pokemon?: PlayerPokemon): [string, string] { const requiredItems = this.requiredFormChangeItem.filter((formChangeItem) => this.filterByForm(pokemon, formChangeItem)); if (requiredItems.length > 0) { return [ "formChangeItem", FormChangeItem[requiredItems[0]] ]; @@ -797,8 +789,8 @@ export class CanEvolveWithItemRequirement extends EncounterPokemonRequirement { this.requiredEvolutionItem = Array.isArray(evolutionItems) ? evolutionItems : [ evolutionItems ]; } - override meetsRequirement(scene: BattleScene): boolean { - const partyPokemon = scene.getPlayerParty(); + override meetsRequirement(): boolean { + const partyPokemon = globalScene.getPlayerParty(); if (isNullOrUndefined(partyPokemon) || this.requiredEvolutionItem?.length < 0) { return false; } @@ -825,7 +817,7 @@ export class CanEvolveWithItemRequirement extends EncounterPokemonRequirement { } } - override getDialogueToken(scene: BattleScene, pokemon?: PlayerPokemon): [string, string] { + override getDialogueToken(pokemon?: PlayerPokemon): [string, string] { const requiredItems = this.requiredEvolutionItem.filter((evoItem) => this.filterByEvo(pokemon, evoItem)); if (requiredItems.length > 0) { return [ "evolutionItem", EvolutionItem[requiredItems[0]] ]; @@ -848,8 +840,8 @@ export class HeldItemRequirement extends EncounterPokemonRequirement { this.requireTransferable = requireTransferable; } - override meetsRequirement(scene: BattleScene): boolean { - const partyPokemon = scene.getPlayerParty(); + override meetsRequirement(): boolean { + const partyPokemon = globalScene.getPlayerParty(); if (isNullOrUndefined(partyPokemon)) { return false; } @@ -873,7 +865,7 @@ export class HeldItemRequirement extends EncounterPokemonRequirement { } } - override getDialogueToken(scene: BattleScene, pokemon?: PlayerPokemon): [string, string] { + override getDialogueToken(pokemon?: PlayerPokemon): [string, string] { const requiredItems = pokemon?.getHeldItems().filter((it) => { return this.requiredHeldItemModifiers.some(heldItem => it.constructor.name === heldItem) && (!this.requireTransferable || it.isTransferable); @@ -899,8 +891,8 @@ export class AttackTypeBoosterHeldItemTypeRequirement extends EncounterPokemonRe this.requireTransferable = requireTransferable; } - override meetsRequirement(scene: BattleScene): boolean { - const partyPokemon = scene.getPlayerParty(); + override meetsRequirement(): boolean { + const partyPokemon = globalScene.getPlayerParty(); if (isNullOrUndefined(partyPokemon)) { return false; } @@ -928,7 +920,7 @@ export class AttackTypeBoosterHeldItemTypeRequirement extends EncounterPokemonRe } } - override getDialogueToken(scene: BattleScene, pokemon?: PlayerPokemon): [string, string] { + override getDialogueToken(pokemon?: PlayerPokemon): [string, string] { const requiredItems = pokemon?.getHeldItems().filter((it) => { return this.requiredHeldItemTypes.some(heldItemType => it instanceof AttackTypeBoosterModifier @@ -954,10 +946,10 @@ export class LevelRequirement extends EncounterPokemonRequirement { this.requiredLevelRange = requiredLevelRange; } - override meetsRequirement(scene: BattleScene): boolean { + override meetsRequirement(): boolean { // Party Pokemon inside required level range if (!isNullOrUndefined(this.requiredLevelRange) && this.requiredLevelRange[0] <= this.requiredLevelRange[1]) { - const partyPokemon = scene.getPlayerParty(); + const partyPokemon = globalScene.getPlayerParty(); const pokemonInRange = this.queryParty(partyPokemon); if (pokemonInRange.length < this.minNumberOfPokemon) { return false; @@ -975,7 +967,7 @@ export class LevelRequirement extends EncounterPokemonRequirement { } } - override getDialogueToken(scene: BattleScene, pokemon?: PlayerPokemon): [string, string] { + override getDialogueToken(pokemon?: PlayerPokemon): [string, string] { return [ "level", pokemon?.level.toString() ?? "" ]; } } @@ -992,10 +984,10 @@ export class FriendshipRequirement extends EncounterPokemonRequirement { this.requiredFriendshipRange = requiredFriendshipRange; } - override meetsRequirement(scene: BattleScene): boolean { + override meetsRequirement(): boolean { // Party Pokemon inside required friendship range if (!isNullOrUndefined(this.requiredFriendshipRange) && this.requiredFriendshipRange[0] <= this.requiredFriendshipRange[1]) { - const partyPokemon = scene.getPlayerParty(); + const partyPokemon = globalScene.getPlayerParty(); const pokemonInRange = this.queryParty(partyPokemon); if (pokemonInRange.length < this.minNumberOfPokemon) { return false; @@ -1013,7 +1005,7 @@ export class FriendshipRequirement extends EncounterPokemonRequirement { } } - override getDialogueToken(scene: BattleScene, pokemon?: PlayerPokemon): [string, string] { + override getDialogueToken(pokemon?: PlayerPokemon): [string, string] { return [ "friendship", pokemon?.friendship.toString() ?? "" ]; } } @@ -1035,10 +1027,10 @@ export class HealthRatioRequirement extends EncounterPokemonRequirement { this.requiredHealthRange = requiredHealthRange; } - override meetsRequirement(scene: BattleScene): boolean { + override meetsRequirement(): boolean { // Party Pokemon's health inside required health range if (!isNullOrUndefined(this.requiredHealthRange) && this.requiredHealthRange[0] <= this.requiredHealthRange[1]) { - const partyPokemon = scene.getPlayerParty(); + const partyPokemon = globalScene.getPlayerParty(); const pokemonInRange = this.queryParty(partyPokemon); if (pokemonInRange.length < this.minNumberOfPokemon) { return false; @@ -1058,7 +1050,7 @@ export class HealthRatioRequirement extends EncounterPokemonRequirement { } } - override getDialogueToken(scene: BattleScene, pokemon?: PlayerPokemon): [string, string] { + override getDialogueToken(pokemon?: PlayerPokemon): [string, string] { const hpRatio = pokemon?.getHpRatio(); if (!isNullOrUndefined(hpRatio)) { return [ "healthRatio", Math.floor(hpRatio * 100).toString() + "%" ]; @@ -1079,10 +1071,10 @@ export class WeightRequirement extends EncounterPokemonRequirement { this.requiredWeightRange = requiredWeightRange; } - override meetsRequirement(scene: BattleScene): boolean { + override meetsRequirement(): boolean { // Party Pokemon's weight inside required weight range if (!isNullOrUndefined(this.requiredWeightRange) && this.requiredWeightRange[0] <= this.requiredWeightRange[1]) { - const partyPokemon = scene.getPlayerParty(); + const partyPokemon = globalScene.getPlayerParty(); const pokemonInRange = this.queryParty(partyPokemon); if (pokemonInRange.length < this.minNumberOfPokemon) { return false; @@ -1100,7 +1092,7 @@ export class WeightRequirement extends EncounterPokemonRequirement { } } - override getDialogueToken(scene: BattleScene, pokemon?: PlayerPokemon): [string, string] { + override getDialogueToken(pokemon?: PlayerPokemon): [string, string] { return [ "weight", pokemon?.getWeight().toString() ?? "" ]; } } diff --git a/src/data/mystery-encounters/mystery-encounter-save-data.ts b/src/data/mystery-encounters/mystery-encounter-save-data.ts index 259fbff7b85..7c8110628f0 100644 --- a/src/data/mystery-encounters/mystery-encounter-save-data.ts +++ b/src/data/mystery-encounters/mystery-encounter-save-data.ts @@ -1,7 +1,7 @@ -import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import type { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { BASE_MYSTERY_ENCOUNTER_SPAWN_WEIGHT } from "#app/data/mystery-encounters/mystery-encounters"; import { isNullOrUndefined } from "#app/utils"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import type { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; export class SeenEncounterData { type: MysteryEncounterType; diff --git a/src/data/mystery-encounters/mystery-encounter.ts b/src/data/mystery-encounters/mystery-encounter.ts index e341da4e435..c90649e551d 100644 --- a/src/data/mystery-encounters/mystery-encounter.ts +++ b/src/data/mystery-encounters/mystery-encounter.ts @@ -1,21 +1,26 @@ -import { EnemyPartyConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; -import Pokemon, { PlayerPokemon, PokemonMove } from "#app/field/pokemon"; +import type { EnemyPartyConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import type { PlayerPokemon, PokemonMove } from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; import { capitalizeFirstLetter, isNullOrUndefined } from "#app/utils"; -import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import BattleScene from "#app/battle-scene"; -import MysteryEncounterIntroVisuals, { MysteryEncounterSpriteConfig } from "#app/field/mystery-encounter-intro"; +import type { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import type { MysteryEncounterSpriteConfig } from "#app/field/mystery-encounter-intro"; +import MysteryEncounterIntroVisuals from "#app/field/mystery-encounter-intro"; import * as Utils from "#app/utils"; -import { StatusEffect } from "#enums/status-effect"; -import MysteryEncounterDialogue, { OptionTextDisplay } from "./mystery-encounter-dialogue"; -import MysteryEncounterOption, { MysteryEncounterOptionBuilder, OptionPhaseCallback } from "./mystery-encounter-option"; +import type { StatusEffect } from "#enums/status-effect"; +import type { OptionTextDisplay } from "./mystery-encounter-dialogue"; +import type MysteryEncounterDialogue from "./mystery-encounter-dialogue"; +import type { OptionPhaseCallback } from "./mystery-encounter-option"; +import type MysteryEncounterOption from "./mystery-encounter-option"; +import { MysteryEncounterOptionBuilder } from "./mystery-encounter-option"; import { EncounterPokemonRequirement, EncounterSceneRequirement, HealthRatioRequirement, PartySizeRequirement, StatusEffectRequirement, WaveRangeRequirement } from "./mystery-encounter-requirements"; -import { BattlerIndex } from "#app/battle"; +import type { BattlerIndex } from "#app/battle"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { MysteryEncounterMode } from "#enums/mystery-encounter-mode"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import { GameModes } from "#app/game-mode"; -import { EncounterAnim } from "#enums/encounter-anims"; -import { Challenges } from "#enums/challenges"; +import type { GameModes } from "#app/game-mode"; +import type { EncounterAnim } from "#enums/encounter-anims"; +import type { Challenges } from "#enums/challenges"; +import { globalScene } from "#app/global-scene"; export interface EncounterStartOfBattleEffect { sourcePokemon?: Pokemon; @@ -55,11 +60,11 @@ export interface IMysteryEncounter { skipToFightInput: boolean; preventGameStatsUpdates: boolean; - onInit?: (scene: BattleScene) => boolean; - onVisualsStart?: (scene: BattleScene) => boolean; - doEncounterExp?: (scene: BattleScene) => boolean; - doEncounterRewards?: (scene: BattleScene) => boolean; - doContinueEncounter?: (scene: BattleScene) => Promise; + onInit?: () => boolean; + onVisualsStart?: () => boolean; + doEncounterExp?: () => boolean; + doEncounterRewards?: () => boolean; + doContinueEncounter?: () => Promise; requirements: EncounterSceneRequirement[]; primaryPokemonRequirements: EncounterPokemonRequirement[]; @@ -159,24 +164,24 @@ export default class MysteryEncounter implements IMysteryEncounter { // #region Event callback functions /** Event when Encounter is first loaded, use it for data conditioning */ - onInit?: (scene: BattleScene) => boolean; + onInit?: () => boolean; /** Event when battlefield visuals have finished sliding in and the encounter dialogue begins */ - onVisualsStart?: (scene: BattleScene) => boolean; + onVisualsStart?: () => boolean; /** Event triggered prior to {@linkcode CommandPhase}, during {@linkcode TurnInitPhase} */ - onTurnStart?: (scene: BattleScene) => boolean; + onTurnStart?: () => boolean; /** Event prior to any rewards logic in {@linkcode MysteryEncounterRewardsPhase} */ - onRewards?: (scene: BattleScene) => Promise; + onRewards?: () => Promise; /** Will provide the player party EXP before rewards are displayed for that wave */ - doEncounterExp?: (scene: BattleScene) => boolean; + doEncounterExp?: () => boolean; /** Will provide the player a rewards shop for that wave */ - doEncounterRewards?: (scene: BattleScene) => boolean; + doEncounterRewards?: () => boolean; /** Will execute callback during VictoryPhase of a continuousEncounter */ - doContinueEncounter?: (scene: BattleScene) => Promise; + doContinueEncounter?: () => Promise; /** * Can perform special logic when a ME battle is lost, before GameOver/battle retry prompt. * Should return `true` if it is treated as "real" Game Over, `false` if not. */ - onGameOver?: (scene: BattleScene) => boolean; + onGameOver?: () => boolean; /** * Requirements @@ -296,13 +301,12 @@ export default class MysteryEncounter implements IMysteryEncounter { /** * Checks if the current scene state meets the requirements for the {@linkcode MysteryEncounter} to spawn * This is used to filter the pool of encounters down to only the ones with all requirements met - * @param scene * @returns */ - meetsRequirements(scene: BattleScene): boolean { - const sceneReq = !this.requirements.some(requirement => !requirement.meetsRequirement(scene)); - const secReqs = this.meetsSecondaryRequirementAndSecondaryPokemonSelected(scene); // secondary is checked first to handle cases of primary overlapping with secondary - const priReqs = this.meetsPrimaryRequirementAndPrimaryPokemonSelected(scene); + meetsRequirements(): boolean { + const sceneReq = !this.requirements.some(requirement => !requirement.meetsRequirement()); + const secReqs = this.meetsSecondaryRequirementAndSecondaryPokemonSelected(); // secondary is checked first to handle cases of primary overlapping with secondary + const priReqs = this.meetsPrimaryRequirementAndPrimaryPokemonSelected(); return sceneReq && secReqs && priReqs; } @@ -310,11 +314,10 @@ export default class MysteryEncounter implements IMysteryEncounter { /** * Checks if a specific player pokemon meets all given primary EncounterPokemonRequirements * Used automatically as part of {@linkcode meetsRequirements}, but can also be used to manually check certain Pokemon where needed - * @param scene * @param pokemon */ - pokemonMeetsPrimaryRequirements(scene: BattleScene, pokemon: Pokemon): boolean { - return !this.primaryPokemonRequirements.some(req => !req.queryParty(scene.getPlayerParty()).map(p => p.id).includes(pokemon.id)); + pokemonMeetsPrimaryRequirements(pokemon: Pokemon): boolean { + return !this.primaryPokemonRequirements.some(req => !req.queryParty(globalScene.getPlayerParty()).map(p => p.id).includes(pokemon.id)); } /** @@ -322,22 +325,21 @@ export default class MysteryEncounter implements IMysteryEncounter { * AND there is a valid Pokemon assigned to {@linkcode primaryPokemon}. * If both {@linkcode primaryPokemonRequirements} and {@linkcode secondaryPokemonRequirements} are defined, * can cause scenarios where there are not enough Pokemon that are sufficient for all requirements. - * @param scene */ - private meetsPrimaryRequirementAndPrimaryPokemonSelected(scene: BattleScene): boolean { + private meetsPrimaryRequirementAndPrimaryPokemonSelected(): boolean { if (!this.primaryPokemonRequirements || this.primaryPokemonRequirements.length === 0) { - const activeMon = scene.getPlayerParty().filter(p => p.isActive(true)); + const activeMon = globalScene.getPlayerParty().filter(p => p.isActive(true)); if (activeMon.length > 0) { this.primaryPokemon = activeMon[0]; } else { - this.primaryPokemon = scene.getPlayerParty().filter(p => p.isAllowedInBattle())[0]; + this.primaryPokemon = globalScene.getPlayerParty().filter(p => p.isAllowedInBattle())[0]; } return true; } - let qualified: PlayerPokemon[] = scene.getPlayerParty(); + let qualified: PlayerPokemon[] = globalScene.getPlayerParty(); for (const req of this.primaryPokemonRequirements) { - if (req.meetsRequirement(scene)) { - qualified = qualified.filter(pkmn => req.queryParty(scene.getPlayerParty()).includes(pkmn)); + if (req.meetsRequirement()) { + qualified = qualified.filter(pkmn => req.queryParty(globalScene.getPlayerParty()).includes(pkmn)); } else { this.primaryPokemon = undefined; return false; @@ -386,18 +388,17 @@ export default class MysteryEncounter implements IMysteryEncounter { * AND there is a valid Pokemon assigned to {@linkcode secondaryPokemon} (if applicable). * If both {@linkcode primaryPokemonRequirements} and {@linkcode secondaryPokemonRequirements} are defined, * can cause scenarios where there are not enough Pokemon that are sufficient for all requirements. - * @param scene */ - private meetsSecondaryRequirementAndSecondaryPokemonSelected(scene: BattleScene): boolean { + private meetsSecondaryRequirementAndSecondaryPokemonSelected(): boolean { if (!this.secondaryPokemonRequirements || this.secondaryPokemonRequirements.length === 0) { this.secondaryPokemon = []; return true; } - let qualified: PlayerPokemon[] = scene.getPlayerParty(); + let qualified: PlayerPokemon[] = globalScene.getPlayerParty(); for (const req of this.secondaryPokemonRequirements) { - if (req.meetsRequirement(scene)) { - qualified = qualified.filter(pkmn => req.queryParty(scene.getPlayerParty()).includes(pkmn)); + if (req.meetsRequirement()) { + qualified = qualified.filter(pkmn => req.queryParty(globalScene.getPlayerParty()).includes(pkmn)); } else { this.secondaryPokemon = []; return false; @@ -409,10 +410,9 @@ export default class MysteryEncounter implements IMysteryEncounter { /** * Initializes encounter intro sprites based on the sprite configs defined in spriteConfigs - * @param scene */ - initIntroVisuals(scene: BattleScene): void { - this.introVisuals = new MysteryEncounterIntroVisuals(scene, this); + initIntroVisuals(): void { + this.introVisuals = new MysteryEncounterIntroVisuals(this); } /** @@ -420,11 +420,11 @@ export default class MysteryEncounter implements IMysteryEncounter { * Will use the first support pokemon in list * For multiple support pokemon in the dialogue token, it will have to be overridden. */ - populateDialogueTokensFromRequirements(scene: BattleScene): void { - this.meetsRequirements(scene); + populateDialogueTokensFromRequirements(): void { + this.meetsRequirements(); if (this.requirements?.length > 0) { for (const req of this.requirements) { - const dialogueToken = req.getDialogueToken(scene); + const dialogueToken = req.getDialogueToken(); if (dialogueToken?.length === 2) { this.setDialogueToken(...dialogueToken); } @@ -434,7 +434,7 @@ export default class MysteryEncounter implements IMysteryEncounter { this.setDialogueToken("primaryName", this.primaryPokemon.getNameToRender()); for (const req of this.primaryPokemonRequirements) { if (!req.invertQuery) { - const value = req.getDialogueToken(scene, this.primaryPokemon); + const value = req.getDialogueToken(this.primaryPokemon); if (value?.length === 2) { this.setDialogueToken("primary" + capitalizeFirstLetter(value[0]), value[1]); } @@ -445,7 +445,7 @@ export default class MysteryEncounter implements IMysteryEncounter { this.setDialogueToken("secondaryName", this.secondaryPokemon[0].getNameToRender()); for (const req of this.secondaryPokemonRequirements) { if (!req.invertQuery) { - const value = req.getDialogueToken(scene, this.secondaryPokemon[0]); + const value = req.getDialogueToken(this.secondaryPokemon[0]); if (value?.length === 2) { this.setDialogueToken("primary" + capitalizeFirstLetter(value[0]), value[1]); } @@ -457,11 +457,11 @@ export default class MysteryEncounter implements IMysteryEncounter { // Dialogue tokens for options for (let i = 0; i < this.options.length; i++) { const opt = this.options[i]; - opt.meetsRequirements(scene); + opt.meetsRequirements(); const j = i + 1; if (opt.requirements.length > 0) { for (const req of opt.requirements) { - const dialogueToken = req.getDialogueToken(scene); + const dialogueToken = req.getDialogueToken(); if (dialogueToken?.length === 2) { this.setDialogueToken("option" + j + capitalizeFirstLetter(dialogueToken[0]), dialogueToken[1]); } @@ -471,7 +471,7 @@ export default class MysteryEncounter implements IMysteryEncounter { this.setDialogueToken("option" + j + "PrimaryName", opt.primaryPokemon.getNameToRender()); for (const req of opt.primaryPokemonRequirements) { if (!req.invertQuery) { - const value = req.getDialogueToken(scene, opt.primaryPokemon); + const value = req.getDialogueToken(opt.primaryPokemon); if (value?.length === 2) { this.setDialogueToken("option" + j + "Primary" + capitalizeFirstLetter(value[0]), value[1]); } @@ -482,7 +482,7 @@ export default class MysteryEncounter implements IMysteryEncounter { this.setDialogueToken("option" + j + "SecondaryName", opt.secondaryPokemon[0].getNameToRender()); for (const req of opt.secondaryPokemonRequirements) { if (!req.invertQuery) { - const value = req.getDialogueToken(scene, opt.secondaryPokemon[0]); + const value = req.getDialogueToken(opt.secondaryPokemon[0]); if (value?.length === 2) { this.setDialogueToken("option" + j + "Secondary" + capitalizeFirstLetter(value[0]), value[1]); } @@ -518,10 +518,9 @@ export default class MysteryEncounter implements IMysteryEncounter { /** * Maintains seed offset for RNG consistency * Increments if the same {@linkcode MysteryEncounter} has multiple option select cycles - * @param scene */ - updateSeedOffset(scene: BattleScene) { - const currentOffset = this.seedOffset ?? scene.currentBattle.waveIndex * 1000; + updateSeedOffset() { + const currentOffset = this.seedOffset ?? globalScene.currentBattle.waveIndex * 1000; this.seedOffset = currentOffset + 512; } } @@ -858,7 +857,7 @@ export class MysteryEncounterBuilder implements Partial { * @param doEncounterRewards Synchronous callback function to perform during rewards phase of the encounter * @returns */ - withRewards(doEncounterRewards: (scene: BattleScene) => boolean): this & Required> { + withRewards(doEncounterRewards: () => boolean): this & Required> { return Object.assign(this, { doEncounterRewards: doEncounterRewards }); } @@ -872,7 +871,7 @@ export class MysteryEncounterBuilder implements Partial { * @param doEncounterExp Synchronous callback function to perform during rewards phase of the encounter * @returns */ - withExp(doEncounterExp: (scene: BattleScene) => boolean): this & Required> { + withExp(doEncounterExp: () => boolean): this & Required> { return Object.assign(this, { doEncounterExp: doEncounterExp }); } @@ -883,7 +882,7 @@ export class MysteryEncounterBuilder implements Partial { * @param onInit Synchronous callback function to perform as soon as the encounter is selected for the next phase * @returns */ - withOnInit(onInit: (scene: BattleScene) => boolean): this & Required> { + withOnInit(onInit: () => boolean): this & Required> { return Object.assign(this, { onInit }); } @@ -893,7 +892,7 @@ export class MysteryEncounterBuilder implements Partial { * @param onVisualsStart Synchronous callback function to perform as soon as the enemy field finishes sliding in * @returns */ - withOnVisualsStart(onVisualsStart: (scene: BattleScene) => boolean): this & Required> { + withOnVisualsStart(onVisualsStart: () => boolean): this & Required> { return Object.assign(this, { onVisualsStart: onVisualsStart }); } diff --git a/src/data/mystery-encounters/mystery-encounters.ts b/src/data/mystery-encounters/mystery-encounters.ts index 44feabeeaea..3219640e4e5 100644 --- a/src/data/mystery-encounters/mystery-encounters.ts +++ b/src/data/mystery-encounters/mystery-encounters.ts @@ -10,7 +10,7 @@ import { MysteriousChestEncounter } from "./encounters/mysterious-chest-encounte import { ShadyVitaminDealerEncounter } from "./encounters/shady-vitamin-dealer-encounter"; import { SlumberingSnorlaxEncounter } from "./encounters/slumbering-snorlax-encounter"; import { TrainingSessionEncounter } from "./encounters/training-session-encounter"; -import MysteryEncounter from "./mystery-encounter"; +import type MysteryEncounter from "./mystery-encounter"; import { SafariZoneEncounter } from "#app/data/mystery-encounters/encounters/safari-zone-encounter"; import { FieryFalloutEncounter } from "#app/data/mystery-encounters/encounters/fiery-fallout-encounter"; import { TheStrongStuffEncounter } from "#app/data/mystery-encounters/encounters/the-strong-stuff-encounter"; diff --git a/src/data/mystery-encounters/requirements/can-learn-move-requirement.ts b/src/data/mystery-encounters/requirements/can-learn-move-requirement.ts index a2c08938fbe..3d454269204 100644 --- a/src/data/mystery-encounters/requirements/can-learn-move-requirement.ts +++ b/src/data/mystery-encounters/requirements/can-learn-move-requirement.ts @@ -1,8 +1,9 @@ -import BattleScene from "#app/battle-scene"; -import { Moves } from "#app/enums/moves"; -import { PlayerPokemon, PokemonMove } from "#app/field/pokemon"; +import type { Moves } from "#app/enums/moves"; +import type { PlayerPokemon } from "#app/field/pokemon"; +import { PokemonMove } from "#app/field/pokemon"; import { isNullOrUndefined } from "#app/utils"; import { EncounterPokemonRequirement } from "#app/data/mystery-encounters/mystery-encounter-requirements"; +import { globalScene } from "#app/global-scene"; /** * {@linkcode CanLearnMoveRequirement} options @@ -38,8 +39,8 @@ export class CanLearnMoveRequirement extends EncounterPokemonRequirement { this.invertQuery = options.invertQuery ?? false; } - override meetsRequirement(scene: BattleScene): boolean { - const partyPokemon = scene.getPlayerParty().filter((pkm) => (this.includeFainted ? pkm.isAllowedInChallenge() : pkm.isAllowedInBattle())); + override meetsRequirement(): boolean { + const partyPokemon = globalScene.getPlayerParty().filter((pkm) => (this.includeFainted ? pkm.isAllowedInChallenge() : pkm.isAllowedInBattle())); if (isNullOrUndefined(partyPokemon) || this.requiredMoves?.length < 0) { return false; @@ -63,7 +64,7 @@ export class CanLearnMoveRequirement extends EncounterPokemonRequirement { } } - override getDialogueToken(_scene: BattleScene, _pokemon?: PlayerPokemon): [string, string] { + override getDialogueToken(__pokemon?: PlayerPokemon): [string, string] { return [ "requiredMoves", this.requiredMoves.map(m => new PokemonMove(m).getName()).join(", ") ]; } diff --git a/src/data/mystery-encounters/utils/encounter-dialogue-utils.ts b/src/data/mystery-encounters/utils/encounter-dialogue-utils.ts index acaa7c6244f..df9b6355017 100644 --- a/src/data/mystery-encounters/utils/encounter-dialogue-utils.ts +++ b/src/data/mystery-encounters/utils/encounter-dialogue-utils.ts @@ -1,23 +1,24 @@ -import BattleScene from "#app/battle-scene"; -import { getTextWithColors, TextStyle } from "#app/ui/text"; +import { globalScene } from "#app/global-scene"; +import type { TextStyle } from "#app/ui/text"; +import { getTextWithColors } from "#app/ui/text"; import { UiTheme } from "#enums/ui-theme"; import { isNullOrUndefined } from "#app/utils"; import i18next from "i18next"; /** - * Will inject all relevant dialogue tokens that exist in the {@linkcode BattleScene.currentBattle.mysteryEncounter.dialogueTokens}, into i18n text. + * Will inject all relevant dialogue tokens that exist in the {@linkcode BattlegScene.currentBattle.mysteryEncounter.dialogueTokens}, into i18n text. * Also adds BBCodeText fragments for colored text, if applicable * @param keyOrString * @param primaryStyle Can define a text style to be applied to the entire string. Must be defined for BBCodeText styles to be applied correctly */ -export function getEncounterText(scene: BattleScene, keyOrString?: string, primaryStyle?: TextStyle): string | null { +export function getEncounterText(keyOrString?: string, primaryStyle?: TextStyle): string | null { if (isNullOrUndefined(keyOrString)) { return null; } - const uiTheme = scene.uiTheme ?? UiTheme.DEFAULT; + const uiTheme = globalScene.uiTheme ?? UiTheme.DEFAULT; - let textString: string | null = getTextWithDialogueTokens(scene, keyOrString); + let textString: string | null = getTextWithDialogueTokens(keyOrString); // Can only color the text if a Primary Style is defined // primaryStyle is applied to all text that does not have its own specified style @@ -29,12 +30,12 @@ export function getEncounterText(scene: BattleScene, keyOrString?: string, prima } /** - * Helper function to inject {@linkcode BattleScene.currentBattle.mysteryEncounter.dialogueTokens} into a given content string + * Helper function to inject {@linkcode globalScene.currentBattle.mysteryEncounter.dialogueTokens} into a given content string * @param scene * @param keyOrString */ -function getTextWithDialogueTokens(scene: BattleScene, keyOrString: string): string | null { - const tokens = scene.currentBattle?.mysteryEncounter?.dialogueTokens; +function getTextWithDialogueTokens(keyOrString: string): string | null { + const tokens = globalScene.currentBattle?.mysteryEncounter?.dialogueTokens; if (i18next.exists(keyOrString, tokens)) { return i18next.t(keyOrString, tokens) as string; @@ -48,9 +49,9 @@ function getTextWithDialogueTokens(scene: BattleScene, keyOrString: string): str * @param scene * @param contentKey */ -export function queueEncounterMessage(scene: BattleScene, contentKey: string): void { - const text: string | null = getEncounterText(scene, contentKey); - scene.queueMessage(text ?? "", null, true); +export function queueEncounterMessage(contentKey: string): void { + const text: string | null = getEncounterText(contentKey); + globalScene.queueMessage(text ?? "", null, true); } /** @@ -62,10 +63,10 @@ export function queueEncounterMessage(scene: BattleScene, contentKey: string): v * @param callbackDelay * @param promptDelay */ -export function showEncounterText(scene: BattleScene, contentKey: string, delay: number | null = null, callbackDelay: number = 0, prompt: boolean = true, promptDelay: number | null = null): Promise { +export function showEncounterText(contentKey: string, delay: number | null = null, callbackDelay: number = 0, prompt: boolean = true, promptDelay: number | null = null): Promise { return new Promise(resolve => { - const text: string | null = getEncounterText(scene, contentKey); - scene.ui.showText(text ?? "", delay, () => resolve(), callbackDelay, prompt, promptDelay); + const text: string | null = getEncounterText(contentKey); + globalScene.ui.showText(text ?? "", delay, () => resolve(), callbackDelay, prompt, promptDelay); }); } @@ -77,10 +78,10 @@ export function showEncounterText(scene: BattleScene, contentKey: string, delay: * @param speakerContentKey * @param callbackDelay */ -export function showEncounterDialogue(scene: BattleScene, textContentKey: string, speakerContentKey: string, delay: number | null = null, callbackDelay: number = 0): Promise { +export function showEncounterDialogue(textContentKey: string, speakerContentKey: string, delay: number | null = null, callbackDelay: number = 0): Promise { return new Promise(resolve => { - const text: string | null = getEncounterText(scene, textContentKey); - const speaker: string | null = getEncounterText(scene, speakerContentKey); - scene.ui.showDialogue(text ?? "", speaker ?? "", delay, () => resolve(), callbackDelay); + const text: string | null = getEncounterText(textContentKey); + const speaker: string | null = getEncounterText(speakerContentKey); + globalScene.ui.showDialogue(text ?? "", speaker ?? "", delay, () => resolve(), callbackDelay); }); } diff --git a/src/data/mystery-encounters/utils/encounter-phase-utils.ts b/src/data/mystery-encounters/utils/encounter-phase-utils.ts index d43bce0ace5..8768fb06b37 100644 --- a/src/data/mystery-encounters/utils/encounter-phase-utils.ts +++ b/src/data/mystery-encounters/utils/encounter-phase-utils.ts @@ -1,34 +1,40 @@ -import Battle, { BattlerIndex, BattleType } from "#app/battle"; +import type Battle from "#app/battle"; +import { BattlerIndex, BattleType } from "#app/battle"; import { biomeLinks, BiomePoolTier } from "#app/data/balance/biomes"; -import MysteryEncounterOption from "#app/data/mystery-encounters/mystery-encounter-option"; +import type MysteryEncounterOption from "#app/data/mystery-encounters/mystery-encounter-option"; import { AVERAGE_ENCOUNTERS_PER_RUN_TARGET, WEIGHT_INCREMENT_ON_SPAWN_MISS } from "#app/data/mystery-encounters/mystery-encounters"; import { showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; -import Pokemon, { AiType, FieldPosition, PlayerPokemon, PokemonMove, PokemonSummonData } from "#app/field/pokemon"; -import { CustomModifierSettings, ModifierPoolType, ModifierType, ModifierTypeGenerator, ModifierTypeOption, modifierTypes, regenerateModifierPoolThresholds } from "#app/modifier/modifier-type"; +import type { AiType, PlayerPokemon } from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; +import { FieldPosition, PokemonMove, PokemonSummonData } from "#app/field/pokemon"; +import type { CustomModifierSettings, ModifierType } from "#app/modifier/modifier-type"; +import { ModifierPoolType, ModifierTypeGenerator, ModifierTypeOption, modifierTypes, regenerateModifierPoolThresholds } from "#app/modifier/modifier-type"; import { MysteryEncounterBattlePhase, MysteryEncounterBattleStartCleanupPhase, MysteryEncounterPhase, MysteryEncounterRewardsPhase } from "#app/phases/mystery-encounter-phases"; -import PokemonData from "#app/system/pokemon-data"; -import { OptionSelectConfig, OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; -import { PartyOption, PartyUiMode, PokemonSelectFilter } from "#app/ui/party-ui-handler"; +import type PokemonData from "#app/system/pokemon-data"; +import type { OptionSelectConfig, OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; +import type { PartyOption, PokemonSelectFilter } from "#app/ui/party-ui-handler"; +import { PartyUiMode } from "#app/ui/party-ui-handler"; import { Mode } from "#app/ui/ui"; import * as Utils from "#app/utils"; import { isNullOrUndefined } from "#app/utils"; -import { BattlerTagType } from "#enums/battler-tag-type"; +import type { BattlerTagType } from "#enums/battler-tag-type"; import { Biome } from "#enums/biome"; -import { TrainerType } from "#enums/trainer-type"; +import type { TrainerType } from "#enums/trainer-type"; import i18next from "i18next"; -import BattleScene from "#app/battle-scene"; import Trainer, { TrainerVariant } from "#app/field/trainer"; -import { Gender } from "#app/data/gender"; -import { Nature } from "#enums/nature"; -import { Moves } from "#enums/moves"; +import type { Gender } from "#app/data/gender"; +import type { Nature } from "#enums/nature"; +import type { Moves } from "#enums/moves"; import { initMoveAnim, loadMoveAnimAssets } from "#app/data/battle-anims"; import { MysteryEncounterMode } from "#enums/mystery-encounter-mode"; import { Status } from "#app/data/status-effect"; -import { TrainerConfig, trainerConfigs, TrainerSlot } from "#app/data/trainer-config"; -import PokemonSpecies from "#app/data/pokemon-species"; -import { Egg, IEggOptions } from "#app/data/egg"; -import { CustomPokemonData } from "#app/data/custom-pokemon-data"; -import HeldModifierConfig from "#app/interfaces/held-modifier-config"; +import type { TrainerConfig } from "#app/data/trainer-config"; +import { trainerConfigs, TrainerSlot } from "#app/data/trainer-config"; +import type PokemonSpecies from "#app/data/pokemon-species"; +import type { IEggOptions } from "#app/data/egg"; +import { Egg } from "#app/data/egg"; +import type { CustomPokemonData } from "#app/data/custom-pokemon-data"; +import type HeldModifierConfig from "#app/interfaces/held-modifier-config"; import { MovePhase } from "#app/phases/move-phase"; import { EggLapsePhase } from "#app/phases/egg-lapse-phase"; import { TrainerVictoryPhase } from "#app/phases/trainer-victory-phase"; @@ -36,34 +42,35 @@ import { BattleEndPhase } from "#app/phases/battle-end-phase"; import { GameOverPhase } from "#app/phases/game-over-phase"; import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; import { PartyExpPhase } from "#app/phases/party-exp-phase"; -import { Variant } from "#app/data/variant"; +import type { Variant } from "#app/data/variant"; import { StatusEffect } from "#enums/status-effect"; +import { globalScene } from "#app/global-scene"; /** * Animates exclamation sprite over trainer's head at start of encounter * @param scene */ -export function doTrainerExclamation(scene: BattleScene) { - const exclamationSprite = scene.add.sprite(0, 0, "encounter_exclaim"); +export function doTrainerExclamation() { + const exclamationSprite = globalScene.add.sprite(0, 0, "encounter_exclaim"); exclamationSprite.setName("exclamation"); - scene.field.add(exclamationSprite); - scene.field.moveTo(exclamationSprite, scene.field.getAll().length - 1); + globalScene.field.add(exclamationSprite); + globalScene.field.moveTo(exclamationSprite, globalScene.field.getAll().length - 1); exclamationSprite.setVisible(true); exclamationSprite.setPosition(110, 68); - scene.tweens.add({ + globalScene.tweens.add({ targets: exclamationSprite, y: "-=25", ease: "Cubic.easeOut", duration: 300, yoyo: true, onComplete: () => { - scene.time.delayedCall(800, () => { - scene.field.remove(exclamationSprite, true); + globalScene.time.delayedCall(800, () => { + globalScene.field.remove(exclamationSprite, true); }); } }); - scene.playSound("battle_anims/GEN8- Exclaim", { volume: 0.7 }); + globalScene.playSound("battle_anims/GEN8- Exclaim", { volume: 0.7 }); } export interface EnemyPokemonConfig { @@ -114,14 +121,13 @@ export interface EnemyPartyConfig { * Generates an enemy party for a mystery encounter battle * This will override and replace any standard encounter generation logic * Useful for tailoring specific battles to mystery encounters - * @param scene Battle Scene * @param partyConfig Can pass various customizable attributes for the enemy party, see EnemyPartyConfig */ -export async function initBattleWithEnemyConfig(scene: BattleScene, partyConfig: EnemyPartyConfig): Promise { +export async function initBattleWithEnemyConfig(partyConfig: EnemyPartyConfig): Promise { const loaded: boolean = false; const loadEnemyAssets: Promise[] = []; - const battle: Battle = scene.currentBattle; + const battle: Battle = globalScene.currentBattle; let doubleBattle: boolean = partyConfig?.doubleBattle ?? false; @@ -130,10 +136,10 @@ export async function initBattleWithEnemyConfig(scene: BattleScene, partyConfig: const partyTrainerConfig = partyConfig?.trainerConfig; let trainerConfig: TrainerConfig; if (!isNullOrUndefined(trainerType) || partyTrainerConfig) { - scene.currentBattle.mysteryEncounter!.encounterMode = MysteryEncounterMode.TRAINER_BATTLE; - if (scene.currentBattle.trainer) { - scene.currentBattle.trainer.setVisible(false); - scene.currentBattle.trainer.destroy(); + globalScene.currentBattle.mysteryEncounter!.encounterMode = MysteryEncounterMode.TRAINER_BATTLE; + if (globalScene.currentBattle.trainer) { + globalScene.currentBattle.trainer.setVisible(false); + globalScene.currentBattle.trainer.destroy(); } trainerConfig = partyTrainerConfig ? partyTrainerConfig : trainerConfigs[trainerType!]; @@ -141,23 +147,23 @@ export async function initBattleWithEnemyConfig(scene: BattleScene, partyConfig: const doubleTrainer = trainerConfig.doubleOnly || (trainerConfig.hasDouble && !!partyConfig.doubleBattle); doubleBattle = doubleTrainer; const trainerFemale = isNullOrUndefined(partyConfig.female) ? !!(Utils.randSeedInt(2)) : partyConfig.female; - const newTrainer = new Trainer(scene, trainerConfig.trainerType, doubleTrainer ? TrainerVariant.DOUBLE : trainerFemale ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT, undefined, undefined, undefined, trainerConfig); + const newTrainer = new Trainer(trainerConfig.trainerType, doubleTrainer ? TrainerVariant.DOUBLE : trainerFemale ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT, undefined, undefined, undefined, trainerConfig); newTrainer.x += 300; newTrainer.setVisible(false); - scene.field.add(newTrainer); - scene.currentBattle.trainer = newTrainer; + globalScene.field.add(newTrainer); + globalScene.currentBattle.trainer = newTrainer; loadEnemyAssets.push(newTrainer.loadAssets().then(() => newTrainer.initSprite())); - battle.enemyLevels = scene.currentBattle.trainer.getPartyLevels(scene.currentBattle.waveIndex); + battle.enemyLevels = globalScene.currentBattle.trainer.getPartyLevels(globalScene.currentBattle.waveIndex); } else { // Wild - scene.currentBattle.mysteryEncounter!.encounterMode = MysteryEncounterMode.WILD_BATTLE; + globalScene.currentBattle.mysteryEncounter!.encounterMode = MysteryEncounterMode.WILD_BATTLE; const numEnemies = partyConfig?.pokemonConfigs && partyConfig.pokemonConfigs.length > 0 ? partyConfig?.pokemonConfigs?.length : doubleBattle ? 2 : 1; - battle.enemyLevels = new Array(numEnemies).fill(null).map(() => scene.currentBattle.getLevelForWave()); + battle.enemyLevels = new Array(numEnemies).fill(null).map(() => globalScene.currentBattle.getLevelForWave()); } - scene.getEnemyParty().forEach(enemyPokemon => { - scene.field.remove(enemyPokemon, true); + globalScene.getEnemyParty().forEach(enemyPokemon => { + globalScene.field.remove(enemyPokemon, true); }); battle.enemyParty = []; battle.double = doubleBattle; @@ -168,7 +174,7 @@ export async function initBattleWithEnemyConfig(scene: BattleScene, partyConfig: // levelAdditiveModifier value of 0.5 will halve the modifier scaling, 2 will double it, etc. // Leaving null/undefined will disable level scaling const mult: number = !isNullOrUndefined(partyConfig.levelAdditiveModifier) ? partyConfig.levelAdditiveModifier : 0; - const additive = Math.max(Math.round((scene.currentBattle.waveIndex / 10) * mult), 0); + const additive = Math.max(Math.round((globalScene.currentBattle.waveIndex / 10) * mult), 0); battle.enemyLevels = battle.enemyLevels.map(level => level + additive); battle.enemyLevels.forEach((level, e) => { @@ -184,7 +190,7 @@ export async function initBattleWithEnemyConfig(scene: BattleScene, partyConfig: dataSource = config.dataSource; enemySpecies = config.species; isBoss = config.isBoss; - battle.enemyParty[e] = scene.addEnemyPokemon(enemySpecies, level, TrainerSlot.TRAINER, isBoss, false, dataSource); + battle.enemyParty[e] = globalScene.addEnemyPokemon(enemySpecies, level, TrainerSlot.TRAINER, isBoss, false, dataSource); } else { battle.enemyParty[e] = battle.trainer.genPartyMember(e); } @@ -196,17 +202,17 @@ export async function initBattleWithEnemyConfig(scene: BattleScene, partyConfig: enemySpecies = config.species; isBoss = config.isBoss; if (isBoss) { - scene.currentBattle.mysteryEncounter!.encounterMode = MysteryEncounterMode.BOSS_BATTLE; + globalScene.currentBattle.mysteryEncounter!.encounterMode = MysteryEncounterMode.BOSS_BATTLE; } } else { - enemySpecies = scene.randomSpecies(battle.waveIndex, level, true); + enemySpecies = globalScene.randomSpecies(battle.waveIndex, level, true); } - battle.enemyParty[e] = scene.addEnemyPokemon(enemySpecies, level, TrainerSlot.NONE, isBoss, false, dataSource); + battle.enemyParty[e] = globalScene.addEnemyPokemon(enemySpecies, level, TrainerSlot.NONE, isBoss, false, dataSource); } } - const enemyPokemon = scene.getEnemyParty()[e]; + const enemyPokemon = globalScene.getEnemyParty()[e]; // Make sure basic data is clean enemyPokemon.hp = enemyPokemon.getMaxHp(); @@ -219,7 +225,7 @@ export async function initBattleWithEnemyConfig(scene: BattleScene, partyConfig: } if (!loaded && isNullOrUndefined(partyConfig.countAsSeen) || partyConfig.countAsSeen) { - scene.gameData.setPokemonSeen(enemyPokemon, true, !!(trainerType || trainerConfig)); + globalScene.gameData.setPokemonSeen(enemyPokemon, true, !!(trainerType || trainerConfig)); } if (partyConfig?.pokemonConfigs && e < partyConfig.pokemonConfigs.length) { @@ -257,7 +263,7 @@ export async function initBattleWithEnemyConfig(scene: BattleScene, partyConfig: // Set Boss if (config.isBoss) { - let segments = !isNullOrUndefined(config.bossSegments) ? config.bossSegments! : scene.getEncounterBossSegments(scene.currentBattle.waveIndex, level, enemySpecies, true); + let segments = !isNullOrUndefined(config.bossSegments) ? config.bossSegments! : globalScene.getEncounterBossSegments(globalScene.currentBattle.waveIndex, level, enemySpecies, true); if (!isNullOrUndefined(config.bossSegmentModifier)) { segments += config.bossSegmentModifier; } @@ -343,7 +349,7 @@ export async function initBattleWithEnemyConfig(scene: BattleScene, partyConfig: console.log(`Pokemon: ${enemyPokemon.name}`, `Species ID: ${enemyPokemon.species.speciesId}`, `Stats: ${enemyPokemon.stats}`, `Ability: ${enemyPokemon.getAbility().name}`, `Passive Ability: ${enemyPokemon.getPassiveAbility().name}`); }); - scene.pushPhase(new MysteryEncounterBattlePhase(scene, partyConfig.disableSwitch)); + globalScene.pushPhase(new MysteryEncounterBattlePhase(partyConfig.disableSwitch)); await Promise.all(loadEnemyAssets); battle.enemyParty.forEach((enemyPokemon_2, e_1) => { @@ -357,11 +363,11 @@ export async function initBattleWithEnemyConfig(scene: BattleScene, partyConfig: } }); if (!loaded) { - regenerateModifierPoolThresholds(scene.getEnemyField(), battle.battleType === BattleType.TRAINER ? ModifierPoolType.TRAINER : ModifierPoolType.WILD); + regenerateModifierPoolThresholds(globalScene.getEnemyField(), battle.battleType === BattleType.TRAINER ? ModifierPoolType.TRAINER : ModifierPoolType.WILD); const customModifierTypes = partyConfig?.pokemonConfigs ?.filter(config => config?.modifierConfigs) .map(config => config.modifierConfigs!); - scene.generateEnemyModifiers(customModifierTypes); + globalScene.generateEnemyModifiers(customModifierTypes); } } @@ -370,45 +376,42 @@ export async function initBattleWithEnemyConfig(scene: BattleScene, partyConfig: * See: [startOfBattleEffects](IMysteryEncounter.startOfBattleEffects) for more details * * This promise does not need to be awaited on if called in an encounter onInit (will just load lazily) - * @param scene * @param moves */ -export function loadCustomMovesForEncounter(scene: BattleScene, moves: Moves | Moves[]) { +export function loadCustomMovesForEncounter(moves: Moves | Moves[]) { moves = Array.isArray(moves) ? moves : [ moves ]; - return Promise.all(moves.map(move => initMoveAnim(scene, move))) - .then(() => loadMoveAnimAssets(scene, moves)); + return Promise.all(moves.map(move => initMoveAnim(move))) + .then(() => loadMoveAnimAssets(moves)); } /** * Will update player money, and animate change (sound optional) - * @param scene * @param changeValue * @param playSound * @param showMessage */ -export function updatePlayerMoney(scene: BattleScene, changeValue: number, playSound: boolean = true, showMessage: boolean = true) { - scene.money = Math.min(Math.max(scene.money + changeValue, 0), Number.MAX_SAFE_INTEGER); - scene.updateMoneyText(); - scene.animateMoneyChanged(false); +export function updatePlayerMoney(changeValue: number, playSound: boolean = true, showMessage: boolean = true) { + globalScene.money = Math.min(Math.max(globalScene.money + changeValue, 0), Number.MAX_SAFE_INTEGER); + globalScene.updateMoneyText(); + globalScene.animateMoneyChanged(false); if (playSound) { - scene.playSound("se/buy"); + globalScene.playSound("se/buy"); } if (showMessage) { if (changeValue < 0) { - scene.queueMessage(i18next.t("mysteryEncounterMessages:paid_money", { amount: -changeValue }), null, true); + globalScene.queueMessage(i18next.t("mysteryEncounterMessages:paid_money", { amount: -changeValue }), null, true); } else { - scene.queueMessage(i18next.t("mysteryEncounterMessages:receive_money", { amount: changeValue }), null, true); + globalScene.queueMessage(i18next.t("mysteryEncounterMessages:receive_money", { amount: changeValue }), null, true); } } } /** * Converts modifier bullshit to an actual item - * @param scene Battle Scene * @param modifier * @param pregenArgs Can specify BerryType for berries, TM for TMs, AttackBoostType for item, etc. */ -export function generateModifierType(scene: BattleScene, modifier: () => ModifierType, pregenArgs?: any[]): ModifierType | null { +export function generateModifierType(modifier: () => ModifierType, pregenArgs?: any[]): ModifierType | null { const modifierId = Object.keys(modifierTypes).find(k => modifierTypes[k] === modifier); if (!modifierId) { return null; @@ -419,19 +422,18 @@ export function generateModifierType(scene: BattleScene, modifier: () => Modifie // Populates item id and tier (order matters) result = result .withIdFromFunc(modifierTypes[modifierId]) - .withTierFromPool(ModifierPoolType.PLAYER, scene.getPlayerParty()); + .withTierFromPool(ModifierPoolType.PLAYER, globalScene.getPlayerParty()); - return result instanceof ModifierTypeGenerator ? result.generateType(scene.getPlayerParty(), pregenArgs) : result; + return result instanceof ModifierTypeGenerator ? result.generateType(globalScene.getPlayerParty(), pregenArgs) : result; } /** * Converts modifier bullshit to an actual item - * @param scene - Battle Scene * @param modifier * @param pregenArgs - can specify BerryType for berries, TM for TMs, AttackBoostType for item, etc. */ -export function generateModifierTypeOption(scene: BattleScene, modifier: () => ModifierType, pregenArgs?: any[]): ModifierTypeOption | null { - const result = generateModifierType(scene, modifier, pregenArgs); +export function generateModifierTypeOption(modifier: () => ModifierType, pregenArgs?: any[]): ModifierTypeOption | null { + const result = generateModifierType(modifier, pregenArgs); if (result) { return new ModifierTypeOption(result, 0); } @@ -440,30 +442,29 @@ export function generateModifierTypeOption(scene: BattleScene, modifier: () => M /** * This function is intended for use inside onPreOptionPhase() of an encounter option - * @param scene * @param onPokemonSelected - Any logic that needs to be performed when Pokemon is chosen * If a second option needs to be selected, onPokemonSelected should return a OptionSelectItem[] object * @param onPokemonNotSelected - Any logic that needs to be performed if no Pokemon is chosen * @param selectablePokemonFilter */ -export function selectPokemonForOption(scene: BattleScene, onPokemonSelected: (pokemon: PlayerPokemon) => void | OptionSelectItem[], onPokemonNotSelected?: () => void, selectablePokemonFilter?: PokemonSelectFilter): Promise { +export function selectPokemonForOption(onPokemonSelected: (pokemon: PlayerPokemon) => void | OptionSelectItem[], onPokemonNotSelected?: () => void, selectablePokemonFilter?: PokemonSelectFilter): Promise { return new Promise(resolve => { - const modeToSetOnExit = scene.ui.getMode(); + const modeToSetOnExit = globalScene.ui.getMode(); // Open party screen to choose pokemon - scene.ui.setMode(Mode.PARTY, PartyUiMode.SELECT, -1, (slotIndex: number, option: PartyOption) => { - if (slotIndex < scene.getPlayerParty().length) { - scene.ui.setMode(modeToSetOnExit).then(() => { - const pokemon = scene.getPlayerParty()[slotIndex]; + globalScene.ui.setMode(Mode.PARTY, PartyUiMode.SELECT, -1, (slotIndex: number, option: PartyOption) => { + if (slotIndex < globalScene.getPlayerParty().length) { + globalScene.ui.setMode(modeToSetOnExit).then(() => { + const pokemon = globalScene.getPlayerParty()[slotIndex]; const secondaryOptions = onPokemonSelected(pokemon); if (!secondaryOptions) { - scene.currentBattle.mysteryEncounter!.setDialogueToken("selectedPokemon", pokemon.getNameToRender()); + globalScene.currentBattle.mysteryEncounter!.setDialogueToken("selectedPokemon", pokemon.getNameToRender()); resolve(true); return; } // There is a second option to choose after selecting the Pokemon - scene.ui.setMode(Mode.MESSAGE).then(() => { + globalScene.ui.setMode(Mode.MESSAGE).then(() => { const displayOptions = () => { // Always appends a cancel option to bottom of options const fullOptions = secondaryOptions.map(option => { @@ -471,7 +472,7 @@ export function selectPokemonForOption(scene: BattleScene, onPokemonSelected: (p const onSelect = option.handler; option.handler = () => { onSelect(); - scene.currentBattle.mysteryEncounter!.setDialogueToken("selectedPokemon", pokemon.getNameToRender()); + globalScene.currentBattle.mysteryEncounter!.setDialogueToken("selectedPokemon", pokemon.getNameToRender()); resolve(true); return true; }; @@ -479,13 +480,13 @@ export function selectPokemonForOption(scene: BattleScene, onPokemonSelected: (p }).concat({ label: i18next.t("menu:cancel"), handler: () => { - scene.ui.clearText(); - scene.ui.setMode(modeToSetOnExit); + globalScene.ui.clearText(); + globalScene.ui.setMode(modeToSetOnExit); resolve(false); return true; }, onHover: () => { - showEncounterText(scene, i18next.t("mysteryEncounterMessages:cancel_option"), 0, 0, false); + showEncounterText(i18next.t("mysteryEncounterMessages:cancel_option"), 0, 0, false); } }); @@ -500,19 +501,19 @@ export function selectPokemonForOption(scene: BattleScene, onPokemonSelected: (p if (fullOptions[0].onHover) { fullOptions[0].onHover(); } - scene.ui.setModeWithoutClear(Mode.OPTION_SELECT, config, null, true); + globalScene.ui.setModeWithoutClear(Mode.OPTION_SELECT, config, null, true); }; - const textPromptKey = scene.currentBattle.mysteryEncounter?.selectedOption?.dialogue?.secondOptionPrompt; + const textPromptKey = globalScene.currentBattle.mysteryEncounter?.selectedOption?.dialogue?.secondOptionPrompt; if (!textPromptKey) { displayOptions(); } else { - showEncounterText(scene, textPromptKey).then(() => displayOptions()); + showEncounterText(textPromptKey).then(() => displayOptions()); } }); }); } else { - scene.ui.setMode(modeToSetOnExit).then(() => { + globalScene.ui.setMode(modeToSetOnExit).then(() => { if (onPokemonNotSelected) { onPokemonNotSelected(); } @@ -529,33 +530,33 @@ interface PokemonAndOptionSelected { } /** - * This function is intended for use inside onPreOptionPhase() of an encounter option - * @param scene - * If a second option needs to be selected, onPokemonSelected should return a OptionSelectItem[] object + * This function is intended for use inside `onPreOptionPhase()` of an encounter option + * + * If a second option needs to be selected, `onPokemonSelected` should return a {@linkcode OptionSelectItem}`[]` object * @param options * @param optionSelectPromptKey * @param selectablePokemonFilter * @param onHoverOverCancelOption */ -export function selectOptionThenPokemon(scene: BattleScene, options: OptionSelectItem[], optionSelectPromptKey: string, selectablePokemonFilter?: PokemonSelectFilter, onHoverOverCancelOption?: () => void): Promise { +export function selectOptionThenPokemon(options: OptionSelectItem[], optionSelectPromptKey: string, selectablePokemonFilter?: PokemonSelectFilter, onHoverOverCancelOption?: () => void): Promise { return new Promise(resolve => { - const modeToSetOnExit = scene.ui.getMode(); + const modeToSetOnExit = globalScene.ui.getMode(); const displayOptions = (config: OptionSelectConfig) => { - scene.ui.setMode(Mode.MESSAGE).then(() => { + globalScene.ui.setMode(Mode.MESSAGE).then(() => { if (!optionSelectPromptKey) { // Do hover over the starting selection option if (fullOptions[0].onHover) { fullOptions[0].onHover(); } - scene.ui.setMode(Mode.OPTION_SELECT, config); + globalScene.ui.setMode(Mode.OPTION_SELECT, config); } else { - showEncounterText(scene, optionSelectPromptKey).then(() => { + showEncounterText(optionSelectPromptKey).then(() => { // Do hover over the starting selection option if (fullOptions[0].onHover) { fullOptions[0].onHover(); } - scene.ui.setMode(Mode.OPTION_SELECT, config); + globalScene.ui.setMode(Mode.OPTION_SELECT, config); }); } }); @@ -563,10 +564,10 @@ export function selectOptionThenPokemon(scene: BattleScene, options: OptionSelec const selectPokemonAfterOption = (selectedOptionIndex: number) => { // Open party screen to choose a Pokemon - scene.ui.setMode(Mode.PARTY, PartyUiMode.SELECT, -1, (slotIndex: number, option: PartyOption) => { - if (slotIndex < scene.getPlayerParty().length) { + globalScene.ui.setMode(Mode.PARTY, PartyUiMode.SELECT, -1, (slotIndex: number, option: PartyOption) => { + if (slotIndex < globalScene.getPlayerParty().length) { // Pokemon and option selected - scene.ui.setMode(modeToSetOnExit).then(() => { + globalScene.ui.setMode(modeToSetOnExit).then(() => { const result: PokemonAndOptionSelected = { selectedPokemonIndex: slotIndex, selectedOptionIndex: selectedOptionIndex }; resolve(result); }); @@ -590,8 +591,8 @@ export function selectOptionThenPokemon(scene: BattleScene, options: OptionSelec }).concat({ label: i18next.t("menu:cancel"), handler: () => { - scene.ui.clearText(); - scene.ui.setMode(modeToSetOnExit); + globalScene.ui.clearText(); + globalScene.ui.setMode(modeToSetOnExit); resolve(null); return true; }, @@ -599,7 +600,7 @@ export function selectOptionThenPokemon(scene: BattleScene, options: OptionSelec if (onHoverOverCancelOption) { onHoverOverCancelOption(); } - showEncounterText(scene, i18next.t("mysteryEncounterMessages:cancel_option"), 0, 0, false); + showEncounterText(i18next.t("mysteryEncounterMessages:cancel_option"), 0, 0, false); } }); @@ -617,27 +618,26 @@ export function selectOptionThenPokemon(scene: BattleScene, options: OptionSelec /** * Will initialize reward phases to follow the mystery encounter * Can have shop displayed or skipped - * @param scene - Battle Scene * @param customShopRewards - adds a shop phase with the specified rewards / reward tiers * @param eggRewards * @param preRewardsCallback - can execute an arbitrary callback before the new phases if necessary (useful for updating items/party/injecting new phases before {@linkcode MysteryEncounterRewardsPhase}) */ -export function setEncounterRewards(scene: BattleScene, customShopRewards?: CustomModifierSettings, eggRewards?: IEggOptions[], preRewardsCallback?: Function) { - scene.currentBattle.mysteryEncounter!.doEncounterRewards = (scene: BattleScene) => { +export function setEncounterRewards(customShopRewards?: CustomModifierSettings, eggRewards?: IEggOptions[], preRewardsCallback?: Function) { + globalScene.currentBattle.mysteryEncounter!.doEncounterRewards = () => { if (preRewardsCallback) { preRewardsCallback(); } if (customShopRewards) { - scene.unshiftPhase(new SelectModifierPhase(scene, 0, undefined, customShopRewards)); + globalScene.unshiftPhase(new SelectModifierPhase(0, undefined, customShopRewards)); } else { - scene.tryRemovePhase(p => p instanceof SelectModifierPhase); + globalScene.tryRemovePhase(p => p instanceof SelectModifierPhase); } if (eggRewards) { eggRewards.forEach(eggOptions => { const egg = new Egg(eggOptions); - egg.addEggToGameData(scene); + egg.addEggToGameData(); }); } @@ -648,10 +648,11 @@ export function setEncounterRewards(scene: BattleScene, customShopRewards?: Cust /** * Will initialize exp phases into the phase queue (these are in addition to any combat or other exp earned) * Exp Share and Exp Balance will still function as normal - * @param scene - Battle Scene * @param participantId - id/s of party pokemon that get full exp value. Other party members will receive Exp Share amounts * @param baseExpValue - gives exp equivalent to a pokemon of the wave index's level. + * * Guidelines: + * ```md * 36 - Sunkern (lowest in game) * 62-64 - regional starter base evos * 100 - Scyther @@ -660,14 +661,15 @@ export function setEncounterRewards(scene: BattleScene, customShopRewards?: Cust * 290 - trio legendaries * 340 - box legendaries * 608 - Blissey (highest in game) + * ``` * https://bulbapedia.bulbagarden.net/wiki/List_of_Pok%C3%A9mon_by_effort_value_yield_(Generation_IX) * @param useWaveIndex - set to false when directly passing the the full exp value instead of baseExpValue */ -export function setEncounterExp(scene: BattleScene, participantId: number | number[], baseExpValue: number, useWaveIndex: boolean = true) { +export function setEncounterExp(participantId: number | number[], baseExpValue: number, useWaveIndex: boolean = true) { const participantIds = Array.isArray(participantId) ? participantId : [ participantId ]; - scene.currentBattle.mysteryEncounter!.doEncounterExp = (scene: BattleScene) => { - scene.unshiftPhase(new PartyExpPhase(scene, baseExpValue, useWaveIndex, new Set(participantIds))); + globalScene.currentBattle.mysteryEncounter!.doEncounterExp = () => { + globalScene.unshiftPhase(new PartyExpPhase(baseExpValue, useWaveIndex, new Set(participantIds))); return true; }; @@ -686,60 +688,57 @@ export class OptionSelectSettings { /** * Can be used to queue a new series of Options to select for an Encounter * MUST be used only in onOptionPhase, will not work in onPreOptionPhase or onPostOptionPhase - * @param scene * @param optionSelectSettings */ -export function initSubsequentOptionSelect(scene: BattleScene, optionSelectSettings: OptionSelectSettings) { - scene.pushPhase(new MysteryEncounterPhase(scene, optionSelectSettings)); +export function initSubsequentOptionSelect(optionSelectSettings: OptionSelectSettings) { + globalScene.pushPhase(new MysteryEncounterPhase(optionSelectSettings)); } /** * Can be used to exit an encounter without any battles or followup * Will skip any shops and rewards, and queue the next encounter phase as normal - * @param scene * @param addHealPhase - when true, will add a shop phase to end of encounter with 0 rewards but healing items are available * @param encounterMode - Can set custom encounter mode if necessary (may be required for forcing Pokemon to return before next phase) */ -export function leaveEncounterWithoutBattle(scene: BattleScene, addHealPhase: boolean = false, encounterMode: MysteryEncounterMode = MysteryEncounterMode.NO_BATTLE) { - scene.currentBattle.mysteryEncounter!.encounterMode = encounterMode; - scene.clearPhaseQueue(); - scene.clearPhaseQueueSplice(); - handleMysteryEncounterVictory(scene, addHealPhase); +export function leaveEncounterWithoutBattle(addHealPhase: boolean = false, encounterMode: MysteryEncounterMode = MysteryEncounterMode.NO_BATTLE) { + globalScene.currentBattle.mysteryEncounter!.encounterMode = encounterMode; + globalScene.clearPhaseQueue(); + globalScene.clearPhaseQueueSplice(); + handleMysteryEncounterVictory(addHealPhase); } /** * - * @param scene * @param addHealPhase - Adds an empty shop phase to allow player to purchase healing items * @param doNotContinue - default `false`. If set to true, will not end the battle and continue to next wave */ -export function handleMysteryEncounterVictory(scene: BattleScene, addHealPhase: boolean = false, doNotContinue: boolean = false) { - const allowedPkm = scene.getPlayerParty().filter((pkm) => pkm.isAllowedInBattle()); +export function handleMysteryEncounterVictory(addHealPhase: boolean = false, doNotContinue: boolean = false) { + const allowedPkm = globalScene.getPlayerParty().filter((pkm) => pkm.isAllowedInBattle()); if (allowedPkm.length === 0) { - scene.clearPhaseQueue(); - scene.unshiftPhase(new GameOverPhase(scene)); + globalScene.clearPhaseQueue(); + globalScene.unshiftPhase(new GameOverPhase()); return; } // If in repeated encounter variant, do nothing // Variant must eventually be swapped in order to handle "true" end of the encounter - const encounter = scene.currentBattle.mysteryEncounter!; + const encounter = globalScene.currentBattle.mysteryEncounter!; if (encounter.continuousEncounter || doNotContinue) { return; } else if (encounter.encounterMode === MysteryEncounterMode.NO_BATTLE) { - scene.pushPhase(new MysteryEncounterRewardsPhase(scene, addHealPhase)); - scene.pushPhase(new EggLapsePhase(scene)); - } else if (!scene.getEnemyParty().find(p => encounter.encounterMode !== MysteryEncounterMode.TRAINER_BATTLE ? p.isOnField() : !p?.isFainted(true))) { - scene.pushPhase(new BattleEndPhase(scene, true)); + globalScene.pushPhase(new MysteryEncounterRewardsPhase(addHealPhase)); + globalScene.pushPhase(new EggLapsePhase()); + } else if (!globalScene.getEnemyParty().find(p => encounter.encounterMode !== MysteryEncounterMode.TRAINER_BATTLE ? p.isOnField() : !p?.isFainted(true))) { + globalScene.pushPhase(new BattleEndPhase(true)); if (encounter.encounterMode === MysteryEncounterMode.TRAINER_BATTLE) { - scene.pushPhase(new TrainerVictoryPhase(scene)); + globalScene.pushPhase(new TrainerVictoryPhase()); } - if (scene.gameMode.isEndless || !scene.gameMode.isWaveFinal(scene.currentBattle.waveIndex)) { - scene.pushPhase(new MysteryEncounterRewardsPhase(scene, addHealPhase)); + if (globalScene.gameMode.isEndless || !globalScene.gameMode.isWaveFinal(globalScene.currentBattle.waveIndex)) { + globalScene.pushPhase(new MysteryEncounterRewardsPhase(addHealPhase)); if (!encounter.doContinueEncounter) { // Only lapse eggs once for multi-battle encounters - scene.pushPhase(new EggLapsePhase(scene)); + globalScene.pushPhase(new EggLapsePhase()); } } } @@ -747,48 +746,46 @@ export function handleMysteryEncounterVictory(scene: BattleScene, addHealPhase: /** * Similar to {@linkcode handleMysteryEncounterVictory}, but for cases where the player lost a battle or failed a challenge - * @param scene * @param addHealPhase */ -export function handleMysteryEncounterBattleFailed(scene: BattleScene, addHealPhase: boolean = false, doNotContinue: boolean = false) { - const allowedPkm = scene.getPlayerParty().filter((pkm) => pkm.isAllowedInBattle()); +export function handleMysteryEncounterBattleFailed(addHealPhase: boolean = false, doNotContinue: boolean = false) { + const allowedPkm = globalScene.getPlayerParty().filter((pkm) => pkm.isAllowedInBattle()); if (allowedPkm.length === 0) { - scene.clearPhaseQueue(); - scene.unshiftPhase(new GameOverPhase(scene)); + globalScene.clearPhaseQueue(); + globalScene.unshiftPhase(new GameOverPhase()); return; } // If in repeated encounter variant, do nothing // Variant must eventually be swapped in order to handle "true" end of the encounter - const encounter = scene.currentBattle.mysteryEncounter!; + const encounter = globalScene.currentBattle.mysteryEncounter!; if (encounter.continuousEncounter || doNotContinue) { return; } else if (encounter.encounterMode !== MysteryEncounterMode.NO_BATTLE) { - scene.pushPhase(new BattleEndPhase(scene, false)); + globalScene.pushPhase(new BattleEndPhase(false)); } - scene.pushPhase(new MysteryEncounterRewardsPhase(scene, addHealPhase)); + globalScene.pushPhase(new MysteryEncounterRewardsPhase(addHealPhase)); if (!encounter.doContinueEncounter) { // Only lapse eggs once for multi-battle encounters - scene.pushPhase(new EggLapsePhase(scene)); + globalScene.pushPhase(new EggLapsePhase()); } } /** * - * @param scene * @param hide - If true, performs ease out and hide visuals. If false, eases in visuals. Defaults to true * @param destroy - If true, will destroy visuals ONLY ON HIDE TRANSITION. Does nothing on show. Defaults to true * @param duration */ -export function transitionMysteryEncounterIntroVisuals(scene: BattleScene, hide: boolean = true, destroy: boolean = true, duration: number = 750): Promise { +export function transitionMysteryEncounterIntroVisuals(hide: boolean = true, destroy: boolean = true, duration: number = 750): Promise { return new Promise(resolve => { - const introVisuals = scene.currentBattle.mysteryEncounter!.introVisuals; - const enemyPokemon = scene.getEnemyField(); + const introVisuals = globalScene.currentBattle.mysteryEncounter!.introVisuals; + const enemyPokemon = globalScene.getEnemyField(); if (enemyPokemon) { - scene.currentBattle.enemyParty = []; + globalScene.currentBattle.enemyParty = []; } if (introVisuals) { if (!hide) { @@ -800,7 +797,7 @@ export function transitionMysteryEncounterIntroVisuals(scene: BattleScene, hide: } // Transition - scene.tweens.add({ + globalScene.tweens.add({ targets: [ introVisuals, enemyPokemon ], x: `${hide ? "+" : "-"}=16`, y: `${hide ? "-" : "+"}=16`, @@ -809,13 +806,13 @@ export function transitionMysteryEncounterIntroVisuals(scene: BattleScene, hide: duration, onComplete: () => { if (hide && destroy) { - scene.field.remove(introVisuals, true); + globalScene.field.remove(introVisuals, true); enemyPokemon.forEach(pokemon => { - scene.field.remove(pokemon, true); + globalScene.field.remove(pokemon, true); }); - scene.currentBattle.mysteryEncounter!.introVisuals = undefined; + globalScene.currentBattle.mysteryEncounter!.introVisuals = undefined; } resolve(true); } @@ -829,11 +826,10 @@ export function transitionMysteryEncounterIntroVisuals(scene: BattleScene, hide: /** * Will queue moves for any pokemon to use before the first CommandPhase of a battle * Mostly useful for allowing {@linkcode MysteryEncounter} enemies to "cheat" and use moves before the first turn - * @param scene */ -export function handleMysteryEncounterBattleStartEffects(scene: BattleScene) { - const encounter = scene.currentBattle.mysteryEncounter; - if (scene.currentBattle.isBattleMysteryEncounter() && encounter && encounter.encounterMode !== MysteryEncounterMode.NO_BATTLE && !encounter.startOfBattleEffectsComplete) { +export function handleMysteryEncounterBattleStartEffects() { + const encounter = globalScene.currentBattle.mysteryEncounter; + if (globalScene.currentBattle.isBattleMysteryEncounter() && encounter && encounter.encounterMode !== MysteryEncounterMode.NO_BATTLE && !encounter.startOfBattleEffectsComplete) { const effects = encounter.startOfBattleEffects; effects.forEach(effect => { let source; @@ -841,24 +837,24 @@ export function handleMysteryEncounterBattleStartEffects(scene: BattleScene) { source = effect.sourcePokemon; } else if (!isNullOrUndefined(effect.sourceBattlerIndex)) { if (effect.sourceBattlerIndex === BattlerIndex.ATTACKER) { - source = scene.getEnemyField()[0]; + source = globalScene.getEnemyField()[0]; } else if (effect.sourceBattlerIndex === BattlerIndex.ENEMY) { - source = scene.getEnemyField()[0]; + source = globalScene.getEnemyField()[0]; } else if (effect.sourceBattlerIndex === BattlerIndex.ENEMY_2) { - source = scene.getEnemyField()[1]; + source = globalScene.getEnemyField()[1]; } else if (effect.sourceBattlerIndex === BattlerIndex.PLAYER) { - source = scene.getPlayerField()[0]; + source = globalScene.getPlayerField()[0]; } else if (effect.sourceBattlerIndex === BattlerIndex.PLAYER_2) { - source = scene.getPlayerField()[1]; + source = globalScene.getPlayerField()[1]; } } else { - source = scene.getEnemyField()[0]; + source = globalScene.getEnemyField()[0]; } - scene.pushPhase(new MovePhase(scene, source, effect.targets, effect.move, effect.followUp, effect.ignorePp)); + globalScene.pushPhase(new MovePhase(source, effect.targets, effect.move, effect.followUp, effect.ignorePp)); }); // Pseudo turn end phase to reset flinch states, Endure, etc. - scene.pushPhase(new MysteryEncounterBattleStartCleanupPhase(scene)); + globalScene.pushPhase(new MysteryEncounterBattleStartCleanupPhase()); encounter.startOfBattleEffectsComplete = true; } @@ -867,13 +863,12 @@ export function handleMysteryEncounterBattleStartEffects(scene: BattleScene) { /** * Can queue extra phases or logic during {@linkcode TurnInitPhase} * Should mostly just be used for injecting custom phases into the battle system on turn start - * @param scene * @return boolean - if true, will skip the remainder of the {@linkcode TurnInitPhase} */ -export function handleMysteryEncounterTurnStartEffects(scene: BattleScene): boolean { - const encounter = scene.currentBattle.mysteryEncounter; - if (scene.currentBattle.isBattleMysteryEncounter() && encounter && encounter.onTurnStart) { - return encounter.onTurnStart(scene); +export function handleMysteryEncounterTurnStartEffects(): boolean { + const encounter = globalScene.currentBattle.mysteryEncounter; + if (globalScene.currentBattle.isBattleMysteryEncounter() && encounter && encounter.onTurnStart) { + return encounter.onTurnStart(); } return false; @@ -882,10 +877,9 @@ export function handleMysteryEncounterTurnStartEffects(scene: BattleScene): bool /** * TODO: remove once encounter spawn rate is finalized * Just a helper function to calculate aggregate stats for MEs in a Classic run - * @param scene * @param baseSpawnWeight */ -export function calculateMEAggregateStats(scene: BattleScene, baseSpawnWeight: number) { +export function calculateMEAggregateStats(baseSpawnWeight: number) { const numRuns = 1000; let run = 0; const biomes = Object.keys(Biome).filter(key => isNaN(Number(key))); @@ -898,9 +892,9 @@ export function calculateMEAggregateStats(scene: BattleScene, baseSpawnWeight: n const encountersByBiome = new Map(biomes.map(b => [ b, 0 ])); const validMEfloorsByBiome = new Map(biomes.map(b => [ b, 0 ])); let currentBiome = Biome.TOWN; - let currentArena = scene.newArena(currentBiome); - scene.setSeed(Utils.randomString(24)); - scene.resetSeed(); + let currentArena = globalScene.newArena(currentBiome); + globalScene.setSeed(Utils.randomString(24)); + globalScene.resetSeed(); for (let i = 10; i < 180; i++) { // Boss if (i % 10 === 0) { @@ -911,7 +905,7 @@ export function calculateMEAggregateStats(scene: BattleScene, baseSpawnWeight: n if (i % 10 === 1) { if (Array.isArray(biomeLinks[currentBiome])) { let biomes: Biome[]; - scene.executeWithSeedOffset(() => { + globalScene.executeWithSeedOffset(() => { biomes = (biomeLinks[currentBiome] as (Biome | [Biome, number])[]) .filter(b => { return !Array.isArray(b) || !Utils.randSeedInt(b[1]); @@ -932,20 +926,20 @@ export function calculateMEAggregateStats(scene: BattleScene, baseSpawnWeight: n if (!(i % 50)) { currentBiome = Biome.END; } else { - currentBiome = scene.generateRandomBiome(i); + currentBiome = globalScene.generateRandomBiome(i); } } - currentArena = scene.newArena(currentBiome); + currentArena = globalScene.newArena(currentBiome); } // Fixed battle - if (scene.gameMode.isFixedBattle(i)) { + if (globalScene.gameMode.isFixedBattle(i)) { continue; } // Trainer - if (scene.gameMode.isWaveTrainer(i, currentArena)) { + if (globalScene.gameMode.isWaveTrainer(i, currentArena)) { continue; } @@ -995,7 +989,7 @@ export function calculateMEAggregateStats(scene: BattleScene, baseSpawnWeight: n const encountersByBiomeRuns: Map[] = []; const validFloorsByBiome: Map[] = []; while (run < numRuns) { - scene.executeWithSeedOffset(() => { + globalScene.executeWithSeedOffset(() => { const [ numEncounters, encountersByBiome, validMEfloorsByBiome ] = calculateNumEncounters(); encounterRuns.push(numEncounters); encountersByBiomeRuns.push(encountersByBiome); @@ -1047,17 +1041,16 @@ export function calculateMEAggregateStats(scene: BattleScene, baseSpawnWeight: n /** * TODO: remove once encounter spawn rate is finalized * Just a helper function to calculate aggregate stats for MEs in a Classic run - * @param scene * @param luckValue - 0 to 14 */ -export function calculateRareSpawnAggregateStats(scene: BattleScene, luckValue: number) { +export function calculateRareSpawnAggregateStats(luckValue: number) { const numRuns = 1000; let run = 0; const calculateNumRareEncounters = (): any[] => { const bossEncountersByRarity = [ 0, 0, 0, 0 ]; - scene.setSeed(Utils.randomString(24)); - scene.resetSeed(); + globalScene.setSeed(Utils.randomString(24)); + globalScene.resetSeed(); // There are 12 wild boss floors for (let i = 0; i < 12; i++) { // Roll boss tier @@ -1091,7 +1084,7 @@ export function calculateRareSpawnAggregateStats(scene: BattleScene, luckValue: const encounterRuns: number[][] = []; while (run < numRuns) { - scene.executeWithSeedOffset(() => { + globalScene.executeWithSeedOffset(() => { const bossEncountersByRarity = calculateNumRareEncounters(); encounterRuns.push(bossEncountersByRarity); }, 1000 * run); diff --git a/src/data/mystery-encounters/utils/encounter-pokemon-utils.ts b/src/data/mystery-encounters/utils/encounter-pokemon-utils.ts index 072b5e5b160..bcce2ad1349 100644 --- a/src/data/mystery-encounters/utils/encounter-pokemon-utils.ts +++ b/src/data/mystery-encounters/utils/encounter-pokemon-utils.ts @@ -1,28 +1,32 @@ -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import i18next from "i18next"; import { isNullOrUndefined, randSeedInt } from "#app/utils"; import { PokemonHeldItemModifier } from "#app/modifier/modifier"; -import Pokemon, { EnemyPokemon, PlayerPokemon } from "#app/field/pokemon"; +import type { EnemyPokemon, PlayerPokemon } from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; import { doPokeballBounceAnim, getPokeballAtlasKey, getPokeballCatchMultiplier, getPokeballTintColor } from "#app/data/pokeball"; import { PlayerGender } from "#enums/player-gender"; import { addPokeballCaptureStars, addPokeballOpenParticles } from "#app/field/anims"; import { getStatusEffectCatchRateMultiplier } from "#app/data/status-effect"; import { achvs } from "#app/system/achv"; import { Mode } from "#app/ui/ui"; -import { PartyOption, PartyUiMode } from "#app/ui/party-ui-handler"; +import type { PartyOption } from "#app/ui/party-ui-handler"; +import { PartyUiMode } from "#app/ui/party-ui-handler"; import { Species } from "#enums/species"; -import { Type } from "#enums/type"; -import PokemonSpecies, { getPokemonSpecies } from "#app/data/pokemon-species"; +import type { Type } from "#enums/type"; +import type PokemonSpecies from "#app/data/pokemon-species"; +import { getPokemonSpecies } from "#app/data/pokemon-species"; import { speciesStarterCosts } from "#app/data/balance/starters"; import { getEncounterText, queueEncounterMessage, showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; import { getPokemonNameWithAffix } from "#app/messages"; -import { modifierTypes, PokemonHeldItemModifierType } from "#app/modifier/modifier-type"; +import type { PokemonHeldItemModifierType } from "#app/modifier/modifier-type"; +import { modifierTypes } from "#app/modifier/modifier-type"; import { Gender } from "#app/data/gender"; -import { PermanentStat } from "#enums/stat"; +import type { PermanentStat } from "#enums/stat"; import { VictoryPhase } from "#app/phases/victory-phase"; import { SummaryUiMode } from "#app/ui/summary-ui-handler"; import { CustomPokemonData } from "#app/data/custom-pokemon-data"; -import { Abilities } from "#enums/abilities"; +import type { Abilities } from "#enums/abilities"; import type { PokeballType } from "#enums/pokeball"; import { StatusEffect } from "#enums/status-effect"; @@ -45,7 +49,6 @@ export function getSpriteKeysFromSpecies(species: Species, female?: boolean, for /** * Gets the sprite key and file root for a given Pokemon (accounts for gender, shiny, variants, forms, and experimental) - * @param pokemon */ export function getSpriteKeysFromPokemon(pokemon: Pokemon): { spriteKey: string, fileRoot: string } { const spriteKey = pokemon.getSpeciesForm().getSpriteKey(pokemon.getGender() === Gender.FEMALE, pokemon.formIndex, pokemon.shiny, pokemon.variant); @@ -57,14 +60,13 @@ export function getSpriteKeysFromPokemon(pokemon: Pokemon): { spriteKey: string, /** * Will never remove the player's last non-fainted Pokemon (if they only have 1). * Otherwise, picks a Pokemon completely at random and removes from the party - * @param scene * @param isAllowed Default `false`. If `true`, only picks from legal mons. If no legal mons are found (or there is 1, with `doNotReturnLastAllowedMon = true`), will return a mon that is not allowed. * @param isFainted Default `false`. If `true`, includes fainted mons. * @param doNotReturnLastAllowedMon Default `false`. If `true`, will never return the last unfainted pokemon in the party. Useful when this function is being used to determine what Pokemon to remove from the party (Don't want to remove last unfainted) * @returns */ -export function getRandomPlayerPokemon(scene: BattleScene, isAllowed: boolean = false, isFainted: boolean = false, doNotReturnLastAllowedMon: boolean = false): PlayerPokemon { - const party = scene.getPlayerParty(); +export function getRandomPlayerPokemon(isAllowed: boolean = false, isFainted: boolean = false, doNotReturnLastAllowedMon: boolean = false): PlayerPokemon { + const party = globalScene.getPlayerParty(); let chosenIndex: number; let chosenPokemon: PlayerPokemon | null = null; const fullyLegalMons = party.filter(p => (!isAllowed || p.isAllowedInChallenge()) && (isFainted || !p.isFainted())); @@ -102,8 +104,8 @@ export function getRandomPlayerPokemon(scene: BattleScene, isAllowed: boolean = * @param isFainted Default false. If true, includes fainted mons. * @returns */ -export function getHighestLevelPlayerPokemon(scene: BattleScene, isAllowed: boolean = false, isFainted: boolean = false): PlayerPokemon { - const party = scene.getPlayerParty(); +export function getHighestLevelPlayerPokemon(isAllowed: boolean = false, isFainted: boolean = false): PlayerPokemon { + const party = globalScene.getPlayerParty(); let pokemon: PlayerPokemon | null = null; for (const p of party) { @@ -128,8 +130,8 @@ export function getHighestLevelPlayerPokemon(scene: BattleScene, isAllowed: bool * @param isFainted Default false. If true, includes fainted mons. * @returns */ -export function getHighestStatPlayerPokemon(scene: BattleScene, stat: PermanentStat, isAllowed: boolean = false, isFainted: boolean = false): PlayerPokemon { - const party = scene.getPlayerParty(); +export function getHighestStatPlayerPokemon(stat: PermanentStat, isAllowed: boolean = false, isFainted: boolean = false): PlayerPokemon { + const party = globalScene.getPlayerParty(); let pokemon: PlayerPokemon | null = null; for (const p of party) { @@ -153,8 +155,8 @@ export function getHighestStatPlayerPokemon(scene: BattleScene, stat: PermanentS * @param isFainted Default false. If true, includes fainted mons. * @returns */ -export function getLowestLevelPlayerPokemon(scene: BattleScene, isAllowed: boolean = false, isFainted: boolean = false): PlayerPokemon { - const party = scene.getPlayerParty(); +export function getLowestLevelPlayerPokemon(isAllowed: boolean = false, isFainted: boolean = false): PlayerPokemon { + const party = globalScene.getPlayerParty(); let pokemon: PlayerPokemon | null = null; for (const p of party) { @@ -178,8 +180,8 @@ export function getLowestLevelPlayerPokemon(scene: BattleScene, isAllowed: boole * @param isFainted Default false. If true, includes fainted mons. * @returns */ -export function getHighestStatTotalPlayerPokemon(scene: BattleScene, isAllowed: boolean = false, isFainted: boolean = false): PlayerPokemon { - const party = scene.getPlayerParty(); +export function getHighestStatTotalPlayerPokemon(isAllowed: boolean = false, isFainted: boolean = false): PlayerPokemon { + const party = globalScene.getPlayerParty(); let pokemon: PlayerPokemon | null = null; for (const p of party) { @@ -253,11 +255,11 @@ export function getRandomSpeciesByStarterCost(starterTiers: number | [number, nu * @param scene the battle scene * @param pokemon the player pokemon to KO */ -export function koPlayerPokemon(scene: BattleScene, pokemon: PlayerPokemon) { +export function koPlayerPokemon(pokemon: PlayerPokemon) { pokemon.hp = 0; pokemon.trySetStatus(StatusEffect.FAINT); pokemon.updateInfo(); - queueEncounterMessage(scene, i18next.t("battle:fainted", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); + queueEncounterMessage(i18next.t("battle:fainted", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); } /** @@ -269,11 +271,11 @@ export function koPlayerPokemon(scene: BattleScene, pokemon: PlayerPokemon) { * @param value the hp change amount. Positive for heal. Negative for damage * */ -function applyHpChangeToPokemon(scene: BattleScene, pokemon: PlayerPokemon, value: number) { +function applyHpChangeToPokemon(pokemon: PlayerPokemon, value: number) { const hpChange = Math.round(pokemon.hp + value); const nextHp = Math.max(Math.min(hpChange, pokemon.getMaxHp()), 0); if (nextHp === 0) { - koPlayerPokemon(scene, pokemon); + koPlayerPokemon(pokemon); } else { pokemon.hp = nextHp; } @@ -286,7 +288,7 @@ function applyHpChangeToPokemon(scene: BattleScene, pokemon: PlayerPokemon, valu * @param damage the amount of damage to apply * @see {@linkcode applyHpChangeToPokemon} */ -export function applyDamageToPokemon(scene: BattleScene, pokemon: PlayerPokemon, damage: number) { +export function applyDamageToPokemon(pokemon: PlayerPokemon, damage: number) { if (damage <= 0) { console.warn("Healing pokemon with `applyDamageToPokemon` is not recommended! Please use `applyHealToPokemon` instead."); } @@ -294,7 +296,7 @@ export function applyDamageToPokemon(scene: BattleScene, pokemon: PlayerPokemon, if (pokemon.isAllowedInBattle() && pokemon.hp - damage <= 0) { damage = pokemon.hp - 1; } - applyHpChangeToPokemon(scene, pokemon, -damage); + applyHpChangeToPokemon(pokemon, -damage); } /** @@ -304,12 +306,12 @@ export function applyDamageToPokemon(scene: BattleScene, pokemon: PlayerPokemon, * @param heal the amount of heal to apply * @see {@linkcode applyHpChangeToPokemon} */ -export function applyHealToPokemon(scene: BattleScene, pokemon: PlayerPokemon, heal: number) { +export function applyHealToPokemon(pokemon: PlayerPokemon, heal: number) { if (heal <= 0) { console.warn("Damaging pokemon with `applyHealToPokemon` is not recommended! Please use `applyDamageToPokemon` instead."); } - applyHpChangeToPokemon(scene, pokemon, heal); + applyHpChangeToPokemon(pokemon, heal); } /** @@ -320,11 +322,11 @@ export function applyHealToPokemon(scene: BattleScene, pokemon: PlayerPokemon, h */ export async function modifyPlayerPokemonBST(pokemon: PlayerPokemon, value: number) { const modType = modifierTypes.MYSTERY_ENCOUNTER_SHUCKLE_JUICE() - .generateType(pokemon.scene.getPlayerParty(), [ value ]) + .generateType(globalScene.getPlayerParty(), [ value ]) ?.withIdFromFunc(modifierTypes.MYSTERY_ENCOUNTER_SHUCKLE_JUICE); const modifier = modType?.newModifier(pokemon); if (modifier) { - await pokemon.scene.addModifier(modifier, false, false, false, true); + await globalScene.addModifier(modifier, false, false, false, true); pokemon.calculateStats(); } } @@ -337,10 +339,10 @@ export async function modifyPlayerPokemonBST(pokemon: PlayerPokemon, value: numb * @param modType * @param fallbackModifierType */ -export async function applyModifierTypeToPlayerPokemon(scene: BattleScene, pokemon: PlayerPokemon, modType: PokemonHeldItemModifierType, fallbackModifierType?: PokemonHeldItemModifierType) { +export async function applyModifierTypeToPlayerPokemon(pokemon: PlayerPokemon, modType: PokemonHeldItemModifierType, fallbackModifierType?: PokemonHeldItemModifierType) { // Check if the Pokemon has max stacks of that item already const modifier = modType.newModifier(pokemon); - const existing = scene.findModifier(m => ( + const existing = globalScene.findModifier(m => ( m instanceof PokemonHeldItemModifier && m.type.id === modType.id && m.pokemonId === pokemon.id && @@ -348,16 +350,16 @@ export async function applyModifierTypeToPlayerPokemon(scene: BattleScene, pokem )) as PokemonHeldItemModifier; // At max stacks - if (existing && existing.getStackCount() >= existing.getMaxStackCount(scene)) { + if (existing && existing.getStackCount() >= existing.getMaxStackCount()) { if (!fallbackModifierType) { return; } // Apply fallback - return applyModifierTypeToPlayerPokemon(scene, pokemon, fallbackModifierType); + return applyModifierTypeToPlayerPokemon(pokemon, fallbackModifierType); } - await scene.addModifier(modifier, false, false, false, true); + await globalScene.addModifier(modifier, false, false, false, true); } /** @@ -371,7 +373,7 @@ export async function applyModifierTypeToPlayerPokemon(scene: BattleScene, pokem * @param pokeballType * @param ballTwitchRate - can pass custom ball catch rates (for special events, like safari) */ -export function trainerThrowPokeball(scene: BattleScene, pokemon: EnemyPokemon, pokeballType: PokeballType, ballTwitchRate?: number): Promise { +export function trainerThrowPokeball(pokemon: EnemyPokemon, pokeballType: PokeballType, ballTwitchRate?: number): Promise { const originalY: number = pokemon.y; if (!ballTwitchRate) { @@ -386,43 +388,43 @@ export function trainerThrowPokeball(scene: BattleScene, pokemon: EnemyPokemon, const fpOffset = pokemon.getFieldPositionOffset(); const pokeballAtlasKey = getPokeballAtlasKey(pokeballType); - const pokeball: Phaser.GameObjects.Sprite = scene.addFieldSprite(16 + 75, 80 + 25, "pb", pokeballAtlasKey); + const pokeball: Phaser.GameObjects.Sprite = globalScene.addFieldSprite(16 + 75, 80 + 25, "pb", pokeballAtlasKey); pokeball.setOrigin(0.5, 0.625); - scene.field.add(pokeball); + globalScene.field.add(pokeball); - scene.time.delayedCall(300, () => { - scene.field.moveBelow(pokeball as Phaser.GameObjects.GameObject, pokemon); + globalScene.time.delayedCall(300, () => { + globalScene.field.moveBelow(pokeball as Phaser.GameObjects.GameObject, pokemon); }); return new Promise(resolve => { - scene.trainer.setTexture(`trainer_${scene.gameData.gender === PlayerGender.FEMALE ? "f" : "m"}_back_pb`); - scene.time.delayedCall(512, () => { - scene.playSound("se/pb_throw"); + globalScene.trainer.setTexture(`trainer_${globalScene.gameData.gender === PlayerGender.FEMALE ? "f" : "m"}_back_pb`); + globalScene.time.delayedCall(512, () => { + globalScene.playSound("se/pb_throw"); // Trainer throw frames - scene.trainer.setFrame("2"); - scene.time.delayedCall(256, () => { - scene.trainer.setFrame("3"); - scene.time.delayedCall(768, () => { - scene.trainer.setTexture(`trainer_${scene.gameData.gender === PlayerGender.FEMALE ? "f" : "m"}_back`); + globalScene.trainer.setFrame("2"); + globalScene.time.delayedCall(256, () => { + globalScene.trainer.setFrame("3"); + globalScene.time.delayedCall(768, () => { + globalScene.trainer.setTexture(`trainer_${globalScene.gameData.gender === PlayerGender.FEMALE ? "f" : "m"}_back`); }); }); // Pokeball move and catch logic - scene.tweens.add({ + globalScene.tweens.add({ targets: pokeball, x: { value: 236 + fpOffset[0], ease: "Linear" }, y: { value: 16 + fpOffset[1], ease: "Cubic.easeOut" }, duration: 500, onComplete: () => { pokeball.setTexture("pb", `${pokeballAtlasKey}_opening`); - scene.time.delayedCall(17, () => pokeball.setTexture("pb", `${pokeballAtlasKey}_open`)); - scene.playSound("se/pb_rel"); + globalScene.time.delayedCall(17, () => pokeball.setTexture("pb", `${pokeballAtlasKey}_open`)); + globalScene.playSound("se/pb_rel"); pokemon.tint(getPokeballTintColor(pokeballType)); - addPokeballOpenParticles(scene, pokeball.x, pokeball.y, pokeballType); + addPokeballOpenParticles(pokeball.x, pokeball.y, pokeballType); - scene.tweens.add({ + globalScene.tweens.add({ targets: pokemon, duration: 500, ease: "Sine.easeIn", @@ -431,13 +433,13 @@ export function trainerThrowPokeball(scene: BattleScene, pokemon: EnemyPokemon, onComplete: () => { pokeball.setTexture("pb", `${pokeballAtlasKey}_opening`); pokemon.setVisible(false); - scene.playSound("se/pb_catch"); - scene.time.delayedCall(17, () => pokeball.setTexture("pb", `${pokeballAtlasKey}`)); + globalScene.playSound("se/pb_catch"); + globalScene.time.delayedCall(17, () => pokeball.setTexture("pb", `${pokeballAtlasKey}`)); const doShake = () => { let shakeCount = 0; const pbX = pokeball.x; - const shakeCounter = scene.tweens.addCounter({ + const shakeCounter = globalScene.tweens.addCounter({ from: 0, to: 1, repeat: 4, @@ -456,30 +458,30 @@ export function trainerThrowPokeball(scene: BattleScene, pokemon: EnemyPokemon, onRepeat: () => { if (!pokemon.species.isObtainable()) { shakeCounter.stop(); - failCatch(scene, pokemon, originalY, pokeball, pokeballType).then(() => resolve(false)); + failCatch(pokemon, originalY, pokeball, pokeballType).then(() => resolve(false)); } else if (shakeCount++ < 3) { if (randSeedInt(65536) < ballTwitchRate) { - scene.playSound("se/pb_move"); + globalScene.playSound("se/pb_move"); } else { shakeCounter.stop(); - failCatch(scene, pokemon, originalY, pokeball, pokeballType).then(() => resolve(false)); + failCatch(pokemon, originalY, pokeball, pokeballType).then(() => resolve(false)); } } else { - scene.playSound("se/pb_lock"); - addPokeballCaptureStars(scene, pokeball); + globalScene.playSound("se/pb_lock"); + addPokeballCaptureStars(pokeball); - const pbTint = scene.add.sprite(pokeball.x, pokeball.y, "pb", "pb"); + const pbTint = globalScene.add.sprite(pokeball.x, pokeball.y, "pb", "pb"); pbTint.setOrigin(pokeball.originX, pokeball.originY); pbTint.setTintFill(0); pbTint.setAlpha(0); - scene.field.add(pbTint); - scene.tweens.add({ + globalScene.field.add(pbTint); + globalScene.tweens.add({ targets: pbTint, alpha: 0.375, duration: 200, easing: "Sine.easeOut", onComplete: () => { - scene.tweens.add({ + globalScene.tweens.add({ targets: pbTint, alpha: 0, duration: 200, @@ -491,12 +493,12 @@ export function trainerThrowPokeball(scene: BattleScene, pokemon: EnemyPokemon, } }, onComplete: () => { - catchPokemon(scene, pokemon, pokeball, pokeballType).then(() => resolve(true)); + catchPokemon(pokemon, pokeball, pokeballType).then(() => resolve(true)); } }); }; - scene.time.delayedCall(250, () => doPokeballBounceAnim(scene, pokeball, 16, 72, 350, doShake)); + globalScene.time.delayedCall(250, () => doPokeballBounceAnim(pokeball, 16, 72, 350, doShake)); } }); } @@ -513,9 +515,9 @@ export function trainerThrowPokeball(scene: BattleScene, pokemon: EnemyPokemon, * @param pokeball * @param pokeballType */ -function failCatch(scene: BattleScene, pokemon: EnemyPokemon, originalY: number, pokeball: Phaser.GameObjects.Sprite, pokeballType: PokeballType) { +function failCatch(pokemon: EnemyPokemon, originalY: number, pokeball: Phaser.GameObjects.Sprite, pokeballType: PokeballType) { return new Promise(resolve => { - scene.playSound("se/pb_rel"); + globalScene.playSound("se/pb_rel"); pokemon.setY(originalY); if (pokemon.status?.effect !== StatusEffect.SLEEP) { pokemon.cry(pokemon.getHpRatio() > 0.25 ? undefined : { rate: 0.85 }); @@ -526,19 +528,19 @@ function failCatch(scene: BattleScene, pokemon: EnemyPokemon, originalY: number, const pokeballAtlasKey = getPokeballAtlasKey(pokeballType); pokeball.setTexture("pb", `${pokeballAtlasKey}_opening`); - scene.time.delayedCall(17, () => pokeball.setTexture("pb", `${pokeballAtlasKey}_open`)); + globalScene.time.delayedCall(17, () => pokeball.setTexture("pb", `${pokeballAtlasKey}_open`)); - scene.tweens.add({ + globalScene.tweens.add({ targets: pokemon, duration: 250, ease: "Sine.easeOut", scale: 1 }); - scene.currentBattle.lastUsedPokeball = pokeballType; - removePb(scene, pokeball); + globalScene.currentBattle.lastUsedPokeball = pokeballType; + removePb(pokeball); - scene.ui.showText(i18next.t("battle:pokemonBrokeFree", { pokemonName: pokemon.getNameToRender() }), null, () => resolve(), null, true); + globalScene.ui.showText(i18next.t("battle:pokemonBrokeFree", { pokemonName: pokemon.getNameToRender() }), null, () => resolve(), null, true); }); } @@ -551,56 +553,56 @@ function failCatch(scene: BattleScene, pokemon: EnemyPokemon, originalY: number, * @param showCatchObtainMessage * @param isObtain */ -export async function catchPokemon(scene: BattleScene, pokemon: EnemyPokemon, pokeball: Phaser.GameObjects.Sprite | null, pokeballType: PokeballType, showCatchObtainMessage: boolean = true, isObtain: boolean = false): Promise { +export async function catchPokemon(pokemon: EnemyPokemon, pokeball: Phaser.GameObjects.Sprite | null, pokeballType: PokeballType, showCatchObtainMessage: boolean = true, isObtain: boolean = false): Promise { const speciesForm = !pokemon.fusionSpecies ? pokemon.getSpeciesForm() : pokemon.getFusionSpeciesForm(); if (speciesForm.abilityHidden && (pokemon.fusionSpecies ? pokemon.fusionAbilityIndex : pokemon.abilityIndex) === speciesForm.getAbilityCount() - 1) { - scene.validateAchv(achvs.HIDDEN_ABILITY); + globalScene.validateAchv(achvs.HIDDEN_ABILITY); } if (pokemon.species.subLegendary) { - scene.validateAchv(achvs.CATCH_SUB_LEGENDARY); + globalScene.validateAchv(achvs.CATCH_SUB_LEGENDARY); } if (pokemon.species.legendary) { - scene.validateAchv(achvs.CATCH_LEGENDARY); + globalScene.validateAchv(achvs.CATCH_LEGENDARY); } if (pokemon.species.mythical) { - scene.validateAchv(achvs.CATCH_MYTHICAL); + globalScene.validateAchv(achvs.CATCH_MYTHICAL); } - scene.pokemonInfoContainer.show(pokemon, true); + globalScene.pokemonInfoContainer.show(pokemon, true); - scene.gameData.updateSpeciesDexIvs(pokemon.species.getRootSpeciesId(true), pokemon.ivs); + globalScene.gameData.updateSpeciesDexIvs(pokemon.species.getRootSpeciesId(true), pokemon.ivs); return new Promise(resolve => { const doPokemonCatchMenu = () => { const end = () => { // Ensure the pokemon is in the enemy party in all situations - if (!scene.getEnemyParty().some(p => p.id === pokemon.id)) { - scene.getEnemyParty().push(pokemon); + if (!globalScene.getEnemyParty().some(p => p.id === pokemon.id)) { + globalScene.getEnemyParty().push(pokemon); } - scene.unshiftPhase(new VictoryPhase(scene, pokemon.id, true)); - scene.pokemonInfoContainer.hide(); + globalScene.unshiftPhase(new VictoryPhase(pokemon.id, true)); + globalScene.pokemonInfoContainer.hide(); if (pokeball) { - removePb(scene, pokeball); + removePb(pokeball); } resolve(); }; const removePokemon = () => { if (pokemon) { - scene.field.remove(pokemon, true); + globalScene.field.remove(pokemon, true); } }; const addToParty = (slotIndex?: number) => { const newPokemon = pokemon.addToParty(pokeballType, slotIndex); - const modifiers = scene.findModifiers(m => m instanceof PokemonHeldItemModifier, false); - if (scene.getPlayerParty().filter(p => p.isShiny()).length === 6) { - scene.validateAchv(achvs.SHINY_PARTY); + const modifiers = globalScene.findModifiers(m => m instanceof PokemonHeldItemModifier, false); + if (globalScene.getPlayerParty().filter(p => p.isShiny()).length === 6) { + globalScene.validateAchv(achvs.SHINY_PARTY); } - Promise.all(modifiers.map(m => scene.addModifier(m, true))).then(() => { - scene.updateModifiers(true); + Promise.all(modifiers.map(m => globalScene.addModifier(m, true))).then(() => { + globalScene.updateModifiers(true); removePokemon(); if (newPokemon) { newPokemon.loadAssets().then(end); @@ -609,21 +611,21 @@ export async function catchPokemon(scene: BattleScene, pokemon: EnemyPokemon, po } }); }; - Promise.all([ pokemon.hideInfo(), scene.gameData.setPokemonCaught(pokemon) ]).then(() => { - if (scene.getPlayerParty().length === 6) { + Promise.all([ pokemon.hideInfo(), globalScene.gameData.setPokemonCaught(pokemon) ]).then(() => { + if (globalScene.getPlayerParty().length === 6) { const promptRelease = () => { - scene.ui.showText(i18next.t("battle:partyFull", { pokemonName: pokemon.getNameToRender() }), null, () => { - scene.pokemonInfoContainer.makeRoomForConfirmUi(1, true); - scene.ui.setMode(Mode.CONFIRM, () => { - const newPokemon = scene.addPlayerPokemon(pokemon.species, pokemon.level, pokemon.abilityIndex, pokemon.formIndex, pokemon.gender, pokemon.shiny, pokemon.variant, pokemon.ivs, pokemon.nature, pokemon); - scene.ui.setMode(Mode.SUMMARY, newPokemon, 0, SummaryUiMode.DEFAULT, () => { - scene.ui.setMode(Mode.MESSAGE).then(() => { + globalScene.ui.showText(i18next.t("battle:partyFull", { pokemonName: pokemon.getNameToRender() }), null, () => { + globalScene.pokemonInfoContainer.makeRoomForConfirmUi(1, true); + globalScene.ui.setMode(Mode.CONFIRM, () => { + const newPokemon = globalScene.addPlayerPokemon(pokemon.species, pokemon.level, pokemon.abilityIndex, pokemon.formIndex, pokemon.gender, pokemon.shiny, pokemon.variant, pokemon.ivs, pokemon.nature, pokemon); + globalScene.ui.setMode(Mode.SUMMARY, newPokemon, 0, SummaryUiMode.DEFAULT, () => { + globalScene.ui.setMode(Mode.MESSAGE).then(() => { promptRelease(); }); }, false); }, () => { - scene.ui.setMode(Mode.PARTY, PartyUiMode.RELEASE, 0, (slotIndex: integer, _option: PartyOption) => { - scene.ui.setMode(Mode.MESSAGE).then(() => { + globalScene.ui.setMode(Mode.PARTY, PartyUiMode.RELEASE, 0, (slotIndex: integer, _option: PartyOption) => { + globalScene.ui.setMode(Mode.MESSAGE).then(() => { if (slotIndex < 6) { addToParty(slotIndex); } else { @@ -632,7 +634,7 @@ export async function catchPokemon(scene: BattleScene, pokemon: EnemyPokemon, po }); }); }, () => { - scene.ui.setMode(Mode.MESSAGE).then(() => { + globalScene.ui.setMode(Mode.MESSAGE).then(() => { removePokemon(); end(); }); @@ -647,7 +649,7 @@ export async function catchPokemon(scene: BattleScene, pokemon: EnemyPokemon, po }; if (showCatchObtainMessage) { - scene.ui.showText(i18next.t(isObtain ? "battle:pokemonObtained" : "battle:pokemonCaught", { pokemonName: pokemon.getNameToRender() }), null, doPokemonCatchMenu, 0, true); + globalScene.ui.showText(i18next.t(isObtain ? "battle:pokemonObtained" : "battle:pokemonCaught", { pokemonName: pokemon.getNameToRender() }), null, doPokemonCatchMenu, 0, true); } else { doPokemonCatchMenu(); } @@ -659,9 +661,9 @@ export async function catchPokemon(scene: BattleScene, pokemon: EnemyPokemon, po * @param scene * @param pokeball */ -function removePb(scene: BattleScene, pokeball: Phaser.GameObjects.Sprite) { +function removePb(pokeball: Phaser.GameObjects.Sprite) { if (pokeball) { - scene.tweens.add({ + globalScene.tweens.add({ targets: pokeball, duration: 250, delay: 250, @@ -679,11 +681,11 @@ function removePb(scene: BattleScene, pokeball: Phaser.GameObjects.Sprite) { * @param scene * @param pokemon */ -export async function doPokemonFlee(scene: BattleScene, pokemon: EnemyPokemon): Promise { +export async function doPokemonFlee(pokemon: EnemyPokemon): Promise { await new Promise(resolve => { - scene.playSound("se/flee"); + globalScene.playSound("se/flee"); // Ease pokemon out - scene.tweens.add({ + globalScene.tweens.add({ targets: pokemon, x: "+=16", y: "-=16", @@ -693,8 +695,8 @@ export async function doPokemonFlee(scene: BattleScene, pokemon: EnemyPokemon): scale: pokemon.getSpriteScale(), onComplete: () => { pokemon.setVisible(false); - scene.field.remove(pokemon, true); - showEncounterText(scene, i18next.t("battle:pokemonFled", { pokemonName: pokemon.getNameToRender() }), null, 600, false) + globalScene.field.remove(pokemon, true); + showEncounterText(i18next.t("battle:pokemonFled", { pokemonName: pokemon.getNameToRender() }), null, 600, false) .then(() => { resolve(); }); @@ -708,10 +710,10 @@ export async function doPokemonFlee(scene: BattleScene, pokemon: EnemyPokemon): * @param scene * @param pokemon */ -export function doPlayerFlee(scene: BattleScene, pokemon: EnemyPokemon): Promise { +export function doPlayerFlee(pokemon: EnemyPokemon): Promise { return new Promise(resolve => { // Ease pokemon out - scene.tweens.add({ + globalScene.tweens.add({ targets: pokemon, x: "+=16", y: "-=16", @@ -721,8 +723,8 @@ export function doPlayerFlee(scene: BattleScene, pokemon: EnemyPokemon): Promise scale: pokemon.getSpriteScale(), onComplete: () => { pokemon.setVisible(false); - scene.field.remove(pokemon, true); - showEncounterText(scene, i18next.t("battle:playerFled", { pokemonName: pokemon.getNameToRender() }), null, 600, false) + globalScene.field.remove(pokemon, true); + showEncounterText(i18next.t("battle:playerFled", { pokemonName: pokemon.getNameToRender() }), null, 600, false) .then(() => { resolve(); }); @@ -790,35 +792,35 @@ export function getGoldenBugNetSpecies(level: number): PokemonSpecies { * @param scene * @param levelAdditiveModifier Default 0. will add +(1 level / 10 waves * levelAdditiveModifier) to the level calculation */ -export function getEncounterPokemonLevelForWave(scene: BattleScene, levelAdditiveModifier: number = 0) { - const currentBattle = scene.currentBattle; +export function getEncounterPokemonLevelForWave(levelAdditiveModifier: number = 0) { + const currentBattle = globalScene.currentBattle; const baseLevel = currentBattle.getLevelForWave(); // Add a level scaling modifier that is (+1 level per 10 waves) * levelAdditiveModifier return baseLevel + Math.max(Math.round((currentBattle.waveIndex / 10) * levelAdditiveModifier), 0); } -export async function addPokemonDataToDexAndValidateAchievements(scene: BattleScene, pokemon: PlayerPokemon) { +export async function addPokemonDataToDexAndValidateAchievements(pokemon: PlayerPokemon) { const speciesForm = !pokemon.fusionSpecies ? pokemon.getSpeciesForm() : pokemon.getFusionSpeciesForm(); if (speciesForm.abilityHidden && (pokemon.fusionSpecies ? pokemon.fusionAbilityIndex : pokemon.abilityIndex) === speciesForm.getAbilityCount() - 1) { - scene.validateAchv(achvs.HIDDEN_ABILITY); + globalScene.validateAchv(achvs.HIDDEN_ABILITY); } if (pokemon.species.subLegendary) { - scene.validateAchv(achvs.CATCH_SUB_LEGENDARY); + globalScene.validateAchv(achvs.CATCH_SUB_LEGENDARY); } if (pokemon.species.legendary) { - scene.validateAchv(achvs.CATCH_LEGENDARY); + globalScene.validateAchv(achvs.CATCH_LEGENDARY); } if (pokemon.species.mythical) { - scene.validateAchv(achvs.CATCH_MYTHICAL); + globalScene.validateAchv(achvs.CATCH_MYTHICAL); } - scene.gameData.updateSpeciesDexIvs(pokemon.species.getRootSpeciesId(true), pokemon.ivs); - return scene.gameData.setPokemonCaught(pokemon, true, false, false); + globalScene.gameData.updateSpeciesDexIvs(pokemon.species.getRootSpeciesId(true), pokemon.ivs); + return globalScene.gameData.setPokemonCaught(pokemon, true, false, false); } /** @@ -830,12 +832,12 @@ export async function addPokemonDataToDexAndValidateAchievements(scene: BattleSc * @param scene * @param invalidSelectionKey */ -export function isPokemonValidForEncounterOptionSelection(pokemon: Pokemon, scene: BattleScene, invalidSelectionKey: string): string | null { +export function isPokemonValidForEncounterOptionSelection(pokemon: Pokemon, invalidSelectionKey: string): string | null { if (!pokemon.isAllowedInChallenge()) { return i18next.t("partyUiHandler:cantBeUsed", { pokemonName: pokemon.getNameToRender() }) ?? null; } if (!pokemon.isAllowedInBattle()) { - return getEncounterText(scene, invalidSelectionKey) ?? null; + return getEncounterText(invalidSelectionKey) ?? null; } return null; diff --git a/src/data/mystery-encounters/utils/encounter-transformation-sequence.ts b/src/data/mystery-encounters/utils/encounter-transformation-sequence.ts index 424ba15f811..d4ae3496b0c 100644 --- a/src/data/mystery-encounters/utils/encounter-transformation-sequence.ts +++ b/src/data/mystery-encounters/utils/encounter-transformation-sequence.ts @@ -1,8 +1,8 @@ -import BattleScene from "#app/battle-scene"; -import { PlayerPokemon } from "#app/field/pokemon"; +import type { PlayerPokemon } from "#app/field/pokemon"; import { getFrameMs } from "#app/utils"; import { cos, sin } from "#app/field/anims"; import { getTypeRgb } from "#app/data/type"; +import { globalScene } from "#app/global-scene"; export enum TransformationScreenPosition { CENTER, @@ -17,10 +17,10 @@ export enum TransformationScreenPosition { * @param transformPokemon * @param screenPosition */ -export function doPokemonTransformationSequence(scene: BattleScene, previousPokemon: PlayerPokemon, transformPokemon: PlayerPokemon, screenPosition: TransformationScreenPosition) { +export function doPokemonTransformationSequence(previousPokemon: PlayerPokemon, transformPokemon: PlayerPokemon, screenPosition: TransformationScreenPosition) { return new Promise(resolve => { - const transformationContainer = scene.fieldUI.getByName("Dream Background") as Phaser.GameObjects.Container; - const transformationBaseBg = scene.add.image(0, 0, "default_bg"); + const transformationContainer = globalScene.fieldUI.getByName("Dream Background") as Phaser.GameObjects.Container; + const transformationBaseBg = globalScene.add.image(0, 0, "default_bg"); transformationBaseBg.setOrigin(0, 0); transformationBaseBg.setVisible(false); transformationContainer.add(transformationBaseBg); @@ -36,8 +36,8 @@ export function doPokemonTransformationSequence(scene: BattleScene, previousPoke const yOffset = screenPosition !== TransformationScreenPosition.CENTER ? -15 : 0; const getPokemonSprite = () => { - const ret = scene.addPokemonSprite(previousPokemon, transformationBaseBg.displayWidth / 2 + xOffset, transformationBaseBg.displayHeight / 2 + yOffset, "pkmn__sub"); - ret.setPipeline(scene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], ignoreTimeTint: true }); + const ret = globalScene.addPokemonSprite(previousPokemon, transformationBaseBg.displayWidth / 2 + xOffset, transformationBaseBg.displayHeight / 2 + yOffset, "pkmn__sub"); + ret.setPipeline(globalScene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], ignoreTimeTint: true }); return ret; }; @@ -61,7 +61,7 @@ export function doPokemonTransformationSequence(scene: BattleScene, previousPoke console.error(`Failed to play animation for ${spriteKey}`, err); } - sprite.setPipeline(scene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], hasShadow: false, teraColor: getTypeRgb(previousPokemon.getTeraType()) }); + sprite.setPipeline(globalScene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], hasShadow: false, teraColor: getTypeRgb(previousPokemon.getTeraType()) }); sprite.setPipelineData("ignoreTimeTint", true); sprite.setPipelineData("spriteKey", previousPokemon.getSpriteKey()); sprite.setPipelineData("shiny", previousPokemon.shiny); @@ -94,14 +94,14 @@ export function doPokemonTransformationSequence(scene: BattleScene, previousPoke }); }); - scene.tweens.add({ + globalScene.tweens.add({ targets: pokemonSprite, alpha: 1, ease: "Cubic.easeInOut", duration: 2000, onComplete: () => { - doSpiralUpward(scene, transformationBaseBg, transformationContainer, xOffset, yOffset); - scene.tweens.addCounter({ + doSpiralUpward(transformationBaseBg, transformationContainer, xOffset, yOffset); + globalScene.tweens.addCounter({ from: 0, to: 1, duration: 1000, @@ -110,26 +110,26 @@ export function doPokemonTransformationSequence(scene: BattleScene, previousPoke }, onComplete: () => { pokemonSprite.setVisible(false); - scene.time.delayedCall(700, () => { - doArcDownward(scene, transformationBaseBg, transformationContainer, xOffset, yOffset); - scene.time.delayedCall(1000, () => { + globalScene.time.delayedCall(700, () => { + doArcDownward(transformationBaseBg, transformationContainer, xOffset, yOffset); + globalScene.time.delayedCall(1000, () => { pokemonEvoTintSprite.setScale(0.25); pokemonEvoTintSprite.setVisible(true); - doCycle(scene, 1.5, 6, pokemonTintSprite, pokemonEvoTintSprite).then(() => { + doCycle(1.5, 6, pokemonTintSprite, pokemonEvoTintSprite).then(() => { pokemonEvoSprite.setVisible(true); - doCircleInward(scene, transformationBaseBg, transformationContainer, xOffset, yOffset); + doCircleInward(transformationBaseBg, transformationContainer, xOffset, yOffset); - scene.time.delayedCall(900, () => { - scene.tweens.add({ + globalScene.time.delayedCall(900, () => { + globalScene.tweens.add({ targets: pokemonEvoTintSprite, alpha: 0, duration: 1500, delay: 150, easing: "Sine.easeIn", onComplete: () => { - scene.time.delayedCall(3000, () => { + globalScene.time.delayedCall(3000, () => { resolve(); - scene.tweens.add({ + globalScene.tweens.add({ targets: pokemonEvoSprite, alpha: 0, duration: 2000, @@ -163,17 +163,17 @@ export function doPokemonTransformationSequence(scene: BattleScene, previousPoke * @param xOffset * @param yOffset */ -function doSpiralUpward(scene: BattleScene, transformationBaseBg: Phaser.GameObjects.Image, transformationContainer: Phaser.GameObjects.Container, xOffset: number, yOffset: number) { +function doSpiralUpward(transformationBaseBg: Phaser.GameObjects.Image, transformationContainer: Phaser.GameObjects.Container, xOffset: number, yOffset: number) { let f = 0; - scene.tweens.addCounter({ + globalScene.tweens.addCounter({ repeat: 64, duration: getFrameMs(1), onRepeat: () => { if (f < 64) { if (!(f & 7)) { for (let i = 0; i < 4; i++) { - doSpiralUpwardParticle(scene, (f & 120) * 2 + i * 64, transformationBaseBg, transformationContainer, xOffset, yOffset); + doSpiralUpwardParticle((f & 120) * 2 + i * 64, transformationBaseBg, transformationContainer, xOffset, yOffset); } } f++; @@ -190,17 +190,17 @@ function doSpiralUpward(scene: BattleScene, transformationBaseBg: Phaser.GameObj * @param xOffset * @param yOffset */ -function doArcDownward(scene: BattleScene, transformationBaseBg: Phaser.GameObjects.Image, transformationContainer: Phaser.GameObjects.Container, xOffset: number, yOffset: number) { +function doArcDownward(transformationBaseBg: Phaser.GameObjects.Image, transformationContainer: Phaser.GameObjects.Container, xOffset: number, yOffset: number) { let f = 0; - scene.tweens.addCounter({ + globalScene.tweens.addCounter({ repeat: 96, duration: getFrameMs(1), onRepeat: () => { if (f < 96) { if (f < 6) { for (let i = 0; i < 9; i++) { - doArcDownParticle(scene, i * 16, transformationBaseBg, transformationContainer, xOffset, yOffset); + doArcDownParticle(i * 16, transformationBaseBg, transformationContainer, xOffset, yOffset); } } f++; @@ -217,17 +217,17 @@ function doArcDownward(scene: BattleScene, transformationBaseBg: Phaser.GameObje * @param pokemonTintSprite * @param pokemonEvoTintSprite */ -function doCycle(scene: BattleScene, l: number, lastCycle: number, pokemonTintSprite: Phaser.GameObjects.Sprite, pokemonEvoTintSprite: Phaser.GameObjects.Sprite): Promise { +function doCycle(l: number, lastCycle: number, pokemonTintSprite: Phaser.GameObjects.Sprite, pokemonEvoTintSprite: Phaser.GameObjects.Sprite): Promise { return new Promise(resolve => { const isLastCycle = l === lastCycle; - scene.tweens.add({ + globalScene.tweens.add({ targets: pokemonTintSprite, scale: 0.25, ease: "Cubic.easeInOut", duration: 500 / l, yoyo: !isLastCycle }); - scene.tweens.add({ + globalScene.tweens.add({ targets: pokemonEvoTintSprite, scale: 1, ease: "Cubic.easeInOut", @@ -235,7 +235,7 @@ function doCycle(scene: BattleScene, l: number, lastCycle: number, pokemonTintSp yoyo: !isLastCycle, onComplete: () => { if (l < lastCycle) { - doCycle(scene, l + 0.5, lastCycle, pokemonTintSprite, pokemonEvoTintSprite).then(success => resolve(success)); + doCycle(l + 0.5, lastCycle, pokemonTintSprite, pokemonEvoTintSprite).then(success => resolve(success)); } else { pokemonTintSprite.setVisible(false); resolve(true); @@ -253,20 +253,20 @@ function doCycle(scene: BattleScene, l: number, lastCycle: number, pokemonTintSp * @param xOffset * @param yOffset */ -function doCircleInward(scene: BattleScene, transformationBaseBg: Phaser.GameObjects.Image, transformationContainer: Phaser.GameObjects.Container, xOffset: number, yOffset: number) { +function doCircleInward(transformationBaseBg: Phaser.GameObjects.Image, transformationContainer: Phaser.GameObjects.Container, xOffset: number, yOffset: number) { let f = 0; - scene.tweens.addCounter({ + globalScene.tweens.addCounter({ repeat: 48, duration: getFrameMs(1), onRepeat: () => { if (!f) { for (let i = 0; i < 16; i++) { - doCircleInwardParticle(scene, i * 16, 4, transformationBaseBg, transformationContainer, xOffset, yOffset); + doCircleInwardParticle(i * 16, 4, transformationBaseBg, transformationContainer, xOffset, yOffset); } } else if (f === 32) { for (let i = 0; i < 16; i++) { - doCircleInwardParticle(scene, i * 16, 8, transformationBaseBg, transformationContainer, xOffset, yOffset); + doCircleInwardParticle(i * 16, 8, transformationBaseBg, transformationContainer, xOffset, yOffset); } } f++; @@ -283,15 +283,15 @@ function doCircleInward(scene: BattleScene, transformationBaseBg: Phaser.GameObj * @param xOffset * @param yOffset */ -function doSpiralUpwardParticle(scene: BattleScene, trigIndex: number, transformationBaseBg: Phaser.GameObjects.Image, transformationContainer: Phaser.GameObjects.Container, xOffset: number, yOffset: number) { +function doSpiralUpwardParticle(trigIndex: number, transformationBaseBg: Phaser.GameObjects.Image, transformationContainer: Phaser.GameObjects.Container, xOffset: number, yOffset: number) { const initialX = transformationBaseBg.displayWidth / 2 + xOffset; - const particle = scene.add.image(initialX, 0, "evo_sparkle"); + const particle = globalScene.add.image(initialX, 0, "evo_sparkle"); transformationContainer.add(particle); let f = 0; let amp = 48; - const particleTimer = scene.tweens.addCounter({ + const particleTimer = globalScene.tweens.addCounter({ repeat: -1, duration: getFrameMs(1), onRepeat: () => { @@ -328,16 +328,16 @@ function doSpiralUpwardParticle(scene: BattleScene, trigIndex: number, transform * @param xOffset * @param yOffset */ -function doArcDownParticle(scene: BattleScene, trigIndex: number, transformationBaseBg: Phaser.GameObjects.Image, transformationContainer: Phaser.GameObjects.Container, xOffset: number, yOffset: number) { +function doArcDownParticle(trigIndex: number, transformationBaseBg: Phaser.GameObjects.Image, transformationContainer: Phaser.GameObjects.Container, xOffset: number, yOffset: number) { const initialX = transformationBaseBg.displayWidth / 2 + xOffset; - const particle = scene.add.image(initialX, 0, "evo_sparkle"); + const particle = globalScene.add.image(initialX, 0, "evo_sparkle"); particle.setScale(0.5); transformationContainer.add(particle); let f = 0; let amp = 8; - const particleTimer = scene.tweens.addCounter({ + const particleTimer = globalScene.tweens.addCounter({ repeat: -1, duration: getFrameMs(1), onRepeat: () => { @@ -371,15 +371,15 @@ function doArcDownParticle(scene: BattleScene, trigIndex: number, transformation * @param xOffset * @param yOffset */ -function doCircleInwardParticle(scene: BattleScene, trigIndex: number, speed: number, transformationBaseBg: Phaser.GameObjects.Image, transformationContainer: Phaser.GameObjects.Container, xOffset: number, yOffset: number) { +function doCircleInwardParticle(trigIndex: number, speed: number, transformationBaseBg: Phaser.GameObjects.Image, transformationContainer: Phaser.GameObjects.Container, xOffset: number, yOffset: number) { const initialX = transformationBaseBg.displayWidth / 2 + xOffset; const initialY = transformationBaseBg.displayHeight / 2 + yOffset; - const particle = scene.add.image(initialX, initialY, "evo_sparkle"); + const particle = globalScene.add.image(initialX, initialY, "evo_sparkle"); transformationContainer.add(particle); let amp = 120; - const particleTimer = scene.tweens.addCounter({ + const particleTimer = globalScene.tweens.addCounter({ repeat: -1, duration: getFrameMs(1), onRepeat: () => { diff --git a/src/data/pokeball.ts b/src/data/pokeball.ts index 4c9fc719a4d..049baf11f3d 100644 --- a/src/data/pokeball.ts +++ b/src/data/pokeball.ts @@ -1,7 +1,7 @@ +import { globalScene } from "#app/global-scene"; import { CriticalCatchChanceBoosterModifier } from "#app/modifier/modifier"; import { NumberHolder } from "#app/utils"; import { PokeballType } from "#enums/pokeball"; -import BattleScene from "../battle-scene"; import i18next from "i18next"; export const MAX_PER_TYPE_POKEBALLS: integer = 99; @@ -85,18 +85,17 @@ export function getPokeballTintColor(type: PokeballType): number { /** * Gets the critical capture chance based on number of mons registered in Dex and modified {@link https://bulbapedia.bulbagarden.net/wiki/Catch_rate Catch rate} * Formula from {@link https://www.dragonflycave.com/mechanics/gen-vi-vii-capturing Dragonfly Cave Gen 6 Capture Mechanics page} - * @param scene {@linkcode BattleScene} current BattleScene * @param modifiedCatchRate the modified catch rate as calculated in {@linkcode AttemptCapturePhase} * @returns the chance of getting a critical capture, out of 256 */ -export function getCriticalCaptureChance(scene: BattleScene, modifiedCatchRate: number): number { - if (scene.gameMode.isFreshStartChallenge()) { +export function getCriticalCaptureChance(modifiedCatchRate: number): number { + if (globalScene.gameMode.isFreshStartChallenge()) { return 0; } - const dexCount = scene.gameData.getSpeciesCount(d => !!d.caughtAttr); + const dexCount = globalScene.gameData.getSpeciesCount(d => !!d.caughtAttr); const catchingCharmMultiplier = new NumberHolder(1); - scene.findModifier(m => m instanceof CriticalCatchChanceBoosterModifier)?.apply(catchingCharmMultiplier); - const dexMultiplier = scene.gameMode.isDaily || dexCount > 800 ? 2.5 + globalScene.findModifier(m => m instanceof CriticalCatchChanceBoosterModifier)?.apply(catchingCharmMultiplier); + const dexMultiplier = globalScene.gameMode.isDaily || dexCount > 800 ? 2.5 : dexCount > 600 ? 2 : dexCount > 400 ? 1.5 : dexCount > 200 ? 1 @@ -105,7 +104,7 @@ export function getCriticalCaptureChance(scene: BattleScene, modifiedCatchRate: return Math.floor(catchingCharmMultiplier.value * dexMultiplier * Math.min(255, modifiedCatchRate) / 6); } -export function doPokeballBounceAnim(scene: BattleScene, pokeball: Phaser.GameObjects.Sprite, y1: number, y2: number, baseBounceDuration: number, callback: Function, isCritical: boolean = false) { +export function doPokeballBounceAnim(pokeball: Phaser.GameObjects.Sprite, y1: number, y2: number, baseBounceDuration: number, callback: Function, isCritical: boolean = false) { let bouncePower = 1; let bounceYOffset = y1; let bounceY = y2; @@ -116,13 +115,13 @@ export function doPokeballBounceAnim(scene: BattleScene, pokeball: Phaser.GameOb let critShakes = 4; const doBounce = () => { - scene.tweens.add({ + globalScene.tweens.add({ targets: pokeball, y: y2, duration: bouncePower * baseBounceDuration, ease: "Cubic.easeIn", onComplete: () => { - scene.playSound("se/pb_bounce_1", { volume: bouncePower }); + globalScene.playSound("se/pb_bounce_1", { volume: bouncePower }); bouncePower = bouncePower > 0.01 ? bouncePower * 0.5 : 0; @@ -130,7 +129,7 @@ export function doPokeballBounceAnim(scene: BattleScene, pokeball: Phaser.GameOb bounceYOffset = yd * bouncePower; bounceY = y2 - bounceYOffset; - scene.tweens.add({ + globalScene.tweens.add({ targets: pokeball, y: bounceY, duration: bouncePower * baseBounceDuration, @@ -145,13 +144,13 @@ export function doPokeballBounceAnim(scene: BattleScene, pokeball: Phaser.GameOb }; const doCritShake = () => { - scene.tweens.add({ + globalScene.tweens.add({ targets: pokeball, x: x2, duration: 125, ease: "Linear", onComplete: () => { - scene.tweens.add({ + globalScene.tweens.add({ targets: pokeball, x: x1, duration: 125, @@ -161,12 +160,12 @@ export function doPokeballBounceAnim(scene: BattleScene, pokeball: Phaser.GameOb if (critShakes > 0) { doCritShake(); } else { - scene.tweens.add({ + globalScene.tweens.add({ targets: pokeball, x: x0, duration: 60, ease: "Linear", - onComplete: () => scene.time.delayedCall(500, doBounce) + onComplete: () => globalScene.time.delayedCall(500, doBounce) }); } } @@ -176,7 +175,7 @@ export function doPokeballBounceAnim(scene: BattleScene, pokeball: Phaser.GameOb }; if (isCritical) { - scene.time.delayedCall(500, doCritShake); + globalScene.time.delayedCall(500, doCritShake); } else { doBounce(); } diff --git a/src/data/pokemon-forms.ts b/src/data/pokemon-forms.ts index d3cccbefdba..b1c3db47768 100644 --- a/src/data/pokemon-forms.ts +++ b/src/data/pokemon-forms.ts @@ -1,18 +1,19 @@ import { PokemonFormChangeItemModifier, TerastallizeModifier } from "../modifier/modifier"; -import Pokemon from "../field/pokemon"; +import type Pokemon from "../field/pokemon"; import { StatusEffect } from "#enums/status-effect"; import { MoveCategory, allMoves } from "./move"; import { Type } from "#enums/type"; -import { Constructor, nil } from "#app/utils"; +import type { Constructor, nil } from "#app/utils"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; -import { TimeOfDay } from "#enums/time-of-day"; +import type { TimeOfDay } from "#enums/time-of-day"; import { getPokemonNameWithAffix } from "#app/messages"; import i18next from "i18next"; import { WeatherType } from "#enums/weather-type"; import { Challenges } from "#app/enums/challenges"; import { SpeciesFormKey } from "#enums/species-form-key"; +import { globalScene } from "#app/global-scene"; export enum FormChangeItem { NONE, @@ -259,7 +260,7 @@ export class SpeciesFormChangeItemTrigger extends SpeciesFormChangeTrigger { } canChange(pokemon: Pokemon): boolean { - return !!pokemon.scene.findModifier(m => m instanceof PokemonFormChangeItemModifier && m.pokemonId === pokemon.id && m.formChangeItem === this.item && m.active === this.active); + return !!globalScene.findModifier(m => m instanceof PokemonFormChangeItemModifier && m.pokemonId === pokemon.id && m.formChangeItem === this.item && m.active === this.active); } } @@ -272,7 +273,7 @@ export class SpeciesFormChangeTimeOfDayTrigger extends SpeciesFormChangeTrigger } canChange(pokemon: Pokemon): boolean { - return this.timesOfDay.indexOf(pokemon.scene.arena.getTimeOfDay()) > -1; + return this.timesOfDay.indexOf(globalScene.arena.getTimeOfDay()) > -1; } } @@ -335,7 +336,7 @@ export abstract class SpeciesFormChangeMoveTrigger extends SpeciesFormChangeTrig export class SpeciesFormChangePreMoveTrigger extends SpeciesFormChangeMoveTrigger { canChange(pokemon: Pokemon): boolean { - const command = pokemon.scene.currentBattle.turnCommands[pokemon.getBattlerIndex()]; + const command = globalScene.currentBattle.turnCommands[pokemon.getBattlerIndex()]; return !!command?.move && this.movePredicate(command.move.move) === this.used; } } @@ -348,7 +349,7 @@ export class SpeciesFormChangePostMoveTrigger extends SpeciesFormChangeMoveTrigg export class MeloettaFormChangePostMoveTrigger extends SpeciesFormChangePostMoveTrigger { override canChange(pokemon: Pokemon): boolean { - if (pokemon.scene.gameMode.hasChallenge(Challenges.SINGLE_TYPE)) { + if (globalScene.gameMode.hasChallenge(Challenges.SINGLE_TYPE)) { return false; } else { // Meloetta will not transform if it has the ability Sheer Force when using Relic Song @@ -369,7 +370,7 @@ export class SpeciesDefaultFormMatchTrigger extends SpeciesFormChangeTrigger { } canChange(pokemon: Pokemon): boolean { - return this.formKey === pokemon.species.forms[pokemon.scene.getSpeciesFormIndex(pokemon.species, pokemon.gender, pokemon.getNature(), true)].formKey; + return this.formKey === pokemon.species.forms[globalScene.getSpeciesFormIndex(pokemon.species, pokemon.gender, pokemon.getNature(), true)].formKey; } } @@ -393,7 +394,7 @@ export class SpeciesFormChangeTeraTrigger extends SpeciesFormChangeTrigger { * @returns `true` if the Pokémon can change forms, `false` otherwise */ canChange(pokemon: Pokemon): boolean { - return !!pokemon.scene.findModifier(m => m instanceof TerastallizeModifier && m.pokemonId === pokemon.id && m.teraType === this.teraType); + return !!globalScene.findModifier(m => m instanceof TerastallizeModifier && m.pokemonId === pokemon.id && m.teraType === this.teraType); } } @@ -404,7 +405,7 @@ export class SpeciesFormChangeTeraTrigger extends SpeciesFormChangeTrigger { */ export class SpeciesFormChangeLapseTeraTrigger extends SpeciesFormChangeTrigger { canChange(pokemon: Pokemon): boolean { - return !!pokemon.scene.findModifier(m => m instanceof TerastallizeModifier && m.pokemonId === pokemon.id); + return !!globalScene.findModifier(m => m instanceof TerastallizeModifier && m.pokemonId === pokemon.id); } } @@ -432,8 +433,8 @@ export class SpeciesFormChangeWeatherTrigger extends SpeciesFormChangeTrigger { * @returns `true` if the Pokemon can change forms, `false` otherwise */ canChange(pokemon: Pokemon): boolean { - const currentWeather = pokemon.scene.arena.weather?.weatherType ?? WeatherType.NONE; - const isWeatherSuppressed = pokemon.scene.arena.weather?.isEffectSuppressed(pokemon.scene); + const currentWeather = globalScene.arena.weather?.weatherType ?? WeatherType.NONE; + const isWeatherSuppressed = globalScene.arena.weather?.isEffectSuppressed(); const isAbilitySuppressed = pokemon.summonData.abilitySuppressed; return !isAbilitySuppressed && !isWeatherSuppressed && (pokemon.hasAbility(this.ability) && this.weathers.includes(currentWeather)); @@ -466,8 +467,8 @@ export class SpeciesFormChangeRevertWeatherFormTrigger extends SpeciesFormChange */ canChange(pokemon: Pokemon): boolean { if (pokemon.hasAbility(this.ability, false, true)) { - const currentWeather = pokemon.scene.arena.weather?.weatherType ?? WeatherType.NONE; - const isWeatherSuppressed = pokemon.scene.arena.weather?.isEffectSuppressed(pokemon.scene); + const currentWeather = globalScene.arena.weather?.weatherType ?? WeatherType.NONE; + const isWeatherSuppressed = globalScene.arena.weather?.isEffectSuppressed(); const isAbilitySuppressed = pokemon.summonData.abilitySuppressed; const summonDataAbility = pokemon.summonData.ability; const isAbilityChanged = summonDataAbility !== this.ability && summonDataAbility !== Abilities.NONE; @@ -510,7 +511,7 @@ export function getSpeciesFormChangeMessage(pokemon: Pokemon, formChange: Specie * @returns A {@linkcode SpeciesFormChangeCondition} checking if that species is registered as caught */ function getSpeciesDependentFormChangeCondition(species: Species): SpeciesFormChangeCondition { - return new SpeciesFormChangeCondition(p => !!p.scene.gameData.dexData[species].caughtAttr); + return new SpeciesFormChangeCondition(p => !!globalScene.gameData.dexData[species].caughtAttr); } interface PokemonFormChanges { @@ -770,8 +771,8 @@ export const pokemonFormChanges: PokemonFormChanges = { new SpeciesFormChange(Species.KYUREM, "", "white", new SpeciesFormChangeItemTrigger(FormChangeItem.LIGHT_STONE), false, getSpeciesDependentFormChangeCondition(Species.RESHIRAM)) ], [Species.KELDEO]: [ - new SpeciesFormChange(Species.KELDEO, "ordinary", "resolute", new SpeciesFormChangeMoveLearnedTrigger(Moves.SECRET_SWORD), false, new SpeciesFormChangeCondition((p) => p.scene.gameMode.isDaily !== true)), - new SpeciesFormChange(Species.KELDEO, "resolute", "ordinary", new SpeciesFormChangeMoveLearnedTrigger(Moves.SECRET_SWORD, false), false, new SpeciesFormChangeCondition((p) => p.scene.gameMode.isDaily !== true)) + new SpeciesFormChange(Species.KELDEO, "ordinary", "resolute", new SpeciesFormChangeMoveLearnedTrigger(Moves.SECRET_SWORD), false, new SpeciesFormChangeCondition(() => globalScene.gameMode.isDaily !== true)), + new SpeciesFormChange(Species.KELDEO, "resolute", "ordinary", new SpeciesFormChangeMoveLearnedTrigger(Moves.SECRET_SWORD, false), false, new SpeciesFormChangeCondition(() => globalScene.gameMode.isDaily !== true)) ], [Species.MELOETTA]: [ new SpeciesFormChange(Species.MELOETTA, "aria", "pirouette", new MeloettaFormChangePostMoveTrigger(Moves.RELIC_SONG), true), diff --git a/src/data/pokemon-species.ts b/src/data/pokemon-species.ts index 09788e353cf..84486b30372 100644 --- a/src/data/pokemon-species.ts +++ b/src/data/pokemon-species.ts @@ -1,21 +1,25 @@ -import { Localizable } from "#app/interfaces/locales"; +import type { Localizable } from "#app/interfaces/locales"; import { Abilities } from "#enums/abilities"; import { PartyMemberStrength } from "#enums/party-member-strength"; import { Species } from "#enums/species"; import { QuantizerCelebi, argbFromRgba, rgbaFromArgb } from "@material/material-color-utilities"; import i18next from "i18next"; -import BattleScene, { AnySound } from "#app/battle-scene"; -import { GameMode } from "#app/game-mode"; -import { StarterMoveset } from "#app/system/game-data"; +import type { AnySound } from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; +import type { GameMode } from "#app/game-mode"; +import type { StarterMoveset } from "#app/system/game-data"; import * as Utils from "#app/utils"; import { uncatchableSpecies } from "#app/data/balance/biomes"; import { speciesEggMoves } from "#app/data/balance/egg-moves"; import { GrowthRate } from "#app/data/exp"; -import { EvolutionLevel, SpeciesWildEvolutionDelay, pokemonEvolutions, pokemonPrevolutions } from "#app/data/balance/pokemon-evolutions"; +import type { EvolutionLevel } from "#app/data/balance/pokemon-evolutions"; +import { SpeciesWildEvolutionDelay, pokemonEvolutions, pokemonPrevolutions } from "#app/data/balance/pokemon-evolutions"; import { Type } from "#enums/type"; -import { LevelMoves, pokemonFormLevelMoves, pokemonFormLevelMoves as pokemonSpeciesFormLevelMoves, pokemonSpeciesLevelMoves } from "#app/data/balance/pokemon-level-moves"; -import { Stat } from "#enums/stat"; -import { Variant, VariantSet, variantData } from "#app/data/variant"; +import type { LevelMoves } from "#app/data/balance/pokemon-level-moves"; +import { pokemonFormLevelMoves, pokemonFormLevelMoves as pokemonSpeciesFormLevelMoves, pokemonSpeciesLevelMoves } from "#app/data/balance/pokemon-level-moves"; +import type { Stat } from "#enums/stat"; +import type { Variant, VariantSet } from "#app/data/variant"; +import { variantData } from "#app/data/variant"; import { speciesStarterCosts, POKERUS_STARTER_COUNT } from "#app/data/balance/starters"; import { SpeciesFormKey } from "#enums/species-form-key"; @@ -490,34 +494,34 @@ export abstract class PokemonSpeciesForm { return true; } - loadAssets(scene: BattleScene, female: boolean, formIndex?: number, shiny?: boolean, variant?: Variant, startLoad?: boolean): Promise { + loadAssets(female: boolean, formIndex?: number, shiny?: boolean, variant?: Variant, startLoad?: boolean): Promise { return new Promise(resolve => { const spriteKey = this.getSpriteKey(female, formIndex, shiny, variant); - scene.loadPokemonAtlas(spriteKey, this.getSpriteAtlasPath(female, formIndex, shiny, variant)); - scene.load.audio(`${this.getCryKey(formIndex)}`, `audio/${this.getCryKey(formIndex)}.m4a`); - scene.load.once(Phaser.Loader.Events.COMPLETE, () => { + globalScene.loadPokemonAtlas(spriteKey, this.getSpriteAtlasPath(female, formIndex, shiny, variant)); + globalScene.load.audio(`${this.getCryKey(formIndex)}`, `audio/${this.getCryKey(formIndex)}.m4a`); + globalScene.load.once(Phaser.Loader.Events.COMPLETE, () => { const originalWarn = console.warn; // Ignore warnings for missing frames, because there will be a lot console.warn = () => {}; - const frameNames = scene.anims.generateFrameNames(spriteKey, { zeroPad: 4, suffix: ".png", start: 1, end: 400 }); + const frameNames = globalScene.anims.generateFrameNames(spriteKey, { zeroPad: 4, suffix: ".png", start: 1, end: 400 }); console.warn = originalWarn; - if (!(scene.anims.exists(spriteKey))) { - scene.anims.create({ + if (!(globalScene.anims.exists(spriteKey))) { + globalScene.anims.create({ key: this.getSpriteKey(female, formIndex, shiny, variant), frames: frameNames, frameRate: 10, repeat: -1 }); } else { - scene.anims.get(spriteKey).frameRate = 10; + globalScene.anims.get(spriteKey).frameRate = 10; } const spritePath = this.getSpriteAtlasPath(female, formIndex, shiny, variant).replace("variant/", "").replace(/_[1-3]$/, ""); - scene.loadPokemonVariantAssets(spriteKey, spritePath, variant); + globalScene.loadPokemonVariantAssets(spriteKey, spritePath, variant); resolve(); }); if (startLoad) { - if (!scene.load.isLoading()) { - scene.load.start(); + if (!globalScene.load.isLoading()) { + globalScene.load.start(); } } else { resolve(); @@ -525,21 +529,21 @@ export abstract class PokemonSpeciesForm { }); } - cry(scene: BattleScene, soundConfig?: Phaser.Types.Sound.SoundConfig, ignorePlay?: boolean): AnySound { + cry(soundConfig?: Phaser.Types.Sound.SoundConfig, ignorePlay?: boolean): AnySound { const cryKey = this.getCryKey(this.formIndex); - let cry: AnySound | null = scene.sound.get(cryKey) as AnySound; + let cry: AnySound | null = globalScene.sound.get(cryKey) as AnySound; if (cry?.pendingRemove) { cry = null; } - cry = scene.playSound(cry ?? cryKey, soundConfig); + cry = globalScene.playSound(cry ?? cryKey, soundConfig); if (ignorePlay) { cry.stop(); } return cry; } - generateCandyColors(scene: BattleScene): number[][] { - const sourceTexture = scene.textures.get(this.getSpriteKey(false)); + generateCandyColors(): number[][] { + const sourceTexture = globalScene.textures.get(this.getSpriteKey(false)); const sourceFrame = sourceTexture.frames[sourceTexture.firstFrame]; const sourceImage = sourceTexture.getSourceImage() as HTMLImageElement; @@ -582,7 +586,7 @@ export abstract class PokemonSpeciesForm { const originalRandom = Math.random; Math.random = () => Phaser.Math.RND.realInRange(0, 1); - scene.executeWithSeedOffset(() => { + globalScene.executeWithSeedOffset(() => { paletteColors = QuantizerCelebi.quantize(pixelColors, 2); }, 0, "This result should not vary"); @@ -959,14 +963,13 @@ export const noStarterFormKeys: string[] = [ /** * Method to get the daily list of starters with Pokerus. -* @param scene {@linkcode BattleScene} used as part of RNG * @returns A list of starters with Pokerus */ -export function getPokerusStarters(scene: BattleScene): PokemonSpecies[] { +export function getPokerusStarters(): PokemonSpecies[] { const pokerusStarters: PokemonSpecies[] = []; const date = new Date(); date.setUTCHours(0, 0, 0, 0); - scene.executeWithSeedOffset(() => { + globalScene.executeWithSeedOffset(() => { while (pokerusStarters.length < POKERUS_STARTER_COUNT) { const randomSpeciesId = parseInt(Utils.randSeedItem(Object.keys(speciesStarterCosts)), 10); const species = getPokemonSpecies(randomSpeciesId); diff --git a/src/data/status-effect.ts b/src/data/status-effect.ts index 6b4e1d546df..3c085bdd099 100644 --- a/src/data/status-effect.ts +++ b/src/data/status-effect.ts @@ -1,6 +1,7 @@ import { randIntRange } from "#app/utils"; import { StatusEffect } from "#enums/status-effect"; -import i18next, { ParseKeys } from "i18next"; +import type { ParseKeys } from "i18next"; +import i18next from "i18next"; export class Status { public effect: StatusEffect; diff --git a/src/data/terrain.ts b/src/data/terrain.ts index 6ba9acfd166..da315a14a86 100644 --- a/src/data/terrain.ts +++ b/src/data/terrain.ts @@ -1,8 +1,8 @@ -import Pokemon from "../field/pokemon"; -import Move from "./move"; +import type Pokemon from "../field/pokemon"; +import type Move from "./move"; import { Type } from "#enums/type"; import { ProtectAttr } from "./move"; -import { BattlerIndex } from "#app/battle"; +import type { BattlerIndex } from "#app/battle"; import i18next from "i18next"; export enum TerrainType { diff --git a/src/data/trainer-config.ts b/src/data/trainer-config.ts index 707f6c5fdb9..266dc342402 100644 --- a/src/data/trainer-config.ts +++ b/src/data/trainer-config.ts @@ -1,14 +1,19 @@ -import BattleScene, { startingWave } from "#app/battle-scene"; -import { ModifierTypeFunc, modifierTypes } from "#app/modifier/modifier-type"; -import { EnemyPokemon, PokemonMove } from "#app/field/pokemon"; +import { startingWave } from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; +import type { ModifierTypeFunc } from "#app/modifier/modifier-type"; +import { modifierTypes } from "#app/modifier/modifier-type"; +import type { EnemyPokemon } from "#app/field/pokemon"; +import { PokemonMove } from "#app/field/pokemon"; import * as Utils from "#app/utils"; import { PokeballType } from "#enums/pokeball"; import { pokemonEvolutions, pokemonPrevolutions } from "#app/data/balance/pokemon-evolutions"; -import PokemonSpecies, { getPokemonSpecies, PokemonSpeciesFilter } from "#app/data/pokemon-species"; +import type { PokemonSpeciesFilter } from "#app/data/pokemon-species"; +import type PokemonSpecies from "#app/data/pokemon-species"; +import { getPokemonSpecies } from "#app/data/pokemon-species"; import { tmSpecies } from "#app/data/balance/tms"; import { Type } from "#enums/type"; import { doubleBattleDialogue } from "#app/data/dialogue"; -import { PersistentModifier } from "#app/modifier/modifier"; +import type { PersistentModifier } from "#app/modifier/modifier"; import { TrainerVariant } from "#app/field/trainer"; import { getIsInitialized, initI18n } from "#app/plugins/i18n"; import i18next from "i18next"; @@ -169,8 +174,8 @@ export const trainerPartyTemplates = { RIVAL_6: new TrainerPartyCompoundTemplate(new TrainerPartyTemplate(1, PartyMemberStrength.STRONG), new TrainerPartyTemplate(1, PartyMemberStrength.AVERAGE), new TrainerPartyTemplate(3, PartyMemberStrength.AVERAGE, false, true), new TrainerPartyTemplate(1, PartyMemberStrength.STRONGER)) }; -type PartyTemplateFunc = (scene: BattleScene) => TrainerPartyTemplate; -type PartyMemberFunc = (scene: BattleScene, level: integer, strength: PartyMemberStrength) => EnemyPokemon; +type PartyTemplateFunc = () => TrainerPartyTemplate; +type PartyMemberFunc = (level: integer, strength: PartyMemberStrength) => EnemyPokemon; type GenModifiersFunc = (party: EnemyPokemon[]) => PersistentModifier[]; export interface PartyMemberFuncs { @@ -842,7 +847,7 @@ export class TrainerConfig { this.setBattleBgm("battle_unova_gym"); this.setVictoryBgm("victory_gym"); this.setGenModifiersFunc(party => { - const waveIndex = party[0].scene.currentBattle.waveIndex; + const waveIndex = globalScene.currentBattle.waveIndex; return getRandomTeraModifiers(party, waveIndex >= 100 ? 1 : 0, specialtyTypes.length ? specialtyTypes : undefined); }); @@ -1011,28 +1016,28 @@ export class TrainerConfig { return ret; } - loadAssets(scene: BattleScene, variant: TrainerVariant): Promise { + loadAssets(variant: TrainerVariant): Promise { return new Promise(resolve => { const isDouble = variant === TrainerVariant.DOUBLE; const trainerKey = this.getSpriteKey(variant === TrainerVariant.FEMALE, false); const partnerTrainerKey = this.getSpriteKey(true, true); - scene.loadAtlas(trainerKey, "trainer"); + globalScene.loadAtlas(trainerKey, "trainer"); if (isDouble) { - scene.loadAtlas(partnerTrainerKey, "trainer"); + globalScene.loadAtlas(partnerTrainerKey, "trainer"); } - scene.load.once(Phaser.Loader.Events.COMPLETE, () => { + globalScene.load.once(Phaser.Loader.Events.COMPLETE, () => { const originalWarn = console.warn; // Ignore warnings for missing frames, because there will be a lot console.warn = () => { }; - const frameNames = scene.anims.generateFrameNames(trainerKey, { + const frameNames = globalScene.anims.generateFrameNames(trainerKey, { zeroPad: 4, suffix: ".png", start: 1, end: 128 }); const partnerFrameNames = isDouble - ? scene.anims.generateFrameNames(partnerTrainerKey, { + ? globalScene.anims.generateFrameNames(partnerTrainerKey, { zeroPad: 4, suffix: ".png", start: 1, @@ -1040,16 +1045,16 @@ export class TrainerConfig { }) : ""; console.warn = originalWarn; - if (!(scene.anims.exists(trainerKey))) { - scene.anims.create({ + if (!(globalScene.anims.exists(trainerKey))) { + globalScene.anims.create({ key: trainerKey, frames: frameNames, frameRate: 24, repeat: -1 }); } - if (isDouble && !(scene.anims.exists(partnerTrainerKey))) { - scene.anims.create({ + if (isDouble && !(globalScene.anims.exists(partnerTrainerKey))) { + globalScene.anims.create({ key: partnerTrainerKey, frames: partnerFrameNames, frameRate: 24, @@ -1058,8 +1063,8 @@ export class TrainerConfig { } resolve(); }); - if (!scene.load.isLoading()) { - scene.load.start(); + if (!globalScene.load.isLoading()) { + globalScene.load.start(); } }); } @@ -1133,11 +1138,10 @@ interface TrainerConfigs { /** * The function to get variable strength grunts - * @param scene the singleton scene being passed in * @returns the correct TrainerPartyTemplate */ -function getEvilGruntPartyTemplate(scene: BattleScene): TrainerPartyTemplate { - const waveIndex = scene.currentBattle?.waveIndex; +function getEvilGruntPartyTemplate(): TrainerPartyTemplate { + const waveIndex = globalScene.currentBattle?.waveIndex; if (waveIndex < 40) { return trainerPartyTemplates.TWO_AVG; } else if (waveIndex < 63) { @@ -1151,32 +1155,32 @@ function getEvilGruntPartyTemplate(scene: BattleScene): TrainerPartyTemplate { } } -function getWavePartyTemplate(scene: BattleScene, ...templates: TrainerPartyTemplate[]) { - return templates[Math.min(Math.max(Math.ceil((scene.gameMode.getWaveForDifficulty(scene.currentBattle?.waveIndex || startingWave, true) - 20) / 30), 0), templates.length - 1)]; +function getWavePartyTemplate(...templates: TrainerPartyTemplate[]) { + return templates[Math.min(Math.max(Math.ceil((globalScene.gameMode.getWaveForDifficulty(globalScene.currentBattle?.waveIndex || startingWave, true) - 20) / 30), 0), templates.length - 1)]; } -function getGymLeaderPartyTemplate(scene: BattleScene) { - return getWavePartyTemplate(scene, trainerPartyTemplates.GYM_LEADER_1, trainerPartyTemplates.GYM_LEADER_2, trainerPartyTemplates.GYM_LEADER_3, trainerPartyTemplates.GYM_LEADER_4, trainerPartyTemplates.GYM_LEADER_5); +function getGymLeaderPartyTemplate() { + return getWavePartyTemplate(trainerPartyTemplates.GYM_LEADER_1, trainerPartyTemplates.GYM_LEADER_2, trainerPartyTemplates.GYM_LEADER_3, trainerPartyTemplates.GYM_LEADER_4, trainerPartyTemplates.GYM_LEADER_5); } /** * Randomly selects one of the `Species` from `speciesPool`, determines its evolution, level, and strength. - * Then adds Pokemon to scene. + * Then adds Pokemon to globalScene. * @param speciesPool * @param trainerSlot * @param ignoreEvolution * @param postProcess */ export function getRandomPartyMemberFunc(speciesPool: Species[], trainerSlot: TrainerSlot = TrainerSlot.TRAINER, ignoreEvolution: boolean = false, postProcess?: (enemyPokemon: EnemyPokemon) => void) { - return (scene: BattleScene, level: number, strength: PartyMemberStrength) => { + return (level: number, strength: PartyMemberStrength) => { let species = Utils.randSeedItem(speciesPool); - if (scene.gameMode.isClassic && scene.currentBattle.waveIndex === 20) { + if (globalScene.gameMode.isClassic && globalScene.currentBattle.waveIndex === 20) { ignoreEvolution = true; } if (!ignoreEvolution) { - species = getPokemonSpecies(species).getTrainerSpeciesForLevel(level, true, strength, scene.currentBattle.waveIndex); + species = getPokemonSpecies(species).getTrainerSpeciesForLevel(level, true, strength, globalScene.currentBattle.waveIndex); } - return scene.addEnemyPokemon(getPokemonSpecies(species), level, trainerSlot, undefined, false, undefined, postProcess); + return globalScene.addEnemyPokemon(getPokemonSpecies(species), level, trainerSlot, undefined, false, undefined, postProcess); }; } @@ -1192,12 +1196,12 @@ function getSpeciesFilterRandomPartyMemberFunc( return (allowLegendaries || notLegendary) && !species.isTrainerForbidden() && originalSpeciesFilter(species); }; - return (scene: BattleScene, level: number, strength: PartyMemberStrength) => { - const waveIndex = scene.currentBattle.waveIndex; - const species = getPokemonSpecies(scene.randomSpecies(waveIndex, level, false, speciesFilter) + return (level: number, strength: PartyMemberStrength) => { + const waveIndex = globalScene.currentBattle.waveIndex; + const species = getPokemonSpecies(globalScene.randomSpecies(waveIndex, level, false, speciesFilter) .getTrainerSpeciesForLevel(level, true, strength, waveIndex)); - return scene.addEnemyPokemon(species, level, trainerSlot, undefined, false, undefined, postProcess); + return globalScene.addEnemyPokemon(species, level, trainerSlot, undefined, false, undefined, postProcess); }; } @@ -1356,7 +1360,7 @@ export const signatureSpecies: SignatureSpecies = { export const trainerConfigs: TrainerConfigs = { [TrainerType.UNKNOWN]: new TrainerConfig(0).setHasGenders(), [TrainerType.ACE_TRAINER]: new TrainerConfig(++t).setHasGenders("Ace Trainer Female").setHasDouble("Ace Duo").setMoneyMultiplier(2.25).setEncounterBgm(TrainerType.ACE_TRAINER) - .setPartyTemplateFunc(scene => getWavePartyTemplate(scene, trainerPartyTemplates.THREE_WEAK_BALANCED, trainerPartyTemplates.FOUR_WEAK_BALANCED, trainerPartyTemplates.FIVE_WEAK_BALANCED, trainerPartyTemplates.SIX_WEAK_BALANCED)), + .setPartyTemplateFunc(() => getWavePartyTemplate(trainerPartyTemplates.THREE_WEAK_BALANCED, trainerPartyTemplates.FOUR_WEAK_BALANCED, trainerPartyTemplates.FIVE_WEAK_BALANCED, trainerPartyTemplates.SIX_WEAK_BALANCED)), [TrainerType.ARTIST]: new TrainerConfig(++t).setEncounterBgm(TrainerType.RICH).setPartyTemplates(trainerPartyTemplates.ONE_STRONG, trainerPartyTemplates.TWO_AVG, trainerPartyTemplates.THREE_AVG) .setSpeciesPools([ Species.SMEARGLE ]), [TrainerType.BACKERS]: new TrainerConfig(++t).setHasGenders("Backers").setDoubleOnly().setEncounterBgm(TrainerType.CYCLIST), @@ -1381,7 +1385,7 @@ export const trainerConfigs: TrainerConfigs = { [TrainerPoolTier.ULTRA_RARE]: [ Species.KUBFU ] }), [TrainerType.BREEDER]: new TrainerConfig(++t).setMoneyMultiplier(1.325).setEncounterBgm(TrainerType.POKEFAN).setHasGenders("Breeder Female").setHasDouble("Breeders") - .setPartyTemplateFunc(scene => getWavePartyTemplate(scene, trainerPartyTemplates.FOUR_WEAKER, trainerPartyTemplates.FIVE_WEAKER, trainerPartyTemplates.SIX_WEAKER)) + .setPartyTemplateFunc(() => getWavePartyTemplate(trainerPartyTemplates.FOUR_WEAKER, trainerPartyTemplates.FIVE_WEAKER, trainerPartyTemplates.SIX_WEAKER)) .setSpeciesFilter(s => s.baseTotal < 450), [TrainerType.CLERK]: new TrainerConfig(++t).setHasGenders("Clerk Female").setHasDouble("Colleagues").setEncounterBgm(TrainerType.CLERK) .setPartyTemplates(trainerPartyTemplates.TWO_WEAK, trainerPartyTemplates.THREE_WEAK, trainerPartyTemplates.ONE_AVG, trainerPartyTemplates.TWO_AVG, trainerPartyTemplates.TWO_WEAK_ONE_AVG) @@ -1500,7 +1504,7 @@ export const trainerConfigs: TrainerConfigs = { }), [TrainerType.SWIMMER]: new TrainerConfig(++t).setMoneyMultiplier(1.3).setEncounterBgm(TrainerType.PARASOL_LADY).setHasGenders("Swimmer Female").setHasDouble("Swimmers").setSpecialtyTypes(Type.WATER).setSpeciesFilter(s => s.isOfType(Type.WATER)), [TrainerType.TWINS]: new TrainerConfig(++t).setDoubleOnly().setMoneyMultiplier(0.65).setUseSameSeedForAllMembers() - .setPartyTemplateFunc(scene => getWavePartyTemplate(scene, trainerPartyTemplates.TWO_WEAK, trainerPartyTemplates.TWO_AVG, trainerPartyTemplates.TWO_STRONG)) + .setPartyTemplateFunc(() => getWavePartyTemplate(trainerPartyTemplates.TWO_WEAK, trainerPartyTemplates.TWO_AVG, trainerPartyTemplates.TWO_STRONG)) .setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.PLUSLE, Species.VOLBEAT, Species.PACHIRISU, Species.SILCOON, Species.METAPOD, Species.IGGLYBUFF, Species.PETILIL, Species.EEVEE ])) .setPartyMemberFunc(1, getRandomPartyMemberFunc([ Species.MINUN, Species.ILLUMISE, Species.EMOLGA, Species.CASCOON, Species.KAKUNA, Species.CLEFFA, Species.COTTONEE, Species.EEVEE ], TrainerSlot.TRAINER_PARTNER)) .setEncounterBgm(TrainerType.TWINS), @@ -1516,115 +1520,115 @@ export const trainerConfigs: TrainerConfigs = { .setSpeciesPools( [ Species.CATERPIE, Species.WEEDLE, Species.RATTATA, Species.SENTRET, Species.POOCHYENA, Species.ZIGZAGOON, Species.WURMPLE, Species.BIDOOF, Species.PATRAT, Species.LILLIPUP ] ), - [TrainerType.ROCKET_GRUNT]: new TrainerConfig(++t).setHasGenders("Rocket Grunt Female").setHasDouble("Rocket Grunts").setMoneyMultiplier(1.0).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_rocket_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(scene => getEvilGruntPartyTemplate(scene)) + [TrainerType.ROCKET_GRUNT]: new TrainerConfig(++t).setHasGenders("Rocket Grunt Female").setHasDouble("Rocket Grunts").setMoneyMultiplier(1.0).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_rocket_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) .setSpeciesPools({ [TrainerPoolTier.COMMON]: [ Species.WEEDLE, Species.RATTATA, Species.EKANS, Species.SANDSHREW, Species.ZUBAT, Species.GEODUDE, Species.KOFFING, Species.GRIMER, Species.ODDISH, Species.SLOWPOKE ], [TrainerPoolTier.UNCOMMON]: [ Species.GYARADOS, Species.LICKITUNG, Species.TAUROS, Species.MANKEY, Species.SCYTHER, Species.ELEKID, Species.MAGBY, Species.CUBONE, Species.GROWLITHE, Species.MURKROW, Species.GASTLY, Species.EXEGGCUTE, Species.VOLTORB, Species.MAGNEMITE ], [TrainerPoolTier.RARE]: [ Species.PORYGON, Species.ALOLA_RATTATA, Species.ALOLA_SANDSHREW, Species.ALOLA_MEOWTH, Species.ALOLA_GRIMER, Species.ALOLA_GEODUDE, Species.PALDEA_TAUROS, Species.OMANYTE, Species.KABUTO ], [TrainerPoolTier.SUPER_RARE]: [ Species.DRATINI, Species.LARVITAR ] }), - [TrainerType.ARCHER]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("rocket_admin", "rocket", [ Species.HOUNDOOM ]).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_rocket_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(scene => getEvilGruntPartyTemplate(scene)), - [TrainerType.ARIANA]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("rocket_admin_female", "rocket", [ Species.ARBOK ]).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_rocket_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(scene => getEvilGruntPartyTemplate(scene)), - [TrainerType.PROTON]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("rocket_admin", "rocket", [ Species.CROBAT ]).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_rocket_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(scene => getEvilGruntPartyTemplate(scene)), - [TrainerType.PETREL]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("rocket_admin", "rocket", [ Species.WEEZING ]).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_rocket_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(scene => getEvilGruntPartyTemplate(scene)), - [TrainerType.MAGMA_GRUNT]: new TrainerConfig(++t).setHasGenders("Magma Grunt Female").setHasDouble("Magma Grunts").setMoneyMultiplier(1.0).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_aqua_magma_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(scene => getEvilGruntPartyTemplate(scene)) + [TrainerType.ARCHER]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("rocket_admin", "rocket", [ Species.HOUNDOOM ]).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_rocket_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), + [TrainerType.ARIANA]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("rocket_admin_female", "rocket", [ Species.ARBOK ]).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_rocket_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), + [TrainerType.PROTON]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("rocket_admin", "rocket", [ Species.CROBAT ]).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_rocket_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), + [TrainerType.PETREL]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("rocket_admin", "rocket", [ Species.WEEZING ]).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_rocket_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), + [TrainerType.MAGMA_GRUNT]: new TrainerConfig(++t).setHasGenders("Magma Grunt Female").setHasDouble("Magma Grunts").setMoneyMultiplier(1.0).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_aqua_magma_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) .setSpeciesPools({ [TrainerPoolTier.COMMON]: [ Species.SLUGMA, Species.POOCHYENA, Species.NUMEL, Species.ZIGZAGOON, Species.DIGLETT, Species.MAGBY, Species.TORKOAL, Species.GROWLITHE, Species.BALTOY ], [TrainerPoolTier.UNCOMMON]: [ Species.SOLROCK, Species.HIPPOPOTAS, Species.SANDACONDA, Species.PHANPY, Species.ROLYCOLY, Species.GLIGAR, Species.RHYHORN, Species.HEATMOR ], [TrainerPoolTier.RARE]: [ Species.TRAPINCH, Species.LILEEP, Species.ANORITH, Species.HISUI_GROWLITHE, Species.TURTONATOR, Species.ARON, Species.TOEDSCOOL ], [TrainerPoolTier.SUPER_RARE]: [ Species.CAPSAKID, Species.CHARCADET ] }), - [TrainerType.TABITHA]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("magma_admin", "magma", [ Species.CAMERUPT ]).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_aqua_magma_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(scene => getEvilGruntPartyTemplate(scene)), - [TrainerType.COURTNEY]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("magma_admin_female", "magma", [ Species.CAMERUPT ]).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_aqua_magma_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(scene => getEvilGruntPartyTemplate(scene)), - [TrainerType.AQUA_GRUNT]: new TrainerConfig(++t).setHasGenders("Aqua Grunt Female").setHasDouble("Aqua Grunts").setMoneyMultiplier(1.0).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_aqua_magma_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(scene => getEvilGruntPartyTemplate(scene)) + [TrainerType.TABITHA]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("magma_admin", "magma", [ Species.CAMERUPT ]).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_aqua_magma_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), + [TrainerType.COURTNEY]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("magma_admin_female", "magma", [ Species.CAMERUPT ]).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_aqua_magma_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), + [TrainerType.AQUA_GRUNT]: new TrainerConfig(++t).setHasGenders("Aqua Grunt Female").setHasDouble("Aqua Grunts").setMoneyMultiplier(1.0).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_aqua_magma_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) .setSpeciesPools({ [TrainerPoolTier.COMMON]: [ Species.CARVANHA, Species.WAILMER, Species.ZIGZAGOON, Species.LOTAD, Species.CORPHISH, Species.SPHEAL, Species.REMORAID, Species.QWILFISH, Species.BARBOACH ], [TrainerPoolTier.UNCOMMON]: [ Species.CLAMPERL, Species.CHINCHOU, Species.WOOPER, Species.WINGULL, Species.TENTACOOL, Species.AZURILL, Species.CLOBBOPUS, Species.HORSEA ], [TrainerPoolTier.RARE]: [ Species.MANTYKE, Species.DHELMISE, Species.HISUI_QWILFISH, Species.ARROKUDA, Species.PALDEA_WOOPER, Species.SKRELP ], [TrainerPoolTier.SUPER_RARE]: [ Species.DONDOZO, Species.BASCULEGION ] }), - [TrainerType.MATT]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("aqua_admin", "aqua", [ Species.SHARPEDO ]).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_aqua_magma_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(scene => getEvilGruntPartyTemplate(scene)), - [TrainerType.SHELLY]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("aqua_admin_female", "aqua", [ Species.SHARPEDO ]).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_aqua_magma_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(scene => getEvilGruntPartyTemplate(scene)), - [TrainerType.GALACTIC_GRUNT]: new TrainerConfig(++t).setHasGenders("Galactic Grunt Female").setHasDouble("Galactic Grunts").setMoneyMultiplier(1.0).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_galactic_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(scene => getEvilGruntPartyTemplate(scene)) + [TrainerType.MATT]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("aqua_admin", "aqua", [ Species.SHARPEDO ]).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_aqua_magma_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), + [TrainerType.SHELLY]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("aqua_admin_female", "aqua", [ Species.SHARPEDO ]).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_aqua_magma_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), + [TrainerType.GALACTIC_GRUNT]: new TrainerConfig(++t).setHasGenders("Galactic Grunt Female").setHasDouble("Galactic Grunts").setMoneyMultiplier(1.0).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_galactic_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) .setSpeciesPools({ [TrainerPoolTier.COMMON]: [ Species.GLAMEOW, Species.STUNKY, Species.CROAGUNK, Species.SHINX, Species.WURMPLE, Species.BRONZOR, Species.DRIFLOON, Species.BURMY, Species.CARNIVINE ], [TrainerPoolTier.UNCOMMON]: [ Species.LICKITUNG, Species.RHYHORN, Species.TANGELA, Species.ZUBAT, Species.YANMA, Species.SKORUPI, Species.GLIGAR, Species.SWINUB ], [TrainerPoolTier.RARE]: [ Species.HISUI_GROWLITHE, Species.HISUI_QWILFISH, Species.SNEASEL, Species.ELEKID, Species.MAGBY, Species.DUSKULL ], [TrainerPoolTier.SUPER_RARE]: [ Species.ROTOM, Species.SPIRITOMB, Species.HISUI_SNEASEL ] }), - [TrainerType.JUPITER]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("galactic_commander_female", "galactic", [ Species.SKUNTANK ]).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_galactic_admin").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(scene => getEvilGruntPartyTemplate(scene)), - [TrainerType.MARS]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("galactic_commander_female", "galactic", [ Species.PURUGLY ]).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_galactic_admin").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(scene => getEvilGruntPartyTemplate(scene)), - [TrainerType.SATURN]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("galactic_commander", "galactic", [ Species.TOXICROAK ]).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_galactic_admin").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(scene => getEvilGruntPartyTemplate(scene)), - [TrainerType.PLASMA_GRUNT]: new TrainerConfig(++t).setHasGenders("Plasma Grunt Female").setHasDouble("Plasma Grunts").setMoneyMultiplier(1.0).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_plasma_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(scene => getEvilGruntPartyTemplate(scene)) + [TrainerType.JUPITER]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("galactic_commander_female", "galactic", [ Species.SKUNTANK ]).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_galactic_admin").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), + [TrainerType.MARS]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("galactic_commander_female", "galactic", [ Species.PURUGLY ]).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_galactic_admin").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), + [TrainerType.SATURN]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("galactic_commander", "galactic", [ Species.TOXICROAK ]).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_galactic_admin").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), + [TrainerType.PLASMA_GRUNT]: new TrainerConfig(++t).setHasGenders("Plasma Grunt Female").setHasDouble("Plasma Grunts").setMoneyMultiplier(1.0).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_plasma_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) .setSpeciesPools({ [TrainerPoolTier.COMMON]: [ Species.PATRAT, Species.LILLIPUP, Species.PURRLOIN, Species.SCRAFTY, Species.WOOBAT, Species.VANILLITE, Species.SANDILE, Species.TRUBBISH, Species.TYMPOLE ], [TrainerPoolTier.UNCOMMON]: [ Species.FRILLISH, Species.VENIPEDE, Species.GOLETT, Species.TIMBURR, Species.DARUMAKA, Species.FOONGUS, Species.JOLTIK, Species.CUBCHOO, Species.KLINK ], [TrainerPoolTier.RARE]: [ Species.PAWNIARD, Species.RUFFLET, Species.VULLABY, Species.ZORUA, Species.DRILBUR, Species.MIENFOO, Species.DURANT, Species.BOUFFALANT ], [TrainerPoolTier.SUPER_RARE]: [ Species.DRUDDIGON, Species.HISUI_ZORUA, Species.AXEW, Species.DEINO ] }), - [TrainerType.ZINZOLIN]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("plasma_sage", "plasma", [ Species.CRYOGONAL ]).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_plasma_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(scene => getEvilGruntPartyTemplate(scene)), - [TrainerType.ROOD]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("plasma_sage", "plasma", [ Species.SWOOBAT ]).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_plasma_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(scene => getEvilGruntPartyTemplate(scene)), - [TrainerType.FLARE_GRUNT]: new TrainerConfig(++t).setHasGenders("Flare Grunt Female").setHasDouble("Flare Grunts").setMoneyMultiplier(1.0).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_flare_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(scene => getEvilGruntPartyTemplate(scene)) + [TrainerType.ZINZOLIN]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("plasma_sage", "plasma", [ Species.CRYOGONAL ]).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_plasma_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), + [TrainerType.ROOD]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("plasma_sage", "plasma", [ Species.SWOOBAT ]).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_plasma_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), + [TrainerType.FLARE_GRUNT]: new TrainerConfig(++t).setHasGenders("Flare Grunt Female").setHasDouble("Flare Grunts").setMoneyMultiplier(1.0).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_flare_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) .setSpeciesPools({ [TrainerPoolTier.COMMON]: [ Species.FLETCHLING, Species.LITLEO, Species.PONYTA, Species.INKAY, Species.HOUNDOUR, Species.SKORUPI, Species.SCRAFTY, Species.CROAGUNK, Species.SCATTERBUG, Species.ESPURR ], [TrainerPoolTier.UNCOMMON]: [ Species.HELIOPTILE, Species.ELECTRIKE, Species.SKRELP, Species.PANCHAM, Species.PURRLOIN, Species.POOCHYENA, Species.BINACLE, Species.CLAUNCHER, Species.PUMPKABOO, Species.PHANTUMP, Species.FOONGUS ], [TrainerPoolTier.RARE]: [ Species.LITWICK, Species.SNEASEL, Species.PAWNIARD, Species.SLIGGOO ], [TrainerPoolTier.SUPER_RARE]: [ Species.NOIBAT, Species.HISUI_SLIGGOO, Species.HISUI_AVALUGG ] }), - [TrainerType.BRYONY]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("flare_admin_female", "flare", [ Species.LIEPARD ]).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_flare_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(scene => getEvilGruntPartyTemplate(scene)), - [TrainerType.XEROSIC]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("flare_admin", "flare", [ Species.MALAMAR ]).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_flare_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(scene => getEvilGruntPartyTemplate(scene)), - [TrainerType.AETHER_GRUNT]: new TrainerConfig(++t).setHasGenders("Aether Grunt Female").setHasDouble("Aether Grunts").setMoneyMultiplier(1.0).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_aether_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(scene => getEvilGruntPartyTemplate(scene)) + [TrainerType.BRYONY]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("flare_admin_female", "flare", [ Species.LIEPARD ]).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_flare_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), + [TrainerType.XEROSIC]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("flare_admin", "flare", [ Species.MALAMAR ]).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_flare_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), + [TrainerType.AETHER_GRUNT]: new TrainerConfig(++t).setHasGenders("Aether Grunt Female").setHasDouble("Aether Grunts").setMoneyMultiplier(1.0).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_aether_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) .setSpeciesPools({ [TrainerPoolTier.COMMON]: [ Species.PIKIPEK, Species.ROCKRUFF, Species.ALOLA_DIGLETT, Species.ALOLA_EXEGGUTOR, Species.YUNGOOS, Species.CORSOLA, Species.ALOLA_GEODUDE, Species.ALOLA_RAICHU, Species.BOUNSWEET, Species.LILLIPUP, Species.KOMALA, Species.MORELULL, Species.COMFEY, Species.TOGEDEMARU ], [TrainerPoolTier.UNCOMMON]: [ Species.POLIWAG, Species.STUFFUL, Species.ORANGURU, Species.PASSIMIAN, Species.BRUXISH, Species.MINIOR, Species.WISHIWASHI, Species.ALOLA_SANDSHREW, Species.ALOLA_VULPIX, Species.CRABRAWLER, Species.CUTIEFLY, Species.ORICORIO, Species.MUDBRAY, Species.PYUKUMUKU, Species.ALOLA_MAROWAK ], [TrainerPoolTier.RARE]: [ Species.GALAR_CORSOLA, Species.TURTONATOR, Species.MIMIKYU, Species.MAGNEMITE, Species.DRAMPA ], [TrainerPoolTier.SUPER_RARE]: [ Species.JANGMO_O, Species.PORYGON ] }), - [TrainerType.FABA]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("aether_admin", "aether", [ Species.HYPNO ]).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_aether_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(scene => getEvilGruntPartyTemplate(scene)), - [TrainerType.SKULL_GRUNT]: new TrainerConfig(++t).setHasGenders("Skull Grunt Female").setHasDouble("Skull Grunts").setMoneyMultiplier(1.0).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_skull_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(scene => getEvilGruntPartyTemplate(scene)) + [TrainerType.FABA]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("aether_admin", "aether", [ Species.HYPNO ]).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_aether_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), + [TrainerType.SKULL_GRUNT]: new TrainerConfig(++t).setHasGenders("Skull Grunt Female").setHasDouble("Skull Grunts").setMoneyMultiplier(1.0).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_skull_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) .setSpeciesPools({ [TrainerPoolTier.COMMON]: [ Species.SALANDIT, Species.ALOLA_RATTATA, Species.EKANS, Species.ALOLA_MEOWTH, Species.SCRAGGY, Species.KOFFING, Species.ALOLA_GRIMER, Species.MAREANIE, Species.SPINARAK, Species.TRUBBISH, Species.DROWZEE ], [TrainerPoolTier.UNCOMMON]: [ Species.FOMANTIS, Species.SABLEYE, Species.SANDILE, Species.HOUNDOUR, Species.ALOLA_MAROWAK, Species.GASTLY, Species.PANCHAM, Species.ZUBAT, Species.VENIPEDE, Species.VULLABY ], [TrainerPoolTier.RARE]: [ Species.SANDYGAST, Species.PAWNIARD, Species.MIMIKYU, Species.DHELMISE, Species.WISHIWASHI, Species.NYMBLE ], [TrainerPoolTier.SUPER_RARE]: [ Species.GRUBBIN, Species.DEWPIDER ] }), - [TrainerType.PLUMERIA]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("skull_admin", "skull", [ Species.SALAZZLE ]).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_skull_admin").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(scene => getEvilGruntPartyTemplate(scene)), - [TrainerType.MACRO_GRUNT]: new TrainerConfig(++t).setHasGenders("Macro Grunt Female").setHasDouble("Macro Grunts").setMoneyMultiplier(1.0).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_macro_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(scene => getEvilGruntPartyTemplate(scene)) + [TrainerType.PLUMERIA]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("skull_admin", "skull", [ Species.SALAZZLE ]).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_skull_admin").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), + [TrainerType.MACRO_GRUNT]: new TrainerConfig(++t).setHasGenders("Macro Grunt Female").setHasDouble("Macro Grunts").setMoneyMultiplier(1.0).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_macro_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) .setSpeciesPools({ [TrainerPoolTier.COMMON]: [ Species.CUFANT, Species.GALAR_MEOWTH, Species.KLINK, Species.ROOKIDEE, Species.CRAMORANT, Species.GALAR_ZIGZAGOON, Species.SKWOVET, Species.STEELIX, Species.MAWILE, Species.FERROSEED ], [TrainerPoolTier.UNCOMMON]: [ Species.DRILBUR, Species.MAGNEMITE, Species.HATENNA, Species.ARROKUDA, Species.APPLIN, Species.GALAR_PONYTA, Species.GALAR_YAMASK, Species.SINISTEA, Species.RIOLU ], [TrainerPoolTier.RARE]: [ Species.FALINKS, Species.BELDUM, Species.GALAR_FARFETCHD, Species.GALAR_MR_MIME, Species.HONEDGE, Species.SCIZOR, Species.GALAR_DARUMAKA ], [TrainerPoolTier.SUPER_RARE]: [ Species.DURALUDON, Species.DREEPY ] }), - [TrainerType.OLEANA]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("macro_admin", "macro", [ Species.GARBODOR ]).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_oleana").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(scene => getEvilGruntPartyTemplate(scene)), - [TrainerType.STAR_GRUNT]: new TrainerConfig(++t).setHasGenders("Star Grunt Female").setHasDouble("Star Grunts").setMoneyMultiplier(1.0).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_star_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(scene => getEvilGruntPartyTemplate(scene)) + [TrainerType.OLEANA]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("macro_admin", "macro", [ Species.GARBODOR ]).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_oleana").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), + [TrainerType.STAR_GRUNT]: new TrainerConfig(++t).setHasGenders("Star Grunt Female").setHasDouble("Star Grunts").setMoneyMultiplier(1.0).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_star_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) .setSpeciesPools({ [TrainerPoolTier.COMMON]: [ Species.DUNSPARCE, Species.HOUNDOUR, Species.AZURILL, Species.GULPIN, Species.FOONGUS, Species.FLETCHLING, Species.LITLEO, Species.FLABEBE, Species.CRABRAWLER, Species.NYMBLE, Species.PAWMI, Species.FIDOUGH, Species.SQUAWKABILLY, Species.MASCHIFF, Species.SHROODLE, Species.KLAWF, Species.WIGLETT, Species.PALDEA_WOOPER ], [TrainerPoolTier.UNCOMMON]: [ Species.KOFFING, Species.EEVEE, Species.GIRAFARIG, Species.RALTS, Species.TORKOAL, Species.SEVIPER, Species.SCRAGGY, Species.ZORUA, Species.MIMIKYU, Species.IMPIDIMP, Species.FALINKS, Species.CAPSAKID, Species.TINKATINK, Species.BOMBIRDIER, Species.CYCLIZAR, Species.FLAMIGO, Species.PALDEA_TAUROS ], [TrainerPoolTier.RARE]: [ Species.MANKEY, Species.PAWNIARD, Species.CHARCADET, Species.FLITTLE, Species.VAROOM, Species.ORTHWORM ], [TrainerPoolTier.SUPER_RARE]: [ Species.DONDOZO, Species.GIMMIGHOUL ] }), - [TrainerType.GIACOMO]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("star_admin", "star_1", [ Species.KINGAMBIT ]).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_star_admin").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(scene => getEvilGruntPartyTemplate(scene)) + [TrainerType.GIACOMO]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("star_admin", "star_1", [ Species.KINGAMBIT ]).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_star_admin").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) .setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.REVAVROOM ], TrainerSlot.TRAINER, true, p => { p.formIndex = 1; // Segin Starmobile p.moveset = [ new PokemonMove(Moves.WICKED_TORQUE), new PokemonMove(Moves.SPIN_OUT), new PokemonMove(Moves.SHIFT_GEAR), new PokemonMove(Moves.HIGH_HORSEPOWER) ]; })), - [TrainerType.MELA]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("star_admin", "star_2", [ Species.ARMAROUGE ]).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_star_admin").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(scene => getEvilGruntPartyTemplate(scene)) + [TrainerType.MELA]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("star_admin", "star_2", [ Species.ARMAROUGE ]).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_star_admin").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) .setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.REVAVROOM ], TrainerSlot.TRAINER, true, p => { p.formIndex = 2; // Schedar Starmobile p.moveset = [ new PokemonMove(Moves.BLAZING_TORQUE), new PokemonMove(Moves.SPIN_OUT), new PokemonMove(Moves.SHIFT_GEAR), new PokemonMove(Moves.HIGH_HORSEPOWER) ]; })), - [TrainerType.ATTICUS]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("star_admin", "star_3", [ Species.REVAVROOM ]).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_star_admin").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(scene => getEvilGruntPartyTemplate(scene)) + [TrainerType.ATTICUS]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("star_admin", "star_3", [ Species.REVAVROOM ]).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_star_admin").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) .setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.REVAVROOM ], TrainerSlot.TRAINER, true, p => { p.formIndex = 3; // Navi Starmobile p.moveset = [ new PokemonMove(Moves.NOXIOUS_TORQUE), new PokemonMove(Moves.SPIN_OUT), new PokemonMove(Moves.SHIFT_GEAR), new PokemonMove(Moves.HIGH_HORSEPOWER) ]; })), - [TrainerType.ORTEGA]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("star_admin", "star_4", [ Species.DACHSBUN ]).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_star_admin").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(scene => getEvilGruntPartyTemplate(scene)) + [TrainerType.ORTEGA]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("star_admin", "star_4", [ Species.DACHSBUN ]).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_star_admin").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) .setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.REVAVROOM ], TrainerSlot.TRAINER, true, p => { p.formIndex = 4; // Ruchbah Starmobile p.moveset = [ new PokemonMove(Moves.MAGICAL_TORQUE), new PokemonMove(Moves.SPIN_OUT), new PokemonMove(Moves.SHIFT_GEAR), new PokemonMove(Moves.HIGH_HORSEPOWER) ]; })), - [TrainerType.ERI]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("star_admin", "star_5", [ Species.ANNIHILAPE ]).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_star_admin").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(scene => getEvilGruntPartyTemplate(scene)) + [TrainerType.ERI]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("star_admin", "star_5", [ Species.ANNIHILAPE ]).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_star_admin").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) .setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.REVAVROOM ], TrainerSlot.TRAINER, true, p => { p.formIndex = 5; // Caph Starmobile p.moveset = [ new PokemonMove(Moves.COMBAT_TORQUE), new PokemonMove(Moves.SPIN_OUT), new PokemonMove(Moves.SHIFT_GEAR), new PokemonMove(Moves.HIGH_HORSEPOWER) ]; diff --git a/src/data/weather.ts b/src/data/weather.ts index 24434206bcd..d971f726543 100644 --- a/src/data/weather.ts +++ b/src/data/weather.ts @@ -1,14 +1,16 @@ import { Biome } from "#enums/biome"; import { WeatherType } from "#enums/weather-type"; import { getPokemonNameWithAffix } from "../messages"; -import Pokemon from "../field/pokemon"; +import type Pokemon from "../field/pokemon"; import { Type } from "#enums/type"; -import Move, { AttackMove } from "./move"; +import type Move from "./move"; +import { AttackMove } from "./move"; import * as Utils from "../utils"; -import BattleScene from "../battle-scene"; import { SuppressWeatherEffectAbAttr } from "./ability"; import { TerrainType, getTerrainName } from "./terrain"; import i18next from "i18next"; +import { globalScene } from "#app/global-scene"; +import type { Arena } from "#app/field/arena"; export class Weather { public weatherType: WeatherType; @@ -100,8 +102,8 @@ export class Weather { return false; } - isEffectSuppressed(scene: BattleScene): boolean { - const field = scene.getField(true); + isEffectSuppressed(): boolean { + const field = globalScene.getField(true); for (const pokemon of field) { let suppressWeatherEffectAbAttr: SuppressWeatherEffectAbAttr | null = pokemon.getAbility().getAttrs(SuppressWeatherEffectAbAttr)[0]; @@ -247,7 +249,7 @@ export interface WeatherPoolEntry { weight: integer; } -export function getRandomWeatherType(arena: any /* Importing from arena causes a circular dependency */): WeatherType { +export function getRandomWeatherType(arena: Arena): WeatherType { let weatherPool: WeatherPoolEntry[] = []; const hasSun = arena.getTimeOfDay() < 2; switch (arena.biomeType) { @@ -373,8 +375,8 @@ export function getRandomWeatherType(arena: any /* Importing from arena causes a break; } - if (arena.biomeType === Biome.TOWN && arena.scene.eventManager.isEventActive() && arena.scene.eventManager.activeEvent()?.weather?.length > 0) { - arena.scene.eventManager.activeEvent().weather.map(w => weatherPool.push(w)); + if (arena.biomeType === Biome.TOWN && globalScene.eventManager.isEventActive() && (globalScene.eventManager.activeEvent()?.weather?.length ?? 0) > 0) { + globalScene.eventManager.activeEvent()?.weather?.map(w => weatherPool.push(w)); } if (weatherPool.length > 1) { diff --git a/src/events/arena.ts b/src/events/arena.ts index b1126e5c03d..660a113f96b 100644 --- a/src/events/arena.ts +++ b/src/events/arena.ts @@ -1,7 +1,7 @@ -import { ArenaTagSide } from "#app/data/arena-tag"; -import { ArenaTagType } from "#enums/arena-tag-type"; -import { TerrainType } from "#app/data/terrain"; -import { WeatherType } from "#enums/weather-type"; +import type { ArenaTagSide } from "#app/data/arena-tag"; +import type { ArenaTagType } from "#enums/arena-tag-type"; +import type { TerrainType } from "#app/data/terrain"; +import type { WeatherType } from "#enums/weather-type"; /** Alias for all {@linkcode ArenaEvent} type strings */ export enum ArenaEventType { diff --git a/src/events/battle-scene.ts b/src/events/battle-scene.ts index b2e4461f8d0..548666c96de 100644 --- a/src/events/battle-scene.ts +++ b/src/events/battle-scene.ts @@ -1,5 +1,5 @@ -import Move from "../data/move"; -import { BerryModifier } from "../modifier/modifier"; +import type Move from "../data/move"; +import type { BerryModifier } from "../modifier/modifier"; /** Alias for all {@linkcode BattleScene} events */ export enum BattleSceneEventType { diff --git a/src/field/anims.ts b/src/field/anims.ts index 10198c29005..f96427326b5 100644 --- a/src/field/anims.ts +++ b/src/field/anims.ts @@ -1,32 +1,32 @@ -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { PokeballType } from "#enums/pokeball"; -import { Variant } from "#app/data/variant"; +import type { Variant } from "#app/data/variant"; import { getFrameMs, randGauss } from "#app/utils"; -export function addPokeballOpenParticles(scene: BattleScene, x: number, y: number, pokeballType: PokeballType): void { +export function addPokeballOpenParticles(x: number, y: number, pokeballType: PokeballType): void { switch (pokeballType) { case PokeballType.POKEBALL: - doDefaultPbOpenParticles(scene, x, y, 48); + doDefaultPbOpenParticles(x, y, 48); break; case PokeballType.GREAT_BALL: - doDefaultPbOpenParticles(scene, x, y, 96); + doDefaultPbOpenParticles(x, y, 96); break; case PokeballType.ULTRA_BALL: - doUbOpenParticles(scene, x, y, 8); + doUbOpenParticles(x, y, 8); break; case PokeballType.ROGUE_BALL: - doUbOpenParticles(scene, x, y, 10); + doUbOpenParticles(x, y, 10); break; case PokeballType.MASTER_BALL: - doMbOpenParticles(scene, x, y); + doMbOpenParticles(x, y); break; } } -function doDefaultPbOpenParticles(scene: BattleScene, x: number, y: number, radius: number) { - const pbOpenParticlesFrameNames = scene.anims.generateFrameNames("pb_particles", { start: 0, end: 3, suffix: ".png" }); - if (!(scene.anims.exists("pb_open_particle"))) { - scene.anims.create({ +function doDefaultPbOpenParticles(x: number, y: number, radius: number) { + const pbOpenParticlesFrameNames = globalScene.anims.generateFrameNames("pb_particles", { start: 0, end: 3, suffix: ".png" }); + if (!(globalScene.anims.exists("pb_open_particle"))) { + globalScene.anims.create({ key: "pb_open_particle", frames: pbOpenParticlesFrameNames, frameRate: 16, @@ -35,11 +35,11 @@ function doDefaultPbOpenParticles(scene: BattleScene, x: number, y: number, radi } const addParticle = (index: integer) => { - const particle = scene.add.sprite(x, y, "pb_open_particle"); - scene.field.add(particle); + const particle = globalScene.add.sprite(x, y, "pb_open_particle"); + globalScene.field.add(particle); const angle = index * 45; const [ xCoord, yCoord ] = [ radius * Math.cos(angle * Math.PI / 180), radius * Math.sin(angle * Math.PI / 180) ]; - scene.tweens.add({ + globalScene.tweens.add({ targets: particle, x: x + xCoord, y: y + yCoord, @@ -48,9 +48,9 @@ function doDefaultPbOpenParticles(scene: BattleScene, x: number, y: number, radi particle.play({ key: "pb_open_particle", startFrame: (index + 3) % 4, - frameRate: Math.floor(16 * scene.gameSpeed) + frameRate: Math.floor(16 * globalScene.gameSpeed) }); - scene.tweens.add({ + globalScene.tweens.add({ targets: particle, delay: 500, duration: 75, @@ -61,20 +61,20 @@ function doDefaultPbOpenParticles(scene: BattleScene, x: number, y: number, radi }; let particleCount = 0; - scene.time.addEvent({ + globalScene.time.addEvent({ delay: 20, repeat: 16, callback: () => addParticle(++particleCount) }); } -function doUbOpenParticles(scene: BattleScene, x: number, y: number, frameIndex: integer) { +function doUbOpenParticles(x: number, y: number, frameIndex: integer) { const particles: Phaser.GameObjects.Image[] = []; for (let i = 0; i < 10; i++) { - particles.push(doFanOutParticle(scene, i * 25, x, y, 1, 1, 5, frameIndex)); + particles.push(doFanOutParticle(i * 25, x, y, 1, 1, 5, frameIndex)); } - scene.tweens.add({ + globalScene.tweens.add({ targets: particles, delay: 750, duration: 250, @@ -88,14 +88,14 @@ function doUbOpenParticles(scene: BattleScene, x: number, y: number, frameIndex: }); } -function doMbOpenParticles(scene: BattleScene, x: number, y: number) { +function doMbOpenParticles(x: number, y: number) { const particles: Phaser.GameObjects.Image[] = []; for (let j = 0; j < 2; j++) { for (let i = 0; i < 8; i++) { - particles.push(doFanOutParticle(scene, i * 32, x, y, j ? 1 : 2, j ? 2 : 1, 8, 4)); + particles.push(doFanOutParticle(i * 32, x, y, j ? 1 : 2, j ? 2 : 1, 8, 4)); } - scene.tweens.add({ + globalScene.tweens.add({ targets: particles, delay: 750, duration: 250, @@ -110,11 +110,11 @@ function doMbOpenParticles(scene: BattleScene, x: number, y: number) { } } -function doFanOutParticle(scene: BattleScene, trigIndex: integer, x: integer, y: integer, xSpeed: integer, ySpeed: integer, angle: integer, frameIndex: integer): Phaser.GameObjects.Image { +function doFanOutParticle(trigIndex: integer, x: integer, y: integer, xSpeed: integer, ySpeed: integer, angle: integer, frameIndex: integer): Phaser.GameObjects.Image { let f = 0; - const particle = scene.add.image(x, y, "pb_particles", `${frameIndex}.png`); - scene.field.add(particle); + const particle = globalScene.add.image(x, y, "pb_particles", `${frameIndex}.png`); + globalScene.field.add(particle); const updateParticle = () => { if (!particle.scene) { @@ -126,7 +126,7 @@ function doFanOutParticle(scene: BattleScene, trigIndex: integer, x: integer, y: f++; }; - const particleTimer = scene.tweens.addCounter({ + const particleTimer = globalScene.tweens.addCounter({ repeat: -1, duration: getFrameMs(1), onRepeat: () => { @@ -137,20 +137,20 @@ function doFanOutParticle(scene: BattleScene, trigIndex: integer, x: integer, y: return particle; } -export function addPokeballCaptureStars(scene: BattleScene, pokeball: Phaser.GameObjects.Sprite): void { +export function addPokeballCaptureStars(pokeball: Phaser.GameObjects.Sprite): void { const addParticle = () => { - const particle = scene.add.sprite(pokeball.x, pokeball.y, "pb_particles", "4.png"); + const particle = globalScene.add.sprite(pokeball.x, pokeball.y, "pb_particles", "4.png"); particle.setOrigin(pokeball.originX, pokeball.originY); particle.setAlpha(0.5); - scene.field.add(particle); + globalScene.field.add(particle); - scene.tweens.add({ + globalScene.tweens.add({ targets: particle, y: pokeball.y - 10, ease: "Sine.easeOut", duration: 250, onComplete: () => { - scene.tweens.add({ + globalScene.tweens.add({ targets: particle, y: pokeball.y, alpha: 0, @@ -161,13 +161,13 @@ export function addPokeballCaptureStars(scene: BattleScene, pokeball: Phaser.Gam }); const dist = randGauss(25); - scene.tweens.add({ + globalScene.tweens.add({ targets: particle, x: pokeball.x + dist, duration: 500 }); - scene.tweens.add({ + globalScene.tweens.add({ targets: particle, alpha: 0, delay: 425, @@ -193,15 +193,15 @@ export function cos(index: integer, amplitude: integer): number { * @param sparkleSprite the Sprite to play the animation on * @param variant which shiny {@linkcode variant} to play the animation for */ -export function doShinySparkleAnim(scene: BattleScene, sparkleSprite: Phaser.GameObjects.Sprite, variant: Variant) { +export function doShinySparkleAnim(sparkleSprite: Phaser.GameObjects.Sprite, variant: Variant) { const keySuffix = variant ? `_${variant + 1}` : ""; const spriteKey = `shiny${keySuffix}`; const animationKey = `sparkle${keySuffix}`; // Make sure the animation exists, and create it if not - if (!scene.anims.exists(animationKey)) { - const frameNames = scene.anims.generateFrameNames(spriteKey, { suffix: ".png", end: 34 }); - scene.anims.create({ + if (!globalScene.anims.exists(animationKey)) { + const frameNames = globalScene.anims.generateFrameNames(spriteKey, { suffix: ".png", end: 34 }); + globalScene.anims.create({ key: `sparkle${keySuffix}`, frames: frameNames, frameRate: 32, @@ -212,5 +212,5 @@ export function doShinySparkleAnim(scene: BattleScene, sparkleSprite: Phaser.Gam // Play the animation sparkleSprite.play(animationKey); - scene.playSound("se/sparkle"); + globalScene.playSound("se/sparkle"); } diff --git a/src/field/arena.ts b/src/field/arena.ts index 3cbef659d7a..71966b97775 100644 --- a/src/field/arena.ts +++ b/src/field/arena.ts @@ -1,14 +1,17 @@ -import BattleScene from "#app/battle-scene"; -import { biomePokemonPools, BiomePoolTier, BiomeTierTrainerPools, biomeTrainerPools, PokemonPools } from "#app/data/balance/biomes"; -import { Constructor } from "#app/utils"; +import { globalScene } from "#app/global-scene"; +import type { BiomeTierTrainerPools, PokemonPools } from "#app/data/balance/biomes"; +import { biomePokemonPools, BiomePoolTier, biomeTrainerPools } from "#app/data/balance/biomes"; +import type { Constructor } from "#app/utils"; import * as Utils from "#app/utils"; -import PokemonSpecies, { getPokemonSpecies } from "#app/data/pokemon-species"; +import type PokemonSpecies from "#app/data/pokemon-species"; +import { getPokemonSpecies } from "#app/data/pokemon-species"; import { getTerrainClearMessage, getTerrainStartMessage, getWeatherClearMessage, getWeatherStartMessage, Weather } from "#app/data/weather"; import { CommonAnim } from "#app/data/battle-anims"; -import { Type } from "#enums/type"; -import Move from "#app/data/move"; -import { ArenaTag, ArenaTagSide, ArenaTrapTag, getArenaTag } from "#app/data/arena-tag"; -import { BattlerIndex } from "#app/battle"; +import type { Type } from "#enums/type"; +import type Move from "#app/data/move"; +import type { ArenaTag } from "#app/data/arena-tag"; +import { ArenaTagSide, ArenaTrapTag, getArenaTag } from "#app/data/arena-tag"; +import type { BattlerIndex } from "#app/battle"; import { Terrain, TerrainType } from "#app/data/terrain"; import { applyAbAttrs, @@ -18,12 +21,12 @@ import { PostWeatherChangeAbAttr, TerrainEventTypeChangeAbAttr } from "#app/data/ability"; -import Pokemon from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; import Overrides from "#app/overrides"; import { TagAddedEvent, TagRemovedEvent, TerrainChangedEvent, WeatherChangedEvent } from "#app/events/arena"; -import { ArenaTagType } from "#enums/arena-tag-type"; +import type { ArenaTagType } from "#enums/arena-tag-type"; import { Biome } from "#enums/biome"; -import { Moves } from "#enums/moves"; +import type { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import { TimeOfDay } from "#enums/time-of-day"; import { TrainerType } from "#enums/trainer-type"; @@ -34,7 +37,6 @@ import { ShowAbilityPhase } from "#app/phases/show-ability-phase"; import { WeatherType } from "#enums/weather-type"; export class Arena { - public scene: BattleScene; public biomeType: Biome; public weather: Weather | null; public terrain: Terrain | null; @@ -50,8 +52,7 @@ export class Arena { public readonly eventTarget: EventTarget = new EventTarget(); - constructor(scene: BattleScene, biome: Biome, bgm: string) { - this.scene = scene; + constructor(biome: Biome, bgm: string) { this.biomeType = biome; this.tags = []; this.bgm = bgm; @@ -62,12 +63,12 @@ export class Arena { init() { const biomeKey = getBiomeKey(this.biomeType); - this.scene.arenaPlayer.setBiome(this.biomeType); - this.scene.arenaPlayerTransition.setBiome(this.biomeType); - this.scene.arenaEnemy.setBiome(this.biomeType); - this.scene.arenaNextEnemy.setBiome(this.biomeType); - this.scene.arenaBg.setTexture(`${biomeKey}_bg`); - this.scene.arenaBgTransition.setTexture(`${biomeKey}_bg`); + globalScene.arenaPlayer.setBiome(this.biomeType); + globalScene.arenaPlayerTransition.setBiome(this.biomeType); + globalScene.arenaEnemy.setBiome(this.biomeType); + globalScene.arenaNextEnemy.setBiome(this.biomeType); + globalScene.arenaBg.setTexture(`${biomeKey}_bg`); + globalScene.arenaBgTransition.setTexture(`${biomeKey}_bg`); // Redo this on initialize because during save/load the current wave isn't always // set correctly during construction @@ -86,12 +87,12 @@ export class Arena { } randomSpecies(waveIndex: integer, level: integer, attempt?: integer, luckValue?: integer, isBoss?: boolean): PokemonSpecies { - const overrideSpecies = this.scene.gameMode.getOverrideSpecies(waveIndex); + const overrideSpecies = globalScene.gameMode.getOverrideSpecies(waveIndex); if (overrideSpecies) { return overrideSpecies; } - const isBossSpecies = !!this.scene.getEncounterBossSegments(waveIndex, level) && !!this.pokemonPool[BiomePoolTier.BOSS].length - && (this.biomeType !== Biome.END || this.scene.gameMode.isClassic || this.scene.gameMode.isWaveFinal(waveIndex)); + const isBossSpecies = !!globalScene.getEncounterBossSegments(waveIndex, level) && !!this.pokemonPool[BiomePoolTier.BOSS].length + && (this.biomeType !== Biome.END || globalScene.gameMode.isClassic || globalScene.gameMode.isWaveFinal(waveIndex)); const randVal = isBossSpecies ? 64 : 512; // luck influences encounter rarity let luckModifier = 0; @@ -111,7 +112,7 @@ export class Arena { let ret: PokemonSpecies; let regen = false; if (!tierPool.length) { - ret = this.scene.randomSpecies(waveIndex, level); + ret = globalScene.randomSpecies(waveIndex, level); } else { const entry = tierPool[Utils.randSeedInt(tierPool.length)]; let species: Species; @@ -158,7 +159,7 @@ export class Arena { return this.randomSpecies(waveIndex, level, (attempt || 0) + 1); } - const newSpeciesId = ret.getWildSpeciesForLevel(level, true, isBoss ?? isBossSpecies, this.scene.gameMode); + const newSpeciesId = ret.getWildSpeciesForLevel(level, true, isBoss ?? isBossSpecies, globalScene.gameMode); if (newSpeciesId !== ret.speciesId) { console.log("Replaced", Species[ret.speciesId], "with", Species[newSpeciesId]); ret = getPokemonSpecies(newSpeciesId); @@ -168,7 +169,7 @@ export class Arena { randomTrainerType(waveIndex: integer, isBoss: boolean = false): TrainerType { const isTrainerBoss = !!this.trainerPool[BiomePoolTier.BOSS].length - && (this.scene.gameMode.isTrainerBoss(waveIndex, this.biomeType, this.scene.offsetGym) || isBoss); + && (globalScene.gameMode.isTrainerBoss(waveIndex, this.biomeType, globalScene.offsetGym) || isBoss); console.log(isBoss, this.trainerPool); const tierValue = Utils.randSeedInt(!isTrainerBoss ? 512 : 64); let tier = !isTrainerBoss @@ -243,8 +244,8 @@ export class Arena { */ trySetWeatherOverride(weather: WeatherType): boolean { this.weather = new Weather(weather, 0); - this.scene.unshiftPhase(new CommonAnimPhase(this.scene, undefined, undefined, CommonAnim.SUNNY + (weather - 1))); - this.scene.queueMessage(getWeatherStartMessage(weather)!); // TODO: is this bang correct? + globalScene.unshiftPhase(new CommonAnimPhase(undefined, undefined, CommonAnim.SUNNY + (weather - 1))); + globalScene.queueMessage(getWeatherStartMessage(weather)!); // TODO: is this bang correct? return true; } @@ -269,13 +270,13 @@ export class Arena { this.eventTarget.dispatchEvent(new WeatherChangedEvent(oldWeatherType, this.weather?.weatherType!, this.weather?.turnsLeft!)); // TODO: is this bang correct? if (this.weather) { - this.scene.unshiftPhase(new CommonAnimPhase(this.scene, undefined, undefined, CommonAnim.SUNNY + (weather - 1), true)); - this.scene.queueMessage(getWeatherStartMessage(weather)!); // TODO: is this bang correct? + globalScene.unshiftPhase(new CommonAnimPhase(undefined, undefined, CommonAnim.SUNNY + (weather - 1), true)); + globalScene.queueMessage(getWeatherStartMessage(weather)!); // TODO: is this bang correct? } else { - this.scene.queueMessage(getWeatherClearMessage(oldWeatherType)!); // TODO: is this bang correct? + globalScene.queueMessage(getWeatherClearMessage(oldWeatherType)!); // TODO: is this bang correct? } - this.scene.getField(true).filter(p => p.isOnField()).map(pokemon => { + globalScene.getField(true).filter(p => p.isOnField()).map(pokemon => { pokemon.findAndRemoveTags(t => "weatherTypes" in t && !(t.weatherTypes as WeatherType[]).find(t => t === weather)); applyPostWeatherChangeAbAttrs(PostWeatherChangeAbAttr, pokemon, weather); }); @@ -287,13 +288,13 @@ export class Arena { * Function to trigger all weather based form changes */ triggerWeatherBasedFormChanges(): void { - this.scene.getField(true).forEach( p => { + globalScene.getField(true).forEach( p => { const isCastformWithForecast = (p.hasAbility(Abilities.FORECAST) && p.species.speciesId === Species.CASTFORM); const isCherrimWithFlowerGift = (p.hasAbility(Abilities.FLOWER_GIFT) && p.species.speciesId === Species.CHERRIM); if (isCastformWithForecast || isCherrimWithFlowerGift) { - new ShowAbilityPhase(this.scene, p.getBattlerIndex()); - this.scene.triggerPokemonFormChange(p, SpeciesFormChangeWeatherTrigger); + new ShowAbilityPhase(p.getBattlerIndex()); + globalScene.triggerPokemonFormChange(p, SpeciesFormChangeWeatherTrigger); } }); } @@ -302,13 +303,13 @@ export class Arena { * Function to trigger all weather based form changes back into their normal forms */ triggerWeatherBasedFormChangesToNormal(): void { - this.scene.getField(true).forEach( p => { + globalScene.getField(true).forEach( p => { const isCastformWithForecast = (p.hasAbility(Abilities.FORECAST, false, true) && p.species.speciesId === Species.CASTFORM); const isCherrimWithFlowerGift = (p.hasAbility(Abilities.FLOWER_GIFT, false, true) && p.species.speciesId === Species.CHERRIM); if (isCastformWithForecast || isCherrimWithFlowerGift) { - new ShowAbilityPhase(this.scene, p.getBattlerIndex()); - return this.scene.triggerPokemonFormChange(p, SpeciesFormChangeRevertWeatherFormTrigger); + new ShowAbilityPhase(p.getBattlerIndex()); + return globalScene.triggerPokemonFormChange(p, SpeciesFormChangeRevertWeatherFormTrigger); } }); } @@ -325,14 +326,14 @@ export class Arena { if (this.terrain) { if (!ignoreAnim) { - this.scene.unshiftPhase(new CommonAnimPhase(this.scene, undefined, undefined, CommonAnim.MISTY_TERRAIN + (terrain - 1))); + globalScene.unshiftPhase(new CommonAnimPhase(undefined, undefined, CommonAnim.MISTY_TERRAIN + (terrain - 1))); } - this.scene.queueMessage(getTerrainStartMessage(terrain)!); // TODO: is this bang correct? + globalScene.queueMessage(getTerrainStartMessage(terrain)!); // TODO: is this bang correct? } else { - this.scene.queueMessage(getTerrainClearMessage(oldTerrainType)!); // TODO: is this bang correct? + globalScene.queueMessage(getTerrainClearMessage(oldTerrainType)!); // TODO: is this bang correct? } - this.scene.getField(true).filter(p => p.isOnField()).map(pokemon => { + globalScene.getField(true).filter(p => p.isOnField()).map(pokemon => { pokemon.findAndRemoveTags(t => "terrainTypes" in t && !(t.terrainTypes as TerrainType[]).find(t => t === terrain)); applyPostTerrainChangeAbAttrs(PostTerrainChangeAbAttr, pokemon, terrain); applyAbAttrs(TerrainEventTypeChangeAbAttr, pokemon, null, false); @@ -342,7 +343,7 @@ export class Arena { } public isMoveWeatherCancelled(user: Pokemon, move: Move): boolean { - return !!this.weather && !this.weather.isEffectSuppressed(this.scene) && this.weather.isMoveWeatherCancelled(user, move); + return !!this.weather && !this.weather.isEffectSuppressed() && this.weather.isMoveWeatherCancelled(user, move); } public isMoveTerrainCancelled(user: Pokemon, targets: BattlerIndex[], move: Move): boolean { @@ -355,7 +356,7 @@ export class Arena { getAttackTypeMultiplier(attackType: Type, grounded: boolean): number { let weatherMultiplier = 1; - if (this.weather && !this.weather.isEffectSuppressed(this.scene)) { + if (this.weather && !this.weather.isEffectSuppressed()) { weatherMultiplier = this.weather.getAttackTypeMultiplier(attackType); } @@ -421,7 +422,7 @@ export class Arena { return TimeOfDay.NIGHT; } - const waveCycle = ((this.scene.currentBattle?.waveIndex || 0) + this.scene.waveCycleOffset) % 40; + const waveCycle = ((globalScene.currentBattle?.waveIndex || 0) + globalScene.waveCycleOffset) % 40; if (waveCycle < 15) { return TimeOfDay.DAY; @@ -691,7 +692,7 @@ export class Arena { } preloadBgm(): void { - this.scene.loadBgm(this.bgm); + globalScene.loadBgm(this.bgm); } getBgmLoopPoint(): number { @@ -815,17 +816,17 @@ export class ArenaBase extends Phaser.GameObjects.Container { public base: Phaser.GameObjects.Sprite; public props: Phaser.GameObjects.Sprite[]; - constructor(scene: BattleScene, player: boolean) { - super(scene, 0, 0); + constructor(player: boolean) { + super(globalScene, 0, 0); this.player = player; - this.base = scene.addFieldSprite(0, 0, "plains_a", undefined, 1); + this.base = globalScene.addFieldSprite(0, 0, "plains_a", undefined, 1); this.base.setOrigin(0, 0); this.props = !player ? new Array(3).fill(null).map(() => { - const ret = scene.addFieldSprite(0, 0, "plains_b", undefined, 1); + const ret = globalScene.addFieldSprite(0, 0, "plains_b", undefined, 1); ret.setOrigin(0, 0); ret.setVisible(false); return ret; @@ -841,9 +842,9 @@ export class ArenaBase extends Phaser.GameObjects.Container { this.base.setTexture(baseKey); if (this.base.texture.frameTotal > 1) { - const baseFrameNames = this.scene.anims.generateFrameNames(baseKey, { zeroPad: 4, suffix: ".png", start: 1, end: this.base.texture.frameTotal - 1 }); - if (!(this.scene.anims.exists(baseKey))) { - this.scene.anims.create({ + const baseFrameNames = globalScene.anims.generateFrameNames(baseKey, { zeroPad: 4, suffix: ".png", start: 1, end: this.base.texture.frameTotal - 1 }); + if (!(globalScene.anims.exists(baseKey))) { + globalScene.anims.create({ key: baseKey, frames: baseFrameNames, frameRate: 12, @@ -859,7 +860,7 @@ export class ArenaBase extends Phaser.GameObjects.Container { } if (!this.player) { - (this.scene as BattleScene).executeWithSeedOffset(() => { + globalScene.executeWithSeedOffset(() => { this.propValue = propValue === undefined ? hasProps ? Utils.randSeedInt(8) : 0 : propValue; @@ -868,9 +869,9 @@ export class ArenaBase extends Phaser.GameObjects.Container { prop.setTexture(propKey); if (hasProps && prop.texture.frameTotal > 1) { - const propFrameNames = this.scene.anims.generateFrameNames(propKey, { zeroPad: 4, suffix: ".png", start: 1, end: prop.texture.frameTotal - 1 }); - if (!(this.scene.anims.exists(propKey))) { - this.scene.anims.create({ + const propFrameNames = globalScene.anims.generateFrameNames(propKey, { zeroPad: 4, suffix: ".png", start: 1, end: prop.texture.frameTotal - 1 }); + if (!(globalScene.anims.exists(propKey))) { + globalScene.anims.create({ key: propKey, frames: propFrameNames, frameRate: 12, @@ -885,7 +886,7 @@ export class ArenaBase extends Phaser.GameObjects.Container { prop.setVisible(hasProps && !!(this.propValue & (1 << p))); this.add(prop); }); - }, (this.scene as BattleScene).currentBattle?.waveIndex || 0, (this.scene as BattleScene).waveSeed); + }, globalScene.currentBattle?.waveIndex || 0, globalScene.waveSeed); } } } diff --git a/src/field/damage-number-handler.ts b/src/field/damage-number-handler.ts index 4ddcd2d3ee7..57b9d6990ca 100644 --- a/src/field/damage-number-handler.ts +++ b/src/field/damage-number-handler.ts @@ -1,7 +1,10 @@ import { TextStyle, addTextObject } from "../ui/text"; -import Pokemon, { DamageResult, HitResult } from "./pokemon"; +import type { DamageResult } from "./pokemon"; +import type Pokemon from "./pokemon"; +import { HitResult } from "./pokemon"; import * as Utils from "../utils"; -import { BattlerIndex } from "../battle"; +import type { BattlerIndex } from "../battle"; +import { globalScene } from "#app/global-scene"; type TextAndShadowArr = [ string | null, string | null ]; @@ -13,15 +16,13 @@ export default class DamageNumberHandler { } add(target: Pokemon, amount: integer, result: DamageResult | HitResult.HEAL = HitResult.EFFECTIVE, critical: boolean = false): void { - const scene = target.scene; - - if (!scene?.damageNumbersMode) { + if (!globalScene?.damageNumbersMode) { return; } const battlerIndex = target.getBattlerIndex(); const baseScale = target.getSpriteScale() / 6; - const damageNumber = addTextObject(scene, target.x, -(scene.game.canvas.height / 6) + target.y - target.getSprite().height / 2, Utils.formatStat(amount, true), TextStyle.SUMMARY); + const damageNumber = addTextObject(target.x, -(globalScene.game.canvas.height / 6) + target.y - target.getSprite().height / 2, Utils.formatStat(amount, true), TextStyle.SUMMARY); damageNumber.setName("text-damage-number"); damageNumber.setOrigin(0.5, 1); damageNumber.setScale(baseScale); @@ -58,7 +59,7 @@ export default class DamageNumberHandler { } } - scene.fieldUI.add(damageNumber); + globalScene.fieldUI.add(damageNumber); if (!this.damageNumbers.has(battlerIndex)) { this.damageNumbers.set(battlerIndex, []); @@ -71,14 +72,14 @@ export default class DamageNumberHandler { this.damageNumbers.get(battlerIndex)!.push(damageNumber); - if (scene.damageNumbersMode === 1) { - scene.tweens.add({ + if (globalScene.damageNumbersMode === 1) { + globalScene.tweens.add({ targets: damageNumber, duration: Utils.fixedInt(750), alpha: 1, y: "-=32" }); - scene.tweens.add({ + globalScene.tweens.add({ delay: 375, targets: damageNumber, duration: Utils.fixedInt(625), @@ -94,7 +95,7 @@ export default class DamageNumberHandler { damageNumber.setAlpha(0); - scene.tweens.chain({ + globalScene.tweens.chain({ targets: damageNumber, tweens: [ { diff --git a/src/field/mystery-encounter-intro.ts b/src/field/mystery-encounter-intro.ts index b1b85de9b29..4fce9b1dfc9 100644 --- a/src/field/mystery-encounter-intro.ts +++ b/src/field/mystery-encounter-intro.ts @@ -1,12 +1,12 @@ -import { GameObjects } from "phaser"; -import BattleScene from "#app/battle-scene"; -import MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; -import { Species } from "#enums/species"; +import type { GameObjects } from "phaser"; +import { globalScene } from "#app/global-scene"; +import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; +import type { Species } from "#enums/species"; import { isNullOrUndefined } from "#app/utils"; import { getSpriteKeysFromSpecies } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; -import PlayAnimationConfig = Phaser.Types.Animations.PlayAnimationConfig; -import { Variant } from "#app/data/variant"; +import type { Variant } from "#app/data/variant"; import { doShinySparkleAnim } from "#app/field/anims"; +import PlayAnimationConfig = Phaser.Types.Animations.PlayAnimationConfig; type KnownFileRoot = | "arenas" @@ -82,8 +82,8 @@ export default class MysteryEncounterIntroVisuals extends Phaser.GameObjects.Con public enterFromRight: boolean; private shinySparkleSprites: { sprite: Phaser.GameObjects.Sprite, variant: Variant }[]; - constructor(scene: BattleScene, encounter: MysteryEncounter) { - super(scene, -72, 76); + constructor(encounter: MysteryEncounter) { + super(globalScene, -72, 76); this.encounter = encounter; this.enterFromRight = encounter.enterIntroVisualsFromRight ?? false; // Shallow copy configs to allow visual config updates at runtime without dirtying master copy of Encounter @@ -106,16 +106,16 @@ export default class MysteryEncounterIntroVisuals extends Phaser.GameObjects.Con } const getSprite = (spriteKey: string, hasShadow?: boolean, yShadow?: number) => { - const ret = this.scene.addFieldSprite(0, 0, spriteKey); + const ret = globalScene.addFieldSprite(0, 0, spriteKey); ret.setOrigin(0.5, 1); - ret.setPipeline(this.scene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], hasShadow: !!hasShadow, yShadowOffset: yShadow ?? 0 }); + ret.setPipeline(globalScene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], hasShadow: !!hasShadow, yShadowOffset: yShadow ?? 0 }); return ret; }; const getItemSprite = (spriteKey: string, hasShadow?: boolean, yShadow?: number) => { - const icon = this.scene.add.sprite(-19, 2, "items", spriteKey); + const icon = globalScene.add.sprite(-19, 2, "items", spriteKey); icon.setOrigin(0.5, 1); - icon.setPipeline(this.scene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], hasShadow: !!hasShadow, yShadowOffset: yShadow ?? 0 }); + icon.setPipeline(globalScene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], hasShadow: !!hasShadow, yShadowOffset: yShadow ?? 0 }); return icon; }; @@ -128,7 +128,7 @@ export default class MysteryEncounterIntroVisuals extends Phaser.GameObjects.Con const spacingValue = Math.round((maxX - minX) / Math.max(this.spriteConfigs.filter(s => !s.x && !s.y).length, 1)); this.shinySparkleSprites = []; - const shinySparkleSprites = scene.add.container(0, 0); + const shinySparkleSprites = globalScene.add.container(0, 0); this.spriteConfigs?.forEach((config) => { const { spriteKey, isItem, hasShadow, scale, x, y, yShadow, alpha, isPokemon, isShiny, variant } = config; @@ -151,7 +151,7 @@ export default class MysteryEncounterIntroVisuals extends Phaser.GameObjects.Con tintSprite.setPipelineData("shiny", true); tintSprite.setPipelineData("variant", variant); // Create Sprite for shiny Sparkle - pokemonShinySparkle = scene.add.sprite(sprite.x, sprite.y, "shiny"); + pokemonShinySparkle = globalScene.add.sprite(sprite.x, sprite.y, "shiny"); pokemonShinySparkle.setOrigin(0.5, 1); pokemonShinySparkle.setVisible(false); this.shinySparkleSprites.push({ sprite: pokemonShinySparkle, variant: variant ?? 0 }); @@ -217,18 +217,18 @@ export default class MysteryEncounterIntroVisuals extends Phaser.GameObjects.Con this.spriteConfigs.forEach((config) => { if (config.isPokemon) { - this.scene.loadPokemonAtlas(config.spriteKey, config.fileRoot); + globalScene.loadPokemonAtlas(config.spriteKey, config.fileRoot); if (config.isShiny) { - this.scene.loadPokemonVariantAssets(config.spriteKey, config.fileRoot, config.variant); + globalScene.loadPokemonVariantAssets(config.spriteKey, config.fileRoot, config.variant); } } else if (config.isItem) { - this.scene.loadAtlas("items", ""); + globalScene.loadAtlas("items", ""); } else { - this.scene.loadAtlas(config.spriteKey, config.fileRoot); + globalScene.loadAtlas(config.spriteKey, config.fileRoot); } }); - this.scene.load.once(Phaser.Loader.Events.COMPLETE, () => { + globalScene.load.once(Phaser.Loader.Events.COMPLETE, () => { this.spriteConfigs.every((config) => { if (config.isItem) { return true; @@ -239,11 +239,11 @@ export default class MysteryEncounterIntroVisuals extends Phaser.GameObjects.Con // Ignore warnings for missing frames, because there will be a lot console.warn = () => { }; - const frameNames = this.scene.anims.generateFrameNames(config.spriteKey, { zeroPad: 4, suffix: ".png", start: 1, end: 128 }); + const frameNames = globalScene.anims.generateFrameNames(config.spriteKey, { zeroPad: 4, suffix: ".png", start: 1, end: 128 }); console.warn = originalWarn; - if (!(this.scene.anims.exists(config.spriteKey))) { - this.scene.anims.create({ + if (!(globalScene.anims.exists(config.spriteKey))) { + globalScene.anims.create({ key: config.spriteKey, frames: frameNames, frameRate: 10, @@ -257,8 +257,8 @@ export default class MysteryEncounterIntroVisuals extends Phaser.GameObjects.Con resolve(); }); - if (!this.scene.load.isLoading()) { - this.scene.load.start(); + if (!globalScene.load.isLoading()) { + globalScene.load.start(); } }); } @@ -337,8 +337,8 @@ export default class MysteryEncounterIntroVisuals extends Phaser.GameObjects.Con */ playShinySparkles() { for (const sparkleConfig of this.shinySparkleSprites) { - this.scene.time.delayedCall(500, () => { - doShinySparkleAnim(this.scene, sparkleConfig.sprite, sparkleConfig.variant); + globalScene.time.delayedCall(500, () => { + doShinySparkleAnim(sparkleConfig.sprite, sparkleConfig.variant); }); } } @@ -429,7 +429,7 @@ export default class MysteryEncounterIntroVisuals extends Phaser.GameObjects.Con if (duration) { sprite.setAlpha(0); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: sprite, alpha: alpha || 1, duration: duration, @@ -462,7 +462,7 @@ export default class MysteryEncounterIntroVisuals extends Phaser.GameObjects.Con */ private untint(sprite, duration: integer, ease?: string): void { if (duration) { - this.scene.tweens.add({ + globalScene.tweens.add({ targets: sprite, alpha: 0, duration: duration, @@ -502,10 +502,3 @@ export default class MysteryEncounterIntroVisuals extends Phaser.GameObjects.Con return super.setVisible(value); } } - -/** - * Interface is required so as not to override {@link Phaser.GameObjects.Container.scene} - */ -export default interface MysteryEncounterIntroVisuals { - scene: BattleScene -} diff --git a/src/field/pokemon-sprite-sparkle-handler.ts b/src/field/pokemon-sprite-sparkle-handler.ts index 2c4c295eaa4..074933f0f00 100644 --- a/src/field/pokemon-sprite-sparkle-handler.ts +++ b/src/field/pokemon-sprite-sparkle-handler.ts @@ -1,14 +1,14 @@ -import BattleScene from "../battle-scene"; +import { globalScene } from "#app/global-scene"; import Pokemon from "./pokemon"; import * as Utils from "../utils"; export default class PokemonSpriteSparkleHandler { private sprites: Set; - setup(scene: BattleScene): void { + setup(): void { this.sprites = new Set(); - scene.tweens.addCounter({ + globalScene.tweens.addCounter({ duration: Utils.fixedInt(200), from: 0, to: 1, @@ -37,7 +37,7 @@ export default class PokemonSpriteSparkleHandler { const pixel = texture.manager.getPixel(pixelX, pixelY, texture.key, "__BASE"); if (pixel?.alpha) { const [ xOffset, yOffset ] = [ -s.originX * s.width, -s.originY * s.height ]; - const sparkle = (s.scene as BattleScene).addFieldSprite(((pokemon?.x || 0) + s.x + pixelX * ratioX + xOffset), ((pokemon?.y || 0) + s.y + pixelY * ratioY + yOffset), "tera_sparkle"); + const sparkle = globalScene.addFieldSprite(((pokemon?.x || 0) + s.x + pixelX * ratioX + xOffset), ((pokemon?.y || 0) + s.y + pixelY * ratioY + yOffset), "tera_sparkle"); sparkle.pipelineData["ignoreTimeTint"] = s.pipelineData["ignoreTimeTint"]; sparkle.setName("sprite-tera-sparkle"); sparkle.play("tera_sparkle"); diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index 30856ab416a..d40254c8a6b 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -1,15 +1,22 @@ import Phaser from "phaser"; -import BattleScene, { AnySound } from "#app/battle-scene"; -import { Variant, VariantSet, variantColorCache } from "#app/data/variant"; +import type { AnySound } from "#app/battle-scene"; +import type BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; +import type { Variant, VariantSet } from "#app/data/variant"; +import { variantColorCache } from "#app/data/variant"; import { variantData } from "#app/data/variant"; import BattleInfo, { PlayerBattleInfo, EnemyBattleInfo } from "#app/ui/battle-info"; -import Move, { HighCritAttr, HitsTagAttr, applyMoveAttrs, FixedDamageAttr, VariableAtkAttr, allMoves, MoveCategory, TypelessAttr, CritOnlyAttr, getMoveTargets, OneHitKOAttr, VariableMoveTypeAttr, VariableDefAttr, AttackMove, ModifiedDamageAttr, VariableMoveTypeMultiplierAttr, IgnoreOpponentStatStagesAttr, SacrificialAttr, VariableMoveCategoryAttr, CounterDamageAttr, StatStageChangeAttr, RechargeAttr, IgnoreWeatherTypeDebuffAttr, BypassBurnDamageReductionAttr, SacrificialAttrOnHit, OneHitKOAccuracyAttr, RespectAttackTypeImmunityAttr, MoveTarget, CombinedPledgeStabBoostAttr, VariableMoveTypeChartAttr } from "#app/data/move"; -import { default as PokemonSpecies, PokemonSpeciesForm, getFusedSpeciesName, getPokemonSpecies, getPokemonSpeciesForm } from "#app/data/pokemon-species"; +import type Move from "#app/data/move"; +import { HighCritAttr, HitsTagAttr, applyMoveAttrs, FixedDamageAttr, VariableAtkAttr, allMoves, MoveCategory, TypelessAttr, CritOnlyAttr, getMoveTargets, OneHitKOAttr, VariableMoveTypeAttr, VariableDefAttr, AttackMove, ModifiedDamageAttr, VariableMoveTypeMultiplierAttr, IgnoreOpponentStatStagesAttr, SacrificialAttr, VariableMoveCategoryAttr, CounterDamageAttr, StatStageChangeAttr, RechargeAttr, IgnoreWeatherTypeDebuffAttr, BypassBurnDamageReductionAttr, SacrificialAttrOnHit, OneHitKOAccuracyAttr, RespectAttackTypeImmunityAttr, MoveTarget, CombinedPledgeStabBoostAttr, VariableMoveTypeChartAttr } from "#app/data/move"; +import type { PokemonSpeciesForm } from "#app/data/pokemon-species"; +import { default as PokemonSpecies, getFusedSpeciesName, getPokemonSpecies, getPokemonSpeciesForm } from "#app/data/pokemon-species"; import { CLASSIC_CANDY_FRIENDSHIP_MULTIPLIER, getStarterValueFriendshipCap, speciesStarterCosts } from "#app/data/balance/starters"; import { starterPassiveAbilities } from "#app/data/balance/passives"; -import { Constructor, isNullOrUndefined, randSeedInt, type nil } from "#app/utils"; +import type { Constructor } from "#app/utils"; +import { isNullOrUndefined, randSeedInt, type nil } from "#app/utils"; import * as Utils from "#app/utils"; -import { TypeDamageMultiplier, getTypeDamageMultiplier, getTypeRgb } from "#app/data/type"; +import type { TypeDamageMultiplier } from "#app/data/type"; +import { getTypeDamageMultiplier, getTypeRgb } from "#app/data/type"; import { Type } from "#enums/type"; import { getLevelTotalExp } from "#app/data/exp"; import { Stat, type PermanentStat, type BattleStat, type EffectiveStat, PERMANENT_STATS, BATTLE_STATS, EFFECTIVE_STATS } from "#enums/stat"; @@ -18,25 +25,31 @@ import { PokeballType } from "#enums/pokeball"; import { Gender } from "#app/data/gender"; import { initMoveAnim, loadMoveAnimAssets } from "#app/data/battle-anims"; import { Status, getRandomStatus } from "#app/data/status-effect"; -import { pokemonEvolutions, pokemonPrevolutions, SpeciesFormEvolution, SpeciesEvolutionCondition, FusionSpeciesFormEvolution } from "#app/data/balance/pokemon-evolutions"; +import type { SpeciesFormEvolution, SpeciesEvolutionCondition } from "#app/data/balance/pokemon-evolutions"; +import { pokemonEvolutions, pokemonPrevolutions, FusionSpeciesFormEvolution } from "#app/data/balance/pokemon-evolutions"; import { reverseCompatibleTms, tmSpecies, tmPoolTiers } from "#app/data/balance/tms"; import { BattlerTag, BattlerTagLapseType, EncoreTag, GroundedTag, HighestStatBoostTag, SubstituteTag, TypeImmuneTag, getBattlerTag, SemiInvulnerableTag, TypeBoostTag, MoveRestrictionBattlerTag, ExposedTag, DragonCheerTag, CritBoostTag, TrappedTag, TarShotTag, AutotomizedTag, PowerTrickTag } from "../data/battler-tags"; import { WeatherType } from "#enums/weather-type"; import { ArenaTagSide, NoCritTag, WeakenMoveScreenTag } from "#app/data/arena-tag"; -import { Ability, AbAttr, StatMultiplierAbAttr, BlockCritAbAttr, BonusCritAbAttr, BypassBurnDamageReductionAbAttr, FieldPriorityMoveImmunityAbAttr, IgnoreOpponentStatStagesAbAttr, MoveImmunityAbAttr, PreDefendFullHpEndureAbAttr, ReceivedMoveDamageMultiplierAbAttr, StabBoostAbAttr, StatusEffectImmunityAbAttr, TypeImmunityAbAttr, WeightMultiplierAbAttr, allAbilities, applyAbAttrs, applyStatMultiplierAbAttrs, applyPreApplyBattlerTagAbAttrs, applyPreAttackAbAttrs, applyPreDefendAbAttrs, applyPreSetStatusAbAttrs, UnsuppressableAbilityAbAttr, SuppressFieldAbilitiesAbAttr, NoFusionAbilityAbAttr, MultCritAbAttr, IgnoreTypeImmunityAbAttr, DamageBoostAbAttr, IgnoreTypeStatusEffectImmunityAbAttr, ConditionalCritAbAttr, applyFieldStatMultiplierAbAttrs, FieldMultiplyStatAbAttr, AddSecondStrikeAbAttr, UserFieldStatusEffectImmunityAbAttr, UserFieldBattlerTagImmunityAbAttr, BattlerTagImmunityAbAttr, MoveTypeChangeAbAttr, FullHpResistTypeAbAttr, applyCheckTrappedAbAttrs, CheckTrappedAbAttr, PostSetStatusAbAttr, applyPostSetStatusAbAttrs, InfiltratorAbAttr, AlliedFieldDamageReductionAbAttr, PostDamageAbAttr, applyPostDamageAbAttrs, CommanderAbAttr, applyPostItemLostAbAttrs, PostItemLostAbAttr } from "#app/data/ability"; -import PokemonData from "#app/system/pokemon-data"; +import type { Ability, AbAttr } from "#app/data/ability"; +import { StatMultiplierAbAttr, BlockCritAbAttr, BonusCritAbAttr, BypassBurnDamageReductionAbAttr, FieldPriorityMoveImmunityAbAttr, IgnoreOpponentStatStagesAbAttr, MoveImmunityAbAttr, PreDefendFullHpEndureAbAttr, ReceivedMoveDamageMultiplierAbAttr, StabBoostAbAttr, StatusEffectImmunityAbAttr, TypeImmunityAbAttr, WeightMultiplierAbAttr, allAbilities, applyAbAttrs, applyStatMultiplierAbAttrs, applyPreApplyBattlerTagAbAttrs, applyPreAttackAbAttrs, applyPreDefendAbAttrs, applyPreSetStatusAbAttrs, UnsuppressableAbilityAbAttr, SuppressFieldAbilitiesAbAttr, NoFusionAbilityAbAttr, MultCritAbAttr, IgnoreTypeImmunityAbAttr, DamageBoostAbAttr, IgnoreTypeStatusEffectImmunityAbAttr, ConditionalCritAbAttr, applyFieldStatMultiplierAbAttrs, FieldMultiplyStatAbAttr, AddSecondStrikeAbAttr, UserFieldStatusEffectImmunityAbAttr, UserFieldBattlerTagImmunityAbAttr, BattlerTagImmunityAbAttr, MoveTypeChangeAbAttr, FullHpResistTypeAbAttr, applyCheckTrappedAbAttrs, CheckTrappedAbAttr, PostSetStatusAbAttr, applyPostSetStatusAbAttrs, InfiltratorAbAttr, AlliedFieldDamageReductionAbAttr, PostDamageAbAttr, applyPostDamageAbAttrs, CommanderAbAttr, applyPostItemLostAbAttrs, PostItemLostAbAttr } from "#app/data/ability"; +import type PokemonData from "#app/system/pokemon-data"; import { BattlerIndex } from "#app/battle"; import { Mode } from "#app/ui/ui"; -import PartyUiHandler, { PartyOption, PartyUiMode } from "#app/ui/party-ui-handler"; +import type { PartyOption } from "#app/ui/party-ui-handler"; +import PartyUiHandler, { PartyUiMode } from "#app/ui/party-ui-handler"; import SoundFade from "phaser3-rex-plugins/plugins/soundfade"; -import { EVOLVE_MOVE, LevelMoves, RELEARN_MOVE } from "#app/data/balance/pokemon-level-moves"; +import type { LevelMoves } from "#app/data/balance/pokemon-level-moves"; +import { EVOLVE_MOVE, RELEARN_MOVE } from "#app/data/balance/pokemon-level-moves"; import { DamageAchv, achvs } from "#app/system/achv"; -import { DexAttr, StarterDataEntry, StarterMoveset } from "#app/system/game-data"; +import type { StarterDataEntry, StarterMoveset } from "#app/system/game-data"; +import { DexAttr } from "#app/system/game-data"; import { QuantizerCelebi, argbFromRgba, rgbaFromArgb } from "@material/material-color-utilities"; import { getNatureStatMultiplier } from "#app/data/nature"; -import { SpeciesFormChange, SpeciesFormChangeActiveTrigger, SpeciesFormChangeMoveLearnedTrigger, SpeciesFormChangePostMoveTrigger, SpeciesFormChangeStatusEffectTrigger } from "#app/data/pokemon-forms"; +import type { SpeciesFormChange } from "#app/data/pokemon-forms"; +import { SpeciesFormChangeActiveTrigger, SpeciesFormChangeMoveLearnedTrigger, SpeciesFormChangePostMoveTrigger, SpeciesFormChangeStatusEffectTrigger } from "#app/data/pokemon-forms"; import { TerrainType } from "#app/data/terrain"; -import { TrainerSlot } from "#app/data/trainer-config"; +import type { TrainerSlot } from "#app/data/trainer-config"; import Overrides from "#app/overrides"; import i18next from "i18next"; import { speciesEggMoves } from "#app/data/balance/egg-moves"; @@ -46,7 +59,7 @@ import { Abilities } from "#enums/abilities"; import { ArenaTagType } from "#enums/arena-tag-type"; import { BattleSpec } from "#enums/battle-spec"; import { BattlerTagType } from "#enums/battler-tag-type"; -import { BerryType } from "#enums/berry-type"; +import type { BerryType } from "#enums/berry-type"; import { Biome } from "#enums/biome"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; @@ -148,8 +161,8 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { private shinySparkle: Phaser.GameObjects.Sprite; - constructor(scene: BattleScene, x: number, y: number, species: PokemonSpecies, level: integer, abilityIndex?: integer, formIndex?: integer, gender?: Gender, shiny?: boolean, variant?: Variant, ivs?: integer[], nature?: Nature, dataSource?: Pokemon | PokemonData) { - super(scene, x, y); + constructor(x: number, y: number, species: PokemonSpecies, level: integer, abilityIndex?: integer, formIndex?: integer, gender?: Gender, shiny?: boolean, variant?: Variant, ivs?: integer[], nature?: Nature, dataSource?: Pokemon | PokemonData) { + super(globalScene, x, y); if (!species.isObtainable() && this.isPlayer()) { throw `Cannot create a player Pokemon for species '${species.getName(formIndex)}'`; @@ -157,7 +170,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { const hiddenAbilityChance = new Utils.IntegerHolder(BASE_HIDDEN_ABILITY_CHANCE); if (!this.hasTrainer()) { - this.scene.applyModifiers(HiddenAbilityRateBoosterModifier, true, hiddenAbilityChance); + globalScene.applyModifiers(HiddenAbilityRateBoosterModifier, true, hiddenAbilityChance); } this.species = species; @@ -235,7 +248,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } if (this.formIndex === undefined) { - this.formIndex = this.scene.getSpeciesFormIndex(species, this.gender, this.nature, this.isPlayer()); + this.formIndex = globalScene.getSpeciesFormIndex(species, this.gender, this.nature, this.isPlayer()); } if (this.shiny === undefined) { @@ -256,15 +269,15 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { this.friendship = species.baseFriendship; this.metLevel = level; - this.metBiome = scene.currentBattle ? scene.arena.biomeType : -1; + this.metBiome = globalScene.currentBattle ? globalScene.arena.biomeType : -1; this.metSpecies = species.speciesId; - this.metWave = scene.currentBattle ? scene.currentBattle.waveIndex : -1; + this.metWave = globalScene.currentBattle ? globalScene.currentBattle.waveIndex : -1; this.pokerus = false; if (level > 1) { - const fused = new Utils.BooleanHolder(scene.gameMode.isSplicedOnly); + const fused = new Utils.BooleanHolder(globalScene.gameMode.isSplicedOnly); if (!fused.value && !this.isPlayer() && !this.hasTrainer()) { - this.scene.applyModifier(EnemyFusionChanceModifier, false, fused); + globalScene.applyModifier(EnemyFusionChanceModifier, false, fused); } if (fused.value) { @@ -305,12 +318,12 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { this.initBattleInfo(); - this.scene.fieldUI.addAt(this.battleInfo, 0); + globalScene.fieldUI.addAt(this.battleInfo, 0); const getSprite = (hasShadow?: boolean) => { - const ret = this.scene.addPokemonSprite(this, 0, 0, `pkmn__${this.isPlayer() ? "back__" : ""}sub`, undefined, true); + const ret = globalScene.addPokemonSprite(this, 0, 0, `pkmn__${this.isPlayer() ? "back__" : ""}sub`, undefined, true); ret.setOrigin(0.5, 1); - ret.setPipeline(this.scene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], hasShadow: !!hasShadow, teraColor: getTypeRgb(this.getTeraType()) }); + ret.setPipeline(globalScene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], hasShadow: !!hasShadow, teraColor: getTypeRgb(this.getTeraType()) }); return ret; }; @@ -332,13 +345,13 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { abstract initBattleInfo(): void; isOnField(): boolean { - if (!this.scene) { + if (!globalScene) { return false; } if (this.switchOutStatus) { return false; } - return this.scene.field.getIndex(this) > -1; + return globalScene.field.getIndex(this) > -1; } /** @@ -366,7 +379,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { */ public isAllowedInChallenge(): boolean { const challengeAllowed = new Utils.BooleanHolder(true); - applyChallenges(this.scene.gameMode, ChallengeType.POKEMON_IN_BATTLE, this, challengeAllowed); + applyChallenges(globalScene.gameMode, ChallengeType.POKEMON_IN_BATTLE, this, challengeAllowed); return challengeAllowed.value; } @@ -376,7 +389,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * @returns `true` if the pokemon is "active". Returns `false` if there is no active {@linkcode BattleScene} */ public isActive(onField: boolean = false): boolean { - if (!this.scene) { + if (!globalScene) { return false; } return this.isAllowedInBattle() && (!onField || this.isOnField()); @@ -387,7 +400,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { ret |= this.gender !== Gender.FEMALE ? DexAttr.MALE : DexAttr.FEMALE; ret |= !this.shiny ? DexAttr.NON_SHINY : DexAttr.SHINY; ret |= this.variant >= 2 ? DexAttr.VARIANT_3 : this.variant === 1 ? DexAttr.VARIANT_2 : DexAttr.DEFAULT_VARIANT; - ret |= this.scene.gameData.getFormAttr(this.formIndex); + ret |= globalScene.gameData.getFormAttr(this.formIndex); return ret; } @@ -418,26 +431,26 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { loadAssets(ignoreOverride: boolean = true): Promise { return new Promise(resolve => { const moveIds = this.getMoveset().map(m => m!.getMove().id); // TODO: is this bang correct? - Promise.allSettled(moveIds.map(m => initMoveAnim(this.scene, m))) + Promise.allSettled(moveIds.map(m => initMoveAnim(m))) .then(() => { - loadMoveAnimAssets(this.scene, moveIds); - this.getSpeciesForm().loadAssets(this.scene, this.getGender() === Gender.FEMALE, this.formIndex, this.shiny, this.variant); + loadMoveAnimAssets(moveIds); + this.getSpeciesForm().loadAssets(this.getGender() === Gender.FEMALE, this.formIndex, this.shiny, this.variant); if (this.isPlayer() || this.getFusionSpeciesForm()) { - this.scene.loadPokemonAtlas(this.getBattleSpriteKey(true, ignoreOverride), this.getBattleSpriteAtlasPath(true, ignoreOverride)); + globalScene.loadPokemonAtlas(this.getBattleSpriteKey(true, ignoreOverride), this.getBattleSpriteAtlasPath(true, ignoreOverride)); } if (this.getFusionSpeciesForm()) { - this.getFusionSpeciesForm().loadAssets(this.scene, this.getFusionGender() === Gender.FEMALE, this.fusionFormIndex, this.fusionShiny, this.fusionVariant); - this.scene.loadPokemonAtlas(this.getFusionBattleSpriteKey(true, ignoreOverride), this.getFusionBattleSpriteAtlasPath(true, ignoreOverride)); + this.getFusionSpeciesForm().loadAssets(this.getFusionGender() === Gender.FEMALE, this.fusionFormIndex, this.fusionShiny, this.fusionVariant); + globalScene.loadPokemonAtlas(this.getFusionBattleSpriteKey(true, ignoreOverride), this.getFusionBattleSpriteAtlasPath(true, ignoreOverride)); } - this.scene.load.once(Phaser.Loader.Events.COMPLETE, () => { + globalScene.load.once(Phaser.Loader.Events.COMPLETE, () => { if (this.isPlayer()) { const originalWarn = console.warn; // Ignore warnings for missing frames, because there will be a lot console.warn = () => {}; - const battleFrameNames = this.scene.anims.generateFrameNames(this.getBattleSpriteKey(), { zeroPad: 4, suffix: ".png", start: 1, end: 400 }); + const battleFrameNames = globalScene.anims.generateFrameNames(this.getBattleSpriteKey(), { zeroPad: 4, suffix: ".png", start: 1, end: 400 }); console.warn = originalWarn; - if (!(this.scene.anims.exists(this.getBattleSpriteKey()))) { - this.scene.anims.create({ + if (!(globalScene.anims.exists(this.getBattleSpriteKey()))) { + globalScene.anims.create({ key: this.getBattleSpriteKey(), frames: battleFrameNames, frameRate: 10, @@ -458,7 +471,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { return new Promise(async resolve => { const battleSpritePath = this.getBattleSpriteAtlasPath(isBackSprite, ignoreOverride).replace("variant/", "").replace(/_[1-3]$/, ""); let config = variantData; - const useExpSprite = this.scene.experimentalSprites && this.scene.hasExpSprite(this.getBattleSpriteKey(isBackSprite, ignoreOverride)); + const useExpSprite = globalScene.experimentalSprites && globalScene.hasExpSprite(this.getBattleSpriteKey(isBackSprite, ignoreOverride)); battleSpritePath.split("/").map(p => config ? config = config[p] : null); const variantSet: VariantSet = config as VariantSet; if (variantSet && variantSet[this.variant] === 1) { @@ -479,8 +492,8 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { updateFusionPaletteAndResolve(); } }); - if (!this.scene.load.isLoading()) { - this.scene.load.start(); + if (!globalScene.load.isLoading()) { + globalScene.load.start(); } }); }); @@ -512,7 +525,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { */ async populateVariantColorCache(cacheKey: string, useExpSprite: boolean, battleSpritePath: string) { const spritePath = `./images/pokemon/variant/${useExpSprite ? "exp/" : ""}${battleSpritePath}.json`; - return this.scene.cachedFetch(spritePath).then(res => { + return globalScene.cachedFetch(spritePath).then(res => { // Prevent the JSON from processing if it failed to load if (!res.ok) { return this.fallbackVariantColor(cacheKey, res.url, useExpSprite, battleSpritePath, res.status, res.statusText); @@ -667,10 +680,10 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } getHeldItems(): PokemonHeldItemModifier[] { - if (!this.scene) { + if (!globalScene) { return []; } - return this.scene.findModifiers(m => m instanceof PokemonHeldItemModifier && m.pokemonId === this.id, this.isPlayer()) as PokemonHeldItemModifier[]; + return globalScene.findModifiers(m => m instanceof PokemonHeldItemModifier && m.pokemonId === this.id, this.isPlayer()) as PokemonHeldItemModifier[]; } updateScale(): void { @@ -683,7 +696,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } initShinySparkle(): void { - const shinySparkle = this.scene.addFieldSprite(0, 0, "shiny"); + const shinySparkle = globalScene.addFieldSprite(0, 0, "shiny"); shinySparkle.setVisible(false); shinySparkle.setOrigin(0.5, 1); this.add(shinySparkle); @@ -751,7 +764,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } // During the Pokemon's MoveEffect phase, the offset is removed to put the Pokemon "in focus" - const currentPhase = this.scene.getCurrentPhase(); + const currentPhase = globalScene.getCurrentPhase(); if (currentPhase instanceof MoveEffectPhase && currentPhase.getPokemon() === this) { return false; } @@ -796,7 +809,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (subTag?.sprite) { targets.push(subTag.sprite); } - this.scene.tweens.add({ + globalScene.tweens.add({ targets: targets, x: (_target, _key, value: number) => value + relX, y: (_target, _key, value: number) => value + relY, @@ -902,8 +915,8 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { getCritStage(source: Pokemon, move: Move): number { const critStage = new Utils.IntegerHolder(0); applyMoveAttrs(HighCritAttr, source, this, move, critStage); - this.scene.applyModifiers(CritBoosterModifier, source.isPlayer(), source, critStage); - this.scene.applyModifiers(TempCritBoosterModifier, source.isPlayer(), critStage); + globalScene.applyModifiers(CritBoosterModifier, source.isPlayer(), source, critStage); + globalScene.applyModifiers(TempCritBoosterModifier, source.isPlayer(), critStage); const bonusCrit = new Utils.BooleanHolder(false); //@ts-ignore if (applyAbAttrs(BonusCritAbAttr, source, null, false, bonusCrit)) { // TODO: resolve ts-ignore. This is a promise. Checking a promise is bogus. @@ -939,11 +952,11 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { */ getEffectiveStat(stat: EffectiveStat, opponent?: Pokemon, move?: Move, ignoreAbility: boolean = false, ignoreOppAbility: boolean = false, isCritical: boolean = false, simulated: boolean = true): integer { const statValue = new Utils.NumberHolder(this.getStat(stat, false)); - this.scene.applyModifiers(StatBoosterModifier, this.isPlayer(), this, stat, statValue); + globalScene.applyModifiers(StatBoosterModifier, this.isPlayer(), this, stat, statValue); // The Ruin abilities here are never ignored, but they reveal themselves on summon anyway const fieldApplied = new Utils.BooleanHolder(false); - for (const pokemon of this.scene.getField(true)) { + for (const pokemon of globalScene.getField(true)) { applyFieldStatMultiplierAbAttrs(FieldMultiplyStatAbAttr, pokemon, stat, statValue, this, fieldApplied, simulated); if (fieldApplied.value) { break; @@ -962,23 +975,23 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } break; case Stat.DEF: - if (this.isOfType(Type.ICE) && this.scene.arena.weather?.weatherType === WeatherType.SNOW) { + if (this.isOfType(Type.ICE) && globalScene.arena.weather?.weatherType === WeatherType.SNOW) { ret *= 1.5; } break; case Stat.SPATK: break; case Stat.SPDEF: - if (this.isOfType(Type.ROCK) && this.scene.arena.weather?.weatherType === WeatherType.SANDSTORM) { + if (this.isOfType(Type.ROCK) && globalScene.arena.weather?.weatherType === WeatherType.SANDSTORM) { ret *= 1.5; } break; case Stat.SPD: const side = this.isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY; - if (this.scene.arena.getTagOnSide(ArenaTagType.TAILWIND, side)) { + if (globalScene.arena.getTagOnSide(ArenaTagType.TAILWIND, side)) { ret *= 2; } - if (this.scene.arena.getTagOnSide(ArenaTagType.GRASS_WATER_PLEDGE, side)) { + if (globalScene.arena.getTagOnSide(ArenaTagType.GRASS_WATER_PLEDGE, side)) { ret >>= 2; } @@ -1014,7 +1027,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { const statHolder = new Utils.IntegerHolder(Math.floor(((2 * baseStats[s] + this.ivs[s]) * this.level) * 0.01)); if (s === Stat.HP) { statHolder.value = statHolder.value + this.level + 10; - this.scene.applyModifier(PokemonIncrementingStatModifier, this.isPlayer(), this, s, statHolder); + globalScene.applyModifier(PokemonIncrementingStatModifier, this.isPlayer(), this, s, statHolder); if (this.hasAbility(Abilities.WONDER_GUARD, false, true)) { statHolder.value = 1; } @@ -1029,11 +1042,11 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } else { statHolder.value += 5; const natureStatMultiplier = new Utils.NumberHolder(getNatureStatMultiplier(this.getNature(), s)); - this.scene.applyModifier(PokemonNatureWeightModifier, this.isPlayer(), this, natureStatMultiplier); + globalScene.applyModifier(PokemonNatureWeightModifier, this.isPlayer(), this, natureStatMultiplier); if (natureStatMultiplier.value !== 1) { statHolder.value = Math.max(Math[natureStatMultiplier.value > 1 ? "ceil" : "floor"](statHolder.value * natureStatMultiplier.value), 1); } - this.scene.applyModifier(PokemonIncrementingStatModifier, this.isPlayer(), this, s, statHolder); + globalScene.applyModifier(PokemonIncrementingStatModifier, this.isPlayer(), this, s, statHolder); } statHolder.value = Phaser.Math.Clamp(statHolder.value, 1, Number.MAX_SAFE_INTEGER); @@ -1045,21 +1058,21 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { calculateBaseStats(): number[] { const baseStats = this.getSpeciesForm(true).baseStats.slice(0); // Shuckle Juice - this.scene.applyModifiers(PokemonBaseStatTotalModifier, this.isPlayer(), this, baseStats); + globalScene.applyModifiers(PokemonBaseStatTotalModifier, this.isPlayer(), this, baseStats); // Old Gateau - this.scene.applyModifiers(PokemonBaseStatFlatModifier, this.isPlayer(), this, baseStats); + globalScene.applyModifiers(PokemonBaseStatFlatModifier, this.isPlayer(), this, baseStats); if (this.isFusion()) { const fusionBaseStats = this.getFusionSpeciesForm(true).baseStats; for (const s of PERMANENT_STATS) { baseStats[s] = Math.ceil((baseStats[s] + fusionBaseStats[s]) / 2); } - } else if (this.scene.gameMode.isSplicedOnly) { + } else if (globalScene.gameMode.isSplicedOnly) { for (const s of PERMANENT_STATS) { baseStats[s] = Math.ceil(baseStats[s] / 2); } } // Vitamins - this.scene.applyModifiers(BaseStatModifier, this.isPlayer(), this, baseStats); + globalScene.applyModifiers(BaseStatModifier, this.isPlayer(), this, baseStats); return baseStats; } @@ -1193,7 +1206,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { const species = this.metSpecies in speciesEggMoves ? this.metSpecies : this.getSpeciesForm(true).getRootSpeciesId(true); if (species in speciesEggMoves) { for (let i = 0; i < 4; i++) { - if (this.scene.gameData.starterData[species].eggMoves & (1 << i)) { + if (globalScene.gameData.starterData[species].eggMoves & (1 << i)) { moves.push(speciesEggMoves[species][i]); } } @@ -1212,7 +1225,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { */ public getLearnableLevelMoves(): Moves[] { let levelMoves = this.getLevelMoves(1, true, false, true).map(lm => lm[1]); - if (this.metBiome === -1 && !this.scene.gameMode.isFreshStartChallenge() && !this.scene.gameMode.isDaily) { + if (this.metBiome === -1 && !globalScene.gameMode.isFreshStartChallenge() && !globalScene.gameMode.isDaily) { levelMoves = this.getUnlockedEggMoves().concat(levelMoves); } if (Array.isArray(this.usedTMs) && this.usedTMs.length > 0) { @@ -1431,7 +1444,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } // Classic Final boss and Endless Minor/Major bosses do not have passive - const { currentBattle, gameMode } = this.scene; + const { currentBattle, gameMode } = globalScene; const waveIndex = currentBattle?.waveIndex; if (this instanceof EnemyPokemon && (currentBattle?.battleSpec === BattleSpec.FINAL_BOSS || @@ -1458,7 +1471,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (this.isFusion() && ability.hasAttr(NoFusionAbilityAbAttr)) { return false; } - const arena = this.scene?.arena; + const arena = globalScene?.arena; if (arena.ignoreAbilities && arena.ignoringEffectSource !== this.getBattlerIndex() && ability.isIgnorable) { return false; } @@ -1467,7 +1480,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } if (this.isOnField() && !ability.hasAttr(SuppressFieldAbilitiesAbAttr)) { const suppressed = new Utils.BooleanHolder(false); - this.scene.getField(true).filter(p => p !== this).map(p => { + globalScene.getField(true).filter(p => p !== this).map(p => { if (p.getAbility().hasAttr(SuppressFieldAbilitiesAbAttr) && p.canApplyAbility()) { p.getAbility().getAttrs(SuppressFieldAbilitiesAbAttr).map(a => a.apply(this, false, false, suppressed, [ ability ])); } @@ -1541,20 +1554,19 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } /** - * @returns The tera-formed type of the pokemon, or {@linkcode Type.UNKNOWN} if not present + * @returns the pokemon's current tera {@linkcode Type}, or `Type.UNKNOWN` if the pokemon is not terastallized */ public getTeraType(): Type { - // this.scene can be undefined for a fainted mon in doubles - if (this.scene !== undefined) { - const teraModifier = this.scene.findModifier(m => m instanceof TerastallizeModifier - && m.pokemonId === this.id && !!m.getBattlesLeft(), this.isPlayer()) as TerastallizeModifier; - // return teraType - if (teraModifier) { - return teraModifier.teraType; - } + // I don't think this should be possible anymore, please report if you encounter this. --NightKev + if (globalScene === undefined) { + console.warn("Pokemon.getTeraType(): Global scene is not defined!"); + return Type.UNKNOWN; } - // if scene is undefined, or if teraModifier is considered false, then return unknown type - return Type.UNKNOWN; + const teraModifier = globalScene.findModifier(m => + m instanceof TerastallizeModifier + && m.pokemonId === this.id + && m.getBattlesLeft() > 0, this.isPlayer()) as TerastallizeModifier; + return teraModifier?.teraType ?? Type.UNKNOWN; } public isTerastallized(): boolean { @@ -1575,7 +1587,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { */ public isTrapped(trappedAbMessages: string[] = [], simulated: boolean = true): boolean { const commandedTag = this.getTag(BattlerTagType.COMMANDED); - if (commandedTag?.getSourcePokemon(this.scene)?.isActive(true)) { + if (commandedTag?.getSourcePokemon()?.isActive(true)) { return true; } @@ -1588,7 +1600,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * Contains opposing Pokemon (Enemy/Player Pokemon) depending on perspective * Afterwards, it filters out Pokemon that have been switched out of the field so trapped abilities/moves do not trigger */ - const opposingFieldUnfiltered = this.isPlayer() ? this.scene.getEnemyField() : this.scene.getPlayerField(); + const opposingFieldUnfiltered = this.isPlayer() ? globalScene.getEnemyField() : globalScene.getPlayerField(); const opposingField = opposingFieldUnfiltered.filter(enemyPkm => enemyPkm.switchOutStatus === false); opposingField.forEach((opponent) => @@ -1596,7 +1608,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { ); const side = this.isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY; - return (trappedByAbility.value || !!this.getTag(TrappedTag) || !!this.scene.arena.getTagOnSide(ArenaTagType.FAIRY_LOCK, side)); + return (trappedByAbility.value || !!this.getTag(TrappedTag) || !!globalScene.arena.getTagOnSide(ArenaTagType.FAIRY_LOCK, side)); } /** @@ -1612,7 +1624,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { applyMoveAttrs(VariableMoveTypeAttr, this, null, move, moveTypeHolder); applyPreAttackAbAttrs(MoveTypeChangeAbAttr, this, null, move, simulated, moveTypeHolder); - this.scene.arena.applyTags(ArenaTagType.ION_DELUGE, simulated, moveTypeHolder); + globalScene.arena.applyTags(ArenaTagType.ION_DELUGE, simulated, moveTypeHolder); if (this.getTag(BattlerTagType.ELECTRIFIED)) { moveTypeHolder.value = Type.ELECTRIC; } @@ -1664,7 +1676,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } if (!cancelledHolder.value) { - const defendingSidePlayField = this.isPlayer() ? this.scene.getPlayerField() : this.scene.getEnemyField(); + const defendingSidePlayField = this.isPlayer() ? globalScene.getPlayerField() : globalScene.getEnemyField(); defendingSidePlayField.forEach((p) => applyPreDefendAbAttrs(FieldPriorityMoveImmunityAbAttr, p, source, move, cancelledHolder)); } } @@ -1703,7 +1715,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { return this.isTerastallized() ? 2 : 1; } const types = this.getTypes(true, true); - const arena = this.scene.arena; + const arena = globalScene.arena; // Handle flying v ground type immunity without removing flying type so effective types are still effective // Related to https://github.com/pagefaultgames/pokerogue/issues/524 @@ -1716,7 +1728,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { let multiplier = types.map(defType => { const multiplier = new Utils.NumberHolder(getTypeDamageMultiplier(moveType, defType)); - applyChallenges(this.scene.gameMode, ChallengeType.TYPE_EFFECTIVENESS, multiplier); + applyChallenges(globalScene.gameMode, ChallengeType.TYPE_EFFECTIVENESS, multiplier); if (move) { applyMoveAttrs(VariableMoveTypeChartAttr, null, this, move, multiplier, defType); } @@ -1742,12 +1754,12 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { }).reduce((acc, cur) => acc * cur, 1) as TypeDamageMultiplier; const typeMultiplierAgainstFlying = new Utils.NumberHolder(getTypeDamageMultiplier(moveType, Type.FLYING)); - applyChallenges(this.scene.gameMode, ChallengeType.TYPE_EFFECTIVENESS, typeMultiplierAgainstFlying); + applyChallenges(globalScene.gameMode, ChallengeType.TYPE_EFFECTIVENESS, typeMultiplierAgainstFlying); // Handle strong winds lowering effectiveness of types super effective against pure flying - if (!ignoreStrongWinds && arena.weather?.weatherType === WeatherType.STRONG_WINDS && !arena.weather.isEffectSuppressed(this.scene) && this.isOfType(Type.FLYING) && typeMultiplierAgainstFlying.value === 2) { + if (!ignoreStrongWinds && arena.weather?.weatherType === WeatherType.STRONG_WINDS && !arena.weather.isEffectSuppressed() && this.isOfType(Type.FLYING) && typeMultiplierAgainstFlying.value === 2) { multiplier /= 2; if (!simulated) { - this.scene.queueMessage(i18next.t("weather:strongWindsEffectMessage")); + globalScene.queueMessage(i18next.t("weather:strongWindsEffectMessage")); } } return multiplier as TypeDamageMultiplier; @@ -1944,23 +1956,23 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { */ trySetShiny(thresholdOverride?: integer): boolean { // Shiny Pokemon should not spawn in the end biome in endless - if (this.scene.gameMode.isEndless && this.scene.arena.biomeType === Biome.END) { + if (globalScene.gameMode.isEndless && globalScene.arena.biomeType === Biome.END) { return false; } const rand1 = (this.id & 0xFFFF0000) >>> 16; const rand2 = (this.id & 0x0000FFFF); - const E = this.scene.gameData.trainerId ^ this.scene.gameData.secretId; + const E = globalScene.gameData.trainerId ^ globalScene.gameData.secretId; const F = rand1 ^ rand2; const shinyThreshold = new Utils.IntegerHolder(BASE_SHINY_CHANCE); if (thresholdOverride === undefined) { - if (this.scene.eventManager.isEventActive()) { - shinyThreshold.value *= this.scene.eventManager.getShinyMultiplier(); + if (globalScene.eventManager.isEventActive()) { + shinyThreshold.value *= globalScene.eventManager.getShinyMultiplier(); } if (!this.hasTrainer()) { - this.scene.applyModifiers(ShinyRateBoosterModifier, true, shinyThreshold); + globalScene.applyModifiers(ShinyRateBoosterModifier, true, shinyThreshold); } } else { shinyThreshold.value = thresholdOverride; @@ -1991,11 +2003,11 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (thresholdOverride !== undefined && applyModifiersToOverride) { shinyThreshold.value = thresholdOverride; } - if (this.scene.eventManager.isEventActive()) { - shinyThreshold.value *= this.scene.eventManager.getShinyMultiplier(); + if (globalScene.eventManager.isEventActive()) { + shinyThreshold.value *= globalScene.eventManager.getShinyMultiplier(); } if (!this.hasTrainer()) { - this.scene.applyModifiers(ShinyRateBoosterModifier, true, shinyThreshold); + globalScene.applyModifiers(ShinyRateBoosterModifier, true, shinyThreshold); } } else { shinyThreshold.value = thresholdOverride; @@ -2033,9 +2045,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { return 0; } const rand = new Utils.NumberHolder(0); - this.scene.executeWithSeedOffset(() => { + globalScene.executeWithSeedOffset(() => { rand.value = Utils.randSeedInt(10); - }, this.id, this.scene.waveSeed); + }, this.id, globalScene.waveSeed); if (rand.value >= SHINY_VARIANT_CHANCE) { return 0; // 6/10 } else if (rand.value >= SHINY_EPIC_CHANCE) { @@ -2048,7 +2060,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { public generateFusionSpecies(forStarter?: boolean): void { const hiddenAbilityChance = new Utils.NumberHolder(BASE_HIDDEN_ABILITY_CHANCE); if (!this.hasTrainer()) { - this.scene.applyModifiers(HiddenAbilityRateBoosterModifier, true, hiddenAbilityChance); + globalScene.applyModifiers(HiddenAbilityRateBoosterModifier, true, hiddenAbilityChance); } const hasHiddenAbility = !Utils.randSeedInt(hiddenAbilityChance.value); @@ -2075,7 +2087,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { fusionOverride = getPokemonSpecies(Overrides.OPP_FUSION_SPECIES_OVERRIDE); } - this.fusionSpecies = fusionOverride ?? this.scene.randomSpecies(this.scene.currentBattle?.waveIndex || 0, this.level, false, filter, true); + this.fusionSpecies = fusionOverride ?? globalScene.randomSpecies(globalScene.currentBattle?.waveIndex || 0, this.level, false, filter, true); this.fusionAbilityIndex = (this.fusionSpecies.abilityHidden && hasHiddenAbility ? 2 : this.fusionSpecies.ability2 !== this.fusionSpecies.ability1 ? randAbilityIndex : 0); this.fusionShiny = this.shiny; this.fusionVariant = this.variant; @@ -2091,7 +2103,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } } - this.fusionFormIndex = this.scene.getSpeciesFormIndex(this.fusionSpecies, this.fusionGender, this.getNature(), true); + this.fusionFormIndex = globalScene.getSpeciesFormIndex(this.fusionSpecies, this.fusionGender, this.getNature(), true); this.fusionLuck = this.luck; this.generateName(); @@ -2292,8 +2304,8 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } // Trigger FormChange, except for enemy Pokemon during Mystery Encounters, to avoid crashes - if (this.isPlayer() || !this.scene.currentBattle?.isBattleMysteryEncounter() || !this.scene.currentBattle?.mysteryEncounter) { - this.scene.triggerPokemonFormChange(this, SpeciesFormChangeMoveLearnedTrigger); + if (this.isPlayer() || !globalScene.currentBattle?.isBattleMysteryEncounter() || !globalScene.currentBattle?.mysteryEncounter) { + globalScene.triggerPokemonFormChange(this, SpeciesFormChangeMoveLearnedTrigger); } } @@ -2306,19 +2318,19 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { showInfo(): void { if (!this.battleInfo.visible) { - const otherBattleInfo = this.scene.fieldUI.getAll().slice(0, 4).filter(ui => ui instanceof BattleInfo && ((ui as BattleInfo) instanceof PlayerBattleInfo) === this.isPlayer()).find(() => true); + const otherBattleInfo = globalScene.fieldUI.getAll().slice(0, 4).filter(ui => ui instanceof BattleInfo && ((ui as BattleInfo) instanceof PlayerBattleInfo) === this.isPlayer()).find(() => true); if (!otherBattleInfo || !this.getFieldIndex()) { - this.scene.fieldUI.sendToBack(this.battleInfo); - this.scene.sendTextToBack(); // Push the top right text objects behind everything else + globalScene.fieldUI.sendToBack(this.battleInfo); + globalScene.sendTextToBack(); // Push the top right text objects behind everything else } else { - this.scene.fieldUI.moveAbove(this.battleInfo, otherBattleInfo); + globalScene.fieldUI.moveAbove(this.battleInfo, otherBattleInfo); } this.battleInfo.setX(this.battleInfo.x + (this.isPlayer() ? 150 : !this.isBoss() ? -150 : -198)); this.battleInfo.setVisible(true); if (this.isPlayer()) { this.battleInfo.expMaskRect.x += 150; } - this.scene.tweens.add({ + globalScene.tweens.add({ targets: [ this.battleInfo, this.battleInfo.expMaskRect ], x: this.isPlayer() ? "-=150" : `+=${!this.isBoss() ? 150 : 246}`, duration: 1000, @@ -2330,7 +2342,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { hideInfo(): Promise { return new Promise(resolve => { if (this.battleInfo && this.battleInfo.visible) { - this.scene.tweens.add({ + globalScene.tweens.add({ targets: [ this.battleInfo, this.battleInfo.expMaskRect ], x: this.isPlayer() ? "+=150" : `-=${!this.isBoss() ? 150 : 246}`, duration: 500, @@ -2379,7 +2391,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } addExp(exp: integer) { - const maxExpLevel = this.scene.getMaxExpLevel(); + const maxExpLevel = globalScene.getMaxExpLevel(); const initialExp = this.exp; this.exp += exp; while (this.level < maxExpLevel && this.exp >= getLevelTotalExp(this.level + 1, this.species.growthRate)) { @@ -2410,7 +2422,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } getOpponents(): Pokemon[] { - return ((this.isPlayer() ? this.scene.getEnemyField() : this.scene.getPlayerField()) as Pokemon[]).filter(p => p.isActive()); + return ((this.isPlayer() ? globalScene.getEnemyField() : globalScene.getPlayerField()) as Pokemon[]).filter(p => p.isActive()); } getOpponentDescriptor(): string { @@ -2422,7 +2434,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } getAlly(): Pokemon { - return (this.isPlayer() ? this.scene.getPlayerField() : this.scene.getEnemyField())[this.getFieldIndex() ? 0 : 1]; + return (this.isPlayer() ? globalScene.getPlayerField() : globalScene.getEnemyField())[this.getFieldIndex() ? 0 : 1]; } /** @@ -2431,7 +2443,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * @returns An array of Pokémon on the allied field. */ getAlliedField(): Pokemon[] { - return this instanceof PlayerPokemon ? this.scene.getPlayerField() : this.scene.getEnemyField(); + return this instanceof PlayerPokemon ? globalScene.getPlayerField() : globalScene.getEnemyField(); } /** @@ -2474,7 +2486,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (!ignoreStatStage.value) { const statStageMultiplier = new Utils.NumberHolder(Math.max(2, 2 + statStage.value) / Math.max(2, 2 - statStage.value)); - this.scene.applyModifiers(TempStatStageBoosterModifier, this.isPlayer(), stat, statStageMultiplier); + globalScene.applyModifiers(TempStatStageBoosterModifier, this.isPlayer(), stat, statStageMultiplier); return Math.min(statStageMultiplier.value, 4); } return 1; @@ -2506,7 +2518,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { applyAbAttrs(IgnoreOpponentStatStagesAbAttr, this, null, false, Stat.EVA, ignoreEvaStatStage); applyMoveAttrs(IgnoreOpponentStatStagesAttr, this, target, sourceMove, ignoreEvaStatStage); - this.scene.applyModifiers(TempStatStageBoosterModifier, this.isPlayer(), Stat.ACC, userAccStage); + globalScene.applyModifiers(TempStatStageBoosterModifier, this.isPlayer(), Stat.ACC, userAccStage); userAccStage.value = ignoreAccStatStage.value ? 0 : Math.min(userAccStage.value, 6); targetEvaStage.value = ignoreEvaStatStage.value ? 0 : targetEvaStage.value; @@ -2618,7 +2630,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { const isPhysical = moveCategory === MoveCategory.PHYSICAL; /** Combined damage multiplier from field effects such as weather, terrain, etc. */ - const arenaAttackTypeMultiplier = new Utils.NumberHolder(this.scene.arena.getAttackTypeMultiplier(moveType, source.isGrounded())); + const arenaAttackTypeMultiplier = new Utils.NumberHolder(globalScene.arena.getAttackTypeMultiplier(moveType, source.isGrounded())); applyMoveAttrs(IgnoreWeatherTypeDebuffAttr, source, this, move, arenaAttackTypeMultiplier); const isTypeImmune = (typeMultiplier * arenaAttackTypeMultiplier.value) === 0; @@ -2636,7 +2648,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { applyMoveAttrs(FixedDamageAttr, source, this, move, fixedDamage); if (fixedDamage.value) { const multiLensMultiplier = new Utils.NumberHolder(1); - source.scene.applyModifiers(PokemonMultiHitModifier, source.isPlayer(), source, move.id, null, multiLensMultiplier); + globalScene.applyModifiers(PokemonMultiHitModifier, source.isPlayer(), source, move.id, null, multiLensMultiplier); fixedDamage.value = Utils.toDmgValue(fixedDamage.value * multiLensMultiplier.value); return { @@ -2670,7 +2682,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { /** Multiplier for moves enhanced by Multi-Lens and/or Parental Bond */ const multiStrikeEnhancementMultiplier = new Utils.NumberHolder(1); - source.scene.applyModifiers(PokemonMultiHitModifier, source.isPlayer(), source, move.id, null, multiStrikeEnhancementMultiplier); + globalScene.applyModifiers(PokemonMultiHitModifier, source.isPlayer(), source, move.id, null, multiStrikeEnhancementMultiplier); if (!ignoreSourceAbility) { applyPreAttackAbAttrs(AddSecondStrikeAbAttr, source, this, move, simulated, null, multiStrikeEnhancementMultiplier); } @@ -2726,7 +2738,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { /** Reduces damage if this Pokemon has a relevant screen (e.g. Light Screen for special attacks) */ const screenMultiplier = new Utils.NumberHolder(1); - this.scene.arena.applyTagsForSide(WeakenMoveScreenTag, defendingSide, simulated, source, moveCategory, screenMultiplier); + globalScene.arena.applyTagsForSide(WeakenMoveScreenTag, defendingSide, simulated, source, moveCategory, screenMultiplier); /** * For each {@linkcode HitsTagAttr} the move has, doubles the damage of the move if: @@ -2742,7 +2754,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { }); /** Halves damage if this Pokemon is grounded in Misty Terrain against a Dragon-type attack */ - const mistyTerrainMultiplier = (this.scene.arena.terrain?.terrainType === TerrainType.MISTY && this.isGrounded() && moveType === Type.DRAGON) + const mistyTerrainMultiplier = (globalScene.arena.terrain?.terrainType === TerrainType.MISTY && this.isGrounded() && moveType === Type.DRAGON) ? 0.5 : 1; @@ -2769,10 +2781,10 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { /** Apply the enemy's Damage and Resistance tokens */ if (!source.isPlayer()) { - this.scene.applyModifiers(EnemyDamageBoosterModifier, false, damage); + globalScene.applyModifiers(EnemyDamageBoosterModifier, false, damage); } if (!this.isPlayer()) { - this.scene.applyModifiers(EnemyDamageReducerModifier, false, damage); + globalScene.applyModifiers(EnemyDamageReducerModifier, false, damage); } @@ -2781,7 +2793,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { applyPreDefendAbAttrs(ReceivedMoveDamageMultiplierAbAttr, this, source, move, cancelled, simulated, damage); /** Additionally apply friend guard damage reduction if ally has it. */ - if (this.scene.currentBattle.double && this.getAlly()?.isActive(true)) { + if (globalScene.currentBattle.double && this.getAlly()?.isActive(true)) { applyPreDefendAbAttrs(AlliedFieldDamageReductionAbAttr, this.getAlly(), source, move, cancelled, simulated, damage); } } @@ -2829,7 +2841,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { const typeMultiplier = this.getMoveEffectiveness(source, move, false, false, cancelled); if (!cancelled.value && typeMultiplier === 0) { - this.scene.queueMessage(i18next.t("battle:hitResultNoEffect", { pokemonName: getPokemonNameWithAffix(this) })); + globalScene.queueMessage(i18next.t("battle:hitResultNoEffect", { pokemonName: getPokemonNameWithAffix(this) })); } return (typeMultiplier === 0) ? HitResult.NO_EFFECT : HitResult.STATUS; } else { @@ -2843,10 +2855,10 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { isCritical = true; } else { const critChance = [ 24, 8, 2, 1 ][Math.max(0, Math.min(this.getCritStage(source, move), 3))]; - isCritical = critChance === 1 || !this.scene.randBattleSeedInt(critChance); + isCritical = critChance === 1 || !globalScene.randBattleSeedInt(critChance); } - const noCritTag = this.scene.arena.getTagOnSide(NoCritTag, defendingSide); + const noCritTag = globalScene.arena.getTagOnSide(NoCritTag, defendingSide); const blockCrit = new Utils.BooleanHolder(false); applyAbAttrs(BlockCritAbAttr, this, null, false, blockCrit); if (noCritTag || blockCrit.value || Overrides.NEVER_CRIT_OVERRIDE) { @@ -2865,9 +2877,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (!cancelled) { if (result === HitResult.IMMUNE) { - this.scene.queueMessage(i18next.t("battle:hitResultImmune", { pokemonName: getPokemonNameWithAffix(this) })); + globalScene.queueMessage(i18next.t("battle:hitResultImmune", { pokemonName: getPokemonNameWithAffix(this) })); } else { - this.scene.queueMessage(i18next.t("battle:hitResultNoEffect", { pokemonName: getPokemonNameWithAffix(this) })); + globalScene.queueMessage(i18next.t("battle:hitResultNoEffect", { pokemonName: getPokemonNameWithAffix(this) })); } } return result; @@ -2888,7 +2900,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { substitute.hp -= dmg; } if (!this.isPlayer() && dmg >= this.hp) { - this.scene.applyModifiers(EnemyEndureChanceModifier, false, this); + globalScene.applyModifiers(EnemyEndureChanceModifier, false, this); } /** @@ -2899,9 +2911,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (damage > 0) { if (source.isPlayer()) { - this.scene.validateAchvs(DamageAchv, new Utils.NumberHolder(damage)); - if (damage > this.scene.gameData.gameStats.highestDamage) { - this.scene.gameData.gameStats.highestDamage = damage; + globalScene.validateAchvs(DamageAchv, new Utils.NumberHolder(damage)); + if (damage > globalScene.gameData.gameStats.highestDamage) { + globalScene.gameData.gameStats.highestDamage = damage; } } source.turnData.totalDamageDealt += damage; @@ -2912,34 +2924,34 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { const attackResult = { move: move.id, result: result as DamageResult, damage: damage, critical: isCritical, sourceId: source.id, sourceBattlerIndex: source.getBattlerIndex() }; this.turnData.attacksReceived.unshift(attackResult); if (source.isPlayer() && !this.isPlayer()) { - this.scene.applyModifiers(DamageMoneyRewardModifier, true, source, new Utils.NumberHolder(damage)); + globalScene.applyModifiers(DamageMoneyRewardModifier, true, source, new Utils.NumberHolder(damage)); } } } if (isCritical) { - this.scene.queueMessage(i18next.t("battle:hitResultCriticalHit")); + globalScene.queueMessage(i18next.t("battle:hitResultCriticalHit")); } // want to include is.Fainted() in case multi hit move ends early, still want to render message if (source.turnData.hitsLeft === 1 || this.isFainted()) { switch (result) { case HitResult.SUPER_EFFECTIVE: - this.scene.queueMessage(i18next.t("battle:hitResultSuperEffective")); + globalScene.queueMessage(i18next.t("battle:hitResultSuperEffective")); break; case HitResult.NOT_VERY_EFFECTIVE: - this.scene.queueMessage(i18next.t("battle:hitResultNotVeryEffective")); + globalScene.queueMessage(i18next.t("battle:hitResultNotVeryEffective")); break; case HitResult.ONE_HIT_KO: - this.scene.queueMessage(i18next.t("battle:hitResultOneHitKO")); + globalScene.queueMessage(i18next.t("battle:hitResultOneHitKO")); break; } } if (this.isFainted()) { // set splice index here, so future scene queues happen before FaintedPhase - this.scene.setPhaseQueueSplice(); - this.scene.unshiftPhase(new FaintPhase(this.scene, this.getBattlerIndex(), isOneHitKo, destinyTag, grudgeTag, source)); + globalScene.setPhaseQueueSplice(); + globalScene.unshiftPhase(new FaintPhase(this.getBattlerIndex(), isOneHitKo, destinyTag, grudgeTag, source)); this.destroySubstitute(); this.lapseTag(BattlerTagType.COMMANDED); @@ -2973,7 +2985,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { surviveDamage.value = this.lapseTag(BattlerTagType.ENDURE_TOKEN); } if (!surviveDamage.value) { - this.scene.applyModifiers(SurviveDamageModifier, this.isPlayer(), this, surviveDamage); + globalScene.applyModifiers(SurviveDamageModifier, this.isPlayer(), this, surviveDamage); } if (surviveDamage.value) { damage = this.hp - 1; @@ -2990,8 +3002,8 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * * Once the MoveEffectPhase is over (and calls it's .end() function, shiftPhase() will reset the PhaseQueueSplice via clearPhaseQueueSplice() ) */ - this.scene.setPhaseQueueSplice(); - this.scene.unshiftPhase(new FaintPhase(this.scene, this.getBattlerIndex(), preventEndure)); + globalScene.setPhaseQueueSplice(); + globalScene.unshiftPhase(new FaintPhase(this.getBattlerIndex(), preventEndure)); this.destroySubstitute(); this.lapseTag(BattlerTagType.COMMANDED); this.resetSummonData(); @@ -3010,8 +3022,8 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * @returns integer of damage done */ damageAndUpdate(damage: number, result?: DamageResult, critical: boolean = false, ignoreSegments: boolean = false, preventEndure: boolean = false, ignoreFaintPhase: boolean = false, source?: Pokemon): number { - const damagePhase = new DamageAnimPhase(this.scene, this.getBattlerIndex(), damage, result as DamageResult, critical); - this.scene.unshiftPhase(damagePhase); + const damagePhase = new DamageAnimPhase(this.getBattlerIndex(), damage, result as DamageResult, critical); + globalScene.unshiftPhase(damagePhase); if (this.switchOutStatus && source) { damage = 0; } @@ -3186,7 +3198,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { for (const s of BATTLE_STATS) { const sourceStage = source.getStatStage(s); if ((this instanceof PlayerPokemon) && (sourceStage === 6)) { - this.scene.validateAchv(achvs.TRANSFER_MAX_STAT_STAGE); + globalScene.validateAchv(achvs.TRANSFER_MAX_STAT_STAGE); } this.setStatStage(s, sourceStage); } @@ -3265,7 +3277,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (!this.isOnField()) { return; } - turnMove.turn = this.scene.currentBattle?.turn; + turnMove.turn = globalScene.currentBattle?.turn; this.getMoveHistory().push(turnMove); } @@ -3295,7 +3307,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * @param {Pokemon} target If specified, this only cancels subsequent strikes against the given target */ stopMultiHit(target?: Pokemon): void { - const effectPhase = this.scene.getCurrentPhase(); + const effectPhase = globalScene.getCurrentPhase(); if (effectPhase instanceof MoveEffectPhase && effectPhase.getUserPokemon() === this) { effectPhase.stopMultiHit(target); } @@ -3309,28 +3321,28 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (this.abilityIndex >= abilityCount) {// Shouldn't happen this.abilityIndex = abilityCount - 1; } - this.scene.gameData.setPokemonSeen(this, false); + globalScene.gameData.setPokemonSeen(this, false); this.setScale(this.getSpriteScale()); this.loadAssets().then(() => { this.calculateStats(); - this.scene.updateModifiers(this.isPlayer(), true); - Promise.all([ this.updateInfo(), this.scene.updateFieldScale() ]).then(() => resolve()); + globalScene.updateModifiers(this.isPlayer(), true); + Promise.all([ this.updateInfo(), globalScene.updateFieldScale() ]).then(() => resolve()); }); }); } cry(soundConfig?: Phaser.Types.Sound.SoundConfig, sceneOverride?: BattleScene): AnySound { - const scene = sceneOverride || this.scene; - const cry = this.getSpeciesForm().cry(scene, soundConfig); + const scene = sceneOverride ?? globalScene; // TODO: is `sceneOverride` needed? + const cry = this.getSpeciesForm().cry(soundConfig); let duration = cry.totalDuration * 1000; if (this.fusionSpecies && this.getSpeciesForm() !== this.getFusionSpeciesForm()) { - let fusionCry = this.getFusionSpeciesForm().cry(scene, soundConfig, true); + let fusionCry = this.getFusionSpeciesForm().cry(soundConfig, true); duration = Math.min(duration, fusionCry.totalDuration * 1000); fusionCry.destroy(); scene.time.delayedCall(Utils.fixedInt(Math.ceil(duration * 0.4)), () => { try { SoundFade.fadeOut(scene, cry, Utils.fixedInt(Math.ceil(duration * 0.2))); - fusionCry = this.getFusionSpeciesForm().cry(scene, Object.assign({ seek: Math.max(fusionCry.totalDuration * 0.4, 0) }, soundConfig)); + fusionCry = this.getFusionSpeciesForm().cry(Object.assign({ seek: Math.max(fusionCry.totalDuration * 0.4, 0) }, soundConfig)); SoundFade.fadeIn(scene, fusionCry, Utils.fixedInt(Math.ceil(duration * 0.2)), scene.masterVolume * scene.fieldVolume, 0); } catch (err) { console.error(err); @@ -3348,13 +3360,13 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { const key = this.species.getCryKey(this.formIndex); let rate = 0.85; - const cry = this.scene.playSound(key, { rate: rate }) as AnySound; - if (!cry || this.scene.fieldVolume === 0) { + const cry = globalScene.playSound(key, { rate: rate }) as AnySound; + if (!cry || globalScene.fieldVolume === 0) { return callback(); } const sprite = this.getSprite(); const tintSprite = this.getTintSprite(); - const delay = Math.max(this.scene.sound.get(key).totalDuration * 50, 25); + const delay = Math.max(globalScene.sound.get(key).totalDuration * 50, 25); let frameProgress = 0; let frameThreshold: number; @@ -3362,7 +3374,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { sprite.anims.pause(); tintSprite?.anims.pause(); - let faintCryTimer : Phaser.Time.TimerEvent | null = this.scene.time.addEvent({ + let faintCryTimer : Phaser.Time.TimerEvent | null = globalScene.time.addEvent({ delay: Utils.fixedInt(delay), repeat: -1, callback: () => { @@ -3389,8 +3401,8 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { }); // Failsafe - this.scene.time.delayedCall(Utils.fixedInt(3000), () => { - if (!faintCryTimer || !this.scene) { + globalScene.time.delayedCall(Utils.fixedInt(3000), () => { + if (!faintCryTimer || !globalScene) { return; } if (cry?.isPlaying) { @@ -3407,14 +3419,14 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { const key = this.species.getCryKey(this.formIndex); let i = 0; let rate = 0.85; - const cry = this.scene.playSound(key, { rate: rate }) as AnySound; + const cry = globalScene.playSound(key, { rate: rate }) as AnySound; const sprite = this.getSprite(); const tintSprite = this.getTintSprite(); let duration = cry.totalDuration * 1000; const fusionCryKey = this.fusionSpecies!.getCryKey(this.fusionFormIndex); - let fusionCry = this.scene.playSound(fusionCryKey, { rate: rate }) as AnySound; - if (!cry || !fusionCry || this.scene.fieldVolume === 0) { + let fusionCry = globalScene.playSound(fusionCryKey, { rate: rate }) as AnySound; + if (!cry || !fusionCry || globalScene.fieldVolume === 0) { return callback(); } fusionCry.stop(); @@ -3443,7 +3455,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { sprite.anims.pause(); tintSprite?.anims.pause(); - let faintCryTimer: Phaser.Time.TimerEvent | null = this.scene.time.addEvent({ + let faintCryTimer: Phaser.Time.TimerEvent | null = globalScene.time.addEvent({ delay: Utils.fixedInt(delay), repeat: -1, callback: () => { @@ -3458,9 +3470,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { frameProgress -= frameThreshold; } if (i === transitionIndex && fusionCryKey) { - SoundFade.fadeOut(this.scene, cry, Utils.fixedInt(Math.ceil((duration / rate) * 0.2))); - fusionCry = this.scene.playSound(fusionCryKey, Object.assign({ seek: Math.max(fusionCry.totalDuration * 0.4, 0), rate: rate })); - SoundFade.fadeIn(this.scene, fusionCry, Utils.fixedInt(Math.ceil((duration / rate) * 0.2)), this.scene.masterVolume * this.scene.fieldVolume, 0); + SoundFade.fadeOut(globalScene, cry, Utils.fixedInt(Math.ceil((duration / rate) * 0.2))); + fusionCry = globalScene.playSound(fusionCryKey, Object.assign({ seek: Math.max(fusionCry.totalDuration * 0.4, 0), rate: rate })); + SoundFade.fadeIn(globalScene, fusionCry, Utils.fixedInt(Math.ceil((duration / rate) * 0.2)), globalScene.masterVolume * globalScene.fieldVolume, 0); } rate *= 0.99; if (cry && !cry.pendingRemove) { @@ -3480,8 +3492,8 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { }); // Failsafe - this.scene.time.delayedCall(Utils.fixedInt(3000), () => { - if (!faintCryTimer || !this.scene) { + globalScene.time.delayedCall(Utils.fixedInt(3000), () => { + if (!faintCryTimer || !globalScene) { return; } if (cry?.isPlaying) { @@ -3515,7 +3527,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (overrideStatus ? this.status?.effect === effect : this.status) { return false; } - if (this.isGrounded() && (!ignoreField && this.scene.arena.terrain?.terrainType === TerrainType.MISTY)) { + if (this.isGrounded() && (!ignoreField && globalScene.arena.terrain?.terrainType === TerrainType.MISTY)) { return false; } } @@ -3560,12 +3572,12 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } break; case StatusEffect.SLEEP: - if (this.isGrounded() && this.scene.arena.terrain?.terrainType === TerrainType.ELECTRIC) { + if (this.isGrounded() && globalScene.arena.terrain?.terrainType === TerrainType.ELECTRIC) { return false; } break; case StatusEffect.FREEZE: - if (this.isOfType(Type.ICE) || (!ignoreField && (this.scene?.arena?.weather?.weatherType && [ WeatherType.SUNNY, WeatherType.HARSH_SUN ].includes(this.scene.arena.weather.weatherType)))) { + if (this.isOfType(Type.ICE) || (!ignoreField && (globalScene?.arena?.weather?.weatherType && [ WeatherType.SUNNY, WeatherType.HARSH_SUN ].includes(globalScene.arena.weather.weatherType)))) { return false; } break; @@ -3603,7 +3615,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } if (asPhase) { - this.scene.unshiftPhase(new ObtainStatusEffectPhase(this.scene, this.getBattlerIndex(), effect, turnsRemaining, sourceText, sourcePokemon)); + globalScene.unshiftPhase(new ObtainStatusEffectPhase(this.getBattlerIndex(), effect, turnsRemaining, sourceText, sourcePokemon)); return true; } @@ -3635,7 +3647,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { this.status = new Status(effect, 0, sleepTurnsRemaining?.value); if (effect !== StatusEffect.FAINT) { - this.scene.triggerPokemonFormChange(this, SpeciesFormChangeStatusEffectTrigger, true); + globalScene.triggerPokemonFormChange(this, SpeciesFormChangeStatusEffectTrigger, true); applyPostSetStatusAbAttrs(PostSetStatusAbAttr, this, effect, sourcePokemon); } @@ -3677,7 +3689,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { */ isSafeguarded(attacker: Pokemon): boolean { const defendingSide = this.isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY; - if (this.scene.arena.getTagOnSide(ArenaTagType.SAFEGUARD, defendingSide)) { + if (globalScene.arena.getTagOnSide(ArenaTagType.SAFEGUARD, defendingSide)) { const bypassed = new Utils.BooleanHolder(false); if (attacker) { applyAbAttrs(InfiltratorAbAttr, attacker, null, false, bypassed); @@ -3710,13 +3722,13 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } // If this Pokemon has a Substitute when loading in, play an animation to add its sprite if (this.getTag(SubstituteTag)) { - this.scene.triggerPokemonBattleAnim(this, PokemonAnimType.SUBSTITUTE_ADD); + globalScene.triggerPokemonBattleAnim(this, PokemonAnimType.SUBSTITUTE_ADD); this.getTag(SubstituteTag)!.sourceInFocus = false; } // If this Pokemon has Commander and Dondozo as an active ally, hide this Pokemon's sprite. if (this.hasAbilityWithAttr(CommanderAbAttr) - && this.scene.currentBattle.double + && globalScene.currentBattle.double && this.getAlly()?.species.speciesId === Species.DONDOZO) { this.setVisible(false); } @@ -3734,8 +3746,8 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (this.getTag(BattlerTagType.SEEDED)) { this.lapseTag(BattlerTagType.SEEDED); } - if (this.scene) { - this.scene.triggerPokemonFormChange(this, SpeciesFormChangePostMoveTrigger, true); + if (globalScene) { + globalScene.triggerPokemonFormChange(this, SpeciesFormChangePostMoveTrigger, true); } } @@ -3749,7 +3761,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } setFrameRate(frameRate: integer) { - this.scene.anims.get(this.getBattleSpriteKey()).frameRate = frameRate; + globalScene.anims.get(this.getBattleSpriteKey()).frameRate = frameRate; try { this.getSprite().play(this.getBattleSpriteKey()); } catch (err: unknown) { @@ -3770,7 +3782,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (duration) { tintSprite?.setAlpha(0); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: tintSprite, alpha: alpha || 1, duration: duration, @@ -3785,7 +3797,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { const tintSprite = this.getTintSprite(); if (duration) { - this.scene.tweens.add({ + globalScene.tweens.add({ targets: tintSprite, alpha: 0, duration: duration, @@ -3824,7 +3836,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { sparkle(): void { if (this.shinySparkle) { - doShinySparkleAnim(this.scene, this.shinySparkle, this.variant); + doShinySparkleAnim(this.shinySparkle, this.variant); } } @@ -3845,10 +3857,10 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { const fusionSpriteKey = fusionSpeciesForm.getSpriteKey(this.getFusionGender(ignoreOveride) === Gender.FEMALE, fusionSpeciesForm.formIndex, this.fusionShiny, this.fusionVariant); const fusionBackSpriteKey = fusionSpeciesForm.getSpriteKey(this.getFusionGender(ignoreOveride) === Gender.FEMALE, fusionSpeciesForm.formIndex, this.fusionShiny, this.fusionVariant).replace("pkmn__", "pkmn__back__"); - const sourceTexture = this.scene.textures.get(spriteKey); - const sourceBackTexture = this.scene.textures.get(backSpriteKey); - const fusionTexture = this.scene.textures.get(fusionSpriteKey); - const fusionBackTexture = this.scene.textures.get(fusionBackSpriteKey); + const sourceTexture = globalScene.textures.get(spriteKey); + const sourceBackTexture = globalScene.textures.get(backSpriteKey); + const fusionTexture = globalScene.textures.get(fusionSpriteKey); + const fusionBackTexture = globalScene.textures.get(fusionBackSpriteKey); const [ sourceFrame, sourceBackFrame, fusionFrame, fusionBackFrame ] = [ sourceTexture, sourceBackTexture, fusionTexture, fusionBackTexture ].map(texture => texture.frames[texture.firstFrame]); const [ sourceImage, sourceBackImage, fusionImage, fusionBackImage ] = [ sourceTexture, sourceBackTexture, fusionTexture, fusionBackTexture ].map(i => i.getSourceImage() as HTMLImageElement); @@ -3950,7 +3962,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { const originalRandom = Math.random; Math.random = () => Phaser.Math.RND.realInRange(0, 1); - this.scene.executeWithSeedOffset(() => { + globalScene.executeWithSeedOffset(() => { paletteColors = QuantizerCelebi.quantize(pixelColors, 4); fusionPaletteColors = QuantizerCelebi.quantize(fusionPixelColors, 4); }, 0, "This result should not vary"); @@ -4071,10 +4083,10 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } /** - * Generates a random number using the current battle's seed, or the global seed if `this.scene.currentBattle` is falsy + * Generates a random number using the current battle's seed, or the global seed if `globalScene.currentBattle` is falsy * * This calls either {@linkcode BattleScene.randBattleSeedInt}({@linkcode range}, {@linkcode min}) in `src/battle-scene.ts` - * which calls {@linkcode Battle.randSeedInt}(`scene`, {@linkcode range}, {@linkcode min}) in `src/battle.ts` + * which calls {@linkcode Battle.randSeedInt}({@linkcode range}, {@linkcode min}) in `src/battle.ts` * which calls {@linkcode Utils.randSeedInt randSeedInt}({@linkcode range}, {@linkcode min}) in `src/utils.ts`, * or it directly calls {@linkcode Utils.randSeedInt randSeedInt}({@linkcode range}, {@linkcode min}) in `src/utils.ts` if there is no current battle * @@ -4083,13 +4095,13 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * @returns A random integer between {@linkcode min} and ({@linkcode min} + {@linkcode range} - 1) */ randSeedInt(range: integer, min: integer = 0): integer { - return this.scene.currentBattle - ? this.scene.randBattleSeedInt(range, min) + return globalScene.currentBattle + ? globalScene.randBattleSeedInt(range, min) : Utils.randSeedInt(range, min); } /** - * Generates a random number using the current battle's seed, or the global seed if `this.scene.currentBattle` is falsy + * Generates a random number using the current battle's seed, or the global seed if `globalScene.currentBattle` is falsy * @param min The minimum integer to generate * @param max The maximum integer to generate * @returns a random integer between {@linkcode min} and {@linkcode max} inclusive @@ -4115,9 +4127,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (hideInfo) { this.hideInfo(); } - this.scene.field.remove(this); + globalScene.field.remove(this); this.setSwitchOutStatus(true); - this.scene.triggerPokemonFormChange(this, SpeciesFormChangeActiveTrigger, true); + globalScene.triggerPokemonFormChange(this, SpeciesFormChangeActiveTrigger, true); } destroy(): void { @@ -4171,7 +4183,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (heldItem.pokemonId === -1 || heldItem.pokemonId === this.id) { heldItem.stackCount--; if (heldItem.stackCount <= 0) { - this.scene.removeModifier(heldItem, !this.isPlayer()); + globalScene.removeModifier(heldItem, !this.isPlayer()); } if (forBattle) { applyPostItemLostAbAttrs(PostItemLostAbAttr, this, false); @@ -4183,15 +4195,11 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } } -export default interface Pokemon { - scene: BattleScene -} - export class PlayerPokemon extends Pokemon { public compatibleTms: Moves[]; - constructor(scene: BattleScene, species: PokemonSpecies, level: integer, abilityIndex?: integer, formIndex?: integer, gender?: Gender, shiny?: boolean, variant?: Variant, ivs?: integer[], nature?: Nature, dataSource?: Pokemon | PokemonData) { - super(scene, 106, 148, species, level, abilityIndex, formIndex, gender, shiny, variant, ivs, nature, dataSource); + constructor(species: PokemonSpecies, level: integer, abilityIndex?: integer, formIndex?: integer, gender?: Gender, shiny?: boolean, variant?: Variant, ivs?: integer[], nature?: Nature, dataSource?: Pokemon | PokemonData) { + super(106, 148, species, level, abilityIndex, formIndex, gender, shiny, variant, ivs, nature, dataSource); if (Overrides.STATUS_OVERRIDE) { this.status = new Status(Overrides.STATUS_OVERRIDE, 0, 4); @@ -4209,7 +4217,7 @@ export class PlayerPokemon extends Pokemon { } if (!dataSource) { - if (this.scene.gameMode.isDaily) { + if (globalScene.gameMode.isDaily) { this.generateAndPopulateMoveset(); } else { this.moveset = []; @@ -4219,7 +4227,7 @@ export class PlayerPokemon extends Pokemon { } initBattleInfo(): void { - this.battleInfo = new PlayerBattleInfo(this.scene); + this.battleInfo = new PlayerBattleInfo(); this.battleInfo.initInfo(this); } @@ -4236,7 +4244,7 @@ export class PlayerPokemon extends Pokemon { } getFieldIndex(): integer { - return this.scene.getPlayerField().indexOf(this); + return globalScene.getPlayerField().indexOf(this); } getBattlerIndex(): BattlerIndex { @@ -4272,7 +4280,7 @@ export class PlayerPokemon extends Pokemon { } tryPopulateMoveset(moveset: StarterMoveset): boolean { - if (!this.getSpeciesForm().validateStarterMoveset(moveset, this.scene.gameData.starterData[this.species.getRootSpeciesId()].eggMoves)) { + if (!this.getSpeciesForm().validateStarterMoveset(moveset, globalScene.gameData.starterData[this.species.getRootSpeciesId()].eggMoves)) { return false; } @@ -4292,11 +4300,11 @@ export class PlayerPokemon extends Pokemon { return new Promise(resolve => { this.leaveField(switchType === SwitchType.SWITCH); - this.scene.ui.setMode(Mode.PARTY, PartyUiMode.FAINT_SWITCH, this.getFieldIndex(), (slotIndex: integer, option: PartyOption) => { - if (slotIndex >= this.scene.currentBattle.getBattlerCount() && slotIndex < 6) { - this.scene.prependToPhase(new SwitchSummonPhase(this.scene, switchType, this.getFieldIndex(), slotIndex, false), MoveEndPhase); + globalScene.ui.setMode(Mode.PARTY, PartyUiMode.FAINT_SWITCH, this.getFieldIndex(), (slotIndex: integer, option: PartyOption) => { + if (slotIndex >= globalScene.currentBattle.getBattlerCount() && slotIndex < 6) { + globalScene.prependToPhase(new SwitchSummonPhase(switchType, this.getFieldIndex(), slotIndex, false), MoveEndPhase); } - this.scene.ui.setMode(Mode.MESSAGE).then(resolve); + globalScene.ui.setMode(Mode.MESSAGE).then(resolve); }, PartyUiHandler.FilterNonFainted); }); } @@ -4306,28 +4314,28 @@ export class PlayerPokemon extends Pokemon { const starterSpeciesId = this.species.getRootSpeciesId(); const fusionStarterSpeciesId = this.isFusion() && this.fusionSpecies ? this.fusionSpecies.getRootSpeciesId() : 0; const starterData = [ - this.scene.gameData.starterData[starterSpeciesId], - fusionStarterSpeciesId ? this.scene.gameData.starterData[fusionStarterSpeciesId] : null + globalScene.gameData.starterData[starterSpeciesId], + fusionStarterSpeciesId ? globalScene.gameData.starterData[fusionStarterSpeciesId] : null ].filter(d => !!d); const amount = new Utils.NumberHolder(friendship); - this.scene.applyModifier(PokemonFriendshipBoosterModifier, true, this, amount); + globalScene.applyModifier(PokemonFriendshipBoosterModifier, true, this, amount); let candyFriendshipMultiplier = CLASSIC_CANDY_FRIENDSHIP_MULTIPLIER; - if (this.scene.eventManager.isEventActive()) { - candyFriendshipMultiplier *= this.scene.eventManager.getFriendshipMultiplier(); + if (globalScene.eventManager.isEventActive()) { + candyFriendshipMultiplier *= globalScene.eventManager.getFriendshipMultiplier(); } - const starterAmount = new Utils.NumberHolder(Math.floor(amount.value * (this.scene.gameMode.isClassic ? candyFriendshipMultiplier : 1) / (fusionStarterSpeciesId ? 2 : 1))); + const starterAmount = new Utils.NumberHolder(Math.floor(amount.value * (globalScene.gameMode.isClassic ? candyFriendshipMultiplier : 1) / (fusionStarterSpeciesId ? 2 : 1))); // Add friendship to this PlayerPokemon this.friendship = Math.min(this.friendship + amount.value, 255); if (this.friendship === 255) { - this.scene.validateAchv(achvs.MAX_FRIENDSHIP); + globalScene.validateAchv(achvs.MAX_FRIENDSHIP); } // Add to candy progress for this mon's starter species and its fused species (if it has one) starterData.forEach((sd: StarterDataEntry, i: number) => { const speciesId = !i ? starterSpeciesId : fusionStarterSpeciesId as Species; sd.friendship = (sd.friendship || 0) + starterAmount.value; if (sd.friendship >= getStarterValueFriendshipCap(speciesStarterCosts[speciesId])) { - this.scene.gameData.addStarterCandy(getPokemonSpecies(speciesId), 1); + globalScene.gameData.addStarterCandy(getPokemonSpecies(speciesId), 1); sd.friendship = 0; } }); @@ -4343,9 +4351,9 @@ export class PlayerPokemon extends Pokemon { */ revivalBlessing(): Promise { return new Promise(resolve => { - this.scene.ui.setMode(Mode.PARTY, PartyUiMode.REVIVAL_BLESSING, this.getFieldIndex(), (slotIndex:integer, option: PartyOption) => { + globalScene.ui.setMode(Mode.PARTY, PartyUiMode.REVIVAL_BLESSING, this.getFieldIndex(), (slotIndex:integer, option: PartyOption) => { if (slotIndex >= 0 && slotIndex < 6) { - const pokemon = this.scene.getPlayerParty()[slotIndex]; + const pokemon = globalScene.getPlayerParty()[slotIndex]; if (!pokemon || !pokemon.isFainted()) { resolve(); } @@ -4353,23 +4361,23 @@ export class PlayerPokemon extends Pokemon { pokemon.resetTurnData(); pokemon.resetStatus(); pokemon.heal(Math.min(Utils.toDmgValue(0.5 * pokemon.getMaxHp()), pokemon.getMaxHp())); - this.scene.queueMessage(i18next.t("moveTriggers:revivalBlessing", { pokemonName: pokemon.name }), 0, true); + globalScene.queueMessage(i18next.t("moveTriggers:revivalBlessing", { pokemonName: pokemon.name }), 0, true); - if (this.scene.currentBattle.double && this.scene.getPlayerParty().length > 1) { + if (globalScene.currentBattle.double && globalScene.getPlayerParty().length > 1) { const allyPokemon = this.getAlly(); if (slotIndex <= 1) { // Revived ally pokemon - this.scene.unshiftPhase(new SwitchSummonPhase(this.scene, SwitchType.SWITCH, pokemon.getFieldIndex(), slotIndex, false, true)); - this.scene.unshiftPhase(new ToggleDoublePositionPhase(this.scene, true)); + globalScene.unshiftPhase(new SwitchSummonPhase(SwitchType.SWITCH, pokemon.getFieldIndex(), slotIndex, false, true)); + globalScene.unshiftPhase(new ToggleDoublePositionPhase(true)); } else if (allyPokemon.isFainted()) { // Revived party pokemon, and ally pokemon is fainted - this.scene.unshiftPhase(new SwitchSummonPhase(this.scene, SwitchType.SWITCH, allyPokemon.getFieldIndex(), slotIndex, false, true)); - this.scene.unshiftPhase(new ToggleDoublePositionPhase(this.scene, true)); + globalScene.unshiftPhase(new SwitchSummonPhase(SwitchType.SWITCH, allyPokemon.getFieldIndex(), slotIndex, false, true)); + globalScene.unshiftPhase(new ToggleDoublePositionPhase(true)); } } } - this.scene.ui.setMode(Mode.MESSAGE).then(() => resolve()); + globalScene.ui.setMode(Mode.MESSAGE).then(() => resolve()); }, PartyUiHandler.FilterFainted); }); } @@ -4387,12 +4395,12 @@ export class PlayerPokemon extends Pokemon { const originalFusionFormIndex = this.fusionFormIndex; this.fusionSpecies = evolutionSpecies; this.fusionFormIndex = evolution.evoFormKey !== null ? Math.max(evolutionSpecies.forms.findIndex(f => f.formKey === evolution.evoFormKey), 0) : this.fusionFormIndex; - ret = this.scene.addPlayerPokemon(this.species, this.level, this.abilityIndex, this.formIndex, this.gender, this.shiny, this.variant, this.ivs, this.nature, this); + ret = globalScene.addPlayerPokemon(this.species, this.level, this.abilityIndex, this.formIndex, this.gender, this.shiny, this.variant, this.ivs, this.nature, this); this.fusionSpecies = originalFusionSpecies; this.fusionFormIndex = originalFusionFormIndex; } else { const formIndex = evolution.evoFormKey !== null && !isFusion ? Math.max(evolutionSpecies.forms.findIndex(f => f.formKey === evolution.evoFormKey), 0) : this.formIndex; - ret = this.scene.addPlayerPokemon(!isFusion ? evolutionSpecies : this.species, this.level, this.abilityIndex, formIndex, this.gender, this.shiny, this.variant, this.ivs, this.nature, this); + ret = globalScene.addPlayerPokemon(!isFusion ? evolutionSpecies : this.species, this.level, this.abilityIndex, formIndex, this.gender, this.shiny, this.variant, this.ivs, this.nature, this); } ret.loadAssets().then(() => resolve(ret)); }); @@ -4458,13 +4466,13 @@ export class PlayerPokemon extends Pokemon { if (preEvolution.speciesId === Species.GIMMIGHOUL) { const evotracker = this.getHeldItems().filter(m => m instanceof EvoTrackerModifier)[0] ?? null; if (evotracker) { - this.scene.removeModifier(evotracker); + globalScene.removeModifier(evotracker); } } - if (!this.scene.gameMode.isDaily || this.metBiome > -1) { - this.scene.gameData.updateSpeciesDexIvs(this.species.speciesId, this.ivs); - this.scene.gameData.setPokemonSeen(this, false); - this.scene.gameData.setPokemonCaught(this, false).then(() => updateAndResolve()); + if (!globalScene.gameMode.isDaily || this.metBiome > -1) { + globalScene.gameData.updateSpeciesDexIvs(this.species.speciesId, this.ivs); + globalScene.gameData.setPokemonSeen(this, false); + globalScene.gameData.setPokemonCaught(this, false).then(() => updateAndResolve()); } else { updateAndResolve(); } @@ -4479,7 +4487,7 @@ export class PlayerPokemon extends Pokemon { const newEvolution = pokemonEvolutions[evoSpecies.speciesId][1]; if (newEvolution.condition?.predicate(this)) { - const newPokemon = this.scene.addPlayerPokemon(this.species, this.level, this.abilityIndex, this.formIndex, undefined, this.shiny, this.variant, this.ivs, this.nature); + const newPokemon = globalScene.addPlayerPokemon(this.species, this.level, this.abilityIndex, this.formIndex, undefined, this.shiny, this.variant, this.ivs, this.nature); newPokemon.passive = this.passive; newPokemon.moveset = this.moveset.slice(); newPokemon.moveset = this.copyMoveset(); @@ -4498,16 +4506,16 @@ export class PlayerPokemon extends Pokemon { newPokemon.fusionLuck = this.fusionLuck; newPokemon.usedTMs = this.usedTMs; - this.scene.getPlayerParty().push(newPokemon); + globalScene.getPlayerParty().push(newPokemon); newPokemon.evolve((!isFusion ? newEvolution : new FusionSpeciesFormEvolution(this.id, newEvolution)), evoSpecies); - const modifiers = this.scene.findModifiers(m => m instanceof PokemonHeldItemModifier + const modifiers = globalScene.findModifiers(m => m instanceof PokemonHeldItemModifier && m.pokemonId === this.id, true) as PokemonHeldItemModifier[]; modifiers.forEach(m => { const clonedModifier = m.clone() as PokemonHeldItemModifier; clonedModifier.pokemonId = newPokemon.id; - this.scene.addModifier(clonedModifier, true); + globalScene.addModifier(clonedModifier, true); }); - this.scene.updateModifiers(true); + globalScene.updateModifiers(true); } } } @@ -4515,7 +4523,7 @@ export class PlayerPokemon extends Pokemon { getPossibleForm(formChange: SpeciesFormChange): Promise { return new Promise(resolve => { const formIndex = Math.max(this.species.forms.findIndex(f => f.formKey === formChange.formKey), 0); - const ret = this.scene.addPlayerPokemon(this.species, this.level, this.abilityIndex, formIndex, this.gender, this.shiny, this.variant, this.ivs, this.nature, this); + const ret = globalScene.addPlayerPokemon(this.species, this.level, this.abilityIndex, formIndex, this.gender, this.shiny, this.variant, this.ivs, this.nature, this); ret.loadAssets().then(() => resolve(ret)); }); } @@ -4554,13 +4562,13 @@ export class PlayerPokemon extends Pokemon { const updateAndResolve = () => { this.loadAssets().then(() => { this.calculateStats(); - this.scene.updateModifiers(true, true); + globalScene.updateModifiers(true, true); this.updateInfo(true).then(() => resolve()); }); }; - if (!this.scene.gameMode.isDaily || this.metBiome > -1) { - this.scene.gameData.setPokemonSeen(this, false); - this.scene.gameData.setPokemonCaught(this, false).then(() => updateAndResolve()); + if (!globalScene.gameMode.isDaily || this.metBiome > -1) { + globalScene.gameData.setPokemonSeen(this, false); + globalScene.gameData.setPokemonCaught(this, false).then(() => updateAndResolve()); } else { updateAndResolve(); } @@ -4590,8 +4598,8 @@ export class PlayerPokemon extends Pokemon { this.pauseEvolutions = true; } - this.scene.validateAchv(achvs.SPLICE); - this.scene.gameData.gameStats.pokemonFused++; + globalScene.validateAchv(achvs.SPLICE); + globalScene.gameData.gameStats.pokemonFused++; // Store the average HP% that each Pokemon has const maxHp = this.getMaxHp(); @@ -4614,23 +4622,23 @@ export class PlayerPokemon extends Pokemon { this.generateCompatibleTms(); this.updateInfo(true); - const fusedPartyMemberIndex = this.scene.getPlayerParty().indexOf(pokemon); - let partyMemberIndex = this.scene.getPlayerParty().indexOf(this); + const fusedPartyMemberIndex = globalScene.getPlayerParty().indexOf(pokemon); + let partyMemberIndex = globalScene.getPlayerParty().indexOf(this); if (partyMemberIndex > fusedPartyMemberIndex) { partyMemberIndex--; } - const fusedPartyMemberHeldModifiers = this.scene.findModifiers(m => m instanceof PokemonHeldItemModifier + const fusedPartyMemberHeldModifiers = globalScene.findModifiers(m => m instanceof PokemonHeldItemModifier && m.pokemonId === pokemon.id, true) as PokemonHeldItemModifier[]; const transferModifiers: Promise[] = []; for (const modifier of fusedPartyMemberHeldModifiers) { - transferModifiers.push(this.scene.tryTransferHeldItemModifier(modifier, this, false, modifier.getStackCount(), true, true, false)); + transferModifiers.push(globalScene.tryTransferHeldItemModifier(modifier, this, false, modifier.getStackCount(), true, true, false)); } Promise.allSettled(transferModifiers).then(() => { - this.scene.updateModifiers(true, true).then(() => { - this.scene.removePartyMemberModifiers(fusedPartyMemberIndex); - this.scene.getPlayerParty().splice(fusedPartyMemberIndex, 1)[0]; - const newPartyMemberIndex = this.scene.getPlayerParty().indexOf(this); - pokemon.getMoveset(true).map((m: PokemonMove) => this.scene.unshiftPhase(new LearnMovePhase(this.scene, newPartyMemberIndex, m.getMove().id))); + globalScene.updateModifiers(true, true).then(() => { + globalScene.removePartyMemberModifiers(fusedPartyMemberIndex); + globalScene.getPlayerParty().splice(fusedPartyMemberIndex, 1)[0]; + const newPartyMemberIndex = globalScene.getPlayerParty().indexOf(this); + pokemon.getMoveset(true).map((m: PokemonMove) => globalScene.unshiftPhase(new LearnMovePhase(newPartyMemberIndex, m.getMove().id))); pokemon.destroy(); this.updateFusionPalette(); resolve(); @@ -4670,8 +4678,8 @@ export class EnemyPokemon extends Pokemon { /** To indicate if the instance was populated with a dataSource -> e.g. loaded & populated from session data */ public readonly isPopulatedFromDataSource: boolean; - constructor(scene: BattleScene, species: PokemonSpecies, level: integer, trainerSlot: TrainerSlot, boss: boolean, shinyLock: boolean = false, dataSource?: PokemonData) { - super(scene, 236, 84, species, level, dataSource?.abilityIndex, dataSource?.formIndex, dataSource?.gender, + constructor(species: PokemonSpecies, level: integer, trainerSlot: TrainerSlot, boss: boolean, shinyLock: boolean = false, dataSource?: PokemonData) { + super(236, 84, species, level, dataSource?.abilityIndex, dataSource?.formIndex, dataSource?.gender, (!shinyLock && dataSource) ? dataSource.shiny : false, (!shinyLock && dataSource) ? dataSource.variant : undefined, undefined, dataSource ? dataSource.nature : undefined, dataSource); @@ -4738,7 +4746,7 @@ export class EnemyPokemon extends Pokemon { initBattleInfo(): void { if (!this.battleInfo) { - this.battleInfo = new EnemyBattleInfo(this.scene); + this.battleInfo = new EnemyBattleInfo(); this.battleInfo.updateBossSegments(this); this.battleInfo.initInfo(this); } else { @@ -4755,7 +4763,7 @@ export class EnemyPokemon extends Pokemon { */ setBoss(boss: boolean = true, bossSegments: integer = 0): void { if (boss) { - this.bossSegments = bossSegments || this.scene.getEncounterBossSegments(this.scene.currentBattle.waveIndex, this.level, this.species, true); + this.bossSegments = bossSegments || globalScene.getEncounterBossSegments(globalScene.currentBattle.waveIndex, this.level, this.species, true); this.bossSegmentIndex = this.bossSegments - 1; } else { this.bossSegments = 0; @@ -4787,7 +4795,7 @@ export class EnemyPokemon extends Pokemon { new PokemonMove(Moves.FLAMETHROWER), new PokemonMove(Moves.COSMIC_POWER) ]; - if (this.scene.gameMode.hasChallenge(Challenges.INVERSE_BATTLE)) { + if (globalScene.gameMode.hasChallenge(Challenges.INVERSE_BATTLE)) { this.moveset[2] = new PokemonMove(Moves.THUNDERBOLT); } break; @@ -4834,7 +4842,7 @@ export class EnemyPokemon extends Pokemon { } switch (this.aiType) { case AiType.RANDOM: // No enemy should spawn with this AI type in-game - const moveId = movePool[this.scene.randBattleSeedInt(movePool.length)]!.moveId; // TODO: is the bang correct? + const moveId = movePool[globalScene.randBattleSeedInt(movePool.length)]!.moveId; // TODO: is the bang correct? return { move: moveId, targets: this.getNextTargets(moveId) }; case AiType.SMART_RANDOM: case AiType.SMART: @@ -4853,7 +4861,7 @@ export class EnemyPokemon extends Pokemon { return false; } - const fieldPokemon = this.scene.getField(); + const fieldPokemon = globalScene.getField(); const moveTargets = getMoveTargets(this, move.id).targets .map(ind => fieldPokemon[ind]) .filter(p => this.isPlayer() !== p.isPlayer()); @@ -4891,7 +4899,7 @@ export class EnemyPokemon extends Pokemon { break; } - const target = this.scene.getField()[mt]; + const target = globalScene.getField()[mt]; /** * The "target score" of a move is given by the move's user benefit score + the move's target benefit score. * If the target is an ally, the target benefit score is multiplied by -1. @@ -4950,13 +4958,13 @@ export class EnemyPokemon extends Pokemon { let r = 0; if (this.aiType === AiType.SMART_RANDOM) { // Has a 5/8 chance to select the best move, and a 3/8 chance to advance to the next best move (and repeat this roll) - while (r < sortedMovePool.length - 1 && this.scene.randBattleSeedInt(8) >= 5) { + while (r < sortedMovePool.length - 1 && globalScene.randBattleSeedInt(8) >= 5) { r++; } } else if (this.aiType === AiType.SMART) { // The chance to advance to the next best move increases when the compared moves' scores are closer to each other. while (r < sortedMovePool.length - 1 && (moveScores[movePool.indexOf(sortedMovePool[r + 1])] / moveScores[movePool.indexOf(sortedMovePool[r])]) >= 0 - && this.scene.randBattleSeedInt(100) < Math.round((moveScores[movePool.indexOf(sortedMovePool[r + 1])] / moveScores[movePool.indexOf(sortedMovePool[r])]) * 50)) { + && globalScene.randBattleSeedInt(100) < Math.round((moveScores[movePool.indexOf(sortedMovePool[r + 1])] / moveScores[movePool.indexOf(sortedMovePool[r])]) * 50)) { r++; } } @@ -4975,7 +4983,7 @@ export class EnemyPokemon extends Pokemon { */ getNextTargets(moveId: Moves): BattlerIndex[] { const moveTargets = getMoveTargets(this, moveId); - const targets = this.scene.getField(true).filter(p => moveTargets.targets.indexOf(p.getBattlerIndex()) > -1); + const targets = globalScene.getField(true).filter(p => moveTargets.targets.indexOf(p.getBattlerIndex()) > -1); // If the move is multi-target, return all targets' indexes if (moveTargets.multiple) { return targets.map(p => p.getBattlerIndex()); @@ -5037,7 +5045,7 @@ export class EnemyPokemon extends Pokemon { * then select the first target whose cumulative weight (with all previous targets' weights) * is greater than that random number. */ - const randValue = this.scene.randBattleSeedInt(totalWeight); + const randValue = globalScene.randBattleSeedInt(totalWeight); let targetIndex: integer = 0; thresholds.every((t, i) => { @@ -5108,7 +5116,7 @@ export class EnemyPokemon extends Pokemon { } } - switch (this.scene.currentBattle.battleSpec) { + switch (globalScene.currentBattle.battleSpec) { case BattleSpec.FINAL_BOSS: if (!this.formIndex && this.bossSegmentIndex < 1) { damage = Math.min(damage, this.hp - 1); @@ -5132,7 +5140,7 @@ export class EnemyPokemon extends Pokemon { } canBypassBossSegments(segmentCount: integer = 1): boolean { - if (this.scene.currentBattle.battleSpec === BattleSpec.FINAL_BOSS) { + if (globalScene.currentBattle.battleSpec === BattleSpec.FINAL_BOSS) { if (!this.formIndex && (this.bossSegmentIndex - segmentCount) < 1) { return false; } @@ -5183,13 +5191,13 @@ export class EnemyPokemon extends Pokemon { stages++; } - this.scene.unshiftPhase(new StatStageChangePhase(this.scene, this.getBattlerIndex(), true, [ boostedStat! ], stages, true, true)); + globalScene.unshiftPhase(new StatStageChangePhase(this.getBattlerIndex(), true, [ boostedStat! ], stages, true, true)); this.bossSegmentIndex--; } } getFieldIndex(): integer { - return this.scene.getEnemyField().indexOf(this); + return globalScene.getEnemyField().indexOf(this); } getBattlerIndex(): BattlerIndex { @@ -5204,16 +5212,16 @@ export class EnemyPokemon extends Pokemon { * @returns the pokemon that was added or null if the pokemon could not be added */ addToParty(pokeballType: PokeballType, slotIndex: number = -1) { - const party = this.scene.getPlayerParty(); + const party = globalScene.getPlayerParty(); let ret: PlayerPokemon | null = null; if (party.length < PLAYER_PARTY_MAX_SIZE) { this.pokeball = pokeballType; this.metLevel = this.level; - this.metBiome = this.scene.arena.biomeType; - this.metWave = this.scene.currentBattle.waveIndex; + this.metBiome = globalScene.arena.biomeType; + this.metWave = globalScene.currentBattle.waveIndex; this.metSpecies = this.species.speciesId; - const newPokemon = this.scene.addPlayerPokemon(this.species, this.level, this.abilityIndex, this.formIndex, this.gender, this.shiny, this.variant, this.ivs, this.nature, this); + const newPokemon = globalScene.addPlayerPokemon(this.species, this.level, this.abilityIndex, this.formIndex, this.gender, this.shiny, this.variant, this.ivs, this.nature, this); if (Utils.isBetween(slotIndex, 0, PLAYER_PARTY_MAX_SIZE - 1)) { party.splice(slotIndex, 0, newPokemon); @@ -5225,7 +5233,7 @@ export class EnemyPokemon extends Pokemon { newPokemon.setVisible(false); ret = newPokemon; - this.scene.triggerPokemonFormChange(newPokemon, SpeciesFormChangeActiveTrigger, true); + globalScene.triggerPokemonFormChange(newPokemon, SpeciesFormChangeActiveTrigger, true); } return ret; diff --git a/src/field/trainer.ts b/src/field/trainer.ts index b77a156f401..fc12eb57abe 100644 --- a/src/field/trainer.ts +++ b/src/field/trainer.ts @@ -1,19 +1,21 @@ -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { pokemonPrevolutions } from "#app/data/balance/pokemon-evolutions"; -import PokemonSpecies, { getPokemonSpecies } from "#app/data/pokemon-species"; -import { +import type PokemonSpecies from "#app/data/pokemon-species"; +import { getPokemonSpecies } from "#app/data/pokemon-species"; +import type { TrainerConfig, + TrainerPartyTemplate } from "#app/data/trainer-config"; +import { TrainerPartyCompoundTemplate, - TrainerPartyTemplate, TrainerPoolTier, TrainerSlot, trainerConfigs, trainerPartyTemplates, signatureSpecies } from "#app/data/trainer-config"; -import { EnemyPokemon } from "#app/field/pokemon"; +import type { EnemyPokemon } from "#app/field/pokemon"; import * as Utils from "#app/utils"; -import { PersistentModifier } from "#app/modifier/modifier"; +import type { PersistentModifier } from "#app/modifier/modifier"; import { trainerNamePools } from "#app/data/trainer-names"; import { ArenaTagSide, ArenaTrapTag } from "#app/data/arena-tag"; import { getIsInitialized, initI18n } from "#app/plugins/i18n"; @@ -35,8 +37,8 @@ export default class Trainer extends Phaser.GameObjects.Container { public name: string; public partnerName: string; - constructor(scene: BattleScene, trainerType: TrainerType, variant: TrainerVariant, partyTemplateIndex?: integer, name?: string, partnerName?: string, trainerConfigOverride?: TrainerConfig) { - super(scene, -72, 80); + constructor(trainerType: TrainerType, variant: TrainerVariant, partyTemplateIndex?: integer, name?: string, partnerName?: string, trainerConfigOverride?: TrainerConfig) { + super(globalScene, -72, 80); this.config = trainerConfigs.hasOwnProperty(trainerType) ? trainerConfigs[trainerType] : trainerConfigs[TrainerType.ACE_TRAINER]; @@ -80,9 +82,9 @@ export default class Trainer extends Phaser.GameObjects.Container { console.log(Object.keys(trainerPartyTemplates)[Object.values(trainerPartyTemplates).indexOf(this.getPartyTemplate())]); const getSprite = (hasShadow?: boolean, forceFemale?: boolean) => { - const ret = this.scene.addFieldSprite(0, 0, this.config.getSpriteKey(variant === TrainerVariant.FEMALE || forceFemale, this.isDouble())); + const ret = globalScene.addFieldSprite(0, 0, this.config.getSpriteKey(variant === TrainerVariant.FEMALE || forceFemale, this.isDouble())); ret.setOrigin(0.5, 1); - ret.setPipeline(this.scene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], hasShadow: !!hasShadow }); + ret.setPipeline(globalScene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], hasShadow: !!hasShadow }); return ret; }; @@ -207,7 +209,7 @@ export default class Trainer extends Phaser.GameObjects.Container { getPartyTemplate(): TrainerPartyTemplate { if (this.config.partyTemplateFunc) { - return this.config.partyTemplateFunc(this.scene); + return this.config.partyTemplateFunc(); } return this.config.partyTemplates[this.partyTemplateIndex]; } @@ -216,7 +218,7 @@ export default class Trainer extends Phaser.GameObjects.Container { const ret: number[] = []; const partyTemplate = this.getPartyTemplate(); - const difficultyWaveIndex = this.scene.gameMode.getWaveForDifficulty(waveIndex); + const difficultyWaveIndex = globalScene.gameMode.getWaveForDifficulty(waveIndex); const baseLevel = 1 + difficultyWaveIndex / 2 + Math.pow(difficultyWaveIndex / 25, 2); if (this.isDouble() && partyTemplate.size < 2) { @@ -261,12 +263,12 @@ export default class Trainer extends Phaser.GameObjects.Container { } genPartyMember(index: integer): EnemyPokemon { - const battle = this.scene.currentBattle; + const battle = globalScene.currentBattle; const level = battle.enemyLevels?.[index]!; // TODO: is this bang correct? let ret: EnemyPokemon; - this.scene.executeWithSeedOffset(() => { + globalScene.executeWithSeedOffset(() => { const template = this.getPartyTemplate(); const strength: PartyMemberStrength = template.getStrength(index); @@ -275,11 +277,11 @@ export default class Trainer extends Phaser.GameObjects.Container { if (!(this.config.trainerTypeDouble && this.isDouble() && !this.config.doubleOnly)) { if (this.config.partyMemberFuncs.hasOwnProperty(index)) { - ret = this.config.partyMemberFuncs[index](this.scene, level, strength); + ret = this.config.partyMemberFuncs[index](level, strength); return; } if (this.config.partyMemberFuncs.hasOwnProperty(index - template.size)) { - ret = this.config.partyMemberFuncs[index - template.size](this.scene, level, template.getStrength(index)); + ret = this.config.partyMemberFuncs[index - template.size](level, template.getStrength(index)); return; } } @@ -364,23 +366,23 @@ export default class Trainer extends Phaser.GameObjects.Container { let species = useNewSpeciesPool ? getPokemonSpecies(newSpeciesPool[Math.floor(Utils.randSeedInt(newSpeciesPool.length))]) : template.isSameSpecies(index) && index > offset - ? getPokemonSpecies(battle.enemyParty[offset].species.getTrainerSpeciesForLevel(level, false, template.getStrength(offset), this.scene.currentBattle.waveIndex)) + ? getPokemonSpecies(battle.enemyParty[offset].species.getTrainerSpeciesForLevel(level, false, template.getStrength(offset), globalScene.currentBattle.waveIndex)) : this.genNewPartyMemberSpecies(level, strength); // If the species is from newSpeciesPool, we need to adjust it based on the level and strength if (newSpeciesPool) { - species = getPokemonSpecies(species.getSpeciesForLevel(level, true, true, strength, this.scene.currentBattle.waveIndex)); + species = getPokemonSpecies(species.getSpeciesForLevel(level, true, true, strength, globalScene.currentBattle.waveIndex)); } - ret = this.scene.addEnemyPokemon(species, level, !this.isDouble() || !(index % 2) ? TrainerSlot.TRAINER : TrainerSlot.TRAINER_PARTNER); - }, this.config.hasStaticParty ? this.config.getDerivedType() + ((index + 1) << 8) : this.scene.currentBattle.waveIndex + (this.config.getDerivedType() << 10) + (((!this.config.useSameSeedForAllMembers ? index : 0) + 1) << 8)); + ret = globalScene.addEnemyPokemon(species, level, !this.isDouble() || !(index % 2) ? TrainerSlot.TRAINER : TrainerSlot.TRAINER_PARTNER); + }, this.config.hasStaticParty ? this.config.getDerivedType() + ((index + 1) << 8) : globalScene.currentBattle.waveIndex + (this.config.getDerivedType() << 10) + (((!this.config.useSameSeedForAllMembers ? index : 0) + 1) << 8)); return ret!; // TODO: is this bang correct? } genNewPartyMemberSpecies(level: integer, strength: PartyMemberStrength, attempt?: integer): PokemonSpecies { - const battle = this.scene.currentBattle; + const battle = globalScene.currentBattle; const template = this.getPartyTemplate(); let baseSpecies: PokemonSpecies; @@ -395,10 +397,10 @@ export default class Trainer extends Phaser.GameObjects.Container { const tierPool = this.config.speciesPools[tier]; baseSpecies = getPokemonSpecies(Utils.randSeedItem(tierPool)); } else { - baseSpecies = this.scene.randomSpecies(battle.waveIndex, level, false, this.config.speciesFilter); + baseSpecies = globalScene.randomSpecies(battle.waveIndex, level, false, this.config.speciesFilter); } - let ret = getPokemonSpecies(baseSpecies.getTrainerSpeciesForLevel(level, true, strength, this.scene.currentBattle.waveIndex)); + let ret = getPokemonSpecies(baseSpecies.getTrainerSpeciesForLevel(level, true, strength, globalScene.currentBattle.waveIndex)); let retry = false; console.log(ret.getName()); @@ -417,7 +419,7 @@ export default class Trainer extends Phaser.GameObjects.Container { console.log("Attempting reroll of species evolution to fit specialty type..."); let evoAttempt = 0; while (retry && evoAttempt++ < 10) { - ret = getPokemonSpecies(baseSpecies.getTrainerSpeciesForLevel(level, true, strength, this.scene.currentBattle.waveIndex)); + ret = getPokemonSpecies(baseSpecies.getTrainerSpeciesForLevel(level, true, strength, globalScene.currentBattle.waveIndex)); console.log(ret.name); if (this.config.specialtyTypes.find(t => ret.isOfType(t))) { retry = false; @@ -448,7 +450,7 @@ export default class Trainer extends Phaser.GameObjects.Container { checkDuplicateSpecies(species: PokemonSpecies, baseSpecies: PokemonSpecies): boolean { const staticPartyPokemon = (signatureSpecies[TrainerType[this.config.trainerType]] ?? []).flat(1); - const currentPartySpecies = this.scene.getEnemyParty().map(p => { + const currentPartySpecies = globalScene.getEnemyParty().map(p => { return p.species.speciesId; }); return currentPartySpecies.includes(species.speciesId) || staticPartyPokemon.includes(baseSpecies.speciesId); @@ -459,10 +461,10 @@ export default class Trainer extends Phaser.GameObjects.Container { trainerSlot = TrainerSlot.NONE; } - const party = this.scene.getEnemyParty(); - const nonFaintedLegalPartyMembers = party.slice(this.scene.currentBattle.getBattlerCount()).filter(p => p.isAllowedInBattle()).filter(p => !trainerSlot || p.trainerSlot === trainerSlot); + const party = globalScene.getEnemyParty(); + const nonFaintedLegalPartyMembers = party.slice(globalScene.currentBattle.getBattlerCount()).filter(p => p.isAllowedInBattle()).filter(p => !trainerSlot || p.trainerSlot === trainerSlot); const partyMemberScores = nonFaintedLegalPartyMembers.map(p => { - const playerField = this.scene.getPlayerField().filter(p => p.isAllowedInBattle()); + const playerField = globalScene.getPlayerField().filter(p => p.isAllowedInBattle()); let score = 0; if (playerField.length > 0) { @@ -474,7 +476,7 @@ export default class Trainer extends Phaser.GameObjects.Container { } score /= playerField.length; if (forSwitch && !p.isOnField()) { - this.scene.arena.findTagsOnSide(t => t instanceof ArenaTrapTag, ArenaTagSide.ENEMY).map(t => score *= (t as ArenaTrapTag).getMatchupScoreMultiplier(p)); + globalScene.arena.findTagsOnSide(t => t instanceof ArenaTrapTag, ArenaTagSide.ENEMY).map(t => score *= (t as ArenaTrapTag).getMatchupScoreMultiplier(p)); } } @@ -506,7 +508,7 @@ export default class Trainer extends Phaser.GameObjects.Container { if (maxScorePartyMemberIndexes.length > 1) { let rand: integer; - this.scene.executeWithSeedOffset(() => rand = Utils.randSeedInt(maxScorePartyMemberIndexes.length), this.scene.currentBattle.turn << 2); + globalScene.executeWithSeedOffset(() => rand = Utils.randSeedInt(maxScorePartyMemberIndexes.length), globalScene.currentBattle.turn << 2); return maxScorePartyMemberIndexes[rand!]; } @@ -539,7 +541,7 @@ export default class Trainer extends Phaser.GameObjects.Container { } loadAssets(): Promise { - return this.config.loadAssets(this.scene, this.variant); + return this.config.loadAssets(this.variant); } initSprite(): void { @@ -627,7 +629,7 @@ export default class Trainer extends Phaser.GameObjects.Container { if (duration) { tintSprite.setAlpha(0); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: tintSprite, alpha: alpha || 1, duration: duration, @@ -643,7 +645,7 @@ export default class Trainer extends Phaser.GameObjects.Container { const tintSprites = this.getTintSprites(); tintSprites.map(tintSprite => { if (duration) { - this.scene.tweens.add({ + globalScene.tweens.add({ targets: tintSprite, alpha: 0, duration: duration, @@ -660,7 +662,3 @@ export default class Trainer extends Phaser.GameObjects.Container { }); } } - -export default interface Trainer { - scene: BattleScene -} diff --git a/src/game-mode.ts b/src/game-mode.ts index 3f12c5b056e..4e0f5715851 100644 --- a/src/game-mode.ts +++ b/src/game-mode.ts @@ -1,14 +1,17 @@ import i18next from "i18next"; -import { classicFixedBattles, FixedBattleConfig, FixedBattleConfigs } from "./battle"; -import BattleScene from "./battle-scene"; -import { allChallenges, applyChallenges, Challenge, ChallengeType, copyChallenge } from "./data/challenge"; -import PokemonSpecies, { allSpecies } from "./data/pokemon-species"; -import { Arena } from "./field/arena"; +import type { FixedBattleConfigs } from "./battle"; +import { classicFixedBattles, FixedBattleConfig } from "./battle"; +import type { Challenge } from "./data/challenge"; +import { allChallenges, applyChallenges, ChallengeType, copyChallenge } from "./data/challenge"; +import type PokemonSpecies from "./data/pokemon-species"; +import { allSpecies } from "./data/pokemon-species"; +import type { Arena } from "./field/arena"; import Overrides from "#app/overrides"; import * as Utils from "./utils"; import { Biome } from "#enums/biome"; import { Species } from "#enums/species"; import { Challenges } from "./enums/challenges"; +import { globalScene } from "#app/global-scene"; export enum GameModes { CLASSIC, @@ -109,16 +112,15 @@ export class GameMode implements GameModeConfig { } /** - * @param scene current BattleScene * @returns either: * - random biome for Daily mode * - override from overrides.ts * - Town */ - getStartingBiome(scene: BattleScene): Biome { + getStartingBiome(): Biome { switch (this.modeId) { case GameModes.DAILY: - return scene.generateRandomBiome(this.getWaveForDifficulty(1)); + return globalScene.generateRandomBiome(this.getWaveForDifficulty(1)); default: return Overrides.STARTING_BIOME_OVERRIDE || Biome.TOWN; } @@ -136,8 +138,8 @@ export class GameMode implements GameModeConfig { /** * Determines whether or not to generate a trainer * @param waveIndex the current floor the player is on (trainer sprites fail to generate on X1 floors) - * @param arena the arena that contains the scene and functions - * @returns true if a trainer should be generated, false otherwise + * @param arena the current {@linkcode Arena} + * @returns `true` if a trainer should be generated, `false` otherwise */ isWaveTrainer(waveIndex: integer, arena: Arena): boolean { /** @@ -146,14 +148,13 @@ export class GameMode implements GameModeConfig { if (this.isDaily) { return waveIndex % 10 === 5 || (!(waveIndex % 10) && waveIndex > 10 && !this.isWaveFinal(waveIndex)); } - if ((waveIndex % 30) === (arena.scene.offsetGym ? 0 : 20) && !this.isWaveFinal(waveIndex)) { + if ((waveIndex % 30) === (globalScene.offsetGym ? 0 : 20) && !this.isWaveFinal(waveIndex)) { return true; } else if (waveIndex % 10 !== 1 && waveIndex % 10) { /** * Do not check X1 floors since there's a bug that stops trainer sprites from appearing * after a X0 full party heal */ - const trainerChance = arena.getTrainerChance(); let allowTrainerBattle = true; if (trainerChance) { @@ -163,11 +164,11 @@ export class GameMode implements GameModeConfig { if (w === waveIndex) { continue; } - if ((w % 30) === (arena.scene.offsetGym ? 0 : 20) || this.isFixedBattle(w)) { + if ((w % 30) === (globalScene.offsetGym ? 0 : 20) || this.isFixedBattle(w)) { allowTrainerBattle = false; break; } else if (w < waveIndex) { - arena.scene.executeWithSeedOffset(() => { + globalScene.executeWithSeedOffset(() => { const waveTrainerChance = arena.getTrainerChance(); if (!Utils.randSeedInt(waveTrainerChance)) { allowTrainerBattle = false; diff --git a/src/global-scene.ts b/src/global-scene.ts new file mode 100644 index 00000000000..76071bd7fac --- /dev/null +++ b/src/global-scene.ts @@ -0,0 +1,7 @@ +import type BattleScene from "#app/battle-scene"; + +export let globalScene: BattleScene; + +export function initGlobalScene(scene: BattleScene): void { + globalScene = scene; +} diff --git a/src/inputs-controller.ts b/src/inputs-controller.ts index 537d2870259..d382caf6cb6 100644 --- a/src/inputs-controller.ts +++ b/src/inputs-controller.ts @@ -7,17 +7,17 @@ import pad_xbox360 from "./configs/inputs/pad_xbox360"; import pad_dualshock from "./configs/inputs/pad_dualshock"; import pad_procon from "./configs/inputs/pad_procon"; import { Mode } from "./ui/ui"; -import SettingsGamepadUiHandler from "./ui/settings/settings-gamepad-ui-handler"; -import SettingsKeyboardUiHandler from "./ui/settings/settings-keyboard-ui-handler"; +import type SettingsGamepadUiHandler from "./ui/settings/settings-gamepad-ui-handler"; +import type SettingsKeyboardUiHandler from "./ui/settings/settings-keyboard-ui-handler"; import cfg_keyboard_qwerty from "./configs/inputs/cfg_keyboard_qwerty"; import { assign, getButtonWithKeycode, getIconForLatestInput, swap, } from "#app/configs/inputs/configHandler"; -import BattleScene from "./battle-scene"; -import { SettingGamepad } from "#app/system/settings/settings-gamepad"; -import { SettingKeyboard } from "#app/system/settings/settings-keyboard"; +import { globalScene } from "#app/global-scene"; +import type { SettingGamepad } from "#app/system/settings/settings-gamepad"; +import type { SettingKeyboard } from "#app/system/settings/settings-keyboard"; import TouchControl from "#app/touch-controls"; import { Button } from "#enums/buttons"; import { Device } from "#enums/devices"; @@ -75,7 +75,6 @@ const repeatInputDelayMillis = 250; */ export class InputsController { private gamepads: Array = new Array(); - private scene: BattleScene; public events: Phaser.Events.EventEmitter; private buttonLock: Button[] = new Array(); @@ -96,17 +95,13 @@ export class InputsController { /** * Initializes a new instance of the game control system, setting up initial state and configurations. * - * @param scene - The Phaser scene associated with this instance. - * * @remarks * This constructor initializes the game control system with necessary setups for handling inputs. * It prepares an interactions array indexed by button identifiers and configures default states for each button. * Specific buttons like MENU and STATS are set not to repeat their actions. * It concludes by calling the `init` method to complete the setup. */ - - constructor(scene: BattleScene) { - this.scene = scene; + constructor() { this.selectedDevice = { [Device.GAMEPAD]: null, [Device.KEYBOARD]: "default" @@ -134,14 +129,14 @@ export class InputsController { * Additionally, it manages the game's behavior when it loses focus to prevent unwanted game actions during this state. */ init(): void { - this.events = this.scene.game.events; + this.events = globalScene.game.events; - this.scene.game.events.on(Phaser.Core.Events.BLUR, () => { + globalScene.game.events.on(Phaser.Core.Events.BLUR, () => { this.loseFocus(); }); - if (typeof this.scene.input.gamepad !== "undefined") { - this.scene.input.gamepad?.on("connected", function (thisGamepad) { + if (typeof globalScene.input.gamepad !== "undefined") { + globalScene.input.gamepad?.on("connected", function (thisGamepad) { if (!thisGamepad) { return; } @@ -150,25 +145,25 @@ export class InputsController { this.onReconnect(thisGamepad); }, this); - this.scene.input.gamepad?.on("disconnected", function (thisGamepad) { + globalScene.input.gamepad?.on("disconnected", function (thisGamepad) { this.onDisconnect(thisGamepad); // when a gamepad is disconnected }, this); // Check to see if the gamepad has already been setup by the browser - this.scene.input.gamepad?.refreshPads(); - if (this.scene.input.gamepad?.total) { + globalScene.input.gamepad?.refreshPads(); + if (globalScene.input.gamepad?.total) { this.refreshGamepads(); for (const thisGamepad of this.gamepads) { - this.scene.input.gamepad.emit("connected", thisGamepad); + globalScene.input.gamepad.emit("connected", thisGamepad); } } - this.scene.input.gamepad?.on("down", this.gamepadButtonDown, this); - this.scene.input.gamepad?.on("up", this.gamepadButtonUp, this); - this.scene.input.keyboard?.on("keydown", this.keyboardKeyDown, this); - this.scene.input.keyboard?.on("keyup", this.keyboardKeyUp, this); + globalScene.input.gamepad?.on("down", this.gamepadButtonDown, this); + globalScene.input.gamepad?.on("up", this.gamepadButtonUp, this); + globalScene.input.keyboard?.on("keydown", this.keyboardKeyDown, this); + globalScene.input.keyboard?.on("keyup", this.keyboardKeyUp, this); } - this.touchControls = new TouchControl(this.scene); + this.touchControls = new TouchControl(); this.moveTouchControlsHandler = new MoveTouchControlsHandler(this.touchControls); } @@ -238,7 +233,7 @@ export class InputsController { if (gamepadName) { this.selectedDevice[Device.GAMEPAD] = gamepadName.toLowerCase(); } - const handler = this.scene.ui?.handlers[Mode.SETTINGS_GAMEPAD] as SettingsGamepadUiHandler; + const handler = globalScene.ui?.handlers[Mode.SETTINGS_GAMEPAD] as SettingsGamepadUiHandler; handler && handler.updateChosenGamepadDisplay(); } @@ -251,7 +246,7 @@ export class InputsController { if (layoutKeyboard) { this.selectedDevice[Device.KEYBOARD] = layoutKeyboard.toLowerCase(); } - const handler = this.scene.ui?.handlers[Mode.SETTINGS_KEYBOARD] as SettingsKeyboardUiHandler; + const handler = globalScene.ui?.handlers[Mode.SETTINGS_KEYBOARD] as SettingsKeyboardUiHandler; handler && handler.updateChosenKeyboardDisplay(); } @@ -296,10 +291,10 @@ export class InputsController { const config = deepCopy(this.getConfig(gamepadID)) as InterfaceConfig; config.custom = this.configs[gamepadID]?.custom || { ...config.default }; this.configs[gamepadID] = config; - this.scene.gameData?.saveMappingConfigs(gamepadID, this.configs[gamepadID]); + globalScene.gameData?.saveMappingConfigs(gamepadID, this.configs[gamepadID]); } this.lastSource = "gamepad"; - const handler = this.scene.ui?.handlers[Mode.SETTINGS_GAMEPAD] as SettingsGamepadUiHandler; + const handler = globalScene.ui?.handlers[Mode.SETTINGS_GAMEPAD] as SettingsGamepadUiHandler; handler && handler.updateChosenGamepadDisplay(); } @@ -311,7 +306,7 @@ export class InputsController { const config = deepCopy(this.getConfigKeyboard(layout)) as InterfaceConfig; config.custom = this.configs[layout]?.custom || { ...config.default }; this.configs[layout] = config; - this.scene.gameData?.saveMappingConfigs(this.selectedDevice[Device.KEYBOARD], this.configs[layout]); + globalScene.gameData?.saveMappingConfigs(this.selectedDevice[Device.KEYBOARD], this.configs[layout]); } this.initChosenLayoutKeyboard(this.selectedDevice[Device.KEYBOARD]); } @@ -326,7 +321,7 @@ export class InputsController { */ refreshGamepads(): void { // Sometimes, gamepads are undefined. For some reason. - this.gamepads = this.scene.input.gamepad?.gamepads.filter(function (el) { + this.gamepads = globalScene.input.gamepad?.gamepads.filter(function (el) { return el !== null; }) ?? []; @@ -409,7 +404,7 @@ export class InputsController { return; } this.lastSource = "gamepad"; - if (!this.selectedDevice[Device.GAMEPAD] || (this.scene.ui.getMode() !== Mode.GAMEPAD_BINDING && this.selectedDevice[Device.GAMEPAD] !== pad.id.toLowerCase())) { + if (!this.selectedDevice[Device.GAMEPAD] || (globalScene.ui.getMode() !== Mode.GAMEPAD_BINDING && this.selectedDevice[Device.GAMEPAD] !== pad.id.toLowerCase())) { this.setChosenGamepad(pad.id); } if (!this.gamepadSupport || pad.id.toLowerCase() !== this.selectedDevice[Device.GAMEPAD].toLowerCase()) { diff --git a/src/interfaces/held-modifier-config.ts b/src/interfaces/held-modifier-config.ts index 2285babdbfd..5617cf2446a 100644 --- a/src/interfaces/held-modifier-config.ts +++ b/src/interfaces/held-modifier-config.ts @@ -1,5 +1,5 @@ -import { PokemonHeldItemModifierType } from "#app/modifier/modifier-type"; -import { PokemonHeldItemModifier } from "#app/modifier/modifier"; +import type { PokemonHeldItemModifierType } from "#app/modifier/modifier-type"; +import type { PokemonHeldItemModifier } from "#app/modifier/modifier"; export default interface HeldModifierConfig { modifier: PokemonHeldItemModifierType | PokemonHeldItemModifier; diff --git a/src/messages.ts b/src/messages.ts index 91f550918e5..26fd3353cc6 100644 --- a/src/messages.ts +++ b/src/messages.ts @@ -1,5 +1,6 @@ +import { globalScene } from "#app/global-scene"; import { BattleSpec } from "#enums/battle-spec"; -import Pokemon from "./field/pokemon"; +import type Pokemon from "./field/pokemon"; import i18next from "i18next"; /** @@ -12,7 +13,7 @@ export function getPokemonNameWithAffix(pokemon: Pokemon | undefined): string { return "Missigno"; } - switch (pokemon.scene.currentBattle.battleSpec) { + switch (globalScene.currentBattle.battleSpec) { case BattleSpec.DEFAULT: return !pokemon.isPlayer() ? pokemon.hasTrainer() diff --git a/src/modifier/modifier-type.ts b/src/modifier/modifier-type.ts index b6cf78fb414..9c844596abc 100644 --- a/src/modifier/modifier-type.ts +++ b/src/modifier/modifier-type.ts @@ -1,4 +1,4 @@ -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { EvolutionItem, pokemonEvolutions } from "#app/data/balance/pokemon-evolutions"; import { tmPoolTiers, tmSpecies } from "#app/data/balance/tms"; import { getBerryEffectDescription, getBerryName } from "#app/data/berry"; @@ -8,14 +8,16 @@ import { getPokeballCatchMultiplier, getPokeballName, MAX_PER_TYPE_POKEBALLS } f import { FormChangeItem, pokemonFormChanges, SpeciesFormChangeCondition, SpeciesFormChangeItemTrigger } from "#app/data/pokemon-forms"; import { getStatusEffectDescriptor } from "#app/data/status-effect"; import { Type } from "#enums/type"; -import Pokemon, { EnemyPokemon, PlayerPokemon, PokemonMove } from "#app/field/pokemon"; +import type { EnemyPokemon, PlayerPokemon, PokemonMove } from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; import { getPokemonNameWithAffix } from "#app/messages"; import { AddPokeballModifier, AddVoucherModifier, AttackTypeBoosterModifier, BaseStatModifier, BerryModifier, BoostBugSpawnModifier, BypassSpeedChanceModifier, ContactHeldItemTransferChanceModifier, CritBoosterModifier, DamageMoneyRewardModifier, DoubleBattleChanceBoosterModifier, EnemyAttackStatusEffectChanceModifier, EnemyDamageBoosterModifier, EnemyDamageReducerModifier, EnemyEndureChanceModifier, EnemyFusionChanceModifier, EnemyStatusEffectHealChanceModifier, EnemyTurnHealModifier, EvolutionItemModifier, EvolutionStatBoosterModifier, EvoTrackerModifier, ExpBalanceModifier, ExpBoosterModifier, ExpShareModifier, ExtraModifierModifier, FlinchChanceModifier, FusePokemonModifier, GigantamaxAccessModifier, HealingBoosterModifier, HealShopCostModifier, HiddenAbilityRateBoosterModifier, HitHealModifier, IvScannerModifier, LevelIncrementBoosterModifier, LockModifierTiersModifier, MapModifier, MegaEvolutionAccessModifier, MoneyInterestModifier, MoneyMultiplierModifier, MoneyRewardModifier, MultipleParticipantExpBonusModifier, PokemonAllMovePpRestoreModifier, PokemonBaseStatFlatModifier, PokemonBaseStatTotalModifier, PokemonExpBoosterModifier, PokemonFormChangeItemModifier, PokemonFriendshipBoosterModifier, PokemonHeldItemModifier, PokemonHpRestoreModifier, PokemonIncrementingStatModifier, PokemonInstantReviveModifier, PokemonLevelIncrementModifier, PokemonMoveAccuracyBoosterModifier, PokemonMultiHitModifier, PokemonNatureChangeModifier, PokemonNatureWeightModifier, PokemonPpRestoreModifier, PokemonPpUpModifier, PokemonStatusHealModifier, PreserveBerryModifier, RememberMoveModifier, ResetNegativeStatStageModifier, ShinyRateBoosterModifier, SpeciesCritBoosterModifier, SpeciesStatBoosterModifier, SurviveDamageModifier, SwitchEffectTransferModifier, TempCritBoosterModifier, TempStatStageBoosterModifier, TerastallizeAccessModifier, TerastallizeModifier, TmModifier, TurnHealModifier, TurnHeldItemTransferModifier, TurnStatusEffectModifier, type EnemyPersistentModifier, type Modifier, type PersistentModifier, TempExtraModifierModifier, CriticalCatchChanceBoosterModifier } from "#app/modifier/modifier"; import { ModifierTier } from "#app/modifier/modifier-tier"; import Overrides from "#app/overrides"; import { Unlockables } from "#app/system/unlockables"; import { getVoucherTypeIcon, getVoucherTypeName, VoucherType } from "#app/system/voucher"; -import PartyUiHandler, { PokemonMoveSelectFilter, PokemonSelectFilter } from "#app/ui/party-ui-handler"; +import type { PokemonMoveSelectFilter, PokemonSelectFilter } from "#app/ui/party-ui-handler"; +import PartyUiHandler from "#app/ui/party-ui-handler"; import { getModifierTierTextTint } from "#app/ui/text"; import { formatMoney, getEnumKeys, getEnumValues, isNullOrUndefined, NumberHolder, padInt, randSeedInt, randSeedItem } from "#app/utils"; import { Abilities } from "#enums/abilities"; @@ -26,7 +28,8 @@ import { Nature } from "#enums/nature"; import { PokeballType } from "#enums/pokeball"; import { Species } from "#enums/species"; import { SpeciesFormKey } from "#enums/species-form-key"; -import { getStatKey, PermanentStat, Stat, TEMP_BATTLE_STATS, TempBattleStat } from "#enums/stat"; +import type { PermanentStat, TempBattleStat } from "#enums/stat"; +import { getStatKey, Stat, TEMP_BATTLE_STATS } from "#enums/stat"; import { StatusEffect } from "#enums/status-effect"; import i18next from "i18next"; @@ -64,7 +67,7 @@ export class ModifierType { return i18next.t(`${this.localeKey}.name` as any); } - getDescription(scene: BattleScene): string { + getDescription(): string { return i18next.t(`${this.localeKey}.description` as any); } @@ -206,12 +209,12 @@ class AddPokeballModifierType extends ModifierType { }); } - getDescription(scene: BattleScene): string { + getDescription(): string { return i18next.t("modifierType:ModifierType.AddPokeballModifierType.description", { "modifierCount": this.count, "pokeballName": getPokeballName(this.pokeballType), "catchRate": getPokeballCatchMultiplier(this.pokeballType) > -1 ? `${getPokeballCatchMultiplier(this.pokeballType)}x` : "100%", - "pokeballAmount": `${scene.pokeballCounts[this.pokeballType]}`, + "pokeballAmount": `${globalScene.pokeballCounts[this.pokeballType]}`, }); } } @@ -233,7 +236,7 @@ class AddVoucherModifierType extends ModifierType { }); } - getDescription(scene: BattleScene): string { + getDescription(): string { return i18next.t("modifierType:ModifierType.AddVoucherModifierType.description", { "modifierCount": this.count, "voucherTypeName": getVoucherTypeName(this.voucherType), @@ -255,8 +258,8 @@ export class PokemonHeldItemModifierType extends PokemonModifierType { constructor(localeKey: string, iconImage: string, newModifierFunc: NewModifierFunc, group?: string, soundName?: string) { super(localeKey, iconImage, newModifierFunc, (pokemon: PlayerPokemon) => { const dummyModifier = this.newModifier(pokemon); - const matchingModifier = pokemon.scene.findModifier(m => m instanceof PokemonHeldItemModifier && m.pokemonId === pokemon.id && m.matchType(dummyModifier)) as PokemonHeldItemModifier; - const maxStackCount = dummyModifier.getMaxStackCount(pokemon.scene); + const matchingModifier = globalScene.findModifier(m => m instanceof PokemonHeldItemModifier && m.pokemonId === pokemon.id && m.matchType(dummyModifier)) as PokemonHeldItemModifier; + const maxStackCount = dummyModifier.getMaxStackCount(); if (!maxStackCount) { return i18next.t("modifierType:ModifierType.PokemonHeldItemModifierType.extra.inoperable", { "pokemonName": getPokemonNameWithAffix(pokemon) }); } @@ -291,7 +294,7 @@ export class PokemonHpRestoreModifierType extends PokemonModifierType { this.healStatus = healStatus; } - getDescription(scene: BattleScene): string { + getDescription(): string { return this.restorePoints ? i18next.t("modifierType:ModifierType.PokemonHpRestoreModifierType.description", { restorePoints: this.restorePoints, @@ -321,7 +324,7 @@ export class PokemonReviveModifierType extends PokemonHpRestoreModifierType { }; } - getDescription(scene: BattleScene): string { + getDescription(): string { return i18next.t("modifierType:ModifierType.PokemonReviveModifierType.description", { restorePercent: this.restorePercent }); } } @@ -337,7 +340,7 @@ export class PokemonStatusHealModifierType extends PokemonModifierType { })); } - getDescription(scene: BattleScene): string { + getDescription(): string { return i18next.t("modifierType:ModifierType.PokemonStatusHealModifierType.description"); } } @@ -369,7 +372,7 @@ export class PokemonPpRestoreModifierType extends PokemonMoveModifierType { this.restorePoints = restorePoints; } - getDescription(scene: BattleScene): string { + getDescription(): string { return this.restorePoints > -1 ? i18next.t("modifierType:ModifierType.PokemonPpRestoreModifierType.description", { restorePoints: this.restorePoints }) : i18next.t("modifierType:ModifierType.PokemonPpRestoreModifierType.extra.fully") @@ -392,7 +395,7 @@ export class PokemonAllMovePpRestoreModifierType extends PokemonModifierType { this.restorePoints = restorePoints; } - getDescription(scene: BattleScene): string { + getDescription(): string { return this.restorePoints > -1 ? i18next.t("modifierType:ModifierType.PokemonAllMovePpRestoreModifierType.description", { restorePoints: this.restorePoints }) : i18next.t("modifierType:ModifierType.PokemonAllMovePpRestoreModifierType.extra.fully") @@ -417,7 +420,7 @@ export class PokemonPpUpModifierType extends PokemonMoveModifierType { this.upPoints = upPoints; } - getDescription(scene: BattleScene): string { + getDescription(): string { return i18next.t("modifierType:ModifierType.PokemonPpUpModifierType.description", { upPoints: this.upPoints }); } } @@ -441,7 +444,7 @@ export class PokemonNatureChangeModifierType extends PokemonModifierType { return i18next.t("modifierType:ModifierType.PokemonNatureChangeModifierType.name", { natureName: getNatureName(this.nature) }); } - getDescription(scene: BattleScene): string { + getDescription(): string { return i18next.t("modifierType:ModifierType.PokemonNatureChangeModifierType.description", { natureName: getNatureName(this.nature, true, true, true) }); } } @@ -467,7 +470,7 @@ export class DoubleBattleChanceBoosterModifierType extends ModifierType { this.maxBattles = maxBattles; } - getDescription(_scene: BattleScene): string { + getDescription(): string { return i18next.t("modifierType:ModifierType.DoubleBattleChanceBoosterModifierType.description", { battleCount: this.maxBattles }); @@ -492,7 +495,7 @@ export class TempStatStageBoosterModifierType extends ModifierType implements Ge return i18next.t(`modifierType:TempStatStageBoosterItem.${this.nameKey}`); } - getDescription(_scene: BattleScene): string { + getDescription(): string { return i18next.t("modifierType:ModifierType.TempStatStageBoosterModifierType.description", { stat: i18next.t(getStatKey(this.stat)), amount: i18next.t(`modifierType:ModifierType.TempStatStageBoosterModifierType.extra.${this.quantityKey}`) @@ -517,7 +520,7 @@ export class BerryModifierType extends PokemonHeldItemModifierType implements Ge return getBerryName(this.berryType); } - getDescription(scene: BattleScene): string { + getDescription(): string { return getBerryEffectDescription(this.berryType); } @@ -563,7 +566,7 @@ export class AttackTypeBoosterModifierType extends PokemonHeldItemModifierType i return i18next.t(`modifierType:AttackTypeBoosterItem.${AttackTypeBoosterItem[this.moveType]?.toLowerCase()}`); } - getDescription(scene: BattleScene): string { + getDescription(): string { // TODO: Need getTypeName? return i18next.t("modifierType:ModifierType.AttackTypeBoosterModifierType.description", { moveType: i18next.t(`pokemonInfo:Type.${Type[this.moveType]}`) }); } @@ -600,9 +603,9 @@ export class PokemonLevelIncrementModifierType extends PokemonModifierType { super(localeKey, iconImage, (_type, args) => new PokemonLevelIncrementModifier(this, (args[0] as PlayerPokemon).id), (_pokemon: PlayerPokemon) => null); } - getDescription(scene: BattleScene): string { + getDescription(): string { let levels = 1; - const hasCandyJar = scene.modifiers.find(modifier => modifier instanceof LevelIncrementBoosterModifier); + const hasCandyJar = globalScene.modifiers.find(modifier => modifier instanceof LevelIncrementBoosterModifier); if (hasCandyJar) { levels += hasCandyJar.stackCount; } @@ -615,9 +618,9 @@ export class AllPokemonLevelIncrementModifierType extends ModifierType { super(localeKey, iconImage, (_type, _args) => new PokemonLevelIncrementModifier(this, -1)); } - getDescription(scene: BattleScene): string { + getDescription(): string { let levels = 1; - const hasCandyJar = scene.modifiers.find(modifier => modifier instanceof LevelIncrementBoosterModifier); + const hasCandyJar = globalScene.modifiers.find(modifier => modifier instanceof LevelIncrementBoosterModifier); if (hasCandyJar) { levels += hasCandyJar.stackCount; } @@ -641,7 +644,7 @@ export class BaseStatBoosterModifierType extends PokemonHeldItemModifierType imp return i18next.t(`modifierType:BaseStatBoosterItem.${this.key}`); } - getDescription(_scene: BattleScene): string { + getDescription(): string { return i18next.t("modifierType:ModifierType.BaseStatBoosterModifierType.description", { stat: i18next.t(getStatKey(this.stat)) }); } @@ -661,7 +664,7 @@ export class PokemonBaseStatTotalModifierType extends PokemonHeldItemModifierTyp this.statModifier = statModifier; } - override getDescription(scene: BattleScene): string { + override getDescription(): string { return i18next.t("modifierType:ModifierType.PokemonBaseStatTotalModifierType.description", { increaseDecrease: i18next.t(this.statModifier >= 0 ? "modifierType:ModifierType.PokemonBaseStatTotalModifierType.extra.increase" : "modifierType:ModifierType.PokemonBaseStatTotalModifierType.extra.decrease"), blessCurse: i18next.t(this.statModifier >= 0 ? "modifierType:ModifierType.PokemonBaseStatTotalModifierType.extra.blessed" : "modifierType:ModifierType.PokemonBaseStatTotalModifierType.extra.cursed"), @@ -687,7 +690,7 @@ export class PokemonBaseStatFlatModifierType extends PokemonHeldItemModifierType this.stats = stats; } - override getDescription(scene: BattleScene): string { + override getDescription(): string { return i18next.t("modifierType:ModifierType.PokemonBaseStatFlatModifierType.description", { stats: this.stats.map(stat => i18next.t(getStatKey(stat))).join("/"), statValue: this.statModifier, @@ -708,7 +711,7 @@ class AllPokemonFullHpRestoreModifierType extends ModifierType { this.descriptionKey = descriptionKey!; // TODO: is this bang correct? } - getDescription(scene: BattleScene): string { + getDescription(): string { return i18next.t(`${this.descriptionKey || "modifierType:ModifierType.AllPokemonFullHpRestoreModifierType"}.description` as any); } } @@ -730,10 +733,10 @@ export class MoneyRewardModifierType extends ModifierType { this.moneyMultiplierDescriptorKey = moneyMultiplierDescriptorKey; } - getDescription(scene: BattleScene): string { - const moneyAmount = new NumberHolder(scene.getWaveMoneyAmount(this.moneyMultiplier)); - scene.applyModifiers(MoneyMultiplierModifier, true, moneyAmount); - const formattedMoney = formatMoney(scene.moneyFormat, moneyAmount.value); + getDescription(): string { + const moneyAmount = new NumberHolder(globalScene.getWaveMoneyAmount(this.moneyMultiplier)); + globalScene.applyModifiers(MoneyMultiplierModifier, true, moneyAmount); + const formattedMoney = formatMoney(globalScene.moneyFormat, moneyAmount.value); return i18next.t("modifierType:ModifierType.MoneyRewardModifierType.description", { moneyMultiplier: i18next.t(this.moneyMultiplierDescriptorKey as any), @@ -751,7 +754,7 @@ export class ExpBoosterModifierType extends ModifierType { this.boostPercent = boostPercent; } - getDescription(scene: BattleScene): string { + getDescription(): string { return i18next.t("modifierType:ModifierType.ExpBoosterModifierType.description", { boostPercent: this.boostPercent }); } } @@ -765,7 +768,7 @@ export class PokemonExpBoosterModifierType extends PokemonHeldItemModifierType { this.boostPercent = boostPercent; } - getDescription(scene: BattleScene): string { + getDescription(): string { return i18next.t("modifierType:ModifierType.PokemonExpBoosterModifierType.description", { boostPercent: this.boostPercent }); } } @@ -775,7 +778,7 @@ export class PokemonFriendshipBoosterModifierType extends PokemonHeldItemModifie super(localeKey, iconImage, (_type, args) => new PokemonFriendshipBoosterModifier(this, (args[0] as Pokemon).id)); } - getDescription(scene: BattleScene): string { + getDescription(): string { return i18next.t("modifierType:ModifierType.PokemonFriendshipBoosterModifierType.description"); } } @@ -789,7 +792,7 @@ export class PokemonMoveAccuracyBoosterModifierType extends PokemonHeldItemModif this.amount = amount; } - getDescription(scene: BattleScene): string { + getDescription(): string { return i18next.t("modifierType:ModifierType.PokemonMoveAccuracyBoosterModifierType.description", { accuracyAmount: this.amount }); } } @@ -799,7 +802,7 @@ export class PokemonMultiHitModifierType extends PokemonHeldItemModifierType { super(localeKey, iconImage, (type, args) => new PokemonMultiHitModifier(type as PokemonMultiHitModifierType, (args[0] as Pokemon).id)); } - getDescription(scene: BattleScene): string { + getDescription(): string { return i18next.t("modifierType:ModifierType.PokemonMultiHitModifierType.description"); } } @@ -826,8 +829,8 @@ export class TmModifierType extends PokemonModifierType { }); } - getDescription(scene: BattleScene): string { - return i18next.t(scene.enableMoveInfo ? "modifierType:ModifierType.TmModifierTypeWithInfo.description" : "modifierType:ModifierType.TmModifierType.description", { moveName: allMoves[this.moveId].name }); + getDescription(): string { + return i18next.t(globalScene.enableMoveInfo ? "modifierType:ModifierType.TmModifierTypeWithInfo.description" : "modifierType:ModifierType.TmModifierType.description", { moveName: allMoves[this.moveId].name }); } } @@ -855,7 +858,7 @@ export class EvolutionItemModifierType extends PokemonModifierType implements Ge return i18next.t(`modifierType:EvolutionItem.${EvolutionItem[this.evolutionItem]}`); } - getDescription(scene: BattleScene): string { + getDescription(): string { return i18next.t("modifierType:ModifierType.EvolutionItemModifierType.description"); } @@ -894,7 +897,7 @@ export class FormChangeItemModifierType extends PokemonModifierType implements G return i18next.t(`modifierType:FormChangeItem.${FormChangeItem[this.formChangeItem]}`); } - getDescription(scene: BattleScene): string { + getDescription(): string { return i18next.t("modifierType:ModifierType.FormChangeItemModifierType.description"); } @@ -914,7 +917,7 @@ export class FusePokemonModifierType extends PokemonModifierType { }); } - getDescription(scene: BattleScene): string { + getDescription(): string { return i18next.t("modifierType:ModifierType.FusePokemonModifierType.description"); } } @@ -1144,12 +1147,12 @@ class FormChangeItemModifierTypeGenerator extends ModifierTypeGenerator { const formChangeItemPool = [ ...new Set(party.filter(p => pokemonFormChanges.hasOwnProperty(p.species.speciesId)).map(p => { const formChanges = pokemonFormChanges[p.species.speciesId]; - let formChangeItemTriggers = formChanges.filter(fc => ((fc.formKey.indexOf(SpeciesFormKey.MEGA) === -1 && fc.formKey.indexOf(SpeciesFormKey.PRIMAL) === -1) || party[0].scene.getModifiers(MegaEvolutionAccessModifier).length) - && ((fc.formKey.indexOf(SpeciesFormKey.GIGANTAMAX) === -1 && fc.formKey.indexOf(SpeciesFormKey.ETERNAMAX) === -1) || party[0].scene.getModifiers(GigantamaxAccessModifier).length) + let formChangeItemTriggers = formChanges.filter(fc => ((fc.formKey.indexOf(SpeciesFormKey.MEGA) === -1 && fc.formKey.indexOf(SpeciesFormKey.PRIMAL) === -1) || globalScene.getModifiers(MegaEvolutionAccessModifier).length) + && ((fc.formKey.indexOf(SpeciesFormKey.GIGANTAMAX) === -1 && fc.formKey.indexOf(SpeciesFormKey.ETERNAMAX) === -1) || globalScene.getModifiers(GigantamaxAccessModifier).length) && (!fc.conditions.length || fc.conditions.filter(cond => cond instanceof SpeciesFormChangeCondition && cond.predicate(p)).length) && (fc.preFormKey === p.getFormKey())) .map(fc => fc.findTrigger(SpeciesFormChangeItemTrigger) as SpeciesFormChangeItemTrigger) - .filter(t => t && t.active && !p.scene.findModifier(m => m instanceof PokemonFormChangeItemModifier && m.pokemonId === p.id && m.formChangeItem === t.item)); + .filter(t => t && t.active && !globalScene.findModifier(m => m instanceof PokemonFormChangeItemModifier && m.pokemonId === p.id && m.formChangeItem === t.item)); if (p.species.speciesId === Species.NECROZMA) { // technically we could use a simplified version and check for formChanges.length > 3, but in case any code changes later, this might break... @@ -1157,7 +1160,7 @@ class FormChangeItemModifierTypeGenerator extends ModifierTypeGenerator { let foundULTRA_Z = false, foundN_LUNA = false, foundN_SOLAR = false; - formChangeItemTriggers.forEach((fc, i) => { + formChangeItemTriggers.forEach((fc, _i) => { switch (fc.item) { case FormChangeItem.ULTRANECROZIUM_Z: foundULTRA_Z = true; @@ -1202,7 +1205,7 @@ export class TerastallizeModifierType extends PokemonHeldItemModifierType implem return i18next.t("modifierType:ModifierType.TerastallizeModifierType.name", { teraType: i18next.t(`pokemonInfo:Type.${Type[this.teraType]}`) }); } - getDescription(scene: BattleScene): string { + getDescription(): string { return i18next.t("modifierType:ModifierType.TerastallizeModifierType.description", { teraType: i18next.t(`pokemonInfo:Type.${Type[this.teraType]}`) }); } @@ -1220,7 +1223,7 @@ export class ContactHeldItemTransferChanceModifierType extends PokemonHeldItemMo this.chancePercent = chancePercent; } - getDescription(scene: BattleScene): string { + getDescription(): string { return i18next.t("modifierType:ModifierType.ContactHeldItemTransferChanceModifierType.description", { chancePercent: this.chancePercent }); } } @@ -1230,7 +1233,7 @@ export class TurnHeldItemTransferModifierType extends PokemonHeldItemModifierTyp super(localeKey, iconImage, (type, args) => new TurnHeldItemTransferModifier(type, (args[0] as Pokemon).id), group, soundName); } - getDescription(scene: BattleScene): string { + getDescription(): string { return i18next.t("modifierType:ModifierType.TurnHeldItemTransferModifierType.description"); } } @@ -1240,13 +1243,13 @@ export class EnemyAttackStatusEffectChanceModifierType extends ModifierType { private effect: StatusEffect; constructor(localeKey: string, iconImage: string, chancePercent: integer, effect: StatusEffect, stackCount?: integer) { - super(localeKey, iconImage, (type, args) => new EnemyAttackStatusEffectChanceModifier(type, effect, chancePercent, stackCount), "enemy_status_chance"); + super(localeKey, iconImage, (type, _args) => new EnemyAttackStatusEffectChanceModifier(type, effect, chancePercent, stackCount), "enemy_status_chance"); this.chancePercent = chancePercent; this.effect = effect; } - getDescription(scene: BattleScene): string { + getDescription(): string { return i18next.t("modifierType:ModifierType.EnemyAttackStatusEffectChanceModifierType.description", { chancePercent: this.chancePercent, statusEffect: getStatusEffectDescriptor(this.effect), @@ -1263,7 +1266,7 @@ export class EnemyEndureChanceModifierType extends ModifierType { this.chancePercent = chancePercent; } - getDescription(scene: BattleScene): string { + getDescription(): string { return i18next.t("modifierType:ModifierType.EnemyEndureChanceModifierType.description", { chancePercent: this.chancePercent }); } } @@ -1279,9 +1282,9 @@ type WeightedModifierTypeWeightFunc = (party: Pokemon[], rerollCount?: integer) * @returns A WeightedModifierTypeWeightFunc */ function skipInClassicAfterWave(wave: integer, defaultWeight: integer): WeightedModifierTypeWeightFunc { - return (party: Pokemon[]) => { - const gameMode = party[0].scene.gameMode; - const currentWave = party[0].scene.currentBattle.waveIndex; + return () => { + const gameMode = globalScene.gameMode; + const currentWave = globalScene.currentBattle.waveIndex; return gameMode.isClassic && currentWave >= wave ? 0 : defaultWeight; }; } @@ -1304,9 +1307,9 @@ function skipInLastClassicWaveOrDefault(defaultWeight: integer) : WeightedModifi * @returns A WeightedModifierTypeWeightFunc */ function lureWeightFunc(maxBattles: number, weight: number): WeightedModifierTypeWeightFunc { - return (party: Pokemon[]) => { - const lures = party[0].scene.getModifiers(DoubleBattleChanceBoosterModifier); - return !(party[0].scene.gameMode.isClassic && party[0].scene.currentBattle.waveIndex === 199) && (lures.length === 0 || lures.filter(m => m.getMaxBattles() === maxBattles && m.getBattleCount() >= maxBattles * 0.6).length === 0) ? weight : 0; + return () => { + const lures = globalScene.getModifiers(DoubleBattleChanceBoosterModifier); + return !(globalScene.gameMode.isClassic && globalScene.currentBattle.waveIndex === 199) && (lures.length === 0 || lures.filter(m => m.getMaxBattles() === maxBattles && m.getBattleCount() >= maxBattles * 0.6).length === 0) ? weight : 0; }; } class WeightedModifierType { @@ -1440,7 +1443,7 @@ export const modifierTypes = { TEMP_STAT_STAGE_BOOSTER: () => new TempStatStageBoosterModifierTypeGenerator(), DIRE_HIT: () => new class extends ModifierType { - getDescription(_scene: BattleScene): string { + getDescription(): string { return i18next.t("modifierType:ModifierType.TempStatStageBoosterModifierType.description", { stat: i18next.t("modifierType:ModifierType.DIRE_HIT.extra.raises"), amount: i18next.t("modifierType:ModifierType.TempStatStageBoosterModifierType.extra.stage") @@ -1452,7 +1455,7 @@ export const modifierTypes = { ATTACK_TYPE_BOOSTER: () => new AttackTypeBoosterModifierTypeGenerator(), - MINT: () => new ModifierTypeGenerator((party: Pokemon[], pregenArgs?: any[]) => { + MINT: () => new ModifierTypeGenerator((_party: Pokemon[], pregenArgs?: any[]) => { if (pregenArgs && (pregenArgs.length === 1) && (pregenArgs[0] in Nature)) { return new PokemonNatureChangeModifierType(pregenArgs[0] as Nature); } @@ -1463,7 +1466,7 @@ export const modifierTypes = { if (pregenArgs && (pregenArgs.length === 1) && (pregenArgs[0] in Type)) { return new TerastallizeModifierType(pregenArgs[0] as Type); } - if (!party[0].scene.getModifiers(TerastallizeAccessModifier).length) { + if (!globalScene.getModifiers(TerastallizeAccessModifier).length) { return null; } let type: Type; @@ -1476,7 +1479,7 @@ export const modifierTypes = { return new TerastallizeModifierType(type); }), - BERRY: () => new ModifierTypeGenerator((party: Pokemon[], pregenArgs?: any[]) => { + BERRY: () => new ModifierTypeGenerator((_party: Pokemon[], pregenArgs?: any[]) => { if (pregenArgs && (pregenArgs.length === 1) && (pregenArgs[0] in BerryType)) { return new BerryModifierType(pregenArgs[0] as BerryType); } @@ -1584,19 +1587,19 @@ export const modifierTypes = { ENEMY_ENDURE_CHANCE: () => new EnemyEndureChanceModifierType("modifierType:ModifierType.ENEMY_ENDURE_CHANCE", "wl_reset_urge", 2), ENEMY_FUSED_CHANCE: () => new ModifierType("modifierType:ModifierType.ENEMY_FUSED_CHANCE", "wl_custom_spliced", (type, _args) => new EnemyFusionChanceModifier(type, 1)), - MYSTERY_ENCOUNTER_SHUCKLE_JUICE: () => new ModifierTypeGenerator((party: Pokemon[], pregenArgs?: any[]) => { + MYSTERY_ENCOUNTER_SHUCKLE_JUICE: () => new ModifierTypeGenerator((_party: Pokemon[], pregenArgs?: any[]) => { if (pregenArgs) { return new PokemonBaseStatTotalModifierType(pregenArgs[0] as number); } return new PokemonBaseStatTotalModifierType(randSeedInt(20, 1)); }), - MYSTERY_ENCOUNTER_OLD_GATEAU: () => new ModifierTypeGenerator((party: Pokemon[], pregenArgs?: any[]) => { + MYSTERY_ENCOUNTER_OLD_GATEAU: () => new ModifierTypeGenerator((_party: Pokemon[], pregenArgs?: any[]) => { if (pregenArgs) { return new PokemonBaseStatFlatModifierType(pregenArgs[0] as number, pregenArgs[1] as Stat[]); } return new PokemonBaseStatFlatModifierType(randSeedInt(20, 1), [ Stat.HP, Stat.ATK, Stat.DEF ]); }), - MYSTERY_ENCOUNTER_BLACK_SLUDGE: () => new ModifierTypeGenerator((party: Pokemon[], pregenArgs?: any[]) => { + MYSTERY_ENCOUNTER_BLACK_SLUDGE: () => new ModifierTypeGenerator((_party: Pokemon[], pregenArgs?: any[]) => { if (pregenArgs) { return new ModifierType("modifierType:ModifierType.MYSTERY_ENCOUNTER_BLACK_SLUDGE", "black_sludge", (type, _args) => new HealShopCostModifier(type, pregenArgs[0] as number)); } @@ -1612,17 +1615,16 @@ interface ModifierPool { /** * Used to check if the player has max of a given ball type in Classic - * @param party The player's party, just used to access the scene * @param ballType The {@linkcode PokeballType} being checked * @returns boolean: true if the player has the maximum of a given ball type */ -function hasMaximumBalls(party: Pokemon[], ballType: PokeballType): boolean { - return (party[0].scene.gameMode.isClassic && party[0].scene.pokeballCounts[ballType] >= MAX_PER_TYPE_POKEBALLS); +function hasMaximumBalls(ballType: PokeballType): boolean { + return (globalScene.gameMode.isClassic && globalScene.pokeballCounts[ballType] >= MAX_PER_TYPE_POKEBALLS); } const modifierPool: ModifierPool = { [ModifierTier.COMMON]: [ - new WeightedModifierType(modifierTypes.POKEBALL, (party: Pokemon[]) => (hasMaximumBalls(party, PokeballType.POKEBALL)) ? 0 : 6, 6), + new WeightedModifierType(modifierTypes.POKEBALL, () => (hasMaximumBalls(PokeballType.POKEBALL)) ? 0 : 6, 6), new WeightedModifierType(modifierTypes.RARE_CANDY, 2), new WeightedModifierType(modifierTypes.POTION, (party: Pokemon[]) => { const thresholdPartyMemberCount = Math.min(party.filter(p => (p.getInverseHp() >= 10 && p.getHpRatio() <= 0.875) && !p.isFainted()).length, 3); @@ -1650,7 +1652,7 @@ const modifierPool: ModifierPool = { m.setTier(ModifierTier.COMMON); return m; }), [ModifierTier.GREAT]: [ - new WeightedModifierType(modifierTypes.GREAT_BALL, (party: Pokemon[]) => (hasMaximumBalls(party, PokeballType.GREAT_BALL)) ? 0 : 6, 6), + new WeightedModifierType(modifierTypes.GREAT_BALL, () => (hasMaximumBalls(PokeballType.GREAT_BALL)) ? 0 : 6, 6), new WeightedModifierType(modifierTypes.PP_UP, 2), new WeightedModifierType(modifierTypes.FULL_HEAL, (party: Pokemon[]) => { const statusEffectPartyMemberCount = Math.min(party.filter(p => p.hp && !!p.status && !p.getHeldItems().some(i => { @@ -1703,10 +1705,10 @@ const modifierPool: ModifierPool = { new WeightedModifierType(modifierTypes.DIRE_HIT, 4), new WeightedModifierType(modifierTypes.SUPER_LURE, lureWeightFunc(15, 4)), new WeightedModifierType(modifierTypes.NUGGET, skipInLastClassicWaveOrDefault(5)), - new WeightedModifierType(modifierTypes.EVOLUTION_ITEM, (party: Pokemon[]) => { - return Math.min(Math.ceil(party[0].scene.currentBattle.waveIndex / 15), 8); + new WeightedModifierType(modifierTypes.EVOLUTION_ITEM, () => { + return Math.min(Math.ceil(globalScene.currentBattle.waveIndex / 15), 8); }, 8), - new WeightedModifierType(modifierTypes.MAP, (party: Pokemon[]) => party[0].scene.gameMode.isClassic && party[0].scene.currentBattle.waveIndex < 180 ? 2 : 0, 2), + new WeightedModifierType(modifierTypes.MAP, () => globalScene.gameMode.isClassic && globalScene.currentBattle.waveIndex < 180 ? 2 : 0, 2), new WeightedModifierType(modifierTypes.SOOTHE_BELL, 2), new WeightedModifierType(modifierTypes.TM_GREAT, 3), new WeightedModifierType(modifierTypes.MEMORY_MUSHROOM, (party: Pokemon[]) => { @@ -1718,22 +1720,22 @@ const modifierPool: ModifierPool = { }, 4), new WeightedModifierType(modifierTypes.BASE_STAT_BOOSTER, 3), new WeightedModifierType(modifierTypes.TERA_SHARD, 1), - new WeightedModifierType(modifierTypes.DNA_SPLICERS, (party: Pokemon[]) => party[0].scene.gameMode.isSplicedOnly && party.filter(p => !p.fusionSpecies).length > 1 ? 4 : 0), - new WeightedModifierType(modifierTypes.VOUCHER, (party: Pokemon[], rerollCount: integer) => !party[0].scene.gameMode.isDaily ? Math.max(1 - rerollCount, 0) : 0, 1), + new WeightedModifierType(modifierTypes.DNA_SPLICERS, (party: Pokemon[]) => globalScene.gameMode.isSplicedOnly && party.filter(p => !p.fusionSpecies).length > 1 ? 4 : 0), + new WeightedModifierType(modifierTypes.VOUCHER, (_party: Pokemon[], rerollCount: integer) => !globalScene.gameMode.isDaily ? Math.max(1 - rerollCount, 0) : 0, 1), ].map(m => { m.setTier(ModifierTier.GREAT); return m; }), [ModifierTier.ULTRA]: [ - new WeightedModifierType(modifierTypes.ULTRA_BALL, (party: Pokemon[]) => (hasMaximumBalls(party, PokeballType.ULTRA_BALL)) ? 0 : 15, 15), + new WeightedModifierType(modifierTypes.ULTRA_BALL, () => (hasMaximumBalls(PokeballType.ULTRA_BALL)) ? 0 : 15, 15), new WeightedModifierType(modifierTypes.MAX_LURE, lureWeightFunc(30, 4)), new WeightedModifierType(modifierTypes.BIG_NUGGET, skipInLastClassicWaveOrDefault(12)), new WeightedModifierType(modifierTypes.PP_MAX, 3), new WeightedModifierType(modifierTypes.MINT, 4), - new WeightedModifierType(modifierTypes.RARE_EVOLUTION_ITEM, (party: Pokemon[]) => Math.min(Math.ceil(party[0].scene.currentBattle.waveIndex / 15) * 4, 32), 32), - new WeightedModifierType(modifierTypes.FORM_CHANGE_ITEM, (party: Pokemon[]) => Math.min(Math.ceil(party[0].scene.currentBattle.waveIndex / 50), 4) * 6, 24), + new WeightedModifierType(modifierTypes.RARE_EVOLUTION_ITEM, () => Math.min(Math.ceil(globalScene.currentBattle.waveIndex / 15) * 4, 32), 32), + new WeightedModifierType(modifierTypes.FORM_CHANGE_ITEM, () => Math.min(Math.ceil(globalScene.currentBattle.waveIndex / 50), 4) * 6, 24), new WeightedModifierType(modifierTypes.AMULET_COIN, skipInLastClassicWaveOrDefault(3)), new WeightedModifierType(modifierTypes.EVIOLITE, (party: Pokemon[]) => { - const { gameMode, gameData } = party[0].scene; + const { gameMode, gameData } = globalScene; if (gameMode.isDaily || (!gameMode.isFreshStartChallenge() && gameData.isUnlocked(Unlockables.EVIOLITE))) { return party.some(p => { // Check if Pokemon's species (or fusion species, if applicable) can evolve or if they're G-Max'd @@ -1840,14 +1842,14 @@ const modifierPool: ModifierPool = { new WeightedModifierType(modifierTypes.EXP_CHARM, skipInLastClassicWaveOrDefault(8)), new WeightedModifierType(modifierTypes.EXP_SHARE, skipInLastClassicWaveOrDefault(10)), new WeightedModifierType(modifierTypes.EXP_BALANCE, skipInLastClassicWaveOrDefault(3)), - new WeightedModifierType(modifierTypes.TERA_ORB, (party: Pokemon[]) => Math.min(Math.max(Math.floor(party[0].scene.currentBattle.waveIndex / 50) * 2, 1), 4), 4), + new WeightedModifierType(modifierTypes.TERA_ORB, () => Math.min(Math.max(Math.floor(globalScene.currentBattle.waveIndex / 50) * 2, 1), 4), 4), new WeightedModifierType(modifierTypes.QUICK_CLAW, 3), new WeightedModifierType(modifierTypes.WIDE_LENS, 4), ].map(m => { m.setTier(ModifierTier.ULTRA); return m; }), [ModifierTier.ROGUE]: [ - new WeightedModifierType(modifierTypes.ROGUE_BALL, (party: Pokemon[]) => (hasMaximumBalls(party, PokeballType.ROGUE_BALL)) ? 0 : 16, 16), + new WeightedModifierType(modifierTypes.ROGUE_BALL, () => (hasMaximumBalls(PokeballType.ROGUE_BALL)) ? 0 : 16, 16), new WeightedModifierType(modifierTypes.RELIC_GOLD, skipInLastClassicWaveOrDefault(2)), new WeightedModifierType(modifierTypes.LEFTOVERS, 3), new WeightedModifierType(modifierTypes.SHELL_BELL, 3), @@ -1857,28 +1859,28 @@ const modifierPool: ModifierPool = { new WeightedModifierType(modifierTypes.BATON, 2), new WeightedModifierType(modifierTypes.SOUL_DEW, 7), //new WeightedModifierType(modifierTypes.OVAL_CHARM, 6), - new WeightedModifierType(modifierTypes.CATCHING_CHARM, (party: Pokemon[]) => party[0].scene.gameMode.isDaily || (!party[0].scene.gameMode.isFreshStartChallenge() && party[0].scene.gameData.getSpeciesCount(d => !!d.caughtAttr) > 100) ? 4 : 0, 4), + new WeightedModifierType(modifierTypes.CATCHING_CHARM, () => globalScene.gameMode.isDaily || (!globalScene.gameMode.isFreshStartChallenge() && globalScene.gameData.getSpeciesCount(d => !!d.caughtAttr) > 100) ? 4 : 0, 4), new WeightedModifierType(modifierTypes.ABILITY_CHARM, skipInClassicAfterWave(189, 6)), new WeightedModifierType(modifierTypes.FOCUS_BAND, 5), new WeightedModifierType(modifierTypes.KINGS_ROCK, 3), - new WeightedModifierType(modifierTypes.LOCK_CAPSULE, (party: Pokemon[]) => party[0].scene.gameMode.isClassic ? 0 : 3), + new WeightedModifierType(modifierTypes.LOCK_CAPSULE, () => globalScene.gameMode.isClassic ? 0 : 3), new WeightedModifierType(modifierTypes.SUPER_EXP_CHARM, skipInLastClassicWaveOrDefault(8)), - new WeightedModifierType(modifierTypes.RARE_FORM_CHANGE_ITEM, (party: Pokemon[]) => Math.min(Math.ceil(party[0].scene.currentBattle.waveIndex / 50), 4) * 6, 24), - new WeightedModifierType(modifierTypes.MEGA_BRACELET, (party: Pokemon[]) => Math.min(Math.ceil(party[0].scene.currentBattle.waveIndex / 50), 4) * 9, 36), - new WeightedModifierType(modifierTypes.DYNAMAX_BAND, (party: Pokemon[]) => Math.min(Math.ceil(party[0].scene.currentBattle.waveIndex / 50), 4) * 9, 36), - new WeightedModifierType(modifierTypes.VOUCHER_PLUS, (party: Pokemon[], rerollCount: integer) => !party[0].scene.gameMode.isDaily ? Math.max(3 - rerollCount * 1, 0) : 0, 3), + new WeightedModifierType(modifierTypes.RARE_FORM_CHANGE_ITEM, () => Math.min(Math.ceil(globalScene.currentBattle.waveIndex / 50), 4) * 6, 24), + new WeightedModifierType(modifierTypes.MEGA_BRACELET, () => Math.min(Math.ceil(globalScene.currentBattle.waveIndex / 50), 4) * 9, 36), + new WeightedModifierType(modifierTypes.DYNAMAX_BAND, () => Math.min(Math.ceil(globalScene.currentBattle.waveIndex / 50), 4) * 9, 36), + new WeightedModifierType(modifierTypes.VOUCHER_PLUS, (_party: Pokemon[], rerollCount: integer) => !globalScene.gameMode.isDaily ? Math.max(3 - rerollCount * 1, 0) : 0, 3), ].map(m => { m.setTier(ModifierTier.ROGUE); return m; }), [ModifierTier.MASTER]: [ - new WeightedModifierType(modifierTypes.MASTER_BALL, (party: Pokemon[]) => (hasMaximumBalls(party, PokeballType.MASTER_BALL)) ? 0 : 24, 24), + new WeightedModifierType(modifierTypes.MASTER_BALL, () => (hasMaximumBalls(PokeballType.MASTER_BALL)) ? 0 : 24, 24), new WeightedModifierType(modifierTypes.SHINY_CHARM, 14), new WeightedModifierType(modifierTypes.HEALING_CHARM, 18), new WeightedModifierType(modifierTypes.MULTI_LENS, 18), - new WeightedModifierType(modifierTypes.VOUCHER_PREMIUM, (party: Pokemon[], rerollCount: integer) => - !party[0].scene.gameMode.isDaily && !party[0].scene.gameMode.isEndless && !party[0].scene.gameMode.isSplicedOnly ? Math.max(5 - rerollCount * 2, 0) : 0, 5), - new WeightedModifierType(modifierTypes.DNA_SPLICERS, (party: Pokemon[]) => !party[0].scene.gameMode.isSplicedOnly && party.filter(p => !p.fusionSpecies).length > 1 ? 24 : 0, 24), - new WeightedModifierType(modifierTypes.MINI_BLACK_HOLE, (party: Pokemon[]) => (party[0].scene.gameMode.isDaily || (!party[0].scene.gameMode.isFreshStartChallenge() && party[0].scene.gameData.isUnlocked(Unlockables.MINI_BLACK_HOLE))) ? 1 : 0, 1), + new WeightedModifierType(modifierTypes.VOUCHER_PREMIUM, (_party: Pokemon[], rerollCount: integer) => + !globalScene.gameMode.isDaily && !globalScene.gameMode.isEndless && !globalScene.gameMode.isSplicedOnly ? Math.max(5 - rerollCount * 2, 0) : 0, 5), + new WeightedModifierType(modifierTypes.DNA_SPLICERS, (party: Pokemon[]) => !globalScene.gameMode.isSplicedOnly && party.filter(p => !p.fusionSpecies).length > 1 ? 24 : 0, 24), + new WeightedModifierType(modifierTypes.MINI_BLACK_HOLE, () => (globalScene.gameMode.isDaily || (!globalScene.gameMode.isFreshStartChallenge() && globalScene.gameData.isUnlocked(Unlockables.MINI_BLACK_HOLE))) ? 1 : 0, 1), ].map(m => { m.setTier(ModifierTier.MASTER); return m; }) @@ -2077,7 +2079,7 @@ export const itemPoolChecks: Map = new Ma export function regenerateModifierPoolThresholds(party: Pokemon[], poolType: ModifierPoolType, rerollCount: integer = 0) { const pool = getModifierPoolForType(poolType); - itemPoolChecks.forEach((v, k) => { + itemPoolChecks.forEach((_v, k) => { itemPoolChecks.set(k, false); }); @@ -2091,14 +2093,14 @@ export function regenerateModifierPoolThresholds(party: Pokemon[], poolType: Mod let i = 0; pool[t].reduce((total: integer, modifierType: WeightedModifierType) => { const weightedModifierType = modifierType as WeightedModifierType; - const existingModifiers = party[0].scene.findModifiers(m => m.type.id === weightedModifierType.modifierType.id, poolType === ModifierPoolType.PLAYER); + const existingModifiers = globalScene.findModifiers(m => m.type.id === weightedModifierType.modifierType.id, poolType === ModifierPoolType.PLAYER); const itemModifierType = weightedModifierType.modifierType instanceof ModifierTypeGenerator ? weightedModifierType.modifierType.generateType(party) : weightedModifierType.modifierType; const weight = !existingModifiers.length || itemModifierType instanceof PokemonHeldItemModifierType || itemModifierType instanceof FormChangeItemModifierType - || existingModifiers.find(m => m.stackCount < m.getMaxStackCount(party[0].scene, true)) + || existingModifiers.find(m => m.stackCount < m.getMaxStackCount(true)) ? weightedModifierType.weight instanceof Function ? (weightedModifierType.weight as Function)(party, rerollCount) : weightedModifierType.weight as integer @@ -2200,7 +2202,7 @@ export function getPlayerModifierTypeOptions(count: integer, party: PlayerPokemo // Guaranteed mod functions second if (customModifierSettings.guaranteedModifierTypeFuncs && customModifierSettings.guaranteedModifierTypeFuncs.length > 0) { - customModifierSettings.guaranteedModifierTypeFuncs!.forEach((mod, i) => { + customModifierSettings.guaranteedModifierTypeFuncs!.forEach((mod, _i) => { const modifierId = Object.keys(modifierTypes).find(k => modifierTypes[k] === mod) as string; let guaranteedMod: ModifierType = modifierTypes[modifierId]?.(); @@ -2319,7 +2321,7 @@ export function getPlayerShopModifierTypeOptionsForWave(waveIndex: integer, base return options.slice(0, Math.ceil(Math.max(waveIndex + 10, 0) / 30)).flat(); } -export function getEnemyBuffModifierForWave(tier: ModifierTier, enemyModifiers: PersistentModifier[], scene: BattleScene): EnemyPersistentModifier { +export function getEnemyBuffModifierForWave(tier: ModifierTier, enemyModifiers: PersistentModifier[]): EnemyPersistentModifier { let tierStackCount: number; switch (tier) { case ModifierTier.ULTRA: @@ -2337,7 +2339,7 @@ export function getEnemyBuffModifierForWave(tier: ModifierTier, enemyModifiers: let candidate = getNewModifierTypeOption([], ModifierPoolType.ENEMY_BUFF, tier); let r = 0; let matchingModifier: PersistentModifier | undefined; - while (++r < retryCount && (matchingModifier = enemyModifiers.find(m => m.type.id === candidate?.type?.id)) && matchingModifier.getMaxStackCount(scene) < matchingModifier.stackCount + (r < 10 ? tierStackCount : 1)) { + while (++r < retryCount && (matchingModifier = enemyModifiers.find(m => m.type.id === candidate?.type?.id)) && matchingModifier.getMaxStackCount() < matchingModifier.stackCount + (r < 10 ? tierStackCount : 1)) { candidate = getNewModifierTypeOption([], ModifierPoolType.ENEMY_BUFF, tier); } @@ -2528,11 +2530,11 @@ export class ModifierTypeOption { * @returns A number between 0 and 14 based on the party's total luck value, or a random number between 0 and 14 if the player is in Daily Run mode. */ export function getPartyLuckValue(party: Pokemon[]): integer { - if (party[0].scene.gameMode.isDaily) { + if (globalScene.gameMode.isDaily) { const DailyLuck = new NumberHolder(0); - party[0].scene.executeWithSeedOffset(() => { + globalScene.executeWithSeedOffset(() => { DailyLuck.value = randSeedInt(15); // Random number between 0 and 14 - }, 0, party[0].scene.seed); + }, 0, globalScene.seed); return DailyLuck.value; } const luck = Phaser.Math.Clamp(party.map(p => p.isAllowedInBattle() ? p.getLuck() : 0) diff --git a/src/modifier/modifier.ts b/src/modifier/modifier.ts index 05d9e8b9897..37f88deea7f 100644 --- a/src/modifier/modifier.ts +++ b/src/modifier/modifier.ts @@ -1,4 +1,3 @@ -import type BattleScene from "#app/battle-scene"; import { FusionSpeciesFormEvolution, pokemonEvolutions } from "#app/data/balance/pokemon-evolutions"; import { getBerryEffectFunc, getBerryPredicate } from "#app/data/berry"; import { getLevelTotalExp } from "#app/data/exp"; @@ -20,7 +19,7 @@ import { addTextObject, TextStyle } from "#app/ui/text"; import { BooleanHolder, hslToHex, isNullOrUndefined, NumberHolder, toDmgValue } from "#app/utils"; import { BattlerTagType } from "#enums/battler-tag-type"; import { BerryType } from "#enums/berry-type"; -import { Moves } from "#enums/moves"; +import type { Moves } from "#enums/moves"; import type { Nature } from "#enums/nature"; import type { PokeballType } from "#enums/pokeball"; import { Species } from "#enums/species"; @@ -32,6 +31,7 @@ import { type DoubleBattleChanceBoosterModifierType, type EvolutionItemModifierT import { Color, ShadowColor } from "#enums/color"; import { FRIENDSHIP_GAIN_FROM_RARE_CANDY } from "#app/data/balance/starters"; import { applyAbAttrs, CommanderAbAttr } from "#app/data/ability"; +import { globalScene } from "#app/global-scene"; export type ModifierPredicate = (modifier: Modifier) => boolean; @@ -65,8 +65,8 @@ export class ModifierBar extends Phaser.GameObjects.Container { private player: boolean; private modifierCache: PersistentModifier[]; - constructor(scene: BattleScene, enemy?: boolean) { - super(scene, 1 + (enemy ? 302 : 0), 2); + constructor(enemy?: boolean) { + super(globalScene, 1 + (enemy ? 302 : 0), 2); this.player = !enemy; this.setScale(0.5); @@ -80,7 +80,7 @@ export class ModifierBar extends Phaser.GameObjects.Container { updateModifiers(modifiers: PersistentModifier[], hideHeldItems: boolean = false) { this.removeAll(true); - const visibleIconModifiers = modifiers.filter(m => m.isIconVisible(this.scene as BattleScene)); + const visibleIconModifiers = modifiers.filter(m => m.isIconVisible()); const nonPokemonSpecificModifiers = visibleIconModifiers.filter(m => !(m as PokemonHeldItemModifier).pokemonId).sort(modifierSortFunc); const pokemonSpecificModifiers = visibleIconModifiers.filter(m => (m as PokemonHeldItemModifier).pokemonId).sort(modifierSortFunc); @@ -89,7 +89,7 @@ export class ModifierBar extends Phaser.GameObjects.Container { const thisArg = this; sortedVisibleIconModifiers.forEach((modifier: PersistentModifier, i: number) => { - const icon = modifier.getIcon(this.scene as BattleScene); + const icon = modifier.getIcon(); if (i >= iconOverflowIndex) { icon.setVisible(false); } @@ -97,13 +97,13 @@ export class ModifierBar extends Phaser.GameObjects.Container { this.setModifierIconPosition(icon, sortedVisibleIconModifiers.length); icon.setInteractive(new Phaser.Geom.Rectangle(0, 0, 32, 24), Phaser.Geom.Rectangle.Contains); icon.on("pointerover", () => { - (this.scene as BattleScene).ui.showTooltip(modifier.type.name, modifier.type.getDescription(this.scene as BattleScene)); + globalScene.ui.showTooltip(modifier.type.name, modifier.type.getDescription()); if (this.modifierCache && this.modifierCache.length > iconOverflowIndex) { thisArg.updateModifierOverflowVisibility(true); } }); icon.on("pointerout", () => { - (this.scene as BattleScene).ui.hideTooltip(); + globalScene.ui.hideTooltip(); if (this.modifierCache && this.modifierCache.length > iconOverflowIndex) { thisArg.updateModifierOverflowVisibility(false); } @@ -171,10 +171,10 @@ export abstract class PersistentModifier extends Modifier { this.virtualStackCount = 0; } - add(modifiers: PersistentModifier[], virtual: boolean, scene: BattleScene): boolean { + add(modifiers: PersistentModifier[], virtual: boolean): boolean { for (const modifier of modifiers) { if (this.match(modifier)) { - return modifier.incrementStack(scene, this.stackCount, virtual); + return modifier.incrementStack(this.stackCount, virtual); } } @@ -192,8 +192,8 @@ export abstract class PersistentModifier extends Modifier { return []; } - incrementStack(scene: BattleScene, amount: number, virtual: boolean): boolean { - if (this.getStackCount() + amount <= this.getMaxStackCount(scene)) { + incrementStack(amount: number, virtual: boolean): boolean { + if (this.getStackCount() + amount <= this.getMaxStackCount()) { if (!virtual) { this.stackCount += amount; } else { @@ -209,26 +209,26 @@ export abstract class PersistentModifier extends Modifier { return this.stackCount + this.virtualStackCount; } - abstract getMaxStackCount(scene: BattleScene, forThreshold?: boolean): number; + abstract getMaxStackCount(forThreshold?: boolean): number; - isIconVisible(scene: BattleScene): boolean { + isIconVisible(): boolean { return true; } - getIcon(scene: BattleScene, forSummary?: boolean): Phaser.GameObjects.Container { - const container = scene.add.container(0, 0); + getIcon(forSummary?: boolean): Phaser.GameObjects.Container { + const container = globalScene.add.container(0, 0); - const item = scene.add.sprite(0, 12, "items"); + const item = globalScene.add.sprite(0, 12, "items"); item.setFrame(this.type.iconImage); item.setOrigin(0, 0.5); container.add(item); - const stackText = this.getIconStackText(scene); + const stackText = this.getIconStackText(); if (stackText) { container.add(stackText); } - const virtualStackText = this.getIconStackText(scene, true); + const virtualStackText = this.getIconStackText(true); if (virtualStackText) { container.add(virtualStackText); } @@ -236,14 +236,14 @@ export abstract class PersistentModifier extends Modifier { return container; } - getIconStackText(scene: BattleScene, virtual?: boolean): Phaser.GameObjects.BitmapText | null { - if (this.getMaxStackCount(scene) === 1 || (virtual && !this.virtualStackCount)) { + getIconStackText(virtual?: boolean): Phaser.GameObjects.BitmapText | null { + if (this.getMaxStackCount() === 1 || (virtual && !this.virtualStackCount)) { return null; } - const text = scene.add.bitmapText(10, 15, "item-count", this.stackCount.toString(), 11); + const text = globalScene.add.bitmapText(10, 15, "item-count", this.stackCount.toString(), 11); text.letterSpacing = -0.5; - if (this.getStackCount() >= this.getMaxStackCount(scene)) { + if (this.getStackCount() >= this.getMaxStackCount()) { text.setTint(0xf89890); } text.setOrigin(0, 0); @@ -278,8 +278,8 @@ export class AddPokeballModifier extends ConsumableModifier { * @param battleScene {@linkcode BattleScene} * @returns always `true` */ - override apply(battleScene: BattleScene): boolean { - const pokeballCounts = battleScene.pokeballCounts; + override apply(): boolean { + const pokeballCounts = globalScene.pokeballCounts; pokeballCounts[this.pokeballType] = Math.min(pokeballCounts[this.pokeballType] + this.count, MAX_PER_TYPE_POKEBALLS); return true; @@ -302,8 +302,8 @@ export class AddVoucherModifier extends ConsumableModifier { * @param battleScene {@linkcode BattleScene} * @returns always `true` */ - override apply(battleScene: BattleScene): boolean { - const voucherCounts = battleScene.gameData.voucherCounts; + override apply(): boolean { + const voucherCounts = globalScene.gameData.voucherCounts; voucherCounts[this.voucherType] += this.count; return true; @@ -343,13 +343,13 @@ export abstract class LapsingPersistentModifier extends PersistentModifier { * @param _scene N/A * @returns `true` if the modifier was successfully added or applied, false otherwise */ - add(modifiers: PersistentModifier[], _virtual: boolean, scene: BattleScene): boolean { + add(modifiers: PersistentModifier[], _virtual: boolean): boolean { for (const modifier of modifiers) { if (this.match(modifier)) { const modifierInstance = modifier as LapsingPersistentModifier; if (modifierInstance.getBattleCount() < modifierInstance.getMaxBattles()) { modifierInstance.resetBattleCount(); - scene.playSound("se/restore"); + globalScene.playSound("se/restore"); return true; } // should never get here @@ -371,8 +371,8 @@ export abstract class LapsingPersistentModifier extends PersistentModifier { return this.battleCount > 0; } - getIcon(scene: BattleScene): Phaser.GameObjects.Container { - const container = super.getIcon(scene); + getIcon(): Phaser.GameObjects.Container { + const container = super.getIcon(); // Linear interpolation on hue const hue = Math.floor(120 * (this.battleCount / this.maxBattles) + 5); @@ -381,7 +381,7 @@ export abstract class LapsingPersistentModifier extends PersistentModifier { const typeHex = hslToHex(hue, 0.5, 0.9); const strokeHex = hslToHex(hue, 0.7, 0.3); - const battleCountText = addTextObject(scene, 27, 0, this.battleCount.toString(), TextStyle.PARTY, { + const battleCountText = addTextObject(27, 0, this.battleCount.toString(), TextStyle.PARTY, { fontSize: "66px", color: typeHex, }); @@ -393,7 +393,7 @@ export abstract class LapsingPersistentModifier extends PersistentModifier { return container; } - getIconStackText(_scene: BattleScene, _virtual?: boolean): Phaser.GameObjects.BitmapText | null { + getIconStackText(_virtual?: boolean): Phaser.GameObjects.BitmapText | null { return null; } @@ -421,7 +421,7 @@ export abstract class LapsingPersistentModifier extends PersistentModifier { return [ this.maxBattles, this.battleCount ]; } - getMaxStackCount(_scene: BattleScene, _forThreshold?: boolean): number { + getMaxStackCount(_forThreshold?: boolean): number { // Must be an abitrary number greater than 1 return 2; } @@ -574,7 +574,7 @@ export class MapModifier extends PersistentModifier { return true; } - getMaxStackCount(scene: BattleScene): number { + getMaxStackCount(): number { return 1; } } @@ -592,7 +592,7 @@ export class MegaEvolutionAccessModifier extends PersistentModifier { return true; } - getMaxStackCount(scene: BattleScene): number { + getMaxStackCount(): number { return 1; } } @@ -615,7 +615,7 @@ export class GigantamaxAccessModifier extends PersistentModifier { return true; } - getMaxStackCount(scene: BattleScene): number { + getMaxStackCount(): number { return 1; } } @@ -638,7 +638,7 @@ export class TerastallizeAccessModifier extends PersistentModifier { return true; } - getMaxStackCount(scene: BattleScene): number { + getMaxStackCount(): number { return 1; } } @@ -680,33 +680,33 @@ export abstract class PokemonHeldItemModifier extends PersistentModifier { return !!pokemon && (this.pokemonId === -1 || pokemon.id === this.pokemonId); } - isIconVisible(scene: BattleScene): boolean { - return !!(this.getPokemon(scene)?.isOnField()); + isIconVisible(): boolean { + return !!(this.getPokemon()?.isOnField()); } - getIcon(scene: BattleScene, forSummary?: boolean): Phaser.GameObjects.Container { - const container = !forSummary ? scene.add.container(0, 0) : super.getIcon(scene); + getIcon(forSummary?: boolean): Phaser.GameObjects.Container { + const container = !forSummary ? globalScene.add.container(0, 0) : super.getIcon(); if (!forSummary) { - const pokemon = this.getPokemon(scene); + const pokemon = this.getPokemon(); if (pokemon) { - const pokemonIcon = scene.addPokemonIcon(pokemon, -2, 10, 0, 0.5); + const pokemonIcon = globalScene.addPokemonIcon(pokemon, -2, 10, 0, 0.5); container.add(pokemonIcon); container.setName(pokemon.id.toString()); } - const item = scene.add.sprite(16, this.virtualStackCount ? 8 : 16, "items"); + const item = globalScene.add.sprite(16, this.virtualStackCount ? 8 : 16, "items"); item.setScale(0.5); item.setOrigin(0, 0.5); item.setTexture("items", this.type.iconImage); container.add(item); - const stackText = this.getIconStackText(scene); + const stackText = this.getIconStackText(); if (stackText) { container.add(stackText); } - const virtualStackText = this.getIconStackText(scene, true); + const virtualStackText = this.getIconStackText(true); if (virtualStackText) { container.add(virtualStackText); } @@ -717,21 +717,21 @@ export abstract class PokemonHeldItemModifier extends PersistentModifier { return container; } - getPokemon(scene: BattleScene): Pokemon | undefined { - return this.pokemonId ? scene.getPokemonById(this.pokemonId) ?? undefined : undefined; + getPokemon(): Pokemon | undefined { + return this.pokemonId ? globalScene.getPokemonById(this.pokemonId) ?? undefined : undefined; } getScoreMultiplier(): number { return 1; } - getMaxStackCount(scene: BattleScene, forThreshold?: boolean): number { - const pokemon = this.getPokemon(scene); + getMaxStackCount(forThreshold?: boolean): number { + const pokemon = this.getPokemon(); if (!pokemon) { return 0; } if (pokemon.isPlayer() && forThreshold) { - return scene.getPlayerParty().map(p => this.getMaxHeldItemCount(p)).reduce((stackCount: number, maxStackCount: number) => Math.max(stackCount, maxStackCount), 0); + return globalScene.getPlayerParty().map(p => this.getMaxHeldItemCount(p)).reduce((stackCount: number, maxStackCount: number) => Math.max(stackCount, maxStackCount), 0); } return this.getMaxHeldItemCount(pokemon); } @@ -760,15 +760,14 @@ export abstract class LapsingPokemonHeldItemModifier extends PokemonHeldItemModi /** * Retrieve the {@linkcode Modifier | Modifiers} icon as a {@linkcode Phaser.GameObjects.Container | Container} - * @param scene The {@linkcode BattleScene} * @param forSummary `true` if the icon is for the summary screen * @returns the icon as a {@linkcode Phaser.GameObjects.Container | Container} */ - public getIcon(scene: BattleScene, forSummary?: boolean): Phaser.GameObjects.Container { - const container = super.getIcon(scene, forSummary); + public getIcon(forSummary?: boolean): Phaser.GameObjects.Container { + const container = super.getIcon(forSummary); - if (this.getPokemon(scene)?.isPlayer()) { - const battleCountText = addTextObject(scene, 27, 0, this.battlesLeft.toString(), TextStyle.PARTY, { fontSize: "66px", color: Color.PINK }); + if (this.getPokemon()?.isPlayer()) { + const battleCountText = addTextObject(27, 0, this.battlesLeft.toString(), TextStyle.PARTY, { fontSize: "66px", color: Color.PINK }); battleCountText.setShadow(0, 0); battleCountText.setStroke(ShadowColor.RED, 16); battleCountText.setOrigin(1, 0); @@ -782,7 +781,7 @@ export abstract class LapsingPokemonHeldItemModifier extends PokemonHeldItemModi return this.battlesLeft; } - getMaxStackCount(scene: BattleScene, forThreshold?: boolean): number { + getMaxStackCount(forThreshold?: boolean): number { return 1; } } @@ -820,10 +819,10 @@ export class TerastallizeModifier extends LapsingPokemonHeldItemModifier { */ override apply(pokemon: Pokemon): boolean { if (pokemon.isPlayer()) { - pokemon.scene.triggerPokemonFormChange(pokemon, SpeciesFormChangeTeraTrigger); - pokemon.scene.validateAchv(achvs.TERASTALLIZE); + globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeTeraTrigger); + globalScene.validateAchv(achvs.TERASTALLIZE); if (this.teraType === Type.STELLAR) { - pokemon.scene.validateAchv(achvs.STELLAR_TERASTALLIZE); + globalScene.validateAchv(achvs.STELLAR_TERASTALLIZE); } } pokemon.updateSpritePipelineData(); @@ -838,7 +837,7 @@ export class TerastallizeModifier extends LapsingPokemonHeldItemModifier { public override lapse(pokemon: Pokemon): boolean { const ret = super.lapse(pokemon); if (!ret) { - pokemon.scene.triggerPokemonFormChange(pokemon, SpeciesFormChangeLapseTeraTrigger); + globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeLapseTeraTrigger); pokemon.updateSpritePipelineData(); } return ret; @@ -944,19 +943,19 @@ export class EvoTrackerModifier extends PokemonHeldItemModifier { return true; } - getIconStackText(scene: BattleScene, virtual?: boolean): Phaser.GameObjects.BitmapText | null { - if (this.getMaxStackCount(scene) === 1 || (virtual && !this.virtualStackCount)) { + getIconStackText(virtual?: boolean): Phaser.GameObjects.BitmapText | null { + if (this.getMaxStackCount() === 1 || (virtual && !this.virtualStackCount)) { return null; } - const pokemon = scene.getPokemonById(this.pokemonId); + const pokemon = globalScene.getPokemonById(this.pokemonId); this.stackCount = pokemon ? pokemon.evoCounter + pokemon.getHeldItems().filter(m => m instanceof DamageMoneyRewardModifier).length - + pokemon.scene.findModifiers(m => m instanceof MoneyMultiplierModifier || m instanceof ExtraModifierModifier || m instanceof TempExtraModifierModifier).length + + globalScene.findModifiers(m => m instanceof MoneyMultiplierModifier || m instanceof ExtraModifierModifier || m instanceof TempExtraModifierModifier).length : this.stackCount; - const text = scene.add.bitmapText(10, 15, "item-count", this.stackCount.toString(), 11); + const text = globalScene.add.bitmapText(10, 15, "item-count", this.stackCount.toString(), 11); text.letterSpacing = -0.5; if (this.getStackCount() >= this.required) { text.setTint(0xf89890); @@ -968,7 +967,7 @@ export class EvoTrackerModifier extends PokemonHeldItemModifier { getMaxHeldItemCount(pokemon: Pokemon): number { this.stackCount = pokemon.evoCounter + pokemon.getHeldItems().filter(m => m instanceof DamageMoneyRewardModifier).length - + pokemon.scene.findModifiers(m => m instanceof MoneyMultiplierModifier || m instanceof ExtraModifierModifier || m instanceof TempExtraModifierModifier).length; + + globalScene.findModifiers(m => m instanceof MoneyMultiplierModifier || m instanceof ExtraModifierModifier || m instanceof TempExtraModifierModifier).length; return 999; } } @@ -1536,7 +1535,7 @@ export class SurviveDamageModifier extends PokemonHeldItemModifier { if (!surviveDamage.value && pokemon.randSeedInt(10) < this.getStackCount()) { surviveDamage.value = true; - pokemon.scene.queueMessage(i18next.t("modifier:surviveDamageApply", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), typeName: this.type.name })); + globalScene.queueMessage(i18next.t("modifier:surviveDamageApply", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), typeName: this.type.name })); return true; } @@ -1580,11 +1579,11 @@ export class BypassSpeedChanceModifier extends PokemonHeldItemModifier { override apply(pokemon: Pokemon, doBypassSpeed: BooleanHolder): boolean { if (!doBypassSpeed.value && pokemon.randSeedInt(10) < this.getStackCount()) { doBypassSpeed.value = true; - const isCommandFight = pokemon.scene.currentBattle.turnCommands[pokemon.getBattlerIndex()]?.command === Command.FIGHT; + const isCommandFight = globalScene.currentBattle.turnCommands[pokemon.getBattlerIndex()]?.command === Command.FIGHT; const hasQuickClaw = this.type instanceof PokemonHeldItemModifierType && this.type.id === "QUICK_CLAW"; if (isCommandFight && hasQuickClaw) { - pokemon.scene.queueMessage(i18next.t("modifier:bypassSpeedChanceApply", { pokemonName: getPokemonNameWithAffix(pokemon), itemName: i18next.t("modifierType:ModifierType.QUICK_CLAW.name") })); + globalScene.queueMessage(i18next.t("modifier:bypassSpeedChanceApply", { pokemonName: getPokemonNameWithAffix(pokemon), itemName: i18next.t("modifierType:ModifierType.QUICK_CLAW.name") })); } return true; } @@ -1668,8 +1667,7 @@ export class TurnHealModifier extends PokemonHeldItemModifier { */ override apply(pokemon: Pokemon): boolean { if (!pokemon.isFullHp()) { - const scene = pokemon.scene; - scene.unshiftPhase(new PokemonHealPhase(scene, pokemon.getBattlerIndex(), + globalScene.unshiftPhase(new PokemonHealPhase(pokemon.getBattlerIndex(), toDmgValue(pokemon.getMaxHp() / 16) * this.stackCount, i18next.t("modifier:turnHealApply", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), typeName: this.type.name }), true)); return true; } @@ -1761,8 +1759,7 @@ export class HitHealModifier extends PokemonHeldItemModifier { */ override apply(pokemon: Pokemon): boolean { if (pokemon.turnData.totalDamageDealt && !pokemon.isFullHp()) { - const scene = pokemon.scene; - scene.unshiftPhase(new PokemonHealPhase(scene, pokemon.getBattlerIndex(), + globalScene.unshiftPhase(new PokemonHealPhase(pokemon.getBattlerIndex(), toDmgValue(pokemon.turnData.totalDamageDealt / 8) * this.stackCount, i18next.t("modifier:hitHealApply", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), typeName: this.type.name }), true)); } @@ -1807,7 +1804,7 @@ export class LevelIncrementBoosterModifier extends PersistentModifier { return true; } - getMaxStackCount(scene: BattleScene, forThreshold?: boolean): number { + getMaxStackCount(forThreshold?: boolean): number { return 99; } } @@ -1851,7 +1848,7 @@ export class BerryModifier extends PokemonHeldItemModifier { */ override apply(pokemon: Pokemon): boolean { const preserve = new BooleanHolder(false); - pokemon.scene.applyModifiers(PreserveBerryModifier, pokemon.isPlayer(), pokemon, preserve); + globalScene.applyModifiers(PreserveBerryModifier, pokemon.isPlayer(), pokemon, preserve); getBerryEffectFunc(this.berryType)(pokemon); if (!preserve.value) { @@ -1906,7 +1903,7 @@ export class PreserveBerryModifier extends PersistentModifier { return true; } - getMaxStackCount(scene: BattleScene): number { + getMaxStackCount(): number { return 3; } } @@ -1931,14 +1928,14 @@ export class PokemonInstantReviveModifier extends PokemonHeldItemModifier { */ override apply(pokemon: Pokemon): boolean { // Restore the Pokemon to half HP - pokemon.scene.unshiftPhase(new PokemonHealPhase(pokemon.scene, pokemon.getBattlerIndex(), + globalScene.unshiftPhase(new PokemonHealPhase(pokemon.getBattlerIndex(), toDmgValue(pokemon.getMaxHp() / 2), i18next.t("modifier:pokemonInstantReviveApply", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), typeName: this.type.name }), false, false, true)); // Remove the Pokemon's FAINT status pokemon.resetStatus(true, false, true); // Reapply Commander on the Pokemon's side of the field, if applicable - const field = pokemon.isPlayer() ? pokemon.scene.getPlayerField() : pokemon.scene.getEnemyField(); + const field = pokemon.isPlayer() ? globalScene.getPlayerField() : globalScene.getEnemyField(); field.forEach((p) => applyAbAttrs(CommanderAbAttr, p, null, false)); return true; } @@ -1984,7 +1981,7 @@ export class ResetNegativeStatStageModifier extends PokemonHeldItemModifier { } if (statRestored) { - pokemon.scene.queueMessage(i18next.t("modifier:resetNegativeStatStageApply", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), typeName: this.type.name })); + globalScene.queueMessage(i18next.t("modifier:resetNegativeStatStageApply", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), typeName: this.type.name })); } return statRestored; } @@ -2020,8 +2017,8 @@ export abstract class ConsumablePokemonModifier extends ConsumableModifier { */ abstract override apply(playerPokemon: PlayerPokemon, ...args: unknown[]): boolean | Promise; - getPokemon(scene: BattleScene) { - return scene.getPlayerParty().find(p => p.id === this.pokemonId); + getPokemon() { + return globalScene.getPlayerParty().find(p => p.id === this.pokemonId); } } @@ -2189,7 +2186,7 @@ export class PokemonNatureChangeModifier extends ConsumablePokemonModifier { */ override apply(playerPokemon: PlayerPokemon): boolean { playerPokemon.setCustomNature(this.nature); - playerPokemon.scene.gameData.unlockSpeciesNature(playerPokemon.species, this.nature); + globalScene.gameData.unlockSpeciesNature(playerPokemon.species, this.nature); return true; } @@ -2207,17 +2204,17 @@ export class PokemonLevelIncrementModifier extends ConsumablePokemonModifier { * @returns always `true` */ override apply(playerPokemon: PlayerPokemon, levelCount: NumberHolder = new NumberHolder(1)): boolean { - playerPokemon.scene.applyModifiers(LevelIncrementBoosterModifier, true, levelCount); + globalScene.applyModifiers(LevelIncrementBoosterModifier, true, levelCount); playerPokemon.level += levelCount.value; - if (playerPokemon.level <= playerPokemon.scene.getMaxExpLevel(true)) { + if (playerPokemon.level <= globalScene.getMaxExpLevel(true)) { playerPokemon.exp = getLevelTotalExp(playerPokemon.level, playerPokemon.species.growthRate); playerPokemon.levelExp = 0; } playerPokemon.addFriendship(FRIENDSHIP_GAIN_FROM_RARE_CANDY); - playerPokemon.scene.unshiftPhase(new LevelUpPhase(playerPokemon.scene, playerPokemon.scene.getPlayerParty().indexOf(playerPokemon), playerPokemon.level - levelCount.value, playerPokemon.level)); + globalScene.unshiftPhase(new LevelUpPhase(globalScene.getPlayerParty().indexOf(playerPokemon), playerPokemon.level - levelCount.value, playerPokemon.level)); return true; } @@ -2237,7 +2234,7 @@ export class TmModifier extends ConsumablePokemonModifier { */ override apply(playerPokemon: PlayerPokemon): boolean { - playerPokemon.scene.unshiftPhase(new LearnMovePhase(playerPokemon.scene, playerPokemon.scene.getPlayerParty().indexOf(playerPokemon), this.type.moveId, LearnMoveType.TM)); + globalScene.unshiftPhase(new LearnMovePhase(globalScene.getPlayerParty().indexOf(playerPokemon), this.type.moveId, LearnMoveType.TM)); return true; } @@ -2259,7 +2256,7 @@ export class RememberMoveModifier extends ConsumablePokemonModifier { */ override apply(playerPokemon: PlayerPokemon, cost?: number): boolean { - playerPokemon.scene.unshiftPhase(new LearnMovePhase(playerPokemon.scene, playerPokemon.scene.getPlayerParty().indexOf(playerPokemon), playerPokemon.getLearnableLevelMoves()[this.levelMoveIndex], LearnMoveType.MEMORY, cost)); + globalScene.unshiftPhase(new LearnMovePhase(globalScene.getPlayerParty().indexOf(playerPokemon), playerPokemon.getLearnableLevelMoves()[this.levelMoveIndex], LearnMoveType.MEMORY, cost)); return true; } @@ -2294,7 +2291,7 @@ export class EvolutionItemModifier extends ConsumablePokemonModifier { } if (matchingEvolution) { - playerPokemon.scene.unshiftPhase(new EvolutionPhase(playerPokemon.scene, playerPokemon, matchingEvolution, playerPokemon.level - 1)); + globalScene.unshiftPhase(new EvolutionPhase(playerPokemon, matchingEvolution, playerPokemon.level - 1)); return true; } @@ -2354,7 +2351,7 @@ export class MultipleParticipantExpBonusModifier extends PersistentModifier { return new MultipleParticipantExpBonusModifier(this.type, this.stackCount); } - getMaxStackCount(scene: BattleScene): number { + getMaxStackCount(): number { return 5; } } @@ -2391,7 +2388,7 @@ export class HealingBoosterModifier extends PersistentModifier { return true; } - getMaxStackCount(scene: BattleScene): number { + getMaxStackCount(): number { return 5; } } @@ -2432,7 +2429,7 @@ export class ExpBoosterModifier extends PersistentModifier { return true; } - getMaxStackCount(scene: BattleScene, forThreshold?: boolean): number { + getMaxStackCount(forThreshold?: boolean): number { return this.boostMultiplier < 1 ? this.boostMultiplier < 0.6 ? 99 : 30 : 10; } } @@ -2511,7 +2508,7 @@ export class ExpShareModifier extends PersistentModifier { return true; } - getMaxStackCount(scene: BattleScene): number { + getMaxStackCount(): number { return 5; } } @@ -2537,7 +2534,7 @@ export class ExpBalanceModifier extends PersistentModifier { return true; } - getMaxStackCount(scene: BattleScene): number { + getMaxStackCount(): number { return 4; } } @@ -2774,7 +2771,7 @@ export class PokemonFormChangeItemModifier extends PokemonHeldItemModifier { this.active = false; } - const ret = pokemon.scene.triggerPokemonFormChange(pokemon, SpeciesFormChangeItemTrigger); + const ret = globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeItemTrigger); if (switchActive) { this.active = true; @@ -2799,21 +2796,20 @@ export class MoneyRewardModifier extends ConsumableModifier { /** * Applies {@linkcode MoneyRewardModifier} - * @param battleScene The current {@linkcode BattleScene} * @returns always `true` */ - override apply(battleScene: BattleScene): boolean { - const moneyAmount = new NumberHolder(battleScene.getWaveMoneyAmount(this.moneyMultiplier)); + override apply(): boolean { + const moneyAmount = new NumberHolder(globalScene.getWaveMoneyAmount(this.moneyMultiplier)); - battleScene.applyModifiers(MoneyMultiplierModifier, true, moneyAmount); + globalScene.applyModifiers(MoneyMultiplierModifier, true, moneyAmount); - battleScene.addMoney(moneyAmount.value); + globalScene.addMoney(moneyAmount.value); - battleScene.getPlayerParty().map(p => { + globalScene.getPlayerParty().map(p => { if (p.species?.speciesId === Species.GIMMIGHOUL || p.fusionSpecies?.speciesId === Species.GIMMIGHOUL) { p.evoCounter ? p.evoCounter += Math.min(Math.floor(this.moneyMultiplier), 3) : p.evoCounter = Math.min(Math.floor(this.moneyMultiplier), 3); const modifier = getModifierType(modifierTypes.EVOLUTION_TRACKER_GIMMIGHOUL).newModifier(p) as EvoTrackerModifier; - battleScene.addModifier(modifier); + globalScene.addModifier(modifier); } }); @@ -2845,7 +2841,7 @@ export class MoneyMultiplierModifier extends PersistentModifier { return true; } - getMaxStackCount(scene: BattleScene): number { + getMaxStackCount(): number { return 5; } } @@ -2870,10 +2866,9 @@ export class DamageMoneyRewardModifier extends PokemonHeldItemModifier { * @returns always `true` */ override apply(pokemon: Pokemon, multiplier: NumberHolder): boolean { - const battleScene = pokemon.scene; const moneyAmount = new NumberHolder(Math.floor(multiplier.value * (0.5 * this.getStackCount()))); - battleScene.applyModifiers(MoneyMultiplierModifier, true, moneyAmount); - battleScene.addMoney(moneyAmount.value); + globalScene.applyModifiers(MoneyMultiplierModifier, true, moneyAmount); + globalScene.addMoney(moneyAmount.value); return true; } @@ -2894,17 +2889,16 @@ export class MoneyInterestModifier extends PersistentModifier { /** * Applies {@linkcode MoneyInterestModifier} - * @param battleScene The current {@linkcode BattleScene} * @returns always `true` */ - override apply(battleScene: BattleScene): boolean { - const interestAmount = Math.floor(battleScene.money * 0.1 * this.getStackCount()); - battleScene.addMoney(interestAmount); + override apply(): boolean { + const interestAmount = Math.floor(globalScene.money * 0.1 * this.getStackCount()); + globalScene.addMoney(interestAmount); const userLocale = navigator.language || "en-US"; const formattedMoneyAmount = interestAmount.toLocaleString(userLocale); const message = i18next.t("modifier:moneyInterestApply", { moneyAmount: formattedMoneyAmount, typeName: this.type.name }); - battleScene.queueMessage(message, undefined, true); + globalScene.queueMessage(message, undefined, true); return true; } @@ -2913,7 +2907,7 @@ export class MoneyInterestModifier extends PersistentModifier { return new MoneyInterestModifier(this.type, this.stackCount); } - getMaxStackCount(scene: BattleScene): number { + getMaxStackCount(): number { return 5; } } @@ -2942,7 +2936,7 @@ export class HiddenAbilityRateBoosterModifier extends PersistentModifier { return true; } - getMaxStackCount(scene: BattleScene): number { + getMaxStackCount(): number { return 4; } } @@ -2971,7 +2965,7 @@ export class ShinyRateBoosterModifier extends PersistentModifier { return true; } - getMaxStackCount(scene: BattleScene): number { + getMaxStackCount(): number { return 4; } } @@ -3003,7 +2997,7 @@ export class CriticalCatchChanceBoosterModifier extends PersistentModifier { return true; } - getMaxStackCount(scene: BattleScene): number { + getMaxStackCount(): number { return 3; } } @@ -3029,7 +3023,7 @@ export class LockModifierTiersModifier extends PersistentModifier { return new LockModifierTiersModifier(this.type, this.stackCount); } - getMaxStackCount(scene: BattleScene): number { + getMaxStackCount(): number { return 1; } } @@ -3069,7 +3063,7 @@ export class HealShopCostModifier extends PersistentModifier { return super.getArgs().concat(this.shopMultiplier); } - getMaxStackCount(scene: BattleScene): number { + getMaxStackCount(): number { return 1; } } @@ -3095,7 +3089,7 @@ export class BoostBugSpawnModifier extends PersistentModifier { return true; } - getMaxStackCount(scene: BattleScene): number { + getMaxStackCount(): number { return 1; } } @@ -3173,7 +3167,7 @@ export abstract class HeldItemTransferModifier extends PokemonHeldItemModifier { const poolType = pokemon.isPlayer() ? ModifierPoolType.PLAYER : pokemon.hasTrainer() ? ModifierPoolType.TRAINER : ModifierPoolType.WILD; const transferredModifierTypes: ModifierType[] = []; - const itemModifiers = pokemon.scene.findModifiers(m => m instanceof PokemonHeldItemModifier + const itemModifiers = globalScene.findModifiers(m => m instanceof PokemonHeldItemModifier && m.pokemonId === targetPokemon.id && m.isTransferable, targetPokemon.isPlayer()) as PokemonHeldItemModifier[]; let highestItemTier = itemModifiers.map(m => m.type.getOrInferTier(poolType)).reduce((highestTier, tier) => Math.max(tier!, highestTier), 0); // TODO: is this bang correct? let tierItemModifiers = itemModifiers.filter(m => m.type.getOrInferTier(poolType) === highestItemTier); @@ -3191,7 +3185,7 @@ export abstract class HeldItemTransferModifier extends PokemonHeldItemModifier { } const randItemIndex = pokemon.randSeedInt(itemModifiers.length); const randItem = itemModifiers[randItemIndex]; - heldItemTransferPromises.push(pokemon.scene.tryTransferHeldItemModifier(randItem, pokemon, false).then(success => { + heldItemTransferPromises.push(globalScene.tryTransferHeldItemModifier(randItem, pokemon, false).then(success => { if (success) { transferredModifierTypes.push(randItem.type); itemModifiers.splice(randItemIndex, 1); @@ -3201,7 +3195,7 @@ export abstract class HeldItemTransferModifier extends PokemonHeldItemModifier { Promise.all(heldItemTransferPromises).then(() => { for (const mt of transferredModifierTypes) { - pokemon.scene.queueMessage(this.getTransferMessage(pokemon, targetPokemon, mt)); + globalScene.queueMessage(this.getTransferMessage(pokemon, targetPokemon, mt)); } }); @@ -3320,7 +3314,7 @@ export class IvScannerModifier extends PersistentModifier { return true; } - getMaxStackCount(scene: BattleScene): number { + getMaxStackCount(): number { return 3; } } @@ -3349,7 +3343,7 @@ export class ExtraModifierModifier extends PersistentModifier { return true; } - getMaxStackCount(scene: BattleScene): number { + getMaxStackCount(): number { return 3; } } @@ -3370,17 +3364,16 @@ export class TempExtraModifierModifier extends LapsingPersistentModifier { * If no existing Silver Pokeballs are found, will add a new one. * @param modifiers {@linkcode PersistentModifier} array of the player's modifiers * @param _virtual N/A - * @param scene * @returns true if the modifier was successfully added or applied, false otherwise */ - add(modifiers: PersistentModifier[], _virtual: boolean, scene: BattleScene): boolean { + add(modifiers: PersistentModifier[], _virtual: boolean): boolean { for (const modifier of modifiers) { if (this.match(modifier)) { const modifierInstance = modifier as TempExtraModifierModifier; const newBattleCount = this.getMaxBattles() + modifierInstance.getBattleCount(); modifierInstance.setNewBattleCount(newBattleCount); - scene.playSound("se/restore"); + globalScene.playSound("se/restore"); return true; } } @@ -3413,7 +3406,7 @@ export abstract class EnemyPersistentModifier extends PersistentModifier { super(type, stackCount); } - getMaxStackCount(scene: BattleScene): number { + getMaxStackCount(): number { return 5; } } @@ -3438,7 +3431,7 @@ abstract class EnemyDamageMultiplierModifier extends EnemyPersistentModifier { return true; } - getMaxStackCount(scene: BattleScene): number { + getMaxStackCount(): number { return 99; } } @@ -3461,7 +3454,7 @@ export class EnemyDamageBoosterModifier extends EnemyDamageMultiplierModifier { return [ (this.damageMultiplier - 1) * 100 ]; } - getMaxStackCount(scene: BattleScene): number { + getMaxStackCount(): number { return 999; } } @@ -3484,8 +3477,8 @@ export class EnemyDamageReducerModifier extends EnemyDamageMultiplierModifier { return [ (1 - this.damageMultiplier) * 100 ]; } - getMaxStackCount(scene: BattleScene): number { - return scene.currentBattle.waveIndex < 2000 ? super.getMaxStackCount(scene) : 999; + getMaxStackCount(): number { + return globalScene.currentBattle.waveIndex < 2000 ? super.getMaxStackCount() : 999; } } @@ -3518,8 +3511,7 @@ export class EnemyTurnHealModifier extends EnemyPersistentModifier { */ override apply(enemyPokemon: Pokemon): boolean { if (!enemyPokemon.isFullHp()) { - const scene = enemyPokemon.scene; - scene.unshiftPhase(new PokemonHealPhase(scene, enemyPokemon.getBattlerIndex(), + globalScene.unshiftPhase(new PokemonHealPhase(enemyPokemon.getBattlerIndex(), Math.max(Math.floor(enemyPokemon.getMaxHp() / (100 / this.healPercent)) * this.stackCount, 1), i18next.t("modifier:enemyTurnHealApply", { pokemonNameWithAffix: getPokemonNameWithAffix(enemyPokemon) }), true, false, false, false, true)); return true; } @@ -3527,7 +3519,7 @@ export class EnemyTurnHealModifier extends EnemyPersistentModifier { return false; } - getMaxStackCount(scene: BattleScene): number { + getMaxStackCount(): number { return 10; } } @@ -3569,7 +3561,7 @@ export class EnemyAttackStatusEffectChanceModifier extends EnemyPersistentModifi return false; } - getMaxStackCount(scene: BattleScene): number { + getMaxStackCount(): number { return 10; } } @@ -3603,7 +3595,7 @@ export class EnemyStatusEffectHealChanceModifier extends EnemyPersistentModifier */ override apply(enemyPokemon: Pokemon): boolean { if (enemyPokemon.status && Phaser.Math.RND.realInRange(0, 1) < (this.chance * this.getStackCount())) { - enemyPokemon.scene.queueMessage(getStatusEffectHealText(enemyPokemon.status.effect, getPokemonNameWithAffix(enemyPokemon))); + globalScene.queueMessage(getStatusEffectHealText(enemyPokemon.status.effect, getPokemonNameWithAffix(enemyPokemon))); enemyPokemon.resetStatus(); enemyPokemon.updateInfo(); return true; @@ -3612,7 +3604,7 @@ export class EnemyStatusEffectHealChanceModifier extends EnemyPersistentModifier return false; } - getMaxStackCount(scene: BattleScene): number { + getMaxStackCount(): number { return 10; } } @@ -3656,7 +3648,7 @@ export class EnemyEndureChanceModifier extends EnemyPersistentModifier { return true; } - getMaxStackCount(scene: BattleScene): number { + getMaxStackCount(): number { return 10; } } @@ -3697,7 +3689,7 @@ export class EnemyFusionChanceModifier extends EnemyPersistentModifier { return true; } - getMaxStackCount(scene: BattleScene): number { + getMaxStackCount(): number { return 10; } } @@ -3706,18 +3698,17 @@ export class EnemyFusionChanceModifier extends EnemyPersistentModifier { * Uses either `MODIFIER_OVERRIDE` in overrides.ts to set {@linkcode PersistentModifier}s for either: * - The player * - The enemy - * @param scene current {@linkcode BattleScene} * @param isPlayer {@linkcode boolean} for whether the player (`true`) or enemy (`false`) is being overridden */ -export function overrideModifiers(scene: BattleScene, isPlayer: boolean = true): void { +export function overrideModifiers(isPlayer: boolean = true): void { const modifiersOverride: ModifierOverride[] = isPlayer ? Overrides.STARTING_MODIFIER_OVERRIDE : Overrides.OPP_MODIFIER_OVERRIDE; - if (!modifiersOverride || modifiersOverride.length === 0 || !scene) { + if (!modifiersOverride || modifiersOverride.length === 0 || !globalScene) { return; } // If it's the opponent, clear all of their current modifiers to avoid stacking if (!isPlayer) { - scene.clearEnemyModifiers(); + globalScene.clearEnemyModifiers(); } modifiersOverride.forEach(item => { @@ -3734,9 +3725,9 @@ export function overrideModifiers(scene: BattleScene, isPlayer: boolean = true): modifier.stackCount = item.count || 1; if (isPlayer) { - scene.addModifier(modifier, true, false, false, true); + globalScene.addModifier(modifier, true, false, false, true); } else { - scene.addEnemyModifier(modifier, true, true); + globalScene.addEnemyModifier(modifier, true, true); } } }); @@ -3746,18 +3737,17 @@ export function overrideModifiers(scene: BattleScene, isPlayer: boolean = true): * Uses either `HELD_ITEMS_OVERRIDE` in overrides.ts to set {@linkcode PokemonHeldItemModifier}s for either: * - The first member of the player's team when starting a new game * - An enemy {@linkcode Pokemon} being spawned in - * @param scene current {@linkcode BattleScene} * @param pokemon {@linkcode Pokemon} whose held items are being overridden * @param isPlayer {@linkcode boolean} for whether the {@linkcode pokemon} is the player's (`true`) or an enemy (`false`) */ -export function overrideHeldItems(scene: BattleScene, pokemon: Pokemon, isPlayer: boolean = true): void { +export function overrideHeldItems(pokemon: Pokemon, isPlayer: boolean = true): void { const heldItemsOverride: ModifierOverride[] = isPlayer ? Overrides.STARTING_HELD_ITEMS_OVERRIDE : Overrides.OPP_HELD_ITEMS_OVERRIDE; - if (!heldItemsOverride || heldItemsOverride.length === 0 || !scene) { + if (!heldItemsOverride || heldItemsOverride.length === 0 || !globalScene) { return; } if (!isPlayer) { - scene.clearEnemyHeldItemModifiers(pokemon); + globalScene.clearEnemyHeldItemModifiers(pokemon); } heldItemsOverride.forEach(item => { @@ -3775,9 +3765,9 @@ export function overrideHeldItems(scene: BattleScene, pokemon: Pokemon, isPlayer heldItemModifier.pokemonId = pokemon.id; heldItemModifier.stackCount = qty; if (isPlayer) { - scene.addModifier(heldItemModifier, true, false, false, true); + globalScene.addModifier(heldItemModifier, true, false, false, true); } else { - scene.addEnemyModifier(heldItemModifier, true, true); + globalScene.addEnemyModifier(heldItemModifier, true, true); } } }); diff --git a/src/overrides.ts b/src/overrides.ts index 85be47d95cc..db54095a75a 100644 --- a/src/overrides.ts +++ b/src/overrides.ts @@ -1,19 +1,19 @@ import { type PokeballCounts } from "#app/battle-scene"; -import { Gender } from "#app/data/gender"; -import { Variant } from "#app/data/variant"; +import type { Gender } from "#app/data/gender"; +import type { Variant } from "#app/data/variant"; import { type ModifierOverride } from "#app/modifier/modifier-type"; -import { Unlockables } from "#app/system/unlockables"; +import type { Unlockables } from "#app/system/unlockables"; import { Abilities } from "#enums/abilities"; import { Biome } from "#enums/biome"; -import { EggTier } from "#enums/egg-type"; -import { Moves } from "#enums/moves"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import type { EggTier } from "#enums/egg-type"; +import type { Moves } from "#enums/moves"; +import type { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import type { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { PokeballType } from "#enums/pokeball"; -import { Species } from "#enums/species"; +import type { Species } from "#enums/species"; import { StatusEffect } from "#enums/status-effect"; -import { TimeOfDay } from "#enums/time-of-day"; -import { VariantTier } from "#enums/variant-tier"; +import type { TimeOfDay } from "#enums/time-of-day"; +import type { VariantTier } from "#enums/variant-tier"; import { WeatherType } from "#enums/weather-type"; /** diff --git a/src/phase.ts b/src/phase.ts index 5cf91f2c478..8da00d78b61 100644 --- a/src/phase.ts +++ b/src/phase.ts @@ -1,19 +1,13 @@ -import BattleScene from "./battle-scene"; +import { globalScene } from "#app/global-scene"; export class Phase { - protected scene: BattleScene; - - constructor(scene: BattleScene) { - this.scene = scene; - } - start() { - if (this.scene.abilityBar.shown) { - this.scene.abilityBar.resetAutoHideTimer(); + if (globalScene.abilityBar.shown) { + globalScene.abilityBar.resetAutoHideTimer(); } } end() { - this.scene.shiftPhase(); + globalScene.shiftPhase(); } } diff --git a/src/phases/add-enemy-buff-modifier-phase.ts b/src/phases/add-enemy-buff-modifier-phase.ts index 451e6e2662c..d79b4f6eca5 100644 --- a/src/phases/add-enemy-buff-modifier-phase.ts +++ b/src/phases/add-enemy-buff-modifier-phase.ts @@ -1,26 +1,26 @@ -import BattleScene from "#app/battle-scene"; import { ModifierTier } from "#app/modifier/modifier-tier"; import { regenerateModifierPoolThresholds, ModifierPoolType, getEnemyBuffModifierForWave } from "#app/modifier/modifier-type"; import { EnemyPersistentModifier } from "#app/modifier/modifier"; import { Phase } from "#app/phase"; +import { globalScene } from "#app/global-scene"; export class AddEnemyBuffModifierPhase extends Phase { - constructor(scene: BattleScene) { - super(scene); + constructor() { + super(); } start() { super.start(); - const waveIndex = this.scene.currentBattle.waveIndex; + const waveIndex = globalScene.currentBattle.waveIndex; const tier = !(waveIndex % 1000) ? ModifierTier.ULTRA : !(waveIndex % 250) ? ModifierTier.GREAT : ModifierTier.COMMON; - regenerateModifierPoolThresholds(this.scene.getEnemyParty(), ModifierPoolType.ENEMY_BUFF); + regenerateModifierPoolThresholds(globalScene.getEnemyParty(), ModifierPoolType.ENEMY_BUFF); const count = Math.ceil(waveIndex / 250); for (let i = 0; i < count; i++) { - this.scene.addEnemyModifier(getEnemyBuffModifierForWave(tier, this.scene.findModifiers(m => m instanceof EnemyPersistentModifier, false), this.scene), true, true); + globalScene.addEnemyModifier(getEnemyBuffModifierForWave(tier, globalScene.findModifiers(m => m instanceof EnemyPersistentModifier, false)), true, true); } - this.scene.updateModifiers(false, true).then(() => this.end()); + globalScene.updateModifiers(false, true).then(() => this.end()); } } diff --git a/src/phases/attempt-capture-phase.ts b/src/phases/attempt-capture-phase.ts index de10d1eca45..6f354d7c74a 100644 --- a/src/phases/attempt-capture-phase.ts +++ b/src/phases/attempt-capture-phase.ts @@ -1,30 +1,31 @@ import { BattlerIndex } from "#app/battle"; -import BattleScene from "#app/battle-scene"; import { PLAYER_PARTY_MAX_SIZE } from "#app/constants"; import { SubstituteTag } from "#app/data/battler-tags"; import { doPokeballBounceAnim, getPokeballAtlasKey, getPokeballCatchMultiplier, getPokeballTintColor, getCriticalCaptureChance } from "#app/data/pokeball"; import { getStatusEffectCatchRateMultiplier } from "#app/data/status-effect"; import { addPokeballCaptureStars, addPokeballOpenParticles } from "#app/field/anims"; -import { EnemyPokemon } from "#app/field/pokemon"; +import type { EnemyPokemon } from "#app/field/pokemon"; import { getPokemonNameWithAffix } from "#app/messages"; import { PokemonHeldItemModifier } from "#app/modifier/modifier"; import { PokemonPhase } from "#app/phases/pokemon-phase"; import { VictoryPhase } from "#app/phases/victory-phase"; import { achvs } from "#app/system/achv"; -import { PartyOption, PartyUiMode } from "#app/ui/party-ui-handler"; +import type { PartyOption } from "#app/ui/party-ui-handler"; +import { PartyUiMode } from "#app/ui/party-ui-handler"; import { SummaryUiMode } from "#app/ui/summary-ui-handler"; import { Mode } from "#app/ui/ui"; -import { PokeballType } from "#enums/pokeball"; +import type { PokeballType } from "#enums/pokeball"; import { StatusEffect } from "#enums/status-effect"; import i18next from "i18next"; +import { globalScene } from "#app/global-scene"; export class AttemptCapturePhase extends PokemonPhase { private pokeballType: PokeballType; private pokeball: Phaser.GameObjects.Sprite; private originalY: number; - constructor(scene: BattleScene, targetIndex: integer, pokeballType: PokeballType) { - super(scene, BattlerIndex.ENEMY + targetIndex); + constructor(targetIndex: integer, pokeballType: PokeballType) { + super(BattlerIndex.ENEMY + targetIndex); this.pokeballType = pokeballType; } @@ -43,7 +44,7 @@ export class AttemptCapturePhase extends PokemonPhase { substitute.sprite.setVisible(false); } - this.scene.pokeballCounts[this.pokeballType]--; + globalScene.pokeballCounts[this.pokeballType]--; this.originalY = pokemon.y; @@ -54,21 +55,21 @@ export class AttemptCapturePhase extends PokemonPhase { const statusMultiplier = pokemon.status ? getStatusEffectCatchRateMultiplier(pokemon.status.effect) : 1; const modifiedCatchRate = Math.round((((_3m - _2h) * catchRate * pokeballMultiplier) / _3m) * statusMultiplier); const shakeProbability = Math.round(65536 / Math.pow((255 / modifiedCatchRate), 0.1875)); // Formula taken from gen 6 - const criticalCaptureChance = getCriticalCaptureChance(this.scene, modifiedCatchRate); + const criticalCaptureChance = getCriticalCaptureChance(modifiedCatchRate); const isCritical = pokemon.randSeedInt(256) < criticalCaptureChance; const fpOffset = pokemon.getFieldPositionOffset(); const pokeballAtlasKey = getPokeballAtlasKey(this.pokeballType); - this.pokeball = this.scene.addFieldSprite(16, 80, "pb", pokeballAtlasKey); + this.pokeball = globalScene.addFieldSprite(16, 80, "pb", pokeballAtlasKey); this.pokeball.setOrigin(0.5, 0.625); - this.scene.field.add(this.pokeball); + globalScene.field.add(this.pokeball); - this.scene.playSound("se/pb_throw", isCritical ? { rate: 0.2 } : undefined); // Crit catch throws are higher pitched - this.scene.time.delayedCall(300, () => { - this.scene.field.moveBelow(this.pokeball as Phaser.GameObjects.GameObject, pokemon); + globalScene.playSound("se/pb_throw", isCritical ? { rate: 0.2 } : undefined); // Crit catch throws are higher pitched + globalScene.time.delayedCall(300, () => { + globalScene.field.moveBelow(this.pokeball as Phaser.GameObjects.GameObject, pokemon); }); - this.scene.tweens.add({ + globalScene.tweens.add({ // Throw animation targets: this.pokeball, x: { value: 236 + fpOffset[0], ease: "Linear" }, @@ -77,13 +78,13 @@ export class AttemptCapturePhase extends PokemonPhase { onComplete: () => { // Ball opens this.pokeball.setTexture("pb", `${pokeballAtlasKey}_opening`); - this.scene.time.delayedCall(17, () => this.pokeball.setTexture("pb", `${pokeballAtlasKey}_open`)); - this.scene.playSound("se/pb_rel"); + globalScene.time.delayedCall(17, () => this.pokeball.setTexture("pb", `${pokeballAtlasKey}_open`)); + globalScene.playSound("se/pb_rel"); pokemon.tint(getPokeballTintColor(this.pokeballType)); - addPokeballOpenParticles(this.scene, this.pokeball.x, this.pokeball.y, this.pokeballType); + addPokeballOpenParticles(this.pokeball.x, this.pokeball.y, this.pokeballType); - this.scene.tweens.add({ + globalScene.tweens.add({ // Mon enters ball targets: pokemon, duration: 500, @@ -94,14 +95,14 @@ export class AttemptCapturePhase extends PokemonPhase { // Ball closes this.pokeball.setTexture("pb", `${pokeballAtlasKey}_opening`); pokemon.setVisible(false); - this.scene.playSound("se/pb_catch"); - this.scene.time.delayedCall(17, () => this.pokeball.setTexture("pb", `${pokeballAtlasKey}`)); + globalScene.playSound("se/pb_catch"); + globalScene.time.delayedCall(17, () => this.pokeball.setTexture("pb", `${pokeballAtlasKey}`)); const doShake = () => { // After the overall catch rate check, the game does 3 shake checks before confirming the catch. let shakeCount = 0; const pbX = this.pokeball.x; - const shakeCounter = this.scene.tweens.addCounter({ + const shakeCounter = globalScene.tweens.addCounter({ from: 0, to: 1, repeat: isCritical ? 2 : 4, // Critical captures only perform 1 shake check @@ -124,7 +125,7 @@ export class AttemptCapturePhase extends PokemonPhase { } else if (shakeCount++ < (isCritical ? 1 : 3)) { // Shake check (skip check for critical or guaranteed captures, but still play the sound) if (pokeballMultiplier === -1 || isCritical || modifiedCatchRate >= 255 || pokemon.randSeedInt(65536) < shakeProbability) { - this.scene.playSound("se/pb_move"); + globalScene.playSound("se/pb_move"); } else { shakeCounter.stop(); this.failCatch(shakeCount); @@ -134,21 +135,21 @@ export class AttemptCapturePhase extends PokemonPhase { shakeCounter.stop(); this.failCatch(shakeCount); } else { - this.scene.playSound("se/pb_lock"); - addPokeballCaptureStars(this.scene, this.pokeball); + globalScene.playSound("se/pb_lock"); + addPokeballCaptureStars(this.pokeball); - const pbTint = this.scene.add.sprite(this.pokeball.x, this.pokeball.y, "pb", "pb"); + const pbTint = globalScene.add.sprite(this.pokeball.x, this.pokeball.y, "pb", "pb"); pbTint.setOrigin(this.pokeball.originX, this.pokeball.originY); pbTint.setTintFill(0); pbTint.setAlpha(0); - this.scene.field.add(pbTint); - this.scene.tweens.add({ + globalScene.field.add(pbTint); + globalScene.tweens.add({ targets: pbTint, alpha: 0.375, duration: 200, easing: "Sine.easeOut", onComplete: () => { - this.scene.tweens.add({ + globalScene.tweens.add({ targets: pbTint, alpha: 0, duration: 200, @@ -166,7 +167,7 @@ export class AttemptCapturePhase extends PokemonPhase { }; // Ball bounces (handled in pokemon.ts) - this.scene.time.delayedCall(250, () => doPokeballBounceAnim(this.scene, this.pokeball, 16, 72, 350, doShake, isCritical)); + globalScene.time.delayedCall(250, () => doPokeballBounceAnim(this.pokeball, 16, 72, 350, doShake, isCritical)); } }); } @@ -176,7 +177,7 @@ export class AttemptCapturePhase extends PokemonPhase { failCatch(shakeCount: integer) { const pokemon = this.getPokemon(); - this.scene.playSound("se/pb_rel"); + globalScene.playSound("se/pb_rel"); pokemon.setY(this.originalY); if (pokemon.status?.effect !== StatusEffect.SLEEP) { pokemon.cry(pokemon.getHpRatio() > 0.25 ? undefined : { rate: 0.85 }); @@ -192,16 +193,16 @@ export class AttemptCapturePhase extends PokemonPhase { const pokeballAtlasKey = getPokeballAtlasKey(this.pokeballType); this.pokeball.setTexture("pb", `${pokeballAtlasKey}_opening`); - this.scene.time.delayedCall(17, () => this.pokeball.setTexture("pb", `${pokeballAtlasKey}_open`)); + globalScene.time.delayedCall(17, () => this.pokeball.setTexture("pb", `${pokeballAtlasKey}_open`)); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: pokemon, duration: 250, ease: "Sine.easeOut", scale: 1 }); - this.scene.currentBattle.lastUsedPokeball = this.pokeballType; + globalScene.currentBattle.lastUsedPokeball = this.pokeballType; this.removePb(); this.end(); } @@ -212,48 +213,48 @@ export class AttemptCapturePhase extends PokemonPhase { const speciesForm = !pokemon.fusionSpecies ? pokemon.getSpeciesForm() : pokemon.getFusionSpeciesForm(); if (speciesForm.abilityHidden && (pokemon.fusionSpecies ? pokemon.fusionAbilityIndex : pokemon.abilityIndex) === speciesForm.getAbilityCount() - 1) { - this.scene.validateAchv(achvs.HIDDEN_ABILITY); + globalScene.validateAchv(achvs.HIDDEN_ABILITY); } if (pokemon.species.subLegendary) { - this.scene.validateAchv(achvs.CATCH_SUB_LEGENDARY); + globalScene.validateAchv(achvs.CATCH_SUB_LEGENDARY); } if (pokemon.species.legendary) { - this.scene.validateAchv(achvs.CATCH_LEGENDARY); + globalScene.validateAchv(achvs.CATCH_LEGENDARY); } if (pokemon.species.mythical) { - this.scene.validateAchv(achvs.CATCH_MYTHICAL); + globalScene.validateAchv(achvs.CATCH_MYTHICAL); } - this.scene.pokemonInfoContainer.show(pokemon, true); + globalScene.pokemonInfoContainer.show(pokemon, true); - this.scene.gameData.updateSpeciesDexIvs(pokemon.species.getRootSpeciesId(true), pokemon.ivs); + globalScene.gameData.updateSpeciesDexIvs(pokemon.species.getRootSpeciesId(true), pokemon.ivs); - this.scene.ui.showText(i18next.t("battle:pokemonCaught", { pokemonName: getPokemonNameWithAffix(pokemon) }), null, () => { + globalScene.ui.showText(i18next.t("battle:pokemonCaught", { pokemonName: getPokemonNameWithAffix(pokemon) }), null, () => { const end = () => { - this.scene.unshiftPhase(new VictoryPhase(this.scene, this.battlerIndex)); - this.scene.pokemonInfoContainer.hide(); + globalScene.unshiftPhase(new VictoryPhase(this.battlerIndex)); + globalScene.pokemonInfoContainer.hide(); this.removePb(); this.end(); }; const removePokemon = () => { - this.scene.addFaintedEnemyScore(pokemon); - this.scene.getPlayerField().filter(p => p.isActive(true)).forEach(playerPokemon => playerPokemon.removeTagsBySourceId(pokemon.id)); + globalScene.addFaintedEnemyScore(pokemon); + globalScene.getPlayerField().filter(p => p.isActive(true)).forEach(playerPokemon => playerPokemon.removeTagsBySourceId(pokemon.id)); pokemon.hp = 0; pokemon.trySetStatus(StatusEffect.FAINT); - this.scene.clearEnemyHeldItemModifiers(); - this.scene.field.remove(pokemon, true); + globalScene.clearEnemyHeldItemModifiers(); + globalScene.field.remove(pokemon, true); }; const addToParty = (slotIndex?: number) => { const newPokemon = pokemon.addToParty(this.pokeballType, slotIndex); - const modifiers = this.scene.findModifiers(m => m instanceof PokemonHeldItemModifier, false); - if (this.scene.getPlayerParty().filter(p => p.isShiny()).length === PLAYER_PARTY_MAX_SIZE) { - this.scene.validateAchv(achvs.SHINY_PARTY); + const modifiers = globalScene.findModifiers(m => m instanceof PokemonHeldItemModifier, false); + if (globalScene.getPlayerParty().filter(p => p.isShiny()).length === PLAYER_PARTY_MAX_SIZE) { + globalScene.validateAchv(achvs.SHINY_PARTY); } - Promise.all(modifiers.map(m => this.scene.addModifier(m, true))).then(() => { - this.scene.updateModifiers(true); + Promise.all(modifiers.map(m => globalScene.addModifier(m, true))).then(() => { + globalScene.updateModifiers(true); removePokemon(); if (newPokemon) { newPokemon.loadAssets().then(end); @@ -262,21 +263,21 @@ export class AttemptCapturePhase extends PokemonPhase { } }); }; - Promise.all([ pokemon.hideInfo(), this.scene.gameData.setPokemonCaught(pokemon) ]).then(() => { - if (this.scene.getPlayerParty().length === PLAYER_PARTY_MAX_SIZE) { + Promise.all([ pokemon.hideInfo(), globalScene.gameData.setPokemonCaught(pokemon) ]).then(() => { + if (globalScene.getPlayerParty().length === PLAYER_PARTY_MAX_SIZE) { const promptRelease = () => { - this.scene.ui.showText(i18next.t("battle:partyFull", { pokemonName: pokemon.getNameToRender() }), null, () => { - this.scene.pokemonInfoContainer.makeRoomForConfirmUi(1, true); - this.scene.ui.setMode(Mode.CONFIRM, () => { - const newPokemon = this.scene.addPlayerPokemon(pokemon.species, pokemon.level, pokemon.abilityIndex, pokemon.formIndex, pokemon.gender, pokemon.shiny, pokemon.variant, pokemon.ivs, pokemon.nature, pokemon); - this.scene.ui.setMode(Mode.SUMMARY, newPokemon, 0, SummaryUiMode.DEFAULT, () => { - this.scene.ui.setMode(Mode.MESSAGE).then(() => { + globalScene.ui.showText(i18next.t("battle:partyFull", { pokemonName: pokemon.getNameToRender() }), null, () => { + globalScene.pokemonInfoContainer.makeRoomForConfirmUi(1, true); + globalScene.ui.setMode(Mode.CONFIRM, () => { + const newPokemon = globalScene.addPlayerPokemon(pokemon.species, pokemon.level, pokemon.abilityIndex, pokemon.formIndex, pokemon.gender, pokemon.shiny, pokemon.variant, pokemon.ivs, pokemon.nature, pokemon); + globalScene.ui.setMode(Mode.SUMMARY, newPokemon, 0, SummaryUiMode.DEFAULT, () => { + globalScene.ui.setMode(Mode.MESSAGE).then(() => { promptRelease(); }); }, false); }, () => { - this.scene.ui.setMode(Mode.PARTY, PartyUiMode.RELEASE, this.fieldIndex, (slotIndex: integer, _option: PartyOption) => { - this.scene.ui.setMode(Mode.MESSAGE).then(() => { + globalScene.ui.setMode(Mode.PARTY, PartyUiMode.RELEASE, this.fieldIndex, (slotIndex: integer, _option: PartyOption) => { + globalScene.ui.setMode(Mode.MESSAGE).then(() => { if (slotIndex < 6) { addToParty(slotIndex); } else { @@ -285,7 +286,7 @@ export class AttemptCapturePhase extends PokemonPhase { }); }); }, () => { - this.scene.ui.setMode(Mode.MESSAGE).then(() => { + globalScene.ui.setMode(Mode.MESSAGE).then(() => { removePokemon(); end(); }); @@ -301,7 +302,7 @@ export class AttemptCapturePhase extends PokemonPhase { } removePb() { - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this.pokeball, duration: 250, delay: 250, diff --git a/src/phases/attempt-run-phase.ts b/src/phases/attempt-run-phase.ts index 109fc5b582d..72a108c1991 100644 --- a/src/phases/attempt-run-phase.ts +++ b/src/phases/attempt-run-phase.ts @@ -1,28 +1,29 @@ -import BattleScene from "#app/battle-scene"; import { applyAbAttrs, RunSuccessAbAttr } from "#app/data/ability"; import { Stat } from "#app/enums/stat"; import { StatusEffect } from "#app/enums/status-effect"; -import Pokemon, { PlayerPokemon, EnemyPokemon } from "#app/field/pokemon"; +import type { PlayerPokemon, EnemyPokemon } from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; import i18next from "i18next"; import * as Utils from "#app/utils"; import { BattleEndPhase } from "./battle-end-phase"; import { NewBattlePhase } from "./new-battle-phase"; import { PokemonPhase } from "./pokemon-phase"; +import { globalScene } from "#app/global-scene"; export class AttemptRunPhase extends PokemonPhase { /** For testing purposes: this is to force the pokemon to fail and escape */ public forceFailEscape = false; - constructor(scene: BattleScene, fieldIndex: number) { - super(scene, fieldIndex); + constructor(fieldIndex: number) { + super(fieldIndex); } start() { super.start(); - const playerField = this.scene.getPlayerField(); - const enemyField = this.scene.getEnemyField(); + const playerField = globalScene.getPlayerField(); + const enemyField = globalScene.getEnemyField(); const playerPokemon = this.getPokemon(); @@ -33,18 +34,18 @@ export class AttemptRunPhase extends PokemonPhase { applyAbAttrs(RunSuccessAbAttr, playerPokemon, null, false, escapeChance); if (playerPokemon.randSeedInt(100) < escapeChance.value && !this.forceFailEscape) { - this.scene.playSound("se/flee"); - this.scene.queueMessage(i18next.t("battle:runAwaySuccess"), null, true, 500); + globalScene.playSound("se/flee"); + globalScene.queueMessage(i18next.t("battle:runAwaySuccess"), null, true, 500); - this.scene.tweens.add({ - targets: [ this.scene.arenaEnemy, enemyField ].flat(), + globalScene.tweens.add({ + targets: [ globalScene.arenaEnemy, enemyField ].flat(), alpha: 0, duration: 250, ease: "Sine.easeIn", onComplete: () => enemyField.forEach(enemyPokemon => enemyPokemon.destroy()) }); - this.scene.clearEnemyHeldItemModifiers(); + globalScene.clearEnemyHeldItemModifiers(); enemyField.forEach(enemyPokemon => { enemyPokemon.hideInfo().then(() => enemyPokemon.destroy()); @@ -52,11 +53,11 @@ export class AttemptRunPhase extends PokemonPhase { enemyPokemon.trySetStatus(StatusEffect.FAINT); }); - this.scene.pushPhase(new BattleEndPhase(this.scene, false)); - this.scene.pushPhase(new NewBattlePhase(this.scene)); + globalScene.pushPhase(new BattleEndPhase(false)); + globalScene.pushPhase(new NewBattlePhase()); } else { playerPokemon.turnData.failedRunAway = true; - this.scene.queueMessage(i18next.t("battle:runAwayCannotEscape"), null, true, 500); + globalScene.queueMessage(i18next.t("battle:runAwayCannotEscape"), null, true, 500); } this.end(); @@ -103,6 +104,6 @@ export class AttemptRunPhase extends PokemonPhase { const escapeSlope = (maxChance - minChance) / speedCap; // This will calculate the escape chance given all of the above and clamp it to the range of [`minChance`, `maxChance`] - escapeChance.value = Phaser.Math.Clamp(Math.round((escapeSlope * speedRatio) + minChance + (escapeBonus * this.scene.currentBattle.escapeAttempts++)), minChance, maxChance); + escapeChance.value = Phaser.Math.Clamp(Math.round((escapeSlope * speedRatio) + minChance + (escapeBonus * globalScene.currentBattle.escapeAttempts++)), minChance, maxChance); } } diff --git a/src/phases/battle-end-phase.ts b/src/phases/battle-end-phase.ts index 8926a2211e0..edffd8498d6 100644 --- a/src/phases/battle-end-phase.ts +++ b/src/phases/battle-end-phase.ts @@ -1,4 +1,4 @@ -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { applyPostBattleAbAttrs, PostBattleAbAttr } from "#app/data/ability"; import { LapsingPersistentModifier, LapsingPokemonHeldItemModifier } from "#app/modifier/modifier"; import { BattlePhase } from "./battle-phase"; @@ -8,8 +8,8 @@ export class BattleEndPhase extends BattlePhase { /** If true, will increment battles won */ isVictory: boolean; - constructor(scene: BattleScene, isVictory: boolean) { - super(scene); + constructor(isVictory: boolean) { + super(); this.isVictory = isVictory; } @@ -17,52 +17,52 @@ export class BattleEndPhase extends BattlePhase { start() { super.start(); - this.scene.gameData.gameStats.battles++; - if (this.scene.gameMode.isEndless && this.scene.currentBattle.waveIndex + 1 > this.scene.gameData.gameStats.highestEndlessWave) { - this.scene.gameData.gameStats.highestEndlessWave = this.scene.currentBattle.waveIndex + 1; + globalScene.gameData.gameStats.battles++; + if (globalScene.gameMode.isEndless && globalScene.currentBattle.waveIndex + 1 > globalScene.gameData.gameStats.highestEndlessWave) { + globalScene.gameData.gameStats.highestEndlessWave = globalScene.currentBattle.waveIndex + 1; } if (this.isVictory) { - this.scene.currentBattle.addBattleScore(this.scene); + globalScene.currentBattle.addBattleScore(); - if (this.scene.currentBattle.trainer) { - this.scene.gameData.gameStats.trainersDefeated++; + if (globalScene.currentBattle.trainer) { + globalScene.gameData.gameStats.trainersDefeated++; } } // Endless graceful end - if (this.scene.gameMode.isEndless && this.scene.currentBattle.waveIndex >= 5850) { - this.scene.clearPhaseQueue(); - this.scene.unshiftPhase(new GameOverPhase(this.scene, true)); + if (globalScene.gameMode.isEndless && globalScene.currentBattle.waveIndex >= 5850) { + globalScene.clearPhaseQueue(); + globalScene.unshiftPhase(new GameOverPhase(true)); } - for (const pokemon of this.scene.getField()) { + for (const pokemon of globalScene.getField()) { if (pokemon && pokemon.battleSummonData) { pokemon.battleSummonData.waveTurnCount = 1; } } - for (const pokemon of this.scene.getPokemonAllowedInBattle()) { + for (const pokemon of globalScene.getPokemonAllowedInBattle()) { applyPostBattleAbAttrs(PostBattleAbAttr, pokemon, false, this.isVictory); } - if (this.scene.currentBattle.moneyScattered) { - this.scene.currentBattle.pickUpScatteredMoney(this.scene); + if (globalScene.currentBattle.moneyScattered) { + globalScene.currentBattle.pickUpScatteredMoney(); } - this.scene.clearEnemyHeldItemModifiers(); + globalScene.clearEnemyHeldItemModifiers(); - const lapsingModifiers = this.scene.findModifiers(m => m instanceof LapsingPersistentModifier || m instanceof LapsingPokemonHeldItemModifier) as (LapsingPersistentModifier | LapsingPokemonHeldItemModifier)[]; + const lapsingModifiers = globalScene.findModifiers(m => m instanceof LapsingPersistentModifier || m instanceof LapsingPokemonHeldItemModifier) as (LapsingPersistentModifier | LapsingPokemonHeldItemModifier)[]; for (const m of lapsingModifiers) { const args: any[] = []; if (m instanceof LapsingPokemonHeldItemModifier) { - args.push(this.scene.getPokemonById(m.pokemonId)); + args.push(globalScene.getPokemonById(m.pokemonId)); } if (!m.lapse(...args)) { - this.scene.removeModifier(m); + globalScene.removeModifier(m); } } - this.scene.updateModifiers().then(() => this.end()); + globalScene.updateModifiers().then(() => this.end()); } } diff --git a/src/phases/battle-phase.ts b/src/phases/battle-phase.ts index 11807fdc714..4fc826b7957 100644 --- a/src/phases/battle-phase.ts +++ b/src/phases/battle-phase.ts @@ -1,15 +1,15 @@ -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { TrainerSlot } from "#app/data/trainer-config"; import { Phase } from "#app/phase"; export class BattlePhase extends Phase { - constructor(scene: BattleScene) { - super(scene); + constructor() { + super(); } showEnemyTrainer(trainerSlot: TrainerSlot = TrainerSlot.NONE): void { - const sprites = this.scene.currentBattle.trainer?.getSprites()!; // TODO: is this bang correct? - const tintSprites = this.scene.currentBattle.trainer?.getTintSprites()!; // TODO: is this bang correct? + const sprites = globalScene.currentBattle.trainer?.getSprites()!; // TODO: is this bang correct? + const tintSprites = globalScene.currentBattle.trainer?.getTintSprites()!; // TODO: is this bang correct? for (let i = 0; i < sprites.length; i++) { const visible = !trainerSlot || !i === (trainerSlot === TrainerSlot.TRAINER) || sprites.length < 2; [ sprites[i], tintSprites[i] ].map(sprite => { @@ -24,8 +24,8 @@ export class BattlePhase extends Phase { sprites[i].clearTint(); tintSprites[i].clearTint(); } - this.scene.tweens.add({ - targets: this.scene.currentBattle.trainer, + globalScene.tweens.add({ + targets: globalScene.currentBattle.trainer, x: "-=16", y: "+=16", alpha: 1, @@ -35,8 +35,8 @@ export class BattlePhase extends Phase { } hideEnemyTrainer(): void { - this.scene.tweens.add({ - targets: this.scene.currentBattle.trainer, + globalScene.tweens.add({ + targets: globalScene.currentBattle.trainer, x: "+=16", y: "-=16", alpha: 0, diff --git a/src/phases/berry-phase.ts b/src/phases/berry-phase.ts index 5c33ae4b343..dd56e8b37d7 100644 --- a/src/phases/berry-phase.ts +++ b/src/phases/berry-phase.ts @@ -7,6 +7,7 @@ import i18next from "i18next"; import * as Utils from "#app/utils"; import { FieldPhase } from "./field-phase"; import { CommonAnimPhase } from "./common-anim-phase"; +import { globalScene } from "#app/global-scene"; /** The phase after attacks where the pokemon eat berries */ export class BerryPhase extends FieldPhase { @@ -14,7 +15,7 @@ export class BerryPhase extends FieldPhase { super.start(); this.executeForAll((pokemon) => { - const hasUsableBerry = !!this.scene.findModifier((m) => { + const hasUsableBerry = !!globalScene.findModifier((m) => { return m instanceof BerryModifier && m.shouldApply(pokemon); }, pokemon.isPlayer()); @@ -23,21 +24,21 @@ export class BerryPhase extends FieldPhase { pokemon.getOpponents().map((opp) => applyAbAttrs(PreventBerryUseAbAttr, opp, cancelled)); if (cancelled.value) { - pokemon.scene.queueMessage(i18next.t("abilityTriggers:preventBerryUse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); + globalScene.queueMessage(i18next.t("abilityTriggers:preventBerryUse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); } else { - this.scene.unshiftPhase( - new CommonAnimPhase(this.scene, pokemon.getBattlerIndex(), pokemon.getBattlerIndex(), CommonAnim.USE_ITEM) + globalScene.unshiftPhase( + new CommonAnimPhase(pokemon.getBattlerIndex(), pokemon.getBattlerIndex(), CommonAnim.USE_ITEM) ); - for (const berryModifier of this.scene.applyModifiers(BerryModifier, pokemon.isPlayer(), pokemon)) { + for (const berryModifier of globalScene.applyModifiers(BerryModifier, pokemon.isPlayer(), pokemon)) { if (berryModifier.consumed) { berryModifier.consumed = false; pokemon.loseHeldItem(berryModifier); } - this.scene.eventTarget.dispatchEvent(new BerryUsedEvent(berryModifier)); // Announce a berry was used + globalScene.eventTarget.dispatchEvent(new BerryUsedEvent(berryModifier)); // Announce a berry was used } - this.scene.updateModifiers(pokemon.isPlayer()); + globalScene.updateModifiers(pokemon.isPlayer()); applyAbAttrs(HealFromBerryUseAbAttr, pokemon, new Utils.BooleanHolder(false)); } diff --git a/src/phases/check-status-effect-phase.ts b/src/phases/check-status-effect-phase.ts index 44918b54966..683c1ea1cd2 100644 --- a/src/phases/check-status-effect-phase.ts +++ b/src/phases/check-status-effect-phase.ts @@ -1,21 +1,20 @@ import { PostTurnStatusEffectPhase } from "#app/phases/post-turn-status-effect-phase"; import { Phase } from "#app/phase"; -import { BattlerIndex } from "#app/battle"; -import BattleScene from "#app/battle-scene"; +import type { BattlerIndex } from "#app/battle"; +import { globalScene } from "#app/global-scene"; export class CheckStatusEffectPhase extends Phase { private order : BattlerIndex[]; - constructor(scene : BattleScene, order : BattlerIndex[]) { - super(scene); - this.scene = scene; + constructor(order : BattlerIndex[]) { + super(); this.order = order; } start() { - const field = this.scene.getField(); + const field = globalScene.getField(); for (const o of this.order) { if (field[o].status && field[o].status.isPostTurn()) { - this.scene.unshiftPhase(new PostTurnStatusEffectPhase(this.scene, o)); + globalScene.unshiftPhase(new PostTurnStatusEffectPhase(o)); } } this.end(); diff --git a/src/phases/check-switch-phase.ts b/src/phases/check-switch-phase.ts index 18b999ed210..06e08f7f30d 100644 --- a/src/phases/check-switch-phase.ts +++ b/src/phases/check-switch-phase.ts @@ -1,4 +1,4 @@ -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { BattleStyle } from "#app/enums/battle-style"; import { BattlerTagType } from "#app/enums/battler-tag-type"; import { getPokemonNameWithAffix } from "#app/messages"; @@ -13,8 +13,8 @@ export class CheckSwitchPhase extends BattlePhase { protected fieldIndex: integer; protected useName: boolean; - constructor(scene: BattleScene, fieldIndex: integer, useName: boolean) { - super(scene); + constructor(fieldIndex: integer, useName: boolean) { + super(); this.fieldIndex = fieldIndex; this.useName = useName; @@ -23,40 +23,40 @@ export class CheckSwitchPhase extends BattlePhase { start() { super.start(); - const pokemon = this.scene.getPlayerField()[this.fieldIndex]; + const pokemon = globalScene.getPlayerField()[this.fieldIndex]; // End this phase early... // ...if the user is playing in Set Mode - if (this.scene.battleStyle === BattleStyle.SET) { + if (globalScene.battleStyle === BattleStyle.SET) { return super.end(); } // ...if the checked Pokemon is somehow not on the field - if (this.scene.field.getAll().indexOf(pokemon) === -1) { - this.scene.unshiftPhase(new SummonMissingPhase(this.scene, this.fieldIndex)); + if (globalScene.field.getAll().indexOf(pokemon) === -1) { + globalScene.unshiftPhase(new SummonMissingPhase(this.fieldIndex)); return super.end(); } // ...if there are no other allowed Pokemon in the player's party to switch with - if (!this.scene.getPlayerParty().slice(1).filter(p => p.isActive()).length) { + if (!globalScene.getPlayerParty().slice(1).filter(p => p.isActive()).length) { return super.end(); } // ...or if any player Pokemon has an effect that prevents the checked Pokemon from switching if (pokemon.getTag(BattlerTagType.FRENZY) || pokemon.isTrapped() - || this.scene.getPlayerField().some(p => p.getTag(BattlerTagType.COMMANDED))) { + || globalScene.getPlayerField().some(p => p.getTag(BattlerTagType.COMMANDED))) { return super.end(); } - this.scene.ui.showText(i18next.t("battle:switchQuestion", { pokemonName: this.useName ? getPokemonNameWithAffix(pokemon) : i18next.t("battle:pokemon") }), null, () => { - this.scene.ui.setMode(Mode.CONFIRM, () => { - this.scene.ui.setMode(Mode.MESSAGE); - this.scene.unshiftPhase(new SwitchPhase(this.scene, SwitchType.INITIAL_SWITCH, this.fieldIndex, false, true)); + globalScene.ui.showText(i18next.t("battle:switchQuestion", { pokemonName: this.useName ? getPokemonNameWithAffix(pokemon) : i18next.t("battle:pokemon") }), null, () => { + globalScene.ui.setMode(Mode.CONFIRM, () => { + globalScene.ui.setMode(Mode.MESSAGE); + globalScene.unshiftPhase(new SwitchPhase(SwitchType.INITIAL_SWITCH, this.fieldIndex, false, true)); this.end(); }, () => { - this.scene.ui.setMode(Mode.MESSAGE); + globalScene.ui.setMode(Mode.MESSAGE); this.end(); }); }); diff --git a/src/phases/command-phase.ts b/src/phases/command-phase.ts index fa85f2427e5..d7293ec02fe 100644 --- a/src/phases/command-phase.ts +++ b/src/phases/command-phase.ts @@ -1,14 +1,18 @@ -import BattleScene from "#app/battle-scene"; -import { TurnCommand, BattleType } from "#app/battle"; -import { TrappedTag, EncoreTag } from "#app/data/battler-tags"; -import { MoveTargetSet, getMoveTargets } from "#app/data/move"; +import { globalScene } from "#app/global-scene"; +import type { TurnCommand } from "#app/battle"; +import { BattleType } from "#app/battle"; +import type { EncoreTag } from "#app/data/battler-tags"; +import { TrappedTag } from "#app/data/battler-tags"; +import type { MoveTargetSet } from "#app/data/move"; +import { getMoveTargets } from "#app/data/move"; import { speciesStarterCosts } from "#app/data/balance/starters"; import { Abilities } from "#app/enums/abilities"; import { BattlerTagType } from "#app/enums/battler-tag-type"; import { Biome } from "#app/enums/biome"; import { Moves } from "#app/enums/moves"; import { PokeballType } from "#enums/pokeball"; -import { FieldPosition, PlayerPokemon } from "#app/field/pokemon"; +import type { PlayerPokemon } from "#app/field/pokemon"; +import { FieldPosition } from "#app/field/pokemon"; import { getPokemonNameWithAffix } from "#app/messages"; import { Command } from "#app/ui/command-ui-handler"; import { Mode } from "#app/ui/ui"; @@ -23,8 +27,8 @@ import { ArenaTagType } from "#app/enums/arena-tag-type"; export class CommandPhase extends FieldPhase { protected fieldIndex: integer; - constructor(scene: BattleScene, fieldIndex: integer) { - super(scene); + constructor(fieldIndex: integer) { + super(); this.fieldIndex = fieldIndex; } @@ -32,17 +36,17 @@ export class CommandPhase extends FieldPhase { start() { super.start(); - this.scene.updateGameInfo(); + globalScene.updateGameInfo(); - const commandUiHandler = this.scene.ui.handlers[Mode.COMMAND]; + const commandUiHandler = globalScene.ui.handlers[Mode.COMMAND]; // If one of these conditions is true, we always reset the cursor to Command.FIGHT - const cursorResetEvent = this.scene.currentBattle.battleType === BattleType.MYSTERY_ENCOUNTER || - this.scene.currentBattle.battleType === BattleType.TRAINER || - this.scene.arena.biomeType === Biome.END; + const cursorResetEvent = globalScene.currentBattle.battleType === BattleType.MYSTERY_ENCOUNTER || + globalScene.currentBattle.battleType === BattleType.TRAINER || + globalScene.arena.biomeType === Biome.END; if (commandUiHandler) { - if ((this.scene.currentBattle.turn === 1 && (!this.scene.commandCursorMemory || cursorResetEvent)) || commandUiHandler.getCursor() === Command.POKEMON) { + if ((globalScene.currentBattle.turn === 1 && (!globalScene.commandCursorMemory || cursorResetEvent)) || commandUiHandler.getCursor() === Command.POKEMON) { commandUiHandler.setCursor(Command.FIGHT); } else { commandUiHandler.setCursor(commandUiHandler.getCursor()); @@ -52,19 +56,19 @@ export class CommandPhase extends FieldPhase { if (this.fieldIndex) { // If we somehow are attempting to check the right pokemon but there's only one pokemon out // Switch back to the center pokemon. This can happen rarely in double battles with mid turn switching - if (this.scene.getPlayerField().filter(p => p.isActive()).length === 1) { + if (globalScene.getPlayerField().filter(p => p.isActive()).length === 1) { this.fieldIndex = FieldPosition.CENTER; } else { - const allyCommand = this.scene.currentBattle.turnCommands[this.fieldIndex - 1]; + const allyCommand = globalScene.currentBattle.turnCommands[this.fieldIndex - 1]; if (allyCommand?.command === Command.BALL || allyCommand?.command === Command.RUN) { - this.scene.currentBattle.turnCommands[this.fieldIndex] = { command: allyCommand?.command, skip: true }; + globalScene.currentBattle.turnCommands[this.fieldIndex] = { command: allyCommand?.command, skip: true }; } } } // If the Pokemon has applied Commander's effects to its ally, skip this command - if (this.scene.currentBattle?.double && this.getPokemon().getAlly()?.getTag(BattlerTagType.COMMANDED)?.getSourcePokemon(this.scene) === this.getPokemon()) { - this.scene.currentBattle.turnCommands[this.fieldIndex] = { command: Command.FIGHT, move: { move: Moves.NONE, targets: []}, skip: true }; + if (globalScene.currentBattle?.double && this.getPokemon().getAlly()?.getTag(BattlerTagType.COMMANDED)?.getSourcePokemon() === this.getPokemon()) { + globalScene.currentBattle.turnCommands[this.fieldIndex] = { command: Command.FIGHT, move: { move: Moves.NONE, targets: []}, skip: true }; } // Checks if the Pokemon is under the effects of Encore. If so, Encore can end early if the encored move has no more PP. @@ -73,11 +77,11 @@ export class CommandPhase extends FieldPhase { this.getPokemon().lapseTag(BattlerTagType.ENCORE); } - if (this.scene.currentBattle.turnCommands[this.fieldIndex]?.skip) { + if (globalScene.currentBattle.turnCommands[this.fieldIndex]?.skip) { return this.end(); } - const playerPokemon = this.scene.getPlayerField()[this.fieldIndex]; + const playerPokemon = globalScene.getPlayerField()[this.fieldIndex]; const moveQueue = playerPokemon.getMoveQueue(); @@ -96,21 +100,21 @@ export class CommandPhase extends FieldPhase { if (moveIndex > -1 && playerPokemon.getMoveset()[moveIndex]!.isUsable(playerPokemon, queuedMove.ignorePP)) { // TODO: is the bang correct? this.handleCommand(Command.FIGHT, moveIndex, queuedMove.ignorePP, { targets: queuedMove.targets, multiple: queuedMove.targets.length > 1 }); } else { - this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); + globalScene.ui.setMode(Mode.COMMAND, this.fieldIndex); } } } else { - if (this.scene.currentBattle.isBattleMysteryEncounter() && this.scene.currentBattle.mysteryEncounter?.skipToFightInput) { - this.scene.ui.clearText(); - this.scene.ui.setMode(Mode.FIGHT, this.fieldIndex); + if (globalScene.currentBattle.isBattleMysteryEncounter() && globalScene.currentBattle.mysteryEncounter?.skipToFightInput) { + globalScene.ui.clearText(); + globalScene.ui.setMode(Mode.FIGHT, this.fieldIndex); } else { - this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); + globalScene.ui.setMode(Mode.COMMAND, this.fieldIndex); } } } handleCommand(command: Command, cursor: integer, ...args: any[]): boolean { - const playerPokemon = this.scene.getPlayerField()[this.fieldIndex]; + const playerPokemon = globalScene.getPlayerField()[this.fieldIndex]; let success: boolean = false; switch (command) { @@ -127,20 +131,20 @@ export class CommandPhase extends FieldPhase { } console.log(moveTargets, getPokemonNameWithAffix(playerPokemon)); if (moveTargets.targets.length > 1 && moveTargets.multiple) { - this.scene.unshiftPhase(new SelectTargetPhase(this.scene, this.fieldIndex)); + globalScene.unshiftPhase(new SelectTargetPhase(this.fieldIndex)); } if (moveTargets.targets.length <= 1 || moveTargets.multiple) { turnCommand.move!.targets = moveTargets.targets; //TODO: is the bang correct here? } else if (playerPokemon.getTag(BattlerTagType.CHARGING) && playerPokemon.getMoveQueue().length >= 1) { turnCommand.move!.targets = playerPokemon.getMoveQueue()[0].targets; //TODO: is the bang correct here? } else { - this.scene.unshiftPhase(new SelectTargetPhase(this.scene, this.fieldIndex)); + globalScene.unshiftPhase(new SelectTargetPhase(this.fieldIndex)); } - this.scene.currentBattle.turnCommands[this.fieldIndex] = turnCommand; + globalScene.currentBattle.turnCommands[this.fieldIndex] = turnCommand; success = true; } else if (cursor < playerPokemon.getMoveset().length) { const move = playerPokemon.getMoveset()[cursor]!; //TODO: is this bang correct? - this.scene.ui.setMode(Mode.MESSAGE); + globalScene.ui.setMode(Mode.MESSAGE); // Decides between a Disabled, Not Implemented, or No PP translation message const errorMessage = @@ -149,58 +153,58 @@ export class CommandPhase extends FieldPhase { : move.getName().endsWith(" (N)") ? "battle:moveNotImplemented" : "battle:moveNoPP"; const moveName = move.getName().replace(" (N)", ""); // Trims off the indicator - this.scene.ui.showText(i18next.t(errorMessage, { moveName: moveName }), null, () => { - this.scene.ui.clearText(); - this.scene.ui.setMode(Mode.FIGHT, this.fieldIndex); + globalScene.ui.showText(i18next.t(errorMessage, { moveName: moveName }), null, () => { + globalScene.ui.clearText(); + globalScene.ui.setMode(Mode.FIGHT, this.fieldIndex); }, null, true); } break; case Command.BALL: - const notInDex = (this.scene.getEnemyField().filter(p => p.isActive(true)).some(p => !p.scene.gameData.dexData[p.species.speciesId].caughtAttr) && this.scene.gameData.getStarterCount(d => !!d.caughtAttr) < Object.keys(speciesStarterCosts).length - 1); - if (this.scene.arena.biomeType === Biome.END && (!this.scene.gameMode.isClassic || this.scene.gameMode.isFreshStartChallenge() || notInDex )) { - this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); - this.scene.ui.setMode(Mode.MESSAGE); - this.scene.ui.showText(i18next.t("battle:noPokeballForce"), null, () => { - this.scene.ui.showText("", 0); - this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); + const notInDex = (globalScene.getEnemyField().filter(p => p.isActive(true)).some(p => !globalScene.gameData.dexData[p.species.speciesId].caughtAttr) && globalScene.gameData.getStarterCount(d => !!d.caughtAttr) < Object.keys(speciesStarterCosts).length - 1); + if (globalScene.arena.biomeType === Biome.END && (!globalScene.gameMode.isClassic || globalScene.gameMode.isFreshStartChallenge() || notInDex )) { + globalScene.ui.setMode(Mode.COMMAND, this.fieldIndex); + globalScene.ui.setMode(Mode.MESSAGE); + globalScene.ui.showText(i18next.t("battle:noPokeballForce"), null, () => { + globalScene.ui.showText("", 0); + globalScene.ui.setMode(Mode.COMMAND, this.fieldIndex); }, null, true); - } else if (this.scene.currentBattle.battleType === BattleType.TRAINER) { - this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); - this.scene.ui.setMode(Mode.MESSAGE); - this.scene.ui.showText(i18next.t("battle:noPokeballTrainer"), null, () => { - this.scene.ui.showText("", 0); - this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); + } else if (globalScene.currentBattle.battleType === BattleType.TRAINER) { + globalScene.ui.setMode(Mode.COMMAND, this.fieldIndex); + globalScene.ui.setMode(Mode.MESSAGE); + globalScene.ui.showText(i18next.t("battle:noPokeballTrainer"), null, () => { + globalScene.ui.showText("", 0); + globalScene.ui.setMode(Mode.COMMAND, this.fieldIndex); }, null, true); - } else if (this.scene.currentBattle.isBattleMysteryEncounter() && !this.scene.currentBattle.mysteryEncounter!.catchAllowed) { - this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); - this.scene.ui.setMode(Mode.MESSAGE); - this.scene.ui.showText(i18next.t("battle:noPokeballMysteryEncounter"), null, () => { - this.scene.ui.showText("", 0); - this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); + } else if (globalScene.currentBattle.isBattleMysteryEncounter() && !globalScene.currentBattle.mysteryEncounter!.catchAllowed) { + globalScene.ui.setMode(Mode.COMMAND, this.fieldIndex); + globalScene.ui.setMode(Mode.MESSAGE); + globalScene.ui.showText(i18next.t("battle:noPokeballMysteryEncounter"), null, () => { + globalScene.ui.showText("", 0); + globalScene.ui.setMode(Mode.COMMAND, this.fieldIndex); }, null, true); } else { - const targets = this.scene.getEnemyField().filter(p => p.isActive(true)).map(p => p.getBattlerIndex()); + const targets = globalScene.getEnemyField().filter(p => p.isActive(true)).map(p => p.getBattlerIndex()); if (targets.length > 1) { - this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); - this.scene.ui.setMode(Mode.MESSAGE); - this.scene.ui.showText(i18next.t("battle:noPokeballMulti"), null, () => { - this.scene.ui.showText("", 0); - this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); + globalScene.ui.setMode(Mode.COMMAND, this.fieldIndex); + globalScene.ui.setMode(Mode.MESSAGE); + globalScene.ui.showText(i18next.t("battle:noPokeballMulti"), null, () => { + globalScene.ui.showText("", 0); + globalScene.ui.setMode(Mode.COMMAND, this.fieldIndex); }, null, true); } else if (cursor < 5) { - const targetPokemon = this.scene.getEnemyField().find(p => p.isActive(true)); + const targetPokemon = globalScene.getEnemyField().find(p => p.isActive(true)); if (targetPokemon?.isBoss() && targetPokemon?.bossSegmentIndex >= 1 && !targetPokemon?.hasAbility(Abilities.WONDER_GUARD, false, true) && cursor < PokeballType.MASTER_BALL) { - this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); - this.scene.ui.setMode(Mode.MESSAGE); - this.scene.ui.showText(i18next.t("battle:noPokeballStrong"), null, () => { - this.scene.ui.showText("", 0); - this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); + globalScene.ui.setMode(Mode.COMMAND, this.fieldIndex); + globalScene.ui.setMode(Mode.MESSAGE); + globalScene.ui.showText(i18next.t("battle:noPokeballStrong"), null, () => { + globalScene.ui.showText("", 0); + globalScene.ui.setMode(Mode.COMMAND, this.fieldIndex); }, null, true); } else { - this.scene.currentBattle.turnCommands[this.fieldIndex] = { command: Command.BALL, cursor: cursor }; - this.scene.currentBattle.turnCommands[this.fieldIndex]!.targets = targets; + globalScene.currentBattle.turnCommands[this.fieldIndex] = { command: Command.BALL, cursor: cursor }; + globalScene.currentBattle.turnCommands[this.fieldIndex]!.targets = targets; if (this.fieldIndex) { - this.scene.currentBattle.turnCommands[this.fieldIndex - 1]!.skip = true; + globalScene.currentBattle.turnCommands[this.fieldIndex - 1]!.skip = true; } success = true; } @@ -210,21 +214,21 @@ export class CommandPhase extends FieldPhase { case Command.POKEMON: case Command.RUN: const isSwitch = command === Command.POKEMON; - const { currentBattle, arena } = this.scene; + const { currentBattle, arena } = globalScene; const mysteryEncounterFleeAllowed = currentBattle.mysteryEncounter?.fleeAllowed; if (!isSwitch && (arena.biomeType === Biome.END || (!isNullOrUndefined(mysteryEncounterFleeAllowed) && !mysteryEncounterFleeAllowed))) { - this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); - this.scene.ui.setMode(Mode.MESSAGE); - this.scene.ui.showText(i18next.t("battle:noEscapeForce"), null, () => { - this.scene.ui.showText("", 0); - this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); + globalScene.ui.setMode(Mode.COMMAND, this.fieldIndex); + globalScene.ui.setMode(Mode.MESSAGE); + globalScene.ui.showText(i18next.t("battle:noEscapeForce"), null, () => { + globalScene.ui.showText("", 0); + globalScene.ui.setMode(Mode.COMMAND, this.fieldIndex); }, null, true); } else if (!isSwitch && (currentBattle.battleType === BattleType.TRAINER || currentBattle.mysteryEncounter?.encounterMode === MysteryEncounterMode.TRAINER_BATTLE)) { - this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); - this.scene.ui.setMode(Mode.MESSAGE); - this.scene.ui.showText(i18next.t("battle:noEscapeTrainer"), null, () => { - this.scene.ui.showText("", 0); - this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); + globalScene.ui.setMode(Mode.COMMAND, this.fieldIndex); + globalScene.ui.setMode(Mode.MESSAGE); + globalScene.ui.showText(i18next.t("battle:noEscapeTrainer"), null, () => { + globalScene.ui.showText("", 0); + globalScene.ui.setMode(Mode.COMMAND, this.fieldIndex); }, null, true); } else { const batonPass = isSwitch && args[0] as boolean; @@ -239,38 +243,38 @@ export class CommandPhase extends FieldPhase { } } else if (trappedAbMessages.length > 0) { if (!isSwitch) { - this.scene.ui.setMode(Mode.MESSAGE); + globalScene.ui.setMode(Mode.MESSAGE); } - this.scene.ui.showText(trappedAbMessages[0], null, () => { - this.scene.ui.showText("", 0); + globalScene.ui.showText(trappedAbMessages[0], null, () => { + globalScene.ui.showText("", 0); if (!isSwitch) { - this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); + globalScene.ui.setMode(Mode.COMMAND, this.fieldIndex); } }, null, true); } else { const trapTag = playerPokemon.getTag(TrappedTag); - const fairyLockTag = playerPokemon.scene.arena.getTagOnSide(ArenaTagType.FAIRY_LOCK, ArenaTagSide.PLAYER); + const fairyLockTag = globalScene.arena.getTagOnSide(ArenaTagType.FAIRY_LOCK, ArenaTagSide.PLAYER); if (!trapTag && !fairyLockTag) { i18next.t(`battle:noEscape${isSwitch ? "Switch" : "Flee"}`); break; } if (!isSwitch) { - this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); - this.scene.ui.setMode(Mode.MESSAGE); + globalScene.ui.setMode(Mode.COMMAND, this.fieldIndex); + globalScene.ui.setMode(Mode.MESSAGE); } const showNoEscapeText = (tag: any) => { - this.scene.ui.showText( + globalScene.ui.showText( i18next.t("battle:noEscapePokemon", { - pokemonName: tag.sourceId && this.scene.getPokemonById(tag.sourceId) ? getPokemonNameWithAffix(this.scene.getPokemonById(tag.sourceId)!) : "", + pokemonName: tag.sourceId && globalScene.getPokemonById(tag.sourceId) ? getPokemonNameWithAffix(globalScene.getPokemonById(tag.sourceId)!) : "", moveName: tag.getMoveName(), escapeVerb: isSwitch ? i18next.t("battle:escapeVerbSwitch") : i18next.t("battle:escapeVerbFlee") }), null, () => { - this.scene.ui.showText("", 0); + globalScene.ui.showText("", 0); if (!isSwitch) { - this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); + globalScene.ui.setMode(Mode.COMMAND, this.fieldIndex); } }, null, @@ -297,8 +301,8 @@ export class CommandPhase extends FieldPhase { cancel() { if (this.fieldIndex) { - this.scene.unshiftPhase(new CommandPhase(this.scene, 0)); - this.scene.unshiftPhase(new CommandPhase(this.scene, 1)); + globalScene.unshiftPhase(new CommandPhase(0)); + globalScene.unshiftPhase(new CommandPhase(1)); this.end(); } } @@ -308,10 +312,10 @@ export class CommandPhase extends FieldPhase { } getPokemon(): PlayerPokemon { - return this.scene.getPlayerField()[this.fieldIndex]; + return globalScene.getPlayerField()[this.fieldIndex]; } end() { - this.scene.ui.setMode(Mode.MESSAGE).then(() => super.end()); + globalScene.ui.setMode(Mode.MESSAGE).then(() => super.end()); } } diff --git a/src/phases/common-anim-phase.ts b/src/phases/common-anim-phase.ts index c4071488eef..53cbdfaeb38 100644 --- a/src/phases/common-anim-phase.ts +++ b/src/phases/common-anim-phase.ts @@ -1,6 +1,7 @@ -import BattleScene from "#app/battle-scene"; -import { BattlerIndex } from "#app/battle"; -import { CommonAnim, CommonBattleAnim } from "#app/data/battle-anims"; +import type { BattlerIndex } from "#app/battle"; +import { globalScene } from "#app/global-scene"; +import type { CommonAnim } from "#app/data/battle-anims"; +import { CommonBattleAnim } from "#app/data/battle-anims"; import { PokemonPhase } from "./pokemon-phase"; export class CommonAnimPhase extends PokemonPhase { @@ -8,8 +9,8 @@ export class CommonAnimPhase extends PokemonPhase { private targetIndex: integer | undefined; private playOnEmptyField: boolean; - constructor(scene: BattleScene, battlerIndex?: BattlerIndex, targetIndex?: BattlerIndex | undefined, anim?: CommonAnim, playOnEmptyField: boolean = false) { - super(scene, battlerIndex); + constructor(battlerIndex?: BattlerIndex, targetIndex?: BattlerIndex, anim?: CommonAnim, playOnEmptyField: boolean = false) { + super(battlerIndex); this.anim = anim!; // TODO: is this bang correct? this.targetIndex = targetIndex; @@ -21,8 +22,8 @@ export class CommonAnimPhase extends PokemonPhase { } start() { - const target = this.targetIndex !== undefined ? (this.player ? this.scene.getEnemyField() : this.scene.getPlayerField())[this.targetIndex] : this.getPokemon(); - new CommonBattleAnim(this.anim, this.getPokemon(), target).play(this.scene, false, () => { + const target = this.targetIndex !== undefined ? (this.player ? globalScene.getEnemyField() : globalScene.getPlayerField())[this.targetIndex] : this.getPokemon(); + new CommonBattleAnim(this.anim, this.getPokemon(), target).play(false, () => { this.end(); }); } diff --git a/src/phases/damage-anim-phase.ts b/src/phases/damage-anim-phase.ts index 42f0e1ba845..2983d6b2de0 100644 --- a/src/phases/damage-anim-phase.ts +++ b/src/phases/damage-anim-phase.ts @@ -1,4 +1,4 @@ -import type BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { type BattlerIndex } from "#app/battle"; import { BattleSpec } from "#enums/battle-spec"; import { type DamageResult, HitResult } from "#app/field/pokemon"; @@ -10,8 +10,8 @@ export class DamageAnimPhase extends PokemonPhase { private damageResult: DamageResult; private critical: boolean; - constructor(scene: BattleScene, battlerIndex: BattlerIndex, amount: integer, damageResult?: DamageResult, critical: boolean = false) { - super(scene, battlerIndex); + constructor(battlerIndex: BattlerIndex, amount: integer, damageResult?: DamageResult, critical: boolean = false) { + super(battlerIndex); this.amount = amount; this.damageResult = damageResult || HitResult.EFFECTIVE; @@ -22,11 +22,11 @@ export class DamageAnimPhase extends PokemonPhase { super.start(); if (this.damageResult === HitResult.ONE_HIT_KO) { - if (this.scene.moveAnimations) { - this.scene.toggleInvert(true); + if (globalScene.moveAnimations) { + globalScene.toggleInvert(true); } - this.scene.time.delayedCall(fixedInt(1000), () => { - this.scene.toggleInvert(false); + globalScene.time.delayedCall(fixedInt(1000), () => { + globalScene.toggleInvert(false); this.applyDamage(); }); return; @@ -42,23 +42,23 @@ export class DamageAnimPhase extends PokemonPhase { applyDamage() { switch (this.damageResult) { case HitResult.EFFECTIVE: - this.scene.playSound("se/hit"); + globalScene.playSound("se/hit"); break; case HitResult.SUPER_EFFECTIVE: case HitResult.ONE_HIT_KO: - this.scene.playSound("se/hit_strong"); + globalScene.playSound("se/hit_strong"); break; case HitResult.NOT_VERY_EFFECTIVE: - this.scene.playSound("se/hit_weak"); + globalScene.playSound("se/hit_weak"); break; } if (this.amount) { - this.scene.damageNumberHandler.add(this.getPokemon(), this.amount, this.damageResult, this.critical); + globalScene.damageNumberHandler.add(this.getPokemon(), this.amount, this.damageResult, this.critical); } if (this.damageResult !== HitResult.OTHER && this.amount > 0) { - const flashTimer = this.scene.time.addEvent({ + const flashTimer = globalScene.time.addEvent({ delay: 100, repeat: 5, startAt: 200, @@ -75,8 +75,8 @@ export class DamageAnimPhase extends PokemonPhase { } override end() { - if (this.scene.currentBattle.battleSpec === BattleSpec.FINAL_BOSS) { - this.scene.initFinalBossPhaseTwo(this.getPokemon()); + if (globalScene.currentBattle.battleSpec === BattleSpec.FINAL_BOSS) { + globalScene.initFinalBossPhaseTwo(this.getPokemon()); } else { super.end(); } diff --git a/src/phases/egg-hatch-phase.ts b/src/phases/egg-hatch-phase.ts index 803fd478fd4..11bf9584ee7 100644 --- a/src/phases/egg-hatch-phase.ts +++ b/src/phases/egg-hatch-phase.ts @@ -1,19 +1,20 @@ -import BattleScene, { AnySound } from "#app/battle-scene"; -import { Egg } from "#app/data/egg"; +import type { AnySound } from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; +import type { Egg } from "#app/data/egg"; import { EggCountChangedEvent } from "#app/events/egg"; -import { PlayerPokemon } from "#app/field/pokemon"; +import type { PlayerPokemon } from "#app/field/pokemon"; import { getPokemonNameWithAffix } from "#app/messages"; import { Phase } from "#app/phase"; import { achvs } from "#app/system/achv"; import EggCounterContainer from "#app/ui/egg-counter-container"; -import EggHatchSceneHandler from "#app/ui/egg-hatch-scene-handler"; +import type EggHatchSceneHandler from "#app/ui/egg-hatch-scene-handler"; import PokemonInfoContainer from "#app/ui/pokemon-info-container"; import { Mode } from "#app/ui/ui"; import i18next from "i18next"; import SoundFade from "phaser3-rex-plugins/plugins/soundfade"; import * as Utils from "#app/utils"; -import { EggLapsePhase } from "./egg-lapse-phase"; -import { EggHatchData } from "#app/data/egg-hatch-data"; +import type { EggLapsePhase } from "./egg-lapse-phase"; +import type { EggHatchData } from "#app/data/egg-hatch-data"; import { doShinySparkleAnim } from "#app/field/anims"; @@ -67,8 +68,8 @@ export class EggHatchPhase extends Phase { private evolutionBgm: AnySound; private eggLapsePhase: EggLapsePhase; - constructor(scene: BattleScene, hatchScene: EggLapsePhase, egg: Egg, eggsToHatchCount: integer) { - super(scene); + constructor(hatchScene: EggLapsePhase, egg: Egg, eggsToHatchCount: integer) { + super(); this.eggLapsePhase = hatchScene; this.egg = egg; this.eggsToHatchCount = eggsToHatchCount; @@ -77,37 +78,37 @@ export class EggHatchPhase extends Phase { start() { super.start(); - this.scene.ui.setModeForceTransition(Mode.EGG_HATCH_SCENE).then(() => { + globalScene.ui.setModeForceTransition(Mode.EGG_HATCH_SCENE).then(() => { if (!this.egg) { return this.end(); } - const eggIndex = this.scene.gameData.eggs.findIndex(e => e.id === this.egg.id); + const eggIndex = globalScene.gameData.eggs.findIndex(e => e.id === this.egg.id); if (eggIndex === -1) { return this.end(); } - this.scene.gameData.eggs.splice(eggIndex, 1); + globalScene.gameData.eggs.splice(eggIndex, 1); - this.scene.fadeOutBgm(undefined, false); + globalScene.fadeOutBgm(undefined, false); - this.eggHatchHandler = this.scene.ui.getHandler() as EggHatchSceneHandler; + this.eggHatchHandler = globalScene.ui.getHandler() as EggHatchSceneHandler; this.eggHatchContainer = this.eggHatchHandler.eggHatchContainer; - this.eggHatchBg = this.scene.add.image(0, 0, "default_bg"); + this.eggHatchBg = globalScene.add.image(0, 0, "default_bg"); this.eggHatchBg.setOrigin(0, 0); this.eggHatchContainer.add(this.eggHatchBg); - this.eggContainer = this.scene.add.container(this.eggHatchBg.displayWidth / 2, this.eggHatchBg.displayHeight / 2); + this.eggContainer = globalScene.add.container(this.eggHatchBg.displayWidth / 2, this.eggHatchBg.displayHeight / 2); - this.eggSprite = this.scene.add.sprite(0, 0, "egg", `egg_${this.egg.getKey()}`); - this.eggCrackSprite = this.scene.add.sprite(0, 0, "egg_crack", "0"); + this.eggSprite = globalScene.add.sprite(0, 0, "egg", `egg_${this.egg.getKey()}`); + this.eggCrackSprite = globalScene.add.sprite(0, 0, "egg_crack", "0"); this.eggCrackSprite.setVisible(false); - this.eggLightraysOverlay = this.scene.add.sprite((-this.eggHatchBg.displayWidth / 2) + 4, -this.eggHatchBg.displayHeight / 2, "egg_lightrays", "3"); + this.eggLightraysOverlay = globalScene.add.sprite((-this.eggHatchBg.displayWidth / 2) + 4, -this.eggHatchBg.displayHeight / 2, "egg_lightrays", "3"); this.eggLightraysOverlay.setOrigin(0, 0); this.eggLightraysOverlay.setVisible(false); @@ -116,28 +117,28 @@ export class EggHatchPhase extends Phase { this.eggContainer.add(this.eggLightraysOverlay); this.eggHatchContainer.add(this.eggContainer); - this.eggCounterContainer = new EggCounterContainer(this.scene, this.eggsToHatchCount); + this.eggCounterContainer = new EggCounterContainer(this.eggsToHatchCount); this.eggHatchContainer.add(this.eggCounterContainer); const getPokemonSprite = () => { - const ret = this.scene.add.sprite(this.eggHatchBg.displayWidth / 2, this.eggHatchBg.displayHeight / 2, "pkmn__sub"); - ret.setPipeline(this.scene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], ignoreTimeTint: true }); + const ret = globalScene.add.sprite(this.eggHatchBg.displayWidth / 2, this.eggHatchBg.displayHeight / 2, "pkmn__sub"); + ret.setPipeline(globalScene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], ignoreTimeTint: true }); return ret; }; this.eggHatchContainer.add((this.pokemonSprite = getPokemonSprite())); - this.pokemonShinySparkle = this.scene.add.sprite(this.pokemonSprite.x, this.pokemonSprite.y, "shiny"); + this.pokemonShinySparkle = globalScene.add.sprite(this.pokemonSprite.x, this.pokemonSprite.y, "shiny"); this.pokemonShinySparkle.setVisible(false); this.eggHatchContainer.add(this.pokemonShinySparkle); - this.eggHatchOverlay = this.scene.add.rectangle(0, -this.scene.game.canvas.height / 6, this.scene.game.canvas.width / 6, this.scene.game.canvas.height / 6, 0xFFFFFF); + this.eggHatchOverlay = globalScene.add.rectangle(0, -globalScene.game.canvas.height / 6, globalScene.game.canvas.width / 6, globalScene.game.canvas.height / 6, 0xFFFFFF); this.eggHatchOverlay.setOrigin(0, 0); this.eggHatchOverlay.setAlpha(0); - this.scene.fieldUI.add(this.eggHatchOverlay); + globalScene.fieldUI.add(this.eggHatchOverlay); - this.infoContainer = new PokemonInfoContainer(this.scene); + this.infoContainer = new PokemonInfoContainer(); this.infoContainer.setup(); this.eggHatchContainer.add(this.infoContainer); @@ -155,13 +156,13 @@ export class EggHatchPhase extends Phase { pokemon.loadAssets().then(() => { this.canSkip = true; - this.scene.time.delayedCall(1000, () => { + globalScene.time.delayedCall(1000, () => { if (!this.hatched) { - this.evolutionBgm = this.scene.playSoundWithoutBgm("evolution"); + this.evolutionBgm = globalScene.playSoundWithoutBgm("evolution"); } }); - this.scene.time.delayedCall(2000, () => { + globalScene.time.delayedCall(2000, () => { if (this.hatched) { return; } @@ -171,25 +172,25 @@ export class EggHatchPhase extends Phase { if (this.hatched) { return; } - this.scene.time.delayedCall(1000, () => { + globalScene.time.delayedCall(1000, () => { if (this.hatched) { return; } this.doSpray(2, this.eggSprite.displayHeight / -4); this.eggCrackSprite.setFrame("1"); - this.scene.time.delayedCall(125, () => this.eggCrackSprite.setFrame("2")); + globalScene.time.delayedCall(125, () => this.eggCrackSprite.setFrame("2")); this.doEggShake(4).then(() => { if (this.hatched) { return; } - this.scene.time.delayedCall(1000, () => { + globalScene.time.delayedCall(1000, () => { if (this.hatched) { return; } - this.scene.playSound("se/egg_crack"); + globalScene.playSound("se/egg_crack"); this.doSpray(4); this.eggCrackSprite.setFrame("3"); - this.scene.time.delayedCall(125, () => this.eggCrackSprite.setFrame("4")); + globalScene.time.delayedCall(125, () => this.eggCrackSprite.setFrame("4")); this.doEggShake(8, 2).then(() => { if (!this.hatched) { this.doHatch(); @@ -205,10 +206,10 @@ export class EggHatchPhase extends Phase { } end() { - if (this.scene.findPhase((p) => p instanceof EggHatchPhase)) { + if (globalScene.findPhase((p) => p instanceof EggHatchPhase)) { this.eggHatchHandler.clear(); } else { - this.scene.time.delayedCall(250, () => this.scene.setModifiersVisible(true)); + globalScene.time.delayedCall(250, () => globalScene.setModifiersVisible(true)); } super.end(); } @@ -228,14 +229,14 @@ export class EggHatchPhase extends Phase { if (count === undefined) { count = 0; } - this.scene.playSound("se/pb_move"); - this.scene.tweens.add({ + globalScene.playSound("se/pb_move"); + globalScene.tweens.add({ targets: this.eggContainer, x: `-=${intensity / (count ? 1 : 2)}`, ease: "Sine.easeInOut", duration: 125, onComplete: () => { - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this.eggContainer, x: `+=${intensity}`, ease: "Sine.easeInOut", @@ -245,7 +246,7 @@ export class EggHatchPhase extends Phase { if (count! < repeatCount!) { // we know they are defined return this.doEggShake(intensity, repeatCount, count).then(() => resolve()); } - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this.eggContainer, x: `-=${intensity / 2}`, ease: "Sine.easeInOut", @@ -286,14 +287,14 @@ export class EggHatchPhase extends Phase { this.canSkip = false; this.hatched = true; if (this.evolutionBgm) { - SoundFade.fadeOut(this.scene, this.evolutionBgm, Utils.fixedInt(100)); + SoundFade.fadeOut(globalScene, this.evolutionBgm, Utils.fixedInt(100)); } for (let e = 0; e < 5; e++) { - this.scene.time.delayedCall(Utils.fixedInt(375 * e), () => this.scene.playSound("se/egg_hatch", { volume: 1 - (e * 0.2) })); + globalScene.time.delayedCall(Utils.fixedInt(375 * e), () => globalScene.playSound("se/egg_hatch", { volume: 1 - (e * 0.2) })); } this.eggLightraysOverlay.setVisible(true); this.eggLightraysOverlay.play("egg_lightrays"); - this.scene.tweens.add({ + globalScene.tweens.add({ duration: Utils.fixedInt(125), targets: this.eggHatchOverlay, alpha: 1, @@ -303,7 +304,7 @@ export class EggHatchPhase extends Phase { this.canSkip = true; } }); - this.scene.time.delayedCall(Utils.fixedInt(1500), () => { + globalScene.time.delayedCall(Utils.fixedInt(1500), () => { this.canSkip = false; if (!this.skipped) { this.doReveal(); @@ -318,16 +319,16 @@ export class EggHatchPhase extends Phase { // set the previous dex data so info container can show new unlocks in egg summary const isShiny = this.pokemon.isShiny(); if (this.pokemon.species.subLegendary) { - this.scene.validateAchv(achvs.HATCH_SUB_LEGENDARY); + globalScene.validateAchv(achvs.HATCH_SUB_LEGENDARY); } if (this.pokemon.species.legendary) { - this.scene.validateAchv(achvs.HATCH_LEGENDARY); + globalScene.validateAchv(achvs.HATCH_LEGENDARY); } if (this.pokemon.species.mythical) { - this.scene.validateAchv(achvs.HATCH_MYTHICAL); + globalScene.validateAchv(achvs.HATCH_MYTHICAL); } if (isShiny) { - this.scene.validateAchv(achvs.HATCH_SHINY); + globalScene.validateAchv(achvs.HATCH_SHINY); } this.eggContainer.setVisible(false); const spriteKey = this.pokemon.getSpriteKey(true); @@ -341,33 +342,33 @@ export class EggHatchPhase extends Phase { this.pokemonSprite.setPipelineData("shiny", this.pokemon.shiny); this.pokemonSprite.setPipelineData("variant", this.pokemon.variant); this.pokemonSprite.setVisible(true); - this.scene.time.delayedCall(Utils.fixedInt(250), () => { + globalScene.time.delayedCall(Utils.fixedInt(250), () => { this.eggsToHatchCount--; this.eggHatchHandler.eventTarget.dispatchEvent(new EggCountChangedEvent(this.eggsToHatchCount)); this.pokemon.cry(); if (isShiny) { - this.scene.time.delayedCall(Utils.fixedInt(500), () => { - doShinySparkleAnim(this.scene, this.pokemonShinySparkle, this.pokemon.variant); + globalScene.time.delayedCall(Utils.fixedInt(500), () => { + doShinySparkleAnim(this.pokemonShinySparkle, this.pokemon.variant); }); } - this.scene.time.delayedCall(Utils.fixedInt(!this.skipped ? !isShiny ? 1250 : 1750 : !isShiny ? 250 : 750), () => { + globalScene.time.delayedCall(Utils.fixedInt(!this.skipped ? !isShiny ? 1250 : 1750 : !isShiny ? 250 : 750), () => { this.infoContainer.show(this.pokemon, false, this.skipped ? 2 : 1); - this.scene.playSoundWithoutBgm("evolution_fanfare"); + globalScene.playSoundWithoutBgm("evolution_fanfare"); - this.scene.ui.showText(i18next.t("egg:hatchFromTheEgg", { pokemonName: getPokemonNameWithAffix(this.pokemon) }), null, () => { - this.scene.gameData.updateSpeciesDexIvs(this.pokemon.species.speciesId, this.pokemon.ivs); - this.scene.gameData.setPokemonCaught(this.pokemon, true, true).then(() => { - this.scene.gameData.setEggMoveUnlocked(this.pokemon.species, this.eggMoveIndex).then((value) => { + globalScene.ui.showText(i18next.t("egg:hatchFromTheEgg", { pokemonName: getPokemonNameWithAffix(this.pokemon) }), null, () => { + globalScene.gameData.updateSpeciesDexIvs(this.pokemon.species.speciesId, this.pokemon.ivs); + globalScene.gameData.setPokemonCaught(this.pokemon, true, true).then(() => { + globalScene.gameData.setEggMoveUnlocked(this.pokemon.species, this.eggMoveIndex).then((value) => { this.eggHatchData.setEggMoveUnlocked(value); - this.scene.ui.showText("", 0); + globalScene.ui.showText("", 0); this.end(); }); }); }, null, true, 3000); }); }); - this.scene.tweens.add({ + globalScene.tweens.add({ duration: Utils.fixedInt(this.skipped ? 500 : 3000), targets: this.eggHatchOverlay, alpha: 0, @@ -391,7 +392,7 @@ export class EggHatchPhase extends Phase { * @param offsetY how much to offset the Y coordinates */ doSpray(intensity: integer, offsetY?: number) { - this.scene.tweens.addCounter({ + globalScene.tweens.addCounter({ repeat: intensity, duration: Utils.getFrameMs(1), onRepeat: () => { @@ -409,7 +410,7 @@ export class EggHatchPhase extends Phase { const initialX = this.eggHatchBg.displayWidth / 2; const initialY = this.eggHatchBg.displayHeight / 2 + offsetY; const shardKey = !this.egg.isManaphyEgg() ? this.egg.tier.toString() : "1"; - const particle = this.scene.add.image(initialX, initialY, "egg_shard", `${shardKey}_${Math.floor(trigIndex / 2)}`); + const particle = globalScene.add.image(initialX, initialY, "egg_shard", `${shardKey}_${Math.floor(trigIndex / 2)}`); this.eggHatchContainer.add(particle); let f = 0; @@ -417,7 +418,7 @@ export class EggHatchPhase extends Phase { const speed = 3 - Utils.randInt(8); const amp = 24 + Utils.randInt(32); - const particleTimer = this.scene.tweens.addCounter({ + const particleTimer = globalScene.tweens.addCounter({ repeat: -1, duration: Utils.getFrameMs(1), onRepeat: () => { diff --git a/src/phases/egg-lapse-phase.ts b/src/phases/egg-lapse-phase.ts index 8de26ee3ef0..62da0edf5b7 100644 --- a/src/phases/egg-lapse-phase.ts +++ b/src/phases/egg-lapse-phase.ts @@ -1,12 +1,13 @@ -import BattleScene from "#app/battle-scene"; -import { Egg, EGG_SEED } from "#app/data/egg"; +import { globalScene } from "#app/global-scene"; +import type { Egg } from "#app/data/egg"; +import { EGG_SEED } from "#app/data/egg"; import { Phase } from "#app/phase"; import i18next from "i18next"; import Overrides from "#app/overrides"; import { EggHatchPhase } from "./egg-hatch-phase"; import { Mode } from "#app/ui/ui"; import { achvs } from "#app/system/achv"; -import { PlayerPokemon } from "#app/field/pokemon"; +import type { PlayerPokemon } from "#app/field/pokemon"; import { EggSummaryPhase } from "./egg-summary-phase"; import { EggHatchData } from "#app/data/egg-hatch-data"; @@ -18,24 +19,24 @@ export class EggLapsePhase extends Phase { private eggHatchData: EggHatchData[] = []; private readonly minEggsToSkip: number = 2; - constructor(scene: BattleScene) { - super(scene); + constructor() { + super(); } start() { super.start(); - const eggsToHatch: Egg[] = this.scene.gameData.eggs.filter((egg: Egg) => { + const eggsToHatch: Egg[] = globalScene.gameData.eggs.filter((egg: Egg) => { return Overrides.EGG_IMMEDIATE_HATCH_OVERRIDE ? true : --egg.hatchWaves < 1; }); const eggsToHatchCount: number = eggsToHatch.length; this.eggHatchData = []; if (eggsToHatchCount > 0) { - if (eggsToHatchCount >= this.minEggsToSkip && this.scene.eggSkipPreference === 1) { - this.scene.ui.showText(i18next.t("battle:eggHatching"), 0, () => { + if (eggsToHatchCount >= this.minEggsToSkip && globalScene.eggSkipPreference === 1) { + globalScene.ui.showText(i18next.t("battle:eggHatching"), 0, () => { // show prompt for skip, blocking inputs for 1 second - this.scene.ui.showText(i18next.t("battle:eggSkipPrompt", { eggsToHatch: eggsToHatchCount }), 0); - this.scene.ui.setModeWithoutClear(Mode.CONFIRM, () => { + globalScene.ui.showText(i18next.t("battle:eggSkipPrompt", { eggsToHatch: eggsToHatchCount }), 0); + globalScene.ui.setModeWithoutClear(Mode.CONFIRM, () => { this.hatchEggsSkipped(eggsToHatch); this.showSummary(); }, () => { @@ -45,13 +46,13 @@ export class EggLapsePhase extends Phase { null, null, null, 1000, true ); }, 100, true); - } else if (eggsToHatchCount >= this.minEggsToSkip && this.scene.eggSkipPreference === 2) { - this.scene.queueMessage(i18next.t("battle:eggHatching")); + } else if (eggsToHatchCount >= this.minEggsToSkip && globalScene.eggSkipPreference === 2) { + globalScene.queueMessage(i18next.t("battle:eggHatching")); this.hatchEggsSkipped(eggsToHatch); this.showSummary(); } else { // regular hatches, no summary - this.scene.queueMessage(i18next.t("battle:eggHatching")); + globalScene.queueMessage(i18next.t("battle:eggHatching")); this.hatchEggsRegular(eggsToHatch); this.end(); } @@ -67,7 +68,7 @@ export class EggLapsePhase extends Phase { hatchEggsRegular(eggsToHatch: Egg[]) { let eggsToHatchCount: number = eggsToHatch.length; for (const egg of eggsToHatch) { - this.scene.unshiftPhase(new EggHatchPhase(this.scene, this, egg, eggsToHatchCount)); + globalScene.unshiftPhase(new EggHatchPhase(this, egg, eggsToHatchCount)); eggsToHatchCount--; } } @@ -83,7 +84,7 @@ export class EggLapsePhase extends Phase { } showSummary() { - this.scene.unshiftPhase(new EggSummaryPhase(this.scene, this.eggHatchData)); + globalScene.unshiftPhase(new EggSummaryPhase(this.eggHatchData)); this.end(); } @@ -93,11 +94,11 @@ export class EggLapsePhase extends Phase { * @param egg egg to hatch */ hatchEggSilently(egg: Egg) { - const eggIndex = this.scene.gameData.eggs.findIndex(e => e.id === egg.id); + const eggIndex = globalScene.gameData.eggs.findIndex(e => e.id === egg.id); if (eggIndex === -1) { return this.end(); } - this.scene.gameData.eggs.splice(eggIndex, 1); + globalScene.gameData.eggs.splice(eggIndex, 1); const data = this.generatePokemon(egg); const pokemon = data.pokemon; @@ -106,16 +107,16 @@ export class EggLapsePhase extends Phase { } if (pokemon.species.subLegendary) { - this.scene.validateAchv(achvs.HATCH_SUB_LEGENDARY); + globalScene.validateAchv(achvs.HATCH_SUB_LEGENDARY); } if (pokemon.species.legendary) { - this.scene.validateAchv(achvs.HATCH_LEGENDARY); + globalScene.validateAchv(achvs.HATCH_LEGENDARY); } if (pokemon.species.mythical) { - this.scene.validateAchv(achvs.HATCH_MYTHICAL); + globalScene.validateAchv(achvs.HATCH_MYTHICAL); } if (pokemon.isShiny()) { - this.scene.validateAchv(achvs.HATCH_SHINY); + globalScene.validateAchv(achvs.HATCH_SHINY); } } @@ -128,9 +129,9 @@ export class EggLapsePhase extends Phase { generatePokemon(egg: Egg): EggHatchData { let ret: PlayerPokemon; let newHatchData: EggHatchData; - this.scene.executeWithSeedOffset(() => { - ret = egg.generatePlayerPokemon(this.scene); - newHatchData = new EggHatchData(this.scene, ret, egg.eggMoveIndex); + globalScene.executeWithSeedOffset(() => { + ret = egg.generatePlayerPokemon(); + newHatchData = new EggHatchData(ret, egg.eggMoveIndex); newHatchData.setDex(); this.eggHatchData.push(newHatchData); diff --git a/src/phases/egg-summary-phase.ts b/src/phases/egg-summary-phase.ts index b673eb4887b..56741c5820f 100644 --- a/src/phases/egg-summary-phase.ts +++ b/src/phases/egg-summary-phase.ts @@ -1,7 +1,7 @@ -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { Phase } from "#app/phase"; import { Mode } from "#app/ui/ui"; -import { EggHatchData } from "#app/data/egg-hatch-data"; +import type { EggHatchData } from "#app/data/egg-hatch-data"; /** * Class that represents the egg summary phase @@ -11,8 +11,8 @@ import { EggHatchData } from "#app/data/egg-hatch-data"; export class EggSummaryPhase extends Phase { private eggHatchData: EggHatchData[]; - constructor(scene: BattleScene, eggHatchData: EggHatchData[]) { - super(scene); + constructor(eggHatchData: EggHatchData[]) { + super(); this.eggHatchData = eggHatchData; } @@ -22,8 +22,8 @@ export class EggSummaryPhase extends Phase { // updates next pokemon once the current update has been completed const updateNextPokemon = (i: number) => { if (i >= this.eggHatchData.length) { - this.scene.ui.setModeForceTransition(Mode.EGG_HATCH_SUMMARY, this.eggHatchData).then(() => { - this.scene.fadeOutBgm(undefined, false); + globalScene.ui.setModeForceTransition(Mode.EGG_HATCH_SUMMARY, this.eggHatchData).then(() => { + globalScene.fadeOutBgm(undefined, false); }); } else { @@ -40,8 +40,8 @@ export class EggSummaryPhase extends Phase { } end() { - this.scene.time.delayedCall(250, () => this.scene.setModifiersVisible(true)); - this.scene.ui.setModeForceTransition(Mode.MESSAGE).then(() => { + globalScene.time.delayedCall(250, () => globalScene.setModifiersVisible(true)); + globalScene.ui.setModeForceTransition(Mode.MESSAGE).then(() => { super.end(); }); } diff --git a/src/phases/encounter-phase.ts b/src/phases/encounter-phase.ts index a4c9aa44b36..6dae7dff8f9 100644 --- a/src/phases/encounter-phase.ts +++ b/src/phases/encounter-phase.ts @@ -1,5 +1,5 @@ import { BattlerIndex, BattleType } from "#app/battle"; -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { PLAYER_PARTY_MAX_SIZE } from "#app/constants"; import { applyAbAttrs, SyncEncounterNatureAbAttr } from "#app/data/ability"; import { initEncounterAnims, loadEncounterAnimAssets } from "#app/data/battle-anims"; @@ -10,7 +10,8 @@ import { getGoldenBugNetSpecies } from "#app/data/mystery-encounters/utils/encou import { TrainerSlot } from "#app/data/trainer-config"; import { getRandomWeatherType } from "#app/data/weather"; import { EncounterPhaseEvent } from "#app/events/battle-scene"; -import Pokemon, { FieldPosition } from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; +import { FieldPosition } from "#app/field/pokemon"; import { getPokemonNameWithAffix } from "#app/messages"; import { BoostBugSpawnModifier, IvScannerModifier, TurnHeldItemTransferModifier } from "#app/modifier/modifier"; import { ModifierPoolType, regenerateModifierPoolThresholds } from "#app/modifier/modifier-type"; @@ -41,8 +42,8 @@ import { WEIGHT_INCREMENT_ON_SPAWN_MISS } from "#app/data/mystery-encounters/mys export class EncounterPhase extends BattlePhase { private loaded: boolean; - constructor(scene: BattleScene, loaded?: boolean) { - super(scene); + constructor(loaded?: boolean) { + super(); this.loaded = !!loaded; } @@ -50,26 +51,26 @@ export class EncounterPhase extends BattlePhase { start() { super.start(); - this.scene.updateGameInfo(); + globalScene.updateGameInfo(); - this.scene.initSession(); + globalScene.initSession(); - this.scene.eventTarget.dispatchEvent(new EncounterPhaseEvent()); + globalScene.eventTarget.dispatchEvent(new EncounterPhaseEvent()); // Failsafe if players somehow skip floor 200 in classic mode - if (this.scene.gameMode.isClassic && this.scene.currentBattle.waveIndex > 200) { - this.scene.unshiftPhase(new GameOverPhase(this.scene)); + if (globalScene.gameMode.isClassic && globalScene.currentBattle.waveIndex > 200) { + globalScene.unshiftPhase(new GameOverPhase()); } const loadEnemyAssets: Promise[] = []; - const battle = this.scene.currentBattle; + const battle = globalScene.currentBattle; // Generate and Init Mystery Encounter if (battle.isBattleMysteryEncounter() && !battle.mysteryEncounter) { - this.scene.executeWithSeedOffset(() => { + globalScene.executeWithSeedOffset(() => { const currentSessionEncounterType = battle.mysteryEncounterType; - battle.mysteryEncounter = this.scene.getMysteryEncounter(currentSessionEncounterType); + battle.mysteryEncounter = globalScene.getMysteryEncounter(currentSessionEncounterType); }, battle.waveIndex * 16); } const mysteryEncounter = battle.mysteryEncounter; @@ -77,21 +78,21 @@ export class EncounterPhase extends BattlePhase { // If ME has an onInit() function, call it // Usually used for calculating rand data before initializing anything visual // Also prepopulates any dialogue tokens from encounter/option requirements - this.scene.executeWithSeedOffset(() => { + globalScene.executeWithSeedOffset(() => { if (mysteryEncounter.onInit) { - mysteryEncounter.onInit(this.scene); + mysteryEncounter.onInit(); } - mysteryEncounter.populateDialogueTokensFromRequirements(this.scene); + mysteryEncounter.populateDialogueTokensFromRequirements(); }, battle.waveIndex); // Add any special encounter animations to load if (mysteryEncounter.encounterAnimations && mysteryEncounter.encounterAnimations.length > 0) { - loadEnemyAssets.push(initEncounterAnims(this.scene, mysteryEncounter.encounterAnimations).then(() => loadEncounterAnimAssets(this.scene, true))); + loadEnemyAssets.push(initEncounterAnims(mysteryEncounter.encounterAnimations).then(() => loadEncounterAnimAssets(true))); } // Add intro visuals for mystery encounter - mysteryEncounter.initIntroVisuals(this.scene); - this.scene.field.add(mysteryEncounter.introVisuals!); + mysteryEncounter.initIntroVisuals(); + globalScene.field.add(mysteryEncounter.introVisuals!); } let totalBst = 0; @@ -105,35 +106,35 @@ export class EncounterPhase extends BattlePhase { if (battle.battleType === BattleType.TRAINER) { battle.enemyParty[e] = battle.trainer?.genPartyMember(e)!; // TODO:: is the bang correct here? } else { - let enemySpecies = this.scene.randomSpecies(battle.waveIndex, level, true); + let enemySpecies = globalScene.randomSpecies(battle.waveIndex, level, true); // If player has golden bug net, rolls 10% chance to replace non-boss wave wild species from the golden bug net bug pool - if (this.scene.findModifier(m => m instanceof BoostBugSpawnModifier) - && !this.scene.gameMode.isBoss(battle.waveIndex) - && this.scene.arena.biomeType !== Biome.END + if (globalScene.findModifier(m => m instanceof BoostBugSpawnModifier) + && !globalScene.gameMode.isBoss(battle.waveIndex) + && globalScene.arena.biomeType !== Biome.END && randSeedInt(10) === 0) { enemySpecies = getGoldenBugNetSpecies(level); } - battle.enemyParty[e] = this.scene.addEnemyPokemon(enemySpecies, level, TrainerSlot.NONE, !!this.scene.getEncounterBossSegments(battle.waveIndex, level, enemySpecies)); - if (this.scene.currentBattle.battleSpec === BattleSpec.FINAL_BOSS) { + battle.enemyParty[e] = globalScene.addEnemyPokemon(enemySpecies, level, TrainerSlot.NONE, !!globalScene.getEncounterBossSegments(battle.waveIndex, level, enemySpecies)); + if (globalScene.currentBattle.battleSpec === BattleSpec.FINAL_BOSS) { battle.enemyParty[e].ivs = new Array(6).fill(31); } - this.scene.getPlayerParty().slice(0, !battle.double ? 1 : 2).reverse().forEach(playerPokemon => { + globalScene.getPlayerParty().slice(0, !battle.double ? 1 : 2).reverse().forEach(playerPokemon => { applyAbAttrs(SyncEncounterNatureAbAttr, playerPokemon, null, false, battle.enemyParty[e]); }); } } - const enemyPokemon = this.scene.getEnemyParty()[e]; + const enemyPokemon = globalScene.getEnemyParty()[e]; if (e < (battle.double ? 2 : 1)) { enemyPokemon.setX(-66 + enemyPokemon.getFieldPositionOffset()[0]); enemyPokemon.resetSummonData(); } if (!this.loaded) { - this.scene.gameData.setPokemonSeen(enemyPokemon, true, battle.battleType === BattleType.TRAINER || battle?.mysteryEncounter?.encounterMode === MysteryEncounterMode.TRAINER_BATTLE); + globalScene.gameData.setPokemonSeen(enemyPokemon, true, battle.battleType === BattleType.TRAINER || battle?.mysteryEncounter?.encounterMode === MysteryEncounterMode.TRAINER_BATTLE); } if (enemyPokemon.species.speciesId === Species.ETERNATUS) { - if (this.scene.gameMode.isClassic && (battle.battleSpec === BattleSpec.FINAL_BOSS || this.scene.gameMode.isWaveFinal(battle.waveIndex))) { + if (globalScene.gameMode.isClassic && (battle.battleSpec === BattleSpec.FINAL_BOSS || globalScene.gameMode.isWaveFinal(battle.waveIndex))) { if (battle.battleSpec !== BattleSpec.FINAL_BOSS) { enemyPokemon.formIndex = 1; enemyPokemon.updateScale(); @@ -153,8 +154,8 @@ export class EncounterPhase extends BattlePhase { return true; }); - if (this.scene.getPlayerParty().filter(p => p.isShiny()).length === PLAYER_PARTY_MAX_SIZE) { - this.scene.validateAchv(achvs.SHINY_PARTY); + if (globalScene.getPlayerParty().filter(p => p.isShiny()).length === PLAYER_PARTY_MAX_SIZE) { + globalScene.validateAchv(achvs.SHINY_PARTY); } if (battle.battleType === BattleType.TRAINER) { @@ -168,11 +169,11 @@ export class EncounterPhase extends BattlePhase { } // Load Mystery Encounter Exclamation bubble and sfx loadEnemyAssets.push(new Promise(resolve => { - this.scene.loadSe("GEN8- Exclaim", "battle_anims", "GEN8- Exclaim.wav"); - this.scene.loadImage("encounter_exclaim", "mystery-encounters"); - this.scene.load.once(Phaser.Loader.Events.COMPLETE, () => resolve()); - if (!this.scene.load.isLoading()) { - this.scene.load.start(); + globalScene.loadSe("GEN8- Exclaim", "battle_anims", "GEN8- Exclaim.wav"); + globalScene.loadImage("encounter_exclaim", "mystery-encounters"); + globalScene.load.once(Phaser.Loader.Events.COMPLETE, () => resolve()); + if (!globalScene.load.isLoading()) { + globalScene.load.start(); } })); } else { @@ -196,16 +197,16 @@ export class EncounterPhase extends BattlePhase { } if (e < (battle.double ? 2 : 1)) { if (battle.battleType === BattleType.WILD) { - this.scene.field.add(enemyPokemon); + globalScene.field.add(enemyPokemon); battle.seenEnemyPartyMemberIds.add(enemyPokemon.id); - const playerPokemon = this.scene.getPlayerPokemon(); + const playerPokemon = globalScene.getPlayerPokemon(); if (playerPokemon?.isOnField()) { - this.scene.field.moveBelow(enemyPokemon as Pokemon, playerPokemon); + globalScene.field.moveBelow(enemyPokemon as Pokemon, playerPokemon); } enemyPokemon.tint(0, 0.5); } else if (battle.battleType === BattleType.TRAINER) { enemyPokemon.setVisible(false); - this.scene.currentBattle.trainer?.tint(0, 0.5); + globalScene.currentBattle.trainer?.tint(0, 0.5); } if (battle.double) { enemyPokemon.setFieldPosition(e ? FieldPosition.RIGHT : FieldPosition.LEFT); @@ -215,62 +216,56 @@ export class EncounterPhase extends BattlePhase { }); if (!this.loaded && battle.battleType !== BattleType.MYSTERY_ENCOUNTER) { - regenerateModifierPoolThresholds(this.scene.getEnemyField(), battle.battleType === BattleType.TRAINER ? ModifierPoolType.TRAINER : ModifierPoolType.WILD); - this.scene.generateEnemyModifiers(); - overrideModifiers(this.scene, false); - this.scene.getEnemyField().forEach(enemy => { - overrideHeldItems(this.scene, enemy, false); + regenerateModifierPoolThresholds(globalScene.getEnemyField(), battle.battleType === BattleType.TRAINER ? ModifierPoolType.TRAINER : ModifierPoolType.WILD); + globalScene.generateEnemyModifiers(); + overrideModifiers(false); + globalScene.getEnemyField().forEach(enemy => { + overrideHeldItems(enemy, false); }); } - this.scene.ui.setMode(Mode.MESSAGE).then(() => { + globalScene.ui.setMode(Mode.MESSAGE).then(() => { if (!this.loaded) { this.trySetWeatherIfNewBiome(); // Set weather before session gets saved // Game syncs to server on waves X1 and X6 (As of 1.2.0) - this.scene.gameData.saveAll(this.scene, true, battle.waveIndex % 5 === 1 || (this.scene.lastSavePlayTime ?? 0) >= 300).then(success => { - this.scene.disableMenu = false; + globalScene.gameData.saveAll(true, battle.waveIndex % 5 === 1 || (globalScene.lastSavePlayTime ?? 0) >= 300).then(success => { + globalScene.disableMenu = false; if (!success) { - return this.scene.reset(true); + return globalScene.reset(true); } this.doEncounter(); - this.scene.resetSeed(); + globalScene.resetSeed(); }); } else { this.doEncounter(); - this.scene.resetSeed(); + globalScene.resetSeed(); } }); }); } doEncounter() { - this.scene.playBgm(undefined, true); - this.scene.updateModifiers(false); - this.scene.setFieldScale(1); + globalScene.playBgm(undefined, true); + globalScene.updateModifiers(false); + globalScene.setFieldScale(1); - /*if (startingWave > 10) { - for (let m = 0; m < Math.min(Math.floor(startingWave / 10), 99); m++) - this.scene.addModifier(getPlayerModifierTypeOptionsForWave((m + 1) * 10, 1, this.scene.getPlayerParty())[0].type.newModifier(), true); - this.scene.updateModifiers(true); - }*/ - - const { battleType, waveIndex } = this.scene.currentBattle; - if (this.scene.isMysteryEncounterValidForWave(battleType, waveIndex) && !this.scene.currentBattle.isBattleMysteryEncounter()) { + const { battleType, waveIndex } = globalScene.currentBattle; + if (globalScene.isMysteryEncounterValidForWave(battleType, waveIndex) && !globalScene.currentBattle.isBattleMysteryEncounter()) { // Increment ME spawn chance if an ME could have spawned but did not // Only do this AFTER session has been saved to avoid duplicating increments - this.scene.mysteryEncounterSaveData.encounterSpawnChance += WEIGHT_INCREMENT_ON_SPAWN_MISS; + globalScene.mysteryEncounterSaveData.encounterSpawnChance += WEIGHT_INCREMENT_ON_SPAWN_MISS; } - for (const pokemon of this.scene.getPlayerParty()) { + for (const pokemon of globalScene.getPlayerParty()) { if (pokemon) { pokemon.resetBattleData(); } } - const enemyField = this.scene.getEnemyField(); - this.scene.tweens.add({ - targets: [ this.scene.arenaEnemy, this.scene.currentBattle.trainer, enemyField, this.scene.arenaPlayer, this.scene.trainer ].flat(), + const enemyField = globalScene.getEnemyField(); + globalScene.tweens.add({ + targets: [ globalScene.arenaEnemy, globalScene.currentBattle.trainer, enemyField, globalScene.arenaPlayer, globalScene.trainer ].flat(), x: (_target, _key, value, fieldIndex: integer) => fieldIndex < 2 + (enemyField.length) ? value + 300 : value - 300, duration: 2000, onComplete: () => { @@ -280,13 +275,13 @@ export class EncounterPhase extends BattlePhase { } }); - const encounterIntroVisuals = this.scene.currentBattle?.mysteryEncounter?.introVisuals; + const encounterIntroVisuals = globalScene.currentBattle?.mysteryEncounter?.introVisuals; if (encounterIntroVisuals) { const enterFromRight = encounterIntroVisuals.enterFromRight; if (enterFromRight) { encounterIntroVisuals.x += 500; } - this.scene.tweens.add({ + globalScene.tweens.add({ targets: encounterIntroVisuals, x: enterFromRight ? "-=200" : "+=300", duration: 2000 @@ -295,18 +290,18 @@ export class EncounterPhase extends BattlePhase { } getEncounterMessage(): string { - const enemyField = this.scene.getEnemyField(); + const enemyField = globalScene.getEnemyField(); - if (this.scene.currentBattle.battleSpec === BattleSpec.FINAL_BOSS) { + if (globalScene.currentBattle.battleSpec === BattleSpec.FINAL_BOSS) { return i18next.t("battle:bossAppeared", { bossName: getPokemonNameWithAffix(enemyField[0]) }); } - if (this.scene.currentBattle.battleType === BattleType.TRAINER) { - if (this.scene.currentBattle.double) { - return i18next.t("battle:trainerAppearedDouble", { trainerName: this.scene.currentBattle.trainer?.getName(TrainerSlot.NONE, true) }); + if (globalScene.currentBattle.battleType === BattleType.TRAINER) { + if (globalScene.currentBattle.double) { + return i18next.t("battle:trainerAppearedDouble", { trainerName: globalScene.currentBattle.trainer?.getName(TrainerSlot.NONE, true) }); } else { - return i18next.t("battle:trainerAppeared", { trainerName: this.scene.currentBattle.trainer?.getName(TrainerSlot.NONE, true) }); + return i18next.t("battle:trainerAppeared", { trainerName: globalScene.currentBattle.trainer?.getName(TrainerSlot.NONE, true) }); } } @@ -316,75 +311,75 @@ export class EncounterPhase extends BattlePhase { } doEncounterCommon(showEncounterMessage: boolean = true) { - const enemyField = this.scene.getEnemyField(); + const enemyField = globalScene.getEnemyField(); - if (this.scene.currentBattle.battleType === BattleType.WILD) { + if (globalScene.currentBattle.battleType === BattleType.WILD) { enemyField.forEach(enemyPokemon => { enemyPokemon.untint(100, "Sine.easeOut"); enemyPokemon.cry(); enemyPokemon.showInfo(); if (enemyPokemon.isShiny()) { - this.scene.validateAchv(achvs.SEE_SHINY); + globalScene.validateAchv(achvs.SEE_SHINY); } }); - this.scene.updateFieldScale(); + globalScene.updateFieldScale(); if (showEncounterMessage) { - this.scene.ui.showText(this.getEncounterMessage(), null, () => this.end(), 1500); + globalScene.ui.showText(this.getEncounterMessage(), null, () => this.end(), 1500); } else { this.end(); } - } else if (this.scene.currentBattle.battleType === BattleType.TRAINER) { - const trainer = this.scene.currentBattle.trainer; + } else if (globalScene.currentBattle.battleType === BattleType.TRAINER) { + const trainer = globalScene.currentBattle.trainer; trainer?.untint(100, "Sine.easeOut"); trainer?.playAnim(); const doSummon = () => { - this.scene.currentBattle.started = true; - this.scene.playBgm(undefined); - this.scene.pbTray.showPbTray(this.scene.getPlayerParty()); - this.scene.pbTrayEnemy.showPbTray(this.scene.getEnemyParty()); + globalScene.currentBattle.started = true; + globalScene.playBgm(undefined); + globalScene.pbTray.showPbTray(globalScene.getPlayerParty()); + globalScene.pbTrayEnemy.showPbTray(globalScene.getEnemyParty()); const doTrainerSummon = () => { this.hideEnemyTrainer(); - const availablePartyMembers = this.scene.getEnemyParty().filter(p => !p.isFainted()).length; - this.scene.unshiftPhase(new SummonPhase(this.scene, 0, false)); - if (this.scene.currentBattle.double && availablePartyMembers > 1) { - this.scene.unshiftPhase(new SummonPhase(this.scene, 1, false)); + const availablePartyMembers = globalScene.getEnemyParty().filter(p => !p.isFainted()).length; + globalScene.unshiftPhase(new SummonPhase(0, false)); + if (globalScene.currentBattle.double && availablePartyMembers > 1) { + globalScene.unshiftPhase(new SummonPhase(1, false)); } this.end(); }; if (showEncounterMessage) { - this.scene.ui.showText(this.getEncounterMessage(), null, doTrainerSummon, 1500, true); + globalScene.ui.showText(this.getEncounterMessage(), null, doTrainerSummon, 1500, true); } else { doTrainerSummon(); } }; - const encounterMessages = this.scene.currentBattle.trainer?.getEncounterMessages(); + const encounterMessages = globalScene.currentBattle.trainer?.getEncounterMessages(); if (!encounterMessages?.length) { doSummon(); } else { let message: string; - this.scene.executeWithSeedOffset(() => message = randSeedItem(encounterMessages), this.scene.currentBattle.waveIndex); + globalScene.executeWithSeedOffset(() => message = randSeedItem(encounterMessages), globalScene.currentBattle.waveIndex); message = message!; // tell TS compiler it's defined now const showDialogueAndSummon = () => { - this.scene.ui.showDialogue(message, trainer?.getName(TrainerSlot.NONE, true), null, () => { - this.scene.charSprite.hide().then(() => this.scene.hideFieldOverlay(250).then(() => doSummon())); + globalScene.ui.showDialogue(message, trainer?.getName(TrainerSlot.NONE, true), null, () => { + globalScene.charSprite.hide().then(() => globalScene.hideFieldOverlay(250).then(() => doSummon())); }); }; - if (this.scene.currentBattle.trainer?.config.hasCharSprite && !this.scene.ui.shouldSkipDialogue(message)) { - this.scene.showFieldOverlay(500).then(() => this.scene.charSprite.showCharacter(trainer?.getKey()!, getCharVariantFromDialogue(encounterMessages[0])).then(() => showDialogueAndSummon())); // TODO: is this bang correct? + if (globalScene.currentBattle.trainer?.config.hasCharSprite && !globalScene.ui.shouldSkipDialogue(message)) { + globalScene.showFieldOverlay(500).then(() => globalScene.charSprite.showCharacter(trainer?.getKey()!, getCharVariantFromDialogue(encounterMessages[0])).then(() => showDialogueAndSummon())); // TODO: is this bang correct? } else { showDialogueAndSummon(); } } - } else if (this.scene.currentBattle.isBattleMysteryEncounter() && this.scene.currentBattle.mysteryEncounter) { - const encounter = this.scene.currentBattle.mysteryEncounter; + } else if (globalScene.currentBattle.isBattleMysteryEncounter() && globalScene.currentBattle.mysteryEncounter) { + const encounter = globalScene.currentBattle.mysteryEncounter; const introVisuals = encounter.introVisuals; introVisuals?.playAnim(); if (encounter.onVisualsStart) { - encounter.onVisualsStart(this.scene); + encounter.onVisualsStart(); } else if (encounter.spriteConfigs && introVisuals) { // If the encounter doesn't have any special visual intro, show sparkle for shiny Pokemon introVisuals.playShinySparkles(); @@ -392,10 +387,10 @@ export class EncounterPhase extends BattlePhase { const doEncounter = () => { const doShowEncounterOptions = () => { - this.scene.ui.clearText(); - this.scene.ui.getMessageHandler().hideNameText(); + globalScene.ui.clearText(); + globalScene.ui.getMessageHandler().hideNameText(); - this.scene.unshiftPhase(new MysteryEncounterPhase(this.scene)); + globalScene.unshiftPhase(new MysteryEncounterPhase()); this.end(); }; @@ -409,13 +404,13 @@ export class EncounterPhase extends BattlePhase { const showNextDialogue = () => { const nextAction = i === introDialogue.length - 1 ? doShowEncounterOptions : showNextDialogue; const dialogue = introDialogue[i]; - const title = getEncounterText(this.scene, dialogue?.speaker); - const text = getEncounterText(this.scene, dialogue.text)!; + const title = getEncounterText(dialogue?.speaker); + const text = getEncounterText(dialogue.text)!; i++; if (title) { - this.scene.ui.showDialogue(text, title, null, nextAction, 0, i === 1 ? FIRST_DIALOGUE_PROMPT_DELAY : 0); + globalScene.ui.showDialogue(text, title, null, nextAction, 0, i === 1 ? FIRST_DIALOGUE_PROMPT_DELAY : 0); } else { - this.scene.ui.showText(text, null, nextAction, i === 1 ? FIRST_DIALOGUE_PROMPT_DELAY : 0, true); + globalScene.ui.showText(text, null, nextAction, i === 1 ? FIRST_DIALOGUE_PROMPT_DELAY : 0, true); } }; @@ -433,110 +428,110 @@ export class EncounterPhase extends BattlePhase { if (!encounterMessage) { doEncounter(); } else { - doTrainerExclamation(this.scene); - this.scene.ui.showDialogue(encounterMessage, "???", null, () => { - this.scene.charSprite.hide().then(() => this.scene.hideFieldOverlay(250).then(() => doEncounter())); + doTrainerExclamation(); + globalScene.ui.showDialogue(encounterMessage, "???", null, () => { + globalScene.charSprite.hide().then(() => globalScene.hideFieldOverlay(250).then(() => doEncounter())); }); } } } end() { - const enemyField = this.scene.getEnemyField(); + const enemyField = globalScene.getEnemyField(); enemyField.forEach((enemyPokemon, e) => { if (enemyPokemon.isShiny()) { - this.scene.unshiftPhase(new ShinySparklePhase(this.scene, BattlerIndex.ENEMY + e)); + globalScene.unshiftPhase(new ShinySparklePhase(BattlerIndex.ENEMY + e)); } /** This sets Eternatus' held item to be untransferrable, preventing it from being stolen */ - if (enemyPokemon.species.speciesId === Species.ETERNATUS && (this.scene.gameMode.isBattleClassicFinalBoss(this.scene.currentBattle.waveIndex) || this.scene.gameMode.isEndlessMajorBoss(this.scene.currentBattle.waveIndex))) { - const enemyMBH = this.scene.findModifier(m => m instanceof TurnHeldItemTransferModifier, false) as TurnHeldItemTransferModifier; + if (enemyPokemon.species.speciesId === Species.ETERNATUS && (globalScene.gameMode.isBattleClassicFinalBoss(globalScene.currentBattle.waveIndex) || globalScene.gameMode.isEndlessMajorBoss(globalScene.currentBattle.waveIndex))) { + const enemyMBH = globalScene.findModifier(m => m instanceof TurnHeldItemTransferModifier, false) as TurnHeldItemTransferModifier; if (enemyMBH) { - this.scene.removeModifier(enemyMBH, true); + globalScene.removeModifier(enemyMBH, true); enemyMBH.setTransferrableFalse(); - this.scene.addEnemyModifier(enemyMBH); + globalScene.addEnemyModifier(enemyMBH); } } }); - if (![ BattleType.TRAINER, BattleType.MYSTERY_ENCOUNTER ].includes(this.scene.currentBattle.battleType)) { - enemyField.map(p => this.scene.pushConditionalPhase(new PostSummonPhase(this.scene, p.getBattlerIndex()), () => { + if (![ BattleType.TRAINER, BattleType.MYSTERY_ENCOUNTER ].includes(globalScene.currentBattle.battleType)) { + enemyField.map(p => globalScene.pushConditionalPhase(new PostSummonPhase(p.getBattlerIndex()), () => { // if there is not a player party, we can't continue - if (!this.scene.getPlayerParty().length) { + if (!globalScene.getPlayerParty().length) { return false; } // how many player pokemon are on the field ? - const pokemonsOnFieldCount = this.scene.getPlayerParty().filter(p => p.isOnField()).length; + const pokemonsOnFieldCount = globalScene.getPlayerParty().filter(p => p.isOnField()).length; // if it's a 2vs1, there will never be a 2nd pokemon on our field even - const requiredPokemonsOnField = Math.min(this.scene.getPlayerParty().filter((p) => !p.isFainted()).length, 2); + const requiredPokemonsOnField = Math.min(globalScene.getPlayerParty().filter((p) => !p.isFainted()).length, 2); // if it's a double, there should be 2, otherwise 1 - if (this.scene.currentBattle.double) { + if (globalScene.currentBattle.double) { return pokemonsOnFieldCount === requiredPokemonsOnField; } return pokemonsOnFieldCount === 1; })); - const ivScannerModifier = this.scene.findModifier(m => m instanceof IvScannerModifier); + const ivScannerModifier = globalScene.findModifier(m => m instanceof IvScannerModifier); if (ivScannerModifier) { - enemyField.map(p => this.scene.pushPhase(new ScanIvsPhase(this.scene, p.getBattlerIndex(), Math.min(ivScannerModifier.getStackCount() * 2, 6)))); + enemyField.map(p => globalScene.pushPhase(new ScanIvsPhase(p.getBattlerIndex(), Math.min(ivScannerModifier.getStackCount() * 2, 6)))); } } if (!this.loaded) { - const availablePartyMembers = this.scene.getPokemonAllowedInBattle(); + const availablePartyMembers = globalScene.getPokemonAllowedInBattle(); if (!availablePartyMembers[0].isOnField()) { - this.scene.pushPhase(new SummonPhase(this.scene, 0)); + globalScene.pushPhase(new SummonPhase(0)); } - if (this.scene.currentBattle.double) { + if (globalScene.currentBattle.double) { if (availablePartyMembers.length > 1) { - this.scene.pushPhase(new ToggleDoublePositionPhase(this.scene, true)); + globalScene.pushPhase(new ToggleDoublePositionPhase(true)); if (!availablePartyMembers[1].isOnField()) { - this.scene.pushPhase(new SummonPhase(this.scene, 1)); + globalScene.pushPhase(new SummonPhase(1)); } } } else { if (availablePartyMembers.length > 1 && availablePartyMembers[1].isOnField()) { - this.scene.pushPhase(new ReturnPhase(this.scene, 1)); + globalScene.pushPhase(new ReturnPhase(1)); } - this.scene.pushPhase(new ToggleDoublePositionPhase(this.scene, false)); + globalScene.pushPhase(new ToggleDoublePositionPhase(false)); } - if (this.scene.currentBattle.battleType !== BattleType.TRAINER && (this.scene.currentBattle.waveIndex > 1 || !this.scene.gameMode.isDaily)) { - const minPartySize = this.scene.currentBattle.double ? 2 : 1; + if (globalScene.currentBattle.battleType !== BattleType.TRAINER && (globalScene.currentBattle.waveIndex > 1 || !globalScene.gameMode.isDaily)) { + const minPartySize = globalScene.currentBattle.double ? 2 : 1; if (availablePartyMembers.length > minPartySize) { - this.scene.pushPhase(new CheckSwitchPhase(this.scene, 0, this.scene.currentBattle.double)); - if (this.scene.currentBattle.double) { - this.scene.pushPhase(new CheckSwitchPhase(this.scene, 1, this.scene.currentBattle.double)); + globalScene.pushPhase(new CheckSwitchPhase(0, globalScene.currentBattle.double)); + if (globalScene.currentBattle.double) { + globalScene.pushPhase(new CheckSwitchPhase(1, globalScene.currentBattle.double)); } } } } - handleTutorial(this.scene, Tutorial.Access_Menu).then(() => super.end()); + handleTutorial(Tutorial.Access_Menu).then(() => super.end()); } tryOverrideForBattleSpec(): boolean { - switch (this.scene.currentBattle.battleSpec) { + switch (globalScene.currentBattle.battleSpec) { case BattleSpec.FINAL_BOSS: - const enemy = this.scene.getEnemyPokemon(); - this.scene.ui.showText(this.getEncounterMessage(), null, () => { + const enemy = globalScene.getEnemyPokemon(); + globalScene.ui.showText(this.getEncounterMessage(), null, () => { const localizationKey = "battleSpecDialogue:encounter"; - if (this.scene.ui.shouldSkipDialogue(localizationKey)) { + if (globalScene.ui.shouldSkipDialogue(localizationKey)) { // Logging mirrors logging found in dialogue-ui-handler console.log(`Dialogue ${localizationKey} skipped`); this.doEncounterCommon(false); } else { - const count = 5643853 + this.scene.gameData.gameStats.classicSessionsPlayed; + const count = 5643853 + globalScene.gameData.gameStats.classicSessionsPlayed; // The line below checks if an English ordinal is necessary or not based on whether an entry for encounterLocalizationKey exists in the language or not. const ordinalUsed = !i18next.exists(localizationKey, { fallbackLng: []}) || i18next.resolvedLanguage === "en" ? i18next.t("battleSpecDialogue:key", { count: count, ordinal: true }) : ""; const cycleCount = count.toLocaleString() + ordinalUsed; - const genderIndex = this.scene.gameData.gender ?? PlayerGender.UNSET; + const genderIndex = globalScene.gameData.gender ?? PlayerGender.UNSET; const genderStr = PlayerGender[genderIndex].toLowerCase(); const encounterDialogue = i18next.t(localizationKey, { context: genderStr, cycleCount: cycleCount }); - if (!this.scene.gameData.getSeenDialogues()[localizationKey]) { - this.scene.gameData.saveSeenDialogue(localizationKey); + if (!globalScene.gameData.getSeenDialogues()[localizationKey]) { + globalScene.gameData.saveSeenDialogue(localizationKey); } - this.scene.ui.showDialogue(encounterDialogue, enemy?.species.name, null, () => { + globalScene.ui.showDialogue(encounterDialogue, enemy?.species.name, null, () => { this.doEncounterCommon(false); }); } @@ -556,7 +551,7 @@ export class EncounterPhase extends BattlePhase { */ trySetWeatherIfNewBiome(): void { if (!this.loaded) { - this.scene.arena.trySetWeather(getRandomWeatherType(this.scene.arena), false); + globalScene.arena.trySetWeather(getRandomWeatherType(globalScene.arena), false); } } } diff --git a/src/phases/end-card-phase.ts b/src/phases/end-card-phase.ts index 274a745017a..4615a60e661 100644 --- a/src/phases/end-card-phase.ts +++ b/src/phases/end-card-phase.ts @@ -1,4 +1,4 @@ -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { PlayerGender } from "#app/enums/player-gender"; import { Phase } from "#app/phase"; import { addTextObject, TextStyle } from "#app/ui/text"; @@ -8,31 +8,31 @@ export class EndCardPhase extends Phase { public endCard: Phaser.GameObjects.Image; public text: Phaser.GameObjects.Text; - constructor(scene: BattleScene) { - super(scene); + constructor() { + super(); } start(): void { super.start(); - this.scene.ui.getMessageHandler().bg.setVisible(false); - this.scene.ui.getMessageHandler().nameBoxContainer.setVisible(false); + globalScene.ui.getMessageHandler().bg.setVisible(false); + globalScene.ui.getMessageHandler().nameBoxContainer.setVisible(false); - this.endCard = this.scene.add.image(0, 0, `end_${this.scene.gameData.gender === PlayerGender.FEMALE ? "f" : "m"}`); + this.endCard = globalScene.add.image(0, 0, `end_${globalScene.gameData.gender === PlayerGender.FEMALE ? "f" : "m"}`); this.endCard.setOrigin(0); this.endCard.setScale(0.5); - this.scene.field.add(this.endCard); + globalScene.field.add(this.endCard); - this.text = addTextObject(this.scene, this.scene.game.canvas.width / 12, (this.scene.game.canvas.height / 6) - 16, i18next.t("battle:congratulations"), TextStyle.SUMMARY, { fontSize: "128px" }); + this.text = addTextObject(globalScene.game.canvas.width / 12, (globalScene.game.canvas.height / 6) - 16, i18next.t("battle:congratulations"), TextStyle.SUMMARY, { fontSize: "128px" }); this.text.setOrigin(0.5); - this.scene.field.add(this.text); + globalScene.field.add(this.text); - this.scene.ui.clearText(); + globalScene.ui.clearText(); - this.scene.ui.fadeIn(1000).then(() => { + globalScene.ui.fadeIn(1000).then(() => { - this.scene.ui.showText("", null, () => { - this.scene.ui.getMessageHandler().bg.setVisible(true); + globalScene.ui.showText("", null, () => { + globalScene.ui.getMessageHandler().bg.setVisible(true); this.end(); }, null, true); }); diff --git a/src/phases/end-evolution-phase.ts b/src/phases/end-evolution-phase.ts index 8a6ce52553d..58e2e203482 100644 --- a/src/phases/end-evolution-phase.ts +++ b/src/phases/end-evolution-phase.ts @@ -1,16 +1,16 @@ -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { Phase } from "#app/phase"; import { Mode } from "#app/ui/ui"; export class EndEvolutionPhase extends Phase { - constructor(scene: BattleScene) { - super(scene); + constructor() { + super(); } start() { super.start(); - this.scene.ui.setModeForceTransition(Mode.MESSAGE).then(() => this.end()); + globalScene.ui.setModeForceTransition(Mode.MESSAGE).then(() => this.end()); } } diff --git a/src/phases/enemy-command-phase.ts b/src/phases/enemy-command-phase.ts index 83a85009ae0..715303863be 100644 --- a/src/phases/enemy-command-phase.ts +++ b/src/phases/enemy-command-phase.ts @@ -1,4 +1,4 @@ -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { BattlerIndex } from "#app/battle"; import { Command } from "#app/ui/command-ui-handler"; import { FieldPhase } from "./field-phase"; @@ -18,11 +18,11 @@ export class EnemyCommandPhase extends FieldPhase { protected fieldIndex: integer; protected skipTurn: boolean = false; - constructor(scene: BattleScene, fieldIndex: integer) { - super(scene); + constructor(fieldIndex: integer) { + super(); this.fieldIndex = fieldIndex; - if (this.scene.currentBattle.mysteryEncounter?.skipEnemyBattleTurns) { + if (globalScene.currentBattle.mysteryEncounter?.skipEnemyBattleTurns) { this.skipTurn = true; } } @@ -30,9 +30,9 @@ export class EnemyCommandPhase extends FieldPhase { start() { super.start(); - const enemyPokemon = this.scene.getEnemyField()[this.fieldIndex]; + const enemyPokemon = globalScene.getEnemyField()[this.fieldIndex]; - const battle = this.scene.currentBattle; + const battle = globalScene.currentBattle; const trainer = battle.trainer; @@ -81,10 +81,10 @@ export class EnemyCommandPhase extends FieldPhase { /** Select a move to use (and a target to use it against, if applicable) */ const nextMove = enemyPokemon.getNextMove(); - this.scene.currentBattle.turnCommands[this.fieldIndex + BattlerIndex.ENEMY] = + globalScene.currentBattle.turnCommands[this.fieldIndex + BattlerIndex.ENEMY] = { command: Command.FIGHT, move: nextMove, skip: this.skipTurn }; - this.scene.currentBattle.enemySwitchCounter = Math.max(this.scene.currentBattle.enemySwitchCounter - 1, 0); + globalScene.currentBattle.enemySwitchCounter = Math.max(globalScene.currentBattle.enemySwitchCounter - 1, 0); this.end(); } diff --git a/src/phases/enemy-party-member-pokemon-phase.ts b/src/phases/enemy-party-member-pokemon-phase.ts index bb34f53b475..7c02cf97880 100644 --- a/src/phases/enemy-party-member-pokemon-phase.ts +++ b/src/phases/enemy-party-member-pokemon-phase.ts @@ -1,10 +1,9 @@ -import BattleScene from "#app/battle-scene"; -import { EnemyPokemon } from "#app/field/pokemon"; +import type { EnemyPokemon } from "#app/field/pokemon"; import { PartyMemberPokemonPhase } from "./party-member-pokemon-phase"; export abstract class EnemyPartyMemberPokemonPhase extends PartyMemberPokemonPhase { - constructor(scene: BattleScene, partyMemberIndex: integer) { - super(scene, partyMemberIndex, false); + constructor(partyMemberIndex: integer) { + super(partyMemberIndex, false); } getEnemyPokemon(): EnemyPokemon { diff --git a/src/phases/evolution-phase.ts b/src/phases/evolution-phase.ts index 76e521c9b3d..bf046e682e4 100644 --- a/src/phases/evolution-phase.ts +++ b/src/phases/evolution-phase.ts @@ -1,12 +1,16 @@ import SoundFade from "phaser3-rex-plugins/plugins/soundfade"; import { Phase } from "#app/phase"; -import BattleScene, { AnySound } from "#app/battle-scene"; -import { FusionSpeciesFormEvolution, SpeciesFormEvolution } from "#app/data/balance/pokemon-evolutions"; -import EvolutionSceneHandler from "#app/ui/evolution-scene-handler"; +import type { AnySound } from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; +import type { SpeciesFormEvolution } from "#app/data/balance/pokemon-evolutions"; +import { FusionSpeciesFormEvolution } from "#app/data/balance/pokemon-evolutions"; +import type EvolutionSceneHandler from "#app/ui/evolution-scene-handler"; import * as Utils from "#app/utils"; import { Mode } from "#app/ui/ui"; import { cos, sin } from "#app/field/anims"; -import Pokemon, { LearnMoveSituation, PlayerPokemon } from "#app/field/pokemon"; +import type { PlayerPokemon } from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; +import { LearnMoveSituation } from "#app/field/pokemon"; import { getTypeRgb } from "#app/data/type"; import i18next from "i18next"; import { getPokemonNameWithAffix } from "#app/messages"; @@ -35,8 +39,8 @@ export class EvolutionPhase extends Phase { protected pokemonEvoSprite: Phaser.GameObjects.Sprite; protected pokemonEvoTintSprite: Phaser.GameObjects.Sprite; - constructor(scene: BattleScene, pokemon: PlayerPokemon, evolution: SpeciesFormEvolution | null, lastLevel: integer) { - super(scene); + constructor(pokemon: PlayerPokemon, evolution: SpeciesFormEvolution | null, lastLevel: integer) { + super(); this.pokemon = pokemon; this.evolution = evolution; @@ -49,7 +53,7 @@ export class EvolutionPhase extends Phase { } setMode(): Promise { - return this.scene.ui.setModeForceTransition(Mode.EVOLUTION_SCENE); + return globalScene.ui.setModeForceTransition(Mode.EVOLUTION_SCENE); } start() { @@ -61,30 +65,30 @@ export class EvolutionPhase extends Phase { return this.end(); } - this.scene.fadeOutBgm(undefined, false); + globalScene.fadeOutBgm(undefined, false); - this.evolutionHandler = this.scene.ui.getHandler() as EvolutionSceneHandler; + this.evolutionHandler = globalScene.ui.getHandler() as EvolutionSceneHandler; this.evolutionContainer = this.evolutionHandler.evolutionContainer; - this.evolutionBaseBg = this.scene.add.image(0, 0, "default_bg"); + this.evolutionBaseBg = globalScene.add.image(0, 0, "default_bg"); this.evolutionBaseBg.setOrigin(0, 0); this.evolutionContainer.add(this.evolutionBaseBg); - this.evolutionBg = this.scene.add.video(0, 0, "evo_bg").stop(); + this.evolutionBg = globalScene.add.video(0, 0, "evo_bg").stop(); this.evolutionBg.setOrigin(0, 0); this.evolutionBg.setScale(0.4359673025); this.evolutionBg.setVisible(false); this.evolutionContainer.add(this.evolutionBg); - this.evolutionBgOverlay = this.scene.add.rectangle(0, 0, this.scene.game.canvas.width / 6, this.scene.game.canvas.height / 6, 0x262626); + this.evolutionBgOverlay = globalScene.add.rectangle(0, 0, globalScene.game.canvas.width / 6, globalScene.game.canvas.height / 6, 0x262626); this.evolutionBgOverlay.setOrigin(0, 0); this.evolutionBgOverlay.setAlpha(0); this.evolutionContainer.add(this.evolutionBgOverlay); const getPokemonSprite = () => { - const ret = this.scene.addPokemonSprite(this.pokemon, this.evolutionBaseBg.displayWidth / 2, this.evolutionBaseBg.displayHeight / 2, "pkmn__sub"); - ret.setPipeline(this.scene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], ignoreTimeTint: true }); + const ret = globalScene.addPokemonSprite(this.pokemon, this.evolutionBaseBg.displayWidth / 2, this.evolutionBaseBg.displayHeight / 2, "pkmn__sub"); + ret.setPipeline(globalScene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], ignoreTimeTint: true }); return ret; }; @@ -99,10 +103,10 @@ export class EvolutionPhase extends Phase { this.pokemonEvoTintSprite.setVisible(false); this.pokemonEvoTintSprite.setTintFill(0xFFFFFF); - this.evolutionOverlay = this.scene.add.rectangle(0, -this.scene.game.canvas.height / 6, this.scene.game.canvas.width / 6, (this.scene.game.canvas.height / 6) - 48, 0xFFFFFF); + this.evolutionOverlay = globalScene.add.rectangle(0, -globalScene.game.canvas.height / 6, globalScene.game.canvas.width / 6, (globalScene.game.canvas.height / 6) - 48, 0xFFFFFF); this.evolutionOverlay.setOrigin(0, 0); this.evolutionOverlay.setAlpha(0); - this.scene.ui.add(this.evolutionOverlay); + globalScene.ui.add(this.evolutionOverlay); [ this.pokemonSprite, this.pokemonTintSprite, this.pokemonEvoSprite, this.pokemonEvoTintSprite ].map(sprite => { const spriteKey = this.pokemon.getSpriteKey(true); @@ -112,7 +116,7 @@ export class EvolutionPhase extends Phase { console.error(`Failed to play animation for ${spriteKey}`, err); } - sprite.setPipeline(this.scene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], hasShadow: false, teraColor: getTypeRgb(this.pokemon.getTeraType()) }); + sprite.setPipeline(globalScene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], hasShadow: false, teraColor: getTypeRgb(this.pokemon.getTeraType()) }); sprite.setPipelineData("ignoreTimeTint", true); sprite.setPipelineData("spriteKey", this.pokemon.getSpriteKey()); sprite.setPipelineData("shiny", this.pokemon.shiny); @@ -130,7 +134,7 @@ export class EvolutionPhase extends Phase { } doEvolution(): void { - this.scene.ui.showText(i18next.t("menu:evolving", { pokemonName: this.preEvolvedPokemonName }), null, () => { + globalScene.ui.showText(i18next.t("menu:evolving", { pokemonName: this.preEvolvedPokemonName }), null, () => { this.pokemon.cry(); this.pokemon.getPossibleEvolution(this.evolution).then(evolvedPokemon => { @@ -155,17 +159,17 @@ export class EvolutionPhase extends Phase { }); }); - this.scene.time.delayedCall(1000, () => { - this.evolutionBgm = this.scene.playSoundWithoutBgm("evolution"); - this.scene.tweens.add({ + globalScene.time.delayedCall(1000, () => { + this.evolutionBgm = globalScene.playSoundWithoutBgm("evolution"); + globalScene.tweens.add({ targets: this.evolutionBgOverlay, alpha: 1, delay: 500, duration: 1500, ease: "Sine.easeOut", onComplete: () => { - this.scene.time.delayedCall(1000, () => { - this.scene.tweens.add({ + globalScene.time.delayedCall(1000, () => { + globalScene.tweens.add({ targets: this.evolutionBgOverlay, alpha: 0, duration: 250 @@ -173,9 +177,9 @@ export class EvolutionPhase extends Phase { this.evolutionBg.setVisible(true); this.evolutionBg.play(); }); - this.scene.playSound("se/charge"); + globalScene.playSound("se/charge"); this.doSpiralUpward(); - this.scene.tweens.addCounter({ + globalScene.tweens.addCounter({ from: 0, to: 1, duration: 2000, @@ -184,10 +188,10 @@ export class EvolutionPhase extends Phase { }, onComplete: () => { this.pokemonSprite.setVisible(false); - this.scene.time.delayedCall(1100, () => { - this.scene.playSound("se/beam"); + globalScene.time.delayedCall(1100, () => { + globalScene.playSound("se/beam"); this.doArcDownward(); - this.scene.time.delayedCall(1500, () => { + globalScene.time.delayedCall(1500, () => { this.pokemonEvoTintSprite.setScale(0.25); this.pokemonEvoTintSprite.setVisible(true); this.evolutionHandler.canCancel = true; @@ -216,7 +220,7 @@ export class EvolutionPhase extends Phase { private handleFailedEvolution(evolvedPokemon: Pokemon): void { this.pokemonSprite.setVisible(true); this.pokemonTintSprite.setScale(1); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: [ this.evolutionBg, this.pokemonTintSprite, this.pokemonEvoSprite, this.pokemonEvoTintSprite ], alpha: 0, duration: 250, @@ -225,25 +229,25 @@ export class EvolutionPhase extends Phase { } }); - SoundFade.fadeOut(this.scene, this.evolutionBgm, 100); + SoundFade.fadeOut(globalScene, this.evolutionBgm, 100); - this.scene.unshiftPhase(new EndEvolutionPhase(this.scene)); + globalScene.unshiftPhase(new EndEvolutionPhase()); - this.scene.ui.showText(i18next.t("menu:stoppedEvolving", { pokemonName: this.preEvolvedPokemonName }), null, () => { - this.scene.ui.showText(i18next.t("menu:pauseEvolutionsQuestion", { pokemonName: this.preEvolvedPokemonName }), null, () => { + globalScene.ui.showText(i18next.t("menu:stoppedEvolving", { pokemonName: this.preEvolvedPokemonName }), null, () => { + globalScene.ui.showText(i18next.t("menu:pauseEvolutionsQuestion", { pokemonName: this.preEvolvedPokemonName }), null, () => { const end = () => { - this.scene.ui.showText("", 0); - this.scene.playBgm(); + globalScene.ui.showText("", 0); + globalScene.playBgm(); evolvedPokemon.destroy(); this.end(); }; - this.scene.ui.setOverlayMode(Mode.CONFIRM, () => { - this.scene.ui.revertMode(); + globalScene.ui.setOverlayMode(Mode.CONFIRM, () => { + globalScene.ui.revertMode(); this.pokemon.pauseEvolutions = true; - this.scene.ui.showText(i18next.t("menu:evolutionsPaused", { pokemonName: this.preEvolvedPokemonName }), null, end, 3000); + globalScene.ui.showText(i18next.t("menu:evolutionsPaused", { pokemonName: this.preEvolvedPokemonName }), null, end, 3000); }, () => { - this.scene.ui.revertMode(); - this.scene.time.delayedCall(3000, end); + globalScene.ui.revertMode(); + globalScene.time.delayedCall(3000, end); }); }); }, null, true); @@ -254,38 +258,38 @@ export class EvolutionPhase extends Phase { * @param evolvedPokemon - The evolved Pokemon */ private handleSuccessEvolution(evolvedPokemon: Pokemon): void { - this.scene.playSound("se/sparkle"); + globalScene.playSound("se/sparkle"); this.pokemonEvoSprite.setVisible(true); this.doCircleInward(); const onEvolutionComplete = () => { - SoundFade.fadeOut(this.scene, this.evolutionBgm, 100); - this.scene.time.delayedCall(250, () => { + SoundFade.fadeOut(globalScene, this.evolutionBgm, 100); + globalScene.time.delayedCall(250, () => { this.pokemon.cry(); - this.scene.time.delayedCall(1250, () => { - this.scene.playSoundWithoutBgm("evolution_fanfare"); + globalScene.time.delayedCall(1250, () => { + globalScene.playSoundWithoutBgm("evolution_fanfare"); evolvedPokemon.destroy(); - this.scene.ui.showText(i18next.t("menu:evolutionDone", { pokemonName: this.preEvolvedPokemonName, evolvedPokemonName: this.pokemon.name }), null, () => this.end(), null, true, Utils.fixedInt(4000)); - this.scene.time.delayedCall(Utils.fixedInt(4250), () => this.scene.playBgm()); + globalScene.ui.showText(i18next.t("menu:evolutionDone", { pokemonName: this.preEvolvedPokemonName, evolvedPokemonName: this.pokemon.name }), null, () => this.end(), null, true, Utils.fixedInt(4000)); + globalScene.time.delayedCall(Utils.fixedInt(4250), () => globalScene.playBgm()); }); }); }; - this.scene.time.delayedCall(900, () => { + globalScene.time.delayedCall(900, () => { this.evolutionHandler.canCancel = false; this.pokemon.evolve(this.evolution, this.pokemon.species).then(() => { const learnSituation: LearnMoveSituation = this.fusionSpeciesEvolved ? LearnMoveSituation.EVOLUTION_FUSED : this.pokemon.fusionSpecies ? LearnMoveSituation.EVOLUTION_FUSED_BASE : LearnMoveSituation.EVOLUTION; const levelMoves = this.pokemon.getLevelMoves(this.lastLevel + 1, true, false, false, learnSituation).filter(lm => lm[0] === EVOLVE_MOVE); for (const lm of levelMoves) { - this.scene.unshiftPhase(new LearnMovePhase(this.scene, this.scene.getPlayerParty().indexOf(this.pokemon), lm[1])); + globalScene.unshiftPhase(new LearnMovePhase(globalScene.getPlayerParty().indexOf(this.pokemon), lm[1])); } - this.scene.unshiftPhase(new EndEvolutionPhase(this.scene)); + globalScene.unshiftPhase(new EndEvolutionPhase()); - this.scene.playSound("se/shine"); + globalScene.playSound("se/shine"); this.doSpray(); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this.evolutionOverlay, alpha: 1, duration: 250, @@ -293,14 +297,14 @@ export class EvolutionPhase extends Phase { onComplete: () => { this.evolutionBgOverlay.setAlpha(1); this.evolutionBg.setVisible(false); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: [ this.evolutionOverlay, this.pokemonEvoTintSprite ], alpha: 0, duration: 2000, delay: 150, easing: "Sine.easeIn", onComplete: () => { - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this.evolutionBgOverlay, alpha: 0, duration: 250, @@ -317,7 +321,7 @@ export class EvolutionPhase extends Phase { doSpiralUpward() { let f = 0; - this.scene.tweens.addCounter({ + globalScene.tweens.addCounter({ repeat: 64, duration: Utils.getFrameMs(1), onRepeat: () => { @@ -336,7 +340,7 @@ export class EvolutionPhase extends Phase { doArcDownward() { let f = 0; - this.scene.tweens.addCounter({ + globalScene.tweens.addCounter({ repeat: 96, duration: Utils.getFrameMs(1), onRepeat: () => { @@ -355,14 +359,14 @@ export class EvolutionPhase extends Phase { doCycle(l: number, lastCycle: integer = 15): Promise { return new Promise(resolve => { const isLastCycle = l === lastCycle; - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this.pokemonTintSprite, scale: 0.25, ease: "Cubic.easeInOut", duration: 500 / l, yoyo: !isLastCycle }); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this.pokemonEvoTintSprite, scale: 1, ease: "Cubic.easeInOut", @@ -386,7 +390,7 @@ export class EvolutionPhase extends Phase { doCircleInward() { let f = 0; - this.scene.tweens.addCounter({ + globalScene.tweens.addCounter({ repeat: 48, duration: Utils.getFrameMs(1), onRepeat: () => { @@ -407,7 +411,7 @@ export class EvolutionPhase extends Phase { doSpray() { let f = 0; - this.scene.tweens.addCounter({ + globalScene.tweens.addCounter({ repeat: 48, duration: Utils.getFrameMs(1), onRepeat: () => { @@ -425,13 +429,13 @@ export class EvolutionPhase extends Phase { doSpiralUpwardParticle(trigIndex: integer) { const initialX = this.evolutionBaseBg.displayWidth / 2; - const particle = this.scene.add.image(initialX, 0, "evo_sparkle"); + const particle = globalScene.add.image(initialX, 0, "evo_sparkle"); this.evolutionContainer.add(particle); let f = 0; let amp = 48; - const particleTimer = this.scene.tweens.addCounter({ + const particleTimer = globalScene.tweens.addCounter({ repeat: -1, duration: Utils.getFrameMs(1), onRepeat: () => { @@ -461,14 +465,14 @@ export class EvolutionPhase extends Phase { doArcDownParticle(trigIndex: integer) { const initialX = this.evolutionBaseBg.displayWidth / 2; - const particle = this.scene.add.image(initialX, 0, "evo_sparkle"); + const particle = globalScene.add.image(initialX, 0, "evo_sparkle"); particle.setScale(0.5); this.evolutionContainer.add(particle); let f = 0; let amp = 8; - const particleTimer = this.scene.tweens.addCounter({ + const particleTimer = globalScene.tweens.addCounter({ repeat: -1, duration: Utils.getFrameMs(1), onRepeat: () => { @@ -495,12 +499,12 @@ export class EvolutionPhase extends Phase { doCircleInwardParticle(trigIndex: integer, speed: integer) { const initialX = this.evolutionBaseBg.displayWidth / 2; const initialY = this.evolutionBaseBg.displayHeight / 2; - const particle = this.scene.add.image(initialX, initialY, "evo_sparkle"); + const particle = globalScene.add.image(initialX, initialY, "evo_sparkle"); this.evolutionContainer.add(particle); let amp = 120; - const particleTimer = this.scene.tweens.addCounter({ + const particleTimer = globalScene.tweens.addCounter({ repeat: -1, duration: Utils.getFrameMs(1), onRepeat: () => { @@ -527,7 +531,7 @@ export class EvolutionPhase extends Phase { doSprayParticle(trigIndex: integer) { const initialX = this.evolutionBaseBg.displayWidth / 2; const initialY = this.evolutionBaseBg.displayHeight / 2; - const particle = this.scene.add.image(initialX, initialY, "evo_sparkle"); + const particle = globalScene.add.image(initialX, initialY, "evo_sparkle"); this.evolutionContainer.add(particle); let f = 0; @@ -535,7 +539,7 @@ export class EvolutionPhase extends Phase { const speed = 3 - Utils.randInt(8); const amp = 48 + Utils.randInt(64); - const particleTimer = this.scene.tweens.addCounter({ + const particleTimer = globalScene.tweens.addCounter({ repeat: -1, duration: Utils.getFrameMs(1), onRepeat: () => { diff --git a/src/phases/exp-phase.ts b/src/phases/exp-phase.ts index 81982980d2a..f0fe9fde719 100644 --- a/src/phases/exp-phase.ts +++ b/src/phases/exp-phase.ts @@ -1,4 +1,4 @@ -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { getPokemonNameWithAffix } from "#app/messages"; import { ExpBoosterModifier } from "#app/modifier/modifier"; import i18next from "i18next"; @@ -9,8 +9,8 @@ import { LevelUpPhase } from "./level-up-phase"; export class ExpPhase extends PlayerPartyMemberPokemonPhase { private expValue: number; - constructor(scene: BattleScene, partyMemberIndex: integer, expValue: number) { - super(scene, partyMemberIndex); + constructor(partyMemberIndex: integer, expValue: number) { + super(partyMemberIndex); this.expValue = expValue; } @@ -20,14 +20,14 @@ export class ExpPhase extends PlayerPartyMemberPokemonPhase { const pokemon = this.getPokemon(); const exp = new Utils.NumberHolder(this.expValue); - this.scene.applyModifiers(ExpBoosterModifier, true, exp); + globalScene.applyModifiers(ExpBoosterModifier, true, exp); exp.value = Math.floor(exp.value); - this.scene.ui.showText(i18next.t("battle:expGain", { pokemonName: getPokemonNameWithAffix(pokemon), exp: exp.value }), null, () => { + globalScene.ui.showText(i18next.t("battle:expGain", { pokemonName: getPokemonNameWithAffix(pokemon), exp: exp.value }), null, () => { const lastLevel = pokemon.level; pokemon.addExp(exp.value); const newLevel = pokemon.level; if (newLevel > lastLevel) { - this.scene.unshiftPhase(new LevelUpPhase(this.scene, this.partyMemberIndex, lastLevel, newLevel)); + globalScene.unshiftPhase(new LevelUpPhase(this.partyMemberIndex, lastLevel, newLevel)); } pokemon.updateInfo().then(() => this.end()); }, null, true); diff --git a/src/phases/faint-phase.ts b/src/phases/faint-phase.ts index a0c10015fbf..7bf3bc81930 100644 --- a/src/phases/faint-phase.ts +++ b/src/phases/faint-phase.ts @@ -1,13 +1,17 @@ -import { BattlerIndex, BattleType } from "#app/battle"; -import BattleScene from "#app/battle-scene"; +import type { BattlerIndex } from "#app/battle"; +import { BattleType } from "#app/battle"; +import { globalScene } from "#app/global-scene"; import { applyPostFaintAbAttrs, applyPostKnockOutAbAttrs, applyPostVictoryAbAttrs, PostFaintAbAttr, PostKnockOutAbAttr, PostVictoryAbAttr } from "#app/data/ability"; -import { BattlerTagLapseType, DestinyBondTag, GrudgeTag } from "#app/data/battler-tags"; +import type { DestinyBondTag, GrudgeTag } from "#app/data/battler-tags"; +import { BattlerTagLapseType } from "#app/data/battler-tags"; import { battleSpecDialogue } from "#app/data/dialogue"; import { allMoves, PostVictoryStatStageChangeAttr } from "#app/data/move"; import { SpeciesFormChangeActiveTrigger } from "#app/data/pokemon-forms"; import { BattleSpec } from "#app/enums/battle-spec"; import { StatusEffect } from "#app/enums/status-effect"; -import Pokemon, { EnemyPokemon, HitResult, PlayerPokemon, PokemonMove } from "#app/field/pokemon"; +import type { EnemyPokemon } from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; +import { HitResult, PlayerPokemon, PokemonMove } from "#app/field/pokemon"; import { getPokemonNameWithAffix } from "#app/messages"; import { PokemonInstantReviveModifier } from "#app/modifier/modifier"; import { SwitchType } from "#enums/switch-type"; @@ -43,8 +47,8 @@ export class FaintPhase extends PokemonPhase { */ private source?: Pokemon; - constructor(scene: BattleScene, battlerIndex: BattlerIndex, preventEndure: boolean = false, destinyTag?: DestinyBondTag | null, grudgeTag?: GrudgeTag | null, source?: Pokemon) { - super(scene, battlerIndex); + constructor(battlerIndex: BattlerIndex, preventEndure: boolean = false, destinyTag?: DestinyBondTag | null, grudgeTag?: GrudgeTag | null, source?: Pokemon) { + super(battlerIndex); this.preventEndure = preventEndure; this.destinyTag = destinyTag; @@ -66,20 +70,20 @@ export class FaintPhase extends PokemonPhase { } if (!this.preventEndure) { - const instantReviveModifier = this.scene.applyModifier(PokemonInstantReviveModifier, this.player, faintPokemon) as PokemonInstantReviveModifier; + const instantReviveModifier = globalScene.applyModifier(PokemonInstantReviveModifier, this.player, faintPokemon) as PokemonInstantReviveModifier; if (instantReviveModifier) { faintPokemon.loseHeldItem(instantReviveModifier); - this.scene.updateModifiers(this.player); + globalScene.updateModifiers(this.player); return this.end(); } } /** In case the current pokemon was just switched in, make sure it is counted as participating in the combat */ - this.scene.getPlayerField().forEach((pokemon, i) => { + globalScene.getPlayerField().forEach((pokemon, i) => { if (pokemon?.isActive(true)) { if (pokemon.isPlayer()) { - this.scene.currentBattle.addParticipant(pokemon as PlayerPokemon); + globalScene.currentBattle.addParticipant(pokemon as PlayerPokemon); } } }); @@ -95,27 +99,27 @@ export class FaintPhase extends PokemonPhase { // Track total times pokemon have been KO'd for supreme overlord/last respects if (pokemon.isPlayer()) { - this.scene.currentBattle.playerFaints += 1; - this.scene.currentBattle.playerFaintsHistory.push({ pokemon: pokemon, turn: this.scene.currentBattle.turn }); + globalScene.currentBattle.playerFaints += 1; + globalScene.currentBattle.playerFaintsHistory.push({ pokemon: pokemon, turn: globalScene.currentBattle.turn }); } else { - this.scene.currentBattle.enemyFaints += 1; - this.scene.currentBattle.enemyFaintsHistory.push({ pokemon: pokemon, turn: this.scene.currentBattle.turn }); + globalScene.currentBattle.enemyFaints += 1; + globalScene.currentBattle.enemyFaintsHistory.push({ pokemon: pokemon, turn: globalScene.currentBattle.turn }); } - this.scene.queueMessage(i18next.t("battle:fainted", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) }), null, true); - this.scene.triggerPokemonFormChange(pokemon, SpeciesFormChangeActiveTrigger, true); + globalScene.queueMessage(i18next.t("battle:fainted", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) }), null, true); + globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeActiveTrigger, true); if (pokemon.turnData?.attacksReceived?.length) { const lastAttack = pokemon.turnData.attacksReceived[0]; - applyPostFaintAbAttrs(PostFaintAbAttr, pokemon, this.scene.getPokemonById(lastAttack.sourceId)!, new PokemonMove(lastAttack.move).getMove(), lastAttack.result); // TODO: is this bang correct? + applyPostFaintAbAttrs(PostFaintAbAttr, pokemon, globalScene.getPokemonById(lastAttack.sourceId)!, new PokemonMove(lastAttack.move).getMove(), lastAttack.result); // TODO: is this bang correct? } else { //If killed by indirect damage, apply post-faint abilities without providing a last move applyPostFaintAbAttrs(PostFaintAbAttr, pokemon); } - const alivePlayField = this.scene.getField(true); + const alivePlayField = globalScene.getField(true); alivePlayField.forEach(p => applyPostKnockOutAbAttrs(PostKnockOutAbAttr, p, pokemon)); if (pokemon.turnData?.attacksReceived?.length) { - const defeatSource = this.scene.getPokemonById(pokemon.turnData.attacksReceived[0].sourceId); + const defeatSource = globalScene.getPokemonById(pokemon.turnData.attacksReceived[0].sourceId); if (defeatSource?.isOnField()) { applyPostVictoryAbAttrs(PostVictoryAbAttr, defeatSource); const pvmove = allMoves[pokemon.turnData.attacksReceived[0].move]; @@ -130,39 +134,39 @@ export class FaintPhase extends PokemonPhase { if (this.player) { /** The total number of Pokemon in the player's party that can legally fight */ - const legalPlayerPokemon = this.scene.getPokemonAllowedInBattle(); + const legalPlayerPokemon = globalScene.getPokemonAllowedInBattle(); /** The total number of legal player Pokemon that aren't currently on the field */ const legalPlayerPartyPokemon = legalPlayerPokemon.filter(p => !p.isActive(true)); if (!legalPlayerPokemon.length) { /** If the player doesn't have any legal Pokemon, end the game */ - this.scene.unshiftPhase(new GameOverPhase(this.scene)); - } else if (this.scene.currentBattle.double && legalPlayerPokemon.length === 1 && legalPlayerPartyPokemon.length === 0) { + globalScene.unshiftPhase(new GameOverPhase()); + } else if (globalScene.currentBattle.double && legalPlayerPokemon.length === 1 && legalPlayerPartyPokemon.length === 0) { /** * If the player has exactly one Pokemon in total at this point in a double battle, and that Pokemon * is already on the field, unshift a phase that moves that Pokemon to center position. */ - this.scene.unshiftPhase(new ToggleDoublePositionPhase(this.scene, true)); + globalScene.unshiftPhase(new ToggleDoublePositionPhase(true)); } else if (legalPlayerPartyPokemon.length > 0) { /** * If previous conditions weren't met, and the player has at least 1 legal Pokemon off the field, * push a phase that prompts the player to summon a Pokemon from their party. */ - this.scene.pushPhase(new SwitchPhase(this.scene, SwitchType.SWITCH, this.fieldIndex, true, false)); + globalScene.pushPhase(new SwitchPhase(SwitchType.SWITCH, this.fieldIndex, true, false)); } } else { - this.scene.unshiftPhase(new VictoryPhase(this.scene, this.battlerIndex)); - if ([ BattleType.TRAINER, BattleType.MYSTERY_ENCOUNTER ].includes(this.scene.currentBattle.battleType)) { - const hasReservePartyMember = !!this.scene.getEnemyParty().filter(p => p.isActive() && !p.isOnField() && p.trainerSlot === (pokemon as EnemyPokemon).trainerSlot).length; + globalScene.unshiftPhase(new VictoryPhase(this.battlerIndex)); + if ([ BattleType.TRAINER, BattleType.MYSTERY_ENCOUNTER ].includes(globalScene.currentBattle.battleType)) { + const hasReservePartyMember = !!globalScene.getEnemyParty().filter(p => p.isActive() && !p.isOnField() && p.trainerSlot === (pokemon as EnemyPokemon).trainerSlot).length; if (hasReservePartyMember) { - this.scene.pushPhase(new SwitchSummonPhase(this.scene, SwitchType.SWITCH, this.fieldIndex, -1, false, false)); + globalScene.pushPhase(new SwitchSummonPhase(SwitchType.SWITCH, this.fieldIndex, -1, false, false)); } } } // in double battles redirect potential moves off fainted pokemon - if (this.scene.currentBattle.double) { + if (globalScene.currentBattle.double) { const allyPokemon = pokemon.getAlly(); - this.scene.redirectPokemonMoves(pokemon, allyPokemon); + globalScene.redirectPokemonMoves(pokemon, allyPokemon); } pokemon.faintCry(() => { @@ -170,8 +174,8 @@ export class FaintPhase extends PokemonPhase { pokemon.addFriendship(-FRIENDSHIP_LOSS_FROM_FAINT); } pokemon.hideInfo(); - this.scene.playSound("se/faint"); - this.scene.tweens.add({ + globalScene.playSound("se/faint"); + globalScene.tweens.add({ targets: pokemon, duration: 500, y: pokemon.y + 150, @@ -179,17 +183,17 @@ export class FaintPhase extends PokemonPhase { onComplete: () => { pokemon.resetSprite(); pokemon.lapseTags(BattlerTagLapseType.FAINT); - this.scene.getField(true).filter(p => p !== pokemon).forEach(p => p.removeTagsBySourceId(pokemon.id)); + globalScene.getField(true).filter(p => p !== pokemon).forEach(p => p.removeTagsBySourceId(pokemon.id)); pokemon.y -= 150; pokemon.trySetStatus(StatusEffect.FAINT); if (pokemon.isPlayer()) { - this.scene.currentBattle.removeFaintedParticipant(pokemon as PlayerPokemon); + globalScene.currentBattle.removeFaintedParticipant(pokemon as PlayerPokemon); } else { - this.scene.addFaintedEnemyScore(pokemon as EnemyPokemon); - this.scene.currentBattle.addPostBattleLoot(pokemon as EnemyPokemon); + globalScene.addFaintedEnemyScore(pokemon as EnemyPokemon); + globalScene.currentBattle.addPostBattleLoot(pokemon as EnemyPokemon); } - this.scene.field.remove(pokemon); + globalScene.field.remove(pokemon); this.end(); } }); @@ -197,16 +201,16 @@ export class FaintPhase extends PokemonPhase { } tryOverrideForBattleSpec(): boolean { - switch (this.scene.currentBattle.battleSpec) { + switch (globalScene.currentBattle.battleSpec) { case BattleSpec.FINAL_BOSS: if (!this.player) { const enemy = this.getPokemon(); if (enemy.formIndex) { - this.scene.ui.showDialogue(battleSpecDialogue[BattleSpec.FINAL_BOSS].secondStageWin, enemy.species.name, null, () => this.doFaint()); + globalScene.ui.showDialogue(battleSpecDialogue[BattleSpec.FINAL_BOSS].secondStageWin, enemy.species.name, null, () => this.doFaint()); } else { // Final boss' HP threshold has been bypassed; cancel faint and force check for 2nd phase enemy.hp++; - this.scene.unshiftPhase(new DamageAnimPhase(this.scene, enemy.getBattlerIndex(), 0, HitResult.OTHER)); + globalScene.unshiftPhase(new DamageAnimPhase(enemy.getBattlerIndex(), 0, HitResult.OTHER)); this.end(); } return true; diff --git a/src/phases/field-phase.ts b/src/phases/field-phase.ts index 46c3c4983b4..0836d1171c0 100644 --- a/src/phases/field-phase.ts +++ b/src/phases/field-phase.ts @@ -1,11 +1,12 @@ -import Pokemon from "#app/field/pokemon"; +import { globalScene } from "#app/global-scene"; +import type Pokemon from "#app/field/pokemon"; import { BattlePhase } from "./battle-phase"; type PokemonFunc = (pokemon: Pokemon) => void; export abstract class FieldPhase extends BattlePhase { executeForAll(func: PokemonFunc): void { - const field = this.scene.getField(true).filter(p => p.summonData); + const field = globalScene.getField(true).filter(p => p.summonData); field.forEach(pokemon => func(pokemon)); } } diff --git a/src/phases/form-change-phase.ts b/src/phases/form-change-phase.ts index b042cd98294..353fed7b76c 100644 --- a/src/phases/form-change-phase.ts +++ b/src/phases/form-change-phase.ts @@ -1,10 +1,11 @@ -import BattleScene from "../battle-scene"; +import { globalScene } from "#app/global-scene"; import * as Utils from "../utils"; import { achvs } from "../system/achv"; -import { SpeciesFormChange, getSpeciesFormChangeMessage } from "../data/pokemon-forms"; -import { PlayerPokemon } from "../field/pokemon"; +import type { SpeciesFormChange } from "../data/pokemon-forms"; +import { getSpeciesFormChangeMessage } from "../data/pokemon-forms"; +import type { PlayerPokemon } from "../field/pokemon"; import { Mode } from "../ui/ui"; -import PartyUiHandler from "../ui/party-ui-handler"; +import type PartyUiHandler from "../ui/party-ui-handler"; import { getPokemonNameWithAffix } from "../messages"; import { EndEvolutionPhase } from "./end-evolution-phase"; import { EvolutionPhase } from "./evolution-phase"; @@ -15,8 +16,8 @@ export class FormChangePhase extends EvolutionPhase { private formChange: SpeciesFormChange; private modal: boolean; - constructor(scene: BattleScene, pokemon: PlayerPokemon, formChange: SpeciesFormChange, modal: boolean) { - super(scene, pokemon, null, 0); + constructor(pokemon: PlayerPokemon, formChange: SpeciesFormChange, modal: boolean) { + super(pokemon, null, 0); this.formChange = formChange; this.modal = modal; @@ -30,7 +31,7 @@ export class FormChangePhase extends EvolutionPhase { if (!this.modal) { return super.setMode(); } - return this.scene.ui.setOverlayMode(Mode.EVOLUTION_SCENE); + return globalScene.ui.setOverlayMode(Mode.EVOLUTION_SCENE); } doEvolution(): void { @@ -58,16 +59,16 @@ export class FormChangePhase extends EvolutionPhase { }); }); - this.scene.time.delayedCall(250, () => { - this.scene.tweens.add({ + globalScene.time.delayedCall(250, () => { + globalScene.tweens.add({ targets: this.evolutionBgOverlay, alpha: 1, delay: 500, duration: 1500, ease: "Sine.easeOut", onComplete: () => { - this.scene.time.delayedCall(1000, () => { - this.scene.tweens.add({ + globalScene.time.delayedCall(1000, () => { + globalScene.tweens.add({ targets: this.evolutionBgOverlay, alpha: 0, duration: 250 @@ -75,9 +76,9 @@ export class FormChangePhase extends EvolutionPhase { this.evolutionBg.setVisible(true); this.evolutionBg.play(); }); - this.scene.playSound("se/charge"); + globalScene.playSound("se/charge"); this.doSpiralUpward(); - this.scene.tweens.addCounter({ + globalScene.tweens.addCounter({ from: 0, to: 1, duration: 2000, @@ -86,25 +87,25 @@ export class FormChangePhase extends EvolutionPhase { }, onComplete: () => { this.pokemonSprite.setVisible(false); - this.scene.time.delayedCall(1100, () => { - this.scene.playSound("se/beam"); + globalScene.time.delayedCall(1100, () => { + globalScene.playSound("se/beam"); this.doArcDownward(); - this.scene.time.delayedCall(1000, () => { + globalScene.time.delayedCall(1000, () => { this.pokemonEvoTintSprite.setScale(0.25); this.pokemonEvoTintSprite.setVisible(true); this.doCycle(1, 1).then(_success => { - this.scene.playSound("se/sparkle"); + globalScene.playSound("se/sparkle"); this.pokemonEvoSprite.setVisible(true); this.doCircleInward(); - this.scene.time.delayedCall(900, () => { + globalScene.time.delayedCall(900, () => { this.pokemon.changeForm(this.formChange).then(() => { if (!this.modal) { - this.scene.unshiftPhase(new EndEvolutionPhase(this.scene)); + globalScene.unshiftPhase(new EndEvolutionPhase()); } - this.scene.playSound("se/shine"); + globalScene.playSound("se/shine"); this.doSpray(); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this.evolutionOverlay, alpha: 1, duration: 250, @@ -112,36 +113,36 @@ export class FormChangePhase extends EvolutionPhase { onComplete: () => { this.evolutionBgOverlay.setAlpha(1); this.evolutionBg.setVisible(false); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: [ this.evolutionOverlay, this.pokemonEvoTintSprite ], alpha: 0, duration: 2000, delay: 150, easing: "Sine.easeIn", onComplete: () => { - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this.evolutionBgOverlay, alpha: 0, duration: 250, onComplete: () => { - this.scene.time.delayedCall(250, () => { + globalScene.time.delayedCall(250, () => { this.pokemon.cry(); - this.scene.time.delayedCall(1250, () => { + globalScene.time.delayedCall(1250, () => { let playEvolutionFanfare = false; if (this.formChange.formKey.indexOf(SpeciesFormKey.MEGA) > -1) { - this.scene.validateAchv(achvs.MEGA_EVOLVE); + globalScene.validateAchv(achvs.MEGA_EVOLVE); playEvolutionFanfare = true; } else if (this.formChange.formKey.indexOf(SpeciesFormKey.GIGANTAMAX) > -1 || this.formChange.formKey.indexOf(SpeciesFormKey.ETERNAMAX) > -1) { - this.scene.validateAchv(achvs.GIGANTAMAX); + globalScene.validateAchv(achvs.GIGANTAMAX); playEvolutionFanfare = true; } const delay = playEvolutionFanfare ? 4000 : 1750; - this.scene.playSoundWithoutBgm(playEvolutionFanfare ? "evolution_fanfare" : "minor_fanfare"); + globalScene.playSoundWithoutBgm(playEvolutionFanfare ? "evolution_fanfare" : "minor_fanfare"); transformedPokemon.destroy(); - this.scene.ui.showText(getSpeciesFormChangeMessage(this.pokemon, this.formChange, preName), null, () => this.end(), null, true, Utils.fixedInt(delay)); - this.scene.time.delayedCall(Utils.fixedInt(delay + 250), () => this.scene.playBgm()); + globalScene.ui.showText(getSpeciesFormChangeMessage(this.pokemon, this.formChange, preName), null, () => this.end(), null, true, Utils.fixedInt(delay)); + globalScene.time.delayedCall(Utils.fixedInt(delay + 250), () => globalScene.playBgm()); }); }); } @@ -166,9 +167,9 @@ export class FormChangePhase extends EvolutionPhase { end(): void { this.pokemon.findAndRemoveTags(t => t.tagType === BattlerTagType.AUTOTOMIZED); if (this.modal) { - this.scene.ui.revertMode().then(() => { - if (this.scene.ui.getMode() === Mode.PARTY) { - const partyUiHandler = this.scene.ui.getHandler() as PartyUiHandler; + globalScene.ui.revertMode().then(() => { + if (globalScene.ui.getMode() === Mode.PARTY) { + const partyUiHandler = globalScene.ui.getHandler() as PartyUiHandler; partyUiHandler.clearPartySlots(); partyUiHandler.populatePartySlots(); } diff --git a/src/phases/game-over-modifier-reward-phase.ts b/src/phases/game-over-modifier-reward-phase.ts index a698e62e2e1..c98bb5fff04 100644 --- a/src/phases/game-over-modifier-reward-phase.ts +++ b/src/phases/game-over-modifier-reward-phase.ts @@ -1,24 +1,24 @@ -import BattleScene from "#app/battle-scene"; -import { ModifierTypeFunc } from "#app/modifier/modifier-type"; +import { globalScene } from "#app/global-scene"; +import type { ModifierTypeFunc } from "#app/modifier/modifier-type"; import { Mode } from "#app/ui/ui"; import i18next from "i18next"; import { ModifierRewardPhase } from "./modifier-reward-phase"; export class GameOverModifierRewardPhase extends ModifierRewardPhase { - constructor(scene: BattleScene, modifierTypeFunc: ModifierTypeFunc) { - super(scene, modifierTypeFunc); + constructor(modifierTypeFunc: ModifierTypeFunc) { + super(modifierTypeFunc); } doReward(): Promise { return new Promise(resolve => { const newModifier = this.modifierType.newModifier(); - this.scene.addModifier(newModifier).then(() => { + globalScene.addModifier(newModifier).then(() => { // Sound loaded into game as is - this.scene.playSound("level_up_fanfare"); - this.scene.ui.setMode(Mode.MESSAGE); - this.scene.ui.fadeIn(250).then(() => { - this.scene.ui.showText(i18next.t("battle:rewardGain", { modifierName: newModifier?.type.name }), null, () => { - this.scene.time.delayedCall(1500, () => this.scene.arenaBg.setVisible(true)); + globalScene.playSound("level_up_fanfare"); + globalScene.ui.setMode(Mode.MESSAGE); + globalScene.ui.fadeIn(250).then(() => { + globalScene.ui.showText(i18next.t("battle:rewardGain", { modifierName: newModifier?.type.name }), null, () => { + globalScene.time.delayedCall(1500, () => globalScene.arenaBg.setVisible(true)); resolve(); }, null, true, 1500); }); diff --git a/src/phases/game-over-phase.ts b/src/phases/game-over-phase.ts index 52d0996b946..5e4e8e1cdf7 100644 --- a/src/phases/game-over-phase.ts +++ b/src/phases/game-over-phase.ts @@ -1,11 +1,12 @@ import { clientSessionId } from "#app/account"; import { BattleType } from "#app/battle"; -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { pokemonEvolutions } from "#app/data/balance/pokemon-evolutions"; import { getCharVariantFromDialogue } from "#app/data/dialogue"; -import PokemonSpecies, { getPokemonSpecies } from "#app/data/pokemon-species"; +import type PokemonSpecies from "#app/data/pokemon-species"; +import { getPokemonSpecies } from "#app/data/pokemon-species"; import { trainerConfigs } from "#app/data/trainer-config"; -import Pokemon from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; import { modifierTypes } from "#app/modifier/modifier-type"; import { BattlePhase } from "#app/phases/battle-phase"; import { CheckSwitchPhase } from "#app/phases/check-switch-phase"; @@ -23,7 +24,7 @@ import * as Utils from "#app/utils"; import { PlayerGender } from "#enums/player-gender"; import { TrainerType } from "#enums/trainer-type"; import i18next from "i18next"; -import { SessionSaveData } from "#app/system/game-data"; +import type { SessionSaveData } from "#app/system/game-data"; import PersistentModifierData from "#app/system/modifier-data"; import PokemonData from "#app/system/pokemon-data"; import ChallengeData from "#app/system/challenge-data"; @@ -35,8 +36,8 @@ export class GameOverPhase extends BattlePhase { private isVictory: boolean; private firstRibbons: PokemonSpecies[] = []; - constructor(scene: BattleScene, isVictory: boolean = false) { - super(scene); + constructor(isVictory: boolean = false) { + super(); this.isVictory = isVictory; } @@ -45,47 +46,47 @@ export class GameOverPhase extends BattlePhase { super.start(); // Failsafe if players somehow skip floor 200 in classic mode - if (this.scene.gameMode.isClassic && this.scene.currentBattle.waveIndex > 200) { + if (globalScene.gameMode.isClassic && globalScene.currentBattle.waveIndex > 200) { this.isVictory = true; } // Handle Mystery Encounter special Game Over cases // Situations such as when player lost a battle, but it isn't treated as full Game Over - if (!this.isVictory && this.scene.currentBattle.mysteryEncounter?.onGameOver && !this.scene.currentBattle.mysteryEncounter.onGameOver(this.scene)) { + if (!this.isVictory && globalScene.currentBattle.mysteryEncounter?.onGameOver && !globalScene.currentBattle.mysteryEncounter.onGameOver()) { // Do not end the game return this.end(); } // Otherwise, continue standard Game Over logic - if (this.isVictory && this.scene.gameMode.isEndless) { - const genderIndex = this.scene.gameData.gender ?? PlayerGender.UNSET; + if (this.isVictory && globalScene.gameMode.isEndless) { + const genderIndex = globalScene.gameData.gender ?? PlayerGender.UNSET; const genderStr = PlayerGender[genderIndex].toLowerCase(); - this.scene.ui.showDialogue(i18next.t("miscDialogue:ending_endless", { context: genderStr }), i18next.t("miscDialogue:ending_name"), 0, () => this.handleGameOver()); - } else if (this.isVictory || !this.scene.enableRetries) { + globalScene.ui.showDialogue(i18next.t("miscDialogue:ending_endless", { context: genderStr }), i18next.t("miscDialogue:ending_name"), 0, () => this.handleGameOver()); + } else if (this.isVictory || !globalScene.enableRetries) { this.handleGameOver(); } else { - this.scene.ui.showText(i18next.t("battle:retryBattle"), null, () => { - this.scene.ui.setMode(Mode.CONFIRM, () => { - this.scene.ui.fadeOut(1250).then(() => { - this.scene.reset(); - this.scene.clearPhaseQueue(); - this.scene.gameData.loadSession(this.scene, this.scene.sessionSlotId).then(() => { - this.scene.pushPhase(new EncounterPhase(this.scene, true)); + globalScene.ui.showText(i18next.t("battle:retryBattle"), null, () => { + globalScene.ui.setMode(Mode.CONFIRM, () => { + globalScene.ui.fadeOut(1250).then(() => { + globalScene.reset(); + globalScene.clearPhaseQueue(); + globalScene.gameData.loadSession(globalScene.sessionSlotId).then(() => { + globalScene.pushPhase(new EncounterPhase(true)); - const availablePartyMembers = this.scene.getPokemonAllowedInBattle().length; + const availablePartyMembers = globalScene.getPokemonAllowedInBattle().length; - this.scene.pushPhase(new SummonPhase(this.scene, 0)); - if (this.scene.currentBattle.double && availablePartyMembers > 1) { - this.scene.pushPhase(new SummonPhase(this.scene, 1)); + globalScene.pushPhase(new SummonPhase(0)); + if (globalScene.currentBattle.double && availablePartyMembers > 1) { + globalScene.pushPhase(new SummonPhase(1)); } - if (this.scene.currentBattle.waveIndex > 1 && this.scene.currentBattle.battleType !== BattleType.TRAINER) { - this.scene.pushPhase(new CheckSwitchPhase(this.scene, 0, this.scene.currentBattle.double)); - if (this.scene.currentBattle.double && availablePartyMembers > 1) { - this.scene.pushPhase(new CheckSwitchPhase(this.scene, 1, this.scene.currentBattle.double)); + if (globalScene.currentBattle.waveIndex > 1 && globalScene.currentBattle.battleType !== BattleType.TRAINER) { + globalScene.pushPhase(new CheckSwitchPhase(0, globalScene.currentBattle.double)); + if (globalScene.currentBattle.double && availablePartyMembers > 1) { + globalScene.pushPhase(new CheckSwitchPhase(1, globalScene.currentBattle.double)); } } - this.scene.ui.fadeIn(1250); + globalScene.ui.fadeIn(1250); this.end(); }); }); @@ -96,38 +97,38 @@ export class GameOverPhase extends BattlePhase { handleGameOver(): void { const doGameOver = (newClear: boolean) => { - this.scene.disableMenu = true; - this.scene.time.delayedCall(1000, () => { + globalScene.disableMenu = true; + globalScene.time.delayedCall(1000, () => { let firstClear = false; if (this.isVictory && newClear) { - if (this.scene.gameMode.isClassic) { - firstClear = this.scene.validateAchv(achvs.CLASSIC_VICTORY); - this.scene.validateAchv(achvs.UNEVOLVED_CLASSIC_VICTORY); - this.scene.gameData.gameStats.sessionsWon++; - for (const pokemon of this.scene.getPlayerParty()) { + if (globalScene.gameMode.isClassic) { + firstClear = globalScene.validateAchv(achvs.CLASSIC_VICTORY); + globalScene.validateAchv(achvs.UNEVOLVED_CLASSIC_VICTORY); + globalScene.gameData.gameStats.sessionsWon++; + for (const pokemon of globalScene.getPlayerParty()) { this.awardRibbon(pokemon); if (pokemon.species.getRootSpeciesId() !== pokemon.species.getRootSpeciesId(true)) { this.awardRibbon(pokemon, true); } } - } else if (this.scene.gameMode.isDaily && newClear) { - this.scene.gameData.gameStats.dailyRunSessionsWon++; + } else if (globalScene.gameMode.isDaily && newClear) { + globalScene.gameData.gameStats.dailyRunSessionsWon++; } } const fadeDuration = this.isVictory ? 10000 : 5000; - this.scene.fadeOutBgm(fadeDuration, true); - const activeBattlers = this.scene.getField().filter(p => p?.isActive(true)); + globalScene.fadeOutBgm(fadeDuration, true); + const activeBattlers = globalScene.getField().filter(p => p?.isActive(true)); activeBattlers.map(p => p.hideInfo()); - this.scene.ui.fadeOut(fadeDuration).then(() => { + globalScene.ui.fadeOut(fadeDuration).then(() => { activeBattlers.map(a => a.setVisible(false)); - this.scene.setFieldScale(1, true); - this.scene.clearPhaseQueue(); - this.scene.ui.clearText(); + globalScene.setFieldScale(1, true); + globalScene.clearPhaseQueue(); + globalScene.ui.clearText(); - if (this.isVictory && this.scene.gameMode.isChallenge) { - this.scene.gameMode.challenges.forEach(c => this.scene.validateAchvs(ChallengeAchv, c)); + if (this.isVictory && globalScene.gameMode.isChallenge) { + globalScene.gameMode.challenges.forEach(c => globalScene.validateAchvs(ChallengeAchv, c)); } const clear = (endCardPhase?: EndCardPhase) => { @@ -135,34 +136,34 @@ export class GameOverPhase extends BattlePhase { this.handleUnlocks(); for (const species of this.firstRibbons) { - this.scene.unshiftPhase(new RibbonModifierRewardPhase(this.scene, modifierTypes.VOUCHER_PLUS, species)); + globalScene.unshiftPhase(new RibbonModifierRewardPhase(modifierTypes.VOUCHER_PLUS, species)); } if (!firstClear) { - this.scene.unshiftPhase(new GameOverModifierRewardPhase(this.scene, modifierTypes.VOUCHER_PREMIUM)); + globalScene.unshiftPhase(new GameOverModifierRewardPhase(modifierTypes.VOUCHER_PREMIUM)); } } this.getRunHistoryEntry().then(runHistoryEntry => { - this.scene.gameData.saveRunHistory(this.scene, runHistoryEntry, this.isVictory); - this.scene.pushPhase(new PostGameOverPhase(this.scene, endCardPhase)); + globalScene.gameData.saveRunHistory(runHistoryEntry, this.isVictory); + globalScene.pushPhase(new PostGameOverPhase(endCardPhase)); this.end(); }); }; - if (this.isVictory && this.scene.gameMode.isClassic) { + if (this.isVictory && globalScene.gameMode.isClassic) { const dialogueKey = "miscDialogue:ending"; - if (!this.scene.ui.shouldSkipDialogue(dialogueKey)) { - this.scene.ui.fadeIn(500).then(() => { - const genderIndex = this.scene.gameData.gender ?? PlayerGender.UNSET; + if (!globalScene.ui.shouldSkipDialogue(dialogueKey)) { + globalScene.ui.fadeIn(500).then(() => { + const genderIndex = globalScene.gameData.gender ?? PlayerGender.UNSET; const genderStr = PlayerGender[genderIndex].toLowerCase(); // Dialogue has to be retrieved so that the rival's expressions can be loaded and shown via getCharVariantFromDialogue const dialogue = i18next.t(dialogueKey, { context: genderStr }); - this.scene.charSprite.showCharacter(`rival_${this.scene.gameData.gender === PlayerGender.FEMALE ? "m" : "f"}`, getCharVariantFromDialogue(dialogue)).then(() => { - this.scene.ui.showDialogue(dialogueKey, this.scene.gameData.gender === PlayerGender.FEMALE ? trainerConfigs[TrainerType.RIVAL].name : trainerConfigs[TrainerType.RIVAL].nameFemale, null, () => { - this.scene.ui.fadeOut(500).then(() => { - this.scene.charSprite.hide().then(() => { - const endCardPhase = new EndCardPhase(this.scene); - this.scene.unshiftPhase(endCardPhase); + globalScene.charSprite.showCharacter(`rival_${globalScene.gameData.gender === PlayerGender.FEMALE ? "m" : "f"}`, getCharVariantFromDialogue(dialogue)).then(() => { + globalScene.ui.showDialogue(dialogueKey, globalScene.gameData.gender === PlayerGender.FEMALE ? trainerConfigs[TrainerType.RIVAL].name : trainerConfigs[TrainerType.RIVAL].nameFemale, null, () => { + globalScene.ui.fadeOut(500).then(() => { + globalScene.charSprite.hide().then(() => { + const endCardPhase = new EndCardPhase(); + globalScene.unshiftPhase(endCardPhase); clear(endCardPhase); }); }); @@ -170,8 +171,8 @@ export class GameOverPhase extends BattlePhase { }); }); } else { - const endCardPhase = new EndCardPhase(this.scene); - this.scene.unshiftPhase(endCardPhase); + const endCardPhase = new EndCardPhase(); + globalScene.unshiftPhase(endCardPhase); clear(endCardPhase); } } else { @@ -185,10 +186,10 @@ export class GameOverPhase extends BattlePhase { If Online, execute apiFetch as intended If Offline, execute offlineNewClear() only for victory, a localStorage implementation of newClear daily run checks */ if (!Utils.isLocal || Utils.isLocalServerConnected) { - pokerogueApi.savedata.session.newclear({ slot: this.scene.sessionSlotId, isVictory: this.isVictory, clientSessionId: clientSessionId }) + pokerogueApi.savedata.session.newclear({ slot: globalScene.sessionSlotId, isVictory: this.isVictory, clientSessionId: clientSessionId }) .then((success) => doGameOver(!!success)); } else if (this.isVictory) { - this.scene.gameData.offlineNewClear(this.scene).then(result => { + globalScene.gameData.offlineNewClear().then(result => { doGameOver(result); }); } else { @@ -197,57 +198,58 @@ export class GameOverPhase extends BattlePhase { } handleUnlocks(): void { - if (this.isVictory && this.scene.gameMode.isClassic) { - if (!this.scene.gameData.unlocks[Unlockables.ENDLESS_MODE]) { - this.scene.unshiftPhase(new UnlockPhase(this.scene, Unlockables.ENDLESS_MODE)); + if (this.isVictory && globalScene.gameMode.isClassic) { + if (!globalScene.gameData.unlocks[Unlockables.ENDLESS_MODE]) { + globalScene.unshiftPhase(new UnlockPhase(Unlockables.ENDLESS_MODE)); } - if (this.scene.getPlayerParty().filter(p => p.fusionSpecies).length && !this.scene.gameData.unlocks[Unlockables.SPLICED_ENDLESS_MODE]) { - this.scene.unshiftPhase(new UnlockPhase(this.scene, Unlockables.SPLICED_ENDLESS_MODE)); + if (globalScene.getPlayerParty().filter(p => p.fusionSpecies).length && !globalScene.gameData.unlocks[Unlockables.SPLICED_ENDLESS_MODE]) { + globalScene.unshiftPhase(new UnlockPhase(Unlockables.SPLICED_ENDLESS_MODE)); } - if (!this.scene.gameData.unlocks[Unlockables.MINI_BLACK_HOLE]) { - this.scene.unshiftPhase(new UnlockPhase(this.scene, Unlockables.MINI_BLACK_HOLE)); + if (!globalScene.gameData.unlocks[Unlockables.MINI_BLACK_HOLE]) { + globalScene.unshiftPhase(new UnlockPhase(Unlockables.MINI_BLACK_HOLE)); } - if (!this.scene.gameData.unlocks[Unlockables.EVIOLITE] && this.scene.getPlayerParty().some(p => p.getSpeciesForm(true).speciesId in pokemonEvolutions)) { - this.scene.unshiftPhase(new UnlockPhase(this.scene, Unlockables.EVIOLITE)); + if (!globalScene.gameData.unlocks[Unlockables.EVIOLITE] && globalScene.getPlayerParty().some(p => p.getSpeciesForm(true).speciesId in pokemonEvolutions)) { + globalScene.unshiftPhase(new UnlockPhase(Unlockables.EVIOLITE)); } } } awardRibbon(pokemon: Pokemon, forStarter: boolean = false): void { const speciesId = getPokemonSpecies(pokemon.species.speciesId); - const speciesRibbonCount = this.scene.gameData.incrementRibbonCount(speciesId, forStarter); + const speciesRibbonCount = globalScene.gameData.incrementRibbonCount(speciesId, forStarter); // first time classic win, award voucher if (speciesRibbonCount === 1) { this.firstRibbons.push(getPokemonSpecies(pokemon.species.getRootSpeciesId(forStarter))); } } + // TODO: Make function use existing getSessionSaveData() function and then modify the values from there. /** * Slightly modified version of {@linkcode GameData.getSessionSaveData}. * @returns A promise containing the {@linkcode SessionSaveData} */ private async getRunHistoryEntry(): Promise { - const preWaveSessionData = await this.scene.gameData.getSession(this.scene.sessionSlotId); + const preWaveSessionData = await globalScene.gameData.getSession(globalScene.sessionSlotId); return { - seed: this.scene.seed, - playTime: this.scene.sessionPlayTime, - gameMode: this.scene.gameMode.modeId, - party: this.scene.getPlayerParty().map(p => new PokemonData(p)), - enemyParty: this.scene.getEnemyParty().map(p => new PokemonData(p)), - modifiers: preWaveSessionData ? preWaveSessionData.modifiers : this.scene.findModifiers(() => true).map(m => new PersistentModifierData(m, true)), - enemyModifiers: preWaveSessionData ? preWaveSessionData.enemyModifiers : this.scene.findModifiers(() => true, false).map(m => new PersistentModifierData(m, false)), - arena: new ArenaData(this.scene.arena), - pokeballCounts: this.scene.pokeballCounts, - money: Math.floor(this.scene.money), - score: this.scene.score, - waveIndex: this.scene.currentBattle.waveIndex, - battleType: this.scene.currentBattle.battleType, - trainer: this.scene.currentBattle.trainer ? new TrainerData(this.scene.currentBattle.trainer) : null, - gameVersion: this.scene.game.config.gameVersion, + seed: globalScene.seed, + playTime: globalScene.sessionPlayTime, + gameMode: globalScene.gameMode.modeId, + party: globalScene.getPlayerParty().map(p => new PokemonData(p)), + enemyParty: globalScene.getEnemyParty().map(p => new PokemonData(p)), + modifiers: preWaveSessionData ? preWaveSessionData.modifiers : globalScene.findModifiers(() => true).map(m => new PersistentModifierData(m, true)), + enemyModifiers: preWaveSessionData ? preWaveSessionData.enemyModifiers : globalScene.findModifiers(() => true, false).map(m => new PersistentModifierData(m, false)), + arena: new ArenaData(globalScene.arena), + pokeballCounts: globalScene.pokeballCounts, + money: Math.floor(globalScene.money), + score: globalScene.score, + waveIndex: globalScene.currentBattle.waveIndex, + battleType: globalScene.currentBattle.battleType, + trainer: globalScene.currentBattle.trainer ? new TrainerData(globalScene.currentBattle.trainer) : null, + gameVersion: globalScene.game.config.gameVersion, timestamp: new Date().getTime(), - challenges: this.scene.gameMode.challenges.map(c => new ChallengeData(c)), - mysteryEncounterType: this.scene.currentBattle.mysteryEncounter?.encounterType ?? -1, - mysteryEncounterSaveData: this.scene.mysteryEncounterSaveData + challenges: globalScene.gameMode.challenges.map(c => new ChallengeData(c)), + mysteryEncounterType: globalScene.currentBattle.mysteryEncounter?.encounterType ?? -1, + mysteryEncounterSaveData: globalScene.mysteryEncounterSaveData } as SessionSaveData; } } diff --git a/src/phases/hide-party-exp-bar-phase.ts b/src/phases/hide-party-exp-bar-phase.ts index 303650ea1ad..0dce41044c0 100644 --- a/src/phases/hide-party-exp-bar-phase.ts +++ b/src/phases/hide-party-exp-bar-phase.ts @@ -1,14 +1,14 @@ -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { BattlePhase } from "./battle-phase"; export class HidePartyExpBarPhase extends BattlePhase { - constructor(scene: BattleScene) { - super(scene); + constructor() { + super(); } start() { super.start(); - this.scene.partyExpBar.hide().then(() => this.end()); + globalScene.partyExpBar.hide().then(() => this.end()); } } diff --git a/src/phases/learn-move-phase.ts b/src/phases/learn-move-phase.ts index fefda384092..6f10022d1fc 100644 --- a/src/phases/learn-move-phase.ts +++ b/src/phases/learn-move-phase.ts @@ -1,6 +1,7 @@ -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { initMoveAnim, loadMoveAnimAssets } from "#app/data/battle-anims"; -import Move, { allMoves } from "#app/data/move"; +import type Move from "#app/data/move"; +import { allMoves } from "#app/data/move"; import { SpeciesFormChangeMoveLearnedTrigger } from "#app/data/pokemon-forms"; import { Moves } from "#enums/moves"; import { getPokemonNameWithAffix } from "#app/messages"; @@ -10,7 +11,7 @@ import { SummaryUiMode } from "#app/ui/summary-ui-handler"; import { Mode } from "#app/ui/ui"; import i18next from "i18next"; import { PlayerPartyMemberPokemonPhase } from "#app/phases/player-party-member-pokemon-phase"; -import Pokemon from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; export enum LearnMoveType { @@ -28,8 +29,8 @@ export class LearnMovePhase extends PlayerPartyMemberPokemonPhase { private learnMoveType; private cost: number; - constructor(scene: BattleScene, partyMemberIndex: integer, moveId: Moves, learnMoveType: LearnMoveType = LearnMoveType.LEARN_MOVE, cost: number = -1) { - super(scene, partyMemberIndex); + constructor(partyMemberIndex: integer, moveId: Moves, learnMoveType: LearnMoveType = LearnMoveType.LEARN_MOVE, cost: number = -1) { + super(partyMemberIndex); this.moveId = moveId; this.learnMoveType = learnMoveType; this.cost = cost; @@ -48,8 +49,8 @@ export class LearnMovePhase extends PlayerPartyMemberPokemonPhase { return this.end(); } - this.messageMode = this.scene.ui.getHandler() instanceof EvolutionSceneHandler ? Mode.EVOLUTION_SCENE : Mode.MESSAGE; - this.scene.ui.setMode(this.messageMode); + this.messageMode = globalScene.ui.getHandler() instanceof EvolutionSceneHandler ? Mode.EVOLUTION_SCENE : Mode.MESSAGE; + globalScene.ui.setMode(this.messageMode); // If the Pokemon has less than 4 moves, the new move is added to the largest empty moveset index // If it has 4 moves, the phase then checks if the player wants to replace the move itself. if (currentMoveset.length < 4) { @@ -73,12 +74,12 @@ export class LearnMovePhase extends PlayerPartyMemberPokemonPhase { const moveLimitReached = i18next.t("battle:learnMoveLimitReached", { pokemonName: getPokemonNameWithAffix(pokemon) }); const shouldReplaceQ = i18next.t("battle:learnMoveReplaceQuestion", { moveName: move.name }); const preQText = [ learnMovePrompt, moveLimitReached ].join("$"); - await this.scene.ui.showTextPromise(preQText); - await this.scene.ui.showTextPromise(shouldReplaceQ, undefined, false); - await this.scene.ui.setModeWithoutClear(Mode.CONFIRM, + await globalScene.ui.showTextPromise(preQText); + await globalScene.ui.showTextPromise(shouldReplaceQ, undefined, false); + await globalScene.ui.setModeWithoutClear(Mode.CONFIRM, () => this.forgetMoveProcess(move, pokemon), // Yes () => { // No - this.scene.ui.setMode(this.messageMode); + globalScene.ui.setMode(this.messageMode); this.rejectMoveAndEnd(move, pokemon); } ); @@ -96,16 +97,16 @@ export class LearnMovePhase extends PlayerPartyMemberPokemonPhase { * @param Pokemon The Pokemon learning the move */ async forgetMoveProcess(move: Move, pokemon: Pokemon) { - this.scene.ui.setMode(this.messageMode); - await this.scene.ui.showTextPromise(i18next.t("battle:learnMoveForgetQuestion"), undefined, true); - await this.scene.ui.setModeWithoutClear(Mode.SUMMARY, pokemon, SummaryUiMode.LEARN_MOVE, move, (moveIndex: integer) => { + globalScene.ui.setMode(this.messageMode); + await globalScene.ui.showTextPromise(i18next.t("battle:learnMoveForgetQuestion"), undefined, true); + await globalScene.ui.setModeWithoutClear(Mode.SUMMARY, pokemon, SummaryUiMode.LEARN_MOVE, move, (moveIndex: integer) => { if (moveIndex === 4) { - this.scene.ui.setMode(this.messageMode).then(() => this.rejectMoveAndEnd(move, pokemon)); + globalScene.ui.setMode(this.messageMode).then(() => this.rejectMoveAndEnd(move, pokemon)); return; } const forgetSuccessText = i18next.t("battle:learnMoveForgetSuccess", { pokemonName: getPokemonNameWithAffix(pokemon), moveName: pokemon.moveset[moveIndex]!.getName() }); const fullText = [ i18next.t("battle:countdownPoof"), forgetSuccessText, i18next.t("battle:learnMoveAnd") ].join("$"); - this.scene.ui.setMode(this.messageMode).then(() => this.learnMove(moveIndex, move, pokemon, fullText)); + globalScene.ui.setMode(this.messageMode).then(() => this.learnMove(moveIndex, move, pokemon, fullText)); }); } @@ -120,14 +121,14 @@ export class LearnMovePhase extends PlayerPartyMemberPokemonPhase { * @param Pokemon The Pokemon learning the move */ async rejectMoveAndEnd(move: Move, pokemon: Pokemon) { - await this.scene.ui.showTextPromise(i18next.t("battle:learnMoveStopTeaching", { moveName: move.name }), undefined, false); - this.scene.ui.setModeWithoutClear(Mode.CONFIRM, + await globalScene.ui.showTextPromise(i18next.t("battle:learnMoveStopTeaching", { moveName: move.name }), undefined, false); + globalScene.ui.setModeWithoutClear(Mode.CONFIRM, () => { - this.scene.ui.setMode(this.messageMode); - this.scene.ui.showTextPromise(i18next.t("battle:learnMoveNotLearned", { pokemonName: getPokemonNameWithAffix(pokemon), moveName: move.name }), undefined, true).then(() => this.end()); + globalScene.ui.setMode(this.messageMode); + globalScene.ui.showTextPromise(i18next.t("battle:learnMoveNotLearned", { pokemonName: getPokemonNameWithAffix(pokemon), moveName: move.name }), undefined, true).then(() => this.end()); }, () => { - this.scene.ui.setMode(this.messageMode); + globalScene.ui.setMode(this.messageMode); this.replaceMoveCheck(move, pokemon); } ); @@ -154,31 +155,31 @@ export class LearnMovePhase extends PlayerPartyMemberPokemonPhase { pokemon.usedTMs = []; } pokemon.usedTMs.push(this.moveId); - this.scene.tryRemovePhase((phase) => phase instanceof SelectModifierPhase); + globalScene.tryRemovePhase((phase) => phase instanceof SelectModifierPhase); } else if (this.learnMoveType === LearnMoveType.MEMORY) { if (this.cost !== -1) { if (!Overrides.WAIVE_ROLL_FEE_OVERRIDE) { - this.scene.money -= this.cost; - this.scene.updateMoneyText(); - this.scene.animateMoneyChanged(false); + globalScene.money -= this.cost; + globalScene.updateMoneyText(); + globalScene.animateMoneyChanged(false); } - this.scene.playSound("se/buy"); + globalScene.playSound("se/buy"); } else { - this.scene.tryRemovePhase((phase) => phase instanceof SelectModifierPhase); + globalScene.tryRemovePhase((phase) => phase instanceof SelectModifierPhase); } } pokemon.setMove(index, this.moveId); - initMoveAnim(this.scene, this.moveId).then(() => { - loadMoveAnimAssets(this.scene, [ this.moveId ], true); + initMoveAnim(this.moveId).then(() => { + loadMoveAnimAssets([ this.moveId ], true); }); - this.scene.ui.setMode(this.messageMode); + globalScene.ui.setMode(this.messageMode); const learnMoveText = i18next.t("battle:learnMove", { pokemonName: getPokemonNameWithAffix(pokemon), moveName: move.name }); if (textMessage) { - await this.scene.ui.showTextPromise(textMessage); + await globalScene.ui.showTextPromise(textMessage); } - this.scene.playSound("level_up_fanfare"); // Sound loaded into game as is - this.scene.ui.showText(learnMoveText, null, () => { - this.scene.triggerPokemonFormChange(pokemon, SpeciesFormChangeMoveLearnedTrigger, true); + globalScene.playSound("level_up_fanfare"); // Sound loaded into game as is + globalScene.ui.showText(learnMoveText, null, () => { + globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeMoveLearnedTrigger, true); this.end(); }, this.messageMode === Mode.EVOLUTION_SCENE ? 1000 : undefined, true); } diff --git a/src/phases/level-cap-phase.ts b/src/phases/level-cap-phase.ts index d1404e45010..d75bc3be6d4 100644 --- a/src/phases/level-cap-phase.ts +++ b/src/phases/level-cap-phase.ts @@ -1,20 +1,20 @@ -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { Mode } from "#app/ui/ui"; import i18next from "i18next"; import { FieldPhase } from "./field-phase"; export class LevelCapPhase extends FieldPhase { - constructor(scene: BattleScene) { - super(scene); + constructor() { + super(); } start(): void { super.start(); - this.scene.ui.setMode(Mode.MESSAGE).then(() => { + globalScene.ui.setMode(Mode.MESSAGE).then(() => { // Sound loaded into game as is - this.scene.playSound("level_up_fanfare"); - this.scene.ui.showText(i18next.t("battle:levelCapUp", { levelCap: this.scene.getMaxExpLevel() }), null, () => this.end(), null, true); + globalScene.playSound("level_up_fanfare"); + globalScene.ui.showText(i18next.t("battle:levelCapUp", { levelCap: globalScene.getMaxExpLevel() }), null, () => this.end(), null, true); this.executeForAll(pokemon => pokemon.updateInfo(true)); }); } diff --git a/src/phases/level-up-phase.ts b/src/phases/level-up-phase.ts index 4f26abc5af3..450ecca0c70 100644 --- a/src/phases/level-up-phase.ts +++ b/src/phases/level-up-phase.ts @@ -1,4 +1,4 @@ -import type BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { ExpNotification } from "#app/enums/exp-notification"; import type { PlayerPokemon } from "#app/field/pokemon"; import { getPokemonNameWithAffix } from "#app/messages"; @@ -14,8 +14,8 @@ export class LevelUpPhase extends PlayerPartyMemberPokemonPhase { protected level: number; protected pokemon: PlayerPokemon = this.getPlayerPokemon(); - constructor(scene: BattleScene, partyMemberIndex: number, lastLevel: number, level: number) { - super(scene, partyMemberIndex); + constructor(partyMemberIndex: number, lastLevel: number, level: number) { + super(partyMemberIndex); this.lastLevel = lastLevel; this.level = level; @@ -24,27 +24,27 @@ export class LevelUpPhase extends PlayerPartyMemberPokemonPhase { public override start() { super.start(); - if (this.level > this.scene.gameData.gameStats.highestLevel) { - this.scene.gameData.gameStats.highestLevel = this.level; + if (this.level > globalScene.gameData.gameStats.highestLevel) { + globalScene.gameData.gameStats.highestLevel = this.level; } - this.scene.validateAchvs(LevelAchv, new NumberHolder(this.level)); + globalScene.validateAchvs(LevelAchv, new NumberHolder(this.level)); const prevStats = this.pokemon.stats.slice(0); this.pokemon.calculateStats(); this.pokemon.updateInfo(); - if (this.scene.expParty === ExpNotification.DEFAULT) { - this.scene.playSound("level_up_fanfare"); - this.scene.ui.showText( + if (globalScene.expParty === ExpNotification.DEFAULT) { + globalScene.playSound("level_up_fanfare"); + globalScene.ui.showText( i18next.t("battle:levelUp", { pokemonName: getPokemonNameWithAffix(this.pokemon), level: this.level }), null, - () => this.scene.ui.getMessageHandler().promptLevelUpStats(this.partyMemberIndex, prevStats, false) + () => globalScene.ui.getMessageHandler().promptLevelUpStats(this.partyMemberIndex, prevStats, false) .then(() => this.end()), null, true); - } else if (this.scene.expParty === ExpNotification.SKIP) { + } else if (globalScene.expParty === ExpNotification.SKIP) { this.end(); } else { // we still want to display the stats if activated - this.scene.ui.getMessageHandler().promptLevelUpStats(this.partyMemberIndex, prevStats, false).then(() => this.end()); + globalScene.ui.getMessageHandler().promptLevelUpStats(this.partyMemberIndex, prevStats, false).then(() => this.end()); } } @@ -52,13 +52,13 @@ export class LevelUpPhase extends PlayerPartyMemberPokemonPhase { if (this.lastLevel < 100) { // this feels like an unnecessary optimization const levelMoves = this.getPokemon().getLevelMoves(this.lastLevel + 1); for (const lm of levelMoves) { - this.scene.unshiftPhase(new LearnMovePhase(this.scene, this.partyMemberIndex, lm[1])); + globalScene.unshiftPhase(new LearnMovePhase(this.partyMemberIndex, lm[1])); } } if (!this.pokemon.pauseEvolutions) { const evolution = this.pokemon.getEvolution(); if (evolution) { - this.scene.unshiftPhase(new EvolutionPhase(this.scene, this.pokemon, evolution, this.lastLevel)); + globalScene.unshiftPhase(new EvolutionPhase(this.pokemon, evolution, this.lastLevel)); } } return super.end(); diff --git a/src/phases/login-phase.ts b/src/phases/login-phase.ts index ac1e68d1b0e..0ed8b6feb88 100644 --- a/src/phases/login-phase.ts +++ b/src/phases/login-phase.ts @@ -1,5 +1,6 @@ import { updateUserInfo } from "#app/account"; -import BattleScene, { bypassLogin } from "#app/battle-scene"; +import { bypassLogin } from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { Phase } from "#app/phase"; import { handleTutorial, Tutorial } from "#app/tutorial"; import { Mode } from "#app/ui/ui"; @@ -11,8 +12,8 @@ import { UnavailablePhase } from "./unavailable-phase"; export class LoginPhase extends Phase { private showText: boolean; - constructor(scene: BattleScene, showText?: boolean) { - super(scene); + constructor(showText?: boolean) { + super(); this.showText = showText === undefined || !!showText; } @@ -22,50 +23,50 @@ export class LoginPhase extends Phase { const hasSession = !!Utils.getCookie(Utils.sessionIdKey); - this.scene.ui.setMode(Mode.LOADING, { buttonActions: []}); + globalScene.ui.setMode(Mode.LOADING, { buttonActions: []}); Utils.executeIf(bypassLogin || hasSession, updateUserInfo).then(response => { const success = response ? response[0] : false; const statusCode = response ? response[1] : null; if (!success) { if (!statusCode || statusCode === 400) { if (this.showText) { - this.scene.ui.showText(i18next.t("menu:logInOrCreateAccount")); + globalScene.ui.showText(i18next.t("menu:logInOrCreateAccount")); } - this.scene.playSound("menu_open"); + globalScene.playSound("menu_open"); const loadData = () => { updateUserInfo().then(success => { if (!success[0]) { Utils.removeCookie(Utils.sessionIdKey); - this.scene.reset(true, true); + globalScene.reset(true, true); return; } - this.scene.gameData.loadSystem().then(() => this.end()); + globalScene.gameData.loadSystem().then(() => this.end()); }); }; - this.scene.ui.setMode(Mode.LOGIN_FORM, { + globalScene.ui.setMode(Mode.LOGIN_FORM, { buttonActions: [ () => { - this.scene.ui.playSelect(); + globalScene.ui.playSelect(); loadData(); }, () => { - this.scene.playSound("menu_open"); - this.scene.ui.setMode(Mode.REGISTRATION_FORM, { + globalScene.playSound("menu_open"); + globalScene.ui.setMode(Mode.REGISTRATION_FORM, { buttonActions: [ () => { - this.scene.ui.playSelect(); + globalScene.ui.playSelect(); updateUserInfo().then(success => { if (!success[0]) { Utils.removeCookie(Utils.sessionIdKey); - this.scene.reset(true, true); + globalScene.reset(true, true); return; } this.end(); } ); }, () => { - this.scene.unshiftPhase(new LoginPhase(this.scene, false)); + globalScene.unshiftPhase(new LoginPhase(false)); this.end(); } ] @@ -85,19 +86,19 @@ export class LoginPhase extends Phase { }); } else if (statusCode === 401) { Utils.removeCookie(Utils.sessionIdKey); - this.scene.reset(true, true); + globalScene.reset(true, true); } else { - this.scene.unshiftPhase(new UnavailablePhase(this.scene)); + globalScene.unshiftPhase(new UnavailablePhase()); super.end(); } return null; } else { - this.scene.gameData.loadSystem().then(success => { + globalScene.gameData.loadSystem().then(success => { if (success || bypassLogin) { this.end(); } else { - this.scene.ui.setMode(Mode.MESSAGE); - this.scene.ui.showText(t("menu:failedToLoadSaveData")); + globalScene.ui.setMode(Mode.MESSAGE); + globalScene.ui.showText(t("menu:failedToLoadSaveData")); } }); } @@ -105,12 +106,12 @@ export class LoginPhase extends Phase { } end(): void { - this.scene.ui.setMode(Mode.MESSAGE); + globalScene.ui.setMode(Mode.MESSAGE); - if (!this.scene.gameData.gender) { - this.scene.unshiftPhase(new SelectGenderPhase(this.scene)); + if (!globalScene.gameData.gender) { + globalScene.unshiftPhase(new SelectGenderPhase()); } - handleTutorial(this.scene, Tutorial.Intro).then(() => super.end()); + handleTutorial(Tutorial.Intro).then(() => super.end()); } } diff --git a/src/phases/message-phase.ts b/src/phases/message-phase.ts index 1d953801178..9439d8286c3 100644 --- a/src/phases/message-phase.ts +++ b/src/phases/message-phase.ts @@ -1,4 +1,4 @@ -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { Phase } from "#app/phase"; export class MessagePhase extends Phase { @@ -8,8 +8,8 @@ export class MessagePhase extends Phase { private promptDelay: integer | null; private speaker?: string; - constructor(scene: BattleScene, text: string, callbackDelay?: integer | null, prompt?: boolean | null, promptDelay?: integer | null, speaker?: string) { - super(scene); + constructor(text: string, callbackDelay?: integer | null, prompt?: boolean | null, promptDelay?: integer | null, speaker?: string) { + super(); this.text = text; this.callbackDelay = callbackDelay!; // TODO: is this bang correct? @@ -23,20 +23,20 @@ export class MessagePhase extends Phase { if (this.text.indexOf("$") > -1) { const pageIndex = this.text.indexOf("$"); - this.scene.unshiftPhase(new MessagePhase(this.scene, this.text.slice(pageIndex + 1), this.callbackDelay, this.prompt, this.promptDelay, this.speaker)); + globalScene.unshiftPhase(new MessagePhase(this.text.slice(pageIndex + 1), this.callbackDelay, this.prompt, this.promptDelay, this.speaker)); this.text = this.text.slice(0, pageIndex).trim(); } if (this.speaker) { - this.scene.ui.showDialogue(this.text, this.speaker, null, () => this.end(), this.callbackDelay || (this.prompt ? 0 : 1500), this.promptDelay ?? 0); + globalScene.ui.showDialogue(this.text, this.speaker, null, () => this.end(), this.callbackDelay || (this.prompt ? 0 : 1500), this.promptDelay ?? 0); } else { - this.scene.ui.showText(this.text, null, () => this.end(), this.callbackDelay || (this.prompt ? 0 : 1500), this.prompt, this.promptDelay); + globalScene.ui.showText(this.text, null, () => this.end(), this.callbackDelay || (this.prompt ? 0 : 1500), this.prompt, this.promptDelay); } } end() { - if (this.scene.abilityBar.shown) { - this.scene.abilityBar.hide(); + if (globalScene.abilityBar.shown) { + globalScene.abilityBar.hide(); } super.end(); diff --git a/src/phases/modifier-reward-phase.ts b/src/phases/modifier-reward-phase.ts index 20a8366d9c6..1cdfd6b2721 100644 --- a/src/phases/modifier-reward-phase.ts +++ b/src/phases/modifier-reward-phase.ts @@ -1,13 +1,14 @@ -import BattleScene from "#app/battle-scene"; -import { ModifierType, ModifierTypeFunc, getModifierType } from "#app/modifier/modifier-type"; +import { globalScene } from "#app/global-scene"; +import type { ModifierType, ModifierTypeFunc } from "#app/modifier/modifier-type"; +import { getModifierType } from "#app/modifier/modifier-type"; import i18next from "i18next"; import { BattlePhase } from "./battle-phase"; export class ModifierRewardPhase extends BattlePhase { protected modifierType: ModifierType; - constructor(scene: BattleScene, modifierTypeFunc: ModifierTypeFunc) { - super(scene); + constructor(modifierTypeFunc: ModifierTypeFunc) { + super(); this.modifierType = getModifierType(modifierTypeFunc); } @@ -21,9 +22,9 @@ export class ModifierRewardPhase extends BattlePhase { doReward(): Promise { return new Promise(resolve => { const newModifier = this.modifierType.newModifier(); - this.scene.addModifier(newModifier).then(() => { - this.scene.playSound("item_fanfare"); - this.scene.ui.showText(i18next.t("battle:rewardGain", { modifierName: newModifier?.type.name }), null, () => resolve(), null, true); + globalScene.addModifier(newModifier).then(() => { + globalScene.playSound("item_fanfare"); + globalScene.ui.showText(i18next.t("battle:rewardGain", { modifierName: newModifier?.type.name }), null, () => resolve(), null, true); }); }); } diff --git a/src/phases/money-reward-phase.ts b/src/phases/money-reward-phase.ts index 2f0a4f7b990..70f0019227c 100644 --- a/src/phases/money-reward-phase.ts +++ b/src/phases/money-reward-phase.ts @@ -1,4 +1,4 @@ -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { ArenaTagType } from "#app/enums/arena-tag-type"; import { MoneyMultiplierModifier } from "#app/modifier/modifier"; import i18next from "i18next"; @@ -8,27 +8,27 @@ import { BattlePhase } from "./battle-phase"; export class MoneyRewardPhase extends BattlePhase { private moneyMultiplier: number; - constructor(scene: BattleScene, moneyMultiplier: number) { - super(scene); + constructor(moneyMultiplier: number) { + super(); this.moneyMultiplier = moneyMultiplier; } start() { - const moneyAmount = new Utils.IntegerHolder(this.scene.getWaveMoneyAmount(this.moneyMultiplier)); + const moneyAmount = new Utils.IntegerHolder(globalScene.getWaveMoneyAmount(this.moneyMultiplier)); - this.scene.applyModifiers(MoneyMultiplierModifier, true, moneyAmount); + globalScene.applyModifiers(MoneyMultiplierModifier, true, moneyAmount); - if (this.scene.arena.getTag(ArenaTagType.HAPPY_HOUR)) { + if (globalScene.arena.getTag(ArenaTagType.HAPPY_HOUR)) { moneyAmount.value *= 2; } - this.scene.addMoney(moneyAmount.value); + globalScene.addMoney(moneyAmount.value); const userLocale = navigator.language || "en-US"; const formattedMoneyAmount = moneyAmount.value.toLocaleString(userLocale); const message = i18next.t("battle:moneyWon", { moneyAmount: formattedMoneyAmount }); - this.scene.ui.showText(message, null, () => this.end(), null, true); + globalScene.ui.showText(message, null, () => this.end(), null, true); } } diff --git a/src/phases/move-anim-test-phase.ts b/src/phases/move-anim-test-phase.ts index e4b04ce5de6..588fc402357 100644 --- a/src/phases/move-anim-test-phase.ts +++ b/src/phases/move-anim-test-phase.ts @@ -1,4 +1,4 @@ -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { initMoveAnim, loadMoveAnimAssets, MoveAnim } from "#app/data/battle-anims"; import { allMoves, SelfStatusMove } from "#app/data/move"; import { Moves } from "#app/enums/moves"; @@ -8,8 +8,8 @@ import { BattlePhase } from "./battle-phase"; export class MoveAnimTestPhase extends BattlePhase { private moveQueue: Moves[]; - constructor(scene: BattleScene, moveQueue?: Moves[]) { - super(scene); + constructor(moveQueue?: Moves[]) { + super(); this.moveQueue = moveQueue || Utils.getEnumValues(Moves).slice(1); } @@ -28,12 +28,12 @@ export class MoveAnimTestPhase extends BattlePhase { console.log(Moves[moveId]); } - initMoveAnim(this.scene, moveId).then(() => { - loadMoveAnimAssets(this.scene, [ moveId ], true) + initMoveAnim(moveId).then(() => { + loadMoveAnimAssets([ moveId ], true) .then(() => { - const user = player ? this.scene.getPlayerPokemon()! : this.scene.getEnemyPokemon()!; - const target = (player !== (allMoves[moveId] instanceof SelfStatusMove)) ? this.scene.getEnemyPokemon()! : this.scene.getPlayerPokemon()!; - new MoveAnim(moveId, user, target.getBattlerIndex()).play(this.scene, allMoves[moveId].hitsSubstitute(user, target), () => { // TODO: are the bangs correct here? + const user = player ? globalScene.getPlayerPokemon()! : globalScene.getEnemyPokemon()!; + const target = (player !== (allMoves[moveId] instanceof SelfStatusMove)) ? globalScene.getEnemyPokemon()! : globalScene.getPlayerPokemon()!; + new MoveAnim(moveId, user, target.getBattlerIndex()).play(allMoves[moveId].hitsSubstitute(user, target), () => { // TODO: are the bangs correct here? if (player) { this.playMoveAnim(moveQueue, false); } else { diff --git a/src/phases/move-charge-phase.ts b/src/phases/move-charge-phase.ts index d1dc340b81b..b0925f1f6cb 100644 --- a/src/phases/move-charge-phase.ts +++ b/src/phases/move-charge-phase.ts @@ -1,8 +1,10 @@ -import BattleScene from "#app/battle-scene"; -import { BattlerIndex } from "#app/battle"; +import { globalScene } from "#app/global-scene"; +import type { BattlerIndex } from "#app/battle"; import { MoveChargeAnim } from "#app/data/battle-anims"; import { applyMoveChargeAttrs, MoveEffectAttr, InstantChargeAttr } from "#app/data/move"; -import Pokemon, { MoveResult, PokemonMove } from "#app/field/pokemon"; +import type { PokemonMove } from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; +import { MoveResult } from "#app/field/pokemon"; import { BooleanHolder } from "#app/utils"; import { MovePhase } from "#app/phases/move-phase"; import { PokemonPhase } from "#app/phases/pokemon-phase"; @@ -19,8 +21,8 @@ export class MoveChargePhase extends PokemonPhase { /** The field index targeted by the move (Charging moves assume single target) */ public targetIndex: BattlerIndex; - constructor(scene: BattleScene, battlerIndex: BattlerIndex, targetIndex: BattlerIndex, move: PokemonMove) { - super(scene, battlerIndex); + constructor(battlerIndex: BattlerIndex, targetIndex: BattlerIndex, move: PokemonMove) { + super(battlerIndex); this.move = move; this.targetIndex = targetIndex; } @@ -39,7 +41,7 @@ export class MoveChargePhase extends PokemonPhase { return super.end(); } - new MoveChargeAnim(move.chargeAnim, move.id, user).play(this.scene, false, () => { + new MoveChargeAnim(move.chargeAnim, move.id, user).play(false, () => { move.showChargeText(user, target); applyMoveChargeAttrs(MoveEffectAttr, user, target, move).then(() => { @@ -61,9 +63,9 @@ export class MoveChargePhase extends PokemonPhase { if (instantCharge.value) { // this MoveEndPhase will be duplicated by the queued MovePhase if not removed - this.scene.tryRemovePhase((phase) => phase instanceof MoveEndPhase && phase.getPokemon() === user); + globalScene.tryRemovePhase((phase) => phase instanceof MoveEndPhase && phase.getPokemon() === user); // queue a new MovePhase for this move's attack phase - this.scene.unshiftPhase(new MovePhase(this.scene, user, [ this.targetIndex ], this.move, false)); + globalScene.unshiftPhase(new MovePhase(user, [ this.targetIndex ], this.move, false)); } else { user.getMoveQueue().push({ move: move.id, targets: [ this.targetIndex ]}); } @@ -75,10 +77,10 @@ export class MoveChargePhase extends PokemonPhase { } public getUserPokemon(): Pokemon { - return (this.player ? this.scene.getPlayerField() : this.scene.getEnemyField())[this.fieldIndex]; + return (this.player ? globalScene.getPlayerField() : globalScene.getEnemyField())[this.fieldIndex]; } public getTargetPokemon(): Pokemon | undefined { - return this.scene.getField(true).find((p) => this.targetIndex === p.getBattlerIndex()); + return globalScene.getField(true).find((p) => this.targetIndex === p.getBattlerIndex()); } } diff --git a/src/phases/move-effect-phase.ts b/src/phases/move-effect-phase.ts index d08fc46e563..fff8caf38b5 100644 --- a/src/phases/move-effect-phase.ts +++ b/src/phases/move-effect-phase.ts @@ -1,5 +1,5 @@ import { BattlerIndex } from "#app/battle"; -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { AddSecondStrikeAbAttr, AlwaysHitAbAttr, @@ -23,6 +23,8 @@ import { SemiInvulnerableTag, SubstituteTag, } from "#app/data/battler-tags"; +import type { + MoveAttr } from "#app/data/move"; import { applyFilteredMoveAttrs, applyMoveAttrs, @@ -31,7 +33,6 @@ import { FlinchAttr, HitsTagAttr, MissEffectAttr, - MoveAttr, MoveCategory, MoveEffectAttr, MoveEffectTrigger, @@ -46,7 +47,9 @@ import { } from "#app/data/move"; import { SpeciesFormChangePostMoveTrigger } from "#app/data/pokemon-forms"; import { Type } from "#enums/type"; -import Pokemon, { HitResult, MoveResult, PokemonMove } from "#app/field/pokemon"; +import type { PokemonMove } from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; +import { HitResult, MoveResult } from "#app/field/pokemon"; import { getPokemonNameWithAffix } from "#app/messages"; import { ContactHeldItemTransferChanceModifier, @@ -58,15 +61,15 @@ import { import { PokemonPhase } from "#app/phases/pokemon-phase"; import { BooleanHolder, executeIf, isNullOrUndefined, NumberHolder } from "#app/utils"; import { BattlerTagType } from "#enums/battler-tag-type"; -import { Moves } from "#enums/moves"; +import type { Moves } from "#enums/moves"; import i18next from "i18next"; export class MoveEffectPhase extends PokemonPhase { public move: PokemonMove; protected targets: BattlerIndex[]; - constructor(scene: BattleScene, battlerIndex: BattlerIndex, targets: BattlerIndex[], move: PokemonMove) { - super(scene, battlerIndex); + constructor(battlerIndex: BattlerIndex, targets: BattlerIndex[], move: PokemonMove) { + super(battlerIndex); this.move = move; /** * In double battles, if the right Pokemon selects a spread move and the left Pokemon dies @@ -149,7 +152,7 @@ export class MoveEffectPhase extends PokemonPhase { // If Parental Bond is applicable, add another hit applyPreAttackAbAttrs(AddSecondStrikeAbAttr, user, null, move, false, hitCount, null); // If Multi-Lens is applicable, add hits equal to the number of held Multi-Lenses - this.scene.applyModifiers(PokemonMultiHitModifier, user.isPlayer(), user, move.id, hitCount); + globalScene.applyModifiers(PokemonMultiHitModifier, user.isPlayer(), user, move.id, hitCount); // Set the user's relevant turnData fields to reflect the final hit count user.turnData.hitCount = hitCount.value; user.turnData.hitsLeft = hitCount.value; @@ -182,11 +185,11 @@ export class MoveEffectPhase extends PokemonPhase { if (!hasActiveTargets || (!move.hasAttr(VariableTargetAttr) && !move.isMultiTarget() && !targetHitChecks[this.targets[0]] && !targets[0].getTag(ProtectedTag) && !isImmune)) { this.stopMultiHit(); if (hasActiveTargets) { - this.scene.queueMessage(i18next.t("battle:attackMissed", { pokemonNameWithAffix: this.getFirstTarget() ? getPokemonNameWithAffix(this.getFirstTarget()!) : "" })); + globalScene.queueMessage(i18next.t("battle:attackMissed", { pokemonNameWithAffix: this.getFirstTarget() ? getPokemonNameWithAffix(this.getFirstTarget()!) : "" })); moveHistoryEntry.result = MoveResult.MISS; applyMoveAttrs(MissEffectAttr, user, null, this.move.getMove()); } else { - this.scene.queueMessage(i18next.t("battle:attackFailed")); + globalScene.queueMessage(i18next.t("battle:attackFailed")); moveHistoryEntry.result = MoveResult.FAIL; } user.pushMoveHistory(moveHistoryEntry); @@ -196,9 +199,9 @@ export class MoveEffectPhase extends PokemonPhase { /** All move effect attributes are chained together in this array to be applied asynchronously. */ const applyAttrs: Promise[] = []; - const playOnEmptyField = this.scene.currentBattle?.mysteryEncounter?.hasBattleAnimationsWithoutTargets ?? false; + const playOnEmptyField = globalScene.currentBattle?.mysteryEncounter?.hasBattleAnimationsWithoutTargets ?? false; // Move animation only needs one target - new MoveAnim(move.id as Moves, user, this.getFirstTarget()!.getBattlerIndex(), playOnEmptyField).play(this.scene, move.hitsSubstitute(user, this.getFirstTarget()!), () => { + new MoveAnim(move.id as Moves, user, this.getFirstTarget()!.getBattlerIndex(), playOnEmptyField).play(move.hitsSubstitute(user, this.getFirstTarget()!), () => { /** Has the move successfully hit a target (for damage) yet? */ let hasHit: boolean = false; for (const target of targets) { @@ -215,7 +218,7 @@ export class MoveEffectPhase extends PokemonPhase { const bypassIgnoreProtect = new BooleanHolder(false); /** If the move is not targeting a Pokemon on the user's side, try to apply conditional protection effects */ if (!this.move.getMove().isAllyTarget()) { - this.scene.arena.applyTagsForSide(ConditionalProtectTag, targetSide, false, hasConditionalProtectApplied, user, target, move.id, bypassIgnoreProtect); + globalScene.arena.applyTagsForSide(ConditionalProtectTag, targetSide, false, hasConditionalProtectApplied, user, target, move.id, bypassIgnoreProtect); } /** Is the target protected by Protect, etc. or a relevant conditional protection effect? */ @@ -234,7 +237,7 @@ export class MoveEffectPhase extends PokemonPhase { && !target.getTag(SemiInvulnerableTag); /** Is the target hidden by the effects of its Commander ability? */ - const isCommanding = this.scene.currentBattle.double && target.getAlly()?.getTag(BattlerTagType.COMMANDED)?.getSourcePokemon(this.scene) === target; + const isCommanding = globalScene.currentBattle.double && target.getAlly()?.getTag(BattlerTagType.COMMANDED)?.getSourcePokemon() === target; /** * If the move missed a target, stop all future hits against that target @@ -243,7 +246,7 @@ export class MoveEffectPhase extends PokemonPhase { if (target.switchOutStatus || isCommanding || (!isImmune && !isProtected && !targetHitChecks[target.getBattlerIndex()])) { this.stopMultiHit(target); if (!target.switchOutStatus) { - this.scene.queueMessage(i18next.t("battle:attackMissed", { pokemonNameWithAffix: getPokemonNameWithAffix(target) })); + globalScene.queueMessage(i18next.t("battle:attackMissed", { pokemonNameWithAffix: getPokemonNameWithAffix(target) })); } if (moveHistoryEntry.result === MoveResult.PENDING) { moveHistoryEntry.result = MoveResult.MISS; @@ -312,7 +315,7 @@ export class MoveEffectPhase extends PokemonPhase { * (see Relic Song's interaction with Parental Bond when used by Meloetta). */ if (lastHit) { - this.scene.triggerPokemonFormChange(user, SpeciesFormChangePostMoveTrigger); + globalScene.triggerPokemonFormChange(user, SpeciesFormChangePostMoveTrigger); /** * Multi-Lens, Multi Hit move and Parental Bond check for PostDamageAbAttr * other damage source are calculated in damageAndUpdate in pokemon.ts @@ -404,16 +407,16 @@ export class MoveEffectPhase extends PokemonPhase { */ if (user) { if (user.turnData.hitsLeft && --user.turnData.hitsLeft >= 1 && this.getFirstTarget()?.isActive()) { - this.scene.unshiftPhase(this.getNewHitPhase()); + globalScene.unshiftPhase(this.getNewHitPhase()); } else { // Queue message for number of hits made by multi-move // If multi-hit attack only hits once, still want to render a message const hitsTotal = user.turnData.hitCount - Math.max(user.turnData.hitsLeft, 0); if (hitsTotal > 1 || (user.turnData.hitsLeft && user.turnData.hitsLeft > 0)) { // If there are multiple hits, or if there are hits of the multi-hit move left - this.scene.queueMessage(i18next.t("battle:attackHitsCount", { count: hitsTotal })); + globalScene.queueMessage(i18next.t("battle:attackHitsCount", { count: hitsTotal })); } - this.scene.applyModifiers(HitHealModifier, this.player, user); + globalScene.applyModifiers(HitHealModifier, this.player, user); // Clear all cached move effectiveness values among targets this.getTargets().forEach((target) => target.turnData.moveEffectiveness = null); } @@ -492,7 +495,7 @@ export class MoveEffectPhase extends PokemonPhase { if (!this.move.getMove().hitsSubstitute(user, target)) { if (!user.isPlayer() && this.move.getMove() instanceof AttackMove) { - user.scene.applyShuffledModifiers(this.scene, EnemyAttackStatusEffectChanceModifier, false, target); + globalScene.applyShuffledModifiers(EnemyAttackStatusEffectChanceModifier, false, target); } target.lapseTags(BattlerTagLapseType.AFTER_HIT); @@ -521,7 +524,7 @@ export class MoveEffectPhase extends PokemonPhase { applyPostAttackAbAttrs(PostAttackAbAttr, user, target, this.move.getMove(), hitResult)).then(() => { // Item Stealing Effects if (this.move.getMove() instanceof AttackMove) { - this.scene.applyModifiers(ContactHeldItemTransferChanceModifier, this.player, user, target); + globalScene.applyModifiers(ContactHeldItemTransferChanceModifier, this.player, user, target); } }) ); @@ -542,7 +545,7 @@ export class MoveEffectPhase extends PokemonPhase { if (dealsDamage && !target.hasAbilityWithAttr(IgnoreMoveEffectsAbAttr) && !this.move.getMove().hitsSubstitute(user, target)) { const flinched = new BooleanHolder(false); - user.scene.applyModifiers(FlinchChanceModifier, user.isPlayer(), user, flinched); + globalScene.applyModifiers(FlinchChanceModifier, user.isPlayer(), user, flinched); if (flinched.value) { target.addTag(BattlerTagType.FLINCHED, undefined, this.move.moveId, user.id); } @@ -616,14 +619,14 @@ export class MoveEffectPhase extends PokemonPhase { /** @returns The {@linkcode Pokemon} using this phase's invoked move */ public getUserPokemon(): Pokemon | null { if (this.battlerIndex > BattlerIndex.ENEMY_2) { - return this.scene.getPokemonById(this.battlerIndex); + return globalScene.getPokemonById(this.battlerIndex); } - return (this.player ? this.scene.getPlayerField() : this.scene.getEnemyField())[this.fieldIndex]; + return (this.player ? globalScene.getPlayerField() : globalScene.getEnemyField())[this.fieldIndex]; } /** @returns An array of all {@linkcode Pokemon} targeted by this phase's invoked move */ public getTargets(): Pokemon[] { - return this.scene.getField(true).filter(p => this.targets.indexOf(p.getBattlerIndex()) > -1); + return globalScene.getField(true).filter(p => this.targets.indexOf(p.getBattlerIndex()) > -1); } /** @returns The first target of this phase's invoked move */ @@ -665,6 +668,6 @@ export class MoveEffectPhase extends PokemonPhase { /** @returns A new `MoveEffectPhase` with the same properties as this phase */ protected getNewHitPhase(): MoveEffectPhase { - return new MoveEffectPhase(this.scene, this.battlerIndex, this.targets, this.move); + return new MoveEffectPhase(this.battlerIndex, this.targets, this.move); } } diff --git a/src/phases/move-end-phase.ts b/src/phases/move-end-phase.ts index e03f2ec14b0..428dacd639a 100644 --- a/src/phases/move-end-phase.ts +++ b/src/phases/move-end-phase.ts @@ -1,11 +1,11 @@ -import BattleScene from "#app/battle-scene"; -import { BattlerIndex } from "#app/battle"; +import { globalScene } from "#app/global-scene"; +import type { BattlerIndex } from "#app/battle"; import { BattlerTagLapseType } from "#app/data/battler-tags"; import { PokemonPhase } from "./pokemon-phase"; export class MoveEndPhase extends PokemonPhase { - constructor(scene: BattleScene, battlerIndex: BattlerIndex) { - super(scene, battlerIndex); + constructor(battlerIndex: BattlerIndex) { + super(battlerIndex); } start() { @@ -16,7 +16,7 @@ export class MoveEndPhase extends PokemonPhase { pokemon.lapseTags(BattlerTagLapseType.AFTER_MOVE); } - this.scene.arena.setIgnoreAbilities(false); + globalScene.arena.setIgnoreAbilities(false); this.end(); } diff --git a/src/phases/move-header-phase.ts b/src/phases/move-header-phase.ts index c307ff0be6e..6a982646b50 100644 --- a/src/phases/move-header-phase.ts +++ b/src/phases/move-header-phase.ts @@ -1,14 +1,14 @@ -import BattleScene from "#app/battle-scene"; import { applyMoveAttrs, MoveHeaderAttr } from "#app/data/move"; -import Pokemon, { PokemonMove } from "#app/field/pokemon"; +import type { PokemonMove } from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; import { BattlePhase } from "./battle-phase"; export class MoveHeaderPhase extends BattlePhase { public pokemon: Pokemon; public move: PokemonMove; - constructor(scene: BattleScene, pokemon: Pokemon, move: PokemonMove) { - super(scene); + constructor(pokemon: Pokemon, move: PokemonMove) { + super(); this.pokemon = pokemon; this.move = move; diff --git a/src/phases/move-phase.ts b/src/phases/move-phase.ts index 089386bee00..0673ad3effe 100644 --- a/src/phases/move-phase.ts +++ b/src/phases/move-phase.ts @@ -1,5 +1,5 @@ import { BattlerIndex } from "#app/battle"; -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { applyAbAttrs, applyPostMoveUsedAbAttrs, @@ -11,7 +11,7 @@ import { RedirectMoveAbAttr, ReduceStatusEffectDurationAbAttr } from "#app/data/ability"; -import { DelayedAttackTag } from "#app/data/arena-tag"; +import type { DelayedAttackTag } from "#app/data/arena-tag"; import { CommonAnim } from "#app/data/battle-anims"; import { BattlerTagLapseType, CenterOfAttentionTag } from "#app/data/battler-tags"; import { @@ -31,7 +31,9 @@ import { getStatusEffectActivationText, getStatusEffectHealText } from "#app/dat import { Type } from "#enums/type"; import { getTerrainBlockMessage } from "#app/data/weather"; import { MoveUsedEvent } from "#app/events/battle-scene"; -import Pokemon, { MoveResult, PokemonMove } from "#app/field/pokemon"; +import type { PokemonMove } from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; +import { MoveResult } from "#app/field/pokemon"; import { getPokemonNameWithAffix } from "#app/messages"; import Overrides from "#app/overrides"; import { BattlePhase } from "#app/phases/battle-phase"; @@ -85,8 +87,8 @@ export class MovePhase extends BattlePhase { * @param followUp Indicates that the move being uses is a "follow-up" - for example, a move being used by Metronome or Dancer. * Follow-ups bypass a few failure conditions, including flinches, sleep/paralysis/freeze and volatile status checks, etc. */ - constructor(scene: BattleScene, pokemon: Pokemon, targets: BattlerIndex[], move: PokemonMove, followUp: boolean = false, ignorePp: boolean = false) { - super(scene); + constructor(pokemon: Pokemon, targets: BattlerIndex[], move: PokemonMove, followUp: boolean = false, ignorePp: boolean = false) { + super(); this.pokemon = pokemon; this.targets = targets; @@ -140,7 +142,7 @@ export class MovePhase extends BattlePhase { // Check move to see if arena.ignoreAbilities should be true. if (!this.followUp) { if (this.move.getMove().checkFlag(MoveFlags.IGNORE_ABILITIES, this.pokemon, null)) { - this.scene.arena.setIgnoreAbilities(true, this.pokemon.getBattlerIndex()); + globalScene.arena.setIgnoreAbilities(true, this.pokemon.getBattlerIndex()); } } @@ -180,7 +182,7 @@ export class MovePhase extends BattlePhase { } public getActiveTargetPokemon(): Pokemon[] { - return this.scene.getField(true).filter(p => this.targets.includes(p.getBattlerIndex())); + return globalScene.getField(true).filter(p => this.targets.includes(p.getBattlerIndex())); } /** @@ -219,10 +221,10 @@ export class MovePhase extends BattlePhase { if (activated) { this.cancel(); - this.scene.queueMessage(getStatusEffectActivationText(this.pokemon.status.effect, getPokemonNameWithAffix(this.pokemon))); - this.scene.unshiftPhase(new CommonAnimPhase(this.scene, this.pokemon.getBattlerIndex(), undefined, CommonAnim.POISON + (this.pokemon.status.effect - 1))); + globalScene.queueMessage(getStatusEffectActivationText(this.pokemon.status.effect, getPokemonNameWithAffix(this.pokemon))); + globalScene.unshiftPhase(new CommonAnimPhase(this.pokemon.getBattlerIndex(), undefined, CommonAnim.POISON + (this.pokemon.status.effect - 1))); } else if (healed) { - this.scene.queueMessage(getStatusEffectHealText(this.pokemon.status.effect, getPokemonNameWithAffix(this.pokemon))); + globalScene.queueMessage(getStatusEffectHealText(this.pokemon.status.effect, getPokemonNameWithAffix(this.pokemon))); this.pokemon.resetStatus(); this.pokemon.updateInfo(); } @@ -247,13 +249,13 @@ export class MovePhase extends BattlePhase { const moveQueue = this.pokemon.getMoveQueue(); // form changes happen even before we know that the move wll execute. - this.scene.triggerPokemonFormChange(this.pokemon, SpeciesFormChangePreMoveTrigger); + globalScene.triggerPokemonFormChange(this.pokemon, SpeciesFormChangePreMoveTrigger); const isDelayedAttack = this.move.getMove().hasAttr(DelayedAttackAttr); if (isDelayedAttack) { // Check the player side arena if future sight is active - const futureSightTags = this.scene.arena.findTags(t => t.tagType === ArenaTagType.FUTURE_SIGHT); - const doomDesireTags = this.scene.arena.findTags(t => t.tagType === ArenaTagType.DOOM_DESIRE); + const futureSightTags = globalScene.arena.findTags(t => t.tagType === ArenaTagType.FUTURE_SIGHT); + const doomDesireTags = globalScene.arena.findTags(t => t.tagType === ArenaTagType.DOOM_DESIRE); let fail = false; const currentTargetIndex = targets[0].getBattlerIndex(); for (const tag of futureSightTags) { @@ -291,12 +293,12 @@ export class MovePhase extends BattlePhase { const ppUsed = 1 + this.getPpIncreaseFromPressure(targets); this.move.usePp(ppUsed); - this.scene.eventTarget.dispatchEvent(new MoveUsedEvent(this.pokemon?.id, this.move.getMove(), this.move.ppUsed)); + globalScene.eventTarget.dispatchEvent(new MoveUsedEvent(this.pokemon?.id, this.move.getMove(), this.move.ppUsed)); } // Update the battle's "last move" pointer, unless we're currently mimicking a move. if (!allMoves[this.move.moveId].hasAttr(CopyMoveAttr)) { - this.scene.currentBattle.lastMove = this.move.moveId; + globalScene.currentBattle.lastMove = this.move.moveId; } /** @@ -317,8 +319,8 @@ export class MovePhase extends BattlePhase { * TODO: is this sustainable? */ const passesConditions = move.applyConditions(this.pokemon, targets[0], move); - const failedDueToWeather: boolean = this.scene.arena.isMoveWeatherCancelled(this.pokemon, move); - const failedDueToTerrain: boolean = this.scene.arena.isMoveTerrainCancelled(this.pokemon, this.targets, move); + const failedDueToWeather: boolean = globalScene.arena.isMoveWeatherCancelled(this.pokemon, move); + const failedDueToTerrain: boolean = globalScene.arena.isMoveTerrainCancelled(this.pokemon, this.targets, move); const success = passesConditions && !failedDueToWeather && !failedDueToTerrain; @@ -330,7 +332,7 @@ export class MovePhase extends BattlePhase { */ if (success) { applyPreAttackAbAttrs(PokemonTypeChangeAbAttr, this.pokemon, null, this.move.getMove()); - this.scene.unshiftPhase(new MoveEffectPhase(this.scene, this.pokemon.getBattlerIndex(), this.targets, this.move)); + globalScene.unshiftPhase(new MoveEffectPhase(this.pokemon.getBattlerIndex(), this.targets, this.move)); } else { if ([ Moves.ROAR, Moves.WHIRLWIND, Moves.TRICK_OR_TREAT, Moves.FORESTS_CURSE ].includes(this.move.moveId)) { @@ -345,7 +347,7 @@ export class MovePhase extends BattlePhase { if (failureMessage) { failedText = failureMessage; } else if (failedDueToTerrain) { - failedText = getTerrainBlockMessage(this.pokemon, this.scene.arena.getTerrainType()); + failedText = getTerrainBlockMessage(this.pokemon, globalScene.arena.getTerrainType()); } this.showFailedText(failedText); @@ -357,7 +359,7 @@ export class MovePhase extends BattlePhase { // Handle Dancer, which triggers immediately after a move is used (rather than waiting on `this.end()`). // Note that the `!this.followUp` check here prevents an infinite Dancer loop. if (this.move.getMove().hasFlag(MoveFlags.DANCE_MOVE) && !this.followUp) { - this.scene.getField(true).forEach(pokemon => { + globalScene.getField(true).forEach(pokemon => { applyPostMoveUsedAbAttrs(PostMoveUsedAbAttr, pokemon, this.move, this.pokemon, this.targets); }); } @@ -373,7 +375,7 @@ export class MovePhase extends BattlePhase { applyPreAttackAbAttrs(PokemonTypeChangeAbAttr, this.pokemon, null, this.move.getMove()); this.showMoveText(); - this.scene.unshiftPhase(new MoveChargePhase(this.scene, this.pokemon.getBattlerIndex(), this.targets[0], this.move)); + globalScene.unshiftPhase(new MoveChargePhase(this.pokemon.getBattlerIndex(), this.targets[0], this.move)); } else { this.pokemon.pushMoveHistory({ move: this.move.moveId, targets: this.targets, result: MoveResult.FAIL, virtual: this.move.virtual }); @@ -392,7 +394,7 @@ export class MovePhase extends BattlePhase { */ public end(): void { if (!this.followUp && this.canMove()) { - this.scene.unshiftPhase(new MoveEndPhase(this.scene, this.pokemon.getBattlerIndex())); + globalScene.unshiftPhase(new MoveEndPhase(this.pokemon.getBattlerIndex())); } super.end(); @@ -420,7 +422,7 @@ export class MovePhase extends BattlePhase { const redirectTarget = new NumberHolder(currentTarget); // check move redirection abilities of every pokemon *except* the user. - this.scene.getField(true).filter(p => p !== this.pokemon).forEach(p => applyAbAttrs(RedirectMoveAbAttr, p, null, false, this.move.moveId, redirectTarget)); + globalScene.getField(true).filter(p => p !== this.pokemon).forEach(p => applyAbAttrs(RedirectMoveAbAttr, p, null, false, this.move.moveId, redirectTarget)); /** `true` if an Ability is responsible for redirecting the move to another target; `false` otherwise */ let redirectedByAbility = (currentTarget !== redirectTarget.value); @@ -447,7 +449,7 @@ export class MovePhase extends BattlePhase { if (this.pokemon.hasAbilityWithAttr(BlockRedirectAbAttr)) { redirectTarget.value = currentTarget; - this.scene.unshiftPhase(new ShowAbilityPhase(this.scene, this.pokemon.getBattlerIndex(), this.pokemon.getPassiveAbility().hasAttr(BlockRedirectAbAttr))); + globalScene.unshiftPhase(new ShowAbilityPhase(this.pokemon.getBattlerIndex(), this.pokemon.getPassiveAbility().hasAttr(BlockRedirectAbAttr))); } this.targets[0] = redirectTarget.value; @@ -470,9 +472,9 @@ export class MovePhase extends BattlePhase { // account for metal burst and comeuppance hitting remaining targets in double battles // counterattack will redirect to remaining ally if original attacker faints - if (this.scene.currentBattle.double && this.move.getMove().hasFlag(MoveFlags.REDIRECT_COUNTER)) { - if (this.scene.getField()[this.targets[0]].hp === 0) { - const opposingField = this.pokemon.isPlayer() ? this.scene.getEnemyField() : this.scene.getPlayerField(); + if (globalScene.currentBattle.double && this.move.getMove().hasFlag(MoveFlags.REDIRECT_COUNTER)) { + if (globalScene.getField()[this.targets[0]].hp === 0) { + const opposingField = this.pokemon.isPlayer() ? globalScene.getEnemyField() : globalScene.getPlayerField(); this.targets[0] = opposingField.find(p => p.hp > 0)?.getBattlerIndex() ?? BattlerIndex.ATTACKER; } } @@ -509,7 +511,7 @@ export class MovePhase extends BattlePhase { this.move.usePp(); } - this.scene.eventTarget.dispatchEvent(new MoveUsedEvent(this.pokemon?.id, this.move.getMove(), ppUsed)); + globalScene.eventTarget.dispatchEvent(new MoveUsedEvent(this.pokemon?.id, this.move.getMove(), ppUsed)); } if (this.cancelled && this.pokemon.summonData?.tags?.find(t => t.tagType === BattlerTagType.FRENZY)) { @@ -538,7 +540,7 @@ export class MovePhase extends BattlePhase { return; } - this.scene.queueMessage(i18next.t("battle:useMove", { + globalScene.queueMessage(i18next.t("battle:useMove", { pokemonNameWithAffix: getPokemonNameWithAffix(this.pokemon), moveName: this.move.getName() }), 500); @@ -546,6 +548,6 @@ export class MovePhase extends BattlePhase { } public showFailedText(failedText?: string): void { - this.scene.queueMessage(failedText ?? i18next.t("battle:attackFailed")); + globalScene.queueMessage(failedText ?? i18next.t("battle:attackFailed")); } } diff --git a/src/phases/mystery-encounter-phases.ts b/src/phases/mystery-encounter-phases.ts index 2d1c3c4ae31..be07dbfc196 100644 --- a/src/phases/mystery-encounter-phases.ts +++ b/src/phases/mystery-encounter-phases.ts @@ -1,5 +1,6 @@ import { BattlerTagLapseType } from "#app/data/battler-tags"; -import MysteryEncounterOption, { OptionPhaseCallback } from "#app/data/mystery-encounters/mystery-encounter-option"; +import type { OptionPhaseCallback } from "#app/data/mystery-encounters/mystery-encounter-option"; +import type MysteryEncounterOption from "#app/data/mystery-encounters/mystery-encounter-option"; import { SeenEncounterData } from "#app/data/mystery-encounters/mystery-encounter-save-data"; import { getEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; import { CheckSwitchPhase } from "#app/phases/check-switch-phase"; @@ -17,9 +18,10 @@ import { BattlerTagType } from "#enums/battler-tag-type"; import { MysteryEncounterMode } from "#enums/mystery-encounter-mode"; import { SwitchType } from "#enums/switch-type"; import i18next from "i18next"; -import BattleScene from "../battle-scene"; +import { globalScene } from "#app/global-scene"; import { getCharVariantFromDialogue } from "../data/dialogue"; -import { OptionSelectSettings, transitionMysteryEncounterIntroVisuals } from "../data/mystery-encounters/utils/encounter-phase-utils"; +import type { OptionSelectSettings } from "../data/mystery-encounters/utils/encounter-phase-utils"; +import { transitionMysteryEncounterIntroVisuals } from "../data/mystery-encounters/utils/encounter-phase-utils"; import { TrainerSlot } from "../data/trainer-config"; import { IvScannerModifier } from "../modifier/modifier"; import { Phase } from "../phase"; @@ -42,11 +44,10 @@ export class MysteryEncounterPhase extends Phase { /** * Mostly useful for having repeated queries during a single encounter, where the queries and options may differ each time - * @param scene * @param optionSelectSettings allows overriding the typical options of an encounter with new ones */ - constructor(scene: BattleScene, optionSelectSettings?: OptionSelectSettings) { - super(scene); + constructor(optionSelectSettings?: OptionSelectSettings) { + super(); this.optionSelectSettings = optionSelectSettings; } @@ -57,20 +58,20 @@ export class MysteryEncounterPhase extends Phase { super.start(); // Clears out queued phases that are part of standard battle - this.scene.clearPhaseQueue(); - this.scene.clearPhaseQueueSplice(); + globalScene.clearPhaseQueue(); + globalScene.clearPhaseQueueSplice(); - const encounter = this.scene.currentBattle.mysteryEncounter!; - encounter.updateSeedOffset(this.scene); + const encounter = globalScene.currentBattle.mysteryEncounter!; + encounter.updateSeedOffset(); if (!this.optionSelectSettings) { // Sets flag that ME was encountered, only if this is not a followup option select phase // Can be used in later MEs to check for requirements to spawn, run history, etc. - this.scene.mysteryEncounterSaveData.encounteredEvents.push(new SeenEncounterData(encounter.encounterType, encounter.encounterTier, this.scene.currentBattle.waveIndex)); + globalScene.mysteryEncounterSaveData.encounteredEvents.push(new SeenEncounterData(encounter.encounterType, encounter.encounterTier, globalScene.currentBattle.waveIndex)); } // Initiates encounter dialogue window and option select - this.scene.ui.setMode(Mode.MYSTERY_ENCOUNTER, this.optionSelectSettings); + globalScene.ui.setMode(Mode.MYSTERY_ENCOUNTER, this.optionSelectSettings); } /** @@ -80,13 +81,13 @@ export class MysteryEncounterPhase extends Phase { */ handleOptionSelect(option: MysteryEncounterOption, index: number): boolean { // Set option selected flag - this.scene.currentBattle.mysteryEncounter!.selectedOption = option; + globalScene.currentBattle.mysteryEncounter!.selectedOption = option; if (!this.optionSelectSettings) { // Saves the selected option in the ME save data, only if this is not a followup option select phase // Can be used for analytics purposes to track what options are popular on certain encounters - const encounterSaveData = this.scene.mysteryEncounterSaveData.encounteredEvents[this.scene.mysteryEncounterSaveData.encounteredEvents.length - 1]; - if (encounterSaveData.type === this.scene.currentBattle.mysteryEncounter?.encounterType) { + const encounterSaveData = globalScene.mysteryEncounterSaveData.encounteredEvents[globalScene.mysteryEncounterSaveData.encounteredEvents.length - 1]; + if (encounterSaveData.type === globalScene.currentBattle.mysteryEncounter?.encounterType) { encounterSaveData.selectedOption = index; } } @@ -96,17 +97,17 @@ export class MysteryEncounterPhase extends Phase { } // Populate dialogue tokens for option requirements - this.scene.currentBattle.mysteryEncounter!.populateDialogueTokensFromRequirements(this.scene); + globalScene.currentBattle.mysteryEncounter!.populateDialogueTokensFromRequirements(); if (option.onPreOptionPhase) { - this.scene.executeWithSeedOffset(async () => { - return await option.onPreOptionPhase!(this.scene) + globalScene.executeWithSeedOffset(async () => { + return await option.onPreOptionPhase!() .then((result) => { if (isNullOrUndefined(result) || result) { this.continueEncounter(); } }); - }, this.scene.currentBattle.mysteryEncounter?.getSeedOffset()); + }, globalScene.currentBattle.mysteryEncounter?.getSeedOffset()); } else { this.continueEncounter(); } @@ -119,30 +120,30 @@ export class MysteryEncounterPhase extends Phase { */ continueEncounter() { const endDialogueAndContinueEncounter = () => { - this.scene.pushPhase(new MysteryEncounterOptionSelectedPhase(this.scene)); + globalScene.pushPhase(new MysteryEncounterOptionSelectedPhase()); this.end(); }; - const optionSelectDialogue = this.scene.currentBattle?.mysteryEncounter?.selectedOption?.dialogue; + const optionSelectDialogue = globalScene.currentBattle?.mysteryEncounter?.selectedOption?.dialogue; if (optionSelectDialogue?.selected && optionSelectDialogue.selected.length > 0) { // Handle intermediate dialogue (between player selection event and the onOptionSelect logic) - this.scene.ui.setMode(Mode.MESSAGE); + globalScene.ui.setMode(Mode.MESSAGE); const selectedDialogue = optionSelectDialogue.selected; let i = 0; const showNextDialogue = () => { const nextAction = i === selectedDialogue.length - 1 ? endDialogueAndContinueEncounter : showNextDialogue; const dialogue = selectedDialogue[i]; let title: string | null = null; - const text: string | null = getEncounterText(this.scene, dialogue.text); + const text: string | null = getEncounterText(dialogue.text); if (dialogue.speaker) { - title = getEncounterText(this.scene, dialogue.speaker); + title = getEncounterText(dialogue.speaker); } i++; if (title) { - this.scene.ui.showDialogue(text ?? "", title, null, nextAction, 0, i === 1 ? this.FIRST_DIALOGUE_PROMPT_DELAY : 0); + globalScene.ui.showDialogue(text ?? "", title, null, nextAction, 0, i === 1 ? this.FIRST_DIALOGUE_PROMPT_DELAY : 0); } else { - this.scene.ui.showText(text ?? "", null, nextAction, i === 1 ? this.FIRST_DIALOGUE_PROMPT_DELAY : 0, true); + globalScene.ui.showText(text ?? "", null, nextAction, i === 1 ? this.FIRST_DIALOGUE_PROMPT_DELAY : 0, true); } }; @@ -156,7 +157,7 @@ export class MysteryEncounterPhase extends Phase { * Ends phase */ end() { - this.scene.ui.setMode(Mode.MESSAGE).then(() => super.end()); + globalScene.ui.setMode(Mode.MESSAGE).then(() => super.end()); } } @@ -170,9 +171,9 @@ export class MysteryEncounterPhase extends Phase { export class MysteryEncounterOptionSelectedPhase extends Phase { onOptionSelect: OptionPhaseCallback; - constructor(scene: BattleScene) { - super(scene); - this.onOptionSelect = this.scene.currentBattle.mysteryEncounter!.selectedOption!.onOptionPhase; + constructor() { + super(); + this.onOptionSelect = globalScene.currentBattle.mysteryEncounter!.selectedOption!.onOptionPhase; } /** @@ -184,20 +185,20 @@ export class MysteryEncounterOptionSelectedPhase extends Phase { */ start() { super.start(); - if (this.scene.currentBattle.mysteryEncounter?.autoHideIntroVisuals) { - transitionMysteryEncounterIntroVisuals(this.scene).then(() => { - this.scene.executeWithSeedOffset(() => { - this.onOptionSelect(this.scene).finally(() => { + if (globalScene.currentBattle.mysteryEncounter?.autoHideIntroVisuals) { + transitionMysteryEncounterIntroVisuals().then(() => { + globalScene.executeWithSeedOffset(() => { + this.onOptionSelect().finally(() => { this.end(); }); - }, this.scene.currentBattle.mysteryEncounter?.getSeedOffset() * 500); + }, globalScene.currentBattle.mysteryEncounter?.getSeedOffset() * 500); }); } else { - this.scene.executeWithSeedOffset(() => { - this.onOptionSelect(this.scene).finally(() => { + globalScene.executeWithSeedOffset(() => { + this.onOptionSelect().finally(() => { this.end(); }); - }, this.scene.currentBattle.mysteryEncounter?.getSeedOffset() * 500); + }, globalScene.currentBattle.mysteryEncounter?.getSeedOffset() * 500); } } } @@ -209,8 +210,8 @@ export class MysteryEncounterOptionSelectedPhase extends Phase { * See {@linkcode TurnEndPhase} for more details */ export class MysteryEncounterBattleStartCleanupPhase extends Phase { - constructor(scene: BattleScene) { - super(scene); + constructor() { + super(); } /** @@ -221,7 +222,7 @@ export class MysteryEncounterBattleStartCleanupPhase extends Phase { // Lapse any residual flinches/endures but ignore all other turn-end battle tags const includedLapseTags = [ BattlerTagType.FLINCHED, BattlerTagType.ENDURING ]; - const field = this.scene.getField(true).filter(p => p.summonData); + const field = globalScene.getField(true).filter(p => p.summonData); field.forEach(pokemon => { const tags = pokemon.summonData.tags; tags.filter(t => includedLapseTags.includes(t.tagType) @@ -233,31 +234,31 @@ export class MysteryEncounterBattleStartCleanupPhase extends Phase { }); // Remove any status tick phases - while (!!this.scene.findPhase(p => p instanceof PostTurnStatusEffectPhase)) { - this.scene.tryRemovePhase(p => p instanceof PostTurnStatusEffectPhase); + while (!!globalScene.findPhase(p => p instanceof PostTurnStatusEffectPhase)) { + globalScene.tryRemovePhase(p => p instanceof PostTurnStatusEffectPhase); } // The total number of Pokemon in the player's party that can legally fight - const legalPlayerPokemon = this.scene.getPokemonAllowedInBattle(); + const legalPlayerPokemon = globalScene.getPokemonAllowedInBattle(); // The total number of legal player Pokemon that aren't currently on the field const legalPlayerPartyPokemon = legalPlayerPokemon.filter(p => !p.isActive(true)); if (!legalPlayerPokemon.length) { - this.scene.unshiftPhase(new GameOverPhase(this.scene)); + globalScene.unshiftPhase(new GameOverPhase()); return this.end(); } // Check for any KOd player mons and switch // For each fainted mon on the field, if there is a legal replacement, summon it - const playerField = this.scene.getPlayerField(); + const playerField = globalScene.getPlayerField(); playerField.forEach((pokemon, i) => { if (!pokemon.isAllowedInBattle() && legalPlayerPartyPokemon.length > i) { - this.scene.unshiftPhase(new SwitchPhase(this.scene, SwitchType.SWITCH, i, true, false)); + globalScene.unshiftPhase(new SwitchPhase(SwitchType.SWITCH, i, true, false)); } }); // THEN, if is a double battle, and player only has 1 summoned pokemon, center pokemon on field - if (this.scene.currentBattle.double && legalPlayerPokemon.length === 1 && legalPlayerPartyPokemon.length === 0) { - this.scene.unshiftPhase(new ToggleDoublePositionPhase(this.scene, true)); + if (globalScene.currentBattle.double && legalPlayerPokemon.length === 1 && legalPlayerPartyPokemon.length === 0) { + globalScene.unshiftPhase(new ToggleDoublePositionPhase(true)); } this.end(); @@ -274,8 +275,8 @@ export class MysteryEncounterBattleStartCleanupPhase extends Phase { export class MysteryEncounterBattlePhase extends Phase { disableSwitch: boolean; - constructor(scene: BattleScene, disableSwitch = false) { - super(scene); + constructor(disableSwitch = false) { + super(); this.disableSwitch = disableSwitch; } @@ -285,28 +286,27 @@ export class MysteryEncounterBattlePhase extends Phase { start() { super.start(); - this.doMysteryEncounterBattle(this.scene); + this.doMysteryEncounterBattle(); } /** * Gets intro battle message for new battle - * @param scene * @private */ - private getBattleMessage(scene: BattleScene): string { - const enemyField = scene.getEnemyField(); - const encounterMode = scene.currentBattle.mysteryEncounter!.encounterMode; + private getBattleMessage(): string { + const enemyField = globalScene.getEnemyField(); + const encounterMode = globalScene.currentBattle.mysteryEncounter!.encounterMode; - if (scene.currentBattle.battleSpec === BattleSpec.FINAL_BOSS) { + if (globalScene.currentBattle.battleSpec === BattleSpec.FINAL_BOSS) { return i18next.t("battle:bossAppeared", { bossName: enemyField[0].name }); } if (encounterMode === MysteryEncounterMode.TRAINER_BATTLE) { - if (scene.currentBattle.double) { - return i18next.t("battle:trainerAppearedDouble", { trainerName: scene.currentBattle.trainer?.getName(TrainerSlot.NONE, true) }); + if (globalScene.currentBattle.double) { + return i18next.t("battle:trainerAppearedDouble", { trainerName: globalScene.currentBattle.trainer?.getName(TrainerSlot.NONE, true) }); } else { - return i18next.t("battle:trainerAppeared", { trainerName: scene.currentBattle.trainer?.getName(TrainerSlot.NONE, true) }); + return i18next.t("battle:trainerAppeared", { trainerName: globalScene.currentBattle.trainer?.getName(TrainerSlot.NONE, true) }); } } @@ -317,66 +317,65 @@ export class MysteryEncounterBattlePhase extends Phase { /** * Queues {@linkcode SummonPhase}s for the new battle, and handles trainer animations/dialogue if it's a Trainer battle - * @param scene * @private */ - private doMysteryEncounterBattle(scene: BattleScene) { - const encounterMode = scene.currentBattle.mysteryEncounter!.encounterMode; + private doMysteryEncounterBattle() { + const encounterMode = globalScene.currentBattle.mysteryEncounter!.encounterMode; if (encounterMode === MysteryEncounterMode.WILD_BATTLE || encounterMode === MysteryEncounterMode.BOSS_BATTLE) { // Summons the wild/boss Pokemon if (encounterMode === MysteryEncounterMode.BOSS_BATTLE) { - scene.playBgm(undefined); + globalScene.playBgm(); } - const availablePartyMembers = scene.getEnemyParty().filter(p => !p.isFainted()).length; - scene.unshiftPhase(new SummonPhase(scene, 0, false)); - if (scene.currentBattle.double && availablePartyMembers > 1) { - scene.unshiftPhase(new SummonPhase(scene, 1, false)); + const availablePartyMembers = globalScene.getEnemyParty().filter(p => !p.isFainted()).length; + globalScene.unshiftPhase(new SummonPhase(0, false)); + if (globalScene.currentBattle.double && availablePartyMembers > 1) { + globalScene.unshiftPhase(new SummonPhase(1, false)); } - if (!scene.currentBattle.mysteryEncounter?.hideBattleIntroMessage) { - scene.ui.showText(this.getBattleMessage(scene), null, () => this.endBattleSetup(scene), 0); + if (!globalScene.currentBattle.mysteryEncounter?.hideBattleIntroMessage) { + globalScene.ui.showText(this.getBattleMessage(), null, () => this.endBattleSetup(), 0); } else { - this.endBattleSetup(scene); + this.endBattleSetup(); } } else if (encounterMode === MysteryEncounterMode.TRAINER_BATTLE) { this.showEnemyTrainer(); const doSummon = () => { - scene.currentBattle.started = true; - scene.playBgm(undefined); - scene.pbTray.showPbTray(scene.getPlayerParty()); - scene.pbTrayEnemy.showPbTray(scene.getEnemyParty()); + globalScene.currentBattle.started = true; + globalScene.playBgm(); + globalScene.pbTray.showPbTray(globalScene.getPlayerParty()); + globalScene.pbTrayEnemy.showPbTray(globalScene.getEnemyParty()); const doTrainerSummon = () => { this.hideEnemyTrainer(); - const availablePartyMembers = scene.getEnemyParty().filter(p => !p.isFainted()).length; - scene.unshiftPhase(new SummonPhase(scene, 0, false)); - if (scene.currentBattle.double && availablePartyMembers > 1) { - scene.unshiftPhase(new SummonPhase(scene, 1, false)); + const availablePartyMembers = globalScene.getEnemyParty().filter(p => !p.isFainted()).length; + globalScene.unshiftPhase(new SummonPhase(0, false)); + if (globalScene.currentBattle.double && availablePartyMembers > 1) { + globalScene.unshiftPhase(new SummonPhase(1, false)); } - this.endBattleSetup(scene); + this.endBattleSetup(); }; - if (!scene.currentBattle.mysteryEncounter?.hideBattleIntroMessage) { - scene.ui.showText(this.getBattleMessage(scene), null, doTrainerSummon, 1000, true); + if (!globalScene.currentBattle.mysteryEncounter?.hideBattleIntroMessage) { + globalScene.ui.showText(this.getBattleMessage(), null, doTrainerSummon, 1000, true); } else { doTrainerSummon(); } }; - const encounterMessages = scene.currentBattle.trainer?.getEncounterMessages(); + const encounterMessages = globalScene.currentBattle.trainer?.getEncounterMessages(); if (!encounterMessages || !encounterMessages.length) { doSummon(); } else { - const trainer = this.scene.currentBattle.trainer; + const trainer = globalScene.currentBattle.trainer; let message: string; - scene.executeWithSeedOffset(() => message = Utils.randSeedItem(encounterMessages), this.scene.currentBattle.mysteryEncounter?.getSeedOffset()); + globalScene.executeWithSeedOffset(() => message = Utils.randSeedItem(encounterMessages), globalScene.currentBattle.mysteryEncounter?.getSeedOffset()); message = message!; // tell TS compiler it's defined now const showDialogueAndSummon = () => { - scene.ui.showDialogue(message, trainer?.getName(TrainerSlot.NONE, true), null, () => { - scene.charSprite.hide().then(() => scene.hideFieldOverlay(250).then(() => doSummon())); + globalScene.ui.showDialogue(message, trainer?.getName(TrainerSlot.NONE, true), null, () => { + globalScene.charSprite.hide().then(() => globalScene.hideFieldOverlay(250).then(() => doSummon())); }); }; - if (this.scene.currentBattle.trainer?.config.hasCharSprite && !this.scene.ui.shouldSkipDialogue(message)) { - this.scene.showFieldOverlay(500).then(() => this.scene.charSprite.showCharacter(trainer?.getKey()!, getCharVariantFromDialogue(encounterMessages[0])).then(() => showDialogueAndSummon())); // TODO: is this bang correct? + if (globalScene.currentBattle.trainer?.config.hasCharSprite && !globalScene.ui.shouldSkipDialogue(message)) { + globalScene.showFieldOverlay(500).then(() => globalScene.charSprite.showCharacter(trainer?.getKey()!, getCharVariantFromDialogue(encounterMessages[0])).then(() => showDialogueAndSummon())); // TODO: is this bang correct? } else { showDialogueAndSummon(); } @@ -386,49 +385,48 @@ export class MysteryEncounterBattlePhase extends Phase { /** * Initiate {@linkcode SummonPhase}s, {@linkcode ScanIvsPhase}, {@linkcode PostSummonPhase}s, etc. - * @param scene * @private */ - private endBattleSetup(scene: BattleScene) { - const enemyField = scene.getEnemyField(); - const encounterMode = scene.currentBattle.mysteryEncounter!.encounterMode; + private endBattleSetup() { + const enemyField = globalScene.getEnemyField(); + const encounterMode = globalScene.currentBattle.mysteryEncounter!.encounterMode; // PostSummon and ShinySparkle phases are handled by SummonPhase if (encounterMode !== MysteryEncounterMode.TRAINER_BATTLE) { - const ivScannerModifier = this.scene.findModifier(m => m instanceof IvScannerModifier); + const ivScannerModifier = globalScene.findModifier(m => m instanceof IvScannerModifier); if (ivScannerModifier) { - enemyField.map(p => this.scene.pushPhase(new ScanIvsPhase(this.scene, p.getBattlerIndex(), Math.min(ivScannerModifier.getStackCount() * 2, 6)))); + enemyField.map(p => globalScene.pushPhase(new ScanIvsPhase(p.getBattlerIndex(), Math.min(ivScannerModifier.getStackCount() * 2, 6)))); } } - const availablePartyMembers = scene.getPlayerParty().filter(p => p.isAllowedInBattle()); + const availablePartyMembers = globalScene.getPlayerParty().filter(p => p.isAllowedInBattle()); if (!availablePartyMembers[0].isOnField()) { - scene.pushPhase(new SummonPhase(scene, 0)); + globalScene.pushPhase(new SummonPhase(0)); } - if (scene.currentBattle.double) { + if (globalScene.currentBattle.double) { if (availablePartyMembers.length > 1) { - scene.pushPhase(new ToggleDoublePositionPhase(scene, true)); + globalScene.pushPhase(new ToggleDoublePositionPhase(true)); if (!availablePartyMembers[1].isOnField()) { - scene.pushPhase(new SummonPhase(scene, 1)); + globalScene.pushPhase(new SummonPhase(1)); } } } else { if (availablePartyMembers.length > 1 && availablePartyMembers[1].isOnField()) { - scene.getPlayerField().forEach((pokemon) => pokemon.lapseTag(BattlerTagType.COMMANDED)); - scene.pushPhase(new ReturnPhase(scene, 1)); + globalScene.getPlayerField().forEach((pokemon) => pokemon.lapseTag(BattlerTagType.COMMANDED)); + globalScene.pushPhase(new ReturnPhase(1)); } - scene.pushPhase(new ToggleDoublePositionPhase(scene, false)); + globalScene.pushPhase(new ToggleDoublePositionPhase(false)); } if (encounterMode !== MysteryEncounterMode.TRAINER_BATTLE && !this.disableSwitch) { - const minPartySize = scene.currentBattle.double ? 2 : 1; + const minPartySize = globalScene.currentBattle.double ? 2 : 1; if (availablePartyMembers.length > minPartySize) { - scene.pushPhase(new CheckSwitchPhase(scene, 0, scene.currentBattle.double)); - if (scene.currentBattle.double) { - scene.pushPhase(new CheckSwitchPhase(scene, 1, scene.currentBattle.double)); + globalScene.pushPhase(new CheckSwitchPhase(0, globalScene.currentBattle.double)); + if (globalScene.currentBattle.double) { + globalScene.pushPhase(new CheckSwitchPhase(1, globalScene.currentBattle.double)); } } } @@ -442,7 +440,7 @@ export class MysteryEncounterBattlePhase extends Phase { */ private showEnemyTrainer(): void { // Show enemy trainer - const trainer = this.scene.currentBattle.trainer; + const trainer = globalScene.currentBattle.trainer; if (!trainer) { return; } @@ -450,7 +448,7 @@ export class MysteryEncounterBattlePhase extends Phase { trainer.x += 16; trainer.y -= 16; trainer.setVisible(true); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: trainer, x: "-=16", y: "+=16", @@ -465,8 +463,8 @@ export class MysteryEncounterBattlePhase extends Phase { } private hideEnemyTrainer(): void { - this.scene.tweens.add({ - targets: this.scene.currentBattle.trainer, + globalScene.tweens.add({ + targets: globalScene.currentBattle.trainer, x: "+=16", y: "-=16", alpha: 0, @@ -490,8 +488,8 @@ export class MysteryEncounterBattlePhase extends Phase { export class MysteryEncounterRewardsPhase extends Phase { addHealPhase: boolean; - constructor(scene: BattleScene, addHealPhase: boolean = false) { - super(scene); + constructor(addHealPhase: boolean = false) { + super(); this.addHealPhase = addHealPhase; } @@ -500,23 +498,23 @@ export class MysteryEncounterRewardsPhase extends Phase { */ start() { super.start(); - const encounter = this.scene.currentBattle.mysteryEncounter!; + const encounter = globalScene.currentBattle.mysteryEncounter!; if (encounter.doContinueEncounter) { - encounter.doContinueEncounter(this.scene).then(() => { + encounter.doContinueEncounter().then(() => { this.end(); }); } else { - this.scene.executeWithSeedOffset(() => { + globalScene.executeWithSeedOffset(() => { if (encounter.onRewards) { - encounter.onRewards(this.scene).then(() => { + encounter.onRewards().then(() => { this.doEncounterRewardsAndContinue(); }); } else { this.doEncounterRewardsAndContinue(); } // Do not use ME's seedOffset for rewards, these should always be consistent with waveIndex (once per wave) - }, this.scene.currentBattle.waveIndex * 1000); + }, globalScene.currentBattle.waveIndex * 1000); } } @@ -524,20 +522,20 @@ export class MysteryEncounterRewardsPhase extends Phase { * Queues encounter EXP and rewards phases, {@linkcode PostMysteryEncounterPhase}, and ends phase */ doEncounterRewardsAndContinue() { - const encounter = this.scene.currentBattle.mysteryEncounter!; + const encounter = globalScene.currentBattle.mysteryEncounter!; if (encounter.doEncounterExp) { - encounter.doEncounterExp(this.scene); + encounter.doEncounterExp(); } if (encounter.doEncounterRewards) { - encounter.doEncounterRewards(this.scene); + encounter.doEncounterRewards(); } else if (this.addHealPhase) { - this.scene.tryRemovePhase(p => p instanceof SelectModifierPhase); - this.scene.unshiftPhase(new SelectModifierPhase(this.scene, 0, undefined, { fillRemaining: false, rerollMultiplier: -1 })); + globalScene.tryRemovePhase(p => p instanceof SelectModifierPhase); + globalScene.unshiftPhase(new SelectModifierPhase(0, undefined, { fillRemaining: false, rerollMultiplier: -1 })); } - this.scene.pushPhase(new PostMysteryEncounterPhase(this.scene)); + globalScene.pushPhase(new PostMysteryEncounterPhase()); this.end(); } } @@ -553,9 +551,9 @@ export class PostMysteryEncounterPhase extends Phase { private readonly FIRST_DIALOGUE_PROMPT_DELAY = 750; onPostOptionSelect?: OptionPhaseCallback; - constructor(scene: BattleScene) { - super(scene); - this.onPostOptionSelect = this.scene.currentBattle.mysteryEncounter?.selectedOption?.onPostOptionPhase; + constructor() { + super(); + this.onPostOptionSelect = globalScene.currentBattle.mysteryEncounter?.selectedOption?.onPostOptionPhase; } /** @@ -565,14 +563,14 @@ export class PostMysteryEncounterPhase extends Phase { super.start(); if (this.onPostOptionSelect) { - this.scene.executeWithSeedOffset(async () => { - return await this.onPostOptionSelect!(this.scene) + globalScene.executeWithSeedOffset(async () => { + return await this.onPostOptionSelect!() .then((result) => { if (isNullOrUndefined(result) || result) { this.continueEncounter(); } }); - }, this.scene.currentBattle.mysteryEncounter?.getSeedOffset() * 2000); + }, globalScene.currentBattle.mysteryEncounter?.getSeedOffset() * 2000); } else { this.continueEncounter(); } @@ -583,28 +581,28 @@ export class PostMysteryEncounterPhase extends Phase { */ continueEncounter() { const endPhase = () => { - this.scene.pushPhase(new NewBattlePhase(this.scene)); + globalScene.pushPhase(new NewBattlePhase()); this.end(); }; - const outroDialogue = this.scene.currentBattle?.mysteryEncounter?.dialogue?.outro; + const outroDialogue = globalScene.currentBattle?.mysteryEncounter?.dialogue?.outro; if (outroDialogue && outroDialogue.length > 0) { let i = 0; const showNextDialogue = () => { const nextAction = i === outroDialogue.length - 1 ? endPhase : showNextDialogue; const dialogue = outroDialogue[i]; let title: string | null = null; - const text: string | null = getEncounterText(this.scene, dialogue.text); + const text: string | null = getEncounterText(dialogue.text); if (dialogue.speaker) { - title = getEncounterText(this.scene, dialogue.speaker); + title = getEncounterText(dialogue.speaker); } i++; - this.scene.ui.setMode(Mode.MESSAGE); + globalScene.ui.setMode(Mode.MESSAGE); if (title) { - this.scene.ui.showDialogue(text ?? "", title, null, nextAction, 0, i === 1 ? this.FIRST_DIALOGUE_PROMPT_DELAY : 0); + globalScene.ui.showDialogue(text ?? "", title, null, nextAction, 0, i === 1 ? this.FIRST_DIALOGUE_PROMPT_DELAY : 0); } else { - this.scene.ui.showText(text ?? "", null, nextAction, i === 1 ? this.FIRST_DIALOGUE_PROMPT_DELAY : 0, true); + globalScene.ui.showText(text ?? "", null, nextAction, i === 1 ? this.FIRST_DIALOGUE_PROMPT_DELAY : 0, true); } }; diff --git a/src/phases/new-battle-phase.ts b/src/phases/new-battle-phase.ts index 5a422c9e6c7..8cdbdc5891a 100644 --- a/src/phases/new-battle-phase.ts +++ b/src/phases/new-battle-phase.ts @@ -1,10 +1,11 @@ +import { globalScene } from "#app/global-scene"; import { BattlePhase } from "./battle-phase"; export class NewBattlePhase extends BattlePhase { start() { super.start(); - this.scene.newBattle(); + globalScene.newBattle(); this.end(); } diff --git a/src/phases/new-biome-encounter-phase.ts b/src/phases/new-biome-encounter-phase.ts index 910306b76ad..be6815333e5 100644 --- a/src/phases/new-biome-encounter-phase.ts +++ b/src/phases/new-biome-encounter-phase.ts @@ -1,34 +1,34 @@ -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { applyAbAttrs, PostBiomeChangeAbAttr } from "#app/data/ability"; import { getRandomWeatherType } from "#app/data/weather"; import { NextEncounterPhase } from "./next-encounter-phase"; export class NewBiomeEncounterPhase extends NextEncounterPhase { - constructor(scene: BattleScene) { - super(scene); + constructor() { + super(); } doEncounter(): void { - this.scene.playBgm(undefined, true); + globalScene.playBgm(undefined, true); - for (const pokemon of this.scene.getPlayerParty()) { + for (const pokemon of globalScene.getPlayerParty()) { if (pokemon) { pokemon.resetBattleData(); } } - for (const pokemon of this.scene.getPlayerParty().filter(p => p.isOnField())) { + for (const pokemon of globalScene.getPlayerParty().filter(p => p.isOnField())) { applyAbAttrs(PostBiomeChangeAbAttr, pokemon, null); } - const enemyField = this.scene.getEnemyField(); - const moveTargets: any[] = [ this.scene.arenaEnemy, enemyField ]; - const mysteryEncounter = this.scene.currentBattle?.mysteryEncounter?.introVisuals; + const enemyField = globalScene.getEnemyField(); + const moveTargets: any[] = [ globalScene.arenaEnemy, enemyField ]; + const mysteryEncounter = globalScene.currentBattle?.mysteryEncounter?.introVisuals; if (mysteryEncounter) { moveTargets.push(mysteryEncounter); } - this.scene.tweens.add({ + globalScene.tweens.add({ targets: moveTargets.flat(), x: "+=300", duration: 2000, @@ -44,6 +44,6 @@ export class NewBiomeEncounterPhase extends NextEncounterPhase { * Set biome weather. */ trySetWeatherIfNewBiome(): void { - this.scene.arena.trySetWeather(getRandomWeatherType(this.scene.arena), false); + globalScene.arena.trySetWeather(getRandomWeatherType(globalScene.arena), false); } } diff --git a/src/phases/next-encounter-phase.ts b/src/phases/next-encounter-phase.ts index e086ed4fe3e..229d37f9a69 100644 --- a/src/phases/next-encounter-phase.ts +++ b/src/phases/next-encounter-phase.ts @@ -1,9 +1,9 @@ -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { EncounterPhase } from "./encounter-phase"; export class NextEncounterPhase extends EncounterPhase { - constructor(scene: BattleScene) { - super(scene); + constructor() { + super(); } start() { @@ -11,29 +11,29 @@ export class NextEncounterPhase extends EncounterPhase { } doEncounter(): void { - this.scene.playBgm(undefined, true); + globalScene.playBgm(undefined, true); - for (const pokemon of this.scene.getPlayerParty()) { + for (const pokemon of globalScene.getPlayerParty()) { if (pokemon) { pokemon.resetBattleData(); } } - this.scene.arenaNextEnemy.setBiome(this.scene.arena.biomeType); - this.scene.arenaNextEnemy.setVisible(true); + globalScene.arenaNextEnemy.setBiome(globalScene.arena.biomeType); + globalScene.arenaNextEnemy.setVisible(true); - const enemyField = this.scene.getEnemyField(); - const moveTargets: any[] = [ this.scene.arenaEnemy, this.scene.arenaNextEnemy, this.scene.currentBattle.trainer, enemyField, this.scene.lastEnemyTrainer ]; - const lastEncounterVisuals = this.scene.lastMysteryEncounter?.introVisuals; + const enemyField = globalScene.getEnemyField(); + const moveTargets: any[] = [ globalScene.arenaEnemy, globalScene.arenaNextEnemy, globalScene.currentBattle.trainer, enemyField, globalScene.lastEnemyTrainer ]; + const lastEncounterVisuals = globalScene.lastMysteryEncounter?.introVisuals; if (lastEncounterVisuals) { moveTargets.push(lastEncounterVisuals); } - const nextEncounterVisuals = this.scene.currentBattle.mysteryEncounter?.introVisuals; + const nextEncounterVisuals = globalScene.currentBattle.mysteryEncounter?.introVisuals; if (nextEncounterVisuals) { const enterFromRight = nextEncounterVisuals.enterFromRight; if (enterFromRight) { nextEncounterVisuals.x += 500; - this.scene.tweens.add({ + globalScene.tweens.add({ targets: nextEncounterVisuals, x: "-=200", duration: 2000 @@ -43,22 +43,22 @@ export class NextEncounterPhase extends EncounterPhase { } } - this.scene.tweens.add({ + globalScene.tweens.add({ targets: moveTargets.flat(), x: "+=300", duration: 2000, onComplete: () => { - this.scene.arenaEnemy.setBiome(this.scene.arena.biomeType); - this.scene.arenaEnemy.setX(this.scene.arenaNextEnemy.x); - this.scene.arenaEnemy.setAlpha(1); - this.scene.arenaNextEnemy.setX(this.scene.arenaNextEnemy.x - 300); - this.scene.arenaNextEnemy.setVisible(false); - if (this.scene.lastEnemyTrainer) { - this.scene.lastEnemyTrainer.destroy(); + globalScene.arenaEnemy.setBiome(globalScene.arena.biomeType); + globalScene.arenaEnemy.setX(globalScene.arenaNextEnemy.x); + globalScene.arenaEnemy.setAlpha(1); + globalScene.arenaNextEnemy.setX(globalScene.arenaNextEnemy.x - 300); + globalScene.arenaNextEnemy.setVisible(false); + if (globalScene.lastEnemyTrainer) { + globalScene.lastEnemyTrainer.destroy(); } if (lastEncounterVisuals) { - this.scene.field.remove(lastEncounterVisuals, true); - this.scene.lastMysteryEncounter!.introVisuals = undefined; + globalScene.field.remove(lastEncounterVisuals, true); + globalScene.lastMysteryEncounter!.introVisuals = undefined; } if (!this.tryOverrideForBattleSpec()) { diff --git a/src/phases/obtain-status-effect-phase.ts b/src/phases/obtain-status-effect-phase.ts index 01384b932cb..b01a90bd235 100644 --- a/src/phases/obtain-status-effect-phase.ts +++ b/src/phases/obtain-status-effect-phase.ts @@ -1,9 +1,9 @@ -import BattleScene from "#app/battle-scene"; -import { BattlerIndex } from "#app/battle"; +import { globalScene } from "#app/global-scene"; +import type { BattlerIndex } from "#app/battle"; import { CommonBattleAnim, CommonAnim } from "#app/data/battle-anims"; import { getStatusEffectObtainText, getStatusEffectOverlapText } from "#app/data/status-effect"; import { StatusEffect } from "#app/enums/status-effect"; -import Pokemon from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; import { getPokemonNameWithAffix } from "#app/messages"; import { PokemonPhase } from "./pokemon-phase"; @@ -13,8 +13,8 @@ export class ObtainStatusEffectPhase extends PokemonPhase { private sourceText?: string | null; private sourcePokemon?: Pokemon | null; - constructor(scene: BattleScene, battlerIndex: BattlerIndex, statusEffect?: StatusEffect, turnsRemaining?: number, sourceText?: string | null, sourcePokemon?: Pokemon | null) { - super(scene, battlerIndex); + constructor(battlerIndex: BattlerIndex, statusEffect?: StatusEffect, turnsRemaining?: number, sourceText?: string | null, sourcePokemon?: Pokemon | null) { + super(battlerIndex); this.statusEffect = statusEffect; this.turnsRemaining = turnsRemaining; @@ -30,14 +30,14 @@ export class ObtainStatusEffectPhase extends PokemonPhase { pokemon.status!.sleepTurnsRemaining = this.turnsRemaining; } pokemon.updateInfo(true); - new CommonBattleAnim(CommonAnim.POISON + (this.statusEffect! - 1), pokemon).play(this.scene, false, () => { - this.scene.queueMessage(getStatusEffectObtainText(this.statusEffect, getPokemonNameWithAffix(pokemon), this.sourceText ?? undefined)); + new CommonBattleAnim(CommonAnim.POISON + (this.statusEffect! - 1), pokemon).play(false, () => { + globalScene.queueMessage(getStatusEffectObtainText(this.statusEffect, getPokemonNameWithAffix(pokemon), this.sourceText ?? undefined)); this.end(); }); return; } } else if (pokemon.status?.effect === this.statusEffect) { - this.scene.queueMessage(getStatusEffectOverlapText(this.statusEffect ?? StatusEffect.NONE, getPokemonNameWithAffix(pokemon))); + globalScene.queueMessage(getStatusEffectOverlapText(this.statusEffect ?? StatusEffect.NONE, getPokemonNameWithAffix(pokemon))); } this.end(); } diff --git a/src/phases/party-exp-phase.ts b/src/phases/party-exp-phase.ts index c5a254871ca..8fd9e1cf0f6 100644 --- a/src/phases/party-exp-phase.ts +++ b/src/phases/party-exp-phase.ts @@ -1,4 +1,4 @@ -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { Phase } from "#app/phase"; /** @@ -10,8 +10,8 @@ export class PartyExpPhase extends Phase { useWaveIndexMultiplier?: boolean; pokemonParticipantIds?: Set; - constructor(scene: BattleScene, expValue: number, useWaveIndexMultiplier?: boolean, pokemonParticipantIds?: Set) { - super(scene); + constructor(expValue: number, useWaveIndexMultiplier?: boolean, pokemonParticipantIds?: Set) { + super(); this.expValue = expValue; this.useWaveIndexMultiplier = useWaveIndexMultiplier; @@ -24,7 +24,7 @@ export class PartyExpPhase extends Phase { start() { super.start(); - this.scene.applyPartyExp(this.expValue, false, this.useWaveIndexMultiplier, this.pokemonParticipantIds); + globalScene.applyPartyExp(this.expValue, false, this.useWaveIndexMultiplier, this.pokemonParticipantIds); this.end(); } diff --git a/src/phases/party-heal-phase.ts b/src/phases/party-heal-phase.ts index 4841bf9a5b4..2c1a6c33163 100644 --- a/src/phases/party-heal-phase.ts +++ b/src/phases/party-heal-phase.ts @@ -1,12 +1,12 @@ -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import * as Utils from "#app/utils"; import { BattlePhase } from "./battle-phase"; export class PartyHealPhase extends BattlePhase { private resumeBgm: boolean; - constructor(scene: BattleScene, resumeBgm: boolean) { - super(scene); + constructor(resumeBgm: boolean) { + super(); this.resumeBgm = resumeBgm; } @@ -14,12 +14,12 @@ export class PartyHealPhase extends BattlePhase { start() { super.start(); - const bgmPlaying = this.scene.isBgmPlaying(); + const bgmPlaying = globalScene.isBgmPlaying(); if (bgmPlaying) { - this.scene.fadeOutBgm(1000, false); + globalScene.fadeOutBgm(1000, false); } - this.scene.ui.fadeOut(1000).then(() => { - for (const pokemon of this.scene.getPlayerParty()) { + globalScene.ui.fadeOut(1000).then(() => { + for (const pokemon of globalScene.getPlayerParty()) { pokemon.hp = pokemon.getMaxHp(); pokemon.resetStatus(); for (const move of pokemon.moveset) { @@ -27,13 +27,13 @@ export class PartyHealPhase extends BattlePhase { } pokemon.updateInfo(true); } - const healSong = this.scene.playSoundWithoutBgm("heal"); - this.scene.time.delayedCall(Utils.fixedInt(healSong.totalDuration * 1000), () => { + const healSong = globalScene.playSoundWithoutBgm("heal"); + globalScene.time.delayedCall(Utils.fixedInt(healSong.totalDuration * 1000), () => { healSong.destroy(); if (this.resumeBgm && bgmPlaying) { - this.scene.playBgm(); + globalScene.playBgm(); } - this.scene.ui.fadeIn(500).then(() => this.end()); + globalScene.ui.fadeIn(500).then(() => this.end()); }); }); } diff --git a/src/phases/party-member-pokemon-phase.ts b/src/phases/party-member-pokemon-phase.ts index f2e2b23bfb2..bc702c832b1 100644 --- a/src/phases/party-member-pokemon-phase.ts +++ b/src/phases/party-member-pokemon-phase.ts @@ -1,5 +1,5 @@ -import BattleScene from "#app/battle-scene"; -import Pokemon from "#app/field/pokemon"; +import { globalScene } from "#app/global-scene"; +import type Pokemon from "#app/field/pokemon"; import { FieldPhase } from "./field-phase"; export abstract class PartyMemberPokemonPhase extends FieldPhase { @@ -7,18 +7,18 @@ export abstract class PartyMemberPokemonPhase extends FieldPhase { protected fieldIndex: integer; protected player: boolean; - constructor(scene: BattleScene, partyMemberIndex: integer, player: boolean) { - super(scene); + constructor(partyMemberIndex: integer, player: boolean) { + super(); this.partyMemberIndex = partyMemberIndex; - this.fieldIndex = partyMemberIndex < this.scene.currentBattle.getBattlerCount() + this.fieldIndex = partyMemberIndex < globalScene.currentBattle.getBattlerCount() ? partyMemberIndex : -1; this.player = player; } getParty(): Pokemon[] { - return this.player ? this.scene.getPlayerParty() : this.scene.getEnemyParty(); + return this.player ? globalScene.getPlayerParty() : globalScene.getEnemyParty(); } getPokemon(): Pokemon { diff --git a/src/phases/player-party-member-pokemon-phase.ts b/src/phases/player-party-member-pokemon-phase.ts index 87855b9334c..bdedc0743e9 100644 --- a/src/phases/player-party-member-pokemon-phase.ts +++ b/src/phases/player-party-member-pokemon-phase.ts @@ -1,10 +1,9 @@ -import BattleScene from "#app/battle-scene"; -import { PlayerPokemon } from "#app/field/pokemon"; +import type { PlayerPokemon } from "#app/field/pokemon"; import { PartyMemberPokemonPhase } from "./party-member-pokemon-phase"; export abstract class PlayerPartyMemberPokemonPhase extends PartyMemberPokemonPhase { - constructor(scene: BattleScene, partyMemberIndex: integer) { - super(scene, partyMemberIndex, true); + constructor(partyMemberIndex: integer) { + super(partyMemberIndex, true); } getPlayerPokemon(): PlayerPokemon { diff --git a/src/phases/pokemon-anim-phase.ts b/src/phases/pokemon-anim-phase.ts index eb5431cbc56..54140ec96b5 100644 --- a/src/phases/pokemon-anim-phase.ts +++ b/src/phases/pokemon-anim-phase.ts @@ -1,6 +1,6 @@ -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { SubstituteTag } from "#app/data/battler-tags"; -import Pokemon from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; import { BattlePhase } from "#app/phases/battle-phase"; import { isNullOrUndefined } from "#app/utils"; import { PokemonAnimType } from "#enums/pokemon-anim-type"; @@ -15,8 +15,8 @@ export class PokemonAnimPhase extends BattlePhase { /** Any other field sprites affected by this animation */ private fieldAssets: Phaser.GameObjects.Sprite[]; - constructor(scene: BattleScene, key: PokemonAnimType, pokemon: Pokemon, fieldAssets?: Phaser.GameObjects.Sprite[]) { - super(scene); + constructor(key: PokemonAnimType, pokemon: Pokemon, fieldAssets?: Phaser.GameObjects.Sprite[]) { + super(); this.key = key; this.pokemon = pokemon; @@ -57,13 +57,13 @@ export class PokemonAnimPhase extends BattlePhase { } const getSprite = () => { - const sprite = this.scene.addFieldSprite( + const sprite = globalScene.addFieldSprite( this.pokemon.x + this.pokemon.getSprite().x, this.pokemon.y + this.pokemon.getSprite().y, `pkmn${this.pokemon.isPlayer() ? "__back" : ""}__sub` ); sprite.setOrigin(0.5, 1); - this.scene.field.add(sprite); + globalScene.field.add(sprite); return sprite; }; @@ -76,12 +76,12 @@ export class PokemonAnimPhase extends BattlePhase { subTintSprite.setScale(0.01); if (this.pokemon.isPlayer()) { - this.scene.field.bringToTop(this.pokemon); + globalScene.field.bringToTop(this.pokemon); } - this.scene.playSound("PRSFX- Transform"); + globalScene.playSound("PRSFX- Transform"); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this.pokemon, duration: 500, x: this.pokemon.x + this.pokemon.getSubstituteOffset()[0], @@ -90,7 +90,7 @@ export class PokemonAnimPhase extends BattlePhase { ease: "Sine.easeIn" }); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: subTintSprite, delay: 250, scale: subScale, @@ -98,7 +98,7 @@ export class PokemonAnimPhase extends BattlePhase { duration: 500, onComplete: () => { subSprite.setVisible(true); - this.pokemon.scene.tweens.add({ + globalScene.tweens.add({ targets: subTintSprite, delay: 250, alpha: 0, @@ -124,14 +124,14 @@ export class PokemonAnimPhase extends BattlePhase { return this.end(); } - this.scene.tweens.add({ + globalScene.tweens.add({ targets: subSprite, alpha: 0, ease: "Sine.easeInOut", duration: 500 }); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this.pokemon, x: subSprite.x, y: subSprite.y, @@ -153,7 +153,7 @@ export class PokemonAnimPhase extends BattlePhase { return this.end(); } - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this.pokemon, x: subSprite.x + this.pokemon.getSubstituteOffset()[0], y: subSprite.y + this.pokemon.getSubstituteOffset()[1], @@ -162,7 +162,7 @@ export class PokemonAnimPhase extends BattlePhase { duration: 500 }); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: subSprite, alpha: 1, ease: "Sine.easeInOut", @@ -183,13 +183,13 @@ export class PokemonAnimPhase extends BattlePhase { } const getSprite = () => { - const sprite = this.scene.addFieldSprite( + const sprite = globalScene.addFieldSprite( subSprite.x, subSprite.y, `pkmn${this.pokemon.isPlayer() ? "__back" : ""}__sub` ); sprite.setOrigin(0.5, 1); - this.scene.field.add(sprite); + globalScene.field.add(sprite); return sprite; }; @@ -199,30 +199,30 @@ export class PokemonAnimPhase extends BattlePhase { subTintSprite.setTintFill(0xFFFFFF); subTintSprite.setScale(subScale); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: subTintSprite, alpha: 1, ease: "Sine.easeInOut", duration: 500, onComplete: () => { subSprite.destroy(); - const flashTimer = this.scene.time.addEvent({ + const flashTimer = globalScene.time.addEvent({ delay: 100, repeat: 7, startAt: 200, callback: () => { - this.scene.playSound("PRSFX- Substitute2.wav"); + globalScene.playSound("PRSFX- Substitute2.wav"); subTintSprite.setVisible(flashTimer.repeatCount % 2 === 0); if (!flashTimer.repeatCount) { - this.scene.tweens.add({ + globalScene.tweens.add({ targets: subTintSprite, scale: 0.01, ease: "Sine.cubicEaseIn", duration: 500 }); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this.pokemon, x: this.pokemon.x - this.pokemon.getSubstituteOffset()[0], y: this.pokemon.y - this.pokemon.getSubstituteOffset()[1], @@ -243,7 +243,7 @@ export class PokemonAnimPhase extends BattlePhase { } private doCommanderApplyAnim(): void { - if (!this.scene.currentBattle?.double) { + if (!globalScene.currentBattle?.double) { return this.end(); } const dondozo = this.pokemon.getAlly(); @@ -256,7 +256,7 @@ export class PokemonAnimPhase extends BattlePhase { const tatsugiriY = this.pokemon.y + this.pokemon.getSprite().y; const getSourceSprite = () => { - const sprite = this.scene.addPokemonSprite(this.pokemon, tatsugiriX, tatsugiriY, this.pokemon.getSprite().texture, this.pokemon.getSprite()!.frame.name, true); + const sprite = globalScene.addPokemonSprite(this.pokemon, tatsugiriX, tatsugiriY, this.pokemon.getSprite().texture, this.pokemon.getSprite()!.frame.name, true); [ "spriteColors", "fusionSpriteColors" ].map(k => sprite.pipelineData[k] = this.pokemon.getSprite().pipelineData[k]); sprite.setPipelineData("spriteKey", this.pokemon.getBattleSpriteKey()); sprite.setPipelineData("shiny", this.pokemon.shiny); @@ -264,7 +264,7 @@ export class PokemonAnimPhase extends BattlePhase { sprite.setPipelineData("ignoreFieldPos", true); sprite.setOrigin(0.5, 1); this.pokemon.getSprite().on("animationupdate", (_anim, frame) => sprite.setFrame(frame.textureFrame)); - this.scene.field.add(sprite); + globalScene.field.add(sprite); return sprite; }; @@ -275,17 +275,17 @@ export class PokemonAnimPhase extends BattlePhase { const sourceFpOffset = this.pokemon.getFieldPositionOffset(); const dondozoFpOffset = dondozo.getFieldPositionOffset(); - this.scene.playSound("se/pb_throw"); + globalScene.playSound("se/pb_throw"); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: sourceSprite, duration: 375, scale: 0.5, x: { value: tatsugiriX + (dondozoFpOffset[0] - sourceFpOffset[0]) / 2, ease: "Linear" }, y: { value: (this.pokemon.isPlayer() ? 100 : 65) + sourceFpOffset[1], ease: "Sine.easeOut" }, onComplete: () => { - this.scene.field.bringToTop(dondozo); - this.scene.tweens.add({ + globalScene.field.bringToTop(dondozo); + globalScene.tweens.add({ targets: sourceSprite, duration: 375, scale: 0.01, @@ -293,8 +293,8 @@ export class PokemonAnimPhase extends BattlePhase { y: { value: dondozo.y + dondozo.height / 2, ease: "Sine.easeIn" }, onComplete: () => { sourceSprite.destroy(); - this.scene.playSound("battle_anims/PRSFX- Liquidation1.wav"); - this.scene.tweens.add({ + globalScene.playSound("battle_anims/PRSFX- Liquidation1.wav"); + globalScene.tweens.add({ targets: dondozo, duration: 250, ease: "Sine.easeInOut", @@ -317,7 +317,7 @@ export class PokemonAnimPhase extends BattlePhase { return this.end(); } - const tatsuSprite = this.scene.addPokemonSprite( + const tatsuSprite = globalScene.addPokemonSprite( tatsugiri, this.pokemon.x + this.pokemon.getSprite().x, this.pokemon.y + this.pokemon.getSprite().y + this.pokemon.height / 2, @@ -335,19 +335,19 @@ export class PokemonAnimPhase extends BattlePhase { tatsuSprite.setOrigin(0.5, 1); tatsuSprite.setScale(0.01); - this.scene.field.add(tatsuSprite); - this.scene.field.bringToTop(this.pokemon); + globalScene.field.add(tatsuSprite); + globalScene.field.bringToTop(this.pokemon); tatsuSprite.setVisible(true); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this.pokemon, duration: 250, ease: "Sine.easeInOut", scale: 1.15, yoyo: true, onComplete: () => { - this.scene.playSound("battle_anims/PRSFX- Liquidation4.wav"); - this.scene.tweens.add({ + globalScene.playSound("battle_anims/PRSFX- Liquidation4.wav"); + globalScene.tweens.add({ targets: tatsuSprite, duration: 500, scale: 1, diff --git a/src/phases/pokemon-heal-phase.ts b/src/phases/pokemon-heal-phase.ts index c95b92e3b64..268794ce97c 100644 --- a/src/phases/pokemon-heal-phase.ts +++ b/src/phases/pokemon-heal-phase.ts @@ -1,9 +1,10 @@ -import BattleScene from "#app/battle-scene"; -import { BattlerIndex } from "#app/battle"; +import { globalScene } from "#app/global-scene"; +import type { BattlerIndex } from "#app/battle"; import { CommonAnim } from "#app/data/battle-anims"; import { getStatusEffectHealText } from "#app/data/status-effect"; import { StatusEffect } from "#app/enums/status-effect"; -import { HitResult, DamageResult } from "#app/field/pokemon"; +import type { DamageResult } from "#app/field/pokemon"; +import { HitResult } from "#app/field/pokemon"; import { getPokemonNameWithAffix } from "#app/messages"; import { HealingBoosterModifier } from "#app/modifier/modifier"; import { HealAchv } from "#app/system/achv"; @@ -11,7 +12,7 @@ import i18next from "i18next"; import * as Utils from "#app/utils"; import { CommonAnimPhase } from "./common-anim-phase"; import { BattlerTagType } from "#app/enums/battler-tag-type"; -import { HealBlockTag } from "#app/data/battler-tags"; +import type { HealBlockTag } from "#app/data/battler-tags"; export class PokemonHealPhase extends CommonAnimPhase { private hpHealed: integer; @@ -23,8 +24,8 @@ export class PokemonHealPhase extends CommonAnimPhase { private preventFullHeal: boolean; private fullRestorePP: boolean; - constructor(scene: BattleScene, battlerIndex: BattlerIndex, hpHealed: integer, message: string | null, showFullHpMessage: boolean, skipAnim: boolean = false, revive: boolean = false, healStatus: boolean = false, preventFullHeal: boolean = false, fullRestorePP: boolean = false) { - super(scene, battlerIndex, undefined, CommonAnim.HEALTH_UP); + constructor(battlerIndex: BattlerIndex, hpHealed: integer, message: string | null, showFullHpMessage: boolean, skipAnim: boolean = false, revive: boolean = false, healStatus: boolean = false, preventFullHeal: boolean = false, fullRestorePP: boolean = false) { + super(battlerIndex, undefined, CommonAnim.HEALTH_UP); this.hpHealed = hpHealed; this.message = message; @@ -57,13 +58,13 @@ export class PokemonHealPhase extends CommonAnimPhase { let lastStatusEffect = StatusEffect.NONE; if (healBlock && this.hpHealed > 0) { - this.scene.queueMessage(healBlock.onActivation(pokemon)); + globalScene.queueMessage(healBlock.onActivation(pokemon)); this.message = null; return super.end(); } else if (healOrDamage) { const hpRestoreMultiplier = new Utils.IntegerHolder(1); if (!this.revive) { - this.scene.applyModifiers(HealingBoosterModifier, this.player, hpRestoreMultiplier); + globalScene.applyModifiers(HealingBoosterModifier, this.player, hpRestoreMultiplier); } const healAmount = new Utils.NumberHolder(Math.floor(this.hpHealed * hpRestoreMultiplier.value)); if (healAmount.value < 0) { @@ -76,12 +77,12 @@ export class PokemonHealPhase extends CommonAnimPhase { } healAmount.value = pokemon.heal(healAmount.value); if (healAmount.value) { - this.scene.damageNumberHandler.add(pokemon, healAmount.value, HitResult.HEAL); + globalScene.damageNumberHandler.add(pokemon, healAmount.value, HitResult.HEAL); } if (pokemon.isPlayer()) { - this.scene.validateAchvs(HealAchv, healAmount); - if (healAmount.value > this.scene.gameData.gameStats.highestHeal) { - this.scene.gameData.gameStats.highestHeal = healAmount.value; + globalScene.validateAchvs(HealAchv, healAmount); + if (healAmount.value > globalScene.gameData.gameStats.highestHeal) { + globalScene.gameData.gameStats.highestHeal = healAmount.value; } } if (this.healStatus && !this.revive && pokemon.status) { @@ -105,11 +106,11 @@ export class PokemonHealPhase extends CommonAnimPhase { } if (this.message) { - this.scene.queueMessage(this.message); + globalScene.queueMessage(this.message); } if (this.healStatus && lastStatusEffect && !hasMessage) { - this.scene.queueMessage(getStatusEffectHealText(lastStatusEffect, getPokemonNameWithAffix(pokemon))); + globalScene.queueMessage(getStatusEffectHealText(lastStatusEffect, getPokemonNameWithAffix(pokemon))); } if (!healOrDamage && !lastStatusEffect) { diff --git a/src/phases/pokemon-phase.ts b/src/phases/pokemon-phase.ts index b980c1d1719..29153ee726a 100644 --- a/src/phases/pokemon-phase.ts +++ b/src/phases/pokemon-phase.ts @@ -1,6 +1,6 @@ -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { BattlerIndex } from "#app/battle"; -import Pokemon from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; import { FieldPhase } from "./field-phase"; export abstract class PokemonPhase extends FieldPhase { @@ -8,11 +8,11 @@ export abstract class PokemonPhase extends FieldPhase { public player: boolean; public fieldIndex: integer; - constructor(scene: BattleScene, battlerIndex?: BattlerIndex | integer) { - super(scene); + constructor(battlerIndex?: BattlerIndex | integer) { + super(); if (battlerIndex === undefined) { - battlerIndex = scene.getField().find(p => p?.isActive())!.getBattlerIndex(); // TODO: is the bang correct here? + battlerIndex = globalScene.getField().find(p => p?.isActive())!.getBattlerIndex(); // TODO: is the bang correct here? } this.battlerIndex = battlerIndex; @@ -22,8 +22,8 @@ export abstract class PokemonPhase extends FieldPhase { getPokemon(): Pokemon { if (this.battlerIndex > BattlerIndex.ENEMY_2) { - return this.scene.getPokemonById(this.battlerIndex)!; //TODO: is this bang correct? + return globalScene.getPokemonById(this.battlerIndex)!; //TODO: is this bang correct? } - return this.scene.getField()[this.battlerIndex]!; //TODO: is this bang correct? + return globalScene.getField()[this.battlerIndex]!; //TODO: is this bang correct? } } diff --git a/src/phases/post-game-over-phase.ts b/src/phases/post-game-over-phase.ts index beeb30c7260..4643d4d1bef 100644 --- a/src/phases/post-game-over-phase.ts +++ b/src/phases/post-game-over-phase.ts @@ -1,13 +1,13 @@ -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { Phase } from "#app/phase"; -import { EndCardPhase } from "./end-card-phase"; +import type { EndCardPhase } from "./end-card-phase"; import { TitlePhase } from "./title-phase"; export class PostGameOverPhase extends Phase { private endCardPhase: EndCardPhase | null; - constructor(scene: BattleScene, endCardPhase?: EndCardPhase) { - super(scene); + constructor(endCardPhase?: EndCardPhase) { + super(); this.endCardPhase = endCardPhase!; // TODO: is this bang correct? } @@ -16,24 +16,24 @@ export class PostGameOverPhase extends Phase { super.start(); const saveAndReset = () => { - this.scene.gameData.saveAll(this.scene, true, true, true).then(success => { + globalScene.gameData.saveAll(true, true, true).then(success => { if (!success) { - return this.scene.reset(true); + return globalScene.reset(true); } - this.scene.gameData.tryClearSession(this.scene, this.scene.sessionSlotId).then((success: boolean | [boolean, boolean]) => { + globalScene.gameData.tryClearSession(globalScene.sessionSlotId).then((success: boolean | [boolean, boolean]) => { if (!success[0]) { - return this.scene.reset(true); + return globalScene.reset(true); } - this.scene.reset(); - this.scene.unshiftPhase(new TitlePhase(this.scene)); + globalScene.reset(); + globalScene.unshiftPhase(new TitlePhase()); this.end(); }); }); }; if (this.endCardPhase) { - this.scene.ui.fadeOut(500).then(() => { - this.scene.ui.getMessageHandler().bg.setVisible(true); + globalScene.ui.fadeOut(500).then(() => { + globalScene.ui.getMessageHandler().bg.setVisible(true); this.endCardPhase?.endCard.destroy(); this.endCardPhase?.text.destroy(); diff --git a/src/phases/post-summon-phase.ts b/src/phases/post-summon-phase.ts index 42e5b930eb1..d76708b7050 100644 --- a/src/phases/post-summon-phase.ts +++ b/src/phases/post-summon-phase.ts @@ -1,5 +1,5 @@ -import BattleScene from "#app/battle-scene"; -import { BattlerIndex } from "#app/battle"; +import { globalScene } from "#app/global-scene"; +import type { BattlerIndex } from "#app/battle"; import { applyAbAttrs, applyPostSummonAbAttrs, CommanderAbAttr, PostSummonAbAttr } from "#app/data/ability"; import { ArenaTrapTag } from "#app/data/arena-tag"; import { StatusEffect } from "#app/enums/status-effect"; @@ -8,8 +8,8 @@ import { MysteryEncounterPostSummonTag } from "#app/data/battler-tags"; import { BattlerTagType } from "#enums/battler-tag-type"; export class PostSummonPhase extends PokemonPhase { - constructor(scene: BattleScene, battlerIndex: BattlerIndex) { - super(scene, battlerIndex); + constructor(battlerIndex: BattlerIndex) { + super(battlerIndex); } start() { @@ -20,16 +20,16 @@ export class PostSummonPhase extends PokemonPhase { if (pokemon.status?.effect === StatusEffect.TOXIC) { pokemon.status.toxicTurnCount = 0; } - this.scene.arena.applyTags(ArenaTrapTag, false, pokemon); + globalScene.arena.applyTags(ArenaTrapTag, false, pokemon); // If this is mystery encounter and has post summon phase tag, apply post summon effects - if (this.scene.currentBattle.isBattleMysteryEncounter() && pokemon.findTags(t => t instanceof MysteryEncounterPostSummonTag).length > 0) { + if (globalScene.currentBattle.isBattleMysteryEncounter() && pokemon.findTags(t => t instanceof MysteryEncounterPostSummonTag).length > 0) { pokemon.lapseTag(BattlerTagType.MYSTERY_ENCOUNTER_POST_SUMMON); } applyPostSummonAbAttrs(PostSummonAbAttr, pokemon) .then(() => { - const field = pokemon.isPlayer() ? this.scene.getPlayerField() : this.scene.getEnemyField(); + const field = pokemon.isPlayer() ? globalScene.getPlayerField() : globalScene.getEnemyField(); field.forEach((p) => applyAbAttrs(CommanderAbAttr, p, null, false)); this.end(); diff --git a/src/phases/post-turn-status-effect-phase.ts b/src/phases/post-turn-status-effect-phase.ts index 378a932cdc5..13cac6eed7c 100644 --- a/src/phases/post-turn-status-effect-phase.ts +++ b/src/phases/post-turn-status-effect-phase.ts @@ -1,5 +1,5 @@ -import BattleScene from "#app/battle-scene"; -import { BattlerIndex } from "#app/battle"; +import { globalScene } from "#app/global-scene"; +import type { BattlerIndex } from "#app/battle"; import { applyAbAttrs, applyPostDamageAbAttrs, BlockNonDirectDamageAbAttr, BlockStatusDamageAbAttr, PostDamageAbAttr, ReduceBurnDamageAbAttr } from "#app/data/ability"; import { CommonBattleAnim, CommonAnim } from "#app/data/battle-anims"; import { getStatusEffectActivationText } from "#app/data/status-effect"; @@ -10,8 +10,8 @@ import * as Utils from "#app/utils"; import { PokemonPhase } from "./pokemon-phase"; export class PostTurnStatusEffectPhase extends PokemonPhase { - constructor(scene: BattleScene, battlerIndex: BattlerIndex) { - super(scene, battlerIndex); + constructor(battlerIndex: BattlerIndex) { + super(battlerIndex); } start() { @@ -23,7 +23,7 @@ export class PostTurnStatusEffectPhase extends PokemonPhase { applyAbAttrs(BlockStatusDamageAbAttr, pokemon, cancelled); if (!cancelled.value) { - this.scene.queueMessage(getStatusEffectActivationText(pokemon.status.effect, getPokemonNameWithAffix(pokemon))); + globalScene.queueMessage(getStatusEffectActivationText(pokemon.status.effect, getPokemonNameWithAffix(pokemon))); const damage = new Utils.NumberHolder(0); switch (pokemon.status.effect) { case StatusEffect.POISON: @@ -39,11 +39,11 @@ export class PostTurnStatusEffectPhase extends PokemonPhase { } if (damage.value) { // Set preventEndure flag to avoid pokemon surviving thanks to focus band, sturdy, endure ... - this.scene.damageNumberHandler.add(this.getPokemon(), pokemon.damage(damage.value, false, true)); + globalScene.damageNumberHandler.add(this.getPokemon(), pokemon.damage(damage.value, false, true)); pokemon.updateInfo(); applyPostDamageAbAttrs(PostDamageAbAttr, pokemon, damage.value, pokemon.hasPassive(), false, []); } - new CommonBattleAnim(CommonAnim.POISON + (pokemon.status.effect - 1), pokemon).play(this.scene, false, () => this.end()); + new CommonBattleAnim(CommonAnim.POISON + (pokemon.status.effect - 1), pokemon).play(false, () => this.end()); } else { this.end(); } @@ -53,8 +53,8 @@ export class PostTurnStatusEffectPhase extends PokemonPhase { } override end() { - if (this.scene.currentBattle.battleSpec === BattleSpec.FINAL_BOSS) { - this.scene.initFinalBossPhaseTwo(this.getPokemon()); + if (globalScene.currentBattle.battleSpec === BattleSpec.FINAL_BOSS) { + globalScene.initFinalBossPhaseTwo(this.getPokemon()); } else { super.end(); } diff --git a/src/phases/quiet-form-change-phase.ts b/src/phases/quiet-form-change-phase.ts index c9e5bec845d..185156a20c7 100644 --- a/src/phases/quiet-form-change-phase.ts +++ b/src/phases/quiet-form-change-phase.ts @@ -1,10 +1,12 @@ -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { SemiInvulnerableTag } from "#app/data/battler-tags"; -import { SpeciesFormChange, getSpeciesFormChangeMessage } from "#app/data/pokemon-forms"; +import type { SpeciesFormChange } from "#app/data/pokemon-forms"; +import { getSpeciesFormChangeMessage } from "#app/data/pokemon-forms"; import { getTypeRgb } from "#app/data/type"; import { BattleSpec } from "#app/enums/battle-spec"; import { BattlerTagType } from "#app/enums/battler-tag-type"; -import Pokemon, { EnemyPokemon } from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; +import { EnemyPokemon } from "#app/field/pokemon"; import { getPokemonNameWithAffix } from "#app/messages"; import { BattlePhase } from "./battle-phase"; import { MovePhase } from "./move-phase"; @@ -14,8 +16,8 @@ export class QuietFormChangePhase extends BattlePhase { protected pokemon: Pokemon; protected formChange: SpeciesFormChange; - constructor(scene: BattleScene, pokemon: Pokemon, formChange: SpeciesFormChange) { - super(scene); + constructor(pokemon: Pokemon, formChange: SpeciesFormChange) { + super(); this.pokemon = pokemon; this.formChange = formChange; } @@ -32,7 +34,7 @@ export class QuietFormChangePhase extends BattlePhase { if (!this.pokemon.isOnField() || this.pokemon.getTag(SemiInvulnerableTag) || this.pokemon.isFainted()) { if (this.pokemon.isPlayer() || this.pokemon.isActive()) { this.pokemon.changeForm(this.formChange).then(() => { - this.scene.ui.showText(getSpeciesFormChangeMessage(this.pokemon, this.formChange, preName), null, () => this.end(), 1500); + globalScene.ui.showText(getSpeciesFormChangeMessage(this.pokemon, this.formChange, preName), null, () => this.end(), 1500); }); } else { this.end(); @@ -41,7 +43,7 @@ export class QuietFormChangePhase extends BattlePhase { } const getPokemonSprite = () => { - const sprite = this.scene.addPokemonSprite(this.pokemon, this.pokemon.x + this.pokemon.getSprite().x, this.pokemon.y + this.pokemon.getSprite().y, "pkmn__sub"); + const sprite = globalScene.addPokemonSprite(this.pokemon, this.pokemon.x + this.pokemon.getSprite().x, this.pokemon.y + this.pokemon.getSprite().y, "pkmn__sub"); sprite.setOrigin(0.5, 1); const spriteKey = this.pokemon.getBattleSpriteKey(); try { @@ -49,14 +51,14 @@ export class QuietFormChangePhase extends BattlePhase { } catch (err: unknown) { console.error(`Failed to play animation for ${spriteKey}`, err); } - sprite.setPipeline(this.scene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], hasShadow: false, teraColor: getTypeRgb(this.pokemon.getTeraType()) }); + sprite.setPipeline(globalScene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], hasShadow: false, teraColor: getTypeRgb(this.pokemon.getTeraType()) }); [ "spriteColors", "fusionSpriteColors" ].map(k => { if (this.pokemon.summonData?.speciesForm) { k += "Base"; } sprite.pipelineData[k] = this.pokemon.getSprite().pipelineData[k]; }); - this.scene.field.add(sprite); + globalScene.field.add(sprite); return sprite; }; @@ -75,9 +77,9 @@ export class QuietFormChangePhase extends BattlePhase { pokemonFormTintSprite.setVisible(false); pokemonFormTintSprite.setTintFill(0xFFFFFF); - this.scene.playSound("battle_anims/PRSFX- Transform"); + globalScene.playSound("battle_anims/PRSFX- Transform"); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: pokemonTintSprite, alpha: 1, duration: 1000, @@ -93,7 +95,7 @@ export class QuietFormChangePhase extends BattlePhase { console.error(`Failed to play animation for ${spriteKey}`, err); } pokemonFormTintSprite.setVisible(true); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: pokemonTintSprite, delay: 250, scale: 0.01, @@ -101,7 +103,7 @@ export class QuietFormChangePhase extends BattlePhase { duration: 500, onComplete: () => pokemonTintSprite.destroy() }); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: pokemonFormTintSprite, delay: 250, scale: this.pokemon.getSpriteScale(), @@ -109,7 +111,7 @@ export class QuietFormChangePhase extends BattlePhase { duration: 500, onComplete: () => { this.pokemon.setVisible(true); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: pokemonFormTintSprite, delay: 250, alpha: 0, @@ -117,7 +119,7 @@ export class QuietFormChangePhase extends BattlePhase { duration: 1000, onComplete: () => { pokemonTintSprite.setVisible(false); - this.scene.ui.showText(getSpeciesFormChangeMessage(this.pokemon, this.formChange, preName), null, () => this.end(), 1500); + globalScene.ui.showText(getSpeciesFormChangeMessage(this.pokemon, this.formChange, preName), null, () => this.end(), 1500); } }); } @@ -129,16 +131,16 @@ export class QuietFormChangePhase extends BattlePhase { end(): void { this.pokemon.findAndRemoveTags(t => t.tagType === BattlerTagType.AUTOTOMIZED); - if (this.pokemon.scene?.currentBattle.battleSpec === BattleSpec.FINAL_BOSS && this.pokemon instanceof EnemyPokemon) { - this.scene.playBgm(); - this.scene.unshiftPhase(new PokemonHealPhase(this.scene, this.pokemon.getBattlerIndex(), this.pokemon.getMaxHp(), null, false, false, false, true)); + if (globalScene?.currentBattle.battleSpec === BattleSpec.FINAL_BOSS && this.pokemon instanceof EnemyPokemon) { + globalScene.playBgm(); + globalScene.unshiftPhase(new PokemonHealPhase(this.pokemon.getBattlerIndex(), this.pokemon.getMaxHp(), null, false, false, false, true)); this.pokemon.findAndRemoveTags(() => true); this.pokemon.bossSegments = 5; this.pokemon.bossSegmentIndex = 4; this.pokemon.initBattleInfo(); this.pokemon.cry(); - const movePhase = this.scene.findPhase(p => p instanceof MovePhase && p.pokemon === this.pokemon) as MovePhase; + const movePhase = globalScene.findPhase(p => p instanceof MovePhase && p.pokemon === this.pokemon) as MovePhase; if (movePhase) { movePhase.cancel(); } diff --git a/src/phases/reload-session-phase.ts b/src/phases/reload-session-phase.ts index f8a38105869..a88cb1b1de3 100644 --- a/src/phases/reload-session-phase.ts +++ b/src/phases/reload-session-phase.ts @@ -1,4 +1,4 @@ -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { Phase } from "#app/phase"; import { Mode } from "#app/ui/ui"; import * as Utils from "#app/utils"; @@ -6,19 +6,19 @@ import * as Utils from "#app/utils"; export class ReloadSessionPhase extends Phase { private systemDataStr: string | null; - constructor(scene: BattleScene, systemDataStr?: string) { - super(scene); + constructor(systemDataStr?: string) { + super(); this.systemDataStr = systemDataStr ?? null; } start(): void { - this.scene.ui.setMode(Mode.SESSION_RELOAD); + globalScene.ui.setMode(Mode.SESSION_RELOAD); let delayElapsed = false; let loaded = false; - this.scene.time.delayedCall(Utils.fixedInt(1500), () => { + globalScene.time.delayedCall(Utils.fixedInt(1500), () => { if (loaded) { this.end(); } else { @@ -26,9 +26,9 @@ export class ReloadSessionPhase extends Phase { } }); - this.scene.gameData.clearLocalData(); + globalScene.gameData.clearLocalData(); - (this.systemDataStr ? this.scene.gameData.initSystem(this.systemDataStr) : this.scene.gameData.loadSystem()).then(() => { + (this.systemDataStr ? globalScene.gameData.initSystem(this.systemDataStr) : globalScene.gameData.loadSystem()).then(() => { if (delayElapsed) { this.end(); } else { diff --git a/src/phases/return-phase.ts b/src/phases/return-phase.ts index eb587201585..9dd13f6d5be 100644 --- a/src/phases/return-phase.ts +++ b/src/phases/return-phase.ts @@ -1,11 +1,11 @@ -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { SpeciesFormChangeActiveTrigger } from "#app/data/pokemon-forms"; import { SwitchType } from "#enums/switch-type"; import { SwitchSummonPhase } from "./switch-summon-phase"; export class ReturnPhase extends SwitchSummonPhase { - constructor(scene: BattleScene, fieldIndex: integer) { - super(scene, SwitchType.SWITCH, fieldIndex, -1, true); + constructor(fieldIndex: integer) { + super(SwitchType.SWITCH, fieldIndex, -1, true); } switchAndSummon(): void { @@ -21,8 +21,8 @@ export class ReturnPhase extends SwitchSummonPhase { pokemon.resetTurnData(); pokemon.resetSummonData(); - this.scene.updateFieldScale(); + globalScene.updateFieldScale(); - this.scene.triggerPokemonFormChange(pokemon, SpeciesFormChangeActiveTrigger); + globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeActiveTrigger); } } diff --git a/src/phases/ribbon-modifier-reward-phase.ts b/src/phases/ribbon-modifier-reward-phase.ts index fabb3bfa1b1..8cf15ba8f2c 100644 --- a/src/phases/ribbon-modifier-reward-phase.ts +++ b/src/phases/ribbon-modifier-reward-phase.ts @@ -1,6 +1,6 @@ -import BattleScene from "#app/battle-scene"; -import PokemonSpecies from "#app/data/pokemon-species"; -import { ModifierTypeFunc } from "#app/modifier/modifier-type"; +import { globalScene } from "#app/global-scene"; +import type PokemonSpecies from "#app/data/pokemon-species"; +import type { ModifierTypeFunc } from "#app/modifier/modifier-type"; import { Mode } from "#app/ui/ui"; import i18next from "i18next"; import { ModifierRewardPhase } from "./modifier-reward-phase"; @@ -8,8 +8,8 @@ import { ModifierRewardPhase } from "./modifier-reward-phase"; export class RibbonModifierRewardPhase extends ModifierRewardPhase { private species: PokemonSpecies; - constructor(scene: BattleScene, modifierTypeFunc: ModifierTypeFunc, species: PokemonSpecies) { - super(scene, modifierTypeFunc); + constructor(modifierTypeFunc: ModifierTypeFunc, species: PokemonSpecies) { + super(modifierTypeFunc); this.species = species; } @@ -17,12 +17,12 @@ export class RibbonModifierRewardPhase extends ModifierRewardPhase { doReward(): Promise { return new Promise(resolve => { const newModifier = this.modifierType.newModifier(); - this.scene.addModifier(newModifier).then(() => { - this.scene.playSound("level_up_fanfare"); - this.scene.ui.setMode(Mode.MESSAGE); - this.scene.ui.showText(i18next.t("battle:beatModeFirstTime", { + globalScene.addModifier(newModifier).then(() => { + globalScene.playSound("level_up_fanfare"); + globalScene.ui.setMode(Mode.MESSAGE); + globalScene.ui.showText(i18next.t("battle:beatModeFirstTime", { speciesName: this.species.name, - gameMode: this.scene.gameMode.getName(), + gameMode: globalScene.gameMode.getName(), newModifier: newModifier?.type.name }), null, () => { resolve(); diff --git a/src/phases/scan-ivs-phase.ts b/src/phases/scan-ivs-phase.ts index 5ec61d5eec6..b3385a5de94 100644 --- a/src/phases/scan-ivs-phase.ts +++ b/src/phases/scan-ivs-phase.ts @@ -1,5 +1,5 @@ -import BattleScene from "#app/battle-scene"; -import { BattlerIndex } from "#app/battle"; +import { globalScene } from "#app/global-scene"; +import type { BattlerIndex } from "#app/battle"; import { CommonBattleAnim, CommonAnim } from "#app/data/battle-anims"; import { Stat } from "#app/enums/stat"; import { getPokemonNameWithAffix } from "#app/messages"; @@ -11,8 +11,8 @@ import { PokemonPhase } from "./pokemon-phase"; export class ScanIvsPhase extends PokemonPhase { private shownIvs: integer; - constructor(scene: BattleScene, battlerIndex: BattlerIndex, shownIvs: integer) { - super(scene, battlerIndex); + constructor(battlerIndex: BattlerIndex, shownIvs: integer) { + super(battlerIndex); this.shownIvs = shownIvs; } @@ -29,12 +29,12 @@ export class ScanIvsPhase extends PokemonPhase { let enemyIvs: number[] = []; let statsContainer: Phaser.GameObjects.Sprite[] = []; let statsContainerLabels: Phaser.GameObjects.Sprite[] = []; - const enemyField = this.scene.getEnemyField(); - const uiTheme = (this.scene as BattleScene).uiTheme; // Assuming uiTheme is accessible + const enemyField = globalScene.getEnemyField(); + const uiTheme = globalScene.uiTheme; // Assuming uiTheme is accessible for (let e = 0; e < enemyField.length; e++) { enemyIvs = enemyField[e].ivs; - const currentIvs = this.scene.gameData.dexData[enemyField[e].species.getRootSpeciesId()].ivs; // we are using getRootSpeciesId() here because we want to check against the baby form, not the mid form if it exists - const ivsToShow = this.scene.ui.getMessageHandler().getTopIvs(enemyIvs, this.shownIvs); + const currentIvs = globalScene.gameData.dexData[enemyField[e].species.getRootSpeciesId()].ivs; // we are using getRootSpeciesId() here because we want to check against the baby form, not the mid form if it exists + const ivsToShow = globalScene.ui.getMessageHandler().getTopIvs(enemyIvs, this.shownIvs); statsContainer = enemyField[e].getBattleInfo().getStatsValueContainer().list as Phaser.GameObjects.Sprite[]; statsContainerLabels = statsContainer.filter(m => m.name.indexOf("icon_stat_label") >= 0); for (let s = 0; s < statsContainerLabels.length; s++) { @@ -48,17 +48,17 @@ export class ScanIvsPhase extends PokemonPhase { } } - if (!this.scene.hideIvs) { - this.scene.ui.showText(i18next.t("battle:ivScannerUseQuestion", { pokemonName: getPokemonNameWithAffix(pokemon) }), null, () => { - this.scene.ui.setMode(Mode.CONFIRM, () => { - this.scene.ui.setMode(Mode.MESSAGE); - this.scene.ui.clearText(); - new CommonBattleAnim(CommonAnim.LOCK_ON, pokemon, pokemon).play(this.scene, false, () => { - this.scene.ui.getMessageHandler().promptIvs(pokemon.id, pokemon.ivs, this.shownIvs).then(() => this.end()); + if (!globalScene.hideIvs) { + globalScene.ui.showText(i18next.t("battle:ivScannerUseQuestion", { pokemonName: getPokemonNameWithAffix(pokemon) }), null, () => { + globalScene.ui.setMode(Mode.CONFIRM, () => { + globalScene.ui.setMode(Mode.MESSAGE); + globalScene.ui.clearText(); + new CommonBattleAnim(CommonAnim.LOCK_ON, pokemon, pokemon).play(false, () => { + globalScene.ui.getMessageHandler().promptIvs(pokemon.id, pokemon.ivs, this.shownIvs).then(() => this.end()); }); }, () => { - this.scene.ui.setMode(Mode.MESSAGE); - this.scene.ui.clearText(); + globalScene.ui.setMode(Mode.MESSAGE); + globalScene.ui.clearText(); this.end(); }); }); diff --git a/src/phases/select-biome-phase.ts b/src/phases/select-biome-phase.ts index 817cd7bcd3d..41077dfffc1 100644 --- a/src/phases/select-biome-phase.ts +++ b/src/phases/select-biome-phase.ts @@ -1,8 +1,8 @@ -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { biomeLinks, getBiomeName } from "#app/data/balance/biomes"; import { Biome } from "#app/enums/biome"; import { MoneyInterestModifier, MapModifier } from "#app/modifier/modifier"; -import { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; +import type { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; import { Mode } from "#app/ui/ui"; import { BattlePhase } from "./battle-phase"; import * as Utils from "#app/utils"; @@ -10,58 +10,58 @@ import { PartyHealPhase } from "./party-heal-phase"; import { SwitchBiomePhase } from "./switch-biome-phase"; export class SelectBiomePhase extends BattlePhase { - constructor(scene: BattleScene) { - super(scene); + constructor() { + super(); } start() { super.start(); - const currentBiome = this.scene.arena.biomeType; + const currentBiome = globalScene.arena.biomeType; const setNextBiome = (nextBiome: Biome) => { - if (this.scene.currentBattle.waveIndex % 10 === 1) { - this.scene.applyModifiers(MoneyInterestModifier, true, this.scene); - this.scene.unshiftPhase(new PartyHealPhase(this.scene, false)); + if (globalScene.currentBattle.waveIndex % 10 === 1) { + globalScene.applyModifiers(MoneyInterestModifier, true); + globalScene.unshiftPhase(new PartyHealPhase(false)); } - this.scene.unshiftPhase(new SwitchBiomePhase(this.scene, nextBiome)); + globalScene.unshiftPhase(new SwitchBiomePhase(nextBiome)); this.end(); }; - if ((this.scene.gameMode.isClassic && this.scene.gameMode.isWaveFinal(this.scene.currentBattle.waveIndex + 9)) - || (this.scene.gameMode.isDaily && this.scene.gameMode.isWaveFinal(this.scene.currentBattle.waveIndex)) - || (this.scene.gameMode.hasShortBiomes && !(this.scene.currentBattle.waveIndex % 50))) { + if ((globalScene.gameMode.isClassic && globalScene.gameMode.isWaveFinal(globalScene.currentBattle.waveIndex + 9)) + || (globalScene.gameMode.isDaily && globalScene.gameMode.isWaveFinal(globalScene.currentBattle.waveIndex)) + || (globalScene.gameMode.hasShortBiomes && !(globalScene.currentBattle.waveIndex % 50))) { setNextBiome(Biome.END); - } else if (this.scene.gameMode.hasRandomBiomes) { + } else if (globalScene.gameMode.hasRandomBiomes) { setNextBiome(this.generateNextBiome()); } else if (Array.isArray(biomeLinks[currentBiome])) { let biomes: Biome[] = []; - this.scene.executeWithSeedOffset(() => { + globalScene.executeWithSeedOffset(() => { biomes = (biomeLinks[currentBiome] as (Biome | [Biome, integer])[]) .filter(b => !Array.isArray(b) || !Utils.randSeedInt(b[1])) .map(b => !Array.isArray(b) ? b : b[0]); - }, this.scene.currentBattle.waveIndex); - if (biomes.length > 1 && this.scene.findModifier(m => m instanceof MapModifier)) { + }, globalScene.currentBattle.waveIndex); + if (biomes.length > 1 && globalScene.findModifier(m => m instanceof MapModifier)) { let biomeChoices: Biome[] = []; - this.scene.executeWithSeedOffset(() => { + globalScene.executeWithSeedOffset(() => { biomeChoices = (!Array.isArray(biomeLinks[currentBiome]) ? [ biomeLinks[currentBiome] as Biome ] : biomeLinks[currentBiome] as (Biome | [Biome, integer])[]) .filter((b, i) => !Array.isArray(b) || !Utils.randSeedInt(b[1])) .map(b => Array.isArray(b) ? b[0] : b); - }, this.scene.currentBattle.waveIndex); + }, globalScene.currentBattle.waveIndex); const biomeSelectItems = biomeChoices.map(b => { const ret: OptionSelectItem = { label: getBiomeName(b), handler: () => { - this.scene.ui.setMode(Mode.MESSAGE); + globalScene.ui.setMode(Mode.MESSAGE); setNextBiome(b); return true; } }; return ret; }); - this.scene.ui.setMode(Mode.OPTION_SELECT, { + globalScene.ui.setMode(Mode.OPTION_SELECT, { options: biomeSelectItems, delay: 1000 }); @@ -76,9 +76,9 @@ export class SelectBiomePhase extends BattlePhase { } generateNextBiome(): Biome { - if (!(this.scene.currentBattle.waveIndex % 50)) { + if (!(globalScene.currentBattle.waveIndex % 50)) { return Biome.END; } - return this.scene.generateRandomBiome(this.scene.currentBattle.waveIndex); + return globalScene.generateRandomBiome(globalScene.currentBattle.waveIndex); } } diff --git a/src/phases/select-challenge-phase.ts b/src/phases/select-challenge-phase.ts index 9450c60fec5..2a6797d3556 100644 --- a/src/phases/select-challenge-phase.ts +++ b/src/phases/select-challenge-phase.ts @@ -1,17 +1,17 @@ -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { Phase } from "#app/phase"; import { Mode } from "#app/ui/ui"; export class SelectChallengePhase extends Phase { - constructor(scene: BattleScene) { - super(scene); + constructor() { + super(); } start() { super.start(); - this.scene.playBgm("menu"); + globalScene.playBgm("menu"); - this.scene.ui.setMode(Mode.CHALLENGE_SELECT); + globalScene.ui.setMode(Mode.CHALLENGE_SELECT); } } diff --git a/src/phases/select-gender-phase.ts b/src/phases/select-gender-phase.ts index 7f2c965f1d1..45cbb70dcac 100644 --- a/src/phases/select-gender-phase.ts +++ b/src/phases/select-gender-phase.ts @@ -1,4 +1,4 @@ -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { PlayerGender } from "#app/enums/player-gender"; import { Phase } from "#app/phase"; import { SettingKeys } from "#app/system/settings/settings"; @@ -6,31 +6,31 @@ import { Mode } from "#app/ui/ui"; import i18next from "i18next"; export class SelectGenderPhase extends Phase { - constructor(scene: BattleScene) { - super(scene); + constructor() { + super(); } start(): void { super.start(); - this.scene.ui.showText(i18next.t("menu:boyOrGirl"), null, () => { - this.scene.ui.setMode(Mode.OPTION_SELECT, { + globalScene.ui.showText(i18next.t("menu:boyOrGirl"), null, () => { + globalScene.ui.setMode(Mode.OPTION_SELECT, { options: [ { label: i18next.t("settings:boy"), handler: () => { - this.scene.gameData.gender = PlayerGender.MALE; - this.scene.gameData.saveSetting(SettingKeys.Player_Gender, 0); - this.scene.gameData.saveSystem().then(() => this.end()); + globalScene.gameData.gender = PlayerGender.MALE; + globalScene.gameData.saveSetting(SettingKeys.Player_Gender, 0); + globalScene.gameData.saveSystem().then(() => this.end()); return true; } }, { label: i18next.t("settings:girl"), handler: () => { - this.scene.gameData.gender = PlayerGender.FEMALE; - this.scene.gameData.saveSetting(SettingKeys.Player_Gender, 1); - this.scene.gameData.saveSystem().then(() => this.end()); + globalScene.gameData.gender = PlayerGender.FEMALE; + globalScene.gameData.saveSetting(SettingKeys.Player_Gender, 1); + globalScene.gameData.saveSystem().then(() => this.end()); return true; } } @@ -40,7 +40,7 @@ export class SelectGenderPhase extends Phase { } end(): void { - this.scene.ui.setMode(Mode.MESSAGE); + globalScene.ui.setMode(Mode.MESSAGE); super.end(); } } diff --git a/src/phases/select-modifier-phase.ts b/src/phases/select-modifier-phase.ts index 19e1ccc12ae..6c8788c6a51 100644 --- a/src/phases/select-modifier-phase.ts +++ b/src/phases/select-modifier-phase.ts @@ -1,15 +1,18 @@ -import BattleScene from "#app/battle-scene"; -import { ModifierTier } from "#app/modifier/modifier-tier"; -import { regenerateModifierPoolThresholds, ModifierTypeOption, ModifierType, getPlayerShopModifierTypeOptionsForWave, PokemonModifierType, FusePokemonModifierType, PokemonMoveModifierType, TmModifierType, RememberMoveModifierType, PokemonPpRestoreModifierType, PokemonPpUpModifierType, ModifierPoolType, getPlayerModifierTypeOptions } from "#app/modifier/modifier-type"; -import { ExtraModifierModifier, HealShopCostModifier, Modifier, PokemonHeldItemModifier, TempExtraModifierModifier } from "#app/modifier/modifier"; -import ModifierSelectUiHandler, { SHOP_OPTIONS_ROW_LIMIT } from "#app/ui/modifier-select-ui-handler"; +import { globalScene } from "#app/global-scene"; +import type { ModifierTier } from "#app/modifier/modifier-tier"; +import type { ModifierTypeOption, ModifierType } from "#app/modifier/modifier-type"; +import { regenerateModifierPoolThresholds, getPlayerShopModifierTypeOptionsForWave, PokemonModifierType, FusePokemonModifierType, PokemonMoveModifierType, TmModifierType, RememberMoveModifierType, PokemonPpRestoreModifierType, PokemonPpUpModifierType, ModifierPoolType, getPlayerModifierTypeOptions } from "#app/modifier/modifier-type"; +import type { Modifier } from "#app/modifier/modifier"; +import { ExtraModifierModifier, HealShopCostModifier, PokemonHeldItemModifier, TempExtraModifierModifier } from "#app/modifier/modifier"; +import type ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; +import { SHOP_OPTIONS_ROW_LIMIT } from "#app/ui/modifier-select-ui-handler"; import PartyUiHandler, { PartyUiMode, PartyOption } from "#app/ui/party-ui-handler"; import { Mode } from "#app/ui/ui"; import i18next from "i18next"; import * as Utils from "#app/utils"; import { BattlePhase } from "./battle-phase"; import Overrides from "#app/overrides"; -import { CustomModifierSettings } from "#app/modifier/modifier-type"; +import type { CustomModifierSettings } from "#app/modifier/modifier-type"; import { isNullOrUndefined, NumberHolder } from "#app/utils"; export class SelectModifierPhase extends BattlePhase { @@ -20,8 +23,8 @@ export class SelectModifierPhase extends BattlePhase { private typeOptions: ModifierTypeOption[]; - constructor(scene: BattleScene, rerollCount: integer = 0, modifierTiers?: ModifierTier[], customModifierSettings?: CustomModifierSettings, isCopy: boolean = false) { - super(scene); + constructor(rerollCount: integer = 0, modifierTiers?: ModifierTier[], customModifierSettings?: CustomModifierSettings, isCopy: boolean = false) { + super(); this.rerollCount = rerollCount; this.modifierTiers = modifierTiers; @@ -35,17 +38,17 @@ export class SelectModifierPhase extends BattlePhase { if (!this.rerollCount && !this.isCopy) { this.updateSeed(); } else if (this.rerollCount) { - this.scene.reroll = false; + globalScene.reroll = false; } - const party = this.scene.getPlayerParty(); + const party = globalScene.getPlayerParty(); if (!this.isCopy) { regenerateModifierPoolThresholds(party, this.getPoolType(), this.rerollCount); } const modifierCount = new Utils.IntegerHolder(3); if (this.isPlayer()) { - this.scene.applyModifiers(ExtraModifierModifier, true, modifierCount); - this.scene.applyModifiers(TempExtraModifierModifier, true, modifierCount); + globalScene.applyModifiers(ExtraModifierModifier, true, modifierCount); + globalScene.applyModifiers(TempExtraModifierModifier, true, modifierCount); } // If custom modifiers are specified, overrides default item count @@ -65,64 +68,64 @@ export class SelectModifierPhase extends BattlePhase { const modifierSelectCallback = (rowCursor: integer, cursor: integer) => { if (rowCursor < 0 || cursor < 0) { - this.scene.ui.showText(i18next.t("battle:skipItemQuestion"), null, () => { - this.scene.ui.setOverlayMode(Mode.CONFIRM, () => { - this.scene.ui.revertMode(); - this.scene.ui.setMode(Mode.MESSAGE); + globalScene.ui.showText(i18next.t("battle:skipItemQuestion"), null, () => { + globalScene.ui.setOverlayMode(Mode.CONFIRM, () => { + globalScene.ui.revertMode(); + globalScene.ui.setMode(Mode.MESSAGE); super.end(); - }, () => this.scene.ui.setMode(Mode.MODIFIER_SELECT, this.isPlayer(), this.typeOptions, modifierSelectCallback, this.getRerollCost(this.scene.lockModifierTiers))); + }, () => globalScene.ui.setMode(Mode.MODIFIER_SELECT, this.isPlayer(), this.typeOptions, modifierSelectCallback, this.getRerollCost(globalScene.lockModifierTiers))); }); return false; } let modifierType: ModifierType; let cost: integer; - const rerollCost = this.getRerollCost(this.scene.lockModifierTiers); + const rerollCost = this.getRerollCost(globalScene.lockModifierTiers); switch (rowCursor) { case 0: switch (cursor) { case 0: - if (rerollCost < 0 || this.scene.money < rerollCost) { - this.scene.ui.playError(); + if (rerollCost < 0 || globalScene.money < rerollCost) { + globalScene.ui.playError(); return false; } else { - this.scene.reroll = true; - this.scene.unshiftPhase(new SelectModifierPhase(this.scene, this.rerollCount + 1, this.typeOptions.map(o => o.type?.tier).filter(t => t !== undefined) as ModifierTier[])); - this.scene.ui.clearText(); - this.scene.ui.setMode(Mode.MESSAGE).then(() => super.end()); + globalScene.reroll = true; + globalScene.unshiftPhase(new SelectModifierPhase(this.rerollCount + 1, this.typeOptions.map(o => o.type?.tier).filter(t => t !== undefined) as ModifierTier[])); + globalScene.ui.clearText(); + globalScene.ui.setMode(Mode.MESSAGE).then(() => super.end()); if (!Overrides.WAIVE_ROLL_FEE_OVERRIDE) { - this.scene.money -= rerollCost; - this.scene.updateMoneyText(); - this.scene.animateMoneyChanged(false); + globalScene.money -= rerollCost; + globalScene.updateMoneyText(); + globalScene.animateMoneyChanged(false); } - this.scene.playSound("se/buy"); + globalScene.playSound("se/buy"); } break; case 1: - this.scene.ui.setModeWithoutClear(Mode.PARTY, PartyUiMode.MODIFIER_TRANSFER, -1, (fromSlotIndex: integer, itemIndex: integer, itemQuantity: integer, toSlotIndex: integer) => { + globalScene.ui.setModeWithoutClear(Mode.PARTY, PartyUiMode.MODIFIER_TRANSFER, -1, (fromSlotIndex: integer, itemIndex: integer, itemQuantity: integer, toSlotIndex: integer) => { if (toSlotIndex !== undefined && fromSlotIndex < 6 && toSlotIndex < 6 && fromSlotIndex !== toSlotIndex && itemIndex > -1) { - const itemModifiers = this.scene.findModifiers(m => m instanceof PokemonHeldItemModifier + const itemModifiers = globalScene.findModifiers(m => m instanceof PokemonHeldItemModifier && m.isTransferable && m.pokemonId === party[fromSlotIndex].id) as PokemonHeldItemModifier[]; const itemModifier = itemModifiers[itemIndex]; - this.scene.tryTransferHeldItemModifier(itemModifier, party[toSlotIndex], true, itemQuantity, undefined, undefined, false); + globalScene.tryTransferHeldItemModifier(itemModifier, party[toSlotIndex], true, itemQuantity, undefined, undefined, false); } else { - this.scene.ui.setMode(Mode.MODIFIER_SELECT, this.isPlayer(), this.typeOptions, modifierSelectCallback, this.getRerollCost(this.scene.lockModifierTiers)); + globalScene.ui.setMode(Mode.MODIFIER_SELECT, this.isPlayer(), this.typeOptions, modifierSelectCallback, this.getRerollCost(globalScene.lockModifierTiers)); } }, PartyUiHandler.FilterItemMaxStacks); break; case 2: - this.scene.ui.setModeWithoutClear(Mode.PARTY, PartyUiMode.CHECK, -1, () => { - this.scene.ui.setMode(Mode.MODIFIER_SELECT, this.isPlayer(), this.typeOptions, modifierSelectCallback, this.getRerollCost(this.scene.lockModifierTiers)); + globalScene.ui.setModeWithoutClear(Mode.PARTY, PartyUiMode.CHECK, -1, () => { + globalScene.ui.setMode(Mode.MODIFIER_SELECT, this.isPlayer(), this.typeOptions, modifierSelectCallback, this.getRerollCost(globalScene.lockModifierTiers)); }); break; case 3: if (rerollCost < 0) { // Reroll lock button is also disabled when reroll is disabled - this.scene.ui.playError(); + globalScene.ui.playError(); return false; } - this.scene.lockModifierTiers = !this.scene.lockModifierTiers; - const uiHandler = this.scene.ui.getHandler() as ModifierSelectUiHandler; - uiHandler.setRerollCost(this.getRerollCost(this.scene.lockModifierTiers)); + globalScene.lockModifierTiers = !globalScene.lockModifierTiers; + const uiHandler = globalScene.ui.getHandler() as ModifierSelectUiHandler; + uiHandler.setRerollCost(this.getRerollCost(globalScene.lockModifierTiers)); uiHandler.updateLockRaritiesText(); uiHandler.updateRerollCostText(); return false; @@ -130,8 +133,8 @@ export class SelectModifierPhase extends BattlePhase { return true; case 1: if (this.typeOptions.length === 0) { - this.scene.ui.clearText(); - this.scene.ui.setMode(Mode.MESSAGE); + globalScene.ui.clearText(); + globalScene.ui.setMode(Mode.MESSAGE); super.end(); return true; } @@ -140,51 +143,51 @@ export class SelectModifierPhase extends BattlePhase { } break; default: - const shopOptions = getPlayerShopModifierTypeOptionsForWave(this.scene.currentBattle.waveIndex, this.scene.getWaveMoneyAmount(1)); + const shopOptions = getPlayerShopModifierTypeOptionsForWave(globalScene.currentBattle.waveIndex, globalScene.getWaveMoneyAmount(1)); const shopOption = shopOptions[rowCursor > 2 || shopOptions.length <= SHOP_OPTIONS_ROW_LIMIT ? cursor : cursor + SHOP_OPTIONS_ROW_LIMIT]; if (shopOption.type) { modifierType = shopOption.type; } // Apply Black Sludge to healing item cost const healingItemCost = new NumberHolder(shopOption.cost); - this.scene.applyModifier(HealShopCostModifier, true, healingItemCost); + globalScene.applyModifier(HealShopCostModifier, true, healingItemCost); cost = healingItemCost.value; break; } - if (cost! && (this.scene.money < cost) && !Overrides.WAIVE_ROLL_FEE_OVERRIDE) { // TODO: is the bang on cost correct? - this.scene.ui.playError(); + if (cost! && (globalScene.money < cost) && !Overrides.WAIVE_ROLL_FEE_OVERRIDE) { // TODO: is the bang on cost correct? + globalScene.ui.playError(); return false; } const applyModifier = (modifier: Modifier, playSound: boolean = false) => { - const result = this.scene.addModifier(modifier, false, playSound, undefined, undefined, cost); + 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, // they are returned to a shop in the same state. if (modifier.type instanceof RememberMoveModifierType || modifier.type instanceof TmModifierType) { - this.scene.unshiftPhase(this.copy()); + globalScene.unshiftPhase(this.copy()); } if (cost && !(modifier.type instanceof RememberMoveModifierType)) { result.then(success => { if (success) { if (!Overrides.WAIVE_ROLL_FEE_OVERRIDE) { - this.scene.money -= cost; - this.scene.updateMoneyText(); - this.scene.animateMoneyChanged(false); + globalScene.money -= cost; + globalScene.updateMoneyText(); + globalScene.animateMoneyChanged(false); } - this.scene.playSound("se/buy"); - (this.scene.ui.getHandler() as ModifierSelectUiHandler).updateCostText(); + globalScene.playSound("se/buy"); + (globalScene.ui.getHandler() as ModifierSelectUiHandler).updateCostText(); } else { - this.scene.ui.playError(); + globalScene.ui.playError(); } }); } else { const doEnd = () => { - this.scene.ui.clearText(); - this.scene.ui.setMode(Mode.MESSAGE); + globalScene.ui.clearText(); + globalScene.ui.setMode(Mode.MESSAGE); super.end(); }; if (result instanceof Promise) { @@ -197,14 +200,14 @@ export class SelectModifierPhase extends BattlePhase { if (modifierType! instanceof PokemonModifierType) { //TODO: is the bang correct? if (modifierType instanceof FusePokemonModifierType) { - this.scene.ui.setModeWithoutClear(Mode.PARTY, PartyUiMode.SPLICE, -1, (fromSlotIndex: integer, spliceSlotIndex: integer) => { + globalScene.ui.setModeWithoutClear(Mode.PARTY, PartyUiMode.SPLICE, -1, (fromSlotIndex: integer, spliceSlotIndex: integer) => { if (spliceSlotIndex !== undefined && fromSlotIndex < 6 && spliceSlotIndex < 6 && fromSlotIndex !== spliceSlotIndex) { - this.scene.ui.setMode(Mode.MODIFIER_SELECT, this.isPlayer()).then(() => { + globalScene.ui.setMode(Mode.MODIFIER_SELECT, this.isPlayer()).then(() => { const modifier = modifierType.newModifier(party[fromSlotIndex], party[spliceSlotIndex])!; //TODO: is the bang correct? applyModifier(modifier, true); }); } else { - this.scene.ui.setMode(Mode.MODIFIER_SELECT, this.isPlayer(), this.typeOptions, modifierSelectCallback, this.getRerollCost(this.scene.lockModifierTiers)); + globalScene.ui.setMode(Mode.MODIFIER_SELECT, this.isPlayer(), this.typeOptions, modifierSelectCallback, this.getRerollCost(globalScene.lockModifierTiers)); } }, modifierType.selectFilter); } else { @@ -220,9 +223,9 @@ export class SelectModifierPhase extends BattlePhase { const tmMoveId = isTmModifier ? (modifierType as TmModifierType).moveId : undefined; - this.scene.ui.setModeWithoutClear(Mode.PARTY, partyUiMode, -1, (slotIndex: integer, option: PartyOption) => { + globalScene.ui.setModeWithoutClear(Mode.PARTY, partyUiMode, -1, (slotIndex: integer, option: PartyOption) => { if (slotIndex < 6) { - this.scene.ui.setMode(Mode.MODIFIER_SELECT, this.isPlayer()).then(() => { + globalScene.ui.setMode(Mode.MODIFIER_SELECT, this.isPlayer()).then(() => { const modifier = !isMoveModifier ? !isRememberMoveModifier ? modifierType.newModifier(party[slotIndex]) @@ -231,7 +234,7 @@ export class SelectModifierPhase extends BattlePhase { applyModifier(modifier!, true); // TODO: is the bang correct? }); } else { - this.scene.ui.setMode(Mode.MODIFIER_SELECT, this.isPlayer(), this.typeOptions, modifierSelectCallback, this.getRerollCost(this.scene.lockModifierTiers)); + globalScene.ui.setMode(Mode.MODIFIER_SELECT, this.isPlayer(), this.typeOptions, modifierSelectCallback, this.getRerollCost(globalScene.lockModifierTiers)); } }, pokemonModifierType.selectFilter, modifierType instanceof PokemonMoveModifierType ? (modifierType as PokemonMoveModifierType).moveSelectFilter : undefined, tmMoveId, isPpRestoreModifier); } @@ -241,11 +244,11 @@ export class SelectModifierPhase extends BattlePhase { return !cost!;// TODO: is the bang correct? }; - this.scene.ui.setMode(Mode.MODIFIER_SELECT, this.isPlayer(), this.typeOptions, modifierSelectCallback, this.getRerollCost(this.scene.lockModifierTiers)); + globalScene.ui.setMode(Mode.MODIFIER_SELECT, this.isPlayer(), this.typeOptions, modifierSelectCallback, this.getRerollCost(globalScene.lockModifierTiers)); } updateSeed(): void { - this.scene.resetSeed(); + globalScene.resetSeed(); } isPlayer(): boolean { @@ -276,11 +279,11 @@ export class SelectModifierPhase extends BattlePhase { multiplier = this.customModifierSettings.rerollMultiplier; } - const baseMultiplier = Math.min(Math.ceil(this.scene.currentBattle.waveIndex / 10) * baseValue * (2 ** this.rerollCount) * multiplier, Number.MAX_SAFE_INTEGER); + const baseMultiplier = Math.min(Math.ceil(globalScene.currentBattle.waveIndex / 10) * baseValue * (2 ** this.rerollCount) * multiplier, Number.MAX_SAFE_INTEGER); // Apply Black Sludge to reroll cost const modifiedRerollCost = new NumberHolder(baseMultiplier); - this.scene.applyModifier(HealShopCostModifier, true, modifiedRerollCost); + globalScene.applyModifier(HealShopCostModifier, true, modifiedRerollCost); return modifiedRerollCost.value; } @@ -289,12 +292,11 @@ export class SelectModifierPhase extends BattlePhase { } getModifierTypeOptions(modifierCount: integer): ModifierTypeOption[] { - return getPlayerModifierTypeOptions(modifierCount, this.scene.getPlayerParty(), this.scene.lockModifierTiers ? this.modifierTiers : undefined, this.customModifierSettings); + return getPlayerModifierTypeOptions(modifierCount, globalScene.getPlayerParty(), globalScene.lockModifierTiers ? this.modifierTiers : undefined, this.customModifierSettings); } copy(): SelectModifierPhase { return new SelectModifierPhase( - this.scene, this.rerollCount, this.modifierTiers, { guaranteedModifierTypeOptions: this.typeOptions, rerollMultiplier: this.customModifierSettings?.rerollMultiplier, allowLuckUpgrades: false }, @@ -303,6 +305,6 @@ export class SelectModifierPhase extends BattlePhase { } addModifier(modifier: Modifier): Promise { - return this.scene.addModifier(modifier, false, true); + return globalScene.addModifier(modifier, false, true); } } diff --git a/src/phases/select-starter-phase.ts b/src/phases/select-starter-phase.ts index 2273ab1cd3c..20ba414147a 100644 --- a/src/phases/select-starter-phase.ts +++ b/src/phases/select-starter-phase.ts @@ -1,4 +1,4 @@ -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { applyChallenges, ChallengeType } from "#app/data/challenge"; import { Gender } from "#app/data/gender"; import { SpeciesFormChangeMoveLearnedTrigger } from "#app/data/pokemon-forms"; @@ -8,31 +8,31 @@ import Overrides from "#app/overrides"; import { Phase } from "#app/phase"; import { TitlePhase } from "#app/phases/title-phase"; import { SaveSlotUiMode } from "#app/ui/save-slot-select-ui-handler"; -import { Starter } from "#app/ui/starter-select-ui-handler"; +import type { Starter } from "#app/ui/starter-select-ui-handler"; import { Mode } from "#app/ui/ui"; -import { Species } from "#enums/species"; +import type { Species } from "#enums/species"; import SoundFade from "phaser3-rex-plugins/plugins/soundfade"; export class SelectStarterPhase extends Phase { - constructor(scene: BattleScene) { - super(scene); + constructor() { + super(); } start() { super.start(); - this.scene.playBgm("menu"); + globalScene.playBgm("menu"); - this.scene.ui.setMode(Mode.STARTER_SELECT, (starters: Starter[]) => { - this.scene.ui.clearText(); - this.scene.ui.setMode(Mode.SAVE_SLOT, SaveSlotUiMode.SAVE, (slotId: integer) => { + globalScene.ui.setMode(Mode.STARTER_SELECT, (starters: Starter[]) => { + globalScene.ui.clearText(); + globalScene.ui.setMode(Mode.SAVE_SLOT, SaveSlotUiMode.SAVE, (slotId: integer) => { if (slotId === -1) { - this.scene.clearPhaseQueue(); - this.scene.pushPhase(new TitlePhase(this.scene)); + globalScene.clearPhaseQueue(); + globalScene.pushPhase(new TitlePhase()); return this.end(); } - this.scene.sessionSlotId = slotId; + globalScene.sessionSlotId = slotId; this.initBattle(starters); }); }); @@ -43,13 +43,13 @@ export class SelectStarterPhase extends Phase { * @param starters {@linkcode Pokemon} with which to start the first battle */ initBattle(starters: Starter[]) { - const party = this.scene.getPlayerParty(); + const party = globalScene.getPlayerParty(); const loadPokemonAssets: Promise[] = []; starters.forEach((starter: Starter, i: integer) => { if (!i && Overrides.STARTER_SPECIES_OVERRIDE) { starter.species = getPokemonSpecies(Overrides.STARTER_SPECIES_OVERRIDE as Species); } - const starterProps = this.scene.gameData.getSpeciesDexAttrProps(starter.species, starter.dexAttr); + const starterProps = globalScene.gameData.getSpeciesDexAttrProps(starter.species, starter.dexAttr); let starterFormIndex = Math.min(starterProps.formIndex, Math.max(starter.species.forms.length - 1, 0)); if ( starter.species.speciesId in Overrides.STARTER_FORM_OVERRIDES && @@ -64,13 +64,13 @@ export class SelectStarterPhase extends Phase { if (Overrides.GENDER_OVERRIDE !== null) { starterGender = Overrides.GENDER_OVERRIDE; } - const starterIvs = this.scene.gameData.dexData[starter.species.speciesId].ivs.slice(0); - const starterPokemon = this.scene.addPlayerPokemon(starter.species, this.scene.gameMode.getStartingLevel(), starter.abilityIndex, starterFormIndex, starterGender, starterProps.shiny, starterProps.variant, starterIvs, starter.nature); + const starterIvs = globalScene.gameData.dexData[starter.species.speciesId].ivs.slice(0); + const starterPokemon = globalScene.addPlayerPokemon(starter.species, globalScene.gameMode.getStartingLevel(), starter.abilityIndex, starterFormIndex, starterGender, starterProps.shiny, starterProps.variant, starterIvs, starter.nature); starter.moveset && starterPokemon.tryPopulateMoveset(starter.moveset); if (starter.passive) { starterPokemon.passive = true; } - starterPokemon.luck = this.scene.gameData.getDexAttrLuck(this.scene.gameData.dexData[starter.species.speciesId].caughtAttr); + starterPokemon.luck = globalScene.gameData.getDexAttrLuck(globalScene.gameData.dexData[starter.species.speciesId].caughtAttr); if (starter.pokerus) { starterPokemon.pokerus = true; } @@ -79,31 +79,31 @@ export class SelectStarterPhase extends Phase { starterPokemon.nickname = starter.nickname; } - if (this.scene.gameMode.isSplicedOnly || Overrides.STARTER_FUSION_OVERRIDE) { + if (globalScene.gameMode.isSplicedOnly || Overrides.STARTER_FUSION_OVERRIDE) { starterPokemon.generateFusionSpecies(true); } starterPokemon.setVisible(false); - applyChallenges(this.scene.gameMode, ChallengeType.STARTER_MODIFY, starterPokemon); + applyChallenges(globalScene.gameMode, ChallengeType.STARTER_MODIFY, starterPokemon); party.push(starterPokemon); loadPokemonAssets.push(starterPokemon.loadAssets()); }); - overrideModifiers(this.scene); - overrideHeldItems(this.scene, party[0]); + overrideModifiers(); + overrideHeldItems(party[0]); Promise.all(loadPokemonAssets).then(() => { - SoundFade.fadeOut(this.scene, this.scene.sound.get("menu"), 500, true); - this.scene.time.delayedCall(500, () => this.scene.playBgm()); - if (this.scene.gameMode.isClassic) { - this.scene.gameData.gameStats.classicSessionsPlayed++; + SoundFade.fadeOut(globalScene, globalScene.sound.get("menu"), 500, true); + globalScene.time.delayedCall(500, () => globalScene.playBgm()); + if (globalScene.gameMode.isClassic) { + globalScene.gameData.gameStats.classicSessionsPlayed++; } else { - this.scene.gameData.gameStats.endlessSessionsPlayed++; + globalScene.gameData.gameStats.endlessSessionsPlayed++; } - this.scene.newBattle(); - this.scene.arena.init(); - this.scene.sessionPlayTime = 0; - this.scene.lastSavePlayTime = 0; + globalScene.newBattle(); + globalScene.arena.init(); + globalScene.sessionPlayTime = 0; + globalScene.lastSavePlayTime = 0; // Ensures Keldeo (or any future Pokemon that have this type of form change) starts in the correct form - this.scene.getPlayerParty().forEach((p) => { - this.scene.triggerPokemonFormChange(p, SpeciesFormChangeMoveLearnedTrigger); + globalScene.getPlayerParty().forEach((p) => { + globalScene.triggerPokemonFormChange(p, SpeciesFormChangeMoveLearnedTrigger); }); this.end(); }); diff --git a/src/phases/select-target-phase.ts b/src/phases/select-target-phase.ts index 6f11f984c4b..b21415746fb 100644 --- a/src/phases/select-target-phase.ts +++ b/src/phases/select-target-phase.ts @@ -1,5 +1,5 @@ -import BattleScene from "#app/battle-scene"; -import { BattlerIndex } from "#app/battle"; +import { globalScene } from "#app/global-scene"; +import type { BattlerIndex } from "#app/battle"; import { Command } from "#app/ui/command-ui-handler"; import { Mode } from "#app/ui/ui"; import { CommandPhase } from "./command-phase"; @@ -8,33 +8,33 @@ import i18next from "#app/plugins/i18n"; import { allMoves } from "#app/data/move"; export class SelectTargetPhase extends PokemonPhase { - constructor(scene: BattleScene, fieldIndex: integer) { - super(scene, fieldIndex); + constructor(fieldIndex: integer) { + super(fieldIndex); } start() { super.start(); - const turnCommand = this.scene.currentBattle.turnCommands[this.fieldIndex]; + const turnCommand = globalScene.currentBattle.turnCommands[this.fieldIndex]; const move = turnCommand?.move?.move; - this.scene.ui.setMode(Mode.TARGET_SELECT, this.fieldIndex, move, (targets: BattlerIndex[]) => { - this.scene.ui.setMode(Mode.MESSAGE); - const fieldSide = this.scene.getField(); + globalScene.ui.setMode(Mode.TARGET_SELECT, this.fieldIndex, move, (targets: BattlerIndex[]) => { + globalScene.ui.setMode(Mode.MESSAGE); + const fieldSide = globalScene.getField(); const user = fieldSide[this.fieldIndex]; const moveObject = allMoves[move!]; if (moveObject && user.isMoveTargetRestricted(moveObject.id, user, fieldSide[targets[0]])) { const errorMessage = user.getRestrictingTag(move!, user, fieldSide[targets[0]])!.selectionDeniedText(user, moveObject.id); - user.scene.queueMessage(i18next.t(errorMessage, { moveName: moveObject.name }), 0, true); + globalScene.queueMessage(i18next.t(errorMessage, { moveName: moveObject.name }), 0, true); targets = []; } if (targets.length < 1) { - this.scene.currentBattle.turnCommands[this.fieldIndex] = null; - this.scene.unshiftPhase(new CommandPhase(this.scene, this.fieldIndex)); + globalScene.currentBattle.turnCommands[this.fieldIndex] = null; + globalScene.unshiftPhase(new CommandPhase(this.fieldIndex)); } else { turnCommand!.targets = targets; //TODO: is the bang correct here? } if (turnCommand?.command === Command.BALL && this.fieldIndex) { - this.scene.currentBattle.turnCommands[this.fieldIndex - 1]!.skip = true; //TODO: is the bang correct here? + globalScene.currentBattle.turnCommands[this.fieldIndex - 1]!.skip = true; //TODO: is the bang correct here? } this.end(); }); diff --git a/src/phases/shiny-sparkle-phase.ts b/src/phases/shiny-sparkle-phase.ts index 49c60a82dd5..2540d98fb79 100644 --- a/src/phases/shiny-sparkle-phase.ts +++ b/src/phases/shiny-sparkle-phase.ts @@ -1,16 +1,16 @@ -import BattleScene from "#app/battle-scene"; -import { BattlerIndex } from "#app/battle"; +import { globalScene } from "#app/global-scene"; +import type { BattlerIndex } from "#app/battle"; import { PokemonPhase } from "./pokemon-phase"; export class ShinySparklePhase extends PokemonPhase { - constructor(scene: BattleScene, battlerIndex: BattlerIndex) { - super(scene, battlerIndex); + constructor(battlerIndex: BattlerIndex) { + super(battlerIndex); } start() { super.start(); this.getPokemon().sparkle(); - this.scene.time.delayedCall(1000, () => this.end()); + globalScene.time.delayedCall(1000, () => this.end()); } } diff --git a/src/phases/show-ability-phase.ts b/src/phases/show-ability-phase.ts index cf34e327b4f..a0db660ded5 100644 --- a/src/phases/show-ability-phase.ts +++ b/src/phases/show-ability-phase.ts @@ -1,12 +1,12 @@ -import BattleScene from "#app/battle-scene"; -import { BattlerIndex } from "#app/battle"; +import { globalScene } from "#app/global-scene"; +import type { BattlerIndex } from "#app/battle"; import { PokemonPhase } from "./pokemon-phase"; export class ShowAbilityPhase extends PokemonPhase { private passive: boolean; - constructor(scene: BattleScene, battlerIndex: BattlerIndex, passive: boolean = false) { - super(scene, battlerIndex); + constructor(battlerIndex: BattlerIndex, passive: boolean = false) { + super(battlerIndex); this.passive = passive; } @@ -17,7 +17,7 @@ export class ShowAbilityPhase extends PokemonPhase { const pokemon = this.getPokemon(); if (pokemon) { - this.scene.abilityBar.showAbility(pokemon, this.passive); + globalScene.abilityBar.showAbility(pokemon, this.passive); if (pokemon?.battleData) { pokemon.battleData.abilityRevealed = true; diff --git a/src/phases/show-party-exp-bar-phase.ts b/src/phases/show-party-exp-bar-phase.ts index f1783e7715f..71bd39e3898 100644 --- a/src/phases/show-party-exp-bar-phase.ts +++ b/src/phases/show-party-exp-bar-phase.ts @@ -1,4 +1,4 @@ -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { ExpGainsSpeed } from "#app/enums/exp-gains-speed"; import { ExpNotification } from "#app/enums/exp-notification"; import { ExpBoosterModifier } from "#app/modifier/modifier"; @@ -10,8 +10,8 @@ import { PlayerPartyMemberPokemonPhase } from "./player-party-member-pokemon-pha export class ShowPartyExpBarPhase extends PlayerPartyMemberPokemonPhase { private expValue: number; - constructor(scene: BattleScene, partyMemberIndex: integer, expValue: number) { - super(scene, partyMemberIndex); + constructor(partyMemberIndex: integer, expValue: number) { + super(partyMemberIndex); this.expValue = expValue; } @@ -21,33 +21,33 @@ export class ShowPartyExpBarPhase extends PlayerPartyMemberPokemonPhase { const pokemon = this.getPokemon(); const exp = new Utils.NumberHolder(this.expValue); - this.scene.applyModifiers(ExpBoosterModifier, true, exp); + globalScene.applyModifiers(ExpBoosterModifier, true, exp); exp.value = Math.floor(exp.value); const lastLevel = pokemon.level; pokemon.addExp(exp.value); const newLevel = pokemon.level; if (newLevel > lastLevel) { - this.scene.unshiftPhase(new LevelUpPhase(this.scene, this.partyMemberIndex, lastLevel, newLevel)); + globalScene.unshiftPhase(new LevelUpPhase(this.partyMemberIndex, lastLevel, newLevel)); } - this.scene.unshiftPhase(new HidePartyExpBarPhase(this.scene)); + globalScene.unshiftPhase(new HidePartyExpBarPhase()); pokemon.updateInfo(); - if (this.scene.expParty === ExpNotification.SKIP) { + if (globalScene.expParty === ExpNotification.SKIP) { this.end(); - } else if (this.scene.expParty === ExpNotification.ONLY_LEVEL_UP) { + } else if (globalScene.expParty === ExpNotification.ONLY_LEVEL_UP) { if (newLevel > lastLevel) { // this means if we level up // instead of displaying the exp gain in the small frame, we display the new level // we use the same method for mode 0 & 1, by giving a parameter saying to display the exp or the level - this.scene.partyExpBar.showPokemonExp(pokemon, exp.value, this.scene.expParty === ExpNotification.ONLY_LEVEL_UP, newLevel).then(() => { - setTimeout(() => this.end(), 800 / Math.pow(2, this.scene.expGainsSpeed)); + globalScene.partyExpBar.showPokemonExp(pokemon, exp.value, globalScene.expParty === ExpNotification.ONLY_LEVEL_UP, newLevel).then(() => { + setTimeout(() => this.end(), 800 / Math.pow(2, globalScene.expGainsSpeed)); }); } else { this.end(); } - } else if (this.scene.expGainsSpeed < ExpGainsSpeed.SKIP) { - this.scene.partyExpBar.showPokemonExp(pokemon, exp.value, false, newLevel).then(() => { - setTimeout(() => this.end(), 500 / Math.pow(2, this.scene.expGainsSpeed)); + } else if (globalScene.expGainsSpeed < ExpGainsSpeed.SKIP) { + globalScene.partyExpBar.showPokemonExp(pokemon, exp.value, false, newLevel).then(() => { + setTimeout(() => this.end(), 500 / Math.pow(2, globalScene.expGainsSpeed)); }); } else { this.end(); diff --git a/src/phases/show-trainer-phase.ts b/src/phases/show-trainer-phase.ts index 26ccddd53fc..17106b54048 100644 --- a/src/phases/show-trainer-phase.ts +++ b/src/phases/show-trainer-phase.ts @@ -1,21 +1,21 @@ -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { PlayerGender } from "#app/enums/player-gender"; import { BattlePhase } from "./battle-phase"; export class ShowTrainerPhase extends BattlePhase { - constructor(scene: BattleScene) { - super(scene); + constructor() { + super(); } start() { super.start(); - this.scene.trainer.setVisible(true); + globalScene.trainer.setVisible(true); - this.scene.trainer.setTexture(`trainer_${this.scene.gameData.gender === PlayerGender.FEMALE ? "f" : "m"}_back`); + globalScene.trainer.setTexture(`trainer_${globalScene.gameData.gender === PlayerGender.FEMALE ? "f" : "m"}_back`); - this.scene.tweens.add({ - targets: this.scene.trainer, + globalScene.tweens.add({ + targets: globalScene.trainer, x: 106, duration: 1000, onComplete: () => this.end() diff --git a/src/phases/stat-stage-change-phase.ts b/src/phases/stat-stage-change-phase.ts index 44144f9d047..f2e95446139 100644 --- a/src/phases/stat-stage-change-phase.ts +++ b/src/phases/stat-stage-change-phase.ts @@ -1,8 +1,8 @@ -import { BattlerIndex } from "#app/battle"; -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; +import type { BattlerIndex } from "#app/battle"; import { applyAbAttrs, applyPostStatStageChangeAbAttrs, applyPreStatStageChangeAbAttrs, PostStatStageChangeAbAttr, ProtectStatAbAttr, StatStageChangeCopyAbAttr, StatStageChangeMultiplierAbAttr } from "#app/data/ability"; import { ArenaTagSide, MistTag } from "#app/data/arena-tag"; -import Pokemon from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; import { getPokemonNameWithAffix } from "#app/messages"; import { ResetNegativeStatStageModifier } from "#app/modifier/modifier"; import { handleTutorial, Tutorial } from "#app/tutorial"; @@ -23,8 +23,8 @@ export class StatStageChangePhase extends PokemonPhase { private onChange: StatStageChangeCallback | null; - constructor(scene: BattleScene, battlerIndex: BattlerIndex, selfTarget: boolean, stats: BattleStat[], stages: integer, showMessage: boolean = true, ignoreAbilities: boolean = false, canBeCopied: boolean = true, onChange: StatStageChangeCallback | null = null) { - super(scene, battlerIndex); + constructor(battlerIndex: BattlerIndex, selfTarget: boolean, stats: BattleStat[], stages: integer, showMessage: boolean = true, ignoreAbilities: boolean = false, canBeCopied: boolean = true, onChange: StatStageChangeCallback | null = null) { + super(battlerIndex); this.selfTarget = selfTarget; this.stats = stats; @@ -41,7 +41,7 @@ export class StatStageChangePhase extends PokemonPhase { if (this.stats.length > 1) { for (let i = 0; i < this.stats.length; i++) { const stat = [ this.stats[i] ]; - this.scene.unshiftPhase(new StatStageChangePhase(this.scene, this.battlerIndex, this.selfTarget, stat, this.stages, this.showMessage, this.ignoreAbilities, this.canBeCopied, this.onChange)); + globalScene.unshiftPhase(new StatStageChangePhase(this.battlerIndex, this.selfTarget, stat, this.stages, this.showMessage, this.ignoreAbilities, this.canBeCopied, this.onChange)); } return this.end(); } @@ -65,7 +65,7 @@ export class StatStageChangePhase extends PokemonPhase { if (!this.selfTarget && stages.value < 0) { // TODO: add a reference to the source of the stat change to fix Infiltrator interaction - this.scene.arena.applyTagsForSide(MistTag, pokemon.isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY, false, null, cancelled); + globalScene.arena.applyTagsForSide(MistTag, pokemon.isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY, false, null, cancelled); } if (!cancelled.value && !this.selfTarget && stages.value < 0) { @@ -88,7 +88,7 @@ export class StatStageChangePhase extends PokemonPhase { if (this.showMessage) { const messages = this.getStatStageChangeMessages(filteredStats, stages.value, relLevels); for (const message of messages) { - this.scene.queueMessage(message); + globalScene.queueMessage(message); } } @@ -119,50 +119,50 @@ export class StatStageChangePhase extends PokemonPhase { applyPostStatStageChangeAbAttrs(PostStatStageChangeAbAttr, pokemon, filteredStats, this.stages, this.selfTarget); // Look for any other stat change phases; if this is the last one, do White Herb check - const existingPhase = this.scene.findPhase(p => p instanceof StatStageChangePhase && p.battlerIndex === this.battlerIndex); + const existingPhase = globalScene.findPhase(p => p instanceof StatStageChangePhase && p.battlerIndex === this.battlerIndex); if (!(existingPhase instanceof StatStageChangePhase)) { // Apply White Herb if needed - const whiteHerb = this.scene.applyModifier(ResetNegativeStatStageModifier, this.player, pokemon) as ResetNegativeStatStageModifier; + const whiteHerb = globalScene.applyModifier(ResetNegativeStatStageModifier, this.player, pokemon) as ResetNegativeStatStageModifier; // If the White Herb was applied, consume it if (whiteHerb) { pokemon.loseHeldItem(whiteHerb); - this.scene.updateModifiers(this.player); + globalScene.updateModifiers(this.player); } } pokemon.updateInfo(); - handleTutorial(this.scene, Tutorial.Stat_Change).then(() => super.end()); + handleTutorial(Tutorial.Stat_Change).then(() => super.end()); }; - if (relLevels.filter(l => l).length && this.scene.moveAnimations) { + if (relLevels.filter(l => l).length && globalScene.moveAnimations) { pokemon.enableMask(); const pokemonMaskSprite = pokemon.maskSprite; - const tileX = (this.player ? 106 : 236) * pokemon.getSpriteScale() * this.scene.field.scale; - const tileY = ((this.player ? 148 : 84) + (stages.value >= 1 ? 160 : 0)) * pokemon.getSpriteScale() * this.scene.field.scale; - const tileWidth = 156 * this.scene.field.scale * pokemon.getSpriteScale(); - const tileHeight = 316 * this.scene.field.scale * pokemon.getSpriteScale(); + const tileX = (this.player ? 106 : 236) * pokemon.getSpriteScale() * globalScene.field.scale; + const tileY = ((this.player ? 148 : 84) + (stages.value >= 1 ? 160 : 0)) * pokemon.getSpriteScale() * globalScene.field.scale; + const tileWidth = 156 * globalScene.field.scale * pokemon.getSpriteScale(); + const tileHeight = 316 * globalScene.field.scale * pokemon.getSpriteScale(); // On increase, show the red sprite located at ATK // On decrease, show the blue sprite located at SPD const spriteColor = stages.value >= 1 ? Stat[Stat.ATK].toLowerCase() : Stat[Stat.SPD].toLowerCase(); - const statSprite = this.scene.add.tileSprite(tileX, tileY, tileWidth, tileHeight, "battle_stats", spriteColor); - statSprite.setPipeline(this.scene.fieldSpritePipeline); + const statSprite = globalScene.add.tileSprite(tileX, tileY, tileWidth, tileHeight, "battle_stats", spriteColor); + statSprite.setPipeline(globalScene.fieldSpritePipeline); statSprite.setAlpha(0); statSprite.setScale(6); statSprite.setOrigin(0.5, 1); - this.scene.playSound(`se/stat_${stages.value >= 1 ? "up" : "down"}`); + globalScene.playSound(`se/stat_${stages.value >= 1 ? "up" : "down"}`); - statSprite.setMask(new Phaser.Display.Masks.BitmapMask(this.scene, pokemonMaskSprite ?? undefined)); + statSprite.setMask(new Phaser.Display.Masks.BitmapMask(globalScene, pokemonMaskSprite ?? undefined)); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: statSprite, duration: 250, alpha: 0.8375, onComplete: () => { - this.scene.tweens.add({ + globalScene.tweens.add({ targets: statSprite, delay: 1000, duration: 250, @@ -171,13 +171,13 @@ export class StatStageChangePhase extends PokemonPhase { } }); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: statSprite, duration: 1500, y: `${stages.value >= 1 ? "-" : "+"}=${160 * 6}` }); - this.scene.time.delayedCall(1750, () => { + globalScene.time.delayedCall(1750, () => { pokemon.disableMask(); end(); }); @@ -191,21 +191,21 @@ export class StatStageChangePhase extends PokemonPhase { const isAccEva = accEva.some(s => this.stats.includes(s)); let existingPhase: StatStageChangePhase; if (this.stats.length === 1) { - while ((existingPhase = (this.scene.findPhase(p => p instanceof StatStageChangePhase && p.battlerIndex === this.battlerIndex && p.stats.length === 1 + while ((existingPhase = (globalScene.findPhase(p => p instanceof StatStageChangePhase && p.battlerIndex === this.battlerIndex && p.stats.length === 1 && (p.stats[0] === this.stats[0]) && p.selfTarget === this.selfTarget && p.showMessage === this.showMessage && p.ignoreAbilities === this.ignoreAbilities) as StatStageChangePhase))) { this.stages += existingPhase.stages; - if (!this.scene.tryRemovePhase(p => p === existingPhase)) { + if (!globalScene.tryRemovePhase(p => p === existingPhase)) { break; } } } - while ((existingPhase = (this.scene.findPhase(p => p instanceof StatStageChangePhase && p.battlerIndex === this.battlerIndex && p.selfTarget === this.selfTarget + while ((existingPhase = (globalScene.findPhase(p => p instanceof StatStageChangePhase && p.battlerIndex === this.battlerIndex && p.selfTarget === this.selfTarget && (accEva.some(s => p.stats.includes(s)) === isAccEva) && p.stages === this.stages && p.showMessage === this.showMessage && p.ignoreAbilities === this.ignoreAbilities) as StatStageChangePhase))) { this.stats.push(...existingPhase.stats); - if (!this.scene.tryRemovePhase(p => p === existingPhase)) { + if (!globalScene.tryRemovePhase(p => p === existingPhase)) { break; } } diff --git a/src/phases/summon-missing-phase.ts b/src/phases/summon-missing-phase.ts index 83ac8779dd8..f32f6a377f5 100644 --- a/src/phases/summon-missing-phase.ts +++ b/src/phases/summon-missing-phase.ts @@ -1,15 +1,15 @@ -import BattleScene from "#app/battle-scene"; import { getPokemonNameWithAffix } from "#app/messages"; import i18next from "i18next"; import { SummonPhase } from "./summon-phase"; +import { globalScene } from "#app/global-scene"; export class SummonMissingPhase extends SummonPhase { - constructor(scene: BattleScene, fieldIndex: integer) { - super(scene, fieldIndex); + constructor(fieldIndex: integer) { + super(fieldIndex); } preSummon(): void { - this.scene.ui.showText(i18next.t("battle:sendOutPokemon", { pokemonName: getPokemonNameWithAffix(this.getPokemon()) })); - this.scene.time.delayedCall(250, () => this.summon()); + globalScene.ui.showText(i18next.t("battle:sendOutPokemon", { pokemonName: getPokemonNameWithAffix(this.getPokemon()) })); + globalScene.time.delayedCall(250, () => this.summon()); } } diff --git a/src/phases/summon-phase.ts b/src/phases/summon-phase.ts index 177e09c4527..72f5ec8640f 100644 --- a/src/phases/summon-phase.ts +++ b/src/phases/summon-phase.ts @@ -1,11 +1,11 @@ -import BattleScene from "#app/battle-scene"; import { BattleType } from "#app/battle"; import { getPokeballAtlasKey, getPokeballTintColor } from "#app/data/pokeball"; import { SpeciesFormChangeActiveTrigger } from "#app/data/pokemon-forms"; import { TrainerSlot } from "#app/data/trainer-config"; import { PlayerGender } from "#app/enums/player-gender"; import { addPokeballOpenParticles } from "#app/field/anims"; -import Pokemon, { FieldPosition } from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; +import { FieldPosition } from "#app/field/pokemon"; import { getPokemonNameWithAffix } from "#app/messages"; import i18next from "i18next"; import { PartyMemberPokemonPhase } from "./party-member-pokemon-phase"; @@ -13,12 +13,13 @@ import { PostSummonPhase } from "./post-summon-phase"; import { GameOverPhase } from "./game-over-phase"; import { ShinySparklePhase } from "./shiny-sparkle-phase"; import { MysteryEncounterMode } from "#enums/mystery-encounter-mode"; +import { globalScene } from "#app/global-scene"; export class SummonPhase extends PartyMemberPokemonPhase { private loaded: boolean; - constructor(scene: BattleScene, fieldIndex: integer, player: boolean = true, loaded: boolean = false) { - super(scene, fieldIndex, player); + constructor(fieldIndex: integer, player: boolean = true, loaded: boolean = false) { + super(fieldIndex, player); this.loaded = loaded; } @@ -50,8 +51,8 @@ export class SummonPhase extends PartyMemberPokemonPhase { if (legalIndex === -1) { console.error("Party Details:\n", party); console.error("All available Pokemon were fainted or illegal!"); - this.scene.clearPhaseQueue(); - this.scene.unshiftPhase(new GameOverPhase(this.scene)); + globalScene.clearPhaseQueue(); + globalScene.unshiftPhase(new GameOverPhase()); this.end(); return; } @@ -62,33 +63,33 @@ export class SummonPhase extends PartyMemberPokemonPhase { } if (this.player) { - this.scene.ui.showText(i18next.t("battle:playerGo", { pokemonName: getPokemonNameWithAffix(this.getPokemon()) })); + globalScene.ui.showText(i18next.t("battle:playerGo", { pokemonName: getPokemonNameWithAffix(this.getPokemon()) })); if (this.player) { - this.scene.pbTray.hide(); + globalScene.pbTray.hide(); } - this.scene.trainer.setTexture(`trainer_${this.scene.gameData.gender === PlayerGender.FEMALE ? "f" : "m"}_back_pb`); - this.scene.time.delayedCall(562, () => { - this.scene.trainer.setFrame("2"); - this.scene.time.delayedCall(64, () => { - this.scene.trainer.setFrame("3"); + globalScene.trainer.setTexture(`trainer_${globalScene.gameData.gender === PlayerGender.FEMALE ? "f" : "m"}_back_pb`); + globalScene.time.delayedCall(562, () => { + globalScene.trainer.setFrame("2"); + globalScene.time.delayedCall(64, () => { + globalScene.trainer.setFrame("3"); }); }); - this.scene.tweens.add({ - targets: this.scene.trainer, + globalScene.tweens.add({ + targets: globalScene.trainer, x: -36, duration: 1000, - onComplete: () => this.scene.trainer.setVisible(false) + onComplete: () => globalScene.trainer.setVisible(false) }); - this.scene.time.delayedCall(750, () => this.summon()); - } else if (this.scene.currentBattle.battleType === BattleType.TRAINER || this.scene.currentBattle.mysteryEncounter?.encounterMode === MysteryEncounterMode.TRAINER_BATTLE) { - const trainerName = this.scene.currentBattle.trainer?.getName(!(this.fieldIndex % 2) ? TrainerSlot.TRAINER : TrainerSlot.TRAINER_PARTNER); + globalScene.time.delayedCall(750, () => this.summon()); + } else if (globalScene.currentBattle.battleType === BattleType.TRAINER || globalScene.currentBattle.mysteryEncounter?.encounterMode === MysteryEncounterMode.TRAINER_BATTLE) { + const trainerName = globalScene.currentBattle.trainer?.getName(!(this.fieldIndex % 2) ? TrainerSlot.TRAINER : TrainerSlot.TRAINER_PARTNER); const pokemonName = this.getPokemon().getNameToRender(); const message = i18next.t("battle:trainerSendOut", { trainerName, pokemonName }); - this.scene.pbTrayEnemy.hide(); - this.scene.ui.showText(message, null, () => this.summon()); - } else if (this.scene.currentBattle.isBattleMysteryEncounter()) { - this.scene.pbTrayEnemy.hide(); + globalScene.pbTrayEnemy.hide(); + globalScene.ui.showText(message, null, () => this.summon()); + } else if (globalScene.currentBattle.isBattleMysteryEncounter()) { + globalScene.pbTrayEnemy.hide(); this.summonWild(); } } @@ -99,55 +100,55 @@ export class SummonPhase extends PartyMemberPokemonPhase { summon(): void { const pokemon = this.getPokemon(); - const pokeball = this.scene.addFieldSprite(this.player ? 36 : 248, this.player ? 80 : 44, "pb", getPokeballAtlasKey(pokemon.pokeball)); + const pokeball = globalScene.addFieldSprite(this.player ? 36 : 248, this.player ? 80 : 44, "pb", getPokeballAtlasKey(pokemon.pokeball)); pokeball.setVisible(false); pokeball.setOrigin(0.5, 0.625); - this.scene.field.add(pokeball); + globalScene.field.add(pokeball); if (this.fieldIndex === 1) { pokemon.setFieldPosition(FieldPosition.RIGHT, 0); } else { const availablePartyMembers = this.getParty().filter(p => p.isAllowedInBattle()).length; - pokemon.setFieldPosition(!this.scene.currentBattle.double || availablePartyMembers === 1 ? FieldPosition.CENTER : FieldPosition.LEFT); + pokemon.setFieldPosition(!globalScene.currentBattle.double || availablePartyMembers === 1 ? FieldPosition.CENTER : FieldPosition.LEFT); } const fpOffset = pokemon.getFieldPositionOffset(); pokeball.setVisible(true); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: pokeball, duration: 650, x: (this.player ? 100 : 236) + fpOffset[0] }); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: pokeball, duration: 150, ease: "Cubic.easeOut", y: (this.player ? 70 : 34) + fpOffset[1], onComplete: () => { - this.scene.tweens.add({ + globalScene.tweens.add({ targets: pokeball, duration: 500, ease: "Cubic.easeIn", angle: 1440, y: (this.player ? 132 : 86) + fpOffset[1], onComplete: () => { - this.scene.playSound("se/pb_rel"); + globalScene.playSound("se/pb_rel"); pokeball.destroy(); - this.scene.add.existing(pokemon); - this.scene.field.add(pokemon); + globalScene.add.existing(pokemon); + globalScene.field.add(pokemon); if (!this.player) { - const playerPokemon = this.scene.getPlayerPokemon() as Pokemon; + const playerPokemon = globalScene.getPlayerPokemon() as Pokemon; if (playerPokemon?.isOnField()) { - this.scene.field.moveBelow(pokemon, playerPokemon); + globalScene.field.moveBelow(pokemon, playerPokemon); } - this.scene.currentBattle.seenEnemyPartyMemberIds.add(pokemon.id); + globalScene.currentBattle.seenEnemyPartyMemberIds.add(pokemon.id); } - addPokeballOpenParticles(this.scene, pokemon.x, pokemon.y - 16, pokemon.pokeball); - this.scene.updateModifiers(this.player); - this.scene.updateFieldScale(); + addPokeballOpenParticles(pokemon.x, pokemon.y - 16, pokemon.pokeball); + globalScene.updateModifiers(this.player); + globalScene.updateFieldScale(); pokemon.showInfo(); pokemon.playAnim(); pokemon.setVisible(true); @@ -155,8 +156,8 @@ export class SummonPhase extends PartyMemberPokemonPhase { pokemon.setScale(0.5); pokemon.tint(getPokeballTintColor(pokemon.pokeball)); pokemon.untint(250, "Sine.easeIn"); - this.scene.updateFieldScale(); - this.scene.tweens.add({ + globalScene.updateFieldScale(); + globalScene.tweens.add({ targets: pokemon, duration: 250, ease: "Sine.easeIn", @@ -165,7 +166,7 @@ export class SummonPhase extends PartyMemberPokemonPhase { pokemon.cry(pokemon.getHpRatio() > 0.25 ? undefined : { rate: 0.85 }); pokemon.getSprite().clearTint(); pokemon.resetSummonData(); - this.scene.time.delayedCall(1000, () => this.end()); + globalScene.time.delayedCall(1000, () => this.end()); } }); } @@ -186,20 +187,20 @@ export class SummonPhase extends PartyMemberPokemonPhase { pokemon.setFieldPosition(FieldPosition.RIGHT, 0); } else { const availablePartyMembers = this.getParty().filter(p => !p.isFainted()).length; - pokemon.setFieldPosition(!this.scene.currentBattle.double || availablePartyMembers === 1 ? FieldPosition.CENTER : FieldPosition.LEFT); + pokemon.setFieldPosition(!globalScene.currentBattle.double || availablePartyMembers === 1 ? FieldPosition.CENTER : FieldPosition.LEFT); } - this.scene.add.existing(pokemon); - this.scene.field.add(pokemon); + globalScene.add.existing(pokemon); + globalScene.field.add(pokemon); if (!this.player) { - const playerPokemon = this.scene.getPlayerPokemon() as Pokemon; + const playerPokemon = globalScene.getPlayerPokemon() as Pokemon; if (playerPokemon?.isOnField()) { - this.scene.field.moveBelow(pokemon, playerPokemon); + globalScene.field.moveBelow(pokemon, playerPokemon); } - this.scene.currentBattle.seenEnemyPartyMemberIds.add(pokemon.id); + globalScene.currentBattle.seenEnemyPartyMemberIds.add(pokemon.id); } - this.scene.updateModifiers(this.player); - this.scene.updateFieldScale(); + globalScene.updateModifiers(this.player); + globalScene.updateFieldScale(); pokemon.showInfo(); pokemon.playAnim(); pokemon.setVisible(true); @@ -207,13 +208,13 @@ export class SummonPhase extends PartyMemberPokemonPhase { pokemon.setScale(0.75); pokemon.tint(getPokeballTintColor(pokemon.pokeball)); pokemon.untint(250, "Sine.easeIn"); - this.scene.updateFieldScale(); + globalScene.updateFieldScale(); pokemon.x += 16; pokemon.y -= 20; pokemon.alpha = 0; // Ease pokemon in - this.scene.tweens.add({ + globalScene.tweens.add({ targets: pokemon, x: "-=16", y: "+=16", @@ -225,8 +226,8 @@ export class SummonPhase extends PartyMemberPokemonPhase { pokemon.cry(pokemon.getHpRatio() > 0.25 ? undefined : { rate: 0.85 }); pokemon.getSprite().clearTint(); pokemon.resetSummonData(); - this.scene.updateFieldScale(); - this.scene.time.delayedCall(1000, () => this.end()); + globalScene.updateFieldScale(); + globalScene.time.delayedCall(1000, () => this.end()); } }); } @@ -235,19 +236,19 @@ export class SummonPhase extends PartyMemberPokemonPhase { const pokemon = this.getPokemon(); if (pokemon.isShiny()) { - this.scene.unshiftPhase(new ShinySparklePhase(this.scene, pokemon.getBattlerIndex())); + globalScene.unshiftPhase(new ShinySparklePhase(pokemon.getBattlerIndex())); } pokemon.resetTurnData(); - if (!this.loaded || [ BattleType.TRAINER, BattleType.MYSTERY_ENCOUNTER ].includes(this.scene.currentBattle.battleType) || (this.scene.currentBattle.waveIndex % 10) === 1) { - this.scene.triggerPokemonFormChange(pokemon, SpeciesFormChangeActiveTrigger, true); + if (!this.loaded || [ BattleType.TRAINER, BattleType.MYSTERY_ENCOUNTER ].includes(globalScene.currentBattle.battleType) || (globalScene.currentBattle.waveIndex % 10) === 1) { + globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeActiveTrigger, true); this.queuePostSummon(); } } queuePostSummon(): void { - this.scene.pushPhase(new PostSummonPhase(this.scene, this.getPokemon().getBattlerIndex())); + globalScene.pushPhase(new PostSummonPhase(this.getPokemon().getBattlerIndex())); } end() { diff --git a/src/phases/switch-biome-phase.ts b/src/phases/switch-biome-phase.ts index 80a31794209..88addb4ef47 100644 --- a/src/phases/switch-biome-phase.ts +++ b/src/phases/switch-biome-phase.ts @@ -1,13 +1,13 @@ -import BattleScene from "#app/battle-scene"; -import { Biome } from "#app/enums/biome"; +import { globalScene } from "#app/global-scene"; +import type { Biome } from "#app/enums/biome"; import { getBiomeKey } from "#app/field/arena"; import { BattlePhase } from "./battle-phase"; export class SwitchBiomePhase extends BattlePhase { private nextBiome: Biome; - constructor(scene: BattleScene, nextBiome: Biome) { - super(scene); + constructor(nextBiome: Biome) { + super(); this.nextBiome = nextBiome; } @@ -19,41 +19,41 @@ export class SwitchBiomePhase extends BattlePhase { return this.end(); } - this.scene.tweens.add({ - targets: [ this.scene.arenaEnemy, this.scene.lastEnemyTrainer ], + globalScene.tweens.add({ + targets: [ globalScene.arenaEnemy, globalScene.lastEnemyTrainer ], x: "+=300", duration: 2000, onComplete: () => { - this.scene.arenaEnemy.setX(this.scene.arenaEnemy.x - 600); + globalScene.arenaEnemy.setX(globalScene.arenaEnemy.x - 600); - this.scene.newArena(this.nextBiome); + globalScene.newArena(this.nextBiome); const biomeKey = getBiomeKey(this.nextBiome); const bgTexture = `${biomeKey}_bg`; - this.scene.arenaBgTransition.setTexture(bgTexture); - this.scene.arenaBgTransition.setAlpha(0); - this.scene.arenaBgTransition.setVisible(true); - this.scene.arenaPlayerTransition.setBiome(this.nextBiome); - this.scene.arenaPlayerTransition.setAlpha(0); - this.scene.arenaPlayerTransition.setVisible(true); + globalScene.arenaBgTransition.setTexture(bgTexture); + globalScene.arenaBgTransition.setAlpha(0); + globalScene.arenaBgTransition.setVisible(true); + globalScene.arenaPlayerTransition.setBiome(this.nextBiome); + globalScene.arenaPlayerTransition.setAlpha(0); + globalScene.arenaPlayerTransition.setVisible(true); - this.scene.tweens.add({ - targets: [ this.scene.arenaPlayer, this.scene.arenaBgTransition, this.scene.arenaPlayerTransition ], + globalScene.tweens.add({ + targets: [ globalScene.arenaPlayer, globalScene.arenaBgTransition, globalScene.arenaPlayerTransition ], duration: 1000, delay: 1000, ease: "Sine.easeInOut", - alpha: (target: any) => target === this.scene.arenaPlayer ? 0 : 1, + alpha: (target: any) => target === globalScene.arenaPlayer ? 0 : 1, onComplete: () => { - this.scene.arenaBg.setTexture(bgTexture); - this.scene.arenaPlayer.setBiome(this.nextBiome); - this.scene.arenaPlayer.setAlpha(1); - this.scene.arenaEnemy.setBiome(this.nextBiome); - this.scene.arenaEnemy.setAlpha(1); - this.scene.arenaNextEnemy.setBiome(this.nextBiome); - this.scene.arenaBgTransition.setVisible(false); - this.scene.arenaPlayerTransition.setVisible(false); - if (this.scene.lastEnemyTrainer) { - this.scene.lastEnemyTrainer.destroy(); + globalScene.arenaBg.setTexture(bgTexture); + globalScene.arenaPlayer.setBiome(this.nextBiome); + globalScene.arenaPlayer.setAlpha(1); + globalScene.arenaEnemy.setBiome(this.nextBiome); + globalScene.arenaEnemy.setAlpha(1); + globalScene.arenaNextEnemy.setBiome(this.nextBiome); + globalScene.arenaBgTransition.setVisible(false); + globalScene.arenaPlayerTransition.setVisible(false); + if (globalScene.lastEnemyTrainer) { + globalScene.lastEnemyTrainer.destroy(); } this.end(); diff --git a/src/phases/switch-phase.ts b/src/phases/switch-phase.ts index 481d64c451e..e763aee1521 100644 --- a/src/phases/switch-phase.ts +++ b/src/phases/switch-phase.ts @@ -1,4 +1,4 @@ -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import PartyUiHandler, { PartyOption, PartyUiMode } from "#app/ui/party-ui-handler"; import { Mode } from "#app/ui/ui"; import { SwitchType } from "#enums/switch-type"; @@ -18,7 +18,6 @@ export class SwitchPhase extends BattlePhase { /** * Creates a new SwitchPhase - * @param scene {@linkcode BattleScene} Current battle scene * @param switchType {@linkcode SwitchType} The type of switch logic this phase implements * @param fieldIndex Field index to switch out * @param isModal Indicates if the switch should be forced (true) or is @@ -26,8 +25,8 @@ export class SwitchPhase extends BattlePhase { * @param doReturn Indicates if the party member on the field should be * recalled to ball or has already left the field. Passed to {@linkcode SwitchSummonPhase}. */ - constructor(scene: BattleScene, switchType: SwitchType, fieldIndex: integer, isModal: boolean, doReturn: boolean) { - super(scene); + constructor(switchType: SwitchType, fieldIndex: integer, isModal: boolean, doReturn: boolean) { + super(); this.switchType = switchType; this.fieldIndex = fieldIndex; @@ -39,7 +38,7 @@ export class SwitchPhase extends BattlePhase { super.start(); // Skip modal switch if impossible (no remaining party members that aren't in battle) - if (this.isModal && !this.scene.getPlayerParty().filter(p => p.isAllowedInBattle() && !p.isActive(true)).length) { + if (this.isModal && !globalScene.getPlayerParty().filter(p => p.isAllowedInBattle() && !p.isActive(true)).length) { return super.end(); } @@ -50,27 +49,27 @@ export class SwitchPhase extends BattlePhase { * if the mon should have already been returned but is still alive and well * on the field. see also; battle.test.ts */ - if (this.isModal && !this.doReturn && !this.scene.getPlayerParty()[this.fieldIndex].isFainted()) { + if (this.isModal && !this.doReturn && !globalScene.getPlayerParty()[this.fieldIndex].isFainted()) { return super.end(); } // Check if there is any space still in field - if (this.isModal && this.scene.getPlayerField().filter(p => p.isAllowedInBattle() && p.isActive(true)).length >= this.scene.currentBattle.getBattlerCount()) { + if (this.isModal && globalScene.getPlayerField().filter(p => p.isAllowedInBattle() && p.isActive(true)).length >= globalScene.currentBattle.getBattlerCount()) { return super.end(); } // Override field index to 0 in case of double battle where 2/3 remaining legal party members fainted at once - const fieldIndex = this.scene.currentBattle.getBattlerCount() === 1 || this.scene.getPokemonAllowedInBattle().length > 1 ? this.fieldIndex : 0; + const fieldIndex = globalScene.currentBattle.getBattlerCount() === 1 || globalScene.getPokemonAllowedInBattle().length > 1 ? this.fieldIndex : 0; - this.scene.ui.setMode(Mode.PARTY, this.isModal ? PartyUiMode.FAINT_SWITCH : PartyUiMode.POST_BATTLE_SWITCH, fieldIndex, (slotIndex: integer, option: PartyOption) => { - if (slotIndex >= this.scene.currentBattle.getBattlerCount() && slotIndex < 6) { + globalScene.ui.setMode(Mode.PARTY, this.isModal ? PartyUiMode.FAINT_SWITCH : PartyUiMode.POST_BATTLE_SWITCH, fieldIndex, (slotIndex: integer, option: PartyOption) => { + if (slotIndex >= globalScene.currentBattle.getBattlerCount() && slotIndex < 6) { // Remove any pre-existing PostSummonPhase under the same field index. // Pre-existing PostSummonPhases may occur when this phase is invoked during a prompt to switch at the start of a wave. - this.scene.tryRemovePhase(p => p instanceof PostSummonPhase && p.player && p.fieldIndex === this.fieldIndex); + globalScene.tryRemovePhase(p => p instanceof PostSummonPhase && p.player && p.fieldIndex === this.fieldIndex); const switchType = (option === PartyOption.PASS_BATON) ? SwitchType.BATON_PASS : this.switchType; - this.scene.unshiftPhase(new SwitchSummonPhase(this.scene, switchType, fieldIndex, slotIndex, this.doReturn)); + globalScene.unshiftPhase(new SwitchSummonPhase(switchType, fieldIndex, slotIndex, this.doReturn)); } - this.scene.ui.setMode(Mode.MESSAGE).then(() => super.end()); + globalScene.ui.setMode(Mode.MESSAGE).then(() => super.end()); }, PartyUiHandler.FilterNonFainted); } } diff --git a/src/phases/switch-summon-phase.ts b/src/phases/switch-summon-phase.ts index a1925768d83..94e57435922 100644 --- a/src/phases/switch-summon-phase.ts +++ b/src/phases/switch-summon-phase.ts @@ -1,10 +1,10 @@ -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { applyPreSwitchOutAbAttrs, PostDamageForceSwitchAbAttr, PreSwitchOutAbAttr } from "#app/data/ability"; import { allMoves, ForceSwitchOutAttr } from "#app/data/move"; import { getPokeballTintColor } from "#app/data/pokeball"; import { SpeciesFormChangeActiveTrigger } from "#app/data/pokemon-forms"; import { TrainerSlot } from "#app/data/trainer-config"; -import Pokemon from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; import { getPokemonNameWithAffix } from "#app/messages"; import { SwitchEffectTransferModifier } from "#app/modifier/modifier"; import { Command } from "#app/ui/command-ui-handler"; @@ -23,15 +23,14 @@ export class SwitchSummonPhase extends SummonPhase { /** * Constructor for creating a new SwitchSummonPhase - * @param scene {@linkcode BattleScene} the scene the phase is associated with * @param switchType the type of switch behavior * @param fieldIndex integer representing position on the battle field * @param slotIndex integer for the index of pokemon (in party of 6) to switch into * @param doReturn boolean whether to render "comeback" dialogue * @param player boolean if the switch is from the player */ - constructor(scene: BattleScene, switchType: SwitchType, fieldIndex: integer, slotIndex: integer, doReturn: boolean, player?: boolean) { - super(scene, fieldIndex, player !== undefined ? player : true); + constructor(switchType: SwitchType, fieldIndex: integer, slotIndex: integer, doReturn: boolean, player?: boolean) { + super(fieldIndex, player !== undefined ? player : true); this.switchType = switchType; this.slotIndex = slotIndex; @@ -46,29 +45,29 @@ export class SwitchSummonPhase extends SummonPhase { if (!this.player) { if (this.slotIndex === -1) { //@ts-ignore - this.slotIndex = this.scene.currentBattle.trainer?.getNextSummonIndex(!this.fieldIndex ? TrainerSlot.TRAINER : TrainerSlot.TRAINER_PARTNER); // TODO: what would be the default trainer-slot fallback? + this.slotIndex = globalScene.currentBattle.trainer?.getNextSummonIndex(!this.fieldIndex ? TrainerSlot.TRAINER : TrainerSlot.TRAINER_PARTNER); // TODO: what would be the default trainer-slot fallback? } if (this.slotIndex > -1) { this.showEnemyTrainer(!(this.fieldIndex % 2) ? TrainerSlot.TRAINER : TrainerSlot.TRAINER_PARTNER); - this.scene.pbTrayEnemy.showPbTray(this.scene.getEnemyParty()); + globalScene.pbTrayEnemy.showPbTray(globalScene.getEnemyParty()); } } - if (!this.doReturn || (this.slotIndex !== -1 && !(this.player ? this.scene.getPlayerParty() : this.scene.getEnemyParty())[this.slotIndex])) { + if (!this.doReturn || (this.slotIndex !== -1 && !(this.player ? globalScene.getPlayerParty() : globalScene.getEnemyParty())[this.slotIndex])) { if (this.player) { return this.switchAndSummon(); } else { - this.scene.time.delayedCall(750, () => this.switchAndSummon()); + globalScene.time.delayedCall(750, () => this.switchAndSummon()); return; } } const pokemon = this.getPokemon(); - (this.player ? this.scene.getEnemyField() : this.scene.getPlayerField()).forEach(enemyPokemon => enemyPokemon.removeTagsBySourceId(pokemon.id)); + (this.player ? globalScene.getEnemyField() : globalScene.getPlayerField()).forEach(enemyPokemon => enemyPokemon.removeTagsBySourceId(pokemon.id)); if (this.switchType === SwitchType.SWITCH || this.switchType === SwitchType.INITIAL_SWITCH) { const substitute = pokemon.getTag(SubstituteTag); if (substitute) { - this.scene.tweens.add({ + globalScene.tweens.add({ targets: substitute.sprite, duration: 250, scale: substitute.sprite.scale * 0.5, @@ -78,40 +77,40 @@ export class SwitchSummonPhase extends SummonPhase { } } - this.scene.ui.showText(this.player ? + globalScene.ui.showText(this.player ? i18next.t("battle:playerComeBack", { pokemonName: getPokemonNameWithAffix(pokemon) }) : i18next.t("battle:trainerComeBack", { - trainerName: this.scene.currentBattle.trainer?.getName(!(this.fieldIndex % 2) ? TrainerSlot.TRAINER : TrainerSlot.TRAINER_PARTNER), + trainerName: globalScene.currentBattle.trainer?.getName(!(this.fieldIndex % 2) ? TrainerSlot.TRAINER : TrainerSlot.TRAINER_PARTNER), pokemonName: pokemon.getNameToRender() }) ); - this.scene.playSound("se/pb_rel"); + globalScene.playSound("se/pb_rel"); pokemon.hideInfo(); pokemon.tint(getPokeballTintColor(pokemon.pokeball), 1, 250, "Sine.easeIn"); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: pokemon, duration: 250, ease: "Sine.easeIn", scale: 0.5, onComplete: () => { pokemon.leaveField(this.switchType === SwitchType.SWITCH, false); - this.scene.time.delayedCall(750, () => this.switchAndSummon()); + globalScene.time.delayedCall(750, () => this.switchAndSummon()); } }); } switchAndSummon() { - const party = this.player ? this.getParty() : this.scene.getEnemyParty(); + const party = this.player ? this.getParty() : globalScene.getEnemyParty(); const switchedInPokemon = party[this.slotIndex]; this.lastPokemon = this.getPokemon(); applyPreSwitchOutAbAttrs(PreSwitchOutAbAttr, this.lastPokemon); if (this.switchType === SwitchType.BATON_PASS && switchedInPokemon) { - (this.player ? this.scene.getEnemyField() : this.scene.getPlayerField()).forEach(enemyPokemon => enemyPokemon.transferTagsBySourceId(this.lastPokemon.id, switchedInPokemon.id)); - if (!this.scene.findModifier(m => m instanceof SwitchEffectTransferModifier && (m as SwitchEffectTransferModifier).pokemonId === switchedInPokemon.id)) { - const batonPassModifier = this.scene.findModifier(m => m instanceof SwitchEffectTransferModifier + (this.player ? globalScene.getEnemyField() : globalScene.getPlayerField()).forEach(enemyPokemon => enemyPokemon.transferTagsBySourceId(this.lastPokemon.id, switchedInPokemon.id)); + if (!globalScene.findModifier(m => m instanceof SwitchEffectTransferModifier && (m as SwitchEffectTransferModifier).pokemonId === switchedInPokemon.id)) { + const batonPassModifier = globalScene.findModifier(m => m instanceof SwitchEffectTransferModifier && (m as SwitchEffectTransferModifier).pokemonId === this.lastPokemon.id) as SwitchEffectTransferModifier; - if (batonPassModifier && !this.scene.findModifier(m => m instanceof SwitchEffectTransferModifier && (m as SwitchEffectTransferModifier).pokemonId === switchedInPokemon.id)) { - this.scene.tryTransferHeldItemModifier(batonPassModifier, switchedInPokemon, false, undefined, undefined, undefined, false); + if (batonPassModifier && !globalScene.findModifier(m => m instanceof SwitchEffectTransferModifier && (m as SwitchEffectTransferModifier).pokemonId === switchedInPokemon.id)) { + globalScene.tryTransferHeldItemModifier(batonPassModifier, switchedInPokemon, false, undefined, undefined, undefined, false); } } } @@ -119,10 +118,10 @@ export class SwitchSummonPhase extends SummonPhase { party[this.slotIndex] = this.lastPokemon; party[this.fieldIndex] = switchedInPokemon; const showTextAndSummon = () => { - this.scene.ui.showText(this.player ? + globalScene.ui.showText(this.player ? i18next.t("battle:playerGo", { pokemonName: getPokemonNameWithAffix(switchedInPokemon) }) : i18next.t("battle:trainerGo", { - trainerName: this.scene.currentBattle.trainer?.getName(!(this.fieldIndex % 2) ? TrainerSlot.TRAINER : TrainerSlot.TRAINER_PARTNER), + trainerName: globalScene.currentBattle.trainer?.getName(!(this.fieldIndex % 2) ? TrainerSlot.TRAINER : TrainerSlot.TRAINER_PARTNER), pokemonName: this.getPokemon().getNameToRender() }) ); @@ -145,9 +144,9 @@ export class SwitchSummonPhase extends SummonPhase { if (this.player) { showTextAndSummon(); } else { - this.scene.time.delayedCall(1500, () => { + globalScene.time.delayedCall(1500, () => { this.hideEnemyTrainer(); - this.scene.pbTrayEnemy.hide(); + globalScene.pbTrayEnemy.hide(); showTextAndSummon(); }); } @@ -161,10 +160,10 @@ export class SwitchSummonPhase extends SummonPhase { const pokemon = this.getPokemon(); - const moveId = this.lastPokemon?.scene.currentBattle.lastMove; + const moveId = globalScene.currentBattle.lastMove; const lastUsedMove = moveId ? allMoves[moveId] : undefined; - const currentCommand = pokemon.scene.currentBattle.turnCommands[this.fieldIndex]?.command; + const currentCommand = globalScene.currentBattle.turnCommands[this.fieldIndex]?.command; const lastPokemonIsForceSwitchedAndNotFainted = lastUsedMove?.hasAttr(ForceSwitchOutAttr) && !this.lastPokemon.isFainted(); const lastPokemonHasForceSwitchAbAttr = this.lastPokemon.hasAbilityWithAttr(PostDamageForceSwitchAbAttr) && !this.lastPokemon.isFainted(); @@ -191,12 +190,12 @@ export class SwitchSummonPhase extends SummonPhase { this.lastPokemon?.resetSummonData(); - this.scene.triggerPokemonFormChange(pokemon, SpeciesFormChangeActiveTrigger, true); + globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeActiveTrigger, true); // Reverts to weather-based forms when weather suppressors (Cloud Nine/Air Lock) are switched out - this.scene.arena.triggerWeatherBasedFormChanges(); + globalScene.arena.triggerWeatherBasedFormChanges(); } queuePostSummon(): void { - this.scene.unshiftPhase(new PostSummonPhase(this.scene, this.getPokemon().getBattlerIndex())); + globalScene.unshiftPhase(new PostSummonPhase(this.getPokemon().getBattlerIndex())); } } diff --git a/src/phases/test-message-phase.ts b/src/phases/test-message-phase.ts index 464a5ed1f94..d5e74efd490 100644 --- a/src/phases/test-message-phase.ts +++ b/src/phases/test-message-phase.ts @@ -1,8 +1,7 @@ -import BattleScene from "#app/battle-scene"; import { MessagePhase } from "./message-phase"; export class TestMessagePhase extends MessagePhase { - constructor(scene: BattleScene, message: string) { - super(scene, message, null, true); + constructor(message: string) { + super(message, null, true); } } diff --git a/src/phases/title-phase.ts b/src/phases/title-phase.ts index 88793617776..219ff441c52 100644 --- a/src/phases/title-phase.ts +++ b/src/phases/title-phase.ts @@ -1,17 +1,16 @@ import { loggedInUser } from "#app/account"; import { BattleType } from "#app/battle"; -import BattleScene from "#app/battle-scene"; import { fetchDailyRunSeed, getDailyRunStarters } from "#app/data/daily-run"; import { Gender } from "#app/data/gender"; import { getBiomeKey } from "#app/field/arena"; import { GameMode, GameModes, getGameMode } from "#app/game-mode"; -import { Modifier } from "#app/modifier/modifier"; +import type { Modifier } from "#app/modifier/modifier"; import { getDailyRunStarterModifiers, ModifierPoolType, modifierTypes, regenerateModifierPoolThresholds } from "#app/modifier/modifier-type"; import { Phase } from "#app/phase"; -import { SessionSaveData } from "#app/system/game-data"; +import type { SessionSaveData } from "#app/system/game-data"; import { Unlockables } from "#app/system/unlockables"; import { vouchers } from "#app/system/voucher"; -import { OptionSelectConfig, OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; +import type { OptionSelectConfig, OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; import { SaveSlotUiMode } from "#app/ui/save-slot-select-ui-handler"; import { Mode } from "#app/ui/ui"; import * as Utils from "#app/utils"; @@ -21,6 +20,7 @@ import { EncounterPhase } from "./encounter-phase"; import { SelectChallengePhase } from "./select-challenge-phase"; import { SelectStarterPhase } from "./select-starter-phase"; import { SummonPhase } from "./summon-phase"; +import { globalScene } from "#app/global-scene"; export class TitlePhase extends Phase { @@ -28,8 +28,8 @@ export class TitlePhase extends Phase { private lastSessionData: SessionSaveData; public gameMode: GameModes; - constructor(scene: BattleScene) { - super(scene); + constructor() { + super(); this.loaded = false; } @@ -37,17 +37,17 @@ export class TitlePhase extends Phase { start(): void { super.start(); - this.scene.ui.clearText(); - this.scene.ui.fadeIn(250); + globalScene.ui.clearText(); + globalScene.ui.fadeIn(250); - this.scene.playBgm("title", true); + globalScene.playBgm("title", true); - this.scene.gameData.getSession(loggedInUser?.lastSessionSlot ?? -1).then(sessionData => { + globalScene.gameData.getSession(loggedInUser?.lastSessionSlot ?? -1).then(sessionData => { if (sessionData) { this.lastSessionData = sessionData; const biomeKey = getBiomeKey(sessionData.arena.biome); const bgTexture = `${biomeKey}_bg`; - this.scene.arenaBg.setTexture(bgTexture); + globalScene.arenaBg.setTexture(bgTexture); } this.showOptions(); }).catch(err => { @@ -72,11 +72,11 @@ export class TitlePhase extends Phase { handler: () => { const setModeAndEnd = (gameMode: GameModes) => { this.gameMode = gameMode; - this.scene.ui.setMode(Mode.MESSAGE); - this.scene.ui.clearText(); + globalScene.ui.setMode(Mode.MESSAGE); + globalScene.ui.clearText(); this.end(); }; - const { gameData } = this.scene; + const { gameData } = globalScene; if (gameData.isUnlocked(Unlockables.ENDLESS_MODE)) { const options: OptionSelectItem[] = [ { @@ -113,17 +113,17 @@ export class TitlePhase extends Phase { options.push({ label: i18next.t("menu:cancel"), handler: () => { - this.scene.clearPhaseQueue(); - this.scene.pushPhase(new TitlePhase(this.scene)); + globalScene.clearPhaseQueue(); + globalScene.pushPhase(new TitlePhase()); super.end(); return true; } }); - this.scene.ui.showText(i18next.t("menu:selectGameMode"), null, () => this.scene.ui.setOverlayMode(Mode.OPTION_SELECT, { options: options })); + globalScene.ui.showText(i18next.t("menu:selectGameMode"), null, () => globalScene.ui.setOverlayMode(Mode.OPTION_SELECT, { options: options })); } else { this.gameMode = GameModes.CLASSIC; - this.scene.ui.setMode(Mode.MESSAGE); - this.scene.ui.clearText(); + globalScene.ui.setMode(Mode.MESSAGE); + globalScene.ui.clearText(); this.end(); } return true; @@ -132,7 +132,7 @@ export class TitlePhase extends Phase { { label: i18next.t("menu:loadGame"), handler: () => { - this.scene.ui.setOverlayMode(Mode.SAVE_SLOT, SaveSlotUiMode.LOAD, + globalScene.ui.setOverlayMode(Mode.SAVE_SLOT, SaveSlotUiMode.LOAD, (slotId: integer) => { if (slotId === -1) { return this.showOptions(); @@ -153,7 +153,7 @@ export class TitlePhase extends Phase { { label: i18next.t("menu:settings"), handler: () => { - this.scene.ui.setOverlayMode(Mode.SETTINGS); + globalScene.ui.setOverlayMode(Mode.SETTINGS); return true; }, keepOpen: true @@ -163,55 +163,55 @@ export class TitlePhase extends Phase { noCancel: true, yOffset: 47 }; - this.scene.ui.setMode(Mode.TITLE, config); + globalScene.ui.setMode(Mode.TITLE, config); } loadSaveSlot(slotId: integer): void { - this.scene.sessionSlotId = slotId > -1 || !loggedInUser ? slotId : loggedInUser.lastSessionSlot; - this.scene.ui.setMode(Mode.MESSAGE); - this.scene.ui.resetModeChain(); - this.scene.gameData.loadSession(this.scene, slotId, slotId === -1 ? this.lastSessionData : undefined).then((success: boolean) => { + globalScene.sessionSlotId = slotId > -1 || !loggedInUser ? slotId : loggedInUser.lastSessionSlot; + globalScene.ui.setMode(Mode.MESSAGE); + globalScene.ui.resetModeChain(); + globalScene.gameData.loadSession(slotId, slotId === -1 ? this.lastSessionData : undefined).then((success: boolean) => { if (success) { this.loaded = true; - this.scene.ui.showText(i18next.t("menu:sessionSuccess"), null, () => this.end()); + globalScene.ui.showText(i18next.t("menu:sessionSuccess"), null, () => this.end()); } else { this.end(); } }).catch(err => { console.error(err); - this.scene.ui.showText(i18next.t("menu:failedToLoadSession"), null); + globalScene.ui.showText(i18next.t("menu:failedToLoadSession"), null); }); } initDailyRun(): void { - this.scene.ui.setMode(Mode.SAVE_SLOT, SaveSlotUiMode.SAVE, (slotId: integer) => { - this.scene.clearPhaseQueue(); + globalScene.ui.setMode(Mode.SAVE_SLOT, SaveSlotUiMode.SAVE, (slotId: integer) => { + globalScene.clearPhaseQueue(); if (slotId === -1) { - this.scene.pushPhase(new TitlePhase(this.scene)); + globalScene.pushPhase(new TitlePhase()); return super.end(); } - this.scene.sessionSlotId = slotId; + globalScene.sessionSlotId = slotId; const generateDaily = (seed: string) => { - this.scene.gameMode = getGameMode(GameModes.DAILY); + globalScene.gameMode = getGameMode(GameModes.DAILY); - this.scene.setSeed(seed); - this.scene.resetSeed(0); + globalScene.setSeed(seed); + globalScene.resetSeed(0); - this.scene.money = this.scene.gameMode.getStartingMoney(); + globalScene.money = globalScene.gameMode.getStartingMoney(); - const starters = getDailyRunStarters(this.scene, seed); - const startingLevel = this.scene.gameMode.getStartingLevel(); + const starters = getDailyRunStarters(seed); + const startingLevel = globalScene.gameMode.getStartingLevel(); - const party = this.scene.getPlayerParty(); + const party = globalScene.getPlayerParty(); const loadPokemonAssets: Promise[] = []; for (const starter of starters) { - const starterProps = this.scene.gameData.getSpeciesDexAttrProps(starter.species, starter.dexAttr); + const starterProps = globalScene.gameData.getSpeciesDexAttrProps(starter.species, starter.dexAttr); const starterFormIndex = Math.min(starterProps.formIndex, Math.max(starter.species.forms.length - 1, 0)); const starterGender = starter.species.malePercent !== null ? !starterProps.female ? Gender.MALE : Gender.FEMALE : Gender.GENDERLESS; - const starterPokemon = this.scene.addPlayerPokemon(starter.species, startingLevel, starter.abilityIndex, starterFormIndex, starterGender, starterProps.shiny, starterProps.variant, undefined, starter.nature); + const starterPokemon = globalScene.addPlayerPokemon(starter.species, startingLevel, starter.abilityIndex, starterFormIndex, starterGender, starterProps.shiny, starterProps.variant, undefined, starter.nature); starterPokemon.setVisible(false); party.push(starterPokemon); loadPokemonAssets.push(starterPokemon.loadAssets()); @@ -226,18 +226,18 @@ export class TitlePhase extends Phase { .filter((m) => m !== null); for (const m of modifiers) { - this.scene.addModifier(m, true, false, false, true); + globalScene.addModifier(m, true, false, false, true); } - this.scene.updateModifiers(true, true); + globalScene.updateModifiers(true, true); Promise.all(loadPokemonAssets).then(() => { - this.scene.time.delayedCall(500, () => this.scene.playBgm()); - this.scene.gameData.gameStats.dailyRunSessionsPlayed++; - this.scene.newArena(this.scene.gameMode.getStartingBiome(this.scene)); - this.scene.newBattle(); - this.scene.arena.init(); - this.scene.sessionPlayTime = 0; - this.scene.lastSavePlayTime = 0; + globalScene.time.delayedCall(500, () => globalScene.playBgm()); + globalScene.gameData.gameStats.dailyRunSessionsPlayed++; + globalScene.newArena(globalScene.gameMode.getStartingBiome()); + globalScene.newBattle(); + globalScene.arena.init(); + globalScene.sessionPlayTime = 0; + globalScene.lastSavePlayTime = 0; this.end(); }); }; @@ -260,43 +260,43 @@ export class TitlePhase extends Phase { } end(): void { - if (!this.loaded && !this.scene.gameMode.isDaily) { - this.scene.arena.preloadBgm(); - this.scene.gameMode = getGameMode(this.gameMode); + if (!this.loaded && !globalScene.gameMode.isDaily) { + globalScene.arena.preloadBgm(); + globalScene.gameMode = getGameMode(this.gameMode); if (this.gameMode === GameModes.CHALLENGE) { - this.scene.pushPhase(new SelectChallengePhase(this.scene)); + globalScene.pushPhase(new SelectChallengePhase()); } else { - this.scene.pushPhase(new SelectStarterPhase(this.scene)); + globalScene.pushPhase(new SelectStarterPhase()); } - this.scene.newArena(this.scene.gameMode.getStartingBiome(this.scene)); + globalScene.newArena(globalScene.gameMode.getStartingBiome()); } else { - this.scene.playBgm(); + globalScene.playBgm(); } - this.scene.pushPhase(new EncounterPhase(this.scene, this.loaded)); + globalScene.pushPhase(new EncounterPhase(this.loaded)); if (this.loaded) { - const availablePartyMembers = this.scene.getPokemonAllowedInBattle().length; + const availablePartyMembers = globalScene.getPokemonAllowedInBattle().length; - this.scene.pushPhase(new SummonPhase(this.scene, 0, true, true)); - if (this.scene.currentBattle.double && availablePartyMembers > 1) { - this.scene.pushPhase(new SummonPhase(this.scene, 1, true, true)); + globalScene.pushPhase(new SummonPhase(0, true, true)); + if (globalScene.currentBattle.double && availablePartyMembers > 1) { + globalScene.pushPhase(new SummonPhase(1, true, true)); } - if (this.scene.currentBattle.battleType !== BattleType.TRAINER && (this.scene.currentBattle.waveIndex > 1 || !this.scene.gameMode.isDaily)) { - const minPartySize = this.scene.currentBattle.double ? 2 : 1; + if (globalScene.currentBattle.battleType !== BattleType.TRAINER && (globalScene.currentBattle.waveIndex > 1 || !globalScene.gameMode.isDaily)) { + const minPartySize = globalScene.currentBattle.double ? 2 : 1; if (availablePartyMembers > minPartySize) { - this.scene.pushPhase(new CheckSwitchPhase(this.scene, 0, this.scene.currentBattle.double)); - if (this.scene.currentBattle.double) { - this.scene.pushPhase(new CheckSwitchPhase(this.scene, 1, this.scene.currentBattle.double)); + globalScene.pushPhase(new CheckSwitchPhase(0, globalScene.currentBattle.double)); + if (globalScene.currentBattle.double) { + globalScene.pushPhase(new CheckSwitchPhase(1, globalScene.currentBattle.double)); } } } } - for (const achv of Object.keys(this.scene.gameData.achvUnlocks)) { + for (const achv of Object.keys(globalScene.gameData.achvUnlocks)) { if (vouchers.hasOwnProperty(achv) && achv !== "CLASSIC_VICTORY") { - this.scene.validateVoucher(vouchers[achv]); + globalScene.validateVoucher(vouchers[achv]); } } diff --git a/src/phases/toggle-double-position-phase.ts b/src/phases/toggle-double-position-phase.ts index eff92bc6acd..f61577444d2 100644 --- a/src/phases/toggle-double-position-phase.ts +++ b/src/phases/toggle-double-position-phase.ts @@ -1,12 +1,12 @@ -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { FieldPosition } from "#app/field/pokemon"; import { BattlePhase } from "./battle-phase"; export class ToggleDoublePositionPhase extends BattlePhase { private double: boolean; - constructor(scene: BattleScene, double: boolean) { - super(scene); + constructor(double: boolean) { + super(); this.double = double; } @@ -14,11 +14,11 @@ export class ToggleDoublePositionPhase extends BattlePhase { start() { super.start(); - const playerPokemon = this.scene.getPlayerField().find(p => p.isActive(true)); + const playerPokemon = globalScene.getPlayerField().find(p => p.isActive(true)); if (playerPokemon) { - playerPokemon.setFieldPosition(this.double && this.scene.getPokemonAllowedInBattle().length > 1 ? FieldPosition.LEFT : FieldPosition.CENTER, 500).then(() => { + playerPokemon.setFieldPosition(this.double && globalScene.getPokemonAllowedInBattle().length > 1 ? FieldPosition.LEFT : FieldPosition.CENTER, 500).then(() => { if (playerPokemon.getFieldIndex() === 1) { - const party = this.scene.getPlayerParty(); + const party = globalScene.getPlayerParty(); party[1] = party[0]; party[0] = playerPokemon; } diff --git a/src/phases/trainer-message-test-phase.ts b/src/phases/trainer-message-test-phase.ts index d9e58473bd5..34ce2e8b53e 100644 --- a/src/phases/trainer-message-test-phase.ts +++ b/src/phases/trainer-message-test-phase.ts @@ -1,14 +1,14 @@ -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { trainerConfigs } from "#app/data/trainer-config"; -import { TrainerType } from "#app/enums/trainer-type"; +import type { TrainerType } from "#app/enums/trainer-type"; import { BattlePhase } from "./battle-phase"; import { TestMessagePhase } from "./test-message-phase"; export class TrainerMessageTestPhase extends BattlePhase { private trainerTypes: TrainerType[]; - constructor(scene: BattleScene, ...trainerTypes: TrainerType[]) { - super(scene); + constructor(...trainerTypes: TrainerType[]) { + super(); this.trainerTypes = trainerTypes; } @@ -33,7 +33,7 @@ export class TrainerMessageTestPhase extends BattlePhase { } for (const message of testMessages) { - this.scene.pushPhase(new TestMessagePhase(this.scene, message)); + globalScene.pushPhase(new TestMessagePhase(message)); } this.end(); diff --git a/src/phases/trainer-victory-phase.ts b/src/phases/trainer-victory-phase.ts index d797e4360ac..3fa7209751a 100644 --- a/src/phases/trainer-victory-phase.ts +++ b/src/phases/trainer-victory-phase.ts @@ -1,4 +1,3 @@ -import BattleScene from "#app/battle-scene"; import { getCharVariantFromDialogue } from "#app/data/dialogue"; import { TrainerType } from "#app/enums/trainer-type"; import { modifierTypes } from "#app/modifier/modifier-type"; @@ -9,63 +8,66 @@ import { BattlePhase } from "./battle-phase"; import { ModifierRewardPhase } from "./modifier-reward-phase"; import { MoneyRewardPhase } from "./money-reward-phase"; import { TrainerSlot } from "#app/data/trainer-config"; +import { globalScene } from "#app/global-scene"; import { Biome } from "#app/enums/biome"; import { achvs } from "#app/system/achv"; export class TrainerVictoryPhase extends BattlePhase { - constructor(scene: BattleScene) { - super(scene); + constructor() { + super(); } start() { - this.scene.disableMenu = true; + globalScene.disableMenu = true; - this.scene.playBgm(this.scene.currentBattle.trainer?.config.victoryBgm); + globalScene.playBgm(globalScene.currentBattle.trainer?.config.victoryBgm); - this.scene.unshiftPhase(new MoneyRewardPhase(this.scene, this.scene.currentBattle.trainer?.config.moneyMultiplier!)); // TODO: is this bang correct? + globalScene.unshiftPhase(new MoneyRewardPhase(globalScene.currentBattle.trainer?.config.moneyMultiplier!)); // TODO: is this bang correct? - const modifierRewardFuncs = this.scene.currentBattle.trainer?.config.modifierRewardFuncs!; // TODO: is this bang correct? + const modifierRewardFuncs = globalScene.currentBattle.trainer?.config.modifierRewardFuncs!; // TODO: is this bang correct? for (const modifierRewardFunc of modifierRewardFuncs) { - this.scene.unshiftPhase(new ModifierRewardPhase(this.scene, modifierRewardFunc)); + globalScene.unshiftPhase(new ModifierRewardPhase(modifierRewardFunc)); } - if (this.scene.eventManager.isEventActive()) { - for (const rewardFunc of this.scene.currentBattle.trainer?.config.eventRewardFuncs!) { - this.scene.unshiftPhase(new ModifierRewardPhase(this.scene, rewardFunc)); + if (globalScene.eventManager.isEventActive()) { + for (const rewardFunc of globalScene.currentBattle.trainer?.config.eventRewardFuncs!) { + globalScene.unshiftPhase(new ModifierRewardPhase(rewardFunc)); } } - const trainerType = this.scene.currentBattle.trainer?.config.trainerType!; // TODO: is this bang correct? + const trainerType = globalScene.currentBattle.trainer?.config.trainerType!; // TODO: is this bang correct? // Validate Voucher for boss trainers if (vouchers.hasOwnProperty(TrainerType[trainerType])) { - if (!this.scene.validateVoucher(vouchers[TrainerType[trainerType]]) && this.scene.currentBattle.trainer?.config.isBoss) { - this.scene.unshiftPhase(new ModifierRewardPhase(this.scene, [ modifierTypes.VOUCHER, modifierTypes.VOUCHER, modifierTypes.VOUCHER_PLUS, modifierTypes.VOUCHER_PREMIUM ][vouchers[TrainerType[trainerType]].voucherType])); + if (!globalScene.validateVoucher(vouchers[TrainerType[trainerType]]) && globalScene.currentBattle.trainer?.config.isBoss) { + globalScene.unshiftPhase(new ModifierRewardPhase([ modifierTypes.VOUCHER, modifierTypes.VOUCHER, modifierTypes.VOUCHER_PLUS, modifierTypes.VOUCHER_PREMIUM ][vouchers[TrainerType[trainerType]].voucherType])); } } // Breeders in Space achievement - if (this.scene.arena.biomeType === Biome.SPACE - && (trainerType === TrainerType.BREEDER || trainerType === TrainerType.EXPERT_POKEMON_BREEDER)) { - this.scene.validateAchv(achvs.BREEDERS_IN_SPACE); + if ( + globalScene.arena.biomeType === Biome.SPACE + && (trainerType === TrainerType.BREEDER || trainerType === TrainerType.EXPERT_POKEMON_BREEDER) + ) { + globalScene.validateAchv(achvs.BREEDERS_IN_SPACE); } - this.scene.ui.showText(i18next.t("battle:trainerDefeated", { trainerName: this.scene.currentBattle.trainer?.getName(TrainerSlot.NONE, true) }), null, () => { - const victoryMessages = this.scene.currentBattle.trainer?.getVictoryMessages()!; // TODO: is this bang correct? + globalScene.ui.showText(i18next.t("battle:trainerDefeated", { trainerName: globalScene.currentBattle.trainer?.getName(TrainerSlot.NONE, true) }), null, () => { + const victoryMessages = globalScene.currentBattle.trainer?.getVictoryMessages()!; // TODO: is this bang correct? let message: string; - this.scene.executeWithSeedOffset(() => message = Utils.randSeedItem(victoryMessages), this.scene.currentBattle.waveIndex); + globalScene.executeWithSeedOffset(() => message = Utils.randSeedItem(victoryMessages), globalScene.currentBattle.waveIndex); message = message!; // tell TS compiler it's defined now const showMessage = () => { const originalFunc = showMessageOrEnd; - showMessageOrEnd = () => this.scene.ui.showDialogue(message, this.scene.currentBattle.trainer?.getName(TrainerSlot.TRAINER, true), null, originalFunc); + showMessageOrEnd = () => globalScene.ui.showDialogue(message, globalScene.currentBattle.trainer?.getName(TrainerSlot.TRAINER, true), null, originalFunc); showMessageOrEnd(); }; let showMessageOrEnd = () => this.end(); if (victoryMessages?.length) { - if (this.scene.currentBattle.trainer?.config.hasCharSprite && !this.scene.ui.shouldSkipDialogue(message)) { + if (globalScene.currentBattle.trainer?.config.hasCharSprite && !globalScene.ui.shouldSkipDialogue(message)) { const originalFunc = showMessageOrEnd; - showMessageOrEnd = () => this.scene.charSprite.hide().then(() => this.scene.hideFieldOverlay(250).then(() => originalFunc())); - this.scene.showFieldOverlay(500).then(() => this.scene.charSprite.showCharacter(this.scene.currentBattle.trainer?.getKey()!, getCharVariantFromDialogue(victoryMessages[0])).then(() => showMessage())); // TODO: is this bang correct? + showMessageOrEnd = () => globalScene.charSprite.hide().then(() => globalScene.hideFieldOverlay(250).then(() => originalFunc())); + globalScene.showFieldOverlay(500).then(() => globalScene.charSprite.showCharacter(globalScene.currentBattle.trainer?.getKey()!, getCharVariantFromDialogue(victoryMessages[0])).then(() => showMessage())); // TODO: is this bang correct? } else { showMessage(); } diff --git a/src/phases/turn-end-phase.ts b/src/phases/turn-end-phase.ts index e5f1850758d..fc4190ef2eb 100644 --- a/src/phases/turn-end-phase.ts +++ b/src/phases/turn-end-phase.ts @@ -1,49 +1,49 @@ -import BattleScene from "#app/battle-scene"; import { applyPostTurnAbAttrs, PostTurnAbAttr } from "#app/data/ability"; import { BattlerTagLapseType } from "#app/data/battler-tags"; import { TerrainType } from "#app/data/terrain"; import { WeatherType } from "#app/enums/weather-type"; import { TurnEndEvent } from "#app/events/battle-scene"; -import Pokemon from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; import { getPokemonNameWithAffix } from "#app/messages"; import { TurnHealModifier, EnemyTurnHealModifier, EnemyStatusEffectHealChanceModifier, TurnStatusEffectModifier, TurnHeldItemTransferModifier } from "#app/modifier/modifier"; import i18next from "i18next"; import { FieldPhase } from "./field-phase"; import { PokemonHealPhase } from "./pokemon-heal-phase"; +import { globalScene } from "#app/global-scene"; export class TurnEndPhase extends FieldPhase { - constructor(scene: BattleScene) { - super(scene); + constructor() { + super(); } start() { super.start(); - this.scene.currentBattle.incrementTurn(this.scene); - this.scene.eventTarget.dispatchEvent(new TurnEndEvent(this.scene.currentBattle.turn)); + globalScene.currentBattle.incrementTurn(); + globalScene.eventTarget.dispatchEvent(new TurnEndEvent(globalScene.currentBattle.turn)); const handlePokemon = (pokemon: Pokemon) => { if (!pokemon.switchOutStatus) { pokemon.lapseTags(BattlerTagLapseType.TURN_END); - this.scene.applyModifiers(TurnHealModifier, pokemon.isPlayer(), pokemon); + globalScene.applyModifiers(TurnHealModifier, pokemon.isPlayer(), pokemon); - if (this.scene.arena.terrain?.terrainType === TerrainType.GRASSY && pokemon.isGrounded()) { - this.scene.unshiftPhase(new PokemonHealPhase(this.scene, pokemon.getBattlerIndex(), + if (globalScene.arena.terrain?.terrainType === TerrainType.GRASSY && pokemon.isGrounded()) { + globalScene.unshiftPhase(new PokemonHealPhase(pokemon.getBattlerIndex(), Math.max(pokemon.getMaxHp() >> 4, 1), i18next.t("battle:turnEndHpRestore", { pokemonName: getPokemonNameWithAffix(pokemon) }), true)); } if (!pokemon.isPlayer()) { - this.scene.applyModifiers(EnemyTurnHealModifier, false, pokemon); - this.scene.applyModifier(EnemyStatusEffectHealChanceModifier, false, pokemon); + globalScene.applyModifiers(EnemyTurnHealModifier, false, pokemon); + globalScene.applyModifier(EnemyStatusEffectHealChanceModifier, false, pokemon); } applyPostTurnAbAttrs(PostTurnAbAttr, pokemon); } - this.scene.applyModifiers(TurnStatusEffectModifier, pokemon.isPlayer(), pokemon); + globalScene.applyModifiers(TurnStatusEffectModifier, pokemon.isPlayer(), pokemon); - this.scene.applyModifiers(TurnHeldItemTransferModifier, pokemon.isPlayer(), pokemon); + globalScene.applyModifiers(TurnHeldItemTransferModifier, pokemon.isPlayer(), pokemon); pokemon.battleSummonData.turnCount++; pokemon.battleSummonData.waveTurnCount++; @@ -51,15 +51,15 @@ export class TurnEndPhase extends FieldPhase { this.executeForAll(handlePokemon); - this.scene.arena.lapseTags(); + globalScene.arena.lapseTags(); - if (this.scene.arena.weather && !this.scene.arena.weather.lapse()) { - this.scene.arena.trySetWeather(WeatherType.NONE, false); - this.scene.arena.triggerWeatherBasedFormChangesToNormal(); + if (globalScene.arena.weather && !globalScene.arena.weather.lapse()) { + globalScene.arena.trySetWeather(WeatherType.NONE, false); + globalScene.arena.triggerWeatherBasedFormChangesToNormal(); } - if (this.scene.arena.terrain && !this.scene.arena.terrain.lapse()) { - this.scene.arena.trySetTerrain(TerrainType.NONE, false); + if (globalScene.arena.terrain && !globalScene.arena.terrain.lapse()) { + globalScene.arena.trySetTerrain(TerrainType.NONE, false); } this.end(); diff --git a/src/phases/turn-init-phase.ts b/src/phases/turn-init-phase.ts index baff6c7d73f..946c9626718 100644 --- a/src/phases/turn-init-phase.ts +++ b/src/phases/turn-init-phase.ts @@ -1,8 +1,7 @@ import { BattlerIndex } from "#app/battle"; -import BattleScene from "#app/battle-scene"; import { handleMysteryEncounterBattleStartEffects, handleMysteryEncounterTurnStartEffects } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { TurnInitEvent } from "#app/events/battle-scene"; -import { PlayerPokemon } from "#app/field/pokemon"; +import type { PlayerPokemon } from "#app/field/pokemon"; import i18next from "i18next"; import { CommandPhase } from "./command-phase"; import { EnemyCommandPhase } from "./enemy-command-phase"; @@ -10,27 +9,28 @@ import { FieldPhase } from "./field-phase"; import { GameOverPhase } from "./game-over-phase"; import { ToggleDoublePositionPhase } from "./toggle-double-position-phase"; import { TurnStartPhase } from "./turn-start-phase"; +import { globalScene } from "#app/global-scene"; export class TurnInitPhase extends FieldPhase { - constructor(scene: BattleScene) { - super(scene); + constructor() { + super(); } start() { super.start(); - this.scene.getPlayerField().forEach(p => { + globalScene.getPlayerField().forEach(p => { // If this pokemon is in play and evolved into something illegal under the current challenge, force a switch if (p.isOnField() && !p.isAllowedInBattle()) { - this.scene.queueMessage(i18next.t("challenges:illegalEvolution", { "pokemon": p.name }), null, true); + globalScene.queueMessage(i18next.t("challenges:illegalEvolution", { "pokemon": p.name }), null, true); - const allowedPokemon = this.scene.getPokemonAllowedInBattle(); + const allowedPokemon = globalScene.getPokemonAllowedInBattle(); if (!allowedPokemon.length) { // If there are no longer any legal pokemon in the party, game over. - this.scene.clearPhaseQueue(); - this.scene.unshiftPhase(new GameOverPhase(this.scene)); - } else if (allowedPokemon.length >= this.scene.currentBattle.getBattlerCount() || (this.scene.currentBattle.double && !allowedPokemon[0].isActive(true))) { + globalScene.clearPhaseQueue(); + globalScene.unshiftPhase(new GameOverPhase()); + } else if (allowedPokemon.length >= globalScene.currentBattle.getBattlerCount() || (globalScene.currentBattle.double && !allowedPokemon[0].isActive(true))) { // If there is at least one pokemon in the back that is legal to switch in, force a switch. p.switchOut(); } else { @@ -38,36 +38,35 @@ export class TurnInitPhase extends FieldPhase { // This should only happen in double battles. p.leaveField(); } - if (allowedPokemon.length === 1 && this.scene.currentBattle.double) { - this.scene.unshiftPhase(new ToggleDoublePositionPhase(this.scene, true)); + if (allowedPokemon.length === 1 && globalScene.currentBattle.double) { + globalScene.unshiftPhase(new ToggleDoublePositionPhase(true)); } } }); - //this.scene.pushPhase(new MoveAnimTestPhase(this.scene)); - this.scene.eventTarget.dispatchEvent(new TurnInitEvent()); + globalScene.eventTarget.dispatchEvent(new TurnInitEvent()); - handleMysteryEncounterBattleStartEffects(this.scene); + handleMysteryEncounterBattleStartEffects(); // If true, will skip remainder of current phase (and not queue CommandPhases etc.) - if (handleMysteryEncounterTurnStartEffects(this.scene)) { + if (handleMysteryEncounterTurnStartEffects()) { this.end(); return; } - this.scene.getField().forEach((pokemon, i) => { + globalScene.getField().forEach((pokemon, i) => { if (pokemon?.isActive()) { if (pokemon.isPlayer()) { - this.scene.currentBattle.addParticipant(pokemon as PlayerPokemon); + globalScene.currentBattle.addParticipant(pokemon as PlayerPokemon); } pokemon.resetTurnData(); - this.scene.pushPhase(pokemon.isPlayer() ? new CommandPhase(this.scene, i) : new EnemyCommandPhase(this.scene, i - BattlerIndex.ENEMY)); + globalScene.pushPhase(pokemon.isPlayer() ? new CommandPhase(i) : new EnemyCommandPhase(i - BattlerIndex.ENEMY)); } }); - this.scene.pushPhase(new TurnStartPhase(this.scene)); + globalScene.pushPhase(new TurnStartPhase()); this.end(); } diff --git a/src/phases/turn-start-phase.ts b/src/phases/turn-start-phase.ts index b48b018a046..c64d7ddf526 100644 --- a/src/phases/turn-start-phase.ts +++ b/src/phases/turn-start-phase.ts @@ -1,9 +1,9 @@ -import BattleScene from "#app/battle-scene"; import { applyAbAttrs, BypassSpeedChanceAbAttr, PreventBypassSpeedChanceAbAttr } from "#app/data/ability"; import { allMoves, MoveHeaderAttr } from "#app/data/move"; import { Abilities } from "#app/enums/abilities"; import { Stat } from "#app/enums/stat"; -import Pokemon, { PokemonMove } from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; +import { PokemonMove } from "#app/field/pokemon"; import { BypassSpeedChanceModifier } from "#app/modifier/modifier"; import { Command } from "#app/ui/command-ui-handler"; import * as Utils from "#app/utils"; @@ -20,10 +20,11 @@ import { CheckStatusEffectPhase } from "#app/phases/check-status-effect-phase"; import { BattlerIndex } from "#app/battle"; import { TrickRoomTag } from "#app/data/arena-tag"; import { SwitchType } from "#enums/switch-type"; +import { globalScene } from "#app/global-scene"; export class TurnStartPhase extends FieldPhase { - constructor(scene: BattleScene) { - super(scene); + constructor() { + super(); } /** @@ -32,20 +33,20 @@ export class TurnStartPhase extends FieldPhase { * @returns {@linkcode BattlerIndex[]} the battle indices of all pokemon on the field ordered by speed */ getSpeedOrder(): BattlerIndex[] { - const playerField = this.scene.getPlayerField().filter(p => p.isActive()) as Pokemon[]; - const enemyField = this.scene.getEnemyField().filter(p => p.isActive()) as Pokemon[]; + const playerField = globalScene.getPlayerField().filter(p => p.isActive()) as Pokemon[]; + const enemyField = globalScene.getEnemyField().filter(p => p.isActive()) as Pokemon[]; // We shuffle the list before sorting so speed ties produce random results let orderedTargets: Pokemon[] = playerField.concat(enemyField); // We seed it with the current turn to prevent an inconsistency where it // was varying based on how long since you last reloaded - this.scene.executeWithSeedOffset(() => { + globalScene.executeWithSeedOffset(() => { orderedTargets = Utils.randSeedShuffle(orderedTargets); - }, this.scene.currentBattle.turn, this.scene.waveSeed); + }, globalScene.currentBattle.turn, globalScene.waveSeed); // Next, a check for Trick Room is applied to determine sort order. const speedReversed = new Utils.BooleanHolder(false); - this.scene.arena.applyTags(TrickRoomTag, false, speedReversed); + globalScene.arena.applyTags(TrickRoomTag, false, speedReversed); // Adjust the sort function based on whether Trick Room is active. orderedTargets.sort((a: Pokemon, b: Pokemon) => { @@ -70,13 +71,13 @@ export class TurnStartPhase extends FieldPhase { // This occurs before the main loop because of battles with more than two Pokemon const battlerBypassSpeed = {}; - this.scene.getField(true).filter(p => p.summonData).map(p => { + globalScene.getField(true).filter(p => p.summonData).map(p => { const bypassSpeed = new Utils.BooleanHolder(false); const canCheckHeldItems = new Utils.BooleanHolder(true); applyAbAttrs(BypassSpeedChanceAbAttr, p, null, false, bypassSpeed); applyAbAttrs(PreventBypassSpeedChanceAbAttr, p, null, false, bypassSpeed, canCheckHeldItems); if (canCheckHeldItems.value) { - this.scene.applyModifiers(BypassSpeedChanceModifier, p.isPlayer(), p, bypassSpeed); + globalScene.applyModifiers(BypassSpeedChanceModifier, p.isPlayer(), p, bypassSpeed); } battlerBypassSpeed[p.getBattlerIndex()] = bypassSpeed; }); @@ -85,8 +86,8 @@ export class TurnStartPhase extends FieldPhase { // Non-FIGHT commands (SWITCH, BALL, RUN) have a higher command priority and will always occur before any FIGHT commands. moveOrder = moveOrder.slice(0); moveOrder.sort((a, b) => { - const aCommand = this.scene.currentBattle.turnCommands[a]; - const bCommand = this.scene.currentBattle.turnCommands[b]; + const aCommand = globalScene.currentBattle.turnCommands[a]; + const bCommand = globalScene.currentBattle.turnCommands[b]; if (aCommand?.command !== bCommand?.command) { if (aCommand?.command === Command.FIGHT) { @@ -98,8 +99,8 @@ export class TurnStartPhase extends FieldPhase { const aMove = allMoves[aCommand.move!.move]; const bMove = allMoves[bCommand!.move!.move]; - const aUser = this.scene.getField(true).find(p => p.getBattlerIndex() === a)!; - const bUser = this.scene.getField(true).find(p => p.getBattlerIndex() === b)!; + const aUser = globalScene.getField(true).find(p => p.getBattlerIndex() === a)!; + const bUser = globalScene.getField(true).find(p => p.getBattlerIndex() === b)!; const aPriority = aMove.getPriority(aUser, false); const bPriority = bMove.getPriority(bUser, false); @@ -133,7 +134,7 @@ export class TurnStartPhase extends FieldPhase { start() { super.start(); - const field = this.scene.getField(); + const field = globalScene.getField(); const moveOrder = this.getCommandOrder(); let orderIndex = 0; @@ -141,7 +142,7 @@ export class TurnStartPhase extends FieldPhase { for (const o of moveOrder) { const pokemon = field[o]; - const turnCommand = this.scene.currentBattle.turnCommands[o]; + const turnCommand = globalScene.currentBattle.turnCommands[o]; if (turnCommand?.skip) { continue; @@ -156,29 +157,29 @@ export class TurnStartPhase extends FieldPhase { } const move = pokemon.getMoveset().find(m => m?.moveId === queuedMove.move && m?.ppUsed < m?.getMovePp()) || new PokemonMove(queuedMove.move); if (move.getMove().hasAttr(MoveHeaderAttr)) { - this.scene.unshiftPhase(new MoveHeaderPhase(this.scene, pokemon, move)); + globalScene.unshiftPhase(new MoveHeaderPhase(pokemon, move)); } if (pokemon.isPlayer()) { if (turnCommand.cursor === -1) { - this.scene.pushPhase(new MovePhase(this.scene, pokemon, turnCommand.targets || turnCommand.move!.targets, move));//TODO: is the bang correct here? + globalScene.pushPhase(new MovePhase(pokemon, turnCommand.targets || turnCommand.move!.targets, move));//TODO: is the bang correct here? } else { - const playerPhase = new MovePhase(this.scene, pokemon, turnCommand.targets || turnCommand.move!.targets, move, false, queuedMove.ignorePP);//TODO: is the bang correct here? - this.scene.pushPhase(playerPhase); + const playerPhase = new MovePhase(pokemon, turnCommand.targets || turnCommand.move!.targets, move, false, queuedMove.ignorePP);//TODO: is the bang correct here? + globalScene.pushPhase(playerPhase); } } else { - this.scene.pushPhase(new MovePhase(this.scene, pokemon, turnCommand.targets || turnCommand.move!.targets, move, false, queuedMove.ignorePP));//TODO: is the bang correct here? + globalScene.pushPhase(new MovePhase(pokemon, turnCommand.targets || turnCommand.move!.targets, move, false, queuedMove.ignorePP));//TODO: is the bang correct here? } break; case Command.BALL: - this.scene.unshiftPhase(new AttemptCapturePhase(this.scene, turnCommand.targets![0] % 2, turnCommand.cursor!));//TODO: is the bang correct here? + globalScene.unshiftPhase(new AttemptCapturePhase(turnCommand.targets![0] % 2, turnCommand.cursor!));//TODO: is the bang correct here? break; case Command.POKEMON: const switchType = turnCommand.args?.[0] ? SwitchType.BATON_PASS : SwitchType.SWITCH; - this.scene.unshiftPhase(new SwitchSummonPhase(this.scene, switchType, pokemon.getFieldIndex(), turnCommand.cursor!, true, pokemon.isPlayer())); + globalScene.unshiftPhase(new SwitchSummonPhase(switchType, pokemon.getFieldIndex(), turnCommand.cursor!, true, pokemon.isPlayer())); break; case Command.RUN: let runningPokemon = pokemon; - if (this.scene.currentBattle.double) { + if (globalScene.currentBattle.double) { const playerActivePokemon = field.filter(pokemon => { if (!!pokemon) { return pokemon.isPlayer() && pokemon.isActive(); @@ -195,18 +196,18 @@ export class TurnStartPhase extends FieldPhase { runningPokemon = hasRunAway !== undefined ? hasRunAway : fasterPokemon; } } - this.scene.unshiftPhase(new AttemptRunPhase(this.scene, runningPokemon.getFieldIndex())); + globalScene.unshiftPhase(new AttemptRunPhase(runningPokemon.getFieldIndex())); break; } } - this.scene.pushPhase(new WeatherEffectPhase(this.scene)); - this.scene.pushPhase(new BerryPhase(this.scene)); + globalScene.pushPhase(new WeatherEffectPhase()); + globalScene.pushPhase(new BerryPhase()); /** Add a new phase to check who should be taking status damage */ - this.scene.pushPhase(new CheckStatusEffectPhase(this.scene, moveOrder)); + globalScene.pushPhase(new CheckStatusEffectPhase(moveOrder)); - this.scene.pushPhase(new TurnEndPhase(this.scene)); + globalScene.pushPhase(new TurnEndPhase()); /** * this.end() will call shiftPhase(), which dumps everything from PrependQueue (aka everything that is unshifted()) to the front diff --git a/src/phases/unavailable-phase.ts b/src/phases/unavailable-phase.ts index 59bfca7875e..c0b5d4224c5 100644 --- a/src/phases/unavailable-phase.ts +++ b/src/phases/unavailable-phase.ts @@ -1,16 +1,16 @@ -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { Phase } from "#app/phase"; import { Mode } from "#app/ui/ui"; import { LoginPhase } from "./login-phase"; export class UnavailablePhase extends Phase { - constructor(scene: BattleScene) { - super(scene); + constructor() { + super(); } start(): void { - this.scene.ui.setMode(Mode.UNAVAILABLE, () => { - this.scene.unshiftPhase(new LoginPhase(this.scene, true)); + globalScene.ui.setMode(Mode.UNAVAILABLE, () => { + globalScene.unshiftPhase(new LoginPhase(true)); this.end(); }); } diff --git a/src/phases/unlock-phase.ts b/src/phases/unlock-phase.ts index 65060309a6c..2d24ee92baf 100644 --- a/src/phases/unlock-phase.ts +++ b/src/phases/unlock-phase.ts @@ -1,26 +1,27 @@ -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { Phase } from "#app/phase"; -import { Unlockables, getUnlockableName } from "#app/system/unlockables"; +import type { Unlockables } from "#app/system/unlockables"; +import { getUnlockableName } from "#app/system/unlockables"; import { Mode } from "#app/ui/ui"; import i18next from "i18next"; export class UnlockPhase extends Phase { private unlockable: Unlockables; - constructor(scene: BattleScene, unlockable: Unlockables) { - super(scene); + constructor(unlockable: Unlockables) { + super(); this.unlockable = unlockable; } start(): void { - this.scene.time.delayedCall(2000, () => { - this.scene.gameData.unlocks[this.unlockable] = true; + globalScene.time.delayedCall(2000, () => { + globalScene.gameData.unlocks[this.unlockable] = true; // Sound loaded into game as is - this.scene.playSound("level_up_fanfare"); - this.scene.ui.setMode(Mode.MESSAGE); - this.scene.ui.showText(i18next.t("battle:unlockedSomething", { unlockedThing: getUnlockableName(this.unlockable) }), null, () => { - this.scene.time.delayedCall(1500, () => this.scene.arenaBg.setVisible(true)); + globalScene.playSound("level_up_fanfare"); + globalScene.ui.setMode(Mode.MESSAGE); + globalScene.ui.showText(i18next.t("battle:unlockedSomething", { unlockedThing: getUnlockableName(this.unlockable) }), null, () => { + globalScene.time.delayedCall(1500, () => globalScene.arenaBg.setVisible(true)); this.end(); }, null, true, 1500); }); diff --git a/src/phases/victory-phase.ts b/src/phases/victory-phase.ts index 62479241a6c..8918b664a36 100644 --- a/src/phases/victory-phase.ts +++ b/src/phases/victory-phase.ts @@ -1,6 +1,7 @@ -import BattleScene from "#app/battle-scene"; -import { BattlerIndex, BattleType, ClassicFixedBossWaves } from "#app/battle"; -import { CustomModifierSettings, modifierTypes } from "#app/modifier/modifier-type"; +import type { BattlerIndex } from "#app/battle"; +import { BattleType, ClassicFixedBossWaves } from "#app/battle"; +import type { CustomModifierSettings } from "#app/modifier/modifier-type"; +import { modifierTypes } from "#app/modifier/modifier-type"; import { BattleEndPhase } from "./battle-end-phase"; import { NewBattlePhase } from "./new-battle-phase"; import { PokemonPhase } from "./pokemon-phase"; @@ -11,13 +12,14 @@ import { ModifierRewardPhase } from "./modifier-reward-phase"; import { SelectModifierPhase } from "./select-modifier-phase"; import { TrainerVictoryPhase } from "./trainer-victory-phase"; import { handleMysteryEncounterVictory } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import { globalScene } from "#app/global-scene"; export class VictoryPhase extends PokemonPhase { /** If true, indicates that the phase is intended for EXP purposes only, and not to continue a battle to next phase */ isExpOnly: boolean; - constructor(scene: BattleScene, battlerIndex: BattlerIndex | integer, isExpOnly: boolean = false) { - super(scene, battlerIndex); + constructor(battlerIndex: BattlerIndex | integer, isExpOnly: boolean = false) { + super(battlerIndex); this.isExpOnly = isExpOnly; } @@ -25,61 +27,61 @@ export class VictoryPhase extends PokemonPhase { start() { super.start(); - const isMysteryEncounter = this.scene.currentBattle.isBattleMysteryEncounter(); + const isMysteryEncounter = globalScene.currentBattle.isBattleMysteryEncounter(); // update Pokemon defeated count except for MEs that disable it - if (!isMysteryEncounter || !this.scene.currentBattle.mysteryEncounter?.preventGameStatsUpdates) { - this.scene.gameData.gameStats.pokemonDefeated++; + if (!isMysteryEncounter || !globalScene.currentBattle.mysteryEncounter?.preventGameStatsUpdates) { + globalScene.gameData.gameStats.pokemonDefeated++; } const expValue = this.getPokemon().getExpValue(); - this.scene.applyPartyExp(expValue, true); + globalScene.applyPartyExp(expValue, true); if (isMysteryEncounter) { - handleMysteryEncounterVictory(this.scene, false, this.isExpOnly); + handleMysteryEncounterVictory(false, this.isExpOnly); return this.end(); } - if (!this.scene.getEnemyParty().find(p => this.scene.currentBattle.battleType === BattleType.WILD ? p.isOnField() : !p?.isFainted(true))) { - this.scene.pushPhase(new BattleEndPhase(this.scene, true)); - if (this.scene.currentBattle.battleType === BattleType.TRAINER) { - this.scene.pushPhase(new TrainerVictoryPhase(this.scene)); + if (!globalScene.getEnemyParty().find(p => globalScene.currentBattle.battleType === BattleType.WILD ? p.isOnField() : !p?.isFainted(true))) { + globalScene.pushPhase(new BattleEndPhase(true)); + if (globalScene.currentBattle.battleType === BattleType.TRAINER) { + globalScene.pushPhase(new TrainerVictoryPhase()); } - if (this.scene.gameMode.isEndless || !this.scene.gameMode.isWaveFinal(this.scene.currentBattle.waveIndex)) { - this.scene.pushPhase(new EggLapsePhase(this.scene)); - if (this.scene.gameMode.isClassic && this.scene.currentBattle.waveIndex === ClassicFixedBossWaves.EVIL_BOSS_2) { + if (globalScene.gameMode.isEndless || !globalScene.gameMode.isWaveFinal(globalScene.currentBattle.waveIndex)) { + globalScene.pushPhase(new EggLapsePhase()); + if (globalScene.gameMode.isClassic && globalScene.currentBattle.waveIndex === ClassicFixedBossWaves.EVIL_BOSS_2) { // Should get Lock Capsule on 165 before shop phase so it can be used in the rewards shop - this.scene.pushPhase(new ModifierRewardPhase(this.scene, modifierTypes.LOCK_CAPSULE)); + globalScene.pushPhase(new ModifierRewardPhase(modifierTypes.LOCK_CAPSULE)); } - if (this.scene.currentBattle.waveIndex % 10) { - this.scene.pushPhase(new SelectModifierPhase(this.scene, undefined, undefined, this.getFixedBattleCustomModifiers())); - } else if (this.scene.gameMode.isDaily) { - this.scene.pushPhase(new ModifierRewardPhase(this.scene, modifierTypes.EXP_CHARM)); - if (this.scene.currentBattle.waveIndex > 10 && !this.scene.gameMode.isWaveFinal(this.scene.currentBattle.waveIndex)) { - this.scene.pushPhase(new ModifierRewardPhase(this.scene, modifierTypes.GOLDEN_POKEBALL)); + if (globalScene.currentBattle.waveIndex % 10) { + globalScene.pushPhase(new SelectModifierPhase(undefined, undefined, this.getFixedBattleCustomModifiers())); + } else if (globalScene.gameMode.isDaily) { + globalScene.pushPhase(new ModifierRewardPhase(modifierTypes.EXP_CHARM)); + if (globalScene.currentBattle.waveIndex > 10 && !globalScene.gameMode.isWaveFinal(globalScene.currentBattle.waveIndex)) { + globalScene.pushPhase(new ModifierRewardPhase(modifierTypes.GOLDEN_POKEBALL)); } } else { - const superExpWave = !this.scene.gameMode.isEndless ? (this.scene.offsetGym ? 0 : 20) : 10; - if (this.scene.gameMode.isEndless && this.scene.currentBattle.waveIndex === 10) { - this.scene.pushPhase(new ModifierRewardPhase(this.scene, modifierTypes.EXP_SHARE)); + const superExpWave = !globalScene.gameMode.isEndless ? (globalScene.offsetGym ? 0 : 20) : 10; + if (globalScene.gameMode.isEndless && globalScene.currentBattle.waveIndex === 10) { + globalScene.pushPhase(new ModifierRewardPhase(modifierTypes.EXP_SHARE)); } - if (this.scene.currentBattle.waveIndex <= 750 && (this.scene.currentBattle.waveIndex <= 500 || (this.scene.currentBattle.waveIndex % 30) === superExpWave)) { - this.scene.pushPhase(new ModifierRewardPhase(this.scene, (this.scene.currentBattle.waveIndex % 30) !== superExpWave || this.scene.currentBattle.waveIndex > 250 ? modifierTypes.EXP_CHARM : modifierTypes.SUPER_EXP_CHARM)); + if (globalScene.currentBattle.waveIndex <= 750 && (globalScene.currentBattle.waveIndex <= 500 || (globalScene.currentBattle.waveIndex % 30) === superExpWave)) { + globalScene.pushPhase(new ModifierRewardPhase((globalScene.currentBattle.waveIndex % 30) !== superExpWave || globalScene.currentBattle.waveIndex > 250 ? modifierTypes.EXP_CHARM : modifierTypes.SUPER_EXP_CHARM)); } - if (this.scene.currentBattle.waveIndex <= 150 && !(this.scene.currentBattle.waveIndex % 50)) { - this.scene.pushPhase(new ModifierRewardPhase(this.scene, modifierTypes.GOLDEN_POKEBALL)); + if (globalScene.currentBattle.waveIndex <= 150 && !(globalScene.currentBattle.waveIndex % 50)) { + globalScene.pushPhase(new ModifierRewardPhase(modifierTypes.GOLDEN_POKEBALL)); } - if (this.scene.gameMode.isEndless && !(this.scene.currentBattle.waveIndex % 50)) { - this.scene.pushPhase(new ModifierRewardPhase(this.scene, !(this.scene.currentBattle.waveIndex % 250) ? modifierTypes.VOUCHER_PREMIUM : modifierTypes.VOUCHER_PLUS)); - this.scene.pushPhase(new AddEnemyBuffModifierPhase(this.scene)); + if (globalScene.gameMode.isEndless && !(globalScene.currentBattle.waveIndex % 50)) { + globalScene.pushPhase(new ModifierRewardPhase(!(globalScene.currentBattle.waveIndex % 250) ? modifierTypes.VOUCHER_PREMIUM : modifierTypes.VOUCHER_PLUS)); + globalScene.pushPhase(new AddEnemyBuffModifierPhase()); } } - this.scene.pushPhase(new NewBattlePhase(this.scene)); + globalScene.pushPhase(new NewBattlePhase()); } else { - this.scene.currentBattle.battleType = BattleType.CLEAR; - this.scene.score += this.scene.gameMode.getClearScoreBonus(); - this.scene.updateScoreText(); - this.scene.pushPhase(new GameOverPhase(this.scene, true)); + globalScene.currentBattle.battleType = BattleType.CLEAR; + globalScene.score += globalScene.gameMode.getClearScoreBonus(); + globalScene.updateScoreText(); + globalScene.pushPhase(new GameOverPhase(true)); } } @@ -91,8 +93,8 @@ export class VictoryPhase extends PokemonPhase { * will pass those settings to the upcoming {@linkcode SelectModifierPhase}`. */ getFixedBattleCustomModifiers(): CustomModifierSettings | undefined { - const gameMode = this.scene.gameMode; - const waveIndex = this.scene.currentBattle.waveIndex; + const gameMode = globalScene.gameMode; + const waveIndex = globalScene.currentBattle.waveIndex; if (gameMode.isFixedBattle(waveIndex)) { return gameMode.getFixedBattle(waveIndex).customModifierRewardSettings; } diff --git a/src/phases/weather-effect-phase.ts b/src/phases/weather-effect-phase.ts index 442bafa0ca7..aa09f8a850d 100644 --- a/src/phases/weather-effect-phase.ts +++ b/src/phases/weather-effect-phase.ts @@ -1,24 +1,26 @@ -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { applyPreWeatherEffectAbAttrs, SuppressWeatherEffectAbAttr, PreWeatherDamageAbAttr, applyAbAttrs, BlockNonDirectDamageAbAttr, applyPostWeatherLapseAbAttrs, PostWeatherLapseAbAttr } from "#app/data/ability"; import { CommonAnim } from "#app/data/battle-anims"; -import { Weather, getWeatherDamageMessage, getWeatherLapseMessage } from "#app/data/weather"; +import type { Weather } from "#app/data/weather"; +import { getWeatherDamageMessage, getWeatherLapseMessage } from "#app/data/weather"; import { BattlerTagType } from "#app/enums/battler-tag-type"; import { WeatherType } from "#app/enums/weather-type"; -import Pokemon, { HitResult } from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; +import { HitResult } from "#app/field/pokemon"; import * as Utils from "#app/utils"; import { CommonAnimPhase } from "./common-anim-phase"; export class WeatherEffectPhase extends CommonAnimPhase { public weather: Weather | null; - constructor(scene: BattleScene) { - super(scene, undefined, undefined, CommonAnim.SUNNY + ((scene?.arena?.weather?.weatherType || WeatherType.NONE) - 1)); - this.weather = scene?.arena?.weather; + constructor() { + super(undefined, undefined, CommonAnim.SUNNY + ((globalScene?.arena?.weather?.weatherType || WeatherType.NONE) - 1)); + this.weather = globalScene?.arena?.weather; } start() { // Update weather state with any changes that occurred during the turn - this.weather = this.scene?.arena?.weather; + this.weather = globalScene?.arena?.weather; if (!this.weather) { this.end(); @@ -46,7 +48,7 @@ export class WeatherEffectPhase extends CommonAnimPhase { const damage = Utils.toDmgValue(pokemon.getMaxHp() / 16); - this.scene.queueMessage(getWeatherDamageMessage(this.weather?.weatherType!, pokemon)!); // TODO: are those bangs correct? + globalScene.queueMessage(getWeatherDamageMessage(this.weather?.weatherType!, pokemon)!); // TODO: are those bangs correct? pokemon.damageAndUpdate(damage, HitResult.EFFECTIVE, false, false, true); }; @@ -59,7 +61,7 @@ export class WeatherEffectPhase extends CommonAnimPhase { } } - this.scene.ui.showText(getWeatherLapseMessage(this.weather.weatherType) ?? "", null, () => { + globalScene.ui.showText(getWeatherLapseMessage(this.weather.weatherType) ?? "", null, () => { this.executeForAll((pokemon: Pokemon) => { if (!pokemon.switchOutStatus) { applyPostWeatherLapseAbAttrs(PostWeatherLapseAbAttr, pokemon, this.weather); diff --git a/src/pipelines/field-sprite.ts b/src/pipelines/field-sprite.ts index c370f5586e5..f81845073c1 100644 --- a/src/pipelines/field-sprite.ts +++ b/src/pipelines/field-sprite.ts @@ -1,4 +1,4 @@ -import BattleScene from "../battle-scene"; +import { globalScene } from "#app/global-scene"; import { TerrainType, getTerrainColor } from "../data/terrain"; import * as Utils from "../utils"; @@ -227,22 +227,21 @@ export default class FieldSpritePipeline extends Phaser.Renderer.WebGL.Pipelines super.onBind(); const sprite = gameObject as Phaser.GameObjects.Sprite | Phaser.GameObjects.NineSlice; - const scene = sprite.scene as BattleScene; const data = sprite.pipelineData; const ignoreTimeTint = data["ignoreTimeTint"] as boolean; const terrainColorRatio = data["terrainColorRatio"] as number || 0; - const time = scene.currentBattle?.waveIndex - ? ((scene.currentBattle.waveIndex + scene.waveCycleOffset) % 40) / 40 // ((new Date().getSeconds() * 1000 + new Date().getMilliseconds()) % 10000) / 10000 + const time = globalScene.currentBattle?.waveIndex + ? ((globalScene.currentBattle.waveIndex + globalScene.waveCycleOffset) % 40) / 40 // ((new Date().getSeconds() * 1000 + new Date().getMilliseconds()) % 10000) / 10000 : Utils.getCurrentTime(); this.set1f("time", time); this.set1i("ignoreTimeTint", ignoreTimeTint ? 1 : 0); - this.set1i("isOutside", scene.arena.isOutside() ? 1 : 0); - this.set3fv("dayTint", scene.arena.getDayTint().map(c => c / 255)); - this.set3fv("duskTint", scene.arena.getDuskTint().map(c => c / 255)); - this.set3fv("nightTint", scene.arena.getNightTint().map(c => c / 255)); - this.set3fv("terrainColor", getTerrainColor(scene.arena.terrain?.terrainType || TerrainType.NONE).map(c => c / 255)); + this.set1i("isOutside", globalScene.arena.isOutside() ? 1 : 0); + this.set3fv("dayTint", globalScene.arena.getDayTint().map(c => c / 255)); + this.set3fv("duskTint", globalScene.arena.getDuskTint().map(c => c / 255)); + this.set3fv("nightTint", globalScene.arena.getNightTint().map(c => c / 255)); + this.set3fv("terrainColor", getTerrainColor(globalScene.arena.terrain?.terrainType || TerrainType.NONE).map(c => c / 255)); this.set1f("terrainColorRatio", terrainColorRatio); } diff --git a/src/pipelines/invert.ts b/src/pipelines/invert.ts index 5d0161e8afa..9c30f2b5cee 100644 --- a/src/pipelines/invert.ts +++ b/src/pipelines/invert.ts @@ -1,4 +1,4 @@ -import { Game } from "phaser"; +import type { Game } from "phaser"; const fragShader = ` precision mediump float; diff --git a/src/pipelines/sprite.ts b/src/pipelines/sprite.ts index 88d6ce2d387..1fc3b771897 100644 --- a/src/pipelines/sprite.ts +++ b/src/pipelines/sprite.ts @@ -1,10 +1,10 @@ -import BattleScene from "../battle-scene"; import { variantColorCache } from "#app/data/variant"; -import Pokemon from "../field/pokemon"; -import Trainer from "../field/trainer"; +import MysteryEncounterIntroVisuals from "#app/field/mystery-encounter-intro"; +import Pokemon from "#app/field/pokemon"; +import Trainer from "#app/field/trainer"; +import { globalScene } from "#app/global-scene"; +import * as Utils from "#app/utils"; import FieldSpritePipeline from "./field-sprite"; -import * as Utils from "../utils"; -import MysteryEncounterIntroVisuals from "../field/mystery-encounter-intro"; const spriteFragShader = ` #ifdef GL_FRAGMENT_PRECISION_HIGH @@ -384,7 +384,7 @@ export default class SpritePipeline extends FieldSpritePipeline { this.set4fv("tone", tone); this.bindTexture(this.game.textures.get("tera").source[0].glTexture!, 1); // TODO: is this bang correct? - if ((gameObject.scene as BattleScene).fusionPaletteSwaps) { + if (globalScene.fusionPaletteSwaps) { const spriteColors = ((ignoreOverride && data["spriteColorsBase"]) || data["spriteColors"] || []) as number[][]; const fusionSpriteColors = ((ignoreOverride && data["fusionSpriteColorsBase"]) || data["fusionSpriteColors"] || []) as number[][]; diff --git a/src/system/achv.ts b/src/system/achv.ts index a98e396264d..1f5662dbdbe 100644 --- a/src/system/achv.ts +++ b/src/system/achv.ts @@ -1,14 +1,15 @@ -import { Modifier } from "typescript"; -import BattleScene from "../battle-scene"; +import type { Modifier } from "typescript"; import { TurnHeldItemTransferModifier } from "../modifier/modifier"; import { pokemonEvolutions } from "#app/data/balance/pokemon-evolutions"; import i18next from "i18next"; import * as Utils from "../utils"; import { PlayerGender } from "#enums/player-gender"; -import { Challenge, FreshStartChallenge, SingleGenerationChallenge, SingleTypeChallenge, InverseBattleChallenge } from "#app/data/challenge"; -import { ConditionFn } from "#app/@types/common"; +import type { Challenge } from "#app/data/challenge"; +import { FreshStartChallenge, SingleGenerationChallenge, SingleTypeChallenge, InverseBattleChallenge } from "#app/data/challenge"; +import type { ConditionFn } from "#app/@types/common"; import { Stat, getShortenedStatKey } from "#app/enums/stat"; import { Challenges } from "#app/enums/challenges"; +import { globalScene } from "#app/global-scene"; export enum AchvTier { COMMON, @@ -66,8 +67,8 @@ export class Achv { return this; } - validate(scene: BattleScene, args?: any[]): boolean { - return !this.conditionFunc || this.conditionFunc(scene, args); + validate(args?: any[]): boolean { + return !this.conditionFunc || this.conditionFunc(args); } getTier(): AchvTier { @@ -91,7 +92,7 @@ export class MoneyAchv extends Achv { moneyAmount: integer; constructor(localizationKey: string, name: string, moneyAmount: integer, iconImage: string, score: integer) { - super(localizationKey, name, "", iconImage, score, (scene: BattleScene, _args: any[]) => scene.money >= this.moneyAmount); + super(localizationKey, name, "", iconImage, score, (_args: any[]) => globalScene.money >= this.moneyAmount); this.moneyAmount = moneyAmount; } } @@ -100,7 +101,7 @@ export class RibbonAchv extends Achv { ribbonAmount: integer; constructor(localizationKey: string, name: string, ribbonAmount: integer, iconImage: string, score: integer) { - super(localizationKey, name, "", iconImage, score, (scene: BattleScene, _args: any[]) => scene.gameData.gameStats.ribbonsOwned >= this.ribbonAmount); + super(localizationKey, name, "", iconImage, score, (_args: any[]) => globalScene.gameData.gameStats.ribbonsOwned >= this.ribbonAmount); this.ribbonAmount = ribbonAmount; } } @@ -109,7 +110,7 @@ export class DamageAchv extends Achv { damageAmount: integer; constructor(localizationKey: string, name: string, damageAmount: integer, iconImage: string, score: integer) { - super(localizationKey, name, "", iconImage, score, (_scene: BattleScene, args: any[]) => (args[0] instanceof Utils.NumberHolder ? args[0].value : args[0]) >= this.damageAmount); + super(localizationKey, name, "", iconImage, score, (args: any[]) => (args[0] instanceof Utils.NumberHolder ? args[0].value : args[0]) >= this.damageAmount); this.damageAmount = damageAmount; } } @@ -118,7 +119,7 @@ export class HealAchv extends Achv { healAmount: integer; constructor(localizationKey: string, name: string, healAmount: integer, iconImage: string, score: integer) { - super(localizationKey, name, "", iconImage, score, (_scene: BattleScene, args: any[]) => (args[0] instanceof Utils.NumberHolder ? args[0].value : args[0]) >= this.healAmount); + super(localizationKey, name, "", iconImage, score, (args: any[]) => (args[0] instanceof Utils.NumberHolder ? args[0].value : args[0]) >= this.healAmount); this.healAmount = healAmount; } } @@ -127,20 +128,20 @@ export class LevelAchv extends Achv { level: integer; constructor(localizationKey: string, name: string, level: integer, iconImage: string, score: integer) { - super(localizationKey, name, "", iconImage, score, (scene: BattleScene, args: any[]) => (args[0] instanceof Utils.NumberHolder ? args[0].value : args[0]) >= this.level); + super(localizationKey, name, "", iconImage, score, (args: any[]) => (args[0] instanceof Utils.NumberHolder ? args[0].value : args[0]) >= this.level); this.level = level; } } export class ModifierAchv extends Achv { constructor(localizationKey: string, name: string, description: string, iconImage: string, score: integer, modifierFunc: (modifier: Modifier) => boolean) { - super(localizationKey, name, description, iconImage, score, (_scene: BattleScene, args: any[]) => modifierFunc((args[0] as Modifier))); + super(localizationKey, name, description, iconImage, score, (args: any[]) => modifierFunc((args[0] as Modifier))); } } export class ChallengeAchv extends Achv { - constructor(localizationKey: string, name: string, description: string, iconImage: string, score: integer, challengeFunc: (challenge: Challenge, scene: BattleScene) => boolean) { - super(localizationKey, name, description, iconImage, score, (_scene: BattleScene, args: any[]) => challengeFunc(args[0] as Challenge, _scene)); + constructor(localizationKey: string, name: string, description: string, iconImage: string, score: integer, challengeFunc: (challenge: Challenge) => boolean) { + super(localizationKey, name, description, iconImage, score, (args: any[]) => challengeFunc(args[0] as Challenge)); } } @@ -152,7 +153,7 @@ export class ChallengeAchv extends Achv { */ export function getAchievementDescription(localizationKey: string): string { // We need to get the player gender from the game data to add the correct prefix to the achievement name - const genderIndex = this?.scene?.gameData?.gender ?? PlayerGender.MALE; //TODO: why is `this` being used here!? We are not inside a scope (copied from original) + const genderIndex = globalScene?.gameData?.gender ?? PlayerGender.MALE; const genderStr = PlayerGender[genderIndex].toLowerCase(); switch (localizationKey) { @@ -327,36 +328,36 @@ export const achvs = { HATCH_SHINY: new Achv("HATCH_SHINY", "", "HATCH_SHINY.description", "golden_egg", 100).setSecret(), HIDDEN_ABILITY: new Achv("HIDDEN_ABILITY", "", "HIDDEN_ABILITY.description", "ability_charm", 75), PERFECT_IVS: new Achv("PERFECT_IVS", "", "PERFECT_IVS.description", "blunder_policy", 100), - CLASSIC_VICTORY: new Achv("CLASSIC_VICTORY", "", "CLASSIC_VICTORY.description", "relic_crown", 150, c => c.gameData.gameStats.sessionsWon === 0), - UNEVOLVED_CLASSIC_VICTORY: new Achv("UNEVOLVED_CLASSIC_VICTORY", "", "UNEVOLVED_CLASSIC_VICTORY.description", "eviolite", 175, c => c.getPlayerParty().some(p => p.getSpeciesForm(true).speciesId in pokemonEvolutions)), - MONO_GEN_ONE_VICTORY: new ChallengeAchv("MONO_GEN_ONE", "", "MONO_GEN_ONE.description", "ribbon_gen1", 100, (c, scene) => c instanceof SingleGenerationChallenge && c.value === 1 && !scene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_GEN_TWO_VICTORY: new ChallengeAchv("MONO_GEN_TWO", "", "MONO_GEN_TWO.description", "ribbon_gen2", 100, (c, scene) => c instanceof SingleGenerationChallenge && c.value === 2 && !scene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_GEN_THREE_VICTORY: new ChallengeAchv("MONO_GEN_THREE", "", "MONO_GEN_THREE.description", "ribbon_gen3", 100, (c, scene) => c instanceof SingleGenerationChallenge && c.value === 3 && !scene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_GEN_FOUR_VICTORY: new ChallengeAchv("MONO_GEN_FOUR", "", "MONO_GEN_FOUR.description", "ribbon_gen4", 100, (c, scene) => c instanceof SingleGenerationChallenge && c.value === 4 && !scene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_GEN_FIVE_VICTORY: new ChallengeAchv("MONO_GEN_FIVE", "", "MONO_GEN_FIVE.description", "ribbon_gen5", 100, (c, scene) => c instanceof SingleGenerationChallenge && c.value === 5 && !scene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_GEN_SIX_VICTORY: new ChallengeAchv("MONO_GEN_SIX", "", "MONO_GEN_SIX.description", "ribbon_gen6", 100, (c, scene) => c instanceof SingleGenerationChallenge && c.value === 6 && !scene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_GEN_SEVEN_VICTORY: new ChallengeAchv("MONO_GEN_SEVEN", "", "MONO_GEN_SEVEN.description", "ribbon_gen7", 100, (c, scene) => c instanceof SingleGenerationChallenge && c.value === 7 && !scene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_GEN_EIGHT_VICTORY: new ChallengeAchv("MONO_GEN_EIGHT", "", "MONO_GEN_EIGHT.description", "ribbon_gen8", 100, (c, scene) => c instanceof SingleGenerationChallenge && c.value === 8 && !scene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_GEN_NINE_VICTORY: new ChallengeAchv("MONO_GEN_NINE", "", "MONO_GEN_NINE.description", "ribbon_gen9", 100, (c, scene) => c instanceof SingleGenerationChallenge && c.value === 9 && !scene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_NORMAL: new ChallengeAchv("MONO_NORMAL", "", "MONO_NORMAL.description", "silk_scarf", 100, (c, scene) => c instanceof SingleTypeChallenge && c.value === 1 && !scene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_FIGHTING: new ChallengeAchv("MONO_FIGHTING", "", "MONO_FIGHTING.description", "black_belt", 100, (c, scene) => c instanceof SingleTypeChallenge && c.value === 2 && !scene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_FLYING: new ChallengeAchv("MONO_FLYING", "", "MONO_FLYING.description", "sharp_beak", 100, (c, scene) => c instanceof SingleTypeChallenge && c.value === 3 && !scene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_POISON: new ChallengeAchv("MONO_POISON", "", "MONO_POISON.description", "poison_barb", 100, (c, scene) => c instanceof SingleTypeChallenge && c.value === 4 && !scene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_GROUND: new ChallengeAchv("MONO_GROUND", "", "MONO_GROUND.description", "soft_sand", 100, (c, scene) => c instanceof SingleTypeChallenge && c.value === 5 && !scene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_ROCK: new ChallengeAchv("MONO_ROCK", "", "MONO_ROCK.description", "hard_stone", 100, (c, scene) => c instanceof SingleTypeChallenge && c.value === 6 && !scene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_BUG: new ChallengeAchv("MONO_BUG", "", "MONO_BUG.description", "silver_powder", 100, (c, scene) => c instanceof SingleTypeChallenge && c.value === 7 && !scene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_GHOST: new ChallengeAchv("MONO_GHOST", "", "MONO_GHOST.description", "spell_tag", 100, (c, scene) => c instanceof SingleTypeChallenge && c.value === 8 && !scene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_STEEL: new ChallengeAchv("MONO_STEEL", "", "MONO_STEEL.description", "metal_coat", 100, (c, scene) => c instanceof SingleTypeChallenge && c.value === 9 && !scene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_FIRE: new ChallengeAchv("MONO_FIRE", "", "MONO_FIRE.description", "charcoal", 100, (c, scene) => c instanceof SingleTypeChallenge && c.value === 10 && !scene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_WATER: new ChallengeAchv("MONO_WATER", "", "MONO_WATER.description", "mystic_water", 100, (c, scene) => c instanceof SingleTypeChallenge && c.value === 11 && !scene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_GRASS: new ChallengeAchv("MONO_GRASS", "", "MONO_GRASS.description", "miracle_seed", 100, (c, scene) => c instanceof SingleTypeChallenge && c.value === 12 && !scene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_ELECTRIC: new ChallengeAchv("MONO_ELECTRIC", "", "MONO_ELECTRIC.description", "magnet", 100, (c, scene) => c instanceof SingleTypeChallenge && c.value === 13 && !scene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_PSYCHIC: new ChallengeAchv("MONO_PSYCHIC", "", "MONO_PSYCHIC.description", "twisted_spoon", 100, (c, scene) => c instanceof SingleTypeChallenge && c.value === 14 && !scene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_ICE: new ChallengeAchv("MONO_ICE", "", "MONO_ICE.description", "never_melt_ice", 100, (c, scene) => c instanceof SingleTypeChallenge && c.value === 15 && !scene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_DRAGON: new ChallengeAchv("MONO_DRAGON", "", "MONO_DRAGON.description", "dragon_fang", 100, (c, scene) => c instanceof SingleTypeChallenge && c.value === 16 && !scene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_DARK: new ChallengeAchv("MONO_DARK", "", "MONO_DARK.description", "black_glasses", 100, (c, scene) => c instanceof SingleTypeChallenge && c.value === 17 && !scene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_FAIRY: new ChallengeAchv("MONO_FAIRY", "", "MONO_FAIRY.description", "fairy_feather", 100, (c, scene) => c instanceof SingleTypeChallenge && c.value === 18 && !scene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - FRESH_START: new ChallengeAchv("FRESH_START", "", "FRESH_START.description", "reviver_seed", 100, (c, scene) => c instanceof FreshStartChallenge && c.value > 0 && !scene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), + CLASSIC_VICTORY: new Achv("CLASSIC_VICTORY", "", "CLASSIC_VICTORY.description", "relic_crown", 150, (_) => globalScene.gameData.gameStats.sessionsWon === 0), + UNEVOLVED_CLASSIC_VICTORY: new Achv("UNEVOLVED_CLASSIC_VICTORY", "", "UNEVOLVED_CLASSIC_VICTORY.description", "eviolite", 175, (_) => globalScene.getPlayerParty().some(p => p.getSpeciesForm(true).speciesId in pokemonEvolutions)), + MONO_GEN_ONE_VICTORY: new ChallengeAchv("MONO_GEN_ONE", "", "MONO_GEN_ONE.description", "ribbon_gen1", 100, (c) => c instanceof SingleGenerationChallenge && c.value === 1 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), + MONO_GEN_TWO_VICTORY: new ChallengeAchv("MONO_GEN_TWO", "", "MONO_GEN_TWO.description", "ribbon_gen2", 100, (c) => c instanceof SingleGenerationChallenge && c.value === 2 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), + MONO_GEN_THREE_VICTORY: new ChallengeAchv("MONO_GEN_THREE", "", "MONO_GEN_THREE.description", "ribbon_gen3", 100, (c) => c instanceof SingleGenerationChallenge && c.value === 3 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), + MONO_GEN_FOUR_VICTORY: new ChallengeAchv("MONO_GEN_FOUR", "", "MONO_GEN_FOUR.description", "ribbon_gen4", 100, (c) => c instanceof SingleGenerationChallenge && c.value === 4 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), + MONO_GEN_FIVE_VICTORY: new ChallengeAchv("MONO_GEN_FIVE", "", "MONO_GEN_FIVE.description", "ribbon_gen5", 100, (c) => c instanceof SingleGenerationChallenge && c.value === 5 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), + MONO_GEN_SIX_VICTORY: new ChallengeAchv("MONO_GEN_SIX", "", "MONO_GEN_SIX.description", "ribbon_gen6", 100, (c) => c instanceof SingleGenerationChallenge && c.value === 6 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), + MONO_GEN_SEVEN_VICTORY: new ChallengeAchv("MONO_GEN_SEVEN", "", "MONO_GEN_SEVEN.description", "ribbon_gen7", 100, (c) => c instanceof SingleGenerationChallenge && c.value === 7 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), + MONO_GEN_EIGHT_VICTORY: new ChallengeAchv("MONO_GEN_EIGHT", "", "MONO_GEN_EIGHT.description", "ribbon_gen8", 100, (c) => c instanceof SingleGenerationChallenge && c.value === 8 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), + MONO_GEN_NINE_VICTORY: new ChallengeAchv("MONO_GEN_NINE", "", "MONO_GEN_NINE.description", "ribbon_gen9", 100, (c) => c instanceof SingleGenerationChallenge && c.value === 9 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), + MONO_NORMAL: new ChallengeAchv("MONO_NORMAL", "", "MONO_NORMAL.description", "silk_scarf", 100, (c) => c instanceof SingleTypeChallenge && c.value === 1 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), + MONO_FIGHTING: new ChallengeAchv("MONO_FIGHTING", "", "MONO_FIGHTING.description", "black_belt", 100, (c) => c instanceof SingleTypeChallenge && c.value === 2 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), + MONO_FLYING: new ChallengeAchv("MONO_FLYING", "", "MONO_FLYING.description", "sharp_beak", 100, (c) => c instanceof SingleTypeChallenge && c.value === 3 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), + MONO_POISON: new ChallengeAchv("MONO_POISON", "", "MONO_POISON.description", "poison_barb", 100, (c) => c instanceof SingleTypeChallenge && c.value === 4 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), + MONO_GROUND: new ChallengeAchv("MONO_GROUND", "", "MONO_GROUND.description", "soft_sand", 100, (c) => c instanceof SingleTypeChallenge && c.value === 5 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), + MONO_ROCK: new ChallengeAchv("MONO_ROCK", "", "MONO_ROCK.description", "hard_stone", 100, (c) => c instanceof SingleTypeChallenge && c.value === 6 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), + MONO_BUG: new ChallengeAchv("MONO_BUG", "", "MONO_BUG.description", "silver_powder", 100, (c) => c instanceof SingleTypeChallenge && c.value === 7 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), + MONO_GHOST: new ChallengeAchv("MONO_GHOST", "", "MONO_GHOST.description", "spell_tag", 100, (c) => c instanceof SingleTypeChallenge && c.value === 8 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), + MONO_STEEL: new ChallengeAchv("MONO_STEEL", "", "MONO_STEEL.description", "metal_coat", 100, (c) => c instanceof SingleTypeChallenge && c.value === 9 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), + MONO_FIRE: new ChallengeAchv("MONO_FIRE", "", "MONO_FIRE.description", "charcoal", 100, (c) => c instanceof SingleTypeChallenge && c.value === 10 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), + MONO_WATER: new ChallengeAchv("MONO_WATER", "", "MONO_WATER.description", "mystic_water", 100, (c) => c instanceof SingleTypeChallenge && c.value === 11 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), + MONO_GRASS: new ChallengeAchv("MONO_GRASS", "", "MONO_GRASS.description", "miracle_seed", 100, (c) => c instanceof SingleTypeChallenge && c.value === 12 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), + MONO_ELECTRIC: new ChallengeAchv("MONO_ELECTRIC", "", "MONO_ELECTRIC.description", "magnet", 100, (c) => c instanceof SingleTypeChallenge && c.value === 13 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), + MONO_PSYCHIC: new ChallengeAchv("MONO_PSYCHIC", "", "MONO_PSYCHIC.description", "twisted_spoon", 100, (c) => c instanceof SingleTypeChallenge && c.value === 14 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), + MONO_ICE: new ChallengeAchv("MONO_ICE", "", "MONO_ICE.description", "never_melt_ice", 100, (c) => c instanceof SingleTypeChallenge && c.value === 15 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), + MONO_DRAGON: new ChallengeAchv("MONO_DRAGON", "", "MONO_DRAGON.description", "dragon_fang", 100, (c) => c instanceof SingleTypeChallenge && c.value === 16 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), + MONO_DARK: new ChallengeAchv("MONO_DARK", "", "MONO_DARK.description", "black_glasses", 100, (c) => c instanceof SingleTypeChallenge && c.value === 17 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), + MONO_FAIRY: new ChallengeAchv("MONO_FAIRY", "", "MONO_FAIRY.description", "fairy_feather", 100, (c) => c instanceof SingleTypeChallenge && c.value === 18 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), + FRESH_START: new ChallengeAchv("FRESH_START", "", "FRESH_START.description", "reviver_seed", 100, (c) => c instanceof FreshStartChallenge && c.value > 0 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), INVERSE_BATTLE: new ChallengeAchv("INVERSE_BATTLE", "", "INVERSE_BATTLE.description", "inverse", 100, c => c instanceof InverseBattleChallenge && c.value > 0), BREEDERS_IN_SPACE: new Achv("BREEDERS_IN_SPACE", "", "BREEDERS_IN_SPACE.description", "moon_stone", 50).setSecret(), }; diff --git a/src/system/arena-data.ts b/src/system/arena-data.ts index ba37de0ed0e..98ab611ff3c 100644 --- a/src/system/arena-data.ts +++ b/src/system/arena-data.ts @@ -1,6 +1,7 @@ import { Arena } from "../field/arena"; -import { ArenaTag, loadArenaTag } from "../data/arena-tag"; -import { Biome } from "#enums/biome"; +import type { ArenaTag } from "../data/arena-tag"; +import { loadArenaTag } from "../data/arena-tag"; +import type { Biome } from "#enums/biome"; import { Weather } from "../data/weather"; import { Terrain } from "#app/data/terrain"; diff --git a/src/system/challenge-data.ts b/src/system/challenge-data.ts index 394d63867be..76a3392861d 100644 --- a/src/system/challenge-data.ts +++ b/src/system/challenge-data.ts @@ -1,4 +1,5 @@ -import { Challenge, copyChallenge } from "#app/data/challenge"; +import type { Challenge } from "#app/data/challenge"; +import { copyChallenge } from "#app/data/challenge"; export default class ChallengeData { public id: integer; diff --git a/src/system/egg-data.ts b/src/system/egg-data.ts index aa06316a61f..7b75f387c63 100644 --- a/src/system/egg-data.ts +++ b/src/system/egg-data.ts @@ -1,8 +1,8 @@ -import { EggTier } from "#enums/egg-type"; -import { Species } from "#enums/species"; -import { VariantTier } from "#enums/variant-tier"; +import type { EggTier } from "#enums/egg-type"; +import type { Species } from "#enums/species"; +import type { VariantTier } from "#enums/variant-tier"; import { EGG_SEED, Egg } from "../data/egg"; -import { EggSourceType } from "#app/enums/egg-source-types"; +import type { EggSourceType } from "#app/enums/egg-source-types"; export default class EggData { public id: integer; diff --git a/src/system/game-data.ts b/src/system/game-data.ts index 3e3a6ce8f8b..11b98d3fee6 100644 --- a/src/system/game-data.ts +++ b/src/system/game-data.ts @@ -1,8 +1,12 @@ import i18next from "i18next"; -import BattleScene, { bypassLogin, PokeballCounts } from "#app/battle-scene"; -import Pokemon, { EnemyPokemon, PlayerPokemon } from "#app/field/pokemon"; +import type { PokeballCounts } from "#app/battle-scene"; +import { bypassLogin } from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; +import type { EnemyPokemon, PlayerPokemon } from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; import { pokemonPrevolutions } from "#app/data/balance/pokemon-evolutions"; -import PokemonSpecies, { allSpecies, getPokemonSpecies, noStarterFormKeys } from "#app/data/pokemon-species"; +import type PokemonSpecies from "#app/data/pokemon-species"; +import { allSpecies, getPokemonSpecies, noStarterFormKeys } from "#app/data/pokemon-species"; import { speciesStarterCosts } from "#app/data/balance/starters"; import * as Utils from "#app/utils"; import Overrides from "#app/overrides"; @@ -17,7 +21,7 @@ import { trainerConfigs } from "#app/data/trainer-config"; import { resetSettings, setSetting, SettingKeys } from "#app/system/settings/settings"; import { achvs } from "#app/system/achv"; import EggData from "#app/system/egg-data"; -import { Egg } from "#app/data/egg"; +import type { Egg } from "#app/data/egg"; import { vouchers, VoucherType } from "#app/system/voucher"; import { AES, enc } from "crypto-js"; import { Mode } from "#app/ui/ui"; @@ -28,16 +32,17 @@ import { Tutorial } from "#app/tutorial"; import { speciesEggMoves } from "#app/data/balance/egg-moves"; import { allMoves } from "#app/data/move"; import { TrainerVariant } from "#app/field/trainer"; -import { Variant } from "#app/data/variant"; +import type { Variant } from "#app/data/variant"; import { setSettingGamepad, SettingGamepad, settingGamepadDefaults } from "#app/system/settings/settings-gamepad"; -import { setSettingKeyboard, SettingKeyboard } from "#app/system/settings/settings-keyboard"; +import type { SettingKeyboard } from "#app/system/settings/settings-keyboard"; +import { setSettingKeyboard } from "#app/system/settings/settings-keyboard"; import { TagAddedEvent, TerrainChangedEvent, WeatherChangedEvent } from "#app/events/arena"; import * as Modifier from "#app/modifier/modifier"; import { StatusEffect } from "#enums/status-effect"; import ChallengeData from "#app/system/challenge-data"; import { Device } from "#enums/devices"; import { GameDataType } from "#enums/game-data-type"; -import { Moves } from "#enums/moves"; +import type { Moves } from "#enums/moves"; import { PlayerGender } from "#enums/player-gender"; import { Species } from "#enums/species"; import { applyChallenges, ChallengeType } from "#app/data/challenge"; @@ -47,7 +52,7 @@ import { ReloadSessionPhase } from "#app/phases/reload-session-phase"; import { RUN_HISTORY_LIMIT } from "#app/ui/run-history-ui-handler"; import { applySessionVersionMigration, applySystemVersionMigration, applySettingsVersionMigration } from "./version_migration/version_converter"; import { MysteryEncounterSaveData } from "#app/data/mystery-encounters/mystery-encounter-save-data"; -import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import type { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { pokerogueApi } from "#app/plugins/api/pokerogue-api"; import { ArenaTrapTag } from "#app/data/arena-tag"; @@ -298,8 +303,6 @@ const systemShortKeys = { }; export class GameData { - private scene: BattleScene; - public trainerId: integer; public secretId: integer; @@ -323,8 +326,7 @@ export class GameData { public eggPity: integer[]; public unlockPity: integer[]; - constructor(scene: BattleScene) { - this.scene = scene; + constructor() { this.loadSettings(); this.loadGamepadSettings(); this.loadMappingConfigs(); @@ -367,7 +369,7 @@ export class GameData { voucherUnlocks: this.voucherUnlocks, voucherCounts: this.voucherCounts, eggs: this.eggs.map(e => new EggData(e)), - gameVersion: this.scene.game.config.gameVersion, + gameVersion: globalScene.game.config.gameVersion, timestamp: new Date().getTime(), eggPity: this.eggPity.slice(0), unlockPity: this.unlockPity.slice(0) @@ -388,7 +390,7 @@ export class GameData { public saveSystem(): Promise { return new Promise(resolve => { - this.scene.ui.savingIcon.show(); + globalScene.ui.savingIcon.show(); const data = this.getSystemSaveData(); const maxIntAttrValue = 0x80000000; @@ -399,11 +401,11 @@ export class GameData { if (!bypassLogin) { pokerogueApi.savedata.system.update({ clientSessionId }, systemData) .then(error => { - this.scene.ui.savingIcon.hide(); + globalScene.ui.savingIcon.hide(); if (error) { if (error.startsWith("session out of date")) { - this.scene.clearPhaseQueue(); - this.scene.unshiftPhase(new ReloadSessionPhase(this.scene)); + globalScene.clearPhaseQueue(); + globalScene.unshiftPhase(new ReloadSessionPhase()); } console.error(error); return resolve(false); @@ -411,7 +413,7 @@ export class GameData { resolve(true); }); } else { - this.scene.ui.savingIcon.hide(); + globalScene.ui.savingIcon.hide(); resolve(true); } @@ -431,10 +433,10 @@ export class GameData { .then(saveDataOrErr => { if (!saveDataOrErr || saveDataOrErr.length === 0 || saveDataOrErr[0] !== "{") { if (saveDataOrErr?.startsWith("sql: no rows in result set")) { - this.scene.queueMessage("Save data could not be found. If this is a new account, you can safely ignore this message.", null, true); + globalScene.queueMessage("Save data could not be found. If this is a new account, you can safely ignore this message.", null, true); return resolve(true); } else if (saveDataOrErr?.includes("Too many connections")) { - this.scene.queueMessage("Too many people are trying to connect and the server is overloaded. Please try again later.", null, true); + globalScene.queueMessage("Too many people are trying to connect and the server is overloaded. Please try again later.", null, true); return resolve(false); } console.error(saveDataOrErr); @@ -574,7 +576,7 @@ export class GameData { * Retrieves current run history data, organized by time stamp. * At the moment, only retrievable from locale cache */ - async getRunHistoryData(scene: BattleScene): Promise { + async getRunHistoryData(): Promise { if (!Utils.isLocal) { /** * Networking Code DO NOT DELETE! @@ -623,13 +625,12 @@ export class GameData { /** * Saves a new entry to Run History - * @param scene: BattleScene object * @param runEntry: most recent SessionSaveData of the run * @param isVictory: result of the run * Arbitrary limit of 25 runs per player - Will delete runs, starting with the oldest one, if needed */ - async saveRunHistory(scene: BattleScene, runEntry : SessionSaveData, isVictory: boolean): Promise { - const runHistoryData = await this.getRunHistoryData(scene); + async saveRunHistory(runEntry : SessionSaveData, isVictory: boolean): Promise { + const runHistoryData = await this.getRunHistoryData(); // runHistoryData should always return run history or {} empty object let timestamps = Object.keys(runHistoryData).map(Number); @@ -707,8 +708,8 @@ export class GameData { const systemData = await pokerogueApi.savedata.system.verify({ clientSessionId }); if (systemData) { - this.scene.clearPhaseQueue(); - this.scene.unshiftPhase(new ReloadSessionPhase(this.scene, JSON.stringify(systemData))); + globalScene.clearPhaseQueue(); + globalScene.unshiftPhase(new ReloadSessionPhase(JSON.stringify(systemData))); this.clearLocalData(); return false; } @@ -738,10 +739,10 @@ export class GameData { settings = JSON.parse(localStorage.getItem("settings")!); // TODO: is this bang correct? } - setSetting(this.scene, setting, valueIndex); + setSetting(setting, valueIndex); settings[setting] = valueIndex; - settings["gameVersion"] = this.scene.game.config.gameVersion; + settings["gameVersion"] = globalScene.game.config.gameVersion; localStorage.setItem("settings", JSON.stringify(settings)); @@ -787,7 +788,7 @@ export class GameData { const mappingConfigs = JSON.parse(localStorage.getItem("mappingConfigs")!); // Parse the existing 'mappingConfigs' from localStorage // TODO: is this bang correct? for (const key of Object.keys(mappingConfigs)) {// Iterate over the keys of the mapping configurations - this.scene.inputController.injectConfig(key, mappingConfigs[key]); + globalScene.inputController.injectConfig(key, mappingConfigs[key]); } // Inject each configuration into the input controller for the corresponding key return true; // Return true to indicate the operation was successful @@ -798,7 +799,7 @@ export class GameData { return false; } // If 'mappingConfigs' does not exist, return false localStorage.removeItem("mappingConfigs"); - this.scene.inputController.resetConfigs(); + globalScene.inputController.resetConfigs(); return true; // TODO: is `true` the correct return value? } @@ -823,9 +824,9 @@ export class GameData { } if (device === Device.GAMEPAD) { - setSettingGamepad(this.scene, setting as SettingGamepad, valueIndex); // Set the gamepad setting in the current scene + setSettingGamepad(setting as SettingGamepad, valueIndex); } else if (device === Device.KEYBOARD) { - setSettingKeyboard(this.scene, setting as SettingKeyboard, valueIndex); // Set the keyboard setting in the current scene + setSettingKeyboard(setting as SettingKeyboard, valueIndex); } Object.keys(settingDefaults).forEach(s => { // Iterate over the default gamepad settings @@ -844,7 +845,7 @@ export class GameData { * @returns true if succesful, false if not */ private loadSettings(): boolean { - resetSettings(this.scene); + resetSettings(); if (!localStorage.hasOwnProperty("settings")) { return false; @@ -855,14 +856,14 @@ export class GameData { applySettingsVersionMigration(settings); for (const setting of Object.keys(settings)) { - setSetting(this.scene, setting, settings[setting]); + setSetting(setting, settings[setting]); } return true; // TODO: is `true` the correct return value? } private loadGamepadSettings(): boolean { - Object.values(SettingGamepad).map(setting => setting as SettingGamepad).forEach(setting => setSettingGamepad(this.scene, setting, settingGamepadDefaults[setting])); + Object.values(SettingGamepad).map(setting => setting as SettingGamepad).forEach(setting => setSettingGamepad(setting, settingGamepadDefaults[setting])); if (!localStorage.hasOwnProperty("settingsGamepad")) { return false; @@ -870,7 +871,7 @@ export class GameData { const settingsGamepad = JSON.parse(localStorage.getItem("settingsGamepad")!); // TODO: is this bang correct? for (const setting of Object.keys(settingsGamepad)) { - setSettingGamepad(this.scene, setting as SettingGamepad, settingsGamepad[setting]); + setSettingGamepad(setting as SettingGamepad, settingsGamepad[setting]); } return true; // TODO: is `true` the correct return value? @@ -943,27 +944,27 @@ export class GameData { return ret; } - public getSessionSaveData(scene: BattleScene): SessionSaveData { + public getSessionSaveData(): SessionSaveData { return { - seed: scene.seed, - playTime: scene.sessionPlayTime, - gameMode: scene.gameMode.modeId, - party: scene.getPlayerParty().map(p => new PokemonData(p)), - enemyParty: scene.getEnemyParty().map(p => new PokemonData(p)), - modifiers: scene.findModifiers(() => true).map(m => new PersistentModifierData(m, true)), - enemyModifiers: scene.findModifiers(() => true, false).map(m => new PersistentModifierData(m, false)), - arena: new ArenaData(scene.arena), - pokeballCounts: scene.pokeballCounts, - money: Math.floor(scene.money), - score: scene.score, - waveIndex: scene.currentBattle.waveIndex, - battleType: scene.currentBattle.battleType, - trainer: scene.currentBattle.battleType === BattleType.TRAINER ? new TrainerData(scene.currentBattle.trainer) : null, - gameVersion: scene.game.config.gameVersion, + seed: globalScene.seed, + playTime: globalScene.sessionPlayTime, + gameMode: globalScene.gameMode.modeId, + party: globalScene.getPlayerParty().map(p => new PokemonData(p)), + enemyParty: globalScene.getEnemyParty().map(p => new PokemonData(p)), + modifiers: globalScene.findModifiers(() => true).map(m => new PersistentModifierData(m, true)), + enemyModifiers: globalScene.findModifiers(() => true, false).map(m => new PersistentModifierData(m, false)), + arena: new ArenaData(globalScene.arena), + pokeballCounts: globalScene.pokeballCounts, + money: Math.floor(globalScene.money), + score: globalScene.score, + waveIndex: globalScene.currentBattle.waveIndex, + battleType: globalScene.currentBattle.battleType, + trainer: globalScene.currentBattle.battleType === BattleType.TRAINER ? new TrainerData(globalScene.currentBattle.trainer) : null, + gameVersion: globalScene.game.config.gameVersion, timestamp: new Date().getTime(), - challenges: scene.gameMode.challenges.map(c => new ChallengeData(c)), - mysteryEncounterType: scene.currentBattle.mysteryEncounter?.encounterType ?? -1, - mysteryEncounterSaveData: scene.mysteryEncounterSaveData + challenges: globalScene.gameMode.challenges.map(c => new ChallengeData(c)), + mysteryEncounterType: globalScene.currentBattle.mysteryEncounter?.encounterType ?? -1, + mysteryEncounterSaveData: globalScene.mysteryEncounterSaveData } as SessionSaveData; } @@ -1005,68 +1006,68 @@ export class GameData { }); } - loadSession(scene: BattleScene, slotId: integer, sessionData?: SessionSaveData): Promise { + loadSession(slotId: integer, sessionData?: SessionSaveData): Promise { return new Promise(async (resolve, reject) => { try { const initSessionFromData = async (sessionData: SessionSaveData) => { console.debug(sessionData); - scene.gameMode = getGameMode(sessionData.gameMode || GameModes.CLASSIC); + globalScene.gameMode = getGameMode(sessionData.gameMode || GameModes.CLASSIC); if (sessionData.challenges) { - scene.gameMode.challenges = sessionData.challenges.map(c => c.toChallenge()); + globalScene.gameMode.challenges = sessionData.challenges.map(c => c.toChallenge()); } - scene.setSeed(sessionData.seed || scene.game.config.seed[0]); - scene.resetSeed(); + globalScene.setSeed(sessionData.seed || globalScene.game.config.seed[0]); + globalScene.resetSeed(); - console.log("Seed:", scene.seed); + console.log("Seed:", globalScene.seed); - scene.sessionPlayTime = sessionData.playTime || 0; - scene.lastSavePlayTime = 0; + globalScene.sessionPlayTime = sessionData.playTime || 0; + globalScene.lastSavePlayTime = 0; const loadPokemonAssets: Promise[] = []; - const party = scene.getPlayerParty(); + const party = globalScene.getPlayerParty(); party.splice(0, party.length); for (const p of sessionData.party) { - const pokemon = p.toPokemon(scene) as PlayerPokemon; + const pokemon = p.toPokemon() as PlayerPokemon; pokemon.setVisible(false); loadPokemonAssets.push(pokemon.loadAssets()); party.push(pokemon); } - Object.keys(scene.pokeballCounts).forEach((key: string) => { - scene.pokeballCounts[key] = sessionData.pokeballCounts[key] || 0; + Object.keys(globalScene.pokeballCounts).forEach((key: string) => { + globalScene.pokeballCounts[key] = sessionData.pokeballCounts[key] || 0; }); if (Overrides.POKEBALL_OVERRIDE.active) { - scene.pokeballCounts = Overrides.POKEBALL_OVERRIDE.pokeballs; + globalScene.pokeballCounts = Overrides.POKEBALL_OVERRIDE.pokeballs; } - scene.money = Math.floor(sessionData.money || 0); - scene.updateMoneyText(); + globalScene.money = Math.floor(sessionData.money || 0); + globalScene.updateMoneyText(); - if (scene.money > this.gameStats.highestMoney) { - this.gameStats.highestMoney = scene.money; + if (globalScene.money > this.gameStats.highestMoney) { + this.gameStats.highestMoney = globalScene.money; } - scene.score = sessionData.score; - scene.updateScoreText(); + globalScene.score = sessionData.score; + globalScene.updateScoreText(); - scene.mysteryEncounterSaveData = new MysteryEncounterSaveData(sessionData.mysteryEncounterSaveData); + globalScene.mysteryEncounterSaveData = new MysteryEncounterSaveData(sessionData.mysteryEncounterSaveData); - scene.newArena(sessionData.arena.biome); + globalScene.newArena(sessionData.arena.biome); const battleType = sessionData.battleType || 0; const trainerConfig = sessionData.trainer ? trainerConfigs[sessionData.trainer.trainerType] : null; const mysteryEncounterType = sessionData.mysteryEncounterType !== -1 ? sessionData.mysteryEncounterType : undefined; - const battle = scene.newBattle(sessionData.waveIndex, battleType, sessionData.trainer, battleType === BattleType.TRAINER ? trainerConfig?.doubleOnly || sessionData.trainer?.variant === TrainerVariant.DOUBLE : sessionData.enemyParty.length > 1, mysteryEncounterType)!; // TODO: is this bang correct? + const battle = globalScene.newBattle(sessionData.waveIndex, battleType, sessionData.trainer, battleType === BattleType.TRAINER ? trainerConfig?.doubleOnly || sessionData.trainer?.variant === TrainerVariant.DOUBLE : sessionData.enemyParty.length > 1, mysteryEncounterType)!; // TODO: is this bang correct? battle.enemyLevels = sessionData.enemyParty.map(p => p.level); - scene.arena.init(); + globalScene.arena.init(); sessionData.enemyParty.forEach((enemyData, e) => { - const enemyPokemon = enemyData.toPokemon(scene, battleType, e, sessionData.trainer?.variant === TrainerVariant.DOUBLE) as EnemyPokemon; + const enemyPokemon = enemyData.toPokemon(battleType, e, sessionData.trainer?.variant === TrainerVariant.DOUBLE) as EnemyPokemon; battle.enemyParty[e] = enemyPokemon; if (battleType === BattleType.WILD) { battle.seenEnemyPartyMemberIds.add(enemyPokemon.id); @@ -1075,41 +1076,41 @@ export class GameData { loadPokemonAssets.push(enemyPokemon.loadAssets()); }); - scene.arena.weather = sessionData.arena.weather; - scene.arena.eventTarget.dispatchEvent(new WeatherChangedEvent(WeatherType.NONE, scene.arena.weather?.weatherType!, scene.arena.weather?.turnsLeft!)); // TODO: is this bang correct? + globalScene.arena.weather = sessionData.arena.weather; + globalScene.arena.eventTarget.dispatchEvent(new WeatherChangedEvent(WeatherType.NONE, globalScene.arena.weather?.weatherType!, globalScene.arena.weather?.turnsLeft!)); // TODO: is this bang correct? - scene.arena.terrain = sessionData.arena.terrain; - scene.arena.eventTarget.dispatchEvent(new TerrainChangedEvent(TerrainType.NONE, scene.arena.terrain?.terrainType!, scene.arena.terrain?.turnsLeft!)); // TODO: is this bang correct? + globalScene.arena.terrain = sessionData.arena.terrain; + globalScene.arena.eventTarget.dispatchEvent(new TerrainChangedEvent(TerrainType.NONE, globalScene.arena.terrain?.terrainType!, globalScene.arena.terrain?.turnsLeft!)); // TODO: is this bang correct? - scene.arena.tags = sessionData.arena.tags; - if (scene.arena.tags) { - for (const tag of scene.arena.tags) { + globalScene.arena.tags = sessionData.arena.tags; + if (globalScene.arena.tags) { + for (const tag of globalScene.arena.tags) { if (tag instanceof ArenaTrapTag) { const { tagType, side, turnCount, layers, maxLayers } = tag as ArenaTrapTag; - scene.arena.eventTarget.dispatchEvent(new TagAddedEvent(tagType, side, turnCount, layers, maxLayers)); + globalScene.arena.eventTarget.dispatchEvent(new TagAddedEvent(tagType, side, turnCount, layers, maxLayers)); } else { - scene.arena.eventTarget.dispatchEvent(new TagAddedEvent(tag.tagType, tag.side, tag.turnCount)); + globalScene.arena.eventTarget.dispatchEvent(new TagAddedEvent(tag.tagType, tag.side, tag.turnCount)); } } } for (const modifierData of sessionData.modifiers) { - const modifier = modifierData.toModifier(scene, Modifier[modifierData.className]); + const modifier = modifierData.toModifier(Modifier[modifierData.className]); if (modifier) { - scene.addModifier(modifier, true); + globalScene.addModifier(modifier, true); } } - scene.updateModifiers(true); + globalScene.updateModifiers(true); for (const enemyModifierData of sessionData.enemyModifiers) { - const modifier = enemyModifierData.toModifier(scene, Modifier[enemyModifierData.className]); + const modifier = enemyModifierData.toModifier(Modifier[enemyModifierData.className]); if (modifier) { - scene.addEnemyModifier(modifier, true); + globalScene.addEnemyModifier(modifier, true); } } - scene.updateModifiers(false); + globalScene.updateModifiers(false); Promise.all(loadPokemonAssets).then(() => resolve(true)); }; @@ -1150,8 +1151,8 @@ export class GameData { pokerogueApi.savedata.session.delete({ slot: slotId, clientSessionId }).then(error => { if (error) { if (error.startsWith("session out of date")) { - this.scene.clearPhaseQueue(); - this.scene.unshiftPhase(new ReloadSessionPhase(this.scene)); + globalScene.clearPhaseQueue(); + globalScene.unshiftPhase(new ReloadSessionPhase()); } console.error(error); resolve(false); @@ -1172,9 +1173,9 @@ export class GameData { /* Defines a localStorage item 'daily' to check on clears, offline implementation of savedata/newclear API If a GameModes clear other than Daily is checked, newClear = true as usual If a Daily mode is cleared, checks if it was already cleared before, based on seed, and returns true only to new daily clear runs */ - offlineNewClear(scene: BattleScene): Promise { + offlineNewClear(): Promise { return new Promise(resolve => { - const sessionData = this.getSessionSaveData(scene); + const sessionData = this.getSessionSaveData(); const seed = sessionData.seed; let daily: string[] = []; @@ -1205,14 +1206,14 @@ export class GameData { * After session data is removed, attempt to update user info so the menu updates * To delete an unfinished run instead, use {@linkcode deleteSession} */ - async tryClearSession(scene: BattleScene, slotId: integer): Promise<[success: boolean, newClear: boolean]> { + async tryClearSession(slotId: integer): Promise<[success: boolean, newClear: boolean]> { let result: [boolean, boolean] = [ false, false ]; if (bypassLogin) { localStorage.removeItem(`sessionData${slotId ? slotId : ""}_${loggedInUser?.username}`); result = [ true, true ]; } else { - const sessionData = this.getSessionSaveData(scene); + const sessionData = this.getSessionSaveData(); const { trainerId } = this; const jsonResponse = await pokerogueApi.savedata.session.clear({ slot: slotId, trainerId, clientSessionId }, sessionData); @@ -1224,8 +1225,8 @@ export class GameData { localStorage.removeItem(`sessionData${slotId ? slotId : ""}_${loggedInUser?.username}`); } else { if (jsonResponse && jsonResponse.error?.startsWith("session out of date")) { - this.scene.clearPhaseQueue(); - this.scene.unshiftPhase(new ReloadSessionPhase(this.scene)); + globalScene.clearPhaseQueue(); + globalScene.unshiftPhase(new ReloadSessionPhase()); } console.error(jsonResponse); @@ -1240,12 +1241,6 @@ export class GameData { parseSessionData(dataStr: string): SessionSaveData { const sessionData = JSON.parse(dataStr, (k: string, v: any) => { - /*const versions = [ scene.game.config.gameVersion, sessionData.gameVersion || '0.0.0' ]; - - if (versions[0] !== versions[1]) { - const [ versionNumbers, oldVersionNumbers ] = versions.map(ver => ver.split('.').map(v => parseInt(v))); - }*/ - if (k === "party" || k === "enemyParty") { const ret: PokemonData[] = []; if (v === null) { @@ -1310,16 +1305,18 @@ export class GameData { return sessionData; } - saveAll(scene: BattleScene, skipVerification: boolean = false, sync: boolean = false, useCachedSession: boolean = false, useCachedSystem: boolean = false): Promise { + saveAll(skipVerification: boolean = false, sync: boolean = false, useCachedSession: boolean = false, useCachedSystem: boolean = false): Promise { return new Promise(resolve => { Utils.executeIf(!skipVerification, updateUserInfo).then(success => { if (success !== null && !success) { return resolve(false); } if (sync) { - this.scene.ui.savingIcon.show(); + globalScene.ui.savingIcon.show(); } - const sessionData = useCachedSession ? this.parseSessionData(decrypt(localStorage.getItem(`sessionData${scene.sessionSlotId ? scene.sessionSlotId : ""}_${loggedInUser?.username}`)!, bypassLogin)) : this.getSessionSaveData(scene); // TODO: is this bang correct? + const sessionData = useCachedSession ? + this.parseSessionData(decrypt(localStorage.getItem(`sessionData${globalScene.sessionSlotId ? globalScene.sessionSlotId : ""}_${loggedInUser?.username}`)!, bypassLogin)) // TODO: is this bang correct? + : this.getSessionSaveData(); const maxIntAttrValue = 0x80000000; const systemData = useCachedSystem ? this.parseSystemData(decrypt(localStorage.getItem(`data_${loggedInUser?.username}`)!, bypassLogin)) : this.getSystemSaveData(); // TODO: is this bang correct? @@ -1327,13 +1324,13 @@ export class GameData { const request = { system: systemData, session: sessionData, - sessionSlotId: scene.sessionSlotId, + sessionSlotId: globalScene.sessionSlotId, clientSessionId: clientSessionId }; localStorage.setItem(`data_${loggedInUser?.username}`, encrypt(JSON.stringify(systemData, (k: any, v: any) => typeof v === "bigint" ? v <= maxIntAttrValue ? Number(v) : v.toString() : v), bypassLogin)); - localStorage.setItem(`sessionData${scene.sessionSlotId ? scene.sessionSlotId : ""}_${loggedInUser?.username}`, encrypt(JSON.stringify(sessionData), bypassLogin)); + localStorage.setItem(`sessionData${globalScene.sessionSlotId ? globalScene.sessionSlotId : ""}_${loggedInUser?.username}`, encrypt(JSON.stringify(sessionData), bypassLogin)); console.debug("Session data saved"); @@ -1341,13 +1338,13 @@ export class GameData { pokerogueApi.savedata.updateAll(request) .then(error => { if (sync) { - this.scene.lastSavePlayTime = 0; - this.scene.ui.savingIcon.hide(); + globalScene.lastSavePlayTime = 0; + globalScene.ui.savingIcon.hide(); } if (error) { if (error.startsWith("session out of date")) { - this.scene.clearPhaseQueue(); - this.scene.unshiftPhase(new ReloadSessionPhase(this.scene)); + globalScene.clearPhaseQueue(); + globalScene.unshiftPhase(new ReloadSessionPhase()); } console.error(error); return resolve(false); @@ -1356,7 +1353,7 @@ export class GameData { }); } else { this.verify().then(success => { - this.scene.ui.savingIcon.hide(); + globalScene.ui.savingIcon.hide(); resolve(success); }); } @@ -1462,15 +1459,15 @@ export class GameData { console.error(ex); } - const displayError = (error: string) => this.scene.ui.showText(error, null, () => this.scene.ui.showText("", 0), Utils.fixedInt(1500)); + const displayError = (error: string) => globalScene.ui.showText(error, null, () => globalScene.ui.showText("", 0), Utils.fixedInt(1500)); dataName = dataName!; // tell TS compiler that dataName is defined! if (!valid) { - return this.scene.ui.showText(`Your ${dataName} data could not be loaded. It may be corrupted.`, null, () => this.scene.ui.showText("", 0), Utils.fixedInt(1500)); + return globalScene.ui.showText(`Your ${dataName} data could not be loaded. It may be corrupted.`, null, () => globalScene.ui.showText("", 0), Utils.fixedInt(1500)); } - this.scene.ui.showText(`Your ${dataName} data will be overridden and the page will reload. Proceed?`, null, () => { - this.scene.ui.setOverlayMode(Mode.CONFIRM, () => { + globalScene.ui.showText(`Your ${dataName} data will be overridden and the page will reload. Proceed?`, null, () => { + globalScene.ui.setOverlayMode(Mode.CONFIRM, () => { localStorage.setItem(dataKey, encrypt(dataStr, bypassLogin)); if (!bypassLogin && dataType < GameDataType.SETTINGS) { @@ -1498,8 +1495,8 @@ export class GameData { window.location = window.location; } }, () => { - this.scene.ui.revertMode(); - this.scene.ui.showText("", 0); + globalScene.ui.revertMode(); + globalScene.ui.showText("", 0); }, false, -98); }); }; @@ -1509,9 +1506,6 @@ export class GameData { } ); saveFile.click(); - /*(this.scene.plugins.get('rexfilechooserplugin') as FileChooserPlugin).open({ accept: '.prsv' }) - .then(result => { - });*/ } private initDexData(): void { @@ -1527,7 +1521,7 @@ export class GameData { const defaultStarterNatures: Nature[] = []; - this.scene.executeWithSeedOffset(() => { + globalScene.executeWithSeedOffset(() => { const neutralNatures = [ Nature.HARDY, Nature.DOCILE, Nature.SERIOUS, Nature.BASHFUL, Nature.QUIRKY ]; for (let s = 0; s < defaultStarterSpecies.length; s++) { defaultStarterNatures.push(Utils.randSeedItem(neutralNatures)); @@ -1571,7 +1565,7 @@ export class GameData { setPokemonSeen(pokemon: Pokemon, incrementCount: boolean = true, trainer: boolean = false): void { // Some Mystery Encounters block updates to these stats - if (this.scene.currentBattle?.isBattleMysteryEncounter() && this.scene.currentBattle.mysteryEncounter?.preventGameStatsUpdates) { + if (globalScene.currentBattle?.isBattleMysteryEncounter() && globalScene.currentBattle.mysteryEncounter?.preventGameStatsUpdates) { return; } const dexEntry = this.dexData[pokemon.species.speciesId]; @@ -1604,7 +1598,7 @@ export class GameData { // If incrementCount === false (not a catch scenario), only update the pokemon's dex data if the Pokemon has already been marked as caught in dex // Prevents form changes, nature changes, etc. from unintentionally updating the dex data of a "rental" pokemon const speciesRootForm = pokemon.species.getRootSpeciesId(); - if (!incrementCount && !this.scene.gameData.dexData[speciesRootForm].caughtAttr) { + if (!incrementCount && !globalScene.gameData.dexData[speciesRootForm].caughtAttr) { return Promise.resolve(false); } else { return this.setPokemonSpeciesCaught(pokemon, pokemon.species, incrementCount, fromEgg, showMessage); @@ -1677,7 +1671,7 @@ export class GameData { } } - if (!hasPrevolution && (!pokemon.scene.gameMode.isDaily || hasNewAttr || fromEgg)) { + if (!hasPrevolution && (!globalScene.gameMode.isDaily || hasNewAttr || fromEgg)) { this.addStarterCandy(species, (1 * (pokemon.isShiny() ? 5 * (1 << (pokemon.variant ?? 0)) : 1)) * (fromEgg || pokemon.isBoss() ? 2 : 1)); } } @@ -1696,8 +1690,8 @@ export class GameData { resolve(true); return; } - this.scene.playSound("level_up_fanfare"); - this.scene.ui.showText(i18next.t("battle:addedAsAStarter", { pokemonName: species.name }), null, () => checkPrevolution(true), null, true); + globalScene.playSound("level_up_fanfare"); + globalScene.ui.showText(i18next.t("battle:addedAsAStarter", { pokemonName: species.name }), null, () => checkPrevolution(true), null, true); } else { checkPrevolution(false); } @@ -1712,25 +1706,25 @@ export class GameData { } if (!this.starterData[speciesIdToIncrement].classicWinCount) { - this.scene.gameData.gameStats.ribbonsOwned++; + globalScene.gameData.gameStats.ribbonsOwned++; } - const ribbonsInStats: integer = this.scene.gameData.gameStats.ribbonsOwned; + const ribbonsInStats: integer = globalScene.gameData.gameStats.ribbonsOwned; if (ribbonsInStats >= 100) { - this.scene.validateAchv(achvs._100_RIBBONS); + globalScene.validateAchv(achvs._100_RIBBONS); } if (ribbonsInStats >= 75) { - this.scene.validateAchv(achvs._75_RIBBONS); + globalScene.validateAchv(achvs._75_RIBBONS); } if (ribbonsInStats >= 50) { - this.scene.validateAchv(achvs._50_RIBBONS); + globalScene.validateAchv(achvs._50_RIBBONS); } if (ribbonsInStats >= 25) { - this.scene.validateAchv(achvs._25_RIBBONS); + globalScene.validateAchv(achvs._25_RIBBONS); } if (ribbonsInStats >= 10) { - this.scene.validateAchv(achvs._10_RIBBONS); + globalScene.validateAchv(achvs._10_RIBBONS); } return ++this.starterData[speciesIdToIncrement].classicWinCount; @@ -1745,8 +1739,8 @@ export class GameData { addStarterCandy(species: PokemonSpecies, count: integer): void { // Only gain candies if the Pokemon has already been marked as caught in dex (ignore "rental" pokemon) const speciesRootForm = species.getRootSpeciesId(); - if (this.scene.gameData.dexData[speciesRootForm].caughtAttr) { - this.scene.candyBar.showStarterSpeciesCandy(species.speciesId, count); + if (globalScene.gameData.dexData[speciesRootForm].caughtAttr) { + globalScene.candyBar.showStarterSpeciesCandy(species.speciesId, count); this.starterData[species.speciesId].candyCount += count; } } @@ -1782,12 +1776,12 @@ export class GameData { resolve(true); return; } - this.scene.playSound("level_up_fanfare"); + globalScene.playSound("level_up_fanfare"); const moveName = allMoves[speciesEggMoves[speciesId][eggMoveIndex]].name; let message = prependSpeciesToMessage ? species.getName() + " " : ""; message += eggMoveIndex === 3 ? i18next.t("egg:rareEggMoveUnlock", { moveName: moveName }) : i18next.t("egg:eggMoveUnlock", { moveName: moveName }); - this.scene.ui.showText(message, null, () => resolve(true), null, true); + globalScene.ui.showText(message, null, () => resolve(true), null, true); }); } @@ -1820,7 +1814,7 @@ export class GameData { updateSpeciesDexIvs(speciesId: Species, ivs: integer[]): void { let dexEntry: DexEntry; do { - dexEntry = this.scene.gameData.dexData[speciesId]; + dexEntry = globalScene.gameData.dexData[speciesId]; const dexIvs = dexEntry.ivs; for (let i = 0; i < dexIvs.length; i++) { if (dexIvs[i] < ivs[i]) { @@ -1828,7 +1822,7 @@ export class GameData { } } if (dexIvs.filter(iv => iv === 31).length === 6) { - this.scene.validateAchv(achvs.PERFECT_IVS); + globalScene.validateAchv(achvs.PERFECT_IVS); } } while (pokemonPrevolutions.hasOwnProperty(speciesId) && (speciesId = pokemonPrevolutions[speciesId])); } @@ -1966,7 +1960,7 @@ export class GameData { } const cost = new Utils.NumberHolder(value); - applyChallenges(this.scene.gameMode, ChallengeType.STARTER_COST, speciesId, cost); + applyChallenges(globalScene.gameMode, ChallengeType.STARTER_COST, speciesId, cost); return cost.value; } diff --git a/src/system/game-speed.ts b/src/system/game-speed.ts index 861c3d4705d..4b34a04b5f8 100644 --- a/src/system/game-speed.ts +++ b/src/system/game-speed.ts @@ -1,7 +1,8 @@ import SoundFade from "phaser3-rex-plugins/plugins/soundfade"; -import FadeIn from "phaser3-rex-plugins/plugins/audio/fade/FadeIn"; -import FadeOut from "phaser3-rex-plugins/plugins/audio/fade/FadeOut"; -import BattleScene from "../battle-scene"; +import type FadeIn from "phaser3-rex-plugins/plugins/audio/fade/FadeIn"; +import type FadeOut from "phaser3-rex-plugins/plugins/audio/fade/FadeOut"; +import type BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import * as Utils from "../utils"; type FadeIn = typeof FadeIn; @@ -98,7 +99,7 @@ export function initGameSpeed() { sound: Phaser.Sound.BaseSound, duration: number, destroy?: boolean - ) => originalFadeOut(scene, sound, transformValue(duration), destroy)) as FadeOut; + ) => originalFadeOut(globalScene, sound, transformValue(duration), destroy)) as FadeOut; const originalFadeIn = SoundFade.fadeIn; SoundFade.fadeIn = (( @@ -107,5 +108,5 @@ export function initGameSpeed() { duration: number, endVolume?: number, startVolume?: number - ) => originalFadeIn(scene, sound, transformValue(duration), endVolume, startVolume)) as FadeIn; + ) => originalFadeIn(globalScene, sound, transformValue(duration), endVolume, startVolume)) as FadeIn; } diff --git a/src/system/modifier-data.ts b/src/system/modifier-data.ts index c68f9ccb47d..d153236c93e 100644 --- a/src/system/modifier-data.ts +++ b/src/system/modifier-data.ts @@ -1,6 +1,7 @@ -import BattleScene from "../battle-scene"; -import { PersistentModifier } from "../modifier/modifier"; -import { GeneratedPersistentModifierType, ModifierType, ModifierTypeGenerator, getModifierTypeFuncById } from "../modifier/modifier-type"; +import { globalScene } from "#app/global-scene"; +import { PersistentModifier } from "#app/modifier/modifier"; +import type { GeneratedPersistentModifierType, ModifierType } from "#app/modifier/modifier-type"; +import { ModifierTypeGenerator, getModifierTypeFuncById } from "#app/modifier/modifier-type"; export default class ModifierData { public player: boolean; @@ -27,7 +28,7 @@ export default class ModifierData { this.className = sourceModifier ? sourceModifier.constructor.name : source.className; } - toModifier(scene: BattleScene, constructor: any): PersistentModifier | null { + toModifier(constructor: any): PersistentModifier | null { const typeFunc = getModifierTypeFuncById(this.typeId); if (!typeFunc) { return null; @@ -38,13 +39,13 @@ export default class ModifierData { type.id = this.typeId; if (type instanceof ModifierTypeGenerator) { - type = (type as ModifierTypeGenerator).generateType(this.player ? scene.getPlayerParty() : scene.getEnemyField(), this.typePregenArgs); + type = (type as ModifierTypeGenerator).generateType(this.player ? globalScene.getPlayerParty() : globalScene.getEnemyField(), this.typePregenArgs); } const ret = Reflect.construct(constructor, ([ type ] as any[]).concat(this.args).concat(this.stackCount)) as PersistentModifier; - if (ret.stackCount > ret.getMaxStackCount(scene)) { - ret.stackCount = ret.getMaxStackCount(scene); + if (ret.stackCount > ret.getMaxStackCount()) { + ret.stackCount = ret.getMaxStackCount(); } return ret; diff --git a/src/system/pokemon-data.ts b/src/system/pokemon-data.ts index 64801cc0ff1..92eca5c3e9f 100644 --- a/src/system/pokemon-data.ts +++ b/src/system/pokemon-data.ts @@ -1,17 +1,17 @@ import { BattleType } from "../battle"; -import BattleScene from "../battle-scene"; -import { Gender } from "../data/gender"; -import { Nature } from "#enums/nature"; -import { PokeballType } from "#enums/pokeball"; +import { globalScene } from "#app/global-scene"; +import type { Gender } from "../data/gender"; +import type { Nature } from "#enums/nature"; +import type { PokeballType } from "#enums/pokeball"; import { getPokemonSpecies } from "../data/pokemon-species"; import { Status } from "../data/status-effect"; import Pokemon, { EnemyPokemon, PokemonMove, PokemonSummonData } from "../field/pokemon"; import { TrainerSlot } from "../data/trainer-config"; -import { Variant } from "#app/data/variant"; +import type { Variant } from "#app/data/variant"; import { loadBattlerTag } from "../data/battler-tags"; -import { Biome } from "#enums/biome"; +import type { Biome } from "#enums/biome"; import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; +import type { Species } from "#enums/species"; import { CustomPokemonData } from "#app/data/custom-pokemon-data"; export default class PokemonData { @@ -163,15 +163,15 @@ export default class PokemonData { } } - toPokemon(scene: BattleScene, battleType?: BattleType, partyMemberIndex: integer = 0, double: boolean = false): Pokemon { + toPokemon(battleType?: BattleType, partyMemberIndex: integer = 0, double: boolean = false): Pokemon { const species = getPokemonSpecies(this.species); const ret: Pokemon = this.player - ? scene.addPlayerPokemon(species, this.level, this.abilityIndex, this.formIndex, this.gender, this.shiny, this.variant, this.ivs, this.nature, this, (playerPokemon) => { + ? globalScene.addPlayerPokemon(species, this.level, this.abilityIndex, this.formIndex, this.gender, this.shiny, this.variant, this.ivs, this.nature, this, (playerPokemon) => { if (this.nickname) { playerPokemon.nickname = this.nickname; } }) - : scene.addEnemyPokemon(species, this.level, battleType === BattleType.TRAINER ? !double || !(partyMemberIndex % 2) ? TrainerSlot.TRAINER : TrainerSlot.TRAINER_PARTNER : TrainerSlot.NONE, this.boss, false, this); + : globalScene.addEnemyPokemon(species, this.level, battleType === BattleType.TRAINER ? !double || !(partyMemberIndex % 2) ? TrainerSlot.TRAINER : TrainerSlot.TRAINER_PARTNER : TrainerSlot.NONE, this.boss, false, this); if (this.summonData) { ret.primeSummonData(this.summonData); } diff --git a/src/system/session-history.ts b/src/system/session-history.ts index 85a300110d9..e6901b2fa93 100644 --- a/src/system/session-history.ts +++ b/src/system/session-history.ts @@ -1,6 +1,6 @@ -import { GameModes } from "../game-mode"; -import PokemonData from "./pokemon-data"; -import PersistentModifierData from "./modifier-data"; +import type { GameModes } from "../game-mode"; +import type PokemonData from "./pokemon-data"; +import type PersistentModifierData from "./modifier-data"; export enum SessionHistoryResult { ACTIVE, diff --git a/src/system/settings/settings-gamepad.ts b/src/system/settings/settings-gamepad.ts index 322b2baac9e..18973666766 100644 --- a/src/system/settings/settings-gamepad.ts +++ b/src/system/settings/settings-gamepad.ts @@ -1,9 +1,9 @@ -import BattleScene from "../../battle-scene"; -import SettingsGamepadUiHandler from "../../ui/settings/settings-gamepad-ui-handler"; +import type SettingsGamepadUiHandler from "../../ui/settings/settings-gamepad-ui-handler"; import { Mode } from "../../ui/ui"; import { truncateString } from "../../utils"; import { Button } from "#enums/buttons"; import { SettingKeyboard } from "#app/system/settings/settings-keyboard"; +import { globalScene } from "#app/global-scene"; export enum SettingGamepad { Controller = "CONTROLLER", @@ -80,12 +80,12 @@ export const settingGamepadBlackList = [ SettingKeyboard.Button_Right, ]; -export function setSettingGamepad(scene: BattleScene, setting: SettingGamepad, value: integer): boolean { +export function setSettingGamepad(setting: SettingGamepad, value: integer): boolean { switch (setting) { case SettingGamepad.Gamepad_Support: // if we change the value of the gamepad support, we call a method in the inputController to // activate or deactivate the controller listener - scene.inputController.setGamepadSupport(settingGamepadOptions[setting][value] !== "Disabled"); + globalScene.inputController.setGamepadSupport(settingGamepadOptions[setting][value] !== "Disabled"); break; case SettingGamepad.Button_Action: case SettingGamepad.Button_Cancel: @@ -101,13 +101,13 @@ export function setSettingGamepad(scene: BattleScene, setting: SettingGamepad, v case SettingGamepad.Button_Slow_Down: case SettingGamepad.Button_Submit: if (value) { - if (scene.ui) { + if (globalScene.ui) { const cancelHandler = (success: boolean = false) : boolean => { - scene.ui.revertMode(); - (scene.ui.getHandler() as SettingsGamepadUiHandler).updateBindings(); + globalScene.ui.revertMode(); + (globalScene.ui.getHandler() as SettingsGamepadUiHandler).updateBindings(); return success; }; - scene.ui.setOverlayMode(Mode.GAMEPAD_BINDING, { + globalScene.ui.setOverlayMode(Mode.GAMEPAD_BINDING, { target: setting, cancelHandler: cancelHandler, }); @@ -116,20 +116,20 @@ export function setSettingGamepad(scene: BattleScene, setting: SettingGamepad, v break; case SettingGamepad.Controller: if (value) { - const gp = scene.inputController.getGamepadsName(); - if (scene.ui && gp) { + const gp = globalScene.inputController.getGamepadsName(); + if (globalScene.ui && gp) { const cancelHandler = () => { - scene.ui.revertMode(); - (scene.ui.getHandler() as SettingsGamepadUiHandler).setOptionCursor(Object.values(SettingGamepad).indexOf(SettingGamepad.Controller), 0, true); - (scene.ui.getHandler() as SettingsGamepadUiHandler).updateBindings(); + globalScene.ui.revertMode(); + (globalScene.ui.getHandler() as SettingsGamepadUiHandler).setOptionCursor(Object.values(SettingGamepad).indexOf(SettingGamepad.Controller), 0, true); + (globalScene.ui.getHandler() as SettingsGamepadUiHandler).updateBindings(); return false; }; const changeGamepadHandler = (gamepad: string) => { - scene.inputController.setChosenGamepad(gamepad); + globalScene.inputController.setChosenGamepad(gamepad); cancelHandler(); return true; }; - scene.ui.setOverlayMode(Mode.OPTION_SELECT, { + globalScene.ui.setOverlayMode(Mode.OPTION_SELECT, { options: [ ...gp.map((g: string) => ({ label: truncateString(g, 30), // Truncate the gamepad name for display handler: () => changeGamepadHandler(g) diff --git a/src/system/settings/settings-keyboard.ts b/src/system/settings/settings-keyboard.ts index 97990f61c86..f4adc30ee52 100644 --- a/src/system/settings/settings-keyboard.ts +++ b/src/system/settings/settings-keyboard.ts @@ -1,8 +1,8 @@ import { Button } from "#enums/buttons"; -import BattleScene from "#app/battle-scene"; import { Mode } from "#app/ui/ui"; -import SettingsKeyboardUiHandler from "#app/ui/settings/settings-keyboard-ui-handler"; +import type SettingsKeyboardUiHandler from "#app/ui/settings/settings-keyboard-ui-handler"; import i18next from "i18next"; +import { globalScene } from "#app/global-scene"; export enum SettingKeyboard { // Default_Layout = "DEFAULT_LAYOUT", @@ -133,7 +133,7 @@ export const settingKeyboardBlackList = [ ]; -export function setSettingKeyboard(scene: BattleScene, setting: SettingKeyboard, value: integer): boolean { +export function setSettingKeyboard(setting: SettingKeyboard, value: integer): boolean { switch (setting) { case SettingKeyboard.Button_Up: case SettingKeyboard.Button_Down: @@ -169,40 +169,19 @@ export function setSettingKeyboard(scene: BattleScene, setting: SettingKeyboard, case SettingKeyboard.Alt_Button_Slow_Down: case SettingKeyboard.Alt_Button_Submit: if (value) { - if (scene.ui) { + if (globalScene.ui) { const cancelHandler = (success: boolean = false) : boolean => { - scene.ui.revertMode(); - (scene.ui.getHandler() as SettingsKeyboardUiHandler).updateBindings(); + globalScene.ui.revertMode(); + (globalScene.ui.getHandler() as SettingsKeyboardUiHandler).updateBindings(); return success; }; - scene.ui.setOverlayMode(Mode.KEYBOARD_BINDING, { + globalScene.ui.setOverlayMode(Mode.KEYBOARD_BINDING, { target: setting, cancelHandler: cancelHandler, }); } } break; - // case SettingKeyboard.Default_Layout: - // if (value && scene.ui) { - // const cancelHandler = () => { - // scene.ui.revertMode(); - // (scene.ui.getHandler() as SettingsKeyboardUiHandler).setOptionCursor(Object.values(SettingKeyboard).indexOf(SettingKeyboard.Default_Layout), 0, true); - // (scene.ui.getHandler() as SettingsKeyboardUiHandler).updateBindings(); - // return false; - // }; - // const changeKeyboardHandler = (keyboardLayout: string) => { - // scene.inputController.setChosenKeyboardLayout(keyboardLayout); - // cancelHandler(); - // return true; - // }; - // scene.ui.setOverlayMode(Mode.OPTION_SELECT, { - // options: [{ - // label: 'Default', - // handler: changeKeyboardHandler, - // }] - // }); - // return false; - // } } return true; diff --git a/src/system/settings/settings.ts b/src/system/settings/settings.ts index 0a11648c171..ed8e49ffe37 100644 --- a/src/system/settings/settings.ts +++ b/src/system/settings/settings.ts @@ -1,29 +1,21 @@ import { Mode } from "#app/ui/ui"; import i18next from "i18next"; -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { hasTouchscreen } from "#app/touch-controls"; import { updateWindowType } from "#app/ui/ui-theme"; import { CandyUpgradeNotificationChangedEvent } from "#app/events/battle-scene"; -import SettingsUiHandler from "#app/ui/settings/settings-ui-handler"; +import type SettingsUiHandler from "#app/ui/settings/settings-ui-handler"; import { EaseType } from "#enums/ease-type"; import { MoneyFormat } from "#enums/money-format"; import { PlayerGender } from "#enums/player-gender"; -import { getIsInitialized, initI18n } from "#app/plugins/i18n"; -import { ShopCursorTarget } from "#app/enums/shop-cursor-target"; - -function getTranslation(key: string): string { - if (!getIsInitialized()) { - initI18n(); - } - return i18next.t(key); -} +import { ShopCursorTarget } from "#enums/shop-cursor-target"; const VOLUME_OPTIONS: SettingOption[] = new Array(11).fill(null).map((_, i) => i ? { value: (i * 10).toString(), label: (i * 10).toString(), } : { value: "Mute", - label: getTranslation("settings:mute") + label: i18next.t("settings:mute") }); const SHOP_OVERLAY_OPACITY_OPTIONS: SettingOption[] = new Array(9).fill(null).map((_, i) => { @@ -710,174 +702,172 @@ export function settingIndex(key: string) { /** * Resets all settings to their defaults - * @param scene current BattleScene */ -export function resetSettings(scene: BattleScene) { - Setting.forEach(s => setSetting(scene, s.key, s.default)); +export function resetSettings() { + Setting.forEach(s => setSetting(s.key, s.default)); } /** - * Updates a setting for current BattleScene - * @param scene current BattleScene + * Updates a setting * @param setting string ideally from SettingKeys * @param value value to update setting with * @returns true if successful, false if not */ -export function setSetting(scene: BattleScene, setting: string, value: integer): boolean { +export function setSetting(setting: string, value: integer): boolean { const index: number = settingIndex(setting); if (index === -1) { return false; } switch (Setting[index].key) { case SettingKeys.Game_Speed: - scene.gameSpeed = parseFloat(Setting[index].options[value].value.replace("x", "")); + globalScene.gameSpeed = parseFloat(Setting[index].options[value].value.replace("x", "")); break; case SettingKeys.Master_Volume: - scene.masterVolume = value ? parseInt(Setting[index].options[value].value) * 0.01 : 0; - scene.updateSoundVolume(); + globalScene.masterVolume = value ? parseInt(Setting[index].options[value].value) * 0.01 : 0; + globalScene.updateSoundVolume(); break; case SettingKeys.BGM_Volume: - scene.bgmVolume = value ? parseInt(Setting[index].options[value].value) * 0.01 : 0; - scene.updateSoundVolume(); + globalScene.bgmVolume = value ? parseInt(Setting[index].options[value].value) * 0.01 : 0; + globalScene.updateSoundVolume(); break; case SettingKeys.Field_Volume: - scene.fieldVolume = value ? parseInt(Setting[index].options[value].value) * 0.01 : 0; - scene.updateSoundVolume(); + globalScene.fieldVolume = value ? parseInt(Setting[index].options[value].value) * 0.01 : 0; + globalScene.updateSoundVolume(); break; case SettingKeys.SE_Volume: - scene.seVolume = value ? parseInt(Setting[index].options[value].value) * 0.01 : 0; - scene.updateSoundVolume(); + globalScene.seVolume = value ? parseInt(Setting[index].options[value].value) * 0.01 : 0; + globalScene.updateSoundVolume(); break; case SettingKeys.UI_Volume: - scene.uiVolume = value ? parseInt(Setting[index].options[value].value) * 0.01 : 0; + globalScene.uiVolume = value ? parseInt(Setting[index].options[value].value) * 0.01 : 0; break; case SettingKeys.Music_Preference: - scene.musicPreference = value; + globalScene.musicPreference = value; break; case SettingKeys.Damage_Numbers: - scene.damageNumbersMode = value; + globalScene.damageNumbersMode = value; break; case SettingKeys.UI_Theme: - scene.uiTheme = value; + globalScene.uiTheme = value; break; case SettingKeys.Window_Type: - updateWindowType(scene, parseInt(Setting[index].options[value].value)); + updateWindowType(parseInt(Setting[index].options[value].value)); break; case SettingKeys.Tutorials: - scene.enableTutorials = Setting[index].options[value].value === "On"; + globalScene.enableTutorials = Setting[index].options[value].value === "On"; break; case SettingKeys.Move_Info: - scene.enableMoveInfo = Setting[index].options[value].value === "On"; + globalScene.enableMoveInfo = Setting[index].options[value].value === "On"; break; case SettingKeys.Enable_Retries: - scene.enableRetries = Setting[index].options[value].value === "On"; + globalScene.enableRetries = Setting[index].options[value].value === "On"; break; case SettingKeys.Hide_IVs: - scene.hideIvs = Setting[index].options[value].value === "On"; + globalScene.hideIvs = Setting[index].options[value].value === "On"; break; case SettingKeys.Skip_Seen_Dialogues: - scene.skipSeenDialogues = Setting[index].options[value].value === "On"; + globalScene.skipSeenDialogues = Setting[index].options[value].value === "On"; break; case SettingKeys.Egg_Skip: - scene.eggSkipPreference = value; + globalScene.eggSkipPreference = value; break; case SettingKeys.Battle_Style: - scene.battleStyle = value; + globalScene.battleStyle = value; break; case SettingKeys.Show_BGM_Bar: - scene.showBgmBar = Setting[index].options[value].value === "On"; + globalScene.showBgmBar = Setting[index].options[value].value === "On"; break; case SettingKeys.Candy_Upgrade_Notification: - if (scene.candyUpgradeNotification === value) { + if (globalScene.candyUpgradeNotification === value) { break; } - scene.candyUpgradeNotification = value; - scene.eventTarget.dispatchEvent(new CandyUpgradeNotificationChangedEvent(value)); + globalScene.candyUpgradeNotification = value; + globalScene.eventTarget.dispatchEvent(new CandyUpgradeNotificationChangedEvent(value)); break; case SettingKeys.Candy_Upgrade_Display: - scene.candyUpgradeDisplay = value; + globalScene.candyUpgradeDisplay = value; case SettingKeys.Money_Format: switch (Setting[index].options[value].value) { case "Normal": - scene.moneyFormat = MoneyFormat.NORMAL; + globalScene.moneyFormat = MoneyFormat.NORMAL; break; case "Abbreviated": - scene.moneyFormat = MoneyFormat.ABBREVIATED; + globalScene.moneyFormat = MoneyFormat.ABBREVIATED; break; } - scene.updateMoneyText(false); + globalScene.updateMoneyText(false); break; case SettingKeys.Sprite_Set: - scene.experimentalSprites = !!value; + globalScene.experimentalSprites = !!value; if (value) { - scene.initExpSprites(); + globalScene.initExpSprites(); } break; case SettingKeys.Move_Animations: - scene.moveAnimations = Setting[index].options[value].value === "On"; + globalScene.moveAnimations = Setting[index].options[value].value === "On"; break; case SettingKeys.Show_Moveset_Flyout: - scene.showMovesetFlyout = Setting[index].options[value].value === "On"; + globalScene.showMovesetFlyout = Setting[index].options[value].value === "On"; break; case SettingKeys.Show_Arena_Flyout: - scene.showArenaFlyout = Setting[index].options[value].value === "On"; + globalScene.showArenaFlyout = Setting[index].options[value].value === "On"; break; case SettingKeys.Show_Time_Of_Day_Widget: - scene.showTimeOfDayWidget = Setting[index].options[value].value === "On"; + globalScene.showTimeOfDayWidget = Setting[index].options[value].value === "On"; break; case SettingKeys.Time_Of_Day_Animation: - scene.timeOfDayAnimation = Setting[index].options[value].value === "Bounce" ? EaseType.BOUNCE : EaseType.BACK; + globalScene.timeOfDayAnimation = Setting[index].options[value].value === "Bounce" ? EaseType.BOUNCE : EaseType.BACK; break; case SettingKeys.Show_Stats_on_Level_Up: - scene.showLevelUpStats = Setting[index].options[value].value === "On"; + globalScene.showLevelUpStats = Setting[index].options[value].value === "On"; break; case SettingKeys.Shop_Cursor_Target: const selectedValue = shopCursorTargetIndexMap[value]; - scene.shopCursorTarget = selectedValue; + globalScene.shopCursorTarget = selectedValue; break; case SettingKeys.Command_Cursor_Memory: - scene.commandCursorMemory = Setting[index].options[value].value === "On"; + globalScene.commandCursorMemory = Setting[index].options[value].value === "On"; break; case SettingKeys.EXP_Gains_Speed: - scene.expGainsSpeed = value; + globalScene.expGainsSpeed = value; break; case SettingKeys.EXP_Party_Display: - scene.expParty = value; + globalScene.expParty = value; break; case SettingKeys.HP_Bar_Speed: - scene.hpBarSpeed = value; + globalScene.hpBarSpeed = value; break; case SettingKeys.Fusion_Palette_Swaps: - scene.fusionPaletteSwaps = !!value; + globalScene.fusionPaletteSwaps = !!value; break; case SettingKeys.Player_Gender: - if (scene.gameData) { + if (globalScene.gameData) { const female = Setting[index].options[value].value === "Girl"; - scene.gameData.gender = female ? PlayerGender.FEMALE : PlayerGender.MALE; - scene.trainer.setTexture(scene.trainer.texture.key.replace(female ? "m" : "f", female ? "f" : "m")); + globalScene.gameData.gender = female ? PlayerGender.FEMALE : PlayerGender.MALE; + globalScene.trainer.setTexture(globalScene.trainer.texture.key.replace(female ? "m" : "f", female ? "f" : "m")); } else { return false; } break; case SettingKeys.Touch_Controls: - scene.enableTouchControls = Setting[index].options[value].value !== "Disabled" && hasTouchscreen(); + globalScene.enableTouchControls = Setting[index].options[value].value !== "Disabled" && hasTouchscreen(); const touchControls = document.getElementById("touchControls"); if (touchControls) { - touchControls.classList.toggle("visible", scene.enableTouchControls); + touchControls.classList.toggle("visible", globalScene.enableTouchControls); } break; case SettingKeys.Vibration: - scene.enableVibration = Setting[index].options[value].value !== "Disabled" && hasTouchscreen(); + globalScene.enableVibration = Setting[index].options[value].value !== "Disabled" && hasTouchscreen(); break; case SettingKeys.Type_Hints: - scene.typeHints = Setting[index].options[value].value === "On"; + globalScene.typeHints = Setting[index].options[value].value === "On"; break; case SettingKeys.Language: if (value) { - if (scene.ui) { + if (globalScene.ui) { const cancelHandler = () => { - scene.ui.revertMode(); - (scene.ui.getHandler() as SettingsUiHandler).setOptionCursor(-1, 0, true); + globalScene.ui.revertMode(); + (globalScene.ui.getHandler() as SettingsUiHandler).setOptionCursor(-1, 0, true); }; const changeLocaleHandler = (locale: string): boolean => { try { @@ -892,7 +882,7 @@ export function setSetting(scene: BattleScene, setting: string, value: integer): return false; } }; - scene.ui.setOverlayMode(Mode.OPTION_SELECT, { + globalScene.ui.setOverlayMode(Mode.OPTION_SELECT, { options: [ { label: "English", @@ -950,7 +940,7 @@ export function setSetting(scene: BattleScene, setting: string, value: integer): } break; case SettingKeys.Shop_Overlay_Opacity: - scene.updateShopOverlayOpacity(parseInt(Setting[index].options[value].value) * .01); + globalScene.updateShopOverlayOpacity(parseInt(Setting[index].options[value].value) * .01); break; } diff --git a/src/system/trainer-data.ts b/src/system/trainer-data.ts index fc8a14488cc..51dfdde9ec1 100644 --- a/src/system/trainer-data.ts +++ b/src/system/trainer-data.ts @@ -1,5 +1,4 @@ -import BattleScene from "../battle-scene"; -import { TrainerType } from "#enums/trainer-type"; +import type { TrainerType } from "#enums/trainer-type"; import Trainer, { TrainerVariant } from "../field/trainer"; export default class TrainerData { @@ -18,7 +17,7 @@ export default class TrainerData { this.partnerName = source.partnerName; } - toTrainer(scene: BattleScene): Trainer { - return new Trainer(scene, this.trainerType, this.variant, this.partyTemplateIndex, this.name, this.partnerName); + toTrainer(): Trainer { + return new Trainer(this.trainerType, this.variant, this.partyTemplateIndex, this.name, this.partnerName); } } diff --git a/src/system/version_migration/version_converter.ts b/src/system/version_migration/version_converter.ts index d0c69dc3213..aee84805143 100644 --- a/src/system/version_migration/version_converter.ts +++ b/src/system/version_migration/version_converter.ts @@ -1,4 +1,4 @@ -import { SessionSaveData, SystemSaveData } from "../game-data"; +import type { SessionSaveData, SystemSaveData } from "../game-data"; import { version } from "../../../package.json"; // --- v1.0.4 (and below) PATCHES --- // diff --git a/src/system/version_migration/versions/v1_0_4.ts b/src/system/version_migration/versions/v1_0_4.ts index 95f0337ecdd..2795e940866 100644 --- a/src/system/version_migration/versions/v1_0_4.ts +++ b/src/system/version_migration/versions/v1_0_4.ts @@ -1,5 +1,6 @@ import { SettingKeys } from "#app/system/settings/settings"; -import { AbilityAttr, defaultStarterSpecies, DexAttr, SystemSaveData, SessionSaveData } from "#app/system/game-data"; +import type { SystemSaveData, SessionSaveData } from "#app/system/game-data"; +import { AbilityAttr, defaultStarterSpecies, DexAttr } from "#app/system/game-data"; import { allSpecies } from "#app/data/pokemon-species"; import { CustomPokemonData } from "#app/data/custom-pokemon-data"; import { isNullOrUndefined } from "#app/utils"; diff --git a/src/system/voucher.ts b/src/system/voucher.ts index b38fd528c9f..e6bee131797 100644 --- a/src/system/voucher.ts +++ b/src/system/voucher.ts @@ -1,9 +1,8 @@ -import BattleScene from "../battle-scene"; import i18next from "i18next"; import { AchvTier, achvs, getAchievementDescription } from "./achv"; -import { PlayerGender } from "#enums/player-gender"; +import type { PlayerGender } from "#enums/player-gender"; import { TrainerType } from "#enums/trainer-type"; -import { ConditionFn } from "#app/@types/common"; +import type { ConditionFn } from "#app/@types/common"; import { trainerConfigs } from "#app/data/trainer-config"; export enum VoucherType { @@ -26,8 +25,8 @@ export class Voucher { this.conditionFunc = conditionFunc; } - validate(scene: BattleScene, args?: any[]): boolean { - return !this.conditionFunc || this.conditionFunc(scene, args); + validate(args?: any[]): boolean { + return !this.conditionFunc || this.conditionFunc(args); } /** diff --git a/src/test/abilities/aroma_veil.test.ts b/src/test/abilities/aroma_veil.test.ts index e74d0ff5a39..4ba4d16504b 100644 --- a/src/test/abilities/aroma_veil.test.ts +++ b/src/test/abilities/aroma_veil.test.ts @@ -7,7 +7,7 @@ import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; import { BattlerTagType } from "#enums/battler-tag-type"; import { ArenaTagType } from "#enums/arena-tag-type"; import { BattlerIndex } from "#app/battle"; -import { PlayerPokemon } from "#app/field/pokemon"; +import type { PlayerPokemon } from "#app/field/pokemon"; describe("Moves - Aroma Veil", () => { let phaserGame: Phaser.Game; diff --git a/src/test/abilities/commander.test.ts b/src/test/abilities/commander.test.ts index 99b3d50797c..70568639b61 100644 --- a/src/test/abilities/commander.test.ts +++ b/src/test/abilities/commander.test.ts @@ -1,7 +1,8 @@ import { BattlerIndex } from "#app/battle"; import { BattlerTagType } from "#enums/battler-tag-type"; import { PokemonAnimType } from "#enums/pokemon-anim-type"; -import { EffectiveStat, Stat } from "#enums/stat"; +import type { EffectiveStat } from "#enums/stat"; +import { Stat } from "#enums/stat"; import { StatusEffect } from "#enums/status-effect"; import { WeatherType } from "#enums/weather-type"; import { MoveResult } from "#app/field/pokemon"; diff --git a/src/test/abilities/dancer.test.ts b/src/test/abilities/dancer.test.ts index 8fa3d444f37..842b2196441 100644 --- a/src/test/abilities/dancer.test.ts +++ b/src/test/abilities/dancer.test.ts @@ -1,5 +1,5 @@ import { BattlerIndex } from "#app/battle"; -import { MovePhase } from "#app/phases/move-phase"; +import type { MovePhase } from "#app/phases/move-phase"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; diff --git a/src/test/abilities/gulp_missile.test.ts b/src/test/abilities/gulp_missile.test.ts index 01b68d0c89d..bbb103c63e6 100644 --- a/src/test/abilities/gulp_missile.test.ts +++ b/src/test/abilities/gulp_missile.test.ts @@ -1,5 +1,5 @@ import { BattlerIndex } from "#app/battle"; -import Pokemon from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; import { Abilities } from "#enums/abilities"; import { BattlerTagType } from "#enums/battler-tag-type"; import { Moves } from "#enums/moves"; diff --git a/src/test/abilities/infiltrator.test.ts b/src/test/abilities/infiltrator.test.ts index 01c5cef7796..8ea72b55b0c 100644 --- a/src/test/abilities/infiltrator.test.ts +++ b/src/test/abilities/infiltrator.test.ts @@ -75,7 +75,7 @@ describe("Abilities - Infiltrator", () => { }); // TODO: fix this interaction to pass this test - it.skip("should bypass the target's Mist", async () => { + it.todo("should bypass the target's Mist", async () => { await game.classicMode.startBattle([ Species.MAGIKARP ]); const player = game.scene.getPlayerPokemon()!; diff --git a/src/test/abilities/libero.test.ts b/src/test/abilities/libero.test.ts index e7bc9eeeb63..42627da51a3 100644 --- a/src/test/abilities/libero.test.ts +++ b/src/test/abilities/libero.test.ts @@ -1,7 +1,7 @@ import { allMoves } from "#app/data/move"; import { Type } from "#enums/type"; import { Weather } from "#app/data/weather"; -import { PlayerPokemon } from "#app/field/pokemon"; +import type { PlayerPokemon } from "#app/field/pokemon"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; import { Abilities } from "#enums/abilities"; import { BattlerTagType } from "#enums/battler-tag-type"; @@ -54,6 +54,7 @@ describe("Abilities - Libero", () => { }, ); + // Test for Gen9+ functionality, we are using previous funcionality test.skip( "ability applies only once per switch in", async () => { diff --git a/src/test/abilities/protean.test.ts b/src/test/abilities/protean.test.ts index 0d7202e3f6d..787834f8a9d 100644 --- a/src/test/abilities/protean.test.ts +++ b/src/test/abilities/protean.test.ts @@ -1,7 +1,7 @@ import { allMoves } from "#app/data/move"; import { Type } from "#enums/type"; import { Weather } from "#app/data/weather"; -import { PlayerPokemon } from "#app/field/pokemon"; +import type { PlayerPokemon } from "#app/field/pokemon"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; import { Abilities } from "#enums/abilities"; import { BattlerTagType } from "#enums/battler-tag-type"; @@ -54,6 +54,7 @@ describe("Abilities - Protean", () => { }, ); + // Test for Gen9+ functionality, we are using previous funcionality test.skip( "ability applies only once per switch in", async () => { diff --git a/src/test/abilities/speed_boost.test.ts b/src/test/abilities/speed_boost.test.ts index ff5184eedae..74ee6a8cb92 100644 --- a/src/test/abilities/speed_boost.test.ts +++ b/src/test/abilities/speed_boost.test.ts @@ -5,7 +5,7 @@ import { Species } from "#enums/species"; import GameManager from "#test/utils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; -import { CommandPhase } from "#app/phases/command-phase"; +import type { CommandPhase } from "#app/phases/command-phase"; import { Command } from "#app/ui/command-ui-handler"; import { AttemptRunPhase } from "#app/phases/attempt-run-phase"; diff --git a/src/test/abilities/sturdy.test.ts b/src/test/abilities/sturdy.test.ts index 07ccbbb68e5..8f134338f12 100644 --- a/src/test/abilities/sturdy.test.ts +++ b/src/test/abilities/sturdy.test.ts @@ -1,4 +1,4 @@ -import { EnemyPokemon } from "#app/field/pokemon"; +import type { EnemyPokemon } from "#app/field/pokemon"; import { DamageAnimPhase } from "#app/phases/damage-anim-phase"; import { MoveEndPhase } from "#app/phases/move-end-phase"; import { Abilities } from "#enums/abilities"; diff --git a/src/test/abilities/unburden.test.ts b/src/test/abilities/unburden.test.ts index ba14c7fdcd0..a652f55d591 100644 --- a/src/test/abilities/unburden.test.ts +++ b/src/test/abilities/unburden.test.ts @@ -1,7 +1,7 @@ import { BattlerIndex } from "#app/battle"; import { PostItemLostAbAttr } from "#app/data/ability"; import { allMoves, StealHeldItemChanceAttr } from "#app/data/move"; -import Pokemon from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; import type { ContactHeldItemTransferChanceModifier } from "#app/modifier/modifier"; import { Abilities } from "#enums/abilities"; import { BattlerTagType } from "#enums/battler-tag-type"; diff --git a/src/test/achievements/achievement.test.ts b/src/test/achievements/achievement.test.ts index a3669c60463..b515c6bafa8 100644 --- a/src/test/achievements/achievement.test.ts +++ b/src/test/achievements/achievement.test.ts @@ -58,11 +58,11 @@ describe("Achv", () => { }); it("should validate the achievement based on the condition function", () => { - const conditionFunc = vi.fn((scene: BattleScene, args: any[]) => args[0] === 10); + const conditionFunc = vi.fn((args: any[]) => args[0] === 10); const achv = new Achv("", "Test Achievement", "Test Description", "test_icon", 10, conditionFunc); - expect(achv.validate(new BattleScene(), [ 5 ])).toBe(false); - expect(achv.validate(new BattleScene(), [ 10 ])).toBe(true); + expect(achv.validate([ 5 ])).toBe(false); + expect(achv.validate([ 10 ])).toBe(true); expect(conditionFunc).toHaveBeenCalledTimes(2); }); }); @@ -79,10 +79,10 @@ describe("MoneyAchv", () => { const scene = new BattleScene(); scene.money = 5000; - expect(moneyAchv.validate(scene, [])).toBe(false); + expect(moneyAchv.validate([])).toBe(false); scene.money = 15000; - expect(moneyAchv.validate(scene, [])).toBe(true); + expect(moneyAchv.validate([])).toBe(true); }); }); @@ -122,10 +122,10 @@ describe("RibbonAchv", () => { const ribbonAchv = new RibbonAchv("", "Test Ribbon Achievement", 10, "ribbon_icon", 10); scene.gameData.gameStats.ribbonsOwned = 5; - expect(ribbonAchv.validate(scene, [])).toBe(false); + expect(ribbonAchv.validate([])).toBe(false); scene.gameData.gameStats.ribbonsOwned = 15; - expect(ribbonAchv.validate(scene, [])).toBe(true); + expect(ribbonAchv.validate([])).toBe(true); }); }); @@ -138,13 +138,12 @@ describe("DamageAchv", () => { it("should validate the achievement based on the damage amount", () => { const damageAchv = new DamageAchv("", "Test Damage Achievement", 250, "damage_icon", 10); - const scene = new BattleScene(); const numberHolder = new NumberHolder(200); - expect(damageAchv.validate(scene, [ numberHolder ])).toBe(false); + expect(damageAchv.validate([ numberHolder ])).toBe(false); numberHolder.value = 300; - expect(damageAchv.validate(scene, [ numberHolder ])).toBe(true); + expect(damageAchv.validate([ numberHolder ])).toBe(true); }); }); @@ -157,13 +156,12 @@ describe("HealAchv", () => { it("should validate the achievement based on the heal amount", () => { const healAchv = new HealAchv("", "Test Heal Achievement", 250, "heal_icon", 10); - const scene = new BattleScene(); const numberHolder = new NumberHolder(200); - expect(healAchv.validate(scene, [ numberHolder ])).toBe(false); + expect(healAchv.validate([ numberHolder ])).toBe(false); numberHolder.value = 300; - expect(healAchv.validate(scene, [ numberHolder ])).toBe(true); + expect(healAchv.validate([ numberHolder ])).toBe(true); }); }); @@ -176,13 +174,12 @@ describe("LevelAchv", () => { it("should validate the achievement based on the level", () => { const levelAchv = new LevelAchv("", "Test Level Achievement", 100, "level_icon", 10); - const scene = new BattleScene(); const integerHolder = new IntegerHolder(50); - expect(levelAchv.validate(scene, [ integerHolder ])).toBe(false); + expect(levelAchv.validate([ integerHolder ])).toBe(false); integerHolder.value = 150; - expect(levelAchv.validate(scene, [ integerHolder ])).toBe(true); + expect(levelAchv.validate([ integerHolder ])).toBe(true); }); }); @@ -195,10 +192,9 @@ describe("ModifierAchv", () => { it("should validate the achievement based on the modifier function", () => { const modifierAchv = new ModifierAchv("", "Test Modifier Achievement", "Test Description", "modifier_icon", 10, () => true); - const scene = new BattleScene(); const modifier = new TurnHeldItemTransferModifier(null!, 3, 1); - expect(modifierAchv.validate(scene, [ modifier ])).toBe(true); + expect(modifierAchv.validate([ modifier ])).toBe(true); }); }); diff --git a/src/test/battle/battle.test.ts b/src/test/battle/battle.test.ts index d2b074acce0..bd84cb2fd3b 100644 --- a/src/test/battle/battle.test.ts +++ b/src/test/battle/battle.test.ts @@ -188,8 +188,8 @@ describe("Test Battle Phase", () => { game.onNextPrompt("TitlePhase", Mode.TITLE, () => { game.scene.gameMode = getGameMode(GameModes.CLASSIC); const starters = generateStarter(game.scene); - const selectStarterPhase = new SelectStarterPhase(game.scene); - game.scene.pushPhase(new EncounterPhase(game.scene, false)); + const selectStarterPhase = new SelectStarterPhase(); + game.scene.pushPhase(new EncounterPhase(false)); selectStarterPhase.initBattle(starters); }); await game.phaseInterceptor.runFrom(SelectGenderPhase).to(SummonPhase); diff --git a/src/test/battle/error-handling.test.ts b/src/test/battle/error-handling.test.ts deleted file mode 100644 index 208463e7064..00000000000 --- a/src/test/battle/error-handling.test.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { Abilities } from "#enums/abilities"; -import { Moves } from "#enums/moves"; -import { Species } from "#enums/species"; -import GameManager from "#test/utils/gameManager"; -import Phaser from "phaser"; -import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; - -describe("Error Handling", () => { - let phaserGame: Phaser.Game; - let game: GameManager; - const moveToUse = Moves.SPLASH; - - beforeAll(() => { - phaserGame = new Phaser.Game({ - type: Phaser.HEADLESS, - }); - }); - - afterEach(() => { - game.phaseInterceptor.restoreOg(); - }); - - beforeEach(() => { - game = new GameManager(phaserGame); - game.override - .battleType("single") - .startingWave(3); - game.override.starterSpecies(Species.MEWTWO); - game.override.enemySpecies(Species.RATTATA); - game.override.enemyAbility(Abilities.HYDRATION); - game.override.ability(Abilities.ZEN_MODE); - game.override.startingLevel(2000); - game.override.moveset([ moveToUse ]); - game.override.enemyMoveset([ Moves.TACKLE, Moves.TACKLE, Moves.TACKLE, Moves.TACKLE ]); - }); - - it.skip("to next turn", async () => { - await game.startBattle(); - const turn = game.scene.currentBattle.turn; - game.move.select(moveToUse); - await game.toNextTurn(); - expect(game.scene.currentBattle.turn).toBeGreaterThan(turn); - }, 20000); -}); - diff --git a/src/test/battlerTags/octolock.test.ts b/src/test/battlerTags/octolock.test.ts index 9efce220fe8..4bf0257af8f 100644 --- a/src/test/battlerTags/octolock.test.ts +++ b/src/test/battlerTags/octolock.test.ts @@ -1,23 +1,34 @@ -import BattleScene from "#app/battle-scene"; -import { describe, expect, it, vi } from "vitest"; -import Pokemon from "#app/field/pokemon"; +import { afterEach, beforeAll, describe, expect, it, vi } from "vitest"; +import type Pokemon from "#app/field/pokemon"; import { BattlerTagLapseType, OctolockTag, TrappedTag } from "#app/data/battler-tags"; import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; import { Stat } from "#enums/stat"; - -vi.mock("#app/battle-scene.js"); +import GameManager from "#test/utils/gameManager"; describe("BattlerTag - OctolockTag", () => { describe("lapse behavior", () => { + let phaserGame: Phaser.Game; + let game: GameManager; + + beforeAll(() => { + phaserGame = new Phaser.Game({ + type: Phaser.HEADLESS, + }); + game = new GameManager(phaserGame); + }); + + afterEach(() => { + game.phaseInterceptor.restoreOg(); + }); + it("unshifts a StatStageChangePhase with expected stat stage changes", async () => { const mockPokemon = { - scene: new BattleScene(), getBattlerIndex: () => 0, } as Pokemon; const subject = new OctolockTag(1); - vi.spyOn(mockPokemon.scene, "unshiftPhase").mockImplementation(phase => { + vi.spyOn(game.scene, "unshiftPhase").mockImplementation(phase => { expect(phase).toBeInstanceOf(StatStageChangePhase); expect((phase as StatStageChangePhase)["stages"]).toEqual(-1); expect((phase as StatStageChangePhase)["stats"]).toEqual([ Stat.DEF, Stat.SPDEF ]); @@ -25,7 +36,7 @@ describe("BattlerTag - OctolockTag", () => { subject.lapse(mockPokemon, BattlerTagLapseType.TURN_END); - expect(mockPokemon.scene.unshiftPhase).toBeCalledTimes(1); + expect(game.scene.unshiftPhase).toBeCalledTimes(1); }); }); diff --git a/src/test/battlerTags/stockpiling.test.ts b/src/test/battlerTags/stockpiling.test.ts index dab189853c5..13a4227853d 100644 --- a/src/test/battlerTags/stockpiling.test.ts +++ b/src/test/battlerTags/stockpiling.test.ts @@ -1,28 +1,42 @@ -import BattleScene from "#app/battle-scene"; -import { beforeEach, describe, expect, it, vi } from "vitest"; -import Pokemon, { PokemonSummonData } from "#app/field/pokemon"; import { StockpilingTag } from "#app/data/battler-tags"; -import { Stat } from "#enums/stat"; +import type Pokemon from "#app/field/pokemon"; +import { PokemonSummonData } from "#app/field/pokemon"; import * as messages from "#app/messages"; import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; +import { Stat } from "#enums/stat"; +import GameManager from "#test/utils/gameManager"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; beforeEach(() => { vi.spyOn(messages, "getPokemonNameWithAffix").mockImplementation(() => ""); }); describe("BattlerTag - StockpilingTag", () => { + let phaserGame: Phaser.Game; + let game: GameManager; + + beforeAll(() => { + phaserGame = new Phaser.Game({ + type: Phaser.HEADLESS, + }); + game = new GameManager(phaserGame); + }); + + afterEach(() => { + game.phaseInterceptor.restoreOg(); + }); + describe("onAdd", () => { it("unshifts a StatStageChangePhase with expected stat stage changes on add", async () => { const mockPokemon = { - scene: vi.mocked(new BattleScene()) as BattleScene, getBattlerIndex: () => 0, } as Pokemon; - vi.spyOn(mockPokemon.scene, "queueMessage").mockImplementation(() => {}); + vi.spyOn(game.scene, "queueMessage").mockImplementation(() => {}); const subject = new StockpilingTag(1); - vi.spyOn(mockPokemon.scene, "unshiftPhase").mockImplementation(phase => { + vi.spyOn(game.scene, "unshiftPhase").mockImplementation(phase => { expect(phase).toBeInstanceOf(StatStageChangePhase); expect((phase as StatStageChangePhase)["stages"]).toEqual(1); expect((phase as StatStageChangePhase)["stats"]).toEqual(expect.arrayContaining([ Stat.DEF, Stat.SPDEF ])); @@ -32,24 +46,23 @@ describe("BattlerTag - StockpilingTag", () => { subject.onAdd(mockPokemon); - expect(mockPokemon.scene.unshiftPhase).toBeCalledTimes(1); + expect(game.scene.unshiftPhase).toBeCalledTimes(1); }); it("unshifts a StatStageChangePhase with expected stat changes on add (one stat maxed)", async () => { const mockPokemon = { - scene: new BattleScene(), summonData: new PokemonSummonData(), getBattlerIndex: () => 0, - } as Pokemon; + } as unknown as Pokemon; - vi.spyOn(mockPokemon.scene, "queueMessage").mockImplementation(() => {}); + vi.spyOn(game.scene, "queueMessage").mockImplementation(() => {}); mockPokemon.summonData.statStages[Stat.DEF - 1] = 6; mockPokemon.summonData.statStages[Stat.SPD - 1] = 5; const subject = new StockpilingTag(1); - vi.spyOn(mockPokemon.scene, "unshiftPhase").mockImplementation(phase => { + vi.spyOn(game.scene, "unshiftPhase").mockImplementation(phase => { expect(phase).toBeInstanceOf(StatStageChangePhase); expect((phase as StatStageChangePhase)["stages"]).toEqual(1); expect((phase as StatStageChangePhase)["stats"]).toEqual(expect.arrayContaining([ Stat.DEF, Stat.SPDEF ])); @@ -59,22 +72,21 @@ describe("BattlerTag - StockpilingTag", () => { subject.onAdd(mockPokemon); - expect(mockPokemon.scene.unshiftPhase).toBeCalledTimes(1); + expect(game.scene.unshiftPhase).toBeCalledTimes(1); }); }); describe("onOverlap", () => { it("unshifts a StatStageChangePhase with expected stat changes on overlap", async () => { const mockPokemon = { - scene: new BattleScene(), getBattlerIndex: () => 0, } as Pokemon; - vi.spyOn(mockPokemon.scene, "queueMessage").mockImplementation(() => {}); + vi.spyOn(game.scene, "queueMessage").mockImplementation(() => {}); const subject = new StockpilingTag(1); - vi.spyOn(mockPokemon.scene, "unshiftPhase").mockImplementation(phase => { + vi.spyOn(game.scene, "unshiftPhase").mockImplementation(phase => { expect(phase).toBeInstanceOf(StatStageChangePhase); expect((phase as StatStageChangePhase)["stages"]).toEqual(1); expect((phase as StatStageChangePhase)["stats"]).toEqual(expect.arrayContaining([ Stat.DEF, Stat.SPDEF ])); @@ -84,26 +96,25 @@ describe("BattlerTag - StockpilingTag", () => { subject.onOverlap(mockPokemon); - expect(mockPokemon.scene.unshiftPhase).toBeCalledTimes(1); + expect(game.scene.unshiftPhase).toBeCalledTimes(1); }); }); describe("stack limit, stat tracking, and removal", () => { it("can be added up to three times, even when one stat does not change", async () => { const mockPokemon = { - scene: new BattleScene(), summonData: new PokemonSummonData(), getBattlerIndex: () => 0, } as Pokemon; - vi.spyOn(mockPokemon.scene, "queueMessage").mockImplementation(() => {}); + vi.spyOn(game.scene, "queueMessage").mockImplementation(() => {}); mockPokemon.summonData.statStages[Stat.DEF - 1] = 5; mockPokemon.summonData.statStages[Stat.SPD - 1] = 4; const subject = new StockpilingTag(1); - vi.spyOn(mockPokemon.scene, "unshiftPhase").mockImplementationOnce(phase => { + vi.spyOn(game.scene, "unshiftPhase").mockImplementationOnce(phase => { expect(phase).toBeInstanceOf(StatStageChangePhase); expect((phase as StatStageChangePhase)["stages"]).toEqual(1); expect((phase as StatStageChangePhase)["stats"]).toEqual(expect.arrayContaining([ Stat.DEF, Stat.SPDEF ])); @@ -115,7 +126,7 @@ describe("BattlerTag - StockpilingTag", () => { subject.onAdd(mockPokemon); expect(subject.stockpiledCount).toBe(1); - vi.spyOn(mockPokemon.scene, "unshiftPhase").mockImplementationOnce(phase => { + vi.spyOn(game.scene, "unshiftPhase").mockImplementationOnce(phase => { expect(phase).toBeInstanceOf(StatStageChangePhase); expect((phase as StatStageChangePhase)["stages"]).toEqual(1); expect((phase as StatStageChangePhase)["stats"]).toEqual(expect.arrayContaining([ Stat.DEF, Stat.SPDEF ])); @@ -127,7 +138,7 @@ describe("BattlerTag - StockpilingTag", () => { subject.onOverlap(mockPokemon); expect(subject.stockpiledCount).toBe(2); - vi.spyOn(mockPokemon.scene, "unshiftPhase").mockImplementationOnce(phase => { + vi.spyOn(game.scene, "unshiftPhase").mockImplementationOnce(phase => { expect(phase).toBeInstanceOf(StatStageChangePhase); expect((phase as StatStageChangePhase)["stages"]).toEqual(1); expect((phase as StatStageChangePhase)["stats"]).toEqual(expect.arrayContaining([ Stat.DEF, Stat.SPDEF ])); @@ -138,7 +149,7 @@ describe("BattlerTag - StockpilingTag", () => { subject.onOverlap(mockPokemon); expect(subject.stockpiledCount).toBe(3); - vi.spyOn(mockPokemon.scene, "unshiftPhase").mockImplementationOnce(_phase => { + vi.spyOn(game.scene, "unshiftPhase").mockImplementationOnce(_phase => { throw new Error("Should not be called a fourth time"); }); @@ -148,14 +159,14 @@ describe("BattlerTag - StockpilingTag", () => { expect(subject.statChangeCounts).toMatchObject({ [Stat.DEF]: 0, [Stat.SPDEF]: 2 }); // removing tag should reverse stat changes - vi.spyOn(mockPokemon.scene, "unshiftPhase").mockImplementationOnce(phase => { + vi.spyOn(game.scene, "unshiftPhase").mockImplementationOnce(phase => { expect(phase).toBeInstanceOf(StatStageChangePhase); expect((phase as StatStageChangePhase)["stages"]).toEqual(-2); expect((phase as StatStageChangePhase)["stats"]).toEqual(expect.arrayContaining([ Stat.SPDEF ])); }); subject.onRemove(mockPokemon); - expect(mockPokemon.scene.unshiftPhase).toHaveBeenCalledOnce(); // note that re-spying each add/overlap has been refreshing call count + expect(game.scene.unshiftPhase).toHaveBeenCalledOnce(); // note that re-spying each add/overlap has been refreshing call count }); }); }); diff --git a/src/test/battlerTags/substitute.test.ts b/src/test/battlerTags/substitute.test.ts index af0aa63af89..4bf7e584ed3 100644 --- a/src/test/battlerTags/substitute.test.ts +++ b/src/test/battlerTags/substitute.test.ts @@ -1,14 +1,14 @@ import { beforeEach, describe, expect, it, vi } from "vitest"; -import Pokemon, { MoveResult, PokemonTurnData, TurnMove, PokemonMove } from "#app/field/pokemon"; +import type { PokemonTurnData, TurnMove, PokemonMove } from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; +import { MoveResult } from "#app/field/pokemon"; import BattleScene from "#app/battle-scene"; import { BattlerTagLapseType, BindTag, SubstituteTag } from "#app/data/battler-tags"; import { Moves } from "#app/enums/moves"; import { PokemonAnimType } from "#app/enums/pokemon-anim-type"; import * as messages from "#app/messages"; import { allMoves } from "#app/data/move"; -import { MoveEffectPhase } from "#app/phases/move-effect-phase"; - -vi.mock("#app/battle-scene.js"); +import type { MoveEffectPhase } from "#app/phases/move-effect-phase"; describe("BattlerTag - SubstituteTag", () => { let mockPokemon: Pokemon; @@ -26,10 +26,10 @@ describe("BattlerTag - SubstituteTag", () => { expect(tagFilter(trapTag)).toBeTruthy(); return true; }) as Pokemon["findAndRemoveTags"] - } as Pokemon; + } as unknown as Pokemon; vi.spyOn(messages, "getPokemonNameWithAffix").mockReturnValue(""); - vi.spyOn(mockPokemon.scene, "getPokemonById").mockImplementation(pokemonId => mockPokemon.id === pokemonId ? mockPokemon : null); + vi.spyOn(mockPokemon.scene as BattleScene, "getPokemonById").mockImplementation(pokemonId => mockPokemon.id === pokemonId ? mockPokemon : null); }); it( @@ -37,8 +37,8 @@ describe("BattlerTag - SubstituteTag", () => { async () => { const subject = new SubstituteTag(Moves.SUBSTITUTE, mockPokemon.id); - vi.spyOn(mockPokemon.scene, "triggerPokemonBattleAnim").mockReturnValue(true); - vi.spyOn(mockPokemon.scene, "queueMessage").mockReturnValue(); + vi.spyOn(mockPokemon.scene as BattleScene, "triggerPokemonBattleAnim").mockReturnValue(true); + vi.spyOn(mockPokemon.scene as BattleScene, "queueMessage").mockReturnValue(); subject.onAdd(mockPokemon); @@ -51,20 +51,20 @@ describe("BattlerTag - SubstituteTag", () => { async () => { const subject = new SubstituteTag(Moves.SUBSTITUTE, mockPokemon.id); - vi.spyOn(mockPokemon.scene, "triggerPokemonBattleAnim").mockImplementation( + vi.spyOn(mockPokemon.scene as BattleScene, "triggerPokemonBattleAnim").mockImplementation( (pokemon, battleAnimType, fieldAssets?, delayed?) => { expect(battleAnimType).toBe(PokemonAnimType.SUBSTITUTE_ADD); return true; } ); - vi.spyOn(mockPokemon.scene, "queueMessage").mockReturnValue(); + vi.spyOn(mockPokemon.scene as BattleScene, "queueMessage").mockReturnValue(); subject.onAdd(mockPokemon); expect(subject.sourceInFocus).toBeFalsy(); - expect(mockPokemon.scene.triggerPokemonBattleAnim).toHaveBeenCalledTimes(1); - expect(mockPokemon.scene.queueMessage).toHaveBeenCalledTimes(1); + expect((mockPokemon.scene as BattleScene).triggerPokemonBattleAnim).toHaveBeenCalledTimes(1); + expect((mockPokemon.scene as BattleScene).queueMessage).toHaveBeenCalledTimes(1); } ); @@ -73,7 +73,7 @@ describe("BattlerTag - SubstituteTag", () => { async () => { const subject = new SubstituteTag(Moves.SUBSTITUTE, mockPokemon.id); - vi.spyOn(mockPokemon.scene, "queueMessage").mockReturnValue(); + vi.spyOn(mockPokemon.scene as BattleScene, "queueMessage").mockReturnValue(); subject.onAdd(mockPokemon); expect(mockPokemon.findAndRemoveTags).toHaveBeenCalledTimes(1); @@ -88,7 +88,7 @@ describe("BattlerTag - SubstituteTag", () => { hp: 101, id: 0, isFainted: vi.fn().mockReturnValue(false) as Pokemon["isFainted"] - } as Pokemon; + } as unknown as Pokemon; vi.spyOn(messages, "getPokemonNameWithAffix").mockReturnValue(""); }); @@ -99,19 +99,19 @@ describe("BattlerTag - SubstituteTag", () => { const subject = new SubstituteTag(Moves.SUBSTITUTE, mockPokemon.id); subject.sourceInFocus = false; - vi.spyOn(mockPokemon.scene, "triggerPokemonBattleAnim").mockImplementation( + vi.spyOn(mockPokemon.scene as BattleScene, "triggerPokemonBattleAnim").mockImplementation( (pokemon, battleAnimType, fieldAssets?, delayed?) => { expect(battleAnimType).toBe(PokemonAnimType.SUBSTITUTE_REMOVE); return true; } ); - vi.spyOn(mockPokemon.scene, "queueMessage").mockReturnValue(); + vi.spyOn(mockPokemon.scene as BattleScene, "queueMessage").mockReturnValue(); subject.onRemove(mockPokemon); - expect(mockPokemon.scene.triggerPokemonBattleAnim).toHaveBeenCalledTimes(1); - expect(mockPokemon.scene.queueMessage).toHaveBeenCalledTimes(1); + expect((mockPokemon.scene as BattleScene).triggerPokemonBattleAnim).toHaveBeenCalledTimes(1); + expect((mockPokemon.scene as BattleScene).queueMessage).toHaveBeenCalledTimes(1); } ); }); @@ -124,7 +124,7 @@ describe("BattlerTag - SubstituteTag", () => { id: 0, turnData: { acted: true } as PokemonTurnData, getLastXMoves: vi.fn().mockReturnValue([ { move: Moves.TACKLE, result: MoveResult.SUCCESS } as TurnMove ]) as Pokemon["getLastXMoves"], - } as Pokemon; + } as unknown as Pokemon; vi.spyOn(messages, "getPokemonNameWithAffix").mockReturnValue(""); }); @@ -134,20 +134,20 @@ describe("BattlerTag - SubstituteTag", () => { async () => { const subject = new SubstituteTag(Moves.SUBSTITUTE, mockPokemon.id); - vi.spyOn(mockPokemon.scene, "triggerPokemonBattleAnim").mockImplementation( + vi.spyOn(mockPokemon.scene as BattleScene, "triggerPokemonBattleAnim").mockImplementation( (pokemon, battleAnimType, fieldAssets?, delayed?) => { expect(battleAnimType).toBe(PokemonAnimType.SUBSTITUTE_PRE_MOVE); return true; } ); - vi.spyOn(mockPokemon.scene, "queueMessage").mockReturnValue(); + vi.spyOn(mockPokemon.scene as BattleScene, "queueMessage").mockReturnValue(); expect(subject.lapse(mockPokemon, BattlerTagLapseType.PRE_MOVE)).toBeTruthy(); expect(subject.sourceInFocus).toBeTruthy(); - expect(mockPokemon.scene.triggerPokemonBattleAnim).toHaveBeenCalledTimes(1); - expect(mockPokemon.scene.queueMessage).not.toHaveBeenCalled(); + expect((mockPokemon.scene as BattleScene).triggerPokemonBattleAnim).toHaveBeenCalledTimes(1); + expect((mockPokemon.scene as BattleScene).queueMessage).not.toHaveBeenCalled(); } ); @@ -156,31 +156,31 @@ describe("BattlerTag - SubstituteTag", () => { async () => { const subject = new SubstituteTag(Moves.SUBSTITUTE, mockPokemon.id); - vi.spyOn(mockPokemon.scene, "triggerPokemonBattleAnim").mockImplementation( + vi.spyOn(mockPokemon.scene as BattleScene, "triggerPokemonBattleAnim").mockImplementation( (pokemon, battleAnimType, fieldAssets?, delayed?) => { expect(battleAnimType).toBe(PokemonAnimType.SUBSTITUTE_POST_MOVE); return true; } ); - vi.spyOn(mockPokemon.scene, "queueMessage").mockReturnValue(); + vi.spyOn(mockPokemon.scene as BattleScene, "queueMessage").mockReturnValue(); expect(subject.lapse(mockPokemon, BattlerTagLapseType.AFTER_MOVE)).toBeTruthy(); expect(subject.sourceInFocus).toBeFalsy(); - expect(mockPokemon.scene.triggerPokemonBattleAnim).toHaveBeenCalledTimes(1); - expect(mockPokemon.scene.queueMessage).not.toHaveBeenCalled(); + expect((mockPokemon.scene as BattleScene).triggerPokemonBattleAnim).toHaveBeenCalledTimes(1); + expect((mockPokemon.scene as BattleScene).queueMessage).not.toHaveBeenCalled(); } ); - /** TODO: Figure out how to mock a MoveEffectPhase correctly for this test */ - it.skip( + // TODO: Figure out how to mock a MoveEffectPhase correctly for this test + it.todo( "HIT lapse triggers on-hit message", async () => { const subject = new SubstituteTag(Moves.SUBSTITUTE, mockPokemon.id); - vi.spyOn(mockPokemon.scene, "triggerPokemonBattleAnim").mockReturnValue(true); - vi.spyOn(mockPokemon.scene, "queueMessage").mockReturnValue(); + vi.spyOn(mockPokemon.scene as BattleScene, "triggerPokemonBattleAnim").mockReturnValue(true); + vi.spyOn(mockPokemon.scene as BattleScene, "queueMessage").mockReturnValue(); const pokemonMove = { getMove: vi.fn().mockReturnValue(allMoves[Moves.TACKLE]) as PokemonMove["getMove"] @@ -191,13 +191,13 @@ describe("BattlerTag - SubstituteTag", () => { getUserPokemon: vi.fn().mockReturnValue(undefined) as MoveEffectPhase["getUserPokemon"] } as MoveEffectPhase; - vi.spyOn(mockPokemon.scene, "getCurrentPhase").mockReturnValue(moveEffectPhase); + vi.spyOn(mockPokemon.scene as BattleScene, "getCurrentPhase").mockReturnValue(moveEffectPhase); vi.spyOn(allMoves[Moves.TACKLE], "hitsSubstitute").mockReturnValue(true); expect(subject.lapse(mockPokemon, BattlerTagLapseType.HIT)).toBeTruthy(); - expect(mockPokemon.scene.triggerPokemonBattleAnim).not.toHaveBeenCalled(); - expect(mockPokemon.scene.queueMessage).toHaveBeenCalledTimes(1); + expect((mockPokemon.scene as BattleScene).triggerPokemonBattleAnim).not.toHaveBeenCalled(); + expect((mockPokemon.scene as BattleScene).queueMessage).toHaveBeenCalledTimes(1); } ); @@ -206,8 +206,8 @@ describe("BattlerTag - SubstituteTag", () => { async () => { const subject = new SubstituteTag(Moves.SUBSTITUTE, mockPokemon.id); - vi.spyOn(mockPokemon.scene, "triggerPokemonBattleAnim").mockReturnValue(true); - vi.spyOn(mockPokemon.scene, "queueMessage").mockReturnValue(); + vi.spyOn(mockPokemon.scene as BattleScene, "triggerPokemonBattleAnim").mockReturnValue(true); + vi.spyOn(mockPokemon.scene as BattleScene, "queueMessage").mockReturnValue(); expect(subject.lapse(mockPokemon, BattlerTagLapseType.CUSTOM)).toBeFalsy(); } @@ -218,13 +218,13 @@ describe("BattlerTag - SubstituteTag", () => { async () => { const subject = new SubstituteTag(Moves.SUBSTITUTE, mockPokemon.id); - vi.spyOn(mockPokemon.scene, "triggerPokemonBattleAnim").mockReturnValue(true); - vi.spyOn(mockPokemon.scene, "queueMessage").mockReturnValue(); + vi.spyOn(mockPokemon.scene as BattleScene, "triggerPokemonBattleAnim").mockReturnValue(true); + vi.spyOn(mockPokemon.scene as BattleScene, "queueMessage").mockReturnValue(); expect(subject.lapse(mockPokemon, BattlerTagLapseType.TURN_END)).toBeTruthy(); - expect(mockPokemon.scene.triggerPokemonBattleAnim).not.toHaveBeenCalled(); - expect(mockPokemon.scene.queueMessage).not.toHaveBeenCalled(); + expect((mockPokemon.scene as BattleScene).triggerPokemonBattleAnim).not.toHaveBeenCalled(); + expect((mockPokemon.scene as BattleScene).queueMessage).not.toHaveBeenCalled(); } ); }); diff --git a/src/test/boss-pokemon.test.ts b/src/test/boss-pokemon.test.ts index 840b65f3cc6..389b42a2963 100644 --- a/src/test/boss-pokemon.test.ts +++ b/src/test/boss-pokemon.test.ts @@ -5,7 +5,7 @@ import { getPokemonSpecies } from "#app/data/pokemon-species"; import { Abilities } from "#app/enums/abilities"; import { Moves } from "#app/enums/moves"; import { EFFECTIVE_STATS } from "#app/enums/stat"; -import { EnemyPokemon } from "#app/field/pokemon"; +import type { EnemyPokemon } from "#app/field/pokemon"; import { toDmgValue } from "#app/utils"; describe("Boss Pokemon / Shields", () => { diff --git a/src/test/eggs/egg.test.ts b/src/test/eggs/egg.test.ts index 1a33b4eff7c..3394771d84a 100644 --- a/src/test/eggs/egg.test.ts +++ b/src/test/eggs/egg.test.ts @@ -33,20 +33,18 @@ describe("Egg Generation Tests", () => { }); it("should return Kyogre for the 10th of June", () => { - const scene = game.scene; const timestamp = new Date(2024, 5, 10, 15, 0, 0, 0).getTime(); const expectedSpecies = Species.KYOGRE; - const result = getLegendaryGachaSpeciesForTimestamp(scene, timestamp); + const result = getLegendaryGachaSpeciesForTimestamp(timestamp); expect(result).toBe(expectedSpecies); }); it("should return Kyogre for the 10th of July", () => { - const scene = game.scene; const timestamp = new Date(2024, 6, 10, 15, 0, 0, 0).getTime(); const expectedSpecies = Species.KYOGRE; - const result = getLegendaryGachaSpeciesForTimestamp(scene, timestamp); + const result = getLegendaryGachaSpeciesForTimestamp(timestamp); expect(result).toBe(expectedSpecies); }); @@ -57,7 +55,7 @@ describe("Egg Generation Tests", () => { let gachaSpeciesCount = 0; for (let i = 0; i < EGG_HATCH_COUNT; i++) { - const result = new Egg({ scene, timestamp, sourceType: EggSourceType.GACHA_LEGENDARY, tier: EggTier.LEGENDARY }).generatePlayerPokemon(scene).species.speciesId; + const result = new Egg({ scene, timestamp, sourceType: EggSourceType.GACHA_LEGENDARY, tier: EggTier.LEGENDARY }).generatePlayerPokemon().species.speciesId; if (result === expectedSpecies) { gachaSpeciesCount++; } @@ -76,7 +74,7 @@ describe("Egg Generation Tests", () => { const scene = game.scene; const expectedSpecies = Species.ARCEUS; - const result = new Egg({ scene, species: expectedSpecies }).generatePlayerPokemon(scene).species.speciesId; + const result = new Egg({ scene, species: expectedSpecies }).generatePlayerPokemon().species.speciesId; expect(result).toBe(expectedSpecies); }); @@ -140,7 +138,7 @@ describe("Egg Generation Tests", () => { const scene = game.scene; const expectedResult = true; - const result = new Egg({ scene, isShiny: expectedResult, species: Species.BULBASAUR }).generatePlayerPokemon(scene).isShiny(); + const result = new Egg({ scene, isShiny: expectedResult, species: Species.BULBASAUR }).generatePlayerPokemon().isShiny(); expect(result).toBe(expectedResult); }); @@ -148,7 +146,7 @@ describe("Egg Generation Tests", () => { const scene = game.scene; const expectedVariantTier = VariantTier.STANDARD; - const result = new Egg({ scene, isShiny: true, variantTier: expectedVariantTier, species: Species.BULBASAUR }).generatePlayerPokemon(scene).variant; + const result = new Egg({ scene, isShiny: true, variantTier: expectedVariantTier, species: Species.BULBASAUR }).generatePlayerPokemon().variant; expect(result).toBe(expectedVariantTier); }); @@ -156,7 +154,7 @@ describe("Egg Generation Tests", () => { const scene = game.scene; const expectedVariantTier = VariantTier.RARE; - const result = new Egg({ scene, isShiny: true, variantTier: expectedVariantTier, species: Species.BULBASAUR }).generatePlayerPokemon(scene).variant; + const result = new Egg({ scene, isShiny: true, variantTier: expectedVariantTier, species: Species.BULBASAUR }).generatePlayerPokemon().variant; expect(result).toBe(expectedVariantTier); }); @@ -164,7 +162,7 @@ describe("Egg Generation Tests", () => { const scene = game.scene; const expectedVariantTier = VariantTier.EPIC; - const result = new Egg({ scene, isShiny: true, variantTier: expectedVariantTier, species: Species.BULBASAUR }).generatePlayerPokemon(scene).variant; + const result = new Egg({ scene, isShiny: true, variantTier: expectedVariantTier, species: Species.BULBASAUR }).generatePlayerPokemon().variant; expect(result).toBe(expectedVariantTier); }); @@ -187,7 +185,7 @@ describe("Egg Generation Tests", () => { it("should return a hatched pokemon with a hidden ability", () => { const scene = game.scene; - const playerPokemon = new Egg({ scene, overrideHiddenAbility: true, species: Species.BULBASAUR }).generatePlayerPokemon(scene); + const playerPokemon = new Egg({ scene, overrideHiddenAbility: true, species: Species.BULBASAUR }).generatePlayerPokemon(); const expectedAbilityIndex = playerPokemon.species.ability2 ? 2 : 1; const result = playerPokemon.abilityIndex; @@ -332,7 +330,7 @@ describe("Egg Generation Tests", () => { scene.resetSeed(); const firstEgg = new Egg({ scene, sourceType: EggSourceType.GACHA_SHINY, tier: EggTier.COMMON }); - const firstHatch = firstEgg.generatePlayerPokemon(scene); + const firstHatch = firstEgg.generatePlayerPokemon(); let diffEggMove = false; let diffSpecies = false; let diffShiny = false; @@ -343,7 +341,7 @@ describe("Egg Generation Tests", () => { scene.resetSeed(); // Make sure that eggs are unpredictable even if using same seed const newEgg = new Egg({ scene, sourceType: EggSourceType.GACHA_SHINY, tier: EggTier.COMMON }); - const newHatch = newEgg.generatePlayerPokemon(scene); + const newHatch = newEgg.generatePlayerPokemon(); diffEggMove = diffEggMove || (newEgg.eggMoveIndex !== firstEgg.eggMoveIndex); diffSpecies = diffSpecies || (newHatch.species.speciesId !== firstHatch.species.speciesId); diffShiny = diffShiny || (newHatch.shiny !== firstHatch.shiny); @@ -362,7 +360,7 @@ describe("Egg Generation Tests", () => { scene.resetSeed(); const firstEgg = new Egg({ scene, species: Species.BULBASAUR }); - const firstHatch = firstEgg.generatePlayerPokemon(scene); + const firstHatch = firstEgg.generatePlayerPokemon(); let diffEggMove = false; let diffSpecies = false; let diffShiny = false; @@ -372,7 +370,7 @@ describe("Egg Generation Tests", () => { scene.resetSeed(); // Make sure that eggs are unpredictable even if using same seed const newEgg = new Egg({ scene, species: Species.BULBASAUR }); - const newHatch = newEgg.generatePlayerPokemon(scene); + const newHatch = newEgg.generatePlayerPokemon(); diffEggMove = diffEggMove || (newEgg.eggMoveIndex !== firstEgg.eggMoveIndex); diffSpecies = diffSpecies || (newHatch.species.speciesId !== firstHatch.species.speciesId); diffShiny = diffShiny || (newHatch.shiny !== firstHatch.shiny); diff --git a/src/test/eggs/manaphy-egg.test.ts b/src/test/eggs/manaphy-egg.test.ts index 3b2c40ae84a..4285476a913 100644 --- a/src/test/eggs/manaphy-egg.test.ts +++ b/src/test/eggs/manaphy-egg.test.ts @@ -48,7 +48,7 @@ describe("Manaphy Eggs", () => { rngSweepProgress = (2 * i + 1) / (2 * EGG_HATCH_COUNT); const newEgg = new Egg({ scene, tier: EggTier.COMMON, sourceType: EggSourceType.GACHA_SHINY, id: 204 }); - const newHatch = newEgg.generatePlayerPokemon(scene); + const newHatch = newEgg.generatePlayerPokemon(); if (newHatch.species.speciesId === Species.MANAPHY) { manaphyCount++; } else if (newHatch.species.speciesId === Species.PHIONE) { @@ -74,7 +74,7 @@ describe("Manaphy Eggs", () => { rngSweepProgress = (2 * i + 1) / (2 * EGG_HATCH_COUNT); const newEgg = new Egg({ scene, species: Species.PHIONE, sourceType: EggSourceType.SAME_SPECIES_EGG }); - const newHatch = newEgg.generatePlayerPokemon(scene); + const newHatch = newEgg.generatePlayerPokemon(); if (newHatch.species.speciesId === Species.MANAPHY) { manaphyCount++; } else if (newHatch.species.speciesId === Species.PHIONE) { @@ -100,7 +100,7 @@ describe("Manaphy Eggs", () => { rngSweepProgress = (2 * i + 1) / (2 * EGG_HATCH_COUNT); const newEgg = new Egg({ scene, species: Species.MANAPHY, sourceType: EggSourceType.SAME_SPECIES_EGG }); - const newHatch = newEgg.generatePlayerPokemon(scene); + const newHatch = newEgg.generatePlayerPokemon(); if (newHatch.species.speciesId === Species.MANAPHY) { manaphyCount++; } else if (newHatch.species.speciesId === Species.PHIONE) { diff --git a/src/test/enemy_command.test.ts b/src/test/enemy_command.test.ts index 49419f5b34d..647c0be279a 100644 --- a/src/test/enemy_command.test.ts +++ b/src/test/enemy_command.test.ts @@ -1,21 +1,23 @@ +import type BattleScene from "#app/battle-scene"; import { allMoves, MoveCategory } from "#app/data/move"; import { Abilities } from "#app/enums/abilities"; import { Moves } from "#app/enums/moves"; import { Species } from "#app/enums/species"; -import { AiType, EnemyPokemon } from "#app/field/pokemon"; +import type { EnemyPokemon } from "#app/field/pokemon"; +import { AiType } from "#app/field/pokemon"; import { randSeedInt } from "#app/utils"; import GameManager from "#test/utils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; - +let globalScene: BattleScene; const NUM_TRIALS = 300; type MoveChoiceSet = { [key: number]: number }; function getEnemyMoveChoices(pokemon: EnemyPokemon, moveChoices: MoveChoiceSet): void { // Use an unseeded random number generator in place of the mocked-out randBattleSeedInt - vi.spyOn(pokemon.scene, "randBattleSeedInt").mockImplementation((range, min?) => { + vi.spyOn(globalScene, "randBattleSeedInt").mockImplementation((range, min?) => { return randSeedInt(range, min); }); for (let i = 0; i < NUM_TRIALS; i++) { @@ -44,6 +46,7 @@ describe("Enemy Commands - Move Selection", () => { beforeEach(() => { game = new GameManager(phaserGame); + globalScene = game.scene; game.override .ability(Abilities.BALL_FETCH) diff --git a/src/test/escape-calculations.test.ts b/src/test/escape-calculations.test.ts index cc18fd78066..419a6b4c19a 100644 --- a/src/test/escape-calculations.test.ts +++ b/src/test/escape-calculations.test.ts @@ -1,5 +1,5 @@ import { AttemptRunPhase } from "#app/phases/attempt-run-phase"; -import { CommandPhase } from "#app/phases/command-phase"; +import type { CommandPhase } from "#app/phases/command-phase"; import { Command } from "#app/ui/command-ui-handler"; import * as Utils from "#app/utils"; import { Abilities } from "#enums/abilities"; diff --git a/src/test/field/pokemon.test.ts b/src/test/field/pokemon.test.ts index 0bfbd03e9d9..1e3769a35b1 100644 --- a/src/test/field/pokemon.test.ts +++ b/src/test/field/pokemon.test.ts @@ -2,7 +2,7 @@ import { Species } from "#app/enums/species"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; import GameManager from "../utils/gameManager"; import { PokeballType } from "#enums/pokeball"; -import BattleScene from "#app/battle-scene"; +import type BattleScene from "#app/battle-scene"; import { Moves } from "#app/enums/moves"; describe("Spec - Pokemon", () => { diff --git a/src/test/game-mode.test.ts b/src/test/game-mode.test.ts index 11994a102af..2c8184a30ef 100644 --- a/src/test/game-mode.test.ts +++ b/src/test/game-mode.test.ts @@ -1,4 +1,5 @@ -import { GameMode, GameModes, getGameMode } from "#app/game-mode"; +import type { GameMode } from "#app/game-mode"; +import { GameModes, getGameMode } from "#app/game-mode"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import * as Utils from "../utils"; import GameManager from "./utils/gameManager"; diff --git a/src/test/items/dire_hit.test.ts b/src/test/items/dire_hit.test.ts index 601552de7f1..3c82ebd3a47 100644 --- a/src/test/items/dire_hit.test.ts +++ b/src/test/items/dire_hit.test.ts @@ -7,7 +7,7 @@ import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vite import { BattleEndPhase } from "#app/phases/battle-end-phase"; import { TempCritBoosterModifier } from "#app/modifier/modifier"; import { Mode } from "#app/ui/ui"; -import ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; +import type ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; import { Button } from "#app/enums/buttons"; import { CommandPhase } from "#app/phases/command-phase"; import { NewBattlePhase } from "#app/phases/new-battle-phase"; diff --git a/src/test/items/double_battle_chance_booster.test.ts b/src/test/items/double_battle_chance_booster.test.ts index 8d2bd7c9179..cccd8d4765e 100644 --- a/src/test/items/double_battle_chance_booster.test.ts +++ b/src/test/items/double_battle_chance_booster.test.ts @@ -6,7 +6,7 @@ import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; import { ShopCursorTarget } from "#app/enums/shop-cursor-target"; import { Mode } from "#app/ui/ui"; -import ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; +import type ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; import { Button } from "#app/enums/buttons"; describe("Items - Double Battle Chance Boosters", () => { diff --git a/src/test/items/exp_booster.test.ts b/src/test/items/exp_booster.test.ts index 36107329706..7441dcaeb73 100644 --- a/src/test/items/exp_booster.test.ts +++ b/src/test/items/exp_booster.test.ts @@ -34,7 +34,7 @@ describe("EXP Modifier Items", () => { const partyMember = game.scene.getPlayerPokemon()!; partyMember.exp = 100; const expHolder = new Utils.NumberHolder(partyMember.exp); - partyMember.scene.applyModifiers(PokemonExpBoosterModifier, true, partyMember, expHolder); + game.scene.applyModifiers(PokemonExpBoosterModifier, true, partyMember, expHolder); expect(expHolder.value).toBe(440); }, 20000); }); diff --git a/src/test/items/grip_claw.test.ts b/src/test/items/grip_claw.test.ts index 2909549af87..e0cbeb95b6f 100644 --- a/src/test/items/grip_claw.test.ts +++ b/src/test/items/grip_claw.test.ts @@ -1,6 +1,6 @@ import { BattlerIndex } from "#app/battle"; -import Pokemon from "#app/field/pokemon"; -import { ContactHeldItemTransferChanceModifier } from "#app/modifier/modifier"; +import type Pokemon from "#app/field/pokemon"; +import type { ContactHeldItemTransferChanceModifier } from "#app/modifier/modifier"; import { Abilities } from "#enums/abilities"; import { BerryType } from "#enums/berry-type"; import { Moves } from "#enums/moves"; diff --git a/src/test/items/light_ball.test.ts b/src/test/items/light_ball.test.ts index fe79b6a2045..987a5ab8b0c 100644 --- a/src/test/items/light_ball.test.ts +++ b/src/test/items/light_ball.test.ts @@ -75,17 +75,17 @@ describe("Items - Light Ball", () => { // Making sure modifier is not applied without holding item const atkValue = new Utils.NumberHolder(atkStat); - partyMember.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.DEF, atkValue); + game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.DEF, atkValue); const spAtkValue = new Utils.NumberHolder(spAtkStat); - partyMember.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.SPDEF, spAtkValue); + game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.SPDEF, spAtkValue); expect(atkValue.value / atkStat).toBe(1); expect(spAtkValue.value / spAtkStat).toBe(1); // Giving Eviolite to party member and testing if it applies - partyMember.scene.addModifier(modifierTypes.SPECIES_STAT_BOOSTER().generateType([], [ "LIGHT_BALL" ])!.newModifier(partyMember), true); - partyMember.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.ATK, atkValue); - partyMember.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.SPATK, spAtkValue); + game.scene.addModifier(modifierTypes.SPECIES_STAT_BOOSTER().generateType([], [ "LIGHT_BALL" ])!.newModifier(partyMember), true); + game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.ATK, atkValue); + game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.SPATK, spAtkValue); expect(atkValue.value / atkStat).toBe(2); expect(spAtkValue.value / spAtkStat).toBe(2); @@ -114,17 +114,17 @@ describe("Items - Light Ball", () => { // Making sure modifier is not applied without holding item const atkValue = new Utils.NumberHolder(atkStat); - partyMember.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.DEF, atkValue); + game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.DEF, atkValue); const spAtkValue = new Utils.NumberHolder(spAtkStat); - partyMember.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.SPDEF, spAtkValue); + game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.SPDEF, spAtkValue); expect(atkValue.value / atkStat).toBe(1); expect(spAtkValue.value / spAtkStat).toBe(1); // Giving Eviolite to party member and testing if it applies - partyMember.scene.addModifier(modifierTypes.SPECIES_STAT_BOOSTER().generateType([], [ "LIGHT_BALL" ])!.newModifier(partyMember), true); - partyMember.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.ATK, atkValue); - partyMember.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.SPATK, spAtkValue); + game.scene.addModifier(modifierTypes.SPECIES_STAT_BOOSTER().generateType([], [ "LIGHT_BALL" ])!.newModifier(partyMember), true); + game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.ATK, atkValue); + game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.SPATK, spAtkValue); expect(atkValue.value / atkStat).toBe(2); expect(spAtkValue.value / spAtkStat).toBe(2); @@ -153,17 +153,17 @@ describe("Items - Light Ball", () => { // Making sure modifier is not applied without holding item const atkValue = new Utils.NumberHolder(atkStat); - partyMember.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.DEF, atkValue); + game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.DEF, atkValue); const spAtkValue = new Utils.NumberHolder(spAtkStat); - partyMember.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.SPDEF, spAtkValue); + game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.SPDEF, spAtkValue); expect(atkValue.value / atkStat).toBe(1); expect(spAtkValue.value / spAtkStat).toBe(1); // Giving Eviolite to party member and testing if it applies - partyMember.scene.addModifier(modifierTypes.SPECIES_STAT_BOOSTER().generateType([], [ "LIGHT_BALL" ])!.newModifier(partyMember), true); - partyMember.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.ATK, atkValue); - partyMember.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.SPATK, spAtkValue); + game.scene.addModifier(modifierTypes.SPECIES_STAT_BOOSTER().generateType([], [ "LIGHT_BALL" ])!.newModifier(partyMember), true); + game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.ATK, atkValue); + game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.SPATK, spAtkValue); expect(atkValue.value / atkStat).toBe(2); expect(spAtkValue.value / spAtkStat).toBe(2); @@ -181,17 +181,17 @@ describe("Items - Light Ball", () => { // Making sure modifier is not applied without holding item const atkValue = new Utils.NumberHolder(atkStat); - partyMember.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.DEF, atkValue); + game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.DEF, atkValue); const spAtkValue = new Utils.NumberHolder(spAtkStat); - partyMember.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.SPDEF, spAtkValue); + game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.SPDEF, spAtkValue); expect(atkValue.value / atkStat).toBe(1); expect(spAtkValue.value / spAtkStat).toBe(1); // Giving Eviolite to party member and testing if it applies - partyMember.scene.addModifier(modifierTypes.SPECIES_STAT_BOOSTER().generateType([], [ "LIGHT_BALL" ])!.newModifier(partyMember), true); - partyMember.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.ATK, atkValue); - partyMember.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.SPATK, spAtkValue); + game.scene.addModifier(modifierTypes.SPECIES_STAT_BOOSTER().generateType([], [ "LIGHT_BALL" ])!.newModifier(partyMember), true); + game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.ATK, atkValue); + game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.SPATK, spAtkValue); expect(atkValue.value / atkStat).toBe(1); expect(spAtkValue.value / spAtkStat).toBe(1); diff --git a/src/test/items/lock_capsule.test.ts b/src/test/items/lock_capsule.test.ts index 0b6534b5eaf..2d95cea5847 100644 --- a/src/test/items/lock_capsule.test.ts +++ b/src/test/items/lock_capsule.test.ts @@ -34,7 +34,7 @@ describe("Items - Lock Capsule", () => { it("doesn't set the cost of common tier items to 0", async () => { await game.classicMode.startBattle(); - game.scene.overridePhase(new SelectModifierPhase(game.scene, 0, undefined, { guaranteedModifierTiers: [ ModifierTier.COMMON, ModifierTier.COMMON, ModifierTier.COMMON ], fillRemaining: false })); + game.scene.overridePhase(new SelectModifierPhase(0, undefined, { guaranteedModifierTiers: [ ModifierTier.COMMON, ModifierTier.COMMON, ModifierTier.COMMON ], fillRemaining: false })); game.onNextPrompt("SelectModifierPhase", Mode.MODIFIER_SELECT, () => { const selectModifierPhase = game.scene.getCurrentPhase() as SelectModifierPhase; diff --git a/src/test/items/metal_powder.test.ts b/src/test/items/metal_powder.test.ts index 86e7d329ecb..42ef9c1bb16 100644 --- a/src/test/items/metal_powder.test.ts +++ b/src/test/items/metal_powder.test.ts @@ -74,13 +74,13 @@ describe("Items - Metal Powder", () => { // Making sure modifier is not applied without holding item const defValue = new Utils.NumberHolder(defStat); - partyMember.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.DEF, defValue); + game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.DEF, defValue); expect(defValue.value / defStat).toBe(1); // Giving Eviolite to party member and testing if it applies - partyMember.scene.addModifier(modifierTypes.SPECIES_STAT_BOOSTER().generateType([], [ "METAL_POWDER" ])!.newModifier(partyMember), true); - partyMember.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.DEF, defValue); + game.scene.addModifier(modifierTypes.SPECIES_STAT_BOOSTER().generateType([], [ "METAL_POWDER" ])!.newModifier(partyMember), true); + game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.DEF, defValue); expect(defValue.value / defStat).toBe(2); }, 20000); @@ -107,13 +107,13 @@ describe("Items - Metal Powder", () => { // Making sure modifier is not applied without holding item const defValue = new Utils.NumberHolder(defStat); - partyMember.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.DEF, defValue); + game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.DEF, defValue); expect(defValue.value / defStat).toBe(1); // Giving Eviolite to party member and testing if it applies - partyMember.scene.addModifier(modifierTypes.SPECIES_STAT_BOOSTER().generateType([], [ "METAL_POWDER" ])!.newModifier(partyMember), true); - partyMember.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.DEF, defValue); + game.scene.addModifier(modifierTypes.SPECIES_STAT_BOOSTER().generateType([], [ "METAL_POWDER" ])!.newModifier(partyMember), true); + game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.DEF, defValue); expect(defValue.value / defStat).toBe(2); }, 20000); @@ -140,13 +140,13 @@ describe("Items - Metal Powder", () => { // Making sure modifier is not applied without holding item const defValue = new Utils.NumberHolder(defStat); - partyMember.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.DEF, defValue); + game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.DEF, defValue); expect(defValue.value / defStat).toBe(1); // Giving Eviolite to party member and testing if it applies - partyMember.scene.addModifier(modifierTypes.SPECIES_STAT_BOOSTER().generateType([], [ "METAL_POWDER" ])!.newModifier(partyMember), true); - partyMember.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.DEF, defValue); + game.scene.addModifier(modifierTypes.SPECIES_STAT_BOOSTER().generateType([], [ "METAL_POWDER" ])!.newModifier(partyMember), true); + game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.DEF, defValue); expect(defValue.value / defStat).toBe(2); }, 20000); @@ -162,13 +162,13 @@ describe("Items - Metal Powder", () => { // Making sure modifier is not applied without holding item const defValue = new Utils.NumberHolder(defStat); - partyMember.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.DEF, defValue); + game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.DEF, defValue); expect(defValue.value / defStat).toBe(1); // Giving Eviolite to party member and testing if it applies - partyMember.scene.addModifier(modifierTypes.SPECIES_STAT_BOOSTER().generateType([], [ "METAL_POWDER" ])!.newModifier(partyMember), true); - partyMember.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.DEF, defValue); + game.scene.addModifier(modifierTypes.SPECIES_STAT_BOOSTER().generateType([], [ "METAL_POWDER" ])!.newModifier(partyMember), true); + game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.DEF, defValue); expect(defValue.value / defStat).toBe(1); }, 20000); diff --git a/src/test/items/quick_powder.test.ts b/src/test/items/quick_powder.test.ts index 905d023ad8b..d30111cbd6a 100644 --- a/src/test/items/quick_powder.test.ts +++ b/src/test/items/quick_powder.test.ts @@ -74,13 +74,13 @@ describe("Items - Quick Powder", () => { // Making sure modifier is not applied without holding item const spdValue = new Utils.NumberHolder(spdStat); - partyMember.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.SPD, spdValue); + game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.SPD, spdValue); expect(spdValue.value / spdStat).toBe(1); // Giving Eviolite to party member and testing if it applies - partyMember.scene.addModifier(modifierTypes.SPECIES_STAT_BOOSTER().generateType([], [ "QUICK_POWDER" ])!.newModifier(partyMember), true); - partyMember.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.SPD, spdValue); + game.scene.addModifier(modifierTypes.SPECIES_STAT_BOOSTER().generateType([], [ "QUICK_POWDER" ])!.newModifier(partyMember), true); + game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.SPD, spdValue); expect(spdValue.value / spdStat).toBe(2); }, 20000); @@ -107,13 +107,13 @@ describe("Items - Quick Powder", () => { // Making sure modifier is not applied without holding item const spdValue = new Utils.NumberHolder(spdStat); - partyMember.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.SPD, spdValue); + game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.SPD, spdValue); expect(spdValue.value / spdStat).toBe(1); // Giving Eviolite to party member and testing if it applies - partyMember.scene.addModifier(modifierTypes.SPECIES_STAT_BOOSTER().generateType([], [ "QUICK_POWDER" ])!.newModifier(partyMember), true); - partyMember.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.SPD, spdValue); + game.scene.addModifier(modifierTypes.SPECIES_STAT_BOOSTER().generateType([], [ "QUICK_POWDER" ])!.newModifier(partyMember), true); + game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.SPD, spdValue); expect(spdValue.value / spdStat).toBe(2); }, 20000); @@ -140,13 +140,13 @@ describe("Items - Quick Powder", () => { // Making sure modifier is not applied without holding item const spdValue = new Utils.NumberHolder(spdStat); - partyMember.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.SPD, spdValue); + game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.SPD, spdValue); expect(spdValue.value / spdStat).toBe(1); // Giving Eviolite to party member and testing if it applies - partyMember.scene.addModifier(modifierTypes.SPECIES_STAT_BOOSTER().generateType([], [ "QUICK_POWDER" ])!.newModifier(partyMember), true); - partyMember.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.SPD, spdValue); + game.scene.addModifier(modifierTypes.SPECIES_STAT_BOOSTER().generateType([], [ "QUICK_POWDER" ])!.newModifier(partyMember), true); + game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.SPD, spdValue); expect(spdValue.value / spdStat).toBe(2); }, 20000); @@ -162,13 +162,13 @@ describe("Items - Quick Powder", () => { // Making sure modifier is not applied without holding item const spdValue = new Utils.NumberHolder(spdStat); - partyMember.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.SPD, spdValue); + game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.SPD, spdValue); expect(spdValue.value / spdStat).toBe(1); // Giving Eviolite to party member and testing if it applies - partyMember.scene.addModifier(modifierTypes.SPECIES_STAT_BOOSTER().generateType([], [ "QUICK_POWDER" ])!.newModifier(partyMember), true); - partyMember.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.SPD, spdValue); + game.scene.addModifier(modifierTypes.SPECIES_STAT_BOOSTER().generateType([], [ "QUICK_POWDER" ])!.newModifier(partyMember), true); + game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.SPD, spdValue); expect(spdValue.value / spdStat).toBe(1); }, 20000); diff --git a/src/test/items/temp_stat_stage_booster.test.ts b/src/test/items/temp_stat_stage_booster.test.ts index 6186799623a..3e496d1bbf8 100644 --- a/src/test/items/temp_stat_stage_booster.test.ts +++ b/src/test/items/temp_stat_stage_booster.test.ts @@ -9,7 +9,7 @@ import { Abilities } from "#app/enums/abilities"; import { TempStatStageBoosterModifier } from "#app/modifier/modifier"; import { Mode } from "#app/ui/ui"; import { Button } from "#app/enums/buttons"; -import ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; +import type ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; import { ShopCursorTarget } from "#app/enums/shop-cursor-target"; diff --git a/src/test/items/thick_club.test.ts b/src/test/items/thick_club.test.ts index d349a1ad7b9..08b19250ea7 100644 --- a/src/test/items/thick_club.test.ts +++ b/src/test/items/thick_club.test.ts @@ -74,13 +74,13 @@ describe("Items - Thick Club", () => { // Making sure modifier is not applied without holding item const atkValue = new Utils.NumberHolder(atkStat); - partyMember.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.ATK, atkValue); + game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.ATK, atkValue); expect(atkValue.value / atkStat).toBe(1); // Giving Eviolite to party member and testing if it applies - partyMember.scene.addModifier(modifierTypes.SPECIES_STAT_BOOSTER().generateType([], [ "THICK_CLUB" ])!.newModifier(partyMember), true); - partyMember.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.ATK, atkValue); + game.scene.addModifier(modifierTypes.SPECIES_STAT_BOOSTER().generateType([], [ "THICK_CLUB" ])!.newModifier(partyMember), true); + game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.ATK, atkValue); expect(atkValue.value / atkStat).toBe(2); }, 20000); @@ -96,13 +96,13 @@ describe("Items - Thick Club", () => { // Making sure modifier is not applied without holding item const atkValue = new Utils.NumberHolder(atkStat); - partyMember.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.ATK, atkValue); + game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.ATK, atkValue); expect(atkValue.value / atkStat).toBe(1); // Giving Eviolite to party member and testing if it applies - partyMember.scene.addModifier(modifierTypes.SPECIES_STAT_BOOSTER().generateType([], [ "THICK_CLUB" ])!.newModifier(partyMember), true); - partyMember.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.ATK, atkValue); + game.scene.addModifier(modifierTypes.SPECIES_STAT_BOOSTER().generateType([], [ "THICK_CLUB" ])!.newModifier(partyMember), true); + game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.ATK, atkValue); expect(atkValue.value / atkStat).toBe(2); }, 20000); @@ -118,13 +118,13 @@ describe("Items - Thick Club", () => { // Making sure modifier is not applied without holding item const atkValue = new Utils.NumberHolder(atkStat); - partyMember.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.ATK, atkValue); + game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.ATK, atkValue); expect(atkValue.value / atkStat).toBe(1); // Giving Eviolite to party member and testing if it applies - partyMember.scene.addModifier(modifierTypes.SPECIES_STAT_BOOSTER().generateType([], [ "THICK_CLUB" ])!.newModifier(partyMember), true); - partyMember.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.ATK, atkValue); + game.scene.addModifier(modifierTypes.SPECIES_STAT_BOOSTER().generateType([], [ "THICK_CLUB" ])!.newModifier(partyMember), true); + game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.ATK, atkValue); expect(atkValue.value / atkStat).toBe(2); }, 20000); @@ -155,13 +155,13 @@ describe("Items - Thick Club", () => { // Making sure modifier is not applied without holding item const atkValue = new Utils.NumberHolder(atkStat); - partyMember.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.ATK, atkValue); + game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.ATK, atkValue); expect(atkValue.value / atkStat).toBe(1); // Giving Eviolite to party member and testing if it applies - partyMember.scene.addModifier(modifierTypes.SPECIES_STAT_BOOSTER().generateType([], [ "THICK_CLUB" ])!.newModifier(partyMember), true); - partyMember.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.ATK, atkValue); + game.scene.addModifier(modifierTypes.SPECIES_STAT_BOOSTER().generateType([], [ "THICK_CLUB" ])!.newModifier(partyMember), true); + game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.ATK, atkValue); expect(atkValue.value / atkStat).toBe(2); }, 20000); @@ -192,13 +192,13 @@ describe("Items - Thick Club", () => { // Making sure modifier is not applied without holding item const atkValue = new Utils.NumberHolder(atkStat); - partyMember.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.ATK, atkValue); + game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.ATK, atkValue); expect(atkValue.value / atkStat).toBe(1); // Giving Eviolite to party member and testing if it applies - partyMember.scene.addModifier(modifierTypes.SPECIES_STAT_BOOSTER().generateType([], [ "THICK_CLUB" ])!.newModifier(partyMember), true); - partyMember.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.ATK, atkValue); + game.scene.addModifier(modifierTypes.SPECIES_STAT_BOOSTER().generateType([], [ "THICK_CLUB" ])!.newModifier(partyMember), true); + game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.ATK, atkValue); expect(atkValue.value / atkStat).toBe(2); }, 20000); @@ -214,13 +214,13 @@ describe("Items - Thick Club", () => { // Making sure modifier is not applied without holding item const atkValue = new Utils.NumberHolder(atkStat); - partyMember.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.ATK, atkValue); + game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.ATK, atkValue); expect(atkValue.value / atkStat).toBe(1); // Giving Eviolite to party member and testing if it applies - partyMember.scene.addModifier(modifierTypes.SPECIES_STAT_BOOSTER().generateType([], [ "THICK_CLUB" ])!.newModifier(partyMember), true); - partyMember.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.ATK, atkValue); + game.scene.addModifier(modifierTypes.SPECIES_STAT_BOOSTER().generateType([], [ "THICK_CLUB" ])!.newModifier(partyMember), true); + game.scene.applyModifiers(SpeciesStatBoosterModifier, true, partyMember, Stat.ATK, atkValue); expect(atkValue.value / atkStat).toBe(1); }, 20000); diff --git a/src/test/moves/aurora_veil.test.ts b/src/test/moves/aurora_veil.test.ts index 2d7484b4eb5..721f682f778 100644 --- a/src/test/moves/aurora_veil.test.ts +++ b/src/test/moves/aurora_veil.test.ts @@ -1,7 +1,9 @@ +import type BattleScene from "#app/battle-scene"; import { ArenaTagSide } from "#app/data/arena-tag"; -import Move, { allMoves } from "#app/data/move"; +import type Move from "#app/data/move"; +import { allMoves } from "#app/data/move"; import { ArenaTagType } from "#app/enums/arena-tag-type"; -import Pokemon from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; import { NumberHolder } from "#app/utils"; import { Abilities } from "#enums/abilities"; @@ -12,6 +14,7 @@ import GameManager from "#test/utils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; +let globalScene: BattleScene; describe("Moves - Aurora Veil", () => { let phaserGame: Phaser.Game; @@ -31,6 +34,7 @@ describe("Moves - Aurora Veil", () => { beforeEach(() => { game = new GameManager(phaserGame); + globalScene = game.scene; game.override.battleType("single"); game.override.ability(Abilities.NONE); game.override.moveset([ Moves.ABSORB, Moves.ROCK_SLIDE, Moves.TACKLE ]); @@ -110,8 +114,8 @@ const getMockedMoveDamage = (defender: Pokemon, attacker: Pokemon, move: Move) = const multiplierHolder = new NumberHolder(1); const side = defender.isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY; - if (defender.scene.arena.getTagOnSide(ArenaTagType.AURORA_VEIL, side)) { - defender.scene.arena.applyTagsForSide(ArenaTagType.AURORA_VEIL, side, false, attacker, move.category, multiplierHolder); + if (globalScene.arena.getTagOnSide(ArenaTagType.AURORA_VEIL, side)) { + globalScene.arena.applyTagsForSide(ArenaTagType.AURORA_VEIL, side, false, attacker, move.category, multiplierHolder); } return move.power * multiplierHolder.value; diff --git a/src/test/moves/burning_jealousy.test.ts b/src/test/moves/burning_jealousy.test.ts index fe2735cfa96..abe2c09bb72 100644 --- a/src/test/moves/burning_jealousy.test.ts +++ b/src/test/moves/burning_jealousy.test.ts @@ -82,7 +82,8 @@ describe("Moves - Burning Jealousy", () => { expect(enemy.status?.effect).toBeUndefined(); }); - it.skip("should ignore weakness policy", async () => { // TODO: Make this test if WP is implemented + // TODO: Make this test if WP is implemented + it.todo("should ignore weakness policy", async () => { await game.classicMode.startBattle(); }); diff --git a/src/test/moves/destiny_bond.test.ts b/src/test/moves/destiny_bond.test.ts index 4b4c8782862..e668aee2191 100644 --- a/src/test/moves/destiny_bond.test.ts +++ b/src/test/moves/destiny_bond.test.ts @@ -1,4 +1,5 @@ -import { ArenaTagSide, ArenaTrapTag } from "#app/data/arena-tag"; +import type { ArenaTrapTag } from "#app/data/arena-tag"; +import { ArenaTagSide } from "#app/data/arena-tag"; import { allMoves } from "#app/data/move"; import { Abilities } from "#enums/abilities"; import { ArenaTagType } from "#enums/arena-tag-type"; diff --git a/src/test/moves/dragon_rage.test.ts b/src/test/moves/dragon_rage.test.ts index d5536ff9d2f..a2350960546 100644 --- a/src/test/moves/dragon_rage.test.ts +++ b/src/test/moves/dragon_rage.test.ts @@ -1,7 +1,7 @@ import { Stat } from "#enums/stat"; import { Type } from "#enums/type"; import { Species } from "#app/enums/species"; -import { EnemyPokemon, PlayerPokemon } from "#app/field/pokemon"; +import type { EnemyPokemon, PlayerPokemon } from "#app/field/pokemon"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; import { Abilities } from "#enums/abilities"; import { BattlerTagType } from "#enums/battler-tag-type"; diff --git a/src/test/moves/dynamax_cannon.test.ts b/src/test/moves/dynamax_cannon.test.ts index 269374f7514..033d8960bad 100644 --- a/src/test/moves/dynamax_cannon.test.ts +++ b/src/test/moves/dynamax_cannon.test.ts @@ -81,7 +81,7 @@ describe("Moves - Dynamax Cannon", () => { const phase = game.scene.getCurrentPhase() as MoveEffectPhase; expect(phase.move.moveId).toBe(dynamaxCannon.id); // Force level cap to be 100 - vi.spyOn(phase.getFirstTarget()!.scene, "getMaxExpLevel").mockReturnValue(100); + vi.spyOn(game.scene, "getMaxExpLevel").mockReturnValue(100); await game.phaseInterceptor.to(DamageAnimPhase, false); expect(dynamaxCannon.calculateBattlePower).toHaveLastReturnedWith(120); }, 20000); @@ -98,7 +98,7 @@ describe("Moves - Dynamax Cannon", () => { const phase = game.scene.getCurrentPhase() as MoveEffectPhase; expect(phase.move.moveId).toBe(dynamaxCannon.id); // Force level cap to be 100 - vi.spyOn(phase.getFirstTarget()!.scene, "getMaxExpLevel").mockReturnValue(100); + vi.spyOn(game.scene, "getMaxExpLevel").mockReturnValue(100); await game.phaseInterceptor.to(DamageAnimPhase, false); expect(dynamaxCannon.calculateBattlePower).toHaveLastReturnedWith(140); }, 20000); @@ -115,7 +115,7 @@ describe("Moves - Dynamax Cannon", () => { const phase = game.scene.getCurrentPhase() as MoveEffectPhase; expect(phase.move.moveId).toBe(dynamaxCannon.id); // Force level cap to be 100 - vi.spyOn(phase.getFirstTarget()!.scene, "getMaxExpLevel").mockReturnValue(100); + vi.spyOn(game.scene, "getMaxExpLevel").mockReturnValue(100); await game.phaseInterceptor.to(DamageAnimPhase, false); expect(dynamaxCannon.calculateBattlePower).toHaveLastReturnedWith(160); }, 20000); @@ -132,7 +132,7 @@ describe("Moves - Dynamax Cannon", () => { const phase = game.scene.getCurrentPhase() as MoveEffectPhase; expect(phase.move.moveId).toBe(dynamaxCannon.id); // Force level cap to be 100 - vi.spyOn(phase.getFirstTarget()!.scene, "getMaxExpLevel").mockReturnValue(100); + vi.spyOn(game.scene, "getMaxExpLevel").mockReturnValue(100); await game.phaseInterceptor.to(DamageAnimPhase, false); expect(dynamaxCannon.calculateBattlePower).toHaveLastReturnedWith(180); }, 20000); @@ -149,7 +149,7 @@ describe("Moves - Dynamax Cannon", () => { const phase = game.scene.getCurrentPhase() as MoveEffectPhase; expect(phase.move.moveId).toBe(dynamaxCannon.id); // Force level cap to be 100 - vi.spyOn(phase.getFirstTarget()!.scene, "getMaxExpLevel").mockReturnValue(100); + vi.spyOn(game.scene, "getMaxExpLevel").mockReturnValue(100); await game.phaseInterceptor.to(DamageAnimPhase, false); expect(dynamaxCannon.calculateBattlePower).toHaveLastReturnedWith(200); }, 20000); diff --git a/src/test/moves/effectiveness.test.ts b/src/test/moves/effectiveness.test.ts index 5ad258d7990..7742178f595 100644 --- a/src/test/moves/effectiveness.test.ts +++ b/src/test/moves/effectiveness.test.ts @@ -23,7 +23,7 @@ function testMoveEffectiveness(game: GameManager, move: Moves, targetSpecies: Sp const target = game.scene.addEnemyPokemon(getPokemonSpecies(targetSpecies), 5, TrainerSlot.NONE); if (teraType !== undefined) { - overrideHeldItems(game.scene, target, false); + overrideHeldItems(target, false); } expect(target.getMoveEffectiveness(user, allMoves[move])).toBe(expected); diff --git a/src/test/moves/fissure.test.ts b/src/test/moves/fissure.test.ts index 15dabb971cc..0975a87b2b1 100644 --- a/src/test/moves/fissure.test.ts +++ b/src/test/moves/fissure.test.ts @@ -1,6 +1,6 @@ import { Stat } from "#enums/stat"; import { Species } from "#app/enums/species"; -import { EnemyPokemon, PlayerPokemon } from "#app/field/pokemon"; +import type { EnemyPokemon, PlayerPokemon } from "#app/field/pokemon"; import { DamageAnimPhase } from "#app/phases/damage-anim-phase"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; import { Abilities } from "#enums/abilities"; diff --git a/src/test/moves/flame_burst.test.ts b/src/test/moves/flame_burst.test.ts index feedee3b7bc..9dea930d7e8 100644 --- a/src/test/moves/flame_burst.test.ts +++ b/src/test/moves/flame_burst.test.ts @@ -1,6 +1,6 @@ import { allAbilities } from "#app/data/ability"; import { Abilities } from "#app/enums/abilities"; -import Pokemon from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; diff --git a/src/test/moves/geomancy.test.ts b/src/test/moves/geomancy.test.ts index 6e2f40b9144..9ff3a1e7a7d 100644 --- a/src/test/moves/geomancy.test.ts +++ b/src/test/moves/geomancy.test.ts @@ -1,4 +1,5 @@ -import { EffectiveStat, Stat } from "#enums/stat"; +import type { EffectiveStat } from "#enums/stat"; +import { Stat } from "#enums/stat"; import { MoveResult } from "#app/field/pokemon"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; diff --git a/src/test/moves/light_screen.test.ts b/src/test/moves/light_screen.test.ts index af14d9273e6..424f43e155c 100644 --- a/src/test/moves/light_screen.test.ts +++ b/src/test/moves/light_screen.test.ts @@ -1,8 +1,10 @@ +import type BattleScene from "#app/battle-scene"; import { ArenaTagSide } from "#app/data/arena-tag"; -import Move, { allMoves } from "#app/data/move"; +import type Move from "#app/data/move"; +import { allMoves } from "#app/data/move"; import { Abilities } from "#app/enums/abilities"; import { ArenaTagType } from "#app/enums/arena-tag-type"; -import Pokemon from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; import { NumberHolder } from "#app/utils"; import { Moves } from "#enums/moves"; @@ -11,6 +13,7 @@ import GameManager from "#test/utils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; +let globalScene: BattleScene; describe("Moves - Light Screen", () => { let phaserGame: Phaser.Game; @@ -30,6 +33,7 @@ describe("Moves - Light Screen", () => { beforeEach(() => { game = new GameManager(phaserGame); + globalScene = game.scene; game.override.battleType("single"); game.override.ability(Abilities.NONE); game.override.moveset([ Moves.ABSORB, Moves.DAZZLING_GLEAM, Moves.TACKLE ]); @@ -93,8 +97,8 @@ const getMockedMoveDamage = (defender: Pokemon, attacker: Pokemon, move: Move) = const multiplierHolder = new NumberHolder(1); const side = defender.isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY; - if (defender.scene.arena.getTagOnSide(ArenaTagType.LIGHT_SCREEN, side)) { - defender.scene.arena.applyTagsForSide(ArenaTagType.LIGHT_SCREEN, side, false, attacker, move.category, multiplierHolder); + if (globalScene.arena.getTagOnSide(ArenaTagType.LIGHT_SCREEN, side)) { + globalScene.arena.applyTagsForSide(ArenaTagType.LIGHT_SCREEN, side, false, attacker, move.category, multiplierHolder); } return move.power * multiplierHolder.value; diff --git a/src/test/moves/order_up.test.ts b/src/test/moves/order_up.test.ts index d0b52dc1a9d..a9281b121b2 100644 --- a/src/test/moves/order_up.test.ts +++ b/src/test/moves/order_up.test.ts @@ -1,7 +1,8 @@ import { BattlerIndex } from "#app/battle"; import { BattlerTagType } from "#enums/battler-tag-type"; import { PokemonAnimType } from "#enums/pokemon-anim-type"; -import { EffectiveStat, Stat } from "#enums/stat"; +import type { EffectiveStat } from "#enums/stat"; +import { Stat } from "#enums/stat"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; diff --git a/src/test/moves/parting_shot.test.ts b/src/test/moves/parting_shot.test.ts index cfdf6c15966..30ad3660a32 100644 --- a/src/test/moves/parting_shot.test.ts +++ b/src/test/moves/parting_shot.test.ts @@ -75,7 +75,7 @@ describe("Moves - Parting Shot", () => { } ); - it.skip( // TODO: fix this bug to pass the test! + it.todo( // TODO: fix this bug to pass the test! "Parting shot should fail if target is -6/-6 de-buffed", async () => { game.override.moveset([ Moves.PARTING_SHOT, Moves.MEMENTO, Moves.SPLASH ]); @@ -117,7 +117,7 @@ describe("Moves - Parting Shot", () => { } ); - it.skip( // TODO: fix this bug to pass the test! + it.todo( // TODO: fix this bug to pass the test! "Parting shot shouldn't allow switch out when mist is active", async () => { game.override @@ -138,7 +138,7 @@ describe("Moves - Parting Shot", () => { } ); - it.skip( // TODO: fix this bug to pass the test! + it.todo( // TODO: fix this bug to pass the test! "Parting shot shouldn't allow switch out against clear body ability", async () => { game.override @@ -158,7 +158,7 @@ describe("Moves - Parting Shot", () => { } ); - it.skip( // TODO: fix this bug to pass the test! + it.todo( // TODO: fix this bug to pass the test! "Parting shot should de-buff and not fail if no party available to switch - party size 1", async () => { await game.startBattle([ Species.MURKROW ]); @@ -175,7 +175,7 @@ describe("Moves - Parting Shot", () => { } ); - it.skip( // TODO: fix this bug to pass the test! + it.todo( // TODO: fix this bug to pass the test! "Parting shot regularly not fail if no party available to switch - party fainted", async () => { await game.startBattle([ Species.MURKROW, Species.MEOWTH ]); diff --git a/src/test/moves/purify.test.ts b/src/test/moves/purify.test.ts index 171f94a611a..d72b4a87d2a 100644 --- a/src/test/moves/purify.test.ts +++ b/src/test/moves/purify.test.ts @@ -1,6 +1,6 @@ import { BattlerIndex } from "#app/battle"; import { Status } from "#app/data/status-effect"; -import { EnemyPokemon, PlayerPokemon } from "#app/field/pokemon"; +import type { EnemyPokemon, PlayerPokemon } from "#app/field/pokemon"; import { MoveEndPhase } from "#app/phases/move-end-phase"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; diff --git a/src/test/moves/reflect.test.ts b/src/test/moves/reflect.test.ts index 3bf415ea75c..aa9f2095c89 100644 --- a/src/test/moves/reflect.test.ts +++ b/src/test/moves/reflect.test.ts @@ -1,8 +1,10 @@ +import type BattleScene from "#app/battle-scene"; import { ArenaTagSide } from "#app/data/arena-tag"; -import Move, { allMoves } from "#app/data/move"; +import type Move from "#app/data/move"; +import { allMoves } from "#app/data/move"; import { Abilities } from "#app/enums/abilities"; import { ArenaTagType } from "#app/enums/arena-tag-type"; -import Pokemon from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; import { NumberHolder } from "#app/utils"; import { Moves } from "#enums/moves"; @@ -11,6 +13,7 @@ import GameManager from "#test/utils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; +let globalScene: BattleScene; describe("Moves - Reflect", () => { let phaserGame: Phaser.Game; @@ -30,6 +33,7 @@ describe("Moves - Reflect", () => { beforeEach(() => { game = new GameManager(phaserGame); + globalScene = game.scene; game.override.battleType("single"); game.override.ability(Abilities.NONE); game.override.moveset([ Moves.ABSORB, Moves.ROCK_SLIDE, Moves.TACKLE ]); @@ -93,8 +97,8 @@ const getMockedMoveDamage = (defender: Pokemon, attacker: Pokemon, move: Move) = const multiplierHolder = new NumberHolder(1); const side = defender.isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY; - if (defender.scene.arena.getTagOnSide(ArenaTagType.REFLECT, side)) { - defender.scene.arena.applyTagsForSide(ArenaTagType.REFLECT, side, false, attacker, move.category, multiplierHolder); + if (globalScene.arena.getTagOnSide(ArenaTagType.REFLECT, side)) { + globalScene.arena.applyTagsForSide(ArenaTagType.REFLECT, side, false, attacker, move.category, multiplierHolder); } return move.power * multiplierHolder.value; diff --git a/src/test/moves/round.test.ts b/src/test/moves/round.test.ts index fd318d30c1e..1d7c91bcbd4 100644 --- a/src/test/moves/round.test.ts +++ b/src/test/moves/round.test.ts @@ -1,6 +1,6 @@ import { BattlerIndex } from "#app/battle"; import { allMoves } from "#app/data/move"; -import { MoveEffectPhase } from "#app/phases/move-effect-phase"; +import type { MoveEffectPhase } from "#app/phases/move-effect-phase"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; diff --git a/src/test/moves/spit_up.test.ts b/src/test/moves/spit_up.test.ts index 8e418858e8d..fd21bb3c6c1 100644 --- a/src/test/moves/spit_up.test.ts +++ b/src/test/moves/spit_up.test.ts @@ -2,7 +2,8 @@ import { Stat } from "#enums/stat"; import { StockpilingTag } from "#app/data/battler-tags"; import { allMoves } from "#app/data/move"; import { BattlerTagType } from "#app/enums/battler-tag-type"; -import { MoveResult, TurnMove } from "#app/field/pokemon"; +import type { TurnMove } from "#app/field/pokemon"; +import { MoveResult } from "#app/field/pokemon"; import GameManager from "#test/utils/gameManager"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; diff --git a/src/test/moves/steamroller.test.ts b/src/test/moves/steamroller.test.ts index 9d16643ec5d..f641c58c2d1 100644 --- a/src/test/moves/steamroller.test.ts +++ b/src/test/moves/steamroller.test.ts @@ -1,7 +1,7 @@ import { BattlerIndex } from "#app/battle"; import { allMoves } from "#app/data/move"; import { BattlerTagType } from "#app/enums/battler-tag-type"; -import { DamageCalculationResult } from "#app/field/pokemon"; +import type { DamageCalculationResult } from "#app/field/pokemon"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; diff --git a/src/test/moves/stockpile.test.ts b/src/test/moves/stockpile.test.ts index d3239856ed7..e50fe041b0a 100644 --- a/src/test/moves/stockpile.test.ts +++ b/src/test/moves/stockpile.test.ts @@ -1,6 +1,7 @@ import { Stat } from "#enums/stat"; import { StockpilingTag } from "#app/data/battler-tags"; -import { MoveResult, TurnMove } from "#app/field/pokemon"; +import type { TurnMove } from "#app/field/pokemon"; +import { MoveResult } from "#app/field/pokemon"; import { CommandPhase } from "#app/phases/command-phase"; import { TurnInitPhase } from "#app/phases/turn-init-phase"; import { Abilities } from "#enums/abilities"; diff --git a/src/test/moves/substitute.test.ts b/src/test/moves/substitute.test.ts index 14ab4ab5054..18b0c6ea536 100644 --- a/src/test/moves/substitute.test.ts +++ b/src/test/moves/substitute.test.ts @@ -3,7 +3,7 @@ import { ArenaTagSide } from "#app/data/arena-tag"; import { SubstituteTag, TrappedTag } from "#app/data/battler-tags"; import { allMoves, StealHeldItemChanceAttr } from "#app/data/move"; import { MoveResult } from "#app/field/pokemon"; -import { CommandPhase } from "#app/phases/command-phase"; +import type { CommandPhase } from "#app/phases/command-phase"; import GameManager from "#app/test/utils/gameManager"; import { Command } from "#app/ui/command-ui-handler"; import { Mode } from "#app/ui/ui"; diff --git a/src/test/moves/swallow.test.ts b/src/test/moves/swallow.test.ts index 2aee4d2604a..c154d3c7c2c 100644 --- a/src/test/moves/swallow.test.ts +++ b/src/test/moves/swallow.test.ts @@ -1,7 +1,8 @@ import { Stat } from "#enums/stat"; import { StockpilingTag } from "#app/data/battler-tags"; import { BattlerTagType } from "#app/enums/battler-tag-type"; -import { MoveResult, TurnMove } from "#app/field/pokemon"; +import type { TurnMove } from "#app/field/pokemon"; +import { MoveResult } from "#app/field/pokemon"; import { MovePhase } from "#app/phases/move-phase"; import { TurnInitPhase } from "#app/phases/turn-init-phase"; import { Abilities } from "#enums/abilities"; diff --git a/src/test/moves/tera_blast.test.ts b/src/test/moves/tera_blast.test.ts index 311ac0f0d0e..44dc29f68b5 100644 --- a/src/test/moves/tera_blast.test.ts +++ b/src/test/moves/tera_blast.test.ts @@ -87,7 +87,7 @@ describe("Moves - Tera Blast", () => { }); // Currently abilities are bugged and can't see when a move's category is changed - it.skip("uses the higher stat of the user's Atk and SpAtk for damage calculation", async () => { + it.todo("uses the higher stat of the user's Atk and SpAtk for damage calculation", async () => { game.override.enemyAbility(Abilities.TOXIC_DEBRIS); await game.startBattle(); diff --git a/src/test/moves/thunder_wave.test.ts b/src/test/moves/thunder_wave.test.ts index 5551451e59b..21e215a51f2 100644 --- a/src/test/moves/thunder_wave.test.ts +++ b/src/test/moves/thunder_wave.test.ts @@ -1,4 +1,4 @@ -import { EnemyPokemon } from "#app/field/pokemon"; +import type { EnemyPokemon } from "#app/field/pokemon"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; diff --git a/src/test/moves/toxic_spikes.test.ts b/src/test/moves/toxic_spikes.test.ts index bdd59ed0ac8..c2d1c5aaee8 100644 --- a/src/test/moves/toxic_spikes.test.ts +++ b/src/test/moves/toxic_spikes.test.ts @@ -1,5 +1,7 @@ -import { ArenaTagSide, ArenaTrapTag } from "#app/data/arena-tag"; -import { decrypt, encrypt, GameData, SessionSaveData } from "#app/system/game-data"; +import type { ArenaTrapTag } from "#app/data/arena-tag"; +import { ArenaTagSide } from "#app/data/arena-tag"; +import type { SessionSaveData } from "#app/system/game-data"; +import { decrypt, encrypt, GameData } from "#app/system/game-data"; import { Abilities } from "#enums/abilities"; import { ArenaTagType } from "#enums/arena-tag-type"; import { Moves } from "#enums/moves"; @@ -116,8 +118,7 @@ describe("Moves - Toxic Spikes", () => { it("should persist through reload", async () => { game.override.startingWave(1); - const scene = game.scene; - const gameData = new GameData(scene); + const gameData = new GameData(); await game.classicMode.runToSummon([ Species.MIGHTYENA ]); @@ -128,10 +129,10 @@ describe("Moves - Toxic Spikes", () => { await game.phaseInterceptor.to("BattleEndPhase"); await game.toNextWave(); - const sessionData : SessionSaveData = gameData["getSessionSaveData"](game.scene); + const sessionData : SessionSaveData = gameData["getSessionSaveData"](); localStorage.setItem("sessionTestData", encrypt(JSON.stringify(sessionData), true)); const recoveredData : SessionSaveData = gameData.parseSessionData(decrypt(localStorage.getItem("sessionTestData")!, true)); - gameData.loadSession(game.scene, 0, recoveredData); + gameData.loadSession(0, recoveredData); expect(sessionData.arena.tags).toEqual(recoveredData.arena.tags); localStorage.removeItem("sessionTestData"); diff --git a/src/test/mystery-encounter/encounter-test-utils.ts b/src/test/mystery-encounter/encounter-test-utils.ts index ee67f1b5d39..69fa9b5465f 100644 --- a/src/test/mystery-encounter/encounter-test-utils.ts +++ b/src/test/mystery-encounter/encounter-test-utils.ts @@ -4,15 +4,15 @@ import { CommandPhase } from "#app/phases/command-phase"; import { MessagePhase } from "#app/phases/message-phase"; import { MysteryEncounterBattlePhase, MysteryEncounterOptionSelectedPhase, MysteryEncounterPhase, MysteryEncounterRewardsPhase } from "#app/phases/mystery-encounter-phases"; import { VictoryPhase } from "#app/phases/victory-phase"; -import MessageUiHandler from "#app/ui/message-ui-handler"; -import MysteryEncounterUiHandler from "#app/ui/mystery-encounter-ui-handler"; -import PartyUiHandler from "#app/ui/party-ui-handler"; -import OptionSelectUiHandler from "#app/ui/settings/option-select-ui-handler"; +import type MessageUiHandler from "#app/ui/message-ui-handler"; +import type MysteryEncounterUiHandler from "#app/ui/mystery-encounter-ui-handler"; +import type PartyUiHandler from "#app/ui/party-ui-handler"; +import type OptionSelectUiHandler from "#app/ui/settings/option-select-ui-handler"; import { Mode } from "#app/ui/ui"; import { isNullOrUndefined } from "#app/utils"; import { Button } from "#enums/buttons"; import { StatusEffect } from "#enums/status-effect"; -import GameManager from "#test/utils/gameManager"; +import type GameManager from "#test/utils/gameManager"; import { expect, vi } from "vitest"; /** @@ -52,7 +52,7 @@ export async function runMysteryEncounterToEnd(game: GameManager, optionNo: numb game.onNextPrompt("CommandPhase", Mode.COMMAND, () => { game.scene.clearPhaseQueue(); game.scene.clearPhaseQueueSplice(); - game.scene.unshiftPhase(new VictoryPhase(game.scene, 0)); + game.scene.unshiftPhase(new VictoryPhase(0)); game.endPhase(); }); @@ -170,7 +170,7 @@ export async function skipBattleRunMysteryEncounterRewardsPhase(game: GameManage p.status = new Status(StatusEffect.FAINT); game.scene.field.remove(p); }); - game.scene.pushPhase(new VictoryPhase(game.scene, 0)); + game.scene.pushPhase(new VictoryPhase(0)); game.phaseInterceptor.superEndPhase(); game.setMode(Mode.MESSAGE); await game.phaseInterceptor.to(MysteryEncounterRewardsPhase, runRewardsPhase); diff --git a/src/test/mystery-encounter/encounters/a-trainers-test-encounter.test.ts b/src/test/mystery-encounter/encounters/a-trainers-test-encounter.test.ts index 7d783958422..5a01b8a7379 100644 --- a/src/test/mystery-encounter/encounters/a-trainers-test-encounter.test.ts +++ b/src/test/mystery-encounter/encounters/a-trainers-test-encounter.test.ts @@ -7,7 +7,7 @@ import GameManager from "#app/test/utils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { runMysteryEncounterToEnd, skipBattleRunMysteryEncounterRewardsPhase } from "#test/mystery-encounter/encounter-test-utils"; -import BattleScene from "#app/battle-scene"; +import type BattleScene from "#app/battle-scene"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { initSceneWithoutEncounterPhase } from "#test/utils/gameManagerUtils"; @@ -78,8 +78,8 @@ describe("A Trainer's Test - Mystery Encounter", () => { expect(ATrainersTestEncounter.onInit).toBeDefined(); - ATrainersTestEncounter.populateDialogueTokensFromRequirements(scene); - const onInitResult = onInit!(scene); + ATrainersTestEncounter.populateDialogueTokensFromRequirements(); + const onInitResult = onInit!(); expect(ATrainersTestEncounter.dialogueTokens?.statTrainerName).toBeDefined(); expect(ATrainersTestEncounter.misc.trainerType).toBeDefined(); diff --git a/src/test/mystery-encounter/encounters/absolute-avarice-encounter.test.ts b/src/test/mystery-encounter/encounters/absolute-avarice-encounter.test.ts index 61d8aaa9f5a..797c062dafe 100644 --- a/src/test/mystery-encounter/encounters/absolute-avarice-encounter.test.ts +++ b/src/test/mystery-encounter/encounters/absolute-avarice-encounter.test.ts @@ -5,7 +5,7 @@ import GameManager from "#app/test/utils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { runMysteryEncounterToEnd, skipBattleRunMysteryEncounterRewardsPhase } from "#test/mystery-encounter/encounter-test-utils"; -import BattleScene from "#app/battle-scene"; +import type BattleScene from "#app/battle-scene"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; diff --git a/src/test/mystery-encounter/encounters/an-offer-you-cant-refuse-encounter.test.ts b/src/test/mystery-encounter/encounters/an-offer-you-cant-refuse-encounter.test.ts index 727a3993d9b..9a6dae53901 100644 --- a/src/test/mystery-encounter/encounters/an-offer-you-cant-refuse-encounter.test.ts +++ b/src/test/mystery-encounter/encounters/an-offer-you-cant-refuse-encounter.test.ts @@ -7,7 +7,7 @@ import GameManager from "#app/test/utils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { runMysteryEncounterToEnd } from "#test/mystery-encounter/encounter-test-utils"; -import BattleScene from "#app/battle-scene"; +import type BattleScene from "#app/battle-scene"; import { PlayerPokemon, PokemonMove } from "#app/field/pokemon"; import { AnOfferYouCantRefuseEncounter } from "#app/data/mystery-encounters/encounters/an-offer-you-cant-refuse-encounter"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; @@ -91,8 +91,8 @@ describe("An Offer You Can't Refuse - Mystery Encounter", () => { expect(AnOfferYouCantRefuseEncounter.onInit).toBeDefined(); - AnOfferYouCantRefuseEncounter.populateDialogueTokensFromRequirements(scene); - const onInitResult = onInit!(scene); + AnOfferYouCantRefuseEncounter.populateDialogueTokensFromRequirements(); + const onInitResult = onInit!(); expect(AnOfferYouCantRefuseEncounter.dialogueTokens?.strongestPokemon).toBeDefined(); expect(AnOfferYouCantRefuseEncounter.dialogueTokens?.price).toBeDefined(); @@ -130,7 +130,7 @@ describe("An Offer You Can't Refuse - Mystery Encounter", () => { const price = scene.currentBattle.mysteryEncounter!.misc.price; - expect(updateMoneySpy).toHaveBeenCalledWith(scene, price); + expect(updateMoneySpy).toHaveBeenCalledWith(price); expect(scene.money).toBe(initialMoney + price); }); @@ -220,7 +220,7 @@ describe("An Offer You Can't Refuse - Mystery Encounter", () => { const price = scene.currentBattle.mysteryEncounter!.misc.price; - expect(updateMoneySpy).toHaveBeenCalledWith(scene, price); + expect(updateMoneySpy).toHaveBeenCalledWith(price); expect(scene.money).toBe(initialMoney + price); }); diff --git a/src/test/mystery-encounter/encounters/berries-abound-encounter.test.ts b/src/test/mystery-encounter/encounters/berries-abound-encounter.test.ts index 2507b94e5ae..f980b0cb20a 100644 --- a/src/test/mystery-encounter/encounters/berries-abound-encounter.test.ts +++ b/src/test/mystery-encounter/encounters/berries-abound-encounter.test.ts @@ -5,7 +5,7 @@ import { Species } from "#app/enums/species"; import GameManager from "#app/test/utils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { runMysteryEncounterToEnd, skipBattleRunMysteryEncounterRewardsPhase } from "#test/mystery-encounter/encounter-test-utils"; -import BattleScene from "#app/battle-scene"; +import type BattleScene from "#app/battle-scene"; import { Mode } from "#app/ui/ui"; import ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; import { BerryModifier } from "#app/modifier/modifier"; @@ -80,8 +80,8 @@ describe("Berries Abound - Mystery Encounter", () => { expect(BerriesAboundEncounter.onInit).toBeDefined(); - BerriesAboundEncounter.populateDialogueTokensFromRequirements(scene); - const onInitResult = onInit!(scene); + BerriesAboundEncounter.populateDialogueTokensFromRequirements(); + const onInitResult = onInit!(); const config = BerriesAboundEncounter.enemyPartyConfigs[0]; expect(config).toBeDefined(); @@ -192,7 +192,7 @@ describe("Berries Abound - Mystery Encounter", () => { // Should be enraged expect(enemyField[0].summonData.statStages).toEqual([ 0, 1, 0, 1, 1, 0, 0 ]); - expect(encounterTextSpy).toHaveBeenCalledWith(expect.any(BattleScene), `${namespace}:option.2.selected_bad`); + expect(encounterTextSpy).toHaveBeenCalledWith(`${namespace}:option.2.selected_bad`); }); it("should start battle if fastest pokemon is slower than boss above wave 50", async () => { @@ -216,7 +216,7 @@ describe("Berries Abound - Mystery Encounter", () => { // Should be enraged expect(enemyField[0].summonData.statStages).toEqual([ 1, 1, 1, 1, 1, 0, 0 ]); - expect(encounterTextSpy).toHaveBeenCalledWith(expect.any(BattleScene), `${namespace}:option.2.selected_bad`); + expect(encounterTextSpy).toHaveBeenCalledWith(`${namespace}:option.2.selected_bad`); }); it("Should skip battle when fastest pokemon is faster than boss", async () => { @@ -241,7 +241,7 @@ describe("Berries Abound - Mystery Encounter", () => { expect(option.modifierTypeOption.type.id).toContain("BERRY"); } - expect(EncounterDialogueUtils.showEncounterText).toHaveBeenCalledWith(expect.any(BattleScene), `${namespace}:option.2.selected`); + expect(EncounterDialogueUtils.showEncounterText).toHaveBeenCalledWith(`${namespace}:option.2.selected`); expect(EncounterPhaseUtils.leaveEncounterWithoutBattle).toBeCalled(); }); }); diff --git a/src/test/mystery-encounter/encounters/bug-type-superfan-encounter.test.ts b/src/test/mystery-encounter/encounters/bug-type-superfan-encounter.test.ts index e0f37c7e045..1ff523909da 100644 --- a/src/test/mystery-encounter/encounters/bug-type-superfan-encounter.test.ts +++ b/src/test/mystery-encounter/encounters/bug-type-superfan-encounter.test.ts @@ -6,7 +6,7 @@ import GameManager from "#app/test/utils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { runMysteryEncounterToEnd, runSelectMysteryEncounterOption, skipBattleRunMysteryEncounterRewardsPhase } from "#test/mystery-encounter/encounter-test-utils"; import { Moves } from "#enums/moves"; -import BattleScene from "#app/battle-scene"; +import type BattleScene from "#app/battle-scene"; import { PokemonMove } from "#app/field/pokemon"; import { Mode } from "#app/ui/ui"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; @@ -209,8 +209,8 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { expect(BugTypeSuperfanEncounter.onInit).toBeDefined(); - BugTypeSuperfanEncounter.populateDialogueTokensFromRequirements(scene); - const onInitResult = onInit!(scene); + BugTypeSuperfanEncounter.populateDialogueTokensFromRequirements(); + const onInitResult = onInit!(); const config = BugTypeSuperfanEncounter.enemyPartyConfigs[0]; expect(config).toBeDefined(); @@ -384,7 +384,7 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { await game.phaseInterceptor.run(MysteryEncounterRewardsPhase); expect(selectOptionSpy).toHaveBeenCalledTimes(1); - const optionData = selectOptionSpy.mock.calls[0][1]; + const optionData = selectOptionSpy.mock.calls[0][0]; expect(PHYSICAL_TUTOR_MOVES.some(move => new PokemonMove(move).getName() === optionData[0].label)).toBe(true); expect(SPECIAL_TUTOR_MOVES.some(move => new PokemonMove(move).getName() === optionData[1].label)).toBe(true); expect(STATUS_TUTOR_MOVES.some(move => new PokemonMove(move).getName() === optionData[2].label)).toBe(true); diff --git a/src/test/mystery-encounter/encounters/clowning-around-encounter.test.ts b/src/test/mystery-encounter/encounters/clowning-around-encounter.test.ts index e7ea6eea0ea..562b8322baa 100644 --- a/src/test/mystery-encounter/encounters/clowning-around-encounter.test.ts +++ b/src/test/mystery-encounter/encounters/clowning-around-encounter.test.ts @@ -10,8 +10,9 @@ import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encount import { generateModifierType } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { runMysteryEncounterToEnd, skipBattleRunMysteryEncounterRewardsPhase } from "#test/mystery-encounter/encounter-test-utils"; import { Moves } from "#enums/moves"; -import BattleScene from "#app/battle-scene"; -import Pokemon, { PokemonMove } from "#app/field/pokemon"; +import type BattleScene from "#app/battle-scene"; +import type Pokemon from "#app/field/pokemon"; +import { PokemonMove } from "#app/field/pokemon"; import { Mode } from "#app/ui/ui"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; @@ -22,11 +23,12 @@ import { TrainerType } from "#enums/trainer-type"; import { Abilities } from "#enums/abilities"; import { PostMysteryEncounterPhase } from "#app/phases/mystery-encounter-phases"; import { Button } from "#enums/buttons"; -import PartyUiHandler from "#app/ui/party-ui-handler"; -import OptionSelectUiHandler from "#app/ui/settings/option-select-ui-handler"; -import { modifierTypes, PokemonHeldItemModifierType } from "#app/modifier/modifier-type"; +import type PartyUiHandler from "#app/ui/party-ui-handler"; +import type OptionSelectUiHandler from "#app/ui/settings/option-select-ui-handler"; +import type { PokemonHeldItemModifierType } from "#app/modifier/modifier-type"; +import { modifierTypes } from "#app/modifier/modifier-type"; import { BerryType } from "#enums/berry-type"; -import { PokemonHeldItemModifier } from "#app/modifier/modifier"; +import type { PokemonHeldItemModifier } from "#app/modifier/modifier"; import { Type } from "#enums/type"; import { CommandPhase } from "#app/phases/command-phase"; import { MovePhase } from "#app/phases/move-phase"; @@ -105,8 +107,8 @@ describe("Clowning Around - Mystery Encounter", () => { expect(ClowningAroundEncounter.onInit).toBeDefined(); - ClowningAroundEncounter.populateDialogueTokensFromRequirements(scene); - const onInitResult = onInit!(scene); + ClowningAroundEncounter.populateDialogueTokensFromRequirements(); + const onInitResult = onInit!(); const config = ClowningAroundEncounter.enemyPartyConfigs[0]; expect(config.doubleBattle).toBe(true); @@ -255,29 +257,29 @@ describe("Clowning Around - Mystery Encounter", () => { // 2 Sitrus Berries on lead scene.modifiers = []; - let itemType = generateModifierType(scene, modifierTypes.BERRY, [ BerryType.SITRUS ]) as PokemonHeldItemModifierType; + let itemType = generateModifierType(modifierTypes.BERRY, [ BerryType.SITRUS ]) as PokemonHeldItemModifierType; await addItemToPokemon(scene, scene.getPlayerParty()[0], 2, itemType); // 2 Ganlon Berries on lead - itemType = generateModifierType(scene, modifierTypes.BERRY, [ BerryType.GANLON ]) as PokemonHeldItemModifierType; + itemType = generateModifierType(modifierTypes.BERRY, [ BerryType.GANLON ]) as PokemonHeldItemModifierType; await addItemToPokemon(scene, scene.getPlayerParty()[0], 2, itemType); // 5 Golden Punch on lead (ultra) - itemType = generateModifierType(scene, modifierTypes.GOLDEN_PUNCH) as PokemonHeldItemModifierType; + itemType = generateModifierType(modifierTypes.GOLDEN_PUNCH) as PokemonHeldItemModifierType; await addItemToPokemon(scene, scene.getPlayerParty()[0], 5, itemType); // 5 Lucky Egg on lead (ultra) - itemType = generateModifierType(scene, modifierTypes.LUCKY_EGG) as PokemonHeldItemModifierType; + itemType = generateModifierType(modifierTypes.LUCKY_EGG) as PokemonHeldItemModifierType; await addItemToPokemon(scene, scene.getPlayerParty()[0], 5, itemType); // 3 Soothe Bell on lead (great tier, but counted as ultra by this ME) - itemType = generateModifierType(scene, modifierTypes.SOOTHE_BELL) as PokemonHeldItemModifierType; + itemType = generateModifierType(modifierTypes.SOOTHE_BELL) as PokemonHeldItemModifierType; await addItemToPokemon(scene, scene.getPlayerParty()[0], 3, itemType); // 5 Soul Dew on lead (rogue) - itemType = generateModifierType(scene, modifierTypes.SOUL_DEW) as PokemonHeldItemModifierType; + itemType = generateModifierType(modifierTypes.SOUL_DEW) as PokemonHeldItemModifierType; await addItemToPokemon(scene, scene.getPlayerParty()[0], 5, itemType); // 2 Golden Egg on lead (rogue) - itemType = generateModifierType(scene, modifierTypes.GOLDEN_EGG) as PokemonHeldItemModifierType; + itemType = generateModifierType(modifierTypes.GOLDEN_EGG) as PokemonHeldItemModifierType; await addItemToPokemon(scene, scene.getPlayerParty()[0], 2, itemType); // 5 Soul Dew on second party pokemon (these should not change) - itemType = generateModifierType(scene, modifierTypes.SOUL_DEW) as PokemonHeldItemModifierType; + itemType = generateModifierType(modifierTypes.SOUL_DEW) as PokemonHeldItemModifierType; await addItemToPokemon(scene, scene.getPlayerParty()[1], 5, itemType); await runMysteryEncounterToEnd(game, 2); diff --git a/src/test/mystery-encounter/encounters/dancing-lessons-encounter.test.ts b/src/test/mystery-encounter/encounters/dancing-lessons-encounter.test.ts index 147930f05d1..795e6b6650b 100644 --- a/src/test/mystery-encounter/encounters/dancing-lessons-encounter.test.ts +++ b/src/test/mystery-encounter/encounters/dancing-lessons-encounter.test.ts @@ -5,7 +5,7 @@ import GameManager from "#app/test/utils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { runMysteryEncounterToEnd, runSelectMysteryEncounterOption, skipBattleRunMysteryEncounterRewardsPhase } from "#test/mystery-encounter/encounter-test-utils"; -import BattleScene from "#app/battle-scene"; +import type BattleScene from "#app/battle-scene"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; diff --git a/src/test/mystery-encounter/encounters/delibirdy-encounter.test.ts b/src/test/mystery-encounter/encounters/delibirdy-encounter.test.ts index c226d60a9b4..f99aa24805e 100644 --- a/src/test/mystery-encounter/encounters/delibirdy-encounter.test.ts +++ b/src/test/mystery-encounter/encounters/delibirdy-encounter.test.ts @@ -5,12 +5,12 @@ import GameManager from "#app/test/utils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { runMysteryEncounterToEnd, runSelectMysteryEncounterOption } from "#test/mystery-encounter/encounter-test-utils"; -import BattleScene from "#app/battle-scene"; +import type BattleScene from "#app/battle-scene"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { DelibirdyEncounter } from "#app/data/mystery-encounters/encounters/delibirdy-encounter"; import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; -import { MoneyRequirement } from "#app/data/mystery-encounters/mystery-encounter-requirements"; +import type { MoneyRequirement } from "#app/data/mystery-encounters/mystery-encounter-requirements"; import { BerryModifier, HealingBoosterModifier, HitHealModifier, LevelIncrementBoosterModifier, MoneyMultiplierModifier, PokemonInstantReviveModifier, PokemonNatureWeightModifier, PreserveBerryModifier } from "#app/modifier/modifier"; import { MysteryEncounterPhase } from "#app/phases/mystery-encounter-phases"; import { generateModifierType } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; @@ -100,7 +100,7 @@ describe("Delibird-y - Mystery Encounter", () => { const price = (scene.currentBattle.mysteryEncounter?.options[0].requirements[0] as MoneyRequirement).requiredMoney; - expect(updateMoneySpy).toHaveBeenCalledWith(scene, -price, true, false); + expect(updateMoneySpy).toHaveBeenCalledWith(-price, true, false); expect(scene.money).toBe(initialMoney - price); }); @@ -121,7 +121,7 @@ describe("Delibird-y - Mystery Encounter", () => { // Max Amulet Coins scene.modifiers = []; - const amuletCoin = generateModifierType(scene, modifierTypes.AMULET_COIN)!.newModifier() as MoneyMultiplierModifier; + const amuletCoin = generateModifierType(modifierTypes.AMULET_COIN)!.newModifier() as MoneyMultiplierModifier; amuletCoin.stackCount = 5; await scene.addModifier(amuletCoin, true, false, false, true); await scene.updateModifiers(true); @@ -190,7 +190,7 @@ describe("Delibird-y - Mystery Encounter", () => { // Set 2 Sitrus berries on party lead scene.modifiers = []; - const sitrus = generateModifierType(scene, modifierTypes.BERRY, [ BerryType.SITRUS ])!; + const sitrus = generateModifierType(modifierTypes.BERRY, [ BerryType.SITRUS ])!; const sitrusMod = sitrus.newModifier(scene.getPlayerParty()[0]) as BerryModifier; sitrusMod.stackCount = 2; await scene.addModifier(sitrusMod, true, false, false, true); @@ -211,7 +211,7 @@ describe("Delibird-y - Mystery Encounter", () => { // Set 1 Reviver Seed on party lead scene.modifiers = []; - const revSeed = generateModifierType(scene, modifierTypes.REVIVER_SEED)!; + const revSeed = generateModifierType(modifierTypes.REVIVER_SEED)!; const modifier = revSeed.newModifier(scene.getPlayerParty()[0]) as PokemonInstantReviveModifier; modifier.stackCount = 1; await scene.addModifier(modifier, true, false, false, true); @@ -232,10 +232,10 @@ describe("Delibird-y - Mystery Encounter", () => { // 99 Candy Jars scene.modifiers = []; - const candyJar = generateModifierType(scene, modifierTypes.CANDY_JAR)!.newModifier() as LevelIncrementBoosterModifier; + const candyJar = generateModifierType(modifierTypes.CANDY_JAR)!.newModifier() as LevelIncrementBoosterModifier; candyJar.stackCount = 99; await scene.addModifier(candyJar, true, false, false, true); - const sitrus = generateModifierType(scene, modifierTypes.BERRY, [ BerryType.SITRUS ])!; + const sitrus = generateModifierType(modifierTypes.BERRY, [ BerryType.SITRUS ])!; // Sitrus berries on party const sitrusMod = sitrus.newModifier(scene.getPlayerParty()[0]) as BerryModifier; @@ -261,12 +261,12 @@ describe("Delibird-y - Mystery Encounter", () => { // 3 Berry Pouches scene.modifiers = []; - const healingCharm = generateModifierType(scene, modifierTypes.BERRY_POUCH)!.newModifier() as PreserveBerryModifier; + const healingCharm = generateModifierType(modifierTypes.BERRY_POUCH)!.newModifier() as PreserveBerryModifier; healingCharm.stackCount = 3; await scene.addModifier(healingCharm, true, false, false, true); // Set 1 Reviver Seed on party lead - const revSeed = generateModifierType(scene, modifierTypes.REVIVER_SEED)!; + const revSeed = generateModifierType(modifierTypes.REVIVER_SEED)!; const modifier = revSeed.newModifier(scene.getPlayerParty()[0]) as PokemonInstantReviveModifier; modifier.stackCount = 1; await scene.addModifier(modifier, true, false, false, true); @@ -290,7 +290,7 @@ describe("Delibird-y - Mystery Encounter", () => { // Set 1 Soul Dew on party lead scene.modifiers = []; - const soulDew = generateModifierType(scene, modifierTypes.SOUL_DEW)!; + const soulDew = generateModifierType(modifierTypes.SOUL_DEW)!; const modifier = soulDew.newModifier(scene.getPlayerParty()[0]); await scene.addModifier(modifier, true, false, false, true); await scene.updateModifiers(true); @@ -318,7 +318,7 @@ describe("Delibird-y - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.DELIBIRDY, defaultParty); // Set 1 Reviver Seed on party lead - const revSeed = generateModifierType(scene, modifierTypes.REVIVER_SEED)!; + const revSeed = generateModifierType(modifierTypes.REVIVER_SEED)!; const modifier = revSeed.newModifier(scene.getPlayerParty()[0]) as PokemonInstantReviveModifier; modifier.stackCount = 1; await scene.addModifier(modifier, true, false, false, true); @@ -352,7 +352,7 @@ describe("Delibird-y - Mystery Encounter", () => { // Set 2 Soul Dew on party lead scene.modifiers = []; - const soulDew = generateModifierType(scene, modifierTypes.SOUL_DEW)!; + const soulDew = generateModifierType(modifierTypes.SOUL_DEW)!; const modifier = soulDew.newModifier(scene.getPlayerParty()[0]) as PokemonNatureWeightModifier; modifier.stackCount = 2; await scene.addModifier(modifier, true, false, false, true); @@ -373,7 +373,7 @@ describe("Delibird-y - Mystery Encounter", () => { // Set 1 Soul Dew on party lead scene.modifiers = []; - const soulDew = generateModifierType(scene, modifierTypes.SOUL_DEW)!; + const soulDew = generateModifierType(modifierTypes.SOUL_DEW)!; const modifier = soulDew.newModifier(scene.getPlayerParty()[0]) as PokemonNatureWeightModifier; modifier.stackCount = 1; await scene.addModifier(modifier, true, false, false, true); @@ -394,12 +394,12 @@ describe("Delibird-y - Mystery Encounter", () => { // 5 Healing Charms scene.modifiers = []; - const healingCharm = generateModifierType(scene, modifierTypes.HEALING_CHARM)!.newModifier() as HealingBoosterModifier; + const healingCharm = generateModifierType(modifierTypes.HEALING_CHARM)!.newModifier() as HealingBoosterModifier; healingCharm.stackCount = 5; await scene.addModifier(healingCharm, true, false, false, true); // Set 1 Soul Dew on party lead - const soulDew = generateModifierType(scene, modifierTypes.SOUL_DEW)!; + const soulDew = generateModifierType(modifierTypes.SOUL_DEW)!; const modifier = soulDew.newModifier(scene.getPlayerParty()[0]) as PokemonNatureWeightModifier; modifier.stackCount = 1; await scene.addModifier(modifier, true, false, false, true); @@ -423,7 +423,7 @@ describe("Delibird-y - Mystery Encounter", () => { // Set 1 Reviver Seed on party lead scene.modifiers = []; - const revSeed = generateModifierType(scene, modifierTypes.REVIVER_SEED)!; + const revSeed = generateModifierType(modifierTypes.REVIVER_SEED)!; const modifier = revSeed.newModifier(scene.getPlayerParty()[0]); await scene.addModifier(modifier, true, false, false, true); await scene.updateModifiers(true); @@ -452,7 +452,7 @@ describe("Delibird-y - Mystery Encounter", () => { // Set 1 Soul Dew on party lead scene.modifiers = []; - const soulDew = generateModifierType(scene, modifierTypes.SOUL_DEW)!; + const soulDew = generateModifierType(modifierTypes.SOUL_DEW)!; const modifier = soulDew.newModifier(scene.getPlayerParty()[0]) as PokemonNatureWeightModifier; modifier.stackCount = 1; await scene.addModifier(modifier, true, false, false, true); diff --git a/src/test/mystery-encounter/encounters/department-store-sale-encounter.test.ts b/src/test/mystery-encounter/encounters/department-store-sale-encounter.test.ts index 1869a4d3c3c..e30aaadbf85 100644 --- a/src/test/mystery-encounter/encounters/department-store-sale-encounter.test.ts +++ b/src/test/mystery-encounter/encounters/department-store-sale-encounter.test.ts @@ -6,7 +6,7 @@ import GameManager from "#app/test/utils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { runMysteryEncounterToEnd } from "#test/mystery-encounter/encounter-test-utils"; -import BattleScene from "#app/battle-scene"; +import type BattleScene from "#app/battle-scene"; import { Mode } from "#app/ui/ui"; import ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; import { DepartmentStoreSaleEncounter } from "#app/data/mystery-encounters/encounters/department-store-sale-encounter"; diff --git a/src/test/mystery-encounter/encounters/field-trip-encounter.test.ts b/src/test/mystery-encounter/encounters/field-trip-encounter.test.ts index a6f925274c3..bc9be246e10 100644 --- a/src/test/mystery-encounter/encounters/field-trip-encounter.test.ts +++ b/src/test/mystery-encounter/encounters/field-trip-encounter.test.ts @@ -5,7 +5,7 @@ import GameManager from "#app/test/utils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { runMysteryEncounterToEnd } from "#test/mystery-encounter/encounter-test-utils"; -import BattleScene from "#app/battle-scene"; +import type BattleScene from "#app/battle-scene"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; diff --git a/src/test/mystery-encounter/encounters/fiery-fallout-encounter.test.ts b/src/test/mystery-encounter/encounters/fiery-fallout-encounter.test.ts index 215cab5c65a..2f668dd7f50 100644 --- a/src/test/mystery-encounter/encounters/fiery-fallout-encounter.test.ts +++ b/src/test/mystery-encounter/encounters/fiery-fallout-encounter.test.ts @@ -11,7 +11,7 @@ import * as BattleAnims from "#app/data/battle-anims"; import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { runMysteryEncounterToEnd, runSelectMysteryEncounterOption, skipBattleRunMysteryEncounterRewardsPhase } from "#test/mystery-encounter/encounter-test-utils"; import { Moves } from "#enums/moves"; -import BattleScene from "#app/battle-scene"; +import type BattleScene from "#app/battle-scene"; import { AttackTypeBoosterModifier, PokemonHeldItemModifier } from "#app/modifier/modifier"; import { Type } from "#enums/type"; import { Status } from "#app/data/status-effect"; @@ -104,8 +104,8 @@ describe("Fiery Fallout - Mystery Encounter", () => { expect(FieryFalloutEncounter.onInit).toBeDefined(); - FieryFalloutEncounter.populateDialogueTokensFromRequirements(scene); - const onInitResult = onInit!(scene); + FieryFalloutEncounter.populateDialogueTokensFromRequirements(); + const onInitResult = onInit!(); expect(FieryFalloutEncounter.enemyPartyConfigs).toEqual([ { diff --git a/src/test/mystery-encounter/encounters/fight-or-flight-encounter.test.ts b/src/test/mystery-encounter/encounters/fight-or-flight-encounter.test.ts index a5098f682eb..8c869812f39 100644 --- a/src/test/mystery-encounter/encounters/fight-or-flight-encounter.test.ts +++ b/src/test/mystery-encounter/encounters/fight-or-flight-encounter.test.ts @@ -6,7 +6,7 @@ import GameManager from "#app/test/utils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { runMysteryEncounterToEnd, runSelectMysteryEncounterOption, skipBattleRunMysteryEncounterRewardsPhase } from "#test/mystery-encounter/encounter-test-utils"; import { Moves } from "#enums/moves"; -import BattleScene from "#app/battle-scene"; +import type BattleScene from "#app/battle-scene"; import { PokemonMove } from "#app/field/pokemon"; import { Mode } from "#app/ui/ui"; import ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; @@ -75,8 +75,8 @@ describe("Fight or Flight - Mystery Encounter", () => { expect(FightOrFlightEncounter.onInit).toBeDefined(); - FightOrFlightEncounter.populateDialogueTokensFromRequirements(scene); - const onInitResult = onInit!(scene); + FightOrFlightEncounter.populateDialogueTokensFromRequirements(); + const onInitResult = onInit!(); const config = FightOrFlightEncounter.enemyPartyConfigs[0]; expect(config).toBeDefined(); diff --git a/src/test/mystery-encounter/encounters/fun-and-games-encounter.test.ts b/src/test/mystery-encounter/encounters/fun-and-games-encounter.test.ts index 2f4f6bed288..44ddbb8f7ba 100644 --- a/src/test/mystery-encounter/encounters/fun-and-games-encounter.test.ts +++ b/src/test/mystery-encounter/encounters/fun-and-games-encounter.test.ts @@ -6,7 +6,7 @@ import { Species } from "#app/enums/species"; import GameManager from "#app/test/utils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { runMysteryEncounterToEnd, runSelectMysteryEncounterOption } from "#test/mystery-encounter/encounter-test-utils"; -import BattleScene from "#app/battle-scene"; +import type BattleScene from "#app/battle-scene"; import { Mode } from "#app/ui/ui"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; @@ -95,7 +95,7 @@ describe("Fun And Games! - Mystery Encounter", () => { expect(encounter.onInit).toBeDefined(); - const onInitResult = onInit!(scene); + const onInitResult = onInit!(); expect(onInitResult).toBe(true); }); diff --git a/src/test/mystery-encounter/encounters/global-trade-system-encounter.test.ts b/src/test/mystery-encounter/encounters/global-trade-system-encounter.test.ts index 2c226df3c8c..fb5801c941a 100644 --- a/src/test/mystery-encounter/encounters/global-trade-system-encounter.test.ts +++ b/src/test/mystery-encounter/encounters/global-trade-system-encounter.test.ts @@ -5,7 +5,7 @@ import GameManager from "#app/test/utils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { runMysteryEncounterToEnd } from "#test/mystery-encounter/encounter-test-utils"; -import BattleScene from "#app/battle-scene"; +import type BattleScene from "#app/battle-scene"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; @@ -221,7 +221,7 @@ describe("Global Trade System - Mystery Encounter", () => { // Set 2 Soul Dew on party lead scene.modifiers = []; - const soulDew = generateModifierType(scene, modifierTypes.SOUL_DEW)!; + const soulDew = generateModifierType(modifierTypes.SOUL_DEW)!; const modifier = soulDew.newModifier(scene.getPlayerParty()[0]) as PokemonNatureWeightModifier; modifier.stackCount = 2; await scene.addModifier(modifier, true, false, false, true); @@ -246,7 +246,7 @@ describe("Global Trade System - Mystery Encounter", () => { // Set 1 Soul Dew on party lead scene.modifiers = []; - const soulDew = generateModifierType(scene, modifierTypes.SOUL_DEW)!; + const soulDew = generateModifierType(modifierTypes.SOUL_DEW)!; const modifier = soulDew.newModifier(scene.getPlayerParty()[0]) as PokemonNatureWeightModifier; modifier.stackCount = 1; await scene.addModifier(modifier, true, false, false, true); diff --git a/src/test/mystery-encounter/encounters/lost-at-sea-encounter.test.ts b/src/test/mystery-encounter/encounters/lost-at-sea-encounter.test.ts index 51f759c9268..17e324f29f0 100644 --- a/src/test/mystery-encounter/encounters/lost-at-sea-encounter.test.ts +++ b/src/test/mystery-encounter/encounters/lost-at-sea-encounter.test.ts @@ -11,7 +11,7 @@ import { runMysteryEncounterToEnd, runSelectMysteryEncounterOption } from "../en import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { initSceneWithoutEncounterPhase } from "#test/utils/gameManagerUtils"; -import BattleScene from "#app/battle-scene"; +import type BattleScene from "#app/battle-scene"; import { MysteryEncounterPhase } from "#app/phases/mystery-encounter-phases"; import { PartyExpPhase } from "#app/phases/party-exp-phase"; import i18next from "i18next"; @@ -83,8 +83,8 @@ describe("Lost at Sea - Mystery Encounter", () => { expect(LostAtSeaEncounter.onInit).toBeDefined(); - LostAtSeaEncounter.populateDialogueTokensFromRequirements(scene); - const onInitResult = onInit!(scene); + LostAtSeaEncounter.populateDialogueTokensFromRequirements(); + const onInitResult = onInit!(); expect(LostAtSeaEncounter.dialogueTokens?.damagePercentage).toBe("25"); expect(LostAtSeaEncounter.dialogueTokens?.option1RequiredMove).toBe(i18next.t("move:surf.name")); diff --git a/src/test/mystery-encounter/encounters/mysterious-challengers-encounter.test.ts b/src/test/mystery-encounter/encounters/mysterious-challengers-encounter.test.ts index 7bbc505dd8e..7729fa40599 100644 --- a/src/test/mystery-encounter/encounters/mysterious-challengers-encounter.test.ts +++ b/src/test/mystery-encounter/encounters/mysterious-challengers-encounter.test.ts @@ -6,7 +6,7 @@ import { Species } from "#app/enums/species"; import GameManager from "#app/test/utils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { runMysteryEncounterToEnd, skipBattleRunMysteryEncounterRewardsPhase } from "#test/mystery-encounter/encounter-test-utils"; -import BattleScene from "#app/battle-scene"; +import type BattleScene from "#app/battle-scene"; import { Mode } from "#app/ui/ui"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; @@ -89,8 +89,8 @@ describe("Mysterious Challengers - Mystery Encounter", () => { expect(encounter.onInit).toBeDefined(); - encounter.populateDialogueTokensFromRequirements(scene); - const onInitResult = onInit!(scene); + encounter.populateDialogueTokensFromRequirements(); + const onInitResult = onInit!(); expect(encounter.enemyPartyConfigs).toBeDefined(); expect(encounter.enemyPartyConfigs.length).toBe(3); diff --git a/src/test/mystery-encounter/encounters/part-timer-encounter.test.ts b/src/test/mystery-encounter/encounters/part-timer-encounter.test.ts index e063a4f3349..e8f2af0de5f 100644 --- a/src/test/mystery-encounter/encounters/part-timer-encounter.test.ts +++ b/src/test/mystery-encounter/encounters/part-timer-encounter.test.ts @@ -6,7 +6,7 @@ import GameManager from "#app/test/utils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { runMysteryEncounterToEnd, runSelectMysteryEncounterOption } from "#test/mystery-encounter/encounter-test-utils"; -import BattleScene from "#app/battle-scene"; +import type BattleScene from "#app/battle-scene"; import { CIVILIZATION_ENCOUNTER_BIOMES } from "#app/data/mystery-encounters/mystery-encounters"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; @@ -107,7 +107,7 @@ describe("Part-Timer - Mystery Encounter", () => { }); await runMysteryEncounterToEnd(game, 1, { pokemonNo: 1 }); - expect(EncounterPhaseUtils.updatePlayerMoney).toHaveBeenCalledWith(scene, scene.getWaveMoneyAmount(1), true, false); + expect(EncounterPhaseUtils.updatePlayerMoney).toHaveBeenCalledWith(scene.getWaveMoneyAmount(1), true, false); // Expect PP of mon's moves to have been reduced to 2 const moves = scene.getPlayerParty()[0].moveset; for (const move of moves) { @@ -127,7 +127,7 @@ describe("Part-Timer - Mystery Encounter", () => { }); await runMysteryEncounterToEnd(game, 1, { pokemonNo: 2 }); - expect(EncounterPhaseUtils.updatePlayerMoney).toHaveBeenCalledWith(scene, scene.getWaveMoneyAmount(4), true, false); + expect(EncounterPhaseUtils.updatePlayerMoney).toHaveBeenCalledWith(scene.getWaveMoneyAmount(4), true, false); // Expect PP of mon's moves to have been reduced to 2 const moves = scene.getPlayerParty()[1].moveset; for (const move of moves) { @@ -172,7 +172,7 @@ describe("Part-Timer - Mystery Encounter", () => { }); await runMysteryEncounterToEnd(game, 2, { pokemonNo: 3 }); - expect(EncounterPhaseUtils.updatePlayerMoney).toHaveBeenCalledWith(scene, scene.getWaveMoneyAmount(1), true, false); + expect(EncounterPhaseUtils.updatePlayerMoney).toHaveBeenCalledWith(scene.getWaveMoneyAmount(1), true, false); // Expect PP of mon's moves to have been reduced to 2 const moves = scene.getPlayerParty()[2].moveset; for (const move of moves) { @@ -192,7 +192,7 @@ describe("Part-Timer - Mystery Encounter", () => { }); await runMysteryEncounterToEnd(game, 2, { pokemonNo: 4 }); - expect(EncounterPhaseUtils.updatePlayerMoney).toHaveBeenCalledWith(scene, scene.getWaveMoneyAmount(4), true, false); + expect(EncounterPhaseUtils.updatePlayerMoney).toHaveBeenCalledWith(scene.getWaveMoneyAmount(4), true, false); // Expect PP of mon's moves to have been reduced to 2 const moves = scene.getPlayerParty()[3].moveset; for (const move of moves) { @@ -259,7 +259,7 @@ describe("Part-Timer - Mystery Encounter", () => { scene.getPlayerParty()[0].moveset = [ new PokemonMove(Moves.ATTRACT) ]; await runMysteryEncounterToEnd(game, 3); - expect(EncounterPhaseUtils.updatePlayerMoney).toHaveBeenCalledWith(scene, scene.getWaveMoneyAmount(2.5), true, false); + expect(EncounterPhaseUtils.updatePlayerMoney).toHaveBeenCalledWith(scene.getWaveMoneyAmount(2.5), true, false); // Expect PP of mon's moves to have been reduced to 2 const moves = scene.getPlayerParty()[0].moveset; for (const move of moves) { diff --git a/src/test/mystery-encounter/encounters/safari-zone.test.ts b/src/test/mystery-encounter/encounters/safari-zone.test.ts index 5699afe254f..a807805b81c 100644 --- a/src/test/mystery-encounter/encounters/safari-zone.test.ts +++ b/src/test/mystery-encounter/encounters/safari-zone.test.ts @@ -5,7 +5,7 @@ import { Species } from "#enums/species"; import GameManager from "#test/utils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { runMysteryEncounterToEnd, runSelectMysteryEncounterOption } from "#test/mystery-encounter/encounter-test-utils"; -import BattleScene from "#app/battle-scene"; +import type BattleScene from "#app/battle-scene"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { initSceneWithoutEncounterPhase } from "#test/utils/gameManagerUtils"; @@ -85,8 +85,8 @@ describe("Safari Zone - Mystery Encounter", () => { expect(encounter.onInit).toBeDefined(); - encounter.populateDialogueTokensFromRequirements(scene); - const onInitResult = onInit!(scene); + encounter.populateDialogueTokensFromRequirements(); + const onInitResult = onInit!(); expect(onInitResult).toBe(true); }); diff --git a/src/test/mystery-encounter/encounters/teleporting-hijinks-encounter.test.ts b/src/test/mystery-encounter/encounters/teleporting-hijinks-encounter.test.ts index 02375d83b98..a00cca5083c 100644 --- a/src/test/mystery-encounter/encounters/teleporting-hijinks-encounter.test.ts +++ b/src/test/mystery-encounter/encounters/teleporting-hijinks-encounter.test.ts @@ -1,4 +1,4 @@ -import BattleScene from "#app/battle-scene"; +import type BattleScene from "#app/battle-scene"; import { TeleportingHijinksEncounter } from "#app/data/mystery-encounters/encounters/teleporting-hijinks-encounter"; import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters"; import { Abilities } from "#enums/abilities"; @@ -115,8 +115,8 @@ describe("Teleporting Hijinks - Mystery Encounter", () => { expect(TeleportingHijinksEncounter.onInit).toBeDefined(); - TeleportingHijinksEncounter.populateDialogueTokensFromRequirements(scene); - const onInitResult = onInit!(scene); + TeleportingHijinksEncounter.populateDialogueTokensFromRequirements(); + const onInitResult = onInit!(); expect(TeleportingHijinksEncounter.misc.price).toBeDefined(); expect(TeleportingHijinksEncounter.dialogueTokens.price).toBeDefined(); diff --git a/src/test/mystery-encounter/encounters/the-expert-breeder-encounter.test.ts b/src/test/mystery-encounter/encounters/the-expert-breeder-encounter.test.ts index 87ccff71e22..e6f8127b776 100644 --- a/src/test/mystery-encounter/encounters/the-expert-breeder-encounter.test.ts +++ b/src/test/mystery-encounter/encounters/the-expert-breeder-encounter.test.ts @@ -6,7 +6,7 @@ import { Species } from "#app/enums/species"; import GameManager from "#app/test/utils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { runMysteryEncounterToEnd, skipBattleRunMysteryEncounterRewardsPhase } from "#test/mystery-encounter/encounter-test-utils"; -import BattleScene from "#app/battle-scene"; +import type BattleScene from "#app/battle-scene"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { initSceneWithoutEncounterPhase } from "#test/utils/gameManagerUtils"; @@ -96,8 +96,8 @@ describe("The Expert Pokémon Breeder - Mystery Encounter", () => { expect(encounter.onInit).toBeDefined(); - encounter.populateDialogueTokensFromRequirements(scene); - const onInitResult = onInit!(scene); + encounter.populateDialogueTokensFromRequirements(); + const onInitResult = onInit!(); expect(encounter.enemyPartyConfigs).toBeDefined(); expect(encounter.enemyPartyConfigs.length).toBe(1); diff --git a/src/test/mystery-encounter/encounters/the-pokemon-salesman-encounter.test.ts b/src/test/mystery-encounter/encounters/the-pokemon-salesman-encounter.test.ts index e90bc4efe56..4fd96f8d5bc 100644 --- a/src/test/mystery-encounter/encounters/the-pokemon-salesman-encounter.test.ts +++ b/src/test/mystery-encounter/encounters/the-pokemon-salesman-encounter.test.ts @@ -6,7 +6,7 @@ import GameManager from "#app/test/utils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { runMysteryEncounterToEnd, runSelectMysteryEncounterOption } from "#test/mystery-encounter/encounter-test-utils"; -import BattleScene from "#app/battle-scene"; +import type BattleScene from "#app/battle-scene"; import { PlayerPokemon } from "#app/field/pokemon"; import { HUMAN_TRANSITABLE_BIOMES } from "#app/data/mystery-encounters/mystery-encounters"; import { getSalesmanSpeciesOffer, ThePokemonSalesmanEncounter } from "#app/data/mystery-encounters/encounters/the-pokemon-salesman-encounter"; @@ -88,8 +88,8 @@ describe("The Pokemon Salesman - Mystery Encounter", () => { expect(ThePokemonSalesmanEncounter.onInit).toBeDefined(); - ThePokemonSalesmanEncounter.populateDialogueTokensFromRequirements(scene); - const onInitResult = onInit!(scene); + ThePokemonSalesmanEncounter.populateDialogueTokensFromRequirements(); + const onInitResult = onInit!(); expect(ThePokemonSalesmanEncounter.dialogueTokens?.purchasePokemon).toBeDefined(); expect(ThePokemonSalesmanEncounter.dialogueTokens?.price).toBeDefined(); @@ -133,7 +133,7 @@ describe("The Pokemon Salesman - Mystery Encounter", () => { const price = scene.currentBattle.mysteryEncounter!.misc.price; - expect(updateMoneySpy).toHaveBeenCalledWith(scene, -price, true, false); + expect(updateMoneySpy).toHaveBeenCalledWith(-price, true, false); expect(scene.money).toBe(initialMoney - price); }); diff --git a/src/test/mystery-encounter/encounters/the-strong-stuff-encounter.test.ts b/src/test/mystery-encounter/encounters/the-strong-stuff-encounter.test.ts index 5c965b13bd4..3c0e75a2195 100644 --- a/src/test/mystery-encounter/encounters/the-strong-stuff-encounter.test.ts +++ b/src/test/mystery-encounter/encounters/the-strong-stuff-encounter.test.ts @@ -9,7 +9,7 @@ import * as BattleAnims from "#app/data/battle-anims"; import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { runMysteryEncounterToEnd, skipBattleRunMysteryEncounterRewardsPhase } from "#test/mystery-encounter/encounter-test-utils"; import { Moves } from "#enums/moves"; -import BattleScene from "#app/battle-scene"; +import type BattleScene from "#app/battle-scene"; import { TheStrongStuffEncounter } from "#app/data/mystery-encounters/encounters/the-strong-stuff-encounter"; import { Nature } from "#enums/nature"; import { BerryType } from "#enums/berry-type"; @@ -97,8 +97,8 @@ describe("The Strong Stuff - Mystery Encounter", () => { expect(TheStrongStuffEncounter.onInit).toBeDefined(); - TheStrongStuffEncounter.populateDialogueTokensFromRequirements(scene); - const onInitResult = onInit!(scene); + TheStrongStuffEncounter.populateDialogueTokensFromRequirements(); + const onInitResult = onInit!(); expect(TheStrongStuffEncounter.enemyPartyConfigs).toEqual([ { diff --git a/src/test/mystery-encounter/encounters/the-winstrate-challenge-encounter.test.ts b/src/test/mystery-encounter/encounters/the-winstrate-challenge-encounter.test.ts index 701a3c94add..e087bc5c180 100644 --- a/src/test/mystery-encounter/encounters/the-winstrate-challenge-encounter.test.ts +++ b/src/test/mystery-encounter/encounters/the-winstrate-challenge-encounter.test.ts @@ -6,7 +6,7 @@ import { Species } from "#enums/species"; import GameManager from "#test/utils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { runMysteryEncounterToEnd } from "#test/mystery-encounter/encounter-test-utils"; -import BattleScene from "#app/battle-scene"; +import type BattleScene from "#app/battle-scene"; import { Mode } from "#app/ui/ui"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; @@ -101,8 +101,8 @@ describe("The Winstrate Challenge - Mystery Encounter", () => { expect(encounter.onInit).toBeDefined(); - encounter.populateDialogueTokensFromRequirements(scene); - const onInitResult = onInit!(scene); + encounter.populateDialogueTokensFromRequirements(); + const onInitResult = onInit!(); expect(encounter.enemyPartyConfigs).toBeDefined(); expect(encounter.enemyPartyConfigs.length).toBe(5); @@ -363,7 +363,7 @@ async function skipBattleToNextBattle(game: GameManager, isFinalBattle: boolean game.scene.field.remove(p); }); game.phaseInterceptor["onHold"] = []; - game.scene.pushPhase(new VictoryPhase(game.scene, 0)); + game.scene.pushPhase(new VictoryPhase(0)); game.phaseInterceptor.superEndPhase(); if (isFinalBattle) { await game.phaseInterceptor.to(MysteryEncounterRewardsPhase); diff --git a/src/test/mystery-encounter/encounters/trash-to-treasure-encounter.test.ts b/src/test/mystery-encounter/encounters/trash-to-treasure-encounter.test.ts index f8d96487092..395e33e818a 100644 --- a/src/test/mystery-encounter/encounters/trash-to-treasure-encounter.test.ts +++ b/src/test/mystery-encounter/encounters/trash-to-treasure-encounter.test.ts @@ -9,7 +9,7 @@ import * as BattleAnims from "#app/data/battle-anims"; import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { runMysteryEncounterToEnd, skipBattleRunMysteryEncounterRewardsPhase } from "#test/mystery-encounter/encounter-test-utils"; import { Moves } from "#enums/moves"; -import BattleScene from "#app/battle-scene"; +import type BattleScene from "#app/battle-scene"; import { PokemonMove } from "#app/field/pokemon"; import { Mode } from "#app/ui/ui"; import ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; @@ -81,8 +81,8 @@ describe("Trash to Treasure - Mystery Encounter", () => { expect(TrashToTreasureEncounter.onInit).toBeDefined(); - TrashToTreasureEncounter.populateDialogueTokensFromRequirements(scene); - const onInitResult = onInit!(scene); + TrashToTreasureEncounter.populateDialogueTokensFromRequirements(); + const onInitResult = onInit!(); expect(TrashToTreasureEncounter.enemyPartyConfigs).toEqual([ { diff --git a/src/test/mystery-encounter/encounters/uncommon-breed-encounter.test.ts b/src/test/mystery-encounter/encounters/uncommon-breed-encounter.test.ts index c811bda673d..39904c030a3 100644 --- a/src/test/mystery-encounter/encounters/uncommon-breed-encounter.test.ts +++ b/src/test/mystery-encounter/encounters/uncommon-breed-encounter.test.ts @@ -6,7 +6,7 @@ import GameManager from "#app/test/utils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { runMysteryEncounterToEnd, runSelectMysteryEncounterOption } from "#test/mystery-encounter/encounter-test-utils"; import { Moves } from "#enums/moves"; -import BattleScene from "#app/battle-scene"; +import type BattleScene from "#app/battle-scene"; import { PokemonMove } from "#app/field/pokemon"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; @@ -22,7 +22,7 @@ import { getPokemonSpecies } from "#app/data/pokemon-species"; import { BerryType } from "#enums/berry-type"; import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; import { Stat } from "#enums/stat"; -import { BerryModifier } from "#app/modifier/modifier"; +import type { BerryModifier } from "#app/modifier/modifier"; import { modifierTypes } from "#app/modifier/modifier-type"; import { Abilities } from "#enums/abilities"; @@ -85,8 +85,8 @@ describe("Uncommon Breed - Mystery Encounter", () => { expect(UncommonBreedEncounter.onInit).toBeDefined(); - UncommonBreedEncounter.populateDialogueTokensFromRequirements(scene); - const onInitResult = onInit!(scene); + UncommonBreedEncounter.populateDialogueTokensFromRequirements(); + const onInitResult = onInit!(); const config = UncommonBreedEncounter.enemyPartyConfigs[0]; expect(config).toBeDefined(); @@ -213,11 +213,11 @@ describe("Uncommon Breed - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.UNCOMMON_BREED, defaultParty); // Berries on party lead - const sitrus = generateModifierType(scene, modifierTypes.BERRY, [ BerryType.SITRUS ])!; + const sitrus = generateModifierType(modifierTypes.BERRY, [ BerryType.SITRUS ])!; const sitrusMod = sitrus.newModifier(scene.getPlayerParty()[0]) as BerryModifier; sitrusMod.stackCount = 2; await scene.addModifier(sitrusMod, true, false, false, true); - const ganlon = generateModifierType(scene, modifierTypes.BERRY, [ BerryType.GANLON ])!; + const ganlon = generateModifierType(modifierTypes.BERRY, [ BerryType.GANLON ])!; const ganlonMod = ganlon.newModifier(scene.getPlayerParty()[0]) as BerryModifier; ganlonMod.stackCount = 3; await scene.addModifier(ganlonMod, true, false, false, true); diff --git a/src/test/mystery-encounter/encounters/weird-dream-encounter.test.ts b/src/test/mystery-encounter/encounters/weird-dream-encounter.test.ts index ec9cf1509b1..669a99b92cd 100644 --- a/src/test/mystery-encounter/encounters/weird-dream-encounter.test.ts +++ b/src/test/mystery-encounter/encounters/weird-dream-encounter.test.ts @@ -6,7 +6,7 @@ import GameManager from "#app/test/utils/gameManager"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { runMysteryEncounterToEnd, skipBattleRunMysteryEncounterRewardsPhase } from "#test/mystery-encounter/encounter-test-utils"; -import BattleScene from "#app/battle-scene"; +import type BattleScene from "#app/battle-scene"; import { Mode } from "#app/ui/ui"; import ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; @@ -84,8 +84,8 @@ describe("Weird Dream - Mystery Encounter", () => { expect(WeirdDreamEncounter.onInit).toBeDefined(); - WeirdDreamEncounter.populateDialogueTokensFromRequirements(scene); - const onInitResult = onInit!(scene); + WeirdDreamEncounter.populateDialogueTokensFromRequirements(); + const onInitResult = onInit!(); expect(loadBgmSpy).toHaveBeenCalled(); expect(onInitResult).toBe(true); diff --git a/src/test/mystery-encounter/mystery-encounter-utils.test.ts b/src/test/mystery-encounter/mystery-encounter-utils.test.ts index d17b5c8a587..f0057fea7f0 100644 --- a/src/test/mystery-encounter/mystery-encounter-utils.test.ts +++ b/src/test/mystery-encounter/mystery-encounter-utils.test.ts @@ -1,4 +1,4 @@ -import BattleScene from "#app/battle-scene"; +import type BattleScene from "#app/battle-scene"; import { speciesStarterCosts } from "#app/data/balance/starters"; import MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; import { getEncounterText, queueEncounterMessage, showEncounterDialogue, showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; @@ -39,12 +39,12 @@ describe("Mystery Encounter Utils", () => { // Seeds are calculated to return index 0 first, 1 second (if both pokemon are legal) game.override.seed("random"); - let result = getRandomPlayerPokemon(scene); + let result = getRandomPlayerPokemon(); expect(result.species.speciesId).toBe(Species.MANAPHY); game.override.seed("random2"); - result = getRandomPlayerPokemon(scene); + result = getRandomPlayerPokemon(); expect(result.species.speciesId).toBe(Species.ARCEUS); }); @@ -59,12 +59,12 @@ describe("Mystery Encounter Utils", () => { // Seeds are calculated to return index 0 first, 1 second (if both pokemon are legal) game.override.seed("random"); - let result = getRandomPlayerPokemon(scene); + let result = getRandomPlayerPokemon(); expect(result.species.speciesId).toBe(Species.MANAPHY); game.override.seed("random2"); - result = getRandomPlayerPokemon(scene); + result = getRandomPlayerPokemon(); expect(result.species.speciesId).toBe(Species.ARCEUS); }); @@ -78,12 +78,12 @@ describe("Mystery Encounter Utils", () => { // Seeds are calculated to return index 0 first, 1 second (if both pokemon are legal) game.override.seed("random"); - let result = getRandomPlayerPokemon(scene, true); + let result = getRandomPlayerPokemon(true); expect(result.species.speciesId).toBe(Species.MANAPHY); game.override.seed("random2"); - result = getRandomPlayerPokemon(scene, true); + result = getRandomPlayerPokemon(true); expect(result.species.speciesId).toBe(Species.MANAPHY); }); @@ -97,12 +97,12 @@ describe("Mystery Encounter Utils", () => { // Seeds are calculated to return index 0 first, 1 second (if both pokemon are legal) game.override.seed("random"); - let result = getRandomPlayerPokemon(scene, true, false); + let result = getRandomPlayerPokemon(true, false); expect(result.species.speciesId).toBe(Species.MANAPHY); game.override.seed("random2"); - result = getRandomPlayerPokemon(scene, true, false); + result = getRandomPlayerPokemon(true, false); expect(result.species.speciesId).toBe(Species.MANAPHY); }); @@ -116,12 +116,12 @@ describe("Mystery Encounter Utils", () => { // Seeds are calculated to return index 0 first, 1 second (if both pokemon are legal) game.override.seed("random"); - let result = getRandomPlayerPokemon(scene, true, false, true); + let result = getRandomPlayerPokemon(true, false, true); expect(result.species.speciesId).toBe(Species.ARCEUS); game.override.seed("random2"); - result = getRandomPlayerPokemon(scene, true, false, true); + result = getRandomPlayerPokemon(true, false, true); expect(result.species.speciesId).toBe(Species.ARCEUS); }); }); @@ -131,7 +131,7 @@ describe("Mystery Encounter Utils", () => { const party = scene.getPlayerParty(); party[0].level = 100; - const result = getHighestLevelPlayerPokemon(scene); + const result = getHighestLevelPlayerPokemon(); expect(result.species.speciesId).toBe(Species.ARCEUS); }); @@ -139,7 +139,7 @@ describe("Mystery Encounter Utils", () => { const party = scene.getPlayerParty(); party[1].level = 100; - const result = getHighestLevelPlayerPokemon(scene); + const result = getHighestLevelPlayerPokemon(); expect(result.species.speciesId).toBe(Species.MANAPHY); }); @@ -148,7 +148,7 @@ describe("Mystery Encounter Utils", () => { party[0].level = 100; party[1].level = 100; - const result = getHighestLevelPlayerPokemon(scene); + const result = getHighestLevelPlayerPokemon(); expect(result.species.speciesId).toBe(Species.ARCEUS); }); @@ -160,7 +160,7 @@ describe("Mystery Encounter Utils", () => { party[0].updateInfo(); party[1].level = 10; - const result = getHighestLevelPlayerPokemon(scene, true); + const result = getHighestLevelPlayerPokemon(true); expect(result.species.speciesId).toBe(Species.MANAPHY); }); }); @@ -170,7 +170,7 @@ describe("Mystery Encounter Utils", () => { const party = scene.getPlayerParty(); party[0].level = 100; - const result = getLowestLevelPlayerPokemon(scene); + const result = getLowestLevelPlayerPokemon(); expect(result.species.speciesId).toBe(Species.MANAPHY); }); @@ -178,7 +178,7 @@ describe("Mystery Encounter Utils", () => { const party = scene.getPlayerParty(); party[1].level = 100; - const result = getLowestLevelPlayerPokemon(scene); + const result = getLowestLevelPlayerPokemon(); expect(result.species.speciesId).toBe(Species.ARCEUS); }); @@ -187,7 +187,7 @@ describe("Mystery Encounter Utils", () => { party[0].level = 100; party[1].level = 100; - const result = getLowestLevelPlayerPokemon(scene); + const result = getLowestLevelPlayerPokemon(); expect(result.species.speciesId).toBe(Species.ARCEUS); }); @@ -199,7 +199,7 @@ describe("Mystery Encounter Utils", () => { party[0].updateInfo(); party[1].level = 100; - const result = getLowestLevelPlayerPokemon(scene, true); + const result = getLowestLevelPlayerPokemon(true); expect(result.species.speciesId).toBe(Species.MANAPHY); }); }); @@ -244,7 +244,7 @@ describe("Mystery Encounter Utils", () => { arceus.hp = 100; expect(arceus.isAllowedInBattle()).toBe(true); - koPlayerPokemon(scene, arceus); + koPlayerPokemon(arceus); expect(arceus.isAllowedInBattle()).toBe(false); }); }); @@ -254,7 +254,7 @@ describe("Mystery Encounter Utils", () => { scene.currentBattle.mysteryEncounter = new MysteryEncounter(null); scene.currentBattle.mysteryEncounter.setDialogueToken("test", "value"); - const result = getEncounterText(scene, "mysteryEncounter:unit_test_dialogue"); + const result = getEncounterText("mysteryEncounter:unit_test_dialogue"); expect(result).toEqual("mysteryEncounter:unit_test_dialogue"); }); @@ -263,7 +263,7 @@ describe("Mystery Encounter Utils", () => { scene.currentBattle.mysteryEncounter.setDialogueToken("test", "value"); scene.currentBattle.mysteryEncounter.setDialogueToken("testvalue", "new"); - const result = getEncounterText(scene, "mysteryEncounter:unit_test_dialogue"); + const result = getEncounterText("mysteryEncounter:unit_test_dialogue"); expect(result).toEqual("mysteryEncounter:unit_test_dialogue"); }); }); @@ -275,7 +275,7 @@ describe("Mystery Encounter Utils", () => { const spy = vi.spyOn(game.scene, "queueMessage"); const phaseSpy = vi.spyOn(game.scene, "unshiftPhase"); - queueEncounterMessage(scene, "mysteryEncounter:unit_test_dialogue"); + queueEncounterMessage("mysteryEncounter:unit_test_dialogue"); expect(spy).toHaveBeenCalledWith("mysteryEncounter:unit_test_dialogue", null, true); expect(phaseSpy).toHaveBeenCalledWith(expect.any(MessagePhase)); }); @@ -287,7 +287,7 @@ describe("Mystery Encounter Utils", () => { scene.currentBattle.mysteryEncounter.setDialogueToken("test", "value"); const spy = vi.spyOn(game.scene.ui, "showText"); - await showEncounterText(scene, "mysteryEncounter:unit_test_dialogue"); + await showEncounterText("mysteryEncounter:unit_test_dialogue"); expect(spy).toHaveBeenCalledWith("mysteryEncounter:unit_test_dialogue", null, expect.any(Function), 0, true, null); }); }); @@ -298,7 +298,7 @@ describe("Mystery Encounter Utils", () => { scene.currentBattle.mysteryEncounter.setDialogueToken("test", "value"); const spy = vi.spyOn(game.scene.ui, "showDialogue"); - await showEncounterDialogue(scene, "mysteryEncounter:unit_test_dialogue", "mysteryEncounter:unit_test_dialogue"); + await showEncounterDialogue("mysteryEncounter:unit_test_dialogue", "mysteryEncounter:unit_test_dialogue"); expect(spy).toHaveBeenCalledWith("mysteryEncounter:unit_test_dialogue", "mysteryEncounter:unit_test_dialogue", null, expect.any(Function), 0); }); }); diff --git a/src/test/mystery-encounter/mystery-encounter.test.ts b/src/test/mystery-encounter/mystery-encounter.test.ts index eaf6e04a639..7958fc1cd46 100644 --- a/src/test/mystery-encounter/mystery-encounter.test.ts +++ b/src/test/mystery-encounter/mystery-encounter.test.ts @@ -4,7 +4,7 @@ import Phaser from "phaser"; import { Species } from "#enums/species"; import { MysteryEncounterPhase } from "#app/phases/mystery-encounter-phases"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import BattleScene from "#app/battle-scene"; +import type BattleScene from "#app/battle-scene"; describe("Mystery Encounters", () => { let phaserGame: Phaser.Game; diff --git a/src/test/phases/form-change-phase.test.ts b/src/test/phases/form-change-phase.test.ts index 3c0016260a3..07e59cafe1c 100644 --- a/src/test/phases/form-change-phase.test.ts +++ b/src/test/phases/form-change-phase.test.ts @@ -44,7 +44,7 @@ describe("Form Change Phase", () => { expect(zacian.calculateBaseStats()).toStrictEqual([ 92, 120, 115, 80, 115, 138 ]); // Give Zacian a Rusted Sword - const rustedSwordType = generateModifierType(game.scene, modifierTypes.RARE_FORM_CHANGE_ITEM)!; + const rustedSwordType = generateModifierType( modifierTypes.RARE_FORM_CHANGE_ITEM)!; const rustedSword = rustedSwordType.newModifier(zacian); await game.scene.addModifier(rustedSword); diff --git a/src/test/phases/mystery-encounter-phase.test.ts b/src/test/phases/mystery-encounter-phase.test.ts index 32e31ce1c94..507862534af 100644 --- a/src/test/phases/mystery-encounter-phase.test.ts +++ b/src/test/phases/mystery-encounter-phase.test.ts @@ -5,9 +5,9 @@ import { Species } from "#enums/species"; import { MysteryEncounterOptionSelectedPhase, MysteryEncounterPhase } from "#app/phases/mystery-encounter-phases"; import { Mode } from "#app/ui/ui"; import { Button } from "#enums/buttons"; -import MysteryEncounterUiHandler from "#app/ui/mystery-encounter-ui-handler"; +import type MysteryEncounterUiHandler from "#app/ui/mystery-encounter-ui-handler"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; -import MessageUiHandler from "#app/ui/message-ui-handler"; +import type MessageUiHandler from "#app/ui/message-ui-handler"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import i18next from "i18next"; diff --git a/src/test/phases/phases.test.ts b/src/test/phases/phases.test.ts index 5ef25361a3f..36a405b8d15 100644 --- a/src/test/phases/phases.test.ts +++ b/src/test/phases/phases.test.ts @@ -1,4 +1,4 @@ -import BattleScene from "#app/battle-scene"; +import type BattleScene from "#app/battle-scene"; import { LoginPhase } from "#app/phases/login-phase"; import { TitlePhase } from "#app/phases/title-phase"; import { UnavailablePhase } from "#app/phases/unavailable-phase"; @@ -29,7 +29,7 @@ describe("Phases", () => { describe("LoginPhase", () => { it("should start the login phase", async () => { - const loginPhase = new LoginPhase(scene); + const loginPhase = new LoginPhase(); scene.unshiftPhase(loginPhase); await game.phaseInterceptor.run(LoginPhase); expect(scene.ui.getMode()).to.equal(Mode.MESSAGE); @@ -38,7 +38,7 @@ describe("Phases", () => { describe("TitlePhase", () => { it("should start the title phase", async () => { - const titlePhase = new TitlePhase(scene); + const titlePhase = new TitlePhase(); scene.unshiftPhase(titlePhase); await game.phaseInterceptor.run(TitlePhase); expect(scene.ui.getMode()).to.equal(Mode.TITLE); @@ -47,7 +47,7 @@ describe("Phases", () => { describe("UnavailablePhase", () => { it("should start the unavailable phase", async () => { - const unavailablePhase = new UnavailablePhase(scene); + const unavailablePhase = new UnavailablePhase(); scene.unshiftPhase(unavailablePhase); await game.phaseInterceptor.run(UnavailablePhase); expect(scene.ui.getMode()).to.equal(Mode.UNAVAILABLE); diff --git a/src/test/phases/select-modifier-phase.test.ts b/src/test/phases/select-modifier-phase.test.ts index 60f81f3ad54..23fab729838 100644 --- a/src/test/phases/select-modifier-phase.test.ts +++ b/src/test/phases/select-modifier-phase.test.ts @@ -1,17 +1,21 @@ -import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import Phaser from "phaser"; -import GameManager from "#app/test/utils/gameManager"; -import { initSceneWithoutEncounterPhase } from "#app/test/utils/gameManagerUtils"; -import ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; -import { ModifierTier } from "#app/modifier/modifier-tier"; -import * as Utils from "#app/utils"; -import { CustomModifierSettings, ModifierTypeOption, modifierTypes } from "#app/modifier/modifier-type"; -import BattleScene from "#app/battle-scene"; -import { Species } from "#enums/species"; -import { Mode } from "#app/ui/ui"; -import { PlayerPokemon } from "#app/field/pokemon"; +import type BattleScene from "#app/battle-scene"; import { getPokemonSpecies } from "#app/data/pokemon-species"; +import { PlayerPokemon } from "#app/field/pokemon"; +import { ModifierTier } from "#app/modifier/modifier-tier"; +import type { CustomModifierSettings } from "#app/modifier/modifier-type"; +import { ModifierTypeOption, modifierTypes } from "#app/modifier/modifier-type"; import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; +import ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; +import { Mode } from "#app/ui/ui"; +import { shiftCharCodes } from "#app/utils"; +import { Abilities } from "#enums/abilities"; +import { Button } from "#enums/buttons"; +import { Moves } from "#enums/moves"; +import { Species } from "#enums/species"; +import GameManager from "#test/utils/gameManager"; +import { initSceneWithoutEncounterPhase } from "#test/utils/gameManagerUtils"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; describe("SelectModifierPhase", () => { let phaserGame: Phaser.Game; @@ -28,7 +32,11 @@ describe("SelectModifierPhase", () => { game = new GameManager(phaserGame); scene = game.scene; - initSceneWithoutEncounterPhase(scene, [ Species.ABRA, Species.VOLCARONA ]); + game.override + .moveset([ Moves.FISSURE, Moves.SPLASH ]) + .ability(Abilities.NO_GUARD) + .startingLevel(200) + .enemySpecies(Species.MAGIKARP); }); afterEach(() => { @@ -38,7 +46,8 @@ describe("SelectModifierPhase", () => { }); it("should start a select modifier phase", async () => { - const selectModifierPhase = new SelectModifierPhase(scene); + initSceneWithoutEncounterPhase(scene, [ Species.ABRA, Species.VOLCARONA ]); + const selectModifierPhase = new SelectModifierPhase(); scene.pushPhase(selectModifierPhase); await game.phaseInterceptor.run(SelectModifierPhase); @@ -46,10 +55,9 @@ describe("SelectModifierPhase", () => { }); it("should generate random modifiers", async () => { - const selectModifierPhase = new SelectModifierPhase(scene); - scene.pushPhase(selectModifierPhase); - await game.phaseInterceptor.run(SelectModifierPhase); - + await game.classicMode.startBattle([ Species.ABRA, Species.VOLCARONA ]); + game.move.select(Moves.FISSURE); + await game.phaseInterceptor.to("SelectModifierPhase"); expect(scene.ui.getMode()).to.equal(Mode.MODIFIER_SELECT); const modifierSelectHandler = scene.ui.handlers.find(h => h instanceof ModifierSelectUiHandler) as ModifierSelectUiHandler; @@ -57,64 +65,63 @@ describe("SelectModifierPhase", () => { }); it("should modify reroll cost", async () => { + initSceneWithoutEncounterPhase(scene, [ Species.ABRA, Species.VOLCARONA ]); const options = [ new ModifierTypeOption(modifierTypes.POTION(), 0, 100), new ModifierTypeOption(modifierTypes.ETHER(), 0, 400), new ModifierTypeOption(modifierTypes.REVIVE(), 0, 1000) ]; - const selectModifierPhase1 = new SelectModifierPhase(scene, 0, undefined, { guaranteedModifierTypeOptions: options }); - const selectModifierPhase2 = new SelectModifierPhase(scene, 0, undefined, { guaranteedModifierTypeOptions: options, rerollMultiplier: 2 }); + const selectModifierPhase1 = new SelectModifierPhase(0, undefined, { guaranteedModifierTypeOptions: options }); + const selectModifierPhase2 = new SelectModifierPhase(0, undefined, { guaranteedModifierTypeOptions: options, rerollMultiplier: 2 }); const cost1 = selectModifierPhase1.getRerollCost(false); const cost2 = selectModifierPhase2.getRerollCost(false); expect(cost2).toEqual(cost1 * 2); }); - it("should generate random modifiers from reroll", async () => { - let selectModifierPhase = new SelectModifierPhase(scene); - scene.pushPhase(selectModifierPhase); - await game.phaseInterceptor.run(SelectModifierPhase); + it.todo("should generate random modifiers from reroll", async () => { + await game.classicMode.startBattle([ Species.ABRA, Species.VOLCARONA ]); + scene.money = 1000000; + scene.shopCursorTarget = 0; + game.move.select(Moves.FISSURE); + await game.phaseInterceptor.to("SelectModifierPhase"); + + // TODO: nagivate the ui to reroll somehow + //const smphase = scene.getCurrentPhase() as SelectModifierPhase; expect(scene.ui.getMode()).to.equal(Mode.MODIFIER_SELECT); const modifierSelectHandler = scene.ui.handlers.find(h => h instanceof ModifierSelectUiHandler) as ModifierSelectUiHandler; expect(modifierSelectHandler.options.length).toEqual(3); - // Simulate selecting reroll - selectModifierPhase = new SelectModifierPhase(scene, 1, [ ModifierTier.COMMON, ModifierTier.COMMON, ModifierTier.COMMON ]); - scene.unshiftPhase(selectModifierPhase); - scene.ui.setMode(Mode.MESSAGE).then(() => game.endPhase()); - await game.phaseInterceptor.run(SelectModifierPhase); + modifierSelectHandler.processInput(Button.ACTION); + expect(scene.money).toBe(1000000 - 250); expect(scene.ui.getMode()).to.equal(Mode.MODIFIER_SELECT); expect(modifierSelectHandler.options.length).toEqual(3); }); - it("should generate random modifiers of same tier for reroll with reroll lock", async () => { + it.todo("should generate random modifiers of same tier for reroll with reroll lock", async () => { + game.override.startingModifier([{ name: "LOCK_CAPSULE" }]); + await game.classicMode.startBattle([ Species.ABRA, Species.VOLCARONA ]); + scene.money = 1000000; // Just use fully random seed for this test vi.spyOn(scene, "resetSeed").mockImplementation(() => { - scene.waveSeed = Utils.shiftCharCodes(scene.seed, 5); + scene.waveSeed = shiftCharCodes(scene.seed, 5); Phaser.Math.RND.sow([ scene.waveSeed ]); console.log("Wave Seed:", scene.waveSeed, 5); scene.rngCounter = 0; }); - let selectModifierPhase = new SelectModifierPhase(scene); - scene.pushPhase(selectModifierPhase); - await game.phaseInterceptor.run(SelectModifierPhase); + game.move.select(Moves.FISSURE); + await game.phaseInterceptor.to("SelectModifierPhase"); expect(scene.ui.getMode()).to.equal(Mode.MODIFIER_SELECT); const modifierSelectHandler = scene.ui.handlers.find(h => h instanceof ModifierSelectUiHandler) as ModifierSelectUiHandler; expect(modifierSelectHandler.options.length).toEqual(3); const firstRollTiers: ModifierTier[] = modifierSelectHandler.options.map(o => o.modifierTypeOption.type.tier); - // Simulate selecting reroll with lock - scene.lockModifierTiers = true; - scene.reroll = true; - selectModifierPhase = new SelectModifierPhase(scene, 1, firstRollTiers); - scene.unshiftPhase(selectModifierPhase); - scene.ui.setMode(Mode.MESSAGE).then(() => game.endPhase()); - await game.phaseInterceptor.run(SelectModifierPhase); + // TODO: nagivate ui to reroll with lock capsule enabled expect(scene.ui.getMode()).to.equal(Mode.MODIFIER_SELECT); expect(modifierSelectHandler.options.length).toEqual(3); @@ -125,13 +132,15 @@ describe("SelectModifierPhase", () => { }); it("should generate custom modifiers", async () => { + await game.classicMode.startBattle([ Species.ABRA, Species.VOLCARONA ]); + scene.money = 1000000; const customModifiers: CustomModifierSettings = { guaranteedModifierTypeFuncs: [ modifierTypes.MEMORY_MUSHROOM, modifierTypes.TM_ULTRA, modifierTypes.LEFTOVERS, modifierTypes.AMULET_COIN, modifierTypes.GOLDEN_PUNCH ] }; - const selectModifierPhase = new SelectModifierPhase(scene, 0, undefined, customModifiers); - scene.pushPhase(selectModifierPhase); - await game.phaseInterceptor.run(SelectModifierPhase); - + const selectModifierPhase = new SelectModifierPhase(0, undefined, customModifiers); + scene.unshiftPhase(selectModifierPhase); + game.move.select(Moves.SPLASH); + await game.phaseInterceptor.to("SelectModifierPhase"); expect(scene.ui.getMode()).to.equal(Mode.MODIFIER_SELECT); const modifierSelectHandler = scene.ui.handlers.find(h => h instanceof ModifierSelectUiHandler) as ModifierSelectUiHandler; @@ -144,10 +153,12 @@ describe("SelectModifierPhase", () => { }); it("should generate custom modifier tiers that can upgrade from luck", async () => { + await game.classicMode.startBattle([ Species.ABRA, Species.VOLCARONA ]); + scene.money = 1000000; const customModifiers: CustomModifierSettings = { guaranteedModifierTiers: [ ModifierTier.COMMON, ModifierTier.GREAT, ModifierTier.ULTRA, ModifierTier.ROGUE, ModifierTier.MASTER ] }; - const pokemon = new PlayerPokemon(scene, getPokemonSpecies(Species.BULBASAUR), 10, undefined, 0, undefined, true, 2, undefined, undefined, undefined); + const pokemon = new PlayerPokemon(getPokemonSpecies(Species.BULBASAUR), 10, undefined, 0, undefined, true, 2); // Fill party with max shinies while (scene.getPlayerParty().length > 0) { @@ -155,10 +166,10 @@ describe("SelectModifierPhase", () => { } scene.getPlayerParty().push(pokemon, pokemon, pokemon, pokemon, pokemon, pokemon); - const selectModifierPhase = new SelectModifierPhase(scene, 0, undefined, customModifiers); - scene.pushPhase(selectModifierPhase); - await game.phaseInterceptor.run(SelectModifierPhase); - + const selectModifierPhase = new SelectModifierPhase(0, undefined, customModifiers); + scene.unshiftPhase(selectModifierPhase); + game.move.select(Moves.SPLASH); + await game.phaseInterceptor.to("SelectModifierPhase"); expect(scene.ui.getMode()).to.equal(Mode.MODIFIER_SELECT); const modifierSelectHandler = scene.ui.handlers.find(h => h instanceof ModifierSelectUiHandler) as ModifierSelectUiHandler; @@ -171,12 +182,15 @@ describe("SelectModifierPhase", () => { }); it("should generate custom modifiers and modifier tiers together", async () => { + await game.classicMode.startBattle([ Species.ABRA, Species.VOLCARONA ]); + scene.money = 1000000; const customModifiers: CustomModifierSettings = { guaranteedModifierTypeFuncs: [ modifierTypes.MEMORY_MUSHROOM, modifierTypes.TM_COMMON ], guaranteedModifierTiers: [ ModifierTier.MASTER, ModifierTier.MASTER ] }; - const selectModifierPhase = new SelectModifierPhase(scene, 0, undefined, customModifiers); - scene.pushPhase(selectModifierPhase); + const selectModifierPhase = new SelectModifierPhase(0, undefined, customModifiers); + scene.unshiftPhase(selectModifierPhase); + game.move.select(Moves.SPLASH); await game.phaseInterceptor.run(SelectModifierPhase); @@ -190,13 +204,16 @@ describe("SelectModifierPhase", () => { }); it("should fill remaining modifiers if fillRemaining is true with custom modifiers", async () => { + await game.classicMode.startBattle([ Species.ABRA, Species.VOLCARONA ]); + scene.money = 1000000; const customModifiers: CustomModifierSettings = { guaranteedModifierTypeFuncs: [ modifierTypes.MEMORY_MUSHROOM ], guaranteedModifierTiers: [ ModifierTier.MASTER ], fillRemaining: true }; - const selectModifierPhase = new SelectModifierPhase(scene, 0, undefined, customModifiers); - scene.pushPhase(selectModifierPhase); + const selectModifierPhase = new SelectModifierPhase(0, undefined, customModifiers); + scene.unshiftPhase(selectModifierPhase); + game.move.select(Moves.SPLASH); await game.phaseInterceptor.run(SelectModifierPhase); diff --git a/src/test/reload.test.ts b/src/test/reload.test.ts index 3b29cadf8e7..b5f66630606 100644 --- a/src/test/reload.test.ts +++ b/src/test/reload.test.ts @@ -1,13 +1,13 @@ import { GameModes } from "#app/game-mode"; import { pokerogueApi } from "#app/plugins/api/pokerogue-api"; -import OptionSelectUiHandler from "#app/ui/settings/option-select-ui-handler"; +import type OptionSelectUiHandler from "#app/ui/settings/option-select-ui-handler"; import { Mode } from "#app/ui/ui"; import { Biome } from "#enums/biome"; import { Button } from "#enums/buttons"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import GameManager from "#test/utils/gameManager"; -import { MockClock } from "#test/utils/mocks/mockClock"; +import type { MockClock } from "#test/utils/mocks/mockClock"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; describe("Reload", () => { diff --git a/src/test/settingMenu/rebinding_setting.test.ts b/src/test/settingMenu/rebinding_setting.test.ts index 37cf8032897..cae2df363d8 100644 --- a/src/test/settingMenu/rebinding_setting.test.ts +++ b/src/test/settingMenu/rebinding_setting.test.ts @@ -1,6 +1,6 @@ import cfg_keyboard_qwerty from "#app/configs/inputs/cfg_keyboard_qwerty"; import { getKeyWithKeycode, getKeyWithSettingName } from "#app/configs/inputs/configHandler"; -import { InterfaceConfig } from "#app/inputs-controller"; +import type { InterfaceConfig } from "#app/inputs-controller"; import { SettingKeyboard } from "#app/system/settings/settings-keyboard"; import { deepCopy } from "#app/utils"; import { Button } from "#enums/buttons"; diff --git a/src/test/system/game_data.test.ts b/src/test/system/game_data.test.ts index 1e349470302..ad24c40f445 100644 --- a/src/test/system/game_data.test.ts +++ b/src/test/system/game_data.test.ts @@ -1,6 +1,6 @@ import * as BattleScene from "#app/battle-scene"; import { pokerogueApi } from "#app/plugins/api/pokerogue-api"; -import { SessionSaveData } from "#app/system/game-data"; +import type { SessionSaveData } from "#app/system/game-data"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import GameManager from "#test/utils/gameManager"; @@ -41,7 +41,7 @@ describe("System - Game Data", () => { it("should return [true, true] if bypassLogin is true", async () => { vi.spyOn(BattleScene, "bypassLogin", "get").mockReturnValue(true); - const result = await game.scene.gameData.tryClearSession(game.scene, 0); + const result = await game.scene.gameData.tryClearSession(0); expect(result).toEqual([ true, true ]); }); @@ -49,7 +49,7 @@ describe("System - Game Data", () => { it("should return [true, true] if successful", async () => { vi.spyOn(pokerogueApi.savedata.session, "clear").mockResolvedValue({ success: true }); - const result = await game.scene.gameData.tryClearSession(game.scene, 0); + const result = await game.scene.gameData.tryClearSession(0); expect(result).toEqual([ true, true ]); expect(account.updateUserInfo).toHaveBeenCalled(); @@ -58,7 +58,7 @@ describe("System - Game Data", () => { it("should return [true, false] if not successful", async () => { vi.spyOn(pokerogueApi.savedata.session, "clear").mockResolvedValue({ success: false }); - const result = await game.scene.gameData.tryClearSession(game.scene, 0); + const result = await game.scene.gameData.tryClearSession(0); expect(result).toEqual([ true, false ]); expect(account.updateUserInfo).toHaveBeenCalled(); @@ -67,7 +67,7 @@ describe("System - Game Data", () => { it("should return [false, false] session is out of date", async () => { vi.spyOn(pokerogueApi.savedata.session, "clear").mockResolvedValue({ error: "session out of date" }); - const result = await game.scene.gameData.tryClearSession(game.scene, 0); + const result = await game.scene.gameData.tryClearSession(0); expect(result).toEqual([ false, false ]); expect(account.updateUserInfo).toHaveBeenCalled(); diff --git a/src/test/ui/starter-select.test.ts b/src/test/ui/starter-select.test.ts index 15af3619ed3..f80990f6dc3 100644 --- a/src/test/ui/starter-select.test.ts +++ b/src/test/ui/starter-select.test.ts @@ -4,11 +4,11 @@ import { allSpecies } from "#app/data/pokemon-species"; import { GameModes } from "#app/game-mode"; import { EncounterPhase } from "#app/phases/encounter-phase"; import { SelectStarterPhase } from "#app/phases/select-starter-phase"; -import { TitlePhase } from "#app/phases/title-phase"; -import { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; -import SaveSlotSelectUiHandler from "#app/ui/save-slot-select-ui-handler"; -import OptionSelectUiHandler from "#app/ui/settings/option-select-ui-handler"; -import StarterSelectUiHandler from "#app/ui/starter-select-ui-handler"; +import type { TitlePhase } from "#app/phases/title-phase"; +import type { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; +import type SaveSlotSelectUiHandler from "#app/ui/save-slot-select-ui-handler"; +import type OptionSelectUiHandler from "#app/ui/settings/option-select-ui-handler"; +import type StarterSelectUiHandler from "#app/ui/starter-select-ui-handler"; import { Mode } from "#app/ui/ui"; import { Abilities } from "#enums/abilities"; import { Button } from "#enums/buttons"; diff --git a/src/test/ui/transfer-item.test.ts b/src/test/ui/transfer-item.test.ts index 0fbd4a52c61..762db7fc7ce 100644 --- a/src/test/ui/transfer-item.test.ts +++ b/src/test/ui/transfer-item.test.ts @@ -9,7 +9,7 @@ import PartyUiHandler, { PartyUiMode } from "#app/ui/party-ui-handler"; import { Mode } from "#app/ui/ui"; import GameManager from "#test/utils/gameManager"; import Phaser from "phaser"; -import BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext"; +import type BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; diff --git a/src/test/ui/type-hints.test.ts b/src/test/ui/type-hints.test.ts index 2977262dda7..9046d82c1df 100644 --- a/src/test/ui/type-hints.test.ts +++ b/src/test/ui/type-hints.test.ts @@ -7,7 +7,7 @@ import { Mode } from "#app/ui/ui"; import GameManager from "#test/utils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; -import MockText from "#test/utils/mocks/mocksContainer/mockText"; +import type MockText from "#test/utils/mocks/mocksContainer/mockText"; import i18next from "i18next"; describe("UI - Type Hints", () => { diff --git a/src/test/utils/gameManager.ts b/src/test/utils/gameManager.ts index fe8d06c2c3b..9fda3afa56e 100644 --- a/src/test/utils/gameManager.ts +++ b/src/test/utils/gameManager.ts @@ -2,7 +2,7 @@ import { updateUserInfo } from "#app/account"; import { BattlerIndex } from "#app/battle"; import BattleScene from "#app/battle-scene"; import { getMoveTargets } from "#app/data/move"; -import { EnemyPokemon, PlayerPokemon } from "#app/field/pokemon"; +import type { EnemyPokemon, PlayerPokemon } from "#app/field/pokemon"; import Trainer from "#app/field/trainer"; import { GameModes, getGameMode } from "#app/game-mode"; import { ModifierTypeOption, modifierTypes } from "#app/modifier/modifier-type"; @@ -17,28 +17,28 @@ import { MovePhase } from "#app/phases/move-phase"; import { MysteryEncounterPhase } from "#app/phases/mystery-encounter-phases"; import { NewBattlePhase } from "#app/phases/new-battle-phase"; import { SelectStarterPhase } from "#app/phases/select-starter-phase"; -import { SelectTargetPhase } from "#app/phases/select-target-phase"; +import type { SelectTargetPhase } from "#app/phases/select-target-phase"; import { TitlePhase } from "#app/phases/title-phase"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; import { TurnInitPhase } from "#app/phases/turn-init-phase"; import { TurnStartPhase } from "#app/phases/turn-start-phase"; import ErrorInterceptor from "#app/test/utils/errorInterceptor"; -import InputsHandler from "#app/test/utils/inputsHandler"; -import BattleMessageUiHandler from "#app/ui/battle-message-ui-handler"; -import CommandUiHandler from "#app/ui/command-ui-handler"; -import ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; -import PartyUiHandler from "#app/ui/party-ui-handler"; -import TargetSelectUiHandler from "#app/ui/target-select-ui-handler"; +import type InputsHandler from "#app/test/utils/inputsHandler"; +import type BattleMessageUiHandler from "#app/ui/battle-message-ui-handler"; +import type CommandUiHandler from "#app/ui/command-ui-handler"; +import type ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; +import type PartyUiHandler from "#app/ui/party-ui-handler"; +import type TargetSelectUiHandler from "#app/ui/target-select-ui-handler"; import { Mode } from "#app/ui/ui"; import { isNullOrUndefined } from "#app/utils"; import { BattleStyle } from "#enums/battle-style"; import { Button } from "#enums/buttons"; import { ExpGainsSpeed } from "#enums/exp-gains-speed"; import { ExpNotification } from "#enums/exp-notification"; -import { Moves } from "#enums/moves"; -import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import type { Moves } from "#enums/moves"; +import type { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { PlayerGender } from "#enums/player-gender"; -import { Species } from "#enums/species"; +import type { Species } from "#enums/species"; import { generateStarter, waitUntil } from "#test/utils/gameManagerUtils"; import GameWrapper from "#test/utils/gameWrapper"; import { ChallengeModeHelper } from "#test/utils/helpers/challengeModeHelper"; @@ -173,8 +173,8 @@ export default class GameManager { this.onNextPrompt("TitlePhase", Mode.TITLE, () => { this.scene.gameMode = getGameMode(mode); const starters = generateStarter(this.scene, species); - const selectStarterPhase = new SelectStarterPhase(this.scene); - this.scene.pushPhase(new EncounterPhase(this.scene, false)); + const selectStarterPhase = new SelectStarterPhase(); + this.scene.pushPhase(new EncounterPhase(false)); selectStarterPhase.initBattle(starters); }); @@ -206,8 +206,8 @@ export default class GameManager { this.onNextPrompt("TitlePhase", Mode.TITLE, () => { this.scene.gameMode = getGameMode(GameModes.CLASSIC); const starters = generateStarter(this.scene, species); - const selectStarterPhase = new SelectStarterPhase(this.scene); - this.scene.pushPhase(new EncounterPhase(this.scene, false)); + const selectStarterPhase = new SelectStarterPhase(); + this.scene.pushPhase(new EncounterPhase(false)); selectStarterPhase.initBattle(starters); }, () => this.isCurrentPhase(EncounterPhase)); @@ -375,7 +375,7 @@ export default class GameManager { exportSaveToTest(): Promise { const saveKey = "x0i2O7WRiANTqPmZ"; return new Promise(async (resolve) => { - const sessionSaveData = this.scene.gameData.getSessionSaveData(this.scene); + const sessionSaveData = this.scene.gameData.getSessionSaveData(); const encryptedSaveData = AES.encrypt(JSON.stringify(sessionSaveData), saveKey).toString(); resolve(encryptedSaveData); }); @@ -403,7 +403,7 @@ export default class GameManager { async killPokemon(pokemon: PlayerPokemon | EnemyPokemon) { return new Promise(async (resolve, reject) => { pokemon.hp = 0; - this.scene.pushPhase(new FaintPhase(this.scene, pokemon.getBattlerIndex(), true)); + this.scene.pushPhase(new FaintPhase(pokemon.getBattlerIndex(), true)); await this.phaseInterceptor.to(FaintPhase).catch((e) => reject(e)); resolve(); }); diff --git a/src/test/utils/gameManagerUtils.ts b/src/test/utils/gameManagerUtils.ts index 0c70bcf7f18..757874f0c17 100644 --- a/src/test/utils/gameManagerUtils.ts +++ b/src/test/utils/gameManagerUtils.ts @@ -1,13 +1,14 @@ -import BattleScene from "#app/battle-scene"; +import Battle, { BattleType } from "#app/battle"; +import type BattleScene from "#app/battle-scene"; import { getDailyRunStarters } from "#app/data/daily-run"; import { Gender } from "#app/data/gender"; import { getPokemonSpecies, getPokemonSpeciesForm } from "#app/data/pokemon-species"; -import { Moves } from "#app/enums/moves"; import { PlayerPokemon } from "#app/field/pokemon"; import { GameModes, getGameMode } from "#app/game-mode"; -import { Starter } from "#app/ui/starter-select-ui-handler"; -import { Species } from "#enums/species"; -import Battle, { BattleType } from "#app/battle"; +import type { StarterMoveset } from "#app/system/game-data"; +import type { Starter } from "#app/ui/starter-select-ui-handler"; +import { Moves } from "#enums/moves"; +import type { Species } from "#enums/species"; /** Function to convert Blob to string */ export function blobToString(blob) { @@ -31,9 +32,9 @@ export function holdOn(ms: number) { return new Promise(resolve => setTimeout(resolve, ms)); } -export function generateStarter(scene, species?: Species[]) { +export function generateStarter(scene: BattleScene, species?: Species[]): Starter[] { const seed = "test"; - const starters = getTestRunStarters(scene, seed, species); + const starters = getTestRunStarters(seed, species); const startingLevel = scene.gameMode.getStartingLevel(); for (const starter of starters) { const starterProps = scene.gameData.getSpeciesDexAttrProps(starter.species, starter.dexAttr); @@ -42,14 +43,18 @@ export function generateStarter(scene, species?: Species[]) { ? !starterProps.female ? Gender.MALE : Gender.FEMALE : Gender.GENDERLESS; const starterPokemon = scene.addPlayerPokemon(starter.species, startingLevel, starter.abilityIndex, starterFormIndex, starterGender, starterProps.shiny, starterProps.variant, undefined, starter.nature); - starter.moveset = starterPokemon.moveset; + const moveset: Moves[] = []; + starterPokemon.moveset.forEach((move) => { + moveset.push(move!.getMove().id); + }); + starter.moveset = moveset as StarterMoveset; } return starters; } -function getTestRunStarters(scene, seed, species) { +function getTestRunStarters(seed: string, species?: Species[]): Starter[] { if (!species) { - return getDailyRunStarters(scene, seed); + return getDailyRunStarters(seed); } const starters: Starter[] = []; const startingLevel = getGameMode(GameModes.CLASSIC).getStartingLevel(); @@ -57,7 +62,7 @@ function getTestRunStarters(scene, seed, species) { for (const specie of species) { const starterSpeciesForm = getPokemonSpeciesForm(specie, 0); const starterSpecies = getPokemonSpecies(starterSpeciesForm.speciesId); - const pokemon = new PlayerPokemon(scene, starterSpecies, startingLevel, undefined, 0, undefined, undefined, undefined, undefined, undefined, undefined); + const pokemon = new PlayerPokemon(starterSpecies, startingLevel, undefined, 0); const starter: Starter = { species: starterSpecies, dexAttr: pokemon.getDexAttr(), @@ -71,7 +76,7 @@ function getTestRunStarters(scene, seed, species) { return starters; } -export function waitUntil(truth) { +export function waitUntil(truth): Promise { return new Promise(resolve => { const interval = setInterval(() => { if (truth()) { @@ -83,7 +88,7 @@ export function waitUntil(truth) { } /** Get the index of `move` from the moveset of the pokemon on the player's field at location `pokemonIndex` */ -export function getMovePosition(scene: BattleScene, pokemonIndex: 0 | 1, move: Moves) { +export function getMovePosition(scene: BattleScene, pokemonIndex: 0 | 1, move: Moves): number { const playerPokemon = scene.getPlayerField()[pokemonIndex]; const moveSet = playerPokemon.getMoveset(); const index = moveSet.findIndex((m) => m?.moveId === move && m?.ppUsed < m?.getMovePp()); @@ -93,10 +98,8 @@ export function getMovePosition(scene: BattleScene, pokemonIndex: 0 | 1, move: M /** * Useful for populating party, wave index, etc. without having to spin up and run through an entire EncounterPhase - * @param scene - * @param species */ -export function initSceneWithoutEncounterPhase(scene: BattleScene, species?: Species[]) { +export function initSceneWithoutEncounterPhase(scene: BattleScene, species?: Species[]): void { const starters = generateStarter(scene, species); starters.forEach((starter) => { const starterProps = scene.gameData.getSpeciesDexAttrProps(starter.species, starter.dexAttr); diff --git a/src/test/utils/helpers/challengeModeHelper.ts b/src/test/utils/helpers/challengeModeHelper.ts index 5210d942d5a..4b5a38e72dc 100644 --- a/src/test/utils/helpers/challengeModeHelper.ts +++ b/src/test/utils/helpers/challengeModeHelper.ts @@ -1,15 +1,15 @@ import { BattleStyle } from "#app/enums/battle-style"; -import { Species } from "#app/enums/species"; +import type { Species } from "#app/enums/species"; import overrides from "#app/overrides"; import { EncounterPhase } from "#app/phases/encounter-phase"; import { SelectStarterPhase } from "#app/phases/select-starter-phase"; import { Mode } from "#app/ui/ui"; import { generateStarter } from "../gameManagerUtils"; import { GameManagerHelper } from "./gameManagerHelper"; -import { Challenge } from "#app/data/challenge"; +import type { Challenge } from "#app/data/challenge"; import { CommandPhase } from "#app/phases/command-phase"; import { TurnInitPhase } from "#app/phases/turn-init-phase"; -import { Challenges } from "#enums/challenges"; +import type { Challenges } from "#enums/challenges"; import { copyChallenge } from "data/challenge"; /** @@ -45,8 +45,8 @@ export class ChallengeModeHelper extends GameManagerHelper { this.game.onNextPrompt("TitlePhase", Mode.TITLE, () => { this.game.scene.gameMode.challenges = this.challenges; const starters = generateStarter(this.game.scene, species); - const selectStarterPhase = new SelectStarterPhase(this.game.scene); - this.game.scene.pushPhase(new EncounterPhase(this.game.scene, false)); + const selectStarterPhase = new SelectStarterPhase(); + this.game.scene.pushPhase(new EncounterPhase(false)); selectStarterPhase.initBattle(starters); }); diff --git a/src/test/utils/helpers/classicModeHelper.ts b/src/test/utils/helpers/classicModeHelper.ts index 41a21a52b72..40c3d518f1c 100644 --- a/src/test/utils/helpers/classicModeHelper.ts +++ b/src/test/utils/helpers/classicModeHelper.ts @@ -1,5 +1,5 @@ import { BattleStyle } from "#app/enums/battle-style"; -import { Species } from "#app/enums/species"; +import type { Species } from "#app/enums/species"; import { GameModes, getGameMode } from "#app/game-mode"; import overrides from "#app/overrides"; import { CommandPhase } from "#app/phases/command-phase"; @@ -30,8 +30,8 @@ export class ClassicModeHelper extends GameManagerHelper { this.game.onNextPrompt("TitlePhase", Mode.TITLE, () => { this.game.scene.gameMode = getGameMode(GameModes.CLASSIC); const starters = generateStarter(this.game.scene, species); - const selectStarterPhase = new SelectStarterPhase(this.game.scene); - this.game.scene.pushPhase(new EncounterPhase(this.game.scene, false)); + const selectStarterPhase = new SelectStarterPhase(); + this.game.scene.pushPhase(new EncounterPhase(false)); selectStarterPhase.initBattle(starters); }); diff --git a/src/test/utils/helpers/dailyModeHelper.ts b/src/test/utils/helpers/dailyModeHelper.ts index 813544f85df..bd8c6ebb920 100644 --- a/src/test/utils/helpers/dailyModeHelper.ts +++ b/src/test/utils/helpers/dailyModeHelper.ts @@ -5,7 +5,7 @@ import { CommandPhase } from "#app/phases/command-phase"; import { EncounterPhase } from "#app/phases/encounter-phase"; import { TitlePhase } from "#app/phases/title-phase"; import { TurnInitPhase } from "#app/phases/turn-init-phase"; -import SaveSlotSelectUiHandler from "#app/ui/save-slot-select-ui-handler"; +import type SaveSlotSelectUiHandler from "#app/ui/save-slot-select-ui-handler"; import { Mode } from "#app/ui/ui"; import { GameManagerHelper } from "./gameManagerHelper"; @@ -26,7 +26,7 @@ export class DailyModeHelper extends GameManagerHelper { } this.game.onNextPrompt("TitlePhase", Mode.TITLE, () => { - const titlePhase = new TitlePhase(this.game.scene); + const titlePhase = new TitlePhase(); titlePhase.initDailyRun(); }); diff --git a/src/test/utils/helpers/gameManagerHelper.ts b/src/test/utils/helpers/gameManagerHelper.ts index 432e6fdf853..85d7bc0df97 100644 --- a/src/test/utils/helpers/gameManagerHelper.ts +++ b/src/test/utils/helpers/gameManagerHelper.ts @@ -1,4 +1,4 @@ -import GameManager from "../gameManager"; +import type GameManager from "../gameManager"; /** * Base class for defining all game helpers. diff --git a/src/test/utils/helpers/modifiersHelper.ts b/src/test/utils/helpers/modifiersHelper.ts index c38bf5770a8..22500c87906 100644 --- a/src/test/utils/helpers/modifiersHelper.ts +++ b/src/test/utils/helpers/modifiersHelper.ts @@ -1,6 +1,7 @@ import { expect } from "vitest"; import { GameManagerHelper } from "./gameManagerHelper"; -import { itemPoolChecks, ModifierTypeKeys } from "#app/modifier/modifier-type"; +import type { ModifierTypeKeys } from "#app/modifier/modifier-type"; +import { itemPoolChecks } from "#app/modifier/modifier-type"; export class ModifierHelper extends GameManagerHelper { /** diff --git a/src/test/utils/helpers/moveHelper.ts b/src/test/utils/helpers/moveHelper.ts index 68d3b3d51d7..4b2069ee881 100644 --- a/src/test/utils/helpers/moveHelper.ts +++ b/src/test/utils/helpers/moveHelper.ts @@ -1,8 +1,8 @@ -import { BattlerIndex } from "#app/battle"; +import type { BattlerIndex } from "#app/battle"; import type Pokemon from "#app/field/pokemon"; import { PokemonMove } from "#app/field/pokemon"; import Overrides from "#app/overrides"; -import { CommandPhase } from "#app/phases/command-phase"; +import type { CommandPhase } from "#app/phases/command-phase"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; import { Command } from "#app/ui/command-ui-handler"; import { Mode } from "#app/ui/ui"; diff --git a/src/test/utils/helpers/overridesHelper.ts b/src/test/utils/helpers/overridesHelper.ts index 1c05f92a334..9af811561b7 100644 --- a/src/test/utils/helpers/overridesHelper.ts +++ b/src/test/utils/helpers/overridesHelper.ts @@ -1,15 +1,17 @@ -import { Variant } from "#app/data/variant"; +import type { Variant } from "#app/data/variant"; import { Weather } from "#app/data/weather"; import { Abilities } from "#app/enums/abilities"; import * as GameMode from "#app/game-mode"; -import { GameModes, getGameMode } from "#app/game-mode"; -import { ModifierOverride } from "#app/modifier/modifier-type"; -import Overrides, { BattleStyle } from "#app/overrides"; -import { Unlockables } from "#app/system/unlockables"; +import type { GameModes } from "#app/game-mode"; +import { getGameMode } from "#app/game-mode"; +import type { ModifierOverride } from "#app/modifier/modifier-type"; +import type { BattleStyle } from "#app/overrides"; +import Overrides from "#app/overrides"; +import type { Unlockables } from "#app/system/unlockables"; import { Biome } from "#enums/biome"; import { Moves } from "#enums/moves"; -import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import type { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import type { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { Species } from "#enums/species"; import { StatusEffect } from "#enums/status-effect"; import type { WeatherType } from "#enums/weather-type"; diff --git a/src/test/utils/helpers/reloadHelper.ts b/src/test/utils/helpers/reloadHelper.ts index e0e538120cc..5f516584873 100644 --- a/src/test/utils/helpers/reloadHelper.ts +++ b/src/test/utils/helpers/reloadHelper.ts @@ -5,8 +5,8 @@ import { vi } from "vitest"; import { BattleStyle } from "#app/enums/battle-style"; import { CommandPhase } from "#app/phases/command-phase"; import { TurnInitPhase } from "#app/phases/turn-init-phase"; -import { SessionSaveData } from "#app/system/game-data"; -import GameManager from "../gameManager"; +import type { SessionSaveData } from "#app/system/game-data"; +import type GameManager from "../gameManager"; /** * Helper to allow reloading sessions in unit tests. @@ -18,9 +18,9 @@ export class ReloadHelper extends GameManagerHelper { super(game); // Whenever the game saves the session, save it to the reloadHelper instead - vi.spyOn(game.scene.gameData, "saveAll").mockImplementation((scene) => { + vi.spyOn(game.scene.gameData, "saveAll").mockImplementation(() => { return new Promise((resolve, reject) => { - this.sessionData = scene.gameData.getSessionSaveData(scene); + this.sessionData = game.scene.gameData.getSessionSaveData(); resolve(true); }); }); @@ -33,7 +33,7 @@ export class ReloadHelper extends GameManagerHelper { */ async reloadSession() : Promise { const scene = this.game.scene; - const titlePhase = new TitlePhase(scene); + const titlePhase = new TitlePhase(); scene.clearPhaseQueue(); diff --git a/src/test/utils/inputsHandler.ts b/src/test/utils/inputsHandler.ts index bf690d5d74c..8b8a89e45dc 100644 --- a/src/test/utils/inputsHandler.ts +++ b/src/test/utils/inputsHandler.ts @@ -1,6 +1,6 @@ -import BattleScene from "#app/battle-scene"; +import type BattleScene from "#app/battle-scene"; import pad_xbox360 from "#app/configs/inputs/pad_xbox360"; -import { InputsController } from "#app/inputs-controller"; +import type { InputsController } from "#app/inputs-controller"; import TouchControl from "#app/touch-controls"; import { holdOn } from "#test/utils/gameManagerUtils"; import fs from "fs"; @@ -58,7 +58,7 @@ export default class InputsHandler { } init(): void { - const touchControl = new TouchControl(this.scene); + const touchControl = new TouchControl(); touchControl.deactivatePressedKey(); //test purpose this.events = this.inputController.events; this.scene.input.gamepad?.emit("connected", this.fakePad); diff --git a/src/test/utils/mocks/mockGameObjectCreator.ts b/src/test/utils/mocks/mockGameObjectCreator.ts index 27860be0cec..caf98b79a9f 100644 --- a/src/test/utils/mocks/mockGameObjectCreator.ts +++ b/src/test/utils/mocks/mockGameObjectCreator.ts @@ -1,5 +1,5 @@ import MockGraphics from "./mocksContainer/mockGraphics"; -import MockTextureManager from "./mockTextureManager"; +import type MockTextureManager from "./mockTextureManager"; export class MockGameObjectCreator { private readonly textureManager: MockTextureManager; diff --git a/src/test/utils/mocks/mockTextureManager.ts b/src/test/utils/mocks/mockTextureManager.ts index ce19d6b6432..39066561f25 100644 --- a/src/test/utils/mocks/mockTextureManager.ts +++ b/src/test/utils/mocks/mockTextureManager.ts @@ -6,7 +6,7 @@ import MockRectangle from "#test/utils/mocks/mocksContainer/mockRectangle"; import MockSprite from "#test/utils/mocks/mocksContainer/mockSprite"; import MockText from "#test/utils/mocks/mocksContainer/mockText"; import MockTexture from "#test/utils/mocks/mocksContainer/mockTexture"; -import { MockGameObject } from "./mockGameObject"; +import type { MockGameObject } from "./mockGameObject"; import { MockVideoGameObject } from "./mockVideoGameObject"; /** diff --git a/src/test/utils/mocks/mockVideoGameObject.ts b/src/test/utils/mocks/mockVideoGameObject.ts index d11fb5a44ce..74b05626616 100644 --- a/src/test/utils/mocks/mockVideoGameObject.ts +++ b/src/test/utils/mocks/mockVideoGameObject.ts @@ -1,4 +1,4 @@ -import { MockGameObject } from "./mockGameObject"; +import type { MockGameObject } from "./mockGameObject"; /** Mocks video-related stuff */ export class MockVideoGameObject implements MockGameObject { diff --git a/src/test/utils/mocks/mocksContainer/mockContainer.ts b/src/test/utils/mocks/mocksContainer/mockContainer.ts index 05dad327dc6..f0198535e7b 100644 --- a/src/test/utils/mocks/mocksContainer/mockContainer.ts +++ b/src/test/utils/mocks/mocksContainer/mockContainer.ts @@ -1,5 +1,5 @@ -import MockTextureManager from "#test/utils/mocks/mockTextureManager"; -import { MockGameObject } from "../mockGameObject"; +import type MockTextureManager from "#test/utils/mocks/mockTextureManager"; +import type { MockGameObject } from "../mockGameObject"; export default class MockContainer implements MockGameObject { protected x; diff --git a/src/test/utils/mocks/mocksContainer/mockGraphics.ts b/src/test/utils/mocks/mocksContainer/mockGraphics.ts index b20faf4ed6a..2b4a33b5e4c 100644 --- a/src/test/utils/mocks/mocksContainer/mockGraphics.ts +++ b/src/test/utils/mocks/mocksContainer/mockGraphics.ts @@ -1,4 +1,4 @@ -import { MockGameObject } from "../mockGameObject"; +import type { MockGameObject } from "../mockGameObject"; export default class MockGraphics implements MockGameObject { private scene; diff --git a/src/test/utils/mocks/mocksContainer/mockRectangle.ts b/src/test/utils/mocks/mocksContainer/mockRectangle.ts index 48cd2cb1380..e4bca76b8fc 100644 --- a/src/test/utils/mocks/mocksContainer/mockRectangle.ts +++ b/src/test/utils/mocks/mocksContainer/mockRectangle.ts @@ -1,4 +1,4 @@ -import { MockGameObject } from "../mockGameObject"; +import type { MockGameObject } from "../mockGameObject"; export default class MockRectangle implements MockGameObject { private fillColor; diff --git a/src/test/utils/mocks/mocksContainer/mockSprite.ts b/src/test/utils/mocks/mocksContainer/mockSprite.ts index e726fec454d..6d851330a5e 100644 --- a/src/test/utils/mocks/mocksContainer/mockSprite.ts +++ b/src/test/utils/mocks/mocksContainer/mockSprite.ts @@ -1,5 +1,5 @@ import Phaser from "phaser"; -import { MockGameObject } from "../mockGameObject"; +import type { MockGameObject } from "../mockGameObject"; import Sprite = Phaser.GameObjects.Sprite; import Frame = Phaser.Textures.Frame; diff --git a/src/test/utils/mocks/mocksContainer/mockText.ts b/src/test/utils/mocks/mocksContainer/mockText.ts index faa32ff8a06..604679af372 100644 --- a/src/test/utils/mocks/mocksContainer/mockText.ts +++ b/src/test/utils/mocks/mocksContainer/mockText.ts @@ -1,5 +1,5 @@ import UI from "#app/ui/ui"; -import { MockGameObject } from "../mockGameObject"; +import type { MockGameObject } from "../mockGameObject"; export default class MockText implements MockGameObject { private phaserText; diff --git a/src/test/utils/mocks/mocksContainer/mockTexture.ts b/src/test/utils/mocks/mocksContainer/mockTexture.ts index bedd1d2c84a..57c87df23be 100644 --- a/src/test/utils/mocks/mocksContainer/mockTexture.ts +++ b/src/test/utils/mocks/mocksContainer/mockTexture.ts @@ -1,5 +1,5 @@ -import MockTextureManager from "#test/utils/mocks/mockTextureManager"; -import { MockGameObject } from "../mockGameObject"; +import type MockTextureManager from "#test/utils/mocks/mockTextureManager"; +import type { MockGameObject } from "../mockGameObject"; /** diff --git a/src/test/utils/phaseInterceptor.ts b/src/test/utils/phaseInterceptor.ts index 13750609004..d60e0e78373 100644 --- a/src/test/utils/phaseInterceptor.ts +++ b/src/test/utils/phaseInterceptor.ts @@ -510,7 +510,13 @@ export default class PhaseInterceptor { const currentHandler = this.scene.ui.getHandler(); if (expireFn) { this.prompts.shift(); - } else if (currentMode === actionForNextPrompt.mode && currentPhase === actionForNextPrompt.phaseTarget && currentHandler.active && (!actionForNextPrompt.awaitingActionInput || (actionForNextPrompt.awaitingActionInput && currentHandler.awaitingActionInput))) { + } else if ( + currentMode === actionForNextPrompt.mode + && currentPhase === actionForNextPrompt.phaseTarget + && currentHandler.active + && (!actionForNextPrompt.awaitingActionInput + || (actionForNextPrompt.awaitingActionInput && currentHandler.awaitingActionInput)) + ) { const prompt = this.prompts.shift(); if (prompt?.callback) { prompt.callback(); diff --git a/src/test/vitest.setup.ts b/src/test/vitest.setup.ts index 0b83d112522..eb2c1e4b9cf 100644 --- a/src/test/vitest.setup.ts +++ b/src/test/vitest.setup.ts @@ -19,11 +19,13 @@ process.env.TZ = "UTC"; /** Mock the override import to always return default values, ignoring any custom overrides. */ vi.mock("#app/overrides", async (importOriginal) => { + // eslint-disable-next-line @typescript-eslint/consistent-type-imports const { defaultOverrides } = await importOriginal(); return { default: defaultOverrides, defaultOverrides, + // eslint-disable-next-line @typescript-eslint/consistent-type-imports } satisfies typeof import("#app/overrides"); }); diff --git a/src/timed-event-manager.ts b/src/timed-event-manager.ts index 926da91b352..216900e8f58 100644 --- a/src/timed-event-manager.ts +++ b/src/timed-event-manager.ts @@ -1,9 +1,9 @@ -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { TextStyle, addTextObject } from "#app/ui/text"; -import { nil } from "#app/utils"; +import type { nil } from "#app/utils"; import i18next from "i18next"; import { Species } from "#enums/species"; -import { WeatherPoolEntry } from "#app/data/weather"; +import type { WeatherPoolEntry } from "#app/data/weather"; import { WeatherType } from "#enums/weather-type"; export enum EventType { @@ -129,9 +129,9 @@ export class TimedEventDisplay extends Phaser.GameObjects.Container { private availableWidth: number; private eventTimer: NodeJS.Timeout | null; - constructor(scene: BattleScene, x: number, y: number, event?: TimedEvent) { - super(scene, x, y); - this.availableWidth = scene.scaledCanvas.width; + constructor(x: number, y: number, event?: TimedEvent) { + super(globalScene, x, y); + this.availableWidth = globalScene.scaledCanvas.width; this.event = event; this.setVisible(false); } @@ -167,14 +167,13 @@ export class TimedEventDisplay extends Phaser.GameObjects.Container { console.log(this.event.bannerKey); const padding = 5; const showTimer = this.event.eventType !== EventType.NO_TIMER_DISPLAY; - const yPosition = this.scene.game.canvas.height / 6 - padding - (showTimer ? 10 : 0) - (this.event.yOffset ?? 0); - this.banner = new Phaser.GameObjects.Image(this.scene, this.availableWidth / 2, yPosition - padding, key); + const yPosition = globalScene.game.canvas.height / 6 - padding - (showTimer ? 10 : 0) - (this.event.yOffset ?? 0); + this.banner = new Phaser.GameObjects.Image(globalScene, this.availableWidth / 2, yPosition - padding, key); this.banner.setName("img-event-banner"); this.banner.setOrigin(0.5, 1); this.banner.setScale(this.event.scale ?? 0.18); if (showTimer) { this.eventTimerText = addTextObject( - this.scene, this.banner.x, this.banner.y + 2, this.timeToGo(this.event.endDate), diff --git a/src/touch-controls.ts b/src/touch-controls.ts index 93032ce59fe..db2ae223d3f 100644 --- a/src/touch-controls.ts +++ b/src/touch-controls.ts @@ -1,6 +1,6 @@ +import { globalScene } from "#app/global-scene"; import { Button } from "#enums/buttons"; import EventEmitter = Phaser.Events.EventEmitter; -import BattleScene from "./battle-scene"; const repeatInputDelayMillis = 250; @@ -13,8 +13,8 @@ export default class TouchControl { /** Whether the last touch event has finished before disabling */ private finishedLastTouch: boolean = false; - constructor(scene: BattleScene) { - this.events = scene.game.events; + constructor() { + this.events = globalScene.game.events; this.init(); } diff --git a/src/tutorial.ts b/src/tutorial.ts index 3934ffee57f..b5f688c11fb 100644 --- a/src/tutorial.ts +++ b/src/tutorial.ts @@ -1,6 +1,6 @@ -import BattleScene from "./battle-scene"; +import { globalScene } from "#app/global-scene"; import AwaitableUiHandler from "./ui/awaitable-ui-handler"; -import UiHandler from "./ui/ui-handler"; +import type UiHandler from "./ui/ui-handler"; import { Mode } from "./ui/ui"; import i18next from "i18next"; import Overrides from "#app/overrides"; @@ -17,50 +17,50 @@ export enum Tutorial { } const tutorialHandlers = { - [Tutorial.Intro]: (scene: BattleScene) => { + [Tutorial.Intro]: () => { return new Promise(resolve => { - scene.ui.showText(i18next.t("tutorial:intro"), null, () => resolve(), null, true); + globalScene.ui.showText(i18next.t("tutorial:intro"), null, () => resolve(), null, true); }); }, - [Tutorial.Access_Menu]: (scene: BattleScene) => { + [Tutorial.Access_Menu]: () => { return new Promise(resolve => { - if (scene.enableTouchControls) { + if (globalScene.enableTouchControls) { return resolve(); } - scene.showFieldOverlay(1000).then(() => scene.ui.showText(i18next.t("tutorial:accessMenu"), null, () => scene.hideFieldOverlay(1000).then(() => resolve()), null, true)); + globalScene.showFieldOverlay(1000).then(() => globalScene.ui.showText(i18next.t("tutorial:accessMenu"), null, () => globalScene.hideFieldOverlay(1000).then(() => resolve()), null, true)); }); }, - [Tutorial.Menu]: (scene: BattleScene) => { + [Tutorial.Menu]: () => { return new Promise(resolve => { - scene.gameData.saveTutorialFlag(Tutorial.Access_Menu, true); - scene.ui.showText(i18next.t("tutorial:menu"), null, () => scene.ui.showText("", null, () => resolve()), null, true); + globalScene.gameData.saveTutorialFlag(Tutorial.Access_Menu, true); + globalScene.ui.showText(i18next.t("tutorial:menu"), null, () => globalScene.ui.showText("", null, () => resolve()), null, true); }); }, - [Tutorial.Starter_Select]: (scene: BattleScene) => { + [Tutorial.Starter_Select]: () => { return new Promise(resolve => { - scene.ui.showText(i18next.t("tutorial:starterSelect"), null, () => scene.ui.showText("", null, () => resolve()), null, true); + globalScene.ui.showText(i18next.t("tutorial:starterSelect"), null, () => globalScene.ui.showText("", null, () => resolve()), null, true); }); }, - [Tutorial.Pokerus]: (scene: BattleScene) => { + [Tutorial.Pokerus]: () => { return new Promise(resolve => { - scene.ui.showText(i18next.t("tutorial:pokerus"), null, () => scene.ui.showText("", null, () => resolve()), null, true); + globalScene.ui.showText(i18next.t("tutorial:pokerus"), null, () => globalScene.ui.showText("", null, () => resolve()), null, true); }); }, - [Tutorial.Stat_Change]: (scene: BattleScene) => { + [Tutorial.Stat_Change]: () => { return new Promise(resolve => { - scene.showFieldOverlay(1000).then(() => scene.ui.showText(i18next.t("tutorial:statChange"), null, () => scene.ui.showText("", null, () => scene.hideFieldOverlay(1000).then(() => resolve())), null, true)); + globalScene.showFieldOverlay(1000).then(() => globalScene.ui.showText(i18next.t("tutorial:statChange"), null, () => globalScene.ui.showText("", null, () => globalScene.hideFieldOverlay(1000).then(() => resolve())), null, true)); }); }, - [Tutorial.Select_Item]: (scene: BattleScene) => { + [Tutorial.Select_Item]: () => { return new Promise(resolve => { - scene.ui.setModeWithoutClear(Mode.MESSAGE).then(() => { - scene.ui.showText(i18next.t("tutorial:selectItem"), null, () => scene.ui.showText("", null, () => scene.ui.setModeWithoutClear(Mode.MODIFIER_SELECT).then(() => resolve())), null, true); + globalScene.ui.setModeWithoutClear(Mode.MESSAGE).then(() => { + globalScene.ui.showText(i18next.t("tutorial:selectItem"), null, () => globalScene.ui.showText("", null, () => globalScene.ui.setModeWithoutClear(Mode.MODIFIER_SELECT).then(() => resolve())), null, true); }); }); }, - [Tutorial.Egg_Gacha]: (scene: BattleScene) => { + [Tutorial.Egg_Gacha]: () => { return new Promise(resolve => { - scene.ui.showText(i18next.t("tutorial:eggGacha"), null, () => scene.ui.showText("", null, () => resolve()), null, true); + globalScene.ui.showText(i18next.t("tutorial:eggGacha"), null, () => globalScene.ui.showText("", null, () => resolve()), null, true); }); }, }; @@ -69,35 +69,34 @@ const tutorialHandlers = { * Run through the specified tutorial if it hasn't been seen before and mark it as seen once done * This will show a tutorial overlay if defined in the current {@linkcode AwaitableUiHandler} * The main menu will also get disabled while the tutorial is running - * @param scene the current {@linkcode BattleScene} * @param tutorial the {@linkcode Tutorial} to play * @returns a promise with result `true` if the tutorial was run and finished, `false` otherwise */ -export async function handleTutorial(scene: BattleScene, tutorial: Tutorial): Promise { - if (!scene.enableTutorials && !Overrides.BYPASS_TUTORIAL_SKIP_OVERRIDE) { +export async function handleTutorial(tutorial: Tutorial): Promise { + if (!globalScene.enableTutorials && !Overrides.BYPASS_TUTORIAL_SKIP_OVERRIDE) { return false; } - if (scene.gameData.getTutorialFlags()[tutorial] && !Overrides.BYPASS_TUTORIAL_SKIP_OVERRIDE) { + if (globalScene.gameData.getTutorialFlags()[tutorial] && !Overrides.BYPASS_TUTORIAL_SKIP_OVERRIDE) { return false; } - const handler = scene.ui.getHandler(); - const isMenuDisabled = scene.disableMenu; + const handler = globalScene.ui.getHandler(); + const isMenuDisabled = globalScene.disableMenu; // starting tutorial, disable menu - scene.disableMenu = true; + globalScene.disableMenu = true; if (handler instanceof AwaitableUiHandler) { handler.tutorialActive = true; } - await showTutorialOverlay(scene, handler); - await tutorialHandlers[tutorial](scene); - await hideTutorialOverlay(scene, handler); + await showTutorialOverlay(handler); + await tutorialHandlers[tutorial](); + await hideTutorialOverlay(handler); // tutorial finished and overlay gone, re-enable menu, save tutorial as seen - scene.disableMenu = isMenuDisabled; - scene.gameData.saveTutorialFlag(tutorial, true); + globalScene.disableMenu = isMenuDisabled; + globalScene.gameData.saveTutorialFlag(tutorial, true); if (handler instanceof AwaitableUiHandler) { handler.tutorialActive = false; } @@ -107,13 +106,12 @@ export async function handleTutorial(scene: BattleScene, tutorial: Tutorial): Pr /** * Show the tutorial overlay if there is one - * @param scene the current BattleScene * @param handler the current UiHandler * @returns `true` once the overlay has finished appearing, or if there is no overlay */ -async function showTutorialOverlay(scene: BattleScene, handler: UiHandler) { +async function showTutorialOverlay(handler: UiHandler) { if (handler instanceof AwaitableUiHandler && handler.tutorialOverlay) { - scene.tweens.add({ + globalScene.tweens.add({ targets: handler.tutorialOverlay, alpha: 0.5, duration: 750, @@ -129,13 +127,12 @@ async function showTutorialOverlay(scene: BattleScene, handler: UiHandler) { /** * Hide the tutorial overlay if there is one - * @param scene the current BattleScene * @param handler the current UiHandler * @returns `true` once the overlay has finished disappearing, or if there is no overlay */ -async function hideTutorialOverlay(scene: BattleScene, handler: UiHandler) { +async function hideTutorialOverlay(handler: UiHandler) { if (handler instanceof AwaitableUiHandler && handler.tutorialOverlay) { - scene.tweens.add({ + globalScene.tweens.add({ targets: handler.tutorialOverlay, alpha: 0, duration: 500, diff --git a/src/ui-inputs.ts b/src/ui-inputs.ts index 92b1653df3d..25ad9d87701 100644 --- a/src/ui-inputs.ts +++ b/src/ui-inputs.ts @@ -1,14 +1,14 @@ -import Phaser from "phaser"; +import type Phaser from "phaser"; import { Mode } from "./ui/ui"; -import { InputsController } from "./inputs-controller"; -import MessageUiHandler from "./ui/message-ui-handler"; +import type { InputsController } from "./inputs-controller"; +import type MessageUiHandler from "./ui/message-ui-handler"; import StarterSelectUiHandler from "./ui/starter-select-ui-handler"; import { Setting, SettingKeys, settingIndex } from "./system/settings/settings"; import SettingsUiHandler from "./ui/settings/settings-ui-handler"; import { Button } from "#enums/buttons"; import SettingsGamepadUiHandler from "./ui/settings/settings-gamepad-ui-handler"; import SettingsKeyboardUiHandler from "#app/ui/settings/settings-keyboard-ui-handler"; -import BattleScene from "./battle-scene"; +import { globalScene } from "#app/global-scene"; import SettingsDisplayUiHandler from "./ui/settings/settings-display-ui-handler"; import SettingsAudioUiHandler from "./ui/settings/settings-audio-ui-handler"; import RunInfoUiHandler from "./ui/run-info-ui-handler"; @@ -16,12 +16,10 @@ import RunInfoUiHandler from "./ui/run-info-ui-handler"; type ActionKeys = Record void>; export class UiInputs { - private scene: BattleScene; private events: Phaser.Events.EventEmitter; private inputsController: InputsController; - constructor(scene: BattleScene, inputsController: InputsController) { - this.scene = scene; + constructor(inputsController: InputsController) { this.inputsController = inputsController; this.init(); } @@ -35,12 +33,12 @@ export class UiInputs { if (evt.controller_type === "keyboard") { //if the touch property is present and defined, then this is a simulated keyboard event from the touch screen if (evt.hasOwnProperty("isTouch") && evt.isTouch) { - this.scene.inputMethod = "touch"; + globalScene.inputMethod = "touch"; } else { - this.scene.inputMethod = "keyboard"; + globalScene.inputMethod = "keyboard"; } } else if (evt.controller_type === "gamepad") { - this.scene.inputMethod = "gamepad"; + globalScene.inputMethod = "gamepad"; } } @@ -65,7 +63,7 @@ export class UiInputs { } doVibration(inputSuccess: boolean, vibrationLength: number): void { - if (inputSuccess && this.scene.enableVibration && typeof navigator.vibrate !== "undefined") { + if (inputSuccess && globalScene.enableVibration && typeof navigator.vibrate !== "undefined") { navigator.vibrate(vibrationLength); } } @@ -117,59 +115,59 @@ export class UiInputs { } buttonDirection(direction: Button): void { - const inputSuccess = this.scene.ui.processInput(direction); + const inputSuccess = globalScene.ui.processInput(direction); const vibrationLength = 5; this.doVibration(inputSuccess, vibrationLength); } buttonAb(button: Button): void { - this.scene.ui.processInput(button); + globalScene.ui.processInput(button); } buttonTouch(): void { - this.scene.ui.processInput(Button.SUBMIT) || this.scene.ui.processInput(Button.ACTION); + globalScene.ui.processInput(Button.SUBMIT) || globalScene.ui.processInput(Button.ACTION); } buttonStats(pressed: boolean = true): void { // allow access to Button.STATS as a toggle for other elements - for (const t of this.scene.getInfoToggles(true)) { + for (const t of globalScene.getInfoToggles(true)) { t.toggleInfo(pressed); } // handle normal pokemon battle ui - for (const p of this.scene.getField().filter(p => p?.isActive(true))) { + for (const p of globalScene.getField().filter(p => p?.isActive(true))) { p.toggleStats(pressed); } } buttonGoToFilter(button: Button): void { const whitelist = [ StarterSelectUiHandler ]; - const uiHandler = this.scene.ui?.getHandler(); + const uiHandler = globalScene.ui?.getHandler(); if (whitelist.some(handler => uiHandler instanceof handler)) { - this.scene.ui.processInput(button); + globalScene.ui.processInput(button); } else { this.buttonStats(true); } } buttonInfo(pressed: boolean = true): void { - if (this.scene.showMovesetFlyout ) { - for (const p of this.scene.getField().filter(p => p?.isActive(true))) { + if (globalScene.showMovesetFlyout ) { + for (const p of globalScene.getField().filter(p => p?.isActive(true))) { p.toggleFlyout(pressed); } } - if (this.scene.showArenaFlyout) { - this.scene.ui.processInfoButton(pressed); + if (globalScene.showArenaFlyout) { + globalScene.ui.processInfoButton(pressed); } } buttonMenu(): void { - if (this.scene.disableMenu) { + if (globalScene.disableMenu) { return; } - switch (this.scene.ui?.getMode()) { + switch (globalScene.ui?.getMode()) { case Mode.MESSAGE: - const messageHandler = this.scene.ui.getHandler(); + const messageHandler = globalScene.ui.getHandler(); if (!messageHandler.pendingPrompt || messageHandler.isTextAnimationInProgress()) { return; } @@ -177,14 +175,14 @@ export class UiInputs { case Mode.COMMAND: case Mode.MODIFIER_SELECT: case Mode.MYSTERY_ENCOUNTER: - this.scene.ui.setOverlayMode(Mode.MENU); + globalScene.ui.setOverlayMode(Mode.MENU); break; case Mode.STARTER_SELECT: this.buttonTouch(); break; case Mode.MENU: - this.scene.ui.revertMode(); - this.scene.playSound("ui/select"); + globalScene.ui.revertMode(); + globalScene.playSound("ui/select"); break; default: return; @@ -193,9 +191,9 @@ export class UiInputs { buttonCycleOption(button: Button): void { const whitelist = [ StarterSelectUiHandler, SettingsUiHandler, RunInfoUiHandler, SettingsDisplayUiHandler, SettingsAudioUiHandler, SettingsGamepadUiHandler, SettingsKeyboardUiHandler ]; - const uiHandler = this.scene.ui?.getHandler(); + const uiHandler = globalScene.ui?.getHandler(); if (whitelist.some(handler => uiHandler instanceof handler)) { - this.scene.ui.processInput(button); + globalScene.ui.processInput(button); } else if (button === Button.V) { this.buttonInfo(true); } @@ -203,15 +201,15 @@ export class UiInputs { buttonSpeedChange(up = true): void { const settingGameSpeed = settingIndex(SettingKeys.Game_Speed); - if (up && this.scene.gameSpeed < 5) { - this.scene.gameData.saveSetting(SettingKeys.Game_Speed, Setting[settingGameSpeed].options.findIndex((item) => item.label === `${this.scene.gameSpeed}x`) + 1); - if (this.scene.ui?.getMode() === Mode.SETTINGS) { - (this.scene.ui.getHandler() as SettingsUiHandler).show([]); + if (up && globalScene.gameSpeed < 5) { + globalScene.gameData.saveSetting(SettingKeys.Game_Speed, Setting[settingGameSpeed].options.findIndex((item) => item.label === `${globalScene.gameSpeed}x`) + 1); + if (globalScene.ui?.getMode() === Mode.SETTINGS) { + (globalScene.ui.getHandler() as SettingsUiHandler).show([]); } - } else if (!up && this.scene.gameSpeed > 1) { - this.scene.gameData.saveSetting(SettingKeys.Game_Speed, Math.max(Setting[settingGameSpeed].options.findIndex((item) => item.label === `${this.scene.gameSpeed}x`) - 1, 0)); - if (this.scene.ui?.getMode() === Mode.SETTINGS) { - (this.scene.ui.getHandler() as SettingsUiHandler).show([]); + } else if (!up && globalScene.gameSpeed > 1) { + globalScene.gameData.saveSetting(SettingKeys.Game_Speed, Math.max(Setting[settingGameSpeed].options.findIndex((item) => item.label === `${globalScene.gameSpeed}x`) - 1, 0)); + if (globalScene.ui?.getMode() === Mode.SETTINGS) { + (globalScene.ui.getHandler() as SettingsUiHandler).show([]); } } } diff --git a/src/ui/ability-bar.ts b/src/ui/ability-bar.ts index a924d545852..8335f7b517c 100644 --- a/src/ui/ability-bar.ts +++ b/src/ui/ability-bar.ts @@ -1,6 +1,6 @@ import { getPokemonNameWithAffix } from "#app/messages"; -import BattleScene from "../battle-scene"; -import Pokemon from "../field/pokemon"; +import { globalScene } from "#app/global-scene"; +import type Pokemon from "../field/pokemon"; import { TextStyle, addTextObject } from "./text"; import i18next from "i18next"; @@ -17,17 +17,17 @@ export default class AbilityBar extends Phaser.GameObjects.Container { public shown: boolean; - constructor(scene: BattleScene) { - super(scene, hiddenX, baseY); + constructor() { + super(globalScene, hiddenX, baseY); } setup(): void { - this.bg = this.scene.add.image(0, 0, "ability_bar_left"); + this.bg = globalScene.add.image(0, 0, "ability_bar_left"); this.bg.setOrigin(0, 0); this.add(this.bg); - this.abilityBarText = addTextObject(this.scene, 15, 3, "", TextStyle.MESSAGE, { fontSize: "72px" }); + this.abilityBarText = addTextObject(15, 3, "", TextStyle.MESSAGE, { fontSize: "72px" }); this.abilityBarText.setOrigin(0, 0); this.abilityBarText.setWordWrapWidth(600, true); this.add(this.abilityBarText); @@ -43,11 +43,11 @@ export default class AbilityBar extends Phaser.GameObjects.Container { return; } - (this.scene as BattleScene).fieldUI.bringToTop(this); + globalScene.fieldUI.bringToTop(this); - this.y = baseY + ((this.scene as BattleScene).currentBattle.double ? 14 : 0); - this.tween = this.scene.tweens.add({ + this.y = baseY + (globalScene.currentBattle.double ? 14 : 0); + this.tween = globalScene.tweens.add({ targets: this, x: shownX, duration: 500, @@ -75,7 +75,7 @@ export default class AbilityBar extends Phaser.GameObjects.Container { this.tween.stop(); } - this.tween = this.scene.tweens.add({ + this.tween = globalScene.tweens.add({ targets: this, x: -91, duration: 500, diff --git a/src/ui/abstact-option-select-ui-handler.ts b/src/ui/abstact-option-select-ui-handler.ts index 01fc5b00014..df592fc45b1 100644 --- a/src/ui/abstact-option-select-ui-handler.ts +++ b/src/ui/abstact-option-select-ui-handler.ts @@ -1,4 +1,4 @@ -import BattleScene from "../battle-scene"; +import { globalScene } from "#app/global-scene"; import { TextStyle, addTextObject, getTextStyleOptions } from "./text"; import { Mode } from "./ui"; import UiHandler from "./ui-handler"; @@ -46,8 +46,8 @@ export default abstract class AbstractOptionSelectUiHandler extends UiHandler { private cursorObj: Phaser.GameObjects.Image | null; - constructor(scene: BattleScene, mode: Mode | null) { - super(scene, mode); + constructor(mode: Mode | null) { + super(mode); } abstract getWindowWidth(): integer; @@ -59,19 +59,19 @@ export default abstract class AbstractOptionSelectUiHandler extends UiHandler { setup() { const ui = this.getUi(); - this.optionSelectContainer = this.scene.add.container((this.scene.game.canvas.width / 6) - 1, -48); + this.optionSelectContainer = globalScene.add.container((globalScene.game.canvas.width / 6) - 1, -48); this.optionSelectContainer.setName(`option-select-${this.mode ? Mode[this.mode] : "UNKNOWN"}`); this.optionSelectContainer.setVisible(false); ui.add(this.optionSelectContainer); - this.optionSelectBg = addWindow(this.scene, 0, 0, this.getWindowWidth(), this.getWindowHeight()); + this.optionSelectBg = addWindow(0, 0, this.getWindowWidth(), this.getWindowHeight()); this.optionSelectBg.setName("option-select-bg"); this.optionSelectBg.setOrigin(1, 1); this.optionSelectContainer.add(this.optionSelectBg); this.optionSelectIcons = []; - this.scale = getTextStyleOptions(TextStyle.WINDOW, (this.scene as BattleScene).uiTheme).scale; + this.scale = getTextStyleOptions(TextStyle.WINDOW, globalScene.uiTheme).scale; this.setCursor(0); } @@ -84,7 +84,7 @@ export default abstract class AbstractOptionSelectUiHandler extends UiHandler { // for performance reasons, this limits how many options we can see at once. Without this, it would try to make text options for every single options // which makes the performance take a hit. If there's not enough options to do this (set to 10 at the moment) and the ui mode !== Mode.AUTO_COMPLETE, // this is ignored and the original code is untouched, with the options array being all the options from the config - if (configOptions.length >= 10 && this.scene.ui.getMode() === Mode.AUTO_COMPLETE) { + if (configOptions.length >= 10 && globalScene.ui.getMode() === Mode.AUTO_COMPLETE) { const optionsScrollTotal = configOptions.length; const optionStartIndex = this.scrollCursor; const optionEndIndex = Math.min(optionsScrollTotal, optionStartIndex + (!optionStartIndex || this.scrollCursor + (this.config?.maxOptions! - 1) >= optionsScrollTotal ? this.config?.maxOptions! - 1 : this.config?.maxOptions! - 2)); @@ -101,12 +101,12 @@ export default abstract class AbstractOptionSelectUiHandler extends UiHandler { this.optionSelectIcons.splice(0, this.optionSelectIcons.length); } - this.optionSelectText = addTextObject(this.scene, 0, 0, options.map(o => o.item ? ` ${o.label}` : o.label).join("\n"), TextStyle.WINDOW, { maxLines: options.length }); + this.optionSelectText = addTextObject(0, 0, options.map(o => o.item ? ` ${o.label}` : o.label).join("\n"), TextStyle.WINDOW, { maxLines: options.length }); this.optionSelectText.setLineSpacing(this.scale * 72); this.optionSelectText.setName("text-option-select"); this.optionSelectText.setLineSpacing(12); this.optionSelectContainer.add(this.optionSelectText); - this.optionSelectContainer.setPosition((this.scene.game.canvas.width / 6) - 1 - (this.config?.xOffset || 0), -48 + (this.config?.yOffset || 0)); + this.optionSelectContainer.setPosition((globalScene.game.canvas.width / 6) - 1 - (this.config?.xOffset || 0), -48 + (this.config?.yOffset || 0)); this.optionSelectBg.width = Math.max(this.optionSelectText.displayWidth + 24, this.getWindowWidth()); @@ -120,7 +120,7 @@ export default abstract class AbstractOptionSelectUiHandler extends UiHandler { options.forEach((option: OptionSelectItem, i: integer) => { if (option.item) { - const itemIcon = this.scene.add.sprite(0, 0, "items", option.item); + const itemIcon = globalScene.add.sprite(0, 0, "items", option.item); itemIcon.setScale(3 * this.scale); this.optionSelectIcons.push(itemIcon); @@ -129,7 +129,7 @@ export default abstract class AbstractOptionSelectUiHandler extends UiHandler { itemIcon.setPositionRelative(this.optionSelectText, 36 * this.scale, 7 + i * (114 * this.scale - 3)); if (option.item === "candy") { - const itemOverlayIcon = this.scene.add.sprite(0, 0, "items", "candy_overlay"); + const itemOverlayIcon = globalScene.add.sprite(0, 0, "items", "candy_overlay"); itemOverlayIcon.setScale(3 * this.scale); this.optionSelectIcons.push(itemOverlayIcon); @@ -156,7 +156,7 @@ export default abstract class AbstractOptionSelectUiHandler extends UiHandler { this.config = args[0] as OptionSelectConfig; this.setupOptions(); - this.scene.ui.bringToTop(this.optionSelectContainer); + globalScene.ui.bringToTop(this.optionSelectContainer); this.optionSelectContainer.setVisible(true); this.scrollCursor = 0; @@ -166,7 +166,7 @@ export default abstract class AbstractOptionSelectUiHandler extends UiHandler { this.blockInput = true; this.optionSelectText.setAlpha(0.5); this.cursorObj?.setAlpha(0.8); - this.scene.time.delayedCall(Utils.fixedInt(this.config.delay), () => this.unblockInput()); + globalScene.time.delayedCall(Utils.fixedInt(this.config.delay), () => this.unblockInput()); } return true; @@ -332,7 +332,7 @@ export default abstract class AbstractOptionSelectUiHandler extends UiHandler { } if (!this.cursorObj) { - this.cursorObj = this.scene.add.image(0, 0, "cursor"); + this.cursorObj = globalScene.add.image(0, 0, "cursor"); this.optionSelectContainer.add(this.cursorObj); } diff --git a/src/ui/achv-bar.ts b/src/ui/achv-bar.ts index 6e7b3185024..9196399f40f 100644 --- a/src/ui/achv-bar.ts +++ b/src/ui/achv-bar.ts @@ -1,8 +1,8 @@ -import BattleScene from "../battle-scene"; +import { globalScene } from "#app/global-scene"; import { Achv, getAchievementDescription } from "../system/achv"; import { Voucher } from "../system/voucher"; import { TextStyle, addTextObject } from "./text"; -import { PlayerGender } from "#enums/player-gender"; +import type { PlayerGender } from "#enums/player-gender"; export default class AchvBar extends Phaser.GameObjects.Container { private defaultWidth: number; @@ -19,33 +19,33 @@ export default class AchvBar extends Phaser.GameObjects.Container { public shown: boolean; - constructor(scene: BattleScene) { - super(scene, scene.game.canvas.width / 6, 0); - this.playerGender = scene.gameData.gender; + constructor() { + super(globalScene, globalScene.game.canvas.width / 6, 0); + this.playerGender = globalScene.gameData.gender; } setup(): void { this.defaultWidth = 200; this.defaultHeight = 40; - this.bg = this.scene.add.nineslice(0, 0, "achv_bar", undefined, this.defaultWidth, this.defaultHeight, 41, 6, 16, 4); + this.bg = globalScene.add.nineslice(0, 0, "achv_bar", undefined, this.defaultWidth, this.defaultHeight, 41, 6, 16, 4); this.bg.setOrigin(0, 0); this.add(this.bg); - this.icon = this.scene.add.sprite(4, 4, "items"); + this.icon = globalScene.add.sprite(4, 4, "items"); this.icon.setOrigin(0, 0); this.add(this.icon); - this.titleText = addTextObject(this.scene, 40, 3, "", TextStyle.MESSAGE, { fontSize: "72px" }); + this.titleText = addTextObject(40, 3, "", TextStyle.MESSAGE, { fontSize: "72px" }); this.titleText.setOrigin(0, 0); this.add(this.titleText); - this.scoreText = addTextObject(this.scene, 150, 3, "", TextStyle.MESSAGE, { fontSize: "72px" }); + this.scoreText = addTextObject(150, 3, "", TextStyle.MESSAGE, { fontSize: "72px" }); this.scoreText.setOrigin(1, 0); this.add(this.scoreText); - this.descriptionText = addTextObject(this.scene, 43, 16, "", TextStyle.WINDOW_ALT, { fontSize: "72px" }); + this.descriptionText = addTextObject(43, 16, "", TextStyle.WINDOW_ALT, { fontSize: "72px" }); this.descriptionText.setOrigin(0, 0); this.add(this.descriptionText); @@ -90,16 +90,16 @@ export default class AchvBar extends Phaser.GameObjects.Container { this.bg.height = Math.max(this.defaultHeight, this.titleText.displayHeight + this.descriptionText.displayHeight + 8); this.icon.y = (this.bg.height / 2) - (this.icon.height / 2); - (this.scene as BattleScene).playSound("se/achv"); + globalScene.playSound("se/achv"); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this, - x: (this.scene.game.canvas.width / 6) - (this.bg.width / 2), + x: (globalScene.game.canvas.width / 6) - (this.bg.width / 2), duration: 500, ease: "Sine.easeOut" }); - this.scene.time.delayedCall(10000, () => this.hide(this.playerGender)); + globalScene.time.delayedCall(10000, () => this.hide(this.playerGender)); this.setVisible(true); this.shown = true; @@ -110,9 +110,9 @@ export default class AchvBar extends Phaser.GameObjects.Container { return; } - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this, - x: (this.scene.game.canvas.width / 6), + x: (globalScene.game.canvas.width / 6), duration: 500, ease: "Sine.easeIn", onComplete: () => { diff --git a/src/ui/achvs-ui-handler.ts b/src/ui/achvs-ui-handler.ts index a1ced6145eb..ff1e2ee9184 100644 --- a/src/ui/achvs-ui-handler.ts +++ b/src/ui/achvs-ui-handler.ts @@ -1,14 +1,16 @@ -import BattleScene from "#app/battle-scene"; import { Button } from "#enums/buttons"; import i18next from "i18next"; -import { Achv, achvs, getAchievementDescription } from "#app/system/achv"; -import { Voucher, getVoucherTypeIcon, getVoucherTypeName, vouchers } from "#app/system/voucher"; +import type { Achv } from "#app/system/achv"; +import { achvs, getAchievementDescription } from "#app/system/achv"; +import type { Voucher } from "#app/system/voucher"; +import { getVoucherTypeIcon, getVoucherTypeName, vouchers } from "#app/system/voucher"; import MessageUiHandler from "#app/ui/message-ui-handler"; import { addTextObject, TextStyle } from "#app/ui/text"; -import { Mode } from "#app/ui/ui"; +import type { Mode } from "#app/ui/ui"; import { addWindow } from "#app/ui/ui-theme"; import { ScrollBar } from "#app/ui/scroll-bar"; import { PlayerGender } from "#enums/player-gender"; +import { globalScene } from "#app/global-scene"; enum Page { ACHIEVEMENTS, @@ -57,8 +59,8 @@ export default class AchvsUiHandler extends MessageUiHandler { private cursorObj: Phaser.GameObjects.NineSlice | null; private currentPage: Page; - constructor(scene: BattleScene, mode: Mode | null = null) { - super(scene, mode); + constructor(mode: Mode | null = null) { + super(mode); this.achvsTotal = Object.keys(achvs).length; this.vouchersTotal = Object.keys(vouchers).length; @@ -68,37 +70,37 @@ export default class AchvsUiHandler extends MessageUiHandler { setup() { const ui = this.getUi(); - this.mainContainer = this.scene.add.container(1, -(this.scene.game.canvas.height / 6) + 1); + this.mainContainer = globalScene.add.container(1, -(globalScene.game.canvas.height / 6) + 1); - this.mainContainer.setInteractive(new Phaser.Geom.Rectangle(0, 0, this.scene.game.canvas.width / 6, this.scene.game.canvas.height / 6), Phaser.Geom.Rectangle.Contains); + this.mainContainer.setInteractive(new Phaser.Geom.Rectangle(0, 0, globalScene.game.canvas.width / 6, globalScene.game.canvas.height / 6), Phaser.Geom.Rectangle.Contains); - this.headerBg = addWindow(this.scene, 0, 0, (this.scene.game.canvas.width / 6) - 2, 24); + this.headerBg = addWindow(0, 0, (globalScene.game.canvas.width / 6) - 2, 24); this.headerBg.setOrigin(0, 0); - this.headerText = addTextObject(this.scene, 0, 0, "", TextStyle.SETTINGS_LABEL); + this.headerText = addTextObject(0, 0, "", TextStyle.SETTINGS_LABEL); this.headerText.setOrigin(0, 0); this.headerText.setPositionRelative(this.headerBg, 8, 4); - this.headerActionButton = new Phaser.GameObjects.Sprite(this.scene, 0, 0, "keyboard", "ACTION.png"); + this.headerActionButton = new Phaser.GameObjects.Sprite(globalScene, 0, 0, "keyboard", "ACTION.png"); this.headerActionButton.setOrigin(0, 0); this.headerActionButton.setPositionRelative(this.headerBg, 236, 6); - this.headerActionText = addTextObject(this.scene, 0, 0, "", TextStyle.WINDOW, { fontSize:"60px" }); + this.headerActionText = addTextObject(0, 0, "", TextStyle.WINDOW, { fontSize:"60px" }); this.headerActionText.setOrigin(0, 0); this.headerActionText.setPositionRelative(this.headerBg, 264, 8); // We need to get the player gender from the game data to add the correct prefix to the achievement name - const genderIndex = this.scene.gameData.gender ?? PlayerGender.MALE; + const genderIndex = globalScene.gameData.gender ?? PlayerGender.MALE; const genderStr = PlayerGender[genderIndex].toLowerCase(); this.achvsName = i18next.t("achv:Achievements.name", { context: genderStr }); this.vouchersName = i18next.t("voucher:vouchers"); - this.iconsBg = addWindow(this.scene, 0, this.headerBg.height, (this.scene.game.canvas.width / 6) - 2, (this.scene.game.canvas.height / 6) - this.headerBg.height - 68); + this.iconsBg = addWindow(0, this.headerBg.height, (globalScene.game.canvas.width / 6) - 2, (globalScene.game.canvas.height / 6) - this.headerBg.height - 68); this.iconsBg.setOrigin(0, 0); const yOffset = 6; - this.scrollBar = new ScrollBar(this.scene, this.iconsBg.width - 9, this.iconsBg.y + yOffset, 4, this.iconsBg.height - yOffset * 2, this.ROWS); + this.scrollBar = new ScrollBar(this.iconsBg.width - 9, this.iconsBg.y + yOffset, 4, this.iconsBg.height - yOffset * 2, this.ROWS); - this.iconsContainer = this.scene.add.container(5, this.headerBg.height + 8); + this.iconsContainer = globalScene.add.container(5, this.headerBg.height + 8); this.icons = []; @@ -106,7 +108,7 @@ export default class AchvsUiHandler extends MessageUiHandler { const x = (a % this.COLS) * 18; const y = Math.floor(a / this.COLS) * 18; - const icon = this.scene.add.sprite(x, y, "items", "unknown"); + const icon = globalScene.add.sprite(x, y, "items", "unknown"); icon.setOrigin(0, 0); icon.setScale(0.5); @@ -114,11 +116,11 @@ export default class AchvsUiHandler extends MessageUiHandler { this.iconsContainer.add(icon); } - const titleBg = addWindow(this.scene, 0, this.headerBg.height + this.iconsBg.height, 174, 24); + const titleBg = addWindow(0, this.headerBg.height + this.iconsBg.height, 174, 24); titleBg.setOrigin(0, 0); this.titleBg = titleBg; - this.titleText = addTextObject(this.scene, 0, 0, "", TextStyle.WINDOW); + this.titleText = addTextObject(0, 0, "", TextStyle.WINDOW); const textSize = languageSettings[i18next.language]?.TextSize ?? this.titleText.style.fontSize; this.titleText.setFontSize(textSize); const titleBgCenterX = titleBg.x + titleBg.width / 2; @@ -126,26 +128,26 @@ export default class AchvsUiHandler extends MessageUiHandler { this.titleText.setOrigin(0.5, 0.5); this.titleText.setPosition(titleBgCenterX, titleBgCenterY); - this.scoreContainer = this.scene.add.container(titleBg.x + titleBg.width, titleBg.y); - const scoreBg = addWindow(this.scene, 0, 0, 46, 24); + this.scoreContainer = globalScene.add.container(titleBg.x + titleBg.width, titleBg.y); + const scoreBg = addWindow(0, 0, 46, 24); scoreBg.setOrigin(0, 0); this.scoreContainer.add(scoreBg); - this.scoreText = addTextObject(this.scene, scoreBg.width / 2, scoreBg.height / 2, "", TextStyle.WINDOW); + this.scoreText = addTextObject(scoreBg.width / 2, scoreBg.height / 2, "", TextStyle.WINDOW); this.scoreText.setOrigin(0.5, 0.5); this.scoreContainer.add(this.scoreText); - const unlockBg = addWindow(this.scene, this.scoreContainer.x + scoreBg.width, titleBg.y, 98, 24); + const unlockBg = addWindow(this.scoreContainer.x + scoreBg.width, titleBg.y, 98, 24); unlockBg.setOrigin(0, 0); - this.unlockText = addTextObject(this.scene, 0, 0, "", TextStyle.WINDOW); + this.unlockText = addTextObject(0, 0, "", TextStyle.WINDOW); this.unlockText.setOrigin(0.5, 0.5); this.unlockText.setPositionRelative(unlockBg, unlockBg.width / 2, unlockBg.height / 2); - const descriptionBg = addWindow(this.scene, 0, titleBg.y + titleBg.height, (this.scene.game.canvas.width / 6) - 2, 42); + const descriptionBg = addWindow(0, titleBg.y + titleBg.height, (globalScene.game.canvas.width / 6) - 2, 42); descriptionBg.setOrigin(0, 0); - const descriptionText = addTextObject(this.scene, 0, 0, "", TextStyle.WINDOW, { maxLines: 2 }); + const descriptionText = addTextObject(0, 0, "", TextStyle.WINDOW, { maxLines: 2 }); descriptionText.setWordWrapWidth(1870); descriptionText.setOrigin(0, 0); descriptionText.setPositionRelative(descriptionBg, 8, 4); @@ -195,12 +197,12 @@ export default class AchvsUiHandler extends MessageUiHandler { protected showAchv(achv: Achv) { // We need to get the player gender from the game data to add the correct prefix to the achievement name - const genderIndex = this.scene.gameData.gender ?? PlayerGender.MALE; + const genderIndex = globalScene.gameData.gender ?? PlayerGender.MALE; const genderStr = PlayerGender[genderIndex].toLowerCase(); achv.name = i18next.t(`achv:${achv.localizationKey}.name`, { context: genderStr }); achv.description = getAchievementDescription(achv.localizationKey); - const achvUnlocks = this.scene.gameData.achvUnlocks; + const achvUnlocks = globalScene.gameData.achvUnlocks; const unlocked = achvUnlocks.hasOwnProperty(achv.id); const hidden = !unlocked && achv.secret && (!achv.parentId || !achvUnlocks.hasOwnProperty(achv.parentId)); this.titleText.setText(unlocked ? achv.name : "???"); @@ -210,7 +212,7 @@ export default class AchvsUiHandler extends MessageUiHandler { } protected showVoucher(voucher: Voucher) { - const voucherUnlocks = this.scene.gameData.voucherUnlocks; + const voucherUnlocks = globalScene.gameData.voucherUnlocks; const unlocked = voucherUnlocks.hasOwnProperty(voucher.id); this.titleText.setText(getVoucherTypeName(voucher.voucherType)); @@ -240,7 +242,7 @@ export default class AchvsUiHandler extends MessageUiHandler { } if (button === Button.CANCEL) { success = true; - this.scene.ui.revertMode(); + globalScene.ui.revertMode(); } else { const rowIndex = Math.floor(this.cursor / this.COLS); const itemOffset = (this.scrollCursor * this.COLS); @@ -306,7 +308,7 @@ export default class AchvsUiHandler extends MessageUiHandler { let update = ret; if (!this.cursorObj) { - this.cursorObj = this.scene.add.nineslice(0, 0, "select_cursor_highlight", undefined, 16, 16, 1, 1, 1, 1); + this.cursorObj = globalScene.add.nineslice(0, 0, "select_cursor_highlight", undefined, 16, 16, 1, 1, 1, 1); this.cursorObj.setOrigin(0, 0); this.iconsContainer.add(this.cursorObj); update = true; @@ -382,7 +384,7 @@ export default class AchvsUiHandler extends MessageUiHandler { this.headerActionText.setX(textPosition); this.headerActionButton.setX(textPosition - this.headerActionButton.displayWidth - 4); - const achvUnlocks = this.scene.gameData.achvUnlocks; + const achvUnlocks = globalScene.gameData.achvUnlocks; const itemOffset = this.scrollCursor * this.COLS; const itemLimit = this.ROWS * this.COLS; @@ -422,7 +424,7 @@ export default class AchvsUiHandler extends MessageUiHandler { this.headerActionText.setX(textPosition); this.headerActionButton.setX(textPosition - this.headerActionButton.displayWidth - 4); - const voucherUnlocks = this.scene.gameData.voucherUnlocks; + const voucherUnlocks = globalScene.gameData.voucherUnlocks; const itemOffset = this.scrollCursor * this.COLS; const itemLimit = this.ROWS * this.COLS; diff --git a/src/ui/admin-ui-handler.ts b/src/ui/admin-ui-handler.ts index 269b5ac5096..e31acda6fa2 100644 --- a/src/ui/admin-ui-handler.ts +++ b/src/ui/admin-ui-handler.ts @@ -1,11 +1,12 @@ -import BattleScene from "#app/battle-scene"; import { Button } from "#app/enums/buttons"; import { pokerogueApi } from "#app/plugins/api/pokerogue-api"; import { formatText } from "#app/utils"; -import { FormModalUiHandler, InputFieldConfig } from "./form-modal-ui-handler"; -import { ModalConfig } from "./modal-ui-handler"; +import type { InputFieldConfig } from "./form-modal-ui-handler"; +import { FormModalUiHandler } from "./form-modal-ui-handler"; +import type { ModalConfig } from "./modal-ui-handler"; import { TextStyle } from "./text"; import { Mode } from "./ui"; +import { globalScene } from "#app/global-scene"; type AdminUiHandlerService = "discord" | "google"; type AdminUiHandlerServiceMode = "Link" | "Unlink"; @@ -31,8 +32,8 @@ export default class AdminUiHandler extends FormModalUiHandler { return `Username and ${service} successfully ${mode.toLowerCase()}ed`; }; - constructor(scene: BattleScene, mode: Mode | null = null) { - super(scene, mode); + constructor(mode: Mode | null = null) { + super(mode); } override getModalTitle(): string { @@ -126,10 +127,10 @@ export default class AdminUiHandler extends FormModalUiHandler { const adminSearchResult: AdminSearchInfo = this.convertInputsToAdmin(); // this converts the input texts into a single object for use later const validFields = this.areFieldsValid(this.adminMode); if (validFields.error) { - this.scene.ui.setMode(Mode.LOADING, { buttonActions: []}); // this is here to force a loading screen to allow the admin tool to reopen again if there's an error + globalScene.ui.setMode(Mode.LOADING, { buttonActions: []}); // this is here to force a loading screen to allow the admin tool to reopen again if there's an error return this.showMessage(validFields.errorMessage ?? "", adminSearchResult, true); } - this.scene.ui.setMode(Mode.LOADING, { buttonActions: []}); + globalScene.ui.setMode(Mode.LOADING, { buttonActions: []}); if (this.adminMode === AdminMode.LINK) { this.adminLinkUnlink(adminSearchResult, "discord", "Link") // calls server to link discord .then(response => { @@ -157,11 +158,11 @@ export default class AdminUiHandler extends FormModalUiHandler { } showMessage(message: string, adminResult: AdminSearchInfo, isError: boolean) { - this.scene.ui.setMode(Mode.ADMIN, Object.assign(this.config, { errorMessage: message?.trim() }), this.adminMode, adminResult, isError); + globalScene.ui.setMode(Mode.ADMIN, Object.assign(this.config, { errorMessage: message?.trim() }), this.adminMode, adminResult, isError); if (isError) { - this.scene.ui.playError(); + globalScene.ui.playError(); } else { - this.scene.ui.playSelect(); + globalScene.ui.playSelect(); } } @@ -185,7 +186,7 @@ export default class AdminUiHandler extends FormModalUiHandler { this.inputs[i].setText(adminResult[aR]); if (aR === "discordId" || aR === "googleId") { // this is here to add the icons for linking/unlinking of google/discord IDs const nineSlice = this.inputContainers[i].list.find(iC => iC.type === "NineSlice"); - const img = this.scene.add.image(this.inputContainers[i].x + nineSlice!.width + this.buttonGap, this.inputContainers[i].y + (Math.floor(nineSlice!.height / 2)), adminResult[aR] === "" ? "link_icon" : "unlink_icon"); + const img = globalScene.add.image(this.inputContainers[i].x + nineSlice!.width + this.buttonGap, this.inputContainers[i].y + (Math.floor(nineSlice!.height / 2)), adminResult[aR] === "" ? "link_icon" : "unlink_icon"); img.setName(`adminBtn_${aR}`); img.setOrigin(0.5, 0.5); img.setInteractive(); @@ -194,15 +195,15 @@ export default class AdminUiHandler extends FormModalUiHandler { const mode = adminResult[aR] === "" ? "Link" : "Unlink"; // this figures out if we're linking or unlinking a service const validFields = this.areFieldsValid(this.adminMode, service); if (validFields.error) { - this.scene.ui.setMode(Mode.LOADING, { buttonActions: []}); // this is here to force a loading screen to allow the admin tool to reopen again if there's an error + globalScene.ui.setMode(Mode.LOADING, { buttonActions: []}); // this is here to force a loading screen to allow the admin tool to reopen again if there's an error return this.showMessage(validFields.errorMessage ?? "", adminResult, true); } this.adminLinkUnlink(this.convertInputsToAdmin(), service as AdminUiHandlerService, mode).then(response => { // attempts to link/unlink depending on the service if (response.error) { - this.scene.ui.setMode(Mode.LOADING, { buttonActions: []}); + globalScene.ui.setMode(Mode.LOADING, { buttonActions: []}); return this.showMessage(response.errorType, adminResult, true); // fail } else { // success, reload panel with new results - this.scene.ui.setMode(Mode.LOADING, { buttonActions: []}); + globalScene.ui.setMode(Mode.LOADING, { buttonActions: []}); this.adminSearch(adminResult) .then(response => { if (response.error) { @@ -340,16 +341,16 @@ export default class AdminUiHandler extends FormModalUiHandler { private updateAdminPanelInfo(adminSearchResult: AdminSearchInfo, mode?: AdminMode) { mode = mode ?? AdminMode.ADMIN; - this.scene.ui.setMode(Mode.ADMIN, { + globalScene.ui.setMode(Mode.ADMIN, { buttonActions: [ // we double revert here and below to go back 2 layers of menus () => { - this.scene.ui.revertMode(); - this.scene.ui.revertMode(); + globalScene.ui.revertMode(); + globalScene.ui.revertMode(); }, () => { - this.scene.ui.revertMode(); - this.scene.ui.revertMode(); + globalScene.ui.revertMode(); + globalScene.ui.revertMode(); } ] }, mode, adminSearchResult); diff --git a/src/ui/arena-flyout.ts b/src/ui/arena-flyout.ts index 573cb85db70..7e9b24d1d97 100644 --- a/src/ui/arena-flyout.ts +++ b/src/ui/arena-flyout.ts @@ -1,15 +1,18 @@ import { addTextObject, TextStyle } from "./text"; -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { ArenaTagSide, ArenaTrapTag } from "#app/data/arena-tag"; import { WeatherType } from "#enums/weather-type"; import { TerrainType } from "#app/data/terrain"; import { addWindow, WindowVariant } from "./ui-theme"; -import { ArenaEvent, ArenaEventType, TagAddedEvent, TagRemovedEvent, TerrainChangedEvent, WeatherChangedEvent } from "#app/events/arena"; -import { BattleSceneEventType, TurnEndEvent } from "../events/battle-scene"; +import type { ArenaEvent } from "#app/events/arena"; +import { ArenaEventType, TagAddedEvent, TagRemovedEvent, TerrainChangedEvent, WeatherChangedEvent } from "#app/events/arena"; +import type { TurnEndEvent } from "../events/battle-scene"; +import { BattleSceneEventType } from "../events/battle-scene"; import { ArenaTagType } from "#enums/arena-tag-type"; import TimeOfDayWidget from "./time-of-day-widget"; import * as Utils from "../utils"; -import i18next, { ParseKeys } from "i18next"; +import type { ParseKeys } from "i18next"; +import i18next from "i18next"; /** Enum used to differentiate {@linkcode Arena} effects */ enum ArenaEffectType { @@ -45,9 +48,6 @@ export function getFieldEffectText(arenaTagType: string): string { } export class ArenaFlyout extends Phaser.GameObjects.Container { - /** An alias for the scene typecast to a {@linkcode BattleScene} */ - private battleScene: BattleScene; - /** The restricted width of the flyout which should be drawn to */ private flyoutWidth = 170; /** The restricted height of the flyout which should be drawn to */ @@ -98,62 +98,61 @@ export class ArenaFlyout extends Phaser.GameObjects.Container { private readonly onFieldEffectChangedEvent = (event: Event) => this.onFieldEffectChanged(event); - constructor(scene: Phaser.Scene) { - super(scene, 0, 0); + constructor() { + super(globalScene, 0, 0); this.setName("arena-flyout"); - this.battleScene = this.scene as BattleScene; this.translationX = this.flyoutWidth; this.anchorX = 0; this.anchorY = -98; - this.flyoutParent = this.scene.add.container(this.anchorX - this.translationX, this.anchorY); + this.flyoutParent = globalScene.add.container(this.anchorX - this.translationX, this.anchorY); this.flyoutParent.setAlpha(0); this.add(this.flyoutParent); - this.flyoutContainer = this.scene.add.container(0, 0); + this.flyoutContainer = globalScene.add.container(0, 0); this.flyoutParent.add(this.flyoutContainer); - this.flyoutWindow = addWindow(this.scene as BattleScene, 0, 0, this.flyoutWidth, this.flyoutHeight, false, false, 0, 0, WindowVariant.THIN); + this.flyoutWindow = addWindow(0, 0, this.flyoutWidth, this.flyoutHeight, false, false, 0, 0, WindowVariant.THIN); this.flyoutContainer.add(this.flyoutWindow); - this.flyoutWindowHeader = addWindow(this.scene as BattleScene, this.flyoutWidth / 2, 0, this.flyoutWidth / 2, 14, false, false, 0, 0, WindowVariant.XTHIN); + this.flyoutWindowHeader = addWindow(this.flyoutWidth / 2, 0, this.flyoutWidth / 2, 14, false, false, 0, 0, WindowVariant.XTHIN); this.flyoutWindowHeader.setOrigin(); this.flyoutContainer.add(this.flyoutWindowHeader); - this.flyoutTextHeader = addTextObject(this.scene, this.flyoutWidth / 2, 0, i18next.t("arenaFlyout:activeBattleEffects"), TextStyle.BATTLE_INFO); + this.flyoutTextHeader = addTextObject(this.flyoutWidth / 2, 0, i18next.t("arenaFlyout:activeBattleEffects"), TextStyle.BATTLE_INFO); this.flyoutTextHeader.setFontSize(54); this.flyoutTextHeader.setAlign("center"); this.flyoutTextHeader.setOrigin(); this.flyoutContainer.add(this.flyoutTextHeader); - this.timeOfDayWidget = new TimeOfDayWidget(this.scene, (this.flyoutWidth / 2) + (this.flyoutWindowHeader.displayWidth / 2)); + this.timeOfDayWidget = new TimeOfDayWidget((this.flyoutWidth / 2) + (this.flyoutWindowHeader.displayWidth / 2)); this.flyoutContainer.add(this.timeOfDayWidget); - this.flyoutTextHeaderPlayer = addTextObject(this.scene, 6, 5, i18next.t("arenaFlyout:player"), TextStyle.SUMMARY_BLUE); + this.flyoutTextHeaderPlayer = addTextObject(6, 5, i18next.t("arenaFlyout:player"), TextStyle.SUMMARY_BLUE); this.flyoutTextHeaderPlayer.setFontSize(54); this.flyoutTextHeaderPlayer.setAlign("left"); this.flyoutTextHeaderPlayer.setOrigin(0, 0); this.flyoutContainer.add(this.flyoutTextHeaderPlayer); - this.flyoutTextHeaderField = addTextObject(this.scene, this.flyoutWidth / 2, 5, i18next.t("arenaFlyout:neutral"), TextStyle.SUMMARY_GREEN); + this.flyoutTextHeaderField = addTextObject(this.flyoutWidth / 2, 5, i18next.t("arenaFlyout:neutral"), TextStyle.SUMMARY_GREEN); this.flyoutTextHeaderField.setFontSize(54); this.flyoutTextHeaderField.setAlign("center"); this.flyoutTextHeaderField.setOrigin(0.5, 0); this.flyoutContainer.add(this.flyoutTextHeaderField); - this.flyoutTextHeaderEnemy = addTextObject(this.scene, this.flyoutWidth - 6, 5, i18next.t("arenaFlyout:enemy"), TextStyle.SUMMARY_RED); + this.flyoutTextHeaderEnemy = addTextObject(this.flyoutWidth - 6, 5, i18next.t("arenaFlyout:enemy"), TextStyle.SUMMARY_RED); this.flyoutTextHeaderEnemy.setFontSize(54); this.flyoutTextHeaderEnemy.setAlign("right"); this.flyoutTextHeaderEnemy.setOrigin(1, 0); this.flyoutContainer.add(this.flyoutTextHeaderEnemy); - this.flyoutTextPlayer = addTextObject(this.scene, 6, 13, "", TextStyle.BATTLE_INFO); + this.flyoutTextPlayer = addTextObject(6, 13, "", TextStyle.BATTLE_INFO); this.flyoutTextPlayer.setLineSpacing(-1); this.flyoutTextPlayer.setFontSize(48); this.flyoutTextPlayer.setAlign("left"); @@ -161,7 +160,7 @@ export class ArenaFlyout extends Phaser.GameObjects.Container { this.flyoutContainer.add(this.flyoutTextPlayer); - this.flyoutTextField = addTextObject(this.scene, this.flyoutWidth / 2, 13, "", TextStyle.BATTLE_INFO); + this.flyoutTextField = addTextObject(this.flyoutWidth / 2, 13, "", TextStyle.BATTLE_INFO); this.flyoutTextField.setLineSpacing(-1); this.flyoutTextField.setFontSize(48); this.flyoutTextField.setAlign("center"); @@ -169,7 +168,7 @@ export class ArenaFlyout extends Phaser.GameObjects.Container { this.flyoutContainer.add(this.flyoutTextField); - this.flyoutTextEnemy = addTextObject(this.scene, this.flyoutWidth - 6, 13, "", TextStyle.BATTLE_INFO); + this.flyoutTextEnemy = addTextObject(this.flyoutWidth - 6, 13, "", TextStyle.BATTLE_INFO); this.flyoutTextEnemy.setLineSpacing(-1); this.flyoutTextEnemy.setFontSize(48); this.flyoutTextEnemy.setAlign("right"); @@ -181,18 +180,18 @@ export class ArenaFlyout extends Phaser.GameObjects.Container { this.flyoutParent.name = "Fight Flyout Parent"; // Subscribes to required events available on game start - this.battleScene.eventTarget.addEventListener(BattleSceneEventType.NEW_ARENA, this.onNewArenaEvent); - this.battleScene.eventTarget.addEventListener(BattleSceneEventType.TURN_END, this.onTurnEndEvent); + globalScene.eventTarget.addEventListener(BattleSceneEventType.NEW_ARENA, this.onNewArenaEvent); + globalScene.eventTarget.addEventListener(BattleSceneEventType.TURN_END, this.onTurnEndEvent); } private onNewArena(event: Event) { this.fieldEffectInfo.length = 0; // Subscribes to required events available on battle start - this.battleScene.arena.eventTarget.addEventListener(ArenaEventType.WEATHER_CHANGED, this.onFieldEffectChangedEvent); - this.battleScene.arena.eventTarget.addEventListener(ArenaEventType.TERRAIN_CHANGED, this.onFieldEffectChangedEvent); - this.battleScene.arena.eventTarget.addEventListener(ArenaEventType.TAG_ADDED, this.onFieldEffectChangedEvent); - this.battleScene.arena.eventTarget.addEventListener(ArenaEventType.TAG_REMOVED, this.onFieldEffectChangedEvent); + globalScene.arena.eventTarget.addEventListener(ArenaEventType.WEATHER_CHANGED, this.onFieldEffectChangedEvent); + globalScene.arena.eventTarget.addEventListener(ArenaEventType.TERRAIN_CHANGED, this.onFieldEffectChangedEvent); + globalScene.arena.eventTarget.addEventListener(ArenaEventType.TAG_ADDED, this.onFieldEffectChangedEvent); + globalScene.arena.eventTarget.addEventListener(ArenaEventType.TAG_REMOVED, this.onFieldEffectChangedEvent); } @@ -255,7 +254,7 @@ export class ArenaFlyout extends Phaser.GameObjects.Container { switch (arenaEffectChangedEvent.constructor) { case TagAddedEvent: const tagAddedEvent = arenaEffectChangedEvent as TagAddedEvent; - const isArenaTrapTag = this.battleScene.arena.getTag(tagAddedEvent.arenaTagType) instanceof ArenaTrapTag; + const isArenaTrapTag = globalScene.arena.getTag(tagAddedEvent.arenaTagType) instanceof ArenaTrapTag; let arenaEffectType: ArenaEffectType; if (tagAddedEvent.arenaTagSide === ArenaTagSide.BOTH) { @@ -367,7 +366,7 @@ export class ArenaFlyout extends Phaser.GameObjects.Container { * @param visible Should the flyout be shown? */ public toggleFlyout(visible: boolean): void { - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this.flyoutParent, x: visible ? this.anchorX : this.anchorX - this.translationX, duration: Utils.fixedInt(125), @@ -378,13 +377,13 @@ export class ArenaFlyout extends Phaser.GameObjects.Container { } public destroy(fromScene?: boolean): void { - this.battleScene.eventTarget.removeEventListener(BattleSceneEventType.NEW_ARENA, this.onNewArenaEvent); - this.battleScene.eventTarget.removeEventListener(BattleSceneEventType.TURN_END, this.onTurnEndEvent); + globalScene.eventTarget.removeEventListener(BattleSceneEventType.NEW_ARENA, this.onNewArenaEvent); + globalScene.eventTarget.removeEventListener(BattleSceneEventType.TURN_END, this.onTurnEndEvent); - this.battleScene.arena.eventTarget.removeEventListener(ArenaEventType.WEATHER_CHANGED, this.onFieldEffectChangedEvent); - this.battleScene.arena.eventTarget.removeEventListener(ArenaEventType.TERRAIN_CHANGED, this.onFieldEffectChangedEvent); - this.battleScene.arena.eventTarget.removeEventListener(ArenaEventType.TAG_ADDED, this.onFieldEffectChangedEvent); - this.battleScene.arena.eventTarget.removeEventListener(ArenaEventType.TAG_REMOVED, this.onFieldEffectChangedEvent); + globalScene.arena.eventTarget.removeEventListener(ArenaEventType.WEATHER_CHANGED, this.onFieldEffectChangedEvent); + globalScene.arena.eventTarget.removeEventListener(ArenaEventType.TERRAIN_CHANGED, this.onFieldEffectChangedEvent); + globalScene.arena.eventTarget.removeEventListener(ArenaEventType.TAG_ADDED, this.onFieldEffectChangedEvent); + globalScene.arena.eventTarget.removeEventListener(ArenaEventType.TAG_REMOVED, this.onFieldEffectChangedEvent); super.destroy(fromScene); } diff --git a/src/ui/autocomplete-ui-handler.ts b/src/ui/autocomplete-ui-handler.ts index 480a3cf72d0..8754e65db77 100644 --- a/src/ui/autocomplete-ui-handler.ts +++ b/src/ui/autocomplete-ui-handler.ts @@ -1,12 +1,11 @@ import { Button } from "#enums/buttons"; -import BattleScene from "../battle-scene"; import AbstractOptionSelectUiHandler from "./abstact-option-select-ui-handler"; import { Mode } from "./ui"; export default class AutoCompleteUiHandler extends AbstractOptionSelectUiHandler { modalContainer: Phaser.GameObjects.Container; - constructor(scene: BattleScene, mode: Mode = Mode.OPTION_SELECT) { - super(scene, mode); + constructor(mode: Mode = Mode.OPTION_SELECT) { + super(mode); } getWindowWidth(): integer { diff --git a/src/ui/awaitable-ui-handler.ts b/src/ui/awaitable-ui-handler.ts index 8256f938106..cc970358cb2 100644 --- a/src/ui/awaitable-ui-handler.ts +++ b/src/ui/awaitable-ui-handler.ts @@ -1,7 +1,7 @@ -import BattleScene from "../battle-scene"; -import { Mode } from "./ui"; +import type { Mode } from "./ui"; import UiHandler from "./ui-handler"; import { Button } from "#enums/buttons"; +import { globalScene } from "#app/global-scene"; export default abstract class AwaitableUiHandler extends UiHandler { protected awaitingActionInput: boolean; @@ -9,8 +9,8 @@ export default abstract class AwaitableUiHandler extends UiHandler { public tutorialActive: boolean = false; public tutorialOverlay: Phaser.GameObjects.Rectangle; - constructor(scene: BattleScene, mode: Mode | null = null) { - super(scene, mode); + constructor(mode: Mode | null = null) { + super(mode); } processTutorialInput(button: Button): boolean { @@ -32,7 +32,7 @@ export default abstract class AwaitableUiHandler extends UiHandler { */ initTutorialOverlay(container: Phaser.GameObjects.Container) { if (!this.tutorialOverlay) { - this.tutorialOverlay = new Phaser.GameObjects.Rectangle(this.scene, -1, -1, this.scene.scaledCanvas.width, this.scene.scaledCanvas.height, 0x070707); + this.tutorialOverlay = new Phaser.GameObjects.Rectangle(globalScene, -1, -1, globalScene.scaledCanvas.width, globalScene.scaledCanvas.height, 0x070707); this.tutorialOverlay.setName("tutorial-overlay"); this.tutorialOverlay.setOrigin(0, 0); this.tutorialOverlay.setAlpha(0); diff --git a/src/ui/ball-ui-handler.ts b/src/ui/ball-ui-handler.ts index 9df6da36055..2c1a53a9a52 100644 --- a/src/ui/ball-ui-handler.ts +++ b/src/ui/ball-ui-handler.ts @@ -1,4 +1,3 @@ -import BattleScene from "../battle-scene"; import { getPokeballName } from "../data/pokeball"; import { addTextObject, getTextStyleOptions, TextStyle } from "./text"; import { Command } from "./command-ui-handler"; @@ -6,7 +5,8 @@ import { Mode } from "./ui"; import UiHandler from "./ui-handler"; import { addWindow } from "./ui-theme"; import { Button } from "#enums/buttons"; -import { CommandPhase } from "#app/phases/command-phase"; +import type { CommandPhase } from "#app/phases/command-phase"; +import { globalScene } from "#app/global-scene"; export default class BallUiHandler extends UiHandler { private pokeballSelectContainer: Phaser.GameObjects.Container; @@ -17,28 +17,28 @@ export default class BallUiHandler extends UiHandler { private scale: number = 0.1666666667; - constructor(scene: BattleScene) { - super(scene, Mode.BALL); + constructor() { + super(Mode.BALL); } setup() { const ui = this.getUi(); - this.scale = getTextStyleOptions(TextStyle.WINDOW, this.scene.uiTheme).scale; + this.scale = getTextStyleOptions(TextStyle.WINDOW, globalScene.uiTheme).scale; let optionsTextContent = ""; - for (let pb = 0; pb < Object.keys(this.scene.pokeballCounts).length; pb++) { + for (let pb = 0; pb < Object.keys(globalScene.pokeballCounts).length; pb++) { optionsTextContent += `${getPokeballName(pb)}\n`; } optionsTextContent += "Cancel"; - const optionsText = addTextObject(this.scene, 0, 0, optionsTextContent, TextStyle.WINDOW, { align: "right", maxLines: 6 }); + const optionsText = addTextObject(0, 0, optionsTextContent, TextStyle.WINDOW, { align: "right", maxLines: 6 }); const optionsTextWidth = optionsText.displayWidth; - this.pokeballSelectContainer = this.scene.add.container((this.scene.game.canvas.width / 6) - 51 - Math.max(64, optionsTextWidth), -49); + this.pokeballSelectContainer = globalScene.add.container((globalScene.game.canvas.width / 6) - 51 - Math.max(64, optionsTextWidth), -49); this.pokeballSelectContainer.setVisible(false); ui.add(this.pokeballSelectContainer); - this.pokeballSelectBg = addWindow(this.scene, 0, 0, 50 + Math.max(64, optionsTextWidth), 32 + 480 * this.scale); + this.pokeballSelectBg = addWindow(0, 0, 50 + Math.max(64, optionsTextWidth), 32 + 480 * this.scale); this.pokeballSelectBg.setOrigin(0, 1); this.pokeballSelectContainer.add(this.pokeballSelectBg); this.pokeballSelectContainer.add(optionsText); @@ -46,7 +46,7 @@ export default class BallUiHandler extends UiHandler { optionsText.setPositionRelative(this.pokeballSelectBg, 42, 9); optionsText.setLineSpacing(this.scale * 72); - this.countsText = addTextObject(this.scene, 0, 0, "", TextStyle.WINDOW, { maxLines: 5 }); + this.countsText = addTextObject(0, 0, "", TextStyle.WINDOW, { maxLines: 5 }); this.countsText.setPositionRelative(this.pokeballSelectBg, 18, 9); this.countsText.setLineSpacing(this.scale * 72); this.pokeballSelectContainer.add(this.countsText); @@ -69,16 +69,16 @@ export default class BallUiHandler extends UiHandler { let success = false; - const pokeballTypeCount = Object.keys(this.scene.pokeballCounts).length; + const pokeballTypeCount = Object.keys(globalScene.pokeballCounts).length; if (button === Button.ACTION || button === Button.CANCEL) { - const commandPhase = this.scene.getCurrentPhase() as CommandPhase; + const commandPhase = globalScene.getCurrentPhase() as CommandPhase; success = true; if (button === Button.ACTION && this.cursor < pokeballTypeCount) { - if (this.scene.pokeballCounts[this.cursor]) { + if (globalScene.pokeballCounts[this.cursor]) { if (commandPhase.handleCommand(Command.BALL, this.cursor)) { - this.scene.ui.setMode(Mode.COMMAND, commandPhase.getFieldIndex()); - this.scene.ui.setMode(Mode.MESSAGE); + globalScene.ui.setMode(Mode.COMMAND, commandPhase.getFieldIndex()); + globalScene.ui.setMode(Mode.MESSAGE); success = true; } } else { @@ -107,14 +107,14 @@ export default class BallUiHandler extends UiHandler { } updateCounts() { - this.countsText.setText(Object.values(this.scene.pokeballCounts).map(c => `x${c}`).join("\n")); + this.countsText.setText(Object.values(globalScene.pokeballCounts).map(c => `x${c}`).join("\n")); } setCursor(cursor: integer): boolean { const ret = super.setCursor(cursor); if (!this.cursorObj) { - this.cursorObj = this.scene.add.image(0, 0, "cursor"); + this.cursorObj = globalScene.add.image(0, 0, "cursor"); this.pokeballSelectContainer.add(this.cursorObj); } diff --git a/src/ui/battle-flyout.ts b/src/ui/battle-flyout.ts index 4541a2bfefa..c716705452c 100644 --- a/src/ui/battle-flyout.ts +++ b/src/ui/battle-flyout.ts @@ -1,9 +1,10 @@ -import { default as Pokemon } from "../field/pokemon"; +import type { default as Pokemon } from "../field/pokemon"; import { addTextObject, TextStyle } from "./text"; import * as Utils from "../utils"; -import BattleScene from "#app/battle-scene"; -import Move from "#app/data/move"; -import { BattleSceneEventType, BerryUsedEvent, MoveUsedEvent } from "../events/battle-scene"; +import { globalScene } from "#app/global-scene"; +import type Move from "#app/data/move"; +import type { BerryUsedEvent, MoveUsedEvent } from "../events/battle-scene"; +import { BattleSceneEventType } from "../events/battle-scene"; import { BerryType } from "#enums/berry-type"; import { Moves } from "#enums/moves"; import { UiTheme } from "#enums/ui-theme"; @@ -22,9 +23,6 @@ interface MoveInfo { /** A Flyout Menu attached to each {@linkcode BattleInfo} object on the field UI */ export default class BattleFlyout extends Phaser.GameObjects.Container { - /** An alias for the scene typecast to a {@linkcode BattleScene} */ - private battleScene: BattleScene; - /** Is this object linked to a player's Pokemon? */ private player: boolean; @@ -63,9 +61,8 @@ export default class BattleFlyout extends Phaser.GameObjects.Container { private readonly onMoveUsedEvent = (event: Event) => this.onMoveUsed(event); private readonly onBerryUsedEvent = (event: Event) => this.onBerryUsed(event); - constructor(scene: Phaser.Scene, player: boolean) { - super(scene, 0, 0); - this.battleScene = scene as BattleScene; + constructor(player: boolean) { + super(globalScene, 0, 0); // Note that all player based flyouts are disabled. This is included in case of future development this.player = player; @@ -74,23 +71,22 @@ export default class BattleFlyout extends Phaser.GameObjects.Container { this.anchorX = (this.player ? -130 : -40); this.anchorY = -2.5 + (this.player ? -18.5 : -13); - this.flyoutParent = this.scene.add.container(this.anchorX - this.translationX, this.anchorY); + this.flyoutParent = globalScene.add.container(this.anchorX - this.translationX, this.anchorY); this.flyoutParent.setAlpha(0); this.add(this.flyoutParent); // Load the background image - this.flyoutBackground = this.scene.add.sprite(0, 0, "pbinfo_enemy_boss_stats"); + this.flyoutBackground = globalScene.add.sprite(0, 0, "pbinfo_enemy_boss_stats"); this.flyoutBackground.setOrigin(0, 0); this.flyoutParent.add(this.flyoutBackground); - this.flyoutContainer = this.scene.add.container(44 + (this.player ? -this.flyoutWidth : 0), 2); + this.flyoutContainer = globalScene.add.container(44 + (this.player ? -this.flyoutWidth : 0), 2); this.flyoutParent.add(this.flyoutContainer); // Loops through and sets the position of each text object according to the width and height of the flyout for (let i = 0; i < 4; i++) { this.flyoutText[i] = addTextObject( - this.scene, (this.flyoutWidth / 4) + (this.flyoutWidth / 2) * (i % 2), (this.flyoutHeight / 4) + (this.flyoutHeight / 2) * (i < 2 ? 0 : 1), "???", TextStyle.BATTLE_INFO); this.flyoutText[i].setFontSize(45); @@ -102,9 +98,9 @@ export default class BattleFlyout extends Phaser.GameObjects.Container { this.flyoutContainer.add(this.flyoutText); this.flyoutContainer.add( - new Phaser.GameObjects.Rectangle(this.scene, this.flyoutWidth / 2, 0, 1, this.flyoutHeight + (this.battleScene.uiTheme === UiTheme.LEGACY ? 1 : 0), 0x212121).setOrigin(0.5, 0)); + new Phaser.GameObjects.Rectangle(globalScene, this.flyoutWidth / 2, 0, 1, this.flyoutHeight + (globalScene.uiTheme === UiTheme.LEGACY ? 1 : 0), 0x212121).setOrigin(0.5, 0)); this.flyoutContainer.add( - new Phaser.GameObjects.Rectangle(this.scene, 0, this.flyoutHeight / 2, this.flyoutWidth + 6, 1, 0x212121).setOrigin(0, 0.5)); + new Phaser.GameObjects.Rectangle(globalScene, 0, this.flyoutHeight / 2, this.flyoutWidth + 6, 1, 0x212121).setOrigin(0, 0.5)); } /** @@ -117,8 +113,8 @@ export default class BattleFlyout extends Phaser.GameObjects.Container { this.name = `Flyout ${getPokemonNameWithAffix(this.pokemon)}`; this.flyoutParent.name = `Flyout Parent ${getPokemonNameWithAffix(this.pokemon)}`; - this.battleScene.eventTarget.addEventListener(BattleSceneEventType.MOVE_USED, this.onMoveUsedEvent); - this.battleScene.eventTarget.addEventListener(BattleSceneEventType.BERRY_USED, this.onBerryUsedEvent); + globalScene.eventTarget.addEventListener(BattleSceneEventType.MOVE_USED, this.onMoveUsedEvent); + globalScene.eventTarget.addEventListener(BattleSceneEventType.BERRY_USED, this.onBerryUsedEvent); } /** Sets and formats the text property for all {@linkcode Phaser.GameObjects.Text} in the flyoutText array */ @@ -176,7 +172,7 @@ export default class BattleFlyout extends Phaser.GameObjects.Container { toggleFlyout(visible: boolean): void { this.flyoutVisible = visible; - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this.flyoutParent, x: visible ? this.anchorX : this.anchorX - this.translationX, duration: Utils.fixedInt(125), @@ -186,8 +182,8 @@ export default class BattleFlyout extends Phaser.GameObjects.Container { } destroy(fromScene?: boolean): void { - this.battleScene.eventTarget.removeEventListener(BattleSceneEventType.MOVE_USED, this.onMoveUsedEvent); - this.battleScene.eventTarget.removeEventListener(BattleSceneEventType.BERRY_USED, this.onBerryUsedEvent); + globalScene.eventTarget.removeEventListener(BattleSceneEventType.MOVE_USED, this.onMoveUsedEvent); + globalScene.eventTarget.removeEventListener(BattleSceneEventType.BERRY_USED, this.onBerryUsedEvent); super.destroy(fromScene); } diff --git a/src/ui/battle-info.ts b/src/ui/battle-info.ts index 72447988bdd..ca98d4c9d10 100644 --- a/src/ui/battle-info.ts +++ b/src/ui/battle-info.ts @@ -1,10 +1,10 @@ -import { EnemyPokemon, default as Pokemon } from "../field/pokemon"; +import type { EnemyPokemon, default as Pokemon } from "../field/pokemon"; import { getLevelTotalExp, getLevelRelExp } from "../data/exp"; import * as Utils from "../utils"; import { addTextObject, TextStyle } from "./text"; import { getGenderSymbol, getGenderColor, Gender } from "../data/gender"; import { StatusEffect } from "#enums/status-effect"; -import BattleScene from "../battle-scene"; +import { globalScene } from "#app/global-scene"; import { getTypeRgb } from "#app/data/type"; import { Type } from "#enums/type"; import { getVariantTint } from "#app/data/variant"; @@ -76,8 +76,8 @@ export default class BattleInfo extends Phaser.GameObjects.Container { private readonly statOrderPlayer = [ Stat.ATK, Stat.DEF, Stat.SPATK, Stat.SPDEF, Stat.ACC, Stat.EVA, Stat.SPD ]; private readonly statOrderEnemy = [ Stat.HP, Stat.ATK, Stat.DEF, Stat.SPATK, Stat.SPDEF, Stat.ACC, Stat.EVA, Stat.SPD ]; - constructor(scene: Phaser.Scene, x: number, y: number, player: boolean) { - super(scene, x, y); + constructor(x: number, y: number, player: boolean) { + super(globalScene, x, y); this.baseY = y; this.player = player; this.mini = !player; @@ -96,31 +96,31 @@ export default class BattleInfo extends Phaser.GameObjects.Container { // Initially invisible and shown via Pokemon.showInfo this.setVisible(false); - this.box = this.scene.add.sprite(0, 0, this.getTextureName()); + this.box = globalScene.add.sprite(0, 0, this.getTextureName()); this.box.setName("box"); this.box.setOrigin(1, 0.5); this.add(this.box); - this.nameText = addTextObject(this.scene, player ? -115 : -124, player ? -15.2 : -11.2, "", TextStyle.BATTLE_INFO); + this.nameText = addTextObject(player ? -115 : -124, player ? -15.2 : -11.2, "", TextStyle.BATTLE_INFO); this.nameText.setName("text_name"); this.nameText.setOrigin(0, 0); this.add(this.nameText); - this.genderText = addTextObject(this.scene, 0, 0, "", TextStyle.BATTLE_INFO); + this.genderText = addTextObject(0, 0, "", TextStyle.BATTLE_INFO); this.genderText.setName("text_gender"); this.genderText.setOrigin(0, 0); this.genderText.setPositionRelative(this.nameText, 0, 2); this.add(this.genderText); if (!this.player) { - this.ownedIcon = this.scene.add.sprite(0, 0, "icon_owned"); + this.ownedIcon = globalScene.add.sprite(0, 0, "icon_owned"); this.ownedIcon.setName("icon_owned"); this.ownedIcon.setVisible(false); this.ownedIcon.setOrigin(0, 0); this.ownedIcon.setPositionRelative(this.nameText, 0, 11.75); this.add(this.ownedIcon); - this.championRibbon = this.scene.add.sprite(0, 0, "champion_ribbon"); + this.championRibbon = globalScene.add.sprite(0, 0, "champion_ribbon"); this.championRibbon.setName("icon_champion_ribbon"); this.championRibbon.setVisible(false); this.championRibbon.setOrigin(0, 0); @@ -128,7 +128,7 @@ export default class BattleInfo extends Phaser.GameObjects.Container { this.add(this.championRibbon); } - this.teraIcon = this.scene.add.sprite(0, 0, "icon_tera"); + this.teraIcon = globalScene.add.sprite(0, 0, "icon_tera"); this.teraIcon.setName("icon_tera"); this.teraIcon.setVisible(false); this.teraIcon.setOrigin(0, 0); @@ -137,7 +137,7 @@ export default class BattleInfo extends Phaser.GameObjects.Container { this.teraIcon.setInteractive(new Phaser.Geom.Rectangle(0, 0, 12, 15), Phaser.Geom.Rectangle.Contains); this.add(this.teraIcon); - this.shinyIcon = this.scene.add.sprite(0, 0, "shiny_star"); + this.shinyIcon = globalScene.add.sprite(0, 0, "shiny_star"); this.shinyIcon.setName("icon_shiny"); this.shinyIcon.setVisible(false); this.shinyIcon.setOrigin(0, 0); @@ -146,7 +146,7 @@ export default class BattleInfo extends Phaser.GameObjects.Container { this.shinyIcon.setInteractive(new Phaser.Geom.Rectangle(0, 0, 12, 15), Phaser.Geom.Rectangle.Contains); this.add(this.shinyIcon); - this.fusionShinyIcon = this.scene.add.sprite(0, 0, "shiny_star_2"); + this.fusionShinyIcon = globalScene.add.sprite(0, 0, "shiny_star_2"); this.fusionShinyIcon.setName("icon_fusion_shiny"); this.fusionShinyIcon.setVisible(false); this.fusionShinyIcon.setOrigin(0, 0); @@ -154,7 +154,7 @@ export default class BattleInfo extends Phaser.GameObjects.Container { this.fusionShinyIcon.setPosition(this.shinyIcon.x, this.shinyIcon.y); this.add(this.fusionShinyIcon); - this.splicedIcon = this.scene.add.sprite(0, 0, "icon_spliced"); + this.splicedIcon = globalScene.add.sprite(0, 0, "icon_spliced"); this.splicedIcon.setName("icon_spliced"); this.splicedIcon.setVisible(false); this.splicedIcon.setOrigin(0, 0); @@ -163,42 +163,42 @@ export default class BattleInfo extends Phaser.GameObjects.Container { this.splicedIcon.setInteractive(new Phaser.Geom.Rectangle(0, 0, 12, 15), Phaser.Geom.Rectangle.Contains); this.add(this.splicedIcon); - this.statusIndicator = this.scene.add.sprite(0, 0, Utils.getLocalizedSpriteKey("statuses")); + this.statusIndicator = globalScene.add.sprite(0, 0, Utils.getLocalizedSpriteKey("statuses")); this.statusIndicator.setName("icon_status"); this.statusIndicator.setVisible(false); this.statusIndicator.setOrigin(0, 0); this.statusIndicator.setPositionRelative(this.nameText, 0, 11.5); this.add(this.statusIndicator); - this.levelContainer = this.scene.add.container(player ? -41 : -50, player ? -10 : -5); + this.levelContainer = globalScene.add.container(player ? -41 : -50, player ? -10 : -5); this.levelContainer.setName("container_level"); this.add(this.levelContainer); - const levelOverlay = this.scene.add.image(0, 0, "overlay_lv"); + const levelOverlay = globalScene.add.image(0, 0, "overlay_lv"); this.levelContainer.add(levelOverlay); - this.hpBar = this.scene.add.image(player ? -61 : -71, player ? -1 : 4.5, "overlay_hp"); + this.hpBar = globalScene.add.image(player ? -61 : -71, player ? -1 : 4.5, "overlay_hp"); this.hpBar.setName("hp_bar"); this.hpBar.setOrigin(0); this.add(this.hpBar); this.hpBarSegmentDividers = []; - this.levelNumbersContainer = this.scene.add.container(9.5, (this.scene as BattleScene).uiTheme ? 0 : -0.5); + this.levelNumbersContainer = globalScene.add.container(9.5, globalScene.uiTheme ? 0 : -0.5); this.levelNumbersContainer.setName("container_level"); this.levelContainer.add(this.levelNumbersContainer); if (this.player) { - this.hpNumbersContainer = this.scene.add.container(-15, 10); + this.hpNumbersContainer = globalScene.add.container(-15, 10); this.hpNumbersContainer.setName("container_hp"); this.add(this.hpNumbersContainer); - const expBar = this.scene.add.image(-98, 18, "overlay_exp"); + const expBar = globalScene.add.image(-98, 18, "overlay_exp"); expBar.setName("overlay_exp"); expBar.setOrigin(0); this.add(expBar); - const expMaskRect = this.scene.make.graphics({}); + const expMaskRect = globalScene.make.graphics({}); expMaskRect.setScale(6); expMaskRect.fillStyle(0xFFFFFF); expMaskRect.beginPath(); @@ -212,12 +212,12 @@ export default class BattleInfo extends Phaser.GameObjects.Container { this.expMaskRect = expMaskRect; } - this.statsContainer = this.scene.add.container(0, 0); + this.statsContainer = globalScene.add.container(0, 0); this.statsContainer.setName("container_stats"); this.statsContainer.setAlpha(0); this.add(this.statsContainer); - this.statsBox = this.scene.add.sprite(0, 0, `${this.getTextureName()}_stats`); + this.statsBox = globalScene.add.sprite(0, 0, `${this.getTextureName()}_stats`); this.statsBox.setName("box_stats"); this.statsBox.setOrigin(1, 0.5); this.statsContainer.add(this.statsBox); @@ -225,7 +225,7 @@ export default class BattleInfo extends Phaser.GameObjects.Container { const statLabels: Phaser.GameObjects.Sprite[] = []; this.statNumbers = []; - this.statValuesContainer = this.scene.add.container(0, 0); + this.statValuesContainer = globalScene.add.container(0, 0); this.statsContainer.add(this.statValuesContainer); // this gives us a different starting location from the left of the label and padding between stats for a player vs enemy @@ -249,13 +249,13 @@ export default class BattleInfo extends Phaser.GameObjects.Container { statY = baseY + (!!(i % 2) === this.player ? 10 : 0); // we compare i % 2 against this.player to tell us where to place the label; because this.battleStatOrder for enemies has HP, this.battleStatOrder[1]=ATK, but for players this.battleStatOrder[0]=ATK, so this comparing i % 2 to this.player fixes this issue for us } - const statLabel = this.scene.add.sprite(statX, statY, "pbinfo_stat", Stat[s]); + const statLabel = globalScene.add.sprite(statX, statY, "pbinfo_stat", Stat[s]); statLabel.setName("icon_stat_label_" + i.toString()); statLabel.setOrigin(0, 0); statLabels.push(statLabel); this.statValuesContainer.add(statLabel); - const statNumber = this.scene.add.sprite(statX + statLabel.width, statY, "pbinfo_stat_numbers", this.statOrder[i] !== Stat.HP ? "3" : "empty"); + const statNumber = globalScene.add.sprite(statX + statLabel.width, statY, "pbinfo_stat_numbers", this.statOrder[i] !== Stat.HP ? "3" : "empty"); statNumber.setName("icon_stat_number_" + i.toString()); statNumber.setOrigin(0, 0); this.statNumbers.push(statNumber); @@ -269,35 +269,35 @@ export default class BattleInfo extends Phaser.GameObjects.Container { }); if (!this.player) { - this.flyoutMenu = new BattleFlyout(this.scene, this.player); + this.flyoutMenu = new BattleFlyout(this.player); this.add(this.flyoutMenu); this.moveBelow(this.flyoutMenu, this.box); } - this.type1Icon = this.scene.add.sprite(player ? -139 : -15, player ? -17 : -15.5, `pbinfo_${player ? "player" : "enemy"}_type1`); + this.type1Icon = globalScene.add.sprite(player ? -139 : -15, player ? -17 : -15.5, `pbinfo_${player ? "player" : "enemy"}_type1`); this.type1Icon.setName("icon_type_1"); this.type1Icon.setOrigin(0, 0); this.add(this.type1Icon); - this.type2Icon = this.scene.add.sprite(player ? -139 : -15, player ? -1 : -2.5, `pbinfo_${player ? "player" : "enemy"}_type2`); + this.type2Icon = globalScene.add.sprite(player ? -139 : -15, player ? -1 : -2.5, `pbinfo_${player ? "player" : "enemy"}_type2`); this.type2Icon.setName("icon_type_2"); this.type2Icon.setOrigin(0, 0); this.add(this.type2Icon); - this.type3Icon = this.scene.add.sprite(player ? -154 : 0, player ? -17 : -15.5, `pbinfo_${player ? "player" : "enemy"}_type`); + this.type3Icon = globalScene.add.sprite(player ? -154 : 0, player ? -17 : -15.5, `pbinfo_${player ? "player" : "enemy"}_type`); this.type3Icon.setName("icon_type_3"); this.type3Icon.setOrigin(0, 0); this.add(this.type3Icon); if (!this.player) { - this.effectivenessContainer = this.scene.add.container(0, 0); + this.effectivenessContainer = globalScene.add.container(0, 0); this.effectivenessContainer.setPositionRelative(this.type1Icon, 22, 4); this.effectivenessContainer.setVisible(false); this.add(this.effectivenessContainer); - this.effectivenessText = addTextObject(this.scene, 5, 4.5, "", TextStyle.BATTLE_INFO); - this.effectivenessWindow = addWindow((this.scene as BattleScene), 0, 0, 0, 20, undefined, false, undefined, undefined, WindowVariant.XTHIN); + this.effectivenessText = addTextObject(5, 4.5, "", TextStyle.BATTLE_INFO); + this.effectivenessWindow = addWindow(0, 0, 0, 20, undefined, false, undefined, undefined, WindowVariant.XTHIN); this.effectivenessContainer.add(this.effectivenessWindow); this.effectivenessContainer.add(this.effectivenessText); @@ -327,18 +327,18 @@ export default class BattleInfo extends Phaser.GameObjects.Container { this.teraIcon.setVisible(this.lastTeraType !== Type.UNKNOWN); this.teraIcon.on("pointerover", () => { if (this.lastTeraType !== Type.UNKNOWN) { - (this.scene as BattleScene).ui.showTooltip("", i18next.t("fightUiHandler:teraHover", { type: i18next.t(`pokemonInfo:Type.${Type[this.lastTeraType]}`) })); + globalScene.ui.showTooltip("", i18next.t("fightUiHandler:teraHover", { type: i18next.t(`pokemonInfo:Type.${Type[this.lastTeraType]}`) })); } }); - this.teraIcon.on("pointerout", () => (this.scene as BattleScene).ui.hideTooltip()); + this.teraIcon.on("pointerout", () => globalScene.ui.hideTooltip()); const isFusion = pokemon.isFusion(); this.splicedIcon.setPositionRelative(this.nameText, nameTextWidth + this.genderText.displayWidth + 1 + (this.teraIcon.visible ? this.teraIcon.displayWidth + 1 : 0), 2.5); this.splicedIcon.setVisible(isFusion); if (this.splicedIcon.visible) { - this.splicedIcon.on("pointerover", () => (this.scene as BattleScene).ui.showTooltip("", `${pokemon.species.getName(pokemon.formIndex)}/${pokemon.fusionSpecies?.getName(pokemon.fusionFormIndex)}`)); - this.splicedIcon.on("pointerout", () => (this.scene as BattleScene).ui.hideTooltip()); + this.splicedIcon.on("pointerover", () => globalScene.ui.showTooltip("", `${pokemon.species.getName(pokemon.formIndex)}/${pokemon.fusionSpecies?.getName(pokemon.fusionFormIndex)}`)); + this.splicedIcon.on("pointerout", () => globalScene.ui.hideTooltip()); } const doubleShiny = isFusion && pokemon.shiny && pokemon.fusionShiny; @@ -352,8 +352,8 @@ export default class BattleInfo extends Phaser.GameObjects.Container { const shinyDescriptor = doubleShiny || baseVariant ? `${baseVariant === 2 ? i18next.t("common:epicShiny") : baseVariant === 1 ? i18next.t("common:rareShiny") : i18next.t("common:commonShiny")}${doubleShiny ? `/${pokemon.fusionVariant === 2 ? i18next.t("common:epicShiny") : pokemon.fusionVariant === 1 ? i18next.t("common:rareShiny") : i18next.t("common:commonShiny")}` : ""}` : ""; - this.shinyIcon.on("pointerover", () => (this.scene as BattleScene).ui.showTooltip("", `${i18next.t("common:shinyOnHover")}${shinyDescriptor ? ` (${shinyDescriptor})` : ""}`)); - this.shinyIcon.on("pointerout", () => (this.scene as BattleScene).ui.hideTooltip()); + this.shinyIcon.on("pointerover", () => globalScene.ui.showTooltip("", `${i18next.t("common:shinyOnHover")}${shinyDescriptor ? ` (${shinyDescriptor})` : ""}`)); + this.shinyIcon.on("pointerout", () => globalScene.ui.hideTooltip()); } this.fusionShinyIcon.setPosition(this.shinyIcon.x, this.shinyIcon.y); @@ -364,15 +364,15 @@ export default class BattleInfo extends Phaser.GameObjects.Container { if (!this.player) { if (this.nameText.visible) { - this.nameText.on("pointerover", () => (this.scene as BattleScene).ui.showTooltip("", i18next.t("battleInfo:generation", { generation: i18next.t(`starterSelectUiHandler:gen${pokemon.species.generation}`) }))); - this.nameText.on("pointerout", () => (this.scene as BattleScene).ui.hideTooltip()); + this.nameText.on("pointerover", () => globalScene.ui.showTooltip("", i18next.t("battleInfo:generation", { generation: i18next.t(`starterSelectUiHandler:gen${pokemon.species.generation}`) }))); + this.nameText.on("pointerout", () => globalScene.ui.hideTooltip()); } - const dexEntry = pokemon.scene.gameData.dexData[pokemon.species.speciesId]; + const dexEntry = globalScene.gameData.dexData[pokemon.species.speciesId]; this.ownedIcon.setVisible(!!dexEntry.caughtAttr); const opponentPokemonDexAttr = pokemon.getDexAttr(); - if (pokemon.scene.gameMode.isClassic) { - if (pokemon.scene.gameData.starterData[pokemon.species.getRootSpeciesId()].classicWinCount > 0 && pokemon.scene.gameData.starterData[pokemon.species.getRootSpeciesId(true)].classicWinCount > 0) { + if (globalScene.gameMode.isClassic) { + if (globalScene.gameData.starterData[pokemon.species.getRootSpeciesId()].classicWinCount > 0 && globalScene.gameData.starterData[pokemon.species.getRootSpeciesId(true)].classicWinCount > 0) { this.championRibbon.setVisible(true); } } @@ -380,7 +380,7 @@ export default class BattleInfo extends Phaser.GameObjects.Container { // Check if Player owns all genders and forms of the Pokemon const missingDexAttrs = ((dexEntry.caughtAttr & opponentPokemonDexAttr) < opponentPokemonDexAttr); - const ownedAbilityAttrs = pokemon.scene.gameData.starterData[pokemon.species.getRootSpeciesId()].abilityAttr; + const ownedAbilityAttrs = globalScene.gameData.starterData[pokemon.species.getRootSpeciesId()].abilityAttr; // Check if the player owns ability for the root form const playerOwnsThisAbility = pokemon.checkIfPlayerHasAbilityOfStarter(ownedAbilityAttrs); @@ -469,7 +469,7 @@ export default class BattleInfo extends Phaser.GameObjects.Container { } toggleStats(visible: boolean): void { - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this.statsContainer, duration: Utils.fixedInt(125), ease: "Sine.easeInOut", @@ -501,11 +501,11 @@ export default class BattleInfo extends Phaser.GameObjects.Container { } if (this.boss && this.bossSegments > 1) { - const uiTheme = (this.scene as BattleScene).uiTheme; + const uiTheme = globalScene.uiTheme; const maxHp = pokemon.getMaxHp(); for (let s = 1; s < this.bossSegments; s++) { const dividerX = (Math.round((maxHp / this.bossSegments) * s) / maxHp) * this.hpBar.width; - const divider = this.scene.add.rectangle(0, 0, 1, this.hpBar.height - (uiTheme ? 0 : 1), pokemon.bossSegmentIndex >= s ? 0xFFFFFF : 0x404040); + const divider = globalScene.add.rectangle(0, 0, 1, this.hpBar.height - (uiTheme ? 0 : 1), pokemon.bossSegmentIndex >= s ? 0xFFFFFF : 0x404040); divider.setOrigin(0.5, 0); divider.setName("hpBar_divider_" + s.toString()); this.add(divider); @@ -531,7 +531,7 @@ export default class BattleInfo extends Phaser.GameObjects.Container { updateInfo(pokemon: Pokemon, instant?: boolean): Promise { return new Promise(resolve => { - if (!this.scene) { + if (!globalScene) { return resolve(); } @@ -595,11 +595,11 @@ export default class BattleInfo extends Phaser.GameObjects.Container { const updatePokemonHp = () => { let duration = !instant ? Phaser.Math.Clamp(Math.abs((this.lastHp) - pokemon.hp) * 5, 250, 5000) : 0; - const speed = (this.scene as BattleScene).hpBarSpeed; + const speed = globalScene.hpBarSpeed; if (speed) { duration = speed >= 3 ? 0 : duration / Math.pow(2, speed); } - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this.hpBar, ease: "Sine.easeOut", scaleX: pokemon.getHpRatio(true), @@ -625,7 +625,7 @@ export default class BattleInfo extends Phaser.GameObjects.Container { }; if (this.player) { - const isLevelCapped = pokemon.level >= (this.scene as BattleScene).getMaxExpLevel(); + const isLevelCapped = pokemon.level >= globalScene.getMaxExpLevel(); if ((this.lastExp !== pokemon.exp || this.lastLevel !== pokemon.level)) { const originalResolve = resolve; @@ -663,7 +663,7 @@ export default class BattleInfo extends Phaser.GameObjects.Container { let displayName = pokemon.getNameToRender().replace(/[♂♀]/g, ""); let nameTextWidth: number; - const nameSizeTest = addTextObject(this.scene, 0, 0, displayName, TextStyle.BATTLE_INFO); + const nameSizeTest = addTextObject(0, 0, displayName, TextStyle.BATTLE_INFO); nameTextWidth = nameSizeTest.displayWidth; while (nameTextWidth > (this.player || !this.boss ? 60 : 98) - ((pokemon.gender !== Gender.GENDERLESS ? 6 : 0) + (pokemon.fusionSpecies ? 8 : 0) + (pokemon.isShiny() ? 8 : 0) + (Math.min(pokemon.level.toString().length, 3) - 3) * 8)) { @@ -688,7 +688,7 @@ export default class BattleInfo extends Phaser.GameObjects.Container { const relLevelExp = getLevelRelExp(this.lastLevel + 1, pokemon.species.growthRate); const levelExp = levelUp ? relLevelExp : pokemon.levelExp; let ratio = relLevelExp ? levelExp / relLevelExp : 0; - if (this.lastLevel >= (this.scene as BattleScene).getMaxExpLevel(true)) { + if (this.lastLevel >= globalScene.getMaxExpLevel(true)) { if (levelUp) { ratio = 1; } else { @@ -698,7 +698,7 @@ export default class BattleInfo extends Phaser.GameObjects.Container { } const durationMultiplier = Phaser.Tweens.Builders.GetEaseFunction("Sine.easeIn")(1 - (Math.max(this.lastLevel - 100, 0) / 150)); let duration = this.visible && !instant ? (((levelExp - this.lastLevelExp) / relLevelExp) * BattleInfo.EXP_GAINS_DURATION_BASE) * durationMultiplier * levelDurationMultiplier : 0; - const speed = (this.scene as BattleScene).expGainsSpeed; + const speed = globalScene.expGainsSpeed; if (speed && speed >= ExpGainsSpeed.DEFAULT) { duration = speed >= ExpGainsSpeed.SKIP ? ExpGainsSpeed.DEFAULT : duration / Math.pow(2, speed); } @@ -710,24 +710,24 @@ export default class BattleInfo extends Phaser.GameObjects.Container { this.lastLevelExp = pokemon.levelExp; } if (duration) { - (this.scene as BattleScene).playSound("se/exp"); + globalScene.playSound("se/exp"); } - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this.expMaskRect, ease: "Sine.easeIn", x: ratio * 510, duration: duration, onComplete: () => { - if (!this.scene) { + if (!globalScene) { return resolve(); } if (duration) { - this.scene.sound.stopByKey("se/exp"); + globalScene.sound.stopByKey("se/exp"); } if (ratio === 1) { - (this.scene as BattleScene).playSound("se/level_up"); + globalScene.playSound("se/level_up"); this.setLevel(this.lastLevel); - this.scene.time.delayedCall(500 * levelDurationMultiplier, () => { + globalScene.time.delayedCall(500 * levelDurationMultiplier, () => { this.expMaskRect.x = 0; this.updateInfo(pokemon, instant).then(() => resolve()); }); @@ -740,17 +740,17 @@ export default class BattleInfo extends Phaser.GameObjects.Container { } setLevel(level: integer): void { - const isCapped = level >= (this.scene as BattleScene).getMaxExpLevel(); + const isCapped = level >= globalScene.getMaxExpLevel(); this.levelNumbersContainer.removeAll(true); const levelStr = level.toString(); for (let i = 0; i < levelStr.length; i++) { - this.levelNumbersContainer.add(this.scene.add.image(i * 8, 0, `numbers${isCapped && this.player ? "_red" : ""}`, levelStr[i])); + this.levelNumbersContainer.add(globalScene.add.image(i * 8, 0, `numbers${isCapped && this.player ? "_red" : ""}`, levelStr[i])); } this.levelContainer.setX((this.player ? -41 : -50) - 8 * Math.max(levelStr.length - 3, 0)); } setHpNumbers(hp: integer, maxHp: integer): void { - if (!this.player || !this.scene) { + if (!this.player || !globalScene) { return; } this.hpNumbersContainer.removeAll(true); @@ -758,11 +758,11 @@ export default class BattleInfo extends Phaser.GameObjects.Container { const maxHpStr = maxHp.toString(); let offset = 0; for (let i = maxHpStr.length - 1; i >= 0; i--) { - this.hpNumbersContainer.add(this.scene.add.image(offset++ * -8, 0, "numbers", maxHpStr[i])); + this.hpNumbersContainer.add(globalScene.add.image(offset++ * -8, 0, "numbers", maxHpStr[i])); } - this.hpNumbersContainer.add(this.scene.add.image(offset++ * -8, 0, "numbers", "/")); + this.hpNumbersContainer.add(globalScene.add.image(offset++ * -8, 0, "numbers", "/")); for (let i = hpStr.length - 1; i >= 0; i--) { - this.hpNumbersContainer.add(this.scene.add.image(offset++ * -8, 0, "numbers", hpStr[i])); + this.hpNumbersContainer.add(globalScene.add.image(offset++ * -8, 0, "numbers", hpStr[i])); } } @@ -797,7 +797,7 @@ export default class BattleInfo extends Phaser.GameObjects.Container { } this.currentEffectiveness = effectiveness; - if (!(this.scene as BattleScene).typeHints || effectiveness === undefined || this.flyoutMenu?.flyoutVisible) { + if (!globalScene.typeHints || effectiveness === undefined || this.flyoutMenu?.flyoutVisible) { this.effectivenessContainer.setVisible(false); return; } @@ -817,14 +817,14 @@ export default class BattleInfo extends Phaser.GameObjects.Container { } export class PlayerBattleInfo extends BattleInfo { - constructor(scene: Phaser.Scene) { - super(scene, Math.floor(scene.game.canvas.width / 6) - 10, -72, true); + constructor() { + super(Math.floor(globalScene.game.canvas.width / 6) - 10, -72, true); } } export class EnemyBattleInfo extends BattleInfo { - constructor(scene: Phaser.Scene) { - super(scene, 140, -141, false); + constructor() { + super(140, -141, false); } setMini(mini: boolean): void { } // Always mini diff --git a/src/ui/battle-message-ui-handler.ts b/src/ui/battle-message-ui-handler.ts index 180fc66ed9b..2c0998b79ab 100644 --- a/src/ui/battle-message-ui-handler.ts +++ b/src/ui/battle-message-ui-handler.ts @@ -1,12 +1,13 @@ -import BattleScene from "../battle-scene"; +import { globalScene } from "#app/global-scene"; import { addBBCodeTextObject, addTextObject, getTextColor, TextStyle } from "./text"; import { Mode } from "./ui"; import MessageUiHandler from "./message-ui-handler"; import { addWindow } from "./ui-theme"; -import BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext"; +import type BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext"; import { Button } from "#enums/buttons"; import i18next from "i18next"; -import { Stat, PERMANENT_STATS, getStatKey } from "#app/enums/stat"; +import type { Stat } from "#app/enums/stat"; +import { PERMANENT_STATS, getStatKey } from "#app/enums/stat"; export default class BattleMessageUiHandler extends MessageUiHandler { private levelUpStatsContainer: Phaser.GameObjects.Container; @@ -22,8 +23,8 @@ export default class BattleMessageUiHandler extends MessageUiHandler { public readonly wordWrapWidth: number = 1780; - constructor(scene: BattleScene) { - super(scene, Mode.MESSAGE); + constructor() { + super(Mode.MESSAGE); } setup(): void { @@ -32,36 +33,36 @@ export default class BattleMessageUiHandler extends MessageUiHandler { this.textTimer = null; this.textCallbackTimer = null; - this.bg = this.scene.add.sprite(0, 0, "bg", this.scene.windowType); + this.bg = globalScene.add.sprite(0, 0, "bg", globalScene.windowType); this.bg.setName("sprite-battle-msg-bg"); this.bg.setOrigin(0, 1); ui.add(this.bg); - this.commandWindow = addWindow(this.scene, 202, 0, 118, 48); + this.commandWindow = addWindow(202, 0, 118, 48); this.commandWindow.setName("window-command"); this.commandWindow.setOrigin(0, 1); this.commandWindow.setVisible(false); ui.add(this.commandWindow); - this.movesWindowContainer = this.scene.add.container(0, 0); + this.movesWindowContainer = globalScene.add.container(0, 0); this.movesWindowContainer.setName("moves-bg"); this.movesWindowContainer.setVisible(false); - const movesWindow = addWindow(this.scene, 0, 0, 243, 48); + const movesWindow = addWindow(0, 0, 243, 48); movesWindow.setName("moves-window"); movesWindow.setOrigin(0, 1); - const moveDetailsWindow = addWindow(this.scene, 240, 0, 80, 48, false, false, -1, 132); + const moveDetailsWindow = addWindow(240, 0, 80, 48, false, false, -1, 132); moveDetailsWindow.setName("move-details-window"); moveDetailsWindow.setOrigin(0, 1); this.movesWindowContainer.add([ movesWindow, moveDetailsWindow ]); ui.add(this.movesWindowContainer); - const messageContainer = this.scene.add.container(12, -39); + const messageContainer = globalScene.add.container(12, -39); ui.add(messageContainer); - const message = addTextObject(this.scene, 0, 0, "", TextStyle.MESSAGE, { + const message = addTextObject(0, 0, "", TextStyle.MESSAGE, { maxLines: 2, wordWrap: { width: this.wordWrapWidth @@ -71,13 +72,13 @@ export default class BattleMessageUiHandler extends MessageUiHandler { this.message = message; - this.nameBoxContainer = this.scene.add.container(0, -16); + this.nameBoxContainer = globalScene.add.container(0, -16); this.nameBoxContainer.setVisible(false); - this.nameBox = this.scene.add.nineslice(0, 0, "namebox", this.scene.windowType, 72, 16, 8, 8, 5, 5); + this.nameBox = globalScene.add.nineslice(0, 0, "namebox", globalScene.windowType, 72, 16, 8, 8, 5, 5); this.nameBox.setOrigin(0, 0); - this.nameText = addTextObject(this.scene, 8, 0, "Rival", TextStyle.MESSAGE, { maxLines: 1 }); + this.nameText = addTextObject(8, 0, "Rival", TextStyle.MESSAGE, { maxLines: 1 }); this.nameBoxContainer.add(this.nameBox); this.nameBoxContainer.add(this.nameText); @@ -85,13 +86,13 @@ export default class BattleMessageUiHandler extends MessageUiHandler { this.initPromptSprite(messageContainer); - const levelUpStatsContainer = this.scene.add.container(0, 0); + const levelUpStatsContainer = globalScene.add.container(0, 0); levelUpStatsContainer.setVisible(false); ui.add(levelUpStatsContainer); this.levelUpStatsContainer = levelUpStatsContainer; - const levelUpStatsLabelsContent = addTextObject(this.scene, (this.scene.game.canvas.width / 6) - 73, -94, "", TextStyle.WINDOW, { maxLines: 6 }); + const levelUpStatsLabelsContent = addTextObject((globalScene.game.canvas.width / 6) - 73, -94, "", TextStyle.WINDOW, { maxLines: 6 }); levelUpStatsLabelsContent.setLineSpacing(i18next.resolvedLanguage === "ja" ? 25 : 5); let levelUpStatsLabelText = ""; @@ -101,19 +102,19 @@ export default class BattleMessageUiHandler extends MessageUiHandler { levelUpStatsLabelsContent.text = levelUpStatsLabelText; levelUpStatsLabelsContent.x -= levelUpStatsLabelsContent.displayWidth; - const levelUpStatsBg = addWindow(this.scene, (this.scene.game.canvas.width / 6), -100, 80 + levelUpStatsLabelsContent.displayWidth, 100); + const levelUpStatsBg = addWindow((globalScene.game.canvas.width / 6), -100, 80 + levelUpStatsLabelsContent.displayWidth, 100); levelUpStatsBg.setOrigin(1, 0); levelUpStatsContainer.add(levelUpStatsBg); levelUpStatsContainer.add(levelUpStatsLabelsContent); - const levelUpStatsIncrContent = addTextObject(this.scene, (this.scene.game.canvas.width / 6) - 50, -94, "+\n+\n+\n+\n+\n+", TextStyle.WINDOW, { maxLines: 6 }); + const levelUpStatsIncrContent = addTextObject((globalScene.game.canvas.width / 6) - 50, -94, "+\n+\n+\n+\n+\n+", TextStyle.WINDOW, { maxLines: 6 }); levelUpStatsIncrContent.setLineSpacing(i18next.resolvedLanguage === "ja" ? 25 : 5); levelUpStatsContainer.add(levelUpStatsIncrContent); this.levelUpStatsIncrContent = levelUpStatsIncrContent; - const levelUpStatsValuesContent = addBBCodeTextObject(this.scene, (this.scene.game.canvas.width / 6) - 7, -94, "", TextStyle.WINDOW, { maxLines: 6, lineSpacing: 5 }); + const levelUpStatsValuesContent = addBBCodeTextObject((globalScene.game.canvas.width / 6) - 7, -94, "", TextStyle.WINDOW, { maxLines: 6, lineSpacing: 5 }); levelUpStatsValuesContent.setLineSpacing(i18next.resolvedLanguage === "ja" ? 25 : 5); levelUpStatsValuesContent.setOrigin(1, 0); levelUpStatsValuesContent.setAlign("right"); @@ -167,10 +168,10 @@ export default class BattleMessageUiHandler extends MessageUiHandler { promptLevelUpStats(partyMemberIndex: integer, prevStats: integer[], showTotals: boolean): Promise { return new Promise(resolve => { - if (!this.scene.showLevelUpStats) { + if (!globalScene.showLevelUpStats) { return resolve(); } - const newStats = (this.scene as BattleScene).getPlayerParty()[partyMemberIndex].stats; + const newStats = globalScene.getPlayerParty()[partyMemberIndex].stats; let levelUpStatsValuesText = ""; for (const s of PERMANENT_STATS) { levelUpStatsValuesText += `${showTotals ? newStats[s] : newStats[s] - prevStats[s]}\n`; @@ -192,7 +193,7 @@ export default class BattleMessageUiHandler extends MessageUiHandler { promptIvs(pokemonId: integer, ivs: integer[], shownIvsCount: integer): Promise { return new Promise(resolve => { - this.scene.executeWithSeedOffset(() => { + globalScene.executeWithSeedOffset(() => { let levelUpStatsValuesText = ""; const shownStats = this.getTopIvs(ivs, shownIvsCount); for (const s of PERMANENT_STATS) { @@ -226,9 +227,9 @@ export default class BattleMessageUiHandler extends MessageUiHandler { } getIvDescriptor(value: integer, typeIv: integer, pokemonId: integer): string { - const starterSpecies = this.scene.getPokemonById(pokemonId)!.species.getRootSpeciesId(); // we are using getRootSpeciesId() here because we want to check against the baby form, not the mid form if it exists - const starterIvs: number[] = this.scene.gameData.dexData[starterSpecies].ivs; - const uiTheme = (this.scene as BattleScene).uiTheme; // Assuming uiTheme is accessible + const starterSpecies = globalScene.getPokemonById(pokemonId)!.species.getRootSpeciesId(); // we are using getRootSpeciesId() here because we want to check against the baby form, not the mid form if it exists + const starterIvs: number[] = globalScene.gameData.dexData[starterSpecies].ivs; + const uiTheme = globalScene.uiTheme; // Assuming uiTheme is accessible // Function to wrap text in color based on comparison const coloredText = (text: string, isBetter: boolean, ivValue) => { diff --git a/src/ui/bgm-bar.ts b/src/ui/bgm-bar.ts index 616b3ff87cf..0cd3da71248 100644 --- a/src/ui/bgm-bar.ts +++ b/src/ui/bgm-bar.ts @@ -1,7 +1,7 @@ -import BattleScene from "../battle-scene"; import { addTextObject, TextStyle } from "./text"; import i18next from "i18next"; import * as Utils from "#app/utils"; +import { globalScene } from "#app/global-scene"; const hiddenX = -150; const shownX = 0; @@ -16,20 +16,20 @@ export default class BgmBar extends Phaser.GameObjects.Container { public shown: boolean; - constructor(scene: BattleScene) { - super(scene, hiddenX, baseY); + constructor() { + super(globalScene, hiddenX, baseY); } setup(): void { this.defaultWidth = 230; this.defaultHeight = 100; - this.bg = this.scene.add.nineslice(-5, -5, "bgm_bar", undefined, this.defaultWidth, this.defaultHeight, 0, 0, 10, 10); + this.bg = globalScene.add.nineslice(-5, -5, "bgm_bar", undefined, this.defaultWidth, this.defaultHeight, 0, 0, 10, 10); this.bg.setOrigin(0, 0); this.add(this.bg); - this.musicText = addTextObject(this.scene, 5, 5, "", TextStyle.BGM_BAR); + this.musicText = addTextObject(5, 5, "", TextStyle.BGM_BAR); this.musicText.setOrigin(0, 0); this.musicText.setWordWrapWidth(650, true); @@ -52,7 +52,7 @@ export default class BgmBar extends Phaser.GameObjects.Container { this.bg.width = Math.min(this.defaultWidth, this.musicText.displayWidth + 23); this.bg.height = Math.min(this.defaultHeight, this.musicText.displayHeight + 20); - (this.scene as BattleScene).fieldUI.bringToTop(this); + globalScene.fieldUI.bringToTop(this); this.y = baseY; } @@ -72,11 +72,11 @@ export default class BgmBar extends Phaser.GameObjects.Container { return; } - if (!(this.scene as BattleScene).showBgmBar) { + if (!globalScene.showBgmBar) { this.setVisible(false); return; } - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this, x: visible ? shownX : hiddenX, duration: 500, diff --git a/src/ui/candy-bar.ts b/src/ui/candy-bar.ts index 14015f02259..81478f6fa7c 100644 --- a/src/ui/candy-bar.ts +++ b/src/ui/candy-bar.ts @@ -1,8 +1,9 @@ -import BattleScene, { starterColors } from "../battle-scene"; +import { starterColors } from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { TextStyle, addTextObject } from "./text"; import { argbFromRgba } from "@material/material-color-utilities"; import * as Utils from "../utils"; -import { Species } from "#enums/species"; +import type { Species } from "#enums/species"; export default class CandyBar extends Phaser.GameObjects.Container { private bg: Phaser.GameObjects.NineSlice; @@ -16,29 +17,29 @@ export default class CandyBar extends Phaser.GameObjects.Container { public shown: boolean; - constructor(scene: BattleScene) { - super(scene, (scene.game.canvas.width / 6), -((scene.game.canvas.height) / 6) + 15); + constructor() { + super(globalScene, (globalScene.game.canvas.width / 6), -((globalScene.game.canvas.height) / 6) + 15); } setup(): void { - this.bg = this.scene.add.nineslice(0, 0, "party_exp_bar", undefined, 8, 18, 21, 5, 6, 4); + this.bg = globalScene.add.nineslice(0, 0, "party_exp_bar", undefined, 8, 18, 21, 5, 6, 4); this.bg.setOrigin(0, 0); this.add(this.bg); - this.candyIcon = this.scene.add.sprite(14, 0, "items", "candy"); + this.candyIcon = globalScene.add.sprite(14, 0, "items", "candy"); this.candyIcon.setOrigin(0.5, 0); this.candyIcon.setScale(0.5); this.add(this.candyIcon); - this.candyOverlayIcon = this.scene.add.sprite(14, 0, "items", "candy_overlay"); + this.candyOverlayIcon = globalScene.add.sprite(14, 0, "items", "candy_overlay"); this.candyOverlayIcon.setOrigin(0.5, 0); this.candyOverlayIcon.setScale(0.5); this.add(this.candyOverlayIcon); - this.countText = addTextObject(this.scene, 22, 4, "", TextStyle.BATTLE_INFO); + this.countText = addTextObject(22, 4, "", TextStyle.BATTLE_INFO); this.countText.setOrigin(0, 0); this.add(this.countText); @@ -61,21 +62,21 @@ export default class CandyBar extends Phaser.GameObjects.Container { this.candyIcon.setTint(argbFromRgba(Utils.rgbHexToRgba(colorScheme[0]))); this.candyOverlayIcon.setTint(argbFromRgba(Utils.rgbHexToRgba(colorScheme[1]))); - this.countText.setText(`${(this.scene as BattleScene).gameData.starterData[starterSpeciesId].candyCount + count} (+${count.toString()})`); + this.countText.setText(`${globalScene.gameData.starterData[starterSpeciesId].candyCount + count} (+${count.toString()})`); this.bg.width = this.countText.displayWidth + 28; - (this.scene as BattleScene).fieldUI.bringToTop(this); + globalScene.fieldUI.bringToTop(this); if (this.tween) { this.tween.stop(); } - (this.scene as BattleScene).playSound("se/shing"); + globalScene.playSound("se/shing"); - this.tween = this.scene.tweens.add({ + this.tween = globalScene.tweens.add({ targets: this, - x: (this.scene.game.canvas.width / 6) - (this.bg.width - 5), + x: (globalScene.game.canvas.width / 6) - (this.bg.width - 5), duration: 500, ease: "Sine.easeOut", onComplete: () => { @@ -104,9 +105,9 @@ export default class CandyBar extends Phaser.GameObjects.Container { this.tween.stop(); } - this.tween = this.scene.tweens.add({ + this.tween = globalScene.tweens.add({ targets: this, - x: (this.scene.game.canvas.width / 6), + x: (globalScene.game.canvas.width / 6), duration: 500, ease: "Sine.easeIn", onComplete: () => { diff --git a/src/ui/challenges-select-ui-handler.ts b/src/ui/challenges-select-ui-handler.ts index e2547a626de..9c13d54bf55 100644 --- a/src/ui/challenges-select-ui-handler.ts +++ b/src/ui/challenges-select-ui-handler.ts @@ -1,17 +1,17 @@ -import BattleScene from "../battle-scene"; import { TextStyle, addTextObject } from "./text"; -import { Mode } from "./ui"; +import type { Mode } from "./ui"; import UiHandler from "./ui-handler"; import { addWindow } from "./ui-theme"; import { Button } from "#enums/buttons"; import i18next from "i18next"; -import { Challenge } from "#app/data/challenge"; +import type { Challenge } from "#app/data/challenge"; import * as Utils from "../utils"; import { Challenges } from "#app/enums/challenges"; import BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext"; import { Color, ShadowColor } from "#app/enums/color"; import { SelectStarterPhase } from "#app/phases/select-starter-phase"; import { TitlePhase } from "#app/phases/title-phase"; +import { globalScene } from "#app/global-scene"; /** * Handles all the UI for choosing optional challenges. @@ -45,8 +45,8 @@ export default class GameChallengesUiHandler extends UiHandler { private readonly leftArrowGap: number = 90; // distance from the label to the left arrow private readonly arrowSpacing: number = 3; // distance between the arrows and the value area - constructor(scene: BattleScene, mode: Mode | null = null) { - super(scene, mode); + constructor(mode: Mode | null = null) { + super(mode); } setup() { @@ -54,49 +54,37 @@ export default class GameChallengesUiHandler extends UiHandler { this.widestTextBox = 0; - this.challengesContainer = this.scene.add.container(1, -(this.scene.game.canvas.height / 6) + 1); + this.challengesContainer = globalScene.add.container(1, -(globalScene.game.canvas.height / 6) + 1); this.challengesContainer.setName("challenges"); - this.challengesContainer.setInteractive(new Phaser.Geom.Rectangle(0, 0, this.scene.game.canvas.width / 6, this.scene.game.canvas.height / 6), Phaser.Geom.Rectangle.Contains); + this.challengesContainer.setInteractive(new Phaser.Geom.Rectangle(0, 0, globalScene.game.canvas.width / 6, globalScene.game.canvas.height / 6), Phaser.Geom.Rectangle.Contains); - const bgOverlay = this.scene.add.rectangle(-1, -1, this.scene.scaledCanvas.width, this.scene.scaledCanvas.height, 0x424242, 0.8); + const bgOverlay = globalScene.add.rectangle(-1, -1, globalScene.scaledCanvas.width, globalScene.scaledCanvas.height, 0x424242, 0.8); bgOverlay.setName("rect-challenge-overlay"); bgOverlay.setOrigin(0, 0); this.challengesContainer.add(bgOverlay); // TODO: Change this back to /9 when adding in difficulty - const headerBg = addWindow(this.scene, 0, 0, (this.scene.game.canvas.width / 6), 24); + const headerBg = addWindow(0, 0, (globalScene.game.canvas.width / 6), 24); headerBg.setName("window-header-bg"); headerBg.setOrigin(0, 0); - const headerText = addTextObject(this.scene, 0, 0, i18next.t("challenges:title"), TextStyle.SETTINGS_LABEL); + const headerText = addTextObject(0, 0, i18next.t("challenges:title"), TextStyle.SETTINGS_LABEL); headerText.setName("text-header"); headerText.setOrigin(0, 0); headerText.setPositionRelative(headerBg, 8, 4); - // const difficultyBg = addWindow(this.scene, 0, 0, (this.scene.game.canvas.width / 18) - 2, 24); - // difficultyBg.setOrigin(0, 0); - // difficultyBg.setPositionRelative(headerBg, headerBg.width, 0); - - // this.difficultyText = addTextObject(this.scene, 0, 0, "0", TextStyle.SETTINGS_LABEL); - // this.difficultyText.setOrigin(0, 0); - // this.difficultyText.setPositionRelative(difficultyBg, 8, 4); - - // const difficultyName = addTextObject(this.scene, 0, 0, i18next.t("challenges:points"), TextStyle.SETTINGS_LABEL); - // difficultyName.setOrigin(0, 0); - // difficultyName.setPositionRelative(difficultyBg, difficultyBg.width - difficultyName.displayWidth - 8, 4); - - this.optionsWidth = this.scene.scaledCanvas.width * 0.6; - this.optionsBg = addWindow(this.scene, 0, headerBg.height, this.optionsWidth, this.scene.scaledCanvas.height - headerBg.height - 2); + this.optionsWidth = globalScene.scaledCanvas.width * 0.6; + this.optionsBg = addWindow(0, headerBg.height, this.optionsWidth, globalScene.scaledCanvas.height - headerBg.height - 2); this.optionsBg.setName("window-options-bg"); this.optionsBg.setOrigin(0, 0); - const descriptionBg = addWindow(this.scene, 0, headerBg.height, this.scene.scaledCanvas.width - this.optionsWidth, this.scene.scaledCanvas.height - headerBg.height - 26); + const descriptionBg = addWindow(0, headerBg.height, globalScene.scaledCanvas.width - this.optionsWidth, globalScene.scaledCanvas.height - headerBg.height - 26); descriptionBg.setName("window-desc-bg"); descriptionBg.setOrigin(0, 0); descriptionBg.setPositionRelative(this.optionsBg, this.optionsBg.width, 0); - this.descriptionText = new BBCodeText(this.scene, descriptionBg.x + 6, descriptionBg.y + 4, "", { + this.descriptionText = new BBCodeText(globalScene, descriptionBg.x + 6, descriptionBg.y + 4, "", { fontFamily: "emerald", fontSize: 84, color: Color.ORANGE, @@ -109,54 +97,54 @@ export default class GameChallengesUiHandler extends UiHandler { } }); this.descriptionText.setName("text-desc"); - this.scene.add.existing(this.descriptionText); + globalScene.add.existing(this.descriptionText); this.descriptionText.setScale(1 / 6); this.descriptionText.setShadow(4, 5, ShadowColor.ORANGE); this.descriptionText.setOrigin(0, 0); - this.startBg = addWindow(this.scene, 0, 0, descriptionBg.width, 24); + this.startBg = addWindow(0, 0, descriptionBg.width, 24); this.startBg.setName("window-start-bg"); this.startBg.setOrigin(0, 0); this.startBg.setPositionRelative(descriptionBg, 0, descriptionBg.height); - this.startText = addTextObject(this.scene, 0, 0, i18next.t("challenges:noneSelected"), TextStyle.SETTINGS_LABEL); + this.startText = addTextObject(0, 0, i18next.t("challenges:noneSelected"), TextStyle.SETTINGS_LABEL); this.startText.setName("text-start"); this.startText.setOrigin(0, 0); this.startText.setPositionRelative(this.startBg, (this.startBg.width - this.startText.displayWidth) / 2, 4); - this.startCursor = this.scene.add.nineslice(0, 0, "summary_moves_cursor", undefined, descriptionBg.width - 8, 16, 1, 1, 1, 1); + this.startCursor = globalScene.add.nineslice(0, 0, "summary_moves_cursor", undefined, descriptionBg.width - 8, 16, 1, 1, 1, 1); this.startCursor.setName("9s-start-cursor"); this.startCursor.setOrigin(0, 0); this.startCursor.setPositionRelative(this.startBg, 4, 3); this.startCursor.setVisible(false); - this.valuesContainer = this.scene.add.container(0, 0); + this.valuesContainer = globalScene.add.container(0, 0); this.valuesContainer.setName("values"); this.challengeLabels = []; for (let i = 0; i < 9; i++) { - const label = addTextObject(this.scene, 8, 28 + i * 16, "", TextStyle.SETTINGS_LABEL); + const label = addTextObject(8, 28 + i * 16, "", TextStyle.SETTINGS_LABEL); label.setName(`text-challenge-label-${i}`); label.setOrigin(0, 0); this.valuesContainer.add(label); - const leftArrow = this.scene.add.image(0, 0, "cursor_reverse"); + const leftArrow = globalScene.add.image(0, 0, "cursor_reverse"); leftArrow.setName(`challenge-left-arrow-${i}`); leftArrow.setOrigin(0, 0); leftArrow.setVisible(false); leftArrow.setScale(0.75); this.valuesContainer.add(leftArrow); - const rightArrow = this.scene.add.image(0, 0, "cursor"); + const rightArrow = globalScene.add.image(0, 0, "cursor"); rightArrow.setName(`challenge-right-arrow-${i}`); rightArrow.setOrigin(0, 0); rightArrow.setScale(0.75); rightArrow.setVisible(false); this.valuesContainer.add(rightArrow); - const value = addTextObject(this.scene, 0, 28 + i * 16, "", TextStyle.SETTINGS_LABEL); + const value = addTextObject(0, 28 + i * 16, "", TextStyle.SETTINGS_LABEL); value.setName(`challenge-value-text-${i}`); value.setPositionRelative(label, 100, 0); this.valuesContainer.add(value); @@ -169,7 +157,7 @@ export default class GameChallengesUiHandler extends UiHandler { }; } - this.monoTypeValue = this.scene.add.sprite(8, 98, Utils.getLocalizedSpriteKey("types")); + this.monoTypeValue = globalScene.add.sprite(8, 98, Utils.getLocalizedSpriteKey("types")); this.monoTypeValue.setName("challenge-value-monotype-sprite"); this.monoTypeValue.setScale(0.86); this.monoTypeValue.setVisible(false); @@ -209,20 +197,20 @@ export default class GameChallengesUiHandler extends UiHandler { * init all challenge labels */ initLabels(): void { - this.setDescription(this.scene.gameMode.challenges[0].getDescription()); + this.setDescription(globalScene.gameMode.challenges[0].getDescription()); this.widestTextBox = 0; for (let i = 0; i < 9; i++) { - if (i < this.scene.gameMode.challenges.length) { + if (i < globalScene.gameMode.challenges.length) { this.challengeLabels[i].label.setVisible(true); this.challengeLabels[i].value.setVisible(true); this.challengeLabels[i].leftArrow.setVisible(true); this.challengeLabels[i].rightArrow.setVisible(true); - const tempText = addTextObject(this.scene, 0, 0, "", TextStyle.SETTINGS_LABEL); // this is added here to get the widest text object for this language, which will be used for the arrow placement + const tempText = addTextObject(0, 0, "", TextStyle.SETTINGS_LABEL); // this is added here to get the widest text object for this language, which will be used for the arrow placement - for (let j = 0; j <= this.scene.gameMode.challenges[i].maxValue; j++) { // this goes through each challenge's value to find out what the max width will be - if (this.scene.gameMode.challenges[i].id !== Challenges.SINGLE_TYPE) { - tempText.setText(this.scene.gameMode.challenges[i].getValue(j)); + for (let j = 0; j <= globalScene.gameMode.challenges[i].maxValue; j++) { // this goes through each challenge's value to find out what the max width will be + if (globalScene.gameMode.challenges[i].id !== Challenges.SINGLE_TYPE) { + tempText.setText(globalScene.gameMode.challenges[i].getValue(j)); if (tempText.displayWidth > this.widestTextBox) { this.widestTextBox = tempText.displayWidth; } @@ -240,8 +228,8 @@ export default class GameChallengesUiHandler extends UiHandler { updateText(): void { this.setDescription(this.getActiveChallenge().getDescription()); let monoTypeVisible = false; - for (let i = 0; i < Math.min(9, this.scene.gameMode.challenges.length); i++) { - const challenge = this.scene.gameMode.challenges[this.scrollCursor + i]; + for (let i = 0; i < Math.min(9, globalScene.gameMode.challenges.length); i++) { + const challenge = globalScene.gameMode.challenges[this.scrollCursor + i]; const challengeLabel = this.challengeLabels[i]; challengeLabel.label.setText(challenge.getName()); challengeLabel.leftArrow.setPositionRelative(challengeLabel.label, this.leftArrowGap, 4.5); @@ -276,7 +264,7 @@ export default class GameChallengesUiHandler extends UiHandler { } // This checks if a challenge has been selected by the user and updates the text/its opacity accordingly. - this.hasSelectedChallenge = this.scene.gameMode.challenges.some(c => c.value !== 0); + this.hasSelectedChallenge = globalScene.gameMode.challenges.some(c => c.value !== 0); if (this.hasSelectedChallenge) { this.startText.setText(i18next.t("common:start")); @@ -289,11 +277,6 @@ export default class GameChallengesUiHandler extends UiHandler { this.startText.setPositionRelative(this.startBg, (this.startBg.width - this.startText.displayWidth) / 2, 4); } this.challengesContainer.update(); - - // const totalDifficulty = this.scene.gameMode.challenges.reduce((v, c) => v + c.getDifficulty(), 0); - // const totalMinDifficulty = this.scene.gameMode.challenges.reduce((v, c) => v + c.getMinDifficulty(), 0); - // this.difficultyText.text = `${totalDifficulty}` + (totalMinDifficulty ? `/${totalMinDifficulty}` : ""); - // this.difficultyText.updateText(); } show(args: any[]): boolean { @@ -303,7 +286,7 @@ export default class GameChallengesUiHandler extends UiHandler { this.updateChallengeArrows(false); this.challengesContainer.setVisible(true); // Should always be false at the start - this.hasSelectedChallenge = this.scene.gameMode.challenges.some(c => c.value !== 0); + this.hasSelectedChallenge = globalScene.gameMode.challenges.some(c => c.value !== 0); this.setCursor(0); this.initLabels(); @@ -319,7 +302,7 @@ export default class GameChallengesUiHandler extends UiHandler { /* This code updates the challenge starter arrows to be tinted/not tinted when the start button is selected to show they can't be changed */ updateChallengeArrows(tinted: boolean) { - for (let i = 0; i < Math.min(9, this.scene.gameMode.challenges.length); i++) { + for (let i = 0; i < Math.min(9, globalScene.gameMode.challenges.length); i++) { const challengeLabel = this.challengeLabels[i]; if (tinted) { challengeLabel.leftArrow.setTint(0x808080); @@ -354,16 +337,16 @@ export default class GameChallengesUiHandler extends UiHandler { this.cursorObj?.setVisible(true); this.updateChallengeArrows(this.startCursor.visible); } else { - this.scene.clearPhaseQueue(); - this.scene.pushPhase(new TitlePhase(this.scene)); - this.scene.getCurrentPhase()?.end(); + globalScene.clearPhaseQueue(); + globalScene.pushPhase(new TitlePhase()); + globalScene.getCurrentPhase()?.end(); } success = true; } else if (button === Button.SUBMIT || button === Button.ACTION) { if (this.hasSelectedChallenge) { if (this.startCursor.visible) { - this.scene.unshiftPhase(new SelectStarterPhase(this.scene)); - this.scene.getCurrentPhase()?.end(); + globalScene.unshiftPhase(new SelectStarterPhase()); + globalScene.getCurrentPhase()?.end(); } else { this.startCursor.setVisible(true); this.cursorObj?.setVisible(false); @@ -380,14 +363,14 @@ export default class GameChallengesUiHandler extends UiHandler { if (this.cursor === 0) { if (this.scrollCursor === 0) { // When at the top of the menu and pressing UP, move to the bottommost item. - if (this.scene.gameMode.challenges.length > rowsToDisplay) { // If there are more than 9 challenges, scroll to the bottom + if (globalScene.gameMode.challenges.length > rowsToDisplay) { // If there are more than 9 challenges, scroll to the bottom // First, set the cursor to the last visible element, preparing for the scroll to the end. const successA = this.setCursor(rowsToDisplay - 1); // Then, adjust the scroll to display the bottommost elements of the menu. - const successB = this.setScrollCursor(this.scene.gameMode.challenges.length - rowsToDisplay); + const successB = this.setScrollCursor(globalScene.gameMode.challenges.length - rowsToDisplay); success = successA && successB; // success is just there to play the little validation sound effect } else { // If there are 9 or less challenges, just move to the bottom one - success = this.setCursor(this.scene.gameMode.challenges.length - 1); + success = this.setCursor(globalScene.gameMode.challenges.length - 1); } } else { success = this.setScrollCursor(this.scrollCursor - 1); @@ -401,7 +384,7 @@ export default class GameChallengesUiHandler extends UiHandler { break; case Button.DOWN: if (this.cursor === rowsToDisplay - 1) { - if (this.scrollCursor < this.scene.gameMode.challenges.length - rowsToDisplay) { + if (this.scrollCursor < globalScene.gameMode.challenges.length - rowsToDisplay) { // When at the bottom and pressing DOWN, scroll if possible. success = this.setScrollCursor(this.scrollCursor + 1); } else { @@ -412,7 +395,7 @@ export default class GameChallengesUiHandler extends UiHandler { const successB = this.setScrollCursor(0); success = successA && successB; // success is just there to play the little validation sound effect } - } else if (this.scene.gameMode.challenges.length < rowsToDisplay && this.cursor === this.scene.gameMode.challenges.length - 1) { + } else if (globalScene.gameMode.challenges.length < rowsToDisplay && this.cursor === globalScene.gameMode.challenges.length - 1) { // When at the bottom of a non-scrolling menu and pressing DOWN, move to the topmost item. success = this.setCursor(0); } else { @@ -451,7 +434,7 @@ export default class GameChallengesUiHandler extends UiHandler { let ret = super.setCursor(cursor); if (!this.cursorObj) { - this.cursorObj = this.scene.add.nineslice(0, 0, "summary_moves_cursor", undefined, this.optionsWidth - 8, 16, 1, 1, 1, 1); + this.cursorObj = globalScene.add.nineslice(0, 0, "summary_moves_cursor", undefined, this.optionsWidth - 8, 16, 1, 1, 1, 1); this.cursorObj.setOrigin(0, 0); this.valuesContainer.add(this.cursorObj); } @@ -477,7 +460,7 @@ export default class GameChallengesUiHandler extends UiHandler { } getActiveChallenge(): Challenge { - return this.scene.gameMode.challenges[this.cursor + this.scrollCursor]; + return globalScene.gameMode.challenges[this.cursor + this.scrollCursor]; } clear() { diff --git a/src/ui/char-sprite.ts b/src/ui/char-sprite.ts index d76c7ec59d0..ccd97e2c8e4 100644 --- a/src/ui/char-sprite.ts +++ b/src/ui/char-sprite.ts @@ -1,4 +1,4 @@ -import BattleScene from "../battle-scene"; +import { globalScene } from "#app/global-scene"; import * as Utils from "../utils"; export default class CharSprite extends Phaser.GameObjects.Container { @@ -9,13 +9,13 @@ export default class CharSprite extends Phaser.GameObjects.Container { public variant: string; public shown: boolean; - constructor(scene: BattleScene) { - super(scene, (scene.game.canvas.width / 6) + 32, -42); + constructor() { + super(globalScene, (globalScene.game.canvas.width / 6) + 32, -42); } setup(): void { [ this.sprite, this.transitionSprite ] = new Array(2).fill(null).map(() => { - const ret = this.scene.add.sprite(0, 0, "", ""); + const ret = globalScene.add.sprite(0, 0, "", ""); ret.setOrigin(0.5, 1); this.add(ret); return ret; @@ -45,11 +45,11 @@ export default class CharSprite extends Phaser.GameObjects.Container { this.sprite.setTexture(key, variant); - (this.scene as BattleScene).fieldUI.bringToTop(this); + globalScene.fieldUI.bringToTop(this); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this, - x: (this.scene.game.canvas.width / 6) - 102, + x: (globalScene.game.canvas.width / 6) - 102, duration: 750, ease: "Cubic.easeOut", onComplete: () => { @@ -57,7 +57,7 @@ export default class CharSprite extends Phaser.GameObjects.Container { } }); - this.setVisible(this.scene.textures.get(key).key !== Utils.MissingTextureKey); + this.setVisible(globalScene.textures.get(key).key !== Utils.MissingTextureKey); this.shown = true; this.key = key; @@ -67,12 +67,12 @@ export default class CharSprite extends Phaser.GameObjects.Container { setVariant(variant: string): Promise { return new Promise(resolve => { - (this.scene as BattleScene).fieldUI.bringToTop(this); + globalScene.fieldUI.bringToTop(this); this.transitionSprite.setTexture(this.key, variant); this.transitionSprite.setAlpha(0); this.transitionSprite.setVisible(true); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this.transitionSprite, alpha: 1, duration: 250, @@ -93,9 +93,9 @@ export default class CharSprite extends Phaser.GameObjects.Container { return resolve(); } - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this, - x: (this.scene.game.canvas.width / 6) + 32, + x: (globalScene.game.canvas.width / 6) + 32, duration: 750, ease: "Cubic.easeIn", onComplete: () => { diff --git a/src/ui/command-ui-handler.ts b/src/ui/command-ui-handler.ts index 0dacacc7b70..32a3bb764a9 100644 --- a/src/ui/command-ui-handler.ts +++ b/src/ui/command-ui-handler.ts @@ -1,4 +1,3 @@ -import BattleScene from "../battle-scene"; import { addTextObject, TextStyle } from "./text"; import PartyUiHandler, { PartyUiMode } from "./party-ui-handler"; import { Mode } from "./ui"; @@ -7,6 +6,7 @@ import i18next from "i18next"; import { Button } from "#enums/buttons"; import { getPokemonNameWithAffix } from "#app/messages"; import { CommandPhase } from "#app/phases/command-phase"; +import { globalScene } from "#app/global-scene"; export enum Command { FIGHT = 0, @@ -22,8 +22,8 @@ export default class CommandUiHandler extends UiHandler { protected fieldIndex: integer = 0; protected cursor2: integer = 0; - constructor(scene: BattleScene) { - super(scene, Mode.COMMAND); + constructor() { + super(Mode.COMMAND); } setup() { @@ -35,13 +35,13 @@ export default class CommandUiHandler extends UiHandler { i18next.t("commandUiHandler:run") ]; - this.commandsContainer = this.scene.add.container(217, -38.7); + this.commandsContainer = globalScene.add.container(217, -38.7); this.commandsContainer.setName("commands"); this.commandsContainer.setVisible(false); ui.add(this.commandsContainer); for (let c = 0; c < commands.length; c++) { - const commandText = addTextObject(this.scene, c % 2 === 0 ? 0 : 55.8, c < 2 ? 0 : 16, commands[c], TextStyle.WINDOW); + const commandText = addTextObject(c % 2 === 0 ? 0 : 55.8, c < 2 ? 0 : 16, commands[c], TextStyle.WINDOW); commandText.setName(commands[c]); this.commandsContainer.add(commandText); } @@ -55,11 +55,11 @@ export default class CommandUiHandler extends UiHandler { this.commandsContainer.setVisible(true); let commandPhase: CommandPhase; - const currentPhase = this.scene.getCurrentPhase(); + const currentPhase = globalScene.getCurrentPhase(); if (currentPhase instanceof CommandPhase) { commandPhase = currentPhase; } else { - commandPhase = this.scene.getStandbyPhase() as CommandPhase; + commandPhase = globalScene.getStandbyPhase() as CommandPhase; } const messageHandler = this.getUi().getMessageHandler(); @@ -90,7 +90,7 @@ export default class CommandUiHandler extends UiHandler { switch (cursor) { // Fight case Command.FIGHT: - ui.setMode(Mode.FIGHT, (this.scene.getCurrentPhase() as CommandPhase).getFieldIndex()); + ui.setMode(Mode.FIGHT, (globalScene.getCurrentPhase() as CommandPhase).getFieldIndex()); success = true; break; // Ball @@ -100,17 +100,17 @@ export default class CommandUiHandler extends UiHandler { break; // Pokemon case Command.POKEMON: - ui.setMode(Mode.PARTY, PartyUiMode.SWITCH, (this.scene.getCurrentPhase() as CommandPhase).getPokemon().getFieldIndex(), null, PartyUiHandler.FilterNonFainted); + ui.setMode(Mode.PARTY, PartyUiMode.SWITCH, (globalScene.getCurrentPhase() as CommandPhase).getPokemon().getFieldIndex(), null, PartyUiHandler.FilterNonFainted); success = true; break; // Run case Command.RUN: - (this.scene.getCurrentPhase() as CommandPhase).handleCommand(Command.RUN, 0); + (globalScene.getCurrentPhase() as CommandPhase).handleCommand(Command.RUN, 0); success = true; break; } } else { - (this.scene.getCurrentPhase() as CommandPhase).cancel(); + (globalScene.getCurrentPhase() as CommandPhase).cancel(); } } else { switch (button) { @@ -159,7 +159,7 @@ export default class CommandUiHandler extends UiHandler { } if (!this.cursorObj) { - this.cursorObj = this.scene.add.image(0, 0, "cursor"); + this.cursorObj = globalScene.add.image(0, 0, "cursor"); this.commandsContainer.add(this.cursorObj); } diff --git a/src/ui/confirm-ui-handler.ts b/src/ui/confirm-ui-handler.ts index 2022508fc0d..b53a350cce0 100644 --- a/src/ui/confirm-ui-handler.ts +++ b/src/ui/confirm-ui-handler.ts @@ -1,8 +1,9 @@ -import BattleScene from "../battle-scene"; -import AbstractOptionSelectUiHandler, { OptionSelectConfig } from "./abstact-option-select-ui-handler"; +import type { OptionSelectConfig } from "./abstact-option-select-ui-handler"; +import AbstractOptionSelectUiHandler from "./abstact-option-select-ui-handler"; import { Mode } from "./ui"; import i18next from "i18next"; import { Button } from "#enums/buttons"; +import { globalScene } from "#app/global-scene"; export default class ConfirmUiHandler extends AbstractOptionSelectUiHandler { @@ -12,8 +13,8 @@ export default class ConfirmUiHandler extends AbstractOptionSelectUiHandler { private switchCheck: boolean; private switchCheckCursor: integer; - constructor(scene: BattleScene) { - super(scene, Mode.CONFIRM); + constructor() { + super(Mode.CONFIRM); } getWindowWidth(): integer { @@ -54,7 +55,7 @@ export default class ConfirmUiHandler extends AbstractOptionSelectUiHandler { const xOffset = (args.length >= 6 && args[5] !== null ? args[5] as number : 0); const yOffset = (args.length >= 7 && args[6] !== null ? args[6] as number : 0); - this.optionSelectContainer.setPosition((this.scene.game.canvas.width / 6) - 1 + xOffset, -48 + yOffset); + this.optionSelectContainer.setPosition((globalScene.game.canvas.width / 6) - 1 + xOffset, -48 + yOffset); this.setCursor(this.switchCheck ? this.switchCheckCursor : 0); return true; @@ -87,7 +88,7 @@ export default class ConfirmUiHandler extends AbstractOptionSelectUiHandler { const xOffset = (args.length >= 4 && args[3] !== null ? args[3] as number : 0); const yOffset = (args.length >= 5 && args[4] !== null ? args[4] as number : 0); - this.optionSelectContainer.setPosition((this.scene.game.canvas.width / 6) - 1 + xOffset, -48 + yOffset); + this.optionSelectContainer.setPosition((globalScene.game.canvas.width / 6) - 1 + xOffset, -48 + yOffset); this.setCursor(this.switchCheck ? this.switchCheckCursor : 0); diff --git a/src/ui/daily-run-scoreboard.ts b/src/ui/daily-run-scoreboard.ts index bb93b1fb1f5..0c7ac0d60b3 100644 --- a/src/ui/daily-run-scoreboard.ts +++ b/src/ui/daily-run-scoreboard.ts @@ -1,5 +1,5 @@ import i18next from "i18next"; -import BattleScene from "../battle-scene"; +import { globalScene } from "#app/global-scene"; import * as Utils from "../utils"; import { TextStyle, addTextObject } from "./text"; import { WindowVariant, addWindow } from "./ui-theme"; @@ -34,8 +34,8 @@ export class DailyRunScoreboard extends Phaser.GameObjects.Container { private _isUpdating: boolean; - constructor(scene: BattleScene, x: number, y: number) { - super(scene, x, y); + constructor(x: number, y: number) { + super(globalScene, x, y); this._isUpdating = false; this.setup(); @@ -60,24 +60,24 @@ export class DailyRunScoreboard extends Phaser.GameObjects.Container { } setup() { - const titleWindow = addWindow(this.scene, 0, 0, 114, 18, false, false, undefined, undefined, WindowVariant.THIN); + const titleWindow = addWindow(0, 0, 114, 18, false, false, undefined, undefined, WindowVariant.THIN); this.add(titleWindow); - this.titleLabel = addTextObject(this.scene, titleWindow.displayWidth / 2, titleWindow.displayHeight / 2, i18next.t("menu:loading"), TextStyle.WINDOW, { fontSize: "64px" }); + this.titleLabel = addTextObject(titleWindow.displayWidth / 2, titleWindow.displayHeight / 2, i18next.t("menu:loading"), TextStyle.WINDOW, { fontSize: "64px" }); this.titleLabel.setOrigin(0.5, 0.5); this.add(this.titleLabel); - const window = addWindow(this.scene, 0, 17, 114, 118, false, false, undefined, undefined, WindowVariant.THIN); + const window = addWindow(0, 17, 114, 118, false, false, undefined, undefined, WindowVariant.THIN); this.add(window); - this.rankingsContainer = this.scene.add.container(6, 21); + this.rankingsContainer = globalScene.add.container(6, 21); this.add(this.rankingsContainer); - this.loadingLabel = addTextObject(this.scene, window.displayWidth / 2, window.displayHeight / 2 + 16, "", TextStyle.WINDOW); + this.loadingLabel = addTextObject(window.displayWidth / 2, window.displayHeight / 2 + 16, "", TextStyle.WINDOW); this.loadingLabel.setOrigin(0.5, 0.5); this.loadingLabel.setVisible(false); - this.prevCategoryButton = this.scene.add.sprite(4, 4, "cursor_reverse"); + this.prevCategoryButton = globalScene.add.sprite(4, 4, "cursor_reverse"); this.prevCategoryButton.setOrigin(0, 0); this.add(this.prevCategoryButton); @@ -86,7 +86,7 @@ export class DailyRunScoreboard extends Phaser.GameObjects.Container { this.update(this.category ? this.category - 1 : Utils.getEnumKeys(ScoreboardCategory).length - 1); }); - this.nextCategoryButton = this.scene.add.sprite(window.displayWidth - 4, 4, "cursor"); + this.nextCategoryButton = globalScene.add.sprite(window.displayWidth - 4, 4, "cursor"); this.nextCategoryButton.setOrigin(1, 0); this.add(this.nextCategoryButton); @@ -95,7 +95,7 @@ export class DailyRunScoreboard extends Phaser.GameObjects.Container { this.update(this.category < Utils.getEnumKeys(ScoreboardCategory).length - 1 ? this.category + 1 : 0); }); - this.prevPageButton = this.scene.add.sprite(window.displayWidth / 2 - 16, titleWindow.displayHeight + window.displayHeight - 15, "cursor_reverse"); + this.prevPageButton = globalScene.add.sprite(window.displayWidth / 2 - 16, titleWindow.displayHeight + window.displayHeight - 15, "cursor_reverse"); this.prevPageButton.setOrigin(0, 0); this.prevPageButton.setAlpha(0.5); this.add(this.prevPageButton); @@ -107,11 +107,11 @@ export class DailyRunScoreboard extends Phaser.GameObjects.Container { } }); - this.pageNumberLabel = addTextObject(this.scene, window.displayWidth / 2, titleWindow.displayHeight + window.displayHeight - 16, "1", TextStyle.WINDOW, { fontSize: "64px" }); + this.pageNumberLabel = addTextObject(window.displayWidth / 2, titleWindow.displayHeight + window.displayHeight - 16, "1", TextStyle.WINDOW, { fontSize: "64px" }); this.pageNumberLabel.setOrigin(0.5, 0); this.add(this.pageNumberLabel); - this.nextPageButton = this.scene.add.sprite(window.displayWidth / 2 + 16, titleWindow.displayHeight + window.displayHeight - 15, "cursor"); + this.nextPageButton = globalScene.add.sprite(window.displayWidth / 2 + 16, titleWindow.displayHeight + window.displayHeight - 15, "cursor"); this.nextPageButton.setOrigin(1, 0); this.nextPageButton.setAlpha(0.5); this.add(this.nextPageButton); @@ -131,20 +131,20 @@ export class DailyRunScoreboard extends Phaser.GameObjects.Container { updateRankings(rankings: RankingEntry[]) { const getEntry = (rank: string, username: string, score: string, wave: string) => { - const entryContainer = this.scene.add.container(0, 0); + const entryContainer = globalScene.add.container(0, 0); - const rankLabel = addTextObject(this.scene, 0, 0, rank, TextStyle.WINDOW, { fontSize: "54px" }); + const rankLabel = addTextObject(0, 0, rank, TextStyle.WINDOW, { fontSize: "54px" }); entryContainer.add(rankLabel); - const usernameLabel = addTextObject(this.scene, 12, 0, username, TextStyle.WINDOW, { fontSize: "54px" }); + const usernameLabel = addTextObject(12, 0, username, TextStyle.WINDOW, { fontSize: "54px" }); entryContainer.add(usernameLabel); - const scoreLabel = addTextObject(this.scene, 84, 0, score, TextStyle.WINDOW, { fontSize: "54px" }); + const scoreLabel = addTextObject(84, 0, score, TextStyle.WINDOW, { fontSize: "54px" }); entryContainer.add(scoreLabel); switch (this.category) { case ScoreboardCategory.DAILY: - const waveLabel = addTextObject(this.scene, 68, 0, wave, TextStyle.WINDOW, { fontSize: "54px" }); + const waveLabel = addTextObject(68, 0, wave, TextStyle.WINDOW, { fontSize: "54px" }); entryContainer.add(waveLabel); break; case ScoreboardCategory.WEEKLY: @@ -236,7 +236,3 @@ export class DailyRunScoreboard extends Phaser.GameObjects.Container { }); } } - -export interface DailyRunScoreboard { - scene: BattleScene -} diff --git a/src/ui/dropdown.ts b/src/ui/dropdown.ts index e16efe17036..ec124312e14 100644 --- a/src/ui/dropdown.ts +++ b/src/ui/dropdown.ts @@ -1,5 +1,4 @@ -import BattleScene from "#app/battle-scene"; -import { SceneBase } from "#app/scene-base"; +import { globalScene } from "#app/global-scene"; import { addTextObject, TextStyle } from "./text"; import { addWindow, WindowVariant } from "./ui-theme"; import i18next from "i18next"; @@ -57,8 +56,8 @@ export class DropDownOption extends Phaser.GameObjects.Container { private excludeColor = 0xff5555; private unlockableColor = 0xffff00; - constructor(scene: SceneBase, val: any, labels: DropDownLabel | DropDownLabel[]) { - super(scene); + constructor(val: any, labels: DropDownLabel | DropDownLabel[]) { + super(globalScene); this.val = val; if (Array.isArray(labels)) { @@ -70,7 +69,7 @@ export class DropDownOption extends Phaser.GameObjects.Container { const currentLabel = this.labels[this.currentLabelIndex]; this.state = currentLabel.state; - this.text = addTextObject(scene, 0, 0, currentLabel.text || "", TextStyle.TOOLTIP_CONTENT); + this.text = addTextObject(0, 0, currentLabel.text || "", TextStyle.TOOLTIP_CONTENT); this.text.setOrigin(0, 0.5); this.add(this.text); @@ -96,12 +95,12 @@ export class DropDownOption extends Phaser.GameObjects.Container { */ setupToggleIcon(type: DropDownType, visible: boolean): void { if (type === DropDownType.SINGLE) { - this.toggle = this.scene.add.sprite(0, 0, "cursor"); + this.toggle = globalScene.add.sprite(0, 0, "cursor"); this.toggle.setScale(0.5); this.toggle.setOrigin(0, 0.5); this.toggle.setRotation(Math.PI / 180 * -90); } else { - this.toggle = this.scene.add.sprite(0, 0, "candy"); + this.toggle = globalScene.add.sprite(0, 0, "candy"); this.toggle.setScale(0.3); this.toggle.setOrigin(0, 0.5); } @@ -283,7 +282,7 @@ export class DropDown extends Phaser.GameObjects.Container { private lastDir: SortDirection = SortDirection.ASC; private defaultSettings: any[]; - constructor(scene: BattleScene, x: number, y: number, options: DropDownOption[], onChange: () => void, type: DropDownType = DropDownType.MULTI, optionSpacing: number = 2) { + constructor(x: number, y: number, options: DropDownOption[], onChange: () => void, type: DropDownType = DropDownType.MULTI, optionSpacing: number = 2) { const windowPadding = 5; const optionHeight = 7; const optionPaddingX = 4; @@ -291,19 +290,19 @@ export class DropDown extends Phaser.GameObjects.Container { const cursorOffset = 7; const optionWidth = 100; - super(scene, x - cursorOffset - windowPadding, y); + super(globalScene, x - cursorOffset - windowPadding, y); this.options = options; this.dropDownType = type; this.onChange = onChange; - this.cursorObj = scene.add.image(optionPaddingX + 3, 0, "cursor"); + this.cursorObj = globalScene.add.image(optionPaddingX + 3, 0, "cursor"); this.cursorObj.setScale(0.5); this.cursorObj.setOrigin(0, 0.5); this.cursorObj.setVisible(false); // For MULTI and HYBRID filter, add an ALL option at the top if (this.dropDownType === DropDownType.MULTI || this.dropDownType === DropDownType.HYBRID) { - this.options.unshift(new DropDownOption(scene, "ALL", new DropDownLabel(i18next.t("filterBar:all"), undefined, this.checkForAllOn() ? DropDownState.ON : DropDownState.OFF))); + this.options.unshift(new DropDownOption("ALL", new DropDownLabel(i18next.t("filterBar:all"), undefined, this.checkForAllOn() ? DropDownState.ON : DropDownState.OFF))); } this.defaultSettings = this.getSettings(); @@ -326,7 +325,7 @@ export class DropDown extends Phaser.GameObjects.Container { } }); - this.window = addWindow(scene, 0, 0, optionWidth, options[options.length - 1].y + optionHeight + optionPaddingY, false, false, undefined, undefined, WindowVariant.XTHIN); + this.window = addWindow(0, 0, optionWidth, options[options.length - 1].y + optionHeight + optionPaddingY, false, false, undefined, undefined, WindowVariant.XTHIN); this.add(this.window); this.add(options); this.add(this.cursorObj); diff --git a/src/ui/egg-counter-container.ts b/src/ui/egg-counter-container.ts index 21cebf5d97e..7bec7c97480 100644 --- a/src/ui/egg-counter-container.ts +++ b/src/ui/egg-counter-container.ts @@ -1,12 +1,13 @@ -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { addWindow } from "./ui-theme"; import { addTextObject, TextStyle } from "./text"; -import { EggCountChangedEvent, EggEventType } from "#app/events/egg"; -import EggHatchSceneHandler from "./egg-hatch-scene-handler"; +import type { EggCountChangedEvent } from "#app/events/egg"; +import { EggEventType } from "#app/events/egg"; +import type EggHatchSceneHandler from "./egg-hatch-scene-handler"; /** * A container that displays the count of hatching eggs. - * Extends Phaser.GameObjects.Container. + * @extends Phaser.GameObjects.Container */ export default class EggCounterContainer extends Phaser.GameObjects.Container { private readonly WINDOW_DEFAULT_WIDTH = 37; @@ -14,21 +15,18 @@ export default class EggCounterContainer extends Phaser.GameObjects.Container { private readonly WINDOW_HEIGHT = 26; private readonly onEggCountChangedEvent = (event: Event) => this.onEggCountChanged(event); - private battleScene: BattleScene; - private eggCount: integer; + private eggCount: number; private eggCountWindow: Phaser.GameObjects.NineSlice; public eggCountText: Phaser.GameObjects.Text; /** - * @param {BattleScene} scene - The scene to which this container belongs. - * @param {number} eggCount - The number of eggs to hatch. + * @param eggCount - The number of eggs to hatch. */ - constructor(scene: BattleScene, eggCount: integer) { - super(scene, 0, 0); + constructor(eggCount: number) { + super(globalScene, 0, 0); this.eggCount = eggCount; - this.battleScene = scene; - const uiHandler = this.battleScene.ui.getHandler() as EggHatchSceneHandler; + const uiHandler = globalScene.ui.getHandler() as EggHatchSceneHandler; uiHandler.eventTarget.addEventListener(EggEventType.EGG_COUNT_CHANGED, this.onEggCountChangedEvent); this.setup(); @@ -40,15 +38,15 @@ export default class EggCounterContainer extends Phaser.GameObjects.Container { private setup(): void { const windowWidth = this.eggCount > 9 ? this.WINDOW_MEDIUM_WIDTH : this.WINDOW_DEFAULT_WIDTH; - this.eggCountWindow = addWindow(this.battleScene, 5, 5, windowWidth, this.WINDOW_HEIGHT); + this.eggCountWindow = addWindow(5, 5, windowWidth, this.WINDOW_HEIGHT); this.setVisible(this.eggCount > 1); this.add(this.eggCountWindow); - const eggSprite = this.battleScene.add.sprite(19, 18, "egg", "egg_0"); + const eggSprite = globalScene.add.sprite(19, 18, "egg", "egg_0"); eggSprite.setScale(0.32); - this.eggCountText = addTextObject(this.battleScene, 28, 13, `${this.eggCount}`, TextStyle.MESSAGE, { fontSize: "66px" }); + this.eggCountText = addTextObject(28, 13, `${this.eggCount}`, TextStyle.MESSAGE, { fontSize: "66px" }); this.eggCountText.setName("text-egg-count"); this.add(eggSprite); @@ -66,7 +64,6 @@ export default class EggCounterContainer extends Phaser.GameObjects.Container { * Handles window size, the egg count to show, and whether it should be displayed. * * @param event {@linkcode Event} being sent - * @returns void */ private onEggCountChanged(event: Event): void { const eggCountChangedEvent = event as EggCountChangedEvent; diff --git a/src/ui/egg-gacha-ui-handler.ts b/src/ui/egg-gacha-ui-handler.ts index b14f5381a84..82e361fac39 100644 --- a/src/ui/egg-gacha-ui-handler.ts +++ b/src/ui/egg-gacha-ui-handler.ts @@ -1,9 +1,9 @@ -import BattleScene from "../battle-scene"; import { Mode } from "./ui"; import { TextStyle, addTextObject, getEggTierTextTint, getTextStyleOptions } from "./text"; import MessageUiHandler from "./message-ui-handler"; import * as Utils from "../utils"; -import { Egg, getLegendaryGachaSpeciesForTimestamp, IEggOptions } from "../data/egg"; +import type { IEggOptions } from "../data/egg"; +import { Egg, getLegendaryGachaSpeciesForTimestamp } from "../data/egg"; import { VoucherType, getVoucherTypeIcon } from "../system/voucher"; import { getPokemonSpecies } from "../data/pokemon-species"; import { addWindow } from "./ui-theme"; @@ -13,6 +13,7 @@ import Overrides from "#app/overrides"; import { GachaType } from "#app/enums/gacha-types"; import i18next from "i18next"; import { EggTier } from "#enums/egg-type"; +import { globalScene } from "#app/global-scene"; export default class EggGachaUiHandler extends MessageUiHandler { private eggGachaContainer: Phaser.GameObjects.Container; @@ -39,8 +40,8 @@ export default class EggGachaUiHandler extends MessageUiHandler { private scale: number = 0.1666666667; - constructor(scene: BattleScene) { - super(scene, Mode.EGG_GACHA); + constructor() { + super(Mode.EGG_GACHA); this.gachaContainers = []; this.gachaKnobs = []; @@ -53,29 +54,29 @@ export default class EggGachaUiHandler extends MessageUiHandler { setup() { this.gachaCursor = 0; - this.scale = getTextStyleOptions(TextStyle.WINDOW, this.scene.uiTheme).scale; + this.scale = getTextStyleOptions(TextStyle.WINDOW, globalScene.uiTheme).scale; const ui = this.getUi(); - this.eggGachaContainer = this.scene.add.container(0, -this.scene.game.canvas.height / 6); + this.eggGachaContainer = globalScene.add.container(0, -globalScene.game.canvas.height / 6); this.eggGachaContainer.setVisible(false); ui.add(this.eggGachaContainer); - const bg = this.scene.add.nineslice(0, 0, "default_bg", undefined, 320, 180, 0, 0, 16, 0); + const bg = globalScene.add.nineslice(0, 0, "default_bg", undefined, 320, 180, 0, 0, 16, 0); bg.setOrigin(0, 0); this.eggGachaContainer.add(bg); - const hatchFrameNames = this.scene.anims.generateFrameNames("gacha_hatch", { suffix: ".png", start: 1, end: 4 }); - if (!(this.scene.anims.exists("open"))) { - this.scene.anims.create({ + const hatchFrameNames = globalScene.anims.generateFrameNames("gacha_hatch", { suffix: ".png", start: 1, end: 4 }); + if (!(globalScene.anims.exists("open"))) { + globalScene.anims.create({ key: "open", frames: hatchFrameNames, frameRate: 12 }); } - if (!(this.scene.anims.exists("close"))) { - this.scene.anims.create({ + if (!(globalScene.anims.exists("close"))) { + globalScene.anims.create({ key: "close", frames: hatchFrameNames.reverse(), frameRate: 12 @@ -84,21 +85,21 @@ export default class EggGachaUiHandler extends MessageUiHandler { Utils.getEnumValues(GachaType).forEach((gachaType, g) => { const gachaTypeKey = GachaType[gachaType].toString().toLowerCase(); - const gachaContainer = this.scene.add.container(180 * g, 18); + const gachaContainer = globalScene.add.container(180 * g, 18); - const gacha = this.scene.add.sprite(0, 0, `gacha_${gachaTypeKey}`); + const gacha = globalScene.add.sprite(0, 0, `gacha_${gachaTypeKey}`); gacha.setOrigin(0, 0); - const gachaUnderlay = this.scene.add.sprite(115, 80, `gacha_underlay_${gachaTypeKey}`); + const gachaUnderlay = globalScene.add.sprite(115, 80, `gacha_underlay_${gachaTypeKey}`); gachaUnderlay.setOrigin(0, 0); - const gachaEggs = this.scene.add.sprite(0, 0, "gacha_eggs"); + const gachaEggs = globalScene.add.sprite(0, 0, "gacha_eggs"); gachaEggs.setOrigin(0, 0); - const gachaGlass = this.scene.add.sprite(0, 0, "gacha_glass"); + const gachaGlass = globalScene.add.sprite(0, 0, "gacha_glass"); gachaGlass.setOrigin(0, 0); - const gachaInfoContainer = this.scene.add.container(160, 46); + const gachaInfoContainer = globalScene.add.container(160, 46); const currentLanguage = i18next.resolvedLanguage ?? "en"; let gachaTextStyle = TextStyle.WINDOW_ALT; @@ -122,7 +123,7 @@ export default class EggGachaUiHandler extends MessageUiHandler { legendaryLabelY = 0; } - const gachaUpLabel = addTextObject(this.scene, gachaX, gachaY, i18next.t("egg:legendaryUPGacha"), gachaTextStyle); + const gachaUpLabel = addTextObject(gachaX, gachaY, i18next.t("egg:legendaryUPGacha"), gachaTextStyle); gachaUpLabel.setOrigin(0, 0); gachaInfoContainer.add(gachaUpLabel); @@ -139,7 +140,7 @@ export default class EggGachaUiHandler extends MessageUiHandler { } gachaUpLabel.setY(legendaryLabelY); - const pokemonIcon = this.scene.add.sprite(pokemonIconX, pokemonIconY, "pokemon_icons_0"); + const pokemonIcon = globalScene.add.sprite(pokemonIconX, pokemonIconY, "pokemon_icons_0"); if ([ "pt-BR" ].includes(currentLanguage)) { pokemonIcon.setX(pokemonIconX - 2); } @@ -170,9 +171,9 @@ export default class EggGachaUiHandler extends MessageUiHandler { break; } - const gachaKnob = this.scene.add.sprite(191, 89, "gacha_knob"); + const gachaKnob = globalScene.add.sprite(191, 89, "gacha_knob"); - const gachaHatch = this.scene.add.sprite(115, 73, "gacha_hatch"); + const gachaHatch = globalScene.add.sprite(115, 73, "gacha_hatch"); gachaHatch.setOrigin(0, 0); gachaContainer.add(gachaEggs); @@ -198,13 +199,13 @@ export default class EggGachaUiHandler extends MessageUiHandler { this.updateGachaInfo(g); }); - this.eggGachaOptionsContainer = this.scene.add.container(); + this.eggGachaOptionsContainer = globalScene.add.container(); - this.eggGachaOptionsContainer = this.scene.add.container((this.scene.game.canvas.width / 6), 148); + this.eggGachaOptionsContainer = globalScene.add.container((globalScene.game.canvas.width / 6), 148); this.eggGachaContainer.add(this.eggGachaOptionsContainer); - this.eggGachaOptionSelectBg = addWindow(this.scene, 0, 0, 96, 16 + 576 * this.scale); + this.eggGachaOptionSelectBg = addWindow(0, 0, 96, 16 + 576 * this.scale); this.eggGachaOptionSelectBg.setOrigin(1, 1); this.eggGachaOptionsContainer.add(this.eggGachaOptionSelectBg); @@ -231,7 +232,6 @@ export default class EggGachaUiHandler extends MessageUiHandler { }).join("\n"); const optionText = addTextObject( - this.scene, 0, 0, `${pullOptionsText}\n${i18next.t("menu:cancel")}`, @@ -246,7 +246,7 @@ export default class EggGachaUiHandler extends MessageUiHandler { optionText.setPositionRelative(this.eggGachaOptionSelectBg, 16, 9); pullOptions.forEach((option, i) => { - const icon = this.scene.add.sprite(0, 0, "items", option.icon); + const icon = globalScene.add.sprite(0, 0, "items", option.icon); icon.setScale(3 * this.scale); icon.setPositionRelative(this.eggGachaOptionSelectBg, 20, 9 + (48 + i * 96) * this.scale); this.eggGachaOptionsContainer.add(icon); @@ -255,13 +255,13 @@ export default class EggGachaUiHandler extends MessageUiHandler { this.eggGachaContainer.add(this.eggGachaOptionsContainer); new Array(Utils.getEnumKeys(VoucherType).length).fill(null).map((_, i) => { - const container = this.scene.add.container((this.scene.game.canvas.width / 6) - 56 * i, 0); + const container = globalScene.add.container((globalScene.game.canvas.width / 6) - 56 * i, 0); - const bg = addWindow(this.scene, 0, 0, 56, 22); + const bg = addWindow(0, 0, 56, 22); bg.setOrigin(1, 0); container.add(bg); - const countLabel = addTextObject(this.scene, -48, 3, "0", TextStyle.WINDOW); + const countLabel = addTextObject(-48, 3, "0", TextStyle.WINDOW); countLabel.setOrigin(0, 0); container.add(countLabel); @@ -269,7 +269,7 @@ export default class EggGachaUiHandler extends MessageUiHandler { const iconImage = getVoucherTypeIcon(i as VoucherType); - const icon = this.scene.add.sprite(-19, 2, "items", iconImage); + const icon = globalScene.add.sprite(-19, 2, "items", iconImage); icon.setOrigin(0, 0); icon.setScale(0.5); container.add(icon); @@ -277,25 +277,25 @@ export default class EggGachaUiHandler extends MessageUiHandler { this.eggGachaContainer.add(container); }); - this.eggGachaOverlay = this.scene.add.rectangle(0, 0, bg.displayWidth, bg.displayHeight, 0x000000); + this.eggGachaOverlay = globalScene.add.rectangle(0, 0, bg.displayWidth, bg.displayHeight, 0x000000); this.eggGachaOverlay.setOrigin(0, 0); this.eggGachaOverlay.setAlpha(0); this.eggGachaContainer.add(this.eggGachaOverlay); - this.eggGachaSummaryContainer = this.scene.add.container(0, 0); + this.eggGachaSummaryContainer = globalScene.add.container(0, 0); this.eggGachaSummaryContainer.setVisible(false); this.eggGachaContainer.add(this.eggGachaSummaryContainer); - const gachaMessageBoxContainer = this.scene.add.container(0, 148); + const gachaMessageBoxContainer = globalScene.add.container(0, 148); - const gachaMessageBox = addWindow(this.scene, 0, 0, 320, 32); + const gachaMessageBox = addWindow(0, 0, 320, 32); gachaMessageBox.setOrigin(0, 0); gachaMessageBoxContainer.add(gachaMessageBox); this.eggGachaMessageBox = gachaMessageBox; - const gachaMessageText = addTextObject(this.scene, 8, 8, "", TextStyle.WINDOW, { maxLines: 2 }); + const gachaMessageText = addTextObject(8, 8, "", TextStyle.WINDOW, { maxLines: 2 }); gachaMessageText.setOrigin(0, 0); gachaMessageBoxContainer.add(gachaMessageText); @@ -326,7 +326,7 @@ export default class EggGachaUiHandler extends MessageUiHandler { this.eggGachaContainer.setVisible(true); - handleTutorial(this.scene, Tutorial.Egg_Gacha); + handleTutorial(Tutorial.Egg_Gacha); return true; } @@ -351,41 +351,41 @@ export default class EggGachaUiHandler extends MessageUiHandler { return this.showSummary(eggs!); } - const egg = this.scene.add.sprite(127, 75, "egg", `egg_${eggs![count].getKey()}`); + const egg = globalScene.add.sprite(127, 75, "egg", `egg_${eggs![count].getKey()}`); egg.setScale(0.5); this.gachaContainers[this.gachaCursor].add(egg); this.gachaContainers[this.gachaCursor].moveTo(egg, 2); const doPullAnim = () => { - this.scene.playSound("se/gacha_running", { loop: true }); - this.scene.time.delayedCall(this.getDelayValue(count ? 500 : 1250), () => { - this.scene.playSound("se/gacha_dispense"); - this.scene.time.delayedCall(this.getDelayValue(750), () => { - this.scene.sound.stopByKey("se/gacha_running"); - this.scene.tweens.add({ + globalScene.playSound("se/gacha_running", { loop: true }); + globalScene.time.delayedCall(this.getDelayValue(count ? 500 : 1250), () => { + globalScene.playSound("se/gacha_dispense"); + globalScene.time.delayedCall(this.getDelayValue(750), () => { + globalScene.sound.stopByKey("se/gacha_running"); + globalScene.tweens.add({ targets: egg, duration: this.getDelayValue(350), y: 95, ease: "Bounce.easeOut", onComplete: () => { - this.scene.time.delayedCall(this.getDelayValue(125), () => { - this.scene.playSound("se/pb_catch"); + globalScene.time.delayedCall(this.getDelayValue(125), () => { + globalScene.playSound("se/pb_catch"); this.gachaHatches[this.gachaCursor].play("open"); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: egg, duration: this.getDelayValue(350), scale: 0.75, ease: "Sine.easeIn" }); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: egg, y: 110, duration: this.getDelayValue(350), ease: "Back.easeOut", onComplete: () => { this.gachaHatches[this.gachaCursor].play("close"); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: egg, y: 200, duration: this.getDelayValue(350), @@ -408,20 +408,20 @@ export default class EggGachaUiHandler extends MessageUiHandler { }; if (!count) { - this.scene.playSound("se/gacha_dial"); - this.scene.tweens.add({ + globalScene.playSound("se/gacha_dial"); + globalScene.tweens.add({ targets: this.gachaKnobs[this.gachaCursor], duration: this.getDelayValue(350), angle: 90, ease: "Cubic.easeInOut", onComplete: () => { - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this.gachaKnobs[this.gachaCursor], duration: this.getDelayValue(350), angle: 0, ease: "Sine.easeInOut" }); - this.scene.time.delayedCall(this.getDelayValue(350), doPullAnim); + globalScene.time.delayedCall(this.getDelayValue(350), doPullAnim); } }); } else { @@ -438,7 +438,7 @@ export default class EggGachaUiHandler extends MessageUiHandler { if (!eggs) { eggs = []; for (let i = 1; i <= pullCount; i++) { - const eggOptions: IEggOptions = { scene: this.scene, pulled: true, sourceType: this.gachaCursor }; + const eggOptions: IEggOptions = { pulled: true, sourceType: this.gachaCursor }; // Before creating the last egg, check if the guaranteed egg tier was already generated // if not, override the egg tier @@ -456,9 +456,9 @@ export default class EggGachaUiHandler extends MessageUiHandler { eggs = Utils.randSeedShuffle(eggs); - (this.scene.currentBattle ? this.scene.gameData.saveAll(this.scene, true, true, true) : this.scene.gameData.saveSystem()).then(success => { + (globalScene.currentBattle ? globalScene.gameData.saveAll(true, true, true) : globalScene.gameData.saveSystem()).then(success => { if (!success) { - return this.scene.reset(true); + return globalScene.reset(true); } doPull(); }); @@ -490,7 +490,7 @@ export default class EggGachaUiHandler extends MessageUiHandler { const eggScale = eggs.length < 20 ? 1 : 0.5; - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this.eggGachaOverlay, alpha: 0.5, ease: "Sine.easeOut", @@ -508,13 +508,13 @@ export default class EggGachaUiHandler extends MessageUiHandler { const sliceWidth = this.eggGachaOverlay.displayWidth / (cols + 2); const sliceHeight = height / (rows + 2); const yOffset = (sliceHeight / 2 * (row / Math.max(rows - 1, 1))) + sliceHeight / 4; - const ret = this.scene.add.container(sliceWidth * (col + 1) + (sliceWidth * 0.5), sliceHeight * (row + 1) + yOffset); + const ret = globalScene.add.container(sliceWidth * (col + 1) + (sliceWidth * 0.5), sliceHeight * (row + 1) + yOffset); ret.setScale(0.0001); - const eggSprite = this.scene.add.sprite(0, 0, "egg", `egg_${egg.getKey()}`); + const eggSprite = globalScene.add.sprite(0, 0, "egg", `egg_${egg.getKey()}`); ret.add(eggSprite); - const eggText = addTextObject(this.scene, 0, 14, egg.getEggDescriptor(), TextStyle.PARTY, { align: "center" }); + const eggText = addTextObject(0, 14, egg.getEggDescriptor(), TextStyle.PARTY, { align: "center" }); eggText.setOrigin(0.5, 0); eggText.setTint(getEggTierTextTint(!egg.isManaphyEgg() ? egg.tier : EggTier.EPIC)); ret.add(eggText); @@ -527,8 +527,8 @@ export default class EggGachaUiHandler extends MessageUiHandler { // Otherwise show the eggs one by one with a small delay between each eggContainers.forEach((eggContainer, index) => { const delay = !this.transitionCancelled ? this.getDelayValue(index * 100) : 0; - this.scene.time.delayedCall(delay, () => - this.scene.tweens.add({ + globalScene.time.delayedCall(delay, () => + globalScene.tweens.add({ targets: eggContainer, duration: this.getDelayValue(350), scale: eggScale, @@ -548,7 +548,7 @@ export default class EggGachaUiHandler extends MessageUiHandler { hideSummary() { this.setTransitioning(true); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: [ this.eggGachaOverlay, this.eggGachaSummaryContainer ], alpha: 0, duration: this.getDelayValue(250), @@ -568,7 +568,7 @@ export default class EggGachaUiHandler extends MessageUiHandler { const infoContainer = this.gachaInfoContainers[gachaType]; switch (gachaType as GachaType) { case GachaType.LEGENDARY: - const species = getPokemonSpecies(getLegendaryGachaSpeciesForTimestamp(this.scene, new Date().getTime())); + const species = getPokemonSpecies(getLegendaryGachaSpeciesForTimestamp(new Date().getTime())); const pokemonIcon = infoContainer.getAt(1) as Phaser.GameObjects.Sprite; pokemonIcon.setTexture(species.getIconAtlasKey(), species.getIconId(false)); break; @@ -576,13 +576,13 @@ export default class EggGachaUiHandler extends MessageUiHandler { } consumeVouchers(voucherType: VoucherType, count: integer): void { - this.scene.gameData.voucherCounts[voucherType] = Math.max(this.scene.gameData.voucherCounts[voucherType] - count, 0); + globalScene.gameData.voucherCounts[voucherType] = Math.max(globalScene.gameData.voucherCounts[voucherType] - count, 0); this.updateVoucherCounts(); } updateVoucherCounts(): void { this.voucherCountLabels.forEach((label, type) => { - label.setText(this.scene.gameData.voucherCounts[type].toString()); + label.setText(globalScene.gameData.voucherCounts[type].toString()); }); } @@ -641,10 +641,10 @@ export default class EggGachaUiHandler extends MessageUiHandler { case Button.ACTION: switch (this.cursor) { case 0: - if (!this.scene.gameData.voucherCounts[VoucherType.REGULAR] && !Overrides.EGG_FREE_GACHA_PULLS_OVERRIDE) { + if (!globalScene.gameData.voucherCounts[VoucherType.REGULAR] && !Overrides.EGG_FREE_GACHA_PULLS_OVERRIDE) { error = true; this.showError(i18next.t("egg:notEnoughVouchers")); - } else if (this.scene.gameData.eggs.length < 99 || Overrides.UNLIMITED_EGG_COUNT_OVERRIDE) { + } else if (globalScene.gameData.eggs.length < 99 || Overrides.UNLIMITED_EGG_COUNT_OVERRIDE) { if (!Overrides.EGG_FREE_GACHA_PULLS_OVERRIDE) { this.consumeVouchers(VoucherType.REGULAR, 1); } @@ -656,10 +656,10 @@ export default class EggGachaUiHandler extends MessageUiHandler { } break; case 2: - if (!this.scene.gameData.voucherCounts[VoucherType.PLUS] && !Overrides.EGG_FREE_GACHA_PULLS_OVERRIDE) { + if (!globalScene.gameData.voucherCounts[VoucherType.PLUS] && !Overrides.EGG_FREE_GACHA_PULLS_OVERRIDE) { error = true; this.showError(i18next.t("egg:notEnoughVouchers")); - } else if (this.scene.gameData.eggs.length < 95 || Overrides.UNLIMITED_EGG_COUNT_OVERRIDE) { + } else if (globalScene.gameData.eggs.length < 95 || Overrides.UNLIMITED_EGG_COUNT_OVERRIDE) { if (!Overrides.EGG_FREE_GACHA_PULLS_OVERRIDE) { this.consumeVouchers(VoucherType.PLUS, 1); } @@ -672,11 +672,11 @@ export default class EggGachaUiHandler extends MessageUiHandler { break; case 1: case 3: - if ((this.cursor === 1 && this.scene.gameData.voucherCounts[VoucherType.REGULAR] < 10 && !Overrides.EGG_FREE_GACHA_PULLS_OVERRIDE) - || (this.cursor === 3 && !this.scene.gameData.voucherCounts[VoucherType.PREMIUM] && !Overrides.EGG_FREE_GACHA_PULLS_OVERRIDE)) { + if ((this.cursor === 1 && globalScene.gameData.voucherCounts[VoucherType.REGULAR] < 10 && !Overrides.EGG_FREE_GACHA_PULLS_OVERRIDE) + || (this.cursor === 3 && !globalScene.gameData.voucherCounts[VoucherType.PREMIUM] && !Overrides.EGG_FREE_GACHA_PULLS_OVERRIDE)) { error = true; this.showError(i18next.t("egg:notEnoughVouchers")); - } else if (this.scene.gameData.eggs.length < 90 || Overrides.UNLIMITED_EGG_COUNT_OVERRIDE) { + } else if (globalScene.gameData.eggs.length < 90 || Overrides.UNLIMITED_EGG_COUNT_OVERRIDE) { if (this.cursor === 3) { if (!Overrides.EGG_FREE_GACHA_PULLS_OVERRIDE) { this.consumeVouchers(VoucherType.PREMIUM, 1); @@ -694,10 +694,10 @@ export default class EggGachaUiHandler extends MessageUiHandler { } break; case 4: - if (!this.scene.gameData.voucherCounts[VoucherType.GOLDEN] && !Overrides.EGG_FREE_GACHA_PULLS_OVERRIDE) { + if (!globalScene.gameData.voucherCounts[VoucherType.GOLDEN] && !Overrides.EGG_FREE_GACHA_PULLS_OVERRIDE) { error = true; this.showError(i18next.t("egg:notEnoughVouchers")); - } else if (this.scene.gameData.eggs.length < 75 || Overrides.UNLIMITED_EGG_COUNT_OVERRIDE) { + } else if (globalScene.gameData.eggs.length < 75 || Overrides.UNLIMITED_EGG_COUNT_OVERRIDE) { if (!Overrides.EGG_FREE_GACHA_PULLS_OVERRIDE) { this.consumeVouchers(VoucherType.GOLDEN, 1); } @@ -755,7 +755,7 @@ export default class EggGachaUiHandler extends MessageUiHandler { const ret = super.setCursor(cursor); if (!this.cursorObj) { - this.cursorObj = this.scene.add.image(0, 0, "cursor"); + this.cursorObj = globalScene.add.image(0, 0, "cursor"); this.eggGachaOptionsContainer.add(this.cursorObj); } @@ -775,7 +775,7 @@ export default class EggGachaUiHandler extends MessageUiHandler { this.setTransitioning(true); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this.gachaContainers, duration: this.eggGachaContainer.visible ? 500 : 0, x: (_target, _key, _value, index) => 180 * (index - cursor), diff --git a/src/ui/egg-hatch-scene-handler.ts b/src/ui/egg-hatch-scene-handler.ts index 1bf58a786e1..189d2f295d1 100644 --- a/src/ui/egg-hatch-scene-handler.ts +++ b/src/ui/egg-hatch-scene-handler.ts @@ -1,8 +1,8 @@ -import BattleScene from "../battle-scene"; import { Mode } from "./ui"; import UiHandler from "./ui-handler"; import { Button } from "#enums/buttons"; import { EggHatchPhase } from "#app/phases/egg-hatch-phase"; +import { globalScene } from "#app/global-scene"; export default class EggHatchSceneHandler extends UiHandler { public eggHatchContainer: Phaser.GameObjects.Container; @@ -15,17 +15,17 @@ export default class EggHatchSceneHandler extends UiHandler { */ public readonly eventTarget: EventTarget = new EventTarget(); - constructor(scene: BattleScene) { - super(scene, Mode.EGG_HATCH_SCENE); + constructor() { + super(Mode.EGG_HATCH_SCENE); } setup() { - this.eggHatchContainer = this.scene.add.container(0, -this.scene.game.canvas.height / 6); - this.scene.fieldUI.add(this.eggHatchContainer); + this.eggHatchContainer = globalScene.add.container(0, -globalScene.game.canvas.height / 6); + globalScene.fieldUI.add(this.eggHatchContainer); - const eggLightraysAnimFrames = this.scene.anims.generateFrameNames("egg_lightrays", { start: 0, end: 3 }); - if (!(this.scene.anims.exists("egg_lightrays"))) { - this.scene.anims.create({ + const eggLightraysAnimFrames = globalScene.anims.generateFrameNames("egg_lightrays", { start: 0, end: 3 }); + if (!(globalScene.anims.exists("egg_lightrays"))) { + globalScene.anims.create({ key: "egg_lightrays", frames: eggLightraysAnimFrames, frameRate: 32 @@ -38,20 +38,20 @@ export default class EggHatchSceneHandler extends UiHandler { this.getUi().showText("", 0); - this.scene.setModifiersVisible(false); + globalScene.setModifiersVisible(false); return true; } processInput(button: Button): boolean { if (button === Button.ACTION || button === Button.CANCEL) { - const phase = this.scene.getCurrentPhase(); + const phase = globalScene.getCurrentPhase(); if (phase instanceof EggHatchPhase && phase.trySkip()) { return true; } } - return this.scene.ui.getMessageHandler().processInput(button); + return globalScene.ui.getMessageHandler().processInput(button); } setCursor(_cursor: integer): boolean { diff --git a/src/ui/egg-list-ui-handler.ts b/src/ui/egg-list-ui-handler.ts index 939f95fabe6..1b25d55d96d 100644 --- a/src/ui/egg-list-ui-handler.ts +++ b/src/ui/egg-list-ui-handler.ts @@ -1,4 +1,3 @@ -import BattleScene from "#app/battle-scene"; import { Mode } from "#app/ui/ui"; import PokemonIconAnimHandler, { PokemonIconAnimMode } from "#app/ui/pokemon-icon-anim-handler"; import { TextStyle, addTextObject } from "#app/ui/text"; @@ -8,6 +7,7 @@ import { Button } from "#enums/buttons"; import i18next from "i18next"; import ScrollableGridUiHandler from "#app/ui/scrollable-grid-handler"; import { ScrollBar } from "#app/ui/scroll-bar"; +import { globalScene } from "#app/global-scene"; export default class EggListUiHandler extends MessageUiHandler { private readonly ROWS = 9; @@ -28,59 +28,59 @@ export default class EggListUiHandler extends MessageUiHandler { private iconAnimHandler: PokemonIconAnimHandler; - constructor(scene: BattleScene) { - super(scene, Mode.EGG_LIST); + constructor() { + super(Mode.EGG_LIST); } setup() { const ui = this.getUi(); - this.eggListContainer = this.scene.add.container(0, -this.scene.game.canvas.height / 6); + this.eggListContainer = globalScene.add.container(0, -globalScene.game.canvas.height / 6); this.eggListContainer.setVisible(false); ui.add(this.eggListContainer); - const bgColor = this.scene.add.rectangle(0, 0, this.scene.game.canvas.width / 6, this.scene.game.canvas.height / 6, 0x006860); + const bgColor = globalScene.add.rectangle(0, 0, globalScene.game.canvas.width / 6, globalScene.game.canvas.height / 6, 0x006860); bgColor.setOrigin(0, 0); this.eggListContainer.add(bgColor); - const eggListBg = this.scene.add.image(0, 0, "egg_list_bg"); + const eggListBg = globalScene.add.image(0, 0, "egg_list_bg"); eggListBg.setOrigin(0, 0); this.eggListContainer.add(eggListBg); - this.eggListContainer.add(addWindow(this.scene, 1, 85, 106, 22)); - this.eggListContainer.add(addWindow(this.scene, 1, 102, 106, 50, true)); - this.eggListContainer.add(addWindow(this.scene, 1, 147, 106, 32, true)); - this.eggListContainer.add(addWindow(this.scene, 107, 1, 212, 178)); + this.eggListContainer.add(addWindow(1, 85, 106, 22)); + this.eggListContainer.add(addWindow(1, 102, 106, 50, true)); + this.eggListContainer.add(addWindow(1, 147, 106, 32, true)); + this.eggListContainer.add(addWindow(107, 1, 212, 178)); this.iconAnimHandler = new PokemonIconAnimHandler(); - this.iconAnimHandler.setup(this.scene); + this.iconAnimHandler.setup(); - this.eggNameText = addTextObject(this.scene, 8, 68, "", TextStyle.SUMMARY); + this.eggNameText = addTextObject(8, 68, "", TextStyle.SUMMARY); this.eggNameText.setOrigin(0, 0); this.eggListContainer.add(this.eggNameText); - this.eggDateText = addTextObject(this.scene, 8, 91, "", TextStyle.TOOLTIP_CONTENT); + this.eggDateText = addTextObject(8, 91, "", TextStyle.TOOLTIP_CONTENT); this.eggListContainer.add(this.eggDateText); - this.eggHatchWavesText = addTextObject(this.scene, 8, 108, "", TextStyle.TOOLTIP_CONTENT); + this.eggHatchWavesText = addTextObject(8, 108, "", TextStyle.TOOLTIP_CONTENT); this.eggHatchWavesText.setWordWrapWidth(540); this.eggListContainer.add(this.eggHatchWavesText); - this.eggGachaInfoText = addTextObject(this.scene, 8, 152, "", TextStyle.TOOLTIP_CONTENT); + this.eggGachaInfoText = addTextObject(8, 152, "", TextStyle.TOOLTIP_CONTENT); this.eggGachaInfoText.setWordWrapWidth(540); this.eggListContainer.add(this.eggGachaInfoText); - this.eggListIconContainer = this.scene.add.container(113, 5); + this.eggListIconContainer = globalScene.add.container(113, 5); this.eggListContainer.add(this.eggListIconContainer); - this.cursorObj = this.scene.add.image(0, 0, "select_cursor"); + this.cursorObj = globalScene.add.image(0, 0, "select_cursor"); this.cursorObj.setOrigin(0, 0); this.eggListContainer.add(this.cursorObj); - this.eggSprite = this.scene.add.sprite(54, 37, "egg"); + this.eggSprite = globalScene.add.sprite(54, 37, "egg"); this.eggListContainer.add(this.eggSprite); - const scrollBar = new ScrollBar(this.scene, 310, 5, 4, 170, this.ROWS); + const scrollBar = new ScrollBar(310, 5, 4, 170, this.ROWS); this.eggListContainer.add(scrollBar); this.scrollGridHandler = new ScrollableGridUiHandler(this, this.ROWS, this.COLUMNS) @@ -88,15 +88,15 @@ export default class EggListUiHandler extends MessageUiHandler { .withUpdateGridCallBack(() => this.updateEggIcons()) .withUpdateSingleElementCallback((i:number) => this.setEggDetails(i)); - this.eggListMessageBoxContainer = this.scene.add.container(0, this.scene.game.canvas.height / 6); + this.eggListMessageBoxContainer = globalScene.add.container(0, globalScene.game.canvas.height / 6); this.eggListMessageBoxContainer.setVisible(false); this.eggListContainer.add(this.eggListMessageBoxContainer); - const eggListMessageBox = addWindow(this.scene, 1, -1, 318, 28); + const eggListMessageBox = addWindow(1, -1, 318, 28); eggListMessageBox.setOrigin(0, 1); this.eggListMessageBoxContainer.add(eggListMessageBox); - this.message = addTextObject(this.scene, 8, -8, "", TextStyle.WINDOW, { maxLines: 1 }); + this.message = addTextObject(8, -8, "", TextStyle.WINDOW, { maxLines: 1 }); this.message.setOrigin(0, 1); this.eggListMessageBoxContainer.add(this.message); @@ -112,7 +112,7 @@ export default class EggListUiHandler extends MessageUiHandler { this.eggListContainer.setVisible(true); - this.scrollGridHandler.setTotalElements(this.scene.gameData.eggs.length); + this.scrollGridHandler.setTotalElements(globalScene.gameData.eggs.length); this.updateEggIcons(); this.setCursor(0); @@ -125,10 +125,10 @@ export default class EggListUiHandler extends MessageUiHandler { */ private initEggIcons() { this.eggIcons = []; - for (let i = 0; i < Math.min(this.ROWS * this.COLUMNS, this.scene.gameData.eggs.length); i++) { + for (let i = 0; i < Math.min(this.ROWS * this.COLUMNS, globalScene.gameData.eggs.length); i++) { const x = (i % this.COLUMNS) * 18; const y = Math.floor(i / this.COLUMNS) * 18; - const icon = this.scene.add.sprite(x - 2, y + 2, "egg_icons"); + const icon = globalScene.add.sprite(x - 2, y + 2, "egg_icons"); icon.setScale(0.5); icon.setOrigin(0, 0); this.eggListIconContainer.add(icon); @@ -141,14 +141,14 @@ export default class EggListUiHandler extends MessageUiHandler { */ private updateEggIcons() { const indexOffset = this.scrollGridHandler.getItemOffset(); - const eggsToShow = Math.min(this.eggIcons.length, this.scene.gameData.eggs.length - indexOffset); + const eggsToShow = Math.min(this.eggIcons.length, globalScene.gameData.eggs.length - indexOffset); this.eggIcons.forEach((icon, i) => { if (i !== this.cursor) { this.iconAnimHandler.addOrUpdate(icon, PokemonIconAnimMode.NONE); } if (i < eggsToShow) { - const egg = this.scene.gameData.eggs[i + indexOffset]; + const egg = globalScene.gameData.eggs[i + indexOffset]; icon.setFrame(egg.getKey()); icon.setVisible(true); } else { @@ -162,7 +162,7 @@ export default class EggListUiHandler extends MessageUiHandler { * @param index which egg in the list to display the info for */ private setEggDetails(index: number): void { - const egg = this.scene.gameData.eggs[index]; + const egg = globalScene.gameData.eggs[index]; this.eggSprite.setFrame(`egg_${egg.getKey()}`); this.eggNameText.setText(`${i18next.t("egg:egg")} (${egg.getEggDescriptor()})`); this.eggDateText.setText( @@ -174,7 +174,7 @@ export default class EggListUiHandler extends MessageUiHandler { }) ); this.eggHatchWavesText.setText(egg.getEggHatchWavesMessage()); - this.eggGachaInfoText.setText(egg.getEggTypeDescriptor(this.scene)); + this.eggGachaInfoText.setText(egg.getEggTypeDescriptor()); } processInput(button: Button): boolean { diff --git a/src/ui/egg-summary-ui-handler.ts b/src/ui/egg-summary-ui-handler.ts index da93168926e..04b31ab9ca8 100644 --- a/src/ui/egg-summary-ui-handler.ts +++ b/src/ui/egg-summary-ui-handler.ts @@ -1,4 +1,3 @@ -import BattleScene from "../battle-scene"; import { Mode } from "./ui"; import PokemonIconAnimHandler, { PokemonIconAnimMode } from "./pokemon-icon-anim-handler"; import MessageUiHandler from "./message-ui-handler"; @@ -6,10 +5,11 @@ import { getEggTierForSpecies } from "../data/egg"; import { Button } from "#enums/buttons"; import PokemonHatchInfoContainer from "./pokemon-hatch-info-container"; import { EggSummaryPhase } from "#app/phases/egg-summary-phase"; -import { EggHatchData } from "#app/data/egg-hatch-data"; +import type { EggHatchData } from "#app/data/egg-hatch-data"; import ScrollableGridUiHandler from "./scrollable-grid-handler"; import { HatchedPokemonContainer } from "./hatched-pokemon-container"; import { ScrollBar } from "#app/ui/scroll-bar"; +import { globalScene } from "#app/global-scene"; const iconContainerX = 112; const iconContainerY = 9; @@ -53,43 +53,43 @@ export default class EggSummaryUiHandler extends MessageUiHandler { */ public readonly eventTarget: EventTarget = new EventTarget(); - constructor(scene: BattleScene) { - super(scene, Mode.EGG_HATCH_SUMMARY); + constructor() { + super(Mode.EGG_HATCH_SUMMARY); } setup() { const ui = this.getUi(); - this.summaryContainer = this.scene.add.container(0, -this.scene.game.canvas.height / 6); + this.summaryContainer = globalScene.add.container(0, -globalScene.game.canvas.height / 6); this.summaryContainer.setVisible(false); ui.add(this.summaryContainer); - this.eggHatchContainer = this.scene.add.container(0, -this.scene.game.canvas.height / 6); + this.eggHatchContainer = globalScene.add.container(0, -globalScene.game.canvas.height / 6); this.eggHatchContainer.setVisible(false); ui.add(this.eggHatchContainer); this.iconAnimHandler = new PokemonIconAnimHandler(); - this.iconAnimHandler.setup(this.scene); + this.iconAnimHandler.setup(); - this.eggHatchBg = this.scene.add.image(0, 0, "egg_summary_bg"); + this.eggHatchBg = globalScene.add.image(0, 0, "egg_summary_bg"); this.eggHatchBg.setOrigin(0, 0); this.eggHatchContainer.add(this.eggHatchBg); - this.cursorObj = this.scene.add.image(0, 0, "select_cursor"); + this.cursorObj = globalScene.add.image(0, 0, "select_cursor"); this.cursorObj.setOrigin(0, 0); this.summaryContainer.add(this.cursorObj); this.pokemonContainers = []; - this.pokemonIconsContainer = this.scene.add.container(iconContainerX, iconContainerY); + this.pokemonIconsContainer = globalScene.add.container(iconContainerX, iconContainerY); this.summaryContainer.add(this.pokemonIconsContainer); - this.infoContainer = new PokemonHatchInfoContainer(this.scene, this.summaryContainer); + this.infoContainer = new PokemonHatchInfoContainer(this.summaryContainer); this.infoContainer.setup(); this.infoContainer.changeToEggSummaryLayout(); this.infoContainer.setVisible(true); this.summaryContainer.add(this.infoContainer); - const scrollBar = new ScrollBar(this.scene, iconContainerX + numCols * iconSize, iconContainerY + 3, 4, this.scene.game.canvas.height / 6 - 20, numRows); + const scrollBar = new ScrollBar(iconContainerX + numCols * iconSize, iconContainerY + 3, 4, globalScene.game.canvas.height / 6 - 20, numRows); this.summaryContainer.add(scrollBar); this.scrollGridHandler = new ScrollableGridUiHandler(this, numRows, numCols) @@ -112,19 +112,19 @@ export default class EggSummaryUiHandler extends MessageUiHandler { this.getUi().hideTooltip(); // Note: Questions on garbage collection go to @frutescens - const activeKeys = this.scene.getActiveKeys(); + const activeKeys = globalScene.getActiveKeys(); // Removing unnecessary sprites from animation manager - const animKeys = Object.keys(this.scene.anims["anims"]["entries"]); + const animKeys = Object.keys(globalScene.anims["anims"]["entries"]); animKeys.forEach(key => { if (key.startsWith("pkmn__") && !activeKeys.includes(key)) { - this.scene.anims.remove(key); + globalScene.anims.remove(key); } }); // Removing unnecessary cries from audio cache - const audioKeys = Object.keys(this.scene.cache.audio.entries.entries); + const audioKeys = Object.keys(globalScene.cache.audio.entries.entries); audioKeys.forEach(key => { if (key.startsWith("cry/") && !activeKeys.includes(key)) { - delete this.scene.cache.audio.entries.entries[key]; + delete globalScene.cache.audio.entries.entries[key]; } }); // Clears eggHatchData in EggSummaryUiHandler @@ -170,13 +170,13 @@ export default class EggSummaryUiHandler extends MessageUiHandler { this.updatePokemonIcons(); this.setCursor(0); - this.scene.playSoundWithoutBgm("evolution_fanfare"); + globalScene.playSoundWithoutBgm("evolution_fanfare"); // Prevent exiting the egg summary for 2 seconds if the egg hatching // was skipped automatically and for 1 second otherwise - const exitBlockingDuration = (this.scene.eggSkipPreference === 2) ? 2000 : 1000; + const exitBlockingDuration = (globalScene.eggSkipPreference === 2) ? 2000 : 1000; this.blockExit = true; - this.scene.time.delayedCall(exitBlockingDuration, () => this.blockExit = false); + globalScene.time.delayedCall(exitBlockingDuration, () => this.blockExit = false); return true; } @@ -196,7 +196,7 @@ export default class EggSummaryUiHandler extends MessageUiHandler { if (!hatchContainer) { const x = (i % numCols) * iconSize; const y = Math.floor(i / numCols) * iconSize; - hatchContainer = new HatchedPokemonContainer(this.scene, x, y, hatchData).setVisible(false); + hatchContainer = new HatchedPokemonContainer(x, y, hatchData).setVisible(false); this.pokemonContainers.push(hatchContainer); this.pokemonIconsContainer.add(hatchContainer); } @@ -216,7 +216,7 @@ export default class EggSummaryUiHandler extends MessageUiHandler { let error = false; if (button === Button.CANCEL) { if (!this.blockExit) { - const phase = this.scene.getCurrentPhase(); + const phase = globalScene.getCurrentPhase(); if (phase instanceof EggSummaryPhase) { phase.end(); } diff --git a/src/ui/evolution-scene-handler.ts b/src/ui/evolution-scene-handler.ts index a116a33f373..e7866dfea53 100644 --- a/src/ui/evolution-scene-handler.ts +++ b/src/ui/evolution-scene-handler.ts @@ -1,8 +1,8 @@ -import BattleScene from "../battle-scene"; import MessageUiHandler from "./message-ui-handler"; import { TextStyle, addTextObject } from "./text"; import { Mode } from "./ui"; import { Button } from "#enums/buttons"; +import { globalScene } from "#app/global-scene"; export default class EvolutionSceneHandler extends MessageUiHandler { public evolutionContainer: Phaser.GameObjects.Container; @@ -11,8 +11,8 @@ export default class EvolutionSceneHandler extends MessageUiHandler { public canCancel: boolean; public cancelled: boolean; - constructor(scene: BattleScene) { - super(scene, Mode.EVOLUTION_SCENE); + constructor() { + super(Mode.EVOLUTION_SCENE); } setup() { @@ -21,21 +21,21 @@ export default class EvolutionSceneHandler extends MessageUiHandler { const ui = this.getUi(); - this.evolutionContainer = this.scene.add.container(0, -this.scene.game.canvas.height / 6); + this.evolutionContainer = globalScene.add.container(0, -globalScene.game.canvas.height / 6); ui.add(this.evolutionContainer); - const messageBg = this.scene.add.sprite(0, 0, "bg", this.scene.windowType); + const messageBg = globalScene.add.sprite(0, 0, "bg", globalScene.windowType); messageBg.setOrigin(0, 1); messageBg.setVisible(false); ui.add(messageBg); this.messageBg = messageBg; - this.messageContainer = this.scene.add.container(12, -39); + this.messageContainer = globalScene.add.container(12, -39); this.messageContainer.setVisible(false); ui.add(this.messageContainer); - const message = addTextObject(this.scene, 0, 0, "", TextStyle.MESSAGE, { + const message = addTextObject(0, 0, "", TextStyle.MESSAGE, { maxLines: 2, wordWrap: { width: 1780 @@ -51,9 +51,9 @@ export default class EvolutionSceneHandler extends MessageUiHandler { show(_args: any[]): boolean { super.show(_args); - this.scene.ui.bringToTop(this.evolutionContainer); - this.scene.ui.bringToTop(this.messageBg); - this.scene.ui.bringToTop(this.messageContainer); + globalScene.ui.bringToTop(this.evolutionContainer); + globalScene.ui.bringToTop(this.messageBg); + globalScene.ui.bringToTop(this.messageContainer); this.messageBg.setVisible(true); this.messageContainer.setVisible(true); diff --git a/src/ui/fight-ui-handler.ts b/src/ui/fight-ui-handler.ts index eaf504495d5..220e5d817ef 100644 --- a/src/ui/fight-ui-handler.ts +++ b/src/ui/fight-ui-handler.ts @@ -1,4 +1,5 @@ -import BattleScene, { InfoToggle } from "../battle-scene"; +import type { InfoToggle } from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { addTextObject, TextStyle } from "./text"; import { getTypeDamageMultiplierColor } from "#app/data/type"; import { Type } from "#enums/type"; @@ -9,8 +10,9 @@ import * as Utils from "../utils"; import { MoveCategory } from "#app/data/move"; import i18next from "i18next"; import { Button } from "#enums/buttons"; -import Pokemon, { PokemonMove } from "#app/field/pokemon"; -import { CommandPhase } from "#app/phases/command-phase"; +import type { PokemonMove } from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; +import type { CommandPhase } from "#app/phases/command-phase"; import MoveInfoOverlay from "./move-info-overlay"; import { BattleType } from "#app/battle"; @@ -33,79 +35,79 @@ export default class FightUiHandler extends UiHandler implements InfoToggle { protected fieldIndex: integer = 0; protected cursor2: integer = 0; - constructor(scene: BattleScene) { - super(scene, Mode.FIGHT); + constructor() { + super(Mode.FIGHT); } setup() { const ui = this.getUi(); - this.movesContainer = this.scene.add.container(18, -38.7); + this.movesContainer = globalScene.add.container(18, -38.7); this.movesContainer.setName(FightUiHandler.MOVES_CONTAINER_NAME); ui.add(this.movesContainer); - this.moveInfoContainer = this.scene.add.container(1, 0); + this.moveInfoContainer = globalScene.add.container(1, 0); this.moveInfoContainer.setName("move-info"); ui.add(this.moveInfoContainer); - this.typeIcon = this.scene.add.sprite(this.scene.scaledCanvas.width - 57, -36, Utils.getLocalizedSpriteKey("types"), "unknown"); + this.typeIcon = globalScene.add.sprite(globalScene.scaledCanvas.width - 57, -36, Utils.getLocalizedSpriteKey("types"), "unknown"); this.typeIcon.setVisible(false); this.moveInfoContainer.add(this.typeIcon); - this.moveCategoryIcon = this.scene.add.sprite(this.scene.scaledCanvas.width - 25, -36, "categories", "physical"); + this.moveCategoryIcon = globalScene.add.sprite(globalScene.scaledCanvas.width - 25, -36, "categories", "physical"); this.moveCategoryIcon.setVisible(false); this.moveInfoContainer.add(this.moveCategoryIcon); - this.ppLabel = addTextObject(this.scene, this.scene.scaledCanvas.width - 70, -26, "PP", TextStyle.MOVE_INFO_CONTENT); + this.ppLabel = addTextObject(globalScene.scaledCanvas.width - 70, -26, "PP", TextStyle.MOVE_INFO_CONTENT); this.ppLabel.setOrigin(0.0, 0.5); this.ppLabel.setVisible(false); this.ppLabel.setText(i18next.t("fightUiHandler:pp")); this.moveInfoContainer.add(this.ppLabel); - this.ppText = addTextObject(this.scene, this.scene.scaledCanvas.width - 12, -26, "--/--", TextStyle.MOVE_INFO_CONTENT); + this.ppText = addTextObject(globalScene.scaledCanvas.width - 12, -26, "--/--", TextStyle.MOVE_INFO_CONTENT); this.ppText.setOrigin(1, 0.5); this.ppText.setVisible(false); this.moveInfoContainer.add(this.ppText); - this.powerLabel = addTextObject(this.scene, this.scene.scaledCanvas.width - 70, -18, "POWER", TextStyle.MOVE_INFO_CONTENT); + this.powerLabel = addTextObject(globalScene.scaledCanvas.width - 70, -18, "POWER", TextStyle.MOVE_INFO_CONTENT); this.powerLabel.setOrigin(0.0, 0.5); this.powerLabel.setVisible(false); this.powerLabel.setText(i18next.t("fightUiHandler:power")); this.moveInfoContainer.add(this.powerLabel); - this.powerText = addTextObject(this.scene, this.scene.scaledCanvas.width - 12, -18, "---", TextStyle.MOVE_INFO_CONTENT); + this.powerText = addTextObject(globalScene.scaledCanvas.width - 12, -18, "---", TextStyle.MOVE_INFO_CONTENT); this.powerText.setOrigin(1, 0.5); this.powerText.setVisible(false); this.moveInfoContainer.add(this.powerText); - this.accuracyLabel = addTextObject(this.scene, this.scene.scaledCanvas.width - 70, -10, "ACC", TextStyle.MOVE_INFO_CONTENT); + this.accuracyLabel = addTextObject(globalScene.scaledCanvas.width - 70, -10, "ACC", TextStyle.MOVE_INFO_CONTENT); this.accuracyLabel.setOrigin(0.0, 0.5); this.accuracyLabel.setVisible(false); this.accuracyLabel.setText(i18next.t("fightUiHandler:accuracy")); this.moveInfoContainer.add(this.accuracyLabel); - this.accuracyText = addTextObject(this.scene, this.scene.scaledCanvas.width - 12, -10, "---", TextStyle.MOVE_INFO_CONTENT); + this.accuracyText = addTextObject(globalScene.scaledCanvas.width - 12, -10, "---", TextStyle.MOVE_INFO_CONTENT); this.accuracyText.setOrigin(1, 0.5); this.accuracyText.setVisible(false); this.moveInfoContainer.add(this.accuracyText); // prepare move overlay const overlayScale = 1; - this.moveInfoOverlay = new MoveInfoOverlay(this.scene, { + this.moveInfoOverlay = new MoveInfoOverlay({ delayVisibility: true, scale: overlayScale, onSide: true, right: true, x: 0, y: -MoveInfoOverlay.getHeight(overlayScale, true), - width: (this.scene.game.canvas.width / 6) + 4, + width: (globalScene.game.canvas.width / 6) + 4, hideEffectBox: true, hideBg: true }); ui.add(this.moveInfoOverlay); // register the overlay to receive toggle events - this.scene.addInfoToggle(this.moveInfoOverlay); - this.scene.addInfoToggle(this); + globalScene.addInfoToggle(this.moveInfoOverlay); + globalScene.addInfoToggle(this); } show(args: any[]): boolean { @@ -117,7 +119,7 @@ export default class FightUiHandler extends UiHandler implements InfoToggle { messageHandler.bg.setVisible(false); messageHandler.commandWindow.setVisible(false); messageHandler.movesWindowContainer.setVisible(true); - const pokemon = (this.scene.getCurrentPhase() as CommandPhase).getPokemon(); + const pokemon = (globalScene.getCurrentPhase() as CommandPhase).getPokemon(); if (pokemon.battleSummonData.turnCount <= 1) { this.setCursor(0); } else { @@ -138,14 +140,14 @@ export default class FightUiHandler extends UiHandler implements InfoToggle { if (button === Button.CANCEL || button === Button.ACTION) { if (button === Button.ACTION) { - if ((this.scene.getCurrentPhase() as CommandPhase).handleCommand(Command.FIGHT, cursor, false)) { + if ((globalScene.getCurrentPhase() as CommandPhase).handleCommand(Command.FIGHT, cursor, false)) { success = true; } else { ui.playError(); } } else { // Cannot back out of fight menu if skipToFightInput is enabled - const { battleType, mysteryEncounter } = this.scene.currentBattle; + const { battleType, mysteryEncounter } = globalScene.currentBattle; if (battleType !== BattleType.MYSTERY_ENCOUNTER || !mysteryEncounter?.skipToFightInput) { ui.setMode(Mode.COMMAND, this.fieldIndex); success = true; @@ -188,7 +190,7 @@ export default class FightUiHandler extends UiHandler implements InfoToggle { this.movesContainer.setVisible(false); this.cursorObj?.setVisible(false); } - this.scene.tweens.add({ + globalScene.tweens.add({ targets: [ this.movesContainer, this.cursorObj ], duration: Utils.fixedInt(125), ease: "Sine.easeInOut", @@ -222,11 +224,11 @@ export default class FightUiHandler extends UiHandler implements InfoToggle { } if (!this.cursorObj) { - this.cursorObj = this.scene.add.image(0, 0, "cursor"); + this.cursorObj = globalScene.add.image(0, 0, "cursor"); ui.add(this.cursorObj); } - const pokemon = (this.scene.getCurrentPhase() as CommandPhase).getPokemon(); + const pokemon = (globalScene.getCurrentPhase() as CommandPhase).getPokemon(); const moveset = pokemon.getMoveset(); const hasMove = cursor < moveset.length; @@ -300,11 +302,11 @@ export default class FightUiHandler extends UiHandler implements InfoToggle { } displayMoves() { - const pokemon = (this.scene.getCurrentPhase() as CommandPhase).getPokemon(); + const pokemon = (globalScene.getCurrentPhase() as CommandPhase).getPokemon(); const moveset = pokemon.getMoveset(); for (let moveIndex = 0; moveIndex < 4; moveIndex++) { - const moveText = addTextObject(this.scene, moveIndex % 2 === 0 ? 0 : 100, moveIndex < 2 ? 0 : 16, "-", TextStyle.WINDOW); + const moveText = addTextObject(moveIndex % 2 === 0 ? 0 : 100, moveIndex < 2 ? 0 : 16, "-", TextStyle.WINDOW); moveText.setName("text-empty-move"); if (moveIndex < moveset.length) { @@ -324,7 +326,7 @@ export default class FightUiHandler extends UiHandler implements InfoToggle { * @returns A color or undefined if the default color should be used */ private getMoveColor(pokemon: Pokemon, pokemonMove: PokemonMove): string | undefined { - if (!this.scene.typeHints) { + if (!globalScene.typeHints) { return undefined; } @@ -362,7 +364,7 @@ export default class FightUiHandler extends UiHandler implements InfoToggle { clearMoves() { this.movesContainer.removeAll(true); - const opponents = (this.scene.getCurrentPhase() as CommandPhase).getPokemon().getOpponents(); + const opponents = (globalScene.getCurrentPhase() as CommandPhase).getPokemon().getOpponents(); opponents.forEach((opponent) => { opponent.updateEffectiveness(undefined); }); diff --git a/src/ui/filter-bar.ts b/src/ui/filter-bar.ts index bcf7409fce0..a6f9f66efe2 100644 --- a/src/ui/filter-bar.ts +++ b/src/ui/filter-bar.ts @@ -1,9 +1,10 @@ -import BattleScene from "#app/battle-scene"; -import { DropDown, DropDownType } from "./dropdown"; -import { StarterContainer } from "./starter-container"; +import type { DropDown } from "./dropdown"; +import { DropDownType } from "./dropdown"; +import type { StarterContainer } from "./starter-container"; import { addTextObject, getTextColor, TextStyle } from "./text"; -import { UiTheme } from "#enums/ui-theme"; +import type { UiTheme } from "#enums/ui-theme"; import { addWindow, WindowVariant } from "./ui-theme"; +import { globalScene } from "#app/global-scene"; export enum DropDownColumn { GEN, @@ -25,22 +26,22 @@ export class FilterBar extends Phaser.GameObjects.Container { private lastCursor: number = -1; private uiTheme: UiTheme; - constructor(scene: BattleScene, x: number, y: number, width: number, height: number) { - super(scene, x, y); + constructor(x: number, y: number, width: number, height: number) { + super(globalScene, x, y); this.width = width; this.height = height; - this.window = addWindow(scene, 0, 0, width, height, false, false, undefined, undefined, WindowVariant.THIN); + this.window = addWindow(0, 0, width, height, false, false, undefined, undefined, WindowVariant.THIN); this.add(this.window); - this.cursorObj = this.scene.add.image(1, 1, "cursor"); + this.cursorObj = globalScene.add.image(1, 1, "cursor"); this.cursorObj.setScale(0.5); this.cursorObj.setVisible(false); this.cursorObj.setOrigin(0, 0); this.add(this.cursorObj); - this.uiTheme = scene.uiTheme; + this.uiTheme = globalScene.uiTheme; } /** @@ -58,7 +59,7 @@ export class FilterBar extends Phaser.GameObjects.Container { this.columns.push(column); - const filterTypesLabel = addTextObject(this.scene, 0, 3, title, TextStyle.TOOLTIP_CONTENT); + const filterTypesLabel = addTextObject(0, 3, title, TextStyle.TOOLTIP_CONTENT); this.labels.push(filterTypesLabel); this.add(filterTypesLabel); this.dropDowns.push(dropDown); diff --git a/src/ui/form-modal-ui-handler.ts b/src/ui/form-modal-ui-handler.ts index 65ee9f2db10..86a1cc2238b 100644 --- a/src/ui/form-modal-ui-handler.ts +++ b/src/ui/form-modal-ui-handler.ts @@ -1,11 +1,12 @@ -import BattleScene from "../battle-scene"; -import { ModalConfig, ModalUiHandler } from "./modal-ui-handler"; -import { Mode } from "./ui"; +import type { ModalConfig } from "./modal-ui-handler"; +import { ModalUiHandler } from "./modal-ui-handler"; +import type { Mode } from "./ui"; import { TextStyle, addTextInputObject, addTextObject } from "./text"; import { WindowVariant, addWindow } from "./ui-theme"; -import InputText from "phaser3-rex-plugins/plugins/inputtext"; +import type InputText from "phaser3-rex-plugins/plugins/inputtext"; import * as Utils from "../utils"; import { Button } from "#enums/buttons"; +import { globalScene } from "#app/global-scene"; export interface FormModalConfig extends ModalConfig { errorMessage?: string; @@ -20,8 +21,8 @@ export abstract class FormModalUiHandler extends ModalUiHandler { protected tween: Phaser.Tweens.Tween; protected formLabels: Phaser.GameObjects.Text[]; - constructor(scene: BattleScene, mode: Mode | null = null) { - super(scene, mode); + constructor(mode: Mode | null = null) { + super(mode); this.editing = false; this.inputContainers = []; @@ -59,7 +60,7 @@ export abstract class FormModalUiHandler extends ModalUiHandler { this.updateFields(config, hasTitle); } - this.errorMessage = addTextObject(this.scene, 10, (hasTitle ? 31 : 5) + 20 * (config.length - 1) + 16 + this.getButtonTopMargin(), "", TextStyle.TOOLTIP_CONTENT); + this.errorMessage = addTextObject(10, (hasTitle ? 31 : 5) + 20 * (config.length - 1) + 16 + this.getButtonTopMargin(), "", TextStyle.TOOLTIP_CONTENT); this.errorMessage.setColor(this.getTextColor(TextStyle.SUMMARY_PINK)); this.errorMessage.setShadowColor(this.getTextColor(TextStyle.SUMMARY_PINK, true)); this.errorMessage.setVisible(false); @@ -71,20 +72,20 @@ export abstract class FormModalUiHandler extends ModalUiHandler { this.inputs = []; this.formLabels = []; fieldsConfig.forEach((config, f) => { - const label = addTextObject(this.scene, 10, (hasTitle ? 31 : 5) + 20 * f, config.label, TextStyle.TOOLTIP_CONTENT); + const label = addTextObject(10, (hasTitle ? 31 : 5) + 20 * f, config.label, TextStyle.TOOLTIP_CONTENT); label.name = "formLabel" + f; this.formLabels.push(label); this.modalContainer.add(this.formLabels[this.formLabels.length - 1]); - const inputContainer = this.scene.add.container(70, (hasTitle ? 28 : 2) + 20 * f); + const inputContainer = globalScene.add.container(70, (hasTitle ? 28 : 2) + 20 * f); inputContainer.setVisible(false); - const inputBg = addWindow(this.scene, 0, 0, 80, 16, false, false, 0, 0, WindowVariant.XTHIN); + const inputBg = addWindow(0, 0, 80, 16, false, false, 0, 0, WindowVariant.XTHIN); const isPassword = config?.isPassword; const isReadOnly = config?.isReadOnly; - const input = addTextInputObject(this.scene, 4, -2, 440, 116, TextStyle.TOOLTIP_CONTENT, { type: isPassword ? "password" : "text", maxLength: isPassword ? 64 : 20, readOnly: isReadOnly }); + const input = addTextInputObject(4, -2, 440, 116, TextStyle.TOOLTIP_CONTENT, { type: isPassword ? "password" : "text", maxLength: isPassword ? 64 : 20, readOnly: isReadOnly }); input.setOrigin(0, 0); inputContainer.add(inputBg); @@ -119,7 +120,7 @@ export abstract class FormModalUiHandler extends ModalUiHandler { this.modalContainer.y += 24; this.modalContainer.setAlpha(0); - this.tween = this.scene.tweens.add({ + this.tween = globalScene.tweens.add({ targets: this.modalContainer, duration: Utils.fixedInt(1000), ease: "Sine.easeInOut", diff --git a/src/ui/game-stats-ui-handler.ts b/src/ui/game-stats-ui-handler.ts index 671bed29036..2fa5b54ac76 100644 --- a/src/ui/game-stats-ui-handler.ts +++ b/src/ui/game-stats-ui-handler.ts @@ -1,15 +1,16 @@ import Phaser from "phaser"; -import BattleScene from "#app/battle-scene"; import { TextStyle, addTextObject } from "#app/ui/text"; -import { Mode } from "#app/ui/ui"; +import type { Mode } from "#app/ui/ui"; import UiHandler from "#app/ui/ui-handler"; import { addWindow } from "#app/ui/ui-theme"; import * as Utils from "#app/utils"; -import { DexAttr, GameData } from "#app/system/game-data"; +import type { GameData } from "#app/system/game-data"; +import { DexAttr } from "#app/system/game-data"; import { speciesStarterCosts } from "#app/data/balance/starters"; import { Button } from "#enums/buttons"; import i18next from "i18next"; import { UiTheme } from "#enums/ui-theme"; +import { globalScene } from "#app/global-scene"; interface DisplayStat { label_key?: string; @@ -222,8 +223,8 @@ export default class GameStatsUiHandler extends UiHandler { private arrowUp: Phaser.GameObjects.Sprite; private arrowDown: Phaser.GameObjects.Sprite; - constructor(scene: BattleScene, mode: Mode | null = null) { - super(scene, mode); + constructor(mode: Mode | null = null) { + super(mode); this.statLabels = []; this.statValues = []; @@ -232,37 +233,37 @@ export default class GameStatsUiHandler extends UiHandler { setup() { const ui = this.getUi(); - this.gameStatsContainer = this.scene.add.container(1, -(this.scene.game.canvas.height / 6) + 1); + this.gameStatsContainer = globalScene.add.container(1, -(globalScene.game.canvas.height / 6) + 1); - this.gameStatsContainer.setInteractive(new Phaser.Geom.Rectangle(0, 0, this.scene.game.canvas.width / 6, this.scene.game.canvas.height / 6), Phaser.Geom.Rectangle.Contains); + this.gameStatsContainer.setInteractive(new Phaser.Geom.Rectangle(0, 0, globalScene.game.canvas.width / 6, globalScene.game.canvas.height / 6), Phaser.Geom.Rectangle.Contains); - const headerBg = addWindow(this.scene, 0, 0, (this.scene.game.canvas.width / 6) - 2, 24); + const headerBg = addWindow(0, 0, (globalScene.game.canvas.width / 6) - 2, 24); headerBg.setOrigin(0, 0); - const headerText = addTextObject(this.scene, 0, 0, i18next.t("gameStatsUiHandler:stats"), TextStyle.SETTINGS_LABEL); + const headerText = addTextObject(0, 0, i18next.t("gameStatsUiHandler:stats"), TextStyle.SETTINGS_LABEL); headerText.setOrigin(0, 0); headerText.setPositionRelative(headerBg, 8, 4); - const statsBgWidth = ((this.scene.game.canvas.width / 6) - 2) / 2; + const statsBgWidth = ((globalScene.game.canvas.width / 6) - 2) / 2; const [ statsBgLeft, statsBgRight ] = new Array(2).fill(null).map((_, i) => { const width = statsBgWidth + 2; - const height = Math.floor((this.scene.game.canvas.height / 6) - headerBg.height - 2); - const statsBg = addWindow(this.scene, (statsBgWidth - 2) * i, headerBg.height, width, height, false, false, i > 0 ? -3 : 0, 1); + const height = Math.floor((globalScene.game.canvas.height / 6) - headerBg.height - 2); + const statsBg = addWindow((statsBgWidth - 2) * i, headerBg.height, width, height, false, false, i > 0 ? -3 : 0, 1); statsBg.setOrigin(0, 0); return statsBg; }); - this.statsContainer = this.scene.add.container(0, 0); + this.statsContainer = globalScene.add.container(0, 0); new Array(18).fill(null).map((_, s) => { - const statLabel = addTextObject(this.scene, 8 + (s % 2 === 1 ? statsBgWidth : 0), 28 + Math.floor(s / 2) * 16, "", TextStyle.STATS_LABEL); + const statLabel = addTextObject(8 + (s % 2 === 1 ? statsBgWidth : 0), 28 + Math.floor(s / 2) * 16, "", TextStyle.STATS_LABEL); statLabel.setOrigin(0, 0); this.statsContainer.add(statLabel); this.statLabels.push(statLabel); - const statValue = addTextObject(this.scene, (statsBgWidth * ((s % 2) + 1)) - 8, statLabel.y, "", TextStyle.STATS_VALUE); + const statValue = addTextObject((statsBgWidth * ((s % 2) + 1)) - 8, statLabel.y, "", TextStyle.STATS_VALUE); statValue.setOrigin(1, 0); this.statsContainer.add(statValue); this.statValues.push(statValue); @@ -275,10 +276,10 @@ export default class GameStatsUiHandler extends UiHandler { this.gameStatsContainer.add(this.statsContainer); // arrows to show that we can scroll through the stats - const isLegacyTheme = this.scene.uiTheme === UiTheme.LEGACY; - this.arrowDown = this.scene.add.sprite(statsBgWidth, this.scene.game.canvas.height / 6 - (isLegacyTheme ? 9 : 5), "prompt"); + const isLegacyTheme = globalScene.uiTheme === UiTheme.LEGACY; + this.arrowDown = globalScene.add.sprite(statsBgWidth, globalScene.game.canvas.height / 6 - (isLegacyTheme ? 9 : 5), "prompt"); this.gameStatsContainer.add(this.arrowDown); - this.arrowUp = this.scene.add.sprite(statsBgWidth, headerBg.height + (isLegacyTheme ? 7 : 3), "prompt"); + this.arrowUp = globalScene.add.sprite(statsBgWidth, headerBg.height + (isLegacyTheme ? 7 : 3), "prompt"); this.arrowUp.flipY = true; this.gameStatsContainer.add(this.arrowUp); @@ -298,7 +299,7 @@ export default class GameStatsUiHandler extends UiHandler { this.arrowUp.play("prompt"); this.arrowDown.play("prompt"); - if (this.scene.uiTheme === UiTheme.LEGACY) { + if (globalScene.uiTheme === UiTheme.LEGACY) { this.arrowUp.setTint(0x484848); this.arrowDown.setTint(0x484848); } @@ -318,7 +319,7 @@ export default class GameStatsUiHandler extends UiHandler { const statKeys = Object.keys(displayStats).slice(this.cursor * 2, this.cursor * 2 + 18); statKeys.forEach((key, s) => { const stat = displayStats[key] as DisplayStat; - const value = stat.sourceFunc!(this.scene.gameData); // TODO: is this bang correct? + const value = stat.sourceFunc!(globalScene.gameData); // TODO: is this bang correct? this.statLabels[s].setText(!stat.hidden || isNaN(parseInt(value)) || parseInt(value) ? i18next.t(`gameStatsUiHandler:${stat.label_key}`) : "???"); this.statValues[s].setText(value); }); @@ -348,7 +349,7 @@ export default class GameStatsUiHandler extends UiHandler { if (button === Button.CANCEL) { success = true; - this.scene.ui.revertMode(); + globalScene.ui.revertMode(); } else { switch (button) { case Button.UP: diff --git a/src/ui/hatched-pokemon-container.ts b/src/ui/hatched-pokemon-container.ts index 9fb1fd26b30..f006002617a 100644 --- a/src/ui/hatched-pokemon-container.ts +++ b/src/ui/hatched-pokemon-container.ts @@ -1,10 +1,11 @@ -import { EggHatchData } from "#app/data/egg-hatch-data"; +import type { EggHatchData } from "#app/data/egg-hatch-data"; import { Gender } from "#app/data/gender"; import { getVariantTint } from "#app/data/variant"; import { DexAttr } from "#app/system/game-data"; -import BattleScene from "#app/battle-scene"; -import PokemonSpecies from "#app/data/pokemon-species"; -import PokemonIconAnimHandler, { PokemonIconAnimMode } from "./pokemon-icon-anim-handler"; +import { globalScene } from "#app/global-scene"; +import type PokemonSpecies from "#app/data/pokemon-species"; +import type PokemonIconAnimHandler from "./pokemon-icon-anim-handler"; +import { PokemonIconAnimMode } from "./pokemon-icon-anim-handler"; /** * A container for a Pokemon's sprite and icons to get displayed in the egg summary screen @@ -12,7 +13,6 @@ import PokemonIconAnimHandler, { PokemonIconAnimMode } from "./pokemon-icon-anim * shiny variant, hidden ability, new egg move, new catch */ export class HatchedPokemonContainer extends Phaser.GameObjects.Container { - public scene: BattleScene; public species: PokemonSpecies; public icon: Phaser.GameObjects.Sprite; public shinyIcon: Phaser.GameObjects.Image; @@ -21,13 +21,12 @@ export class HatchedPokemonContainer extends Phaser.GameObjects.Container { public eggMoveIcon: Phaser.GameObjects.Image; /** - * @param scene the current {@linkcode BattleScene} * @param x x position * @param y y position * @param hatchData the {@linkcode EggHatchData} to load the icons and sprites for */ - constructor(scene: BattleScene, x: number, y: number, hatchData: EggHatchData) { - super(scene, x, y); + constructor(x: number, y: number, hatchData: EggHatchData) { + super(globalScene, x, y); const displayPokemon = hatchData.pokemon; this.species = displayPokemon.species; @@ -41,7 +40,7 @@ export class HatchedPokemonContainer extends Phaser.GameObjects.Container { const isShiny = displayPokemon.shiny; // Pokemon sprite - const pokemonIcon = this.scene.add.sprite(-offset, offset, species.getIconAtlasKey(formIndex, isShiny, variant)); + const pokemonIcon = globalScene.add.sprite(-offset, offset, species.getIconAtlasKey(formIndex, isShiny, variant)); pokemonIcon.setScale(0.5); pokemonIcon.setOrigin(0, 0); pokemonIcon.setFrame(species.getIconId(female, formIndex, isShiny, variant)); @@ -50,27 +49,27 @@ export class HatchedPokemonContainer extends Phaser.GameObjects.Container { this.add(this.icon); // Shiny icon - this.shinyIcon = this.scene.add.image(rightSideX, offset, "shiny_star_small"); + this.shinyIcon = globalScene.add.image(rightSideX, offset, "shiny_star_small"); this.shinyIcon.setOrigin(0, 0); this.shinyIcon.setScale(0.5); this.add(this.shinyIcon); // Hidden ability icon - const haIcon = this.scene.add.image(rightSideX, offset * 4, "ha_capsule"); + const haIcon = globalScene.add.image(rightSideX, offset * 4, "ha_capsule"); haIcon.setOrigin(0, 0); haIcon.setScale(0.5); this.hiddenAbilityIcon = haIcon; this.add(this.hiddenAbilityIcon); // Pokeball icon - const pokeballIcon = this.scene.add.image(rightSideX, offset * 7, "icon_owned"); + const pokeballIcon = globalScene.add.image(rightSideX, offset * 7, "icon_owned"); pokeballIcon.setOrigin(0, 0); pokeballIcon.setScale(0.5); this.pokeballIcon = pokeballIcon; this.add(this.pokeballIcon); // Egg move icon - const eggMoveIcon = this.scene.add.image(0, offset, "icon_egg_move"); + const eggMoveIcon = globalScene.add.image(0, offset, "icon_egg_move"); eggMoveIcon.setOrigin(0, 0); eggMoveIcon.setScale(0.5); this.eggMoveIcon = eggMoveIcon; diff --git a/src/ui/loading-modal-ui-handler.ts b/src/ui/loading-modal-ui-handler.ts index d86f7afd3b6..7ee0949c71e 100644 --- a/src/ui/loading-modal-ui-handler.ts +++ b/src/ui/loading-modal-ui-handler.ts @@ -1,12 +1,11 @@ import i18next from "i18next"; -import BattleScene from "../battle-scene"; import { ModalUiHandler } from "./modal-ui-handler"; import { addTextObject, TextStyle } from "./text"; -import { Mode } from "./ui"; +import type { Mode } from "./ui"; export default class LoadingModalUiHandler extends ModalUiHandler { - constructor(scene: BattleScene, mode: Mode | null = null) { - super(scene, mode); + constructor(mode: Mode | null = null) { + super(mode); } getModalTitle(): string { @@ -32,7 +31,7 @@ export default class LoadingModalUiHandler extends ModalUiHandler { setup(): void { super.setup(); - const label = addTextObject(this.scene, this.getWidth() / 2, this.getHeight() / 2, i18next.t("menu:loading"), TextStyle.WINDOW); + const label = addTextObject(this.getWidth() / 2, this.getHeight() / 2, i18next.t("menu:loading"), TextStyle.WINDOW); label.setOrigin(0.5, 0.5); this.modalContainer.add(label); diff --git a/src/ui/login-form-ui-handler.ts b/src/ui/login-form-ui-handler.ts index 78755423604..55909b63e58 100644 --- a/src/ui/login-form-ui-handler.ts +++ b/src/ui/login-form-ui-handler.ts @@ -1,13 +1,14 @@ -import { FormModalUiHandler, InputFieldConfig } from "./form-modal-ui-handler"; -import { ModalConfig } from "./modal-ui-handler"; +import type { InputFieldConfig } from "./form-modal-ui-handler"; +import { FormModalUiHandler } from "./form-modal-ui-handler"; +import type { ModalConfig } from "./modal-ui-handler"; import * as Utils from "../utils"; import { Mode } from "./ui"; import i18next from "i18next"; -import BattleScene from "#app/battle-scene"; import { addTextObject, TextStyle } from "./text"; import { addWindow } from "./ui-theme"; -import { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; +import type { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; import { pokerogueApi } from "#app/plugins/api/pokerogue-api"; +import { globalScene } from "#app/global-scene"; import JSZip from "jszip"; interface BuildInteractableImageOpts { @@ -33,15 +34,15 @@ export default class LoginFormUiHandler extends FormModalUiHandler { private infoContainer: Phaser.GameObjects.Container; private externalPartyBg: Phaser.GameObjects.NineSlice; private externalPartyTitle: Phaser.GameObjects.Text; - constructor(scene: BattleScene, mode: Mode | null = null) { - super(scene, mode); + constructor(mode: Mode | null = null) { + super(mode); } setup(): void { super.setup(); this.buildExternalPartyContainer(); - this.infoContainer = this.scene.add.container(0, 0); + this.infoContainer = globalScene.add.container(0, 0); this.usernameInfoImage = this.buildInteractableImage("settings_icon", "username-info-icon", { x: 20, @@ -61,11 +62,11 @@ export default class LoginFormUiHandler extends FormModalUiHandler { } private buildExternalPartyContainer() { - this.externalPartyContainer = this.scene.add.container(0, 0); - this.externalPartyContainer.setInteractive(new Phaser.Geom.Rectangle(0, 0, this.scene.game.canvas.width / 12, this.scene.game.canvas.height / 12), Phaser.Geom.Rectangle.Contains); - this.externalPartyTitle = addTextObject(this.scene, 0, 4, "", TextStyle.SETTINGS_LABEL); + this.externalPartyContainer = globalScene.add.container(0, 0); + this.externalPartyContainer.setInteractive(new Phaser.Geom.Rectangle(0, 0, globalScene.game.canvas.width / 12, globalScene.game.canvas.height / 12), Phaser.Geom.Rectangle.Contains); + this.externalPartyTitle = addTextObject(0, 4, "", TextStyle.SETTINGS_LABEL); this.externalPartyTitle.setOrigin(0.5, 0); - this.externalPartyBg = addWindow(this.scene, 0, 0, 0, 0); + this.externalPartyBg = addWindow(0, 0, 0, 0); this.externalPartyContainer.add(this.externalPartyBg); this.externalPartyContainer.add(this.externalPartyTitle); @@ -140,10 +141,10 @@ export default class LoginFormUiHandler extends FormModalUiHandler { // Prevent overlapping overrides on action modification this.submitAction = originalLoginAction; this.sanitizeInputs(); - this.scene.ui.setMode(Mode.LOADING, { buttonActions: []}); + globalScene.ui.setMode(Mode.LOADING, { buttonActions: []}); const onFail = error => { - this.scene.ui.setMode(Mode.LOGIN_FORM, Object.assign(config, { errorMessage: error?.trim() })); - this.scene.ui.playError(); + globalScene.ui.setMode(Mode.LOGIN_FORM, Object.assign(config, { errorMessage: error?.trim() })); + globalScene.ui.playError(); }; if (!this.inputs[0].text) { return onFail(i18next.t("menu:emptyUsername")); @@ -207,9 +208,9 @@ export default class LoginFormUiHandler extends FormModalUiHandler { }); const onFail = error => { - this.scene.ui.setMode(Mode.LOADING, { buttonActions: []}); - this.scene.ui.setModeForceTransition(Mode.LOGIN_FORM, Object.assign(config, { errorMessage: error?.trim() })); - this.scene.ui.playError(); + globalScene.ui.setMode(Mode.LOADING, { buttonActions: []}); + globalScene.ui.setModeForceTransition(Mode.LOGIN_FORM, Object.assign(config, { errorMessage: error?.trim() })); + globalScene.ui.playError(); }; this.usernameInfoImage.on("pointerdown", () => { @@ -222,17 +223,17 @@ export default class LoginFormUiHandler extends FormModalUiHandler { options.push({ label: dataKeys[i].replace(keyToFind, ""), handler: () => { - this.scene.ui.revertMode(); + globalScene.ui.revertMode(); this.infoContainer.disableInteractive(); return true; } }); } - this.scene.ui.setOverlayMode(Mode.OPTION_SELECT, { + globalScene.ui.setOverlayMode(Mode.OPTION_SELECT, { options: options, delay: 1000 }); - this.infoContainer.setInteractive(new Phaser.Geom.Rectangle(0, 0, this.scene.game.canvas.width, this.scene.game.canvas.height), Phaser.Geom.Rectangle.Contains); + this.infoContainer.setInteractive(new Phaser.Geom.Rectangle(0, 0, globalScene.game.canvas.width, globalScene.game.canvas.height), Phaser.Geom.Rectangle.Contains); } else { if (dataKeys.length > 2) { return onFail(this.ERR_TOO_MANY_SAVES); @@ -271,7 +272,7 @@ export default class LoginFormUiHandler extends FormModalUiHandler { }); this.externalPartyContainer.setAlpha(0); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this.externalPartyContainer, duration: Utils.fixedInt(1000), ease: "Sine.easeInOut", @@ -280,7 +281,7 @@ export default class LoginFormUiHandler extends FormModalUiHandler { }); this.infoContainer.setAlpha(0); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this.infoContainer, duration: Utils.fixedInt(1000), ease: "Sine.easeInOut", @@ -296,7 +297,7 @@ export default class LoginFormUiHandler extends FormModalUiHandler { y = 0, origin = { x: 0, y: 0 } } = opts; - const img = this.scene.add.image(x, y, texture); + const img = globalScene.add.image(x, y, texture); img.setName(name); img.setOrigin(origin.x, origin.y); img.setScale(scale); diff --git a/src/ui/menu-ui-handler.ts b/src/ui/menu-ui-handler.ts index 3ce3f3b7cf0..bb950f328e8 100644 --- a/src/ui/menu-ui-handler.ts +++ b/src/ui/menu-ui-handler.ts @@ -1,17 +1,18 @@ -import BattleScene, { bypassLogin } from "../battle-scene"; +import { bypassLogin } from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { TextStyle, addTextObject, getTextStyleOptions } from "./text"; import { Mode } from "./ui"; import * as Utils from "../utils"; import { addWindow, WindowVariant } from "./ui-theme"; import MessageUiHandler from "./message-ui-handler"; -import { OptionSelectConfig, OptionSelectItem } from "./abstact-option-select-ui-handler"; +import type { OptionSelectConfig, OptionSelectItem } from "./abstact-option-select-ui-handler"; import { Tutorial, handleTutorial } from "../tutorial"; import { loggedInUser, updateUserInfo } from "../account"; import i18next from "i18next"; import { Button } from "#enums/buttons"; import { GameDataType } from "#enums/game-data-type"; import BgmBar from "#app/ui/bgm-bar"; -import AwaitableUiHandler from "./awaitable-ui-handler"; +import type AwaitableUiHandler from "./awaitable-ui-handler"; import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; import { AdminMode, getAdminModeName } from "./admin-ui-handler"; import { pokerogueApi } from "#app/plugins/api/pokerogue-api"; @@ -63,8 +64,8 @@ export default class MenuUiHandler extends MessageUiHandler { public bgmBar: BgmBar; - constructor(scene: BattleScene, mode: Mode | null = null) { - super(scene, mode); + constructor(mode: Mode | null = null) { + super(mode); this.excludedMenus = () => [ { condition: [ Mode.COMMAND, Mode.TITLE ].includes(mode ?? Mode.TITLE), options: [ MenuOptions.EGG_GACHA, MenuOptions.EGG_LIST ]}, @@ -86,16 +87,16 @@ export default class MenuUiHandler extends MessageUiHandler { wikiUrl = `https://wiki.pokerogue.net/${lang}:start`; } - this.bgmBar = new BgmBar(this.scene); + this.bgmBar = new BgmBar(); this.bgmBar.setup(); ui.bgmBar = this.bgmBar; - this.menuContainer = this.scene.add.container(1, -(this.scene.game.canvas.height / 6) + 1); + this.menuContainer = globalScene.add.container(1, -(globalScene.game.canvas.height / 6) + 1); this.menuContainer.setName("menu"); - this.menuContainer.setInteractive(new Phaser.Geom.Rectangle(0, 0, this.scene.game.canvas.width / 6, this.scene.game.canvas.height / 6), Phaser.Geom.Rectangle.Contains); + this.menuContainer.setInteractive(new Phaser.Geom.Rectangle(0, 0, globalScene.game.canvas.width / 6, globalScene.game.canvas.height / 6), Phaser.Geom.Rectangle.Contains); - this.menuOverlay = new Phaser.GameObjects.Rectangle(this.scene, -1, -1, this.scene.scaledCanvas.width, this.scene.scaledCanvas.height, 0xffffff, 0.3); + this.menuOverlay = new Phaser.GameObjects.Rectangle(globalScene, -1, -1, globalScene.scaledCanvas.width, globalScene.scaledCanvas.height, 0xffffff, 0.3); this.menuOverlay.setName("menu-overlay"); this.menuOverlay.setOrigin(0, 0); this.menuContainer.add(this.menuOverlay); @@ -110,7 +111,7 @@ export default class MenuUiHandler extends MessageUiHandler { render() { const ui = this.getUi(); this.excludedMenus = () => [ - { condition: this.scene.getCurrentPhase() instanceof SelectModifierPhase, options: [ MenuOptions.EGG_GACHA, MenuOptions.EGG_LIST ]}, + { condition: globalScene.getCurrentPhase() instanceof SelectModifierPhase, options: [ MenuOptions.EGG_GACHA, MenuOptions.EGG_LIST ]}, { condition: bypassLogin, options: [ MenuOptions.LOG_OUT ]} ]; @@ -120,15 +121,15 @@ export default class MenuUiHandler extends MessageUiHandler { return !this.excludedMenus().some(exclusion => exclusion.condition && exclusion.options.includes(m)); }); - this.optionSelectText = addTextObject(this.scene, 0, 0, this.menuOptions.map(o => `${i18next.t(`menuUiHandler:${MenuOptions[o]}`)}`).join("\n"), TextStyle.WINDOW, { maxLines: this.menuOptions.length }); + this.optionSelectText = addTextObject(0, 0, this.menuOptions.map(o => `${i18next.t(`menuUiHandler:${MenuOptions[o]}`)}`).join("\n"), TextStyle.WINDOW, { maxLines: this.menuOptions.length }); this.optionSelectText.setLineSpacing(12); - this.scale = getTextStyleOptions(TextStyle.WINDOW, (this.scene as BattleScene).uiTheme).scale; - this.menuBg = addWindow(this.scene, - (this.scene.game.canvas.width / 6) - (this.optionSelectText.displayWidth + 25), + this.scale = getTextStyleOptions(TextStyle.WINDOW, globalScene.uiTheme).scale; + this.menuBg = addWindow( + (globalScene.game.canvas.width / 6) - (this.optionSelectText.displayWidth + 25), 0, this.optionSelectText.displayWidth + 19 + 24 * this.scale, - (this.scene.game.canvas.height / 6) - 2 + (globalScene.game.canvas.height / 6) - 2 ); this.menuBg.setOrigin(0, 0); @@ -140,21 +141,21 @@ export default class MenuUiHandler extends MessageUiHandler { ui.add(this.menuContainer); - this.menuMessageBoxContainer = this.scene.add.container(0, 130); + this.menuMessageBoxContainer = globalScene.add.container(0, 130); this.menuMessageBoxContainer.setName("menu-message-box"); this.menuMessageBoxContainer.setVisible(false); // Window for general messages - this.menuMessageBox = addWindow(this.scene, 0, 0, this.defaultMessageBoxWidth, 48); + this.menuMessageBox = addWindow(0, 0, this.defaultMessageBoxWidth, 48); this.menuMessageBox.setOrigin(0, 0); this.menuMessageBoxContainer.add(this.menuMessageBox); // Full-width window used for testing dialog messages in debug mode - this.dialogueMessageBox = addWindow(this.scene, -this.textPadding, 0, this.scene.game.canvas.width / 6 + this.textPadding * 2, 49, false, false, 0, 0, WindowVariant.THIN); + this.dialogueMessageBox = addWindow(-this.textPadding, 0, globalScene.game.canvas.width / 6 + this.textPadding * 2, 49, false, false, 0, 0, WindowVariant.THIN); this.dialogueMessageBox.setOrigin(0, 0); this.menuMessageBoxContainer.add(this.dialogueMessageBox); - const menuMessageText = addTextObject(this.scene, this.textPadding, this.textPadding, "", TextStyle.WINDOW, { maxLines: 2 }); + const menuMessageText = addTextObject(this.textPadding, this.textPadding, "", TextStyle.WINDOW, { maxLines: 2 }); menuMessageText.setName("menu-message"); menuMessageText.setOrigin(0, 0); this.menuMessageBoxContainer.add(menuMessageText); @@ -203,7 +204,7 @@ export default class MenuUiHandler extends MessageUiHandler { manageDataOptions.push({ label: i18next.t("menuUiHandler:importSession"), handler: () => { - confirmSlot(i18next.t("menuUiHandler:importSlotSelect"), () => true, slotId => this.scene.gameData.importData(GameDataType.SESSION, slotId)); + confirmSlot(i18next.t("menuUiHandler:importSlotSelect"), () => true, slotId => globalScene.gameData.importData(GameDataType.SESSION, slotId)); return true; }, keepOpen: true @@ -216,7 +217,7 @@ export default class MenuUiHandler extends MessageUiHandler { Promise.all( new Array(5).fill(null).map((_, i) => { const slotId = i; - return this.scene.gameData.getSession(slotId).then(data => { + return globalScene.gameData.getSession(slotId).then(data => { if (data) { dataSlots.push(slotId); } @@ -224,7 +225,7 @@ export default class MenuUiHandler extends MessageUiHandler { })).then(() => { confirmSlot(i18next.t("menuUiHandler:exportSlotSelect"), i => dataSlots.indexOf(i) > -1, - slotId => this.scene.gameData.tryExportData(GameDataType.SESSION, slotId)); + slotId => globalScene.gameData.tryExportData(GameDataType.SESSION, slotId)); }); return true; }, @@ -233,7 +234,7 @@ export default class MenuUiHandler extends MessageUiHandler { manageDataOptions.push({ label: i18next.t("menuUiHandler:importRunHistory"), handler: () => { - this.scene.gameData.importData(GameDataType.RUN_HISTORY); + globalScene.gameData.importData(GameDataType.RUN_HISTORY); return true; }, keepOpen: true @@ -241,7 +242,7 @@ export default class MenuUiHandler extends MessageUiHandler { manageDataOptions.push({ label: i18next.t("menuUiHandler:exportRunHistory"), handler: () => { - this.scene.gameData.tryExportData(GameDataType.RUN_HISTORY); + globalScene.gameData.tryExportData(GameDataType.RUN_HISTORY); return true; }, keepOpen: true @@ -251,7 +252,7 @@ export default class MenuUiHandler extends MessageUiHandler { label: i18next.t("menuUiHandler:importData"), handler: () => { ui.revertMode(); - this.scene.gameData.importData(GameDataType.SYSTEM); + globalScene.gameData.importData(GameDataType.SYSTEM); return true; }, keepOpen: true @@ -260,7 +261,7 @@ export default class MenuUiHandler extends MessageUiHandler { manageDataOptions.push({ label: i18next.t("menuUiHandler:exportData"), handler: () => { - this.scene.gameData.tryExportData(GameDataType.SYSTEM); + globalScene.gameData.tryExportData(GameDataType.SYSTEM); return true; }, keepOpen: true @@ -311,7 +312,7 @@ export default class MenuUiHandler extends MessageUiHandler { } // Switch to the dialog test window this.setDialogTestMode(true); - ui.showText(String(i18next.t(translatedString, interpolatorOptions)), null, () => this.scene.ui.showText("", 0, () => { + ui.showText(String(i18next.t(translatedString, interpolatorOptions)), null, () => globalScene.ui.showText("", 0, () => { handler.tutorialActive = false; // Go back to the default message window this.setDialogTestMode(false); @@ -330,7 +331,7 @@ export default class MenuUiHandler extends MessageUiHandler { manageDataOptions.push({ label: i18next.t("menuUiHandler:cancel"), handler: () => { - this.scene.ui.revertMode(); + globalScene.ui.revertMode(); return true; }, keepOpen: true @@ -421,7 +422,7 @@ export default class MenuUiHandler extends MessageUiHandler { return true; } }); - this.scene.ui.setOverlayMode(Mode.OPTION_SELECT, { + globalScene.ui.setOverlayMode(Mode.OPTION_SELECT, { options: options, delay: 0 }); @@ -433,7 +434,7 @@ export default class MenuUiHandler extends MessageUiHandler { communityOptions.push({ label: i18next.t("menuUiHandler:cancel"), handler: () => { - this.scene.ui.revertMode(); + globalScene.ui.revertMode(); return true; } }); @@ -461,12 +462,12 @@ export default class MenuUiHandler extends MessageUiHandler { this.getUi().hideTooltip(); - this.scene.playSound("ui/menu_open"); + globalScene.playSound("ui/menu_open"); // Make sure the tutorial overlay sits above everything, but below the message box this.menuContainer.bringToTop(this.tutorialOverlay); this.menuContainer.bringToTop(this.menuMessageBoxContainer); - handleTutorial(this.scene, Tutorial.Menu); + handleTutorial(Tutorial.Menu); this.bgmBar.toggleBgmBar(true); @@ -512,7 +513,7 @@ export default class MenuUiHandler extends MessageUiHandler { success = true; break; case MenuOptions.EGG_LIST: - if (this.scene.gameData.eggs.length) { + if (globalScene.gameData.eggs.length) { ui.revertMode(); ui.setOverlayMode(Mode.EGG_LIST); success = true; @@ -541,7 +542,7 @@ export default class MenuUiHandler extends MessageUiHandler { return true; } else { pokerogueApi.unlinkDiscord().then(_isSuccess => { - updateUserInfo().then(() => this.scene.reset(true, true)); + updateUserInfo().then(() => globalScene.reset(true, true)); }); return true; } @@ -559,7 +560,7 @@ export default class MenuUiHandler extends MessageUiHandler { return true; } else { pokerogueApi.unlinkGoogle().then(_isSuccess => { - updateUserInfo().then(() => this.scene.reset(true, true)); + updateUserInfo().then(() => globalScene.reset(true, true)); }); return true; } @@ -574,18 +575,18 @@ export default class MenuUiHandler extends MessageUiHandler { success = true; break; case MenuOptions.SAVE_AND_QUIT: - if (this.scene.currentBattle) { + if (globalScene.currentBattle) { success = true; const doSaveQuit = () => { ui.setMode(Mode.LOADING, { buttonActions: [], fadeOut: () => - this.scene.gameData.saveAll(this.scene, true, true, true, true).then(() => { + globalScene.gameData.saveAll(true, true, true, true).then(() => { - this.scene.reset(true); + globalScene.reset(true); }) }); }; - if (this.scene.currentBattle.turn > 1) { + if (globalScene.currentBattle.turn > 1) { ui.showText(i18next.t("menuUiHandler:losingProgressionWarning"), null, () => { if (!this.active) { this.showText("", 0); @@ -608,11 +609,11 @@ export default class MenuUiHandler extends MessageUiHandler { const doLogout = () => { ui.setMode(Mode.LOADING, { buttonActions: [], fadeOut: () => pokerogueApi.account.logout().then(() => { - updateUserInfo().then(() => this.scene.reset(true, true)); + updateUserInfo().then(() => globalScene.reset(true, true)); }) }); }; - if (this.scene.currentBattle) { + if (globalScene.currentBattle) { ui.showText(i18next.t("menuUiHandler:losingProgressionWarning"), null, () => { if (!this.active) { this.showText("", 0); @@ -673,7 +674,7 @@ export default class MenuUiHandler extends MessageUiHandler { this.menuMessageBox.setVisible(!isDialogMode); this.dialogueMessageBox.setVisible(isDialogMode); // If we're testing dialog, we use the same word wrapping as the battle message handler - this.message.setWordWrapWidth(isDialogMode ? this.scene.ui.getMessageHandler().wordWrapWidth : this.defaultWordWrapWidth); + this.message.setWordWrapWidth(isDialogMode ? globalScene.ui.getMessageHandler().wordWrapWidth : this.defaultWordWrapWidth); this.message.setX(isDialogMode ? this.textPadding + 1 : this.textPadding); this.message.setY(isDialogMode ? this.textPadding + 0.4 : this.textPadding); } @@ -688,7 +689,7 @@ export default class MenuUiHandler extends MessageUiHandler { const ret = super.setCursor(cursor); if (!this.cursorObj) { - this.cursorObj = this.scene.add.image(0, 0, "cursor"); + this.cursorObj = globalScene.add.image(0, 0, "cursor"); this.cursorObj.setOrigin(0, 0); this.menuContainer.add(this.cursorObj); } diff --git a/src/ui/message-ui-handler.ts b/src/ui/message-ui-handler.ts index 5ae4707e329..81a09e90167 100644 --- a/src/ui/message-ui-handler.ts +++ b/src/ui/message-ui-handler.ts @@ -1,7 +1,7 @@ -import BattleScene from "../battle-scene"; import AwaitableUiHandler from "./awaitable-ui-handler"; -import { Mode } from "./ui"; +import type { Mode } from "./ui"; import * as Utils from "../utils"; +import { globalScene } from "#app/global-scene"; export default abstract class MessageUiHandler extends AwaitableUiHandler { protected textTimer: Phaser.Time.TimerEvent | null; @@ -11,8 +11,8 @@ export default abstract class MessageUiHandler extends AwaitableUiHandler { public message: Phaser.GameObjects.Text; public prompt: Phaser.GameObjects.Sprite; - constructor(scene: BattleScene, mode: Mode | null = null) { - super(scene, mode); + constructor(mode: Mode | null = null) { + super(mode); this.pendingPrompt = false; } @@ -23,7 +23,7 @@ export default abstract class MessageUiHandler extends AwaitableUiHandler { */ initPromptSprite(container: Phaser.GameObjects.Container) { if (!this.prompt) { - const promptSprite = this.scene.add.sprite(0, 0, "prompt"); + const promptSprite = globalScene.add.sprite(0, 0, "prompt"); promptSprite.setVisible(false); promptSprite.setOrigin(0, 0); this.prompt = promptSprite; @@ -108,7 +108,7 @@ export default abstract class MessageUiHandler extends AwaitableUiHandler { callback = () => { const showPrompt = () => this.showPrompt(originalCallback, callbackDelay); if (promptDelay) { - this.scene.time.delayedCall(promptDelay, showPrompt); + globalScene.time.delayedCall(promptDelay, showPrompt); } else { showPrompt(); } @@ -119,7 +119,7 @@ export default abstract class MessageUiHandler extends AwaitableUiHandler { if (prompt) { this.pendingPrompt = true; } - this.textTimer = this.scene.time.addEvent({ + this.textTimer = globalScene.time.addEvent({ delay: delay, callback: () => { const charIndex = text.length - (this.textTimer?.repeatCount!); // TODO: is this bang correct? @@ -130,14 +130,14 @@ export default abstract class MessageUiHandler extends AwaitableUiHandler { this.message.setText(text.slice(0, charIndex)); const advance = () => { if (charVar) { - this.scene.charSprite.setVariant(charVar); + globalScene.charSprite.setVariant(charVar); } if (charSound) { - this.scene.playSound(charSound); + globalScene.playSound(charSound); } if (callback && !this.textTimer?.repeatCount) { if (callbackDelay && !prompt) { - this.textCallbackTimer = this.scene.time.delayedCall(callbackDelay, () => { + this.textCallbackTimer = globalScene.time.delayedCall(callbackDelay, () => { if (this.textCallbackTimer) { this.textCallbackTimer.destroy(); this.textCallbackTimer = null; @@ -151,7 +151,7 @@ export default abstract class MessageUiHandler extends AwaitableUiHandler { }; if (charDelay) { this.textTimer!.paused = true; // TODO: is the bang correct? - this.scene.tweens.addCounter({ + globalScene.tweens.addCounter({ duration: Utils.getFrameMs(charDelay), onComplete: () => { this.textTimer!.paused = false; // TODO: is the bang correct? @@ -160,11 +160,11 @@ export default abstract class MessageUiHandler extends AwaitableUiHandler { }); } else if (charFade) { this.textTimer!.paused = true; - this.scene.time.delayedCall(150, () => { - this.scene.ui.fadeOut(750).then(() => { + globalScene.time.delayedCall(150, () => { + globalScene.ui.fadeOut(750).then(() => { const delay = Utils.getFrameMs(charFade); - this.scene.time.delayedCall(delay, () => { - this.scene.ui.fadeIn(500).then(() => { + globalScene.time.delayedCall(delay, () => { + globalScene.ui.fadeIn(500).then(() => { this.textTimer!.paused = false; advance(); }); @@ -192,7 +192,7 @@ export default abstract class MessageUiHandler extends AwaitableUiHandler { const wrappedTextLines = this.message.runWordWrap(this.message.text).split(/\n/g); const textLinesCount = wrappedTextLines.length; const lastTextLine = wrappedTextLines[wrappedTextLines.length - 1]; - const lastLineTest = this.scene.add.text(0, 0, lastTextLine, { font: "96px emerald" }); + const lastLineTest = globalScene.add.text(0, 0, lastTextLine, { font: "96px emerald" }); lastLineTest.setScale(this.message.scale); const lastLineWidth = lastLineTest.displayWidth; lastLineTest.destroy(); @@ -209,7 +209,7 @@ export default abstract class MessageUiHandler extends AwaitableUiHandler { } if (callback) { if (callbackDelay) { - this.textCallbackTimer = this.scene.time.delayedCall(callbackDelay, () => { + this.textCallbackTimer = globalScene.time.delayedCall(callbackDelay, () => { if (this.textCallbackTimer) { this.textCallbackTimer.destroy(); this.textCallbackTimer = null; diff --git a/src/ui/modal-ui-handler.ts b/src/ui/modal-ui-handler.ts index 79f1e8afeed..909010e3566 100644 --- a/src/ui/modal-ui-handler.ts +++ b/src/ui/modal-ui-handler.ts @@ -1,9 +1,9 @@ -import BattleScene from "../battle-scene"; import { TextStyle, addTextObject } from "./text"; -import { Mode } from "./ui"; +import type { Mode } from "./ui"; import UiHandler from "./ui-handler"; import { WindowVariant, addWindow } from "./ui-theme"; -import { Button } from "#enums/buttons"; +import type { Button } from "#enums/buttons"; +import { globalScene } from "#app/global-scene"; export interface ModalConfig { buttonActions: Function[]; @@ -17,8 +17,8 @@ export abstract class ModalUiHandler extends UiHandler { protected buttonBgs: Phaser.GameObjects.NineSlice[]; protected buttonLabels: Phaser.GameObjects.Text[]; - constructor(scene: BattleScene, mode: Mode | null = null) { - super(scene, mode); + constructor(mode: Mode | null = null) { + super(mode); this.buttonContainers = []; this.buttonBgs = []; @@ -42,15 +42,15 @@ export abstract class ModalUiHandler extends UiHandler { setup() { const ui = this.getUi(); - this.modalContainer = this.scene.add.container(0, 0); + this.modalContainer = globalScene.add.container(0, 0); - this.modalContainer.setInteractive(new Phaser.Geom.Rectangle(0, 0, this.scene.game.canvas.width / 6, this.scene.game.canvas.height / 6), Phaser.Geom.Rectangle.Contains); + this.modalContainer.setInteractive(new Phaser.Geom.Rectangle(0, 0, globalScene.game.canvas.width / 6, globalScene.game.canvas.height / 6), Phaser.Geom.Rectangle.Contains); - this.modalBg = addWindow(this.scene, 0, 0, 0, 0); + this.modalBg = addWindow(0, 0, 0, 0); this.modalContainer.add(this.modalBg); - this.titleText = addTextObject(this.scene, 0, 4, "", TextStyle.SETTINGS_LABEL); + this.titleText = addTextObject(0, 4, "", TextStyle.SETTINGS_LABEL); this.titleText.setOrigin(0.5, 0); this.modalContainer.add(this.titleText); @@ -68,14 +68,14 @@ export abstract class ModalUiHandler extends UiHandler { private addButton(label: string) { const buttonTopMargin = this.getButtonTopMargin(); - const buttonLabel = addTextObject(this.scene, 0, 8, label, TextStyle.TOOLTIP_CONTENT); + const buttonLabel = addTextObject(0, 8, label, TextStyle.TOOLTIP_CONTENT); buttonLabel.setOrigin(0.5, 0.5); - const buttonBg = addWindow(this.scene, 0, 0, buttonLabel.getBounds().width + 8, 16, false, false, 0, 0, WindowVariant.THIN); + const buttonBg = addWindow(0, 0, buttonLabel.getBounds().width + 8, 16, false, false, 0, 0, WindowVariant.THIN); buttonBg.setOrigin(0.5, 0); buttonBg.setInteractive(new Phaser.Geom.Rectangle(0, 0, buttonBg.width, buttonBg.height), Phaser.Geom.Rectangle.Contains); - const buttonContainer = this.scene.add.container(0, buttonTopMargin); + const buttonContainer = globalScene.add.container(0, buttonTopMargin); this.buttonLabels.push(buttonLabel); this.buttonBgs.push(buttonBg); @@ -95,7 +95,7 @@ export abstract class ModalUiHandler extends UiHandler { if (args[0].hasOwnProperty("fadeOut") && typeof args[0].fadeOut === "function") { const [ marginTop, marginRight, marginBottom, marginLeft ] = this.getMargin(); - const overlay = this.scene.add.rectangle(( this.getWidth() + marginLeft + marginRight) / 2, (this.getHeight() + marginTop + marginBottom) / 2, this.scene.game.canvas.width / 6, this.scene.game.canvas.height / 6, 0); + const overlay = globalScene.add.rectangle(( this.getWidth() + marginLeft + marginRight) / 2, (this.getHeight() + marginTop + marginBottom) / 2, globalScene.game.canvas.width / 6, globalScene.game.canvas.height / 6, 0); overlay.setOrigin(0.5, 0.5); overlay.setName("rect-ui-overlay-modal"); overlay.setAlpha(0); @@ -103,7 +103,7 @@ export abstract class ModalUiHandler extends UiHandler { this.modalContainer.add(overlay); this.modalContainer.moveTo(overlay, 0); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: overlay, alpha: 1, duration: 250, @@ -136,7 +136,7 @@ export abstract class ModalUiHandler extends UiHandler { const [ marginTop, marginRight, marginBottom, marginLeft ] = this.getMargin(config); const [ width, height ] = [ this.getWidth(config), this.getHeight(config) ]; - this.modalContainer.setPosition((((this.scene.game.canvas.width / 6) - (width + (marginRight - marginLeft))) / 2), (((-this.scene.game.canvas.height / 6) - (height + (marginBottom - marginTop))) / 2)); + this.modalContainer.setPosition((((globalScene.game.canvas.width / 6) - (width + (marginRight - marginLeft))) / 2), (((-globalScene.game.canvas.height / 6) - (height + (marginBottom - marginTop))) / 2)); this.modalBg.setSize(width, height); diff --git a/src/ui/modifier-select-ui-handler.ts b/src/ui/modifier-select-ui-handler.ts index a0358b5ca8c..05740a349c6 100644 --- a/src/ui/modifier-select-ui-handler.ts +++ b/src/ui/modifier-select-ui-handler.ts @@ -1,5 +1,6 @@ -import BattleScene from "../battle-scene"; -import { getPlayerShopModifierTypeOptionsForWave, ModifierTypeOption, TmModifierType } from "../modifier/modifier-type"; +import { globalScene } from "#app/global-scene"; +import type { ModifierTypeOption } from "../modifier/modifier-type"; +import { getPlayerShopModifierTypeOptionsForWave, TmModifierType } from "../modifier/modifier-type"; import { getPokeballAtlasKey } from "#app/data/pokeball"; import { addTextObject, getTextStyleOptions, getModifierTierTextTint, getTextColor, TextStyle } from "./text"; import AwaitableUiHandler from "./awaitable-ui-handler"; @@ -49,8 +50,8 @@ export default class ModifierSelectUiHandler extends AwaitableUiHandler { private cursorObj: Phaser.GameObjects.Image | null; - constructor(scene: BattleScene) { - super(scene, Mode.CONFIRM); + constructor() { + super(Mode.CONFIRM); this.options = []; this.shopOptionsRows = []; @@ -59,12 +60,12 @@ export default class ModifierSelectUiHandler extends AwaitableUiHandler { setup() { const ui = this.getUi(); - this.modifierContainer = this.scene.add.container(0, 0); + this.modifierContainer = globalScene.add.container(0, 0); ui.add(this.modifierContainer); const canvas = document.createElement("canvas"); const context = canvas.getContext("2d"); - const styleOptions = getTextStyleOptions(TextStyle.PARTY, (this.scene as BattleScene).uiTheme).styleOptions; + const styleOptions = getTextStyleOptions(TextStyle.PARTY, globalScene.uiTheme).styleOptions; if (context) { context.font = styleOptions.fontSize + "px " + styleOptions.fontFamily; @@ -72,78 +73,78 @@ export default class ModifierSelectUiHandler extends AwaitableUiHandler { this.checkButtonWidth = context.measureText(i18next.t("modifierSelectUiHandler:checkTeam")).width; } - this.transferButtonContainer = this.scene.add.container((this.scene.game.canvas.width - this.checkButtonWidth) / 6 - 21, OPTION_BUTTON_YPOSITION); + this.transferButtonContainer = globalScene.add.container((globalScene.game.canvas.width - this.checkButtonWidth) / 6 - 21, OPTION_BUTTON_YPOSITION); this.transferButtonContainer.setName("transfer-btn"); this.transferButtonContainer.setVisible(false); ui.add(this.transferButtonContainer); - const transferButtonText = addTextObject(this.scene, -4, -2, i18next.t("modifierSelectUiHandler:transfer"), TextStyle.PARTY); + const transferButtonText = addTextObject(-4, -2, i18next.t("modifierSelectUiHandler:transfer"), TextStyle.PARTY); transferButtonText.setName("text-transfer-btn"); transferButtonText.setOrigin(1, 0); this.transferButtonContainer.add(transferButtonText); - this.checkButtonContainer = this.scene.add.container((this.scene.game.canvas.width) / 6 - 1, OPTION_BUTTON_YPOSITION); + this.checkButtonContainer = globalScene.add.container((globalScene.game.canvas.width) / 6 - 1, OPTION_BUTTON_YPOSITION); this.checkButtonContainer.setName("use-btn"); this.checkButtonContainer.setVisible(false); ui.add(this.checkButtonContainer); - const checkButtonText = addTextObject(this.scene, -4, -2, i18next.t("modifierSelectUiHandler:checkTeam"), TextStyle.PARTY); + const checkButtonText = addTextObject(-4, -2, i18next.t("modifierSelectUiHandler:checkTeam"), TextStyle.PARTY); checkButtonText.setName("text-use-btn"); checkButtonText.setOrigin(1, 0); this.checkButtonContainer.add(checkButtonText); - this.rerollButtonContainer = this.scene.add.container(16, OPTION_BUTTON_YPOSITION); + this.rerollButtonContainer = globalScene.add.container(16, OPTION_BUTTON_YPOSITION); this.rerollButtonContainer.setName("reroll-brn"); this.rerollButtonContainer.setVisible(false); ui.add(this.rerollButtonContainer); - const rerollButtonText = addTextObject(this.scene, -4, -2, i18next.t("modifierSelectUiHandler:reroll"), TextStyle.PARTY); + const rerollButtonText = addTextObject(-4, -2, i18next.t("modifierSelectUiHandler:reroll"), TextStyle.PARTY); rerollButtonText.setName("text-reroll-btn"); rerollButtonText.setOrigin(0, 0); this.rerollButtonContainer.add(rerollButtonText); - this.rerollCostText = addTextObject(this.scene, 0, 0, "", TextStyle.MONEY); + this.rerollCostText = addTextObject(0, 0, "", TextStyle.MONEY); this.rerollCostText.setName("text-reroll-cost"); this.rerollCostText.setOrigin(0, 0); this.rerollCostText.setPositionRelative(rerollButtonText, rerollButtonText.displayWidth + 5, 1); this.rerollButtonContainer.add(this.rerollCostText); - this.lockRarityButtonContainer = this.scene.add.container(16, OPTION_BUTTON_YPOSITION); + this.lockRarityButtonContainer = globalScene.add.container(16, OPTION_BUTTON_YPOSITION); this.lockRarityButtonContainer.setVisible(false); ui.add(this.lockRarityButtonContainer); - this.lockRarityButtonText = addTextObject(this.scene, -4, -2, i18next.t("modifierSelectUiHandler:lockRarities"), TextStyle.PARTY); + this.lockRarityButtonText = addTextObject(-4, -2, i18next.t("modifierSelectUiHandler:lockRarities"), TextStyle.PARTY); this.lockRarityButtonText.setOrigin(0, 0); this.lockRarityButtonContainer.add(this.lockRarityButtonText); - this.continueButtonContainer = this.scene.add.container((this.scene.game.canvas.width / 12), -(this.scene.game.canvas.height / 12)); + this.continueButtonContainer = globalScene.add.container((globalScene.game.canvas.width / 12), -(globalScene.game.canvas.height / 12)); this.continueButtonContainer.setVisible(false); ui.add(this.continueButtonContainer); // Create continue button - const continueButtonText = addTextObject(this.scene, -24, 5, i18next.t("modifierSelectUiHandler:continueNextWaveButton"), TextStyle.MESSAGE); + const continueButtonText = addTextObject(-24, 5, i18next.t("modifierSelectUiHandler:continueNextWaveButton"), TextStyle.MESSAGE); continueButtonText.setName("text-continue-btn"); this.continueButtonContainer.add(continueButtonText); // prepare move overlay const overlayScale = 1; - this.moveInfoOverlay = new MoveInfoOverlay(this.scene, { + this.moveInfoOverlay = new MoveInfoOverlay({ delayVisibility: true, scale: overlayScale, onSide: true, right: true, x: 1, y: -MoveInfoOverlay.getHeight(overlayScale, true) - 1, - width: (this.scene.game.canvas.width / 6) - 2, + width: (globalScene.game.canvas.width / 6) - 2, }); ui.add(this.moveInfoOverlay); // register the overlay to receive toggle events - this.scene.addInfoToggle(this.moveInfoOverlay); + globalScene.addInfoToggle(this.moveInfoOverlay); } show(args: any[]): boolean { - this.scene.disableMenu = false; + globalScene.disableMenu = false; if (this.active) { if (args.length >= 3) { @@ -164,8 +165,8 @@ export default class ModifierSelectUiHandler extends AwaitableUiHandler { this.player = args[0]; - const partyHasHeldItem = this.player && !!this.scene.findModifiers(m => m instanceof PokemonHeldItemModifier && m.isTransferable).length; - const canLockRarities = !!this.scene.findModifier(m => m instanceof LockModifierTiersModifier); + const partyHasHeldItem = this.player && !!globalScene.findModifiers(m => m instanceof PokemonHeldItemModifier && m.isTransferable).length; + const canLockRarities = !!globalScene.findModifier(m => m instanceof LockModifierTiersModifier); this.transferButtonContainer.setVisible(false); this.transferButtonContainer.setAlpha(0); @@ -189,19 +190,19 @@ export default class ModifierSelectUiHandler extends AwaitableUiHandler { this.updateRerollCostText(); const typeOptions = args[1] as ModifierTypeOption[]; - const removeHealShop = this.scene.gameMode.hasNoShop; - const baseShopCost = new IntegerHolder(this.scene.getWaveMoneyAmount(1)); - this.scene.applyModifier(HealShopCostModifier, true, baseShopCost); + const removeHealShop = globalScene.gameMode.hasNoShop; + const baseShopCost = new IntegerHolder(globalScene.getWaveMoneyAmount(1)); + globalScene.applyModifier(HealShopCostModifier, true, baseShopCost); const shopTypeOptions = !removeHealShop - ? getPlayerShopModifierTypeOptionsForWave(this.scene.currentBattle.waveIndex, baseShopCost.value) + ? getPlayerShopModifierTypeOptionsForWave(globalScene.currentBattle.waveIndex, baseShopCost.value) : []; const optionsYOffset = shopTypeOptions.length > SHOP_OPTIONS_ROW_LIMIT ? -SINGLE_SHOP_ROW_YOFFSET : -DOUBLE_SHOP_ROW_YOFFSET; for (let m = 0; m < typeOptions.length; m++) { - const sliceWidth = (this.scene.game.canvas.width / 6) / (typeOptions.length + 2); - const option = new ModifierOption(this.scene, sliceWidth * (m + 1) + (sliceWidth * 0.5), -this.scene.game.canvas.height / 12 + optionsYOffset, typeOptions[m]); + const sliceWidth = (globalScene.game.canvas.width / 6) / (typeOptions.length + 2); + const option = new ModifierOption(sliceWidth * (m + 1) + (sliceWidth * 0.5), -globalScene.game.canvas.height / 12 + optionsYOffset, typeOptions[m]); option.setScale(0.5); - this.scene.add.existing(option); + globalScene.add.existing(option); this.modifierContainer.add(option); this.options.push(option); } @@ -215,10 +216,10 @@ export default class ModifierSelectUiHandler extends AwaitableUiHandler { const row = m < SHOP_OPTIONS_ROW_LIMIT ? 0 : 1; const col = m < SHOP_OPTIONS_ROW_LIMIT ? m : m - SHOP_OPTIONS_ROW_LIMIT; const rowOptions = shopTypeOptions.slice(row ? SHOP_OPTIONS_ROW_LIMIT : 0, row ? undefined : SHOP_OPTIONS_ROW_LIMIT); - const sliceWidth = (this.scene.game.canvas.width / 6) / (rowOptions.length + 2); - const option = new ModifierOption(this.scene, sliceWidth * (col + 1) + (sliceWidth * 0.5), ((-this.scene.game.canvas.height / 12) - (this.scene.game.canvas.height / 32) - (42 - (28 * row - 1))), shopTypeOptions[m]); + const sliceWidth = (globalScene.game.canvas.width / 6) / (rowOptions.length + 2); + const option = new ModifierOption(sliceWidth * (col + 1) + (sliceWidth * 0.5), ((-globalScene.game.canvas.height / 12) - (globalScene.game.canvas.height / 32) - (42 - (28 * row - 1))), shopTypeOptions[m]); option.setScale(0.375); - this.scene.add.existing(option); + globalScene.add.existing(option); this.modifierContainer.add(option); if (row >= this.shopOptionsRows.length) { @@ -230,17 +231,17 @@ export default class ModifierSelectUiHandler extends AwaitableUiHandler { const maxUpgradeCount = typeOptions.map(to => to.upgradeCount).reduce((max, current) => Math.max(current, max), 0); /* Force updateModifiers without pokemonSpecificModifiers */ - this.scene.getModifierBar().updateModifiers(this.scene.modifiers, true); + globalScene.getModifierBar().updateModifiers(globalScene.modifiers, true); /* Multiplies the appearance duration by the speed parameter so that it is always constant, and avoids "flashbangs" at game speed x5 */ - this.scene.showShopOverlay(750 * this.scene.gameSpeed); - this.scene.updateAndShowText(750); - this.scene.updateBiomeWaveText(); - this.scene.updateMoneyText(); + globalScene.showShopOverlay(750 * globalScene.gameSpeed); + globalScene.updateAndShowText(750); + globalScene.updateBiomeWaveText(); + globalScene.updateMoneyText(); let i = 0; - this.scene.tweens.addCounter({ + globalScene.tweens.addCounter({ ease: "Sine.easeIn", duration: 1250, onUpdate: t => { @@ -254,17 +255,17 @@ export default class ModifierSelectUiHandler extends AwaitableUiHandler { } }); - this.scene.time.delayedCall(1000 + maxUpgradeCount * 2000, () => { + globalScene.time.delayedCall(1000 + maxUpgradeCount * 2000, () => { for (const shopOption of this.shopOptionsRows.flat()) { shopOption.show(0, 0); } }); - this.scene.time.delayedCall(4000 + maxUpgradeCount * 2000, () => { + globalScene.time.delayedCall(4000 + maxUpgradeCount * 2000, () => { if (partyHasHeldItem) { this.transferButtonContainer.setAlpha(0); this.transferButtonContainer.setVisible(true); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this.transferButtonContainer, alpha: 1, duration: 250 @@ -280,34 +281,34 @@ export default class ModifierSelectUiHandler extends AwaitableUiHandler { this.continueButtonContainer.setVisible(this.rerollCost < 0); this.lockRarityButtonContainer.setVisible(canLockRarities); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: [ this.checkButtonContainer, this.continueButtonContainer ], alpha: 1, duration: 250 }); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: [ this.rerollButtonContainer, this.lockRarityButtonContainer ], alpha: this.rerollCost < 0 ? 0.5 : 1, duration: 250 }); const updateCursorTarget = () => { - if (this.scene.shopCursorTarget === ShopCursorTarget.CHECK_TEAM) { + if (globalScene.shopCursorTarget === ShopCursorTarget.CHECK_TEAM) { this.setRowCursor(0); this.setCursor(2); - } else if ((this.scene.shopCursorTarget === ShopCursorTarget.SHOP) && this.scene.gameMode.hasNoShop) { + } else if ((globalScene.shopCursorTarget === ShopCursorTarget.SHOP) && globalScene.gameMode.hasNoShop) { this.setRowCursor(ShopCursorTarget.REWARDS); this.setCursor(0); } else { - this.setRowCursor(this.scene.shopCursorTarget); + this.setRowCursor(globalScene.shopCursorTarget); this.setCursor(0); } }; updateCursorTarget(); - handleTutorial(this.scene, Tutorial.Select_Item).then((res) => { + handleTutorial(Tutorial.Select_Item).then((res) => { if (res) { updateCursorTarget(); } @@ -446,7 +447,7 @@ export default class ModifierSelectUiHandler extends AwaitableUiHandler { const ret = super.setCursor(cursor); if (!this.cursorObj) { - this.cursorObj = this.scene.add.image(0, 0, "cursor"); + this.cursorObj = globalScene.add.image(0, 0, "cursor"); this.modifierContainer.add(this.cursorObj); } @@ -460,22 +461,22 @@ export default class ModifierSelectUiHandler extends AwaitableUiHandler { if (this.rowCursor === 1 && options.length === 0) { // Continue button when no shop items this.cursorObj.setScale(1.25); - this.cursorObj.setPosition((this.scene.game.canvas.width / 18) + 23, (-this.scene.game.canvas.height / 12) - (this.shopOptionsRows.length > 1 ? SINGLE_SHOP_ROW_YOFFSET - 2 : DOUBLE_SHOP_ROW_YOFFSET - 2)); + this.cursorObj.setPosition((globalScene.game.canvas.width / 18) + 23, (-globalScene.game.canvas.height / 12) - (this.shopOptionsRows.length > 1 ? SINGLE_SHOP_ROW_YOFFSET - 2 : DOUBLE_SHOP_ROW_YOFFSET - 2)); ui.showText(i18next.t("modifierSelectUiHandler:continueNextWaveDescription")); return ret; } - const sliceWidth = (this.scene.game.canvas.width / 6) / (options.length + 2); + const sliceWidth = (globalScene.game.canvas.width / 6) / (options.length + 2); if (this.rowCursor < 2) { // Cursor on free items - this.cursorObj.setPosition(sliceWidth * (cursor + 1) + (sliceWidth * 0.5) - 20, (-this.scene.game.canvas.height / 12) - (this.shopOptionsRows.length > 1 ? SINGLE_SHOP_ROW_YOFFSET - 2 : DOUBLE_SHOP_ROW_YOFFSET - 2)); + this.cursorObj.setPosition(sliceWidth * (cursor + 1) + (sliceWidth * 0.5) - 20, (-globalScene.game.canvas.height / 12) - (this.shopOptionsRows.length > 1 ? SINGLE_SHOP_ROW_YOFFSET - 2 : DOUBLE_SHOP_ROW_YOFFSET - 2)); } else { // Cursor on paying items - this.cursorObj.setPosition(sliceWidth * (cursor + 1) + (sliceWidth * 0.5) - 16, (-this.scene.game.canvas.height / 12 - this.scene.game.canvas.height / 32) - (-14 + 28 * (this.rowCursor - (this.shopOptionsRows.length - 1)))); + this.cursorObj.setPosition(sliceWidth * (cursor + 1) + (sliceWidth * 0.5) - 16, (-globalScene.game.canvas.height / 12 - globalScene.game.canvas.height / 32) - (-14 + 28 * (this.rowCursor - (this.shopOptionsRows.length - 1)))); } const type = options[this.cursor].modifierTypeOption.type; - type && ui.showText(type.getDescription(this.scene)); + type && ui.showText(type.getDescription()); if (type instanceof TmModifierType) { // prepare the move overlay to be shown with the toggle this.moveInfoOverlay.show(allMoves[type.moveId]); @@ -484,10 +485,10 @@ export default class ModifierSelectUiHandler extends AwaitableUiHandler { this.cursorObj.setPosition(6, this.lockRarityButtonContainer.visible ? OPTION_BUTTON_YPOSITION - 8 : OPTION_BUTTON_YPOSITION + 4); ui.showText(i18next.t("modifierSelectUiHandler:rerollDesc")); } else if (cursor === 1) { - this.cursorObj.setPosition((this.scene.game.canvas.width - this.transferButtonWidth - this.checkButtonWidth) / 6 - 30, OPTION_BUTTON_YPOSITION + 4); + this.cursorObj.setPosition((globalScene.game.canvas.width - this.transferButtonWidth - this.checkButtonWidth) / 6 - 30, OPTION_BUTTON_YPOSITION + 4); ui.showText(i18next.t("modifierSelectUiHandler:transferDesc")); } else if (cursor === 2) { - this.cursorObj.setPosition((this.scene.game.canvas.width - this.checkButtonWidth) / 6 - 10, OPTION_BUTTON_YPOSITION + 4); + this.cursorObj.setPosition((globalScene.game.canvas.width - this.checkButtonWidth) / 6 - 10, OPTION_BUTTON_YPOSITION + 4); ui.showText(i18next.t("modifierSelectUiHandler:checkTeamDesc")); } else { this.cursorObj.setPosition(6, OPTION_BUTTON_YPOSITION + 4); @@ -558,9 +559,9 @@ export default class ModifierSelectUiHandler extends AwaitableUiHandler { } else { this.rerollCostText.setVisible(true); } - const canReroll = this.scene.money >= this.rerollCost; + const canReroll = globalScene.money >= this.rerollCost; - const formattedMoney = Utils.formatMoney(this.scene.moneyFormat, this.rerollCost); + const formattedMoney = Utils.formatMoney(globalScene.moneyFormat, this.rerollCost); this.rerollCostText.setText(i18next.t("modifierSelectUiHandler:rerollCost", { formattedMoney })); this.rerollCostText.setColor(this.getTextColor(canReroll ? TextStyle.MONEY : TextStyle.PARTY_RED)); @@ -568,7 +569,7 @@ export default class ModifierSelectUiHandler extends AwaitableUiHandler { } updateLockRaritiesText(): void { - const textStyle = this.scene.lockModifierTiers ? TextStyle.SUMMARY_BLUE : TextStyle.PARTY; + const textStyle = globalScene.lockModifierTiers ? TextStyle.SUMMARY_BLUE : TextStyle.PARTY; this.lockRarityButtonText.setColor(this.getTextColor(textStyle)); this.lockRarityButtonText.setShadowColor(this.getTextColor(textStyle, true)); } @@ -588,17 +589,17 @@ export default class ModifierSelectUiHandler extends AwaitableUiHandler { this.rowCursor = 0; /* Multiplies the fade time duration by the speed parameter so that it is always constant, and avoids "flashbangs" at game speed x5 */ - this.scene.hideShopOverlay(750 * this.scene.gameSpeed); - this.scene.hideLuckText(250); + globalScene.hideShopOverlay(750 * globalScene.gameSpeed); + globalScene.hideLuckText(250); /* Normally already called just after the shop, but not sure if it happens in 100% of cases */ - this.scene.getModifierBar().updateModifiers(this.scene.modifiers); + globalScene.getModifierBar().updateModifiers(globalScene.modifiers); const options = this.options.concat(this.shopOptionsRows.flat()); this.options.splice(0, this.options.length); this.shopOptionsRows.splice(0, this.shopOptionsRows.length); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: options, scale: 0.01, duration: 250, @@ -608,7 +609,7 @@ export default class ModifierSelectUiHandler extends AwaitableUiHandler { [ this.rerollButtonContainer, this.checkButtonContainer, this.transferButtonContainer, this.lockRarityButtonContainer, this.continueButtonContainer ].forEach(container => { if (container.visible) { - this.scene.tweens.add({ + globalScene.tweens.add({ targets: container, alpha: 0, duration: 250, @@ -643,8 +644,8 @@ class ModifierOption extends Phaser.GameObjects.Container { private itemText: Phaser.GameObjects.Text; private itemCostText: Phaser.GameObjects.Text; - constructor(scene: BattleScene, x: number, y: number, modifierTypeOption: ModifierTypeOption) { - super(scene, x, y); + constructor(x: number, y: number, modifierTypeOption: ModifierTypeOption) { + super(globalScene, x, y); this.modifierTypeOption = modifierTypeOption; @@ -654,7 +655,7 @@ class ModifierOption extends Phaser.GameObjects.Container { setup() { if (!this.modifierTypeOption.cost) { const getPb = (): Phaser.GameObjects.Sprite => { - const pb = this.scene.add.sprite(0, -182, "pb", this.getPbAtlasKey(-this.modifierTypeOption.upgradeCount)); + const pb = globalScene.add.sprite(0, -182, "pb", this.getPbAtlasKey(-this.modifierTypeOption.upgradeCount)); pb.setScale(2); return pb; }; @@ -667,13 +668,13 @@ class ModifierOption extends Phaser.GameObjects.Container { this.add(this.pbTint); } - this.itemContainer = this.scene.add.container(0, 0); + this.itemContainer = globalScene.add.container(0, 0); this.itemContainer.setScale(0.5); this.itemContainer.setAlpha(0); this.add(this.itemContainer); const getItem = () => { - const item = this.scene.add.sprite(0, 0, "items", this.modifierTypeOption.type?.iconImage); + const item = globalScene.add.sprite(0, 0, "items", this.modifierTypeOption.type?.iconImage); return item; }; @@ -686,14 +687,14 @@ class ModifierOption extends Phaser.GameObjects.Container { this.itemContainer.add(this.itemTint); } - this.itemText = addTextObject(this.scene, 0, 35, this.modifierTypeOption.type?.name!, TextStyle.PARTY, { align: "center" }); // TODO: is this bang correct? + this.itemText = addTextObject(0, 35, this.modifierTypeOption.type?.name!, TextStyle.PARTY, { align: "center" }); // TODO: is this bang correct? this.itemText.setOrigin(0.5, 0); this.itemText.setAlpha(0); this.itemText.setTint(this.modifierTypeOption.type?.tier ? getModifierTierTextTint(this.modifierTypeOption.type?.tier) : undefined); this.add(this.itemText); if (this.modifierTypeOption.cost) { - this.itemCostText = addTextObject(this.scene, 0, 45, "", TextStyle.MONEY, { align: "center" }); + this.itemCostText = addTextObject(0, 45, "", TextStyle.MONEY, { align: "center" }); this.itemCostText.setOrigin(0.5, 0); this.itemCostText.setAlpha(0); @@ -705,7 +706,7 @@ class ModifierOption extends Phaser.GameObjects.Container { show(remainingDuration: integer, upgradeCountOffset: integer) { if (!this.modifierTypeOption.cost) { - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this.pb, y: 0, duration: 1250, @@ -716,18 +717,18 @@ class ModifierOption extends Phaser.GameObjects.Container { let bounceCount = 0; let bounce = false; - this.scene.tweens.addCounter({ + globalScene.tweens.addCounter({ from: 1, to: 0, duration: 1250, ease: "Bounce.Out", onUpdate: t => { - if (!this.scene) { + if (!globalScene) { return; } const value = t.getValue(); if (!bounce && value > lastValue) { - (this.scene as BattleScene).playSound("se/pb_bounce_1", { volume: 1 / ++bounceCount }); + globalScene.playSound("se/pb_bounce_1", { volume: 1 / ++bounceCount }); bounce = true; } else if (bounce && value < lastValue) { bounce = false; @@ -738,20 +739,20 @@ class ModifierOption extends Phaser.GameObjects.Container { for (let u = 0; u < this.modifierTypeOption.upgradeCount; u++) { const upgradeIndex = u; - this.scene.time.delayedCall(remainingDuration - 2000 * (this.modifierTypeOption.upgradeCount - (upgradeIndex + 1 + upgradeCountOffset)), () => { - (this.scene as BattleScene).playSound("se/upgrade", { rate: 1 + 0.25 * upgradeIndex }); + globalScene.time.delayedCall(remainingDuration - 2000 * (this.modifierTypeOption.upgradeCount - (upgradeIndex + 1 + upgradeCountOffset)), () => { + globalScene.playSound("se/upgrade", { rate: 1 + 0.25 * upgradeIndex }); this.pbTint.setPosition(this.pb.x, this.pb.y); this.pbTint.setTintFill(0xFFFFFF); this.pbTint.setAlpha(0); this.pbTint.setVisible(true); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this.pbTint, alpha: 1, duration: 1000, ease: "Sine.easeIn", onComplete: () => { this.pb.setTexture("pb", this.getPbAtlasKey(-this.modifierTypeOption.upgradeCount + (upgradeIndex + 1))); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this.pbTint, alpha: 0, duration: 750, @@ -766,16 +767,16 @@ class ModifierOption extends Phaser.GameObjects.Container { } } - this.scene.time.delayedCall(remainingDuration + 2000, () => { - if (!this.scene) { + globalScene.time.delayedCall(remainingDuration + 2000, () => { + if (!globalScene) { return; } if (!this.modifierTypeOption.cost) { this.pb.setTexture("pb", `${this.getPbAtlasKey(0)}_open`); - (this.scene as BattleScene).playSound("se/pb_rel"); + globalScene.playSound("se/pb_rel"); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this.pb, duration: 500, delay: 250, @@ -785,7 +786,7 @@ class ModifierOption extends Phaser.GameObjects.Container { }); } - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this.itemContainer, duration: 500, ease: "Elastic.Out", @@ -793,7 +794,7 @@ class ModifierOption extends Phaser.GameObjects.Container { alpha: 1 }); if (!this.modifierTypeOption.cost) { - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this.itemTint, alpha: 0, duration: 500, @@ -801,7 +802,7 @@ class ModifierOption extends Phaser.GameObjects.Container { onComplete: () => this.itemTint.destroy() }); } - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this.itemText, duration: 500, alpha: 1, @@ -809,7 +810,7 @@ class ModifierOption extends Phaser.GameObjects.Container { ease: "Cubic.easeInOut" }); if (this.itemCostText) { - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this.itemCostText, duration: 500, alpha: 1, @@ -825,14 +826,13 @@ class ModifierOption extends Phaser.GameObjects.Container { } updateCostText(): void { - const scene = this.scene as BattleScene; const cost = Overrides.WAIVE_ROLL_FEE_OVERRIDE ? 0 : this.modifierTypeOption.cost; - const textStyle = cost <= scene.money ? TextStyle.MONEY : TextStyle.PARTY_RED; + const textStyle = cost <= globalScene.money ? TextStyle.MONEY : TextStyle.PARTY_RED; - const formattedMoney = Utils.formatMoney(scene.moneyFormat, cost); + const formattedMoney = Utils.formatMoney(globalScene.moneyFormat, cost); this.itemCostText.setText(i18next.t("modifierSelectUiHandler:itemCost", { formattedMoney })); - this.itemCostText.setColor(getTextColor(textStyle, false, scene.uiTheme)); - this.itemCostText.setShadowColor(getTextColor(textStyle, true, scene.uiTheme)); + this.itemCostText.setColor(getTextColor(textStyle, false, globalScene.uiTheme)); + this.itemCostText.setShadowColor(getTextColor(textStyle, true, globalScene.uiTheme)); } } diff --git a/src/ui/move-info-overlay.ts b/src/ui/move-info-overlay.ts index d9c4200ea9b..5b3b30b14dd 100644 --- a/src/ui/move-info-overlay.ts +++ b/src/ui/move-info-overlay.ts @@ -1,8 +1,10 @@ -import BattleScene, { InfoToggle } from "../battle-scene"; +import type { InfoToggle } from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { TextStyle, addTextObject } from "./text"; import { addWindow } from "./ui-theme"; import * as Utils from "../utils"; -import Move, { MoveCategory } from "../data/move"; +import type Move from "../data/move"; +import { MoveCategory } from "../data/move"; import { Type } from "#enums/type"; import i18next from "i18next"; @@ -46,23 +48,23 @@ export default class MoveInfoOverlay extends Phaser.GameObjects.Container implem private options : MoveInfoOverlaySettings; - constructor(scene: BattleScene, options?: MoveInfoOverlaySettings) { + constructor(options?: MoveInfoOverlaySettings) { if (options?.onSide) { options.top = false; } - super(scene, options?.x, options?.y); + super(globalScene, options?.x, options?.y); const scale = options?.scale || 1; // set up the scale this.setScale(scale); this.options = options || {}; // prepare the description box - const width = (options?.width || MoveInfoOverlay.getWidth(scale, scene)) / scale; // divide by scale as we always want this to be half a window wide - this.descBg = addWindow(scene, (options?.onSide && !options?.right ? EFF_WIDTH : 0), options?.top ? EFF_HEIGHT : 0, width - (options?.onSide ? EFF_WIDTH : 0), DESC_HEIGHT); + const width = (options?.width || MoveInfoOverlay.getWidth(scale)) / scale; // divide by scale as we always want this to be half a window wide + this.descBg = addWindow( (options?.onSide && !options?.right ? EFF_WIDTH : 0), options?.top ? EFF_HEIGHT : 0, width - (options?.onSide ? EFF_WIDTH : 0), DESC_HEIGHT); this.descBg.setOrigin(0, 0); this.add(this.descBg); // set up the description; wordWrap uses true pixels, unaffected by any scaling, while other values are affected - this.desc = addTextObject(scene, (options?.onSide && !options?.right ? EFF_WIDTH : 0) + BORDER, (options?.top ? EFF_HEIGHT : 0) + BORDER - 2, "", TextStyle.BATTLE_INFO, { wordWrap: { width: (width - (BORDER - 2) * 2 - (options?.onSide ? EFF_WIDTH : 0)) * GLOBAL_SCALE }}); + this.desc = addTextObject((options?.onSide && !options?.right ? EFF_WIDTH : 0) + BORDER, (options?.top ? EFF_HEIGHT : 0) + BORDER - 2, "", TextStyle.BATTLE_INFO, { wordWrap: { width: (width - (BORDER - 2) * 2 - (options?.onSide ? EFF_WIDTH : 0)) * GLOBAL_SCALE }}); this.desc.setLineSpacing(i18next.resolvedLanguage === "ja" ? 25 : 5); // limit the text rendering, required for scrolling later on @@ -71,13 +73,13 @@ export default class MoveInfoOverlay extends Phaser.GameObjects.Container implem y: (options?.y || 0), }; if (maskPointOrigin.x < 0) { - maskPointOrigin.x += this.scene.game.canvas.width / GLOBAL_SCALE; + maskPointOrigin.x += globalScene.game.canvas.width / GLOBAL_SCALE; } if (maskPointOrigin.y < 0) { - maskPointOrigin.y += this.scene.game.canvas.height / GLOBAL_SCALE; + maskPointOrigin.y += globalScene.game.canvas.height / GLOBAL_SCALE; } - const moveDescriptionTextMaskRect = this.scene.make.graphics(); + const moveDescriptionTextMaskRect = globalScene.make.graphics(); moveDescriptionTextMaskRect.fillStyle(0xFF0000); moveDescriptionTextMaskRect.fillRect( maskPointOrigin.x + ((options?.onSide && !options?.right ? EFF_WIDTH : 0) + BORDER) * scale, maskPointOrigin.y + ((options?.top ? EFF_HEIGHT : 0) + BORDER - 2) * scale, @@ -89,44 +91,44 @@ export default class MoveInfoOverlay extends Phaser.GameObjects.Container implem this.desc.setMask(moveDescriptionTextMask); // prepare the effect box - this.val = new Phaser.GameObjects.Container(scene, options?.right ? width - EFF_WIDTH : 0, options?.top || options?.onSide ? 0 : DESC_HEIGHT); + this.val = new Phaser.GameObjects.Container(globalScene, options?.right ? width - EFF_WIDTH : 0, options?.top || options?.onSide ? 0 : DESC_HEIGHT); this.add(this.val); - const valuesBg = addWindow(scene, 0, 0, EFF_WIDTH, EFF_HEIGHT); + const valuesBg = addWindow(0, 0, EFF_WIDTH, EFF_HEIGHT); valuesBg.setOrigin(0, 0); this.val.add(valuesBg); - this.typ = this.scene.add.sprite(25, EFF_HEIGHT - 35, Utils.getLocalizedSpriteKey("types"), "unknown"); + this.typ = globalScene.add.sprite(25, EFF_HEIGHT - 35, Utils.getLocalizedSpriteKey("types"), "unknown"); this.typ.setScale(0.8); this.val.add(this.typ); - this.cat = this.scene.add.sprite(57, EFF_HEIGHT - 35, "categories", "physical"); + this.cat = globalScene.add.sprite(57, EFF_HEIGHT - 35, "categories", "physical"); this.val.add(this.cat); - const ppTxt = addTextObject(scene, 12, EFF_HEIGHT - 25, "PP", TextStyle.MOVE_INFO_CONTENT); + const ppTxt = addTextObject(12, EFF_HEIGHT - 25, "PP", TextStyle.MOVE_INFO_CONTENT); ppTxt.setOrigin(0.0, 0.5); ppTxt.setText(i18next.t("fightUiHandler:pp")); this.val.add(ppTxt); - this.pp = addTextObject(scene, 70, EFF_HEIGHT - 25, "--", TextStyle.MOVE_INFO_CONTENT); + this.pp = addTextObject(70, EFF_HEIGHT - 25, "--", TextStyle.MOVE_INFO_CONTENT); this.pp.setOrigin(1, 0.5); this.val.add(this.pp); - const powTxt = addTextObject(scene, 12, EFF_HEIGHT - 17, "POWER", TextStyle.MOVE_INFO_CONTENT); + const powTxt = addTextObject(12, EFF_HEIGHT - 17, "POWER", TextStyle.MOVE_INFO_CONTENT); powTxt.setOrigin(0.0, 0.5); powTxt.setText(i18next.t("fightUiHandler:power")); this.val.add(powTxt); - this.pow = addTextObject(scene, 70, EFF_HEIGHT - 17, "---", TextStyle.MOVE_INFO_CONTENT); + this.pow = addTextObject(70, EFF_HEIGHT - 17, "---", TextStyle.MOVE_INFO_CONTENT); this.pow.setOrigin(1, 0.5); this.val.add(this.pow); - const accTxt = addTextObject(scene, 12, EFF_HEIGHT - 9, "ACC", TextStyle.MOVE_INFO_CONTENT); + const accTxt = addTextObject(12, EFF_HEIGHT - 9, "ACC", TextStyle.MOVE_INFO_CONTENT); accTxt.setOrigin(0.0, 0.5); accTxt.setText(i18next.t("fightUiHandler:accuracy")); this.val.add(accTxt); - this.acc = addTextObject(scene, 70, EFF_HEIGHT - 9, "---", TextStyle.MOVE_INFO_CONTENT); + this.acc = addTextObject(70, EFF_HEIGHT - 9, "---", TextStyle.MOVE_INFO_CONTENT); this.acc.setOrigin(1, 0.5); this.val.add(this.acc); @@ -144,7 +146,7 @@ export default class MoveInfoOverlay extends Phaser.GameObjects.Container implem // show this component with infos for the specific move show(move : Move):boolean { - if (!(this.scene as BattleScene).enableMoveInfo) { + if (!globalScene.enableMoveInfo) { return false; // move infos have been disabled // TODO:: is `false` correct? i used to be `undeefined` } this.move = move; @@ -167,7 +169,7 @@ export default class MoveInfoOverlay extends Phaser.GameObjects.Container implem const moveDescriptionLineCount = Math.floor(this.desc.displayHeight * (96 / 72) / 14.83); if (moveDescriptionLineCount > 3) { // generate scrolling effects - this.descScroll = this.scene.tweens.add({ + this.descScroll = globalScene.tweens.add({ targets: this.desc, delay: Utils.fixedInt(2000), loop: -1, @@ -193,7 +195,7 @@ export default class MoveInfoOverlay extends Phaser.GameObjects.Container implem if (visible) { this.setVisible(true); } - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this.desc, duration: Utils.fixedInt(125), ease: "Sine.easeInOut", @@ -209,8 +211,8 @@ export default class MoveInfoOverlay extends Phaser.GameObjects.Container implem } // width of this element - static getWidth(scale:number, scene: BattleScene):number { - return scene.game.canvas.width / GLOBAL_SCALE / 2; + static getWidth(scale:number):number { + return globalScene.game.canvas.width / GLOBAL_SCALE / 2; } // height of this element diff --git a/src/ui/mystery-encounter-ui-handler.ts b/src/ui/mystery-encounter-ui-handler.ts index cdb1c9024c5..383f4ab73d3 100644 --- a/src/ui/mystery-encounter-ui-handler.ts +++ b/src/ui/mystery-encounter-ui-handler.ts @@ -1,21 +1,21 @@ -import BattleScene from "../battle-scene"; import { addBBCodeTextObject, getBBCodeFrag, TextStyle } from "./text"; import { Mode } from "./ui"; import UiHandler from "./ui-handler"; import { Button } from "#enums/buttons"; import { addWindow, WindowVariant } from "./ui-theme"; -import { MysteryEncounterPhase } from "../phases/mystery-encounter-phases"; +import type { MysteryEncounterPhase } from "../phases/mystery-encounter-phases"; import { PartyUiMode } from "./party-ui-handler"; -import MysteryEncounterOption from "#app/data/mystery-encounters/mystery-encounter-option"; +import type MysteryEncounterOption from "#app/data/mystery-encounters/mystery-encounter-option"; import * as Utils from "../utils"; import { isNullOrUndefined } from "../utils"; import { getPokeballAtlasKey } from "../data/pokeball"; -import { OptionSelectSettings } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; +import type { OptionSelectSettings } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { getEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; import i18next from "i18next"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext"; +import type BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext"; +import { globalScene } from "#app/global-scene"; export default class MysteryEncounterUiHandler extends UiHandler { private cursorContainer: Phaser.GameObjects.Container; @@ -47,45 +47,45 @@ export default class MysteryEncounterUiHandler extends UiHandler { protected blockInput: boolean = true; - constructor(scene: BattleScene) { - super(scene, Mode.MYSTERY_ENCOUNTER); + constructor() { + super(Mode.MYSTERY_ENCOUNTER); } override setup() { const ui = this.getUi(); - this.cursorContainer = this.scene.add.container(18, -38.7); + this.cursorContainer = globalScene.add.container(18, -38.7); this.cursorContainer.setVisible(false); ui.add(this.cursorContainer); - this.optionsContainer = this.scene.add.container(12, -38.7); + this.optionsContainer = globalScene.add.container(12, -38.7); this.optionsContainer.setVisible(false); ui.add(this.optionsContainer); - this.dexProgressContainer = this.scene.add.container(214, -43); + this.dexProgressContainer = globalScene.add.container(214, -43); this.dexProgressContainer.setVisible(false); ui.add(this.dexProgressContainer); - this.descriptionContainer = this.scene.add.container(0, -152); + this.descriptionContainer = globalScene.add.container(0, -152); this.descriptionContainer.setVisible(false); ui.add(this.descriptionContainer); - this.tooltipContainer = this.scene.add.container(210, -48); + this.tooltipContainer = globalScene.add.container(210, -48); this.tooltipContainer.setVisible(false); ui.add(this.tooltipContainer); this.setCursor(this.getCursor()); - this.descriptionWindow = addWindow(this.scene, 0, 0, 150, 105, false, false, 0, 0, WindowVariant.THIN); + this.descriptionWindow = addWindow(0, 0, 150, 105, false, false, 0, 0, WindowVariant.THIN); this.descriptionContainer.add(this.descriptionWindow); - this.tooltipWindow = addWindow(this.scene, 0, 0, 110, 48, false, false, 0, 0, WindowVariant.THIN); + this.tooltipWindow = addWindow(0, 0, 110, 48, false, false, 0, 0, WindowVariant.THIN); this.tooltipContainer.add(this.tooltipWindow); - this.dexProgressWindow = addWindow(this.scene, 0, 0, 24, 28, false, false, 0, 0, WindowVariant.THIN); + this.dexProgressWindow = addWindow(0, 0, 24, 28, false, false, 0, 0, WindowVariant.THIN); this.dexProgressContainer.add(this.dexProgressWindow); - this.rarityBall = this.scene.add.sprite(141, 9, "pb"); + this.rarityBall = globalScene.add.sprite(141, 9, "pb"); this.rarityBall.setScale(0.75); this.descriptionContainer.add(this.rarityBall); - const dexProgressIndicator = this.scene.add.sprite(12, 10, "encounter_radar"); + const dexProgressIndicator = globalScene.add.sprite(12, 10, "encounter_radar"); dexProgressIndicator.setScale(0.80); this.dexProgressContainer.add(dexProgressIndicator); this.dexProgressContainer.setInteractive(new Phaser.Geom.Rectangle(0, 0, 24, 28), Phaser.Geom.Rectangle.Contains); @@ -138,8 +138,8 @@ export default class MysteryEncounterUiHandler extends UiHandler { ...this.overrideSettings, slideInDescription: false }; - this.scene.ui.setMode(Mode.PARTY, PartyUiMode.CHECK, -1, () => { - this.scene.ui.setMode(Mode.MYSTERY_ENCOUNTER, overrideSettings); + globalScene.ui.setMode(Mode.PARTY, PartyUiMode.CHECK, -1, () => { + globalScene.ui.setMode(Mode.MYSTERY_ENCOUNTER, overrideSettings); setTimeout(() => { this.setCursor(this.viewPartyIndex); this.unblockInput(); @@ -148,7 +148,7 @@ export default class MysteryEncounterUiHandler extends UiHandler { } else if (this.blockInput || (!this.optionsMeetsReqs[cursor] && (selected.optionMode === MysteryEncounterOptionMode.DISABLED_OR_DEFAULT || selected.optionMode === MysteryEncounterOptionMode.DISABLED_OR_SPECIAL))) { success = false; } else { - if ((this.scene.getCurrentPhase() as MysteryEncounterPhase).handleOptionSelect(selected, cursor)) { + if ((globalScene.getCurrentPhase() as MysteryEncounterPhase).handleOptionSelect(selected, cursor)) { success = true; } else { ui.playError(); @@ -315,7 +315,7 @@ export default class MysteryEncounterUiHandler extends UiHandler { this.viewPartyIndex = this.optionsContainer.getAll()?.length - 1; if (!this.cursorObj) { - this.cursorObj = this.scene.add.image(0, 0, "cursor"); + this.cursorObj = globalScene.add.image(0, 0, "cursor"); this.cursorContainer.add(this.cursorObj); } @@ -334,13 +334,13 @@ export default class MysteryEncounterUiHandler extends UiHandler { displayEncounterOptions(slideInDescription: boolean = true): void { this.getUi().clearText(); - const mysteryEncounter = this.scene.currentBattle.mysteryEncounter!; + const mysteryEncounter = globalScene.currentBattle.mysteryEncounter!; this.encounterOptions = this.overrideSettings?.overrideOptions ?? mysteryEncounter.options; this.optionsMeetsReqs = []; - const titleText: string | null = getEncounterText(this.scene, mysteryEncounter.dialogue.encounterOptionsDialogue?.title, TextStyle.TOOLTIP_TITLE); - const descriptionText: string | null = getEncounterText(this.scene, mysteryEncounter.dialogue.encounterOptionsDialogue?.description, TextStyle.TOOLTIP_CONTENT); - const queryText: string | null = getEncounterText(this.scene, mysteryEncounter.dialogue.encounterOptionsDialogue?.query, TextStyle.TOOLTIP_CONTENT); + const titleText: string | null = getEncounterText(mysteryEncounter.dialogue.encounterOptionsDialogue?.title, TextStyle.TOOLTIP_TITLE); + const descriptionText: string | null = getEncounterText(mysteryEncounter.dialogue.encounterOptionsDialogue?.description, TextStyle.TOOLTIP_CONTENT); + const queryText: string | null = getEncounterText(mysteryEncounter.dialogue.encounterOptionsDialogue?.query, TextStyle.TOOLTIP_CONTENT); // Clear options container (except cursor) this.optionsContainer.removeAll(true); @@ -353,25 +353,25 @@ export default class MysteryEncounterUiHandler extends UiHandler { switch (this.encounterOptions.length) { default: case 2: - optionText = addBBCodeTextObject(this.scene, i % 2 === 0 ? 0 : 100, 8, "-", TextStyle.WINDOW, { fontSize: "80px", lineSpacing: -8 }); + optionText = addBBCodeTextObject(i % 2 === 0 ? 0 : 100, 8, "-", TextStyle.WINDOW, { fontSize: "80px", lineSpacing: -8 }); break; case 3: - optionText = addBBCodeTextObject(this.scene, i % 2 === 0 ? 0 : 100, i < 2 ? 0 : 16, "-", TextStyle.WINDOW, { fontSize: "80px", lineSpacing: -8 }); + optionText = addBBCodeTextObject(i % 2 === 0 ? 0 : 100, i < 2 ? 0 : 16, "-", TextStyle.WINDOW, { fontSize: "80px", lineSpacing: -8 }); break; case 4: - optionText = addBBCodeTextObject(this.scene, i % 2 === 0 ? 0 : 100, i < 2 ? 0 : 16, "-", TextStyle.WINDOW, { fontSize: "80px", lineSpacing: -8 }); + optionText = addBBCodeTextObject(i % 2 === 0 ? 0 : 100, i < 2 ? 0 : 16, "-", TextStyle.WINDOW, { fontSize: "80px", lineSpacing: -8 }); break; } - this.optionsMeetsReqs.push(option.meetsRequirements(this.scene)); + this.optionsMeetsReqs.push(option.meetsRequirements()); const optionDialogue = option.dialogue!; const label = !this.optionsMeetsReqs[i] && optionDialogue.disabledButtonLabel ? optionDialogue.disabledButtonLabel : optionDialogue.buttonLabel; let text: string | null; if (option.hasRequirements() && this.optionsMeetsReqs[i] && (option.optionMode === MysteryEncounterOptionMode.DEFAULT_OR_SPECIAL || option.optionMode === MysteryEncounterOptionMode.DISABLED_OR_SPECIAL)) { // Options with special requirements that are met are automatically colored green - text = getEncounterText(this.scene, label, TextStyle.ME_OPTION_SPECIAL); + text = getEncounterText(label, TextStyle.ME_OPTION_SPECIAL); } else { - text = getEncounterText(this.scene, label, optionDialogue.style ? optionDialogue.style : TextStyle.ME_OPTION_DEFAULT); + text = getEncounterText(label, optionDialogue.style ? optionDialogue.style : TextStyle.ME_OPTION_DEFAULT); } if (text) { @@ -387,7 +387,7 @@ export default class MysteryEncounterUiHandler extends UiHandler { // Sets up the mask that hides the option text to give an illusion of scrolling const nonScrollWidth = 90; - const optionTextMaskRect = this.scene.make.graphics({}); + const optionTextMaskRect = globalScene.make.graphics({}); optionTextMaskRect.setScale(6); optionTextMaskRect.fillStyle(0xFFFFFF); optionTextMaskRect.beginPath(); @@ -406,7 +406,7 @@ export default class MysteryEncounterUiHandler extends UiHandler { // Animates the option text scrolling sideways if (optionTextWidth > nonScrollWidth) { - this.optionScrollTweens[i] = this.scene.tweens.add({ + this.optionScrollTweens[i] = globalScene.tweens.add({ targets: optionText, delay: Utils.fixedInt(2000), loop: -1, @@ -420,13 +420,13 @@ export default class MysteryEncounterUiHandler extends UiHandler { } // View Party Button - const viewPartyText = addBBCodeTextObject(this.scene, (this.scene.game.canvas.width) / 6, -24, getBBCodeFrag(i18next.t("mysteryEncounterMessages:view_party_button"), TextStyle.PARTY), TextStyle.PARTY); + const viewPartyText = addBBCodeTextObject((globalScene.game.canvas.width) / 6, -24, getBBCodeFrag(i18next.t("mysteryEncounterMessages:view_party_button"), TextStyle.PARTY), TextStyle.PARTY); this.optionsContainer.add(viewPartyText); viewPartyText.x -= (viewPartyText.displayWidth + 16); this.viewPartyXPosition = viewPartyText.x - 10; // Description Window - const titleTextObject = addBBCodeTextObject(this.scene, 0, 0, titleText ?? "", TextStyle.TOOLTIP_TITLE, { wordWrap: { width: 750 }, align: "center", lineSpacing: -8 }); + const titleTextObject = addBBCodeTextObject(0, 0, titleText ?? "", TextStyle.TOOLTIP_TITLE, { wordWrap: { width: 750 }, align: "center", lineSpacing: -8 }); this.descriptionContainer.add(titleTextObject); titleTextObject.setPosition(72 - titleTextObject.displayWidth / 2, 5.5); @@ -438,10 +438,10 @@ export default class MysteryEncounterUiHandler extends UiHandler { const ballType = getPokeballAtlasKey(index); this.rarityBall.setTexture("pb", ballType); - const descriptionTextObject = addBBCodeTextObject(this.scene, 6, 25, descriptionText ?? "", TextStyle.TOOLTIP_CONTENT, { wordWrap: { width: 830 }}); + const descriptionTextObject = addBBCodeTextObject(6, 25, descriptionText ?? "", TextStyle.TOOLTIP_CONTENT, { wordWrap: { width: 830 }}); // Sets up the mask that hides the description text to give an illusion of scrolling - const descriptionTextMaskRect = this.scene.make.graphics({}); + const descriptionTextMaskRect = globalScene.make.graphics({}); descriptionTextMaskRect.setScale(6); descriptionTextMaskRect.fillStyle(0xFFFFFF); descriptionTextMaskRect.beginPath(); @@ -460,7 +460,7 @@ export default class MysteryEncounterUiHandler extends UiHandler { // Animates the description text moving upwards if (descriptionLineCount > 6) { - this.descriptionScrollTween = this.scene.tweens.add({ + this.descriptionScrollTween = globalScene.tweens.add({ targets: descriptionTextObject, delay: Utils.fixedInt(2000), loop: -1, @@ -472,14 +472,14 @@ export default class MysteryEncounterUiHandler extends UiHandler { this.descriptionContainer.add(descriptionTextObject); - const queryTextObject = addBBCodeTextObject(this.scene, 0, 0, queryText ?? "", TextStyle.TOOLTIP_CONTENT, { wordWrap: { width: 830 }}); + const queryTextObject = addBBCodeTextObject(0, 0, queryText ?? "", TextStyle.TOOLTIP_CONTENT, { wordWrap: { width: 830 }}); this.descriptionContainer.add(queryTextObject); queryTextObject.setPosition(75 - queryTextObject.displayWidth / 2, 90); // Slide in description container if (slideInDescription) { this.descriptionContainer.x -= 150; - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this.descriptionContainer, x: "+=150", ease: "Sine.easeInOut", @@ -511,9 +511,9 @@ export default class MysteryEncounterUiHandler extends UiHandler { const cursorOption = this.encounterOptions[cursor]; const optionDialogue = cursorOption.dialogue!; if (!this.optionsMeetsReqs[cursor] && (cursorOption.optionMode === MysteryEncounterOptionMode.DISABLED_OR_DEFAULT || cursorOption.optionMode === MysteryEncounterOptionMode.DISABLED_OR_SPECIAL) && optionDialogue.disabledButtonTooltip) { - text = getEncounterText(this.scene, optionDialogue.disabledButtonTooltip, TextStyle.TOOLTIP_CONTENT); + text = getEncounterText(optionDialogue.disabledButtonTooltip, TextStyle.TOOLTIP_CONTENT); } else { - text = getEncounterText(this.scene, optionDialogue.buttonTooltip, TextStyle.TOOLTIP_CONTENT); + text = getEncounterText(optionDialogue.buttonTooltip, TextStyle.TOOLTIP_CONTENT); } // Auto-color options green/blue for good/bad by looking for (+)/(-) @@ -524,11 +524,11 @@ export default class MysteryEncounterUiHandler extends UiHandler { } if (text) { - const tooltipTextObject = addBBCodeTextObject(this.scene, 6, 7, text, TextStyle.TOOLTIP_CONTENT, { wordWrap: { width: 600 }, fontSize: "72px" }); + const tooltipTextObject = addBBCodeTextObject(6, 7, text, TextStyle.TOOLTIP_CONTENT, { wordWrap: { width: 600 }, fontSize: "72px" }); this.tooltipContainer.add(tooltipTextObject); // Sets up the mask that hides the description text to give an illusion of scrolling - const tooltipTextMaskRect = this.scene.make.graphics({}); + const tooltipTextMaskRect = globalScene.make.graphics({}); tooltipTextMaskRect.setScale(6); tooltipTextMaskRect.fillStyle(0xFFFFFF); tooltipTextMaskRect.beginPath(); @@ -546,7 +546,7 @@ export default class MysteryEncounterUiHandler extends UiHandler { // Animates the tooltip text moving upwards if (tooltipLineCount > 3) { - this.tooltipScrollTween = this.scene.tweens.add({ + this.tooltipScrollTween = globalScene.tweens.add({ targets: tooltipTextObject, delay: Utils.fixedInt(1200), loop: -1, @@ -593,25 +593,25 @@ export default class MysteryEncounterUiHandler extends UiHandler { private showHideDexProgress(show: boolean) { if (show && !this.showDexProgress) { this.showDexProgress = true; - this.scene.tweens.killTweensOf(this.dexProgressContainer); - this.scene.tweens.add({ + globalScene.tweens.killTweensOf(this.dexProgressContainer); + globalScene.tweens.add({ targets: this.dexProgressContainer, y: -63, ease: "Sine.easeInOut", duration: 750, onComplete: () => { this.dexProgressContainer.on("pointerover", () => { - (this.scene as BattleScene).ui.showTooltip("", i18next.t("mysteryEncounterMessages:affects_pokedex"), true); + globalScene.ui.showTooltip("", i18next.t("mysteryEncounterMessages:affects_pokedex"), true); }); this.dexProgressContainer.on("pointerout", () => { - (this.scene as BattleScene).ui.hideTooltip(); + globalScene.ui.hideTooltip(); }); } }); } else if (!show && this.showDexProgress) { this.showDexProgress = false; - this.scene.tweens.killTweensOf(this.dexProgressContainer); - this.scene.tweens.add({ + globalScene.tweens.killTweensOf(this.dexProgressContainer); + globalScene.tweens.add({ targets: this.dexProgressContainer, y: -43, ease: "Sine.easeInOut", diff --git a/src/ui/party-exp-bar.ts b/src/ui/party-exp-bar.ts index d2521225375..93e4117157a 100644 --- a/src/ui/party-exp-bar.ts +++ b/src/ui/party-exp-bar.ts @@ -1,5 +1,5 @@ -import BattleScene from "../battle-scene"; -import Pokemon from "../field/pokemon"; +import { globalScene } from "#app/global-scene"; +import type Pokemon from "../field/pokemon"; import { TextStyle, addTextObject } from "./text"; export default class PartyExpBar extends Phaser.GameObjects.Container { @@ -11,17 +11,17 @@ export default class PartyExpBar extends Phaser.GameObjects.Container { public shown: boolean; - constructor(scene: BattleScene) { - super(scene, (scene.game.canvas.width / 6), -((scene.game.canvas.height) / 6) + 15); + constructor() { + super(globalScene, (globalScene.game.canvas.width / 6), -((globalScene.game.canvas.height) / 6) + 15); } setup(): void { - this.bg = this.scene.add.nineslice(0, 0, "party_exp_bar", undefined, 8, 18, 21, 5, 6, 4); + this.bg = globalScene.add.nineslice(0, 0, "party_exp_bar", undefined, 8, 18, 21, 5, 6, 4); this.bg.setOrigin(0, 0); this.add(this.bg); - this.expText = addTextObject(this.scene, 22, 4, "", TextStyle.BATTLE_INFO); + this.expText = addTextObject(22, 4, "", TextStyle.BATTLE_INFO); this.expText.setOrigin(0, 0); this.add(this.expText); @@ -35,7 +35,7 @@ export default class PartyExpBar extends Phaser.GameObjects.Container { return resolve(); } - this.pokemonIcon = (this.scene as BattleScene).addPokemonIcon(pokemon, -8, 15, 0, 0.5); + this.pokemonIcon = globalScene.addPokemonIcon(pokemon, -8, 15, 0, 0.5); this.pokemonIcon.setScale(0.5); this.add(this.pokemonIcon); @@ -54,16 +54,16 @@ export default class PartyExpBar extends Phaser.GameObjects.Container { this.bg.width = this.expText.displayWidth + 28; - (this.scene as BattleScene).fieldUI.bringToTop(this); + globalScene.fieldUI.bringToTop(this); if (this.tween) { this.tween.stop(); } - this.tween = this.scene.tweens.add({ + this.tween = globalScene.tweens.add({ targets: this, - x: (this.scene.game.canvas.width / 6) - (this.bg.width - 5), - duration: 500 / Math.pow(2, pokemon.scene.expGainsSpeed), + x: (globalScene.game.canvas.width / 6) - (this.bg.width - 5), + duration: 500 / Math.pow(2, globalScene.expGainsSpeed), ease: "Sine.easeOut", onComplete: () => { this.tween = null; @@ -86,9 +86,9 @@ export default class PartyExpBar extends Phaser.GameObjects.Container { this.tween.stop(); } - this.tween = this.scene.tweens.add({ + this.tween = globalScene.tweens.add({ targets: this, - x: (this.scene.game.canvas.width / 6), + x: (globalScene.game.canvas.width / 6), duration: 500, ease: "Sine.easeIn", onComplete: () => { diff --git a/src/ui/party-ui-handler.ts b/src/ui/party-ui-handler.ts index 0d20753f069..4a7716f7e62 100644 --- a/src/ui/party-ui-handler.ts +++ b/src/ui/party-ui-handler.ts @@ -1,5 +1,6 @@ -import BattleScene from "#app/battle-scene"; -import Pokemon, { MoveResult, PlayerPokemon, PokemonMove } from "#app/field/pokemon"; +import type { PlayerPokemon, PokemonMove } from "#app/field/pokemon"; +import type Pokemon from "#app/field/pokemon"; +import { MoveResult } from "#app/field/pokemon"; import { addBBCodeTextObject, addTextObject, getTextColor, TextStyle } from "#app/ui/text"; import { Command } from "#app/ui/command-ui-handler"; import MessageUiHandler from "#app/ui/message-ui-handler"; @@ -18,12 +19,13 @@ import { Button } from "#enums/buttons"; import { applyChallenges, ChallengeType } from "#app/data/challenge"; import MoveInfoOverlay from "#app/ui/move-info-overlay"; import i18next from "i18next"; -import BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext"; +import type BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import { getPokemonNameWithAffix } from "#app/messages"; -import { CommandPhase } from "#app/phases/command-phase"; +import type { CommandPhase } from "#app/phases/command-phase"; import { SelectModifierPhase } from "#app/phases/select-modifier-phase"; +import { globalScene } from "#app/global-scene"; const defaultMessage = i18next.t("partyUiHandler:choosePokemon"); @@ -197,7 +199,7 @@ export default class PartyUiHandler extends MessageUiHandler { */ private FilterChallengeLegal = (pokemon: PlayerPokemon) => { const challengeAllowed = new Utils.BooleanHolder(true); - applyChallenges(this.scene.gameMode, ChallengeType.POKEMON_IN_BATTLE, pokemon, challengeAllowed); + applyChallenges(globalScene.gameMode, ChallengeType.POKEMON_IN_BATTLE, pokemon, challengeAllowed); if (!challengeAllowed.value) { return i18next.t("partyUiHandler:cantBeUsed", { pokemonName: getPokemonNameWithAffix(pokemon) }); } @@ -207,8 +209,8 @@ export default class PartyUiHandler extends MessageUiHandler { private static FilterAllMoves = (_pokemonMove: PokemonMove) => null; public static FilterItemMaxStacks = (pokemon: PlayerPokemon, modifier: PokemonHeldItemModifier) => { - const matchingModifier = pokemon.scene.findModifier(m => m instanceof PokemonHeldItemModifier && m.pokemonId === pokemon.id && m.matchType(modifier)) as PokemonHeldItemModifier; - if (matchingModifier && matchingModifier.stackCount === matchingModifier.getMaxStackCount(pokemon.scene)) { + const matchingModifier = globalScene.findModifier(m => m instanceof PokemonHeldItemModifier && m.pokemonId === pokemon.id && m.matchType(modifier)) as PokemonHeldItemModifier; + if (matchingModifier && matchingModifier.stackCount === matchingModifier.getMaxStackCount()) { return i18next.t("partyUiHandler:tooManyItems", { pokemonName: getPokemonNameWithAffix(pokemon) }); } return null; @@ -218,44 +220,44 @@ export default class PartyUiHandler extends MessageUiHandler { private localizedOptions = [ PartyOption.SEND_OUT, PartyOption.SUMMARY, PartyOption.CANCEL, PartyOption.APPLY, PartyOption.RELEASE, PartyOption.TEACH, PartyOption.SPLICE, PartyOption.UNSPLICE, PartyOption.REVIVE, PartyOption.TRANSFER, PartyOption.UNPAUSE_EVOLUTION, PartyOption.PASS_BATON, PartyOption.RENAME, PartyOption.SELECT ]; - constructor(scene: BattleScene) { - super(scene, Mode.PARTY); + constructor() { + super(Mode.PARTY); } setup() { const ui = this.getUi(); - const partyContainer = this.scene.add.container(0, 0); + const partyContainer = globalScene.add.container(0, 0); partyContainer.setName("party"); partyContainer.setVisible(false); ui.add(partyContainer); this.partyContainer = partyContainer; - this.partyBg = this.scene.add.image(0, 0, "party_bg"); + this.partyBg = globalScene.add.image(0, 0, "party_bg"); this.partyBg.setName("img-party-bg"); partyContainer.add(this.partyBg); this.partyBg.setOrigin(0, 1); - const partySlotsContainer = this.scene.add.container(0, 0); + const partySlotsContainer = globalScene.add.container(0, 0); partySlotsContainer.setName("party-slots"); partyContainer.add(partySlotsContainer); this.partySlotsContainer = partySlotsContainer; - const partyMessageBoxContainer = this.scene.add.container(0, -32); + const partyMessageBoxContainer = globalScene.add.container(0, -32); partyMessageBoxContainer.setName("party-msg-box"); partyContainer.add(partyMessageBoxContainer); - const partyMessageBox = addWindow(this.scene, 1, 31, 262, 30); + const partyMessageBox = addWindow(1, 31, 262, 30); partyMessageBox.setName("window-party-msg-box"); partyMessageBox.setOrigin(0, 1); partyMessageBoxContainer.add(partyMessageBox); this.partyMessageBox = partyMessageBox; - const partyMessageText = addTextObject(this.scene, 10, 8, defaultMessage, TextStyle.WINDOW, { maxLines: 2 }); + const partyMessageText = addTextObject(10, 8, defaultMessage, TextStyle.WINDOW, { maxLines: 2 }); partyMessageText.setName("text-party-msg"); partyMessageText.setOrigin(0, 0); @@ -263,25 +265,25 @@ export default class PartyUiHandler extends MessageUiHandler { this.message = partyMessageText; - const partyCancelButton = new PartyCancelButton(this.scene, 291, -16); + const partyCancelButton = new PartyCancelButton(291, -16); partyContainer.add(partyCancelButton); this.partyCancelButton = partyCancelButton; - this.optionsContainer = this.scene.add.container((this.scene.game.canvas.width / 6) - 1, -1); + this.optionsContainer = globalScene.add.container((globalScene.game.canvas.width / 6) - 1, -1); partyContainer.add(this.optionsContainer); this.iconAnimHandler = new PokemonIconAnimHandler(); - this.iconAnimHandler.setup(this.scene); + this.iconAnimHandler.setup(); // prepare move overlay. in case it appears to be too big, set the overlayScale to .5 const overlayScale = 1; - this.moveInfoOverlay = new MoveInfoOverlay(this.scene, { + this.moveInfoOverlay = new MoveInfoOverlay({ scale: overlayScale, top: true, x: 1, - y: -MoveInfoOverlay.getHeight(overlayScale) - 1, //this.scene.game.canvas.height / 6 - MoveInfoOverlay.getHeight(overlayScale) - 29, - width: this.scene.game.canvas.width / 12 - 30, + y: -MoveInfoOverlay.getHeight(overlayScale) - 1, + width: globalScene.game.canvas.width / 12 - 30, }); ui.add(this.moveInfoOverlay); @@ -315,7 +317,7 @@ export default class PartyUiHandler extends MessageUiHandler { this.showMovePp = args.length > 6 && args[6]; this.partyContainer.setVisible(true); - this.partyBg.setTexture(`party_bg${this.scene.currentBattle.double ? "_double" : ""}`); + this.partyBg.setTexture(`party_bg${globalScene.currentBattle.double ? "_double" : ""}`); this.populatePartySlots(); this.setCursor(0); @@ -346,22 +348,22 @@ export default class PartyUiHandler extends MessageUiHandler { if (this.optionsMode) { const option = this.options[this.optionsCursor]; if (button === Button.ACTION) { - const pokemon = this.scene.getPlayerParty()[this.cursor]; + const pokemon = globalScene.getPlayerParty()[this.cursor]; if (this.partyUiMode === PartyUiMode.MODIFIER_TRANSFER && !this.transferMode && option !== PartyOption.CANCEL) { this.startTransfer(); let ableToTransfer: string; - for (let p = 0; p < this.scene.getPlayerParty().length; p++) { // this fore look goes through each of the party pokemon - const newPokemon = this.scene.getPlayerParty()[p]; + for (let p = 0; p < globalScene.getPlayerParty().length; p++) { // this for look goes through each of the party pokemon + const newPokemon = globalScene.getPlayerParty()[p]; // this next line gets all of the transferable items from pokemon [p]; it does this by getting all the held modifiers that are transferable and checking to see if they belong to pokemon [p] const getTransferrableItemsFromPokemon = (newPokemon: PlayerPokemon) => - this.scene.findModifiers(m => m instanceof PokemonHeldItemModifier && (m as PokemonHeldItemModifier).isTransferable && (m as PokemonHeldItemModifier).pokemonId === newPokemon.id) as PokemonHeldItemModifier[]; + globalScene.findModifiers(m => m instanceof PokemonHeldItemModifier && (m as PokemonHeldItemModifier).isTransferable && (m as PokemonHeldItemModifier).pokemonId === newPokemon.id) as PokemonHeldItemModifier[]; // this next bit checks to see if the the selected item from the original transfer pokemon exists on the new pokemon [p]; this returns undefined if the new pokemon doesn't have the item at all, otherwise it returns the pokemonHeldItemModifier for that item - const matchingModifier = newPokemon.scene.findModifier(m => m instanceof PokemonHeldItemModifier && m.pokemonId === newPokemon.id && m.matchType(getTransferrableItemsFromPokemon(pokemon)[this.transferOptionCursor])) as PokemonHeldItemModifier; + const matchingModifier = globalScene.findModifier(m => m instanceof PokemonHeldItemModifier && m.pokemonId === newPokemon.id && m.matchType(getTransferrableItemsFromPokemon(pokemon)[this.transferOptionCursor])) as PokemonHeldItemModifier; const partySlot = this.partySlots.filter(m => m.getPokemon() === newPokemon)[0]; // this gets pokemon [p] for us if (p !== this.transferCursor) { // this skips adding the able/not able labels on the pokemon doing the transfer if (matchingModifier) { // if matchingModifier exists then the item exists on the new pokemon - if (matchingModifier.getMaxStackCount(this.scene) === matchingModifier.stackCount) { // checks to see if the stack of items is at max stack; if so, set the description label to "Not able" + if (matchingModifier.getMaxStackCount() === matchingModifier.stackCount) { // checks to see if the stack of items is at max stack; if so, set the description label to "Not able" ableToTransfer = i18next.t("partyUiHandler:notAble"); } else { // if the pokemon isn't at max stack, make the label "Able" ableToTransfer = i18next.t("partyUiHandler:able"); @@ -399,7 +401,7 @@ export default class PartyUiHandler extends MessageUiHandler { || (option === PartyOption.RELEASE && this.partyUiMode === PartyUiMode.RELEASE)) { let filterResult: string | null; const getTransferrableItemsFromPokemon = (pokemon: PlayerPokemon) => - this.scene.findModifiers(m => m instanceof PokemonHeldItemModifier && m.isTransferable && m.pokemonId === pokemon.id) as PokemonHeldItemModifier[]; + globalScene.findModifiers(m => m instanceof PokemonHeldItemModifier && m.isTransferable && m.pokemonId === pokemon.id) as PokemonHeldItemModifier[]; if (option !== PartyOption.TRANSFER && option !== PartyOption.SPLICE) { filterResult = (this.selectFilter as PokemonSelectFilter)(pokemon); if (filterResult === null && (option === PartyOption.SEND_OUT || option === PartyOption.PASS_BATON)) { @@ -409,7 +411,7 @@ export default class PartyUiHandler extends MessageUiHandler { filterResult = this.moveSelectFilter(pokemon.moveset[this.optionsCursor]!); // TODO: is this bang correct? } } else { - filterResult = (this.selectFilter as PokemonModifierTransferSelectFilter)(pokemon, getTransferrableItemsFromPokemon(this.scene.getPlayerParty()[this.transferCursor])[this.transferOptionCursor]); + filterResult = (this.selectFilter as PokemonModifierTransferSelectFilter)(pokemon, getTransferrableItemsFromPokemon(globalScene.getPlayerParty()[this.transferCursor])[this.transferOptionCursor]); } if (filterResult === null) { if (this.partyUiMode !== PartyUiMode.SPLICE) { @@ -419,7 +421,7 @@ export default class PartyUiHandler extends MessageUiHandler { if (option === PartyOption.TRANSFER) { if (this.transferCursor !== this.cursor) { if (this.transferAll) { - getTransferrableItemsFromPokemon(this.scene.getPlayerParty()[this.transferCursor]).forEach((_, i) => (this.selectCallback as PartyModifierTransferSelectCallback)(this.transferCursor, i, this.transferQuantitiesMax[i], this.cursor)); + getTransferrableItemsFromPokemon(globalScene.getPlayerParty()[this.transferCursor]).forEach((_, i) => (this.selectCallback as PartyModifierTransferSelectCallback)(this.transferCursor, i, this.transferQuantitiesMax[i], this.cursor)); } else { (this.selectCallback as PartyModifierTransferSelectCallback)(this.transferCursor, this.transferOptionCursor, this.transferQuantities[this.transferOptionCursor], this.cursor); } @@ -441,15 +443,15 @@ export default class PartyUiHandler extends MessageUiHandler { selectCallback(this.cursor, option); } } else { - if (option >= PartyOption.FORM_CHANGE_ITEM && this.scene.getCurrentPhase() instanceof SelectModifierPhase) { + if (option >= PartyOption.FORM_CHANGE_ITEM && globalScene.getCurrentPhase() instanceof SelectModifierPhase) { if (this.partyUiMode === PartyUiMode.CHECK) { const formChangeItemModifiers = this.getFormChangeItemsModifiers(pokemon); const modifier = formChangeItemModifiers[option - PartyOption.FORM_CHANGE_ITEM]; modifier.active = !modifier.active; - this.scene.triggerPokemonFormChange(pokemon, SpeciesFormChangeItemTrigger, false, true); + globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeItemTrigger, false, true); } } else if (this.cursor) { - (this.scene.getCurrentPhase() as CommandPhase).handleCommand(Command.POKEMON, this.cursor, option === PartyOption.PASS_BATON); + (globalScene.getCurrentPhase() as CommandPhase).handleCommand(Command.POKEMON, this.cursor, option === PartyOption.PASS_BATON); } } if (this.partyUiMode !== PartyUiMode.MODIFIER && this.partyUiMode !== PartyUiMode.TM_MODIFIER && this.partyUiMode !== PartyUiMode.MOVE_MODIFIER) { @@ -492,7 +494,7 @@ export default class PartyUiHandler extends MessageUiHandler { } else if (option === PartyOption.RELEASE) { this.clearOptions(); ui.playSelect(); - if (this.cursor >= this.scene.currentBattle.getBattlerCount() || !pokemon.isAllowedInBattle()) { + if (this.cursor >= globalScene.currentBattle.getBattlerCount() || !pokemon.isAllowedInBattle()) { this.blockInput = true; this.showText(i18next.t("partyUiHandler:releaseConfirmation", { pokemonName: getPokemonNameWithAffix(pokemon) }), null, () => { this.blockInput = false; @@ -580,7 +582,7 @@ export default class PartyUiHandler extends MessageUiHandler { // show move description if (this.partyUiMode === PartyUiMode.REMEMBER_MOVE_MODIFIER) { const option = this.options[this.optionsCursor]; - const pokemon = this.scene.getPlayerParty()[this.cursor]; + const pokemon = globalScene.getPlayerParty()[this.cursor]; const move = allMoves[pokemon.getLearnableLevelMoves()[option]]; if (move) { this.moveInfoOverlay.show(move); @@ -595,8 +597,8 @@ export default class PartyUiHandler extends MessageUiHandler { if (this.cursor < 6) { if (this.partyUiMode === PartyUiMode.MODIFIER_TRANSFER && !this.transferMode) { /** Initialize item quantities for the selected Pokemon */ - const itemModifiers = this.scene.findModifiers(m => m instanceof PokemonHeldItemModifier - && m.isTransferable && m.pokemonId === this.scene.getPlayerParty()[this.cursor].id) as PokemonHeldItemModifier[]; + const itemModifiers = globalScene.findModifiers(m => m instanceof PokemonHeldItemModifier + && m.isTransferable && m.pokemonId === globalScene.getPlayerParty()[this.cursor].id) as PokemonHeldItemModifier[]; this.transferQuantities = itemModifiers.map(item => item.getStackCount()); this.transferQuantitiesMax = itemModifiers.map(item => item.getStackCount()); } @@ -628,7 +630,7 @@ export default class PartyUiHandler extends MessageUiHandler { } const slotCount = this.partySlots.length; - const battlerCount = this.scene.currentBattle.getBattlerCount(); + const battlerCount = globalScene.currentBattle.getBattlerCount(); switch (button) { case Button.UP: @@ -664,7 +666,7 @@ export default class PartyUiHandler extends MessageUiHandler { } populatePartySlots() { - const party = this.scene.getPlayerParty(); + const party = globalScene.getPlayerParty(); if (this.cursor < 6 && this.cursor >= party.length) { this.cursor = party.length - 1; @@ -677,8 +679,8 @@ export default class PartyUiHandler extends MessageUiHandler { for (const p in party) { const slotIndex = parseInt(p); - const partySlot = new PartySlot(this.scene, slotIndex, party[p], this.iconAnimHandler, this.partyUiMode, this.tmMoveId); - this.scene.add.existing(partySlot); + const partySlot = new PartySlot(slotIndex, party[p], this.iconAnimHandler, this.partyUiMode, this.tmMoveId); + globalScene.add.existing(partySlot); this.partySlotsContainer.add(partySlot); this.partySlots.push(partySlot); if (this.cursor === slotIndex) { @@ -721,7 +723,7 @@ export default class PartyUiHandler extends MessageUiHandler { this.optionsCursor = cursor; } if (!this.optionsCursorObj) { - this.optionsCursorObj = this.scene.add.image(0, 0, "cursor"); + this.optionsCursorObj = globalScene.add.image(0, 0, "cursor"); this.optionsCursorObj.setOrigin(0, 0); this.optionsContainer.add(this.optionsCursorObj); } @@ -803,7 +805,7 @@ export default class PartyUiHandler extends MessageUiHandler { } updateOptions(): void { - const pokemon = this.scene.getPlayerParty()[this.cursor]; + const pokemon = globalScene.getPlayerParty()[this.cursor]; const learnableLevelMoves = this.partyUiMode === PartyUiMode.REMEMBER_MOVE_MODIFIER ? pokemon.getLearnableLevelMoves() @@ -815,7 +817,7 @@ export default class PartyUiHandler extends MessageUiHandler { } const itemModifiers = this.partyUiMode === PartyUiMode.MODIFIER_TRANSFER - ? this.scene.findModifiers(m => m instanceof PokemonHeldItemModifier + ? globalScene.findModifiers(m => m instanceof PokemonHeldItemModifier && m.isTransferable && m.pokemonId === pokemon.id) as PokemonHeldItemModifier[] : []; @@ -832,13 +834,13 @@ export default class PartyUiHandler extends MessageUiHandler { case PartyUiMode.SWITCH: case PartyUiMode.FAINT_SWITCH: case PartyUiMode.POST_BATTLE_SWITCH: - if (this.cursor >= this.scene.currentBattle.getBattlerCount()) { + if (this.cursor >= globalScene.currentBattle.getBattlerCount()) { const allowBatonModifierSwitch = this.partyUiMode !== PartyUiMode.FAINT_SWITCH - && this.scene.findModifier(m => m instanceof SwitchEffectTransferModifier - && (m as SwitchEffectTransferModifier).pokemonId === this.scene.getPlayerField()[this.fieldIndex].id); + && globalScene.findModifier(m => m instanceof SwitchEffectTransferModifier + && (m as SwitchEffectTransferModifier).pokemonId === globalScene.getPlayerField()[this.fieldIndex].id); - const moveHistory = this.scene.getPlayerField()[this.fieldIndex].getMoveHistory(); + const moveHistory = globalScene.getPlayerField()[this.fieldIndex].getMoveHistory(); const isBatonPassMove = this.partyUiMode === PartyUiMode.FAINT_SWITCH && moveHistory.length && allMoves[moveHistory[moveHistory.length - 1].move].getAttrs(ForceSwitchOutAttr)[0]?.isBatonPass() && moveHistory[moveHistory.length - 1].result === MoveResult.SUCCESS; // isBatonPassMove and allowBatonModifierSwitch shouldn't ever be true @@ -877,7 +879,7 @@ export default class PartyUiHandler extends MessageUiHandler { this.options.push(PartyOption.RELEASE); break; case PartyUiMode.CHECK: - if (this.scene.getCurrentPhase() instanceof SelectModifierPhase) { + if (globalScene.getCurrentPhase() instanceof SelectModifierPhase) { formChangeItemModifiers = this.getFormChangeItemsModifiers(pokemon); for (let i = 0; i < formChangeItemModifiers.length; i++) { this.options.push(PartyOption.FORM_CHANGE_ITEM + i); @@ -941,7 +943,7 @@ export default class PartyUiHandler extends MessageUiHandler { this.options.push(PartyOption.CANCEL); - this.optionsBg = addWindow(this.scene, 0, 0, 0, 16 * this.options.length + 13); + this.optionsBg = addWindow(0, 0, 0, 16 * this.options.length + 13); this.optionsBg.setOrigin(1, 1); this.optionsContainer.add(this.optionsBg); @@ -1002,7 +1004,7 @@ export default class PartyUiHandler extends MessageUiHandler { } const yCoord = -6 - 16 * o; - const optionText = addBBCodeTextObject(this.scene, 0, yCoord - 16, optionName, TextStyle.WINDOW, { maxLines: 1 }); + const optionText = addBBCodeTextObject(0, yCoord - 16, optionName, TextStyle.WINDOW, { maxLines: 1 }); if (altText) { optionText.setColor("#40c8f8"); optionText.setShadowColor("#006090"); @@ -1059,13 +1061,13 @@ export default class PartyUiHandler extends MessageUiHandler { } doRelease(slotIndex: integer): void { - this.showText(this.getReleaseMessage(getPokemonNameWithAffix(this.scene.getPlayerParty()[slotIndex])), null, () => { + this.showText(this.getReleaseMessage(getPokemonNameWithAffix(globalScene.getPlayerParty()[slotIndex])), null, () => { this.clearPartySlots(); - this.scene.removePartyMemberModifiers(slotIndex); - const releasedPokemon = this.scene.getPlayerParty().splice(slotIndex, 1)[0]; + globalScene.removePartyMemberModifiers(slotIndex); + const releasedPokemon = globalScene.getPlayerParty().splice(slotIndex, 1)[0]; releasedPokemon.destroy(); this.populatePartySlots(); - if (this.cursor >= this.scene.getPlayerParty().length) { + if (this.cursor >= globalScene.getPlayerParty().length) { this.setCursor(this.cursor - 1); } if (this.partyUiMode === PartyUiMode.RELEASE) { @@ -1103,7 +1105,7 @@ export default class PartyUiHandler extends MessageUiHandler { } getFormChangeItemsModifiers(pokemon: Pokemon) { - let formChangeItemModifiers = this.scene.findModifiers(m => m instanceof PokemonFormChangeItemModifier && m.pokemonId === pokemon.id) as PokemonFormChangeItemModifier[]; + let formChangeItemModifiers = globalScene.findModifiers(m => m instanceof PokemonFormChangeItemModifier && m.pokemonId === pokemon.id) as PokemonFormChangeItemModifier[]; const ultraNecrozmaModifiers = formChangeItemModifiers.filter(m => m.active && m.formChangeItem === FormChangeItem.ULTRANECROZIUM_Z); if (ultraNecrozmaModifiers.length > 0) { // ULTRANECROZIUM_Z is active and deactivating it should be the only option @@ -1177,10 +1179,10 @@ class PartySlot extends Phaser.GameObjects.Container { private pokemonIcon: Phaser.GameObjects.Container; private iconAnimHandler: PokemonIconAnimHandler; - constructor(scene: BattleScene, slotIndex: integer, pokemon: PlayerPokemon, iconAnimHandler: PokemonIconAnimHandler, partyUiMode: PartyUiMode, tmMoveId: Moves) { - super(scene, slotIndex >= scene.currentBattle.getBattlerCount() ? 230.5 : 64, - slotIndex >= scene.currentBattle.getBattlerCount() ? -184 + (scene.currentBattle.double ? -40 : 0) - + (28 + (scene.currentBattle.double ? 8 : 0)) * slotIndex : -124 + (scene.currentBattle.double ? -8 : 0) + slotIndex * 64); + constructor(slotIndex: integer, pokemon: PlayerPokemon, iconAnimHandler: PokemonIconAnimHandler, partyUiMode: PartyUiMode, tmMoveId: Moves) { + super(globalScene, slotIndex >= globalScene.currentBattle.getBattlerCount() ? 230.5 : 64, + slotIndex >= globalScene.currentBattle.getBattlerCount() ? -184 + (globalScene.currentBattle.double ? -40 : 0) + + (28 + (globalScene.currentBattle.double ? 8 : 0)) * slotIndex : -124 + (globalScene.currentBattle.double ? -8 : 0) + slotIndex * 64); this.slotIndex = slotIndex; this.pokemon = pokemon; @@ -1194,33 +1196,33 @@ class PartySlot extends Phaser.GameObjects.Container { } setup(partyUiMode: PartyUiMode, tmMoveId: Moves) { - const battlerCount = (this.scene as BattleScene).currentBattle.getBattlerCount(); + const battlerCount = globalScene.currentBattle.getBattlerCount(); const slotKey = `party_slot${this.slotIndex >= battlerCount ? "" : "_main"}`; - const slotBg = this.scene.add.sprite(0, 0, slotKey, `${slotKey}${this.pokemon.hp ? "" : "_fnt"}`); + const slotBg = globalScene.add.sprite(0, 0, slotKey, `${slotKey}${this.pokemon.hp ? "" : "_fnt"}`); this.slotBg = slotBg; this.add(slotBg); - const slotPb = this.scene.add.sprite(this.slotIndex >= battlerCount ? -85.5 : -51, this.slotIndex >= battlerCount ? 0 : -20.5, "party_pb"); + const slotPb = globalScene.add.sprite(this.slotIndex >= battlerCount ? -85.5 : -51, this.slotIndex >= battlerCount ? 0 : -20.5, "party_pb"); this.slotPb = slotPb; this.add(slotPb); - this.pokemonIcon = (this.scene as BattleScene).addPokemonIcon(this.pokemon, slotPb.x, slotPb.y, 0.5, 0.5, true); + this.pokemonIcon = globalScene.addPokemonIcon(this.pokemon, slotPb.x, slotPb.y, 0.5, 0.5, true); this.add(this.pokemonIcon); this.iconAnimHandler.addOrUpdate(this.pokemonIcon, PokemonIconAnimMode.PASSIVE); - const slotInfoContainer = this.scene.add.container(0, 0); + const slotInfoContainer = globalScene.add.container(0, 0); this.add(slotInfoContainer); let displayName = this.pokemon.getNameToRender(); let nameTextWidth: number; - const nameSizeTest = addTextObject(this.scene, 0, 0, displayName, TextStyle.PARTY); + const nameSizeTest = addTextObject(0, 0, displayName, TextStyle.PARTY); nameTextWidth = nameSizeTest.displayWidth; while (nameTextWidth > (this.slotIndex >= battlerCount ? 52 : (76 - (this.pokemon.fusionSpecies ? 8 : 0)))) { @@ -1231,15 +1233,15 @@ class PartySlot extends Phaser.GameObjects.Container { nameSizeTest.destroy(); - this.slotName = addTextObject(this.scene, 0, 0, displayName, TextStyle.PARTY); + this.slotName = addTextObject(0, 0, displayName, TextStyle.PARTY); this.slotName.setPositionRelative(slotBg, this.slotIndex >= battlerCount ? 21 : 24, this.slotIndex >= battlerCount ? 2 : 10); this.slotName.setOrigin(0, 0); - const slotLevelLabel = this.scene.add.image(0, 0, "party_slot_overlay_lv"); + const slotLevelLabel = globalScene.add.image(0, 0, "party_slot_overlay_lv"); slotLevelLabel.setPositionRelative(this.slotName, 8, 12); slotLevelLabel.setOrigin(0, 0); - const slotLevelText = addTextObject(this.scene, 0, 0, this.pokemon.level.toString(), this.pokemon.level < (this.scene as BattleScene).getMaxExpLevel() ? TextStyle.PARTY : TextStyle.PARTY_RED); + const slotLevelText = addTextObject(0, 0, this.pokemon.level.toString(), this.pokemon.level < globalScene.getMaxExpLevel() ? TextStyle.PARTY : TextStyle.PARTY_RED); slotLevelText.setPositionRelative(slotLevelLabel, 9, 0); slotLevelText.setOrigin(0, 0.25); @@ -1248,7 +1250,7 @@ class PartySlot extends Phaser.GameObjects.Container { const genderSymbol = getGenderSymbol(this.pokemon.getGender(true)); if (genderSymbol) { - const slotGenderText = addTextObject(this.scene, 0, 0, genderSymbol, TextStyle.PARTY); + const slotGenderText = addTextObject(0, 0, genderSymbol, TextStyle.PARTY); slotGenderText.setColor(getGenderColor(this.pokemon.getGender(true))); slotGenderText.setShadowColor(getGenderColor(this.pokemon.getGender(true), true)); if (this.slotIndex >= battlerCount) { @@ -1262,7 +1264,7 @@ class PartySlot extends Phaser.GameObjects.Container { } if (this.pokemon.fusionSpecies) { - const splicedIcon = this.scene.add.image(0, 0, "icon_spliced"); + const splicedIcon = globalScene.add.image(0, 0, "icon_spliced"); splicedIcon.setScale(0.5); splicedIcon.setOrigin(0, 0); if (this.slotIndex >= battlerCount) { @@ -1275,7 +1277,7 @@ class PartySlot extends Phaser.GameObjects.Container { } if (this.pokemon.status) { - const statusIndicator = this.scene.add.sprite(0, 0, Utils.getLocalizedSpriteKey("statuses")); + const statusIndicator = globalScene.add.sprite(0, 0, Utils.getLocalizedSpriteKey("statuses")); statusIndicator.setFrame(StatusEffect[this.pokemon.status?.effect].toLowerCase()); statusIndicator.setOrigin(0, 0); statusIndicator.setPositionRelative(slotLevelLabel, this.slotIndex >= battlerCount ? 43 : 55, 0); @@ -1286,7 +1288,7 @@ class PartySlot extends Phaser.GameObjects.Container { if (this.pokemon.isShiny()) { const doubleShiny = this.pokemon.isFusion() && this.pokemon.shiny && this.pokemon.fusionShiny; - const shinyStar = this.scene.add.image(0, 0, `shiny_star_small${doubleShiny ? "_1" : ""}`); + const shinyStar = globalScene.add.image(0, 0, `shiny_star_small${doubleShiny ? "_1" : ""}`); shinyStar.setOrigin(0, 0); shinyStar.setPositionRelative(this.slotName, -9, 3); shinyStar.setTint(getVariantTint(!doubleShiny ? this.pokemon.getVariant() : this.pokemon.variant)); @@ -1294,7 +1296,7 @@ class PartySlot extends Phaser.GameObjects.Container { slotInfoContainer.add(shinyStar); if (doubleShiny) { - const fusionShinyStar = this.scene.add.image(0, 0, "shiny_star_small_2"); + const fusionShinyStar = globalScene.add.image(0, 0, "shiny_star_small_2"); fusionShinyStar.setOrigin(0, 0); fusionShinyStar.setPosition(shinyStar.x, shinyStar.y); fusionShinyStar.setTint(getVariantTint(this.pokemon.fusionVariant)); @@ -1303,25 +1305,25 @@ class PartySlot extends Phaser.GameObjects.Container { } } - this.slotHpBar = this.scene.add.image(0, 0, "party_slot_hp_bar"); + this.slotHpBar = globalScene.add.image(0, 0, "party_slot_hp_bar"); this.slotHpBar.setPositionRelative(slotBg, this.slotIndex >= battlerCount ? 72 : 8, this.slotIndex >= battlerCount ? 6 : 31); this.slotHpBar.setOrigin(0, 0); this.slotHpBar.setVisible(false); const hpRatio = this.pokemon.getHpRatio(); - this.slotHpOverlay = this.scene.add.sprite(0, 0, "party_slot_hp_overlay", hpRatio > 0.5 ? "high" : hpRatio > 0.25 ? "medium" : "low"); + this.slotHpOverlay = globalScene.add.sprite(0, 0, "party_slot_hp_overlay", hpRatio > 0.5 ? "high" : hpRatio > 0.25 ? "medium" : "low"); this.slotHpOverlay.setPositionRelative(this.slotHpBar, 16, 2); this.slotHpOverlay.setOrigin(0, 0); this.slotHpOverlay.setScale(hpRatio, 1); this.slotHpOverlay.setVisible(false); - this.slotHpText = addTextObject(this.scene, 0, 0, `${this.pokemon.hp}/${this.pokemon.getMaxHp()}`, TextStyle.PARTY); + this.slotHpText = addTextObject(0, 0, `${this.pokemon.hp}/${this.pokemon.getMaxHp()}`, TextStyle.PARTY); this.slotHpText.setPositionRelative(this.slotHpBar, this.slotHpBar.width - 3, this.slotHpBar.height - 2); this.slotHpText.setOrigin(1, 0); this.slotHpText.setVisible(false); - this.slotDescriptionLabel = addTextObject(this.scene, 0, 0, "", TextStyle.MESSAGE); + this.slotDescriptionLabel = addTextObject(0, 0, "", TextStyle.MESSAGE); this.slotDescriptionLabel.setPositionRelative(slotBg, this.slotIndex >= battlerCount ? 94 : 32, this.slotIndex >= battlerCount ? 16 : 46); this.slotDescriptionLabel.setOrigin(0, 1); this.slotDescriptionLabel.setVisible(false); @@ -1387,7 +1389,7 @@ class PartySlot extends Phaser.GameObjects.Container { } private updateSlotTexture(): void { - const battlerCount = (this.scene as BattleScene).currentBattle.getBattlerCount(); + const battlerCount = globalScene.currentBattle.getBattlerCount(); this.slotBg.setTexture(`party_slot${this.slotIndex >= battlerCount ? "" : "_main"}`, `party_slot${this.slotIndex >= battlerCount ? "" : "_main"}${this.transfer ? "_swap" : this.pokemon.hp ? "" : "_fnt"}${this.selected ? "_sel" : ""}`); } @@ -1399,24 +1401,24 @@ class PartyCancelButton extends Phaser.GameObjects.Container { private partyCancelBg: Phaser.GameObjects.Sprite; private partyCancelPb: Phaser.GameObjects.Sprite; - constructor(scene: BattleScene, x: number, y: number) { - super(scene, x, y); + constructor(x: number, y: number) { + super(globalScene, x, y); this.setup(); } setup() { - const partyCancelBg = this.scene.add.sprite(0, 0, "party_cancel"); + const partyCancelBg = globalScene.add.sprite(0, 0, "party_cancel"); this.add(partyCancelBg); this.partyCancelBg = partyCancelBg; - const partyCancelPb = this.scene.add.sprite(-17, 0, "party_pb"); + const partyCancelPb = globalScene.add.sprite(-17, 0, "party_pb"); this.add(partyCancelPb); this.partyCancelPb = partyCancelPb; - const partyCancelText = addTextObject(this.scene, -8, -7, i18next.t("partyUiHandler:cancel"), TextStyle.PARTY); + const partyCancelText = addTextObject(-8, -7, i18next.t("partyUiHandler:cancel"), TextStyle.PARTY); this.add(partyCancelText); } diff --git a/src/ui/pokeball-tray.ts b/src/ui/pokeball-tray.ts index 0313812ef79..0c913d195a9 100644 --- a/src/ui/pokeball-tray.ts +++ b/src/ui/pokeball-tray.ts @@ -1,5 +1,5 @@ -import BattleScene from "../battle-scene"; -import Pokemon from "../field/pokemon"; +import { globalScene } from "#app/global-scene"; +import type Pokemon from "../field/pokemon"; export default class PokeballTray extends Phaser.GameObjects.Container { private player: boolean; @@ -9,18 +9,18 @@ export default class PokeballTray extends Phaser.GameObjects.Container { public shown: boolean; - constructor(scene: BattleScene, player: boolean) { - super(scene, player ? (scene.game.canvas.width / 6) : 0, player ? -72 : -144); + constructor(player: boolean) { + super(globalScene, player ? (globalScene.game.canvas.width / 6) : 0, player ? -72 : -144); this.player = player; } setup(): void { - this.bg = this.scene.add.nineslice(0, 0, `pb_tray_overlay_${this.player ? "player" : "enemy"}`, undefined, 104, 4, 48, 8, 0, 0); + this.bg = globalScene.add.nineslice(0, 0, `pb_tray_overlay_${this.player ? "player" : "enemy"}`, undefined, 104, 4, 48, 8, 0, 0); this.bg.setOrigin(this.player ? 1 : 0, 0); this.add(this.bg); - this.balls = new Array(6).fill(null).map((_, i) => this.scene.add.sprite((this.player ? -83 : 76) + (this.scene.game.canvas.width / 6) * (this.player ? -1 : 1) + 10 * i * (this.player ? 1 : -1), -8, "pb_tray_ball", "empty")); + this.balls = new Array(6).fill(null).map((_, i) => globalScene.add.sprite((this.player ? -83 : 76) + (globalScene.game.canvas.width / 6) * (this.player ? -1 : 1) + 10 * i * (this.player ? 1 : -1), -8, "pb_tray_ball", "empty")); for (const ball of this.balls) { ball.setOrigin(0, 0); @@ -37,7 +37,7 @@ export default class PokeballTray extends Phaser.GameObjects.Container { return resolve(); } - (this.scene as BattleScene).fieldUI.bringToTop(this); + globalScene.fieldUI.bringToTop(this); this.x += 104 * (this.player ? 1 : -1); @@ -45,7 +45,7 @@ export default class PokeballTray extends Phaser.GameObjects.Container { this.bg.alpha = 1; this.balls.forEach((ball, b) => { - ball.x += (this.scene.game.canvas.width / 6 + 104) * (this.player ? 1 : -1); + ball.x += (globalScene.game.canvas.width / 6 + 104) * (this.player ? 1 : -1); let ballFrame = "ball"; if (b >= party.length) { ballFrame = "empty"; @@ -57,21 +57,21 @@ export default class PokeballTray extends Phaser.GameObjects.Container { ball.setFrame(ballFrame); }); - (this.scene as BattleScene).playSound("se/pb_tray_enter"); + globalScene.playSound("se/pb_tray_enter"); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this, x: `${this.player ? "-" : "+"}=104`, duration: 500, ease: "Sine.easeIn", onComplete: () => { this.balls.forEach((ball, b) => { - this.scene.tweens.add({ + globalScene.tweens.add({ targets: ball, x: `${this.player ? "-" : "+"}=104`, duration: b * 100, ease: "Sine.easeIn", - onComplete: () => (this.scene as BattleScene).playSound(`se/${(b < party.length ? "pb_tray_ball" : "pb_tray_empty")}`) + onComplete: () => globalScene.playSound(`se/${(b < party.length ? "pb_tray_ball" : "pb_tray_empty")}`) }); }); } @@ -80,7 +80,7 @@ export default class PokeballTray extends Phaser.GameObjects.Container { this.setVisible(true); this.shown = true; - this.scene.time.delayedCall(1100, () => resolve()); + globalScene.time.delayedCall(1100, () => resolve()); }); } @@ -91,16 +91,16 @@ export default class PokeballTray extends Phaser.GameObjects.Container { } this.balls.forEach((ball, b) => { - this.scene.tweens.add({ + globalScene.tweens.add({ targets: ball, - x: `${this.player ? "-" : "+"}=${this.scene.game.canvas.width / 6}`, + x: `${this.player ? "-" : "+"}=${globalScene.game.canvas.width / 6}`, duration: 250, delay: b * 100, ease: "Sine.easeIn" }); }); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this.bg, width: 144, alpha: 0, @@ -108,7 +108,7 @@ export default class PokeballTray extends Phaser.GameObjects.Container { ease: "Sine.easeIn" }); - this.scene.time.delayedCall(850, () => { + globalScene.time.delayedCall(850, () => { this.setVisible(false); resolve(); }); diff --git a/src/ui/pokemon-hatch-info-container.ts b/src/ui/pokemon-hatch-info-container.ts index 494855d20fa..a9b8e260b34 100644 --- a/src/ui/pokemon-hatch-info-container.ts +++ b/src/ui/pokemon-hatch-info-container.ts @@ -1,5 +1,4 @@ import PokemonInfoContainer from "#app/ui/pokemon-info-container"; -import BattleScene from "#app/battle-scene"; import { Gender } from "#app/data/gender"; import { Type } from "#enums/type"; import * as Utils from "#app/utils"; @@ -9,9 +8,10 @@ import { allMoves } from "#app/data/move"; import { Species } from "#enums/species"; import { getEggTierForSpecies } from "#app/data/egg"; import { starterColors } from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { argbFromRgba } from "@material/material-color-utilities"; -import { EggHatchData } from "#app/data/egg-hatch-data"; -import { PlayerPokemon } from "#app/field/pokemon"; +import type { EggHatchData } from "#app/data/egg-hatch-data"; +import type { PlayerPokemon } from "#app/field/pokemon"; import { getPokemonSpeciesForm } from "#app/data/pokemon-species"; /** @@ -32,8 +32,8 @@ export default class PokemonHatchInfoContainer extends PokemonInfoContainer { private pokemonCandyOverlayIcon: Phaser.GameObjects.Sprite; private pokemonCandyCountText: Phaser.GameObjects.Text; - constructor(scene: BattleScene, listContainer : Phaser.GameObjects.Container, x: number = 115, y: number = 9,) { - super(scene, x, y); + constructor(listContainer : Phaser.GameObjects.Container, x: number = 115, y: number = 9,) { + super(x, y); this.pokemonListContainer = listContainer; } @@ -41,37 +41,37 @@ export default class PokemonHatchInfoContainer extends PokemonInfoContainer { super.setup(); super.changeToEggSummaryLayout(); - this.currentPokemonSprite = this.scene.add.sprite(54, 80, "pkmn__sub"); + this.currentPokemonSprite = globalScene.add.sprite(54, 80, "pkmn__sub"); this.currentPokemonSprite.setScale(0.8); - this.currentPokemonSprite.setPipeline(this.scene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], ignoreTimeTint: true }); + this.currentPokemonSprite.setPipeline(globalScene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], ignoreTimeTint: true }); this.pokemonListContainer.add(this.currentPokemonSprite); // setup name and number - this.pokemonNumberText = addTextObject(this.scene, 80, 107.5, "0000", TextStyle.SUMMARY, { fontSize: 74 }); + this.pokemonNumberText = addTextObject(80, 107.5, "0000", TextStyle.SUMMARY, { fontSize: 74 }); this.pokemonNumberText.setOrigin(0, 0); this.pokemonListContainer.add(this.pokemonNumberText); - this.pokemonNameText = addTextObject(this.scene, 7, 107.5, "", TextStyle.SUMMARY, { fontSize: 74 }); + this.pokemonNameText = addTextObject(7, 107.5, "", TextStyle.SUMMARY, { fontSize: 74 }); this.pokemonNameText.setOrigin(0, 0); this.pokemonListContainer.add(this.pokemonNameText); // setup egg icon and candy count - this.pokemonHatchedIcon = this.scene.add.sprite(-5, 90, "egg_icons"); + this.pokemonHatchedIcon = globalScene.add.sprite(-5, 90, "egg_icons"); this.pokemonHatchedIcon.setOrigin(0, 0.2); this.pokemonHatchedIcon.setScale(0.8); this.pokemonListContainer.add(this.pokemonHatchedIcon); - this.pokemonCandyIcon = this.scene.add.sprite(4.5, 40, "candy"); + this.pokemonCandyIcon = globalScene.add.sprite(4.5, 40, "candy"); this.pokemonCandyIcon.setScale(0.5); this.pokemonCandyIcon.setOrigin(0, 0); this.pokemonListContainer.add(this.pokemonCandyIcon); - this.pokemonCandyOverlayIcon = this.scene.add.sprite(4.5, 40, "candy_overlay"); + this.pokemonCandyOverlayIcon = globalScene.add.sprite(4.5, 40, "candy_overlay"); this.pokemonCandyOverlayIcon.setScale(0.5); this.pokemonCandyOverlayIcon.setOrigin(0, 0); this.pokemonListContainer.add(this.pokemonCandyOverlayIcon); - this.pokemonCandyCountText = addTextObject(this.scene, 14, 40, "x0", TextStyle.SUMMARY, { fontSize: "56px" }); + this.pokemonCandyCountText = addTextObject(14, 40, "x0", TextStyle.SUMMARY, { fontSize: "56px" }); this.pokemonCandyCountText.setOrigin(0, 0); this.pokemonListContainer.add(this.pokemonCandyCountText); @@ -79,17 +79,17 @@ export default class PokemonHatchInfoContainer extends PokemonInfoContainer { this.pokemonEggMoveContainers = []; this.pokemonEggMoveBgs = []; this.pokemonEggMoveLabels = []; - this.pokemonEggMovesContainer = this.scene.add.container(0, 200); + this.pokemonEggMovesContainer = globalScene.add.container(0, 200); this.pokemonEggMovesContainer.setVisible(false); this.pokemonEggMovesContainer.setScale(0.5); for (let m = 0; m < 4; m++) { - const eggMoveContainer = this.scene.add.container(0, 0 + 6 * m); + const eggMoveContainer = globalScene.add.container(0, 0 + 6 * m); - const eggMoveBg = this.scene.add.nineslice(70, 0, "type_bgs", "unknown", 92, 14, 2, 2, 2, 2); + const eggMoveBg = globalScene.add.nineslice(70, 0, "type_bgs", "unknown", 92, 14, 2, 2, 2, 2); eggMoveBg.setOrigin(1, 0); - const eggMoveLabel = addTextObject(this.scene, 70 - eggMoveBg.width / 2, 0, "???", TextStyle.PARTY); + const eggMoveLabel = addTextObject(70 - eggMoveBg.width / 2, 0, "???", TextStyle.PARTY); eggMoveLabel.setOrigin(0.5, 0); this.pokemonEggMoveBgs.push(eggMoveBg); @@ -126,9 +126,9 @@ export default class PokemonHatchInfoContainer extends PokemonInfoContainer { const shiny = pokemon.shiny; const variant = pokemon.variant; this.currentPokemonSprite.setVisible(false); - species.loadAssets(this.scene, female, formIndex, shiny, variant, true).then(() => { + species.loadAssets(female, formIndex, shiny, variant, true).then(() => { - getPokemonSpeciesForm(species.speciesId, pokemon.formIndex).cry(this.scene); + getPokemonSpeciesForm(species.speciesId, pokemon.formIndex).cry(); this.currentPokemonSprite.play(species.getSpriteKey(female, formIndex, shiny, variant)); this.currentPokemonSprite.setPipelineData("shiny", shiny); this.currentPokemonSprite.setPipelineData("variant", variant); @@ -156,7 +156,7 @@ export default class PokemonHatchInfoContainer extends PokemonInfoContainer { this.pokemonCandyIcon.setVisible(true); this.pokemonCandyOverlayIcon.setTint(argbFromRgba(Utils.rgbHexToRgba(colorScheme[1]))); this.pokemonCandyOverlayIcon.setVisible(true); - this.pokemonCandyCountText.setText(`x${this.scene.gameData.starterData[species.speciesId].candyCount}`); + this.pokemonCandyCountText.setText(`x${globalScene.gameData.starterData[species.speciesId].candyCount}`); this.pokemonCandyCountText.setVisible(true); this.pokemonNumberText.setText(Utils.padInt(species.speciesId, 4)); @@ -166,7 +166,7 @@ export default class PokemonHatchInfoContainer extends PokemonInfoContainer { for (let em = 0; em < 4; em++) { const eggMove = hasEggMoves ? allMoves[speciesEggMoves[species.speciesId][em]] : null; - const eggMoveUnlocked = eggMove && this.scene.gameData.starterData[species.speciesId].eggMoves & Math.pow(2, em); + const eggMoveUnlocked = eggMove && globalScene.gameData.starterData[species.speciesId].eggMoves & Math.pow(2, em); this.pokemonEggMoveBgs[em].setFrame(Type[eggMove ? eggMove.type : Type.UNKNOWN].toString().toLowerCase()); this.pokemonEggMoveLabels[em].setText(eggMove && eggMoveUnlocked ? eggMove.name : "???"); diff --git a/src/ui/pokemon-icon-anim-handler.ts b/src/ui/pokemon-icon-anim-handler.ts index c7a24f69200..010d23315f2 100644 --- a/src/ui/pokemon-icon-anim-handler.ts +++ b/src/ui/pokemon-icon-anim-handler.ts @@ -1,4 +1,4 @@ -import BattleScene from "../battle-scene"; +import { globalScene } from "#app/global-scene"; import * as Utils from "../utils"; export enum PokemonIconAnimMode { @@ -13,7 +13,7 @@ export default class PokemonIconAnimHandler { private icons: Map; private toggled: boolean; - setup(scene: BattleScene): void { + setup(): void { this.icons = new Map(); this.toggled = false; @@ -26,7 +26,7 @@ export default class PokemonIconAnimHandler { i.y += delta * (this.toggled ? 1 : -1); } }; - scene.tweens.addCounter({ + globalScene.tweens.addCounter({ duration: Utils.fixedInt(200), from: 0, to: 1, diff --git a/src/ui/pokemon-info-container.ts b/src/ui/pokemon-info-container.ts index e0d432265a3..4f7a28f1d6d 100644 --- a/src/ui/pokemon-info-container.ts +++ b/src/ui/pokemon-info-container.ts @@ -1,12 +1,13 @@ import { getVariantTint } from "#app/data/variant"; -import BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext"; -import BattleScene from "../battle-scene"; +import type BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext"; +import { globalScene } from "#app/global-scene"; import { Gender, getGenderColor, getGenderSymbol } from "../data/gender"; import { getNatureName } from "../data/nature"; import { Type } from "#enums/type"; -import Pokemon from "../field/pokemon"; +import type Pokemon from "../field/pokemon"; import i18next from "i18next"; -import { DexAttr, DexEntry, StarterDataEntry } from "../system/game-data"; +import type { DexEntry, StarterDataEntry } from "../system/game-data"; +import { DexAttr } from "../system/game-data"; import * as Utils from "../utils"; import ConfirmUiHandler from "./confirm-ui-handler"; import { StatsContainer } from "./stats-container"; @@ -57,8 +58,8 @@ export default class PokemonInfoContainer extends Phaser.GameObjects.Container { public shown: boolean; - constructor(scene: BattleScene, x: number = 372, y: number = 66) { - super(scene, x, y); + constructor(x: number = 372, y: number = 66) { + super(globalScene, x, y); this.initialX = x; } @@ -67,11 +68,11 @@ export default class PokemonInfoContainer extends Phaser.GameObjects.Container { const currentLanguage = i18next.resolvedLanguage!; // TODO: is this bang correct? const langSettingKey = Object.keys(languageSettings).find(lang => currentLanguage?.includes(lang))!; // TODO: is this bang correct? const textSettings = languageSettings[langSettingKey]; - this.infoBg = addWindow(this.scene, 0, 0, this.infoWindowWidth, 132); + this.infoBg = addWindow(0, 0, this.infoWindowWidth, 132); this.infoBg.setOrigin(0.5, 0.5); this.infoBg.setName("window-info-bg"); - this.pokemonMovesContainer = this.scene.add.container(6, 14); + this.pokemonMovesContainer = globalScene.add.container(6, 14); this.pokemonMovesContainer.setName("pkmn-moves"); this.movesContainerInitialX = this.pokemonMovesContainer.x; @@ -80,26 +81,26 @@ export default class PokemonInfoContainer extends Phaser.GameObjects.Container { this.pokemonMoveBgs = []; this.pokemonMoveLabels = []; - const movesBg = addWindow(this.scene, 0, 0, 58, 52); + const movesBg = addWindow(0, 0, 58, 52); movesBg.setOrigin(1, 0); movesBg.setName("window-moves-bg"); this.pokemonMovesContainer.add(movesBg); - const movesLabel = addTextObject(this.scene, -movesBg.width / 2, 6, i18next.t("pokemonInfoContainer:moveset"), TextStyle.WINDOW, { fontSize: "64px" }); + const movesLabel = addTextObject(-movesBg.width / 2, 6, i18next.t("pokemonInfoContainer:moveset"), TextStyle.WINDOW, { fontSize: "64px" }); movesLabel.setOrigin(0.5, 0); movesLabel.setName("text-moves"); this.pokemonMovesContainer.add(movesLabel); for (let m = 0; m < 4; m++) { - const moveContainer = this.scene.add.container(-6, 18 + 7 * m); + const moveContainer = globalScene.add.container(-6, 18 + 7 * m); moveContainer.setScale(0.5); moveContainer.setName("move"); - const moveBg = this.scene.add.nineslice(0, 0, "type_bgs", "unknown", 92, 14, 2, 2, 2, 2); + const moveBg = globalScene.add.nineslice(0, 0, "type_bgs", "unknown", 92, 14, 2, 2, 2, 2); moveBg.setOrigin(1, 0); moveBg.setName("nineslice-move-bg"); - const moveLabel = addTextObject(this.scene, -moveBg.width / 2, 0, "-", TextStyle.PARTY); + const moveLabel = addTextObject(-moveBg.width / 2, 0, "-", TextStyle.PARTY); moveLabel.setOrigin(0.5, 0); moveLabel.setName("text-move-label"); @@ -115,7 +116,7 @@ export default class PokemonInfoContainer extends Phaser.GameObjects.Container { this.add(this.pokemonMovesContainer); - this.statsContainer = new StatsContainer(this.scene, -48, -64, true); + this.statsContainer = new StatsContainer(-48, -64, true); this.add(this.infoBg); this.add(this.statsContainer); @@ -127,62 +128,62 @@ export default class PokemonInfoContainer extends Phaser.GameObjects.Container { // The font size should be set by language const infoContainerTextSize = textSettings?.infoContainerTextSize || "64px"; - this.pokemonFormLabelText = addTextObject(this.scene, infoContainerLabelXPos, 19, i18next.t("pokemonInfoContainer:form"), TextStyle.WINDOW, { fontSize: infoContainerTextSize }); + this.pokemonFormLabelText = addTextObject(infoContainerLabelXPos, 19, i18next.t("pokemonInfoContainer:form"), TextStyle.WINDOW, { fontSize: infoContainerTextSize }); this.pokemonFormLabelText.setOrigin(1, 0); this.pokemonFormLabelText.setVisible(false); this.add(this.pokemonFormLabelText); - this.pokemonFormText = addTextObject(this.scene, infoContainerTextXPos, 19, "", TextStyle.WINDOW, { fontSize: infoContainerTextSize }); + this.pokemonFormText = addTextObject(infoContainerTextXPos, 19, "", TextStyle.WINDOW, { fontSize: infoContainerTextSize }); this.pokemonFormText.setOrigin(0, 0); this.pokemonFormText.setVisible(false); this.add(this.pokemonFormText); - this.pokemonGenderText = addTextObject(this.scene, -42, -61, "", TextStyle.WINDOW, { fontSize: infoContainerTextSize }); + this.pokemonGenderText = addTextObject(-42, -61, "", TextStyle.WINDOW, { fontSize: infoContainerTextSize }); this.pokemonGenderText.setOrigin(0, 0); this.pokemonGenderText.setVisible(false); this.pokemonGenderText.setName("text-pkmn-gender"); this.add(this.pokemonGenderText); - this.pokemonGenderNewText = addTextObject(this.scene, -36, -61, "", TextStyle.WINDOW, { fontSize: "64px" }); + this.pokemonGenderNewText = addTextObject(-36, -61, "", TextStyle.WINDOW, { fontSize: "64px" }); this.pokemonGenderNewText.setOrigin(0, 0); this.pokemonGenderNewText.setVisible(false); this.pokemonGenderNewText.setName("text-pkmn-new-gender"); this.add(this.pokemonGenderNewText); - this.pokemonAbilityLabelText = addTextObject(this.scene, infoContainerLabelXPos, 29, i18next.t("pokemonInfoContainer:ability"), TextStyle.WINDOW, { fontSize: infoContainerTextSize }); + this.pokemonAbilityLabelText = addTextObject(infoContainerLabelXPos, 29, i18next.t("pokemonInfoContainer:ability"), TextStyle.WINDOW, { fontSize: infoContainerTextSize }); this.pokemonAbilityLabelText.setOrigin(1, 0); this.pokemonAbilityLabelText.setName("text-pkmn-ability-label"); this.add(this.pokemonAbilityLabelText); - this.pokemonAbilityText = addTextObject(this.scene, infoContainerTextXPos, 29, "", TextStyle.WINDOW, { fontSize: infoContainerTextSize }); + this.pokemonAbilityText = addTextObject(infoContainerTextXPos, 29, "", TextStyle.WINDOW, { fontSize: infoContainerTextSize }); this.pokemonAbilityText.setOrigin(0, 0); this.pokemonAbilityText.setName("text-pkmn-ability"); this.add(this.pokemonAbilityText); - this.pokemonNatureLabelText = addTextObject(this.scene, infoContainerLabelXPos, 39, i18next.t("pokemonInfoContainer:nature"), TextStyle.WINDOW, { fontSize: infoContainerTextSize }); + this.pokemonNatureLabelText = addTextObject(infoContainerLabelXPos, 39, i18next.t("pokemonInfoContainer:nature"), TextStyle.WINDOW, { fontSize: infoContainerTextSize }); this.pokemonNatureLabelText.setOrigin(1, 0); this.pokemonNatureLabelText.setName("text-pkmn-nature-label"); this.add(this.pokemonNatureLabelText); - this.pokemonNatureText = addBBCodeTextObject(this.scene, infoContainerTextXPos, 39, "", TextStyle.WINDOW, { fontSize: infoContainerTextSize, lineSpacing: 3, maxLines: 2 }); + this.pokemonNatureText = addBBCodeTextObject(infoContainerTextXPos, 39, "", TextStyle.WINDOW, { fontSize: infoContainerTextSize, lineSpacing: 3, maxLines: 2 }); this.pokemonNatureText.setOrigin(0, 0); this.pokemonNatureText.setName("text-pkmn-nature"); this.add(this.pokemonNatureText); - this.pokemonShinyIcon = this.scene.add.image(-43.5, 48.5, "shiny_star"); + this.pokemonShinyIcon = globalScene.add.image(-43.5, 48.5, "shiny_star"); this.pokemonShinyIcon.setOrigin(0, 0); this.pokemonShinyIcon.setScale(0.75); this.pokemonShinyIcon.setInteractive(new Phaser.Geom.Rectangle(0, 0, 12, 15), Phaser.Geom.Rectangle.Contains); this.pokemonShinyIcon.setName("img-pkmn-shiny-icon"); this.add(this.pokemonShinyIcon); - this.pokemonShinyNewIcon = addTextObject(this.scene, this.pokemonShinyIcon.x + 12, this.pokemonShinyIcon.y, "", TextStyle.WINDOW, { fontSize: infoContainerTextSize }); + this.pokemonShinyNewIcon = addTextObject(this.pokemonShinyIcon.x + 12, this.pokemonShinyIcon.y, "", TextStyle.WINDOW, { fontSize: infoContainerTextSize }); this.pokemonShinyNewIcon.setOrigin(0, 0); this.pokemonShinyNewIcon.setName("text-pkmn-shiny-new-icon"); this.add(this.pokemonShinyNewIcon); this.pokemonShinyNewIcon.setVisible(false); - this.pokemonFusionShinyIcon = this.scene.add.image(this.pokemonShinyIcon.x, this.pokemonShinyIcon.y, "shiny_star_2"); + this.pokemonFusionShinyIcon = globalScene.add.image(this.pokemonShinyIcon.x, this.pokemonShinyIcon.y, "shiny_star_2"); this.pokemonFusionShinyIcon.setOrigin(0, 0); this.pokemonFusionShinyIcon.setScale(0.75); this.pokemonFusionShinyIcon.setName("img-pkmn-fusion-shiny-icon"); @@ -194,10 +195,10 @@ export default class PokemonInfoContainer extends Phaser.GameObjects.Container { show(pokemon: Pokemon, showMoves: boolean = false, speedMultiplier: number = 1, dexEntry?: DexEntry, starterEntry?: StarterDataEntry, eggInfo = false): Promise { return new Promise(resolve => { if (!dexEntry) { - dexEntry = pokemon.scene.gameData.dexData[pokemon.species.speciesId]; + dexEntry = globalScene.gameData.dexData[pokemon.species.speciesId]; } if (!starterEntry) { - starterEntry = pokemon.scene.gameData.starterData[pokemon.species.getRootSpeciesId()]; + starterEntry = globalScene.gameData.starterData[pokemon.species.getRootSpeciesId()]; } const caughtAttr = BigInt(dexEntry.caughtAttr); @@ -209,8 +210,8 @@ export default class PokemonInfoContainer extends Phaser.GameObjects.Container { const newGender = BigInt(1 << pokemon.gender) * DexAttr.MALE; this.pokemonGenderNewText.setText("(+)"); - this.pokemonGenderNewText.setColor(getTextColor(TextStyle.SUMMARY_BLUE, false, this.scene.uiTheme)); - this.pokemonGenderNewText.setShadowColor(getTextColor(TextStyle.SUMMARY_BLUE, true, this.scene.uiTheme)); + this.pokemonGenderNewText.setColor(getTextColor(TextStyle.SUMMARY_BLUE, false, globalScene.uiTheme)); + this.pokemonGenderNewText.setShadowColor(getTextColor(TextStyle.SUMMARY_BLUE, true, globalScene.uiTheme)); this.pokemonGenderNewText.setVisible((newGender & caughtAttr) === BigInt(0)); } else { this.pokemonGenderNewText.setVisible(false); @@ -241,18 +242,18 @@ export default class PokemonInfoContainer extends Phaser.GameObjects.Container { const newForm = BigInt(1 << pokemon.formIndex) * DexAttr.DEFAULT_FORM; if ((newForm & caughtAttr) === BigInt(0)) { - this.pokemonFormLabelText.setColor(getTextColor(TextStyle.SUMMARY_BLUE, false, this.scene.uiTheme)); - this.pokemonFormLabelText.setShadowColor(getTextColor(TextStyle.SUMMARY_BLUE, true, this.scene.uiTheme)); + this.pokemonFormLabelText.setColor(getTextColor(TextStyle.SUMMARY_BLUE, false, globalScene.uiTheme)); + this.pokemonFormLabelText.setShadowColor(getTextColor(TextStyle.SUMMARY_BLUE, true, globalScene.uiTheme)); } else { - this.pokemonFormLabelText.setColor(getTextColor(TextStyle.WINDOW, false, this.scene.uiTheme)); - this.pokemonFormLabelText.setShadowColor(getTextColor(TextStyle.WINDOW, true, this.scene.uiTheme)); + this.pokemonFormLabelText.setColor(getTextColor(TextStyle.WINDOW, false, globalScene.uiTheme)); + this.pokemonFormLabelText.setShadowColor(getTextColor(TextStyle.WINDOW, true, globalScene.uiTheme)); } this.pokemonFormText.setText(formName.length > this.numCharsBeforeCutoff ? formName.substring(0, this.numCharsBeforeCutoff - 3) + "..." : formName); if (formName.length > this.numCharsBeforeCutoff) { this.pokemonFormText.setInteractive(new Phaser.Geom.Rectangle(0, 0, this.pokemonFormText.width, this.pokemonFormText.height), Phaser.Geom.Rectangle.Contains); - this.pokemonFormText.on("pointerover", () => (this.scene as BattleScene).ui.showTooltip("", formName, true)); - this.pokemonFormText.on("pointerout", () => (this.scene as BattleScene).ui.hideTooltip()); + this.pokemonFormText.on("pointerover", () => globalScene.ui.showTooltip("", formName, true)); + this.pokemonFormText.on("pointerout", () => globalScene.ui.hideTooltip()); } else { this.pokemonFormText.disableInteractive(); } @@ -264,31 +265,31 @@ export default class PokemonInfoContainer extends Phaser.GameObjects.Container { const abilityTextStyle = pokemon.abilityIndex === 2 ? TextStyle.MONEY : TextStyle.WINDOW; this.pokemonAbilityText.setText(pokemon.getAbility(true).name); - this.pokemonAbilityText.setColor(getTextColor(abilityTextStyle, false, this.scene.uiTheme)); - this.pokemonAbilityText.setShadowColor(getTextColor(abilityTextStyle, true, this.scene.uiTheme)); + this.pokemonAbilityText.setColor(getTextColor(abilityTextStyle, false, globalScene.uiTheme)); + this.pokemonAbilityText.setShadowColor(getTextColor(abilityTextStyle, true, globalScene.uiTheme)); // Check if the player owns ability for the root form const playerOwnsThisAbility = pokemon.checkIfPlayerHasAbilityOfStarter(starterEntry.abilityAttr); if (!playerOwnsThisAbility) { - this.pokemonAbilityLabelText.setColor(getTextColor(TextStyle.SUMMARY_BLUE, false, this.scene.uiTheme)); - this.pokemonAbilityLabelText.setShadowColor(getTextColor(TextStyle.SUMMARY_BLUE, true, this.scene.uiTheme)); + this.pokemonAbilityLabelText.setColor(getTextColor(TextStyle.SUMMARY_BLUE, false, globalScene.uiTheme)); + this.pokemonAbilityLabelText.setShadowColor(getTextColor(TextStyle.SUMMARY_BLUE, true, globalScene.uiTheme)); } else { - this.pokemonAbilityLabelText.setColor(getTextColor(TextStyle.WINDOW, false, this.scene.uiTheme)); - this.pokemonAbilityLabelText.setShadowColor(getTextColor(TextStyle.WINDOW, true, this.scene.uiTheme)); + this.pokemonAbilityLabelText.setColor(getTextColor(TextStyle.WINDOW, false, globalScene.uiTheme)); + this.pokemonAbilityLabelText.setShadowColor(getTextColor(TextStyle.WINDOW, true, globalScene.uiTheme)); } - this.pokemonNatureText.setText(getNatureName(pokemon.getNature(), true, false, false, this.scene.uiTheme)); + this.pokemonNatureText.setText(getNatureName(pokemon.getNature(), true, false, false, globalScene.uiTheme)); const dexNatures = dexEntry.natureAttr; const newNature = 1 << (pokemon.nature + 1); if (!(dexNatures & newNature)) { - this.pokemonNatureLabelText.setColor(getTextColor(TextStyle.SUMMARY_BLUE, false, this.scene.uiTheme)); - this.pokemonNatureLabelText.setShadowColor(getTextColor(TextStyle.SUMMARY_BLUE, true, this.scene.uiTheme)); + this.pokemonNatureLabelText.setColor(getTextColor(TextStyle.SUMMARY_BLUE, false, globalScene.uiTheme)); + this.pokemonNatureLabelText.setShadowColor(getTextColor(TextStyle.SUMMARY_BLUE, true, globalScene.uiTheme)); } else { - this.pokemonNatureLabelText.setColor(getTextColor(TextStyle.WINDOW, false, this.scene.uiTheme)); - this.pokemonNatureLabelText.setShadowColor(getTextColor(TextStyle.WINDOW, true, this.scene.uiTheme)); + this.pokemonNatureLabelText.setColor(getTextColor(TextStyle.WINDOW, false, globalScene.uiTheme)); + this.pokemonNatureLabelText.setShadowColor(getTextColor(TextStyle.WINDOW, true, globalScene.uiTheme)); } const isFusion = pokemon.isFusion(); @@ -302,22 +303,22 @@ export default class PokemonInfoContainer extends Phaser.GameObjects.Container { const shinyDescriptor = doubleShiny || baseVariant ? `${baseVariant === 2 ? i18next.t("common:epicShiny") : baseVariant === 1 ? i18next.t("common:rareShiny") : i18next.t("common:commonShiny")}${doubleShiny ? `/${pokemon.fusionVariant === 2 ? i18next.t("common:epicShiny") : pokemon.fusionVariant === 1 ? i18next.t("common:rareShiny") : i18next.t("common:commonShiny")}` : ""}` : ""; - this.pokemonShinyIcon.on("pointerover", () => (this.scene as BattleScene).ui.showTooltip("", `${i18next.t("common:shinyOnHover")}${shinyDescriptor ? ` (${shinyDescriptor})` : ""}`, true)); - this.pokemonShinyIcon.on("pointerout", () => (this.scene as BattleScene).ui.hideTooltip()); + this.pokemonShinyIcon.on("pointerover", () => globalScene.ui.showTooltip("", `${i18next.t("common:shinyOnHover")}${shinyDescriptor ? ` (${shinyDescriptor})` : ""}`, true)); + this.pokemonShinyIcon.on("pointerout", () => globalScene.ui.hideTooltip()); const newShiny = BigInt(1 << (pokemon.shiny ? 1 : 0)); const newVariant = BigInt(1 << (pokemon.variant + 4)); this.pokemonShinyNewIcon.setText("(+)"); - this.pokemonShinyNewIcon.setColor(getTextColor(TextStyle.SUMMARY_BLUE, false, this.scene.uiTheme)); - this.pokemonShinyNewIcon.setShadowColor(getTextColor(TextStyle.SUMMARY_BLUE, true, this.scene.uiTheme)); + this.pokemonShinyNewIcon.setColor(getTextColor(TextStyle.SUMMARY_BLUE, false, globalScene.uiTheme)); + this.pokemonShinyNewIcon.setShadowColor(getTextColor(TextStyle.SUMMARY_BLUE, true, globalScene.uiTheme)); const newShinyOrVariant = ((newShiny & caughtAttr) === BigInt(0)) || ((newVariant & caughtAttr) === BigInt(0)); this.pokemonShinyNewIcon.setVisible(!!newShinyOrVariant); } else if ((caughtAttr & DexAttr.NON_SHINY) === BigInt(0) && ((caughtAttr & DexAttr.SHINY) === DexAttr.SHINY)) { //If the player has *only* caught any shiny variant of this species, not a non-shiny this.pokemonShinyNewIcon.setVisible(true); this.pokemonShinyNewIcon.setText("(+)"); - this.pokemonShinyNewIcon.setColor(getTextColor(TextStyle.SUMMARY_BLUE, false, this.scene.uiTheme)); - this.pokemonShinyNewIcon.setShadowColor(getTextColor(TextStyle.SUMMARY_BLUE, true, this.scene.uiTheme)); + this.pokemonShinyNewIcon.setColor(getTextColor(TextStyle.SUMMARY_BLUE, false, globalScene.uiTheme)); + this.pokemonShinyNewIcon.setShadowColor(getTextColor(TextStyle.SUMMARY_BLUE, true, globalScene.uiTheme)); } else { this.pokemonShinyNewIcon.setVisible(false); } @@ -329,12 +330,12 @@ export default class PokemonInfoContainer extends Phaser.GameObjects.Container { } const starterSpeciesId = pokemon.species.getRootSpeciesId(); - const originalIvs: integer[] | null = eggInfo ? (dexEntry.caughtAttr ? dexEntry.ivs : null) : (this.scene.gameData.dexData[starterSpeciesId].caughtAttr - ? this.scene.gameData.dexData[starterSpeciesId].ivs : null); + const originalIvs: integer[] | null = eggInfo ? (dexEntry.caughtAttr ? dexEntry.ivs : null) : (globalScene.gameData.dexData[starterSpeciesId].caughtAttr + ? globalScene.gameData.dexData[starterSpeciesId].ivs : null); this.statsContainer.updateIvs(pokemon.ivs, originalIvs!); // TODO: is this bang correct? if (!eggInfo) { - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this, duration: Utils.fixedInt(Math.floor(750 / speedMultiplier)), ease: "Cubic.easeInOut", @@ -345,7 +346,7 @@ export default class PokemonInfoContainer extends Phaser.GameObjects.Container { }); if (showMoves) { - this.scene.tweens.add({ + globalScene.tweens.add({ delay: Utils.fixedInt(Math.floor(325 / speedMultiplier)), targets: this.pokemonMovesContainer, duration: Utils.fixedInt(Math.floor(325 / speedMultiplier)), @@ -365,7 +366,7 @@ export default class PokemonInfoContainer extends Phaser.GameObjects.Container { this.setVisible(true); this.shown = true; - this.scene.hideEnemyModifierBar(); + globalScene.hideEnemyModifierBar(); }); } @@ -402,7 +403,7 @@ export default class PokemonInfoContainer extends Phaser.GameObjects.Container { makeRoomForConfirmUi(speedMultiplier: number = 1, fromCatch: boolean = false): Promise { const xPosition = fromCatch ? this.initialX - this.infoWindowWidth - 65 : this.initialX - this.infoWindowWidth - ConfirmUiHandler.windowWidth; return new Promise(resolve => { - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this, duration: Utils.fixedInt(Math.floor(150 / speedMultiplier)), ease: "Cubic.easeInOut", @@ -417,18 +418,18 @@ export default class PokemonInfoContainer extends Phaser.GameObjects.Container { hide(speedMultiplier: number = 1): Promise { return new Promise(resolve => { if (!this.shown) { - this.scene.showEnemyModifierBar(); + globalScene.showEnemyModifierBar(); return resolve(); } - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this.pokemonMovesContainer, duration: Utils.fixedInt(Math.floor(750 / speedMultiplier)), ease: "Cubic.easeInOut", x: this.movesContainerInitialX }); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this, duration: Utils.fixedInt(Math.floor(750 / speedMultiplier)), ease: "Cubic.easeInOut", @@ -437,8 +438,8 @@ export default class PokemonInfoContainer extends Phaser.GameObjects.Container { this.setVisible(false); this.pokemonShinyIcon.off("pointerover"); this.pokemonShinyIcon.off("pointerout"); - (this.scene as BattleScene).ui.hideTooltip(); - this.scene.showEnemyModifierBar(); + globalScene.ui.hideTooltip(); + globalScene.showEnemyModifierBar(); resolve(); } }); @@ -447,7 +448,3 @@ export default class PokemonInfoContainer extends Phaser.GameObjects.Container { }); } } - -export default interface PokemonInfoContainer { - scene: BattleScene -} diff --git a/src/ui/registration-form-ui-handler.ts b/src/ui/registration-form-ui-handler.ts index 892f78bd1ba..3b229a47c38 100644 --- a/src/ui/registration-form-ui-handler.ts +++ b/src/ui/registration-form-ui-handler.ts @@ -1,9 +1,11 @@ -import { FormModalUiHandler, InputFieldConfig } from "./form-modal-ui-handler"; -import { ModalConfig } from "./modal-ui-handler"; +import type { InputFieldConfig } from "./form-modal-ui-handler"; +import { FormModalUiHandler } from "./form-modal-ui-handler"; +import type { ModalConfig } from "./modal-ui-handler"; import { Mode } from "./ui"; import { TextStyle, addTextObject } from "./text"; import i18next from "i18next"; import { pokerogueApi } from "#app/plugins/api/pokerogue-api"; +import { globalScene } from "#app/global-scene"; interface LanguageSetting { @@ -78,7 +80,7 @@ export default class RegistrationFormUiHandler extends FormModalUiHandler { }); const warningMessageFontSize = languageSettings[i18next.resolvedLanguage!]?.warningMessageFontSize ?? "42px"; - const label = addTextObject(this.scene, 10, 87, i18next.t("menu:registrationAgeWarning"), TextStyle.TOOLTIP_CONTENT, { fontSize: warningMessageFontSize }); + const label = addTextObject(10, 87, i18next.t("menu:registrationAgeWarning"), TextStyle.TOOLTIP_CONTENT, { fontSize: warningMessageFontSize }); this.modalContainer.add(label); } @@ -92,10 +94,10 @@ export default class RegistrationFormUiHandler extends FormModalUiHandler { // Prevent overlapping overrides on action modification this.submitAction = originalRegistrationAction; this.sanitizeInputs(); - this.scene.ui.setMode(Mode.LOADING, { buttonActions: []}); + globalScene.ui.setMode(Mode.LOADING, { buttonActions: []}); const onFail = error => { - this.scene.ui.setMode(Mode.REGISTRATION_FORM, Object.assign(config, { errorMessage: error?.trim() })); - this.scene.ui.playError(); + globalScene.ui.setMode(Mode.REGISTRATION_FORM, Object.assign(config, { errorMessage: error?.trim() })); + globalScene.ui.playError(); const errorMessageFontSize = languageSettings[i18next.resolvedLanguage!]?.errorMessageFontSize; if (errorMessageFontSize) { this.errorMessage.setFontSize(errorMessageFontSize); diff --git a/src/ui/rename-form-ui-handler.ts b/src/ui/rename-form-ui-handler.ts index 6e4c4c6809d..3004530063e 100644 --- a/src/ui/rename-form-ui-handler.ts +++ b/src/ui/rename-form-ui-handler.ts @@ -1,7 +1,8 @@ -import { FormModalUiHandler, InputFieldConfig } from "./form-modal-ui-handler"; -import { ModalConfig } from "./modal-ui-handler"; +import type { InputFieldConfig } from "./form-modal-ui-handler"; +import { FormModalUiHandler } from "./form-modal-ui-handler"; +import type { ModalConfig } from "./modal-ui-handler"; import i18next from "i18next"; -import { PlayerPokemon } from "#app/field/pokemon"; +import type { PlayerPokemon } from "#app/field/pokemon"; export default class RenameFormUiHandler extends FormModalUiHandler { getModalTitle(config?: ModalConfig): string { diff --git a/src/ui/run-history-ui-handler.ts b/src/ui/run-history-ui-handler.ts index 061f15d0956..2a498f77b8d 100644 --- a/src/ui/run-history-ui-handler.ts +++ b/src/ui/run-history-ui-handler.ts @@ -1,15 +1,15 @@ -import BattleScene from "../battle-scene"; +import { globalScene } from "#app/global-scene"; import { GameModes } from "../game-mode"; import { TextStyle, addTextObject } from "./text"; import { Mode } from "./ui"; import { addWindow } from "./ui-theme"; import * as Utils from "../utils"; -import PokemonData from "../system/pokemon-data"; +import type PokemonData from "../system/pokemon-data"; import MessageUiHandler from "./message-ui-handler"; import i18next from "i18next"; import { Button } from "../enums/buttons"; import { BattleType } from "../battle"; -import { RunEntry } from "../system/game-data"; +import type { RunEntry } from "../system/game-data"; import { PlayerGender } from "#enums/player-gender"; import { TrainerVariant } from "../field/trainer"; import { RunDisplayMode } from "#app/ui/run-info-ui-handler"; @@ -40,34 +40,34 @@ export default class RunHistoryUiHandler extends MessageUiHandler { private runContainerInitialY: number; - constructor(scene: BattleScene) { - super(scene, Mode.RUN_HISTORY); + constructor() { + super(Mode.RUN_HISTORY); } override setup() { const ui = this.getUi(); - this.runSelectContainer = this.scene.add.container(0, 0); + this.runSelectContainer = globalScene.add.container(0, 0); this.runSelectContainer.setVisible(false); ui.add(this.runSelectContainer); - const loadSessionBg = this.scene.add.rectangle(0, 0, this.scene.game.canvas.width / 6, -this.scene.game.canvas.height / 6, 0x006860); + const loadSessionBg = globalScene.add.rectangle(0, 0, globalScene.game.canvas.width / 6, -globalScene.game.canvas.height / 6, 0x006860); loadSessionBg.setOrigin(0, 0); this.runSelectContainer.add(loadSessionBg); - this.runContainerInitialY = -this.scene.game.canvas.height / 6 + 8; + this.runContainerInitialY = -globalScene.game.canvas.height / 6 + 8; - this.runsContainer = this.scene.add.container(8, this.runContainerInitialY); + this.runsContainer = globalScene.add.container(8, this.runContainerInitialY); this.runSelectContainer.add(this.runsContainer); this.runs = []; - this.scene.loadImage("hall_of_fame_red", "ui"); - this.scene.loadImage("hall_of_fame_blue", "ui"); + globalScene.loadImage("hall_of_fame_red", "ui"); + globalScene.loadImage("hall_of_fame_blue", "ui"); // For some reason, the game deletes/unloads the rival sprites. As a result, Run Info cannot access the rival sprites. // The rivals are loaded here to have some way of accessing those sprites. - this.scene.loadAtlas("rival_f", "trainer"); - this.scene.loadAtlas("rival_m", "trainer"); + globalScene.loadAtlas("rival_f", "trainer"); + globalScene.loadAtlas("rival_m", "trainer"); } override show(args: any[]): boolean { @@ -75,7 +75,7 @@ export default class RunHistoryUiHandler extends MessageUiHandler { this.getUi().bringToTop(this.runSelectContainer); this.runSelectContainer.setVisible(true); - this.populateRuns(this.scene).then(() => { + this.populateRuns().then(() => { this.setScrollCursor(0); this.setCursor(0); @@ -105,7 +105,7 @@ export default class RunHistoryUiHandler extends MessageUiHandler { if (button === Button.ACTION) { const cursor = this.cursor + this.scrollCursor; if (this.runs[cursor]) { - this.scene.ui.setOverlayMode(Mode.RUN_INFO, this.runs[cursor].entryData, RunDisplayMode.RUN_HISTORY, true); + globalScene.ui.setOverlayMode(Mode.RUN_INFO, this.runs[cursor].entryData, RunDisplayMode.RUN_HISTORY, true); } else { return false; } @@ -114,7 +114,7 @@ export default class RunHistoryUiHandler extends MessageUiHandler { } else { this.runSelectCallback = null; success = true; - this.scene.ui.revertMode(); + globalScene.ui.revertMode(); } } else if (this.runs.length > 0) { switch (button) { @@ -153,12 +153,11 @@ export default class RunHistoryUiHandler extends MessageUiHandler { /** * This retrieves the player's run history and facilitates the processes necessary for the output display. - * @param scene: BattleScene * Runs are displayed from newest --> oldest in descending order. * In the for loop, each run is processed to create an RunEntryContainer used to display and store the run's unique information */ - private async populateRuns(scene: BattleScene) { - const response = await this.scene.gameData.getRunHistoryData(this.scene); + private async populateRuns() { + const response = await globalScene.gameData.getRunHistoryData(); const timestamps = Object.keys(response); if (timestamps.length === 0) { this.showEmpty(); @@ -170,8 +169,8 @@ export default class RunHistoryUiHandler extends MessageUiHandler { } const entryCount = timestamps.length; for (let s = 0; s < entryCount; s++) { - const entry = new RunEntryContainer(this.scene, response[timestampsNo[s]], s); - this.scene.add.existing(entry); + const entry = new RunEntryContainer(response[timestampsNo[s]], s); + globalScene.add.existing(entry); this.runsContainer.add(entry); this.runs.push(entry); } @@ -184,10 +183,10 @@ export default class RunHistoryUiHandler extends MessageUiHandler { * If the player has no runs saved so far, this creates a giant window labeled empty instead. */ private async showEmpty() { - const emptyWindow = addWindow(this.scene, 0, 0, 304, 165); + const emptyWindow = addWindow(0, 0, 304, 165); this.runsContainer.add(emptyWindow); const emptyWindowCoordinates = emptyWindow.getCenter(); - const emptyText = addTextObject(this.scene, 0, 0, i18next.t("saveSlotSelectUiHandler:empty"), TextStyle.WINDOW, { fontSize: "128px" }); + const emptyText = addTextObject(0, 0, i18next.t("saveSlotSelectUiHandler:empty"), TextStyle.WINDOW, { fontSize: "128px" }); emptyText.setPosition(emptyWindowCoordinates.x - 18, emptyWindowCoordinates.y - 15); this.runsContainer.add(emptyText); } @@ -196,7 +195,7 @@ export default class RunHistoryUiHandler extends MessageUiHandler { const changed = super.setCursor(cursor); if (!this.cursorObj) { - this.cursorObj = this.scene.add.nineslice(0, 0, "select_cursor_highlight_thick", undefined, 296, 46, 6, 6, 6, 6); + this.cursorObj = globalScene.add.nineslice(0, 0, "select_cursor_highlight_thick", undefined, 296, 46, 6, 6, 6, 6); this.cursorObj.setOrigin(0, 0); this.runsContainer.add(this.cursorObj); } @@ -210,7 +209,7 @@ export default class RunHistoryUiHandler extends MessageUiHandler { if (changed) { this.scrollCursor = scrollCursor; this.setCursor(this.cursor); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this.runsContainer, y: this.runContainerInitialY - 56 * scrollCursor, duration: Utils.fixedInt(325), @@ -255,8 +254,8 @@ class RunEntryContainer extends Phaser.GameObjects.Container { private slotId: number; public entryData: RunEntry; - constructor(scene: BattleScene, entryData: RunEntry, slotId: number) { - super(scene, 0, slotId * 56); + constructor(entryData: RunEntry, slotId: number) { + super(globalScene, 0, slotId * 56); this.slotId = slotId; this.entryData = entryData; @@ -278,31 +277,31 @@ class RunEntryContainer extends Phaser.GameObjects.Container { private setup(run: RunEntry) { const victory = run.isVictory; - const data = this.scene.gameData.parseSessionData(JSON.stringify(run.entry)); + const data = globalScene.gameData.parseSessionData(JSON.stringify(run.entry)); - const slotWindow = addWindow(this.scene, 0, 0, 304, 52); + const slotWindow = addWindow(0, 0, 304, 52); this.add(slotWindow); // Run Result: Victory if (victory) { - const gameOutcomeLabel = addTextObject(this.scene, 8, 5, `${i18next.t("runHistory:victory")}`, TextStyle.WINDOW); + const gameOutcomeLabel = addTextObject(8, 5, `${i18next.t("runHistory:victory")}`, TextStyle.WINDOW); this.add(gameOutcomeLabel); } else { // Run Result: Defeats - const genderIndex = this.scene.gameData.gender ?? PlayerGender.UNSET; + const genderIndex = globalScene.gameData.gender ?? PlayerGender.UNSET; const genderStr = PlayerGender[genderIndex].toLowerCase(); // Defeats from wild Pokemon battles will show the Pokemon responsible by the text of the run result. if (data.battleType === BattleType.WILD || (data.battleType === BattleType.MYSTERY_ENCOUNTER && !data.trainer)) { - const enemyContainer = this.scene.add.container(8, 5); - const gameOutcomeLabel = addTextObject(this.scene, 0, 0, `${i18next.t("runHistory:defeatedWild", { context: genderStr })}`, TextStyle.WINDOW); + const enemyContainer = globalScene.add.container(8, 5); + const gameOutcomeLabel = addTextObject(0, 0, `${i18next.t("runHistory:defeatedWild", { context: genderStr })}`, TextStyle.WINDOW); enemyContainer.add(gameOutcomeLabel); data.enemyParty.forEach((enemyData, e) => { - const enemyIconContainer = this.scene.add.container(65 + (e * 25), -8); + const enemyIconContainer = globalScene.add.container(65 + (e * 25), -8); enemyIconContainer.setScale(0.75); enemyData.boss = false; enemyData["player"] = true; - const enemy = enemyData.toPokemon(this.scene); - const enemyIcon = this.scene.addPokemonIcon(enemy, 0, 0, 0, 0); - const enemyLevel = addTextObject(this.scene, 32, 20, `${i18next.t("saveSlotSelectUiHandler:lv")}${Utils.formatLargeNumber(enemy.level, 1000)}`, TextStyle.PARTY, { fontSize: "54px", color: "#f8f8f8" }); + const enemy = enemyData.toPokemon(); + const enemyIcon = globalScene.addPokemonIcon(enemy, 0, 0, 0, 0); + const enemyLevel = addTextObject(32, 20, `${i18next.t("saveSlotSelectUiHandler:lv")}${Utils.formatLargeNumber(enemy.level, 1000)}`, TextStyle.PARTY, { fontSize: "54px", color: "#f8f8f8" }); enemyLevel.setShadow(0, 0, undefined); enemyLevel.setStroke("#424242", 14); enemyLevel.setOrigin(1, 0); @@ -313,15 +312,15 @@ class RunEntryContainer extends Phaser.GameObjects.Container { }); this.add(enemyContainer); } else if (data.battleType === BattleType.TRAINER || (data.battleType === BattleType.MYSTERY_ENCOUNTER && data.trainer)) { // Defeats from Trainers show the trainer's title and name - const tObj = data.trainer.toTrainer(this.scene); + const tObj = data.trainer.toTrainer(); // Because of the interesting mechanics behind rival names, the rival name and title have to be retrieved differently const RIVAL_TRAINER_ID_THRESHOLD = 375; if (data.trainer.trainerType >= RIVAL_TRAINER_ID_THRESHOLD) { const rivalName = (tObj.variant === TrainerVariant.FEMALE) ? "trainerNames:rival_female" : "trainerNames:rival"; - const gameOutcomeLabel = addTextObject(this.scene, 8, 5, `${i18next.t("runHistory:defeatedRival", { context: genderStr })} ${i18next.t(rivalName)}`, TextStyle.WINDOW); + const gameOutcomeLabel = addTextObject(8, 5, `${i18next.t("runHistory:defeatedRival", { context: genderStr })} ${i18next.t(rivalName)}`, TextStyle.WINDOW); this.add(gameOutcomeLabel); } else { - const gameOutcomeLabel = addTextObject(this.scene, 8, 5, `${i18next.t("runHistory:defeatedTrainer", { context: genderStr })}${tObj.getName(0, true)}`, TextStyle.WINDOW); + const gameOutcomeLabel = addTextObject(8, 5, `${i18next.t("runHistory:defeatedTrainer", { context: genderStr })}${tObj.getName(0, true)}`, TextStyle.WINDOW); this.add(gameOutcomeLabel); } } @@ -330,7 +329,7 @@ class RunEntryContainer extends Phaser.GameObjects.Container { // Game Mode + Waves // Because Endless (Spliced) tends to have the longest name across languages, the line tends to spill into the party icons. // To fix this, the Spliced icon is used to indicate an Endless Spliced run - const gameModeLabel = addTextObject(this.scene, 8, 19, "", TextStyle.WINDOW); + const gameModeLabel = addTextObject(8, 19, "", TextStyle.WINDOW); let mode = ""; switch (data.gameMode) { case GameModes.DAILY: @@ -349,7 +348,7 @@ class RunEntryContainer extends Phaser.GameObjects.Container { } gameModeLabel.appendText(mode, false); if (data.gameMode === GameModes.SPLICED_ENDLESS) { - const splicedIcon = this.scene.add.image(0, 0, "icon_spliced"); + const splicedIcon = globalScene.add.image(0, 0, "icon_spliced"); splicedIcon.setScale(0.75); const coords = gameModeLabel.getTopRight(); splicedIcon.setPosition(coords.x + 5, 27); @@ -362,21 +361,21 @@ class RunEntryContainer extends Phaser.GameObjects.Container { gameModeLabel.appendText(i18next.t("saveSlotSelectUiHandler:wave") + " " + data.waveIndex, false); this.add(gameModeLabel); - const timestampLabel = addTextObject(this.scene, 8, 33, new Date(data.timestamp).toLocaleString(), TextStyle.WINDOW); + const timestampLabel = addTextObject(8, 33, new Date(data.timestamp).toLocaleString(), TextStyle.WINDOW); this.add(timestampLabel); // pokemonIconsContainer holds the run's party Pokemon icons and levels // Icons should be level with each other here, but there are significant number of icons that have a center axis / position far from the norm. // The code here does not account for icon weirdness. - const pokemonIconsContainer = this.scene.add.container(140, 17); + const pokemonIconsContainer = globalScene.add.container(140, 17); data.party.forEach((p: PokemonData, i: number) => { - const iconContainer = this.scene.add.container(26 * i, 0); + const iconContainer = globalScene.add.container(26 * i, 0); iconContainer.setScale(0.75); - const pokemon = p.toPokemon(this.scene); - const icon = this.scene.addPokemonIcon(pokemon, 0, 0, 0, 0); + const pokemon = p.toPokemon(); + const icon = globalScene.addPokemonIcon(pokemon, 0, 0, 0, 0); - const text = addTextObject(this.scene, 32, 20, `${i18next.t("saveSlotSelectUiHandler:lv")}${Utils.formatLargeNumber(pokemon.level, 1000)}`, TextStyle.PARTY, { fontSize: "54px", color: "#f8f8f8" }); + const text = addTextObject(32, 20, `${i18next.t("saveSlotSelectUiHandler:lv")}${Utils.formatLargeNumber(pokemon.level, 1000)}`, TextStyle.PARTY, { fontSize: "54px", color: "#f8f8f8" }); text.setShadow(0, 0, undefined); text.setStroke("#424242", 14); text.setOrigin(1, 0); @@ -392,8 +391,3 @@ class RunEntryContainer extends Phaser.GameObjects.Container { this.add(pokemonIconsContainer); } } - -interface RunEntryContainer { - scene: BattleScene; -} - diff --git a/src/ui/run-info-ui-handler.ts b/src/ui/run-info-ui-handler.ts index 071690aee54..43b95cb3793 100644 --- a/src/ui/run-info-ui-handler.ts +++ b/src/ui/run-info-ui-handler.ts @@ -1,13 +1,12 @@ -import BattleScene from "../battle-scene"; import { GameModes } from "../game-mode"; import UiHandler from "./ui-handler"; -import { SessionSaveData } from "../system/game-data"; +import type { SessionSaveData } from "../system/game-data"; import { TextStyle, addTextObject, addBBCodeTextObject, getTextColor } from "./text"; import { Mode } from "./ui"; import { addWindow } from "./ui-theme"; import { getPokeballAtlasKey } from "#app/data/pokeball"; import * as Utils from "../utils"; -import PokemonData from "../system/pokemon-data"; +import type PokemonData from "../system/pokemon-data"; import i18next from "i18next"; import { Button } from "../enums/buttons"; import { BattleType } from "../battle"; @@ -21,11 +20,12 @@ import { TypeColor, TypeShadow } from "#app/enums/color"; import { getNatureStatMultiplier, getNatureName } from "../data/nature"; import { getVariantTint } from "#app/data/variant"; import * as Modifier from "../modifier/modifier"; -import { Species } from "#enums/species"; +import type { Species } from "#enums/species"; import { PlayerGender } from "#enums/player-gender"; import { SettingKeyboard } from "#app/system/settings/settings-keyboard"; import { getBiomeName } from "#app/data/balance/biomes"; -import { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import type { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import { globalScene } from "#app/global-scene"; /** * RunInfoUiMode indicates possible overlays of RunInfoUiHandler. @@ -67,16 +67,16 @@ export default class RunInfoUiHandler extends UiHandler { private partyVisibility: Boolean; private modifiersModule: any; - constructor(scene: BattleScene) { - super(scene, Mode.RUN_INFO); + constructor() { + super(Mode.RUN_INFO); } override async setup() { - this.runContainer = this.scene.add.container(1, -(this.scene.game.canvas.height / 6) + 1); + this.runContainer = globalScene.add.container(1, -(globalScene.game.canvas.height / 6) + 1); // The import of the modifiersModule is loaded here to sidestep async/await issues. this.modifiersModule = Modifier; this.runContainer.setVisible(false); - this.scene.loadImage("encounter_exclaim", "mystery-encounters"); + globalScene.loadImage("encounter_exclaim", "mystery-encounters"); } /** @@ -93,14 +93,14 @@ export default class RunInfoUiHandler extends UiHandler { override show(args: any[]): boolean { super.show(args); - const gameStatsBg = this.scene.add.rectangle(0, 0, this.scene.game.canvas.width, this.scene.game.canvas.height, 0x006860); + const gameStatsBg = globalScene.add.rectangle(0, 0, globalScene.game.canvas.width, globalScene.game.canvas.height, 0x006860); gameStatsBg.setOrigin(0, 0); this.runContainer.add(gameStatsBg); const run = args[0]; this.runDisplayMode = args[1]; if (this.runDisplayMode === RunDisplayMode.RUN_HISTORY) { - this.runInfo = this.scene.gameData.parseSessionData(JSON.stringify(run.entry)); + this.runInfo = globalScene.gameData.parseSessionData(JSON.stringify(run.entry)); this.isVictory = run.isVictory ?? false; } else if (this.runDisplayMode === RunDisplayMode.SESSION_PREVIEW) { this.runInfo = args[0]; @@ -112,11 +112,11 @@ export default class RunInfoUiHandler extends UiHandler { // Creates Header and adds to this.runContainer this.addHeader(); - this.statsBgWidth = ((this.scene.game.canvas.width / 6) - 2) / 3; + this.statsBgWidth = ((globalScene.game.canvas.width / 6) - 2) / 3; // Creates Run Result Container - this.runResultContainer = this.scene.add.container(0, 24); - const runResultWindow = addWindow(this.scene, 0, 0, this.statsBgWidth - 11, 65); + this.runResultContainer = globalScene.add.container(0, 24); + const runResultWindow = addWindow(0, 0, this.statsBgWidth - 11, 65); runResultWindow.setOrigin(0, 0); runResultWindow.setName("Run_Result_Window"); this.runResultContainer.add(runResultWindow); @@ -127,18 +127,18 @@ export default class RunInfoUiHandler extends UiHandler { } // Creates Run Info Container - this.runInfoContainer = this.scene.add.container(0, 89); - const runInfoWindow = addWindow(this.scene, 0, 0, this.statsBgWidth - 11, 90); + this.runInfoContainer = globalScene.add.container(0, 89); + const runInfoWindow = addWindow(0, 0, this.statsBgWidth - 11, 90); const runInfoWindowCoords = runInfoWindow.getBottomRight(); this.runInfoContainer.add(runInfoWindow); this.parseRunInfo(runInfoWindowCoords.x, runInfoWindowCoords.y); // Creates Player Party Container - this.partyContainer = this.scene.add.container(this.statsBgWidth - 10, 23); + this.partyContainer = globalScene.add.container(this.statsBgWidth - 10, 23); this.parsePartyInfo(); this.showParty(true); - this.runContainer.setInteractive(new Phaser.Geom.Rectangle(0, 0, this.scene.game.canvas.width / 6, this.scene.game.canvas.height / 6), Phaser.Geom.Rectangle.Contains); + this.runContainer.setInteractive(new Phaser.Geom.Rectangle(0, 0, globalScene.game.canvas.width / 6, globalScene.game.canvas.height / 6), Phaser.Geom.Rectangle.Contains); this.getUi().bringToTop(this.runContainer); this.runContainer.setVisible(true); @@ -163,25 +163,25 @@ export default class RunInfoUiHandler extends UiHandler { * It does not check if the run has any PokemonHeldItemModifiers though. */ private addHeader() { - const headerBg = addWindow(this.scene, 0, 0, (this.scene.game.canvas.width / 6) - 2, 24); + const headerBg = addWindow(0, 0, (globalScene.game.canvas.width / 6) - 2, 24); headerBg.setOrigin(0, 0); this.runContainer.add(headerBg); if (this.runInfo.modifiers.length !== 0) { const headerBgCoords = headerBg.getTopRight(); - const abilityButtonContainer = this.scene.add.container(0, 0); - const abilityButtonText = addTextObject(this.scene, 8, 0, i18next.t("runHistory:viewHeldItems"), TextStyle.WINDOW, { fontSize:"34px" }); + const abilityButtonContainer = globalScene.add.container(0, 0); + const abilityButtonText = addTextObject(8, 0, i18next.t("runHistory:viewHeldItems"), TextStyle.WINDOW, { fontSize:"34px" }); const gamepadType = this.getUi().getGamepadType(); let abilityButtonElement: Phaser.GameObjects.Sprite; if (gamepadType === "touch") { - abilityButtonElement = new Phaser.GameObjects.Sprite(this.scene, 0, 2, "keyboard", "E.png"); + abilityButtonElement = new Phaser.GameObjects.Sprite(globalScene, 0, 2, "keyboard", "E.png"); } else { - abilityButtonElement = new Phaser.GameObjects.Sprite(this.scene, 0, 2, gamepadType, this.scene.inputController?.getIconForLatestInputRecorded(SettingKeyboard.Button_Cycle_Ability)); + abilityButtonElement = new Phaser.GameObjects.Sprite(globalScene, 0, 2, gamepadType, globalScene.inputController?.getIconForLatestInputRecorded(SettingKeyboard.Button_Cycle_Ability)); } abilityButtonContainer.add([ abilityButtonText, abilityButtonElement ]); abilityButtonContainer.setPosition(headerBgCoords.x - abilityButtonText.displayWidth - abilityButtonElement.displayWidth - 8, 10); this.runContainer.add(abilityButtonContainer); } - const headerText = addTextObject(this.scene, 0, 0, i18next.t("runHistory:runInfo"), TextStyle.SETTINGS_LABEL); + const headerText = addTextObject(0, 0, i18next.t("runHistory:runInfo"), TextStyle.SETTINGS_LABEL); headerText.setOrigin(0, 0); headerText.setPositionRelative(headerBg, 8, 4); this.runContainer.add(headerText); @@ -196,25 +196,25 @@ export default class RunInfoUiHandler extends UiHandler { * */ private async parseRunResult() { - const genderIndex = this.scene.gameData.gender ?? PlayerGender.UNSET; + const genderIndex = globalScene.gameData.gender ?? PlayerGender.UNSET; const genderStr = PlayerGender[genderIndex]; const runResultTextStyle = this.isVictory ? TextStyle.PERFECT_IV : TextStyle.SUMMARY_RED; const runResultTitle = this.isVictory ? i18next.t("runHistory:victory") : i18next.t("runHistory:defeated", { context: genderStr }); - const runResultText = addTextObject(this.scene, 6, 5, `${runResultTitle} - ${i18next.t("saveSlotSelectUiHandler:wave")} ${this.runInfo.waveIndex}`, runResultTextStyle, { fontSize : "65px", lineSpacing: 0.1 }); + const runResultText = addTextObject(6, 5, `${runResultTitle} - ${i18next.t("saveSlotSelectUiHandler:wave")} ${this.runInfo.waveIndex}`, runResultTextStyle, { fontSize : "65px", lineSpacing: 0.1 }); if (this.isVictory) { - const hallofFameInstructionContainer = this.scene.add.container(0, 0); - const shinyButtonText = addTextObject(this.scene, 8, 0, i18next.t("runHistory:viewHallOfFame"), TextStyle.WINDOW, { fontSize:"65px" }); - const formButtonText = addTextObject(this.scene, 8, 12, i18next.t("runHistory:viewEndingSplash"), TextStyle.WINDOW, { fontSize:"65px" }); + const hallofFameInstructionContainer = globalScene.add.container(0, 0); + const shinyButtonText = addTextObject(8, 0, i18next.t("runHistory:viewHallOfFame"), TextStyle.WINDOW, { fontSize:"65px" }); + const formButtonText = addTextObject(8, 12, i18next.t("runHistory:viewEndingSplash"), TextStyle.WINDOW, { fontSize:"65px" }); const gamepadType = this.getUi().getGamepadType(); let shinyButtonElement: Phaser.GameObjects.Sprite; let formButtonElement: Phaser.GameObjects.Sprite; if (gamepadType === "touch") { - shinyButtonElement = new Phaser.GameObjects.Sprite(this.scene, 0, 4, "keyboard", "R.png"); - formButtonElement = new Phaser.GameObjects.Sprite(this.scene, 0, 16, "keyboard", "F.png"); + shinyButtonElement = new Phaser.GameObjects.Sprite(globalScene, 0, 4, "keyboard", "R.png"); + formButtonElement = new Phaser.GameObjects.Sprite(globalScene, 0, 16, "keyboard", "F.png"); } else { - shinyButtonElement = new Phaser.GameObjects.Sprite(this.scene, 0, 4, gamepadType, this.scene.inputController?.getIconForLatestInputRecorded(SettingKeyboard.Button_Cycle_Shiny)); - formButtonElement = new Phaser.GameObjects.Sprite(this.scene, 0, 16, gamepadType, this.scene.inputController?.getIconForLatestInputRecorded(SettingKeyboard.Button_Cycle_Form)); + shinyButtonElement = new Phaser.GameObjects.Sprite(globalScene, 0, 4, gamepadType, globalScene.inputController?.getIconForLatestInputRecorded(SettingKeyboard.Button_Cycle_Shiny)); + formButtonElement = new Phaser.GameObjects.Sprite(globalScene, 0, 16, gamepadType, globalScene.inputController?.getIconForLatestInputRecorded(SettingKeyboard.Button_Cycle_Form)); } hallofFameInstructionContainer.add([ shinyButtonText, shinyButtonElement ]); @@ -227,7 +227,7 @@ export default class RunInfoUiHandler extends UiHandler { this.runResultContainer.add(runResultText); if (!this.isVictory) { - const enemyContainer = this.scene.add.container(0, 0); + const enemyContainer = globalScene.add.container(0, 0); // Wild - Single and Doubles if (this.runInfo.battleType === BattleType.WILD || (this.runInfo.battleType === BattleType.MYSTERY_ENCOUNTER && !this.runInfo.trainer)) { switch (this.runInfo.enemyParty.length) { @@ -255,7 +255,7 @@ export default class RunInfoUiHandler extends UiHandler { * Mystery Encounters contain sprites associated with MEs + the title of the specific ME. */ private parseRunStatus() { - const enemyContainer = this.scene.add.container(0, 0); + const enemyContainer = globalScene.add.container(0, 0); this.runResultContainer.add(enemyContainer); if (this.runInfo.battleType === BattleType.WILD) { if (this.runInfo.enemyParty.length === 1) { @@ -267,13 +267,13 @@ export default class RunInfoUiHandler extends UiHandler { this.showTrainerSprites(enemyContainer); const row_limit = 3; this.runInfo.enemyParty.forEach((p, i) => { - const pokeball = this.scene.add.sprite(0, 0, "pb"); + const pokeball = globalScene.add.sprite(0, 0, "pb"); pokeball.setFrame(getPokeballAtlasKey(p.pokeball)); pokeball.setScale(0.5); pokeball.setPosition(58 + ((i % row_limit) * 8), (i <= 2) ? 18 : 25); enemyContainer.add(pokeball); }); - const trainerObj = this.runInfo.trainer.toTrainer(this.scene); + const trainerObj = this.runInfo.trainer.toTrainer(); const RIVAL_TRAINER_ID_THRESHOLD = 375; let trainerName = ""; if (this.runInfo.trainer.trainerType >= RIVAL_TRAINER_ID_THRESHOLD) { @@ -282,21 +282,21 @@ export default class RunInfoUiHandler extends UiHandler { trainerName = trainerObj.getName(0, true); } const boxString = i18next.t(trainerObj.variant !== TrainerVariant.DOUBLE ? "battle:trainerAppeared" : "battle:trainerAppearedDouble", { trainerName: trainerName }).replace(/\n/g, " "); - const descContainer = this.scene.add.container(0, 0); - const textBox = addTextObject(this.scene, 0, 0, boxString, TextStyle.WINDOW, { fontSize : "35px", wordWrap: { width: 200 }}); + const descContainer = globalScene.add.container(0, 0); + const textBox = addTextObject(0, 0, boxString, TextStyle.WINDOW, { fontSize : "35px", wordWrap: { width: 200 }}); descContainer.add(textBox); descContainer.setPosition(55, 32); this.runResultContainer.add(descContainer); } else if (this.runInfo.battleType === BattleType.MYSTERY_ENCOUNTER) { - const encounterExclaim = this.scene.add.sprite(0, 0, "encounter_exclaim"); + const encounterExclaim = globalScene.add.sprite(0, 0, "encounter_exclaim"); encounterExclaim.setPosition(34, 26); encounterExclaim.setScale(0.65); - const subSprite = this.scene.add.sprite(56, -106, "pkmn__sub"); + const subSprite = globalScene.add.sprite(56, -106, "pkmn__sub"); subSprite.setScale(0.65); subSprite.setPosition(34, 46); - const mysteryEncounterTitle = i18next.t(this.scene.getMysteryEncounter(this.runInfo.mysteryEncounterType as MysteryEncounterType, true).localizationKey + ":title"); - const descContainer = this.scene.add.container(0, 0); - const textBox = addTextObject(this.scene, 0, 0, mysteryEncounterTitle, TextStyle.WINDOW, { fontSize : "45px", wordWrap: { width: 160 }}); + const mysteryEncounterTitle = i18next.t(globalScene.getMysteryEncounter(this.runInfo.mysteryEncounterType as MysteryEncounterType, true).localizationKey + ":title"); + const descContainer = globalScene.add.container(0, 0); + const textBox = addTextObject(0, 0, mysteryEncounterTitle, TextStyle.WINDOW, { fontSize : "45px", wordWrap: { width: 160 }}); descContainer.add(textBox); descContainer.setPosition(47, 37); this.runResultContainer.add([ encounterExclaim, subSprite, descContainer ]); @@ -306,10 +306,10 @@ export default class RunInfoUiHandler extends UiHandler { const windowCenterX = runResultWindow.getTopCenter().x; const windowBottomY = runResultWindow.getBottomCenter().y; - const runStatusText = addTextObject(this.scene, windowCenterX, 5, `${i18next.t("saveSlotSelectUiHandler:wave")} ${this.runInfo.waveIndex}`, TextStyle.WINDOW, { fontSize : "60px", lineSpacing: 0.1 }); + const runStatusText = addTextObject(windowCenterX, 5, `${i18next.t("saveSlotSelectUiHandler:wave")} ${this.runInfo.waveIndex}`, TextStyle.WINDOW, { fontSize : "60px", lineSpacing: 0.1 }); runStatusText.setOrigin(0.5, 0); - const currentBiomeText = addTextObject(this.scene, windowCenterX, windowBottomY - 5, `${getBiomeName(this.runInfo.arena.biome)}`, TextStyle.WINDOW, { fontSize: "60px" }); + const currentBiomeText = addTextObject(windowCenterX, windowBottomY - 5, `${getBiomeName(this.runInfo.arena.biome)}`, TextStyle.WINDOW, { fontSize: "60px" }); currentBiomeText.setOrigin(0.5, 1); this.runResultContainer.add([ runStatusText, currentBiomeText ]); @@ -321,16 +321,16 @@ export default class RunInfoUiHandler extends UiHandler { * @param enemyContainer - container holding enemy visual and level information */ private parseWildSingleDefeat(enemyContainer: Phaser.GameObjects.Container) { - const enemyIconContainer = this.scene.add.container(0, 0); + const enemyIconContainer = globalScene.add.container(0, 0); const enemyData = this.runInfo.enemyParty[0]; const bossStatus = enemyData.boss; enemyData.boss = false; enemyData["player"] = true; //addPokemonIcon() throws an error if the Pokemon used is a boss - const enemy = enemyData.toPokemon(this.scene); - const enemyIcon = this.scene.addPokemonIcon(enemy, 0, 0, 0, 0); + const enemy = enemyData.toPokemon(); + const enemyIcon = globalScene.addPokemonIcon(enemy, 0, 0, 0, 0); const enemyLevelStyle = bossStatus ? TextStyle.PARTY_RED : TextStyle.PARTY; - const enemyLevel = addTextObject(this.scene, 36, 26, `${i18next.t("saveSlotSelectUiHandler:lv")}${Utils.formatLargeNumber(enemy.level, 1000)}`, enemyLevelStyle, { fontSize: "44px", color: "#f8f8f8" }); + const enemyLevel = addTextObject(36, 26, `${i18next.t("saveSlotSelectUiHandler:lv")}${Utils.formatLargeNumber(enemy.level, 1000)}`, enemyLevelStyle, { fontSize: "44px", color: "#f8f8f8" }); enemyLevel.setShadow(0, 0, undefined); enemyLevel.setStroke("#424242", 14); enemyLevel.setOrigin(1, 0); @@ -348,13 +348,13 @@ export default class RunInfoUiHandler extends UiHandler { */ private parseWildDoubleDefeat(enemyContainer: Phaser.GameObjects.Container) { this.runInfo.enemyParty.forEach((enemyData, e) => { - const enemyIconContainer = this.scene.add.container(0, 0); + const enemyIconContainer = globalScene.add.container(0, 0); const bossStatus = enemyData.boss; enemyData.boss = false; enemyData["player"] = true; - const enemy = enemyData.toPokemon(this.scene); - const enemyIcon = this.scene.addPokemonIcon(enemy, 0, 0, 0, 0); - const enemyLevel = addTextObject(this.scene, 36, 26, `${i18next.t("saveSlotSelectUiHandler:lv")}${Utils.formatLargeNumber(enemy.level, 1000)}`, bossStatus ? TextStyle.PARTY_RED : TextStyle.PARTY, { fontSize: "44px", color: "#f8f8f8" }); + const enemy = enemyData.toPokemon(); + const enemyIcon = globalScene.addPokemonIcon(enemy, 0, 0, 0, 0); + const enemyLevel = addTextObject(36, 26, `${i18next.t("saveSlotSelectUiHandler:lv")}${Utils.formatLargeNumber(enemy.level, 1000)}`, bossStatus ? TextStyle.PARTY_RED : TextStyle.PARTY, { fontSize: "44px", color: "#f8f8f8" }); enemyLevel.setShadow(0, 0, undefined); enemyLevel.setStroke("#424242", 14); enemyLevel.setOrigin(1, 0); @@ -374,16 +374,16 @@ export default class RunInfoUiHandler extends UiHandler { */ private showTrainerSprites(enemyContainer: Phaser.GameObjects.Container) { // Creating the trainer sprite and adding it to enemyContainer - const tObj = this.runInfo.trainer.toTrainer(this.scene); + const tObj = this.runInfo.trainer.toTrainer(); // Loads trainer assets on demand, as they are not loaded by default in the scene - tObj.config.loadAssets(this.scene, this.runInfo.trainer.variant).then(() => { + tObj.config.loadAssets(this.runInfo.trainer.variant).then(() => { const tObjSpriteKey = tObj.config.getSpriteKey(this.runInfo.trainer.variant === TrainerVariant.FEMALE, false); - const tObjSprite = this.scene.add.sprite(0, 5, tObjSpriteKey); + const tObjSprite = globalScene.add.sprite(0, 5, tObjSpriteKey); if (this.runInfo.trainer.variant === TrainerVariant.DOUBLE && !tObj.config.doubleOnly) { - const doubleContainer = this.scene.add.container(5, 8); + const doubleContainer = globalScene.add.container(5, 8); tObjSprite.setPosition(-3, -3); const tObjPartnerSpriteKey = tObj.config.getSpriteKey(true, true); - const tObjPartnerSprite = this.scene.add.sprite(5, -3, tObjPartnerSpriteKey); + const tObjPartnerSprite = globalScene.add.sprite(5, -3, tObjPartnerSpriteKey); // Double Trainers have smaller sprites than Single Trainers if (this.runDisplayMode === RunDisplayMode.RUN_HISTORY) { tObjPartnerSprite.setScale(0.20); @@ -424,7 +424,7 @@ export default class RunInfoUiHandler extends UiHandler { // Creates a dictionary {PokemonId: TeraShardType} const teraPokemon = {}; this.runInfo.enemyModifiers.forEach((m) => { - const modifier = m.toModifier(this.scene, this.modifiersModule[m.className]); + const modifier = m.toModifier(this.modifiersModule[m.className]); if (modifier instanceof Modifier.TerastallizeModifier) { const teraDetails = modifier?.getArgs(); const pkmnId = teraDetails[0]; @@ -434,16 +434,16 @@ export default class RunInfoUiHandler extends UiHandler { // Creates the Pokemon icons + level information and adds it to enemyContainer // 2 Rows x 3 Columns - const enemyPartyContainer = this.scene.add.container(0, 0); + const enemyPartyContainer = globalScene.add.container(0, 0); this.runInfo.enemyParty.forEach((enemyData, e) => { const pokemonRowHeight = Math.floor(e / 3); - const enemyIconContainer = this.scene.add.container(0, 0); + const enemyIconContainer = globalScene.add.container(0, 0); enemyIconContainer.setScale(0.6); const isBoss = enemyData.boss; enemyData.boss = false; enemyData["player"] = true; - const enemy = enemyData.toPokemon(this.scene); - const enemyIcon = this.scene.addPokemonIcon(enemy, 0, 0, 0, 0); + const enemy = enemyData.toPokemon(); + const enemyIcon = globalScene.addPokemonIcon(enemy, 0, 0, 0, 0); // Applying Terastallizing Type tint to Pokemon icon // If the Pokemon is a fusion, it has two sprites and so, the tint has to be applied to each icon separately const enemySprite1 = enemyIcon.list[0] as Phaser.GameObjects.Sprite; @@ -457,7 +457,7 @@ export default class RunInfoUiHandler extends UiHandler { } } enemyIcon.setPosition(39 * (e % 3) + 5, (35 * pokemonRowHeight)); - const enemyLevel = addTextObject(this.scene, 43 * (e % 3), (27 * (pokemonRowHeight + 1)), `${i18next.t("saveSlotSelectUiHandler:lv")}${Utils.formatLargeNumber(enemy.level, 1000)}`, isBoss ? TextStyle.PARTY_RED : TextStyle.PARTY, { fontSize: "54px" }); + const enemyLevel = addTextObject(43 * (e % 3), (27 * (pokemonRowHeight + 1)), `${i18next.t("saveSlotSelectUiHandler:lv")}${Utils.formatLargeNumber(enemy.level, 1000)}`, isBoss ? TextStyle.PARTY_RED : TextStyle.PARTY, { fontSize: "54px" }); enemyLevel.setShadow(0, 0, undefined); enemyLevel.setStroke("#424242", 14); enemyLevel.setOrigin(0, 0); @@ -480,7 +480,7 @@ export default class RunInfoUiHandler extends UiHandler { private async parseRunInfo(windowX: number, windowY: number) { // Parsing and displaying the mode. // In the future, parsing Challenges + Challenge Rules may have to be reworked as PokeRogue adds additional challenges and users can stack these challenges in various ways. - const modeText = addBBCodeTextObject(this.scene, 7, 0, "", TextStyle.WINDOW, { fontSize : "50px", lineSpacing:3 }); + const modeText = addBBCodeTextObject(7, 0, "", TextStyle.WINDOW, { fontSize : "50px", lineSpacing:3 }); modeText.setPosition(7, 5); modeText.appendText(i18next.t("runHistory:mode") + ": ", false); switch (this.runInfo.gameMode) { @@ -514,27 +514,27 @@ export default class RunInfoUiHandler extends UiHandler { } // If the player achieves a personal best in Endless, the mode text will be tinted similarly to SSS luck to celebrate their achievement. - if ((this.runInfo.gameMode === GameModes.ENDLESS || this.runInfo.gameMode === GameModes.SPLICED_ENDLESS) && this.runInfo.waveIndex === this.scene.gameData.gameStats.highestEndlessWave) { + if ((this.runInfo.gameMode === GameModes.ENDLESS || this.runInfo.gameMode === GameModes.SPLICED_ENDLESS) && this.runInfo.waveIndex === globalScene.gameData.gameStats.highestEndlessWave) { modeText.appendText(` [${i18next.t("runHistory:personalBest")}]`); modeText.setTint(0xffef5c, 0x47ff69, 0x6b6bff, 0xff6969); } // Duration + Money - const runInfoTextContainer = this.scene.add.container(0, 0); + const runInfoTextContainer = globalScene.add.container(0, 0); // Japanese is set to a greater line spacing of 35px in addBBCodeTextObject() if lineSpacing < 12. const lineSpacing = (i18next.resolvedLanguage === "ja") ? 12 : 3; - const runInfoText = addBBCodeTextObject(this.scene, 7, 0, "", TextStyle.WINDOW, { fontSize: "50px", lineSpacing: lineSpacing }); + const runInfoText = addBBCodeTextObject(7, 0, "", TextStyle.WINDOW, { fontSize: "50px", lineSpacing: lineSpacing }); const runTime = Utils.getPlayTimeString(this.runInfo.playTime); runInfoText.appendText(`${i18next.t("runHistory:runLength")}: ${runTime}`, false); - const runMoney = Utils.formatMoney(this.scene.moneyFormat, this.runInfo.money); - const moneyTextColor = getTextColor(TextStyle.MONEY_WINDOW, false, this.scene.uiTheme); + const runMoney = Utils.formatMoney(globalScene.moneyFormat, this.runInfo.money); + const moneyTextColor = getTextColor(TextStyle.MONEY_WINDOW, false, globalScene.uiTheme); runInfoText.appendText(`[color=${moneyTextColor}]${i18next.t("battleScene:moneyOwned", { formattedMoney : runMoney })}[/color]`); runInfoText.setPosition(7, 70); runInfoTextContainer.add(runInfoText); // Luck // Uses the parameters windowX and windowY to dynamically position the luck value neatly into the bottom right corner - const luckText = addBBCodeTextObject(this.scene, 0, 0, "", TextStyle.WINDOW, { fontSize: "55px" }); - const luckValue = Phaser.Math.Clamp(this.runInfo.party.map(p => p.toPokemon(this.scene).getLuck()).reduce((total: integer, value: integer) => total += value, 0), 0, 14); + const luckText = addBBCodeTextObject(0, 0, "", TextStyle.WINDOW, { fontSize: "55px" }); + const luckValue = Phaser.Math.Clamp(this.runInfo.party.map(p => p.toPokemon().getLuck()).reduce((total: integer, value: integer) => total += value, 0), 0, 14); let luckInfo = i18next.t("runHistory:luck") + ": " + getLuckString(luckValue); if (luckValue < 14) { luckInfo = "[color=#" + (getLuckTextTint(luckValue)).toString(16) + "]" + luckInfo + "[/color]"; @@ -550,14 +550,14 @@ export default class RunInfoUiHandler extends UiHandler { if (this.runInfo.modifiers.length) { let visibleModifierIndex = 0; - const modifierIconsContainer = this.scene.add.container(8, (this.runInfo.gameMode === GameModes.CHALLENGE) ? 20 : 15); + const modifierIconsContainer = globalScene.add.container(8, (this.runInfo.gameMode === GameModes.CHALLENGE) ? 20 : 15); modifierIconsContainer.setScale(0.45); for (const m of this.runInfo.modifiers) { - const modifier = m.toModifier(this.scene, this.modifiersModule[m.className]); + const modifier = m.toModifier(this.modifiersModule[m.className]); if (modifier instanceof Modifier.PokemonHeldItemModifier) { continue; } - const icon = modifier?.getIcon(this.scene, false); + const icon = modifier?.getIcon(false); if (icon) { const rowHeightModifier = Math.floor(visibleModifierIndex / 7); icon.setPosition(24 * (visibleModifierIndex % 7), 20 + (35 * rowHeightModifier)); @@ -565,7 +565,7 @@ export default class RunInfoUiHandler extends UiHandler { } if (++visibleModifierIndex === 20) { - const maxItems = addTextObject(this.scene, 45, 90, "+", TextStyle.WINDOW); + const maxItems = addTextObject(45, 90, "+", TextStyle.WINDOW); maxItems.setPositionRelative(modifierIconsContainer, 70, 45); this.runInfoContainer.add(maxItems); break; @@ -619,13 +619,13 @@ export default class RunInfoUiHandler extends UiHandler { private parsePartyInfo(): void { const party = this.runInfo.party; const currentLanguage = i18next.resolvedLanguage ?? "en"; - const windowHeight = ((this.scene.game.canvas.height / 6) - 23) / 6; + const windowHeight = ((globalScene.game.canvas.height / 6) - 23) / 6; party.forEach((p: PokemonData, i: integer) => { - const pokemonInfoWindow = new RoundRectangle(this.scene, 0, 14, (this.statsBgWidth * 2) + 10, windowHeight - 2, 3); + const pokemonInfoWindow = new RoundRectangle(globalScene, 0, 14, (this.statsBgWidth * 2) + 10, windowHeight - 2, 3); - const pokemon = p.toPokemon(this.scene); - const pokemonInfoContainer = this.scene.add.container(this.statsBgWidth + 5, (windowHeight - 0.5) * i); + const pokemon = p.toPokemon(); + const pokemonInfoContainer = globalScene.add.container(this.statsBgWidth + 5, (windowHeight - 0.5) * i); const types = pokemon.getTypes(); const type1 = getTypeRgb(types[0]); @@ -634,8 +634,8 @@ export default class RunInfoUiHandler extends UiHandler { const bgColor = type1Color.clone().darken(45); pokemonInfoWindow.setFillStyle(bgColor.color); - const iconContainer = this.scene.add.container(0, 0); - const icon = this.scene.addPokemonIcon(pokemon, 0, 0, 0, 0); + const iconContainer = globalScene.add.container(0, 0); + const icon = globalScene.addPokemonIcon(pokemon, 0, 0, 0, 0); icon.setScale(0.75); icon.setPosition(-99, 1); const type2 = types[1] ? getTypeRgb(types[1]) : undefined; @@ -645,7 +645,7 @@ export default class RunInfoUiHandler extends UiHandler { this.getUi().bringToTop(icon); // Contains Name, Level + Nature, Ability, Passive - const pokeInfoTextContainer = this.scene.add.container(-85, 3.5); + const pokeInfoTextContainer = globalScene.add.container(-85, 3.5); const textContainerFontSize = "34px"; // This checks if the Pokemon's nature has been overwritten during the run and displays the change accurately const pNature = pokemon.getNature(); @@ -664,7 +664,7 @@ export default class RunInfoUiHandler extends UiHandler { const pAbilityInfo = abilityLabel + ": " + pokemon.getAbility().name; // Japanese is set to a greater line spacing of 35px in addBBCodeTextObject() if lineSpacing < 12. const lineSpacing = (i18next.resolvedLanguage === "ja") ? 12 : 3; - const pokeInfoText = addBBCodeTextObject(this.scene, 0, 0, pName, TextStyle.SUMMARY, { fontSize: textContainerFontSize, lineSpacing: lineSpacing }); + const pokeInfoText = addBBCodeTextObject(0, 0, pName, TextStyle.SUMMARY, { fontSize: textContainerFontSize, lineSpacing: lineSpacing }); pokeInfoText.appendText(`${i18next.t("saveSlotSelectUiHandler:lv")}${Utils.formatFancyLargeNumber(pokemon.level, 1)} - ${pNatureName}`); pokeInfoText.appendText(pAbilityInfo); pokeInfoText.appendText(pPassiveInfo); @@ -672,7 +672,7 @@ export default class RunInfoUiHandler extends UiHandler { // Pokemon Stats // Colored Arrows (Red/Blue) are placed by stats that are boosted from natures - const pokeStatTextContainer = this.scene.add.container(-35, 6); + const pokeStatTextContainer = globalScene.add.container(-35, 6); const pStats : string[] = []; pokemon.stats.forEach((element) => pStats.push(Utils.formatFancyLargeNumber(element, 1))); for (let i = 0; i < pStats.length; i++) { @@ -688,20 +688,20 @@ export default class RunInfoUiHandler extends UiHandler { const speedLabel = (currentLanguage === "es-ES" || currentLanguage === "pt_BR") ? i18next.t("runHistory:SPDshortened") : i18next.t("pokemonInfo:Stat.SPDshortened"); const speed = speedLabel + ": " + pStats[5]; // Column 1: HP Atk Def - const pokeStatText1 = addBBCodeTextObject(this.scene, -5, 0, hp, TextStyle.SUMMARY, { fontSize: textContainerFontSize, lineSpacing: lineSpacing }); + const pokeStatText1 = addBBCodeTextObject(-5, 0, hp, TextStyle.SUMMARY, { fontSize: textContainerFontSize, lineSpacing: lineSpacing }); pokeStatText1.appendText(atk); pokeStatText1.appendText(def); pokeStatTextContainer.add(pokeStatText1); // Column 2: SpAtk SpDef Speed - const pokeStatText2 = addBBCodeTextObject(this.scene, 25, 0, spatk, TextStyle.SUMMARY, { fontSize: textContainerFontSize, lineSpacing: lineSpacing }); + const pokeStatText2 = addBBCodeTextObject(25, 0, spatk, TextStyle.SUMMARY, { fontSize: textContainerFontSize, lineSpacing: lineSpacing }); pokeStatText2.appendText(spdef); pokeStatText2.appendText(speed); pokeStatTextContainer.add(pokeStatText2); // Shiny + Fusion Status - const marksContainer = this.scene.add.container(0, 0); + const marksContainer = globalScene.add.container(0, 0); if (pokemon.fusionSpecies) { - const splicedIcon = this.scene.add.image(0, 0, "icon_spliced"); + const splicedIcon = globalScene.add.image(0, 0, "icon_spliced"); splicedIcon.setScale(0.35); splicedIcon.setOrigin(0, 0); pokemon.isShiny() ? splicedIcon.setPositionRelative(pokeInfoTextContainer, 35, 0) : splicedIcon.setPositionRelative(pokeInfoTextContainer, 28, 0); @@ -710,7 +710,7 @@ export default class RunInfoUiHandler extends UiHandler { } if (pokemon.isShiny()) { const doubleShiny = pokemon.isFusion() && pokemon.shiny && pokemon.fusionShiny; - const shinyStar = this.scene.add.image(0, 0, `shiny_star_small${doubleShiny ? "_1" : ""}`); + const shinyStar = globalScene.add.image(0, 0, `shiny_star_small${doubleShiny ? "_1" : ""}`); shinyStar.setOrigin(0, 0); shinyStar.setScale(0.65); shinyStar.setPositionRelative(pokeInfoTextContainer, 28, 0); @@ -718,7 +718,7 @@ export default class RunInfoUiHandler extends UiHandler { marksContainer.add(shinyStar); this.getUi().bringToTop(shinyStar); if (doubleShiny) { - const fusionShinyStar = this.scene.add.image(0, 0, "shiny_star_small_2"); + const fusionShinyStar = globalScene.add.image(0, 0, "shiny_star_small_2"); fusionShinyStar.setOrigin(0, 0); fusionShinyStar.setScale(0.5); fusionShinyStar.setPosition(shinyStar.x + 1, shinyStar.y + 1); @@ -731,16 +731,16 @@ export default class RunInfoUiHandler extends UiHandler { // Pokemon Moveset // Need to check if dynamically typed moves const pokemonMoveset = pokemon.getMoveset(); - const movesetContainer = this.scene.add.container(70, -29); + const movesetContainer = globalScene.add.container(70, -29); const pokemonMoveBgs : Phaser.GameObjects.NineSlice[] = []; const pokemonMoveLabels : Phaser.GameObjects.Text[] = []; const movePos = [[ -6.5, 35.5 ], [ 37, 35.5 ], [ -6.5, 43.5 ], [ 37, 43.5 ]]; for (let m = 0; m < pokemonMoveset?.length; m++) { - const moveContainer = this.scene.add.container(movePos[m][0], movePos[m][1]); + const moveContainer = globalScene.add.container(movePos[m][0], movePos[m][1]); moveContainer.setScale(0.5); - const moveBg = this.scene.add.nineslice(0, 0, "type_bgs", "unknown", 85, 15, 2, 2, 2, 2); + const moveBg = globalScene.add.nineslice(0, 0, "type_bgs", "unknown", 85, 15, 2, 2, 2, 2); moveBg.setOrigin(1, 0); - const moveLabel = addTextObject(this.scene, -moveBg.width / 2, 2, "-", TextStyle.PARTY); + const moveLabel = addTextObject(-moveBg.width / 2, 2, "-", TextStyle.PARTY); moveLabel.setOrigin(0.5, 0); moveLabel.setName("text-move-label"); pokemonMoveBgs.push(moveBg); @@ -756,11 +756,11 @@ export default class RunInfoUiHandler extends UiHandler { // Pokemon Held Items - not displayed by default // Endless/Endless Spliced have a different scale because Pokemon tend to accumulate more items in these runs. const heldItemsScale = (this.runInfo.gameMode === GameModes.SPLICED_ENDLESS || this.runInfo.gameMode === GameModes.ENDLESS) ? 0.25 : 0.5; - const heldItemsContainer = this.scene.add.container(-82, 2); + const heldItemsContainer = globalScene.add.container(-82, 2); const heldItemsList : Modifier.PokemonHeldItemModifier[] = []; if (this.runInfo.modifiers.length) { for (const m of this.runInfo.modifiers) { - const modifier = m.toModifier(this.scene, this.modifiersModule[m.className]); + const modifier = m.toModifier(this.modifiersModule[m.className]); if (modifier instanceof Modifier.PokemonHeldItemModifier && modifier.pokemonId === pokemon.id) { modifier.stackCount = m["stackCount"]; heldItemsList.push(modifier); @@ -771,11 +771,11 @@ export default class RunInfoUiHandler extends UiHandler { let row = 0; for (const [ index, item ] of heldItemsList.entries()) { if ( index > 36 ) { - const overflowIcon = addTextObject(this.scene, 182, 4, "+", TextStyle.WINDOW); + const overflowIcon = addTextObject(182, 4, "+", TextStyle.WINDOW); heldItemsContainer.add(overflowIcon); break; } - const itemIcon = item?.getIcon(this.scene, true); + const itemIcon = item?.getIcon(true); if (item?.stackCount < item?.getMaxHeldItemCount(pokemon) && itemIcon.list[1] instanceof Phaser.GameObjects.BitmapText) { itemIcon.list[1].clearTint(); } @@ -833,13 +833,13 @@ export default class RunInfoUiHandler extends UiHandler { * Shows the ending art. */ private createVictorySplash(): void { - this.endCardContainer = this.scene.add.container(0, 0); - const genderIndex = this.scene.gameData.gender ?? PlayerGender.UNSET; + this.endCardContainer = globalScene.add.container(0, 0); + const genderIndex = globalScene.gameData.gender ?? PlayerGender.UNSET; const isFemale = genderIndex === PlayerGender.FEMALE; - const endCard = this.scene.add.image(0, 0, `end_${isFemale ? "f" : "m"}`); + const endCard = globalScene.add.image(0, 0, `end_${isFemale ? "f" : "m"}`); endCard.setOrigin(0); endCard.setScale(0.5); - const text = addTextObject(this.scene, this.scene.game.canvas.width / 12, (this.scene.game.canvas.height / 6) - 16, i18next.t("battle:congratulations"), TextStyle.SUMMARY, { fontSize: "128px" }); + const text = addTextObject(globalScene.game.canvas.width / 12, (globalScene.game.canvas.height / 6) - 16, i18next.t("battle:congratulations"), TextStyle.SUMMARY, { fontSize: "128px" }); text.setOrigin(0.5); this.endCardContainer.add(endCard); this.endCardContainer.add(text); @@ -850,45 +850,45 @@ export default class RunInfoUiHandler extends UiHandler { * This could be adapted into a public-facing method for victory screens. Perhaps. */ private createHallofFame(): void { - const genderIndex = this.scene.gameData.gender ?? PlayerGender.UNSET; + const genderIndex = globalScene.gameData.gender ?? PlayerGender.UNSET; const isFemale = genderIndex === PlayerGender.FEMALE; const genderStr = PlayerGender[genderIndex].toLowerCase(); // Issue Note (08-05-2024): It seems as if fused pokemon do not appear with the averaged color b/c pokemonData's loadAsset requires there to be some active battle? // As an alternative, the icons of the second/bottom fused Pokemon have been placed next to their fellow fused Pokemon in Hall of Fame - this.hallofFameContainer = this.scene.add.container(0, 0); + this.hallofFameContainer = globalScene.add.container(0, 0); // Thank you Hayuna for the code - const endCard = this.scene.add.image(0, 0, `end_${isFemale ? "f" : "m"}`); + const endCard = globalScene.add.image(0, 0, `end_${isFemale ? "f" : "m"}`); endCard.setOrigin(0); endCard.setPosition(-1, -1); endCard.setScale(0.5); const endCardCoords = endCard.getBottomCenter(); const overlayColor = isFemale ? "red" : "blue"; - const hallofFameBg = this.scene.add.image(0, 0, "hall_of_fame_" + overlayColor); + const hallofFameBg = globalScene.add.image(0, 0, "hall_of_fame_" + overlayColor); hallofFameBg.setPosition(159, 89); - hallofFameBg.setSize(this.scene.game.canvas.width, this.scene.game.canvas.height + 10); + hallofFameBg.setSize(globalScene.game.canvas.width, globalScene.game.canvas.height + 10); hallofFameBg.setAlpha(0.8); this.hallofFameContainer.add(endCard); this.hallofFameContainer.add(hallofFameBg); - const hallofFameText = addTextObject(this.scene, 0, 0, i18next.t("runHistory:hallofFameText", { context: genderStr }), TextStyle.WINDOW); + const hallofFameText = addTextObject(0, 0, i18next.t("runHistory:hallofFameText", { context: genderStr }), TextStyle.WINDOW); hallofFameText.setPosition(endCardCoords.x - (hallofFameText.displayWidth / 2), 164); this.hallofFameContainer.add(hallofFameText); this.runInfo.party.forEach((p, i) => { - const pkmn = p.toPokemon(this.scene); + const pkmn = p.toPokemon(); const row = i % 2; const id = pkmn.id; const shiny = pkmn.shiny; const formIndex = pkmn.formIndex; const variant = pkmn.variant; const species = pkmn.getSpeciesForm(); - const pokemonSprite: Phaser.GameObjects.Sprite = this.scene.add.sprite(60 + 40 * i, 40 + row * 80, "pkmn__sub"); - pokemonSprite.setPipeline(this.scene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], ignoreTimeTint: true }); + const pokemonSprite: Phaser.GameObjects.Sprite = globalScene.add.sprite(60 + 40 * i, 40 + row * 80, "pkmn__sub"); + pokemonSprite.setPipeline(globalScene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], ignoreTimeTint: true }); this.hallofFameContainer.add(pokemonSprite); const speciesLoaded: Map = new Map(); speciesLoaded.set(id, false); const female = pkmn.gender === 1; - species.loadAssets(this.scene, female, formIndex, shiny, variant, true).then(() => { + species.loadAssets(female, formIndex, shiny, variant, true).then(() => { speciesLoaded.set(id, true); pokemonSprite.play(species.getSpriteKey(female, formIndex, shiny, variant)); pokemonSprite.setPipelineData("shiny", shiny); @@ -897,7 +897,7 @@ export default class RunInfoUiHandler extends UiHandler { pokemonSprite.setVisible(true); }); if (pkmn.isFusion()) { - const fusionIcon = this.scene.add.sprite(80 + 40 * i, 50 + row * 80, pkmn.getFusionIconAtlasKey()); + const fusionIcon = globalScene.add.sprite(80 + 40 * i, 50 + row * 80, pkmn.getFusionIconAtlasKey()); fusionIcon.setName("sprite-fusion-icon"); fusionIcon.setOrigin(0.5, 0); fusionIcon.setFrame(pkmn.getFusionIconId(true)); diff --git a/src/ui/save-slot-select-ui-handler.ts b/src/ui/save-slot-select-ui-handler.ts index b36c0af6ec8..13f5020e5ad 100644 --- a/src/ui/save-slot-select-ui-handler.ts +++ b/src/ui/save-slot-select-ui-handler.ts @@ -1,10 +1,10 @@ import i18next from "i18next"; -import BattleScene from "../battle-scene"; +import { globalScene } from "#app/global-scene"; import { Button } from "#enums/buttons"; import { GameMode } from "../game-mode"; import * as Modifier from "../modifier/modifier"; -import { SessionSaveData } from "../system/game-data"; -import PokemonData from "../system/pokemon-data"; +import type { SessionSaveData } from "../system/game-data"; +import type PokemonData from "../system/pokemon-data"; import * as Utils from "../utils"; import MessageUiHandler from "./message-ui-handler"; import { TextStyle, addTextObject } from "./text"; @@ -39,35 +39,35 @@ export default class SaveSlotSelectUiHandler extends MessageUiHandler { private sessionSlotsContainerInitialY: number; - constructor(scene: BattleScene) { - super(scene, Mode.SAVE_SLOT); + constructor() { + super(Mode.SAVE_SLOT); } setup() { const ui = this.getUi(); - this.saveSlotSelectContainer = this.scene.add.container(0, 0); + this.saveSlotSelectContainer = globalScene.add.container(0, 0); this.saveSlotSelectContainer.setVisible(false); ui.add(this.saveSlotSelectContainer); - const loadSessionBg = this.scene.add.rectangle(0, 0, this.scene.game.canvas.width / 6, -this.scene.game.canvas.height / 6, 0x006860); + const loadSessionBg = globalScene.add.rectangle(0, 0, globalScene.game.canvas.width / 6, -globalScene.game.canvas.height / 6, 0x006860); loadSessionBg.setOrigin(0, 0); this.saveSlotSelectContainer.add(loadSessionBg); - this.sessionSlotsContainerInitialY = -this.scene.game.canvas.height / 6 + 8; + this.sessionSlotsContainerInitialY = -globalScene.game.canvas.height / 6 + 8; - this.sessionSlotsContainer = this.scene.add.container(8, this.sessionSlotsContainerInitialY); + this.sessionSlotsContainer = globalScene.add.container(8, this.sessionSlotsContainerInitialY); this.saveSlotSelectContainer.add(this.sessionSlotsContainer); - this.saveSlotSelectMessageBoxContainer = this.scene.add.container(0, 0); + this.saveSlotSelectMessageBoxContainer = globalScene.add.container(0, 0); this.saveSlotSelectMessageBoxContainer.setVisible(false); this.saveSlotSelectContainer.add(this.saveSlotSelectMessageBoxContainer); - this.saveSlotSelectMessageBox = addWindow(this.scene, 1, -1, 318, 28); + this.saveSlotSelectMessageBox = addWindow(1, -1, 318, 28); this.saveSlotSelectMessageBox.setOrigin(0, 1); this.saveSlotSelectMessageBoxContainer.add(this.saveSlotSelectMessageBox); - this.message = addTextObject(this.scene, 8, 8, "", TextStyle.WINDOW, { maxLines: 2 }); + this.message = addTextObject(8, 8, "", TextStyle.WINDOW, { maxLines: 2 }); this.message.setOrigin(0, 0); this.saveSlotSelectMessageBoxContainer.add(this.message); @@ -122,9 +122,9 @@ export default class SaveSlotSelectUiHandler extends MessageUiHandler { if (this.sessionSlots[cursor].hasData) { ui.showText(i18next.t("saveSlotSelectUiHandler:overwriteData"), null, () => { ui.setOverlayMode(Mode.CONFIRM, () => { - this.scene.gameData.deleteSession(cursor).then(response => { + globalScene.gameData.deleteSession(cursor).then(response => { if (response === false) { - this.scene.reset(true); + globalScene.reset(true); } else { saveAndCallback(); } @@ -168,7 +168,7 @@ export default class SaveSlotSelectUiHandler extends MessageUiHandler { break; case Button.RIGHT: if (this.sessionSlots[cursorPosition].hasData && this.sessionSlots[cursorPosition].saveData) { - this.scene.ui.setOverlayMode(Mode.RUN_INFO, this.sessionSlots[cursorPosition].saveData, RunDisplayMode.SESSION_PREVIEW); + globalScene.ui.setOverlayMode(Mode.RUN_INFO, this.sessionSlots[cursorPosition].saveData, RunDisplayMode.SESSION_PREVIEW); success = true; } } @@ -185,8 +185,8 @@ export default class SaveSlotSelectUiHandler extends MessageUiHandler { populateSessionSlots() { for (let s = 0; s < SESSION_SLOTS_COUNT; s++) { - const sessionSlot = new SessionSlot(this.scene, s); - this.scene.add.existing(sessionSlot); + const sessionSlot = new SessionSlot(s); + globalScene.add.existing(sessionSlot); this.sessionSlotsContainer.add(sessionSlot); this.sessionSlots.push(sessionSlot); sessionSlot.load().then((success) => { @@ -223,9 +223,9 @@ export default class SaveSlotSelectUiHandler extends MessageUiHandler { const changed = super.setCursor(cursor); if (!this.cursorObj) { - this.cursorObj = this.scene.add.container(0, 0); - const cursorBox = this.scene.add.nineslice(0, 0, "select_cursor_highlight_thick", undefined, 296, 44, 6, 6, 6, 6); - const rightArrow = this.scene.add.image(0, 0, "cursor"); + this.cursorObj = globalScene.add.container(0, 0); + const cursorBox = globalScene.add.nineslice(0, 0, "select_cursor_highlight_thick", undefined, 296, 44, 6, 6, 6, 6); + const rightArrow = globalScene.add.image(0, 0, "cursor"); rightArrow.setPosition(160, 0); rightArrow.setName("rightArrow"); this.cursorObj.add([ cursorBox, rightArrow ]); @@ -286,7 +286,7 @@ export default class SaveSlotSelectUiHandler extends MessageUiHandler { if (changed) { this.scrollCursor = scrollCursor; this.setCursor(this.cursor, prevSlotIndex); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this.sessionSlotsContainer, y: this.sessionSlotsContainerInitialY - 56 * scrollCursor, duration: Utils.fixedInt(325), @@ -326,8 +326,8 @@ class SessionSlot extends Phaser.GameObjects.Container { public saveData: SessionSaveData; - constructor(scene: BattleScene, slotId: integer) { - super(scene, 0, slotId * 56); + constructor(slotId: integer) { + super(globalScene, 0, slotId * 56); this.slotId = slotId; @@ -335,10 +335,10 @@ class SessionSlot extends Phaser.GameObjects.Container { } setup() { - const slotWindow = addWindow(this.scene, 0, 0, 304, 52); + const slotWindow = addWindow(0, 0, 304, 52); this.add(slotWindow); - this.loadingLabel = addTextObject(this.scene, 152, 26, i18next.t("saveSlotSelectUiHandler:loading"), TextStyle.WINDOW); + this.loadingLabel = addTextObject(152, 26, i18next.t("saveSlotSelectUiHandler:loading"), TextStyle.WINDOW); this.loadingLabel.setOrigin(0.5, 0.5); this.add(this.loadingLabel); } @@ -346,24 +346,24 @@ class SessionSlot extends Phaser.GameObjects.Container { async setupWithData(data: SessionSaveData) { this.remove(this.loadingLabel, true); - const gameModeLabel = addTextObject(this.scene, 8, 5, `${GameMode.getModeName(data.gameMode) || i18next.t("gameMode:unkown")} - ${i18next.t("saveSlotSelectUiHandler:wave")} ${data.waveIndex}`, TextStyle.WINDOW); + const gameModeLabel = addTextObject(8, 5, `${GameMode.getModeName(data.gameMode) || i18next.t("gameMode:unkown")} - ${i18next.t("saveSlotSelectUiHandler:wave")} ${data.waveIndex}`, TextStyle.WINDOW); this.add(gameModeLabel); - const timestampLabel = addTextObject(this.scene, 8, 19, new Date(data.timestamp).toLocaleString(), TextStyle.WINDOW); + const timestampLabel = addTextObject(8, 19, new Date(data.timestamp).toLocaleString(), TextStyle.WINDOW); this.add(timestampLabel); - const playTimeLabel = addTextObject(this.scene, 8, 33, Utils.getPlayTimeString(data.playTime), TextStyle.WINDOW); + const playTimeLabel = addTextObject(8, 33, Utils.getPlayTimeString(data.playTime), TextStyle.WINDOW); this.add(playTimeLabel); - const pokemonIconsContainer = this.scene.add.container(144, 4); + const pokemonIconsContainer = globalScene.add.container(144, 4); data.party.forEach((p: PokemonData, i: integer) => { - const iconContainer = this.scene.add.container(26 * i, 0); + const iconContainer = globalScene.add.container(26 * i, 0); iconContainer.setScale(0.75); - const pokemon = p.toPokemon(this.scene); - const icon = this.scene.addPokemonIcon(pokemon, 0, 0, 0, 0); + const pokemon = p.toPokemon(); + const icon = globalScene.addPokemonIcon(pokemon, 0, 0, 0, 0); - const text = addTextObject(this.scene, 32, 20, `${i18next.t("saveSlotSelectUiHandler:lv")}${Utils.formatLargeNumber(pokemon.level, 1000)}`, TextStyle.PARTY, { fontSize: "54px", color: "#f8f8f8" }); + const text = addTextObject(32, 20, `${i18next.t("saveSlotSelectUiHandler:lv")}${Utils.formatLargeNumber(pokemon.level, 1000)}`, TextStyle.PARTY, { fontSize: "54px", color: "#f8f8f8" }); text.setShadow(0, 0, undefined); text.setStroke("#424242", 14); text.setOrigin(1, 0); @@ -378,15 +378,15 @@ class SessionSlot extends Phaser.GameObjects.Container { this.add(pokemonIconsContainer); - const modifierIconsContainer = this.scene.add.container(148, 30); + const modifierIconsContainer = globalScene.add.container(148, 30); modifierIconsContainer.setScale(0.5); let visibleModifierIndex = 0; for (const m of data.modifiers) { - const modifier = m.toModifier(this.scene, Modifier[m.className]); + const modifier = m.toModifier(Modifier[m.className]); if (modifier instanceof Modifier.PokemonHeldItemModifier) { continue; } - const icon = modifier?.getIcon(this.scene, false); + const icon = modifier?.getIcon(false); if (icon) { icon.setPosition(24 * visibleModifierIndex, 0); modifierIconsContainer.add(icon); @@ -401,7 +401,7 @@ class SessionSlot extends Phaser.GameObjects.Container { load(): Promise { return new Promise(resolve => { - this.scene.gameData.getSession(this.slotId).then(async sessionData => { + globalScene.gameData.getSession(this.slotId).then(async sessionData => { // Ignore the results if the view was exited if (!this.active) { return; @@ -420,7 +420,3 @@ class SessionSlot extends Phaser.GameObjects.Container { }); } } - -interface SessionSlot { - scene: BattleScene; -} diff --git a/src/ui/saving-icon-handler.ts b/src/ui/saving-icon-handler.ts index f62b0dc6162..ca7b1fb1aa8 100644 --- a/src/ui/saving-icon-handler.ts +++ b/src/ui/saving-icon-handler.ts @@ -1,4 +1,4 @@ -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import * as Utils from "../utils"; export default class SavingIconHandler extends Phaser.GameObjects.Container { @@ -7,12 +7,12 @@ export default class SavingIconHandler extends Phaser.GameObjects.Container { private animActive: boolean; private shown: boolean; - constructor(scene: BattleScene) { - super(scene, scene.game.canvas.width / 6 - 4, scene.game.canvas.height / 6 - 4); + constructor() { + super(globalScene, globalScene.game.canvas.width / 6 - 4, globalScene.game.canvas.height / 6 - 4); } setup(): void { - this.icon = this.scene.add.sprite(0, 0, "saving_icon"); + this.icon = globalScene.add.sprite(0, 0, "saving_icon"); this.icon.setOrigin(1, 1); this.add(this.icon); @@ -33,13 +33,13 @@ export default class SavingIconHandler extends Phaser.GameObjects.Container { this.animActive = true; - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this, alpha: 1, duration: Utils.fixedInt(250), ease: "Sine.easeInOut", onComplete: () => { - this.scene.time.delayedCall(Utils.fixedInt(500), () => { + globalScene.time.delayedCall(Utils.fixedInt(500), () => { this.animActive = false; if (!this.shown) { this.hide(); @@ -61,7 +61,7 @@ export default class SavingIconHandler extends Phaser.GameObjects.Container { this.animActive = true; - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this, alpha: 0, duration: Utils.fixedInt(250), diff --git a/src/ui/scroll-bar.ts b/src/ui/scroll-bar.ts index 9874be0f73a..eb74bfddfde 100644 --- a/src/ui/scroll-bar.ts +++ b/src/ui/scroll-bar.ts @@ -1,3 +1,5 @@ +import { globalScene } from "#app/global-scene"; + /** * A vertical scrollbar element that resizes dynamically based on the current scrolling * and number of elements that can be shown on screen @@ -11,15 +13,14 @@ export class ScrollBar extends Phaser.GameObjects.Container { private maxRows: number; /** - * @param scene the current scene * @param x the scrollbar's x position (origin: top left) * @param y the scrollbar's y position (origin: top left) * @param width the scrollbar's width * @param height the scrollbar's height * @param maxRows the maximum number of rows that can be shown at once */ - constructor(scene: Phaser.Scene, x: number, y: number, width: number, height: number, maxRows: number) { - super(scene, x, y); + constructor(x: number, y: number, width: number, height: number, maxRows: number) { + super(globalScene, x, y); this.maxRows = maxRows; this.totalRows = maxRows; @@ -28,15 +29,15 @@ export class ScrollBar extends Phaser.GameObjects.Container { const borderSize = 2; width = Math.max(width, 4); - this.bg = scene.add.nineslice(0, 0, "scroll_bar", undefined, width, height, borderSize, borderSize, borderSize, borderSize); + this.bg = globalScene.add.nineslice(0, 0, "scroll_bar", undefined, width, height, borderSize, borderSize, borderSize, borderSize); this.bg.setOrigin(0, 0); this.add(this.bg); - this.handleBody = scene.add.rectangle(1, 1, width - 2, 4, 0xaaaaaa); + this.handleBody = globalScene.add.rectangle(1, 1, width - 2, 4, 0xaaaaaa); this.handleBody.setOrigin(0, 0); this.add(this.handleBody); - this.handleBottom = scene.add.nineslice(1, 1, "scroll_bar_handle", undefined, width - 2, 2, 2, 0, 0, 0); + this.handleBottom = globalScene.add.nineslice(1, 1, "scroll_bar_handle", undefined, width - 2, 2, 2, 0, 0, 0); this.handleBottom.setOrigin(0, 0); this.add(this.handleBottom); } diff --git a/src/ui/scrollable-grid-handler.ts b/src/ui/scrollable-grid-handler.ts index cced92a2083..04851ec002f 100644 --- a/src/ui/scrollable-grid-handler.ts +++ b/src/ui/scrollable-grid-handler.ts @@ -1,6 +1,6 @@ import { Button } from "#enums/buttons"; -import UiHandler from "#app/ui/ui-handler"; -import { ScrollBar } from "#app/ui/scroll-bar"; +import type UiHandler from "#app/ui/ui-handler"; +import type { ScrollBar } from "#app/ui/scroll-bar"; type UpdateGridCallbackFunction = () => void; type UpdateDetailsCallbackFunction = (index: number) => void; @@ -24,15 +24,14 @@ export default class ScrollableGridUiHandler { private cursor: number; private scrollCursor: number; private scrollBar?: ScrollBar; + /** Optional function that will get called if the whole grid needs to get updated */ private updateGridCallback?: UpdateGridCallbackFunction; + /** Optional function that will get called if a single element's information needs to get updated */ private updateDetailsCallback?: UpdateDetailsCallbackFunction; /** - * @param scene the {@linkcode UiHandler} that needs its cursor updated based on the scrolling * @param rows the maximum number of rows shown at once * @param columns the maximum number of columns shown at once - * @param updateGridCallback optional function that will get called if the whole grid needs to get updated - * @param updateDetailsCallback optional function that will get called if a single element's information needs to get updated */ constructor(handler: UiHandler, rows: number, columns: number) { this.handler = handler; diff --git a/src/ui/session-reload-modal-ui-handler.ts b/src/ui/session-reload-modal-ui-handler.ts index 147634b19d2..640268f0480 100644 --- a/src/ui/session-reload-modal-ui-handler.ts +++ b/src/ui/session-reload-modal-ui-handler.ts @@ -1,11 +1,11 @@ -import BattleScene from "../battle-scene"; -import { ModalConfig, ModalUiHandler } from "./modal-ui-handler"; +import type { ModalConfig } from "./modal-ui-handler"; +import { ModalUiHandler } from "./modal-ui-handler"; import { addTextObject, TextStyle } from "./text"; -import { Mode } from "./ui"; +import type { Mode } from "./ui"; export default class SessionReloadModalUiHandler extends ModalUiHandler { - constructor(scene: BattleScene, mode: Mode | null = null) { - super(scene, mode); + constructor(mode: Mode | null = null) { + super(mode); } getModalTitle(): string { @@ -31,7 +31,7 @@ export default class SessionReloadModalUiHandler extends ModalUiHandler { setup(): void { super.setup(); - const label = addTextObject(this.scene, this.getWidth() / 2, this.getHeight() / 2, "Your session is out of date.\nYour data will be reloaded…", TextStyle.WINDOW, { fontSize: "48px", align: "center" }); + const label = addTextObject(this.getWidth() / 2, this.getHeight() / 2, "Your session is out of date.\nYour data will be reloaded…", TextStyle.WINDOW, { fontSize: "48px", align: "center" }); label.setOrigin(0.5, 0.5); this.modalContainer.add(label); diff --git a/src/ui/settings/abstract-binding-ui-handler.ts b/src/ui/settings/abstract-binding-ui-handler.ts index 9ebc3c493a4..d0f9a5c8a90 100644 --- a/src/ui/settings/abstract-binding-ui-handler.ts +++ b/src/ui/settings/abstract-binding-ui-handler.ts @@ -1,11 +1,11 @@ import UiHandler from "../ui-handler"; -import BattleScene from "../../battle-scene"; -import { Mode } from "../ui"; +import type { Mode } from "../ui"; import { addWindow } from "../ui-theme"; import { addTextObject, TextStyle } from "../text"; import { Button } from "#enums/buttons"; import { NavigationManager } from "#app/ui/settings/navigationMenu"; import i18next from "i18next"; +import { globalScene } from "#app/global-scene"; type CancelFn = (succes?: boolean) => boolean; @@ -49,11 +49,10 @@ export default abstract class AbstractBindingUiHandler extends UiHandler { /** * Constructor for the AbstractBindingUiHandler. * - * @param scene - The BattleScene instance. * @param mode - The UI mode. */ - constructor(scene: BattleScene, mode: Mode | null = null) { - super(scene, mode); + constructor(mode: Mode | null = null) { + super(mode); } /** @@ -61,8 +60,8 @@ export default abstract class AbstractBindingUiHandler extends UiHandler { */ setup() { const ui = this.getUi(); - this.optionSelectContainer = this.scene.add.container(0, 0); - this.actionsContainer = this.scene.add.container(0, 0); + this.optionSelectContainer = globalScene.add.container(0, 0); + this.actionsContainer = globalScene.add.container(0, 0); // Initially, containers are not visible. this.optionSelectContainer.setVisible(false); this.actionsContainer.setVisible(false); @@ -72,30 +71,30 @@ export default abstract class AbstractBindingUiHandler extends UiHandler { ui.add(this.actionsContainer); // Setup backgrounds and text objects for UI. - this.titleBg = addWindow(this.scene, (this.scene.game.canvas.width / 6) - this.getWindowWidth(), -(this.scene.game.canvas.height / 6) + 28 + 21, this.getWindowWidth(), 24); + this.titleBg = addWindow((globalScene.game.canvas.width / 6) - this.getWindowWidth(), -(globalScene.game.canvas.height / 6) + 28 + 21, this.getWindowWidth(), 24); this.titleBg.setOrigin(0.5); this.optionSelectContainer.add(this.titleBg); - this.actionBg = addWindow(this.scene, (this.scene.game.canvas.width / 6) - this.getWindowWidth(), -(this.scene.game.canvas.height / 6) + this.getWindowHeight() + 28 + 21 + 21, this.getWindowWidth(), 24); + this.actionBg = addWindow((globalScene.game.canvas.width / 6) - this.getWindowWidth(), -(globalScene.game.canvas.height / 6) + this.getWindowHeight() + 28 + 21 + 21, this.getWindowWidth(), 24); this.actionBg.setOrigin(0.5); this.actionsContainer.add(this.actionBg); // Text prompts and instructions for the user. - this.unlockText = addTextObject(this.scene, 0, 0, i18next.t("settings:pressButton"), TextStyle.WINDOW); + this.unlockText = addTextObject(0, 0, i18next.t("settings:pressButton"), TextStyle.WINDOW); this.unlockText.setOrigin(0, 0); this.unlockText.setPositionRelative(this.titleBg, 36, 4); this.optionSelectContainer.add(this.unlockText); - this.timerText = addTextObject(this.scene, 0, 0, "(5)", TextStyle.WINDOW); + this.timerText = addTextObject(0, 0, "(5)", TextStyle.WINDOW); this.timerText.setOrigin(0, 0); this.timerText.setPositionRelative(this.unlockText, (this.unlockText.width / 6) + 5, 0); this.optionSelectContainer.add(this.timerText); - this.optionSelectBg = addWindow(this.scene, (this.scene.game.canvas.width / 6) - this.getWindowWidth(), -(this.scene.game.canvas.height / 6) + this.getWindowHeight() + 28, this.getWindowWidth(), this.getWindowHeight()); + this.optionSelectBg = addWindow((globalScene.game.canvas.width / 6) - this.getWindowWidth(), -(globalScene.game.canvas.height / 6) + this.getWindowHeight() + 28, this.getWindowWidth(), this.getWindowHeight()); this.optionSelectBg.setOrigin(0.5); this.optionSelectContainer.add(this.optionSelectBg); - this.cancelLabel = addTextObject(this.scene, 0, 0, i18next.t("settings:back"), TextStyle.SETTINGS_LABEL); + this.cancelLabel = addTextObject(0, 0, i18next.t("settings:back"), TextStyle.SETTINGS_LABEL); this.cancelLabel.setOrigin(0, 0.5); this.cancelLabel.setPositionRelative(this.actionBg, 10, this.actionBg.height / 2); this.actionsContainer.add(this.cancelLabel); diff --git a/src/ui/settings/abstract-control-settings-ui-handler.ts b/src/ui/settings/abstract-control-settings-ui-handler.ts index 69f8eb241d3..59af1abba2a 100644 --- a/src/ui/settings/abstract-control-settings-ui-handler.ts +++ b/src/ui/settings/abstract-control-settings-ui-handler.ts @@ -1,15 +1,15 @@ import UiHandler from "#app/ui/ui-handler"; -import BattleScene from "#app/battle-scene"; -import { Mode } from "#app/ui/ui"; -import { InterfaceConfig } from "#app/inputs-controller"; +import type { Mode } from "#app/ui/ui"; +import type { InterfaceConfig } from "#app/inputs-controller"; import { addWindow } from "#app/ui/ui-theme"; import { addTextObject, TextStyle } from "#app/ui/text"; import { ScrollBar } from "#app/ui/scroll-bar"; import { getIconWithSettingName } from "#app/configs/inputs/configHandler"; import NavigationMenu, { NavigationManager } from "#app/ui/settings/navigationMenu"; -import { Device } from "#enums/devices"; +import type { Device } from "#enums/devices"; import { Button } from "#enums/buttons"; import i18next from "i18next"; +import { globalScene } from "#app/global-scene"; export interface InputsIcons { [key: string]: Phaser.GameObjects.Sprite; @@ -67,16 +67,15 @@ export default abstract class AbstractControlSettingsUiHandler extends UiHandler protected device: Device; abstract saveSettingToLocalStorage(setting, cursor): void; - abstract setSetting(scene: BattleScene, setting, value: number): boolean; + abstract setSetting(setting, value: number): boolean; /** * Constructor for the AbstractSettingsUiHandler. * - * @param scene - The BattleScene instance. * @param mode - The UI mode. */ - constructor(scene: BattleScene, mode: Mode | null = null) { - super(scene, mode); + constructor(mode: Mode | null = null) { + super(mode); this.rowsToDisplay = 8; } @@ -99,44 +98,44 @@ export default abstract class AbstractControlSettingsUiHandler extends UiHandler const ui = this.getUi(); this.navigationIcons = {}; - this.settingsContainer = this.scene.add.container(1, -(this.scene.game.canvas.height / 6) + 1); + this.settingsContainer = globalScene.add.container(1, -(globalScene.game.canvas.height / 6) + 1); this.settingsContainer.setName(`settings-${this.titleSelected}`); - this.settingsContainer.setInteractive(new Phaser.Geom.Rectangle(0, 0, this.scene.game.canvas.width / 6, this.scene.game.canvas.height / 6), Phaser.Geom.Rectangle.Contains); + this.settingsContainer.setInteractive(new Phaser.Geom.Rectangle(0, 0, globalScene.game.canvas.width / 6, globalScene.game.canvas.height / 6), Phaser.Geom.Rectangle.Contains); - this.navigationContainer = new NavigationMenu(this.scene, 0, 0); + this.navigationContainer = new NavigationMenu(0, 0); - this.optionsBg = addWindow(this.scene, 0, this.navigationContainer.height, (this.scene.game.canvas.width / 6) - 2, (this.scene.game.canvas.height / 6) - 16 - this.navigationContainer.height - 2); + this.optionsBg = addWindow(0, this.navigationContainer.height, (globalScene.game.canvas.width / 6) - 2, (globalScene.game.canvas.height / 6) - 16 - this.navigationContainer.height - 2); this.optionsBg.setOrigin(0, 0); - this.actionsBg = addWindow(this.scene, 0, (this.scene.game.canvas.height / 6) - this.navigationContainer.height, (this.scene.game.canvas.width / 6) - 2, 22); + this.actionsBg = addWindow(0, (globalScene.game.canvas.height / 6) - this.navigationContainer.height, (globalScene.game.canvas.width / 6) - 2, 22); this.actionsBg.setOrigin(0, 0); - const iconAction = this.scene.add.sprite(0, 0, "keyboard"); + const iconAction = globalScene.add.sprite(0, 0, "keyboard"); iconAction.setOrigin(0, -0.1); iconAction.setPositionRelative(this.actionsBg, this.navigationContainer.width - 32, 4); this.navigationIcons["BUTTON_ACTION"] = iconAction; - const actionText = addTextObject(this.scene, 0, 0, i18next.t("settings:action"), TextStyle.SETTINGS_LABEL); + const actionText = addTextObject(0, 0, i18next.t("settings:action"), TextStyle.SETTINGS_LABEL); actionText.setOrigin(0, 0.15); actionText.setPositionRelative(iconAction, -actionText.width / 6 - 2, 0); - const iconCancel = this.scene.add.sprite(0, 0, "keyboard"); + const iconCancel = globalScene.add.sprite(0, 0, "keyboard"); iconCancel.setOrigin(0, -0.1); iconCancel.setPositionRelative(this.actionsBg, this.navigationContainer.width - 100, 4); this.navigationIcons["BUTTON_CANCEL"] = iconCancel; - const cancelText = addTextObject(this.scene, 0, 0, i18next.t("settings:back"), TextStyle.SETTINGS_LABEL); + const cancelText = addTextObject(0, 0, i18next.t("settings:back"), TextStyle.SETTINGS_LABEL); cancelText.setOrigin(0, 0.15); cancelText.setPositionRelative(iconCancel, -cancelText.width / 6 - 2, 0); - const iconReset = this.scene.add.sprite(0, 0, "keyboard"); + const iconReset = globalScene.add.sprite(0, 0, "keyboard"); iconReset.setOrigin(0, -0.1); iconReset.setPositionRelative(this.actionsBg, this.navigationContainer.width - 180, 4); this.navigationIcons["BUTTON_HOME"] = iconReset; - const resetText = addTextObject(this.scene, 0, 0, i18next.t("settings:reset"), TextStyle.SETTINGS_LABEL); + const resetText = addTextObject(0, 0, i18next.t("settings:reset"), TextStyle.SETTINGS_LABEL); resetText.setOrigin(0, 0.15); resetText.setPositionRelative(iconReset, -resetText.width / 6 - 2, 0); @@ -156,7 +155,7 @@ export default abstract class AbstractControlSettingsUiHandler extends UiHandler this.layout[config.padType] = new Map(); // Create a container for gamepad options in the scene, initially hidden. - const optionsContainer = this.scene.add.container(0, 0); + const optionsContainer = globalScene.add.container(0, 0); optionsContainer.setVisible(false); // Gather all binding settings from the configuration. @@ -195,7 +194,7 @@ export default abstract class AbstractControlSettingsUiHandler extends UiHandler } else { labelText = i18next.t(`settings:${i18nKey}`); } - settingLabels[s] = addTextObject(this.scene, 8, 28 + s * 16, labelText, labelStyle); + settingLabels[s] = addTextObject(8, 28 + s * 16, labelText, labelStyle); settingLabels[s].setOrigin(0, 0); optionsContainer.add(settingLabels[s]); @@ -208,14 +207,14 @@ export default abstract class AbstractControlSettingsUiHandler extends UiHandler if (bindingSettings.includes(this.setting[setting])) { // Create a label for non-null options, typically indicating actionable options like 'change'. if (o) { - const valueLabel = addTextObject(this.scene, 0, 0, isLock ? "" : option, TextStyle.WINDOW); + const valueLabel = addTextObject(0, 0, isLock ? "" : option, TextStyle.WINDOW); valueLabel.setOrigin(0, 0); optionsContainer.add(valueLabel); valueLabels.push(valueLabel); continue; } // For null options, add an icon for the key. - const icon = this.scene.add.sprite(0, 0, this.textureOverride ? this.textureOverride : config.padType); + const icon = globalScene.add.sprite(0, 0, this.textureOverride ? this.textureOverride : config.padType); icon.setOrigin(0, -0.15); inputsIcons[this.setting[setting]] = icon; optionsContainer.add(icon); @@ -223,7 +222,7 @@ export default abstract class AbstractControlSettingsUiHandler extends UiHandler continue; } // For regular settings like 'Gamepad support', create a label and determine if it is selected. - const valueLabel = addTextObject(this.scene, 0, 0, option, this.settingDeviceDefaults[this.setting[setting]] === o ? TextStyle.SETTINGS_SELECTED : TextStyle.WINDOW); + const valueLabel = addTextObject(0, 0, option, this.settingDeviceDefaults[this.setting[setting]] === o ? TextStyle.SETTINGS_SELECTED : TextStyle.WINDOW); valueLabel.setOrigin(0, 0); optionsContainer.add(valueLabel); @@ -273,7 +272,7 @@ export default abstract class AbstractControlSettingsUiHandler extends UiHandler } // Add vertical scrollbar - this.scrollBar = new ScrollBar(this.scene, this.optionsBg.width - 9, this.optionsBg.y + 5, 4, this.optionsBg.height - 11, this.rowsToDisplay); + this.scrollBar = new ScrollBar(this.optionsBg.width - 9, this.optionsBg.y + 5, 4, this.optionsBg.height - 11, this.rowsToDisplay); this.settingsContainer.add(this.scrollBar); // Add the settings container to the UI. @@ -289,7 +288,7 @@ export default abstract class AbstractControlSettingsUiHandler extends UiHandler * @returns The active configuration for current device */ getActiveConfig(): InterfaceConfig { - return this.scene.inputController.getActiveConfig(this.device); + return globalScene.inputController.getActiveConfig(this.device); } /** @@ -349,9 +348,9 @@ export default abstract class AbstractControlSettingsUiHandler extends UiHandler this.navigationIcons[settingName].alpha = 1; continue; } - const icon = this.scene.inputController?.getIconForLatestInputRecorded(settingName); + const icon = globalScene.inputController?.getIconForLatestInputRecorded(settingName); if (icon) { - const type = this.scene.inputController?.getLastSourceType(); + const type = globalScene.inputController?.getLastSourceType(); this.navigationIcons[settingName].setTexture(type); this.navigationIcons[settingName].setFrame(icon); this.navigationIcons[settingName].alpha = 1; @@ -444,7 +443,7 @@ export default abstract class AbstractControlSettingsUiHandler extends UiHandler // Handle cancel button press, reverting UI mode to previous state. success = true; NavigationManager.getInstance().reset(); - this.scene.ui.revertMode(); + globalScene.ui.revertMode(); } else { const cursor = this.cursor + this.scrollCursor; // Calculate the absolute cursor position. const setting = this.setting[Object.keys(this.setting)[cursor]]; @@ -456,7 +455,7 @@ export default abstract class AbstractControlSettingsUiHandler extends UiHandler if (this.settingBlacklisted.includes(setting) || !setting.includes("BUTTON_")) { success = false; } else { - success = this.setSetting(this.scene, setting, 1); + success = this.setSetting(setting, 1); } break; case Button.UP: // Move up in the menu. @@ -556,8 +555,8 @@ export default abstract class AbstractControlSettingsUiHandler extends UiHandler // Check if the cursor object exists, if not, create it. if (!this.cursorObj) { - const cursorWidth = (this.scene.game.canvas.width / 6) - (this.scrollBar.visible ? 16 : 10); - this.cursorObj = this.scene.add.nineslice(0, 0, "summary_moves_cursor", undefined, cursorWidth, 16, 1, 1, 1, 1); + const cursorWidth = (globalScene.game.canvas.width / 6) - (this.scrollBar.visible ? 16 : 10); + this.cursorObj = globalScene.add.nineslice(0, 0, "summary_moves_cursor", undefined, cursorWidth, 16, 1, 1, 1, 1); this.cursorObj.setOrigin(0, 0); // Set the origin to the top-left corner. this.optionsContainer.add(this.cursorObj); // Add the cursor to the options container. } diff --git a/src/ui/settings/abstract-settings-ui-handler.ts b/src/ui/settings/abstract-settings-ui-handler.ts index cbc93887810..a0287f80f79 100644 --- a/src/ui/settings/abstract-settings-ui-handler.ts +++ b/src/ui/settings/abstract-settings-ui-handler.ts @@ -1,14 +1,15 @@ -import BattleScene from "#app/battle-scene"; import { TextStyle, addTextObject } from "#app/ui/text"; import { Mode } from "#app/ui/ui"; import MessageUiHandler from "#app/ui/message-ui-handler"; import { addWindow } from "#app/ui/ui-theme"; import { ScrollBar } from "#app/ui/scroll-bar"; import { Button } from "#enums/buttons"; -import { InputsIcons } from "#app/ui/settings/abstract-control-settings-ui-handler"; +import type { InputsIcons } from "#app/ui/settings/abstract-control-settings-ui-handler"; import NavigationMenu, { NavigationManager } from "#app/ui/settings/navigationMenu"; -import { Setting, SettingKeys, SettingType } from "#app/system/settings/settings"; +import type { SettingType } from "#app/system/settings/settings"; +import { Setting, SettingKeys } from "#app/system/settings/settings"; import i18next from "i18next"; +import { globalScene } from "#app/global-scene"; /** @@ -42,8 +43,8 @@ export default class AbstractSettingsUiHandler extends MessageUiHandler { protected settings: Array; protected localStorageKey: string; - constructor(scene: BattleScene, type: SettingType, mode: Mode | null = null) { - super(scene, mode); + constructor(type: SettingType, mode: Mode | null = null) { + super(mode); this.settings = Setting.filter(s => s.type === type && !s?.isHidden?.()); this.reloadRequired = false; this.rowsToDisplay = 8; @@ -55,40 +56,40 @@ export default class AbstractSettingsUiHandler extends MessageUiHandler { setup() { const ui = this.getUi(); - this.settingsContainer = this.scene.add.container(1, -(this.scene.game.canvas.height / 6) + 1); + this.settingsContainer = globalScene.add.container(1, -(globalScene.game.canvas.height / 6) + 1); this.settingsContainer.setName(`settings-${this.title}`); - this.settingsContainer.setInteractive(new Phaser.Geom.Rectangle(0, 0, this.scene.game.canvas.width / 6, this.scene.game.canvas.height / 6 - 20), Phaser.Geom.Rectangle.Contains); + this.settingsContainer.setInteractive(new Phaser.Geom.Rectangle(0, 0, globalScene.game.canvas.width / 6, globalScene.game.canvas.height / 6 - 20), Phaser.Geom.Rectangle.Contains); this.navigationIcons = {}; - this.navigationContainer = new NavigationMenu(this.scene, 0, 0); + this.navigationContainer = new NavigationMenu(0, 0); - this.optionsBg = addWindow(this.scene, 0, this.navigationContainer.height, (this.scene.game.canvas.width / 6) - 2, (this.scene.game.canvas.height / 6) - 16 - this.navigationContainer.height - 2); + this.optionsBg = addWindow(0, this.navigationContainer.height, (globalScene.game.canvas.width / 6) - 2, (globalScene.game.canvas.height / 6) - 16 - this.navigationContainer.height - 2); this.optionsBg.setName("window-options-bg"); this.optionsBg.setOrigin(0, 0); - const actionsBg = addWindow(this.scene, 0, (this.scene.game.canvas.height / 6) - this.navigationContainer.height, (this.scene.game.canvas.width / 6) - 2, 22); + const actionsBg = addWindow(0, (globalScene.game.canvas.height / 6) - this.navigationContainer.height, (globalScene.game.canvas.width / 6) - 2, 22); actionsBg.setOrigin(0, 0); - const iconAction = this.scene.add.sprite(0, 0, "keyboard"); + const iconAction = globalScene.add.sprite(0, 0, "keyboard"); iconAction.setOrigin(0, -0.1); iconAction.setPositionRelative(actionsBg, this.navigationContainer.width - 32, 4); this.navigationIcons["BUTTON_ACTION"] = iconAction; - const actionText = addTextObject(this.scene, 0, 0, i18next.t("settings:action"), TextStyle.SETTINGS_LABEL); + const actionText = addTextObject(0, 0, i18next.t("settings:action"), TextStyle.SETTINGS_LABEL); actionText.setOrigin(0, 0.15); actionText.setPositionRelative(iconAction, -actionText.width / 6 - 2, 0); - const iconCancel = this.scene.add.sprite(0, 0, "keyboard"); + const iconCancel = globalScene.add.sprite(0, 0, "keyboard"); iconCancel.setOrigin(0, -0.1); iconCancel.setPositionRelative(actionsBg, this.navigationContainer.width - 100, 4); this.navigationIcons["BUTTON_CANCEL"] = iconCancel; - const cancelText = addTextObject(this.scene, 0, 0, i18next.t("settings:back"), TextStyle.SETTINGS_LABEL); + const cancelText = addTextObject(0, 0, i18next.t("settings:back"), TextStyle.SETTINGS_LABEL); cancelText.setOrigin(0, 0.15); cancelText.setPositionRelative(iconCancel, -cancelText.width / 6 - 2, 0); - this.optionsContainer = this.scene.add.container(0, 0); + this.optionsContainer = globalScene.add.container(0, 0); this.settingLabels = []; this.optionValueLabels = []; @@ -102,12 +103,12 @@ export default class AbstractSettingsUiHandler extends MessageUiHandler { settingName += ` (${i18next.t("settings:requireReload")})`; } - this.settingLabels[s] = addTextObject(this.scene, 8, 28 + s * 16, settingName, TextStyle.SETTINGS_LABEL); + this.settingLabels[s] = addTextObject(8, 28 + s * 16, settingName, TextStyle.SETTINGS_LABEL); this.settingLabels[s].setOrigin(0, 0); this.optionsContainer.add(this.settingLabels[s]); this.optionValueLabels.push(setting.options.map((option, o) => { - const valueLabel = addTextObject(this.scene, 0, 0, option.label, setting.default === o ? TextStyle.SETTINGS_SELECTED : TextStyle.SETTINGS_VALUE); + const valueLabel = addTextObject(0, 0, option.label, setting.default === o ? TextStyle.SETTINGS_SELECTED : TextStyle.SETTINGS_VALUE); valueLabel.setOrigin(0, 0); this.optionsContainer.add(valueLabel); @@ -132,20 +133,20 @@ export default class AbstractSettingsUiHandler extends MessageUiHandler { this.optionCursors = this.settings.map(setting => setting.default); - this.scrollBar = new ScrollBar(this.scene, this.optionsBg.width - 9, this.optionsBg.y + 5, 4, this.optionsBg.height - 11, this.rowsToDisplay); + this.scrollBar = new ScrollBar(this.optionsBg.width - 9, this.optionsBg.y + 5, 4, this.optionsBg.height - 11, this.rowsToDisplay); this.scrollBar.setTotalRows(this.settings.length); // Two-lines message box - this.messageBoxContainer = this.scene.add.container(0, this.scene.scaledCanvas.height); + this.messageBoxContainer = globalScene.add.container(0, globalScene.scaledCanvas.height); this.messageBoxContainer.setName("settings-message-box"); this.messageBoxContainer.setVisible(false); - const settingsMessageBox = addWindow(this.scene, 0, -1, this.scene.scaledCanvas.width - 2, 48); + const settingsMessageBox = addWindow(0, -1, globalScene.scaledCanvas.width - 2, 48); settingsMessageBox.setOrigin(0, 1); this.messageBoxContainer.add(settingsMessageBox); - const messageText = addTextObject(this.scene, 8, -40, "", TextStyle.WINDOW, { maxLines: 2 }); - messageText.setWordWrapWidth(this.scene.game.canvas.width - 60); + const messageText = addTextObject(8, -40, "", TextStyle.WINDOW, { maxLines: 2 }); + messageText.setWordWrapWidth(globalScene.game.canvas.width - 60); messageText.setName("settings-message"); messageText.setOrigin(0, 0); @@ -181,9 +182,9 @@ export default class AbstractSettingsUiHandler extends MessageUiHandler { this.navigationIcons[settingName].alpha = 1; continue; } - const icon = this.scene.inputController?.getIconForLatestInputRecorded(settingName); + const icon = globalScene.inputController?.getIconForLatestInputRecorded(settingName); if (icon) { - const type = this.scene.inputController?.getLastSourceType(); + const type = globalScene.inputController?.getLastSourceType(); this.navigationIcons[settingName].setTexture(type); this.navigationIcons[settingName].setFrame(icon); this.navigationIcons[settingName].alpha = 1; @@ -238,7 +239,7 @@ export default class AbstractSettingsUiHandler extends MessageUiHandler { success = true; NavigationManager.getInstance().reset(); // Reverts UI to its previous state on cancel. - this.scene.ui.revertMode(); + globalScene.ui.revertMode(); } else { const cursor = this.cursor + this.scrollCursor; switch (button) { @@ -314,7 +315,7 @@ export default class AbstractSettingsUiHandler extends MessageUiHandler { activateSetting(setting: Setting): boolean { switch (setting.key) { case SettingKeys.Move_Touch_Controls: - this.scene.inputController.moveTouchControlsHandler.enableConfigurationMode(this.getUi(), this.scene); + globalScene.inputController.moveTouchControlsHandler.enableConfigurationMode(this.getUi()); return true; } return false; @@ -330,8 +331,8 @@ export default class AbstractSettingsUiHandler extends MessageUiHandler { const ret = super.setCursor(cursor); if (!this.cursorObj) { - const cursorWidth = (this.scene.game.canvas.width / 6) - (this.scrollBar.visible ? 16 : 10); - this.cursorObj = this.scene.add.nineslice(0, 0, "summary_moves_cursor", undefined, cursorWidth, 16, 1, 1, 1, 1); + const cursorWidth = (globalScene.game.canvas.width / 6) - (this.scrollBar.visible ? 16 : 10); + this.cursorObj = globalScene.add.nineslice(0, 0, "summary_moves_cursor", undefined, cursorWidth, 16, 1, 1, 1, 1); this.cursorObj.setOrigin(0, 0); this.optionsContainer.add(this.cursorObj); } @@ -369,7 +370,7 @@ export default class AbstractSettingsUiHandler extends MessageUiHandler { if (save) { const saveSetting = () => { - this.scene.gameData.saveSetting(setting.key, cursor); + globalScene.gameData.saveSetting(setting.key, cursor); if (setting.requireReload) { this.reloadRequired = true; } @@ -378,20 +379,20 @@ export default class AbstractSettingsUiHandler extends MessageUiHandler { // For settings that ask for confirmation, display confirmation message and a Yes/No prompt before saving the setting if (setting.options[cursor].needConfirmation) { const confirmUpdateSetting = () => { - this.scene.ui.revertMode(); + globalScene.ui.revertMode(); this.showText(""); saveSetting(); }; const cancelUpdateSetting = () => { - this.scene.ui.revertMode(); + globalScene.ui.revertMode(); this.showText(""); // Put the cursor back to its previous position without saving or asking for confirmation again this.setOptionCursor(settingIndex, lastCursor, false); }; const confirmationMessage = setting.options[cursor].confirmationMessage ?? i18next.t("settings:defaultConfirmMessage"); - this.scene.ui.showText(confirmationMessage, null, () => { - this.scene.ui.setOverlayMode(Mode.CONFIRM, confirmUpdateSetting, cancelUpdateSetting, null, null, 1, 750); + globalScene.ui.showText(confirmationMessage, null, () => { + globalScene.ui.setOverlayMode(Mode.CONFIRM, confirmUpdateSetting, cancelUpdateSetting, null, null, 1, 750); }); } else { saveSetting(); @@ -445,10 +446,10 @@ export default class AbstractSettingsUiHandler extends MessageUiHandler { this.settingsContainer.setVisible(false); this.setScrollCursor(0); this.eraseCursor(); - this.getUi().bgmBar.toggleBgmBar(this.scene.showBgmBar); + this.getUi().bgmBar.toggleBgmBar(globalScene.showBgmBar); if (this.reloadRequired) { this.reloadRequired = false; - this.scene.reset(true, false, true); + globalScene.reset(true, false, true); } } diff --git a/src/ui/settings/gamepad-binding-ui-handler.ts b/src/ui/settings/gamepad-binding-ui-handler.ts index e89529f6453..b69c2f34e06 100644 --- a/src/ui/settings/gamepad-binding-ui-handler.ts +++ b/src/ui/settings/gamepad-binding-ui-handler.ts @@ -1,37 +1,37 @@ -import BattleScene from "../../battle-scene"; import AbstractBindingUiHandler from "./abstract-binding-ui-handler"; -import { Mode } from "../ui"; +import type { Mode } from "../ui"; import { Device } from "#enums/devices"; import { getIconWithSettingName, getKeyWithKeycode } from "#app/configs/inputs/configHandler"; import { addTextObject, TextStyle } from "#app/ui/text"; +import { globalScene } from "#app/global-scene"; export default class GamepadBindingUiHandler extends AbstractBindingUiHandler { - constructor(scene: BattleScene, mode: Mode | null = null) { - super(scene, mode); - this.scene.input.gamepad?.on("down", this.gamepadButtonDown, this); + constructor(mode: Mode | null = null) { + super(mode); + globalScene.input.gamepad?.on("down", this.gamepadButtonDown, this); } setup() { super.setup(); // New button icon setup. - this.newButtonIcon = this.scene.add.sprite(0, 0, "xbox"); + this.newButtonIcon = globalScene.add.sprite(0, 0, "xbox"); this.newButtonIcon.setPositionRelative(this.optionSelectBg, 78, 16); this.newButtonIcon.setOrigin(0.5); this.newButtonIcon.setVisible(false); - this.swapText = addTextObject(this.scene, 0, 0, "will swap with", TextStyle.WINDOW); + this.swapText = addTextObject(0, 0, "will swap with", TextStyle.WINDOW); this.swapText.setOrigin(0.5); this.swapText.setPositionRelative(this.optionSelectBg, this.optionSelectBg.width / 2 - 2, this.optionSelectBg.height / 2 - 2); this.swapText.setVisible(false); - this.targetButtonIcon = this.scene.add.sprite(0, 0, "xbox"); + this.targetButtonIcon = globalScene.add.sprite(0, 0, "xbox"); this.targetButtonIcon.setPositionRelative(this.optionSelectBg, 78, 48); this.targetButtonIcon.setOrigin(0.5); this.targetButtonIcon.setVisible(false); - this.actionLabel = addTextObject(this.scene, 0, 0, "Confirm swap", TextStyle.SETTINGS_LABEL); + this.actionLabel = addTextObject(0, 0, "Confirm swap", TextStyle.SETTINGS_LABEL); this.actionLabel.setOrigin(0, 0.5); this.actionLabel.setPositionRelative(this.actionBg, this.actionBg.width - 75, this.actionBg.height / 2); this.actionsContainer.add(this.actionLabel); @@ -42,7 +42,7 @@ export default class GamepadBindingUiHandler extends AbstractBindingUiHandler { } getSelectedDevice() { - return this.scene.inputController?.selectedDevice[Device.GAMEPAD]; + return globalScene.inputController?.selectedDevice[Device.GAMEPAD]; } gamepadButtonDown(pad: Phaser.Input.Gamepad.Gamepad, button: Phaser.Input.Gamepad.Button, value: number): void { @@ -51,7 +51,7 @@ export default class GamepadBindingUiHandler extends AbstractBindingUiHandler { if (!this.listening || pad.id.toLowerCase() !== this.getSelectedDevice() || blacklist.includes(button.index) || this.buttonPressed !== null) { return; } - const activeConfig = this.scene.inputController.getActiveConfig(Device.GAMEPAD); + const activeConfig = globalScene.inputController.getActiveConfig(Device.GAMEPAD); const type = activeConfig.padType; const key = getKeyWithKeycode(activeConfig, button.index); const buttonIcon = activeConfig.icons[key]; @@ -64,9 +64,9 @@ export default class GamepadBindingUiHandler extends AbstractBindingUiHandler { } swapAction(): boolean { - const activeConfig = this.scene.inputController.getActiveConfig(Device.GAMEPAD); - if (this.scene.inputController.assignBinding(activeConfig, this.target, this.buttonPressed)) { - this.scene.gameData.saveMappingConfigs(this.getSelectedDevice(), activeConfig); + const activeConfig = globalScene.inputController.getActiveConfig(Device.GAMEPAD); + if (globalScene.inputController.assignBinding(activeConfig, this.target, this.buttonPressed)) { + globalScene.gameData.saveMappingConfigs(this.getSelectedDevice(), activeConfig); return true; } return false; diff --git a/src/ui/settings/keyboard-binding-ui-handler.ts b/src/ui/settings/keyboard-binding-ui-handler.ts index 52b1a0e385f..ddc60a15631 100644 --- a/src/ui/settings/keyboard-binding-ui-handler.ts +++ b/src/ui/settings/keyboard-binding-ui-handler.ts @@ -1,29 +1,29 @@ -import BattleScene from "../../battle-scene"; import AbstractBindingUiHandler from "./abstract-binding-ui-handler"; -import { Mode } from "../ui"; +import type { Mode } from "../ui"; import { getKeyWithKeycode } from "#app/configs/inputs/configHandler"; import { Device } from "#enums/devices"; import { addTextObject, TextStyle } from "#app/ui/text"; +import { globalScene } from "#app/global-scene"; export default class KeyboardBindingUiHandler extends AbstractBindingUiHandler { - constructor(scene: BattleScene, mode: Mode | null = null) { - super(scene, mode); + constructor(mode: Mode | null = null) { + super(mode); // Listen to gamepad button down events to initiate binding. - scene.input.keyboard?.on("keydown", this.onKeyDown, this); + globalScene.input.keyboard?.on("keydown", this.onKeyDown, this); } setup() { super.setup(); // New button icon setup. - this.newButtonIcon = this.scene.add.sprite(0, 0, "keyboard"); + this.newButtonIcon = globalScene.add.sprite(0, 0, "keyboard"); this.newButtonIcon.setPositionRelative(this.optionSelectBg, 78, 32); this.newButtonIcon.setOrigin(0.5); this.newButtonIcon.setVisible(false); - this.actionLabel = addTextObject(this.scene, 0, 0, "Assign button", TextStyle.SETTINGS_LABEL); + this.actionLabel = addTextObject(0, 0, "Assign button", TextStyle.SETTINGS_LABEL); this.actionLabel.setOrigin(0, 0.5); this.actionLabel.setPositionRelative(this.actionBg, this.actionBg.width - 80, this.actionBg.height / 2); this.actionsContainer.add(this.actionLabel); @@ -32,7 +32,7 @@ export default class KeyboardBindingUiHandler extends AbstractBindingUiHandler { } getSelectedDevice() { - return this.scene.inputController?.selectedDevice[Device.KEYBOARD]; + return globalScene.inputController?.selectedDevice[Device.KEYBOARD]; } onKeyDown(event): void { @@ -51,7 +51,7 @@ export default class KeyboardBindingUiHandler extends AbstractBindingUiHandler { if (!this.listening || this.buttonPressed !== null || blacklist.includes(key)) { return; } - const activeConfig = this.scene.inputController.getActiveConfig(Device.KEYBOARD); + const activeConfig = globalScene.inputController.getActiveConfig(Device.KEYBOARD); const _key = getKeyWithKeycode(activeConfig, key); const buttonIcon = activeConfig.icons[_key]; if (!buttonIcon) { @@ -63,9 +63,9 @@ export default class KeyboardBindingUiHandler extends AbstractBindingUiHandler { } swapAction(): boolean { - const activeConfig = this.scene.inputController.getActiveConfig(Device.KEYBOARD); - if (this.scene.inputController.assignBinding(activeConfig, this.target, this.buttonPressed)) { - this.scene.gameData.saveMappingConfigs(this.getSelectedDevice(), activeConfig); + const activeConfig = globalScene.inputController.getActiveConfig(Device.KEYBOARD); + if (globalScene.inputController.assignBinding(activeConfig, this.target, this.buttonPressed)) { + globalScene.gameData.saveMappingConfigs(this.getSelectedDevice(), activeConfig); return true; } return false; diff --git a/src/ui/settings/move-touch-controls-handler.ts b/src/ui/settings/move-touch-controls-handler.ts index eda75a54a63..6128f5954e8 100644 --- a/src/ui/settings/move-touch-controls-handler.ts +++ b/src/ui/settings/move-touch-controls-handler.ts @@ -1,6 +1,6 @@ -import TouchControl from "#app/touch-controls"; -import UI from "#app/ui/ui"; -import { Scene } from "phaser"; +import { globalScene } from "#app/global-scene"; +import type TouchControl from "#app/touch-controls"; +import type UI from "#app/ui/ui"; export const TOUCH_CONTROL_POSITIONS_LANDSCAPE = "touchControlPositionsLandscape"; export const TOUCH_CONTROL_POSITIONS_PORTRAIT = "touchControlPositionsPortrait"; @@ -319,11 +319,10 @@ export default class MoveTouchControlsHandler { * Creates an overlay that covers the screen and allows the user to drag the touch controls around. * Also enables the toolbar for saving, resetting, and canceling the changes. * @param ui The UI of the game. - * @param scene The scene of the game. */ - private createOverlay(ui: UI, scene: Scene) { - const container = new Phaser.GameObjects.Container(scene, 0, 0); - const overlay = new Phaser.GameObjects.Rectangle(scene, 0, 0, scene.game.canvas.width, scene.game.canvas.height, 0x000000, 0.5); + private createOverlay(ui: UI) { + const container = new Phaser.GameObjects.Container(globalScene, 0, 0); + const overlay = new Phaser.GameObjects.Rectangle(globalScene, 0, 0, globalScene.game.canvas.width, globalScene.game.canvas.height, 0x000000, 0.5); overlay.setInteractive(); container.add(overlay); ui.add(container); @@ -336,15 +335,14 @@ export default class MoveTouchControlsHandler { /** * Allows the user to configure the touch controls by dragging buttons around the screen. * @param ui The UI of the game. - * @param scene The scene of the game. */ - public enableConfigurationMode(ui: UI, scene: Scene) { + public enableConfigurationMode(ui: UI) { if (this.inConfigurationMode) { return; } this.inConfigurationMode = true; this.touchControls.disable(); - this.createOverlay(ui, scene); + this.createOverlay(ui); this.createToolbar(); // Create event listeners with a delay to prevent the touchstart event from being triggered immediately. setTimeout(() => { diff --git a/src/ui/settings/navigationMenu.ts b/src/ui/settings/navigationMenu.ts index ab86fa1569a..eeb6da319ef 100644 --- a/src/ui/settings/navigationMenu.ts +++ b/src/ui/settings/navigationMenu.ts @@ -1,6 +1,6 @@ -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { Mode } from "#app/ui/ui"; -import { InputsIcons } from "#app/ui/settings/abstract-control-settings-ui-handler"; +import type { InputsIcons } from "#app/ui/settings/abstract-control-settings-ui-handler"; import { addTextObject, setTextStyle, TextStyle } from "#app/ui/text"; import { addWindow } from "#app/ui/ui-theme"; import { Button } from "#enums/buttons"; @@ -23,7 +23,7 @@ export class NavigationManager { * Creates an instance of NavigationManager. * To create a new tab in the menu, add the mode to the modes array and the label to the labels array. * and instantiate a new NavigationMenu instance in your handler - * like: this.navigationContainer = new NavigationMenu(this.scene, 0, 0); + * like: this.navigationContainer = new NavigationMenu(0, 0); */ constructor() { this.modes = [ @@ -54,10 +54,9 @@ export class NavigationManager { /** * Navigates modes based on given direction - * @param scene The current BattleScene instance * @param direction LEFT or RIGHT */ - public navigate(scene, direction) { + public navigate(direction) { const pos = this.modes.indexOf(this.selectedMode); const maxPos = this.modes.length - 1; const increment = direction === LEFT ? -1 : 1; @@ -68,7 +67,7 @@ export class NavigationManager { } else { this.selectedMode = this.modes[pos + increment]; } - scene.ui.setMode(this.selectedMode); + globalScene.ui.setMode(this.selectedMode); this.updateNavigationMenus(); } @@ -94,18 +93,15 @@ export class NavigationManager { export default class NavigationMenu extends Phaser.GameObjects.Container { private navigationIcons: InputsIcons; - public scene: BattleScene; protected headerTitles: Phaser.GameObjects.Text[] = new Array(); /** * Creates an instance of NavigationMenu. - * @param scene The current BattleScene instance. * @param x The x position of the NavigationMenu. * @param y The y position of the NavigationMenu. */ - constructor(scene: BattleScene, x: number, y: number) { - super(scene, x, y); - this.scene = scene; + constructor(x: number, y: number) { + super(globalScene, x, y); this.setup(); } @@ -115,7 +111,7 @@ export default class NavigationMenu extends Phaser.GameObjects.Container { */ setup() { const navigationManager = NavigationManager.getInstance(); - const headerBg = addWindow(this.scene, 0, 0, (this.scene.game.canvas.width / 6) - 2, 24); + const headerBg = addWindow(0, 0, (globalScene.game.canvas.width / 6) - 2, 24); headerBg.setOrigin(0, 0); this.add(headerBg); this.width = headerBg.width; @@ -123,12 +119,12 @@ export default class NavigationMenu extends Phaser.GameObjects.Container { this.navigationIcons = {}; - const iconPreviousTab = this.scene.add.sprite(8, 4, "keyboard"); + const iconPreviousTab = globalScene.add.sprite(8, 4, "keyboard"); iconPreviousTab.setOrigin(0, -0.1); iconPreviousTab.setPositionRelative(headerBg, 8, 4); this.navigationIcons["BUTTON_CYCLE_FORM"] = iconPreviousTab; - const iconNextTab = this.scene.add.sprite(0, 0, "keyboard"); + const iconNextTab = globalScene.add.sprite(0, 0, "keyboard"); iconNextTab.setOrigin(0, -0.1); iconNextTab.setPositionRelative(headerBg, headerBg.width - 20, 4); this.navigationIcons["BUTTON_CYCLE_SHINY"] = iconNextTab; @@ -136,7 +132,7 @@ export default class NavigationMenu extends Phaser.GameObjects.Container { let relative: Phaser.GameObjects.Sprite | Phaser.GameObjects.Text = iconPreviousTab; let relativeWidth: number = iconPreviousTab.width * 6; for (const label of navigationManager.labels) { - const labelText = addTextObject(this.scene, 0, 0, label, TextStyle.SETTINGS_LABEL); + const labelText = addTextObject(0, 0, label, TextStyle.SETTINGS_LABEL); labelText.setOrigin(0, 0); labelText.setPositionRelative(relative, 6 + relativeWidth / 6, 0); this.add(labelText); @@ -159,7 +155,7 @@ export default class NavigationMenu extends Phaser.GameObjects.Container { const posSelected = navigationManager.modes.indexOf(navigationManager.selectedMode); for (const [ index, title ] of this.headerTitles.entries()) { - setTextStyle(title, this.scene, index === posSelected ? TextStyle.SETTINGS_SELECTED : TextStyle.SETTINGS_LABEL); + setTextStyle(title, index === posSelected ? TextStyle.SETTINGS_SELECTED : TextStyle.SETTINGS_LABEL); } } @@ -178,9 +174,9 @@ export default class NavigationMenu extends Phaser.GameObjects.Container { this.navigationIcons[settingName].alpha = 1; continue; } - const icon = this.scene.inputController?.getIconForLatestInputRecorded(settingName); + const icon = globalScene.inputController?.getIconForLatestInputRecorded(settingName); if (icon) { - const type = this.scene.inputController?.getLastSourceType(); + const type = globalScene.inputController?.getLastSourceType(); this.navigationIcons[settingName].setTexture(type); this.navigationIcons[settingName].setFrame(icon); this.navigationIcons[settingName].alpha = 1; @@ -199,10 +195,10 @@ export default class NavigationMenu extends Phaser.GameObjects.Container { const navigationManager = NavigationManager.getInstance(); switch (button) { case Button.CYCLE_FORM: - navigationManager.navigate(this.scene, LEFT); + navigationManager.navigate(LEFT); return true; case Button.CYCLE_SHINY: - navigationManager.navigate(this.scene, RIGHT); + navigationManager.navigate(RIGHT); return true; } return false; diff --git a/src/ui/settings/option-select-ui-handler.ts b/src/ui/settings/option-select-ui-handler.ts index 8d2c534476a..5deaba5cfc5 100644 --- a/src/ui/settings/option-select-ui-handler.ts +++ b/src/ui/settings/option-select-ui-handler.ts @@ -1,10 +1,9 @@ -import BattleScene from "../../battle-scene"; import AbstractOptionSelectUiHandler from "../abstact-option-select-ui-handler"; import { Mode } from "../ui"; export default class OptionSelectUiHandler extends AbstractOptionSelectUiHandler { - constructor(scene: BattleScene, mode: Mode = Mode.OPTION_SELECT) { - super(scene, mode); + constructor(mode: Mode = Mode.OPTION_SELECT) { + super(mode); } getWindowWidth(): integer { diff --git a/src/ui/settings/settings-audio-ui-handler.ts b/src/ui/settings/settings-audio-ui-handler.ts index 86c6a9bce40..3b591eab4b9 100644 --- a/src/ui/settings/settings-audio-ui-handler.ts +++ b/src/ui/settings/settings-audio-ui-handler.ts @@ -1,18 +1,16 @@ -import BattleScene from "../../battle-scene"; -import { Mode } from "../ui"; -"#app/inputs-controller"; +import type { Mode } from "../ui"; import AbstractSettingsUiHandler from "./abstract-settings-ui-handler"; import { SettingType } from "#app/system/settings/settings"; +"#app/inputs-controller"; export default class SettingsAudioUiHandler extends AbstractSettingsUiHandler { /** * Creates an instance of SettingsAudioUiHandler. * - * @param scene - The BattleScene instance. * @param mode - The UI mode, optional. */ - constructor(scene: BattleScene, mode: Mode | null = null) { - super(scene, SettingType.AUDIO, mode); + constructor(mode: Mode | null = null) { + super(SettingType.AUDIO, mode); this.title = "Audio"; this.localStorageKey = "settings"; this.rowsToDisplay = 6; diff --git a/src/ui/settings/settings-display-ui-handler.ts b/src/ui/settings/settings-display-ui-handler.ts index c4cbb0dfe58..98fc16e2f96 100644 --- a/src/ui/settings/settings-display-ui-handler.ts +++ b/src/ui/settings/settings-display-ui-handler.ts @@ -1,18 +1,16 @@ -import BattleScene from "../../battle-scene"; -import { Mode } from "../ui"; -"#app/inputs-controller"; +import type { Mode } from "../ui"; import AbstractSettingsUiHandler from "./abstract-settings-ui-handler"; import { SettingKeys, SettingType } from "#app/system/settings/settings"; +"#app/inputs-controller"; export default class SettingsDisplayUiHandler extends AbstractSettingsUiHandler { /** * Creates an instance of SettingsGamepadUiHandler. * - * @param scene - The BattleScene instance. * @param mode - The UI mode, optional. */ - constructor(scene: BattleScene, mode: Mode | null = null) { - super(scene, SettingType.DISPLAY, mode); + constructor(mode: Mode | null = null) { + super(SettingType.DISPLAY, mode); this.title = "Display"; /** diff --git a/src/ui/settings/settings-gamepad-ui-handler.ts b/src/ui/settings/settings-gamepad-ui-handler.ts index 864142e055b..3d23b7e99bb 100644 --- a/src/ui/settings/settings-gamepad-ui-handler.ts +++ b/src/ui/settings/settings-gamepad-ui-handler.ts @@ -1,6 +1,5 @@ -import BattleScene from "../../battle-scene"; import { addTextObject, TextStyle } from "../text"; -import { Mode } from "../ui"; +import type { Mode } from "../ui"; import { setSettingGamepad, SettingGamepad, @@ -11,11 +10,12 @@ import { import pad_xbox360 from "#app/configs/inputs/pad_xbox360"; import pad_dualshock from "#app/configs/inputs/pad_dualshock"; import pad_unlicensedSNES from "#app/configs/inputs/pad_unlicensedSNES"; -import { InterfaceConfig } from "#app/inputs-controller"; +import type { InterfaceConfig } from "#app/inputs-controller"; import AbstractControlSettingsUiHandler from "#app/ui/settings/abstract-control-settings-ui-handler"; import { Device } from "#enums/devices"; import { truncateString } from "#app/utils"; import i18next from "i18next"; +import { globalScene } from "#app/global-scene"; /** * Class representing the settings UI handler for gamepads. @@ -28,11 +28,10 @@ export default class SettingsGamepadUiHandler extends AbstractControlSettingsUiH /** * Creates an instance of SettingsGamepadUiHandler. * - * @param scene - The BattleScene instance. * @param mode - The UI mode, optional. */ - constructor(scene: BattleScene, mode: Mode | null = null) { - super(scene, mode); + constructor(mode: Mode | null = null) { + super(mode); this.titleSelected = "Gamepad"; this.setting = SettingGamepad; this.settingDeviceDefaults = settingGamepadDefaults; @@ -53,9 +52,9 @@ export default class SettingsGamepadUiHandler extends AbstractControlSettingsUiH super.setup(); // If no gamepads are detected, set up a default UI prompt in the settings container. this.layout["noGamepads"] = new Map(); - const optionsContainer = this.scene.add.container(0, 0); + const optionsContainer = globalScene.add.container(0, 0); optionsContainer.setVisible(false); // Initially hide the container as no gamepads are connected. - const label = addTextObject(this.scene, 8, 28, i18next.t("settings:gamepadPleasePlug"), TextStyle.SETTINGS_LABEL); + const label = addTextObject(8, 28, i18next.t("settings:gamepadPleasePlug"), TextStyle.SETTINGS_LABEL); label.setOrigin(0, 0); optionsContainer.add(label); this.settingsContainer.add(optionsContainer); @@ -107,7 +106,7 @@ export default class SettingsGamepadUiHandler extends AbstractControlSettingsUiH // Update the text of the first option label under the current setting to the name of the chosen gamepad, // truncating the name to 30 characters if necessary. - this.layout[_key].optionValueLabels[index][0].setText(truncateString(this.scene.inputController.selectedDevice[Device.GAMEPAD], 20)); + this.layout[_key].optionValueLabels[index][0].setText(truncateString(globalScene.inputController.selectedDevice[Device.GAMEPAD], 20)); } } } @@ -121,7 +120,7 @@ export default class SettingsGamepadUiHandler extends AbstractControlSettingsUiH */ saveSettingToLocalStorage(settingName, cursor): void { if (this.setting[settingName] !== this.setting.Controller) { - this.scene.gameData.saveControlSetting(this.device, this.localStoragePropertyName, settingName, this.settingDeviceDefaults, cursor); + globalScene.gameData.saveControlSetting(this.device, this.localStoragePropertyName, settingName, this.settingDeviceDefaults, cursor); } } } diff --git a/src/ui/settings/settings-keyboard-ui-handler.ts b/src/ui/settings/settings-keyboard-ui-handler.ts index 17d91b27c57..ad9f23cc0d9 100644 --- a/src/ui/settings/settings-keyboard-ui-handler.ts +++ b/src/ui/settings/settings-keyboard-ui-handler.ts @@ -1,4 +1,3 @@ -import BattleScene from "../../battle-scene"; import { Mode } from "../ui"; import cfg_keyboard_qwerty from "#app/configs/inputs/cfg_keyboard_qwerty"; import { @@ -10,12 +9,13 @@ import { } from "#app/system/settings/settings-keyboard"; import { reverseValueToKeySetting, truncateString } from "#app/utils"; import AbstractControlSettingsUiHandler from "#app/ui/settings/abstract-control-settings-ui-handler"; -import { InterfaceConfig } from "#app/inputs-controller"; +import type { InterfaceConfig } from "#app/inputs-controller"; import { addTextObject, TextStyle } from "#app/ui/text"; import { deleteBind } from "#app/configs/inputs/configHandler"; import { Device } from "#enums/devices"; import { NavigationManager } from "#app/ui/settings/navigationMenu"; import i18next from "i18next"; +import { globalScene } from "#app/global-scene"; /** * Class representing the settings UI handler for keyboards. @@ -26,11 +26,10 @@ export default class SettingsKeyboardUiHandler extends AbstractControlSettingsUi /** * Creates an instance of SettingsKeyboardUiHandler. * - * @param scene - The BattleScene instance. * @param mode - The UI mode, optional. */ - constructor(scene: BattleScene, mode: Mode | null = null) { - super(scene, mode); + constructor(mode: Mode | null = null) { + super(mode); this.titleSelected = "Keyboard"; this.setting = SettingKeyboard; this.settingDeviceDefaults = settingKeyboardDefaults; @@ -42,8 +41,8 @@ export default class SettingsKeyboardUiHandler extends AbstractControlSettingsUi this.settingBlacklisted = settingKeyboardBlackList; this.device = Device.KEYBOARD; - const deleteEvent = scene.input.keyboard?.addKey(Phaser.Input.Keyboard.KeyCodes.DELETE); - const restoreDefaultEvent = scene.input.keyboard?.addKey(Phaser.Input.Keyboard.KeyCodes.HOME); + const deleteEvent = globalScene.input.keyboard?.addKey(Phaser.Input.Keyboard.KeyCodes.DELETE); + const restoreDefaultEvent = globalScene.input.keyboard?.addKey(Phaser.Input.Keyboard.KeyCodes.HOME); deleteEvent && deleteEvent.on("up", this.onDeleteDown, this); restoreDefaultEvent && restoreDefaultEvent.on("up", this.onHomeDown, this); } @@ -57,19 +56,19 @@ export default class SettingsKeyboardUiHandler extends AbstractControlSettingsUi super.setup(); // If no gamepads are detected, set up a default UI prompt in the settings container. this.layout["noKeyboard"] = new Map(); - const optionsContainer = this.scene.add.container(0, 0); + const optionsContainer = globalScene.add.container(0, 0); optionsContainer.setVisible(false); // Initially hide the container as no gamepads are connected. - const label = addTextObject(this.scene, 8, 28, i18next.t("settings:keyboardPleasePress"), TextStyle.SETTINGS_LABEL); + const label = addTextObject(8, 28, i18next.t("settings:keyboardPleasePress"), TextStyle.SETTINGS_LABEL); label.setOrigin(0, 0); optionsContainer.add(label); this.settingsContainer.add(optionsContainer); - const iconDelete = this.scene.add.sprite(0, 0, "keyboard"); + const iconDelete = globalScene.add.sprite(0, 0, "keyboard"); iconDelete.setOrigin(0, -0.1); iconDelete.setPositionRelative(this.actionsBg, this.navigationContainer.width - 260, 4); this.navigationIcons["BUTTON_DELETE"] = iconDelete; - const deleteText = addTextObject(this.scene, 0, 0, i18next.t("settings:delete"), TextStyle.SETTINGS_LABEL); + const deleteText = addTextObject(0, 0, i18next.t("settings:delete"), TextStyle.SETTINGS_LABEL); deleteText.setOrigin(0, 0.15); deleteText.setPositionRelative(iconDelete, -deleteText.width / 6 - 2, 0); @@ -86,10 +85,10 @@ export default class SettingsKeyboardUiHandler extends AbstractControlSettingsUi * Handle the home key press event. */ onHomeDown(): void { - if (![ Mode.SETTINGS_KEYBOARD, Mode.SETTINGS_GAMEPAD ].includes(this.scene.ui.getMode())) { + if (![ Mode.SETTINGS_KEYBOARD, Mode.SETTINGS_GAMEPAD ].includes(globalScene.ui.getMode())) { return; } - this.scene.gameData.resetMappingToFactory(); + globalScene.gameData.resetMappingToFactory(); NavigationManager.getInstance().updateIcons(); } @@ -97,7 +96,7 @@ export default class SettingsKeyboardUiHandler extends AbstractControlSettingsUi * Handle the delete key press event. */ onDeleteDown(): void { - if (this.scene.ui.getMode() !== Mode.SETTINGS_KEYBOARD) { + if (globalScene.ui.getMode() !== Mode.SETTINGS_KEYBOARD) { return; } const cursor = this.cursor + this.scrollCursor; // Calculate the absolute cursor position. @@ -153,7 +152,7 @@ export default class SettingsKeyboardUiHandler extends AbstractControlSettingsUi } // Skip updating the no gamepad layout. // Update the text of the first option label under the current setting to the name of the chosen gamepad, // truncating the name to 30 characters if necessary. - this.layout[_key].optionValueLabels[index][0].setText(truncateString(this.scene.inputController.selectedDevice[Device.KEYBOARD], 22)); + this.layout[_key].optionValueLabels[index][0].setText(truncateString(globalScene.inputController.selectedDevice[Device.KEYBOARD], 22)); } } } @@ -166,7 +165,7 @@ export default class SettingsKeyboardUiHandler extends AbstractControlSettingsUi * @param config - The configuration to save. */ saveCustomKeyboardMappingToLocalStorage(config): void { - this.scene.gameData.saveMappingConfigs(this.scene.inputController?.selectedDevice[Device.KEYBOARD], config); + globalScene.gameData.saveMappingConfigs(globalScene.inputController?.selectedDevice[Device.KEYBOARD], config); } /** @@ -177,7 +176,7 @@ export default class SettingsKeyboardUiHandler extends AbstractControlSettingsUi */ saveSettingToLocalStorage(settingName, cursor): void { if (this.setting[settingName] !== this.setting.Default_Layout) { - this.scene.gameData.saveControlSetting(this.device, this.localStoragePropertyName, settingName, this.settingDeviceDefaults, cursor); + globalScene.gameData.saveControlSetting(this.device, this.localStoragePropertyName, settingName, this.settingDeviceDefaults, cursor); } } } diff --git a/src/ui/settings/settings-ui-handler.ts b/src/ui/settings/settings-ui-handler.ts index 3c5a7dd2c90..22ea76d798b 100644 --- a/src/ui/settings/settings-ui-handler.ts +++ b/src/ui/settings/settings-ui-handler.ts @@ -1,17 +1,15 @@ -import BattleScene from "../../battle-scene"; import { SettingType } from "../../system/settings/settings"; -import { Mode } from "../ui"; +import type { Mode } from "../ui"; import AbstractSettingsUiHandler from "./abstract-settings-ui-handler"; export default class SettingsUiHandler extends AbstractSettingsUiHandler { /** * Creates an instance of SettingsGamepadUiHandler. * - * @param scene - The BattleScene instance. * @param mode - The UI mode, optional. */ - constructor(scene: BattleScene, mode: Mode | null = null) { - super(scene, SettingType.GENERAL, mode); + constructor(mode: Mode | null = null) { + super(SettingType.GENERAL, mode); this.title = "General"; this.localStorageKey = "settings"; } diff --git a/src/ui/starter-container.ts b/src/ui/starter-container.ts index ce21d13add8..792ce97e103 100644 --- a/src/ui/starter-container.ts +++ b/src/ui/starter-container.ts @@ -1,9 +1,8 @@ -import BattleScene from "../battle-scene"; -import PokemonSpecies from "../data/pokemon-species"; +import { globalScene } from "#app/global-scene"; +import type PokemonSpecies from "../data/pokemon-species"; import { addTextObject, TextStyle } from "./text"; export class StarterContainer extends Phaser.GameObjects.Container { - public scene: BattleScene; public species: PokemonSpecies; public icon: Phaser.GameObjects.Sprite; public shinyIcons: Phaser.GameObjects.Image[] = []; @@ -16,16 +15,16 @@ export class StarterContainer extends Phaser.GameObjects.Container { public candyUpgradeOverlayIcon: Phaser.GameObjects.Image; public cost: number = 0; - constructor(scene: BattleScene, species: PokemonSpecies) { - super(scene, 0, 0); + constructor(species: PokemonSpecies) { + super(globalScene, 0, 0); this.species = species; - const defaultDexAttr = scene.gameData.getSpeciesDefaultDexAttr(species, false, true); - const defaultProps = scene.gameData.getSpeciesDexAttrProps(species, defaultDexAttr); + const defaultDexAttr = globalScene.gameData.getSpeciesDefaultDexAttr(species, false, true); + const defaultProps = globalScene.gameData.getSpeciesDexAttrProps(species, defaultDexAttr); // starter passive bg - const starterPassiveBg = this.scene.add.image(2, 5, "passive_bg"); + const starterPassiveBg = globalScene.add.image(2, 5, "passive_bg"); starterPassiveBg.setOrigin(0, 0); starterPassiveBg.setScale(0.75); starterPassiveBg.setVisible(false); @@ -33,7 +32,7 @@ export class StarterContainer extends Phaser.GameObjects.Container { this.starterPassiveBgs = starterPassiveBg; // icon - this.icon = this.scene.add.sprite(-2, 2, species.getIconAtlasKey(defaultProps.formIndex, defaultProps.shiny, defaultProps.variant)); + this.icon = globalScene.add.sprite(-2, 2, species.getIconAtlasKey(defaultProps.formIndex, defaultProps.shiny, defaultProps.variant)); this.icon.setScale(0.5); this.icon.setOrigin(0, 0); this.icon.setFrame(species.getIconId(defaultProps.female, defaultProps.formIndex, defaultProps.shiny, defaultProps.variant)); @@ -43,7 +42,7 @@ export class StarterContainer extends Phaser.GameObjects.Container { // shiny icons for (let i = 0; i < 3; i++) { - const shinyIcon = this.scene.add.image(i * -3 + 12, 2, "shiny_star_small"); + const shinyIcon = globalScene.add.image(i * -3 + 12, 2, "shiny_star_small"); shinyIcon.setScale(0.5); shinyIcon.setOrigin(0, 0); shinyIcon.setVisible(false); @@ -52,7 +51,7 @@ export class StarterContainer extends Phaser.GameObjects.Container { this.add(this.shinyIcons); // value label - const label = addTextObject(this.scene, 1, 2, "0", TextStyle.WINDOW, { fontSize: "32px" }); + const label = addTextObject(1, 2, "0", TextStyle.WINDOW, { fontSize: "32px" }); label.setShadowOffset(2, 2); label.setOrigin(0, 0); label.setVisible(false); @@ -60,7 +59,7 @@ export class StarterContainer extends Phaser.GameObjects.Container { this.label = label; // hidden ability icon - const abilityIcon = this.scene.add.image(12, 7, "ha_capsule"); + const abilityIcon = globalScene.add.image(12, 7, "ha_capsule"); abilityIcon.setOrigin(0, 0); abilityIcon.setScale(0.5); abilityIcon.setVisible(false); @@ -68,7 +67,7 @@ export class StarterContainer extends Phaser.GameObjects.Container { this.hiddenAbilityIcon = abilityIcon; // favorite icon - const favoriteIcon = this.scene.add.image(0, 7, "favorite"); + const favoriteIcon = globalScene.add.image(0, 7, "favorite"); favoriteIcon.setOrigin(0, 0); favoriteIcon.setScale(0.5); favoriteIcon.setVisible(false); @@ -76,7 +75,7 @@ export class StarterContainer extends Phaser.GameObjects.Container { this.favoriteIcon = favoriteIcon; // classic win icon - const classicWinIcon = this.scene.add.image(0, 12, "champion_ribbon"); + const classicWinIcon = globalScene.add.image(0, 12, "champion_ribbon"); classicWinIcon.setOrigin(0, 0); classicWinIcon.setScale(0.5); classicWinIcon.setVisible(false); @@ -84,7 +83,7 @@ export class StarterContainer extends Phaser.GameObjects.Container { this.classicWinIcon = classicWinIcon; // candy upgrade icon - const candyUpgradeIcon = this.scene.add.image(12, 12, "candy"); + const candyUpgradeIcon = globalScene.add.image(12, 12, "candy"); candyUpgradeIcon.setOrigin(0, 0); candyUpgradeIcon.setScale(0.25); candyUpgradeIcon.setVisible(false); @@ -92,7 +91,7 @@ export class StarterContainer extends Phaser.GameObjects.Container { this.candyUpgradeIcon = candyUpgradeIcon; // candy upgrade overlay icon - const candyUpgradeOverlayIcon = this.scene.add.image(12, 12, "candy_overlay"); + const candyUpgradeOverlayIcon = globalScene.add.image(12, 12, "candy_overlay"); candyUpgradeOverlayIcon.setOrigin(0, 0); candyUpgradeOverlayIcon.setScale(0.25); candyUpgradeOverlayIcon.setVisible(false); diff --git a/src/ui/starter-select-ui-handler.ts b/src/ui/starter-select-ui-handler.ts index 38a2bb85de6..29c58d7087e 100644 --- a/src/ui/starter-select-ui-handler.ts +++ b/src/ui/starter-select-ui-handler.ts @@ -1,10 +1,13 @@ -import { BattleSceneEventType, CandyUpgradeNotificationChangedEvent } from "#app/events/battle-scene"; +import type { CandyUpgradeNotificationChangedEvent } from "#app/events/battle-scene"; +import { BattleSceneEventType } from "#app/events/battle-scene"; import { pokemonPrevolutions } from "#app/data/balance/pokemon-evolutions"; -import { Variant, getVariantTint, getVariantIcon } from "#app/data/variant"; +import type { Variant } from "#app/data/variant"; +import { getVariantTint, getVariantIcon } from "#app/data/variant"; import { argbFromRgba } from "@material/material-color-utilities"; import i18next from "i18next"; -import BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext"; -import BattleScene, { starterColors } from "#app/battle-scene"; +import type BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext"; +import { starterColors } from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { allAbilities } from "#app/data/ability"; import { speciesEggMoves } from "#app/data/balance/egg-moves"; import { GrowthRate, getGrowthRateColor } from "#app/data/exp"; @@ -12,15 +15,18 @@ import { Gender, getGenderColor, getGenderSymbol } from "#app/data/gender"; import { allMoves } from "#app/data/move"; import { getNatureName } from "#app/data/nature"; import { pokemonFormChanges } from "#app/data/pokemon-forms"; -import { LevelMoves, pokemonFormLevelMoves, pokemonSpeciesLevelMoves } from "#app/data/balance/pokemon-level-moves"; -import PokemonSpecies, { allSpecies, getPokemonSpeciesForm, getPokerusStarters } from "#app/data/pokemon-species"; +import type { LevelMoves } from "#app/data/balance/pokemon-level-moves"; +import { pokemonFormLevelMoves, pokemonSpeciesLevelMoves } from "#app/data/balance/pokemon-level-moves"; +import type PokemonSpecies from "#app/data/pokemon-species"; +import { allSpecies, getPokemonSpeciesForm, getPokerusStarters } from "#app/data/pokemon-species"; import { getStarterValueFriendshipCap, speciesStarterCosts, POKERUS_STARTER_COUNT } from "#app/data/balance/starters"; import { starterPassiveAbilities } from "#app/data/balance/passives"; import { Type } from "#enums/type"; import { GameModes } from "#app/game-mode"; -import { AbilityAttr, DexAttr, DexAttrProps, DexEntry, StarterMoveset, StarterAttributes, StarterPreferences, StarterPrefs } from "#app/system/game-data"; +import type { DexAttrProps, DexEntry, StarterMoveset, StarterAttributes, StarterPreferences } from "#app/system/game-data"; +import { AbilityAttr, DexAttr, StarterPrefs } from "#app/system/game-data"; import { Tutorial, handleTutorial } from "#app/tutorial"; -import { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; +import type { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; import MessageUiHandler from "#app/ui/message-ui-handler"; import PokemonIconAnimHandler, { PokemonIconAnimMode } from "#app/ui/pokemon-icon-anim-handler"; import { StatsContainer } from "#app/ui/stats-container"; @@ -35,7 +41,7 @@ import * as Challenge from "#app/data/challenge"; import MoveInfoOverlay from "#app/ui/move-info-overlay"; import { getEggTierForSpecies } from "#app/data/egg"; import { Device } from "#enums/devices"; -import { Moves } from "#enums/moves"; +import type { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import { Button } from "#enums/buttons"; import { EggSourceType } from "#enums/egg-source-types"; @@ -336,8 +342,8 @@ export default class StarterSelectUiHandler extends MessageUiHandler { protected blockInput: boolean = false; - constructor(scene: BattleScene) { - super(scene, Mode.STARTER_SELECT); + constructor() { + super(Mode.STARTER_SELECT); } setup() { @@ -346,50 +352,50 @@ export default class StarterSelectUiHandler extends MessageUiHandler { const langSettingKey = Object.keys(languageSettings).find(lang => currentLanguage.includes(lang)) ?? "en"; const textSettings = languageSettings[langSettingKey]; - this.starterSelectContainer = this.scene.add.container(0, -this.scene.game.canvas.height / 6); + this.starterSelectContainer = globalScene.add.container(0, -globalScene.game.canvas.height / 6); this.starterSelectContainer.setVisible(false); ui.add(this.starterSelectContainer); - const bgColor = this.scene.add.rectangle(0, 0, this.scene.game.canvas.width / 6, this.scene.game.canvas.height / 6, 0x006860); + const bgColor = globalScene.add.rectangle(0, 0, globalScene.game.canvas.width / 6, globalScene.game.canvas.height / 6, 0x006860); bgColor.setOrigin(0, 0); this.starterSelectContainer.add(bgColor); - const starterSelectBg = this.scene.add.image(0, 0, "starter_select_bg"); + const starterSelectBg = globalScene.add.image(0, 0, "starter_select_bg"); starterSelectBg.setOrigin(0, 0); this.starterSelectContainer.add(starterSelectBg); - this.shinyOverlay = this.scene.add.image(6, 6, "summary_overlay_shiny"); + this.shinyOverlay = globalScene.add.image(6, 6, "summary_overlay_shiny"); this.shinyOverlay.setOrigin(0, 0); this.shinyOverlay.setVisible(false); this.starterSelectContainer.add(this.shinyOverlay); - const starterContainerWindow = addWindow(this.scene, speciesContainerX, filterBarHeight + 1, 175, 161); - const starterContainerBg = this.scene.add.image(speciesContainerX + 1, filterBarHeight + 2, "starter_container_bg"); + const starterContainerWindow = addWindow(speciesContainerX, filterBarHeight + 1, 175, 161); + const starterContainerBg = globalScene.add.image(speciesContainerX + 1, filterBarHeight + 2, "starter_container_bg"); starterContainerBg.setOrigin(0, 0); this.starterSelectContainer.add(starterContainerBg); - this.starterSelectContainer.add(addWindow(this.scene, teamWindowX, teamWindowY - randomSelectionWindowHeight, teamWindowWidth, randomSelectionWindowHeight, true)); - this.starterSelectContainer.add(addWindow(this.scene, teamWindowX, teamWindowY, teamWindowWidth, teamWindowHeight )); - this.starterSelectContainer.add(addWindow(this.scene, teamWindowX, teamWindowY + teamWindowHeight, teamWindowWidth, teamWindowWidth, true)); + this.starterSelectContainer.add(addWindow(teamWindowX, teamWindowY - randomSelectionWindowHeight, teamWindowWidth, randomSelectionWindowHeight, true)); + this.starterSelectContainer.add(addWindow(teamWindowX, teamWindowY, teamWindowWidth, teamWindowHeight )); + this.starterSelectContainer.add(addWindow(teamWindowX, teamWindowY + teamWindowHeight, teamWindowWidth, teamWindowWidth, true)); this.starterSelectContainer.add(starterContainerWindow); // Create and initialise filter bar - this.filterBarContainer = this.scene.add.container(0, 0); - this.filterBar = new FilterBar(this.scene, Math.min(speciesContainerX, teamWindowX), 1, 210, filterBarHeight); + this.filterBarContainer = globalScene.add.container(0, 0); + this.filterBar = new FilterBar(Math.min(speciesContainerX, teamWindowX), 1, 210, filterBarHeight); // gen filter const genOptions: DropDownOption[] = [ - new DropDownOption(this.scene, 1, new DropDownLabel(i18next.t("starterSelectUiHandler:gen1"))), - new DropDownOption(this.scene, 2, new DropDownLabel(i18next.t("starterSelectUiHandler:gen2"))), - new DropDownOption(this.scene, 3, new DropDownLabel(i18next.t("starterSelectUiHandler:gen3"))), - new DropDownOption(this.scene, 4, new DropDownLabel(i18next.t("starterSelectUiHandler:gen4"))), - new DropDownOption(this.scene, 5, new DropDownLabel(i18next.t("starterSelectUiHandler:gen5"))), - new DropDownOption(this.scene, 6, new DropDownLabel(i18next.t("starterSelectUiHandler:gen6"))), - new DropDownOption(this.scene, 7, new DropDownLabel(i18next.t("starterSelectUiHandler:gen7"))), - new DropDownOption(this.scene, 8, new DropDownLabel(i18next.t("starterSelectUiHandler:gen8"))), - new DropDownOption(this.scene, 9, new DropDownLabel(i18next.t("starterSelectUiHandler:gen9"))), + new DropDownOption(1, new DropDownLabel(i18next.t("starterSelectUiHandler:gen1"))), + new DropDownOption(2, new DropDownLabel(i18next.t("starterSelectUiHandler:gen2"))), + new DropDownOption(3, new DropDownLabel(i18next.t("starterSelectUiHandler:gen3"))), + new DropDownOption(4, new DropDownLabel(i18next.t("starterSelectUiHandler:gen4"))), + new DropDownOption(5, new DropDownLabel(i18next.t("starterSelectUiHandler:gen5"))), + new DropDownOption(6, new DropDownLabel(i18next.t("starterSelectUiHandler:gen6"))), + new DropDownOption(7, new DropDownLabel(i18next.t("starterSelectUiHandler:gen7"))), + new DropDownOption(8, new DropDownLabel(i18next.t("starterSelectUiHandler:gen8"))), + new DropDownOption(9, new DropDownLabel(i18next.t("starterSelectUiHandler:gen9"))), ]; - const genDropDown: DropDown = new DropDown(this.scene, 0, 0, genOptions, this.updateStarters, DropDownType.HYBRID); + const genDropDown: DropDown = new DropDown(0, 0, genOptions, this.updateStarters, DropDownType.HYBRID); this.filterBar.addFilter(DropDownColumn.GEN, i18next.t("filterBar:genFilter"), genDropDown); // type filter @@ -399,39 +405,39 @@ export default class StarterSelectUiHandler extends MessageUiHandler { if (index === 0 || index === 19) { return; } - const typeSprite = this.scene.add.sprite(0, 0, getLocalizedSpriteKey("types")); + const typeSprite = globalScene.add.sprite(0, 0, getLocalizedSpriteKey("types")); typeSprite.setScale(0.5); typeSprite.setFrame(type.toLowerCase()); - typeOptions.push(new DropDownOption(this.scene, index, new DropDownLabel("", typeSprite))); + typeOptions.push(new DropDownOption(index, new DropDownLabel("", typeSprite))); }); - this.filterBar.addFilter(DropDownColumn.TYPES, i18next.t("filterBar:typeFilter"), new DropDown(this.scene, 0, 0, typeOptions, this.updateStarters, DropDownType.HYBRID, 0.5)); + this.filterBar.addFilter(DropDownColumn.TYPES, i18next.t("filterBar:typeFilter"), new DropDown(0, 0, typeOptions, this.updateStarters, DropDownType.HYBRID, 0.5)); // caught filter - const shiny1Sprite = this.scene.add.sprite(0, 0, "shiny_icons"); + const shiny1Sprite = globalScene.add.sprite(0, 0, "shiny_icons"); shiny1Sprite.setOrigin(0.15, 0.2); shiny1Sprite.setScale(0.6); shiny1Sprite.setFrame(getVariantIcon(0)); shiny1Sprite.setTint(getVariantTint(0)); - const shiny2Sprite = this.scene.add.sprite(0, 0, "shiny_icons"); + const shiny2Sprite = globalScene.add.sprite(0, 0, "shiny_icons"); shiny2Sprite.setOrigin(0.15, 0.2); shiny2Sprite.setScale(0.6); shiny2Sprite.setFrame(getVariantIcon(1)); shiny2Sprite.setTint(getVariantTint(1)); - const shiny3Sprite = this.scene.add.sprite(0, 0, "shiny_icons"); + const shiny3Sprite = globalScene.add.sprite(0, 0, "shiny_icons"); shiny3Sprite.setOrigin(0.15, 0.2); shiny3Sprite.setScale(0.6); shiny3Sprite.setFrame(getVariantIcon(2)); shiny3Sprite.setTint(getVariantTint(2)); const caughtOptions = [ - new DropDownOption(this.scene, "SHINY3", new DropDownLabel("", shiny3Sprite)), - new DropDownOption(this.scene, "SHINY2", new DropDownLabel("", shiny2Sprite)), - new DropDownOption(this.scene, "SHINY", new DropDownLabel("", shiny1Sprite)), - new DropDownOption(this.scene, "NORMAL", new DropDownLabel(i18next.t("filterBar:normal"))), - new DropDownOption(this.scene, "UNCAUGHT", new DropDownLabel(i18next.t("filterBar:uncaught"))) + new DropDownOption("SHINY3", new DropDownLabel("", shiny3Sprite)), + new DropDownOption("SHINY2", new DropDownLabel("", shiny2Sprite)), + new DropDownOption("SHINY", new DropDownLabel("", shiny1Sprite)), + new DropDownOption("NORMAL", new DropDownLabel(i18next.t("filterBar:normal"))), + new DropDownOption("UNCAUGHT", new DropDownLabel(i18next.t("filterBar:uncaught"))) ]; - this.filterBar.addFilter(DropDownColumn.CAUGHT, i18next.t("filterBar:caughtFilter"), new DropDown(this.scene, 0, 0, caughtOptions, this.updateStarters, DropDownType.HYBRID)); + this.filterBar.addFilter(DropDownColumn.CAUGHT, i18next.t("filterBar:caughtFilter"), new DropDown(0, 0, caughtOptions, this.updateStarters, DropDownType.HYBRID)); // unlocks filter const passiveLabels = [ @@ -449,11 +455,11 @@ export default class StarterSelectUiHandler extends MessageUiHandler { ]; const unlocksOptions = [ - new DropDownOption(this.scene, "PASSIVE", passiveLabels), - new DropDownOption(this.scene, "COST_REDUCTION", costReductionLabels), + new DropDownOption("PASSIVE", passiveLabels), + new DropDownOption("COST_REDUCTION", costReductionLabels), ]; - this.filterBar.addFilter(DropDownColumn.UNLOCKS, i18next.t("filterBar:unlocksFilter"), new DropDown(this.scene, 0, 0, unlocksOptions, this.updateStarters, DropDownType.RADIAL)); + this.filterBar.addFilter(DropDownColumn.UNLOCKS, i18next.t("filterBar:unlocksFilter"), new DropDown(0, 0, unlocksOptions, this.updateStarters, DropDownType.RADIAL)); // misc filter const favoriteLabels = [ @@ -480,23 +486,23 @@ export default class StarterSelectUiHandler extends MessageUiHandler { new DropDownLabel(i18next.t("filterBar:hasPokerus"), undefined, DropDownState.ON), ]; const miscOptions = [ - new DropDownOption(this.scene, "FAVORITE", favoriteLabels), - new DropDownOption(this.scene, "WIN", winLabels), - new DropDownOption(this.scene, "HIDDEN_ABILITY", hiddenAbilityLabels), - new DropDownOption(this.scene, "EGG", eggLabels), - new DropDownOption(this.scene, "POKERUS", pokerusLabels), + new DropDownOption("FAVORITE", favoriteLabels), + new DropDownOption("WIN", winLabels), + new DropDownOption("HIDDEN_ABILITY", hiddenAbilityLabels), + new DropDownOption("EGG", eggLabels), + new DropDownOption("POKERUS", pokerusLabels), ]; - this.filterBar.addFilter(DropDownColumn.MISC, i18next.t("filterBar:miscFilter"), new DropDown(this.scene, 0, 0, miscOptions, this.updateStarters, DropDownType.RADIAL)); + this.filterBar.addFilter(DropDownColumn.MISC, i18next.t("filterBar:miscFilter"), new DropDown(0, 0, miscOptions, this.updateStarters, DropDownType.RADIAL)); // sort filter const sortOptions = [ - new DropDownOption(this.scene, SortCriteria.NUMBER, new DropDownLabel(i18next.t("filterBar:sortByNumber"), undefined, DropDownState.ON)), - new DropDownOption(this.scene, SortCriteria.COST, new DropDownLabel(i18next.t("filterBar:sortByCost"))), - new DropDownOption(this.scene, SortCriteria.CANDY, new DropDownLabel(i18next.t("filterBar:sortByCandies"))), - new DropDownOption(this.scene, SortCriteria.IV, new DropDownLabel(i18next.t("filterBar:sortByIVs"))), - new DropDownOption(this.scene, SortCriteria.NAME, new DropDownLabel(i18next.t("filterBar:sortByName"))) + new DropDownOption(SortCriteria.NUMBER, new DropDownLabel(i18next.t("filterBar:sortByNumber"), undefined, DropDownState.ON)), + new DropDownOption(SortCriteria.COST, new DropDownLabel(i18next.t("filterBar:sortByCost"))), + new DropDownOption(SortCriteria.CANDY, new DropDownLabel(i18next.t("filterBar:sortByCandies"))), + new DropDownOption(SortCriteria.IV, new DropDownLabel(i18next.t("filterBar:sortByIVs"))), + new DropDownOption(SortCriteria.NAME, new DropDownLabel(i18next.t("filterBar:sortByName"))) ]; - this.filterBar.addFilter(DropDownColumn.SORT, i18next.t("filterBar:sortFilter"), new DropDown(this.scene, 0, 0, sortOptions, this.updateStarters, DropDownType.SINGLE)); + this.filterBar.addFilter(DropDownColumn.SORT, i18next.t("filterBar:sortFilter"), new DropDown(0, 0, sortOptions, this.updateStarters, DropDownType.SINGLE)); this.filterBarContainer.add(this.filterBar); this.starterSelectContainer.add(this.filterBarContainer); @@ -504,35 +510,35 @@ export default class StarterSelectUiHandler extends MessageUiHandler { // Offset the generation filter dropdown to avoid covering the filtered pokemon this.filterBar.offsetHybridFilters(); - if (!this.scene.uiTheme) { + if (!globalScene.uiTheme) { starterContainerWindow.setVisible(false); } this.iconAnimHandler = new PokemonIconAnimHandler(); - this.iconAnimHandler.setup(this.scene); + this.iconAnimHandler.setup(); - this.pokemonNumberText = addTextObject(this.scene, 17, 1, "0000", TextStyle.SUMMARY); + this.pokemonNumberText = addTextObject(17, 1, "0000", TextStyle.SUMMARY); this.pokemonNumberText.setOrigin(0, 0); this.starterSelectContainer.add(this.pokemonNumberText); - this.pokemonNameText = addTextObject(this.scene, 6, 112, "", TextStyle.SUMMARY); + this.pokemonNameText = addTextObject(6, 112, "", TextStyle.SUMMARY); this.pokemonNameText.setOrigin(0, 0); this.starterSelectContainer.add(this.pokemonNameText); - this.pokemonGrowthRateLabelText = addTextObject(this.scene, 8, 106, i18next.t("starterSelectUiHandler:growthRate"), TextStyle.SUMMARY_ALT, { fontSize: "36px" }); + this.pokemonGrowthRateLabelText = addTextObject(8, 106, i18next.t("starterSelectUiHandler:growthRate"), TextStyle.SUMMARY_ALT, { fontSize: "36px" }); this.pokemonGrowthRateLabelText.setOrigin(0, 0); this.pokemonGrowthRateLabelText.setVisible(false); this.starterSelectContainer.add(this.pokemonGrowthRateLabelText); - this.pokemonGrowthRateText = addTextObject(this.scene, 34, 106, "", TextStyle.SUMMARY_PINK, { fontSize: "36px" }); + this.pokemonGrowthRateText = addTextObject(34, 106, "", TextStyle.SUMMARY_PINK, { fontSize: "36px" }); this.pokemonGrowthRateText.setOrigin(0, 0); this.starterSelectContainer.add(this.pokemonGrowthRateText); - this.pokemonGenderText = addTextObject(this.scene, 96, 112, "", TextStyle.SUMMARY_ALT); + this.pokemonGenderText = addTextObject(96, 112, "", TextStyle.SUMMARY_ALT); this.pokemonGenderText.setOrigin(0, 0); this.starterSelectContainer.add(this.pokemonGenderText); - this.pokemonUncaughtText = addTextObject(this.scene, 6, 127, i18next.t("starterSelectUiHandler:uncaught"), TextStyle.SUMMARY_ALT, { fontSize: "56px" }); + this.pokemonUncaughtText = addTextObject(6, 127, i18next.t("starterSelectUiHandler:uncaught"), TextStyle.SUMMARY_ALT, { fontSize: "56px" }); this.pokemonUncaughtText.setOrigin(0, 0); this.starterSelectContainer.add(this.pokemonUncaughtText); @@ -544,46 +550,46 @@ export default class StarterSelectUiHandler extends MessageUiHandler { // The font size should be set per language const starterInfoTextSize = textSettings?.starterInfoTextSize || 56; - this.pokemonAbilityLabelText = addTextObject(this.scene, 6, 127 + starterInfoYOffset, i18next.t("starterSelectUiHandler:ability"), TextStyle.SUMMARY_ALT, { fontSize: starterInfoTextSize }); + this.pokemonAbilityLabelText = addTextObject(6, 127 + starterInfoYOffset, i18next.t("starterSelectUiHandler:ability"), TextStyle.SUMMARY_ALT, { fontSize: starterInfoTextSize }); this.pokemonAbilityLabelText.setOrigin(0, 0); this.pokemonAbilityLabelText.setVisible(false); this.starterSelectContainer.add(this.pokemonAbilityLabelText); - this.pokemonAbilityText = addTextObject(this.scene, starterInfoXPos, 127 + starterInfoYOffset, "", TextStyle.SUMMARY_ALT, { fontSize: starterInfoTextSize }); + this.pokemonAbilityText = addTextObject(starterInfoXPos, 127 + starterInfoYOffset, "", TextStyle.SUMMARY_ALT, { fontSize: starterInfoTextSize }); this.pokemonAbilityText.setOrigin(0, 0); this.pokemonAbilityText.setInteractive(new Phaser.Geom.Rectangle(0, 0, 250, 55), Phaser.Geom.Rectangle.Contains); this.starterSelectContainer.add(this.pokemonAbilityText); - this.pokemonPassiveLabelText = addTextObject(this.scene, 6, 136 + starterInfoYOffset, i18next.t("starterSelectUiHandler:passive"), TextStyle.SUMMARY_ALT, { fontSize: starterInfoTextSize }); + this.pokemonPassiveLabelText = addTextObject(6, 136 + starterInfoYOffset, i18next.t("starterSelectUiHandler:passive"), TextStyle.SUMMARY_ALT, { fontSize: starterInfoTextSize }); this.pokemonPassiveLabelText.setOrigin(0, 0); this.pokemonPassiveLabelText.setVisible(false); this.starterSelectContainer.add(this.pokemonPassiveLabelText); - this.pokemonPassiveText = addTextObject(this.scene, starterInfoXPos, 136 + starterInfoYOffset, "", TextStyle.SUMMARY_ALT, { fontSize: starterInfoTextSize }); + this.pokemonPassiveText = addTextObject(starterInfoXPos, 136 + starterInfoYOffset, "", TextStyle.SUMMARY_ALT, { fontSize: starterInfoTextSize }); this.pokemonPassiveText.setOrigin(0, 0); this.pokemonPassiveText.setInteractive(new Phaser.Geom.Rectangle(0, 0, 250, 55), Phaser.Geom.Rectangle.Contains); this.starterSelectContainer.add(this.pokemonPassiveText); - this.pokemonPassiveDisabledIcon = this.scene.add.sprite(starterInfoXPos, 137 + starterInfoYOffset, "icon_stop"); + this.pokemonPassiveDisabledIcon = globalScene.add.sprite(starterInfoXPos, 137 + starterInfoYOffset, "icon_stop"); this.pokemonPassiveDisabledIcon.setOrigin(0, 0.5); this.pokemonPassiveDisabledIcon.setScale(0.35); this.pokemonPassiveDisabledIcon.setVisible(false); this.starterSelectContainer.add(this.pokemonPassiveDisabledIcon); - this.pokemonPassiveLockedIcon = this.scene.add.sprite(starterInfoXPos, 137 + starterInfoYOffset, "icon_lock"); + this.pokemonPassiveLockedIcon = globalScene.add.sprite(starterInfoXPos, 137 + starterInfoYOffset, "icon_lock"); this.pokemonPassiveLockedIcon.setOrigin(0, 0.5); this.pokemonPassiveLockedIcon.setScale(0.42, 0.38); this.pokemonPassiveLockedIcon.setVisible(false); this.starterSelectContainer.add(this.pokemonPassiveLockedIcon); - this.pokemonNatureLabelText = addTextObject(this.scene, 6, 145 + starterInfoYOffset, i18next.t("starterSelectUiHandler:nature"), TextStyle.SUMMARY_ALT, { fontSize: starterInfoTextSize }); + this.pokemonNatureLabelText = addTextObject(6, 145 + starterInfoYOffset, i18next.t("starterSelectUiHandler:nature"), TextStyle.SUMMARY_ALT, { fontSize: starterInfoTextSize }); this.pokemonNatureLabelText.setOrigin(0, 0); this.pokemonNatureLabelText.setVisible(false); this.starterSelectContainer.add(this.pokemonNatureLabelText); - this.pokemonNatureText = addBBCodeTextObject(this.scene, starterInfoXPos, 145 + starterInfoYOffset, "", TextStyle.SUMMARY_ALT, { fontSize: starterInfoTextSize }); + this.pokemonNatureText = addBBCodeTextObject(starterInfoXPos, 145 + starterInfoYOffset, "", TextStyle.SUMMARY_ALT, { fontSize: starterInfoTextSize }); this.pokemonNatureText.setOrigin(0, 0); this.starterSelectContainer.add(this.pokemonNatureText); @@ -595,38 +601,38 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.pokemonEggMoveBgs = []; this.pokemonEggMoveLabels = []; - this.valueLimitLabel = addTextObject(this.scene, teamWindowX + 17, 150, "0/10", TextStyle.TOOLTIP_CONTENT); + this.valueLimitLabel = addTextObject(teamWindowX + 17, 150, "0/10", TextStyle.TOOLTIP_CONTENT); this.valueLimitLabel.setOrigin(0.5, 0); this.starterSelectContainer.add(this.valueLimitLabel); - const startLabel = addTextObject(this.scene, teamWindowX + 17, 162, i18next.t("common:start"), TextStyle.TOOLTIP_CONTENT); + const startLabel = addTextObject(teamWindowX + 17, 162, i18next.t("common:start"), TextStyle.TOOLTIP_CONTENT); startLabel.setOrigin(0.5, 0); this.starterSelectContainer.add(startLabel); - this.startCursorObj = this.scene.add.nineslice(teamWindowX + 4, 160, "select_cursor", undefined, 26, 15, 6, 6, 6, 6); + this.startCursorObj = globalScene.add.nineslice(teamWindowX + 4, 160, "select_cursor", undefined, 26, 15, 6, 6, 6, 6); this.startCursorObj.setVisible(false); this.startCursorObj.setOrigin(0, 0); this.starterSelectContainer.add(this.startCursorObj); - const randomSelectLabel = addTextObject(this.scene, teamWindowX + 17, 23, i18next.t("starterSelectUiHandler:randomize"), TextStyle.TOOLTIP_CONTENT); + const randomSelectLabel = addTextObject(teamWindowX + 17, 23, i18next.t("starterSelectUiHandler:randomize"), TextStyle.TOOLTIP_CONTENT); randomSelectLabel.setOrigin(0.5, 0); this.starterSelectContainer.add(randomSelectLabel); - this.randomCursorObj = this.scene.add.nineslice(teamWindowX + 4, 21, "select_cursor", undefined, 26, 15, 6, 6, 6, 6); + this.randomCursorObj = globalScene.add.nineslice(teamWindowX + 4, 21, "select_cursor", undefined, 26, 15, 6, 6, 6, 6); this.randomCursorObj.setVisible(false); this.randomCursorObj.setOrigin(0, 0); this.starterSelectContainer.add(this.randomCursorObj); const starterSpecies: Species[] = []; - const starterBoxContainer = this.scene.add.container(speciesContainerX + 6, 9); //115 + const starterBoxContainer = globalScene.add.container(speciesContainerX + 6, 9); //115 - this.starterSelectScrollBar = new ScrollBar(this.scene, 161, 12, 5, starterContainerWindow.height - 6, 9); + this.starterSelectScrollBar = new ScrollBar(161, 12, 5, starterContainerWindow.height - 6, 9); starterBoxContainer.add(this.starterSelectScrollBar); this.pokerusCursorObjs = new Array(POKERUS_STARTER_COUNT).fill(null).map(() => { - const cursorObj = this.scene.add.image(0, 0, "select_cursor_pokerus"); + const cursorObj = globalScene.add.image(0, 0, "select_cursor_pokerus"); cursorObj.setVisible(false); cursorObj.setOrigin(0, 0); starterBoxContainer.add(cursorObj); @@ -634,16 +640,16 @@ export default class StarterSelectUiHandler extends MessageUiHandler { }); this.starterCursorObjs = new Array(6).fill(null).map(() => { - const cursorObj = this.scene.add.image(0, 0, "select_cursor_highlight"); + const cursorObj = globalScene.add.image(0, 0, "select_cursor_highlight"); cursorObj.setVisible(false); cursorObj.setOrigin(0, 0); starterBoxContainer.add(cursorObj); return cursorObj; }); - this.cursorObj = this.scene.add.image(0, 0, "select_cursor"); + this.cursorObj = globalScene.add.image(0, 0, "select_cursor"); this.cursorObj.setOrigin(0, 0); - this.starterIconsCursorObj = this.scene.add.image(289, 64, "select_gen_cursor"); + this.starterIconsCursorObj = globalScene.add.image(289, 64, "select_gen_cursor"); this.starterIconsCursorObj.setName("starter-icons-cursor"); this.starterIconsCursorObj.setVisible(false); this.starterIconsCursorObj.setOrigin(0, 0); @@ -660,7 +666,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.speciesLoaded.set(species.speciesId, false); this.allSpecies.push(species); - const starterContainer = new StarterContainer(this.scene, species).setVisible(false); + const starterContainer = new StarterContainer(species).setVisible(false); this.iconAnimHandler.addOrUpdate(starterContainer.icon, PokemonIconAnimMode.NONE); this.starterContainers.push(starterContainer); starterBoxContainer.add(starterContainer); @@ -669,7 +675,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.starterSelectContainer.add(starterBoxContainer); this.starterIcons = new Array(6).fill(null).map((_, i) => { - const icon = this.scene.add.sprite(teamWindowX + 7, calcStarterIconY(i), "pokemon_icons_0"); + const icon = globalScene.add.sprite(teamWindowX + 7, calcStarterIconY(i), "pokemon_icons_0"); icon.setScale(0.5); icon.setOrigin(0, 0); icon.setFrame("unknown"); @@ -678,96 +684,96 @@ export default class StarterSelectUiHandler extends MessageUiHandler { return icon; }); - this.pokemonSprite = this.scene.add.sprite(53, 63, "pkmn__sub"); - this.pokemonSprite.setPipeline(this.scene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], ignoreTimeTint: true }); + this.pokemonSprite = globalScene.add.sprite(53, 63, "pkmn__sub"); + this.pokemonSprite.setPipeline(globalScene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], ignoreTimeTint: true }); this.starterSelectContainer.add(this.pokemonSprite); - this.type1Icon = this.scene.add.sprite(8, 98, getLocalizedSpriteKey("types")); + this.type1Icon = globalScene.add.sprite(8, 98, getLocalizedSpriteKey("types")); this.type1Icon.setScale(0.5); this.type1Icon.setOrigin(0, 0); this.starterSelectContainer.add(this.type1Icon); - this.type2Icon = this.scene.add.sprite(26, 98, getLocalizedSpriteKey("types")); + this.type2Icon = globalScene.add.sprite(26, 98, getLocalizedSpriteKey("types")); this.type2Icon.setScale(0.5); this.type2Icon.setOrigin(0, 0); this.starterSelectContainer.add(this.type2Icon); - this.pokemonLuckLabelText = addTextObject(this.scene, 8, 89, i18next.t("common:luckIndicator"), TextStyle.WINDOW_ALT, { fontSize: "56px" }); + this.pokemonLuckLabelText = addTextObject(8, 89, i18next.t("common:luckIndicator"), TextStyle.WINDOW_ALT, { fontSize: "56px" }); this.pokemonLuckLabelText.setOrigin(0, 0); this.starterSelectContainer.add(this.pokemonLuckLabelText); - this.pokemonLuckText = addTextObject(this.scene, 8 + this.pokemonLuckLabelText.displayWidth + 2, 89, "0", TextStyle.WINDOW, { fontSize: "56px" }); + this.pokemonLuckText = addTextObject(8 + this.pokemonLuckLabelText.displayWidth + 2, 89, "0", TextStyle.WINDOW, { fontSize: "56px" }); this.pokemonLuckText.setOrigin(0, 0); this.starterSelectContainer.add(this.pokemonLuckText); // Candy icon and count - this.pokemonCandyContainer = this.scene.add.container(4.5, 18); + this.pokemonCandyContainer = globalScene.add.container(4.5, 18); - this.pokemonCandyIcon = this.scene.add.sprite(0, 0, "candy"); + this.pokemonCandyIcon = globalScene.add.sprite(0, 0, "candy"); this.pokemonCandyIcon.setScale(0.5); this.pokemonCandyIcon.setOrigin(0, 0); this.pokemonCandyContainer.add(this.pokemonCandyIcon); - this.pokemonCandyOverlayIcon = this.scene.add.sprite(0, 0, "candy_overlay"); + this.pokemonCandyOverlayIcon = globalScene.add.sprite(0, 0, "candy_overlay"); this.pokemonCandyOverlayIcon.setScale(0.5); this.pokemonCandyOverlayIcon.setOrigin(0, 0); this.pokemonCandyContainer.add(this.pokemonCandyOverlayIcon); - this.pokemonCandyDarknessOverlay = this.scene.add.sprite(0, 0, "candy"); + this.pokemonCandyDarknessOverlay = globalScene.add.sprite(0, 0, "candy"); this.pokemonCandyDarknessOverlay.setScale(0.5); this.pokemonCandyDarknessOverlay.setOrigin(0, 0); this.pokemonCandyDarknessOverlay.setTint(0x000000); this.pokemonCandyDarknessOverlay.setAlpha(0.50); this.pokemonCandyContainer.add(this.pokemonCandyDarknessOverlay); - this.pokemonCandyCountText = addTextObject(this.scene, 9.5, 0, "x0", TextStyle.WINDOW_ALT, { fontSize: "56px" }); + this.pokemonCandyCountText = addTextObject(9.5, 0, "x0", TextStyle.WINDOW_ALT, { fontSize: "56px" }); this.pokemonCandyCountText.setOrigin(0, 0); this.pokemonCandyContainer.add(this.pokemonCandyCountText); this.pokemonCandyContainer.setInteractive(new Phaser.Geom.Rectangle(0, 0, 30, 20), Phaser.Geom.Rectangle.Contains); this.starterSelectContainer.add(this.pokemonCandyContainer); - this.pokemonFormText = addTextObject(this.scene, 6, 42, "Form", TextStyle.WINDOW_ALT, { fontSize: "42px" }); + this.pokemonFormText = addTextObject(6, 42, "Form", TextStyle.WINDOW_ALT, { fontSize: "42px" }); this.pokemonFormText.setOrigin(0, 0); this.starterSelectContainer.add(this.pokemonFormText); - this.pokemonCaughtHatchedContainer = this.scene.add.container(2, 25); + this.pokemonCaughtHatchedContainer = globalScene.add.container(2, 25); this.pokemonCaughtHatchedContainer.setScale(0.5); this.starterSelectContainer.add(this.pokemonCaughtHatchedContainer); - const pokemonCaughtIcon = this.scene.add.sprite(1, 0, "items", "pb"); + const pokemonCaughtIcon = globalScene.add.sprite(1, 0, "items", "pb"); pokemonCaughtIcon.setOrigin(0, 0); pokemonCaughtIcon.setScale(0.75); this.pokemonCaughtHatchedContainer.add(pokemonCaughtIcon); - this.pokemonCaughtCountText = addTextObject(this.scene, 24, 4, "0", TextStyle.SUMMARY_ALT); + this.pokemonCaughtCountText = addTextObject(24, 4, "0", TextStyle.SUMMARY_ALT); this.pokemonCaughtCountText.setOrigin(0, 0); this.pokemonCaughtHatchedContainer.add(this.pokemonCaughtCountText); - this.pokemonHatchedIcon = this.scene.add.sprite(1, 14, "egg_icons"); + this.pokemonHatchedIcon = globalScene.add.sprite(1, 14, "egg_icons"); this.pokemonHatchedIcon.setOrigin(0.15, 0.2); this.pokemonHatchedIcon.setScale(0.8); this.pokemonCaughtHatchedContainer.add(this.pokemonHatchedIcon); - this.pokemonShinyIcon = this.scene.add.sprite(14, 76, "shiny_icons"); + this.pokemonShinyIcon = globalScene.add.sprite(14, 76, "shiny_icons"); this.pokemonShinyIcon.setOrigin(0.15, 0.2); this.pokemonShinyIcon.setScale(1); this.pokemonCaughtHatchedContainer.add(this.pokemonShinyIcon); - this.pokemonHatchedCountText = addTextObject(this.scene, 24, 19, "0", TextStyle.SUMMARY_ALT); + this.pokemonHatchedCountText = addTextObject(24, 19, "0", TextStyle.SUMMARY_ALT); this.pokemonHatchedCountText.setOrigin(0, 0); this.pokemonCaughtHatchedContainer.add(this.pokemonHatchedCountText); - this.pokemonMovesContainer = this.scene.add.container(102, 16); + this.pokemonMovesContainer = globalScene.add.container(102, 16); this.pokemonMovesContainer.setScale(0.375); for (let m = 0; m < 4; m++) { - const moveContainer = this.scene.add.container(0, 14 * m); + const moveContainer = globalScene.add.container(0, 14 * m); - const moveBg = this.scene.add.nineslice(0, 0, "type_bgs", "unknown", 92, 14, 2, 2, 2, 2); + const moveBg = globalScene.add.nineslice(0, 0, "type_bgs", "unknown", 92, 14, 2, 2, 2, 2); moveBg.setOrigin(1, 0); - const moveLabel = addTextObject(this.scene, -moveBg.width / 2, 0, "-", TextStyle.PARTY); + const moveLabel = addTextObject(-moveBg.width / 2, 0, "-", TextStyle.PARTY); moveLabel.setOrigin(0.5, 0); this.pokemonMoveBgs.push(moveBg); @@ -780,28 +786,28 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.pokemonMovesContainer.add(moveContainer); } - this.pokemonAdditionalMoveCountLabel = addTextObject(this.scene, -this.pokemonMoveBgs[0].width / 2, 56, "(+0)", TextStyle.PARTY); + this.pokemonAdditionalMoveCountLabel = addTextObject(-this.pokemonMoveBgs[0].width / 2, 56, "(+0)", TextStyle.PARTY); this.pokemonAdditionalMoveCountLabel.setOrigin(0.5, 0); this.pokemonMovesContainer.add(this.pokemonAdditionalMoveCountLabel); this.starterSelectContainer.add(this.pokemonMovesContainer); - this.pokemonEggMovesContainer = this.scene.add.container(102, 85); + this.pokemonEggMovesContainer = globalScene.add.container(102, 85); this.pokemonEggMovesContainer.setScale(0.375); - const eggMovesLabel = addTextObject(this.scene, -46, 0, i18next.t("starterSelectUiHandler:eggMoves"), TextStyle.WINDOW_ALT); + const eggMovesLabel = addTextObject(-46, 0, i18next.t("starterSelectUiHandler:eggMoves"), TextStyle.WINDOW_ALT); eggMovesLabel.setOrigin(0.5, 0); this.pokemonEggMovesContainer.add(eggMovesLabel); for (let m = 0; m < 4; m++) { - const eggMoveContainer = this.scene.add.container(0, 16 + 14 * m); + const eggMoveContainer = globalScene.add.container(0, 16 + 14 * m); - const eggMoveBg = this.scene.add.nineslice(0, 0, "type_bgs", "unknown", 92, 14, 2, 2, 2, 2); + const eggMoveBg = globalScene.add.nineslice(0, 0, "type_bgs", "unknown", 92, 14, 2, 2, 2, 2); eggMoveBg.setOrigin(1, 0); - const eggMoveLabel = addTextObject(this.scene, -eggMoveBg.width / 2, 0, "???", TextStyle.PARTY); + const eggMoveLabel = addTextObject(-eggMoveBg.width / 2, 0, "???", TextStyle.PARTY); eggMoveLabel.setOrigin(0.5, 0); this.pokemonEggMoveBgs.push(eggMoveBg); @@ -820,85 +826,85 @@ export default class StarterSelectUiHandler extends MessageUiHandler { // The font size should be set per language const instructionTextSize = textSettings.instructionTextSize; - this.instructionsContainer = this.scene.add.container(4, 156); + this.instructionsContainer = globalScene.add.container(4, 156); this.instructionsContainer.setVisible(true); this.starterSelectContainer.add(this.instructionsContainer); // instruction rows that will be pushed into the container dynamically based on need // creating new sprites since they will be added to the scene later - this.shinyIconElement = new Phaser.GameObjects.Sprite(this.scene, this.instructionRowX, this.instructionRowY, "keyboard", "R.png"); + this.shinyIconElement = new Phaser.GameObjects.Sprite(globalScene, this.instructionRowX, this.instructionRowY, "keyboard", "R.png"); this.shinyIconElement.setName("sprite-shiny-icon-element"); this.shinyIconElement.setScale(0.675); this.shinyIconElement.setOrigin(0.0, 0.0); - this.shinyLabel = addTextObject(this.scene, this.instructionRowX + this.instructionRowTextOffset, this.instructionRowY, i18next.t("starterSelectUiHandler:cycleShiny"), TextStyle.PARTY, { fontSize: instructionTextSize }); + this.shinyLabel = addTextObject(this.instructionRowX + this.instructionRowTextOffset, this.instructionRowY, i18next.t("starterSelectUiHandler:cycleShiny"), TextStyle.PARTY, { fontSize: instructionTextSize }); this.shinyLabel.setName("text-shiny-label"); - this.formIconElement = new Phaser.GameObjects.Sprite(this.scene, this.instructionRowX, this.instructionRowY, "keyboard", "F.png"); + this.formIconElement = new Phaser.GameObjects.Sprite(globalScene, this.instructionRowX, this.instructionRowY, "keyboard", "F.png"); this.formIconElement.setName("sprite-form-icon-element"); this.formIconElement.setScale(0.675); this.formIconElement.setOrigin(0.0, 0.0); - this.formLabel = addTextObject(this.scene, this.instructionRowX + this.instructionRowTextOffset, this.instructionRowY, i18next.t("starterSelectUiHandler:cycleForm"), TextStyle.PARTY, { fontSize: instructionTextSize }); + this.formLabel = addTextObject(this.instructionRowX + this.instructionRowTextOffset, this.instructionRowY, i18next.t("starterSelectUiHandler:cycleForm"), TextStyle.PARTY, { fontSize: instructionTextSize }); this.formLabel.setName("text-form-label"); - this.genderIconElement = new Phaser.GameObjects.Sprite(this.scene, this.instructionRowX, this.instructionRowY, "keyboard", "G.png"); + this.genderIconElement = new Phaser.GameObjects.Sprite(globalScene, this.instructionRowX, this.instructionRowY, "keyboard", "G.png"); this.genderIconElement.setName("sprite-gender-icon-element"); this.genderIconElement.setScale(0.675); this.genderIconElement.setOrigin(0.0, 0.0); - this.genderLabel = addTextObject(this.scene, this.instructionRowX + this.instructionRowTextOffset, this.instructionRowY, i18next.t("starterSelectUiHandler:cycleGender"), TextStyle.PARTY, { fontSize: instructionTextSize }); + this.genderLabel = addTextObject(this.instructionRowX + this.instructionRowTextOffset, this.instructionRowY, i18next.t("starterSelectUiHandler:cycleGender"), TextStyle.PARTY, { fontSize: instructionTextSize }); this.genderLabel.setName("text-gender-label"); - this.abilityIconElement = new Phaser.GameObjects.Sprite(this.scene, this.instructionRowX, this.instructionRowY, "keyboard", "E.png"); + this.abilityIconElement = new Phaser.GameObjects.Sprite(globalScene, this.instructionRowX, this.instructionRowY, "keyboard", "E.png"); this.abilityIconElement.setName("sprite-ability-icon-element"); this.abilityIconElement.setScale(0.675); this.abilityIconElement.setOrigin(0.0, 0.0); - this.abilityLabel = addTextObject(this.scene, this.instructionRowX + this.instructionRowTextOffset, this.instructionRowY, i18next.t("starterSelectUiHandler:cycleAbility"), TextStyle.PARTY, { fontSize: instructionTextSize }); + this.abilityLabel = addTextObject(this.instructionRowX + this.instructionRowTextOffset, this.instructionRowY, i18next.t("starterSelectUiHandler:cycleAbility"), TextStyle.PARTY, { fontSize: instructionTextSize }); this.abilityLabel.setName("text-ability-label"); - this.natureIconElement = new Phaser.GameObjects.Sprite(this.scene, this.instructionRowX, this.instructionRowY, "keyboard", "N.png"); + this.natureIconElement = new Phaser.GameObjects.Sprite(globalScene, this.instructionRowX, this.instructionRowY, "keyboard", "N.png"); this.natureIconElement.setName("sprite-nature-icon-element"); this.natureIconElement.setScale(0.675); this.natureIconElement.setOrigin(0.0, 0.0); - this.natureLabel = addTextObject(this.scene, this.instructionRowX + this.instructionRowTextOffset, this.instructionRowY, i18next.t("starterSelectUiHandler:cycleNature"), TextStyle.PARTY, { fontSize: instructionTextSize }); + this.natureLabel = addTextObject(this.instructionRowX + this.instructionRowTextOffset, this.instructionRowY, i18next.t("starterSelectUiHandler:cycleNature"), TextStyle.PARTY, { fontSize: instructionTextSize }); this.natureLabel.setName("text-nature-label"); - this.variantIconElement = new Phaser.GameObjects.Sprite(this.scene, this.instructionRowX, this.instructionRowY, "keyboard", "V.png"); + this.variantIconElement = new Phaser.GameObjects.Sprite(globalScene, this.instructionRowX, this.instructionRowY, "keyboard", "V.png"); this.variantIconElement.setName("sprite-variant-icon-element"); this.variantIconElement.setScale(0.675); this.variantIconElement.setOrigin(0.0, 0.0); - this.variantLabel = addTextObject(this.scene, this.instructionRowX + this.instructionRowTextOffset, this.instructionRowY, i18next.t("starterSelectUiHandler:cycleVariant"), TextStyle.PARTY, { fontSize: instructionTextSize }); + this.variantLabel = addTextObject(this.instructionRowX + this.instructionRowTextOffset, this.instructionRowY, i18next.t("starterSelectUiHandler:cycleVariant"), TextStyle.PARTY, { fontSize: instructionTextSize }); this.variantLabel.setName("text-variant-label"); - this.goFilterIconElement = new Phaser.GameObjects.Sprite(this.scene, this.filterInstructionRowX, this.filterInstructionRowY, "keyboard", "C.png"); + this.goFilterIconElement = new Phaser.GameObjects.Sprite(globalScene, this.filterInstructionRowX, this.filterInstructionRowY, "keyboard", "C.png"); this.goFilterIconElement.setName("sprite-goFilter-icon-element"); this.goFilterIconElement.setScale(0.675); this.goFilterIconElement.setOrigin(0.0, 0.0); - this.goFilterLabel = addTextObject(this.scene, this.filterInstructionRowX + this.instructionRowTextOffset, this.filterInstructionRowY, i18next.t("starterSelectUiHandler:goFilter"), TextStyle.PARTY, { fontSize: instructionTextSize }); + this.goFilterLabel = addTextObject(this.filterInstructionRowX + this.instructionRowTextOffset, this.filterInstructionRowY, i18next.t("starterSelectUiHandler:goFilter"), TextStyle.PARTY, { fontSize: instructionTextSize }); this.goFilterLabel.setName("text-goFilter-label"); this.hideInstructions(); - this.filterInstructionsContainer = this.scene.add.container(50, 5); + this.filterInstructionsContainer = globalScene.add.container(50, 5); this.filterInstructionsContainer.setVisible(true); this.starterSelectContainer.add(this.filterInstructionsContainer); - this.starterSelectMessageBoxContainer = this.scene.add.container(0, this.scene.game.canvas.height / 6); + this.starterSelectMessageBoxContainer = globalScene.add.container(0, globalScene.game.canvas.height / 6); this.starterSelectMessageBoxContainer.setVisible(false); this.starterSelectContainer.add(this.starterSelectMessageBoxContainer); - this.starterSelectMessageBox = addWindow(this.scene, 1, -1, 318, 28); + this.starterSelectMessageBox = addWindow(1, -1, 318, 28); this.starterSelectMessageBox.setOrigin(0, 1); this.starterSelectMessageBoxContainer.add(this.starterSelectMessageBox); - this.message = addTextObject(this.scene, 8, 8, "", TextStyle.WINDOW, { maxLines: 2 }); + this.message = addTextObject(8, 8, "", TextStyle.WINDOW, { maxLines: 2 }); this.message.setOrigin(0, 0); this.starterSelectMessageBoxContainer.add(this.message); // arrow icon for the message box this.initPromptSprite(this.starterSelectMessageBoxContainer); - this.statsContainer = new StatsContainer(this.scene, 6, 16); + this.statsContainer = new StatsContainer(6, 16); - this.scene.add.existing(this.statsContainer); + globalScene.add.existing(this.statsContainer); this.statsContainer.setVisible(false); @@ -906,11 +912,11 @@ export default class StarterSelectUiHandler extends MessageUiHandler { // add the info overlay last to be the top most ui element and prevent the IVs from overlaying this const overlayScale = 1; - this.moveInfoOverlay = new MoveInfoOverlay(this.scene, { + this.moveInfoOverlay = new MoveInfoOverlay({ scale: overlayScale, top: true, x: 1, - y: this.scene.game.canvas.height / 6 - MoveInfoOverlay.getHeight(overlayScale) - 29, + y: globalScene.game.canvas.height / 6 - MoveInfoOverlay.getHeight(overlayScale) - 29, }); this.starterSelectContainer.add(this.moveInfoOverlay); @@ -919,7 +925,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.initTutorialOverlay(this.starterSelectContainer); this.starterSelectContainer.bringToTop(this.starterSelectMessageBoxContainer); - this.scene.eventTarget.addEventListener(BattleSceneEventType.CANDY_UPGRADE_NOTIFICATION_CHANGED, (e) => this.onCandyUpgradeDisplayChanged(e)); + globalScene.eventTarget.addEventListener(BattleSceneEventType.CANDY_UPGRADE_NOTIFICATION_CHANGED, (e) => this.onCandyUpgradeDisplayChanged(e)); this.updateInstructions(); } @@ -930,7 +936,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.starterPreferences = StarterPrefs.load(); } this.moveInfoOverlay.clear(); // clear this when removing a menu; the cancel button doesn't seem to trigger this automatically on controllers - this.pokerusSpecies = getPokerusStarters(this.scene); + this.pokerusSpecies = getPokerusStarters(); if (args.length >= 1 && args[0] instanceof Function) { super.show(args); @@ -940,7 +946,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.allSpecies.forEach((species, s) => { const icon = this.starterContainers[s].icon; - const dexEntry = this.scene.gameData.dexData[species.speciesId]; + const dexEntry = globalScene.gameData.dexData[species.speciesId]; // Initialize the StarterAttributes for this species this.starterPreferences[species.speciesId] = this.initStarterPrefs(species); @@ -962,7 +968,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.setCursor(0); this.tryUpdateValue(0); - handleTutorial(this.scene, Tutorial.Starter_Select); + handleTutorial(Tutorial.Starter_Select); return true; } @@ -980,8 +986,8 @@ export default class StarterSelectUiHandler extends MessageUiHandler { */ initStarterPrefs(species: PokemonSpecies): StarterAttributes { const starterAttributes = this.starterPreferences[species.speciesId]; - const dexEntry = this.scene.gameData.dexData[species.speciesId]; - const starterData = this.scene.gameData.starterData[species.speciesId]; + const dexEntry = globalScene.gameData.dexData[species.speciesId]; + const starterData = globalScene.gameData.starterData[species.speciesId]; // no preferences or Pokemon wasn't caught, return empty attribute if (!starterAttributes || !dexEntry.caughtAttr) { @@ -1040,13 +1046,13 @@ export default class StarterSelectUiHandler extends MessageUiHandler { } const selectedForm = starterAttributes.form; - if (selectedForm !== undefined && (!species.forms[selectedForm]?.isStarterSelectable || !(caughtAttr & this.scene.gameData.getFormAttr(selectedForm)))) { + if (selectedForm !== undefined && (!species.forms[selectedForm]?.isStarterSelectable || !(caughtAttr & globalScene.gameData.getFormAttr(selectedForm)))) { // requested form wasn't unlocked/isn't a starter form, purging setting delete starterAttributes.form; } if (starterAttributes.nature !== undefined) { - const unlockedNatures = this.scene.gameData.getNaturesForAttr(dexEntry.natureAttr); + const unlockedNatures = globalScene.gameData.getNaturesForAttr(dexEntry.natureAttr); if (unlockedNatures.indexOf(starterAttributes.nature as unknown as Nature) < 0) { // requested nature wasn't unlocked, purging setting delete starterAttributes.nature; @@ -1085,7 +1091,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.starterSelectMessageBoxContainer.setY(0); this.message.setY(4); } else { - this.starterSelectMessageBoxContainer.setY(this.scene.game.canvas.height / 6); + this.starterSelectMessageBoxContainer.setY(globalScene.game.canvas.height / 6); this.starterSelectMessageBox.setOrigin(0, 1); this.message.setY(singleLine ? -22 : -37); } @@ -1098,14 +1104,14 @@ export default class StarterSelectUiHandler extends MessageUiHandler { * @returns true if upgrade notifications are enabled and set to display an 'Icon' */ isUpgradeIconEnabled(): boolean { - return this.scene.candyUpgradeNotification !== 0 && this.scene.candyUpgradeDisplay === 0; + return globalScene.candyUpgradeNotification !== 0 && globalScene.candyUpgradeDisplay === 0; } /** * Determines if 'Animation' based upgrade notifications should be shown * @returns true if upgrade notifications are enabled and set to display an 'Animation' */ isUpgradeAnimationEnabled(): boolean { - return this.scene.candyUpgradeNotification !== 0 && this.scene.candyUpgradeDisplay === 1; + return globalScene.candyUpgradeNotification !== 0 && globalScene.candyUpgradeDisplay === 1; } /** @@ -1115,7 +1121,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { */ isPassiveAvailable(speciesId: number): boolean { // Get this species ID's starter data - const starterData = this.scene.gameData.starterData[speciesId]; + const starterData = globalScene.gameData.starterData[speciesId]; return starterData.candyCount >= getPassiveCandyCount(speciesStarterCosts[speciesId]) && !(starterData.passiveAttr & PassiveAttr.UNLOCKED); @@ -1128,7 +1134,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { */ isValueReductionAvailable(speciesId: number): boolean { // Get this species ID's starter data - const starterData = this.scene.gameData.starterData[speciesId]; + const starterData = globalScene.gameData.starterData[speciesId]; return starterData.candyCount >= getValueReductionCandyCounts(speciesStarterCosts[speciesId])[starterData.valueReduction] && starterData.valueReduction < valueReductionMax; @@ -1141,7 +1147,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { */ isSameSpeciesEggAvailable(speciesId: number): boolean { // Get this species ID's starter data - const starterData = this.scene.gameData.starterData[speciesId]; + const starterData = globalScene.gameData.starterData[speciesId]; return starterData.candyCount >= getSameSpeciesEggCandyCounts(speciesStarterCosts[speciesId]); } @@ -1153,9 +1159,9 @@ export default class StarterSelectUiHandler extends MessageUiHandler { * @param startPaused Should this animation be paused after it is added? */ setUpgradeAnimation(icon: Phaser.GameObjects.Sprite, species: PokemonSpecies, startPaused: boolean = false): void { - this.scene.tweens.killTweensOf(icon); + globalScene.tweens.killTweensOf(icon); // Skip animations if they are disabled - if (this.scene.candyUpgradeDisplay === 0 || species.speciesId !== species.getRootSpeciesId(false)) { + if (globalScene.candyUpgradeDisplay === 0 || species.speciesId !== species.getRootSpeciesId(false)) { return; } @@ -1189,14 +1195,14 @@ export default class StarterSelectUiHandler extends MessageUiHandler { const isSameSpeciesEggAvailable = this.isSameSpeciesEggAvailable(species.speciesId); // 'Passives Only' mode - if (this.scene.candyUpgradeNotification === 1) { + if (globalScene.candyUpgradeNotification === 1) { if (isPassiveAvailable) { - this.scene.tweens.chain(tweenChain).paused = startPaused; + globalScene.tweens.chain(tweenChain).paused = startPaused; } // 'On' mode - } else if (this.scene.candyUpgradeNotification === 2) { + } else if (globalScene.candyUpgradeNotification === 2) { if (isPassiveAvailable || isValueReductionAvailable || isSameSpeciesEggAvailable) { - this.scene.tweens.chain(tweenChain).paused = startPaused; + globalScene.tweens.chain(tweenChain).paused = startPaused; } } } @@ -1208,7 +1214,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { const species = starter.species; const slotVisible = !!species?.speciesId; - if (!species || this.scene.candyUpgradeNotification === 0 || species.speciesId !== species.getRootSpeciesId(false)) { + if (!species || globalScene.candyUpgradeNotification === 0 || species.speciesId !== species.getRootSpeciesId(false)) { starter.candyUpgradeIcon.setVisible(false); starter.candyUpgradeOverlayIcon.setVisible(false); return; @@ -1219,12 +1225,12 @@ export default class StarterSelectUiHandler extends MessageUiHandler { const isSameSpeciesEggAvailable = this.isSameSpeciesEggAvailable(species.speciesId); // 'Passive Only' mode - if (this.scene.candyUpgradeNotification === 1) { + if (globalScene.candyUpgradeNotification === 1) { starter.candyUpgradeIcon.setVisible(slotVisible && isPassiveAvailable); starter.candyUpgradeOverlayIcon.setVisible(slotVisible && starter.candyUpgradeIcon.visible); // 'On' mode - } else if (this.scene.candyUpgradeNotification === 2) { + } else if (globalScene.candyUpgradeNotification === 2) { starter.candyUpgradeIcon.setVisible( slotVisible && ( isPassiveAvailable || isValueReductionAvailable || isSameSpeciesEggAvailable )); starter.candyUpgradeOverlayIcon.setVisible(slotVisible && starter.candyUpgradeIcon.visible); @@ -1255,7 +1261,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { } // Loop through all visible candy icons when set to 'Icon' mode - if (this.scene.candyUpgradeDisplay === 0) { + if (globalScene.candyUpgradeDisplay === 0) { this.filteredStarterContainers.forEach((starter) => { this.setUpgradeIcon(starter); }); @@ -1459,25 +1465,25 @@ export default class StarterSelectUiHandler extends MessageUiHandler { error = true; break; } - const currentPartyValue = this.starterSpecies.map(s => s.generation).reduce((total: number, _gen: number, i: number ) => total + this.scene.gameData.getSpeciesStarterValue(this.starterSpecies[i].speciesId), 0); + const currentPartyValue = this.starterSpecies.map(s => s.generation).reduce((total: number, _gen: number, i: number ) => total + globalScene.gameData.getSpeciesStarterValue(this.starterSpecies[i].speciesId), 0); // Filter valid starters const validStarters = this.filteredStarterContainers.filter(starter => { const species = starter.species; const [ isDupe ] = this.isInParty(species); - const starterCost = this.scene.gameData.getSpeciesStarterValue(species.speciesId); + const starterCost = globalScene.gameData.getSpeciesStarterValue(species.speciesId); const isValidForChallenge = new BooleanHolder(true); Challenge.applyChallenges( - this.scene.gameMode, + globalScene.gameMode, Challenge.ChallengeType.STARTER_CHOICE, species, isValidForChallenge, - this.scene.gameData.getSpeciesDexAttrProps( + globalScene.gameData.getSpeciesDexAttrProps( species, this.getCurrentDexProps(species.speciesId) ), this.isPartyValid() ); - const isCaught = this.scene.gameData.dexData[species.speciesId].caughtAttr; + const isCaught = globalScene.gameData.dexData[species.speciesId].caughtAttr; return ( !isDupe && isValidForChallenge.value && @@ -1495,15 +1501,15 @@ export default class StarterSelectUiHandler extends MessageUiHandler { // Set species and prepare attributes this.setSpecies(randomSpecies); const dexAttr = this.getCurrentDexProps(randomSpecies.speciesId); - const props = this.scene.gameData.getSpeciesDexAttrProps(randomSpecies, dexAttr); + const props = globalScene.gameData.getSpeciesDexAttrProps(randomSpecies, dexAttr); const abilityIndex = this.abilityCursor; const nature = this.natureCursor as unknown as Nature; const moveset = this.starterMoveset?.slice(0) as StarterMoveset; - const starterCost = this.scene.gameData.getSpeciesStarterValue(randomSpecies.speciesId); + const starterCost = globalScene.gameData.getSpeciesStarterValue(randomSpecies.speciesId); const speciesForm = getPokemonSpeciesForm(randomSpecies.speciesId, props.formIndex); // Load assets and add to party speciesForm - .loadAssets(this.scene, props.female, props.formIndex, props.shiny, props.variant, true) + .loadAssets(props.female, props.formIndex, props.shiny, props.variant, true) .then(() => { if (this.tryUpdateValue(starterCost, true)) { this.addToParty(randomSpecies, dexAttr, abilityIndex, nature, moveset, true); @@ -1547,7 +1553,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { } } else { let starterContainer; - const starterData = this.scene.gameData.starterData[this.lastSpecies.speciesId]; + const starterData = globalScene.gameData.starterData[this.lastSpecies.speciesId]; // prepare persistent starter data to store changes let starterAttributes = this.starterPreferences[this.lastSpecies.speciesId]; @@ -1571,17 +1577,17 @@ export default class StarterSelectUiHandler extends MessageUiHandler { const isPartyValid = this.isPartyValid(); const isValidForChallenge = new BooleanHolder(true); - Challenge.applyChallenges(this.scene.gameMode, Challenge.ChallengeType.STARTER_CHOICE, this.lastSpecies, isValidForChallenge, this.scene.gameData.getSpeciesDexAttrProps(this.lastSpecies, this.getCurrentDexProps(this.lastSpecies.speciesId)), isPartyValid); + Challenge.applyChallenges(globalScene.gameMode, Challenge.ChallengeType.STARTER_CHOICE, this.lastSpecies, isValidForChallenge, globalScene.gameData.getSpeciesDexAttrProps(this.lastSpecies, this.getCurrentDexProps(this.lastSpecies.speciesId)), isPartyValid); - const currentPartyValue = this.starterSpecies.map(s => s.generation).reduce((total: number, _gen: number, i: number) => total += this.scene.gameData.getSpeciesStarterValue(this.starterSpecies[i].speciesId), 0); - const newCost = this.scene.gameData.getSpeciesStarterValue(this.lastSpecies.speciesId); + const currentPartyValue = this.starterSpecies.map(s => s.generation).reduce((total: number, _gen: number, i: number) => total += globalScene.gameData.getSpeciesStarterValue(this.starterSpecies[i].speciesId), 0); + const newCost = globalScene.gameData.getSpeciesStarterValue(this.lastSpecies.speciesId); if (!isDupe && isValidForChallenge.value && currentPartyValue + newCost <= this.getValueLimit() && this.starterSpecies.length < PLAYER_PARTY_MAX_SIZE) { // this checks to make sure the pokemon doesn't exist in your party, it's valid for the challenge and that it won't go over the cost limit; if it meets all these criteria it will add it to your party options = [ { label: i18next.t("starterSelectUiHandler:addToParty"), handler: () => { ui.setMode(Mode.STARTER_SELECT); - const isOverValueLimit = this.tryUpdateValue(this.scene.gameData.getSpeciesStarterValue(this.lastSpecies.speciesId), true); + const isOverValueLimit = this.tryUpdateValue(globalScene.gameData.getSpeciesStarterValue(this.lastSpecies.speciesId), true); if (!isDupe && isValidForChallenge.value && isOverValueLimit) { const cursorObj = this.starterCursorObjs[this.starterSpecies.length]; cursorObj.setVisible(true); @@ -1710,11 +1716,11 @@ export default class StarterSelectUiHandler extends MessageUiHandler { ui.setMode(Mode.STARTER_SELECT).then(() => { ui.showText(i18next.t("starterSelectUiHandler:selectNature"), null, () => { - const natures = this.scene.gameData.getNaturesForAttr(this.speciesStarterDexEntry?.natureAttr); + const natures = globalScene.gameData.getNaturesForAttr(this.speciesStarterDexEntry?.natureAttr); ui.setModeWithoutClear(Mode.OPTION_SELECT, { options: natures.map((n: Nature, _i: number) => { const option: OptionSelectItem = { - label: getNatureName(n, true, true, true, this.scene.uiTheme), + label: getNatureName(n, true, true, true, globalScene.uiTheme), handler: () => { // update default nature in starter save data if (!starterAttributes) { @@ -1852,19 +1858,19 @@ export default class StarterSelectUiHandler extends MessageUiHandler { starterData.candyCount -= passiveCost; } this.pokemonCandyCountText.setText(`x${starterData.candyCount}`); - this.scene.gameData.saveSystem().then(success => { + globalScene.gameData.saveSystem().then(success => { if (!success) { - return this.scene.reset(true); + return globalScene.reset(true); } }); ui.setMode(Mode.STARTER_SELECT); this.setSpeciesDetails(this.lastSpecies); - this.scene.playSound("se/buy"); + globalScene.playSound("se/buy"); // update the passive background and icon/animation for available upgrade if (starterContainer) { this.updateCandyUpgradeDisplay(starterContainer); - starterContainer.starterPassiveBgs.setVisible(!!this.scene.gameData.starterData[this.lastSpecies.speciesId].passiveAttr); + starterContainer.starterPassiveBgs.setVisible(!!globalScene.gameData.starterData[this.lastSpecies.speciesId].passiveAttr); } return true; } @@ -1888,14 +1894,14 @@ export default class StarterSelectUiHandler extends MessageUiHandler { starterData.candyCount -= reductionCost; } this.pokemonCandyCountText.setText(`x${starterData.candyCount}`); - this.scene.gameData.saveSystem().then(success => { + globalScene.gameData.saveSystem().then(success => { if (!success) { - return this.scene.reset(true); + return globalScene.reset(true); } }); this.tryUpdateValue(0); ui.setMode(Mode.STARTER_SELECT); - this.scene.playSound("se/buy"); + globalScene.playSound("se/buy"); // update the value label and icon/animation for available upgrade if (starterContainer) { @@ -1917,7 +1923,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { label: `x${sameSpeciesEggCost} ${i18next.t("starterSelectUiHandler:sameSpeciesEgg")}`, handler: () => { if (Overrides.FREE_CANDY_UPGRADE_OVERRIDE || candyCount >= sameSpeciesEggCost) { - if (this.scene.gameData.eggs.length >= 99 && !Overrides.UNLIMITED_EGG_COUNT_OVERRIDE) { + if (globalScene.gameData.eggs.length >= 99 && !Overrides.UNLIMITED_EGG_COUNT_OVERRIDE) { // Egg list full, show error message at the top of the screen and abort this.showText(i18next.t("egg:tooManyEggs"), undefined, () => this.showText("", 0, () => this.tutorialActive = false), 2000, false, undefined, true); return false; @@ -1927,16 +1933,16 @@ export default class StarterSelectUiHandler extends MessageUiHandler { } this.pokemonCandyCountText.setText(`x${starterData.candyCount}`); - const egg = new Egg({ scene: this.scene, species: this.lastSpecies.speciesId, sourceType: EggSourceType.SAME_SPECIES_EGG }); - egg.addEggToGameData(this.scene); + const egg = new Egg({ species: this.lastSpecies.speciesId, sourceType: EggSourceType.SAME_SPECIES_EGG }); + egg.addEggToGameData(); - this.scene.gameData.saveSystem().then(success => { + globalScene.gameData.saveSystem().then(success => { if (!success) { - return this.scene.reset(true); + return globalScene.reset(true); } }); ui.setMode(Mode.STARTER_SELECT); - this.scene.playSound("se/buy"); + globalScene.playSound("se/buy"); // update the icon/animation for available upgrade if (starterContainer) { @@ -1985,7 +1991,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { success = true; } } else { - const props = this.scene.gameData.getSpeciesDexAttrProps(this.lastSpecies, this.getCurrentDexProps(this.lastSpecies.speciesId)); + const props = globalScene.gameData.getSpeciesDexAttrProps(this.lastSpecies, this.getCurrentDexProps(this.lastSpecies.speciesId)); switch (button) { case Button.CYCLE_SHINY: if (this.canCycleShiny) { @@ -1993,11 +1999,11 @@ export default class StarterSelectUiHandler extends MessageUiHandler { if (starterAttributes.shiny) { // Change to shiny, we need to get the proper default variant - const newProps = this.scene.gameData.getSpeciesDexAttrProps(this.lastSpecies, this.getCurrentDexProps(this.lastSpecies.speciesId)); + const newProps = globalScene.gameData.getSpeciesDexAttrProps(this.lastSpecies, this.getCurrentDexProps(this.lastSpecies.speciesId)); const newVariant = starterAttributes.variant ? starterAttributes.variant as Variant : newProps.variant; this.setSpeciesDetails(this.lastSpecies, { shiny: true, variant: newVariant }); - this.scene.playSound("se/sparkle"); + globalScene.playSound("se/sparkle"); // Set the variant label to the shiny tint const tint = getVariantTint(newVariant); this.pokemonShinyIcon.setFrame(getVariantIcon(newVariant)); @@ -2044,7 +2050,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { let newFormIndex = props.formIndex; do { newFormIndex = (newFormIndex + 1) % formCount; - if (this.lastSpecies.forms[newFormIndex].isStarterSelectable && this.speciesStarterDexEntry!.caughtAttr! & this.scene.gameData.getFormAttr(newFormIndex)) { // TODO: are those bangs correct? + if (this.lastSpecies.forms[newFormIndex].isStarterSelectable && this.speciesStarterDexEntry!.caughtAttr! & globalScene.gameData.getFormAttr(newFormIndex)) { // TODO: are those bangs correct? break; } } while (newFormIndex !== props.formIndex); @@ -2063,7 +2069,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { case Button.CYCLE_ABILITY: if (this.canCycleAbility) { const abilityCount = this.lastSpecies.getAbilityCount(); - const abilityAttr = this.scene.gameData.starterData[this.lastSpecies.speciesId].abilityAttr; + const abilityAttr = globalScene.gameData.starterData[this.lastSpecies.speciesId].abilityAttr; const hasAbility1 = abilityAttr & AbilityAttr.ABILITY_1; let newAbilityIndex = this.abilityCursor; do { @@ -2086,11 +2092,11 @@ export default class StarterSelectUiHandler extends MessageUiHandler { } while (newAbilityIndex !== this.abilityCursor); starterAttributes.ability = newAbilityIndex; // store the selected ability - const { visible: tooltipVisible } = this.scene.ui.getTooltip(); + const { visible: tooltipVisible } = globalScene.ui.getTooltip(); if (tooltipVisible && this.activeTooltip === "ABILITY") { const newAbility = allAbilities[this.lastSpecies.getAbility(newAbilityIndex)]; - this.scene.ui.editTooltip(`${newAbility.name}`, `${newAbility.description}`); + globalScene.ui.editTooltip(`${newAbility.name}`, `${newAbility.description}`); } this.setSpeciesDetails(this.lastSpecies, { abilityIndex: newAbilityIndex }); @@ -2099,7 +2105,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { break; case Button.CYCLE_NATURE: if (this.canCycleNature) { - const natures = this.scene.gameData.getNaturesForAttr(this.speciesStarterDexEntry?.natureAttr); + const natures = globalScene.gameData.getNaturesForAttr(this.speciesStarterDexEntry?.natureAttr); const natureIndex = natures.indexOf(this.natureCursor); const newNature = natures[natureIndex < natures.length - 1 ? natureIndex + 1 : 0]; // store cycled nature as default @@ -2273,7 +2279,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { } addToParty(species: PokemonSpecies, dexAttr: bigint, abilityIndex: integer, nature: Nature, moveset: StarterMoveset, randomSelection: boolean = false) { - const props = this.scene.gameData.getSpeciesDexAttrProps(species, dexAttr); + const props = globalScene.gameData.getSpeciesDexAttrProps(species, dexAttr); this.starterIcons[this.starterSpecies.length].setTexture(species.getIconAtlasKey(props.formIndex, props.shiny, props.variant)); this.starterIcons[this.starterSpecies.length].setFrame(species.getIconId(props.female, props.formIndex, props.shiny, props.variant)); this.checkIconId(this.starterIcons[this.starterSpecies.length], species, props.female, props.formIndex, props.shiny, props.variant); @@ -2284,13 +2290,13 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.starterNatures.push(nature); this.starterMovesets.push(moveset); if (this.speciesLoaded.get(species.speciesId) || randomSelection ) { - getPokemonSpeciesForm(species.speciesId, props.formIndex).cry(this.scene); + getPokemonSpeciesForm(species.speciesId, props.formIndex).cry(); } this.updateInstructions(); } updatePartyIcon(species: PokemonSpecies, index: number) { - const props = this.scene.gameData.getSpeciesDexAttrProps(species, this.getCurrentDexProps(species.speciesId)); + const props = globalScene.gameData.getSpeciesDexAttrProps(species, this.getCurrentDexProps(species.speciesId)); this.starterIcons[index].setTexture(species.getIconAtlasKey(props.formIndex, props.shiny, props.variant)); this.starterIcons[index].setFrame(species.getIconId(props.female, props.formIndex, props.shiny, props.variant)); this.checkIconId(this.starterIcons[index], species, props.female, props.formIndex, props.shiny, props.variant); @@ -2303,29 +2309,29 @@ export default class StarterSelectUiHandler extends MessageUiHandler { if (existingMoveIndex > -1) { this.starterMoveset![existingMoveIndex] = move; // TODO: is this bang correct? } - const props: DexAttrProps = this.scene.gameData.getSpeciesDexAttrProps(this.lastSpecies, this.dexAttrCursor); + const props: DexAttrProps = globalScene.gameData.getSpeciesDexAttrProps(this.lastSpecies, this.dexAttrCursor); // species has different forms if (pokemonFormLevelMoves.hasOwnProperty(speciesId)) { // starterMoveData doesn't have base form moves or is using the single form format - if (!this.scene.gameData.starterData[speciesId].moveset || Array.isArray(this.scene.gameData.starterData[speciesId].moveset)) { - this.scene.gameData.starterData[speciesId].moveset = { [props.formIndex]: this.starterMoveset?.slice(0) as StarterMoveset }; + if (!globalScene.gameData.starterData[speciesId].moveset || Array.isArray(globalScene.gameData.starterData[speciesId].moveset)) { + globalScene.gameData.starterData[speciesId].moveset = { [props.formIndex]: this.starterMoveset?.slice(0) as StarterMoveset }; } - const starterMoveData = this.scene.gameData.starterData[speciesId].moveset; + const starterMoveData = globalScene.gameData.starterData[speciesId].moveset; // starterMoveData doesn't have active form moves if (!starterMoveData.hasOwnProperty(props.formIndex)) { - this.scene.gameData.starterData[speciesId].moveset[props.formIndex] = this.starterMoveset?.slice(0) as StarterMoveset; + globalScene.gameData.starterData[speciesId].moveset[props.formIndex] = this.starterMoveset?.slice(0) as StarterMoveset; } // does the species' starter move data have its form's starter moves and has it been updated if (starterMoveData.hasOwnProperty(props.formIndex)) { // active form move hasn't been updated if (starterMoveData[props.formIndex][existingMoveIndex] !== newMove) { - this.scene.gameData.starterData[speciesId].moveset[props.formIndex] = this.starterMoveset?.slice(0) as StarterMoveset; + globalScene.gameData.starterData[speciesId].moveset[props.formIndex] = this.starterMoveset?.slice(0) as StarterMoveset; } } } else { - this.scene.gameData.starterData[speciesId].moveset = this.starterMoveset?.slice(0) as StarterMoveset; + globalScene.gameData.starterData[speciesId].moveset = this.starterMoveset?.slice(0) as StarterMoveset; } this.setSpeciesDetails(this.lastSpecies, { forSeen: false }); @@ -2372,7 +2378,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { break; } } else { - iconPath = this.scene.inputController?.getIconForLatestInputRecorded(iconSetting); + iconPath = globalScene.inputController?.getIconForLatestInputRecorded(iconSetting); } iconElement.setTexture(gamepadType, iconPath); iconElement.setPosition(this.instructionRowX, this.instructionRowY); @@ -2395,7 +2401,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { gamepadType = "keyboard"; iconPath = "C.png"; } else { - iconPath = this.scene.inputController?.getIconForLatestInputRecorded(iconSetting); + iconPath = globalScene.inputController?.getIconForLatestInputRecorded(iconSetting); } iconElement.setTexture(gamepadType, iconPath); iconElement.setPosition(this.filterInstructionRowX, this.filterInstructionRowY); @@ -2419,10 +2425,10 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.instructionsContainer.removeAll(); this.filterInstructionsContainer.removeAll(); let gamepadType; - if (this.scene.inputMethod === "gamepad") { - gamepadType = this.scene.inputController.getConfig(this.scene.inputController.selectedDevice[Device.GAMEPAD]).padType; + if (globalScene.inputMethod === "gamepad") { + gamepadType = globalScene.inputController.getConfig(globalScene.inputController.selectedDevice[Device.GAMEPAD]).padType; } else { - gamepadType = this.scene.inputMethod; + gamepadType = globalScene.inputMethod; } if (!gamepadType) { @@ -2459,7 +2465,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { getValueLimit(): number { const valueLimit = new NumberHolder(0); - switch (this.scene.gameMode.modeId) { + switch (globalScene.gameMode.modeId) { case GameModes.ENDLESS: case GameModes.SPLICED_ENDLESS: valueLimit.value = 15; @@ -2468,7 +2474,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { valueLimit.value = 10; } - Challenge.applyChallenges(this.scene.gameMode, Challenge.ChallengeType.STARTER_POINTS, valueLimit); + Challenge.applyChallenges(globalScene.gameMode, Challenge.ChallengeType.STARTER_POINTS, valueLimit); return valueLimit.value; } @@ -2484,7 +2490,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.filterBar.updateFilterLabels(); // pre filter for challenges - if (this.scene.gameMode.modeId === GameModes.CHALLENGE) { + if (globalScene.gameMode.modeId === GameModes.CHALLENGE) { this.starterContainers.forEach(container => { const species = container.species; let allFormsValid = false; @@ -2495,12 +2501,12 @@ export default class StarterSelectUiHandler extends MessageUiHandler { */ const tempFormProps = BigInt(Math.pow(2, i)) * DexAttr.DEFAULT_FORM; const isValidForChallenge = new BooleanHolder(true); - Challenge.applyChallenges(this.scene.gameMode, Challenge.ChallengeType.STARTER_CHOICE, container.species, isValidForChallenge, this.scene.gameData.getSpeciesDexAttrProps(species, tempFormProps), true); + Challenge.applyChallenges(globalScene.gameMode, Challenge.ChallengeType.STARTER_CHOICE, container.species, isValidForChallenge, globalScene.gameData.getSpeciesDexAttrProps(species, tempFormProps), true); allFormsValid = allFormsValid || isValidForChallenge.value; } } else { const isValidForChallenge = new BooleanHolder(true); - Challenge.applyChallenges(this.scene.gameMode, Challenge.ChallengeType.STARTER_CHOICE, container.species, isValidForChallenge, this.scene.gameData.getSpeciesDexAttrProps(species, this.scene.gameData.getSpeciesDefaultDexAttr(container.species, false, true)), true); + Challenge.applyChallenges(globalScene.gameMode, Challenge.ChallengeType.STARTER_CHOICE, container.species, isValidForChallenge, globalScene.gameData.getSpeciesDexAttrProps(species, globalScene.gameData.getSpeciesDefaultDexAttr(container.species, false, true)), true); allFormsValid = isValidForChallenge.value; } if (allFormsValid) { @@ -2519,7 +2525,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { const starterSprite = currentFilteredContainer.icon as Phaser.GameObjects.Sprite; const currentDexAttr = this.getCurrentDexProps(currentFilteredContainer.species.speciesId); - const props = this.scene.gameData.getSpeciesDexAttrProps(currentFilteredContainer.species, currentDexAttr); + const props = globalScene.gameData.getSpeciesDexAttrProps(currentFilteredContainer.species, currentDexAttr); starterSprite.setTexture(currentFilteredContainer.species.getIconAtlasKey(props.formIndex, props.shiny, props.variant), currentFilteredContainer.species.getIconId(props.female!, props.formIndex, props.shiny, props.variant)); currentFilteredContainer.checkIconId(props.female, props.formIndex, props.shiny, props.variant); @@ -2529,11 +2535,11 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.validStarterContainers.forEach(container => { container.setVisible(false); - container.cost = this.scene.gameData.getSpeciesStarterValue(container.species.speciesId); + container.cost = globalScene.gameData.getSpeciesStarterValue(container.species.speciesId); // First, ensure you have the caught attributes for the species else default to bigint 0 - const caughtAttr = this.scene.gameData.dexData[container.species.speciesId]?.caughtAttr || BigInt(0); - const starterData = this.scene.gameData.starterData[container.species.speciesId]; + const caughtAttr = globalScene.gameData.dexData[container.species.speciesId]?.caughtAttr || BigInt(0); + const starterData = globalScene.gameData.starterData[container.species.speciesId]; const isStarterProgressable = speciesEggMoves.hasOwnProperty(container.species.speciesId); // Gen filter @@ -2676,12 +2682,12 @@ export default class StarterSelectUiHandler extends MessageUiHandler { case SortCriteria.COST: return (a.cost - b.cost) * -sort.dir; case SortCriteria.CANDY: - const candyCountA = this.scene.gameData.starterData[a.species.speciesId].candyCount; - const candyCountB = this.scene.gameData.starterData[b.species.speciesId].candyCount; + const candyCountA = globalScene.gameData.starterData[a.species.speciesId].candyCount; + const candyCountB = globalScene.gameData.starterData[b.species.speciesId].candyCount; return (candyCountA - candyCountB) * -sort.dir; case SortCriteria.IV: - const avgIVsA = this.scene.gameData.dexData[a.species.speciesId].ivs.reduce((a, b) => a + b, 0) / this.scene.gameData.dexData[a.species.speciesId].ivs.length; - const avgIVsB = this.scene.gameData.dexData[b.species.speciesId].ivs.reduce((a, b) => a + b, 0) / this.scene.gameData.dexData[b.species.speciesId].ivs.length; + const avgIVsA = globalScene.gameData.dexData[a.species.speciesId].ivs.reduce((a, b) => a + b, 0) / globalScene.gameData.dexData[a.species.speciesId].ivs.length; + const avgIVsB = globalScene.gameData.dexData[b.species.speciesId].ivs.reduce((a, b) => a + b, 0) / globalScene.gameData.dexData[b.species.speciesId].ivs.length; return (avgIVsA - avgIVsB) * -sort.dir; case SortCriteria.NAME: return a.species.name.localeCompare(b.species.name) * -sort.dir; @@ -2736,8 +2742,8 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.updateStarterValueLabel(container); container.label.setVisible(true); - const speciesVariants = speciesId && this.scene.gameData.dexData[speciesId].caughtAttr & DexAttr.SHINY - ? [ DexAttr.DEFAULT_VARIANT, DexAttr.VARIANT_2, DexAttr.VARIANT_3 ].filter(v => !!(this.scene.gameData.dexData[speciesId].caughtAttr & v)) + const speciesVariants = speciesId && globalScene.gameData.dexData[speciesId].caughtAttr & DexAttr.SHINY + ? [ DexAttr.DEFAULT_VARIANT, DexAttr.VARIANT_2, DexAttr.VARIANT_3 ].filter(v => !!(globalScene.gameData.dexData[speciesId].caughtAttr & v)) : []; for (let v = 0; v < 3; v++) { const hasVariant = speciesVariants.length > v; @@ -2747,13 +2753,13 @@ export default class StarterSelectUiHandler extends MessageUiHandler { } } - container.starterPassiveBgs.setVisible(!!this.scene.gameData.starterData[speciesId].passiveAttr); - container.hiddenAbilityIcon.setVisible(!!this.scene.gameData.dexData[speciesId].caughtAttr && !!(this.scene.gameData.starterData[speciesId].abilityAttr & 4)); - container.classicWinIcon.setVisible(this.scene.gameData.starterData[speciesId].classicWinCount > 0); + container.starterPassiveBgs.setVisible(!!globalScene.gameData.starterData[speciesId].passiveAttr); + container.hiddenAbilityIcon.setVisible(!!globalScene.gameData.dexData[speciesId].caughtAttr && !!(globalScene.gameData.starterData[speciesId].abilityAttr & 4)); + container.classicWinIcon.setVisible(globalScene.gameData.starterData[speciesId].classicWinCount > 0); container.favoriteIcon.setVisible(this.starterPreferences[speciesId]?.favorite ?? false); // 'Candy Icon' mode - if (this.scene.candyUpgradeDisplay === 0) { + if (globalScene.candyUpgradeDisplay === 0) { if (!starterColors[speciesId]) { // Default to white if no colors are found @@ -2765,7 +2771,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { container.candyUpgradeOverlayIcon.setTint(argbFromRgba(rgbHexToRgba(starterColors[speciesId][1]))); this.setUpgradeIcon(container); - } else if (this.scene.candyUpgradeDisplay === 1) { + } else if (globalScene.candyUpgradeDisplay === 1) { container.candyUpgradeIcon.setVisible(false); container.candyUpgradeOverlayIcon.setVisible(false); } @@ -2792,7 +2798,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { if (species) { const defaultDexAttr = this.getCurrentDexProps(species.speciesId); - const defaultProps = this.scene.gameData.getSpeciesDexAttrProps(species, defaultDexAttr); + const defaultProps = globalScene.gameData.getSpeciesDexAttrProps(species, defaultDexAttr); const variant = this.starterPreferences[species.speciesId]?.variant ? this.starterPreferences[species.speciesId].variant as Variant : defaultProps.variant; const tint = getVariantTint(variant); this.pokemonShinyIcon.setFrame(getVariantIcon(variant)); @@ -2836,7 +2842,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { } getFriendship(speciesId: number) { - let currentFriendship = this.scene.gameData.starterData[speciesId].friendship; + let currentFriendship = globalScene.gameData.starterData[speciesId].friendship; if (!currentFriendship || currentFriendship === undefined) { currentFriendship = 0; } @@ -2847,13 +2853,13 @@ export default class StarterSelectUiHandler extends MessageUiHandler { } setSpecies(species: PokemonSpecies | null) { - this.speciesStarterDexEntry = species ? this.scene.gameData.dexData[species.speciesId] : null; + this.speciesStarterDexEntry = species ? globalScene.gameData.dexData[species.speciesId] : null; this.dexAttrCursor = species ? this.getCurrentDexProps(species.speciesId) : 0n; - this.abilityCursor = species ? this.scene.gameData.getStarterSpeciesDefaultAbilityIndex(species) : 0; - this.natureCursor = species ? this.scene.gameData.getSpeciesDefaultNature(species) : 0; + this.abilityCursor = species ? globalScene.gameData.getStarterSpeciesDefaultAbilityIndex(species) : 0; + this.natureCursor = species ? globalScene.gameData.getSpeciesDefaultNature(species) : 0; - if (!species && this.scene.ui.getTooltip().visible) { - this.scene.ui.hideTooltip(); + if (!species && globalScene.ui.getTooltip().visible) { + globalScene.ui.hideTooltip(); } this.pokemonAbilityText.off("pointerover"); @@ -2883,7 +2889,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { if (this.lastSpecies) { const dexAttr = this.getCurrentDexProps(this.lastSpecies.speciesId); - const props = this.scene.gameData.getSpeciesDexAttrProps(this.lastSpecies, dexAttr); + const props = globalScene.gameData.getSpeciesDexAttrProps(this.lastSpecies, dexAttr); const speciesIndex = this.allSpecies.indexOf(this.lastSpecies); const lastSpeciesIcon = this.starterContainers[speciesIndex].icon; this.checkIconId(lastSpeciesIcon, this.lastSpecies, props.female, props.formIndex, props.shiny, props.variant); @@ -2891,7 +2897,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { // Resume the animation for the previously selected species const icon = this.starterContainers[speciesIndex].icon; - this.scene.tweens.getTweensOf(icon).forEach(tween => tween.resume()); + globalScene.tweens.getTweensOf(icon).forEach(tween => tween.resume()); } this.lastSpecies = species!; // TODO: is this bang correct? @@ -2908,7 +2914,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { if (this.speciesStarterDexEntry?.caughtAttr) { const colorScheme = starterColors[species.speciesId]; - const luck = this.scene.gameData.getDexAttrLuck(this.speciesStarterDexEntry.caughtAttr); + const luck = globalScene.gameData.getDexAttrLuck(this.speciesStarterDexEntry.caughtAttr); this.pokemonLuckText.setVisible(!!luck); this.pokemonLuckText.setText(luck.toString()); this.pokemonLuckText.setTint(getVariantTint(Math.min(luck - 1, 2) as Variant)); @@ -2938,7 +2944,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.pokemonHatchedCountText.setText(`${this.speciesStarterDexEntry.hatchedCount}`); const defaultDexAttr = this.getCurrentDexProps(species.speciesId); - const defaultProps = this.scene.gameData.getSpeciesDexAttrProps(species, defaultDexAttr); + const defaultProps = globalScene.gameData.getSpeciesDexAttrProps(species, defaultDexAttr); const variant = defaultProps.variant; const tint = getVariantTint(variant); this.pokemonShinyIcon.setFrame(getVariantIcon(variant)); @@ -2962,7 +2968,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.pokemonShinyIcon.setY(117); this.pokemonCandyIcon.setTint(argbFromRgba(rgbHexToRgba(colorScheme[0]))); this.pokemonCandyOverlayIcon.setTint(argbFromRgba(rgbHexToRgba(colorScheme[1]))); - this.pokemonCandyCountText.setText(`x${this.scene.gameData.starterData[species.speciesId].candyCount}`); + this.pokemonCandyCountText.setText(`x${globalScene.gameData.starterData[species.speciesId].candyCount}`); this.pokemonCandyContainer.setVisible(true); this.pokemonFormText.setY(42); this.pokemonHatchedIcon.setVisible(true); @@ -2973,11 +2979,11 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.pokemonCandyDarknessOverlay.setCrop(0, 0, 16, candyCropY); this.pokemonCandyContainer.on("pointerover", () => { - this.scene.ui.showTooltip("", `${currentFriendship}/${friendshipCap}`, true); + globalScene.ui.showTooltip("", `${currentFriendship}/${friendshipCap}`, true); this.activeTooltip = "CANDY"; }); this.pokemonCandyContainer.on("pointerout", () => { - this.scene.ui.hideTooltip(); + globalScene.ui.hideTooltip(); this.activeTooltip = undefined; }); @@ -2989,7 +2995,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { const icon = this.starterContainers[speciesIndex].icon; if (this.isUpgradeAnimationEnabled()) { - this.scene.tweens.getTweensOf(icon).forEach(tween => tween.pause()); + globalScene.tweens.getTweensOf(icon).forEach(tween => tween.pause()); // Reset the position of the icon icon.x = -2; icon.y = 2; @@ -3003,7 +3009,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { let props: DexAttrProps; if (starterIndex > -1) { - props = this.scene.gameData.getSpeciesDexAttrProps(species, this.starterAttr[starterIndex]); + props = globalScene.gameData.getSpeciesDexAttrProps(species, this.starterAttr[starterIndex]); this.setSpeciesDetails(species, { shiny: props.shiny, formIndex: props.formIndex, @@ -3014,10 +3020,10 @@ export default class StarterSelectUiHandler extends MessageUiHandler { }); } else { const defaultDexAttr = this.getCurrentDexProps(species.speciesId); - const defaultAbilityIndex = starterAttributes?.ability ?? this.scene.gameData.getStarterSpeciesDefaultAbilityIndex(species); + const defaultAbilityIndex = starterAttributes?.ability ?? globalScene.gameData.getStarterSpeciesDefaultAbilityIndex(species); // load default nature from stater save data, if set - const defaultNature = starterAttributes?.nature || this.scene.gameData.getSpeciesDefaultNature(species); - props = this.scene.gameData.getSpeciesDexAttrProps(species, defaultDexAttr); + const defaultNature = starterAttributes?.nature || globalScene.gameData.getSpeciesDefaultNature(species); + props = globalScene.gameData.getSpeciesDexAttrProps(species, defaultDexAttr); if (starterAttributes?.variant && !isNaN(starterAttributes.variant)) { if (props.shiny) { props.variant = starterAttributes.variant as Variant; @@ -3041,7 +3047,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.pokemonSprite.clearTint(); if (this.pokerusSpecies.includes(species)) { - handleTutorial(this.scene, Tutorial.Pokerus); + handleTutorial(Tutorial.Pokerus); } } else { this.pokemonGrowthRateText.setText(""); @@ -3059,10 +3065,10 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.pokemonCandyContainer.setVisible(false); this.pokemonFormText.setVisible(false); - const defaultDexAttr = this.scene.gameData.getSpeciesDefaultDexAttr(species, true, true); - const defaultAbilityIndex = this.scene.gameData.getStarterSpeciesDefaultAbilityIndex(species); - const defaultNature = this.scene.gameData.getSpeciesDefaultNature(species); - const props = this.scene.gameData.getSpeciesDexAttrProps(species, defaultDexAttr); + const defaultDexAttr = globalScene.gameData.getSpeciesDefaultDexAttr(species, true, true); + const defaultAbilityIndex = globalScene.gameData.getStarterSpeciesDefaultAbilityIndex(species); + const defaultNature = globalScene.gameData.getSpeciesDefaultNature(species); + const props = globalScene.gameData.getSpeciesDexAttrProps(species, defaultDexAttr); this.setSpeciesDetails(species, { shiny: props.shiny, @@ -3108,9 +3114,9 @@ export default class StarterSelectUiHandler extends MessageUiHandler { setSpeciesDetails(species: PokemonSpecies, options: SpeciesDetails = {}): void { let { shiny, formIndex, female, variant, abilityIndex, natureIndex } = options; const forSeen: boolean = options.forSeen ?? false; - const oldProps = species ? this.scene.gameData.getSpeciesDexAttrProps(species, this.dexAttrCursor) : null; - const oldAbilityIndex = this.abilityCursor > -1 ? this.abilityCursor : this.scene.gameData.getStarterSpeciesDefaultAbilityIndex(species); - const oldNatureIndex = this.natureCursor > -1 ? this.natureCursor : this.scene.gameData.getSpeciesDefaultNature(species); + const oldProps = species ? globalScene.gameData.getSpeciesDexAttrProps(species, this.dexAttrCursor) : null; + const oldAbilityIndex = this.abilityCursor > -1 ? this.abilityCursor : globalScene.gameData.getStarterSpeciesDefaultAbilityIndex(species); + const oldNatureIndex = this.natureCursor > -1 ? this.natureCursor : globalScene.gameData.getSpeciesDefaultNature(species); this.dexAttrCursor = 0n; this.abilityCursor = -1; this.natureCursor = -1; @@ -3122,9 +3128,9 @@ export default class StarterSelectUiHandler extends MessageUiHandler { if (this.activeTooltip === "CANDY") { if (this.lastSpecies && this.pokemonCandyContainer.visible) { const { currentFriendship, friendshipCap } = this.getFriendship(this.lastSpecies.speciesId); - this.scene.ui.editTooltip("", `${currentFriendship}/${friendshipCap}`); + globalScene.ui.editTooltip("", `${currentFriendship}/${friendshipCap}`); } else { - this.scene.ui.hideTooltip(); + globalScene.ui.hideTooltip(); } } @@ -3140,7 +3146,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.dexAttrCursor |= (shiny !== undefined ? !shiny : !(shiny = oldProps?.shiny)) ? DexAttr.NON_SHINY : DexAttr.SHINY; this.dexAttrCursor |= (female !== undefined ? !female : !(female = oldProps?.female)) ? DexAttr.MALE : DexAttr.FEMALE; this.dexAttrCursor |= (variant !== undefined ? !variant : !(variant = oldProps?.variant)) ? DexAttr.DEFAULT_VARIANT : variant === 1 ? DexAttr.VARIANT_2 : DexAttr.VARIANT_3; - this.dexAttrCursor |= this.scene.gameData.getFormAttr(formIndex !== undefined ? formIndex : (formIndex = oldProps!.formIndex)); // TODO: is this bang correct? + this.dexAttrCursor |= globalScene.gameData.getFormAttr(formIndex !== undefined ? formIndex : (formIndex = oldProps!.formIndex)); // TODO: is this bang correct? this.abilityCursor = abilityIndex !== undefined ? abilityIndex : (abilityIndex = oldAbilityIndex); this.natureCursor = natureIndex !== undefined ? natureIndex : (natureIndex = oldNatureIndex); const [ isInParty, partyIndex ]: [boolean, number] = this.isInParty(species); // we use this to firstly check if the pokemon is in the party, and if so, to get the party index in order to update the icon image @@ -3164,15 +3170,15 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.speciesStarterMoves = []; if (species) { - const dexEntry = this.scene.gameData.dexData[species.speciesId]; - const abilityAttr = this.scene.gameData.starterData[species.speciesId].abilityAttr; + const dexEntry = globalScene.gameData.dexData[species.speciesId]; + const abilityAttr = globalScene.gameData.starterData[species.speciesId].abilityAttr; - const caughtAttr = this.scene.gameData.dexData[species.speciesId]?.caughtAttr || BigInt(0); + const caughtAttr = globalScene.gameData.dexData[species.speciesId]?.caughtAttr || BigInt(0); if (!dexEntry.caughtAttr) { - const props = this.scene.gameData.getSpeciesDexAttrProps(species, this.getCurrentDexProps(species.speciesId)); - const defaultAbilityIndex = this.scene.gameData.getStarterSpeciesDefaultAbilityIndex(species); - const defaultNature = this.scene.gameData.getSpeciesDefaultNature(species); + const props = globalScene.gameData.getSpeciesDexAttrProps(species, this.getCurrentDexProps(species.speciesId)); + const defaultAbilityIndex = globalScene.gameData.getStarterSpeciesDefaultAbilityIndex(species); + const defaultNature = globalScene.gameData.getSpeciesDefaultNature(species); if (shiny === undefined || shiny !== props.shiny) { shiny = props.shiny; @@ -3211,7 +3217,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.assetLoadCancelled = assetLoadCancelled; if (shouldUpdateSprite) { - species.loadAssets(this.scene, female!, formIndex, shiny, variant, true).then(() => { // TODO: is this bang correct? + species.loadAssets(female!, formIndex, shiny, variant, true).then(() => { // TODO: is this bang correct? if (assetLoadCancelled.value) { return; } @@ -3228,7 +3234,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { } const isValidForChallenge = new BooleanHolder(true); - Challenge.applyChallenges(this.scene.gameMode, Challenge.ChallengeType.STARTER_CHOICE, species, isValidForChallenge, this.scene.gameData.getSpeciesDexAttrProps(species, this.dexAttrCursor), !!this.starterSpecies.length); + Challenge.applyChallenges(globalScene.gameMode, Challenge.ChallengeType.STARTER_CHOICE, species, isValidForChallenge, globalScene.gameData.getSpeciesDexAttrProps(species, this.dexAttrCursor), !!this.starterSpecies.length); const currentFilteredContainer = this.filteredStarterContainers.find(p => p.species.speciesId === species.speciesId); if (currentFilteredContainer) { const starterSprite = currentFilteredContainer.icon as Phaser.GameObjects.Sprite; @@ -3265,8 +3271,8 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.canCycleAbility = [ hasAbility1, hasAbility2, hasHiddenAbility ].filter(a => a).length > 1; this.canCycleForm = species.forms.filter(f => f.isStarterSelectable || !pokemonFormChanges[species.speciesId]?.find(fc => fc.formKey)) - .map((_, f) => dexEntry.caughtAttr & this.scene.gameData.getFormAttr(f)).filter(f => f).length > 1; - this.canCycleNature = this.scene.gameData.getNaturesForAttr(dexEntry.natureAttr).length > 1; + .map((_, f) => dexEntry.caughtAttr & globalScene.gameData.getFormAttr(f)).filter(f => f).length > 1; + this.canCycleNature = globalScene.gameData.getNaturesForAttr(dexEntry.natureAttr).length > 1; } @@ -3287,20 +3293,20 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.pokemonAbilityText.setColor(this.getTextColor(!isHidden ? TextStyle.SUMMARY_ALT : TextStyle.SUMMARY_GOLD)); this.pokemonAbilityText.setShadowColor(this.getTextColor(!isHidden ? TextStyle.SUMMARY_ALT : TextStyle.SUMMARY_GOLD, true)); - const passiveAttr = this.scene.gameData.starterData[species.speciesId].passiveAttr; + const passiveAttr = globalScene.gameData.starterData[species.speciesId].passiveAttr; const passiveAbility = allAbilities[starterPassiveAbilities[this.lastSpecies.speciesId]]; if (this.pokemonAbilityText.visible) { if (this.activeTooltip === "ABILITY") { - this.scene.ui.editTooltip(`${ability.name}`, `${ability.description}`); + globalScene.ui.editTooltip(`${ability.name}`, `${ability.description}`); } this.pokemonAbilityText.on("pointerover", () => { - this.scene.ui.showTooltip(`${ability.name}`, `${ability.description}`, true); + globalScene.ui.showTooltip(`${ability.name}`, `${ability.description}`, true); this.activeTooltip = "ABILITY"; }); this.pokemonAbilityText.on("pointerout", () => { - this.scene.ui.hideTooltip(); + globalScene.ui.hideTooltip(); this.activeTooltip = undefined; }); } @@ -3322,16 +3328,16 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.pokemonPassiveText.setShadowColor(this.getTextColor(textStyle, true)); if (this.activeTooltip === "PASSIVE") { - this.scene.ui.editTooltip(`${passiveAbility.name}`, `${passiveAbility.description}`); + globalScene.ui.editTooltip(`${passiveAbility.name}`, `${passiveAbility.description}`); } if (this.pokemonPassiveText.visible) { this.pokemonPassiveText.on("pointerover", () => { - this.scene.ui.showTooltip(`${passiveAbility.name}`, `${passiveAbility.description}`, true); + globalScene.ui.showTooltip(`${passiveAbility.name}`, `${passiveAbility.description}`, true); this.activeTooltip = "PASSIVE"; }); this.pokemonPassiveText.on("pointerout", () => { - this.scene.ui.hideTooltip(); + globalScene.ui.hideTooltip(); this.activeTooltip = undefined; }); } @@ -3347,10 +3353,10 @@ export default class StarterSelectUiHandler extends MessageUiHandler { } else if (this.activeTooltip === "PASSIVE") { // No passive and passive tooltip is active > hide it - this.scene.ui.hideTooltip(); + globalScene.ui.hideTooltip(); } - this.pokemonNatureText.setText(getNatureName(natureIndex as unknown as Nature, true, true, false, this.scene.uiTheme)); + this.pokemonNatureText.setText(getNatureName(natureIndex as unknown as Nature, true, true, false, globalScene.uiTheme)); let levelMoves: LevelMoves; if (pokemonFormLevelMoves.hasOwnProperty(species.speciesId) && formIndex && pokemonFormLevelMoves[species.speciesId].hasOwnProperty(formIndex)) { @@ -3361,19 +3367,19 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.speciesStarterMoves.push(...levelMoves.filter(lm => lm[0] > 0 && lm[0] <= 5).map(lm => lm[1])); if (speciesEggMoves.hasOwnProperty(species.speciesId)) { for (let em = 0; em < 4; em++) { - if (this.scene.gameData.starterData[species.speciesId].eggMoves & (1 << em)) { + if (globalScene.gameData.starterData[species.speciesId].eggMoves & (1 << em)) { this.speciesStarterMoves.push(speciesEggMoves[species.speciesId][em]); } } } - const speciesMoveData = this.scene.gameData.starterData[species.speciesId].moveset; + const speciesMoveData = globalScene.gameData.starterData[species.speciesId].moveset; const moveData: StarterMoveset | null = speciesMoveData ? Array.isArray(speciesMoveData) ? speciesMoveData : speciesMoveData[formIndex!] // TODO: is this bang correct? : null; - const availableStarterMoves = this.speciesStarterMoves.concat(speciesEggMoves.hasOwnProperty(species.speciesId) ? speciesEggMoves[species.speciesId].filter((_, em: integer) => this.scene.gameData.starterData[species.speciesId].eggMoves & (1 << em)) : []); + const availableStarterMoves = this.speciesStarterMoves.concat(speciesEggMoves.hasOwnProperty(species.speciesId) ? speciesEggMoves[species.speciesId].filter((_, em: integer) => globalScene.gameData.starterData[species.speciesId].eggMoves & (1 << em)) : []); this.starterMoveset = (moveData || (this.speciesStarterMoves.slice(0, 4) as StarterMoveset)).filter(m => availableStarterMoves.find(sm => sm === m)) as StarterMoveset; // Consolidate move data if it contains an incompatible move if (this.starterMoveset.length < 4 && this.starterMoveset.length < availableStarterMoves.length) { @@ -3430,7 +3436,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { for (let em = 0; em < 4; em++) { const eggMove = hasEggMoves ? allMoves[speciesEggMoves[species.speciesId][em]] : null; - const eggMoveUnlocked = eggMove && this.scene.gameData.starterData[species.speciesId].eggMoves & (1 << em); + const eggMoveUnlocked = eggMove && globalScene.gameData.starterData[species.speciesId].eggMoves & (1 << em); this.pokemonEggMoveBgs[em].setFrame(Type[eggMove ? eggMove.type : Type.UNKNOWN].toString().toLowerCase()); this.pokemonEggMoveLabels[em].setText(eggMove && eggMoveUnlocked ? eggMove.name : "???"); } @@ -3470,7 +3476,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { for (let s = 0; s < this.starterSpecies.length; s++) { const species = this.starterSpecies[s]; const currentDexAttr = this.getCurrentDexProps(species.speciesId); - const props = this.scene.gameData.getSpeciesDexAttrProps(species, currentDexAttr); + const props = globalScene.gameData.getSpeciesDexAttrProps(species, currentDexAttr); this.starterIcons[s].setTexture(species.getIconAtlasKey(props.formIndex, props.shiny, props.variant)); this.starterIcons[s].setFrame(species.getIconId(props.female, props.formIndex, props.shiny, props.variant)); this.checkIconId(this.starterIcons[s], species, props.female, props.formIndex, props.shiny, props.variant); @@ -3516,7 +3522,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { updateStarterValueLabel(starter: StarterContainer): void { const speciesId = starter.species.speciesId; const baseStarterValue = speciesStarterCosts[speciesId]; - const starterValue = this.scene.gameData.getSpeciesStarterValue(speciesId); + const starterValue = globalScene.gameData.getSpeciesStarterValue(speciesId); starter.cost = starterValue; let valueStr = starterValue.toString(); if (valueStr.startsWith("0.")) { @@ -3543,7 +3549,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { } tryUpdateValue(add?: integer, addingToParty?: boolean): boolean { - const value = this.starterSpecies.map(s => s.generation).reduce((total: integer, _gen: integer, i: integer) => total += this.scene.gameData.getSpeciesStarterValue(this.starterSpecies[i].speciesId), 0); + const value = this.starterSpecies.map(s => s.generation).reduce((total: integer, _gen: integer, i: integer) => total += globalScene.gameData.getSpeciesStarterValue(this.starterSpecies[i].speciesId), 0); const newValue = value + (add || 0); const valueLimit = this.getValueLimit(); const overLimit = newValue > valueLimit; @@ -3555,14 +3561,14 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.valueLimitLabel.setColor(this.getTextColor(!overLimit ? TextStyle.TOOLTIP_CONTENT : TextStyle.SUMMARY_PINK)); this.valueLimitLabel.setShadowColor(this.getTextColor(!overLimit ? TextStyle.TOOLTIP_CONTENT : TextStyle.SUMMARY_PINK, true)); if (overLimit) { - this.scene.time.delayedCall(fixedInt(500), () => this.tryUpdateValue()); + globalScene.time.delayedCall(fixedInt(500), () => this.tryUpdateValue()); return false; } let isPartyValid: boolean = this.isPartyValid(); // this checks to see if the party is valid if (addingToParty) { // this does a check to see if the pokemon being added is valid; if so, it will update the isPartyValid boolean const isNewPokemonValid = new BooleanHolder(true); const species = this.filteredStarterContainers[this.cursor].species; - Challenge.applyChallenges(this.scene.gameMode, Challenge.ChallengeType.STARTER_CHOICE, species, isNewPokemonValid, this.scene.gameData.getSpeciesDexAttrProps(species, this.getCurrentDexProps(species.speciesId)), false); + Challenge.applyChallenges(globalScene.gameMode, Challenge.ChallengeType.STARTER_CHOICE, species, isNewPokemonValid, globalScene.gameData.getSpeciesDexAttrProps(species, this.getCurrentDexProps(species.speciesId)), false); isPartyValid = isPartyValid || isNewPokemonValid.value; } @@ -3572,7 +3578,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { const remainValue = valueLimit - newValue; for (let s = 0; s < this.allSpecies.length; s++) { /** Cost of pokemon species */ - const speciesStarterValue = this.scene.gameData.getSpeciesStarterValue(this.allSpecies[s].speciesId); + const speciesStarterValue = globalScene.gameData.getSpeciesStarterValue(this.allSpecies[s].speciesId); /** {@linkcode Phaser.GameObjects.Sprite} object of Pokémon for setting the alpha value */ const speciesSprite = this.starterContainers[s].icon; @@ -3588,7 +3594,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { * we change to can AddParty value to true since the user has enough cost to choose this pokemon and this pokemon registered too. */ const isValidForChallenge = new BooleanHolder(true); - Challenge.applyChallenges(this.scene.gameMode, Challenge.ChallengeType.STARTER_CHOICE, this.allSpecies[s], isValidForChallenge, this.scene.gameData.getSpeciesDexAttrProps(this.allSpecies[s], this.getCurrentDexProps(this.allSpecies[s].speciesId)), isPartyValid); + Challenge.applyChallenges(globalScene.gameMode, Challenge.ChallengeType.STARTER_CHOICE, this.allSpecies[s], isValidForChallenge, globalScene.gameData.getSpeciesDexAttrProps(this.allSpecies[s], this.getCurrentDexProps(this.allSpecies[s].speciesId)), isPartyValid); const canBeChosen = remainValue >= speciesStarterValue && isValidForChallenge.value; @@ -3627,15 +3633,15 @@ export default class StarterSelectUiHandler extends MessageUiHandler { ui.showText(i18next.t("starterSelectUiHandler:confirmExit"), null, () => { ui.setModeWithoutClear(Mode.CONFIRM, () => { ui.setMode(Mode.STARTER_SELECT); - this.scene.clearPhaseQueue(); - if (this.scene.gameMode.isChallenge) { - this.scene.pushPhase(new SelectChallengePhase(this.scene)); - this.scene.pushPhase(new EncounterPhase(this.scene, false)); + globalScene.clearPhaseQueue(); + if (globalScene.gameMode.isChallenge) { + globalScene.pushPhase(new SelectChallengePhase()); + globalScene.pushPhase(new EncounterPhase()); } else { - this.scene.pushPhase(new TitlePhase(this.scene)); + globalScene.pushPhase(new TitlePhase()); } this.clearText(); - this.scene.getCurrentPhase()?.end(); + globalScene.getCurrentPhase()?.end(); }, cancel, null, null, 19); }); @@ -3663,7 +3669,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { ui.showText(i18next.t("starterSelectUiHandler:confirmStartTeam"), null, () => { ui.setModeWithoutClear(Mode.CONFIRM, () => { const startRun = () => { - this.scene.money = this.scene.gameMode.getStartingMoney(); + globalScene.money = globalScene.gameMode.getStartingMoney(); ui.setMode(Mode.STARTER_SELECT); const thisObj = this; const originalStarterSelectCallback = this.starterSelectCallback; @@ -3674,7 +3680,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { species: starterSpecies, dexAttr: thisObj.starterAttr[i], abilityIndex: thisObj.starterAbilityIndexes[i], - passive: !(thisObj.scene.gameData.starterData[starterSpecies.speciesId].passiveAttr ^ (PassiveAttr.ENABLED | PassiveAttr.UNLOCKED)), + passive: !(globalScene.gameData.starterData[starterSpecies.speciesId].passiveAttr ^ (PassiveAttr.ENABLED | PassiveAttr.UNLOCKED)), nature: thisObj.starterNatures[i] as Nature, moveset: thisObj.starterMovesets[i], pokerus: thisObj.pokerusSpecies.includes(starterSpecies), @@ -3700,7 +3706,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { for (let s = 0; s < this.starterSpecies.length; s++) { const isValidForChallenge = new BooleanHolder(true); const species = this.starterSpecies[s]; - Challenge.applyChallenges(this.scene.gameMode, Challenge.ChallengeType.STARTER_CHOICE, species, isValidForChallenge, this.scene.gameData.getSpeciesDexAttrProps(species, this.getCurrentDexProps(species.speciesId)), false); + Challenge.applyChallenges(globalScene.gameMode, Challenge.ChallengeType.STARTER_CHOICE, species, isValidForChallenge, globalScene.gameData.getSpeciesDexAttrProps(species, this.getCurrentDexProps(species.speciesId)), false); canStart = canStart || isValidForChallenge.value; } return canStart; @@ -3715,7 +3721,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { */ getCurrentDexProps(speciesId: number): bigint { let props = 0n; - const caughtAttr = this.scene.gameData.dexData[speciesId].caughtAttr; + const caughtAttr = globalScene.gameData.dexData[speciesId].caughtAttr; /* this checks the gender of the pokemon; this works by checking a) that the starter preferences for the species exist, and if so, is it female. If so, it'll add DexAttr.FEMALE to our temp props * It then checks b) if the caughtAttr for the pokemon is female and NOT male - this means that the ONLY gender we've gotten is female, and we need to add DexAttr.FEMALE to our temp props @@ -3753,7 +3759,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { props += BigInt(Math.pow(2, this.starterPreferences[speciesId]?.form)) * DexAttr.DEFAULT_FORM; } else { // Get the first unlocked form - props += this.scene.gameData.getFormAttr(this.scene.gameData.getFormIndex(caughtAttr)); + props += globalScene.gameData.getFormAttr(globalScene.gameData.getFormIndex(caughtAttr)); } return props; @@ -3815,7 +3821,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.cursor = -1; this.hideInstructions(); this.activeTooltip = undefined; - this.scene.ui.hideTooltip(); + globalScene.ui.hideTooltip(); this.starterSelectContainer.setVisible(false); this.blockInput = false; diff --git a/src/ui/stats-container.ts b/src/ui/stats-container.ts index 7e026ede83e..8d8d3c101b2 100644 --- a/src/ui/stats-container.ts +++ b/src/ui/stats-container.ts @@ -1,8 +1,8 @@ -import BBCodeText from "phaser3-rex-plugins/plugins/gameobjects/tagtext/bbcodetext/BBCodeText"; -import BattleScene from "../battle-scene"; +import type BBCodeText from "phaser3-rex-plugins/plugins/gameobjects/tagtext/bbcodetext/BBCodeText"; import { TextStyle, addBBCodeTextObject, addTextObject, getTextColor } from "./text"; import { PERMANENT_STATS, getStatKey } from "#app/enums/stat"; import i18next from "i18next"; +import { globalScene } from "#app/global-scene"; const ivChartSize = 24; @@ -21,8 +21,8 @@ export class StatsContainer extends Phaser.GameObjects.Container { private ivChart: Phaser.GameObjects.Polygon; private ivStatValueTexts: BBCodeText[]; - constructor(scene: BattleScene, x: number, y: number, showDiff?: boolean) { - super(scene, x, y); + constructor(x: number, y: number, showDiff?: boolean) { + super(globalScene, x, y); this.showDiff = !!showDiff; @@ -32,21 +32,21 @@ export class StatsContainer extends Phaser.GameObjects.Container { setup() { this.setName("stats"); const ivChartBgData = new Array(6).fill(null).map((_, i: integer) => [ ivChartSize * ivChartStatCoordMultipliers[ivChartStatIndexes[i]][0], ivChartSize * ivChartStatCoordMultipliers[ivChartStatIndexes[i]][1] ] ).flat(); - const ivChartBg = this.scene.add.polygon(48, 44, ivChartBgData, 0xd8e0f0, 0.625); + const ivChartBg = globalScene.add.polygon(48, 44, ivChartBgData, 0xd8e0f0, 0.625); ivChartBg.setOrigin(0, 0); - const ivChartBorder = this.scene.add.polygon(ivChartBg.x, ivChartBg.y, ivChartBgData) + const ivChartBorder = globalScene.add.polygon(ivChartBg.x, ivChartBg.y, ivChartBgData) .setStrokeStyle(1, 0x484050); ivChartBorder.setOrigin(0, 0); const ivChartBgLines = [[ 0, -1, 0, 1 ], [ -0.825, -0.5, 0.825, 0.5 ], [ 0.825, -0.5, -0.825, 0.5 ]].map(coords => { - const line = new Phaser.GameObjects.Line(this.scene, ivChartBg.x, ivChartBg.y, ivChartSize * coords[0], ivChartSize * coords[1], ivChartSize * coords[2], ivChartSize * coords[3], 0xffffff) + const line = new Phaser.GameObjects.Line(globalScene, ivChartBg.x, ivChartBg.y, ivChartSize * coords[0], ivChartSize * coords[1], ivChartSize * coords[2], ivChartSize * coords[3], 0xffffff) .setLineWidth(0.5); line.setOrigin(0, 0); return line; }); - this.ivChart = this.scene.add.polygon(ivChartBg.x, ivChartBg.y, defaultIvChartData, 0x98d8a0, 0.75); + this.ivChart = globalScene.add.polygon(ivChartBg.x, ivChartBg.y, defaultIvChartData, 0x98d8a0, 0.75); this.ivChart.setOrigin(0, 0); this.add(ivChartBg); @@ -58,7 +58,6 @@ export class StatsContainer extends Phaser.GameObjects.Container { for (const s of PERMANENT_STATS) { const statLabel = addTextObject( - this.scene, ivChartBg.x + (ivChartSize) * ivChartStatCoordMultipliers[s][0] * 1.325 + (this.showDiff ? 0 : ivLabelOffset[s]), ivChartBg.y + (ivChartSize) * ivChartStatCoordMultipliers[s][1] * 1.325 - 4 + (this.showDiff ? 0 : ivChartLabelyOffset[s]), i18next.t(getStatKey(s)), @@ -66,7 +65,7 @@ export class StatsContainer extends Phaser.GameObjects.Container { ); statLabel.setOrigin(0.5); - this.ivStatValueTexts[s] = addBBCodeTextObject(this.scene, statLabel.x - (this.showDiff ? 0 : ivLabelOffset[s]), statLabel.y + 8, "0", TextStyle.TOOLTIP_CONTENT); + this.ivStatValueTexts[s] = addBBCodeTextObject(statLabel.x - (this.showDiff ? 0 : ivLabelOffset[s]), statLabel.y + 8, "0", TextStyle.TOOLTIP_CONTENT); this.ivStatValueTexts[s].setOrigin(0.5); @@ -79,7 +78,7 @@ export class StatsContainer extends Phaser.GameObjects.Container { if (ivs) { const ivChartData = new Array(6).fill(null).map((_, i) => [ (ivs[ivChartStatIndexes[i]] / 31) * ivChartSize * ivChartStatCoordMultipliers[ivChartStatIndexes[i]][0], (ivs[ivChartStatIndexes[i]] / 31) * ivChartSize * ivChartStatCoordMultipliers[ivChartStatIndexes[i]][1] ] ).flat(); const lastIvChartData = this.statsIvsCache || defaultIvChartData; - const perfectIVColor: string = getTextColor(TextStyle.SUMMARY_GOLD, false, (this.scene as BattleScene).uiTheme); + const perfectIVColor: string = getTextColor(TextStyle.SUMMARY_GOLD, false, globalScene.uiTheme); this.statsIvsCache = ivChartData.slice(0); this.ivStatValueTexts.map((t: BBCodeText, i: integer) => { @@ -93,7 +92,7 @@ export class StatsContainer extends Phaser.GameObjects.Container { } if (this.showDiff && originalIvs) { if (originalIvs[i] < ivs[i]) { - label += ` ([color=${getTextColor(TextStyle.SUMMARY_BLUE, false, (this.scene as BattleScene).uiTheme)}][shadow=${getTextColor(TextStyle.SUMMARY_BLUE, true, (this.scene as BattleScene).uiTheme)}]+${ivs[i] - originalIvs[i]}[/shadow][/color])`; + label += ` ([color=${getTextColor(TextStyle.SUMMARY_BLUE, false, globalScene.uiTheme)}][shadow=${getTextColor(TextStyle.SUMMARY_BLUE, true, globalScene.uiTheme)}]+${ivs[i] - originalIvs[i]}[/shadow][/color])`; } else { label += " (-)"; } @@ -108,7 +107,7 @@ export class StatsContainer extends Phaser.GameObjects.Container { Phaser.Display.Color.IntegerToColor(newColor) ] : null; - this.scene.tweens.addCounter({ + globalScene.tweens.addCounter({ from: 0, to: 1, duration: 1000, diff --git a/src/ui/summary-ui-handler.ts b/src/ui/summary-ui-handler.ts index 63ef6155fbc..3fe6a372737 100644 --- a/src/ui/summary-ui-handler.ts +++ b/src/ui/summary-ui-handler.ts @@ -1,14 +1,16 @@ -import BattleScene, { starterColors } from "#app/battle-scene"; +import { starterColors } from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { Mode } from "#app/ui/ui"; import UiHandler from "#app/ui/ui-handler"; import * as Utils from "#app/utils"; -import { PlayerPokemon, PokemonMove } from "#app/field/pokemon"; +import type { PlayerPokemon, PokemonMove } from "#app/field/pokemon"; import { getStarterValueFriendshipCap, speciesStarterCosts } from "#app/data/balance/starters"; import { argbFromRgba } from "@material/material-color-utilities"; import { getTypeRgb } from "#app/data/type"; import { Type } from "#enums/type"; import { TextStyle, addBBCodeTextObject, addTextObject, getBBCodeFrag } from "#app/ui/text"; -import Move, { MoveCategory } from "#app/data/move"; +import type Move from "#app/data/move"; +import { MoveCategory } from "#app/data/move"; import { getPokeballAtlasKey } from "#app/data/pokeball"; import { getGenderColor, getGenderSymbol } from "#app/data/gender"; import { getLevelRelExp, getLevelTotalExp } from "#app/data/exp"; @@ -17,9 +19,10 @@ import { StatusEffect } from "#enums/status-effect"; import { getBiomeName } from "#app/data/balance/biomes"; import { getNatureName, getNatureStatMultiplier } from "#app/data/nature"; import { loggedInUser } from "#app/account"; -import { Variant, getVariantTint } from "#app/data/variant"; +import type { Variant } from "#app/data/variant"; +import { getVariantTint } from "#app/data/variant"; import { Button } from "#enums/buttons"; -import { Ability } from "#app/data/ability"; +import type { Ability } from "#app/data/ability"; import i18next from "i18next"; import { modifierSortFunc } from "#app/modifier/modifier"; import { PlayerGender } from "#enums/player-gender"; @@ -111,177 +114,177 @@ export default class SummaryUiHandler extends UiHandler { private selectedMoveIndex: integer; private selectCallback: Function | null; - constructor(scene: BattleScene) { - super(scene, Mode.SUMMARY); + constructor() { + super(Mode.SUMMARY); } setup() { const ui = this.getUi(); - this.summaryContainer = this.scene.add.container(0, 0); + this.summaryContainer = globalScene.add.container(0, 0); this.summaryContainer.setVisible(false); ui.add(this.summaryContainer); - const summaryBg = this.scene.add.image(0, 0, "summary_bg"); + const summaryBg = globalScene.add.image(0, 0, "summary_bg"); summaryBg.setOrigin(0, 1); this.summaryContainer.add(summaryBg); - this.tabSprite = this.scene.add.sprite(134, (-summaryBg.displayHeight) + 16, "summary_tabs_1"); + this.tabSprite = globalScene.add.sprite(134, (-summaryBg.displayHeight) + 16, "summary_tabs_1"); this.tabSprite.setOrigin(1, 1); this.summaryContainer.add(this.tabSprite); - const summaryLabel = addTextObject(this.scene, 4, -165, i18next.t("pokemonSummary:pokemonInfo"), TextStyle.SUMMARY); + const summaryLabel = addTextObject(4, -165, i18next.t("pokemonSummary:pokemonInfo"), TextStyle.SUMMARY); summaryLabel.setOrigin(0, 1); this.summaryContainer.add(summaryLabel); - this.shinyOverlay = this.scene.add.image(6, -54, "summary_overlay_shiny"); + this.shinyOverlay = globalScene.add.image(6, -54, "summary_overlay_shiny"); this.shinyOverlay.setOrigin(0, 1); this.shinyOverlay.setVisible(false); this.summaryContainer.add(this.shinyOverlay); - this.numberText = addTextObject(this.scene, 17, -149, "0000", TextStyle.SUMMARY); + this.numberText = addTextObject(17, -149, "0000", TextStyle.SUMMARY); this.numberText.setOrigin(0, 1); this.summaryContainer.add(this.numberText); - this.pokemonSprite = this.scene.initPokemonSprite(this.scene.add.sprite(56, -106, "pkmn__sub"), undefined, false, true); + this.pokemonSprite = globalScene.initPokemonSprite(globalScene.add.sprite(56, -106, "pkmn__sub"), undefined, false, true); this.summaryContainer.add(this.pokemonSprite); - this.nameText = addTextObject(this.scene, 6, -54, "", TextStyle.SUMMARY); + this.nameText = addTextObject(6, -54, "", TextStyle.SUMMARY); this.nameText.setOrigin(0, 0); this.summaryContainer.add(this.nameText); - this.splicedIcon = this.scene.add.sprite(0, -54, "icon_spliced"); + this.splicedIcon = globalScene.add.sprite(0, -54, "icon_spliced"); this.splicedIcon.setVisible(false); this.splicedIcon.setOrigin(0, 0); this.splicedIcon.setScale(0.75); this.splicedIcon.setInteractive(new Phaser.Geom.Rectangle(0, 0, 12, 15), Phaser.Geom.Rectangle.Contains); this.summaryContainer.add(this.splicedIcon); - this.shinyIcon = this.scene.add.image(0, -54, "shiny_star"); + this.shinyIcon = globalScene.add.image(0, -54, "shiny_star"); this.shinyIcon.setVisible(false); this.shinyIcon.setOrigin(0, 0); this.shinyIcon.setScale(0.75); this.shinyIcon.setInteractive(new Phaser.Geom.Rectangle(0, 0, 12, 15), Phaser.Geom.Rectangle.Contains); this.summaryContainer.add(this.shinyIcon); - this.fusionShinyIcon = this.scene.add.image(0, 0, "shiny_star_2"); + this.fusionShinyIcon = globalScene.add.image(0, 0, "shiny_star_2"); this.fusionShinyIcon.setVisible(false); this.fusionShinyIcon.setOrigin(0, 0); this.fusionShinyIcon.setScale(0.75); this.summaryContainer.add(this.fusionShinyIcon); - this.pokeball = this.scene.add.sprite(6, -19, "pb"); + this.pokeball = globalScene.add.sprite(6, -19, "pb"); this.pokeball.setOrigin(0, 1); this.summaryContainer.add(this.pokeball); - this.candyIcon = this.scene.add.sprite(13, -140, "candy"); + this.candyIcon = globalScene.add.sprite(13, -140, "candy"); this.candyIcon.setScale(0.8); this.summaryContainer.add(this.candyIcon); - this.candyOverlay = this.scene.add.sprite(13, -140, "candy_overlay"); + this.candyOverlay = globalScene.add.sprite(13, -140, "candy_overlay"); this.candyOverlay.setScale(0.8); this.summaryContainer.add(this.candyOverlay); - this.candyShadow = this.scene.add.sprite(13, -140, "candy"); + this.candyShadow = globalScene.add.sprite(13, -140, "candy"); this.candyShadow.setTint(0x000000); this.candyShadow.setAlpha(0.50); this.candyShadow.setScale(0.8); this.candyShadow.setInteractive(new Phaser.Geom.Rectangle(0, 0, 30, 16), Phaser.Geom.Rectangle.Contains); this.summaryContainer.add(this.candyShadow); - this.candyCountText = addTextObject(this.scene, 20, -146, "x0", TextStyle.WINDOW_ALT, { fontSize: "76px" }); + this.candyCountText = addTextObject(20, -146, "x0", TextStyle.WINDOW_ALT, { fontSize: "76px" }); this.candyCountText.setOrigin(0, 0); this.summaryContainer.add(this.candyCountText); - this.friendshipIcon = this.scene.add.sprite(13, -60, "friendship"); + this.friendshipIcon = globalScene.add.sprite(13, -60, "friendship"); this.friendshipIcon.setScale(0.8); this.summaryContainer.add(this.friendshipIcon); - this.friendshipOverlay = this.scene.add.sprite(13, -60, "friendship_overlay"); + this.friendshipOverlay = globalScene.add.sprite(13, -60, "friendship_overlay"); this.friendshipOverlay.setScale(0.8); this.summaryContainer.add(this.friendshipOverlay); - this.friendshipShadow = this.scene.add.sprite(13, -60, "friendship"); + this.friendshipShadow = globalScene.add.sprite(13, -60, "friendship"); this.friendshipShadow.setTint(0x000000); this.friendshipShadow.setAlpha(0.50); this.friendshipShadow.setScale(0.8); this.friendshipShadow.setInteractive(new Phaser.Geom.Rectangle(0, 0, 50, 16), Phaser.Geom.Rectangle.Contains); this.summaryContainer.add(this.friendshipShadow); - this.friendshipText = addTextObject(this.scene, 20, -66, "x0", TextStyle.WINDOW_ALT, { fontSize: "76px" }); + this.friendshipText = addTextObject(20, -66, "x0", TextStyle.WINDOW_ALT, { fontSize: "76px" }); this.friendshipText.setOrigin(0, 0); this.summaryContainer.add(this.friendshipText); - this.championRibbon = this.scene.add.image(88, -146, "champion_ribbon"); + this.championRibbon = globalScene.add.image(88, -146, "champion_ribbon"); this.championRibbon.setOrigin(0, 0); //this.championRibbon.setScale(0.8); this.championRibbon.setScale(1.25); this.summaryContainer.add(this.championRibbon); this.championRibbon.setVisible(false); - this.levelText = addTextObject(this.scene, 36, -17, "", TextStyle.SUMMARY_ALT); + this.levelText = addTextObject(36, -17, "", TextStyle.SUMMARY_ALT); this.levelText.setOrigin(0, 1); this.summaryContainer.add(this.levelText); - this.genderText = addTextObject(this.scene, 96, -17, "", TextStyle.SUMMARY); + this.genderText = addTextObject(96, -17, "", TextStyle.SUMMARY); this.genderText.setOrigin(0, 1); this.summaryContainer.add(this.genderText); - this.statusContainer = this.scene.add.container(-106, -16); + this.statusContainer = globalScene.add.container(-106, -16); - const statusBg = this.scene.add.image(0, 0, "summary_status"); + const statusBg = globalScene.add.image(0, 0, "summary_status"); statusBg.setOrigin(0, 0); this.statusContainer.add(statusBg); - const statusLabel = addTextObject(this.scene, 3, 0, i18next.t("pokemonSummary:status"), TextStyle.SUMMARY); + const statusLabel = addTextObject(3, 0, i18next.t("pokemonSummary:status"), TextStyle.SUMMARY); statusLabel.setOrigin(0, 0); this.statusContainer.add(statusLabel); - this.status = this.scene.add.sprite(91, 4, Utils.getLocalizedSpriteKey("statuses")); + this.status = globalScene.add.sprite(91, 4, Utils.getLocalizedSpriteKey("statuses")); this.status.setOrigin(0.5, 0); this.statusContainer.add(this.status); this.summaryContainer.add(this.statusContainer); - this.moveEffectContainer = this.scene.add.container(106, -62); + this.moveEffectContainer = globalScene.add.container(106, -62); this.summaryContainer.add(this.moveEffectContainer); - const moveEffectBg = this.scene.add.image(0, 0, "summary_moves_effect"); + const moveEffectBg = globalScene.add.image(0, 0, "summary_moves_effect"); moveEffectBg.setOrigin(0, 0); this.moveEffectContainer.add(moveEffectBg); - const moveEffectLabels = addTextObject(this.scene, 8, 12, i18next.t("pokemonSummary:powerAccuracyCategory"), TextStyle.SUMMARY); + const moveEffectLabels = addTextObject(8, 12, i18next.t("pokemonSummary:powerAccuracyCategory"), TextStyle.SUMMARY); moveEffectLabels.setLineSpacing(9); moveEffectLabels.setOrigin(0, 0); this.moveEffectContainer.add(moveEffectLabels); - this.movePowerText = addTextObject(this.scene, 99, 27, "0", TextStyle.WINDOW_ALT); + this.movePowerText = addTextObject(99, 27, "0", TextStyle.WINDOW_ALT); this.movePowerText.setOrigin(1, 1); this.moveEffectContainer.add(this.movePowerText); - this.moveAccuracyText = addTextObject(this.scene, 99, 43, "0", TextStyle.WINDOW_ALT); + this.moveAccuracyText = addTextObject(99, 43, "0", TextStyle.WINDOW_ALT); this.moveAccuracyText.setOrigin(1, 1); this.moveEffectContainer.add(this.moveAccuracyText); - this.moveCategoryIcon = this.scene.add.sprite(99, 57, "categories"); + this.moveCategoryIcon = globalScene.add.sprite(99, 57, "categories"); this.moveCategoryIcon.setOrigin(1, 1); this.moveEffectContainer.add(this.moveCategoryIcon); const getSummaryPageBg = () => { - const ret = this.scene.add.sprite(0, 0, this.getPageKey(0)); + const ret = globalScene.add.sprite(0, 0, this.getPageKey(0)); ret.setOrigin(0, 1); return ret; }; - this.summaryContainer.add((this.summaryPageContainer = this.scene.add.container(106, 0))); + this.summaryContainer.add((this.summaryPageContainer = globalScene.add.container(106, 0))); this.summaryPageContainer.add(getSummaryPageBg()); this.summaryPageContainer.setVisible(false); - this.summaryContainer.add((this.summaryPageTransitionContainer = this.scene.add.container(106, 0))); + this.summaryContainer.add((this.summaryPageTransitionContainer = globalScene.add.container(106, 0))); this.summaryPageTransitionContainer.add(getSummaryPageBg()); this.summaryPageTransitionContainer.setVisible(false); } @@ -306,7 +309,7 @@ export default class SummaryUiHandler extends UiHandler { this.pokemon = args[0] as PlayerPokemon; this.summaryUiMode = args.length > 1 ? args[1] as SummaryUiMode : SummaryUiMode.DEFAULT; this.playerParty = args[4] ?? true; - this.scene.ui.bringToTop(this.summaryContainer); + globalScene.ui.bringToTop(this.summaryContainer); this.summaryContainer.setVisible(true); this.cursor = -1; @@ -348,17 +351,17 @@ export default class SummaryUiHandler extends UiHandler { this.splicedIcon.setPositionRelative(this.nameText, this.nameText.displayWidth + 2, 3); this.splicedIcon.setVisible(isFusion); if (this.splicedIcon.visible) { - this.splicedIcon.on("pointerover", () => (this.scene as BattleScene).ui.showTooltip("", `${this.pokemon?.species.getName(this.pokemon.formIndex)}/${this.pokemon?.fusionSpecies?.getName(this.pokemon?.fusionFormIndex)}`, true)); - this.splicedIcon.on("pointerout", () => (this.scene as BattleScene).ui.hideTooltip()); + this.splicedIcon.on("pointerover", () => globalScene.ui.showTooltip("", `${this.pokemon?.species.getName(this.pokemon.formIndex)}/${this.pokemon?.fusionSpecies?.getName(this.pokemon?.fusionFormIndex)}`, true)); + this.splicedIcon.on("pointerout", () => globalScene.ui.hideTooltip()); } - if (this.scene.gameData.starterData[this.pokemon.species.getRootSpeciesId()].classicWinCount > 0 && this.scene.gameData.starterData[this.pokemon.species.getRootSpeciesId(true)].classicWinCount > 0) { + if (globalScene.gameData.starterData[this.pokemon.species.getRootSpeciesId()].classicWinCount > 0 && globalScene.gameData.starterData[this.pokemon.species.getRootSpeciesId(true)].classicWinCount > 0) { this.championRibbon.setVisible(true); } else { this.championRibbon.setVisible(false); } - let currentFriendship = this.scene.gameData.starterData[this.pokemon.species.getRootSpeciesId()].friendship; + let currentFriendship = globalScene.gameData.starterData[this.pokemon.species.getRootSpeciesId()].friendship; if (!currentFriendship || currentFriendship === undefined) { currentFriendship = 0; } @@ -367,17 +370,17 @@ export default class SummaryUiHandler extends UiHandler { const candyCropY = 16 - (16 * (currentFriendship / friendshipCap)); if (this.candyShadow.visible) { - this.candyShadow.on("pointerover", () => (this.scene as BattleScene).ui.showTooltip("", `${currentFriendship}/${friendshipCap}`, true)); - this.candyShadow.on("pointerout", () => (this.scene as BattleScene).ui.hideTooltip()); + this.candyShadow.on("pointerover", () => globalScene.ui.showTooltip("", `${currentFriendship}/${friendshipCap}`, true)); + this.candyShadow.on("pointerout", () => globalScene.ui.hideTooltip()); } - this.candyCountText.setText(`x${this.scene.gameData.starterData[this.pokemon.species.getRootSpeciesId()].candyCount}`); + this.candyCountText.setText(`x${globalScene.gameData.starterData[this.pokemon.species.getRootSpeciesId()].candyCount}`); this.candyShadow.setCrop(0, 0, 16, candyCropY); if (this.friendshipShadow.visible) { - this.friendshipShadow.on("pointerover", () => this.scene.ui.showTooltip("", `${i18next.t("pokemonSummary:friendship")}`, true)); - this.friendshipShadow.on("pointerout", () => this.scene.ui.hideTooltip()); + this.friendshipShadow.on("pointerover", () => globalScene.ui.showTooltip("", `${i18next.t("pokemonSummary:friendship")}`, true)); + this.friendshipShadow.on("pointerout", () => globalScene.ui.hideTooltip()); } this.friendshipText.setText(`${this.pokemon?.friendship || "0"} / 255`); @@ -395,8 +398,8 @@ export default class SummaryUiHandler extends UiHandler { const shinyDescriptor = doubleShiny || baseVariant ? `${baseVariant === 2 ? i18next.t("common:epicShiny") : baseVariant === 1 ? i18next.t("common:rareShiny") : i18next.t("common:commonShiny")}${doubleShiny ? `/${this.pokemon.fusionVariant === 2 ? i18next.t("common:epicShiny") : this.pokemon.fusionVariant === 1 ? i18next.t("common:rareShiny") : i18next.t("common:commonShiny")}` : ""}` : ""; - this.shinyIcon.on("pointerover", () => (this.scene as BattleScene).ui.showTooltip("", `${i18next.t("common:shinyOnHover")}${shinyDescriptor ? ` (${shinyDescriptor})` : ""}`, true)); - this.shinyIcon.on("pointerout", () => (this.scene as BattleScene).ui.hideTooltip()); + this.shinyIcon.on("pointerover", () => globalScene.ui.showTooltip("", `${i18next.t("common:shinyOnHover")}${shinyDescriptor ? ` (${shinyDescriptor})` : ""}`, true)); + this.shinyIcon.on("pointerout", () => globalScene.ui.hideTooltip()); } this.fusionShinyIcon.setPosition(this.shinyIcon.x, this.shinyIcon.y); @@ -560,7 +563,7 @@ export default class SummaryUiHandler extends UiHandler { break; } const isDown = button === Button.DOWN; - const party = this.scene.getPlayerParty(); + const party = globalScene.getPlayerParty(); const partyMemberIndex = this.pokemon ? party.indexOf(this.pokemon) : -1; if ((isDown && partyMemberIndex < party.length - 1) || (!isDown && partyMemberIndex)) { const page = this.cursor; @@ -621,7 +624,7 @@ export default class SummaryUiHandler extends UiHandler { } if (moveDescriptionLineCount > 3) { - this.descriptionScrollTween = this.scene.tweens.add({ + this.descriptionScrollTween = globalScene.tweens.add({ targets: this.moveDescriptionText, delay: Utils.fixedInt(2000), loop: -1, @@ -632,7 +635,7 @@ export default class SummaryUiHandler extends UiHandler { } if (!this.moveCursorObj) { - this.moveCursorObj = this.scene.add.sprite(-2, 0, "summary_moves_cursor", "highlight"); + this.moveCursorObj = globalScene.add.sprite(-2, 0, "summary_moves_cursor", "highlight"); this.moveCursorObj.setOrigin(0, 1); this.movesContainer.add(this.moveCursorObj); } @@ -643,12 +646,12 @@ export default class SummaryUiHandler extends UiHandler { this.moveCursorBlinkTimer.destroy(); } this.moveCursorObj.setVisible(true); - this.moveCursorBlinkTimer = this.scene.time.addEvent({ + this.moveCursorBlinkTimer = globalScene.time.addEvent({ loop: true, delay: Utils.fixedInt(600), callback: () => { this.moveCursorObj?.setVisible(false); - this.scene.time.delayedCall(Utils.fixedInt(100), () => { + globalScene.time.delayedCall(Utils.fixedInt(100), () => { if (!this.moveCursorObj) { return; } @@ -658,7 +661,7 @@ export default class SummaryUiHandler extends UiHandler { }); if (this.selectedMoveIndex > -1) { if (!this.selectedMoveCursorObj) { - this.selectedMoveCursorObj = this.scene.add.sprite(-2, 0, "summary_moves_cursor", "select"); + this.selectedMoveCursorObj = globalScene.add.sprite(-2, 0, "summary_moves_cursor", "select"); this.selectedMoveCursorObj.setOrigin(0, 1); this.movesContainer.add(this.selectedMoveCursorObj); this.movesContainer.moveBelow(this.selectedMoveCursorObj, this.moveCursorObj); @@ -684,7 +687,7 @@ export default class SummaryUiHandler extends UiHandler { } else { this.populatePageContainer(this.summaryPageContainer); } - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this.summaryPageTransitionContainer, x: forward ? "-=214" : "+=214", duration: 250, @@ -737,27 +740,27 @@ export default class SummaryUiHandler extends UiHandler { switch (page) { case Page.PROFILE: - const profileContainer = this.scene.add.container(0, -pageBg.height); + const profileContainer = globalScene.add.container(0, -pageBg.height); pageContainer.add(profileContainer); // TODO: should add field for original trainer name to Pokemon object, to support gift/traded Pokemon from MEs - const trainerText = addBBCodeTextObject(this.scene, 7, 12, `${i18next.t("pokemonSummary:ot")}/${getBBCodeFrag(loggedInUser?.username || i18next.t("pokemonSummary:unknown"), this.scene.gameData.gender === PlayerGender.FEMALE ? TextStyle.SUMMARY_PINK : TextStyle.SUMMARY_BLUE)}`, TextStyle.SUMMARY_ALT); + const trainerText = addBBCodeTextObject(7, 12, `${i18next.t("pokemonSummary:ot")}/${getBBCodeFrag(loggedInUser?.username || i18next.t("pokemonSummary:unknown"), globalScene.gameData.gender === PlayerGender.FEMALE ? TextStyle.SUMMARY_PINK : TextStyle.SUMMARY_BLUE)}`, TextStyle.SUMMARY_ALT); trainerText.setOrigin(0, 0); profileContainer.add(trainerText); - const trainerIdText = addTextObject(this.scene, 174, 12, this.scene.gameData.trainerId.toString(), TextStyle.SUMMARY_ALT); + const trainerIdText = addTextObject(174, 12, globalScene.gameData.trainerId.toString(), TextStyle.SUMMARY_ALT); trainerIdText.setOrigin(0, 0); profileContainer.add(trainerIdText); - const typeLabel = addTextObject(this.scene, 7, 28, `${i18next.t("pokemonSummary:type")}/`, TextStyle.WINDOW_ALT); + const typeLabel = addTextObject(7, 28, `${i18next.t("pokemonSummary:type")}/`, TextStyle.WINDOW_ALT); typeLabel.setOrigin(0, 0); profileContainer.add(typeLabel); const getTypeIcon = (index: integer, type: Type, tera: boolean = false) => { const xCoord = typeLabel.width * typeLabel.scale + 9 + 34 * index; const typeIcon = !tera - ? this.scene.add.sprite(xCoord, 42, Utils.getLocalizedSpriteKey("types"), Type[type].toLowerCase()) - : this.scene.add.sprite(xCoord, 42, "type_tera"); + ? globalScene.add.sprite(xCoord, 42, Utils.getLocalizedSpriteKey("types"), Type[type].toLowerCase()) + : globalScene.add.sprite(xCoord, 42, "type_tera"); if (tera) { typeIcon.setScale(0.5); const typeRgb = getTypeRgb(type); @@ -777,18 +780,18 @@ export default class SummaryUiHandler extends UiHandler { } if (this.pokemon?.getLuck()) { - const luckLabelText = addTextObject(this.scene, 141, 28, i18next.t("common:luckIndicator"), TextStyle.SUMMARY_ALT); + const luckLabelText = addTextObject(141, 28, i18next.t("common:luckIndicator"), TextStyle.SUMMARY_ALT); luckLabelText.setOrigin(0, 0); profileContainer.add(luckLabelText); - const luckText = addTextObject(this.scene, 141 + luckLabelText.displayWidth + 2, 28, this.pokemon.getLuck().toString(), TextStyle.SUMMARY); + const luckText = addTextObject(141 + luckLabelText.displayWidth + 2, 28, this.pokemon.getLuck().toString(), TextStyle.SUMMARY); luckText.setOrigin(0, 0); luckText.setTint(getVariantTint((Math.min(this.pokemon.getLuck() - 1, 2)) as Variant)); profileContainer.add(luckText); } this.abilityContainer = { - labelImage: this.scene.add.image(0, 0, "summary_profile_ability"), + labelImage: globalScene.add.image(0, 0, "summary_profile_ability"), ability: this.pokemon?.getAbility(true)!, // TODO: is this bang correct? nameText: null, descriptionText: null }; @@ -797,14 +800,14 @@ export default class SummaryUiHandler extends UiHandler { // Only add to the array and set up displaying a passive if it's unlocked if (this.pokemon?.hasPassive()) { this.passiveContainer = { - labelImage: this.scene.add.image(0, 0, "summary_profile_passive"), + labelImage: globalScene.add.image(0, 0, "summary_profile_passive"), ability: this.pokemon.getPassiveAbility(), nameText: null, descriptionText: null }; allAbilityInfo.push(this.passiveContainer); // Sets up the pixel button prompt image - this.abilityPrompt = this.scene.add.image(0, 0, !this.scene.inputController?.gamepadSupport ? "summary_profile_prompt_z" : "summary_profile_prompt_a"); + this.abilityPrompt = globalScene.add.image(0, 0, !globalScene.inputController?.gamepadSupport ? "summary_profile_prompt_z" : "summary_profile_prompt_a"); this.abilityPrompt.setPosition(8, 43); this.abilityPrompt.setVisible(true); this.abilityPrompt.setOrigin(0, 0); @@ -817,16 +820,16 @@ export default class SummaryUiHandler extends UiHandler { abilityInfo.labelImage.setOrigin(0, 0); profileContainer.add(abilityInfo.labelImage); - abilityInfo.nameText = addTextObject(this.scene, 7, 66, abilityInfo.ability?.name!, TextStyle.SUMMARY_ALT); // TODO: is this bang correct? + abilityInfo.nameText = addTextObject(7, 66, abilityInfo.ability?.name!, TextStyle.SUMMARY_ALT); // TODO: is this bang correct? abilityInfo.nameText.setOrigin(0, 1); profileContainer.add(abilityInfo.nameText); - abilityInfo.descriptionText = addTextObject(this.scene, 7, 69, abilityInfo.ability?.description!, TextStyle.WINDOW_ALT, { wordWrap: { width: 1224 }}); // TODO: is this bang correct? + abilityInfo.descriptionText = addTextObject(7, 69, abilityInfo.ability?.description!, TextStyle.WINDOW_ALT, { wordWrap: { width: 1224 }}); // TODO: is this bang correct? abilityInfo.descriptionText.setOrigin(0, 0); profileContainer.add(abilityInfo.descriptionText); // Sets up the mask that hides the description text to give an illusion of scrolling - const descriptionTextMaskRect = this.scene.make.graphics({}); + const descriptionTextMaskRect = globalScene.make.graphics({}); descriptionTextMaskRect.setScale(6); descriptionTextMaskRect.fillStyle(0xFFFFFF); descriptionTextMaskRect.beginPath(); @@ -841,7 +844,7 @@ export default class SummaryUiHandler extends UiHandler { // Animates the description text moving upwards if (abilityDescriptionLineCount > 2) { abilityInfo.descriptionText.setY(69); - this.descriptionScrollTween = this.scene.tweens.add({ + this.descriptionScrollTween = globalScene.tweens.add({ targets: abilityInfo.descriptionText, delay: Utils.fixedInt(2000), loop: -1, @@ -869,12 +872,12 @@ export default class SummaryUiHandler extends UiHandler { natureFragment: i18next.t(`pokemonSummary:natureFragment.${rawNature}`, { nature: nature }) }); - const memoText = addBBCodeTextObject(this.scene, 7, 113, String(memoString), TextStyle.WINDOW_ALT); + const memoText = addBBCodeTextObject(7, 113, String(memoString), TextStyle.WINDOW_ALT); memoText.setOrigin(0, 0); profileContainer.add(memoText); break; case Page.STATS: - const statsContainer = this.scene.add.container(0, -pageBg.height); + const statsContainer = globalScene.add.container(0, -pageBg.height); pageContainer.add(statsContainer); PERMANENT_STATS.forEach((stat, s) => { @@ -884,7 +887,7 @@ export default class SummaryUiHandler extends UiHandler { const natureStatMultiplier = getNatureStatMultiplier(this.pokemon?.getNature()!, s); // TODO: is this bang correct? - const statLabel = addTextObject(this.scene, 27 + 115 * colIndex + (colIndex === 1 ? 5 : 0), 56 + 16 * rowIndex, statName, natureStatMultiplier === 1 ? TextStyle.SUMMARY : natureStatMultiplier > 1 ? TextStyle.SUMMARY_PINK : TextStyle.SUMMARY_BLUE); + const statLabel = addTextObject(27 + 115 * colIndex + (colIndex === 1 ? 5 : 0), 56 + 16 * rowIndex, statName, natureStatMultiplier === 1 ? TextStyle.SUMMARY : natureStatMultiplier > 1 ? TextStyle.SUMMARY_PINK : TextStyle.SUMMARY_BLUE); statLabel.setOrigin(0.5, 0); statsContainer.add(statLabel); @@ -892,24 +895,24 @@ export default class SummaryUiHandler extends UiHandler { ? Utils.formatStat(this.pokemon?.getStat(stat)!) // TODO: is this bang correct? : `${Utils.formatStat(this.pokemon?.hp!, true)}/${Utils.formatStat(this.pokemon?.getMaxHp()!, true)}`; // TODO: are those bangs correct? - const statValue = addTextObject(this.scene, 120 + 88 * colIndex, 56 + 16 * rowIndex, statValueText, TextStyle.WINDOW_ALT); + const statValue = addTextObject(120 + 88 * colIndex, 56 + 16 * rowIndex, statValueText, TextStyle.WINDOW_ALT); statValue.setOrigin(1, 0); statsContainer.add(statValue); }); - const itemModifiers = (this.scene.findModifiers(m => m instanceof PokemonHeldItemModifier + const itemModifiers = (globalScene.findModifiers(m => m instanceof PokemonHeldItemModifier && m.pokemonId === this.pokemon?.id, this.playerParty) as PokemonHeldItemModifier[]) .sort(modifierSortFunc); itemModifiers.forEach((item, i) => { - const icon = item.getIcon(this.scene, true); + const icon = item.getIcon(true); icon.setPosition((i % 17) * 12 + 3, 14 * Math.floor(i / 17) + 15); statsContainer.add(icon); icon.setInteractive(new Phaser.Geom.Rectangle(0, 0, 32, 32), Phaser.Geom.Rectangle.Contains); - icon.on("pointerover", () => (this.scene as BattleScene).ui.showTooltip(item.type.name, item.type.getDescription(this.scene), true)); - icon.on("pointerout", () => (this.scene as BattleScene).ui.hideTooltip()); + icon.on("pointerover", () => globalScene.ui.showTooltip(item.type.name, item.type.getDescription(), true)); + icon.on("pointerout", () => globalScene.ui.hideTooltip()); }); const pkmLvl = this.pokemon?.level!; // TODO: is this bang correct? @@ -917,32 +920,32 @@ export default class SummaryUiHandler extends UiHandler { const pkmExp = this.pokemon?.exp!; // TODO: is this bang correct? const pkmSpeciesGrowthRate = this.pokemon?.species.growthRate!; // TODO: is this bang correct? const relLvExp = getLevelRelExp(pkmLvl + 1, pkmSpeciesGrowthRate); - const expRatio = pkmLvl < this.scene.getMaxExpLevel() ? pkmLvlExp / relLvExp : 0; + const expRatio = pkmLvl < globalScene.getMaxExpLevel() ? pkmLvlExp / relLvExp : 0; - const expLabel = addTextObject(this.scene, 6, 112, i18next.t("pokemonSummary:expPoints"), TextStyle.SUMMARY); + const expLabel = addTextObject(6, 112, i18next.t("pokemonSummary:expPoints"), TextStyle.SUMMARY); expLabel.setOrigin(0, 0); statsContainer.add(expLabel); - const nextLvExpLabel = addTextObject(this.scene, 6, 128, i18next.t("pokemonSummary:nextLv"), TextStyle.SUMMARY); + const nextLvExpLabel = addTextObject(6, 128, i18next.t("pokemonSummary:nextLv"), TextStyle.SUMMARY); nextLvExpLabel.setOrigin(0, 0); statsContainer.add(nextLvExpLabel); - const expText = addTextObject(this.scene, 208, 112, pkmExp.toString(), TextStyle.WINDOW_ALT); + const expText = addTextObject(208, 112, pkmExp.toString(), TextStyle.WINDOW_ALT); expText.setOrigin(1, 0); statsContainer.add(expText); - const nextLvExp = pkmLvl < this.scene.getMaxExpLevel() + const nextLvExp = pkmLvl < globalScene.getMaxExpLevel() ? getLevelTotalExp(pkmLvl + 1, pkmSpeciesGrowthRate) - pkmExp : 0; - const nextLvExpText = addTextObject(this.scene, 208, 128, nextLvExp.toString(), TextStyle.WINDOW_ALT); + const nextLvExpText = addTextObject(208, 128, nextLvExp.toString(), TextStyle.WINDOW_ALT); nextLvExpText.setOrigin(1, 0); statsContainer.add(nextLvExpText); - const expOverlay = this.scene.add.image(140, 145, "summary_stats_overlay_exp"); + const expOverlay = globalScene.add.image(140, 145, "summary_stats_overlay_exp"); expOverlay.setOrigin(0, 0); statsContainer.add(expOverlay); - const expMaskRect = this.scene.make.graphics({}); + const expMaskRect = globalScene.make.graphics({}); expMaskRect.setScale(6); expMaskRect.fillStyle(0xFFFFFF); expMaskRect.beginPath(); @@ -953,18 +956,18 @@ export default class SummaryUiHandler extends UiHandler { expOverlay.setMask(expMask); break; case Page.MOVES: - this.movesContainer = this.scene.add.container(5, -pageBg.height + 26); + this.movesContainer = globalScene.add.container(5, -pageBg.height + 26); pageContainer.add(this.movesContainer); - this.extraMoveRowContainer = this.scene.add.container(0, 64); + this.extraMoveRowContainer = globalScene.add.container(0, 64); this.extraMoveRowContainer.setVisible(false); this.movesContainer.add(this.extraMoveRowContainer); - const extraRowOverlay = this.scene.add.image(-2, 1, "summary_moves_overlay_row"); + const extraRowOverlay = globalScene.add.image(-2, 1, "summary_moves_overlay_row"); extraRowOverlay.setOrigin(0, 1); this.extraMoveRowContainer.add(extraRowOverlay); - const extraRowText = addTextObject(this.scene, 35, 0, this.summaryUiMode === SummaryUiMode.LEARN_MOVE && this.newMove ? this.newMove.name : i18next.t("pokemonSummary:cancel"), + const extraRowText = addTextObject(35, 0, this.summaryUiMode === SummaryUiMode.LEARN_MOVE && this.newMove ? this.newMove.name : i18next.t("pokemonSummary:cancel"), this.summaryUiMode === SummaryUiMode.LEARN_MOVE ? TextStyle.SUMMARY_PINK : TextStyle.SUMMARY); extraRowText.setOrigin(0, 1); this.extraMoveRowContainer.add(extraRowText); @@ -975,45 +978,45 @@ export default class SummaryUiHandler extends UiHandler { if (this.newMove && this.pokemon) { const spriteKey = Utils.getLocalizedSpriteKey("types"); const moveType = this.pokemon.getMoveType(this.newMove); - const newMoveTypeIcon = this.scene.add.sprite(0, 0, spriteKey, Type[moveType].toLowerCase()); + const newMoveTypeIcon = globalScene.add.sprite(0, 0, spriteKey, Type[moveType].toLowerCase()); newMoveTypeIcon.setOrigin(0, 1); this.extraMoveRowContainer.add(newMoveTypeIcon); } - const ppOverlay = this.scene.add.image(163, -1, "summary_moves_overlay_pp"); + const ppOverlay = globalScene.add.image(163, -1, "summary_moves_overlay_pp"); ppOverlay.setOrigin(0, 1); this.extraMoveRowContainer.add(ppOverlay); const pp = Utils.padInt(this.newMove?.pp!, 2, " "); // TODO: is this bang correct? - const ppText = addTextObject(this.scene, 173, 1, `${pp}/${pp}`, TextStyle.WINDOW); + const ppText = addTextObject(173, 1, `${pp}/${pp}`, TextStyle.WINDOW); ppText.setOrigin(0, 1); this.extraMoveRowContainer.add(ppText); } - this.moveRowsContainer = this.scene.add.container(0, 0); + this.moveRowsContainer = globalScene.add.container(0, 0); this.movesContainer.add(this.moveRowsContainer); for (let m = 0; m < 4; m++) { const move: PokemonMove | null = this.pokemon && this.pokemon.moveset.length > m ? this.pokemon?.moveset[m] : null; - const moveRowContainer = this.scene.add.container(0, 16 * m); + const moveRowContainer = globalScene.add.container(0, 16 * m); this.moveRowsContainer.add(moveRowContainer); if (move && this.pokemon) { const spriteKey = Utils.getLocalizedSpriteKey("types"); const moveType = this.pokemon.getMoveType(move.getMove()); - const typeIcon = this.scene.add.sprite(0, 0, spriteKey, Type[moveType].toLowerCase()); + const typeIcon = globalScene.add.sprite(0, 0, spriteKey, Type[moveType].toLowerCase()); typeIcon.setOrigin(0, 1); moveRowContainer.add(typeIcon); } - const moveText = addTextObject(this.scene, 35, 0, move ? move.getName() : "-", TextStyle.SUMMARY); + const moveText = addTextObject(35, 0, move ? move.getName() : "-", TextStyle.SUMMARY); moveText.setOrigin(0, 1); moveRowContainer.add(moveText); - const ppOverlay = this.scene.add.image(163, -1, "summary_moves_overlay_pp"); + const ppOverlay = globalScene.add.image(163, -1, "summary_moves_overlay_pp"); ppOverlay.setOrigin(0, 1); moveRowContainer.add(ppOverlay); - const ppText = addTextObject(this.scene, 173, 1, "--/--", TextStyle.WINDOW); + const ppText = addTextObject(173, 1, "--/--", TextStyle.WINDOW); ppText.setOrigin(0, 1); if (move) { @@ -1025,10 +1028,10 @@ export default class SummaryUiHandler extends UiHandler { moveRowContainer.add(ppText); } - this.moveDescriptionText = addTextObject(this.scene, 2, 84, "", TextStyle.WINDOW_ALT, { wordWrap: { width: 1212 }}); + this.moveDescriptionText = addTextObject(2, 84, "", TextStyle.WINDOW_ALT, { wordWrap: { width: 1212 }}); this.movesContainer.add(this.moveDescriptionText); - const moveDescriptionTextMaskRect = this.scene.make.graphics({}); + const moveDescriptionTextMaskRect = globalScene.make.graphics({}); moveDescriptionTextMaskRect.setScale(6); moveDescriptionTextMaskRect.fillStyle(0xFFFFFF); moveDescriptionTextMaskRect.beginPath(); @@ -1046,7 +1049,7 @@ export default class SummaryUiHandler extends UiHandler { return; } this.statusVisible = true; - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this.statusContainer, x: 0, duration: instant ? 0 : 250, @@ -1059,7 +1062,7 @@ export default class SummaryUiHandler extends UiHandler { return; } this.statusVisible = false; - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this.statusContainer, x: -106, duration: instant ? 0 : 250, @@ -1122,7 +1125,7 @@ export default class SummaryUiHandler extends UiHandler { return; } this.moveEffectsVisible = true; - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this.moveEffectContainer, x: 6, duration: instant ? 0 : 250, @@ -1135,7 +1138,7 @@ export default class SummaryUiHandler extends UiHandler { return; } this.moveEffectsVisible = false; - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this.moveEffectContainer, x: 106, duration: instant ? 0 : 250, diff --git a/src/ui/target-select-ui-handler.ts b/src/ui/target-select-ui-handler.ts index 249ae7b8b01..232ec887b0a 100644 --- a/src/ui/target-select-ui-handler.ts +++ b/src/ui/target-select-ui-handler.ts @@ -1,14 +1,14 @@ import { BattlerIndex } from "../battle"; -import BattleScene from "../battle-scene"; import { Mode } from "./ui"; import UiHandler from "./ui-handler"; import * as Utils from "../utils"; import { getMoveTargets } from "../data/move"; import { Button } from "#enums/buttons"; -import { Moves } from "#enums/moves"; -import Pokemon from "#app/field/pokemon"; -import { ModifierBar } from "#app/modifier/modifier"; +import type { Moves } from "#enums/moves"; +import type Pokemon from "#app/field/pokemon"; +import type { ModifierBar } from "#app/modifier/modifier"; import { SubstituteTag } from "#app/data/battler-tags"; +import { globalScene } from "#app/global-scene"; export type TargetSelectCallback = (targets: BattlerIndex[]) => void; @@ -26,8 +26,8 @@ export default class TargetSelectUiHandler extends UiHandler { private enemyModifiers: ModifierBar; private targetBattleInfoMoveTween: Phaser.Tweens.Tween[] = []; - constructor(scene: BattleScene) { - super(scene, Mode.TARGET_SELECT); + constructor() { + super(Mode.TARGET_SELECT); this.cursor = -1; } @@ -44,7 +44,7 @@ export default class TargetSelectUiHandler extends UiHandler { this.fieldIndex = args[0] as integer; this.move = args[1] as Moves; this.targetSelectCallback = args[2] as TargetSelectCallback; - const user = this.scene.getPlayerField()[this.fieldIndex]; + const user = globalScene.getPlayerField()[this.fieldIndex]; const moveTargets = getMoveTargets(user, this.move); this.targets = moveTargets.targets; @@ -54,7 +54,7 @@ export default class TargetSelectUiHandler extends UiHandler { return false; } - this.enemyModifiers = this.scene.getModifierBar(true); + this.enemyModifiers = globalScene.getModifierBar(true); if (this.fieldIndex === BattlerIndex.PLAYER) { this.resetCursor(this.cursor0, user); @@ -132,8 +132,8 @@ export default class TargetSelectUiHandler extends UiHandler { } setCursor(cursor: integer): boolean { - const singleTarget = this.scene.getField()[cursor]; - const multipleTargets = this.targets.map(index => this.scene.getField()[index]); + const singleTarget = globalScene.getField()[cursor]; + const multipleTargets = this.targets.map(index => globalScene.getField()[index]); this.targetsHighlighted = this.isMultipleTargets ? multipleTargets : [ singleTarget ]; @@ -147,7 +147,7 @@ export default class TargetSelectUiHandler extends UiHandler { } } - this.targetFlashTween = this.scene.tweens.add({ + this.targetFlashTween = globalScene.tweens.add({ targets: this.targetsHighlighted, key: { start: 1, to: 0.25 }, loop: -1, @@ -173,7 +173,7 @@ export default class TargetSelectUiHandler extends UiHandler { const targetsBattleInfo = this.targetsHighlighted.map(target => target.getBattleInfo()); targetsBattleInfo.map(info => { - this.targetBattleInfoMoveTween.push(this.scene.tweens.add({ + this.targetBattleInfoMoveTween.push(globalScene.tweens.add({ targets: [ info ], y: { start: info.getBaseY(), to: info.getBaseY() + 1 }, loop: -1, diff --git a/src/ui/test-dialogue-ui-handler.ts b/src/ui/test-dialogue-ui-handler.ts index bf0e7f6723f..c7693ec954d 100644 --- a/src/ui/test-dialogue-ui-handler.ts +++ b/src/ui/test-dialogue-ui-handler.ts @@ -1,8 +1,9 @@ -import { FormModalUiHandler, InputFieldConfig } from "./form-modal-ui-handler"; -import { ModalConfig } from "./modal-ui-handler"; +import type { InputFieldConfig } from "./form-modal-ui-handler"; +import { FormModalUiHandler } from "./form-modal-ui-handler"; +import type { ModalConfig } from "./modal-ui-handler"; import i18next from "i18next"; -import { PlayerPokemon } from "#app/field/pokemon"; -import { OptionSelectItem } from "./abstact-option-select-ui-handler"; +import type { PlayerPokemon } from "#app/field/pokemon"; +import type { OptionSelectItem } from "./abstact-option-select-ui-handler"; import { isNullOrUndefined } from "#app/utils"; import { Mode } from "./ui"; @@ -10,8 +11,8 @@ export default class TestDialogueUiHandler extends FormModalUiHandler { keys: string[]; - constructor(scene, mode) { - super(scene, mode); + constructor(mode) { + super(mode); } setup() { diff --git a/src/ui/text.ts b/src/ui/text.ts index 17ae02be9ef..cdd1142e7ee 100644 --- a/src/ui/text.ts +++ b/src/ui/text.ts @@ -1,9 +1,9 @@ import { EggTier } from "#enums/egg-type"; import { UiTheme } from "#enums/ui-theme"; -import Phaser from "phaser"; +import type Phaser from "phaser"; import BBCodeText from "phaser3-rex-plugins/plugins/gameobjects/tagtext/bbcodetext/BBCodeText"; import InputText from "phaser3-rex-plugins/plugins/inputtext"; -import BattleScene from "../battle-scene"; +import { globalScene } from "#app/global-scene"; import { ModifierTier } from "../modifier/modifier-tier"; import i18next from "#app/plugins/i18n"; @@ -52,10 +52,10 @@ export interface TextStyleOptions { shadowYpos: number } -export function addTextObject(scene: Phaser.Scene, x: number, y: number, content: string, style: TextStyle, extraStyleOptions?: Phaser.Types.GameObjects.Text.TextStyle): Phaser.GameObjects.Text { - const { scale, styleOptions, shadowColor, shadowXpos, shadowYpos } = getTextStyleOptions(style, (scene as BattleScene).uiTheme, extraStyleOptions); +export function addTextObject(x: number, y: number, content: string, style: TextStyle, extraStyleOptions?: Phaser.Types.GameObjects.Text.TextStyle): Phaser.GameObjects.Text { + const { scale, styleOptions, shadowColor, shadowXpos, shadowYpos } = getTextStyleOptions(style, globalScene.uiTheme, extraStyleOptions); - const ret = scene.add.text(x, y, content, styleOptions); + const ret = globalScene.add.text(x, y, content, styleOptions); ret.setScale(scale); ret.setShadow(shadowXpos, shadowYpos, shadowColor); if (!(styleOptions as Phaser.Types.GameObjects.Text.TextStyle).lineSpacing) { @@ -69,8 +69,8 @@ export function addTextObject(scene: Phaser.Scene, x: number, y: number, content return ret; } -export function setTextStyle(obj: Phaser.GameObjects.Text, scene: Phaser.Scene, style: TextStyle, extraStyleOptions?: Phaser.Types.GameObjects.Text.TextStyle) { - const { scale, styleOptions, shadowColor, shadowXpos, shadowYpos } = getTextStyleOptions(style, (scene as BattleScene).uiTheme, extraStyleOptions); +export function setTextStyle(obj: Phaser.GameObjects.Text, style: TextStyle, extraStyleOptions?: Phaser.Types.GameObjects.Text.TextStyle) { + const { scale, styleOptions, shadowColor, shadowXpos, shadowYpos } = getTextStyleOptions(style, globalScene.uiTheme, extraStyleOptions); obj.setScale(scale); obj.setShadow(shadowXpos, shadowYpos, shadowColor); if (!(styleOptions as Phaser.Types.GameObjects.Text.TextStyle).lineSpacing) { @@ -82,11 +82,11 @@ export function setTextStyle(obj: Phaser.GameObjects.Text, scene: Phaser.Scene, } } -export function addBBCodeTextObject(scene: Phaser.Scene, x: number, y: number, content: string, style: TextStyle, extraStyleOptions?: Phaser.Types.GameObjects.Text.TextStyle): BBCodeText { - const { scale, styleOptions, shadowColor, shadowXpos, shadowYpos } = getTextStyleOptions(style, (scene as BattleScene).uiTheme, extraStyleOptions); +export function addBBCodeTextObject(x: number, y: number, content: string, style: TextStyle, extraStyleOptions?: Phaser.Types.GameObjects.Text.TextStyle): BBCodeText { + const { scale, styleOptions, shadowColor, shadowXpos, shadowYpos } = getTextStyleOptions(style, globalScene.uiTheme, extraStyleOptions); - const ret = new BBCodeText(scene, x, y, content, styleOptions as BBCodeText.TextStyle); - scene.add.existing(ret); + const ret = new BBCodeText(globalScene, x, y, content, styleOptions as BBCodeText.TextStyle); + globalScene.add.existing(ret); ret.setScale(scale); ret.setShadow(shadowXpos, shadowYpos, shadowColor); if (!(styleOptions as BBCodeText.TextStyle).lineSpacing) { @@ -100,11 +100,11 @@ export function addBBCodeTextObject(scene: Phaser.Scene, x: number, y: number, c return ret; } -export function addTextInputObject(scene: Phaser.Scene, x: number, y: number, width: number, height: number, style: TextStyle, extraStyleOptions?: InputText.IConfig): InputText { - const { scale, styleOptions } = getTextStyleOptions(style, (scene as BattleScene).uiTheme, extraStyleOptions); +export function addTextInputObject(x: number, y: number, width: number, height: number, style: TextStyle, extraStyleOptions?: InputText.IConfig): InputText { + const { scale, styleOptions } = getTextStyleOptions(style, globalScene.uiTheme, extraStyleOptions); - const ret = new InputText(scene, x, y, width, height, styleOptions as InputText.IConfig); - scene.add.existing(ret); + const ret = new InputText(globalScene, x, y, width, height, styleOptions as InputText.IConfig); + globalScene.add.existing(ret); ret.setScale(scale); return ret; diff --git a/src/ui/time-of-day-widget.ts b/src/ui/time-of-day-widget.ts index 66fe5cc9ac3..2a33b475385 100644 --- a/src/ui/time-of-day-widget.ts +++ b/src/ui/time-of-day-widget.ts @@ -1,13 +1,11 @@ import * as Utils from "../utils"; -import BattleScene from "#app/battle-scene"; +import { globalScene } from "#app/global-scene"; import { BattleSceneEventType } from "../events/battle-scene"; import { EaseType } from "#enums/ease-type"; import { TimeOfDay } from "#enums/time-of-day"; /** A small self contained UI element that displays the time of day as an icon */ export default class TimeOfDayWidget extends Phaser.GameObjects.Container { - /** An alias for the scene typecast to a {@linkcode BattleScene} */ - private battleScene: BattleScene; /** The {@linkcode Phaser.GameObjects.Sprite} that represents the foreground of the current time of day */ private readonly timeOfDayIconFgs: Phaser.GameObjects.Sprite[] = new Array(2); @@ -42,19 +40,18 @@ export default class TimeOfDayWidget extends Phaser.GameObjects.Container { public set parentVisible(visible: boolean) { if (visible && !this._parentVisible) { // Only resume the tweens if parent is newly visible this.timeOfDayIcons?.forEach( - icon => this.scene.tweens.getTweensOf(icon).forEach( + icon => globalScene.tweens.getTweensOf(icon).forEach( tween => tween.resume())); } this._parentVisible = visible; } - constructor(scene: Phaser.Scene, x: number = 0, y: number = 0) { - super(scene, x, y); - this.battleScene = this.scene as BattleScene; + constructor(x: number = 0, y: number = 0) { + super(globalScene, x, y); - this.setVisible(this.battleScene.showTimeOfDayWidget); - if (!this.battleScene.showTimeOfDayWidget) { + this.setVisible(globalScene.showTimeOfDayWidget); + if (!globalScene.showTimeOfDayWidget) { return; } @@ -62,14 +59,14 @@ export default class TimeOfDayWidget extends Phaser.GameObjects.Container { this.timeOfDayIconPairs.forEach( (icons, key) => { for (let i = 0; i < icons.length; i++) { - icons[i] = this.scene.add.sprite(0, 0, "dawn_icon_" + key).setOrigin(); + icons[i] = globalScene.add.sprite(0, 0, "dawn_icon_" + key).setOrigin(); } }); // Store a flat array of all icons for later this.timeOfDayIcons = [ this.timeOfDayIconBgs, this.timeOfDayIconMgs, this.timeOfDayIconFgs ].flat(); this.add(this.timeOfDayIcons); - this.battleScene.eventTarget.addEventListener(BattleSceneEventType.ENCOUNTER_PHASE, this.onEncounterPhaseEvent); + globalScene.eventTarget.addEventListener(BattleSceneEventType.ENCOUNTER_PHASE, this.onEncounterPhaseEvent); } /** @@ -136,13 +133,13 @@ export default class TimeOfDayWidget extends Phaser.GameObjects.Container { /** Adds the proper tween for all icons */ private tweenTimeOfDayIcon() { - this.scene.tweens.killTweensOf(this.timeOfDayIcons); + globalScene.tweens.killTweensOf(this.timeOfDayIcons); this.resetIcons(); // Tween based on the player setting - (this.battleScene.timeOfDayAnimation === EaseType.BACK ? this.getBackTween() : this.getBounceTween()) - .forEach(tween => this.scene.tweens.add(tween)); + (globalScene.timeOfDayAnimation === EaseType.BACK ? this.getBackTween() : this.getBounceTween()) + .forEach(tween => globalScene.tweens.add(tween)); // Swaps all elements of the icon arrays by shifting the first element onto the end of the array // This ensures index[0] is always the new time of day icon and index[1] is always the current one @@ -158,7 +155,7 @@ export default class TimeOfDayWidget extends Phaser.GameObjects.Container { * @param event {@linkcode Event} being sent */ private onEncounterPhase(event: Event) { - const newTime = this.battleScene.arena.getTimeOfDay(); + const newTime = globalScene.arena.getTimeOfDay(); if (this.currentTime === newTime) { return; diff --git a/src/ui/title-ui-handler.ts b/src/ui/title-ui-handler.ts index aec80f049c9..538f78e877e 100644 --- a/src/ui/title-ui-handler.ts +++ b/src/ui/title-ui-handler.ts @@ -1,4 +1,3 @@ -import BattleScene from "../battle-scene"; import OptionSelectUiHandler from "./settings/option-select-ui-handler"; import { Mode } from "./ui"; import * as Utils from "../utils"; @@ -8,6 +7,7 @@ import i18next from "i18next"; import { TimedEventDisplay } from "#app/timed-event-manager"; import { version } from "../../package.json"; import { pokerogueApi } from "#app/plugins/api/pokerogue-api"; +import { globalScene } from "#app/global-scene"; export default class TitleUiHandler extends OptionSelectUiHandler { /** If the stats can not be retrieved, use this fallback value */ @@ -22,8 +22,8 @@ export default class TitleUiHandler extends OptionSelectUiHandler { private titleStatsTimer: NodeJS.Timeout | null; - constructor(scene: BattleScene, mode: Mode = Mode.TITLE) { - super(scene, mode); + constructor(mode: Mode = Mode.TITLE) { + super(mode); } setup() { @@ -31,25 +31,24 @@ export default class TitleUiHandler extends OptionSelectUiHandler { const ui = this.getUi(); - this.titleContainer = this.scene.add.container(0, -(this.scene.game.canvas.height / 6)); + this.titleContainer = globalScene.add.container(0, -(globalScene.game.canvas.height / 6)); this.titleContainer.setName("title"); this.titleContainer.setAlpha(0); ui.add(this.titleContainer); - const logo = this.scene.add.image((this.scene.game.canvas.width / 6) / 2, 8, "logo"); + const logo = globalScene.add.image((globalScene.game.canvas.width / 6) / 2, 8, "logo"); logo.setOrigin(0.5, 0); this.titleContainer.add(logo); - if (this.scene.eventManager.isEventActive()) { - this.eventDisplay = new TimedEventDisplay(this.scene, 0, 0, this.scene.eventManager.activeEvent()); + if (globalScene.eventManager.isEventActive()) { + this.eventDisplay = new TimedEventDisplay(0, 0, globalScene.eventManager.activeEvent()); this.eventDisplay.setup(); this.titleContainer.add(this.eventDisplay); } this.playerCountLabel = addTextObject( - this.scene, - (this.scene.game.canvas.width / 6) - 2, - (this.scene.game.canvas.height / 6) - 13 - 576 * getTextStyleOptions(TextStyle.WINDOW, this.scene.uiTheme).scale, + (globalScene.game.canvas.width / 6) - 2, + (globalScene.game.canvas.height / 6) - 13 - 576 * getTextStyleOptions(TextStyle.WINDOW, globalScene.uiTheme).scale, `? ${i18next.t("menu:playersOnline")}`, TextStyle.MESSAGE, { fontSize: "54px" } @@ -57,14 +56,14 @@ export default class TitleUiHandler extends OptionSelectUiHandler { this.playerCountLabel.setOrigin(1, 0); this.titleContainer.add(this.playerCountLabel); - this.splashMessageText = addTextObject(this.scene, logo.x + 64, logo.y + logo.displayHeight - 8, "", TextStyle.MONEY, { fontSize: "54px" }); + this.splashMessageText = addTextObject(logo.x + 64, logo.y + logo.displayHeight - 8, "", TextStyle.MONEY, { fontSize: "54px" }); this.splashMessageText.setOrigin(0.5, 0.5); this.splashMessageText.setAngle(-20); this.titleContainer.add(this.splashMessageText); const originalSplashMessageScale = this.splashMessageText.scale; - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this.splashMessageText, duration: Utils.fixedInt(350), scale: originalSplashMessageScale * 1.25, @@ -72,7 +71,7 @@ export default class TitleUiHandler extends OptionSelectUiHandler { yoyo: true, }); - this.appVersionText = addTextObject(this.scene, logo.x - 60, logo.y + logo.displayHeight + 4, "", TextStyle.MONEY, { fontSize: "54px" }); + this.appVersionText = addTextObject(logo.x - 60, logo.y + logo.displayHeight + 4, "", TextStyle.MONEY, { fontSize: "54px" }); this.appVersionText.setOrigin(0.5, 0.5); this.appVersionText.setAngle(0); this.titleContainer.add(this.appVersionText); @@ -104,8 +103,8 @@ export default class TitleUiHandler extends OptionSelectUiHandler { const ui = this.getUi(); - if (this.scene.eventManager.isEventActive()) { - this.eventDisplay.setWidth(this.scene.scaledCanvas.width - this.optionSelectBg.width - this.optionSelectBg.x); + if (globalScene.eventManager.isEventActive()) { + this.eventDisplay.setWidth(globalScene.scaledCanvas.width - this.optionSelectBg.width - this.optionSelectBg.x); this.eventDisplay.show(); } @@ -115,7 +114,7 @@ export default class TitleUiHandler extends OptionSelectUiHandler { this.updateTitleStats(); }, 60000); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: [ this.titleContainer, ui.getMessageHandler().bg ], duration: Utils.fixedInt(325), alpha: (target: any) => target === this.titleContainer ? 1 : 0, @@ -136,7 +135,7 @@ export default class TitleUiHandler extends OptionSelectUiHandler { this.titleStatsTimer && clearInterval(this.titleStatsTimer); this.titleStatsTimer = null; - this.scene.tweens.add({ + globalScene.tweens.add({ targets: [ this.titleContainer, ui.getMessageHandler().bg ], duration: Utils.fixedInt(325), alpha: (target: any) => target === this.titleContainer ? 0 : 1, diff --git a/src/ui/ui-handler.ts b/src/ui/ui-handler.ts index bb7b1e038db..1f0155aef8b 100644 --- a/src/ui/ui-handler.ts +++ b/src/ui/ui-handler.ts @@ -1,23 +1,21 @@ -import BattleScene from "../battle-scene"; -import { TextStyle, getTextColor } from "./text"; -import { Mode } from "./ui"; -import { Button } from "#enums/buttons"; +import { globalScene } from "#app/global-scene"; +import type { TextStyle } from "./text"; +import { getTextColor } from "./text"; +import type { Mode } from "./ui"; +import type { Button } from "#enums/buttons"; /** * A basic abstract class to act as a holder and processor for UI elements. */ export default abstract class UiHandler { - protected scene: BattleScene; protected mode: integer | null; protected cursor: integer = 0; public active: boolean = false; /** - * @param {BattleScene} scene The same scene as everything else. - * @param {Mode} mode The mode of the UI element. These should be unique. + * @param mode The mode of the UI element. These should be unique. */ - constructor(scene: BattleScene, mode: Mode | null = null) { - this.scene = scene; + constructor(mode: Mode | null = null) { this.mode = mode; } @@ -32,11 +30,11 @@ export default abstract class UiHandler { abstract processInput(button: Button): boolean; getUi() { - return this.scene.ui; + return globalScene.ui; } getTextColor(style: TextStyle, shadow: boolean = false): string { - return getTextColor(style, shadow, this.scene.uiTheme); + return getTextColor(style, shadow, globalScene.uiTheme); } getCursor(): integer { @@ -58,7 +56,7 @@ export default abstract class UiHandler { * @param cursorStyle cursor style to apply */ protected setMouseCursorStyle(cursorStyle: "pointer" | "default") { - this.scene.input.manager.canvas.style.cursor = cursorStyle; + globalScene.input.manager.canvas.style.cursor = cursorStyle; } clear() { diff --git a/src/ui/ui-theme.ts b/src/ui/ui-theme.ts index 89c56384bd0..0d42815f842 100644 --- a/src/ui/ui-theme.ts +++ b/src/ui/ui-theme.ts @@ -1,6 +1,6 @@ import { UiTheme } from "#enums/ui-theme"; import { legacyCompatibleImages } from "#app/scene-base"; -import BattleScene from "../battle-scene"; +import { globalScene } from "#app/global-scene"; export enum WindowVariant { NORMAL, @@ -36,14 +36,14 @@ const windowTypeControlColors = { } }; -export function addWindow(scene: BattleScene, x: number, y: number, width: number, height: number, mergeMaskTop?: boolean, mergeMaskLeft?: boolean, maskOffsetX?: number, maskOffsetY?: number, windowVariant?: WindowVariant): Phaser.GameObjects.NineSlice { +export function addWindow(x: number, y: number, width: number, height: number, mergeMaskTop?: boolean, mergeMaskLeft?: boolean, maskOffsetX?: number, maskOffsetY?: number, windowVariant?: WindowVariant): Phaser.GameObjects.NineSlice { if (windowVariant === undefined) { windowVariant = WindowVariant.NORMAL; } - const borderSize = scene.uiTheme ? 6 : 8; + const borderSize = globalScene.uiTheme ? 6 : 8; - const window = scene.add.nineslice(x, y, `window_${scene.windowType}${getWindowVariantSuffix(windowVariant)}`, undefined, width, height, borderSize, borderSize, borderSize, borderSize); + const window = globalScene.add.nineslice(x, y, `window_${globalScene.windowType}${getWindowVariantSuffix(windowVariant)}`, undefined, width, height, borderSize, borderSize, borderSize, borderSize); window.setOrigin(0, 0); if (mergeMaskLeft || mergeMaskTop || maskOffsetX || maskOffsetY) { @@ -54,7 +54,7 @@ export function addWindow(scene: BattleScene, x: number, y: number, width: numbe * height: bottom */ const maskRect = new Phaser.GameObjects.Rectangle( - scene, + globalScene, 6 * (x - (mergeMaskLeft ? 2 : 0) - (maskOffsetX || 0)), 6 * (y + (mergeMaskTop ? 2 : 0) + (maskOffsetY || 0)), width - (mergeMaskLeft ? 2 : 0), @@ -70,7 +70,7 @@ export function addWindow(scene: BattleScene, x: number, y: number, width: numbe return window; } -export function updateWindowType(scene: BattleScene, windowTypeIndex: integer): void { +export function updateWindowType(windowTypeIndex: integer): void { const windowObjects: [Phaser.GameObjects.NineSlice, WindowVariant][] = []; const themedObjects: (Phaser.GameObjects.Image | Phaser.GameObjects.NineSlice)[] = []; const traverse = (object: any) => { @@ -96,12 +96,12 @@ export function updateWindowType(scene: BattleScene, windowTypeIndex: integer): } }; - traverse(scene); + traverse(globalScene); - scene.windowType = windowTypeIndex; + globalScene.windowType = windowTypeIndex; const rootStyle = document.documentElement.style; - [ "base", "light", "dark" ].map((k, i) => rootStyle.setProperty(`--color-${k}`, windowTypeControlColors[scene.uiTheme][windowTypeIndex - 1][i])); + [ "base", "light", "dark" ].map((k, i) => rootStyle.setProperty(`--color-${k}`, windowTypeControlColors[globalScene.uiTheme][windowTypeIndex - 1][i])); const windowKey = `window_${windowTypeIndex}`; @@ -114,11 +114,11 @@ export function updateWindowType(scene: BattleScene, windowTypeIndex: integer): } } -export function addUiThemeOverrides(scene: BattleScene): void { - const originalAddImage = scene.add.image; - scene.add.image = function (x: number, y: number, texture: string | Phaser.Textures.Texture, frame?: string | number): Phaser.GameObjects.Image { +export function addUiThemeOverrides(): void { + const originalAddImage = globalScene.add.image; + globalScene.add.image = function (x: number, y: number, texture: string | Phaser.Textures.Texture, frame?: string | number): Phaser.GameObjects.Image { let legacy = false; - if (typeof texture === "string" && scene.uiTheme && legacyCompatibleImages.includes(texture)) { + if (typeof texture === "string" && globalScene.uiTheme && legacyCompatibleImages.includes(texture)) { legacy = true; texture += "_legacy"; } @@ -133,10 +133,10 @@ export function addUiThemeOverrides(scene: BattleScene): void { return ret; }; - const originalAddSprite = scene.add.sprite; - scene.add.sprite = function (x: number, y: number, texture: string | Phaser.Textures.Texture, frame?: string | number): Phaser.GameObjects.Sprite { + const originalAddSprite = globalScene.add.sprite; + globalScene.add.sprite = function (x: number, y: number, texture: string | Phaser.Textures.Texture, frame?: string | number): Phaser.GameObjects.Sprite { let legacy = false; - if (typeof texture === "string" && scene.uiTheme && legacyCompatibleImages.includes(texture)) { + if (typeof texture === "string" && globalScene.uiTheme && legacyCompatibleImages.includes(texture)) { legacy = true; texture += "_legacy"; } @@ -151,10 +151,10 @@ export function addUiThemeOverrides(scene: BattleScene): void { return ret; }; - const originalAddNineslice = scene.add.nineslice; - scene.add.nineslice = function (x: number, y: number, texture: string | Phaser.Textures.Texture, frame?: string | number, width?: number, height?: number, leftWidth?: number, rightWidth?: number, topHeight?: number, bottomHeight?: number): Phaser.GameObjects.NineSlice { + const originalAddNineslice = globalScene.add.nineslice; + globalScene.add.nineslice = function (x: number, y: number, texture: string | Phaser.Textures.Texture, frame?: string | number, width?: number, height?: number, leftWidth?: number, rightWidth?: number, topHeight?: number, bottomHeight?: number): Phaser.GameObjects.NineSlice { let legacy = false; - if (typeof texture === "string" && scene.uiTheme && legacyCompatibleImages.includes(texture)) { + if (typeof texture === "string" && globalScene.uiTheme && legacyCompatibleImages.includes(texture)) { legacy = true; texture += "_legacy"; } diff --git a/src/ui/ui.ts b/src/ui/ui.ts index fc8fa94c848..6d44997f649 100644 --- a/src/ui/ui.ts +++ b/src/ui/ui.ts @@ -1,5 +1,5 @@ -import { default as BattleScene } from "../battle-scene"; -import UiHandler from "./ui-handler"; +import { globalScene } from "#app/global-scene"; +import type UiHandler from "./ui-handler"; import BattleMessageUiHandler from "./battle-message-ui-handler"; import CommandUiHandler from "./command-ui-handler"; import PartyUiHandler from "./party-ui-handler"; @@ -35,7 +35,7 @@ import TitleUiHandler from "./title-ui-handler"; import SavingIconHandler from "./saving-icon-handler"; import UnavailableModalUiHandler from "./unavailable-modal-ui-handler"; import SessionReloadModalUiHandler from "./session-reload-modal-ui-handler"; -import { Button } from "#enums/buttons"; +import type { Button } from "#enums/buttons"; import i18next from "i18next"; import GamepadBindingUiHandler from "./settings/gamepad-binding-ui-handler"; import SettingsKeyboardUiHandler from "#app/ui/settings/settings-keyboard-ui-handler"; @@ -43,7 +43,7 @@ import KeyboardBindingUiHandler from "#app/ui/settings/keyboard-binding-ui-handl import SettingsDisplayUiHandler from "./settings/settings-display-ui-handler"; import SettingsAudioUiHandler from "./settings/settings-audio-ui-handler"; import { PlayerGender } from "#enums/player-gender"; -import BgmBar from "#app/ui/bgm-bar"; +import type BgmBar from "#app/ui/bgm-bar"; import RenameFormUiHandler from "./rename-form-ui-handler"; import AdminUiHandler from "./admin-ui-handler"; import RunHistoryUiHandler from "./run-history-ui-handler"; @@ -156,55 +156,55 @@ export default class UI extends Phaser.GameObjects.Container { private overlayActive: boolean; - constructor(scene: BattleScene) { - super(scene, 0, scene.game.canvas.height / 6); + constructor() { + super(globalScene, 0, globalScene.game.canvas.height / 6); this.mode = Mode.MESSAGE; this.modeChain = []; this.handlers = [ - new BattleMessageUiHandler(scene), - new TitleUiHandler(scene), - new CommandUiHandler(scene), - new FightUiHandler(scene), - new BallUiHandler(scene), - new TargetSelectUiHandler(scene), - new ModifierSelectUiHandler(scene), - new SaveSlotSelectUiHandler(scene), - new PartyUiHandler(scene), - new SummaryUiHandler(scene), - new StarterSelectUiHandler(scene), - new EvolutionSceneHandler(scene), - new EggHatchSceneHandler(scene), - new EggSummaryUiHandler(scene), - new ConfirmUiHandler(scene), - new OptionSelectUiHandler(scene), - new MenuUiHandler(scene), - new OptionSelectUiHandler(scene, Mode.MENU_OPTION_SELECT), + new BattleMessageUiHandler(), + new TitleUiHandler(), + new CommandUiHandler(), + new FightUiHandler(), + new BallUiHandler(), + new TargetSelectUiHandler(), + new ModifierSelectUiHandler(), + new SaveSlotSelectUiHandler(), + new PartyUiHandler(), + new SummaryUiHandler(), + new StarterSelectUiHandler(), + new EvolutionSceneHandler(), + new EggHatchSceneHandler(), + new EggSummaryUiHandler(), + new ConfirmUiHandler(), + new OptionSelectUiHandler(), + new MenuUiHandler(), + new OptionSelectUiHandler(Mode.MENU_OPTION_SELECT), // settings - new SettingsUiHandler(scene), - new SettingsDisplayUiHandler(scene), - new SettingsAudioUiHandler(scene), - new SettingsGamepadUiHandler(scene), - new GamepadBindingUiHandler(scene), - new SettingsKeyboardUiHandler(scene), - new KeyboardBindingUiHandler(scene), - new AchvsUiHandler(scene), - new GameStatsUiHandler(scene), - new EggListUiHandler(scene), - new EggGachaUiHandler(scene), - new LoginFormUiHandler(scene), - new RegistrationFormUiHandler(scene), - new LoadingModalUiHandler(scene), - new SessionReloadModalUiHandler(scene), - new UnavailableModalUiHandler(scene), - new GameChallengesUiHandler(scene), - new RenameFormUiHandler(scene), - new RunHistoryUiHandler(scene), - new RunInfoUiHandler(scene), - new TestDialogueUiHandler(scene, Mode.TEST_DIALOGUE), - new AutoCompleteUiHandler(scene), - new AdminUiHandler(scene), - new MysteryEncounterUiHandler(scene), + new SettingsUiHandler(), + new SettingsDisplayUiHandler(), + new SettingsAudioUiHandler(), + new SettingsGamepadUiHandler(), + new GamepadBindingUiHandler(), + new SettingsKeyboardUiHandler(), + new KeyboardBindingUiHandler(), + new AchvsUiHandler(), + new GameStatsUiHandler(), + new EggListUiHandler(), + new EggGachaUiHandler(), + new LoginFormUiHandler(), + new RegistrationFormUiHandler(), + new LoadingModalUiHandler(), + new SessionReloadModalUiHandler(), + new UnavailableModalUiHandler(), + new GameChallengesUiHandler(), + new RenameFormUiHandler(), + new RunHistoryUiHandler(), + new RunInfoUiHandler(), + new TestDialogueUiHandler(Mode.TEST_DIALOGUE), + new AutoCompleteUiHandler(), + new AdminUiHandler(), + new MysteryEncounterUiHandler(), ]; } @@ -213,38 +213,38 @@ export default class UI extends Phaser.GameObjects.Container { for (const handler of this.handlers) { handler.setup(); } - this.overlay = this.scene.add.rectangle(0, 0, this.scene.game.canvas.width / 6, this.scene.game.canvas.height / 6, 0); + this.overlay = globalScene.add.rectangle(0, 0, globalScene.game.canvas.width / 6, globalScene.game.canvas.height / 6, 0); this.overlay.setName("rect-ui-overlay"); this.overlay.setOrigin(0, 0); - (this.scene as BattleScene).uiContainer.add(this.overlay); + globalScene.uiContainer.add(this.overlay); this.overlay.setVisible(false); this.setupTooltip(); - this.achvBar = new AchvBar(this.scene as BattleScene); + this.achvBar = new AchvBar; this.achvBar.setup(); - (this.scene as BattleScene).uiContainer.add(this.achvBar); + globalScene.uiContainer.add(this.achvBar); - this.savingIcon = new SavingIconHandler(this.scene as BattleScene); + this.savingIcon = new SavingIconHandler; this.savingIcon.setup(); - (this.scene as BattleScene).uiContainer.add(this.savingIcon); + globalScene.uiContainer.add(this.savingIcon); } private setupTooltip() { - this.tooltipContainer = this.scene.add.container(0, 0); + this.tooltipContainer = globalScene.add.container(0, 0); this.tooltipContainer.setName("tooltip"); this.tooltipContainer.setVisible(false); - this.tooltipBg = addWindow(this.scene as BattleScene, 0, 0, 128, 31); + this.tooltipBg = addWindow(0, 0, 128, 31); this.tooltipBg.setName("window-tooltip-bg"); this.tooltipBg.setOrigin(0, 0); - this.tooltipTitle = addTextObject(this.scene, 64, 4, "", TextStyle.TOOLTIP_TITLE); + this.tooltipTitle = addTextObject(64, 4, "", TextStyle.TOOLTIP_TITLE); this.tooltipTitle.setName("text-tooltip-title"); this.tooltipTitle.setOrigin(0.5, 0); - this.tooltipContent = addTextObject(this.scene, 6, 16, "", TextStyle.TOOLTIP_CONTENT); + this.tooltipContent = addTextObject(6, 16, "", TextStyle.TOOLTIP_CONTENT); this.tooltipContent.setName("text-tooltip-content"); this.tooltipContent.setWordWrapWidth(850); @@ -252,7 +252,7 @@ export default class UI extends Phaser.GameObjects.Container { this.tooltipContainer.add(this.tooltipTitle); this.tooltipContainer.add(this.tooltipContent); - (this.scene as BattleScene).uiContainer.add(this.tooltipContainer); + globalScene.uiContainer.add(this.tooltipContainer); } getHandler(): H { @@ -268,12 +268,11 @@ export default class UI extends Phaser.GameObjects.Container { return false; } - const battleScene = this.scene as BattleScene; if ([ Mode.CONFIRM, Mode.COMMAND, Mode.FIGHT, Mode.MESSAGE ].includes(this.mode)) { - battleScene?.processInfoButton(pressed); + globalScene?.processInfoButton(pressed); return true; } - battleScene?.processInfoButton(false); + globalScene?.processInfoButton(false); return true; } @@ -318,11 +317,10 @@ export default class UI extends Phaser.GameObjects.Container { } showDialogue(keyOrText: string, name: string | undefined, delay: integer | null = 0, callback: Function, callbackDelay?: integer, promptDelay?: integer): void { - const battleScene = this.scene as BattleScene; // Get localized dialogue (if available) let hasi18n = false; let text = keyOrText; - const genderIndex = battleScene.gameData.gender ?? PlayerGender.UNSET; + const genderIndex = globalScene.gameData.gender ?? PlayerGender.UNSET; const genderStr = PlayerGender[genderIndex].toLowerCase(); if (i18next.exists(keyOrText) ) { @@ -339,7 +337,7 @@ export default class UI extends Phaser.GameObjects.Container { } } let showMessageAndCallback = () => { - hasi18n && battleScene.gameData.saveSeenDialogue(keyOrText); + hasi18n && globalScene.gameData.saveSeenDialogue(keyOrText); callback(); }; if (text.indexOf("$") > -1) { @@ -360,10 +358,8 @@ export default class UI extends Phaser.GameObjects.Container { } shouldSkipDialogue(i18nKey: string): boolean { - const battleScene = this.scene as BattleScene; - if (i18next.exists(i18nKey) ) { - if (battleScene.skipSeenDialogues && battleScene.gameData.getSeenDialogues()[i18nKey] === true) { + if (globalScene.skipSeenDialogues && globalScene.gameData.getSeenDialogues()[i18nKey] === true) { return true; } } @@ -378,9 +374,9 @@ export default class UI extends Phaser.GameObjects.Container { this.tooltipContainer.setVisible(true); this.editTooltip(title, content); if (overlap) { - (this.scene as BattleScene).uiContainer.moveAbove(this.tooltipContainer, this); + globalScene.uiContainer.moveAbove(this.tooltipContainer, this); } else { - (this.scene as BattleScene).uiContainer.moveBelow(this.tooltipContainer, this); + globalScene.uiContainer.moveBelow(this.tooltipContainer, this); } } @@ -401,9 +397,9 @@ export default class UI extends Phaser.GameObjects.Container { update(): void { if (this.tooltipContainer.visible) { - const isTouch = (this.scene as BattleScene).inputMethod === "touch"; - const pointerX = this.scene.game.input.activePointer.x; - const pointerY = this.scene.game.input.activePointer.y; + const isTouch = globalScene.inputMethod === "touch"; + const pointerX = globalScene.game.input.activePointer.x; + const pointerY = globalScene.game.input.activePointer.y; const tooltipWidth = this.tooltipBg.width; const tooltipHeight = this.tooltipBg.height; const padding = 2; @@ -414,16 +410,16 @@ export default class UI extends Phaser.GameObjects.Container { if (isTouch) { // If we are in the top left quadrant on mobile, move the tooltip to the top right corner - if (pointerX <= this.scene.game.canvas.width / 2 && pointerY <= this.scene.game.canvas.height / 2) { - x = this.scene.game.canvas.width / 6 - tooltipWidth - padding; + if (pointerX <= globalScene.game.canvas.width / 2 && pointerY <= globalScene.game.canvas.height / 2) { + x = globalScene.game.canvas.width / 6 - tooltipWidth - padding; } } else { // If the tooltip would go offscreen on the right, or is close to it, move to the left of the cursor - if (x + tooltipWidth + padding > this.scene.game.canvas.width / 6) { + if (x + tooltipWidth + padding > globalScene.game.canvas.width / 6) { x = Math.max(padding, pointerX / 6 - tooltipWidth - padding); } // If the tooltip would go offscreen at the bottom, or is close to it, move above the cursor - if (y + tooltipHeight + padding > this.scene.game.canvas.height / 6) { + if (y + tooltipHeight + padding > globalScene.game.canvas.height / 6) { y = Math.max(padding, pointerY / 6 - tooltipHeight - padding); } } @@ -451,11 +447,11 @@ export default class UI extends Phaser.GameObjects.Container { } playSelect(): void { - (this.scene as BattleScene).playSound("ui/select"); + globalScene.playSound("ui/select"); } playError(): void { - (this.scene as BattleScene).playSound("ui/error"); + globalScene.playSound("ui/error"); } fadeOut(duration: integer): Promise { @@ -466,7 +462,7 @@ export default class UI extends Phaser.GameObjects.Container { this.overlayActive = true; this.overlay.setAlpha(0); this.overlay.setVisible(true); - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this.overlay, alpha: 1, duration: duration, @@ -481,7 +477,7 @@ export default class UI extends Phaser.GameObjects.Container { if (!this.overlayActive) { return resolve(); } - this.scene.tweens.add({ + globalScene.tweens.add({ targets: this.overlay, alpha: 0, duration: duration, @@ -508,7 +504,7 @@ export default class UI extends Phaser.GameObjects.Container { } if (chainMode && this.mode && !clear) { this.modeChain.push(this.mode); - (this.scene as BattleScene).updateGameInfo(); + globalScene.updateGameInfo(); } this.mode = mode; const touchControls = document?.getElementById("touchControls"); @@ -523,7 +519,7 @@ export default class UI extends Phaser.GameObjects.Container { && (noTransitionModes.indexOf(this.mode) === -1 && noTransitionModes.indexOf(mode) === -1))) || (chainMode && noTransitionModes.indexOf(mode) === -1))) { this.fadeOut(250).then(() => { - this.scene.time.delayedCall(100, () => { + globalScene.time.delayedCall(100, () => { doSetMode(); this.fadeIn(250); }); @@ -556,7 +552,7 @@ export default class UI extends Phaser.GameObjects.Container { resetModeChain(): void { this.modeChain = []; - (this.scene as BattleScene).updateGameInfo(); + globalScene.updateGameInfo(); } revertMode(): Promise { @@ -570,7 +566,7 @@ export default class UI extends Phaser.GameObjects.Container { const doRevertMode = () => { this.getHandler().clear(); this.mode = this.modeChain.pop()!; // TODO: is this bang correct? - (this.scene as BattleScene).updateGameInfo(); + globalScene.updateGameInfo(); const touchControls = document.getElementById("touchControls"); if (touchControls) { touchControls.dataset.uiMode = Mode[this.mode]; @@ -580,7 +576,7 @@ export default class UI extends Phaser.GameObjects.Container { if (noTransitionModes.indexOf(lastMode) === -1) { this.fadeOut(250).then(() => { - this.scene.time.delayedCall(100, () => { + globalScene.time.delayedCall(100, () => { doRevertMode(); this.fadeIn(250); }); @@ -612,11 +608,10 @@ export default class UI extends Phaser.GameObjects.Container { * @returns gamepad type */ public getGamepadType(): string { - const scene = this.scene as BattleScene; - if (scene.inputMethod === "gamepad") { - return scene.inputController.getConfig(scene.inputController.selectedDevice[Device.GAMEPAD]).padType; + if (globalScene.inputMethod === "gamepad") { + return globalScene.inputController.getConfig(globalScene.inputController.selectedDevice[Device.GAMEPAD]).padType; } else { - return scene.inputMethod; + return globalScene.inputMethod; } } } diff --git a/src/ui/unavailable-modal-ui-handler.ts b/src/ui/unavailable-modal-ui-handler.ts index 92b1c2f1b4e..36f1a191b77 100644 --- a/src/ui/unavailable-modal-ui-handler.ts +++ b/src/ui/unavailable-modal-ui-handler.ts @@ -1,10 +1,11 @@ -import BattleScene from "../battle-scene"; -import { ModalConfig, ModalUiHandler } from "./modal-ui-handler"; +import type { ModalConfig } from "./modal-ui-handler"; +import { ModalUiHandler } from "./modal-ui-handler"; import { addTextObject, TextStyle } from "./text"; -import { Mode } from "./ui"; +import type { Mode } from "./ui"; import { updateUserInfo } from "#app/account"; import * as Utils from "#app/utils"; import i18next from "i18next"; +import { globalScene } from "#app/global-scene"; export default class UnavailableModalUiHandler extends ModalUiHandler { private reconnectTimer: NodeJS.Timeout | null; @@ -16,8 +17,8 @@ export default class UnavailableModalUiHandler extends ModalUiHandler { private readonly randVarianceTime = 1000 * 10; - constructor(scene: BattleScene, mode: Mode | null = null) { - super(scene, mode); + constructor(mode: Mode | null = null) { + super(mode); this.reconnectDuration = this.minTime; } @@ -44,7 +45,7 @@ export default class UnavailableModalUiHandler extends ModalUiHandler { setup(): void { super.setup(); - const label = addTextObject(this.scene, this.getWidth() / 2, this.getHeight() / 2, i18next.t("menu:errorServerDown"), TextStyle.WINDOW, { fontSize: "48px", align: "center" }); + const label = addTextObject(this.getWidth() / 2, this.getHeight() / 2, i18next.t("menu:errorServerDown"), TextStyle.WINDOW, { fontSize: "48px", align: "center" }); label.setOrigin(0.5, 0.5); this.modalContainer.add(label); @@ -55,11 +56,11 @@ export default class UnavailableModalUiHandler extends ModalUiHandler { if (response[0] || [ 200, 400 ].includes(response[1])) { this.reconnectTimer = null; this.reconnectDuration = this.minTime; - this.scene.playSound("se/pb_bounce_1"); + globalScene.playSound("se/pb_bounce_1"); this.reconnectCallback(); } else if (response[1] === 401) { Utils.removeCookie(Utils.sessionIdKey); - this.scene.reset(true, true); + globalScene.reset(true, true); } else { this.reconnectDuration = Math.min(this.reconnectDuration * 2, this.maxTime); // Set a max delay so it isn't infinite this.reconnectTimer = From 3a3ebfb783bfe057f2c7d9d96cc030a3c83bcec5 Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Sun, 12 Jan 2025 15:39:06 -0800 Subject: [PATCH 083/119] [Balance] Multi-hit moves now use gen 5+ behavior (#5117) --- src/data/move.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/data/move.ts b/src/data/move.ts index b83b2d06394..54b10a4ab80 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -2236,14 +2236,14 @@ export class MultiHitAttr extends MoveAttr { switch (this.multiHitType) { case MultiHitType._2_TO_5: { - const rand = user.randSeedInt(16); - const hitValue = new Utils.IntegerHolder(rand); + const rand = user.randSeedInt(20); + const hitValue = new Utils.NumberHolder(rand); applyAbAttrs(MaxMultiHitAbAttr, user, null, false, hitValue); - if (hitValue.value >= 10) { + if (hitValue.value >= 13) { return 2; - } else if (hitValue.value >= 4) { + } else if (hitValue.value >= 6) { return 3; - } else if (hitValue.value >= 2) { + } else if (hitValue.value >= 3) { return 4; } else { return 5; From f1e500400ac367ed1415daee61340e0c3d4424aa Mon Sep 17 00:00:00 2001 From: Jimmybald1 <122436263+Jimmybald1@users.noreply.github.com> Date: Tue, 14 Jan 2025 23:45:11 +0100 Subject: [PATCH 084/119] [Balance][Bug] Fix off by one error in Generate random biome and Daily Mode now has its own function (#5121) * [Balance] Allow Island and Laboratory in Generate Random Biome * [Bug] Fix off by one error in Generate Random Biome * [Balance] Daily Mode now has its own Generate Random Starting Biome * [Misc] Filtering out Town and End specifically instead of assuming enum value stays consistent forever --------- Co-authored-by: Jimmybald1 <147992650+IBBCalc@users.noreply.github.com> --- src/battle-scene.ts | 8 ++--- src/data/daily-run.ts | 74 +++++++++++++++++++++++++++++++++++++++++++ src/game-mode.ts | 3 +- 3 files changed, 80 insertions(+), 5 deletions(-) diff --git a/src/battle-scene.ts b/src/battle-scene.ts index 6cc33dc476d..6db9311bac8 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -1865,7 +1865,7 @@ export default class BattleScene extends SceneBase { generateRandomBiome(waveIndex: integer): Biome { const relWave = waveIndex % 250; - const biomes = Utils.getEnumValues(Biome).slice(1, Utils.getEnumValues(Biome).filter(b => b >= 40).length * -1); + const biomes = Utils.getEnumValues(Biome).filter(b => b !== Biome.TOWN && b !== Biome.END); const maxDepth = biomeDepths[Biome.END][0] - 2; const depthWeights = new Array(maxDepth + 1).fill(null) .map((_, i: integer) => ((1 - Math.min(Math.abs((i / (maxDepth - 1)) - (relWave / 250)) + 0.25, 1)) / 0.75) * 250); @@ -1878,9 +1878,9 @@ export default class BattleScene extends SceneBase { const randInt = Utils.randSeedInt(totalWeight); - for (const biome of biomes) { - if (randInt < biomeThresholds[biome]) { - return biome; + for (let i = 0; i < biomes.length; i++) { + if (randInt < biomeThresholds[i]) { + return biomes[i]; } } diff --git a/src/data/daily-run.ts b/src/data/daily-run.ts index b0ce38cebd2..2a4a78a9caf 100644 --- a/src/data/daily-run.ts +++ b/src/data/daily-run.ts @@ -8,6 +8,7 @@ import type { PokemonSpeciesForm } from "#app/data/pokemon-species"; import PokemonSpecies, { getPokemonSpecies, getPokemonSpeciesForm } from "#app/data/pokemon-species"; import { speciesStarterCosts } from "#app/data/balance/starters"; import { pokerogueApi } from "#app/plugins/api/pokerogue-api"; +import { Biome } from "#app/enums/biome"; export interface DailyRunConfig { seed: integer; @@ -71,3 +72,76 @@ function getDailyRunStarter(starterSpeciesForm: PokemonSpeciesForm, startingLeve pokemon.destroy(); return starter; } + +interface BiomeWeights { + [key: integer]: integer +} + +// Initially weighted by amount of exits each biome has +// Town and End are set to 0 however +// And some other biomes were balanced +1/-1 based on average size of the total daily. +const dailyBiomeWeights: BiomeWeights = { + [Biome.CAVE]: 3, + [Biome.LAKE]: 3, + [Biome.PLAINS]: 3, + [Biome.SNOWY_FOREST]: 3, + [Biome.SWAMP]: 3, // 2 -> 3 + [Biome.TALL_GRASS]: 3, // 2 -> 3 + + [Biome.ABYSS]: 2, // 3 -> 2 + [Biome.RUINS]: 2, + [Biome.BADLANDS]: 2, + [Biome.BEACH]: 2, + [Biome.CONSTRUCTION_SITE]: 2, + [Biome.DESERT]: 2, + [Biome.DOJO]: 2, // 3 -> 2 + [Biome.FACTORY]: 2, + [Biome.FAIRY_CAVE]: 2, + [Biome.FOREST]: 2, + [Biome.GRASS]: 2, // 1 -> 2 + [Biome.MEADOW]: 2, + [Biome.MOUNTAIN]: 2, // 3 -> 2 + [Biome.SEA]: 2, + [Biome.SEABED]: 2, + [Biome.SLUM]: 2, + [Biome.TEMPLE]: 2, // 3 -> 2 + [Biome.VOLCANO]: 2, + + [Biome.GRAVEYARD]: 1, + [Biome.ICE_CAVE]: 1, + [Biome.ISLAND]: 1, + [Biome.JUNGLE]: 1, + [Biome.LABORATORY]: 1, + [Biome.METROPOLIS]: 1, + [Biome.POWER_PLANT]: 1, + [Biome.SPACE]: 1, + [Biome.WASTELAND]: 1, + + [Biome.TOWN]: 0, + [Biome.END]: 0, +}; + +export function getDailyStartingBiome(): Biome { + const biomes = Utils.getEnumValues(Biome).filter(b => b !== Biome.TOWN && b !== Biome.END); + + let totalWeight = 0; + const biomeThresholds: integer[] = []; + for (const biome of biomes) { + // Keep track of the total weight + totalWeight += dailyBiomeWeights[biome]; + + // Keep track of each biomes cumulative weight + biomeThresholds.push(totalWeight); + } + + const randInt = Utils.randSeedInt(totalWeight); + + for (let i = 0; i < biomes.length; i++) { + if (randInt < biomeThresholds[i]) { + return biomes[i]; + } + } + + // Fallback in case something went wrong + return biomes[Utils.randSeedInt(biomes.length)]; +} diff --git a/src/game-mode.ts b/src/game-mode.ts index 4e0f5715851..78a65a54890 100644 --- a/src/game-mode.ts +++ b/src/game-mode.ts @@ -12,6 +12,7 @@ import { Biome } from "#enums/biome"; import { Species } from "#enums/species"; import { Challenges } from "./enums/challenges"; import { globalScene } from "#app/global-scene"; +import { getDailyStartingBiome } from "./data/daily-run"; export enum GameModes { CLASSIC, @@ -120,7 +121,7 @@ export class GameMode implements GameModeConfig { getStartingBiome(): Biome { switch (this.modeId) { case GameModes.DAILY: - return globalScene.generateRandomBiome(this.getWaveForDifficulty(1)); + return getDailyStartingBiome(); default: return Overrides.STARTING_BIOME_OVERRIDE || Biome.TOWN; } From 001b61c1c713d4d481904d0cb7af0490f0819824 Mon Sep 17 00:00:00 2001 From: schmidtc1 <62030095+schmidtc1@users.noreply.github.com> Date: Tue, 14 Jan 2025 18:26:35 -0500 Subject: [PATCH 085/119] [Bug][Move] Refactor moves that call a random move (#3380) * Combine moveset from allies and uses it to get a move * Clearer implementation of combining user and teammates' moves * Refactor assist and sleep talk to use metronome's attribute for calling a move * Refactor move filtering in RandomMovesetMoveAttr, creates arrays with invalid moves for assist/sleep talk * Refactor RandomMoveAttr to set moveId in condition, places reused code in callMove in RandomMoveAttr * Correct invalid move lists, adds Max/Z moves to metronome's list * Remove ignoresVirtual from beta merge * Remove Max/Z moves per frutescens' comment * Fix bug with metronome/copycat/assist/sleep talk targeting ally * Experimental async/await to be tested * Refactor other attributes to extend CallMoveAttr * Replace QueuedMove with TurnMove, refactor to attempt two-turn move fix for metronome * Fix Swallow test due to TurnMove refactor * Further fixes for TurnMove refactor * Fix metronome two turn moves for enemy pokemon * Replace nested ternary with if-else block per DayKev's comment * Minor fixes * Adjust command phase args handling * Create metronome test, refactor RandomMoveAttr for easier testing * Add unit test for recharge moves * Refactor Copycat and Mirror Move, adjust move targeting * Add unit test for ally targeting with Aromatic Mist * Add tests for secondary effects and recharge moves for metronome * Add test for Roar, remove test for Acupressure * Create test for Assist * Add test for assist failing * Add sleep talk unit test coverage * Adjust move-phase to better track last move for copycat, write and update unit tests for assist/copycat * Create moveHistory in Battle to track all moves used, adjust mirror move to use this, writes unit tests * Correct mirror move implementation, rewrite unit test to adjust * Add docs to attrs, update assist to only grab allies sets * Update assist unit test to match expected functionality * Update metronome unit test to use getMoveOverride * Update copycat unit test to use metronome getMoveOverride mock * Fix phase interception * Add docs from missed conversations * Update assist tests to use manual moveset overrides Minor fixes to other tests * Remove `export` from `CallMoveAttr` * Add missing `.unimplemented()` to some Max- and Z-Moves --------- Co-authored-by: Tempoanon <163687446+Tempo-anon@users.noreply.github.com> Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> --- src/battle.ts | 14 +- src/data/battler-tags.ts | 2 +- src/data/move.ts | 864 ++++++++++++++++++----------- src/field/pokemon.ts | 35 +- src/phases/command-phase.ts | 28 +- src/phases/move-phase.ts | 15 +- src/test/moves/assist.test.ts | 105 ++++ src/test/moves/copycat.test.ts | 91 +++ src/test/moves/metronome.test.ts | 113 ++++ src/test/moves/mirror_move.test.ts | 84 +++ src/test/moves/sleep_talk.test.ts | 75 +++ src/test/moves/spit_up.test.ts | 6 +- src/test/moves/stockpile.test.ts | 2 +- src/test/moves/swallow.test.ts | 6 +- 14 files changed, 1069 insertions(+), 371 deletions(-) create mode 100644 src/test/moves/assist.test.ts create mode 100644 src/test/moves/copycat.test.ts create mode 100644 src/test/moves/metronome.test.ts create mode 100644 src/test/moves/mirror_move.test.ts create mode 100644 src/test/moves/sleep_talk.test.ts diff --git a/src/battle.ts b/src/battle.ts index 6dae845bfe1..b1196bb0139 100644 --- a/src/battle.ts +++ b/src/battle.ts @@ -7,7 +7,7 @@ import { MoneyMultiplierModifier, PokemonHeldItemModifier } from "./modifier/mod import type { PokeballType } from "#enums/pokeball"; import { trainerConfigs } from "#app/data/trainer-config"; import { SpeciesFormKey } from "#enums/species-form-key"; -import type { EnemyPokemon, PlayerPokemon, QueuedMove } from "#app/field/pokemon"; +import type { EnemyPokemon, PlayerPokemon, TurnMove } from "#app/field/pokemon"; import type Pokemon from "#app/field/pokemon"; import { ArenaTagType } from "#enums/arena-tag-type"; import { BattleSpec } from "#enums/battle-spec"; @@ -45,12 +45,12 @@ export enum BattlerIndex { } export interface TurnCommand { - command: Command; - cursor?: number; - move?: QueuedMove; - targets?: BattlerIndex[]; - skip?: boolean; - args?: any[]; + command: Command; + cursor?: number; + move?: TurnMove; + targets?: BattlerIndex[]; + skip?: boolean; + args?: any[]; } export interface FaintLogEntry { diff --git a/src/data/battler-tags.ts b/src/data/battler-tags.ts index 2743c36e7b5..3a58ff4a99d 100644 --- a/src/data/battler-tags.ts +++ b/src/data/battler-tags.ts @@ -612,7 +612,7 @@ export class InterruptedTag extends BattlerTag { super.onAdd(pokemon); pokemon.getMoveQueue().shift(); - pokemon.pushMoveHistory({ move: Moves.NONE, result: MoveResult.OTHER }); + pokemon.pushMoveHistory({ move: Moves.NONE, result: MoveResult.OTHER, targets: []}); } lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { diff --git a/src/data/move.ts b/src/data/move.ts index 54b10a4ab80..f3a1f3aa119 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -87,7 +87,6 @@ export enum MoveFlags { NONE = 0, MAKES_CONTACT = 1 << 0, IGNORE_PROTECT = 1 << 1, - IGNORE_VIRTUAL = 1 << 2, /** * Sound-based moves have the following effects: * - Pokemon with the {@linkcode Abilities.SOUNDPROOF Soundproof Ability} are unaffected by other Pokemon's sound-based moves. @@ -98,35 +97,35 @@ export enum MoveFlags { * * cf https://bulbapedia.bulbagarden.net/wiki/Sound-based_move */ - SOUND_BASED = 1 << 3, - HIDE_USER = 1 << 4, - HIDE_TARGET = 1 << 5, - BITING_MOVE = 1 << 6, - PULSE_MOVE = 1 << 7, - PUNCHING_MOVE = 1 << 8, - SLICING_MOVE = 1 << 9, + SOUND_BASED = 1 << 2, + HIDE_USER = 1 << 3, + HIDE_TARGET = 1 << 4, + BITING_MOVE = 1 << 5, + PULSE_MOVE = 1 << 6, + PUNCHING_MOVE = 1 << 7, + SLICING_MOVE = 1 << 8, /** * Indicates a move should be affected by {@linkcode Abilities.RECKLESS} * @see {@linkcode Move.recklessMove()} */ - RECKLESS_MOVE = 1 << 10, + RECKLESS_MOVE = 1 << 9, /** Indicates a move should be affected by {@linkcode Abilities.BULLETPROOF} */ - BALLBOMB_MOVE = 1 << 11, + BALLBOMB_MOVE = 1 << 10, /** Grass types and pokemon with {@linkcode Abilities.OVERCOAT} are immune to powder moves */ - POWDER_MOVE = 1 << 12, + POWDER_MOVE = 1 << 11, /** Indicates a move should trigger {@linkcode Abilities.DANCER} */ - DANCE_MOVE = 1 << 13, + DANCE_MOVE = 1 << 12, /** Indicates a move should trigger {@linkcode Abilities.WIND_RIDER} */ - WIND_MOVE = 1 << 14, + WIND_MOVE = 1 << 13, /** Indicates a move should trigger {@linkcode Abilities.TRIAGE} */ - TRIAGE_MOVE = 1 << 15, - IGNORE_ABILITIES = 1 << 16, + TRIAGE_MOVE = 1 << 14, + IGNORE_ABILITIES = 1 << 15, /** Enables all hits of a multi-hit move to be accuracy checked individually */ - CHECK_ALL_HITS = 1 << 17, + CHECK_ALL_HITS = 1 << 16, /** Indicates a move is able to bypass its target's Substitute (if the target has one) */ - IGNORE_SUBSTITUTE = 1 << 18, + IGNORE_SUBSTITUTE = 1 << 17, /** Indicates a move is able to be redirected to allies in a double battle if the attacker faints */ - REDIRECT_COUNTER = 1 << 19, + REDIRECT_COUNTER = 1 << 18, } type MoveConditionFunc = (user: Pokemon, target: Pokemon, move: Move) => boolean; @@ -441,16 +440,6 @@ export default class Move implements Localizable { return this; } - /** - * Sets the {@linkcode MoveFlags.IGNORE_VIRTUAL} flag for the calling Move - * @see {@linkcode Moves.NATURE_POWER} - * @returns The {@linkcode Move} that called this function - */ - ignoresVirtual(): this { - this.setFlag(MoveFlags.IGNORE_VIRTUAL, true); - return this; - } - /** * Sets the {@linkcode MoveFlags.SOUND_BASED} flag for the calling Move * @see {@linkcode Moves.UPROAR} @@ -1552,7 +1541,7 @@ export class RecoilAttr extends MoveEffectAttr { } // Chloroblast and Struggle should not deal recoil damage if the move was not successful - if (this.useHp && [ MoveResult.FAIL, MoveResult.MISS ].includes(user.getLastXMoves(1)[0]?.result)) { + if (this.useHp && [ MoveResult.FAIL, MoveResult.MISS ].includes(user.getLastXMoves(1)[0]?.result ?? MoveResult.FAIL)) { return false; } @@ -6483,52 +6472,46 @@ export class FirstMoveTypeAttr extends MoveEffectAttr { } } -export class RandomMovesetMoveAttr extends OverrideMoveEffectAttr { - private enemyMoveset: boolean | null; - - constructor(enemyMoveset?: boolean) { - super(); - - this.enemyMoveset = enemyMoveset!; // TODO: is this bang correct? - } - - apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { - const moveset = (!this.enemyMoveset ? user : target).getMoveset(); - const moves = moveset.filter(m => !m?.getMove().hasFlag(MoveFlags.IGNORE_VIRTUAL)); - if (moves.length) { - const move = moves[user.randSeedInt(moves.length)]; - const moveIndex = moveset.findIndex(m => m?.moveId === move?.moveId); - const moveTargets = getMoveTargets(user, move?.moveId!); // TODO: is this bang correct? - if (!moveTargets.targets.length) { - return false; - } - let selectTargets: BattlerIndex[]; - switch (true) { - case (moveTargets.multiple || moveTargets.targets.length === 1): { - selectTargets = moveTargets.targets; - break; - } - case (moveTargets.targets.indexOf(target.getBattlerIndex()) > -1): { - selectTargets = [ target.getBattlerIndex() ]; - break; - } - default: { - moveTargets.targets.splice(moveTargets.targets.indexOf(user.getAlly().getBattlerIndex())); - selectTargets = [ moveTargets.targets[user.randSeedInt(moveTargets.targets.length)] ]; - break; - } - } - const targets = selectTargets; - user.getMoveQueue().push({ move: move?.moveId!, targets: targets, ignorePP: true }); // TODO: is this bang correct? - globalScene.unshiftPhase(new MovePhase(user, targets, moveset[moveIndex]!, true)); // There's a PR to re-do the move(s) that use this Attr, gonna put `!` for now - return true; +/** + * Attribute used to call a move. + * Used by other move attributes: {@linkcode RandomMoveAttr}, {@linkcode RandomMovesetMoveAttr}, {@linkcode CopyMoveAttr} + * @see {@linkcode apply} for move call + * @extends OverrideMoveEffectAttr + */ +class CallMoveAttr extends OverrideMoveEffectAttr { + protected invalidMoves: Moves[]; + protected hasTarget: boolean; + async apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): Promise { + const replaceMoveTarget = move.moveTarget === MoveTarget.NEAR_OTHER ? MoveTarget.NEAR_ENEMY : undefined; + const moveTargets = getMoveTargets(user, move.id, replaceMoveTarget); + if (moveTargets.targets.length === 0) { + return false; } + const targets = moveTargets.multiple || moveTargets.targets.length === 1 + ? moveTargets.targets + : [ this.hasTarget ? target.getBattlerIndex() : moveTargets.targets[user.randSeedInt(moveTargets.targets.length)] ]; // account for Mirror Move having a target already + user.getMoveQueue().push({ move: move.id, targets: targets, virtual: true, ignorePP: true }); + globalScene.unshiftPhase(new MovePhase(user, targets, new PokemonMove(move.id, 0, 0, true), true, true)); - return false; + await Promise.resolve(initMoveAnim(move.id).then(() => { + loadMoveAnimAssets([ move.id ], true); + })); + return true; } } -export class RandomMoveAttr extends OverrideMoveEffectAttr { +/** + * Attribute used to call a random move. + * Used for {@linkcode Moves.METRONOME} + * @see {@linkcode apply} for move selection and move call + * @extends CallMoveAttr to call a selected move + */ +export class RandomMoveAttr extends CallMoveAttr { + constructor(invalidMoves: Moves[]) { + super(); + this.invalidMoves = invalidMoves; + } + /** * This function exists solely to allow tests to override the randomly selected move by mocking this function. */ @@ -6536,31 +6519,353 @@ export class RandomMoveAttr extends OverrideMoveEffectAttr { return null; } + /** + * User calls a random moveId. + * + * Invalid moves are indicated by what is passed in to invalidMoves: {@linkcode invalidMetronomeMoves} + * @param user Pokemon that used the move and will call a random move + * @param target Pokemon that will be targeted by the random move (if single target) + * @param move Move being used + * @param args Unused + */ apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): Promise { - return new Promise(resolve => { - const moveIds = Utils.getEnumValues(Moves).filter(m => !allMoves[m].hasFlag(MoveFlags.IGNORE_VIRTUAL) && !allMoves[m].name.endsWith(" (N)")); - const moveId = this.getMoveOverride() ?? moveIds[user.randSeedInt(moveIds.length)]; - - const moveTargets = getMoveTargets(user, moveId); - if (!moveTargets.targets.length) { - resolve(false); - return; - } - const targets = moveTargets.multiple || moveTargets.targets.length === 1 - ? moveTargets.targets - : moveTargets.targets.indexOf(target.getBattlerIndex()) > -1 - ? [ target.getBattlerIndex() ] - : [ moveTargets.targets[user.randSeedInt(moveTargets.targets.length)] ]; - user.getMoveQueue().push({ move: moveId, targets: targets, ignorePP: true }); - globalScene.unshiftPhase(new MovePhase(user, targets, new PokemonMove(moveId, 0, 0, true), true)); - initMoveAnim(moveId).then(() => { - loadMoveAnimAssets([ moveId ], true) - .then(() => resolve(true)); - }); - }); + const moveIds = Utils.getEnumValues(Moves).map(m => !this.invalidMoves.includes(m) && !allMoves[m].name.endsWith(" (N)") ? m : Moves.NONE); + let moveId: Moves = Moves.NONE; + do { + moveId = this.getMoveOverride() ?? moveIds[user.randSeedInt(moveIds.length)]; + } + while (moveId === Moves.NONE); + return super.apply(user, target, allMoves[moveId], args); } } +/** + * Attribute used to call a random move in the user or party's moveset. + * Used for {@linkcode Moves.ASSIST} and {@linkcode Moves.SLEEP_TALK} + * + * Fails if the user has no callable moves. + * + * Invalid moves are indicated by what is passed in to invalidMoves: {@linkcode invalidAssistMoves} or {@linkcode invalidSleepTalkMoves} + * @extends RandomMoveAttr to use the callMove function on a moveId + * @see {@linkcode getCondition} for move selection + */ +export class RandomMovesetMoveAttr extends CallMoveAttr { + private includeParty: boolean; + private moveId: number; + constructor(invalidMoves: Moves[], includeParty: boolean = false) { + super(); + this.includeParty = includeParty; + this.invalidMoves = invalidMoves; + } + + /** + * User calls a random moveId selected in {@linkcode getCondition} + * @param user Pokemon that used the move and will call a random move + * @param target Pokemon that will be targeted by the random move (if single target) + * @param move Move being used + * @param args Unused + */ + apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): Promise { + return super.apply(user, target, allMoves[this.moveId], args); + } + + getCondition(): MoveConditionFunc { + return (user, target, move) => { + // includeParty will be true for Assist, false for Sleep Talk + let allies: Pokemon[]; + if (this.includeParty) { + allies = user.isPlayer() ? globalScene.getPlayerParty().filter(p => p !== user) : globalScene.getEnemyParty().filter(p => p !== user); + } else { + allies = [ user ]; + } + const partyMoveset = allies.map(p => p.moveset).flat(); + const moves = partyMoveset.filter(m => !this.invalidMoves.includes(m!.moveId) && !m!.getMove().name.endsWith(" (N)")); + if (moves.length === 0) { + return false; + } + + this.moveId = moves[user.randSeedInt(moves.length)]!.moveId; + return true; + }; + } +} + +const invalidMetronomeMoves: Moves[] = [ + Moves.AFTER_YOU, + Moves.APPLE_ACID, + Moves.ARMOR_CANNON, + Moves.ASSIST, + Moves.ASTRAL_BARRAGE, + Moves.AURA_WHEEL, + Moves.BANEFUL_BUNKER, + Moves.BEAK_BLAST, + Moves.BEHEMOTH_BASH, + Moves.BEHEMOTH_BLADE, + Moves.BELCH, + Moves.BESTOW, + Moves.BLAZING_TORQUE, + Moves.BODY_PRESS, + Moves.BRANCH_POKE, + Moves.BREAKING_SWIPE, + Moves.CELEBRATE, + Moves.CHATTER, + Moves.CHILLING_WATER, + Moves.CHILLY_RECEPTION, + Moves.CLANGOROUS_SOUL, + Moves.COLLISION_COURSE, + Moves.COMBAT_TORQUE, + Moves.COMEUPPANCE, + Moves.COPYCAT, + Moves.COUNTER, + Moves.COVET, + Moves.CRAFTY_SHIELD, + Moves.DECORATE, + Moves.DESTINY_BOND, + Moves.DETECT, + Moves.DIAMOND_STORM, + Moves.DOODLE, + Moves.DOUBLE_IRON_BASH, + Moves.DOUBLE_SHOCK, + Moves.DRAGON_ASCENT, + Moves.DRAGON_ENERGY, + Moves.DRUM_BEATING, + Moves.DYNAMAX_CANNON, + Moves.ELECTRO_DRIFT, + Moves.ENDURE, + Moves.ETERNABEAM, + Moves.FALSE_SURRENDER, + Moves.FEINT, + Moves.FIERY_WRATH, + Moves.FILLET_AWAY, + Moves.FLEUR_CANNON, + Moves.FOCUS_PUNCH, + Moves.FOLLOW_ME, + Moves.FREEZE_SHOCK, + Moves.FREEZING_GLARE, + Moves.GLACIAL_LANCE, + Moves.GRAV_APPLE, + Moves.HELPING_HAND, + Moves.HOLD_HANDS, + Moves.HYPER_DRILL, + Moves.HYPERSPACE_FURY, + Moves.HYPERSPACE_HOLE, + Moves.ICE_BURN, + Moves.INSTRUCT, + Moves.JET_PUNCH, + Moves.JUNGLE_HEALING, + Moves.KINGS_SHIELD, + Moves.LIFE_DEW, + Moves.LIGHT_OF_RUIN, + Moves.MAKE_IT_RAIN, + Moves.MAGICAL_TORQUE, + Moves.MAT_BLOCK, + Moves.ME_FIRST, + Moves.METEOR_ASSAULT, + Moves.METRONOME, + Moves.MIMIC, + Moves.MIND_BLOWN, + Moves.MIRROR_COAT, + Moves.MIRROR_MOVE, + Moves.MOONGEIST_BEAM, + Moves.NATURE_POWER, + Moves.NATURES_MADNESS, + Moves.NOXIOUS_TORQUE, + Moves.OBSTRUCT, + Moves.ORDER_UP, + Moves.ORIGIN_PULSE, + Moves.OVERDRIVE, + Moves.PHOTON_GEYSER, + Moves.PLASMA_FISTS, + Moves.POPULATION_BOMB, + Moves.POUNCE, + Moves.POWER_SHIFT, + Moves.PRECIPICE_BLADES, + Moves.PROTECT, + Moves.PYRO_BALL, + Moves.QUASH, + Moves.QUICK_GUARD, + Moves.RAGE_FIST, + Moves.RAGE_POWDER, + Moves.RAGING_BULL, + Moves.RAGING_FURY, + Moves.RELIC_SONG, + Moves.REVIVAL_BLESSING, + Moves.RUINATION, + Moves.SALT_CURE, + Moves.SECRET_SWORD, + Moves.SHED_TAIL, + Moves.SHELL_TRAP, + Moves.SILK_TRAP, + Moves.SKETCH, + Moves.SLEEP_TALK, + Moves.SNAP_TRAP, + Moves.SNARL, + Moves.SNATCH, + Moves.SNORE, + Moves.SNOWSCAPE, + Moves.SPECTRAL_THIEF, + Moves.SPICY_EXTRACT, + Moves.SPIKY_SHIELD, + Moves.SPIRIT_BREAK, + Moves.SPOTLIGHT, + Moves.STEAM_ERUPTION, + Moves.STEEL_BEAM, + Moves.STRANGE_STEAM, + Moves.STRUGGLE, + Moves.SUNSTEEL_STRIKE, + Moves.SURGING_STRIKES, + Moves.SWITCHEROO, + Moves.TECHNO_BLAST, + Moves.TERA_STARSTORM, + Moves.THIEF, + Moves.THOUSAND_ARROWS, + Moves.THOUSAND_WAVES, + Moves.THUNDER_CAGE, + Moves.THUNDEROUS_KICK, + Moves.TIDY_UP, + Moves.TRAILBLAZE, + Moves.TRANSFORM, + Moves.TRICK, + Moves.TWIN_BEAM, + Moves.V_CREATE, + Moves.WICKED_BLOW, + Moves.WICKED_TORQUE, + Moves.WIDE_GUARD, +]; + +const invalidAssistMoves: Moves[] = [ + Moves.ASSIST, + Moves.BANEFUL_BUNKER, + Moves.BEAK_BLAST, + Moves.BELCH, + Moves.BESTOW, + Moves.BOUNCE, + Moves.CELEBRATE, + Moves.CHATTER, + Moves.CIRCLE_THROW, + Moves.COPYCAT, + Moves.COUNTER, + Moves.COVET, + Moves.DESTINY_BOND, + Moves.DETECT, + Moves.DIG, + Moves.DIVE, + Moves.DRAGON_TAIL, + Moves.ENDURE, + Moves.FEINT, + Moves.FLY, + Moves.FOCUS_PUNCH, + Moves.FOLLOW_ME, + Moves.HELPING_HAND, + Moves.HOLD_HANDS, + Moves.KINGS_SHIELD, + Moves.MAT_BLOCK, + Moves.ME_FIRST, + Moves.METRONOME, + Moves.MIMIC, + Moves.MIRROR_COAT, + Moves.MIRROR_MOVE, + Moves.NATURE_POWER, + Moves.PHANTOM_FORCE, + Moves.PROTECT, + Moves.RAGE_POWDER, + Moves.ROAR, + Moves.SHADOW_FORCE, + Moves.SHELL_TRAP, + Moves.SKETCH, + Moves.SKY_DROP, + Moves.SLEEP_TALK, + Moves.SNATCH, + Moves.SPIKY_SHIELD, + Moves.SPOTLIGHT, + Moves.STRUGGLE, + Moves.SWITCHEROO, + Moves.THIEF, + Moves.TRANSFORM, + Moves.TRICK, + Moves.WHIRLWIND, +]; + +const invalidSleepTalkMoves: Moves[] = [ + Moves.ASSIST, + Moves.BELCH, + Moves.BEAK_BLAST, + Moves.BIDE, + Moves.BOUNCE, + Moves.COPYCAT, + Moves.DIG, + Moves.DIVE, + Moves.DYNAMAX_CANNON, + Moves.FREEZE_SHOCK, + Moves.FLY, + Moves.FOCUS_PUNCH, + Moves.GEOMANCY, + Moves.ICE_BURN, + Moves.ME_FIRST, + Moves.METRONOME, + Moves.MIRROR_MOVE, + Moves.MIMIC, + Moves.PHANTOM_FORCE, + Moves.RAZOR_WIND, + Moves.SHADOW_FORCE, + Moves.SHELL_TRAP, + Moves.SKETCH, + Moves.SKULL_BASH, + Moves.SKY_ATTACK, + Moves.SKY_DROP, + Moves.SLEEP_TALK, + Moves.SOLAR_BLADE, + Moves.SOLAR_BEAM, + Moves.STRUGGLE, + Moves.UPROAR, +]; + +const invalidCopycatMoves = [ + Moves.ASSIST, + Moves.BANEFUL_BUNKER, + Moves.BEAK_BLAST, + Moves.BEHEMOTH_BASH, + Moves.BEHEMOTH_BLADE, + Moves.BESTOW, + Moves.CELEBRATE, + Moves.CHATTER, + Moves.CIRCLE_THROW, + Moves.COPYCAT, + Moves.COUNTER, + Moves.COVET, + Moves.DESTINY_BOND, + Moves.DETECT, + Moves.DRAGON_TAIL, + Moves.ENDURE, + Moves.FEINT, + Moves.FOCUS_PUNCH, + Moves.FOLLOW_ME, + Moves.HELPING_HAND, + Moves.HOLD_HANDS, + Moves.KINGS_SHIELD, + Moves.MAT_BLOCK, + Moves.ME_FIRST, + Moves.METRONOME, + Moves.MIMIC, + Moves.MIRROR_COAT, + Moves.MIRROR_MOVE, + Moves.PROTECT, + Moves.RAGE_POWDER, + Moves.ROAR, + Moves.SHELL_TRAP, + Moves.SKETCH, + Moves.SLEEP_TALK, + Moves.SNATCH, + Moves.SPIKY_SHIELD, + Moves.SPOTLIGHT, + Moves.STRUGGLE, + Moves.SWITCHEROO, + Moves.THIEF, + Moves.TRANSFORM, + Moves.TRICK, + Moves.WHIRLWIND, +]; + export class NaturePowerAttr extends OverrideMoveEffectAttr { apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): Promise { return new Promise(resolve => { @@ -6704,45 +7009,35 @@ export class NaturePowerAttr extends OverrideMoveEffectAttr { } } -const lastMoveCopiableCondition: MoveConditionFunc = (user, target, move) => { - const copiableMove = globalScene.currentBattle.lastMove; - - if (!copiableMove) { - return false; +/** + * Attribute used to copy a previously-used move. + * Used for {@linkcode Moves.COPYCAT} and {@linkcode Moves.MIRROR_MOVE} + * @see {@linkcode apply} for move selection and move call + * @extends CallMoveAttr to call a selected move + */ +export class CopyMoveAttr extends CallMoveAttr { + private mirrorMove: boolean; + constructor(mirrorMove: boolean, invalidMoves: Moves[] = []) { + super(); + this.mirrorMove = mirrorMove; + this.invalidMoves = invalidMoves; } - if (allMoves[copiableMove].isChargingMove()) { - return false; - } - - // TODO: Add last turn of Bide - - return true; -}; - -export class CopyMoveAttr extends OverrideMoveEffectAttr { - apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { - const lastMove = globalScene.currentBattle.lastMove; - - const moveTargets = getMoveTargets(user, lastMove); - if (!moveTargets.targets.length) { - return false; - } - - const targets = moveTargets.multiple || moveTargets.targets.length === 1 - ? moveTargets.targets - : moveTargets.targets.indexOf(target.getBattlerIndex()) > -1 - ? [ target.getBattlerIndex() ] - : [ moveTargets.targets[user.randSeedInt(moveTargets.targets.length)] ]; - user.getMoveQueue().push({ move: lastMove, targets: targets, ignorePP: true }); - - globalScene.unshiftPhase(new MovePhase(user as PlayerPokemon, targets, new PokemonMove(lastMove, 0, 0, true), true)); - - return true; + apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): Promise { + this.hasTarget = this.mirrorMove; + const lastMove = this.mirrorMove ? target.getLastXMoves()[0].move : globalScene.currentBattle.lastMove; + return super.apply(user, target, allMoves[lastMove], args); } getCondition(): MoveConditionFunc { - return lastMoveCopiableCondition; + return (user, target, move) => { + if (this.mirrorMove) { + return target.getMoveHistory().length !== 0; + } else { + const lastMove = globalScene.currentBattle.lastMove; + return lastMove !== undefined && !this.invalidMoves.includes(lastMove); + } + }; } } @@ -7896,11 +8191,20 @@ export type MoveTargetSet = { multiple: boolean; }; -export function getMoveTargets(user: Pokemon, move: Moves): MoveTargetSet { +export function getMoveTargets(user: Pokemon, move: Moves, replaceTarget?: MoveTarget): MoveTargetSet { const variableTarget = new Utils.NumberHolder(0); user.getOpponents().forEach(p => applyMoveAttrs(VariableTargetAttr, user, p, allMoves[move], variableTarget)); - const moveTarget = allMoves[move].hasAttr(VariableTargetAttr) ? variableTarget.value : move ? allMoves[move].moveTarget : move === undefined ? MoveTarget.NEAR_ENEMY : []; + let moveTarget: MoveTarget | undefined; + if (allMoves[move].hasAttr(VariableTargetAttr)) { + moveTarget = variableTarget.value; + } else if (replaceTarget !== undefined) { + moveTarget = replaceTarget; + } else if (move) { + moveTarget = allMoves[move].moveTarget; + } else if (move === undefined) { + moveTarget = MoveTarget.NEAR_ENEMY; + } const opponents = user.getOpponents(); let set: Pokemon[] = []; @@ -7992,7 +8296,6 @@ export function initMoves() { .chargeText(i18next.t("moveTriggers:whippedUpAWhirlwind", { pokemonName: "{USER}" })) .attr(HighCritAttr) .windMove() - .ignoresVirtual() .target(MoveTarget.ALL_NEAR_ENEMIES), new SelfStatusMove(Moves.SWORDS_DANCE, Type.NORMAL, -1, 20, -1, 0, 1) .attr(StatStageChangeAttr, [ Stat.ATK ], 2, true) @@ -8011,8 +8314,7 @@ export function initMoves() { new ChargingAttackMove(Moves.FLY, Type.FLYING, MoveCategory.PHYSICAL, 90, 95, 15, -1, 0, 1) .chargeText(i18next.t("moveTriggers:flewUpHigh", { pokemonName: "{USER}" })) .chargeAttr(SemiInvulnerableAttr, BattlerTagType.FLYING) - .condition(failOnGravityCondition) - .ignoresVirtual(), + .condition(failOnGravityCondition), new AttackMove(Moves.BIND, Type.NORMAL, MoveCategory.PHYSICAL, 15, 85, 20, -1, 0, 1) .attr(TrapAttr, BattlerTagType.BIND), new AttackMove(Moves.SLAM, Type.NORMAL, MoveCategory.PHYSICAL, 80, 75, 20, -1, 0, 1), @@ -8161,8 +8463,7 @@ export function initMoves() { new ChargingAttackMove(Moves.SOLAR_BEAM, Type.GRASS, MoveCategory.SPECIAL, 120, 100, 10, -1, 0, 1) .chargeText(i18next.t("moveTriggers:tookInSunlight", { pokemonName: "{USER}" })) .chargeAttr(WeatherInstantChargeAttr, [ WeatherType.SUNNY, WeatherType.HARSH_SUN ]) - .attr(AntiSunlightPowerDecreaseAttr) - .ignoresVirtual(), + .attr(AntiSunlightPowerDecreaseAttr), new StatusMove(Moves.POISON_POWDER, Type.POISON, 75, 35, -1, 0, 1) .attr(StatusEffectAttr, StatusEffect.POISON) .powderMove(), @@ -8211,8 +8512,7 @@ export function initMoves() { .makesContact(false), new ChargingAttackMove(Moves.DIG, Type.GROUND, MoveCategory.PHYSICAL, 80, 100, 10, -1, 0, 1) .chargeText(i18next.t("moveTriggers:dugAHole", { pokemonName: "{USER}" })) - .chargeAttr(SemiInvulnerableAttr, BattlerTagType.UNDERGROUND) - .ignoresVirtual(), + .chargeAttr(SemiInvulnerableAttr, BattlerTagType.UNDERGROUND), new StatusMove(Moves.TOXIC, Type.POISON, 90, 10, -1, 0, 1) .attr(StatusEffectAttr, StatusEffect.TOXIC) .attr(ToxicAccuracyAttr), @@ -8236,8 +8536,7 @@ export function initMoves() { .attr(LevelDamageAttr), new StatusMove(Moves.MIMIC, Type.NORMAL, -1, 10, -1, 0, 1) .attr(MovesetCopyMoveAttr) - .ignoresSubstitute() - .ignoresVirtual(), + .ignoresSubstitute(), new StatusMove(Moves.SCREECH, Type.NORMAL, 85, 40, -1, 0, 1) .attr(StatStageChangeAttr, [ Stat.DEF ], -2) .soundBased(), @@ -8273,15 +8572,12 @@ export function initMoves() { new SelfStatusMove(Moves.FOCUS_ENERGY, Type.NORMAL, -1, 30, -1, 0, 1) .attr(AddBattlerTagAttr, BattlerTagType.CRIT_BOOST, true, true), new AttackMove(Moves.BIDE, Type.NORMAL, MoveCategory.PHYSICAL, -1, -1, 10, -1, 1, 1) - .ignoresVirtual() .target(MoveTarget.USER) .unimplemented(), new SelfStatusMove(Moves.METRONOME, Type.NORMAL, -1, 10, -1, 0, 1) - .attr(RandomMoveAttr) - .ignoresVirtual(), + .attr(RandomMoveAttr, invalidMetronomeMoves), new StatusMove(Moves.MIRROR_MOVE, Type.FLYING, -1, 20, -1, 0, 1) - .attr(CopyMoveAttr) - .ignoresVirtual(), + .attr(CopyMoveAttr, true), new AttackMove(Moves.SELF_DESTRUCT, Type.NORMAL, MoveCategory.PHYSICAL, 200, 100, 5, -1, 0, 1) .attr(SacrificialAttr) .makesContact(false) @@ -8309,8 +8605,7 @@ export function initMoves() { .target(MoveTarget.ALL_NEAR_ENEMIES), new ChargingAttackMove(Moves.SKULL_BASH, Type.NORMAL, MoveCategory.PHYSICAL, 130, 100, 10, -1, 0, 1) .chargeText(i18next.t("moveTriggers:loweredItsHead", { pokemonName: "{USER}" })) - .chargeAttr(StatStageChangeAttr, [ Stat.DEF ], 1, true) - .ignoresVirtual(), + .chargeAttr(StatStageChangeAttr, [ Stat.DEF ], 1, true), new AttackMove(Moves.SPIKE_CANNON, Type.NORMAL, MoveCategory.PHYSICAL, 20, 100, 15, -1, 0, 1) .attr(MultiHitAttr) .makesContact(false), @@ -8350,8 +8645,7 @@ export function initMoves() { .chargeText(i18next.t("moveTriggers:isGlowing", { pokemonName: "{USER}" })) .attr(HighCritAttr) .attr(FlinchAttr) - .makesContact(false) - .ignoresVirtual(), + .makesContact(false), new StatusMove(Moves.TRANSFORM, Type.NORMAL, -1, 10, -1, 0, 1) .attr(TransformAttr) // transforming from or into fusion pokemon causes various problems (such as crashes) @@ -8414,12 +8708,10 @@ export function initMoves() { new AttackMove(Moves.STRUGGLE, Type.NORMAL, MoveCategory.PHYSICAL, 50, -1, 1, -1, 0, 1) .attr(RecoilAttr, true, 0.25, true) .attr(TypelessAttr) - .ignoresVirtual() .target(MoveTarget.RANDOM_NEAR_ENEMY), new StatusMove(Moves.SKETCH, Type.NORMAL, -1, 1, -1, 0, 2) .ignoresSubstitute() - .attr(SketchAttr) - .ignoresVirtual(), + .attr(SketchAttr), new AttackMove(Moves.TRIPLE_KICK, Type.FIGHTING, MoveCategory.PHYSICAL, 10, 90, 10, -1, 0, 2) .attr(MultiHitAttr, MultiHitType._3) .attr(MultiHitPowerIncrementAttr, 3) @@ -8572,10 +8864,9 @@ export function initMoves() { .condition((user, target, move) => user.isOppositeGender(target)), new SelfStatusMove(Moves.SLEEP_TALK, Type.NORMAL, -1, 10, -1, 0, 2) .attr(BypassSleepAttr) - .attr(RandomMovesetMoveAttr) + .attr(RandomMovesetMoveAttr, invalidSleepTalkMoves, false) .condition(userSleptOrComatoseCondition) - .target(MoveTarget.ALL_ENEMIES) - .ignoresVirtual(), + .target(MoveTarget.NEAR_ENEMY), new StatusMove(Moves.HEAL_BELL, Type.NORMAL, -1, 5, -1, 0, 2) .attr(PartyStatusCureAttr, i18next.t("moveTriggers:bellChimed"), Abilities.SOUNDPROOF) .soundBased() @@ -8700,7 +8991,6 @@ export function initMoves() { .attr(FlinchAttr) .condition(new FirstMoveCondition()), new AttackMove(Moves.UPROAR, Type.NORMAL, MoveCategory.SPECIAL, 90, 100, 10, -1, 0, 3) - .ignoresVirtual() .soundBased() .target(MoveTarget.RANDOM_NEAR_ENEMY) .partial(), // Does not lock the user, does not stop Pokemon from sleeping @@ -8743,7 +9033,6 @@ export function initMoves() { new AttackMove(Moves.FOCUS_PUNCH, Type.FIGHTING, MoveCategory.PHYSICAL, 150, 100, 20, -1, -3, 3) .attr(MessageHeaderAttr, (user, move) => i18next.t("moveTriggers:isTighteningFocus", { pokemonName: getPokemonNameWithAffix(user) })) .punchingMove() - .ignoresVirtual() .condition((user, target, move) => !user.turnData.attacksReceived.find(r => r.damage)), new AttackMove(Moves.SMELLING_SALTS, Type.NORMAL, MoveCategory.PHYSICAL, 70, 100, 10, -1, 0, 3) .attr(MovePowerMultiplierAttr, (user, target, move) => target.status?.effect === StatusEffect.PARALYSIS ? 2 : 1) @@ -8751,8 +9040,7 @@ export function initMoves() { new SelfStatusMove(Moves.FOLLOW_ME, Type.NORMAL, -1, 20, -1, 2, 3) .attr(AddBattlerTagAttr, BattlerTagType.CENTER_OF_ATTENTION, true), new StatusMove(Moves.NATURE_POWER, Type.NORMAL, -1, 20, -1, 0, 3) - .attr(NaturePowerAttr) - .ignoresVirtual(), + .attr(NaturePowerAttr), new SelfStatusMove(Moves.CHARGE, Type.ELECTRIC, -1, 20, -1, 0, 3) .attr(StatStageChangeAttr, [ Stat.SPDEF ], 1, true) .attr(AddBattlerTagAttr, BattlerTagType.CHARGED, true, false), @@ -8773,8 +9061,7 @@ export function initMoves() { .triageMove() .attr(AddArenaTagAttr, ArenaTagType.WISH, 2, true), new SelfStatusMove(Moves.ASSIST, Type.NORMAL, -1, 20, -1, 0, 3) - .attr(RandomMovesetMoveAttr, true) - .ignoresVirtual(), + .attr(RandomMovesetMoveAttr, invalidAssistMoves, true), new SelfStatusMove(Moves.INGRAIN, Type.GRASS, -1, 20, -1, 0, 3) .attr(AddBattlerTagAttr, BattlerTagType.INGRAIN, true, true) .attr(AddBattlerTagAttr, BattlerTagType.IGNORE_FLYING, true, true) @@ -8821,8 +9108,7 @@ export function initMoves() { new ChargingAttackMove(Moves.DIVE, Type.WATER, MoveCategory.PHYSICAL, 80, 100, 10, -1, 0, 3) .chargeText(i18next.t("moveTriggers:hidUnderwater", { pokemonName: "{USER}" })) .chargeAttr(SemiInvulnerableAttr, BattlerTagType.UNDERWATER) - .chargeAttr(GulpMissileTagAttr) - .ignoresVirtual(), + .chargeAttr(GulpMissileTagAttr), new AttackMove(Moves.ARM_THRUST, Type.FIGHTING, MoveCategory.PHYSICAL, 15, 100, 20, -1, 0, 3) .attr(MultiHitAttr), new SelfStatusMove(Moves.CAMOUFLAGE, Type.NORMAL, -1, 20, -1, 0, 3) @@ -8959,8 +9245,7 @@ export function initMoves() { .chargeText(i18next.t("moveTriggers:sprangUp", { pokemonName: "{USER}" })) .chargeAttr(SemiInvulnerableAttr, BattlerTagType.FLYING) .attr(StatusEffectAttr, StatusEffect.PARALYSIS) - .condition(failOnGravityCondition) - .ignoresVirtual(), + .condition(failOnGravityCondition), new AttackMove(Moves.MUD_SHOT, Type.GROUND, MoveCategory.SPECIAL, 55, 95, 15, 100, 0, 3) .attr(StatStageChangeAttr, [ Stat.SPD ], -1), new AttackMove(Moves.POISON_TAIL, Type.POISON, MoveCategory.PHYSICAL, 50, 100, 25, 10, 0, 3) @@ -9087,12 +9372,10 @@ export function initMoves() { .target(MoveTarget.USER_SIDE), new StatusMove(Moves.ME_FIRST, Type.NORMAL, -1, 20, -1, 0, 4) .ignoresSubstitute() - .ignoresVirtual() .target(MoveTarget.NEAR_ENEMY) .unimplemented(), new SelfStatusMove(Moves.COPYCAT, Type.NORMAL, -1, 20, -1, 0, 4) - .attr(CopyMoveAttr) - .ignoresVirtual(), + .attr(CopyMoveAttr, false, invalidCopycatMoves), new StatusMove(Moves.POWER_SWAP, Type.PSYCHIC, -1, 10, 100, 0, 4) .attr(SwapStatStagesAttr, [ Stat.ATK, Stat.SPATK ]) .ignoresSubstitute(), @@ -9316,8 +9599,7 @@ export function initMoves() { new ChargingAttackMove(Moves.SHADOW_FORCE, Type.GHOST, MoveCategory.PHYSICAL, 120, 100, 5, -1, 0, 4) .chargeText(i18next.t("moveTriggers:vanishedInstantly", { pokemonName: "{USER}" })) .chargeAttr(SemiInvulnerableAttr, BattlerTagType.HIDDEN) - .ignoresProtect() - .ignoresVirtual(), + .ignoresProtect(), new SelfStatusMove(Moves.HONE_CLAWS, Type.DARK, -1, 15, -1, 0, 5) .attr(StatStageChangeAttr, [ Stat.ATK, Stat.ACC ], 1, true), new StatusMove(Moves.WIDE_GUARD, Type.ROCK, -1, 10, -1, 3, 5) @@ -9444,7 +9726,6 @@ export function initMoves() { .chargeAttr(SemiInvulnerableAttr, BattlerTagType.FLYING) .condition(failOnGravityCondition) .condition((user, target, move) => !target.getTag(BattlerTagType.SUBSTITUTE)) - .ignoresVirtual() .partial(), // Should immobilize the target, Flying types should take no damage. cf https://bulbapedia.bulbagarden.net/wiki/Sky_Drop_(move) and https://www.smogon.com/dex/sv/moves/sky-drop/ new SelfStatusMove(Moves.SHIFT_GEAR, Type.STEEL, -1, 10, -1, 0, 5) .attr(StatStageChangeAttr, [ Stat.ATK ], 1, true) @@ -9601,8 +9882,7 @@ export function initMoves() { .makesContact(false), new ChargingAttackMove(Moves.ICE_BURN, Type.ICE, MoveCategory.SPECIAL, 140, 90, 5, 30, 0, 5) .chargeText(i18next.t("moveTriggers:becameCloakedInFreezingAir", { pokemonName: "{USER}" })) - .attr(StatusEffectAttr, StatusEffect.BURN) - .ignoresVirtual(), + .attr(StatusEffectAttr, StatusEffect.BURN), new AttackMove(Moves.SNARL, Type.DARK, MoveCategory.SPECIAL, 55, 95, 15, 100, 0, 5) .attr(StatStageChangeAttr, [ Stat.SPATK ], -1) .soundBased() @@ -9645,8 +9925,7 @@ export function initMoves() { new ChargingAttackMove(Moves.PHANTOM_FORCE, Type.GHOST, MoveCategory.PHYSICAL, 90, 100, 10, -1, 0, 6) .chargeText(i18next.t("moveTriggers:vanishedInstantly", { pokemonName: "{USER}" })) .chargeAttr(SemiInvulnerableAttr, BattlerTagType.HIDDEN) - .ignoresProtect() - .ignoresVirtual(), + .ignoresProtect(), new StatusMove(Moves.TRICK_OR_TREAT, Type.GHOST, 100, 20, -1, 0, 6) .attr(AddTypeAttr, Type.GHOST), new StatusMove(Moves.NOBLE_ROAR, Type.NORMAL, 100, 30, -1, 0, 6) @@ -9755,8 +10034,7 @@ export function initMoves() { .powderMove(), new ChargingSelfStatusMove(Moves.GEOMANCY, Type.FAIRY, -1, 10, -1, 0, 6) .chargeText(i18next.t("moveTriggers:isChargingPower", { pokemonName: "{USER}" })) - .attr(StatStageChangeAttr, [ Stat.SPATK, Stat.SPDEF, Stat.SPD ], 2, true) - .ignoresVirtual(), + .attr(StatStageChangeAttr, [ Stat.SPATK, Stat.SPDEF, Stat.SPD ], 2, true), new StatusMove(Moves.MAGNETIC_FLUX, Type.ELECTRIC, -1, 20, -1, 0, 6) .attr(StatStageChangeAttr, [ Stat.DEF, Stat.SPDEF ], 1, false, { condition: (user, target, move) => !![ Abilities.PLUS, Abilities.MINUS ].find(a => target.hasAbility(a, false)) }) .ignoresSubstitute() @@ -9823,116 +10101,79 @@ export function initMoves() { .ignoresProtect(), /* Unused */ new AttackMove(Moves.BREAKNECK_BLITZ__PHYSICAL, Type.NORMAL, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.BREAKNECK_BLITZ__SPECIAL, Type.NORMAL, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.ALL_OUT_PUMMELING__PHYSICAL, Type.FIGHTING, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.ALL_OUT_PUMMELING__SPECIAL, Type.FIGHTING, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.SUPERSONIC_SKYSTRIKE__PHYSICAL, Type.FLYING, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.SUPERSONIC_SKYSTRIKE__SPECIAL, Type.FLYING, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.ACID_DOWNPOUR__PHYSICAL, Type.POISON, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.ACID_DOWNPOUR__SPECIAL, Type.POISON, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.TECTONIC_RAGE__PHYSICAL, Type.GROUND, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.TECTONIC_RAGE__SPECIAL, Type.GROUND, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.CONTINENTAL_CRUSH__PHYSICAL, Type.ROCK, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.CONTINENTAL_CRUSH__SPECIAL, Type.ROCK, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.SAVAGE_SPIN_OUT__PHYSICAL, Type.BUG, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.SAVAGE_SPIN_OUT__SPECIAL, Type.BUG, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.NEVER_ENDING_NIGHTMARE__PHYSICAL, Type.GHOST, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.NEVER_ENDING_NIGHTMARE__SPECIAL, Type.GHOST, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.CORKSCREW_CRASH__PHYSICAL, Type.STEEL, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.CORKSCREW_CRASH__SPECIAL, Type.STEEL, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.INFERNO_OVERDRIVE__PHYSICAL, Type.FIRE, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.INFERNO_OVERDRIVE__SPECIAL, Type.FIRE, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.HYDRO_VORTEX__PHYSICAL, Type.WATER, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.HYDRO_VORTEX__SPECIAL, Type.WATER, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.BLOOM_DOOM__PHYSICAL, Type.GRASS, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.BLOOM_DOOM__SPECIAL, Type.GRASS, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.GIGAVOLT_HAVOC__PHYSICAL, Type.ELECTRIC, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.GIGAVOLT_HAVOC__SPECIAL, Type.ELECTRIC, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.SHATTERED_PSYCHE__PHYSICAL, Type.PSYCHIC, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.SHATTERED_PSYCHE__SPECIAL, Type.PSYCHIC, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.SUBZERO_SLAMMER__PHYSICAL, Type.ICE, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.SUBZERO_SLAMMER__SPECIAL, Type.ICE, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.DEVASTATING_DRAKE__PHYSICAL, Type.DRAGON, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.DEVASTATING_DRAKE__SPECIAL, Type.DRAGON, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.BLACK_HOLE_ECLIPSE__PHYSICAL, Type.DARK, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.BLACK_HOLE_ECLIPSE__SPECIAL, Type.DARK, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.TWINKLE_TACKLE__PHYSICAL, Type.FAIRY, MoveCategory.PHYSICAL, -1, -1, 1, -1, 0, 7) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.TWINKLE_TACKLE__SPECIAL, Type.FAIRY, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.CATASTROPIKA, Type.ELECTRIC, MoveCategory.PHYSICAL, 210, -1, 1, -1, 0, 7) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), /* End Unused */ new SelfStatusMove(Moves.SHORE_UP, Type.GROUND, -1, 5, -1, 0, 7) .attr(SandHealAttr) @@ -10049,35 +10290,33 @@ export function initMoves() { .target(MoveTarget.USER_SIDE), /* Unused */ new AttackMove(Moves.SINISTER_ARROW_RAID, Type.GHOST, MoveCategory.PHYSICAL, 180, -1, 1, -1, 0, 7) + .unimplemented() .makesContact(false) - .edgeCase() // I assume it's because the user needs spirit shackle and decidueye - .ignoresVirtual(), + .edgeCase(), // I assume it's because the user needs spirit shackle and decidueye new AttackMove(Moves.MALICIOUS_MOONSAULT, Type.DARK, MoveCategory.PHYSICAL, 180, -1, 1, -1, 0, 7) + .unimplemented() .attr(AlwaysHitMinimizeAttr) .attr(HitsTagAttr, BattlerTagType.MINIMIZED, true) - .edgeCase() // I assume it's because it needs darkest lariat and incineroar - .ignoresVirtual(), + .edgeCase(), // I assume it's because it needs darkest lariat and incineroar new AttackMove(Moves.OCEANIC_OPERETTA, Type.WATER, MoveCategory.SPECIAL, 195, -1, 1, -1, 0, 7) - .edgeCase() // I assume it's because it needs sparkling aria and primarina - .ignoresVirtual(), + .unimplemented() + .edgeCase(), // I assume it's because it needs sparkling aria and primarina new AttackMove(Moves.GUARDIAN_OF_ALOLA, Type.FAIRY, MoveCategory.SPECIAL, -1, -1, 1, -1, 0, 7) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.SOUL_STEALING_7_STAR_STRIKE, Type.GHOST, MoveCategory.PHYSICAL, 195, -1, 1, -1, 0, 7) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.STOKED_SPARKSURFER, Type.ELECTRIC, MoveCategory.SPECIAL, 175, -1, 1, 100, 0, 7) - .edgeCase() // I assume it's because it needs thunderbolt and Alola Raichu - .ignoresVirtual(), + .unimplemented() + .edgeCase(), // I assume it's because it needs thunderbolt and Alola Raichu new AttackMove(Moves.PULVERIZING_PANCAKE, Type.NORMAL, MoveCategory.PHYSICAL, 210, -1, 1, -1, 0, 7) - .edgeCase() // I assume it's because it needs giga impact and snorlax - .ignoresVirtual(), + .unimplemented() + .edgeCase(), // I assume it's because it needs giga impact and snorlax new SelfStatusMove(Moves.EXTREME_EVOBOOST, Type.NORMAL, -1, 1, -1, 0, 7) - .attr(StatStageChangeAttr, [ Stat.ATK, Stat.DEF, Stat.SPATK, Stat.SPDEF, Stat.SPD ], 2, true) - .ignoresVirtual(), + .unimplemented() + .attr(StatStageChangeAttr, [ Stat.ATK, Stat.DEF, Stat.SPATK, Stat.SPDEF, Stat.SPD ], 2, true), new AttackMove(Moves.GENESIS_SUPERNOVA, Type.PSYCHIC, MoveCategory.SPECIAL, 185, -1, 1, 100, 0, 7) - .attr(TerrainChangeAttr, TerrainType.PSYCHIC) - .ignoresVirtual(), + .unimplemented() + .attr(TerrainChangeAttr, TerrainType.PSYCHIC), /* End Unused */ new AttackMove(Moves.SHELL_TRAP, Type.FIRE, MoveCategory.SPECIAL, 150, 100, 5, -1, -3, 7) .attr(AddBattlerTagHeaderAttr, BattlerTagType.SHELL_TRAP) @@ -10116,8 +10355,8 @@ export function initMoves() { .attr(FormChangeItemTypeAttr), /* Unused */ new AttackMove(Moves.TEN_MILLION_VOLT_THUNDERBOLT, Type.ELECTRIC, MoveCategory.SPECIAL, 195, -1, 1, -1, 0, 7) - .edgeCase() // I assume it's because it needs thunderbolt and pikachu in a cap - .ignoresVirtual(), + .unimplemented() + .edgeCase(), // I assume it's because it needs thunderbolt and pikachu in a cap /* End Unused */ new AttackMove(Moves.MIND_BLOWN, Type.FIRE, MoveCategory.SPECIAL, 150, 100, 5, -1, 0, 7) .condition(failIfDampCondition) @@ -10131,28 +10370,28 @@ export function initMoves() { .ignoresAbilities(), /* Unused */ new AttackMove(Moves.LIGHT_THAT_BURNS_THE_SKY, Type.PSYCHIC, MoveCategory.SPECIAL, 200, -1, 1, -1, 0, 7) + .unimplemented() .attr(PhotonGeyserCategoryAttr) - .ignoresAbilities() - .ignoresVirtual(), + .ignoresAbilities(), new AttackMove(Moves.SEARING_SUNRAZE_SMASH, Type.STEEL, MoveCategory.PHYSICAL, 200, -1, 1, -1, 0, 7) - .ignoresAbilities() - .ignoresVirtual(), + .unimplemented() + .ignoresAbilities(), new AttackMove(Moves.MENACING_MOONRAZE_MAELSTROM, Type.GHOST, MoveCategory.SPECIAL, 200, -1, 1, -1, 0, 7) - .ignoresAbilities() - .ignoresVirtual(), + .unimplemented() + .ignoresAbilities(), new AttackMove(Moves.LETS_SNUGGLE_FOREVER, Type.FAIRY, MoveCategory.PHYSICAL, 190, -1, 1, -1, 0, 7) - .edgeCase() // I assume it needs play rough and mimikyu - .ignoresVirtual(), + .unimplemented() + .edgeCase(), // I assume it needs play rough and mimikyu new AttackMove(Moves.SPLINTERED_STORMSHARDS, Type.ROCK, MoveCategory.PHYSICAL, 190, -1, 1, -1, 0, 7) + .unimplemented() .attr(ClearTerrainAttr) - .makesContact(false) - .ignoresVirtual(), + .makesContact(false), new AttackMove(Moves.CLANGOROUS_SOULBLAZE, Type.DRAGON, MoveCategory.SPECIAL, 185, -1, 1, 100, 0, 7) + .unimplemented() .attr(StatStageChangeAttr, [ Stat.ATK, Stat.DEF, Stat.SPATK, Stat.SPDEF, Stat.SPD ], 1, true, { firstTargetOnly: true }) .soundBased() .target(MoveTarget.ALL_NEAR_ENEMIES) - .edgeCase() // I assume it needs clanging scales and Kommo-O - .ignoresVirtual(), + .edgeCase(), // I assume it needs clanging scales and Kommo-O /* End Unused */ new AttackMove(Moves.ZIPPY_ZAP, Type.ELECTRIC, MoveCategory.PHYSICAL, 50, 100, 15, -1, 2, 7) // LGPE Implementation .attr(CritOnlyAttr), @@ -10190,9 +10429,9 @@ export function initMoves() { .punchingMove(), /* Unused */ new SelfStatusMove(Moves.MAX_GUARD, Type.NORMAL, -1, 10, -1, 4, 8) + .unimplemented() .attr(ProtectAttr) - .condition(failIfLastCondition) - .ignoresVirtual(), + .condition(failIfLastCondition), /* End Unused */ new AttackMove(Moves.DYNAMAX_CANNON, Type.DRAGON, MoveCategory.SPECIAL, 100, 100, 5, -1, 0, 8) .attr(MovePowerMultiplierAttr, (user, target, move) => { @@ -10205,8 +10444,7 @@ export function initMoves() { return 1; } }) - .attr(DiscourageFrequentUseAttr) - .ignoresVirtual(), + .attr(DiscourageFrequentUseAttr), new AttackMove(Moves.SNIPE_SHOT, Type.WATER, MoveCategory.SPECIAL, 80, 100, 15, -1, 0, 8) .attr(HighCritAttr) @@ -10252,76 +10490,58 @@ export function initMoves() { /* Unused */ new AttackMove(Moves.MAX_FLARE, Type.FIRE, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.MAX_FLUTTERBY, Type.BUG, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.MAX_LIGHTNING, Type.ELECTRIC, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.MAX_STRIKE, Type.NORMAL, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.MAX_KNUCKLE, Type.FIGHTING, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.MAX_PHANTASM, Type.GHOST, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.MAX_HAILSTORM, Type.ICE, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.MAX_OOZE, Type.POISON, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.MAX_GEYSER, Type.WATER, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.MAX_AIRSTREAM, Type.FLYING, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.MAX_STARFALL, Type.FAIRY, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.MAX_WYRMWIND, Type.DRAGON, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.MAX_MINDSTORM, Type.PSYCHIC, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.MAX_ROCKFALL, Type.ROCK, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.MAX_QUAKE, Type.GROUND, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.MAX_DARKNESS, Type.DARK, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.MAX_OVERGROWTH, Type.GRASS, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), new AttackMove(Moves.MAX_STEELSPIKE, Type.STEEL, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.NEAR_ENEMY) - .unimplemented() - .ignoresVirtual(), + .unimplemented(), /* End Unused */ new SelfStatusMove(Moves.CLANGOROUS_SOUL, Type.DRAGON, 100, 5, -1, 0, 8) .attr(CutHpStatStageBoostAttr, [ Stat.ATK, Stat.DEF, Stat.SPATK, Stat.SPDEF, Stat.SPD ], 1, 3) @@ -10394,8 +10614,7 @@ export function initMoves() { .makesContact(false), new ChargingAttackMove(Moves.METEOR_BEAM, Type.ROCK, MoveCategory.SPECIAL, 120, 90, 10, -1, 0, 8) .chargeText(i18next.t("moveTriggers:isOverflowingWithSpacePower", { pokemonName: "{USER}" })) - .chargeAttr(StatStageChangeAttr, [ Stat.SPATK ], 1, true) - .ignoresVirtual(), + .chargeAttr(StatStageChangeAttr, [ Stat.SPATK ], 1, true), new AttackMove(Moves.SHELL_SIDE_ARM, Type.POISON, MoveCategory.SPECIAL, 90, 100, 10, 20, 0, 8) .attr(ShellSideArmCategoryAttr) .attr(StatusEffectAttr, StatusEffect.POISON) @@ -10853,8 +11072,7 @@ export function initMoves() { new ChargingAttackMove(Moves.ELECTRO_SHOT, Type.ELECTRIC, MoveCategory.SPECIAL, 130, 100, 10, 100, 0, 9) .chargeText(i18next.t("moveTriggers:absorbedElectricity", { pokemonName: "{USER}" })) .chargeAttr(StatStageChangeAttr, [ Stat.SPATK ], 1, true) - .chargeAttr(WeatherInstantChargeAttr, [ WeatherType.RAIN, WeatherType.HEAVY_RAIN ]) - .ignoresVirtual(), + .chargeAttr(WeatherInstantChargeAttr, [ WeatherType.RAIN, WeatherType.HEAVY_RAIN ]), new AttackMove(Moves.TERA_STARSTORM, Type.NORMAL, MoveCategory.SPECIAL, 120, 100, 5, -1, 0, 9) .attr(TeraMoveCategoryAttr) .attr(TeraStarstormTypeAttr) diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index d40254c8a6b..8fc00e2ebeb 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -3298,7 +3298,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } } - getMoveQueue(): QueuedMove[] { + getMoveQueue(): TurnMove[] { return this.summonData.moveQueue; } @@ -4810,17 +4810,19 @@ export class EnemyPokemon extends Pokemon { * the Pokemon the move will target. * @returns this Pokemon's next move in the format {move, moveTargets} */ - getNextMove(): QueuedMove { + getNextMove(): TurnMove { // If this Pokemon has a move already queued, return it. - const queuedMove = this.getMoveQueue().length - ? this.getMoveset().find(m => m?.moveId === this.getMoveQueue()[0].move) - : null; - if (queuedMove) { - if (queuedMove.isUsable(this, this.getMoveQueue()[0].ignorePP)) { - return { move: queuedMove.moveId, targets: this.getMoveQueue()[0].targets, ignorePP: this.getMoveQueue()[0].ignorePP }; - } else { - this.getMoveQueue().shift(); - return this.getNextMove(); + const moveQueue = this.getMoveQueue(); + if (moveQueue.length !== 0) { + const queuedMove = moveQueue[0]; + if (queuedMove) { + const moveIndex = this.getMoveset().findIndex(m => m?.moveId === queuedMove.move); + if ((moveIndex > -1 && this.getMoveset()[moveIndex]!.isUsable(this, queuedMove.ignorePP)) || queuedMove.virtual) { + return queuedMove; + } else { + this.getMoveQueue().shift(); + return this.getNextMove(); + } } } @@ -5242,15 +5244,10 @@ export class EnemyPokemon extends Pokemon { export interface TurnMove { move: Moves; - targets?: BattlerIndex[]; - result: MoveResult; + targets: BattlerIndex[]; + result?: MoveResult; virtual?: boolean; turn?: number; -} - -export interface QueuedMove { - move: Moves; - targets: BattlerIndex[]; ignorePP?: boolean; } @@ -5266,7 +5263,7 @@ export interface AttackMoveResult { export class PokemonSummonData { /** [Atk, Def, SpAtk, SpDef, Spd, Acc, Eva] */ public statStages: number[] = [ 0, 0, 0, 0, 0, 0, 0 ]; - public moveQueue: QueuedMove[] = []; + public moveQueue: TurnMove[] = []; public tags: BattlerTag[] = []; public abilitySuppressed: boolean = false; public abilitiesApplied: Abilities[] = []; diff --git a/src/phases/command-phase.ts b/src/phases/command-phase.ts index d7293ec02fe..e2bad953fc5 100644 --- a/src/phases/command-phase.ts +++ b/src/phases/command-phase.ts @@ -11,7 +11,7 @@ import { BattlerTagType } from "#app/enums/battler-tag-type"; import { Biome } from "#app/enums/biome"; import { Moves } from "#app/enums/moves"; import { PokeballType } from "#enums/pokeball"; -import type { PlayerPokemon } from "#app/field/pokemon"; +import type { PlayerPokemon, TurnMove } from "#app/field/pokemon"; import { FieldPosition } from "#app/field/pokemon"; import { getPokemonNameWithAffix } from "#app/messages"; import { Command } from "#app/ui/command-ui-handler"; @@ -86,19 +86,19 @@ export class CommandPhase extends FieldPhase { const moveQueue = playerPokemon.getMoveQueue(); while (moveQueue.length && moveQueue[0] - && moveQueue[0].move && (!playerPokemon.getMoveset().find(m => m?.moveId === moveQueue[0].move) + && moveQueue[0].move && !moveQueue[0].virtual && (!playerPokemon.getMoveset().find(m => m?.moveId === moveQueue[0].move) || !playerPokemon.getMoveset()[playerPokemon.getMoveset().findIndex(m => m?.moveId === moveQueue[0].move)]!.isUsable(playerPokemon, moveQueue[0].ignorePP))) { // TODO: is the bang correct? moveQueue.shift(); } - if (moveQueue.length) { + if (moveQueue.length > 0) { const queuedMove = moveQueue[0]; if (!queuedMove.move) { - this.handleCommand(Command.FIGHT, -1, false); + this.handleCommand(Command.FIGHT, -1); } else { const moveIndex = playerPokemon.getMoveset().findIndex(m => m?.moveId === queuedMove.move); - if (moveIndex > -1 && playerPokemon.getMoveset()[moveIndex]!.isUsable(playerPokemon, queuedMove.ignorePP)) { // TODO: is the bang correct? - this.handleCommand(Command.FIGHT, moveIndex, queuedMove.ignorePP, { targets: queuedMove.targets, multiple: queuedMove.targets.length > 1 }); + if ((moveIndex > -1 && playerPokemon.getMoveset()[moveIndex]!.isUsable(playerPokemon, queuedMove.ignorePP)) || queuedMove.virtual) { // TODO: is the bang correct? + this.handleCommand(Command.FIGHT, moveIndex, queuedMove.ignorePP, queuedMove); } else { globalScene.ui.setMode(Mode.COMMAND, this.fieldIndex); } @@ -120,12 +120,24 @@ export class CommandPhase extends FieldPhase { switch (command) { case Command.FIGHT: let useStruggle = false; + const turnMove: TurnMove | undefined = (args.length === 2 ? (args[1] as TurnMove) : undefined); if (cursor === -1 || playerPokemon.trySelectMove(cursor, args[0] as boolean) || (useStruggle = cursor > -1 && !playerPokemon.getMoveset().filter(m => m?.isUsable(playerPokemon)).length)) { - const moveId = !useStruggle ? cursor > -1 ? playerPokemon.getMoveset()[cursor]!.moveId : Moves.NONE : Moves.STRUGGLE; // TODO: is the bang correct? + + let moveId: Moves; + if (useStruggle) { + moveId = Moves.STRUGGLE; + } else if (turnMove !== undefined) { + moveId = turnMove.move; + } else if (cursor > -1) { + moveId = playerPokemon.getMoveset()[cursor]!.moveId; + } else { + moveId = Moves.NONE; + } + const turnCommand: TurnCommand = { command: Command.FIGHT, cursor: cursor, move: { move: moveId, targets: [], ignorePP: args[0] }, args: args }; - const moveTargets: MoveTargetSet = args.length < 3 ? getMoveTargets(playerPokemon, moveId) : args[2]; + const moveTargets: MoveTargetSet = turnMove === undefined ? getMoveTargets(playerPokemon, moveId) : { targets: turnMove.targets, multiple: turnMove.targets.length > 1 }; if (!moveId) { turnCommand.targets = [ this.fieldIndex ]; } diff --git a/src/phases/move-phase.ts b/src/phases/move-phase.ts index 0673ad3effe..5330540c8b2 100644 --- a/src/phases/move-phase.ts +++ b/src/phases/move-phase.ts @@ -296,11 +296,6 @@ export class MovePhase extends BattlePhase { globalScene.eventTarget.dispatchEvent(new MoveUsedEvent(this.pokemon?.id, this.move.getMove(), this.move.ppUsed)); } - // Update the battle's "last move" pointer, unless we're currently mimicking a move. - if (!allMoves[this.move.moveId].hasAttr(CopyMoveAttr)) { - globalScene.currentBattle.lastMove = this.move.moveId; - } - /** * Determine if the move is successful (meaning that its damage/effects can be attempted) * by checking that all of the following are true: @@ -324,6 +319,14 @@ export class MovePhase extends BattlePhase { const success = passesConditions && !failedDueToWeather && !failedDueToTerrain; + // Update the battle's "last move" pointer, unless we're currently mimicking a move. + if (!allMoves[this.move.moveId].hasAttr(CopyMoveAttr)) { + // The last move used is unaffected by moves that fail + if (success) { + globalScene.currentBattle.lastMove = this.move.moveId; + } + } + /** * If the move has not failed, trigger ability-based user type changes and then execute it. * @@ -518,7 +521,7 @@ export class MovePhase extends BattlePhase { frenzyMissFunc(this.pokemon, this.move.getMove()); } - this.pokemon.pushMoveHistory({ move: Moves.NONE, result: MoveResult.FAIL }); + this.pokemon.pushMoveHistory({ move: Moves.NONE, result: MoveResult.FAIL, targets: this.targets }); this.pokemon.lapseTags(BattlerTagLapseType.MOVE_EFFECT); this.pokemon.lapseTags(BattlerTagLapseType.AFTER_MOVE); diff --git a/src/test/moves/assist.test.ts b/src/test/moves/assist.test.ts new file mode 100644 index 00000000000..81633d9a277 --- /dev/null +++ b/src/test/moves/assist.test.ts @@ -0,0 +1,105 @@ +import { BattlerIndex } from "#app/battle"; +import { Stat } from "#app/enums/stat"; +import { MoveResult } from "#app/field/pokemon"; +import { CommandPhase } from "#app/phases/command-phase"; +import { Abilities } from "#enums/abilities"; +import { Moves } from "#enums/moves"; +import { Species } from "#enums/species"; +import GameManager from "#test/utils/gameManager"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; + +describe("Moves - Assist", () => { + let phaserGame: Phaser.Game; + let game: GameManager; + + beforeAll(() => { + phaserGame = new Phaser.Game({ + type: Phaser.HEADLESS, + }); + }); + + afterEach(() => { + game.phaseInterceptor.restoreOg(); + }); + + beforeEach(() => { + game = new GameManager(phaserGame); + // Manual moveset overrides are required for the player pokemon in these tests + // because the normal moveset override doesn't allow for accurate testing of moveset changes + game.override + .ability(Abilities.BALL_FETCH) + .battleType("double") + .disableCrits() + .enemySpecies(Species.MAGIKARP) + .enemyLevel(100) + .enemyAbility(Abilities.BALL_FETCH) + .enemyMoveset(Moves.SPLASH); + }); + + it("should only use an ally's moves", async () => { + game.override.enemyMoveset(Moves.SWORDS_DANCE); + await game.classicMode.startBattle([ Species.FEEBAS, Species.SHUCKLE ]); + + const [ feebas, shuckle ] = game.scene.getPlayerField(); + // These are all moves Assist cannot call; Sketch will be used to test that it can call other moves properly + game.move.changeMoveset(feebas, [ Moves.ASSIST, Moves.SKETCH, Moves.PROTECT, Moves.DRAGON_TAIL ]); + game.move.changeMoveset(shuckle, [ Moves.ASSIST, Moves.SKETCH, Moves.PROTECT, Moves.DRAGON_TAIL ]); + + game.move.select(Moves.ASSIST, 0); + game.move.select(Moves.SKETCH, 1); + await game.setTurnOrder([ BattlerIndex.ENEMY, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER_2, BattlerIndex.PLAYER ]); + // Player_2 uses Sketch, copies Swords Dance, Player_1 uses Assist, uses Player_2's Sketched Swords Dance + await game.toNextTurn(); + + expect(game.scene.getPlayerPokemon()!.getStatStage(Stat.ATK)).toBe(2); // Stat raised from Assist -> Swords Dance + }); + + it("should fail if there are no allies", async () => { + await game.classicMode.startBattle([ Species.FEEBAS ]); + + const feebas = game.scene.getPlayerPokemon()!; + game.move.changeMoveset(feebas, [ Moves.ASSIST, Moves.SKETCH, Moves.PROTECT, Moves.DRAGON_TAIL ]); + + game.move.select(Moves.ASSIST, 0); + await game.toNextTurn(); + expect(game.scene.getPlayerPokemon()!.getLastXMoves()[0].result).toBe(MoveResult.FAIL); + }); + + it("should fail if ally has no usable moves and user has usable moves", async () => { + game.override.enemyMoveset(Moves.SWORDS_DANCE); + await game.classicMode.startBattle([ Species.FEEBAS, Species.SHUCKLE ]); + + const [ feebas, shuckle ] = game.scene.getPlayerField(); + game.move.changeMoveset(feebas, [ Moves.ASSIST, Moves.SKETCH, Moves.PROTECT, Moves.DRAGON_TAIL ]); + game.move.changeMoveset(shuckle, [ Moves.ASSIST, Moves.SKETCH, Moves.PROTECT, Moves.DRAGON_TAIL ]); + + game.move.select(Moves.SKETCH, 0); + game.move.select(Moves.PROTECT, 1); + await game.setTurnOrder([ BattlerIndex.ENEMY, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER, BattlerIndex.PLAYER_2 ]); + // Player uses Sketch to copy Swords Dance, Player_2 stalls a turn. Player will attempt Assist and should have no usable moves + await game.toNextTurn(); + game.move.select(Moves.ASSIST, 0); + await game.phaseInterceptor.to(CommandPhase); + game.move.select(Moves.PROTECT, 1); + await game.toNextTurn(); + + expect(game.scene.getPlayerPokemon()!.getLastXMoves()[0].result).toBe(MoveResult.FAIL); + }); + + it("should apply secondary effects of a move", async () => { + game.override.moveset([ Moves.ASSIST, Moves.WOOD_HAMMER, Moves.WOOD_HAMMER, Moves.WOOD_HAMMER ]); + await game.classicMode.startBattle([ Species.FEEBAS, Species.SHUCKLE ]); + + const [ feebas, shuckle ] = game.scene.getPlayerField(); + game.move.changeMoveset(feebas, [ Moves.ASSIST, Moves.SKETCH, Moves.PROTECT, Moves.DRAGON_TAIL ]); + game.move.changeMoveset(shuckle, [ Moves.ASSIST, Moves.SKETCH, Moves.PROTECT, Moves.DRAGON_TAIL ]); + + game.move.select(Moves.ASSIST, 0); + await game.phaseInterceptor.to(CommandPhase); + game.move.select(Moves.ASSIST, 1); + await game.toNextTurn(); + + expect(game.scene.getPlayerPokemon()!.isFullHp()).toBeFalsy(); // should receive recoil damage from Wood Hammer + }); +}); diff --git a/src/test/moves/copycat.test.ts b/src/test/moves/copycat.test.ts new file mode 100644 index 00000000000..d9e64289481 --- /dev/null +++ b/src/test/moves/copycat.test.ts @@ -0,0 +1,91 @@ +import { BattlerIndex } from "#app/battle"; +import { allMoves, RandomMoveAttr } from "#app/data/move"; +import { Stat } from "#app/enums/stat"; +import { MoveResult } from "#app/field/pokemon"; +import { Abilities } from "#enums/abilities"; +import { Moves } from "#enums/moves"; +import { Species } from "#enums/species"; +import GameManager from "#test/utils/gameManager"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; + +describe("Moves - Copycat", () => { + let phaserGame: Phaser.Game; + let game: GameManager; + + const randomMoveAttr = allMoves[Moves.METRONOME].getAttrs(RandomMoveAttr)[0]; + + beforeAll(() => { + phaserGame = new Phaser.Game({ + type: Phaser.HEADLESS, + }); + }); + + afterEach(() => { + game.phaseInterceptor.restoreOg(); + }); + + beforeEach(() => { + game = new GameManager(phaserGame); + game.override + .moveset([ Moves.COPYCAT, Moves.SPIKY_SHIELD, Moves.SWORDS_DANCE, Moves.SPLASH ]) + .ability(Abilities.BALL_FETCH) + .battleType("single") + .disableCrits() + .starterSpecies(Species.FEEBAS) + .enemySpecies(Species.MAGIKARP) + .enemyAbility(Abilities.BALL_FETCH) + .enemyMoveset(Moves.SPLASH); + }); + + it("should copy the last move successfully executed", async () => { + game.override.enemyMoveset(Moves.SUCKER_PUNCH); + await game.classicMode.startBattle(); + + game.move.select(Moves.SWORDS_DANCE); + await game.toNextTurn(); + + game.move.select(Moves.COPYCAT); // Last successful move should be Swords Dance + await game.toNextTurn(); + + expect(game.scene.getPlayerPokemon()!.getStatStage(Stat.ATK)).toBe(4); + }); + + it("should fail when the last move used is not a valid Copycat move", async () => { + game.override.enemyMoveset(Moves.PROTECT); // Protect is not a valid move for Copycat to copy + await game.classicMode.startBattle(); + + game.move.select(Moves.SPIKY_SHIELD); // Spiky Shield is not a valid move for Copycat to copy + await game.toNextTurn(); + + game.move.select(Moves.COPYCAT); + await game.toNextTurn(); + + expect(game.scene.getPlayerPokemon()!.getLastXMoves()[0].result).toBe(MoveResult.FAIL); + }); + + it("should copy the called move when the last move successfully calls another", async () => { + game.override + .moveset([ Moves.SPLASH, Moves.METRONOME ]) + .enemyMoveset(Moves.COPYCAT); + await game.classicMode.startBattle(); + vi.spyOn(randomMoveAttr, "getMoveOverride").mockReturnValue(Moves.SWORDS_DANCE); + + game.move.select(Moves.METRONOME); + await game.setTurnOrder([ BattlerIndex.PLAYER, BattlerIndex.ENEMY ]); // Player moves first, so enemy can copy Swords Dance + await game.toNextTurn(); + + expect(game.scene.getEnemyPokemon()!.getStatStage(Stat.ATK)).toBe(2); + }); + + it("should apply secondary effects of a move", async () => { + game.override.enemyMoveset(Moves.ACID_SPRAY); // Secondary effect lowers SpDef by 2 stages + await game.classicMode.startBattle(); + + game.move.select(Moves.COPYCAT); + await game.setTurnOrder([ BattlerIndex.ENEMY, BattlerIndex.PLAYER ]); + await game.toNextTurn(); + + expect(game.scene.getEnemyPokemon()!.getStatStage(Stat.SPDEF)).toBe(-2); + }); +}); diff --git a/src/test/moves/metronome.test.ts b/src/test/moves/metronome.test.ts new file mode 100644 index 00000000000..946dc92de0f --- /dev/null +++ b/src/test/moves/metronome.test.ts @@ -0,0 +1,113 @@ +import { RechargingTag, SemiInvulnerableTag } from "#app/data/battler-tags"; +import { allMoves, RandomMoveAttr } from "#app/data/move"; +import { Abilities } from "#app/enums/abilities"; +import { Stat } from "#app/enums/stat"; +import { CommandPhase } from "#app/phases/command-phase"; +import { Moves } from "#enums/moves"; +import { Species } from "#enums/species"; +import GameManager from "#test/utils/gameManager"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, it, expect, vi } from "vitest"; + +describe("Moves - Metronome", () => { + let phaserGame: Phaser.Game; + let game: GameManager; + + const randomMoveAttr = allMoves[Moves.METRONOME].getAttrs(RandomMoveAttr)[0]; + + beforeAll(() => { + phaserGame = new Phaser.Game({ + type: Phaser.HEADLESS, + }); + }); + + afterEach(() => { + game.phaseInterceptor.restoreOg(); + }); + + beforeEach(() => { + game = new GameManager(phaserGame); + game.override + .moveset([ Moves.METRONOME, Moves.SPLASH ]) + .battleType("single") + .startingLevel(100) + .starterSpecies(Species.REGIELEKI) + .enemyLevel(100) + .enemySpecies(Species.SHUCKLE) + .enemyMoveset(Moves.SPLASH) + .enemyAbility(Abilities.BALL_FETCH); + }); + + it("should have one semi-invulnerable turn and deal damage on the second turn when a semi-invulnerable move is called", async () => { + await game.classicMode.startBattle(); + const player = game.scene.getPlayerPokemon()!; + const enemy = game.scene.getEnemyPokemon()!; + vi.spyOn(randomMoveAttr, "getMoveOverride").mockReturnValue(Moves.DIVE); + + game.move.select(Moves.METRONOME); + await game.toNextTurn(); + + expect(player.getTag(SemiInvulnerableTag)).toBeTruthy(); + + await game.toNextTurn(); + expect(player.getTag(SemiInvulnerableTag)).toBeFalsy(); + expect(enemy.isFullHp()).toBeFalsy(); + }); + + it("should apply secondary effects of a move", async () => { + await game.classicMode.startBattle(); + const player = game.scene.getPlayerPokemon()!; + vi.spyOn(randomMoveAttr, "getMoveOverride").mockReturnValue(Moves.WOOD_HAMMER); + + game.move.select(Moves.METRONOME); + await game.toNextTurn(); + + expect(player.isFullHp()).toBeFalsy(); + }); + + it("should recharge after using recharge move", async () => { + await game.classicMode.startBattle(); + const player = game.scene.getPlayerPokemon()!; + vi.spyOn(randomMoveAttr, "getMoveOverride").mockReturnValue(Moves.HYPER_BEAM); + vi.spyOn(allMoves[Moves.HYPER_BEAM], "accuracy", "get").mockReturnValue(100); + + game.move.select(Moves.METRONOME); + await game.toNextTurn(); + + expect(player.getTag(RechargingTag)).toBeTruthy(); + }); + + it("should only target ally for Aromatic Mist", async () => { + game.override.battleType("double"); + await game.classicMode.startBattle([ Species.REGIELEKI, Species.RATTATA ]); + const [ leftPlayer, rightPlayer ] = game.scene.getPlayerField(); + const [ leftOpp, rightOpp ] = game.scene.getEnemyField(); + vi.spyOn(randomMoveAttr, "getMoveOverride").mockReturnValue(Moves.AROMATIC_MIST); + + game.move.select(Moves.METRONOME, 0); + await game.phaseInterceptor.to(CommandPhase); + game.move.select(Moves.SPLASH, 1); + await game.toNextTurn(); + + expect(rightPlayer.getStatStage(Stat.SPDEF)).toBe(1); + expect(leftPlayer.getStatStage(Stat.SPDEF)).toBe(0); + expect(leftOpp.getStatStage(Stat.SPDEF)).toBe(0); + expect(rightOpp.getStatStage(Stat.SPDEF)).toBe(0); + }); + + it("should cause opponent to flee, and not crash for Roar", async () => { + await game.classicMode.startBattle(); + vi.spyOn(randomMoveAttr, "getMoveOverride").mockReturnValue(Moves.ROAR); + + const enemyPokemon = game.scene.getEnemyPokemon()!; + + game.move.select(Moves.METRONOME); + await game.phaseInterceptor.to("BerryPhase"); + + const isVisible = enemyPokemon.visible; + const hasFled = enemyPokemon.switchOutStatus; + expect(!isVisible && hasFled).toBe(true); + + await game.phaseInterceptor.to("CommandPhase"); + }); +}); diff --git a/src/test/moves/mirror_move.test.ts b/src/test/moves/mirror_move.test.ts new file mode 100644 index 00000000000..e55c55038ae --- /dev/null +++ b/src/test/moves/mirror_move.test.ts @@ -0,0 +1,84 @@ +import { BattlerIndex } from "#app/battle"; +import { Stat } from "#app/enums/stat"; +import { MoveResult } from "#app/field/pokemon"; +import { Abilities } from "#enums/abilities"; +import { Moves } from "#enums/moves"; +import { Species } from "#enums/species"; +import GameManager from "#test/utils/gameManager"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; + +describe("Moves - Mirror Move", () => { + let phaserGame: Phaser.Game; + let game: GameManager; + + beforeAll(() => { + phaserGame = new Phaser.Game({ + type: Phaser.HEADLESS, + }); + }); + + afterEach(() => { + game.phaseInterceptor.restoreOg(); + }); + + beforeEach(() => { + game = new GameManager(phaserGame); + game.override + .moveset([ Moves.MIRROR_MOVE, Moves.SPLASH ]) + .ability(Abilities.BALL_FETCH) + .battleType("single") + .disableCrits() + .enemySpecies(Species.MAGIKARP) + .enemyAbility(Abilities.BALL_FETCH) + .enemyMoveset(Moves.SPLASH); + }); + + it("should use the last move that the target used on the user", async () => { + game.override + .battleType("double") + .enemyMoveset([ Moves.TACKLE, Moves.GROWL ]); + await game.classicMode.startBattle([ Species.FEEBAS, Species.MAGIKARP ]); + + game.move.select(Moves.MIRROR_MOVE, 0, BattlerIndex.ENEMY); // target's last move is Tackle, enemy should receive damage from Mirror Move copying Tackle + game.move.select(Moves.SPLASH, 1); + await game.forceEnemyMove(Moves.TACKLE, BattlerIndex.PLAYER_2); + await game.forceEnemyMove(Moves.GROWL, BattlerIndex.PLAYER_2); + await game.setTurnOrder([ BattlerIndex.ENEMY, BattlerIndex.ENEMY_2, BattlerIndex.PLAYER_2, BattlerIndex.PLAYER ]); + await game.toNextTurn(); + + expect(game.scene.getEnemyField()[0].isFullHp()).toBeFalsy(); + }); + + it("should apply secondary effects of a move", async () => { + game.override.enemyMoveset(Moves.ACID_SPRAY); + await game.classicMode.startBattle([ Species.FEEBAS ]); + + game.move.select(Moves.MIRROR_MOVE); + await game.setTurnOrder([ BattlerIndex.ENEMY, BattlerIndex.PLAYER ]); + await game.toNextTurn(); + + expect(game.scene.getEnemyPokemon()!.getStatStage(Stat.SPDEF)).toBe(-2); + }); + + it("should be able to copy status moves", async () => { + game.override.enemyMoveset(Moves.GROWL); + await game.classicMode.startBattle([ Species.FEEBAS ]); + + game.move.select(Moves.MIRROR_MOVE); + await game.setTurnOrder([ BattlerIndex.ENEMY, BattlerIndex.PLAYER ]); + await game.toNextTurn(); + + expect(game.scene.getEnemyPokemon()!.getStatStage(Stat.ATK)).toBe(-1); + }); + + it("should fail if the target has not used any moves", async () => { + await game.classicMode.startBattle([ Species.FEEBAS ]); + + game.move.select(Moves.MIRROR_MOVE); + await game.setTurnOrder([ BattlerIndex.PLAYER, BattlerIndex.ENEMY ]); + await game.toNextTurn(); + + expect(game.scene.getPlayerPokemon()!.getLastXMoves()[0].result).toBe(MoveResult.FAIL); + }); +}); diff --git a/src/test/moves/sleep_talk.test.ts b/src/test/moves/sleep_talk.test.ts new file mode 100644 index 00000000000..9ad2d23f903 --- /dev/null +++ b/src/test/moves/sleep_talk.test.ts @@ -0,0 +1,75 @@ +import { Stat } from "#app/enums/stat"; +import { StatusEffect } from "#app/enums/status-effect"; +import { MoveResult } from "#app/field/pokemon"; +import { Abilities } from "#enums/abilities"; +import { Moves } from "#enums/moves"; +import { Species } from "#enums/species"; +import GameManager from "#test/utils/gameManager"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; + +describe("Moves - Sleep Talk", () => { + let phaserGame: Phaser.Game; + let game: GameManager; + + beforeAll(() => { + phaserGame = new Phaser.Game({ + type: Phaser.HEADLESS, + }); + }); + + afterEach(() => { + game.phaseInterceptor.restoreOg(); + }); + + beforeEach(() => { + game = new GameManager(phaserGame); + game.override + .moveset([ Moves.SPLASH, Moves.SLEEP_TALK ]) + .statusEffect(StatusEffect.SLEEP) + .ability(Abilities.BALL_FETCH) + .battleType("single") + .disableCrits() + .enemySpecies(Species.MAGIKARP) + .enemyAbility(Abilities.BALL_FETCH) + .enemyMoveset(Moves.SPLASH) + .enemyLevel(100); + }); + + it("should fail when the user is not asleep", async () => { + game.override.statusEffect(StatusEffect.NONE); + await game.classicMode.startBattle([ Species.FEEBAS ]); + + game.move.select(Moves.SLEEP_TALK); + await game.toNextTurn(); + expect(game.scene.getPlayerPokemon()!.getLastXMoves()[0].result).toBe(MoveResult.FAIL); + }); + + it("should fail if the user has no valid moves", async () => { + game.override.moveset([ Moves.SLEEP_TALK, Moves.DIG, Moves.METRONOME, Moves.SOLAR_BEAM ]); + await game.classicMode.startBattle([ Species.FEEBAS ]); + + game.move.select(Moves.SLEEP_TALK); + await game.toNextTurn(); + expect(game.scene.getPlayerPokemon()!.getLastXMoves()[0].result).toBe(MoveResult.FAIL); + }); + + it("should call a random valid move if the user is asleep", async () => { + game.override.moveset([ Moves.SLEEP_TALK, Moves.DIG, Moves.FLY, Moves.SWORDS_DANCE ]); // Dig and Fly are invalid moves, Swords Dance should always be called + await game.classicMode.startBattle([ Species.FEEBAS ]); + + game.move.select(Moves.SLEEP_TALK); + await game.toNextTurn(); + expect(game.scene.getPlayerPokemon()!.getStatStage(Stat.ATK)); + }); + + it("should apply secondary effects of a move", async () => { + game.override.moveset([ Moves.SLEEP_TALK, Moves.DIG, Moves.FLY, Moves.WOOD_HAMMER ]); // Dig and Fly are invalid moves, Wood Hammer should always be called + await game.classicMode.startBattle(); + + game.move.select(Moves.SLEEP_TALK); + await game.toNextTurn(); + + expect(game.scene.getPlayerPokemon()!.isFullHp()).toBeFalsy(); // Wood Hammer recoil effect should be applied + }); +}); diff --git a/src/test/moves/spit_up.test.ts b/src/test/moves/spit_up.test.ts index fd21bb3c6c1..7f9dfaad38b 100644 --- a/src/test/moves/spit_up.test.ts +++ b/src/test/moves/spit_up.test.ts @@ -125,7 +125,7 @@ describe("Moves - Spit Up", () => { game.move.select(Moves.SPIT_UP); await game.phaseInterceptor.to(TurnInitPhase); - expect(pokemon.getMoveHistory().at(-1)).toMatchObject({ move: Moves.SPIT_UP, result: MoveResult.FAIL }); + expect(pokemon.getMoveHistory().at(-1)).toMatchObject({ move: Moves.SPIT_UP, result: MoveResult.FAIL, targets: [ game.scene.getEnemyPokemon()!.getBattlerIndex() ]}); expect(spitUp.calculateBattlePower).not.toHaveBeenCalled(); }); @@ -148,7 +148,7 @@ describe("Moves - Spit Up", () => { await game.phaseInterceptor.to(TurnInitPhase); - expect(pokemon.getMoveHistory().at(-1)).toMatchObject({ move: Moves.SPIT_UP, result: MoveResult.SUCCESS }); + expect(pokemon.getMoveHistory().at(-1)).toMatchObject({ move: Moves.SPIT_UP, result: MoveResult.SUCCESS, targets: [ game.scene.getEnemyPokemon()!.getBattlerIndex() ]}); expect(spitUp.calculateBattlePower).toHaveBeenCalledOnce(); @@ -176,7 +176,7 @@ describe("Moves - Spit Up", () => { game.move.select(Moves.SPIT_UP); await game.phaseInterceptor.to(TurnInitPhase); - expect(pokemon.getMoveHistory().at(-1)).toMatchObject({ move: Moves.SPIT_UP, result: MoveResult.SUCCESS }); + expect(pokemon.getMoveHistory().at(-1)).toMatchObject({ move: Moves.SPIT_UP, result: MoveResult.SUCCESS, targets: [ game.scene.getEnemyPokemon()!.getBattlerIndex() ]}); expect(spitUp.calculateBattlePower).toHaveBeenCalledOnce(); diff --git a/src/test/moves/stockpile.test.ts b/src/test/moves/stockpile.test.ts index e50fe041b0a..f83459cd09d 100644 --- a/src/test/moves/stockpile.test.ts +++ b/src/test/moves/stockpile.test.ts @@ -72,7 +72,7 @@ describe("Moves - Stockpile", () => { expect(user.getStatStage(Stat.SPDEF)).toBe(3); expect(stockpilingTag).toBeDefined(); expect(stockpilingTag.stockpiledCount).toBe(3); - expect(user.getMoveHistory().at(-1)).toMatchObject({ result: MoveResult.FAIL, move: Moves.STOCKPILE }); + expect(user.getMoveHistory().at(-1)).toMatchObject({ result: MoveResult.FAIL, move: Moves.STOCKPILE, targets: [ user.getBattlerIndex() ]}); } } }); diff --git a/src/test/moves/swallow.test.ts b/src/test/moves/swallow.test.ts index c154d3c7c2c..b2435ba77b3 100644 --- a/src/test/moves/swallow.test.ts +++ b/src/test/moves/swallow.test.ts @@ -135,7 +135,7 @@ describe("Moves - Swallow", () => { game.move.select(Moves.SWALLOW); await game.phaseInterceptor.to(TurnInitPhase); - expect(pokemon.getMoveHistory().at(-1)).toMatchObject({ move: Moves.SWALLOW, result: MoveResult.FAIL }); + expect(pokemon.getMoveHistory().at(-1)).toMatchObject({ move: Moves.SWALLOW, result: MoveResult.FAIL, targets: [ pokemon.getBattlerIndex() ]}); }); describe("restores stat stage boosts granted by stacks", () => { @@ -156,7 +156,7 @@ describe("Moves - Swallow", () => { await game.phaseInterceptor.to(TurnInitPhase); - expect(pokemon.getMoveHistory().at(-1)).toMatchObject({ move: Moves.SWALLOW, result: MoveResult.SUCCESS }); + expect(pokemon.getMoveHistory().at(-1)).toMatchObject({ move: Moves.SWALLOW, result: MoveResult.SUCCESS, targets: [ pokemon.getBattlerIndex() ]}); expect(pokemon.getStatStage(Stat.DEF)).toBe(0); expect(pokemon.getStatStage(Stat.SPDEF)).toBe(0); @@ -183,7 +183,7 @@ describe("Moves - Swallow", () => { await game.phaseInterceptor.to(TurnInitPhase); - expect(pokemon.getMoveHistory().at(-1)).toMatchObject({ move: Moves.SWALLOW, result: MoveResult.SUCCESS }); + expect(pokemon.getMoveHistory().at(-1)).toMatchObject({ move: Moves.SWALLOW, result: MoveResult.SUCCESS, targets: [ pokemon.getBattlerIndex() ]}); expect(pokemon.getStatStage(Stat.DEF)).toBe(1); expect(pokemon.getStatStage(Stat.SPDEF)).toBe(-2); From 6681a913fececeb7e4d5372676cd7ece1fce782b Mon Sep 17 00:00:00 2001 From: "Amani H." <109637146+xsn34kzx@users.noreply.github.com> Date: Tue, 14 Jan 2025 20:25:18 -0500 Subject: [PATCH 086/119] [Bug] Prevent Duplicate Signature Species in Trainer Battles (#5059) * [Bug] Prevent Duplicate Signature Species in Trainer Battles * Apply Kev's Suggestion Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> --------- Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> Co-authored-by: damocleas --- src/field/trainer.ts | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/src/field/trainer.ts b/src/field/trainer.ts index fc12eb57abe..2b74c1e5069 100644 --- a/src/field/trainer.ts +++ b/src/field/trainer.ts @@ -428,7 +428,7 @@ export default class Trainer extends Phaser.GameObjects.Container { } // Prompts reroll of party member species if species already present in the enemy party - if (this.checkDuplicateSpecies(ret, baseSpecies)) { + if (this.checkDuplicateSpecies(baseSpecies.speciesId)) { console.log("Duplicate species detected, prompting reroll..."); retry = true; } @@ -443,17 +443,23 @@ export default class Trainer extends Phaser.GameObjects.Container { /** * Checks if the enemy trainer already has the Pokemon species in their party - * @param {PokemonSpecies} species {@linkcode PokemonSpecies} - * @param {PokemonSpecies} baseSpecies {@linkcode PokemonSpecies} - baseSpecies of the Pokemon if species is forced to evolve + * @param baseSpecies - The base {@linkcode Species} of the current Pokemon * @returns `true` if the species is already present in the party */ - checkDuplicateSpecies(species: PokemonSpecies, baseSpecies: PokemonSpecies): boolean { - const staticPartyPokemon = (signatureSpecies[TrainerType[this.config.trainerType]] ?? []).flat(1); - - const currentPartySpecies = globalScene.getEnemyParty().map(p => { - return p.species.speciesId; + checkDuplicateSpecies(baseSpecies: Species): boolean { + const staticSpecies = (signatureSpecies[TrainerType[this.config.trainerType]] ?? []).flat(1).map(s => { + let root = s; + while (pokemonPrevolutions.hasOwnProperty(root)) { + root = pokemonPrevolutions[root]; + } + return root; }); - return currentPartySpecies.includes(species.speciesId) || staticPartyPokemon.includes(baseSpecies.speciesId); + + const currentSpecies = globalScene.getEnemyParty().map(p => { + return p.species.getRootSpeciesId(); + }); + + return currentSpecies.includes(baseSpecies) || staticSpecies.includes(baseSpecies); } getPartyMemberMatchupScores(trainerSlot: TrainerSlot = TrainerSlot.NONE, forSwitch: boolean = false): [integer, integer][] { From d5f84cf3df7b5d5e0dcd9fffb9b8f49cb5ca0c74 Mon Sep 17 00:00:00 2001 From: damocleas Date: Tue, 14 Jan 2025 21:07:09 -0500 Subject: [PATCH 087/119] Change Archen HA from Emergency Exit to Wimp Out (#5124) --- src/data/pokemon-species.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/pokemon-species.ts b/src/data/pokemon-species.ts index 84486b30372..bd041fe7559 100644 --- a/src/data/pokemon-species.ts +++ b/src/data/pokemon-species.ts @@ -1834,7 +1834,7 @@ export function initSpecies() { new PokemonSpecies(Species.COFAGRIGUS, 5, false, false, false, "Coffin Pokémon", Type.GHOST, null, 1.7, 76.5, Abilities.MUMMY, Abilities.NONE, Abilities.NONE, 483, 58, 50, 145, 95, 105, 30, 90, 50, 169, GrowthRate.MEDIUM_FAST, 50, false), new PokemonSpecies(Species.TIRTOUGA, 5, false, false, false, "Prototurtle Pokémon", Type.WATER, Type.ROCK, 0.7, 16.5, Abilities.SOLID_ROCK, Abilities.STURDY, Abilities.SWIFT_SWIM, 355, 54, 78, 103, 53, 45, 22, 45, 50, 71, GrowthRate.MEDIUM_FAST, 87.5, false), new PokemonSpecies(Species.CARRACOSTA, 5, false, false, false, "Prototurtle Pokémon", Type.WATER, Type.ROCK, 1.2, 81, Abilities.SOLID_ROCK, Abilities.STURDY, Abilities.SWIFT_SWIM, 495, 74, 108, 133, 83, 65, 32, 45, 50, 173, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.ARCHEN, 5, false, false, false, "First Bird Pokémon", Type.ROCK, Type.FLYING, 0.5, 9.5, Abilities.DEFEATIST, Abilities.NONE, Abilities.EMERGENCY_EXIT, 401, 55, 112, 45, 74, 45, 70, 45, 50, 71, GrowthRate.MEDIUM_FAST, 87.5, false), //Custom Hidden + new PokemonSpecies(Species.ARCHEN, 5, false, false, false, "First Bird Pokémon", Type.ROCK, Type.FLYING, 0.5, 9.5, Abilities.DEFEATIST, Abilities.NONE, Abilities.WIMP_OUT, 401, 55, 112, 45, 74, 45, 70, 45, 50, 71, GrowthRate.MEDIUM_FAST, 87.5, false), //Custom Hidden new PokemonSpecies(Species.ARCHEOPS, 5, false, false, false, "First Bird Pokémon", Type.ROCK, Type.FLYING, 1.4, 32, Abilities.DEFEATIST, Abilities.NONE, Abilities.EMERGENCY_EXIT, 567, 75, 140, 65, 112, 65, 110, 45, 50, 177, GrowthRate.MEDIUM_FAST, 87.5, false), //Custom Hidden new PokemonSpecies(Species.TRUBBISH, 5, false, false, false, "Trash Bag Pokémon", Type.POISON, null, 0.6, 31, Abilities.STENCH, Abilities.STICKY_HOLD, Abilities.AFTERMATH, 329, 50, 50, 62, 40, 62, 65, 190, 50, 66, GrowthRate.MEDIUM_FAST, 50, false), new PokemonSpecies(Species.GARBODOR, 5, false, false, false, "Trash Heap Pokémon", Type.POISON, null, 1.9, 107.3, Abilities.STENCH, Abilities.WEAK_ARMOR, Abilities.AFTERMATH, 474, 80, 95, 82, 60, 82, 75, 60, 50, 166, GrowthRate.MEDIUM_FAST, 50, false, true, From 7ae216f0d6b4d2b11f6d757e7056969d014c87ca Mon Sep 17 00:00:00 2001 From: Wlowscha <54003515+Wlowscha@users.noreply.github.com> Date: Wed, 15 Jan 2025 07:18:24 +0100 Subject: [PATCH 088/119] [UI/UX] Shop cursor freedom (#5110) * Allowing cursor in shop to cycle horizontally * Improved cycling of commands --------- Co-authored-by: damocleas --- src/ui/modifier-select-ui-handler.ts | 38 +++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 6 deletions(-) diff --git a/src/ui/modifier-select-ui-handler.ts b/src/ui/modifier-select-ui-handler.ts index 05740a349c6..0cca087ce8d 100644 --- a/src/ui/modifier-select-ui-handler.ts +++ b/src/ui/modifier-select-ui-handler.ts @@ -364,6 +364,8 @@ export default class ModifierSelectUiHandler extends AwaitableUiHandler { success = this.setCursor(0); } else if (this.rowCursor < this.shopOptionsRows.length + 1) { success = this.setRowCursor(this.rowCursor + 1); + } else { + success = this.setRowCursor(0); } break; case Button.DOWN: @@ -371,13 +373,15 @@ export default class ModifierSelectUiHandler extends AwaitableUiHandler { success = this.setRowCursor(this.rowCursor - 1); } else if (this.lockRarityButtonContainer.visible && this.cursor === 0) { success = this.setCursor(3); + } else { + success = this.setRowCursor(this.shopOptionsRows.length + 1); } break; case Button.LEFT: if (!this.rowCursor) { switch (this.cursor) { case 0: - success = false; + success = this.setCursor(2); break; case 1: if (this.lockRarityButtonContainer.visible) { @@ -395,11 +399,21 @@ export default class ModifierSelectUiHandler extends AwaitableUiHandler { success = false; } break; + case 3: + if (this.lockRarityButtonContainer.visible) { + success = this.setCursor(2); + } else { + success = false; + } } } else if (this.cursor) { success = this.setCursor(this.cursor - 1); - } else if (this.rowCursor === 1 && this.rerollButtonContainer.visible) { - success = this.setRowCursor(0); + } else { + if (this.rowCursor === 1 && this.options.length === 0) { + success = false; + } else { + success = this.setCursor(this.getRowItems(this.rowCursor) - 1); + } } break; case Button.RIGHT: @@ -416,7 +430,7 @@ export default class ModifierSelectUiHandler extends AwaitableUiHandler { success = this.setCursor(2); break; case 2: - success = false; + success = this.setCursor(0); break; case 3: if (this.transferButtonContainer.visible) { @@ -428,8 +442,12 @@ export default class ModifierSelectUiHandler extends AwaitableUiHandler { } } else if (this.cursor < this.getRowItems(this.rowCursor) - 1) { success = this.setCursor(this.cursor + 1); - } else if (this.rowCursor === 1 && this.transferButtonContainer.visible) { - success = this.setRowCursor(0); + } else { + if (this.rowCursor === 1 && this.options.length === 0) { + success = this.setRowCursor(0); + } else { + success = this.setCursor(0); + } } break; } @@ -519,6 +537,14 @@ export default class ModifierSelectUiHandler extends AwaitableUiHandler { newCursor = 2; } } + // Allows to find lock rarity button when looping from the top + if (rowCursor === 0 && lastRowCursor > 1 && newCursor === 0 && this.lockRarityButtonContainer.visible) { + newCursor = 3; + } + // Allows to loop to top when lock rarity button is shown + if (rowCursor === this.shopOptionsRows.length + 1 && lastRowCursor === 0 && this.cursor === 3) { + newCursor = 0; + } this.cursor = -1; this.setCursor(newCursor); return true; From d2a3e4bb2d62164a2564d5799e35069bf2703ae8 Mon Sep 17 00:00:00 2001 From: Wlowscha <54003515+Wlowscha@users.noreply.github.com> Date: Wed, 15 Jan 2025 08:23:38 +0100 Subject: [PATCH 089/119] [UI/UX] Looping cursor in save slot selection screen (#5109) * Save slot selection allows looping * Removed debug logs --------- Co-authored-by: damocleas --- src/ui/save-slot-select-ui-handler.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/ui/save-slot-select-ui-handler.ts b/src/ui/save-slot-select-ui-handler.ts index 13f5020e5ad..fe2ac9e1221 100644 --- a/src/ui/save-slot-select-ui-handler.ts +++ b/src/ui/save-slot-select-ui-handler.ts @@ -157,6 +157,12 @@ export default class SaveSlotSelectUiHandler extends MessageUiHandler { success = (this.cursor === 0) ? this.setCursor(this.cursor) : this.setCursor(this.cursor - 1, cursorPosition); } else if (this.scrollCursor) { success = this.setScrollCursor(this.scrollCursor - 1, cursorPosition); + } else if ((this.cursor === 0) && (this.scrollCursor === 0)) { + this.setScrollCursor(SESSION_SLOTS_COUNT - SLOTS_ON_SCREEN); + // Revert to avoid an extra session slot sticking out + this.revertSessionSlot(SESSION_SLOTS_COUNT - SLOTS_ON_SCREEN); + this.setCursor(SLOTS_ON_SCREEN - 1); + success = true; } break; case Button.DOWN: @@ -164,6 +170,11 @@ export default class SaveSlotSelectUiHandler extends MessageUiHandler { success = this.setCursor(this.cursor + 1, cursorPosition); } else if (this.scrollCursor < SESSION_SLOTS_COUNT - SLOTS_ON_SCREEN) { success = this.setScrollCursor(this.scrollCursor + 1, cursorPosition); + } else if ((this.cursor === SLOTS_ON_SCREEN - 1) && (this.scrollCursor === SESSION_SLOTS_COUNT - SLOTS_ON_SCREEN)) { + this.setScrollCursor(0); + this.revertSessionSlot(SLOTS_ON_SCREEN - 1); + this.setCursor(0); + success = true; } break; case Button.RIGHT: From e2c6bec418e7d4e48ab3c37a0b51aadb860320f4 Mon Sep 17 00:00:00 2001 From: AJ Fontaine <36677462+Fontbane@users.noreply.github.com> Date: Wed, 15 Jan 2025 03:53:16 -0500 Subject: [PATCH 090/119] [Bug] Fix Poltergeist message displaying before move use (#5040) --- src/data/move.ts | 40 ++++++++++++++-------------------------- 1 file changed, 14 insertions(+), 26 deletions(-) diff --git a/src/data/move.ts b/src/data/move.ts index f3a1f3aa119..572fbf4c2ac 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -7878,31 +7878,6 @@ export class LastResortAttr extends MoveAttr { } } - -/** - * The move only works if the target has a transferable held item - * @extends MoveAttr - * @see {@linkcode getCondition} - */ -export class AttackedByItemAttr extends MoveAttr { - /** - * @returns the {@linkcode MoveConditionFunc} for this {@linkcode Move} - */ - getCondition(): MoveConditionFunc { - return (user: Pokemon, target: Pokemon, move: Move) => { - const heldItems = target.getHeldItems().filter(i => i.isTransferable); - if (heldItems.length === 0) { - return false; - } - - const itemName = heldItems[0]?.type?.name ?? "item"; - globalScene.queueMessage(i18next.t("moveTriggers:attackedByItem", { pokemonName: getPokemonNameWithAffix(target), itemName: itemName })); - - return true; - }; - } -} - export class VariableTargetAttr extends MoveAttr { private targetChangeFunc: (user: Pokemon, target: Pokemon, move: Move) => number; @@ -7976,6 +7951,18 @@ const failIfLastInPartyCondition: MoveConditionFunc = (user: Pokemon, target: Po const failIfGhostTypeCondition: MoveConditionFunc = (user: Pokemon, target: Pokemon, move: Move) => !target.isOfType(Type.GHOST); +const failIfNoTargetHeldItemsCondition: MoveConditionFunc = (user: Pokemon, target: Pokemon, move: Move) => target.getHeldItems().filter(i => i.isTransferable)?.length > 0; + +const attackedByItemMessageFunc = (user: Pokemon, target: Pokemon, move: Move) => { + const heldItems = target.getHeldItems().filter(i => i.isTransferable); + if (heldItems.length === 0) { + return ""; + } + const itemName = heldItems[0]?.type?.name ?? "item"; + const message: string = i18next.t("moveTriggers:attackedByItem", { pokemonName: getPokemonNameWithAffix(target), itemName: itemName }); + return message; +}; + export type MoveAttrFilter = (attr: MoveAttr) => boolean; function applyMoveAttrsInternal(attrFilter: MoveAttrFilter, user: Pokemon | null, target: Pokemon | null, move: Move, args: any[]): Promise { @@ -10641,7 +10628,8 @@ export function initMoves() { new AttackMove(Moves.LASH_OUT, Type.DARK, MoveCategory.PHYSICAL, 75, 100, 5, -1, 0, 8) .attr(MovePowerMultiplierAttr, (user, _target, _move) => user.turnData.statStagesDecreased ? 2 : 1), new AttackMove(Moves.POLTERGEIST, Type.GHOST, MoveCategory.PHYSICAL, 110, 90, 5, -1, 0, 8) - .attr(AttackedByItemAttr) + .condition(failIfNoTargetHeldItemsCondition) + .attr(PreMoveMessageAttr, attackedByItemMessageFunc) .makesContact(false), new StatusMove(Moves.CORROSIVE_GAS, Type.POISON, 100, 40, -1, 0, 8) .target(MoveTarget.ALL_NEAR_OTHERS) From 39b4d74e9592b76ae8159dfb43046b3ce7366ce3 Mon Sep 17 00:00:00 2001 From: Dean <69436131+emdeann@users.noreply.github.com> Date: Wed, 15 Jan 2025 01:06:09 -0800 Subject: [PATCH 091/119] [Bug] Fix #5029 Memory leak when saving and exiting (#5128) * Add destroy function to ui handlers * Implement destroy() for StarterSelectUiHandler * Update battlescene to free memory when resetting * Document destroy for starter select --------- Co-authored-by: damocleas --- src/battle-scene.ts | 3 +++ src/ui/settings/navigationMenu.ts | 7 +++++++ src/ui/starter-select-ui-handler.ts | 5 +++++ src/ui/ui-handler.ts | 5 +++++ src/ui/ui.ts | 11 +++++++++++ 5 files changed, 31 insertions(+) diff --git a/src/battle-scene.ts b/src/battle-scene.ts index 6db9311bac8..e9d5a97ab8d 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -1191,6 +1191,9 @@ export default class BattleScene extends SceneBase { onComplete: () => { this.clearPhaseQueue(); + this.ui.freeUIData(); + this.uiContainer.remove(this.ui, true); + this.uiContainer.destroy(); this.children.removeAll(true); this.game.domContainer.innerHTML = ""; this.launchBattle(); diff --git a/src/ui/settings/navigationMenu.ts b/src/ui/settings/navigationMenu.ts index eeb6da319ef..5fa53b7c270 100644 --- a/src/ui/settings/navigationMenu.ts +++ b/src/ui/settings/navigationMenu.ts @@ -89,6 +89,13 @@ export class NavigationManager { } } + /** + * Removes menus from the manager in preparation for reset + */ + public clearNavigationMenus() { + this.navigationMenus.length = 0; + } + } export default class NavigationMenu extends Phaser.GameObjects.Container { diff --git a/src/ui/starter-select-ui-handler.ts b/src/ui/starter-select-ui-handler.ts index 29c58d7087e..40325d24af7 100644 --- a/src/ui/starter-select-ui-handler.ts +++ b/src/ui/starter-select-ui-handler.ts @@ -2698,6 +2698,11 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.updateScroll(); }; + override destroy(): void { + // Without this the reference gets hung up and no startercontainers get GCd + this.starterContainers = []; + } + updateScroll = () => { const maxColumns = 9; const maxRows = 9; diff --git a/src/ui/ui-handler.ts b/src/ui/ui-handler.ts index 1f0155aef8b..89f8d9e65b6 100644 --- a/src/ui/ui-handler.ts +++ b/src/ui/ui-handler.ts @@ -62,4 +62,9 @@ export default abstract class UiHandler { clear() { this.active = false; } + /** + * To be implemented by individual handlers when necessary to free memory + * Called when {@linkcode BattleScene} is reset + */ + destroy(): void {} } diff --git a/src/ui/ui.ts b/src/ui/ui.ts index 6d44997f649..9e8c52b1d24 100644 --- a/src/ui/ui.ts +++ b/src/ui/ui.ts @@ -53,6 +53,7 @@ import TestDialogueUiHandler from "#app/ui/test-dialogue-ui-handler"; import AutoCompleteUiHandler from "./autocomplete-ui-handler"; import { Device } from "#enums/devices"; import MysteryEncounterUiHandler from "./mystery-encounter-ui-handler"; +import { NavigationManager } from "./settings/navigationMenu"; export enum Mode { MESSAGE, @@ -614,4 +615,14 @@ export default class UI extends Phaser.GameObjects.Container { return globalScene.inputMethod; } } + + /** + * Attempts to free memory held by UI handlers + * and clears menus from {@linkcode NavigationManager} to prepare for reset + */ + public freeUIData(): void { + this.handlers.forEach(h => h.destroy()); + this.handlers = []; + NavigationManager.getInstance().clearNavigationMenus(); + } } From d6247335659224a58674952af584158f090d9c59 Mon Sep 17 00:00:00 2001 From: Jimmybald1 <122436263+Jimmybald1@users.noreply.github.com> Date: Wed, 15 Jan 2025 10:12:50 +0100 Subject: [PATCH 092/119] [Bug] Fix #5034 removed unnecessary caught data block for certain forms (#5119) Co-authored-by: Jimmybald1 <147992650+IBBCalc@users.noreply.github.com> Co-authored-by: damocleas --- src/data/pokemon-species.ts | 13 ------------- src/system/game-data.ts | 5 +---- 2 files changed, 1 insertion(+), 17 deletions(-) diff --git a/src/data/pokemon-species.ts b/src/data/pokemon-species.ts index bd041fe7559..285c2a70236 100644 --- a/src/data/pokemon-species.ts +++ b/src/data/pokemon-species.ts @@ -948,19 +948,6 @@ export class PokemonForm extends PokemonSpeciesForm { } } -export const noStarterFormKeys: string[] = [ - SpeciesFormKey.MEGA, - SpeciesFormKey.MEGA_X, - SpeciesFormKey.MEGA_Y, - SpeciesFormKey.PRIMAL, - SpeciesFormKey.ORIGIN, - SpeciesFormKey.THERIAN, - SpeciesFormKey.GIGANTAMAX, - SpeciesFormKey.GIGANTAMAX_RAPID, - SpeciesFormKey.GIGANTAMAX_SINGLE, - SpeciesFormKey.ETERNAMAX -].map(k => k.toString()); - /** * Method to get the daily list of starters with Pokerus. * @returns A list of starters with Pokerus diff --git a/src/system/game-data.ts b/src/system/game-data.ts index 11b98d3fee6..58d416eb468 100644 --- a/src/system/game-data.ts +++ b/src/system/game-data.ts @@ -6,7 +6,7 @@ import type { EnemyPokemon, PlayerPokemon } from "#app/field/pokemon"; import type Pokemon from "#app/field/pokemon"; import { pokemonPrevolutions } from "#app/data/balance/pokemon-evolutions"; import type PokemonSpecies from "#app/data/pokemon-species"; -import { allSpecies, getPokemonSpecies, noStarterFormKeys } from "#app/data/pokemon-species"; +import { allSpecies, getPokemonSpecies } from "#app/data/pokemon-species"; import { speciesStarterCosts } from "#app/data/balance/starters"; import * as Utils from "#app/utils"; import Overrides from "#app/overrides"; @@ -1619,9 +1619,6 @@ export class GameData { const dexEntry = this.dexData[species.speciesId]; const caughtAttr = dexEntry.caughtAttr; const formIndex = pokemon.formIndex; - if (noStarterFormKeys.includes(pokemon.getFormKey())) { - pokemon.formIndex = 0; - } const dexAttr = pokemon.getDexAttr(); pokemon.formIndex = formIndex; From 95c6f4cd52b2a22c5099636d8de7e95d814b440b Mon Sep 17 00:00:00 2001 From: Madmadness65 Date: Wed, 15 Jan 2025 03:33:52 -0600 Subject: [PATCH 093/119] Update locales --- public/locales | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/locales b/public/locales index 4928231e22a..0d4d614a759 160000 --- a/public/locales +++ b/public/locales @@ -1 +1 @@ -Subproject commit 4928231e22a06dce2b55d9b04cd2b283c2ee4afb +Subproject commit 0d4d614a75998086e9bb10d9328d18b29b133f5b From 608a92b70c638c36e885f8868722fdd94219fd61 Mon Sep 17 00:00:00 2001 From: Madmadness65 Date: Wed, 15 Jan 2025 03:39:52 -0600 Subject: [PATCH 094/119] Revert "Update locales" This reverts commit 95c6f4cd52b2a22c5099636d8de7e95d814b440b. --- public/locales | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/locales b/public/locales index 0d4d614a759..4928231e22a 160000 --- a/public/locales +++ b/public/locales @@ -1 +1 @@ -Subproject commit 0d4d614a75998086e9bb10d9328d18b29b133f5b +Subproject commit 4928231e22a06dce2b55d9b04cd2b283c2ee4afb From ee6115f49dc895eb13a88f7e092a6cc4211032ce Mon Sep 17 00:00:00 2001 From: Scooom <97370685+Scoooom@users.noreply.github.com> Date: Wed, 15 Jan 2025 03:55:14 -0600 Subject: [PATCH 095/119] [Challenge] Flip Stats Challenge (#5087) * Implement Flip Stat Challange * Add Achivement * Update challenge code to block other challenges. * Add Achievment Image * Add FLIP_STAT to enum ChallengeType * Fix comment for FlipStatChallenge * Add applyFlipStat override to Challenge Class, and add override inside of FlipStatsChallenge * Add ChallengeType.FLIP_STAT case to export function applyChallenges (Master Switch Function) * Properly block other challange achviements * Change the way achivements are blocked by challenge modes to a more flexible method * Adjust the image for Flip Stat, and add an additional achivement for completing both Flip and Inverse * Fix FLIP_INVERSE achivement to check ALL challanges are met, not SOME * Remove outdated image * Fix FlipStat applyChallenges inside calculateBaseStats * Update locales --------- Co-authored-by: Scooom Co-authored-by: Scooom Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> --- public/locales | 2 +- src/data/challenge.ts | 51 +++++++++++++++++++++++++++++++ src/enums/challenges.ts | 1 + src/field/pokemon.ts | 1 + src/system/achv.ts | 67 +++++++++++++++++++++++------------------ 5 files changed, 91 insertions(+), 31 deletions(-) diff --git a/public/locales b/public/locales index 4928231e22a..acad8499a4c 160000 --- a/public/locales +++ b/public/locales @@ -1 +1 @@ -Subproject commit 4928231e22a06dce2b55d9b04cd2b283c2ee4afb +Subproject commit acad8499a4ca488a9871902de140f635235f309a diff --git a/src/data/challenge.ts b/src/data/challenge.ts index b5eca55cb71..a01ceab8aa3 100644 --- a/src/data/challenge.ts +++ b/src/data/challenge.ts @@ -88,6 +88,11 @@ export enum ChallengeType { * Modifies what weight AI pokemon have when generating movesets. UNIMPLEMENTED. */ MOVE_WEIGHT, + /** + * Modifies what the pokemon stats for Flip Stat Mode. + */ + FLIP_STAT, + } /** @@ -405,6 +410,16 @@ export abstract class Challenge { applyMoveWeight(pokemon: Pokemon, moveSource: MoveSourceType, move: Moves, level: Utils.IntegerHolder): boolean { return false; } + + /** + * An apply function for FlipStats. Derived classes should alter this. + * @param pokemon {@link Pokemon} What pokemon would learn the move. + * @param baseStats What are the stats to flip. + * @returns {@link boolean} Whether this function did anything. + */ + applyFlipStat(pokemon: Pokemon, baseStats: number[]) { + return false; + } } type ChallengeCondition = (data: GameData) => boolean; @@ -705,6 +720,33 @@ export class InverseBattleChallenge extends Challenge { } } +/** + * Implements a flip stat challenge. + */ +export class FlipStatChallenge extends Challenge { + constructor() { + super(Challenges.FLIP_STAT, 1); + } + + override applyFlipStat(pokemon: Pokemon, baseStats: number[]) { + const origStats = Utils.deepCopy(baseStats); + baseStats[0] = origStats[5]; + baseStats[1] = origStats[4]; + baseStats[2] = origStats[3]; + baseStats[3] = origStats[2]; + baseStats[4] = origStats[1]; + baseStats[5] = origStats[0]; + return true; + } + + static loadChallenge(source: FlipStatChallenge | any): FlipStatChallenge { + const newChallenge = new FlipStatChallenge(); + newChallenge.value = source.value; + newChallenge.severity = source.severity; + return newChallenge; + } +} + /** * Lowers the amount of starter points available. */ @@ -890,6 +932,9 @@ export function applyChallenges(gameMode: GameMode, challengeType: ChallengeType * @returns True if any challenge was successfully applied. */ export function applyChallenges(gameMode: GameMode, challengeType: ChallengeType.MOVE_WEIGHT, pokemon: Pokemon, moveSource: MoveSourceType, move: Moves, weight: Utils.IntegerHolder): boolean; + +export function applyChallenges(gameMode: GameMode, challengeType: ChallengeType.FLIP_STAT, pokemon: Pokemon, baseStats: number[]): boolean; + export function applyChallenges(gameMode: GameMode, challengeType: ChallengeType, ...args: any[]): boolean { let ret = false; gameMode.challenges.forEach(c => { @@ -934,6 +979,9 @@ export function applyChallenges(gameMode: GameMode, challengeType: ChallengeType case ChallengeType.MOVE_WEIGHT: ret ||= c.applyMoveWeight(args[0], args[1], args[2], args[3]); break; + case ChallengeType.FLIP_STAT: + ret ||= c.applyFlipStat(args[0], args[1]); + break; } } }); @@ -959,6 +1007,8 @@ export function copyChallenge(source: Challenge | any): Challenge { return FreshStartChallenge.loadChallenge(source); case Challenges.INVERSE_BATTLE: return InverseBattleChallenge.loadChallenge(source); + case Challenges.FLIP_STAT: + return FlipStatChallenge.loadChallenge(source); } throw new Error("Unknown challenge copied"); } @@ -971,5 +1021,6 @@ export function initChallenges() { new SingleTypeChallenge(), new FreshStartChallenge(), new InverseBattleChallenge(), + new FlipStatChallenge() ); } diff --git a/src/enums/challenges.ts b/src/enums/challenges.ts index c4dc7460dfe..7b506a61a2f 100644 --- a/src/enums/challenges.ts +++ b/src/enums/challenges.ts @@ -5,4 +5,5 @@ export enum Challenges { LOWER_STARTER_POINTS, FRESH_START, INVERSE_BATTLE, + FLIP_STAT, } diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index 8fc00e2ebeb..432f0a92fec 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -1057,6 +1057,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { calculateBaseStats(): number[] { const baseStats = this.getSpeciesForm(true).baseStats.slice(0); + applyChallenges(globalScene.gameMode, ChallengeType.FLIP_STAT, this, baseStats); // Shuckle Juice globalScene.applyModifiers(PokemonBaseStatTotalModifier, this.isPlayer(), this, baseStats); // Old Gateau diff --git a/src/system/achv.ts b/src/system/achv.ts index 1f5662dbdbe..fb17e7b1ced 100644 --- a/src/system/achv.ts +++ b/src/system/achv.ts @@ -5,7 +5,7 @@ import i18next from "i18next"; import * as Utils from "../utils"; import { PlayerGender } from "#enums/player-gender"; import type { Challenge } from "#app/data/challenge"; -import { FreshStartChallenge, SingleGenerationChallenge, SingleTypeChallenge, InverseBattleChallenge } from "#app/data/challenge"; +import { FlipStatChallenge, FreshStartChallenge, SingleGenerationChallenge, SingleTypeChallenge, InverseBattleChallenge } from "#app/data/challenge"; import type { ConditionFn } from "#app/@types/common"; import { Stat, getShortenedStatKey } from "#app/enums/stat"; import { Challenges } from "#app/enums/challenges"; @@ -280,6 +280,10 @@ export function getAchievementDescription(localizationKey: string): string { return i18next.t("achv:FRESH_START.description", { context: genderStr }); case "INVERSE_BATTLE": return i18next.t("achv:INVERSE_BATTLE.description", { context: genderStr }); + case "FLIP_STATS": + return i18next.t("achv:FLIP_STATS.description", { context: genderStr }); + case "FLIP_INVERSE": + return i18next.t("achv:FLIP_INVERSE.description", { context: genderStr }); case "BREEDERS_IN_SPACE": return i18next.t("achv:BREEDERS_IN_SPACE.description", { context: genderStr }); default: @@ -288,6 +292,7 @@ export function getAchievementDescription(localizationKey: string): string { } + export const achvs = { _10K_MONEY: new MoneyAchv("10K_MONEY", "", 10000, "nugget", 10), _100K_MONEY: new MoneyAchv("100K_MONEY", "", 100000, "big_nugget", 25).setSecret(true), @@ -330,35 +335,37 @@ export const achvs = { PERFECT_IVS: new Achv("PERFECT_IVS", "", "PERFECT_IVS.description", "blunder_policy", 100), CLASSIC_VICTORY: new Achv("CLASSIC_VICTORY", "", "CLASSIC_VICTORY.description", "relic_crown", 150, (_) => globalScene.gameData.gameStats.sessionsWon === 0), UNEVOLVED_CLASSIC_VICTORY: new Achv("UNEVOLVED_CLASSIC_VICTORY", "", "UNEVOLVED_CLASSIC_VICTORY.description", "eviolite", 175, (_) => globalScene.getPlayerParty().some(p => p.getSpeciesForm(true).speciesId in pokemonEvolutions)), - MONO_GEN_ONE_VICTORY: new ChallengeAchv("MONO_GEN_ONE", "", "MONO_GEN_ONE.description", "ribbon_gen1", 100, (c) => c instanceof SingleGenerationChallenge && c.value === 1 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_GEN_TWO_VICTORY: new ChallengeAchv("MONO_GEN_TWO", "", "MONO_GEN_TWO.description", "ribbon_gen2", 100, (c) => c instanceof SingleGenerationChallenge && c.value === 2 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_GEN_THREE_VICTORY: new ChallengeAchv("MONO_GEN_THREE", "", "MONO_GEN_THREE.description", "ribbon_gen3", 100, (c) => c instanceof SingleGenerationChallenge && c.value === 3 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_GEN_FOUR_VICTORY: new ChallengeAchv("MONO_GEN_FOUR", "", "MONO_GEN_FOUR.description", "ribbon_gen4", 100, (c) => c instanceof SingleGenerationChallenge && c.value === 4 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_GEN_FIVE_VICTORY: new ChallengeAchv("MONO_GEN_FIVE", "", "MONO_GEN_FIVE.description", "ribbon_gen5", 100, (c) => c instanceof SingleGenerationChallenge && c.value === 5 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_GEN_SIX_VICTORY: new ChallengeAchv("MONO_GEN_SIX", "", "MONO_GEN_SIX.description", "ribbon_gen6", 100, (c) => c instanceof SingleGenerationChallenge && c.value === 6 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_GEN_SEVEN_VICTORY: new ChallengeAchv("MONO_GEN_SEVEN", "", "MONO_GEN_SEVEN.description", "ribbon_gen7", 100, (c) => c instanceof SingleGenerationChallenge && c.value === 7 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_GEN_EIGHT_VICTORY: new ChallengeAchv("MONO_GEN_EIGHT", "", "MONO_GEN_EIGHT.description", "ribbon_gen8", 100, (c) => c instanceof SingleGenerationChallenge && c.value === 8 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_GEN_NINE_VICTORY: new ChallengeAchv("MONO_GEN_NINE", "", "MONO_GEN_NINE.description", "ribbon_gen9", 100, (c) => c instanceof SingleGenerationChallenge && c.value === 9 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_NORMAL: new ChallengeAchv("MONO_NORMAL", "", "MONO_NORMAL.description", "silk_scarf", 100, (c) => c instanceof SingleTypeChallenge && c.value === 1 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_FIGHTING: new ChallengeAchv("MONO_FIGHTING", "", "MONO_FIGHTING.description", "black_belt", 100, (c) => c instanceof SingleTypeChallenge && c.value === 2 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_FLYING: new ChallengeAchv("MONO_FLYING", "", "MONO_FLYING.description", "sharp_beak", 100, (c) => c instanceof SingleTypeChallenge && c.value === 3 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_POISON: new ChallengeAchv("MONO_POISON", "", "MONO_POISON.description", "poison_barb", 100, (c) => c instanceof SingleTypeChallenge && c.value === 4 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_GROUND: new ChallengeAchv("MONO_GROUND", "", "MONO_GROUND.description", "soft_sand", 100, (c) => c instanceof SingleTypeChallenge && c.value === 5 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_ROCK: new ChallengeAchv("MONO_ROCK", "", "MONO_ROCK.description", "hard_stone", 100, (c) => c instanceof SingleTypeChallenge && c.value === 6 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_BUG: new ChallengeAchv("MONO_BUG", "", "MONO_BUG.description", "silver_powder", 100, (c) => c instanceof SingleTypeChallenge && c.value === 7 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_GHOST: new ChallengeAchv("MONO_GHOST", "", "MONO_GHOST.description", "spell_tag", 100, (c) => c instanceof SingleTypeChallenge && c.value === 8 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_STEEL: new ChallengeAchv("MONO_STEEL", "", "MONO_STEEL.description", "metal_coat", 100, (c) => c instanceof SingleTypeChallenge && c.value === 9 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_FIRE: new ChallengeAchv("MONO_FIRE", "", "MONO_FIRE.description", "charcoal", 100, (c) => c instanceof SingleTypeChallenge && c.value === 10 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_WATER: new ChallengeAchv("MONO_WATER", "", "MONO_WATER.description", "mystic_water", 100, (c) => c instanceof SingleTypeChallenge && c.value === 11 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_GRASS: new ChallengeAchv("MONO_GRASS", "", "MONO_GRASS.description", "miracle_seed", 100, (c) => c instanceof SingleTypeChallenge && c.value === 12 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_ELECTRIC: new ChallengeAchv("MONO_ELECTRIC", "", "MONO_ELECTRIC.description", "magnet", 100, (c) => c instanceof SingleTypeChallenge && c.value === 13 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_PSYCHIC: new ChallengeAchv("MONO_PSYCHIC", "", "MONO_PSYCHIC.description", "twisted_spoon", 100, (c) => c instanceof SingleTypeChallenge && c.value === 14 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_ICE: new ChallengeAchv("MONO_ICE", "", "MONO_ICE.description", "never_melt_ice", 100, (c) => c instanceof SingleTypeChallenge && c.value === 15 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_DRAGON: new ChallengeAchv("MONO_DRAGON", "", "MONO_DRAGON.description", "dragon_fang", 100, (c) => c instanceof SingleTypeChallenge && c.value === 16 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_DARK: new ChallengeAchv("MONO_DARK", "", "MONO_DARK.description", "black_glasses", 100, (c) => c instanceof SingleTypeChallenge && c.value === 17 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - MONO_FAIRY: new ChallengeAchv("MONO_FAIRY", "", "MONO_FAIRY.description", "fairy_feather", 100, (c) => c instanceof SingleTypeChallenge && c.value === 18 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - FRESH_START: new ChallengeAchv("FRESH_START", "", "FRESH_START.description", "reviver_seed", 100, (c) => c instanceof FreshStartChallenge && c.value > 0 && !globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)), - INVERSE_BATTLE: new ChallengeAchv("INVERSE_BATTLE", "", "INVERSE_BATTLE.description", "inverse", 100, c => c instanceof InverseBattleChallenge && c.value > 0), + MONO_GEN_ONE_VICTORY: new ChallengeAchv("MONO_GEN_ONE", "", "MONO_GEN_ONE.description", "ribbon_gen1", 100, (c) => c instanceof SingleGenerationChallenge && c.value === 1 && !globalScene.gameMode.challenges.some(c => [ Challenges.INVERSE_BATTLE, Challenges.FLIP_STAT ].includes(c.id) && c.value > 0)), + MONO_GEN_TWO_VICTORY: new ChallengeAchv("MONO_GEN_TWO", "", "MONO_GEN_TWO.description", "ribbon_gen2", 100, (c) => c instanceof SingleGenerationChallenge && c.value === 2 && !globalScene.gameMode.challenges.some(c => [ Challenges.INVERSE_BATTLE, Challenges.FLIP_STAT ].includes(c.id) && c.value > 0)), + MONO_GEN_THREE_VICTORY: new ChallengeAchv("MONO_GEN_THREE", "", "MONO_GEN_THREE.description", "ribbon_gen3", 100, (c) => c instanceof SingleGenerationChallenge && c.value === 3 && !globalScene.gameMode.challenges.some(c => [ Challenges.INVERSE_BATTLE, Challenges.FLIP_STAT ].includes(c.id) && c.value > 0)), + MONO_GEN_FOUR_VICTORY: new ChallengeAchv("MONO_GEN_FOUR", "", "MONO_GEN_FOUR.description", "ribbon_gen4", 100, (c) => c instanceof SingleGenerationChallenge && c.value === 4 && !globalScene.gameMode.challenges.some(c => [ Challenges.INVERSE_BATTLE, Challenges.FLIP_STAT ].includes(c.id) && c.value > 0)), + MONO_GEN_FIVE_VICTORY: new ChallengeAchv("MONO_GEN_FIVE", "", "MONO_GEN_FIVE.description", "ribbon_gen5", 100, (c) => c instanceof SingleGenerationChallenge && c.value === 5 && !globalScene.gameMode.challenges.some(c => [ Challenges.INVERSE_BATTLE, Challenges.FLIP_STAT ].includes(c.id) && c.value > 0)), + MONO_GEN_SIX_VICTORY: new ChallengeAchv("MONO_GEN_SIX", "", "MONO_GEN_SIX.description", "ribbon_gen6", 100, (c) => c instanceof SingleGenerationChallenge && c.value === 6 && !globalScene.gameMode.challenges.some(c => [ Challenges.INVERSE_BATTLE, Challenges.FLIP_STAT ].includes(c.id) && c.value > 0)), + MONO_GEN_SEVEN_VICTORY: new ChallengeAchv("MONO_GEN_SEVEN", "", "MONO_GEN_SEVEN.description", "ribbon_gen7", 100, (c) => c instanceof SingleGenerationChallenge && c.value === 7 && !globalScene.gameMode.challenges.some(c => [ Challenges.INVERSE_BATTLE, Challenges.FLIP_STAT ].includes(c.id) && c.value > 0)), + MONO_GEN_EIGHT_VICTORY: new ChallengeAchv("MONO_GEN_EIGHT", "", "MONO_GEN_EIGHT.description", "ribbon_gen8", 100, (c) => c instanceof SingleGenerationChallenge && c.value === 8 && !globalScene.gameMode.challenges.some(c => [ Challenges.INVERSE_BATTLE, Challenges.FLIP_STAT ].includes(c.id) && c.value > 0)), + MONO_GEN_NINE_VICTORY: new ChallengeAchv("MONO_GEN_NINE", "", "MONO_GEN_NINE.description", "ribbon_gen9", 100, (c) => c instanceof SingleGenerationChallenge && c.value === 9 && !globalScene.gameMode.challenges.some(c => [ Challenges.INVERSE_BATTLE, Challenges.FLIP_STAT ].includes(c.id) && c.value > 0)), + MONO_NORMAL: new ChallengeAchv("MONO_NORMAL", "", "MONO_NORMAL.description", "silk_scarf", 100, (c) => c instanceof SingleTypeChallenge && c.value === 1 && !globalScene.gameMode.challenges.some(c => [ Challenges.INVERSE_BATTLE, Challenges.FLIP_STAT ].includes(c.id) && c.value > 0)), + MONO_FIGHTING: new ChallengeAchv("MONO_FIGHTING", "", "MONO_FIGHTING.description", "black_belt", 100, (c) => c instanceof SingleTypeChallenge && c.value === 2 && !globalScene.gameMode.challenges.some(c => [ Challenges.INVERSE_BATTLE, Challenges.FLIP_STAT ].includes(c.id) && c.value > 0)), + MONO_FLYING: new ChallengeAchv("MONO_FLYING", "", "MONO_FLYING.description", "sharp_beak", 100, (c) => c instanceof SingleTypeChallenge && c.value === 3 && !globalScene.gameMode.challenges.some(c => [ Challenges.INVERSE_BATTLE, Challenges.FLIP_STAT ].includes(c.id) && c.value > 0)), + MONO_POISON: new ChallengeAchv("MONO_POISON", "", "MONO_POISON.description", "poison_barb", 100, (c) => c instanceof SingleTypeChallenge && c.value === 4 && !globalScene.gameMode.challenges.some(c => [ Challenges.INVERSE_BATTLE, Challenges.FLIP_STAT ].includes(c.id) && c.value > 0)), + MONO_GROUND: new ChallengeAchv("MONO_GROUND", "", "MONO_GROUND.description", "soft_sand", 100, (c) => c instanceof SingleTypeChallenge && c.value === 5 && !globalScene.gameMode.challenges.some(c => [ Challenges.INVERSE_BATTLE, Challenges.FLIP_STAT ].includes(c.id) && c.value > 0)), + MONO_ROCK: new ChallengeAchv("MONO_ROCK", "", "MONO_ROCK.description", "hard_stone", 100, (c) => c instanceof SingleTypeChallenge && c.value === 6 && !globalScene.gameMode.challenges.some(c => [ Challenges.INVERSE_BATTLE, Challenges.FLIP_STAT ].includes(c.id) && c.value > 0)), + MONO_BUG: new ChallengeAchv("MONO_BUG", "", "MONO_BUG.description", "silver_powder", 100, (c) => c instanceof SingleTypeChallenge && c.value === 7 && !globalScene.gameMode.challenges.some(c => [ Challenges.INVERSE_BATTLE, Challenges.FLIP_STAT ].includes(c.id) && c.value > 0)), + MONO_GHOST: new ChallengeAchv("MONO_GHOST", "", "MONO_GHOST.description", "spell_tag", 100, (c) => c instanceof SingleTypeChallenge && c.value === 8 && !globalScene.gameMode.challenges.some(c => [ Challenges.INVERSE_BATTLE, Challenges.FLIP_STAT ].includes(c.id) && c.value > 0)), + MONO_STEEL: new ChallengeAchv("MONO_STEEL", "", "MONO_STEEL.description", "metal_coat", 100, (c) => c instanceof SingleTypeChallenge && c.value === 9 && !globalScene.gameMode.challenges.some(c => [ Challenges.INVERSE_BATTLE, Challenges.FLIP_STAT ].includes(c.id) && c.value > 0)), + MONO_FIRE: new ChallengeAchv("MONO_FIRE", "", "MONO_FIRE.description", "charcoal", 100, (c) => c instanceof SingleTypeChallenge && c.value === 10 && !globalScene.gameMode.challenges.some(c => [ Challenges.INVERSE_BATTLE, Challenges.FLIP_STAT ].includes(c.id) && c.value > 0)), + MONO_WATER: new ChallengeAchv("MONO_WATER", "", "MONO_WATER.description", "mystic_water", 100, (c) => c instanceof SingleTypeChallenge && c.value === 11 && !globalScene.gameMode.challenges.some(c => [ Challenges.INVERSE_BATTLE, Challenges.FLIP_STAT ].includes(c.id) && c.value > 0)), + MONO_GRASS: new ChallengeAchv("MONO_GRASS", "", "MONO_GRASS.description", "miracle_seed", 100, (c) => c instanceof SingleTypeChallenge && c.value === 12 && !globalScene.gameMode.challenges.some(c => [ Challenges.INVERSE_BATTLE, Challenges.FLIP_STAT ].includes(c.id) && c.value > 0)), + MONO_ELECTRIC: new ChallengeAchv("MONO_ELECTRIC", "", "MONO_ELECTRIC.description", "magnet", 100, (c) => c instanceof SingleTypeChallenge && c.value === 13 && !globalScene.gameMode.challenges.some(c => [ Challenges.INVERSE_BATTLE, Challenges.FLIP_STAT ].includes(c.id) && c.value > 0)), + MONO_PSYCHIC: new ChallengeAchv("MONO_PSYCHIC", "", "MONO_PSYCHIC.description", "twisted_spoon", 100, (c) => c instanceof SingleTypeChallenge && c.value === 14 && !globalScene.gameMode.challenges.some(c => [ Challenges.INVERSE_BATTLE, Challenges.FLIP_STAT ].includes(c.id) && c.value > 0)), + MONO_ICE: new ChallengeAchv("MONO_ICE", "", "MONO_ICE.description", "never_melt_ice", 100, (c) => c instanceof SingleTypeChallenge && c.value === 15 && !globalScene.gameMode.challenges.some(c => [ Challenges.INVERSE_BATTLE, Challenges.FLIP_STAT ].includes(c.id) && c.value > 0)), + MONO_DRAGON: new ChallengeAchv("MONO_DRAGON", "", "MONO_DRAGON.description", "dragon_fang", 100, (c) => c instanceof SingleTypeChallenge && c.value === 16 && !globalScene.gameMode.challenges.some(c => [ Challenges.INVERSE_BATTLE, Challenges.FLIP_STAT ].includes(c.id) && c.value > 0)), + MONO_DARK: new ChallengeAchv("MONO_DARK", "", "MONO_DARK.description", "black_glasses", 100, (c) => c instanceof SingleTypeChallenge && c.value === 17 && !globalScene.gameMode.challenges.some(c => [ Challenges.INVERSE_BATTLE, Challenges.FLIP_STAT ].includes(c.id) && c.value > 0)), + MONO_FAIRY: new ChallengeAchv("MONO_FAIRY", "", "MONO_FAIRY.description", "fairy_feather", 100, (c) => c instanceof SingleTypeChallenge && c.value === 18 && !globalScene.gameMode.challenges.some(c => [ Challenges.INVERSE_BATTLE, Challenges.FLIP_STAT ].includes(c.id) && c.value > 0)), + FRESH_START: new ChallengeAchv("FRESH_START", "", "FRESH_START.description", "reviver_seed", 100, (c) => c instanceof FreshStartChallenge && c.value > 0 && !globalScene.gameMode.challenges.some(c => [ Challenges.INVERSE_BATTLE, Challenges.FLIP_STAT ].includes(c.id) && c.value > 0)), + INVERSE_BATTLE: new ChallengeAchv("INVERSE_BATTLE", "", "INVERSE_BATTLE.description", "inverse", 100, (c) => c instanceof InverseBattleChallenge && c.value > 0), + FLIP_STATS: new ChallengeAchv("FLIP_STATS", "", "FLIP_STATS.description", "dubious_disc", 100, (c) => c instanceof FlipStatChallenge && c.value > 0), + FLIP_INVERSE: new ChallengeAchv("FLIP_INVERSE", "", "FLIP_INVERSE.description", "cracked_pot", 100, (c) => c instanceof FlipStatChallenge && c.value > 0 && globalScene.gameMode.challenges.every(c => [ Challenges.INVERSE_BATTLE, Challenges.FLIP_STAT ].includes(c.id) && c.value > 0)), BREEDERS_IN_SPACE: new Achv("BREEDERS_IN_SPACE", "", "BREEDERS_IN_SPACE.description", "moon_stone", 50).setSecret(), }; From c3641a370f66b26e1a2c6f3ed6a2d7d11ecd61b1 Mon Sep 17 00:00:00 2001 From: AJ Fontaine <36677462+Fontbane@users.noreply.github.com> Date: Wed, 15 Jan 2025 22:11:19 -0500 Subject: [PATCH 096/119] Add BW crit throw sound (#5131) --- public/audio/se/crit_throw.wav | Bin 0 -> 134444 bytes src/loading-scene.ts | 1 + src/phases/attempt-capture-phase.ts | 2 +- 3 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 public/audio/se/crit_throw.wav diff --git a/public/audio/se/crit_throw.wav b/public/audio/se/crit_throw.wav new file mode 100644 index 0000000000000000000000000000000000000000..a737410e7ce3857ea6369f1f828d555d476b5567 GIT binary patch literal 134444 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 { globalScene.field.moveBelow(this.pokeball as Phaser.GameObjects.GameObject, pokemon); }); From 188664f389aff4318c0a558339c8eebf2b7d10a6 Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Wed, 15 Jan 2025 19:25:08 -0800 Subject: [PATCH 097/119] [Sprite] Fix game not waiting for variant data to finish loading (#5130) Co-authored-by: Moka Co-authored-by: damocleas --- src/battle-scene.ts | 30 +++++++++++++++------------- src/data/pokemon-species.ts | 3 +-- src/field/mystery-encounter-intro.ts | 5 +++-- 3 files changed, 20 insertions(+), 18 deletions(-) diff --git a/src/battle-scene.ts b/src/battle-scene.ts index e9d5a97ab8d..9b578c1e977 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -363,28 +363,30 @@ export default class BattleScene extends SceneBase { /** * Load the variant assets for the given sprite and stores them in {@linkcode variantColorCache} */ - loadPokemonVariantAssets(spriteKey: string, fileRoot: string, variant?: Variant) { + public async loadPokemonVariantAssets(spriteKey: string, fileRoot: string, variant?: Variant): Promise { const useExpSprite = this.experimentalSprites && this.hasExpSprite(spriteKey); if (useExpSprite) { fileRoot = `exp/${fileRoot}`; } let variantConfig = variantData; - fileRoot.split("/").map(p => variantConfig ? variantConfig = variantConfig[p] : null); + fileRoot.split("/").map((p) => (variantConfig ? (variantConfig = variantConfig[p]) : null)); const variantSet = variantConfig as VariantSet; - if (variantSet && (variant !== undefined && variantSet[variant] === 1)) { - const populateVariantColors = (key: string): Promise => { - return new Promise(resolve => { - if (variantColorCache.hasOwnProperty(key)) { - return resolve(); - } - this.cachedFetch(`./images/pokemon/variant/${fileRoot}.json`).then(res => res.json()).then(c => { - variantColorCache[key] = c; + + return new Promise((resolve) => { + if (variantSet && variant !== undefined && variantSet[variant] === 1) { + if (variantColorCache.hasOwnProperty(spriteKey)) { + return resolve(); + } + this.cachedFetch(`./images/pokemon/variant/${fileRoot}.json`) + .then((res) => res.json()) + .then((c) => { + variantColorCache[spriteKey] = c; resolve(); }); - }); - }; - populateVariantColors(spriteKey); - } + } else { + resolve(); + } + }); } async preload() { diff --git a/src/data/pokemon-species.ts b/src/data/pokemon-species.ts index 285c2a70236..574c2a67f65 100644 --- a/src/data/pokemon-species.ts +++ b/src/data/pokemon-species.ts @@ -516,8 +516,7 @@ export abstract class PokemonSpeciesForm { globalScene.anims.get(spriteKey).frameRate = 10; } const spritePath = this.getSpriteAtlasPath(female, formIndex, shiny, variant).replace("variant/", "").replace(/_[1-3]$/, ""); - globalScene.loadPokemonVariantAssets(spriteKey, spritePath, variant); - resolve(); + globalScene.loadPokemonVariantAssets(spriteKey, spritePath, variant).then(() => resolve()); }); if (startLoad) { if (!globalScene.load.isLoading()) { diff --git a/src/field/mystery-encounter-intro.ts b/src/field/mystery-encounter-intro.ts index 4fce9b1dfc9..0110dabc7a9 100644 --- a/src/field/mystery-encounter-intro.ts +++ b/src/field/mystery-encounter-intro.ts @@ -215,11 +215,12 @@ export default class MysteryEncounterIntroVisuals extends Phaser.GameObjects.Con resolve(); } + const shinyPromises: Promise[] = []; this.spriteConfigs.forEach((config) => { if (config.isPokemon) { globalScene.loadPokemonAtlas(config.spriteKey, config.fileRoot); if (config.isShiny) { - globalScene.loadPokemonVariantAssets(config.spriteKey, config.fileRoot, config.variant); + shinyPromises.push(globalScene.loadPokemonVariantAssets(config.spriteKey, config.fileRoot, config.variant)); } } else if (config.isItem) { globalScene.loadAtlas("items", ""); @@ -254,7 +255,7 @@ export default class MysteryEncounterIntroVisuals extends Phaser.GameObjects.Con return true; }); - resolve(); + Promise.all(shinyPromises).then(() => resolve()); }); if (!globalScene.load.isLoading()) { From 481616c2ad3cbd12ef8a7d6f603677efc9475732 Mon Sep 17 00:00:00 2001 From: AJ Fontaine <36677462+Fontbane@users.noreply.github.com> Date: Thu, 16 Jan 2025 16:25:50 -0500 Subject: [PATCH 098/119] [Sprite] Fix female Scizor variants not showing (#5097) Co-authored-by: damocleas --- .../images/pokemon/variant/_masterlist.json | 2 + .../pokemon/variant/back/female/212.json | 41 +++++++++++++++++++ public/images/pokemon/variant/female/212.json | 41 +++++++++++++++++++ 3 files changed, 84 insertions(+) create mode 100644 public/images/pokemon/variant/back/female/212.json create mode 100644 public/images/pokemon/variant/female/212.json diff --git a/public/images/pokemon/variant/_masterlist.json b/public/images/pokemon/variant/_masterlist.json index 11f8e9cb7ec..3c5aedf2084 100644 --- a/public/images/pokemon/variant/_masterlist.json +++ b/public/images/pokemon/variant/_masterlist.json @@ -869,6 +869,7 @@ "198": [0, 1, 1], "203": [0, 1, 1], "207": [0, 1, 1], + "212": [1, 1, 1], "215": [0, 1, 1], "217": [1, 1, 1], "229": [0, 1, 1], @@ -1778,6 +1779,7 @@ "198": [0, 1, 1], "203": [0, 1, 1], "207": [0, 1, 1], + "212": [1, 1, 1], "215": [0, 1, 1], "217": [1, 1, 1], "229": [0, 1, 1], diff --git a/public/images/pokemon/variant/back/female/212.json b/public/images/pokemon/variant/back/female/212.json new file mode 100644 index 00000000000..84f12bf1434 --- /dev/null +++ b/public/images/pokemon/variant/back/female/212.json @@ -0,0 +1,41 @@ +{ + "0": { + "632929": "215a2d", + "f76b6b": "8cce73", + "a52929": "2f794e", + "101010": "101010", + "d63a3a": "4a9c53", + "9494a5": "9494a5", + "ffffff": "ffffff", + "b5b5ce": "b5b5ce", + "3a3a4a": "3a3a4a", + "9c6b21": "9c6b21", + "dec510": "dec510" + }, + "1": { + "632929": "2f2962", + "f76b6b": "639cf7", + "a52929": "29429c", + "101010": "101010", + "d63a3a": "4263ef", + "9494a5": "6262a4", + "ffffff": "ffffff", + "b5b5ce": "b5b5ce", + "3a3a4a": "3c3c50", + "9c6b21": "131387", + "dec510": "10bdde" + }, + "2": { + "632929": "645117", + "f76b6b": "c59f29", + "a52929": "b88619", + "101010": "101010", + "d63a3a": "ffca2a", + "9494a5": "3c4543", + "ffffff": "ffffff", + "b5b5ce": "b5b5ce", + "3a3a4a": "282d2c", + "9c6b21": "9c6b21", + "dec510": "dec510" + } +} \ No newline at end of file diff --git a/public/images/pokemon/variant/female/212.json b/public/images/pokemon/variant/female/212.json new file mode 100644 index 00000000000..55fcc0858ac --- /dev/null +++ b/public/images/pokemon/variant/female/212.json @@ -0,0 +1,41 @@ +{ + "0": { + "632929": "215a2d", + "f76b6b": "8cce73", + "101010": "101010", + "3a3a4a": "3a3a4a", + "ffffff": "ffffff", + "d63a3a": "4a9c53", + "b5b5ce": "b5b5ce", + "9494a5": "9494a5", + "a52929": "2f794e", + "dec510": "dec510", + "9c6b21": "9c6b21" + }, + "1": { + "632929": "2f2962", + "f76b6b": "639cf7", + "101010": "101010", + "3a3a4a": "3c3c50", + "ffffff": "ffffff", + "d63a3a": "4263ef", + "b5b5ce": "b5b5ce", + "9494a5": "6262a4", + "a52929": "29429c", + "dec510": "10bdde", + "9c6b21": "131387" + }, + "2": { + "632929": "645117", + "f76b6b": "c59f29", + "101010": "101010", + "3a3a4a": "282d2c", + "ffffff": "ffffff", + "d63a3a": "ffca2a", + "b5b5ce": "b5b5ce", + "9494a5": "3c4543", + "a52929": "b88619", + "dec510": "dec510", + "9c6b21": "9c6b21" + } +} \ No newline at end of file From ca0522436aff60e3229e2350c244660f233b8449 Mon Sep 17 00:00:00 2001 From: Scooom <97370685+Scoooom@users.noreply.github.com> Date: Thu, 16 Jan 2025 18:50:19 -0600 Subject: [PATCH 099/119] [Challenge] Make the Flip Inverse Challenge Secret (#5133) Co-authored-by: Scooom --- src/system/achv.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/system/achv.ts b/src/system/achv.ts index fb17e7b1ced..a2777101186 100644 --- a/src/system/achv.ts +++ b/src/system/achv.ts @@ -365,7 +365,7 @@ export const achvs = { FRESH_START: new ChallengeAchv("FRESH_START", "", "FRESH_START.description", "reviver_seed", 100, (c) => c instanceof FreshStartChallenge && c.value > 0 && !globalScene.gameMode.challenges.some(c => [ Challenges.INVERSE_BATTLE, Challenges.FLIP_STAT ].includes(c.id) && c.value > 0)), INVERSE_BATTLE: new ChallengeAchv("INVERSE_BATTLE", "", "INVERSE_BATTLE.description", "inverse", 100, (c) => c instanceof InverseBattleChallenge && c.value > 0), FLIP_STATS: new ChallengeAchv("FLIP_STATS", "", "FLIP_STATS.description", "dubious_disc", 100, (c) => c instanceof FlipStatChallenge && c.value > 0), - FLIP_INVERSE: new ChallengeAchv("FLIP_INVERSE", "", "FLIP_INVERSE.description", "cracked_pot", 100, (c) => c instanceof FlipStatChallenge && c.value > 0 && globalScene.gameMode.challenges.every(c => [ Challenges.INVERSE_BATTLE, Challenges.FLIP_STAT ].includes(c.id) && c.value > 0)), + FLIP_INVERSE: new ChallengeAchv("FLIP_INVERSE", "", "FLIP_INVERSE.description", "cracked_pot", 100, (c) => c instanceof FlipStatChallenge && c.value > 0 && globalScene.gameMode.challenges.every(c => [ Challenges.INVERSE_BATTLE, Challenges.FLIP_STAT ].includes(c.id) && c.value > 0)).setSecret(), BREEDERS_IN_SPACE: new Achv("BREEDERS_IN_SPACE", "", "BREEDERS_IN_SPACE.description", "moon_stone", 50).setSecret(), }; From ae2c9071e456e58981199e6bb17009ea05b1f191 Mon Sep 17 00:00:00 2001 From: damocleas Date: Fri, 17 Jan 2025 17:40:40 -0500 Subject: [PATCH 100/119] [Balance] Update starters.ts, removed redundant starters (#5125) --- src/data/balance/starters.ts | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/src/data/balance/starters.ts b/src/data/balance/starters.ts index ec66401675b..ee33142e981 100644 --- a/src/data/balance/starters.ts +++ b/src/data/balance/starters.ts @@ -51,9 +51,7 @@ export const speciesStarterCosts = { [Species.SANDSHREW]: 2, [Species.NIDORAN_F]: 3, [Species.NIDORAN_M]: 3, - [Species.CLEFAIRY]: 3, [Species.VULPIX]: 3, - [Species.JIGGLYPUFF]: 2, [Species.ZUBAT]: 3, [Species.ODDISH]: 3, [Species.PARAS]: 2, @@ -84,22 +82,15 @@ export const speciesStarterCosts = { [Species.VOLTORB]: 2, [Species.EXEGGCUTE]: 3, [Species.CUBONE]: 3, - [Species.HITMONLEE]: 4, - [Species.HITMONCHAN]: 4, [Species.LICKITUNG]: 3, [Species.KOFFING]: 2, [Species.RHYHORN]: 4, - [Species.CHANSEY]: 3, [Species.TANGELA]: 3, [Species.KANGASKHAN]: 4, [Species.HORSEA]: 3, [Species.GOLDEEN]: 2, [Species.STARYU]: 3, - [Species.MR_MIME]: 3, [Species.SCYTHER]: 5, - [Species.JYNX]: 4, - [Species.ELECTABUZZ]: 4, - [Species.MAGMAR]: 4, [Species.PINSIR]: 4, [Species.TAUROS]: 4, [Species.MAGIKARP]: 4, @@ -110,7 +101,6 @@ export const speciesStarterCosts = { [Species.OMANYTE]: 3, [Species.KABUTO]: 3, [Species.AERODACTYL]: 5, - [Species.SNORLAX]: 5, [Species.ARTICUNO]: 5, [Species.ZAPDOS]: 6, [Species.MOLTRES]: 6, @@ -132,8 +122,6 @@ export const speciesStarterCosts = { [Species.TOGEPI]: 3, [Species.NATU]: 2, [Species.MAREEP]: 2, - [Species.MARILL]: 4, - [Species.SUDOWOODO]: 3, [Species.HOPPIP]: 2, [Species.AIPOM]: 2, [Species.SUNKERN]: 1, @@ -142,7 +130,6 @@ export const speciesStarterCosts = { [Species.MURKROW]: 3, [Species.MISDREAVUS]: 2, [Species.UNOWN]: 1, - [Species.WOBBUFFET]: 2, [Species.GIRAFARIG]: 3, [Species.PINECO]: 2, [Species.DUNSPARCE]: 3, @@ -158,7 +145,6 @@ export const speciesStarterCosts = { [Species.CORSOLA]: 2, [Species.REMORAID]: 2, [Species.DELIBIRD]: 2, - [Species.MANTINE]: 3, [Species.SKARMORY]: 4, [Species.HOUNDOUR]: 3, [Species.PHANPY]: 3, @@ -206,7 +192,6 @@ export const speciesStarterCosts = { [Species.MINUN]: 2, [Species.VOLBEAT]: 2, [Species.ILLUMISE]: 2, - [Species.ROSELIA]: 3, [Species.GULPIN]: 1, [Species.CARVANHA]: 3, [Species.WAILMER]: 2, @@ -232,7 +217,6 @@ export const speciesStarterCosts = { [Species.SHUPPET]: 2, [Species.DUSKULL]: 3, [Species.TROPIUS]: 3, - [Species.CHIMECHO]: 3, [Species.ABSOL]: 4, [Species.WYNAUT]: 2, [Species.SNORUNT]: 2, @@ -543,7 +527,6 @@ export const speciesStarterCosts = { [Species.GALAR_PONYTA]: 2, [Species.GALAR_SLOWPOKE]: 3, [Species.GALAR_FARFETCHD]: 3, - [Species.GALAR_MR_MIME]: 3, [Species.GALAR_ARTICUNO]: 6, [Species.GALAR_ZAPDOS]: 6, [Species.GALAR_MOLTRES]: 6, From ea3fbecfd33737108052bdf558c6b0c2fa5b2f72 Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Sat, 18 Jan 2025 19:12:50 -0800 Subject: [PATCH 101/119] [Misc] Replace `globalScene` with `this` in `BattleScene` (#5142) --- src/battle-scene.ts | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/battle-scene.ts b/src/battle-scene.ts index 9b578c1e977..65ec6a844ee 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -112,7 +112,7 @@ import { ExpGainsSpeed } from "#enums/exp-gains-speed"; import { BattlerTagType } from "#enums/battler-tag-type"; import { FRIENDSHIP_GAIN_FROM_BATTLE } from "#app/data/balance/starters"; import { StatusEffect } from "#enums/status-effect"; -import { globalScene, initGlobalScene } from "#app/global-scene"; +import { initGlobalScene } from "#app/global-scene"; export const bypassLogin = import.meta.env.VITE_BYPASS_LOGIN === "1"; @@ -394,10 +394,10 @@ export default class BattleScene extends SceneBase { const originalRealInRange = Phaser.Math.RND.realInRange; Phaser.Math.RND.realInRange = function (min: number, max: number): number { const ret = originalRealInRange.apply(this, [ min, max ]); - const args = [ "RNG", ++globalScene.rngCounter, ret / (max - min), `min: ${min} / max: ${max}` ]; - args.push(`seed: ${globalScene.rngSeedOverride || globalScene.waveSeed || globalScene.seed}`); - if (globalScene.rngOffset) { - args.push(`offset: ${globalScene.rngOffset}`); + const args = [ "RNG", ++this.rngCounter, ret / (max - min), `min: ${min} / max: ${max}` ]; + args.push(`seed: ${this.rngSeedOverride || this.waveSeed || this.seed}`); + if (this.rngOffset) { + args.push(`offset: ${this.rngOffset}`); } console.log(...args); return ret; @@ -410,7 +410,7 @@ export default class BattleScene extends SceneBase { } create() { - globalScene.scene.remove(LoadingScene.KEY); + this.scene.remove(LoadingScene.KEY); initGameSpeed.apply(this); this.inputController = new InputsController(); this.uiInputs = new UiInputs(this.inputController); @@ -2954,7 +2954,7 @@ export default class BattleScene extends SceneBase { */ applyShuffledModifiers(modifierType: Constructor, player: boolean = true, ...args: Parameters): T[] { let modifiers = (player ? this.modifiers : this.enemyModifiers).filter((m): m is T => m instanceof modifierType && m.shouldApply(...args)); - globalScene.executeWithSeedOffset(() => { + this.executeWithSeedOffset(() => { const shuffleModifiers = mods => { if (mods.length < 1) { return mods; @@ -2963,7 +2963,7 @@ export default class BattleScene extends SceneBase { return [ mods[rand], ...shuffleModifiers(mods.filter((_, i) => i !== rand)) ]; }; modifiers = shuffleModifiers(modifiers); - }, globalScene.currentBattle.turn << 4, globalScene.waveSeed); + }, this.currentBattle.turn << 4, this.waveSeed); return this.applyModifiersInternal(modifiers, player, args); } From 24f1fedcd0012a0457c3db4a7782595275580a74 Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Sat, 18 Jan 2025 21:11:29 -0800 Subject: [PATCH 102/119] [i18n] Update locales submodule --- public/locales | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/locales b/public/locales index acad8499a4c..7bfcbccb9b8 160000 --- a/public/locales +++ b/public/locales @@ -1 +1 @@ -Subproject commit acad8499a4ca488a9871902de140f635235f309a +Subproject commit 7bfcbccb9b8192b1059ca7c4c7e7d24901cf579d From ab17df83c7edc173a4859ca3c1a69096bffa9c76 Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Sun, 19 Jan 2025 09:13:48 -0800 Subject: [PATCH 103/119] [Misc] Disable enforced type-only imports in `overrides.ts` (#5154) --- src/overrides.ts | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/overrides.ts b/src/overrides.ts index db54095a75a..1f8601b7659 100644 --- a/src/overrides.ts +++ b/src/overrides.ts @@ -1,19 +1,20 @@ +/* eslint-disable @typescript-eslint/consistent-type-imports */ import { type PokeballCounts } from "#app/battle-scene"; -import type { Gender } from "#app/data/gender"; -import type { Variant } from "#app/data/variant"; +import { Gender } from "#app/data/gender"; +import { Variant } from "#app/data/variant"; import { type ModifierOverride } from "#app/modifier/modifier-type"; -import type { Unlockables } from "#app/system/unlockables"; +import { Unlockables } from "#app/system/unlockables"; import { Abilities } from "#enums/abilities"; import { Biome } from "#enums/biome"; -import type { EggTier } from "#enums/egg-type"; -import type { Moves } from "#enums/moves"; -import type { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; -import type { MysteryEncounterType } from "#enums/mystery-encounter-type"; +import { EggTier } from "#enums/egg-type"; +import { Moves } from "#enums/moves"; +import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; +import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { PokeballType } from "#enums/pokeball"; -import type { Species } from "#enums/species"; +import { Species } from "#enums/species"; import { StatusEffect } from "#enums/status-effect"; -import type { TimeOfDay } from "#enums/time-of-day"; -import type { VariantTier } from "#enums/variant-tier"; +import { TimeOfDay } from "#enums/time-of-day"; +import { VariantTier } from "#enums/variant-tier"; import { WeatherType } from "#enums/weather-type"; /** From 46e1268a64d658cfccf5a2a7ff00b45a2b9b2d60 Mon Sep 17 00:00:00 2001 From: Unicornpowerstar Date: Sun, 19 Jan 2025 18:26:59 +0100 Subject: [PATCH 104/119] [Sprite][Color fix] 3 Venusaur and all forms (#5153) --- public/images/pokemon/3-gigantamax.png | Bin 1693 -> 1771 bytes public/images/pokemon/3-mega.png | Bin 1681 -> 1754 bytes public/images/pokemon/3.png | Bin 25756 -> 34719 bytes public/images/pokemon/back/3-gigantamax.png | Bin 1536 -> 1606 bytes public/images/pokemon/back/3-mega.png | Bin 1378 -> 1455 bytes public/images/pokemon/back/3.png | Bin 23970 -> 30200 bytes public/images/pokemon/back/female/3.png | Bin 23973 -> 29984 bytes .../pokemon/back/shiny/3-gigantamax.png | Bin 1539 -> 1588 bytes public/images/pokemon/back/shiny/3.png | Bin 24018 -> 29975 bytes public/images/pokemon/back/shiny/female/3.png | Bin 24018 -> 29941 bytes public/images/pokemon/female/3.png | Bin 25751 -> 34777 bytes public/images/pokemon/shiny/3-gigantamax.png | Bin 1693 -> 1734 bytes public/images/pokemon/shiny/3.png | Bin 25834 -> 34560 bytes public/images/pokemon/shiny/female/3.png | Bin 25818 -> 34586 bytes .../images/pokemon/variant/3-gigantamax.json | 12 +- public/images/pokemon/variant/3-mega_2.png | Bin 1753 -> 1775 bytes public/images/pokemon/variant/3-mega_3.png | Bin 1758 -> 1781 bytes public/images/pokemon/variant/3.json | 4 + .../images/pokemon/variant/_masterlist.json | 2 +- .../pokemon/variant/back/3-gigantamax.json | 18 +- .../images/pokemon/variant/back/3-mega_2.png | Bin 1449 -> 1470 bytes .../images/pokemon/variant/back/3-mega_3.png | Bin 1441 -> 1471 bytes public/images/pokemon/variant/back/3.json | 6 +- .../images/pokemon/variant/back/female/3.json | 4 + public/images/pokemon/variant/female/3.json | 30 +- public/images/pokemon/variant/female/3_2.json | 4136 ----------------- public/images/pokemon/variant/female/3_2.png | Bin 34388 -> 0 bytes 27 files changed, 61 insertions(+), 4151 deletions(-) delete mode 100644 public/images/pokemon/variant/female/3_2.json delete mode 100644 public/images/pokemon/variant/female/3_2.png diff --git a/public/images/pokemon/3-gigantamax.png b/public/images/pokemon/3-gigantamax.png index 4036c641327c02aab712918a477c233a5d06290e..d551638c8803dc40c0bf7e01e79c5f385bbdfbb7 100644 GIT binary patch delta 1747 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 O0000#(W01580cY^=`01|XkPE!E? z|NsC0|NsC0|NsC0|NsC0UcrVw000IwNkl0;w5422^Ryw!2w{a^O#NMiAl zw4L7hHPysvg5l$E5SYyE_BOJ_*NeX#()=Oel*uoYd+{IAbKbV?VIjn6ne@6%*$d_N zpRkpGtLXKy3UMhRpVt+IcK_S#Y}AJ`7FznC)zBt;`yRRsSlUZ0PoV4dTs0J}hJOp3 zOFWb;XsXvUx4Yj&*Crxb0n2llp3kRVGJq!8@Lwe>b}Mhy>jdPb+?fojskJp0X?yYhMLU9U9etKV@ggDcsI){kHVq3%m~S6Lj`Wm3BL< zvhsQ;sO*Qf`9w0nM7I<7K@&~uiLGPw74;6CH5Ev;H$BFfh-oV9uG~tnrrwZy@Y-1j z?qpSSEp9Xv2VBj4|LVmlCsYOt&3fox2Q)e&1kLBnL_&T0#~)eCYk9O9`v6fnwvGTBY5 zZ641i4_}OIMTKkRq2k4HB(t7n^d+AsgJ>12j=Gix%0^$B8FSI=+MPOB78)5Q+snyE zbj1Lj)MEu2)?Y*M!u-Or>yJqC)$)I?=+s7>fL1n>7TgQ}6_*4F$2L zL>so@&&ljCD&cd|tS_t8QpfFo(0{fkk#h^WAM@N`J95pMwoJ_q%a6&(x03&O-?=%c z8<;}!E?~~h#U{s+KEe@Xc2Esj1I1df&`J!TsylgeWTC+lbyV5w%ML-=3p})uCPH1j zJF=pcvfKO&B2qgtF}`-;gROjVKn?I@yV$K=TGj_pA(MV5S8F}foGMj+*TKnv1J@K~ zJBH>$*1vk78!gCG7qVn{s+ryU*mJOZvXazqM zEnLn)ALTP~s&=Q>TzQB}?bXmH*>)fjFtdyynCEO{nmvcF!PwO0GIY*^2`H08r)S0sbH$rqT7OCu_o zKenE%Ngd%~?>9$(zMZ{rvWf;&E|iprTI8`;Ny28S}2$P{@yfkQ*rV3*rxnsGT)^2kPZ#EBfnct$gyp;d4o z_kv?VpTQuP6z#zA63ix;s1;#ZxnI{d8#-2S3|BtL{GPafP7YUYw1N3Ewhgpb%aehv zAQY~WHSJFi6-U@?xKiH1L7l=hDcA}zH)ACSSwvym&PF#Cku2L{-83O~S;7=HRwulE zaIpGJLIwGVKJ2`_g*JQ4cECj$rmmCXf+h9kP`7OtzrR^WQWx$`RBvJNhjaN~T;ozV z%CVABdUYs&;H{E^Eud@7MlY2?N1^G=Hjuuy(3%8eS7NS)IeqeOuUCvuKgr1H(=t=MH>GgFf~3qFaNLShaGJHKeV#{ k7Wp@R<2QceACCV3GQf_Zo(euK00000NkvXXu0mh|f+C_crT_o{ delta 1616 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 diff --git a/public/images/pokemon/back/3-gigantamax.png b/public/images/pokemon/back/3-gigantamax.png index a368c97741eedaa1b70ca7d3cae1e7547f5209b3..278cb58b7657aa7328ff146bed381776c7ace6b1 100644 GIT binary patch delta 1555 zcmV+u2JHEO48{zQ7#auz0001;3{zYH0004VQb$4nuFf3k0000vktH#Ig8&IGRT=1` zqn4+wH2akg0000JbW%=J0RR90|NsC0|NsC0|NsC0|Ns9!Kin+<00o>$L_t(&f$f&t zqN6Gdh8xd1w$Szd54&@O0NQqq-FK6jWkumj@+Z*VZlBn+*xmAK+TYsrSjwB_t8S)E zu==?ykMH0Yr7q0HPXgnAM;lVlGmbjqn@ia5;q(_cr0* z#&_(2b9g*1;z<~Zo1oJs#;ypC*DG}H6T)-6(_<0(gZwP$w+q$zF}-GQ03h*%p9lB*UEyTwuN_d*+55Wereyfk|0KwEQrhhaR(JP&-U6?BH00PwcpGK8r6Br<<|&@aE*pSThJ5G+d}#1{IF_dEy;t}km$0ri zUinZhY3St`%4Z?-vxiXPUusjilNN@0=zgM<_)xb^jj!qsnVP`$lB`an&06n)L%cl% zP7b}v4>t2D{rUww5IAp3b|Irf{0fz~`t=yn6=61i1Ty;p3X%uNmk1QN8eeNa(qg=7 zpbQ?zG2%aS0UDQliPU)4E1_@~6wFk90C7~qn@DcNhx8NgDGN`E!wW-5l|q868wUz@ zCAj0q8RSmH2_Ppi=V`yqfEM~n#LAlIX8G`m-=FK9ijCnY- zN)C_o7<22o;Ilr0hztTxNHGhBa5m(wp=?lQ{4{w84`+PqobtWL&v5|GN1Bq=MJJ4pQM)I11k`vi z-!XXy(}QIg`c4vvA`Uh7jrll_3!ohbORN4o zT#8z~rec!Lh^IK@nBefWsx<9(TGx`!e45d9eJ*AkVmE*(rqV#FYTk^EFg0DhccPgU zGY&%!DkQN{!vSuNuMR|*&bNGpXa6<APV-b963(->NQrz|?iOOHaGE)axLB=R(5M)1H#KmFAP~T?K#-zsO%iafa$8>&$p? zG0~eA?}N?^J-*p0I=`h&L1%kj-L-V$7yh#Y$Xl+VGoCU)Kw5r+@2mWh2S}x9_8jn0 z&NN$%pIt*2^}TgcardC}Q#zMrf#;cT@irs>WGH3~gKJ-z>D2$z^1G7%E`W?~hvs$n zr{&j0dzW9=Otj|g+>vu8{Q>@VpnX@&Ga287_8zZc9?UwlD)Ym2?Rk1U?{ID2NT)$H z{O;#te(J%GVi5cJ`33*O7z**fOIHscB>K<(*+2V#>_38NpmIqh0zd!&002ovPDHLk FV1j=w6`ueA delta 1485 zcmV;;1v2`^41f%f7!3pi00013{JvcP001qKGBJM+-P!v90004WQchC|=cvo_1sCu zgJ6!U{GBtW{&~oc@ic}X=z^J)I(02+SPxK z(mHCuKG;hfz^bqb8}eKGx=D$<92abQ5JvVsW9UByRE&_6N$wT&j(PbZw4MgDj7J9#f z6aS}Az75Cc=rwR5BFC@_a(G4KWbb|Ni`6zy|1^3}Fh}h_4}O+~IP;?S|JK=Ul-`@^Ip->?|DoRPoEs|Ay*eGEo3>My*C8mA&n~?fpzng;a#6Pxtqn zAwX3$p5D(CGnw-wVW5}2eWHK3f1Ex&ObC#-b5{JjrB%WFFU#A60GZpTd-9Ku|Ik9` znU4xpSyEu952XQhu$hHGF0U0CKW$^|_?HkDosG)Xzt9AAo;A1d8^Fo`wud zU#JtxlugDc{wq7Gm{uP{2#YN1+hgBS^*&>HN5|8BDMY0z=<02yBR8^d-ml!ymJr8Y zDK(T8Jeib;vj@+$n#YZO&V~LKMVY1;X6tD#aAsJfxq&xD{=DTW%) zJ~@E8;Vt=x#4|&6WAdgeI&dE%4aZ!msS=^I@(Bj$8+@9f$+HwtGe93<%@@7pr;f~UMYl!29 zusGT1#a`)4PwjxBblD=VNk6e56rUKPh=n|I)8%HqO=xbyCp5afi! z2NSPQeaCmjG%zS`@`y;@v0BYqUN!w4;_cQeNe2*`4^M^oo>9vyM6+hcKETT>c}Z8T zmI4{AN4teNaKL|z*#UXZFYkoP2PPv$2VITPe(c4&S+#J%_QA}z3$%RmW>lx6U)tTu z12liy{L+hG!ujF5c2x>Ml&#!JP4*mn^s)kQ>cGo;DM~>4eSQ=;>AOD^6yFoj;=do) z?+;$CSb(D!cuebqZzHVwcBeq_Z(cGoZ#nw$IMT+B>Etz{;P;W{pN|C|?fp3ccmLy? ndRu^N%Ave59dOh?o&Wg>tG0v9ss!P_00000NkvXXu0mjf=Z@|u diff --git a/public/images/pokemon/back/3-mega.png b/public/images/pokemon/back/3-mega.png index 0c8512cb91bc87955664e8f9f6209ced2b32cf9d..5f4986de090e971f718e78b1102b4e217a8a964f 100644 GIT binary patch delta 1394 zcmV-&1&#XR3a<;0Bn|;{Qb$4nuFf3k0000pktHsFg8&IGRT%&P05JuR*8l(j5p+^c zQvm<}|NsC0|NsC0|NsC0|NjsbK%oEt1r13=K~z|U?U&h_sxT0Q>3|4`$@{FOmL zh&tc7v_~Dx@~67eQ5=TLh=}v%>xplv4}@a;Iau?b;W6&}{;*i%5bZfcYvb;}u!ZaB zjfty&2VZZSg8#yfdl9^CL~9+iZo*djcW6&o!5ckmG(ADy@_=v9296%|WV8t97k(q; z-1`kWDzp~8Mxj5Saph}77X3wy6sUnW=zKDjpL`*bi_rrAjO!a;?I1lBiV(rBc()RI zk7n+^R|WTADygfEb(3rM_7?v5>%M6Tq2SXD)a1I*o*VCHOsHtwSdid_T4IU!m3 zaZTn?o1oR)ma@^E{~qUT$?1|T;F_BcINk3Q7~Qo)D@mSrac+ce5U?#?_ppnchF(asd z9a=*@`c2jGfF$6IuEA?TmwppNuO%mrnP`?Hhi!ZuB;U0jR zqouUvbj2h#2hkj0bdv0x3-l~;q*qwhtOeo)$feEgTpA1pd1cKL<@JrMnrFr|@Fdt} zA;N{g>!5jN3jh@~U&6LR#j)Zc{E{?(^#UiXwIp!oS>Sn&WeUaNu4Hx_iIWW=L(U4H z9j;_bvvPGo8G{r}av}k){D&1nkRj-b;+0_446qkvo9d)o^y+5J*%T-W1S?ioEdr$r zB)k!z$5<@`VPh?+jK%eucB7&nr$WduSszC3(HR4@SV00*tUYG;!ghga^_>jA z)%ssDI+ctQ(84BCH)h8w8rYyAqHFM7oL*FTG9@yxq>mj;Suf!l7Lj~pTKJ6;?vQYg zq+wh~*Euf*){w=5P=Wm@>T0%sCVBniwQ+M6H$DU+s5S=BSt4jTR^dRF7B%G*#T*@ zVr#z%lsn<2e3aH7Pn)XMtn{qS8J>7zXFvuk7n;qCW2hgFE@ZA?NK$rx_su2aO|#6b zZsKaP^vXkW&$?;SnG=oFbEn{3_+0M23p_^e77Q&EQnowkY#PTJ?Lu8pb90{W?3`QB z)0FI617x~kb6YY^mW$jG+-nXB=-D z)R2b)=5ZPAUgrgPccwOfAkiX|d+>q0#e;UDEVq_DhK3v}GU+(dqT$pCcim$q#|9kQ zT?xJDrkYXTTIM#2;#h%4pd%c#r1Aq*GKL1-AC$3BJu31TqxO=6^AjyKdF;qNRl<); zY+6n4%~vR7u*VZ}=)uB9^ts4~(x`%oMRwgiIo!@Eh#P>FC@y8;hcgAF~wp3FP0enP(ZS^Rq5RsD>f{0Cf3sGjv^aW?3D&`UU7IM#{g zO86Z8cIDRO{{|lFto|$Z7r*$$FMjchUwjn*0F$0_8RNPP-T(jq07*qoM6N<$f&^=} AP5=M^ delta 1317 zcmV+=1={+r3*ripBmpXsGA@78)CR8r0004WQchCyoN4 z5QOOoG8pmwU-x8gxd5VWou5vr#ggPpPiKO0r|B|S;{5jX_mJTa3B$yD^4ougGjH4W z@VN8D{+`(HmFB;&l^f_>i1&zcowI@e!se|B&KbD(fqPcA(Z54S!UliNc=l*Kg`8^# z{vON`cowt@FCXO(CD+z(&}`6N^qrOdeDb|qOH|Qc)JTImIE&6_p_X^KP|3|`g@4A4 zh3{4nPlHOR;M_`2yYeU8ZR-l|0RZM|V8i5|o!_FX-Yu}r66QN|R}~d5;L>~vE}X1r z=RSr2?`{-0kagzAHMxKE%8E8~M@k0cfDX3ibV*il&#fCA%pfp!_eCqTR<6k2qi`p5 z3m;%5v$LZqe}qQPxsD!>PiPva7FjvdqcN&7lYT5iHH_p(Jd#-_&9$^W;a?yTeB}6sa5m> zyRPe^Ym}ozBx6~7QkzLN69XX4F1UhTG>-HRiv?C7QGhu^7mkVULcTL&MxEcurg?fxBSrRW1>g5nLlL74MHBJtiP7CP?8f8aEFC+ z1KsDmHrPN$Je~p^ThV6oIT7_QpM#r=x}o}f3M~|LCaBtu>>FFzT5@5nu*8s+W>npz zTTlcb7L0#ro}H@?NDeT^jx*h6NXS-ud-59l8}+fL-16Z>4l?@$hL!gkt{Q(O5LV6J zcgpZM749q_oX4orMXhCJdu^$38Mrf`f{iPh-Hc$|U%{sC>#Pwut z)tBa8bz`=XGZOaPnSv`mx3hPHGe@&xuv&$9+1Y<+q|~EBXb2h(=j~)S*Kl;X@NW$v z<38FPn@Rl(}zMs$jx_uAVE&usgijB)3_?M7d;;7Afupu zX@GxI2Tp=!anO^hFR7A51A4zvQlmz6P2ylJNot~U_ZP(NyVx5{+h=_MQ&j_pL#wqg2DF_sJP-@rpw{}ua-U;N@1zxWx& bFFuNYqqt#rzg`cT00000NkvXXu0mjfnp=Gs diff --git a/public/images/pokemon/back/3.png b/public/images/pokemon/back/3.png index 4312bfbce2c55914f3ba726105876b219206282d..9f833c7d122ad9f7dd6c7ef083131353473ea8d9 100644 GIT binary patch literal 30200 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 AOaK4? diff --git a/public/images/pokemon/back/female/3.png b/public/images/pokemon/back/female/3.png index 0fdbf4e9be2e3e9cfe1d4a83461f820f60703845..ef103db8ce07bd8723c9aae3d814388ace27e932 100644 GIT binary patch literal 29984 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 VMY)t{coP5s002ovPDHLkV1nhBzajtt literal 23973 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�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 delta 1488 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 VFm9;)oQVJc002ovPDHLkV1kcL+q3`x literal 24018 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

    `jAylrO9!%>SjJh|#40_|9Csl8kuS4*axN%b^Vk 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 diff --git a/public/images/pokemon/female/3.png b/public/images/pokemon/female/3.png index 646157beb3277d6440a3d9622b237ea1303ce776..e21b53dfd573105824c27d9cfae2a39168fce2b3 100644 GIT binary patch literal 34777 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 ^acawz<0gqj$qSpE= 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 U*fD3gxBvhE07*qoM6N<$f;Lqf#{d8T literal 25751 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 diff --git a/public/images/pokemon/shiny/3-gigantamax.png b/public/images/pokemon/shiny/3-gigantamax.png index ee4705de701934c54dc13c57252db981618350cb..acc57a416719c6d40f8d7df424803e6cac31b30d 100644 GIT binary patch delta 1670 zcmV;126_3N4aNIFua4E z!{1r|Ho(hNS585HK6%6viSY)2%95_C3y05Vl3%|EJmw-RlzA0-I*;pm3qW;Af3|~W zvvNt+7{7OER?o#N1-yhrAOd`y1b2@9TRjVFTLFCU(yUG64JymQQZkdi)7O=iJJdh9 z22y|<$~@Z|kc0M*9=MC{=u`Gam0ynWHd=3KA~s3;#wn|ReU~o1C53KK4G8dkk*@)( zBEHtYBFIwywuz#|{L*7Q=zqD&Sn(<0$0s9<6~6-%@#izeU5>jVQilC!eG%Vx7fSkd z*Fy#<;@1G4`d;Kn#pQMzN@d__Zv94{p4k;}(9c8B+)`lFR6b*ne2T@JgMKx%XTZMa zKKMjF8=U8Vzt=b`LVdO~!Nz|;uy(Xo*|Qt_UJA0efKrHj`&<1(Jx^v_04z^^>wWHQW@+?qs{(=Y151-c3R z3Sf^kgqTv^6Fax3qab_$NVQ9mPsE(qQ;kQ#E5KC>F)4sQY%k^Smw@yJkljobp#@l! zTw*Iom*Ap}-T^@MA!R`FhKf)CatR<^5X@-zzz8CG1jOb(PI09lEYC&=AiclV_ z0MSzbyG{_#h4uI6P^CbQg?J6HOJ)fT2!IuVyH7v)dXQW=t>O6`4*+qsrysomz$**t zQ3Q1gk)Gz@S=u9E9LKu)!HOO`VZwCR06hSI4g}zsC_rPH_#9k9&)dGO(!)UtNqIxm zrV)bZr%3wKMPxD1ZkD00#%)83Z{YIU6|O5Hy53YFDkw4_$6F zf6`^?;HsFTLZJarAUvxZiH044ay$Q{7jh5<+)T%UW6I;klz1GcR1g+QogELGMdFcWBh7<{MDKH||q^jpA2 z<#qkCqM`IA7=iyXV8{T?f>(*`AR8Vk9I||+PhYbmW)B}dElI)Vp36X227bkVHvm>& zrk?&(%BnS{hMK_qvJ|RNGwD?$FEbaf)u-d0$NOfkv9|0aL!1X30I1!?&9MXv60bTR z+C3ck>e2v^0f7O*x9l2#1|Wh(t>8tWRLdX(;6e;eBiydb5+E-y z?H&g3TbC#1D0Sflr~O(>Iw*)gZN$A)7(YhjG8LYVk3a8D7&vKEfF|@MQwrw zeK%47|2DA~Y6Z~cHrYGvf)fg8b5R>0khV4A~@W>5%m) zf&8oBCjf0&{&P~rg>eQf6Llb9P5{KDP9bQm2m>>KUJvvajFJPhMFyZ+(f>-I{=Ch< z%TD^DM*5pi2Dgp>j8@&bw82GigQz9D_OQOF6#zNJi0#zWC%_^Altm^@-C_WXyyH`V{ezxZF`58~Xqi0kaR Qa{vGU07*qoM6N<$g4?$S=>Px# delta 1629 zcmV-j2BP`K4V?{;7zqRe0000GwrUHJECR+rKOW}sW4b};}$rnLVQSBgI<-}lfu?#SgPu_wKs|81R#ajUxYE&1x#Xp@m?>KX7H9UC8xA#Fp1N{U%E1X-mOSKj zy<$remx>0TLey-h81}bwv1RK7}>1`F~$T= z)27kBvx^DhP9sL(&z>IeIR@MZ=YMx@r4=4gURS48>0uaErTcA*#Ay_ z#rKyP0HDaAza&qJJv?Z<^zMZLYkq!!XU!tmVZesQ{o76*>o#r#VE~r=1RRp4VAze8 z5(xopxC^A0v9X{s0aQ6xkTSNXAY|dkuwlU9W7s%VIu|CADlFXv_b&N|OH0XJ5m%}5 zLxLn~KF7(+6<3Vxmgq1O$$Y;L&|wEK^v<6Zz~+Dm0SuI)K1$*(KA!FY za1^nysa;qgfjF1~#7f07SDZM8&sWzS@P)Kni-;+o$Fl&y^Lu|FPgflfN_O)IEW1a3 zK^yejaH*7e5KFU`aW0kWK`iCA5rXTxU*hif{b%@!0LpTmC#5lK0IBj0oG6)3UQx~U zEO26I0HI=IgeeSw`9THfcI^QqG4!0lCjb^`;6MUU7A7eH*5pfd?!cJj^w0qRtoKU? zasyx}0YD0DK|Fs^xenr3{ycRJ{(SlJ^7aUTy~!jPrzoP5-xRr!c?XJDM0oh6Wp6dt7!RGH8{ULgik79SFBcso+Aa9B4n^ zb_dPC2QX1#3KKC<43NYqMHkag4rs35z(7U3Efsi1SUi7F-q3->#Nph5w?%DT16JL( z5t%ZLk^%rLa88UFhavC$rf(lDBCG>M0BB%Rii&9b4ib}$?3qSxYs>Mi1Gn{^14$Z2 z#hkE&0|`J?Bd(Ba59&H9qY|J@L%+~Cu6Hp0TUkZ+9V{ORhsJj(4K*zQa<@Y=e!!aK zGO|aotSNsQGbk|cB{_g3-o!5L78g-{jINg$>MWro0l3rw5jlXf&aZ;CW&{E_FzuN0exj|0G4-WwXGQF zKnWr8BS0906kehF2B2JGCd6(ljrd9`^&RkhO%#9KXl?WXJU&zt^j0MJwJC#4 zG?=T4&m%EdRF`5h4^&QcSh~s5O~ZZL3@>wcu|^o!kb4i^KrUI+c3?jA+gBp*2sk#p z)R*4CU3VeTrdd0|pB^5sX0!WukWDgId`R|6Sxd)aZqUxMS$&VwsG4??z5WxR^rF9X z1Widht1||EOZfKN48Ls((9~H|*WQo@c>G(4K<--xgAWE<`E7GYgO7$VN!#CukE6kV bkpJ@+8QCv@w_{sP00000NkvXXu0mjf_DtXT diff --git a/public/images/pokemon/shiny/3.png b/public/images/pokemon/shiny/3.png index fb4545e301966f666930b60ad6ec84c3bfcc5b8a..4afd3847484c849d4526a840dd163220bb8c2206 100644 GIT binary patch literal 34560 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 z z*}H)RXo)wbP7Rc(+a9OQ7i(u436zbyx^IVCJ$27x-;qDCRJ+o+q;~D4(91-TndxW4 z$+(i#k;mV9c%t^?qI0F5(BJ8V8a?Mj4_r7lOEIlLN*ojDuyh`aGR=vId{LY5Fv+@oP` zl9W)PC~yaLCU22(6za?>7KoU@xJwzuqtos#9%LVkdDB0L#*yTx#j4iX+I5A42ifQk zq%h-2o)btY?$NNhfT9}S);f#-MXjg8d)}suSxaSI+%w3$=|?$7(KwzQ-<{;D?4H3dJoNRzs0vp98Xr1hH|GKS2tVhG>;;4e6PS{^(jbcdRCG_YG%BY1g(8VC(hC!BnGmf-tV6?uv=WNy;nfXwp8Ob}A&HPvdvv!lP8Aw;!u~;4l=hn~GZzLq z791f59r5EBdDFA(37fUX9~_n}lAlLRPKaVJiHe*!VJM3Ib*5!@Lrh-J!UlNvDr1et z!1Q|uSy9?}kXyFQTpHxafM=|J7$5iVdeh|Oz`ri6(}tUU0?x8ZHE=={J4mdf7>VMg zx6WP_Q(25Hx?35`G{&aid8tuU+9c(eEi*P&a?IrTp%-jKc6?x&1Fh%juJ58`F^WAT z)=*4D@zSnyKw^%Zl*V>8P{S;N)r&)7VzVh{iVG9fPcy{)jDe_=~-zAy3fGV1sjV%(xHP z&OJi0Nn#7dP!v1rToc7hj>fL;u2SX<-#su^GJd^f{t0e)+#H$jO*E^{_Nz`}6U9Un zTMpO~#YE zoN>k(XPj}y8E2ev#u;avamE>EoN>k(XPj}y8E2ev#u=sfA0yYi_@% literal 25834 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 diff --git a/public/images/pokemon/shiny/female/3.png b/public/images/pokemon/shiny/female/3.png index aeacf461779620dca5b49420e4cd52175056e9a1..ec5a9849e6023dccf527cd2d8cb4abe2ba62bc89 100644 GIT binary patch literal 34586 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 diff --git a/public/images/pokemon/variant/3-gigantamax.json b/public/images/pokemon/variant/3-gigantamax.json index 7b341b367aa..9b74b1131ba 100644 --- a/public/images/pokemon/variant/3-gigantamax.json +++ b/public/images/pokemon/variant/3-gigantamax.json @@ -4,6 +4,8 @@ "ffee52": "37d6de", "debd29": "078a8f", "833100": "002112", + "830009": "23033b", + "189d87": "c2247b", "ff7b73": "712f8f", "de4141": "3f1375", "ffbdbd": "a266b0", @@ -11,6 +13,7 @@ "107b6a": "9e1976", "105241": "4f2800", "83de7b": "a37707", + "2e5529": "38001c", "5a9c39": "705207", "20b49c": "de3592", "fdfdfd": "fdfdfd", @@ -21,14 +24,17 @@ "ffee52": "f75ea8", "debd29": "a30a66", "833100": "0b2e01", + "830009": "154205", + "189d87": "f17f05", "ff7b73": "9db042", "de4141": "3c8227", "ffbdbd": "e7e385", "101010": "101010", "107b6a": "d44300", - "105241": "030129", - "83de7b": "433d99", - "5a9c39": "19164f", + "105241": "381601", + "83de7b": "80ced9", + "2e5519": "011c38", + "5a9c39": "446b94", "20b49c": "fa8405", "fdfdfd": "fdfdfd", "5ad5c5": "faa405" diff --git a/public/images/pokemon/variant/3-mega_2.png b/public/images/pokemon/variant/3-mega_2.png index ddc2bd976ad258902f12933c03b341676e8df0b0..54ca687d1c3ac6da1ec8f2d3774650158c985e55 100644 GIT binary patch delta 1689 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 diff --git a/public/images/pokemon/variant/3-mega_3.png b/public/images/pokemon/variant/3-mega_3.png index 56945d383e6929361b1c0508b53e2fbd4d27635c..07ddb5ae7ede614fce33721327e3472203762d19 100644 GIT binary patch delta 1692 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 delta 1366 zcmV-c1*!VJ3#ki`F#$7?GB8#s8-i_s9yC;kF*Zv729D6|&+44}VW;mOw$S@bVz zq(BWkiq02P`QQskE=B|X8P^xST0wd#R04us@n$7-jb`q)RRwovDygfEb(3rMc!|z> zH^&xB0#|aVsv^S$%*}tNVCIZK8~5G>h3*E!IU&q^KPPjq5ok5HrHl;Tp`DGKPRRh* z+`Pew8IjT5ebGv&l{2#SVD3QG!aEq`U~F$1KSFZ{tPuQeN<^KAF%q@tO^K+Ukxs}# zXQsjhnFbOcgv|d@Gx3(m@4-wASwSP2Sui829a=*@`l9N%Lj->~qigW3pi8@nq4$zm zQCx{uY&luR`%ZE&qeZkf+tNi?72jY}N-NfA^b(PbW$hzuj?f&%=!oo`E9e!mr&n0k ztOeo)$fb>iW4$*a-&pfZd440S=9MuGJOY~%kz4>?2dyhxAW)!jS#=4rt+)%HqNZNp zBy*)G+;s&!kFkGDMR5#DX167AvJPa(RpG0{l}vF}u1<(PlA=kDNHyH}pUe=oi!=pz z1+1DO?4)c{9hEDsx)^IV1&T$t8JZI9JJQ#@k~^ywFdOw7c}xG5~*D=0as8*K691D($i>Ko*nr zW8@y4F@lB_1fXK=v$_}lI0;m_Az!urQ%1*W7bP@Ef$gPDGh&7VkierB%4YX%+PhtslXaC`QypKz7=&go0Gi$<=nWr!VT!N zDNra>nE-#a71=g6*eE%-R#;+4iZf;15nE6MkS|z_^K4u^AcKR0?>N=1hPZ6lTa%OT zZ+~tZmrq6vP7XGKV&zEgs`8W6enR%PQ<}%AaA!G{M``_d8da@krF(77a2ePckip6o z&1S|v)DK4&GFPyWmEHa2LVweYk=09FO-3s|$UT4SrddbMv{28TqjSaQ^6p*WA$T(| zl(a&u>~u6OOO1A+E~t4qFK>2p4ny;W{nZdMJ=mhDCDUxVSe|<>&~t_MRiR|%7UM&r zCsWMWn%p{aXD=gV)!;LR7TG$>^3b4$JQOhZ%V_sHPr$1)x4~$SOzy!u@)&m7iL%^U z_A-ApK^(NC@<*yfC1-TE zQKqF(Ju31Ng0_-_^TBr-^3sueD#Eu*XzrTchtE*R!d?!@Qx67PqR#~nrNtgWEV66v z$Ayp#M+v6TvqsZX$YbvC8?=Fw2R#`L;e6sZAm`TKpp!yt z(YGG-=d-^(Z)nY;e^Da^YT!|HKAFk~UqEs(8t~7!zVOuw(o>-l5bTN1|}bFUF- zHMgaV)brotoQ<3=$pF{fyuqpODKL6>U$hcx<%(=QnA=gc@D2vKH?}v8AECJeRtSDK zC8AD*5QtjzqC`~BNEhU!GgIM$OdW|2Lgs(eOuS_BYcLa2R?vS)W){o{YKPX)9{r~3 zxI+XuqigU_L6>$DL$4)Aj+to2mXl?C93=NkN&7#)$Fa|Jykj`Rx4nzcZ@0J*gJK9>fAh5W;sC(831SvAj$Y2XpqbtRGu!0VuS zW(x!gbl=0aLY04Q#a;LmHT41~nQM*0ooB%F7|T=?hhE8{kCHf92QuWW@Y&%?rZ_8C zCqy4f(IiI#@Q43oh7iz2ni9MMR?QIhs%%pol`E~f7;`p-$y^d*#gD6oKr{(S-T;e? zNgXh>OaiXn5(PL&Q{~+!OphQbY9sU18ZsA@y~-tdWjKFV$#ce2L@|pO`r_+eA?Tvr zrLUF&*fJL?V|Bfz-Kf$oy8>h}SzkupqccX(uz~wnGYSTc@+ z2AfFTm>sKV!3GV8uE9N=UR8KBB^X%JmlcdzFUhr7MEJFSJAivuZ0$FJawj>J zkJ9?%X;ihEmF~4U!y^ye8IZxs70qVGG1L!77czfWut-w&?wbq!O*2MT4{zWb2Fj|zXABLpb%x=tK@GVpVD6XE z?sb2jfLCW~gV7$Dyayl1V>)Oj%5rPj!`6_uicH#%v}iarlBez=lT!l@?W%;m=%$*b zzO~G)7p0*B4}wnOpe2=GQY9)mqjwu+8w%B*nHe5WA~JMx~2@a>YCyQcT< zGZeD0hZFL)2ZJrK&jlY!g9;`Vxoh5&xBGvY>=z-{-37a81$*rFiILAVU&g)cjeKi6 zb0bgsE?k3?)sD@^@1OqjyzkMuM@#nmhu;++i>^AHk&i!Evgp(LI{|Nw9%?tP$irdB zG?5$cMLdYcb#=T!Jdpe&VE9^_*wjV+*SPyp8N+~O{gCAW^y*@ywgiKT{yNA&6V&u x`t8iE$^Q-9)mi;l>^Hvgjc*g-9YNL)`!X002ovPDHLkV1gROt=s?r delta 1361 zcmV-X1+MzP3!w{;F##}hay000nlQchC<|NsC0|NsC0|NsC0|NsBMP>VwV z00jd{L_t(oh3%K^nyNYsg-OGRg7n<~-JWD6=@*F3Jo~5F!baM@U0F>ToTkf28t1pK z2fn2~Gz=5Rde#*Kw1vA*}uo@cCZ>ml@Fu;EW-GYBAy0*I*dM#NL z@kX>^%jq&c4w91_t)i{jmyTf-zrg04H>}YTC88PY+B0lsXl6BFE}4;P`jLM+16vnuO7IF; zGegX7f2I>R->Dn;YDKKA!@G zLX8Pf+mL^KV}p&73u~37hGbr;=w@s|6+p3I%5 zUUoK`=D9_O&=AzUoYyzIwS=SP!vAV0neMu{J(*U|#q&IJfnFPQtO{i>H|D#>NG2}W zmfSn?5HFdEYVZX^vu>SvzFSa7o+?=S6?AxACXm%x`%sAl(|wP z8uFZywNik~p?6yHJdj5!BDPEF?z-N4%uvb7o=?a;g2C1pbHPJt_D7J29GXWm-_K;f z2(|96Shfl-`J9r^G+)NO?u~Mb&)g`JzKeg*5M;B1ef;?LU*>&}9_u%Z_WOt56(5T} z?&pqt{J~O0pVr?Am;*hxZd{S)!;a~qG~TOts+VWKgXm=R1-MZ!uR!JAe<$b`ciib$ zbL#6)A-_Wd-sAD-`UQA$KbYvuj>9;fs0JVAZot#zT~Dwl3KVHC6uG#&T`2DE?k+_y?(VLS?@!)K-Xte; z<|J!o@7a5DGAnC`DJx2&AQ2*c`t%7!=DURIr%#^&|2+uMA79+LAx0k^l$)xw*r$pK z;=_*tr?R}dNuAWD$7Q%Ba4(8{&d&Tv(&mxZ}W;0n2;j`@j-apNVj?(%HTH_2lhU`nyT@d_n*w z__6Ix@MrI~^d6ElU52EW*Ahqb(BS_5er6$lM`!2fbyTzWv2Ez@=UKllI{O)vrZyU3!Q&w93)%hc|UqGBz1kOjDYoRGf6qE;^ru z_eCYA^paplf^QsEo-53>%B+yHM0T+$X}Epy=zI9gdSuQAnfw{U%No?8w?j*By*rz~ z-!1$Aal%a;3v|Y$CBYUj+x$*@d~#Ksq2zpkhndX2TB6Tt2PTt-pJ_iXX}st=uCqw( zlYa+s2rKwD;2-S!W>Bd0_5Gq`5Re(Ad*l4;Rby;7a(0n0DW!5d6Vw?{2Xv{^c@Z9> zgs4kkCSO8UO`X}lMSZ+Ybf2a12qR!pfiBJ)IhF1Kcn8Bk(F_1nf5PhNVgd@E3q5FE zx|H>|n^v7ik4?voixXf$8z%oVH|N@S)ZM0gigvj!8>+~MYz5@j%dxsyDrb`NEtD(D z_N2o1LD;(g>>pp2bqK@vL^20X)?Q3apKdD6x`yXfJao7w;l$;5+U&=9?&JjNMM2<2)j z-52Y^Pwc{+CO%s#HGx$K4fsK){NY6lMiPe(S8NqsTp;?vdF$&QADn)5)?V*yCj7D0 zf&yQ%#Eph0b=KW}Fdy|`!ib;1Iz%3}=p%=W&gNLl(UAm~=`^mmuN&!8Iyw|~{ zS_VQ7FV!IPMYFuMnEF6+dZg_=)Ocu~crM9)WF5kAkKCf^w`J;~Mx0|N`{#!5ka%r; zx(SjxMQeMQqgG{28)2ty#=bU#`2~4(c(W(u!~zI84W7g3bY-Ej+zH=wq(YF1$NBrs zAokcYfev{jLBr8;gai!&{w@Gp-tk}&wUrT~An)}X|M3wjg9qS#X{;?_0UJWswj+n2 z2bNMT!p>+lXVo08H-pP9+sSFv#*>TB56$#LZR-CkTw4bg)L~OtYW7oee3ZbG+z9SS zs}$Dznui#8wkxJK5Pk~BfA_Z_qW?UjzqOW$g&7yRUKu_c7Ar@pc&^W;+K8J`*+3pT zZV=LEzZa=ho5-ew`-Q`zHpNZN(Ffnb#QxWPwt98~QjR9BltmB!F20F%teJs5u)me4 z>fnNqxSL{3WSnDW?h|XiEv;4AeUkc&g(xIot4Z}LGT17e~ zqvq!}UKL{dKKhLC4(DVAFP*dgAO^gY(W$D?XK?G1FJ#epn#F{K z?ALvP))dDMH{3?(Abz%%E*YIrbHpptr0GPOaV{QRxsh7hJr=o8*9pZJH?H$p*jk45 zdqr;nD@m7Q2*UymDC7K2%D(x)vyj(h$&i`95Dw6X(z=z@k0S8JgJ=NxWCDlSo3G4N z-Gf)!g(VFu*Tv=*S68|hT!sUOUr84z$6cHHgJxhBmenyeyJqpnj}f^3e!-!%lxEZ1 zzB+}m1keErU6}y?0z@>S;^VMyehn|@HuqFc&C0xIMPD87#xZ7=Wj?SinB{jhJ%CC{ zgrIO@>3^m5wp>WNI|S|~$S4(_+$pAhHh2EAOaQv3)nvfQtU_K267lXqHW01jC}Y!f z(9>oL|2t|*TP7JQy2S{8vjtV2cXFs*V`HXhAg`m((Vwo-_k6SO*J3Pe#qbhL8e2p= zmEvk*N&xbRK1jh&mYs=5Y<&t!7BE<@w`yYpY=QoaFK@NlT}CcU#Zhtp^1-)i!m)`3 zo-L-hd7Ji8l$o{-(w$)pUi$}bbTGsV{D3e>R&O_!?FXVsRL;So6~oG;o$>rE{6- z{c7DPU)K8iCH+&ij>@k_WqGf|L9MPK=ky7&{y~bPjNU1C<3s~en%+pV)qXsiRHMOQ z@ckW2c6)Y1oAgBuQ*L1+g-aF40lSoz=jOD;5b0uX#xG;-FW`uW*50n#xIQ1yDhdea z8$@^8cs+8o>8q^N(H&p|hW`!u1-`S!ZL6Uc-sS81FIjr=N~Z(+ys{O%>p(c`sHS`g zct-5i4VH?i9wLY=%D$>h6+d3%d)$&|22xJdef>v|oxgou!AZVE3XEhrQq`2#jj1rP z)o+WYh9m8)@qkyn)+i*&=3V28sA9$kXBiB7O{Ov!P5r3T_T@m3V$Z(f`(|f~cp9U% zUgu<2{ym6)Q$e+$tUGb%TTrpC{pGk;_Wrko40_pBf?8MRi>Ts(bSa=BCiD+@Ton}< zfUNh?HV_sB=HayC+k*qjiE^Ryk1@ARfm1oNhOqfg8hU(4X> znE7ui=#M|*Ksp;dkY`$brY>{!$&)Li!b#3|1))eC^l;Tr)c1qJRs1uZaKr{`ch%5( zpCl<$t{V@!uVCd)qNDsedf5$Bz41K)?zJ#WlN&{?>7`-Tvu;)Ut9@TXoqDh5cY7kN zz~`G9`z^bLHDBK%grAw_;Y9~mpJIs{sxbgIkKq>bkHZ~fy)U7?@2K4*$d8&07OQsl z@T=5@KS|zi9@M94^z3nroSRLd)1#x0xeG=h-*?Pfs=wEP#L_C4q>kLX`S#I#jCF@v zHeSTu%;jkVk9!*@5_d^EZQ50?uf!x?cz^r8E?7xC zyfUr~->FZaDRFj7zs)S7$1fj2#CrCHR@C6T8r;qFFD$aHY_1h+iU0wKQ|S547M0{n zz$4%LruXont@!oU2JLt39iZ^!&$(e>OUxP6k9&WMVNA(~v+YeSUfrSfiMz+kOhaFu zNe0#+{=H`9zP2(pu36GT`0REWHs<{6qKBItT^hQP$Ev9RXBb&W%B1&v+tjR2z1+iE zAPoiU@sn4Xvv-wj&Zo|w$;P_h8>_ZzTVhnu{D&lV-2aC&^?hT8vNdH}aGYx+H(NmS z{x(LD&$A1Q#a!*b5v{s${R1)W4|e~um{d1>yC6U1{>LWJckne_9#Uo*_}cJ!IgW?F zPrVYXk<5?pz;@=V_adh=(yeuV7-^2(_LHJedk9{pE1OGNbl-i%a_tDCGt(hz@;p?D zvhLC*v=BZ;|Fc%+wb=b8`Q`5v?RdPWD~f52A%K=LW+c-*-W3JNPFtsHR^ML)LjSag zku5cJX+hCJ^KF>ZA`NStp<9ShT4%4{JdNyZ{VV<|0nF=%duSv(kPCuW`Goyb(u=g` z_5M4W2@{?U528(5JePo9c0yfcwO-y|c4vTgK_PAGf>_y-~F0wI}~DWd5{Tcvhowm zTYw*{l<^T6d4{`jyZU1rJ4~dv{VK`Br6XyN$HUQ24--~#j93oak= zZlg&aYf{j8tP+37v+}R9`?7yzzuoCs`RIO6cWOPC z^VVs{$GhuH2dfF>qnmPO2LI(moEz6ANY&ZBc{}*qQC{X0!kH;ImufNG%QJ344n6zOp<|9iZfGBIK@n?=x*=*r|6xAu?bi zzx-@{YJ(yTbTaulm>>Xr*`8SSCQTa6`s5-@{ZQ23G$KxVRzJ@TRj+Zi6)`+>yqNsr zbhJ)SfADXfH3}VpSOndd3L;Rjg4H%<=lk<|C00Ez^9vhZp9T}%D>x*lq_VvXW&IAH z!nOiGXw1sb(ZBN|6R0wsN8AbQ0jhjiyJ3NW+2=s_WrVn?kybOOW<^HNv#r_E8L%cd zf7<1ZSq8rS_5MwgQ252+s^+RIWVuanw5?5tt%9a~uVVNr0);eS6C_WH|XNVxJn>b-R$!8ScxHJ82FxNU8} zVg=q`3C*xfe7wU=r7uqHCl#90v8e#5`$FuBuzV4hl;>xR(YZ#S@}^b$&RTm0Z+GA8 zasrJY4e$fv$w+UhbL-zO+U=DTyvb9jt*+bX2EslSnlgpVinJNGZ=G@(CSW`a8m_-H zhz_3Qiw2v$Y5$;p*fS+i@}{?@*}rP*%xQ&E>|YFpG?$Pn2DMlEhcqH@WhADb@}EUt z+?Zla4xv`7VKNC=~3VaoOkHRnftAq_< zJXkTN`9KKmi)b^wC+rZJzVJo`)M>vl4Dpx5;^ZGVQ>~th~70%>XcXB+CS~W~G0L#$Kw-2{B}8U1Csq zvBW+t9TnI~119$Z^{$f;68qX=Kkm>K_XbC&vSDSI85Y$m#OTmIEN{mht3AzywJ=ta z9=lZJ+4m6M@VG<@L7$o@_nh1?%Ir^_c>PHmG{o2^Dfg=p?G#z`UL}T~;qCYDQ2P4N zFw*p1l$at8vLr+9q`pjGN_Jw1vvUZST5Zmj6>@RQOH5nP`;&-Xx_3)#>FoJ6Y&83b zvLSmpYsuGyzxxGRhT@xmP$DhWrVwM8F5^X@H2T{Wkk z6ux}~-R#$wwoH??ZiK996#Htf8$P#qneLZ0ycgaIieG_bjtN^dx#ELLXp4w@74+eP za6K3ZVsv_5*)M=Z{7~f+w9Hs#`C8hZA35|tgKA-}+kC%<+pi6@Hw$Dj@GYT~_^cbH zuKCrpvYGM`@be%yZ@TDFcMK~D)w3FMfGx@(3ul*Y`HKd*j(?~dDq6d=lpIYMd z+Ut(>Jp)bnC;7VufK^T0PG@h0h_)?-u*m`w+JvI*t?sw-QV3F-mX3}uRN&UXA%bl` z&Y0I2gmOM%e&&(l2~-@a=63A{e`m-NosQ$f%xLpvkb#jjzii07=3~!ql6Ee@({7i% z?ZId_6)#@^yMHe8eLUQd;4%L-ezqov!#xyssMv%);S@(Ccw|#O37M=*OS#HS*A_lT zESzEPB}iJqG7PW5FSx+B5-)E|e8}j`F=}rGD~Ag+mNBJ z-^TwV87}*8?^y`H9X;)yR}JlE)ukf+QJXXnw;v0p7O4$y@6{lsFhOABa*-ZY=kW(d7_Z0Fx!J08@hdKO zwXsPVnEv_<*Zrt)B9k(u7GG+wy!nvMXNivfIrMJ_G`IcaflMfh(8MrJYXlradxdlI zXOc9AxY@=1rml@4?na6b_f(QrkZ+-;W&=}$vU&GpE_ogwBfSy#AuewDG|xCu19qT9 zp<~ssok7e!hMXCE+EmtTyv@QbJsln_2Rr=+pJYhq52J+eJJhA(hW<-VC>xg@jr=E~ zU!1?URv#8s73vNPpPD*y;t8z*66uoM=cb{SjMG6|ETV(Yp|-Y|%XQ2I$E&NZPKT)( zOal&p?n{th(++>e`=9BSWE4cES5Q0=wuHg;&?pbf*>NcaE3>`$wmx-1X%>d|O|&3O=wwm+0=a?e zDJ557_)g1%lnjBqKmvFABjwpd1!XL?(Qts6Fr!Ygl0TN(K^dgeyG;TW*sGNj(Kd3u5k;3^`I#D|~P{-2wBIMA_J)eRJ{3SpL z23+B2j&D}_!YA86oN4%bt0tB6o3NCNCVI_`d*~Q0O1R&3mdp*QC`xV(ba`yk^yobe zvZ2g2bR&>~&Kzxp_1k&yNngOww{MZ(J_QoJIl75PVNItKE?F>Wv2#`4Y-)UuilgmN zzCO-dG-J=@V`xHHxkV>pGE9*)Tk8+5jy-4-S3)W=MI)wg;rO<&G|g`{E3b!duX&-z z6{@&g$HvbYpw`GlG23SRj%;flZurhbY`!o1zU4k+YD$EC47+MNjXM^RGkiUS%gBVg z_v)Q&f$9X zf*j>1uR1t;^nyR%qX}EK+O<3DM{8=ExjF)=3{Pg~pvT2=tEmikAu4LCWBfEe zaQ%p)h}E3$q~TDl9f3%F4FP0M_&EJpIcHQ7Y&XNjG4%c5%C4BC+ezL8P#A^Yi9c0q$cFXE6 zqpD~Gp@;Q%sqKAkJI+rJDK{pmvoxCAfi zYz2@OcQb6C>!M3*iAbUeD;l>MaP?LT27tFAVz7}U!S!>Fps*HTfbfEen$?gc3VM1rNTNy z28~GMbXI*zPc)Vb*jnL*x0XzeS-yrY8EvD%L_Qh;yM~l);IZ@Io=JCEM72LXMnK56 zti#JloMRJkz(J0G!N_d=)}EF+0AdPW!SyC{VivnzkwcOCzQ)XSl)x>Pt>k0AHf4O} zYSN?@w1(ih4>H>ZxwfZI@wlC}?TdfTAF3u-^G*GUnw6lQIPTp>Ti-`@`<YP2*jIbC<50W7r63zN_ z%{cCJ9M`^-qF|=5{Wark9>KA~pZgfntZ~i1u5p8pq$!A)4jQ7O!AH$bkpnm%^dLwp zKFQJ0KIq>qk=p$0)?ypC*qT(6ZO}AT#tFjH&d?b}s&xL#cm%J?}ELvhcAMt zpi6QNN1zhsYTJFv^9KCacn?yPKdTlQxc|6!c&4fcbhQ2n{xERC%5AYOgt?atHTg$b zR%Vi!o=-V<6KM)~VtH%Eh)yxSSG zSwCSZaKYP7a0%x<7=hPXDFuAA3&_QqWVE><%i8bJg1+i#ic&=F=Oll;)~(#K;Bs3k zqYMo_vL;}h*T&J`FTXU`dSRr@fF!fQu4Yg>6O$C5UD_){6@F*SuoF8!DLU970N?09 zp-%7@Kb6E6e*o8wBk5YVDx;OBdGyt9<+&T(wlb`oi90tNlCMMm`fmJ0o2WvQM?J~Z zbRp6H;?-*?9#!_I1n8VdtVzPOO;q;Zimw>9ik79`30Oh!jj{>mz9YvWD|orT?%$&c zqJFwihA6sIl}_{iXc$Z$;V3z(ZHbVn?~ITxn+D);g2*gjvvxoMDnZ3*L;&_V!R6#% zn`Lq4=OT4R+d`L9ohhcii26gKo*Ovm;NXsxUs%~v>Wrh-8qX@E^#ihMe({WNPY4Q% z`5)+EK`a#fUP<0(YP+_R zn*Sz9{%-;`MV5xNM!>KT7}MAV1*PzqNgj0)=O>RIYP!5OGXRmKBXDV8mZOI=&(?xK zPGjo$8pUqoUVHniMxMf)VSUCCC_pqQ4Xb!hQ!!3@sv>_ec_&%y;*)L9B z1rtBok){u-Yykq@boX@Vl%sG5V4*{mw5)CQXp{$t*zEh7vHAr!4^ z+*4U@k(y7}24Td51FgJ;{@b#y7cP&?^xAYGeg}_bEM~BJcR}1ob#wT& z?Te0Dz7YnO_tFpF=T=5#O7^6!w0dmrCjY%0*pzps*tAB_BzLjzs(JVzY4`Wfd(0DF+t8s2&f#2-uNqafmIvtZ+}&@jzhKq;skbbirt2C&u7>MQw0n8ew8aS^1`alKC-0bnVi7#P{x_PVA zPYcrYbNVoR7op1)L0w^+-7*{Qf_H(#-WMnrCEdCh`n%zUm6JN^;h#@R`6=1GwP}ZG zlX&Oe>eL>~6Y-;)wjwrIBiS_Ea5v00Fy;)x3O}yKc&=GWt7zRQ|FI#veD&%u1F_57 z)i#FU>8+MYg|!i zZhKGR0(8kOl(OLF?B1dw-W1gGOJbPwF1ZHI)BsvXWlJ3K&&38T;u@)!Afgf{gfrKE zf^H)`6UzNx(siCR3EKb-h&I{*DAlhI+dS9qbcZF zWp+2=WO(%3bg$#)+FPS}N%(1fPW1#|uI!~yE$63XM-GV!czTXps7tFiztW&9ybExh zavcjY6LrgIW#GLSV9>foc}X~EiHV&0T5eAhzKFAKrk@Ib-cj(Yu_jGf7AvI!lV7>V+?-iro!XgZH| zViu2RE-@sJEGm3i7in3i@|t$uuIOE{yDmKC3Zdi9iE)cHtplCxervtRhdKp=NKmV% zvcamMTgBCjb5~!|V{Q`(y>thkES;mezN()-^?9*Vd8&qQ6QkDvQIbFhbngdqARl-yYVMxYi9E8c+El2AExfD1pC6=^PoojQ{J&a&lepQY zxfeX70s}+@MQ@1!Ey}}!XjbE$i2$pCMTx)3Mx4&ZhU9Q$T5h*v;@^Cm^E*e@c^s>n zZ@%qVjr!W#n&X8AMRf=!mow7#(fB$ZZc)5cL<#Qz?N?o)# zFngC0E#=$C5SJ8~B1}kk@LDo3s-60h<@#l7V6cVOli+EwQ-w_}<0>@QwAiVwDhy@a zqlic3E^v{fdNd>Ybrg1x)aAQNR7U(@n36|T?prI2bgD3TQS`Zz(2D!tyGD1hd^YLU zI=iCPyAgep+B9*r03YNvbf@2+aKZ=pJ|H3@_V7=9tM^`ODjkguAUu;XPu#Jq*247? zo%J5}Tc!Z3X0!C%NkY2f-G;S8FD`l+JP6wB@5pz)BaRZTx;sQ0d~|#!dew{n;xvlM zHq1WScwrIu<>e$Xp*I~mG?rdoJ^Emoj-h8s_s`0Z=O}mk9bag25@cCSQ06lG)=7b* z?MEx^7a|9x#&21J6nrV*%(sU>Ko9q{mv3!1Aj#X)FL?{l`=KfJFhn1A(w7{kq+ z@wHeyLD?4O4wbLMd-dlCR}OElv$6glC{zsU@hZ?Ivb0P`xQ7xGghXyIB?g;{&7*%|)@`+ZFYuOlu z#`ejEHyg>NgLew|9-&E&zF@oJjg|9@?Z}J_Qh}x2z&gGMdeFsRH#wK&VZL4TOH64q z^DS&nnOs<_%JyBuaE*j`&Z5H`j=4n#y1*~}wLe~ex-J(+IJ0u5usC#H773#YPIKyZ z=M);&f-yRwcyAK>U98RYh#!3+>D+_n<|dBf1qMFzb}qcrFE)y7L`R5?nTW210h4Fq zO85yFwVN^Az?I;#DT<}T(mfHf{eFQ-&A~WLiM@z;SxA0gfP-{d)1r9e2 zN~M8o>n`V3NO-a6+t7dEbO;qS*RfQzPxJQ6MYYLHXB>hT?GZhF!t5(VXo?x@?c%eC z!IkFA6yoK$kb1H;GjA_W*ZS^bD91k1W+MKN9KNtXbfWcC-ACI}@e-}7m!LR*skshP zC%$M?P9E4>i~AKbLWZk*$jF26cTr0?Y@3C-4WfWeH9vHvWS93^Hb;9{{|Q{`N<*uK zdcWV>>hL2#{5qrX@yxx`&}1LTD#)!lwJF!krs4RM4I4q9hCGu1;qi2#iGrr$lv})F zU->q4M!ucDSD(Xhjf&#_z~%gddq~|52?RfU-ldF);M`$)sKkz*2w^D#r9ElSPt;M&Z>#5@d5q=k;=yc1 zY}Q^~2&fQ+JCt%9d+sz?52S4ud@pdDF!32KuL!a0ROaP9(wPZ!wy|1{MEYtVI2Q0$ z{W(aP7hx-yXf$ZSm9;;tF^~zbcE3S2;Z)dR)@?mE^zXx(5o|pHyG@648vA6o#m(uJzs`)lHv5V`@<2zVLDh>ZF~c;TojHL2h1i2?8%1L2Z>eGWI1$-0yOhD$a|Gln zp6mI>|GgoZ%}H_)UxInuYfj9&p#E>`rCC}mATGc4ikR2{X3m6o5kJZyBg}c&qa)PT z9K}`n(lI{crvm{sV|{?YLTdlYcEk9GVYQQ;0-5jmxo|2<*UT$l0A6G*vcxYwoaeYS z)AWbm%2Bt61~}$^stVbg*Q6$zCP_MZF>8ELYUAu9Kg&3%fY^cs{Fd{rW;#8HmQP*^ zQTA1{M!BT@KfjqscHyZZR8C$Z5xSbgJ#c&htNnJdH*2;AadL9>$F|4~4tWJywYaa^ zIV50V{iuj=-Dr3yYZuPMrh83q%x#|tShFrjWu|lp!d)iy4aNXWSj4UUq_h1*m0_dX z!&g&nn;}Hi%1Nj}Cg<0c=5Sa~S)_tW*U{_Xam{5tEAXQC^XS`EnaU^vD|zf`dpk0< z_e(OL`W%yYyCKOWws4n9Q^&85v)2@fkj^(f^!X{zC(m7DM7BN2%~kb&v>g{#Enz!s z-)_kRQfFhoX%K(%)c7?@;GLn@f`KA%YNU1A`?&3|{PaD%wLXc+=dLg#xm0tI>_k)A zbi72oX%*khq(B{4|B!C6qSh~3I-<(*e1`>H)tCVXhVM7kbv7qFxLV99@+!PoHbhVG zx;WDN4r!H)$!pAB!q+Loh!0rB)9XdEX1_8vQY76|A6UQkR1a^Ny~M8#rCwtNWI1uS z8)a5Y8R>3+lGdW2yIz)4?JLZ9j+Y*Q#Km905zpDrW>r@Ts^91hi(K8Wri>(54qf6T zq5E`5w{{sIKE{gIJP_XoXSw;}4R*NEJfV}ROH_S{$dUg+Fi?^PL-$t~W71}&trgn_szmG?;ai(qTT&XjM(^%!$C@LR|k{>PjyNKn_=F-q@6GpMYFm^A{KVf5ys1C zYtV>eg}j##`y#5QdK*%jzjADKTjzD}a=T^?0@A6pGgPNchlT*=#BXVlSov^6kvXDb zPpMFUlGGB3AEVUW{u@*c*waYUQPGhb=G^v!Y?ODkba31U34vaL05kJ9W30I6K$@a# z3nh5!XPB^04-_!f+M+aw+m|kLq?uG%p)2H$`W4Z9yZ1+b>zTZy3&}@b0_C6-nd#{k znjA=+);RAj{R6iqrD;Z)15(Cor2FkWwVvoVe21`F>=;JY2jaVAJtw3Dp)nwT?dvc@ z3H%Rh*FY1S3XaGM7D4yIk|KFtJw@itXJ{FJ!}S z9S`(ae!^Qs=mt1_m}#QS*=HM0%7P}=Nho+40Wm*#GlyzsBuYjo83%|eWl{G=yAczs z4@59S$;^kn^W8!x372jR%jBgNNG1lKU$UG>VqiVovs#Q`_bEp&4EX+;Q;xdR3qU6$ z!EgzQ1RITD5R#BMf(F&E_R|eD*lYN=YNb5wS$SMTYA^kzmG~^IlSn!pY63KC0QIw&uQ1&wsg6%^a{{$G}krHYvY zk$-)~d-Fgkf|5hI=2s~=mp#6xpuG7S%bg{1Itz34(ZcQ5q%7yXoJRGi>bcq%bocox zOu!gw8+|>8%&y#Tb1Dg{-IN6gk-}dUWA$<7@aIT*Nvti1LEA{ZtRYL@fzg~aE%9-dJ&5{bYJFR-u*#h}|vs8l7;ddD7+B&ET7RvS5c&QXJXg)6N# z%0rc?tJz%4;>@z9=_0L!KJKW*XLiy2vlNe$spf^PH-_rqqSuc>W~VB$IXd5_YuH+T z?4N=B8K<2&&88;TT#aSE;V3N?)DFf$rnvUGVTLE2}Z98h9LUdAR=FcN-bScy{~Bea7%?#U--hL(pLEk zRBFw1>HsoQNt=rXVmJnNJ5~BRqwOq_2j2xf8if$g$?k$$_QH0Il`Ag}Z&OVCqz}P0gu|JrtVAMla7QyjV^tE47l$^;1jUw|Jk4Y(q!byc3No@2(*PvrdH?N; zFrf11A7X?DkAQYA4x_kUY3pPeVF@ZkT&BGZVm6MQXO%qmVVs44K$cgw&;{mw;x?rN zM7{CaE*-$=uZdZwE-2M3xC{x@JuRacdTg}mMPqgwQk@=+ERKcz3~E4aKo`Cb!89M| z^p6b(mUmQjlRR@pO8DoBcWMC_CWo66E^`?DQ*Yk8)MKNhunu{7AzK&fit z#K3ZB|BK!TL61GD8xpVZy~`|RhSb?1QSbY)fjsVq6p!|NkU_H9&7Um_LK-T~Dcg^g z;Ua^Hlibj&-Jk(a#2rS9rvewa<7Br%HRcnP`zF_dlp)QV+`X-;?PZR6UJ+8tW3a4} zWQ(0a(S(tq+bV!^g5GU`iwWfC>Posg**$&Nm)=x~Mvjv|>D&rE<<5D^Z_6{XQcs!tBK-qhAXcsDa`&Wd}I_J()z8OwClFT$ND==q$j zS{Q?Hu^ggh?=@Z0q|8hw#j5gM7BC6NnIn&5BkE4?guF@%^dLY+tFXK}c1La{!csxj zGVr}pl$wa?w+mcl3gakm7Gk_M7LVcgi&Z3HD_Cdaop;a9$c>d_(W0i;OEmQp#9 z3ra2M@sm3eFRQc<`UBp&O!dzM4zr0K$Nrah@cyob@3fqHn&0H&hBpE_US(5Xy)bV; zM>^uu=$FXmEvXt&Ge(+%@;hsF;_P_WCsjoxuI=ispKBESUi)bscSu}i4bto|bm7&8 z9CW|)!UjBd!6+$4WEWSKnIA+1CLaMHohuobJeo2f?>xGdG%%VU>tQqIPhc*l=s&q@ z0$ne-=QSxHfp#u7J4_J>oc=!Eu3?X%u(*fc-xn;;ehI@1>(i*t|b|!ya~9 zL7ea>F!^gFmQ>QLb|OxW)sChENu+Y4rNBPAP#bSrh3cPD)Dr}8Xc4DAiB_DM$a6vX z&RuJz?@&evZ(-j?ecOU?L?U2VvA9rS?6?&1b&>}%28&q?%>TxeZwk4GN|T+J)4sg5 zmiNpVZ#R(S8gdk(_{bgxMJ>q$s@kWs5?&&aEi6wk;$`HxPD#VFni6VbkX9;_r zbqsKw;hr?kjS3SM?w~ep|2;&P-i1^0XxV$;z$aQ_A*9=R@NZpld8sQLX;-)ou#>Nw z`!STMKYCsj95Cj1GMsxi>wFap4%m}FeIFnr#6WX9vVTZYI^5dE7rImVkVQmp1#D*% zxdyXPVSdzqbOKi<%o@!fB?TLNcl#LVoOMd z{~w|l=u}j%D3)x&#$%hW^#1UG3mqeoB_hjyoL!n!=wXZoozNv=$6Bl7Zt+rJLQP(O z;fIn5i8M3{iva4eZGB}y>*0yk)iDM1Ue2g58iA^*&^ErSbWV5=fkx=Du$~Sriu? zEI@MBBI>df306Ge!rouXD#Z!pNyv_)ck5s+;U(Gn#zrFHryBGV77<^VAE%?qFOT{g z7UC1nV2N7$Bz+H*0RVLN%m?c8gy2NyeYcv9&C%&6TVxstrKgol;f#L(82A&cg!hz( z4@Ex5Y*?u|3yWP=DglzP=P}@?uo$+W8?6zomUA@Z=?A71r7r0zn(B4LRA9Ipywm5P z&Ro@+$|*%wS28%Ah1KePcf*Iy{PmsV69vj{w3Yvj<@U$e;PXC34_6yhF%qgzf$_h9 zSaSI+B0aDfD~eikHVJWg80kwkTq7J%s=z54>*`<&rhEOEV}M>y7#x0t@mLK4ZQyq( zMSZy7)@GJXo9;m;(htJqPPj?XK?7$@nOamd)<;yg|BR#HIIfxzuH)JmrvPjhu z4C*mA_Psg3xB%YDyqgFEv8kr-S8d+VSaO4@qj?UCF!JQe&3%B*TN;>28|>AohkXvH zSk?Gq3E|lUZEdX5$a50Z3MC$lVV9FKf(>>2sfMexoMVmz#bRD~%qopH#AnQ?_qgGq z7}PMmc9xFQL?>PLVR`M|SEZ`)a!mws7v1_rvyOQfF_0kXria#h^ij98mnm00YIOyF;&bdSCMIHlMh6zzQjjeM_P{qyd`b#Q}bA@{k98JBU3p1I$u zw?X3xbq;q~)qdFxODG^q^Cz2;Z3$ipzCPun+u9ktpx)#k$XCO;<~SS_dqJL=;r@Y| z@tp$;^VHcmsq=on@=+^6U>g>K%$?3inX??jdDd%5XeA9#Wo&}--mh>YT$y>OL zOC{F5TeRgo6vbJY;8|I&wf3TdB;Fgux^xQ|40SKkLfDuI3fLTt< zGkPbVrEw`-x>$J-12M(?N1&yu5LRLN$FJc8W`Mi_xXOhL_&foOZx$D7advAYa&)8e zeR6k&_x)}i6Q5f|(V*hqt}zCqhE1ZiQ^$pwxnysF!)T92X8dZ86?OM+-fwLIc`c|qE(e`NmTshX;w^M`qRGU5Cy*T@%$Uf&;2rRT1x9B zLK=Q1SEXrb-aIViL!)qb*2j<1!m#Lh1`RUUuAt`s2#x$)+z|n(nqH4O^BjU59Q${- z@C@=`x4@p}hhJjY8+3LP2qj_7U9?HL55t|?RZWWG<;XnxDzh`V#9RkS#*k(#fZB&b zU{At|-V%7~Q(@(UZzBF-mHr6LE*u)=ZpMZ*pN`fY0h@8Sh@7I0DG(ePt680xRBpI{ zqo&Ibe1$VG5!m(qmkR;;uQjEIX?FW!4BnPuXznxVG-H3*!-@EFu=I4pxkm$;9|&#L z09g_JWq>v+Q%5_1GLV*1W?GqxYi-1$r}c#?WoG7d%B+DkQLqt54!8Oxf-=jly|;;C z79s&b4^+635P~3t1FmHY#@F@JSTEiPTnuA~Dd6QpKJNgGD%6vM1VWeVb{?P=BieoBhHcJhxwPMcD}h@t-28;=2a{;LnqOg&fUS z$&}vx_jy}+o9QPx42u%sVX*So+}UpW5^<*zVHF1zMBO`}=8cC_oTdJZGE-B5l=4;c zEcO;bR#m^onkW0Cmbu2}R(*?niSuDD&#t2aY7bmH^uPm5a;m=W=)>UC70$YT zw!nJ7mv(amuF=m7Z@6-z36Bi8iRqVKuO zZW#rOvBe0!Uu?>N4yI85(r3KUb6M}<(2}UGSa?D%?+GMxUlQ$?Zs3`FCmqIvVR$Wn zFE4+cj^v{^@eAz654j`s;V*#DeW%7D6N_1o%X`?M2;LoNU}JZ1?B{s;hWc|C$3Bnm z7{q0v-D{&&=5RX3F~NP%_QbX@el&^$nX|%TcIU-xAEV}9k5`7$G+=KG-Xrwc8Mq>E zL*OF=CbsTvX+82}N$QgNc?XWbNK5u<(k@cZ=i}cP(N!RcLv7qScP3#E%r%lb-$A%-fH1T4Bl; zLP-ZgyMm3ugxn>v68!sK+Zw~U51SePnm&`+^pH*HQ_zEg!;d&d((gz`tG_-_VF%Pi z>}#zbhGntr8)W`L(`!hC2WFis;xVULOG}?@nH0Zx7tkw-Nt^T?>oe?q?x*W$^lSSf z{L7S^RYdGky28unHj~uk&#C3@xF;?Y9ZlLlj0{SK6lrEs{Z)m^wGVpg- z;j+%p{bbEsk8?j-oU$i*#GL=?0j6D@8_|*0e+sIBFCzs!mc8U_D}P;Mu(D`Z11X6W z(Ra6SdcR-X=Xv?xW*Rc>*ZOs%2(D~{!=x-L$uNI~+~=%Q6SAOcs=%sBa^xOJ{s*$V z?9!4|Mn^rhMkE!zoNU=TocrMuB)xbhO%J_(Zisa%Qbz+O&*HbiVh)rz^gA2}I0u>L z+ciJ)gM5uAk(`qHcDP{Cav!V=E>DgGgnGp7??;yKCriR;WwJPhZ5?QQZWY&k`2$XW zIYwPq~Vm}Lz^qUoSw4?C}0Xl;dNZgNUTuP&nXN&+bZkSAFzOVx++aM z`0L|mnyuOdpz_&OLv5rNCQZ$c+tCA#+);zDYK7-;Qq%qB8XX6S{Pb!C$L}Nncwzqh znbnNL#Wehx!KugHqUF(FLE!wjl7piUkRrA~t?)VyXG6%`{l1@Gjo_$f)~*y_KWzR0 z{7Bnx0w$vYlr@URDoXmBOQ-Ahm*l$p*+xtfWr5C>kxI)A91?3!cmulNdDvQVf(-E$9qA6c$E1Ei=-Xfgv zNHwJvPnm9AD`?Vyx`kM$hn>uT$_>ejM}1iPrtXjn9~#l^C_Pb4E{x^>a8wl!wMWm; z7=)uH4YdgH^z$Q+2@)bIX7N_&FE>6uo<3X$e!8MdvE^mjSYwp#sD;8LCc?)*nzy=- zp0PR{n4}jABFZ@J7yg4?o2=k;FSJu4gkOG0F8J+4SerO|p30Pd^mocSvqElNrG{^< z!76gBm<_<3hZ`axbT7j8-x~zZ?SRe6Z5L zbV64TSd27n&zPM*R0dyGpjtJzh*c@uAH@+d2e?;O_434uPP-A;EPB?h;(W;Dbxh0TMJg z0|a*%G`PEaaQAO=?|bk2Gi&v%I;T!obys!o-e;eGaDiE`?-@>@nwtW*G2@AhCegWi zLajryWE_jmvb4>C5$g1S3Y z2rceHoZ;6_D;6|PsuwZ@X2ct*a;T+lmHj%n#@&q~FSl5B`CCR(AEahAL#VTU+a-tBR7Mb}?v8G;WR&bUpV0<0 zjS4wzR2^8m6Qieym@w`XltXo*W zVk8T`4n|aZ8BC9&g#0Prp$(W6oM<0p�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 Date: Sun, 19 Jan 2025 18:50:19 +0100 Subject: [PATCH 105/119] [Sprite] Update Shelly sprite (#5155) Co-authored-by: damocleas --- public/images/trainer/shelly.png | Bin 865 -> 985 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/public/images/trainer/shelly.png b/public/images/trainer/shelly.png index 505dce1b1105c144b0fe43d26705340cd9575580..2885fbde48e6d99a641834e0237c03724540a9ff 100644 GIT binary patch delta 885 zcmV-*1B(3N2H6LYBnkm@Qb$4nuFf3kks(ok7IachQvm<}|NsC0|NsC0|NsC0|NsC0 z|Ns9~fsLa800SdQL_t(oh3(kcZrd;r1yEnET5Zc}|NmEeXGpC^5s^uOK6rp24gnnx zml;X9-9GV&PkiFP3;eV<{*ag%%o_-aYA-t*2#gZ7B<2-V5qP}Dv7W@7Gm{S_B)e6A ztXNet3{6E+9HHE6d_2m*C9gTBrXK_(^t#`R#k_V&TmlY)JKVEa1g1SO<^Vd#PuCTL z&u zAO?b#?KFpo!K~e}OcamceVRnc5v zt%qu!3+60fzz~8QooTuc=L8{tJ9phvk!P8^5G2XrP}d{oqUHoNO&w+fNP zD;^-EJ%hL62RcZj3Jr6~;C@G{9=jG$#4}hSYCE+-TepIzBU22T)Sc4<6GgN*oay2% z&b|5ePe6(a+I*j>5shzLvv>m9^bE0qg`)9nr7Os%L@uZGMvAQ}Mb4Oi8JfcY_dN}y zJ8Y>ZaRm90xD1q530ypbcpE7KoAc#x={xE`(^AhBTLn$?!N<@>I64%f3Y^% zr9ak+M=#^$~kMY~Z6q}|_G>x@~Zn%Qdv}-_Z*XN>OOSDd3PD;Jy zjpQB7Z>6Q>2YDZf?_ho*t*B=l?x8zU&Fe2GJMpjoEh~7}`A_2y)IvFnm9HsN00000 LNkvXXu0mjfs%5Uh delta 766 zcmVgB#|*re*tt-PE!Ct=GbNc00PZPL_t(|UhUP{j^jEE1W*@AEnc$U z`~SZ>B}R4C|Sp717&KtU-^*04^56x$EI{Y6tNE3BhRx30;rJe^!xH6`un`!3{@> z&7fZhA}^q!Jk!(+!Y>F3ApqD!5i=1Tnd|j*Y6MA&QgjpZJj2P+^nZdlvE`}BV?+_| zNi-&kq~yPmq8<1m(F#Hp8|dO#Guh$V2P$wE(+g;ICOx8naWVn(IMssvpyN&|Gmc)> z(6}G4fva7`nc@n5f4d`G+`!Fq5xnsXGvK=$hZay6?7&K5o^LlXl8i~qb@B8HQ&zgDD*l+ zdJY~hmmbcb+BDn_?Qup8hw0a>F5W@;?-qx)Xr1${) zMFd78JqK5>e;<_KB8Dnr1i@~xdV${WgDyJgBKkxL*)qKiRC)?H*dt0XGlDgcKrzSw z3|$o^l!o$hfI!goLZZ?0yn+F^gY91lEbT$8CtX3_gD^||pqRaZIsZVE`s1`sMU1In zf5Bw-1m>JqvA^I0^ndt%kX^iB#$zTch#oMi5_GQyblG_2E{}mSzWsMo{wcV5>yoYe zv0HovqcT4N@%351i1)L8Fy~D0P0YDZl&or5z5rEG$&Pg$WPcjem}au>zOO(}O4163 w#Jq!WEqV1;(S!ZDxGD5n1J9T9BKL3S4+3R5 Date: Sun, 19 Jan 2025 18:52:50 +0100 Subject: [PATCH 106/119] [Move] Improve implementation of Rage Fist damage increase (#5129) * implementation of rage fist * Apply suggestions from code review Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> * Update src/test/moves/rage_fist.test.ts Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> * added removed TODO from some test cases * Apply suggestions from code review Added changes to documentation and cleaning up code Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> * added protected to updateHitReceivedCount() --------- Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> Co-authored-by: damocleas --- src/data/custom-pokemon-data.ts | 10 +- src/data/move.ts | 28 ++++- src/field/pokemon.ts | 3 + src/phases/encounter-phase.ts | 6 + src/phases/new-biome-encounter-phase.ts | 1 + src/test/moves/rage_fist.test.ts | 143 ++++++++++++++++++++++++ 6 files changed, 186 insertions(+), 5 deletions(-) create mode 100644 src/test/moves/rage_fist.test.ts diff --git a/src/data/custom-pokemon-data.ts b/src/data/custom-pokemon-data.ts index 1c3bbbc3180..4a5eb89aeed 100644 --- a/src/data/custom-pokemon-data.ts +++ b/src/data/custom-pokemon-data.ts @@ -5,7 +5,8 @@ import type { Nature } from "#enums/nature"; /** * Data that can customize a Pokemon in non-standard ways from its Species - * Currently only used by Mystery Encounters and Mints. + * Used by Mystery Encounters and Mints + * Also used as a counter how often a Pokemon got hit until new arena encounter */ export class CustomPokemonData { public spriteScale: number; @@ -13,6 +14,8 @@ export class CustomPokemonData { public passive: Abilities | -1; public nature: Nature | -1; public types: Type[]; + /** `hitsReceivedCount` aka `hitsRecCount` saves how often the pokemon got hit until a new arena encounter (used for Rage Fist) */ + public hitsRecCount: number; constructor(data?: CustomPokemonData | Partial) { if (!isNullOrUndefined(data)) { @@ -24,5 +27,10 @@ export class CustomPokemonData { this.passive = this.passive ?? -1; this.nature = this.nature ?? -1; this.types = this.types ?? []; + this.hitsRecCount = this.hitsRecCount ?? 0; + } + + resetHitReceivedCount(): void { + this.hitsRecCount = 0; } } diff --git a/src/data/move.ts b/src/data/move.ts index 572fbf4c2ac..06f3c85e9c4 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -3993,12 +3993,32 @@ export class FriendshipPowerAttr extends VariablePowerAttr { } } -export class HitCountPowerAttr extends VariablePowerAttr { +/** + * This Attribute calculates the current power of {@linkcode Moves.RAGE_FIST}. + * The counter for power calculation does not reset on every wave but on every new arena encounter + */ +export class RageFistPowerAttr extends VariablePowerAttr { apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { - (args[0] as Utils.NumberHolder).value += Math.min(user.battleData.hitCount, 6) * 50; + const { hitCount, prevHitCount } = user.battleData; + const basePower: Utils.NumberHolder = args[0]; + + this.updateHitReceivedCount(user, hitCount, prevHitCount); + + basePower.value = 50 + (Math.min(user.customPokemonData.hitsRecCount, 6) * 50); return true; } + + /** + * Updates the number of hits the Pokemon has taken in battle + * @param user Pokemon calling Rage Fist + * @param hitCount The number of received hits this battle + * @param previousHitCount The number of received hits this battle since last time Rage Fist was used + */ + protected updateHitReceivedCount(user: Pokemon, hitCount: number, previousHitCount: number): void { + user.customPokemonData.hitsRecCount += (hitCount - previousHitCount); + user.battleData.prevHitCount = hitCount; + } } /** @@ -10991,8 +11011,8 @@ export function initMoves() { new AttackMove(Moves.TWIN_BEAM, Type.PSYCHIC, MoveCategory.SPECIAL, 40, 100, 10, -1, 0, 9) .attr(MultiHitAttr, MultiHitType._2), new AttackMove(Moves.RAGE_FIST, Type.GHOST, MoveCategory.PHYSICAL, 50, 100, 10, -1, 0, 9) - .partial() // Counter resets every wave instead of on arena reset - .attr(HitCountPowerAttr) + .edgeCase() // Counter incorrectly increases on confusion self-hits + .attr(RageFistPowerAttr) .punchingMove(), new AttackMove(Moves.ARMOR_CANNON, Type.FIRE, MoveCategory.SPECIAL, 120, 100, 5, -1, 0, 9) .attr(StatStageChangeAttr, [ Stat.DEF, Stat.SPDEF ], -1, true), diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index 432f0a92fec..a833facd2f8 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -5282,7 +5282,10 @@ export class PokemonSummonData { } export class PokemonBattleData { + /** counts the hits the pokemon received */ public hitCount: number = 0; + /** used for {@linkcode Moves.RAGE_FIST} in order to save hit Counts received before Rage Fist is applied */ + public prevHitCount: number = 0; public endured: boolean = false; public berriesEaten: BerryType[] = []; public abilitiesApplied: Abilities[] = []; diff --git a/src/phases/encounter-phase.ts b/src/phases/encounter-phase.ts index 6dae7dff8f9..353dd6681cb 100644 --- a/src/phases/encounter-phase.ts +++ b/src/phases/encounter-phase.ts @@ -104,6 +104,12 @@ export class EncounterPhase extends BattlePhase { } if (!this.loaded) { if (battle.battleType === BattleType.TRAINER) { + //resets hitRecCount during Trainer ecnounter + for (const pokemon of globalScene.getPlayerParty()) { + if (pokemon) { + pokemon.customPokemonData.resetHitReceivedCount(); + } + } battle.enemyParty[e] = battle.trainer?.genPartyMember(e)!; // TODO:: is the bang correct here? } else { let enemySpecies = globalScene.randomSpecies(battle.waveIndex, level, true); diff --git a/src/phases/new-biome-encounter-phase.ts b/src/phases/new-biome-encounter-phase.ts index be6815333e5..2de9a4300c5 100644 --- a/src/phases/new-biome-encounter-phase.ts +++ b/src/phases/new-biome-encounter-phase.ts @@ -14,6 +14,7 @@ export class NewBiomeEncounterPhase extends NextEncounterPhase { for (const pokemon of globalScene.getPlayerParty()) { if (pokemon) { pokemon.resetBattleData(); + pokemon.customPokemonData.resetHitReceivedCount(); } } diff --git a/src/test/moves/rage_fist.test.ts b/src/test/moves/rage_fist.test.ts new file mode 100644 index 00000000000..a85be5a88d9 --- /dev/null +++ b/src/test/moves/rage_fist.test.ts @@ -0,0 +1,143 @@ +import { BattlerIndex } from "#app/battle"; +import { Abilities } from "#enums/abilities"; +import { Moves } from "#enums/moves"; +import { Species } from "#enums/species"; +import { allMoves } from "#app/data/move"; +import GameManager from "#test/utils/gameManager"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; + +describe("Moves - Rage Fist", () => { + let phaserGame: Phaser.Game; + let game: GameManager; + const move = allMoves[Moves.RAGE_FIST]; + + beforeAll(() => { + phaserGame = new Phaser.Game({ + type: Phaser.HEADLESS, + }); + }); + + afterEach(() => { + game.phaseInterceptor.restoreOg(); + }); + + beforeEach(() => { + game = new GameManager(phaserGame); + game.override + .battleType("single") + .moveset([ Moves.RAGE_FIST, Moves.SPLASH, Moves.SUBSTITUTE ]) + .startingLevel(100) + .enemyLevel(1) + .enemyAbility(Abilities.BALL_FETCH) + .enemyMoveset(Moves.DOUBLE_KICK); + + vi.spyOn(move, "calculateBattlePower"); + }); + + it("should have 100 more power if hit twice before calling Rage Fist", async () => { + game.override + .enemySpecies(Species.MAGIKARP); + + await game.classicMode.startBattle([ Species.MAGIKARP ]); + + game.move.select(Moves.RAGE_FIST); + await game.setTurnOrder([ BattlerIndex.ENEMY, BattlerIndex.PLAYER ]); + await game.phaseInterceptor.to("TurnEndPhase"); + + expect(move.calculateBattlePower).toHaveLastReturnedWith(150); + }); + + it("should maintain its power during next battle if it is within the same arena encounter", async () => { + game.override + .enemySpecies(Species.MAGIKARP) + .startingWave(1); + + await game.classicMode.startBattle([ Species.MAGIKARP ]); + + game.move.select(Moves.RAGE_FIST); + await game.setTurnOrder([ BattlerIndex.ENEMY, BattlerIndex.PLAYER ]); + await game.toNextWave(); + + game.move.select(Moves.RAGE_FIST); + await game.setTurnOrder([ BattlerIndex.ENEMY, BattlerIndex.PLAYER ]); + await game.phaseInterceptor.to("BerryPhase", false); + + expect(move.calculateBattlePower).toHaveLastReturnedWith(250); + }); + + it("should reset the hitRecCounter if we enter new trainer battle", async () => { + game.override + .enemySpecies(Species.MAGIKARP) + .startingWave(4); + + await game.classicMode.startBattle([ Species.MAGIKARP ]); + + game.move.select(Moves.RAGE_FIST); + await game.setTurnOrder([ BattlerIndex.ENEMY, BattlerIndex.PLAYER ]); + await game.toNextWave(); + + game.move.select(Moves.RAGE_FIST); + await game.setTurnOrder([ BattlerIndex.ENEMY, BattlerIndex.PLAYER ]); + await game.phaseInterceptor.to("BerryPhase", false); + + expect(move.calculateBattlePower).toHaveLastReturnedWith(150); + }); + + it("should not increase the hitCounter if Substitute is hit", async () => { + game.override + .enemySpecies(Species.MAGIKARP) + .startingWave(4); + + await game.classicMode.startBattle([ Species.MAGIKARP ]); + + game.move.select(Moves.SUBSTITUTE); + await game.setTurnOrder([ BattlerIndex.PLAYER, BattlerIndex.ENEMY ]); + await game.phaseInterceptor.to("MoveEffectPhase"); + + expect(game.scene.getPlayerPokemon()?.customPokemonData.hitsRecCount).toBe(0); + }); + + it("should reset the hitRecCounter if we enter new biome", async () => { + game.override + .enemySpecies(Species.MAGIKARP) + .startingWave(10); + + await game.classicMode.startBattle([ Species.MAGIKARP ]); + + game.move.select(Moves.RAGE_FIST); + await game.setTurnOrder([ BattlerIndex.ENEMY, BattlerIndex.PLAYER ]); + await game.toNextTurn(); + + game.move.select(Moves.RAGE_FIST); + await game.setTurnOrder([ BattlerIndex.ENEMY, BattlerIndex.PLAYER ]); + await game.phaseInterceptor.to("BerryPhase", false); + + expect(move.calculateBattlePower).toHaveLastReturnedWith(150); + }); + + it("should not reset the hitRecCounter if switched out", async () => { + game.override + .enemySpecies(Species.MAGIKARP) + .startingWave(1) + .enemyMoveset(Moves.TACKLE); + + await game.classicMode.startBattle([ Species.CHARIZARD, Species.BLASTOISE ]); + + game.move.select(Moves.SPLASH); + await game.setTurnOrder([ BattlerIndex.ENEMY, BattlerIndex.PLAYER ]); + await game.toNextTurn(); + + game.doSwitchPokemon(1); + await game.toNextTurn(); + + game.doSwitchPokemon(1); + await game.toNextTurn(); + + game.move.select(Moves.RAGE_FIST); + await game.phaseInterceptor.to("MoveEndPhase"); + + expect(game.scene.getPlayerParty()[0].species.speciesId).toBe(Species.CHARIZARD); + expect(move.calculateBattlePower).toHaveLastReturnedWith(150); + }); +}); From 05485aefdd3b6b439a38b0af17c8ac160ec7219b Mon Sep 17 00:00:00 2001 From: Unicornpowerstar Date: Sun, 19 Jan 2025 19:15:33 +0100 Subject: [PATCH 107/119] [Sprite] Flutter mane back sprite adjustments (#5057) Co-authored-by: damocleas --- public/images/pokemon/back/987.png | Bin 712 -> 748 bytes public/images/pokemon/back/shiny/987.png | Bin 713 -> 748 bytes public/images/pokemon/exp/back/987.png | Bin 2260 -> 2367 bytes public/images/pokemon/exp/back/shiny/987.png | Bin 2179 -> 2373 bytes public/images/pokemon/variant/back/987.json | 6 +++--- .../images/pokemon/variant/exp/back/987.json | 6 +++--- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/public/images/pokemon/back/987.png b/public/images/pokemon/back/987.png index 64a47fbf0ea70325c44db3510f11fd7b4fd575f6..ab4e628de28565fbd8bb625b0d3ffccc41e0caa4 100644 GIT binary patch delta 700 zcmV;t0z>`C1?&Zo7#auz0000hQ`;K=0004VQb$4nuFf3k0000dktHa9RE~%OSBm2R z000eiQchC<|NsC0|NsC0|NsC0Ed)WW00077Nkl$a;P41`Sr3n+d6=RKK_ zpw*tbxBa=D)yt}ekI4vhSq>`4OK()l$GXx#-*-gs{ZpCU-xcH?qeE?1R3K&^zo_py z`H{E9hG?&l;jVK^X@IDIp-KY!N)Z`|J){q@q@=IF$n*K+EoE>}VUT^#L{xNGV}TvT zkd`!1p0JbiLiO<&c2FSRkYr{k*-VX)!|TGcWTu%h$%;{bM9pGPP%n##EJ0fk zTM{_TgCc&#gGsf50g+w}2rP}KJ2@7vxR)dx9B@+z_t+?G>4>G==T`7^M=<2(m+3zk zRzPqo5+UnTCz=hZMnhVYoKuQO!N)2F#woUL=&)=Q#y*pB&?ONj!-b$Rdwk~Q&Bk?8 zJ}bJUu?7ggdZTH7#@B?k^o~R95Hm3;*jYvs_JAW^;~cso>k5z(kfH;f0w>{i#A}Hj zdm2&OiDQ27Jt+DO3I~PxUA8+Akuxw@F-|c%)64ncN`@Fil@eA4ha;CW4h3RhwiJtp z*uy`wvrG&*WC?S#?{ml&6Jw3@lcB3}U7K3R{%HOeN?sX%d|v+_MZi=k*Y6lu_&CEa zVRZQ1!a`JQJ|A;r*qQlY7qQsupb0=bPcm$rIDKM z!>l`4thGxNot}If1?&RG9xQDR19(;GXw{HCxE&T(agcjEXml5j#0000%-okU&znImNjSxmHy>wTGfN_3POW`j z)k+owgYTB(@n!EOv(|=^`Pj0-N9UVC3x*kXfi4p-ET@{eXV^HP2@E!~Nm4ri!U-T| zrYL1jjB};j43dQF8PL(y%Nzh9?M=U&hN6y4@XEd}=CQkC?+g))xy77&gezRQ*tvf> z7wZTnVyM3R3n`G)mENSc>p2@0p$EoQ&9y)#9G6q)+*HFD^2LVxb1B7r{J%PNW$w+C zNO?oeXo=DR x4t8amkpf0_#et|$iNhv1XdwQ#Jmet{`3){_x=B+S(u4p2002ovPDHLkV1n|CIc@*| diff --git a/public/images/pokemon/back/shiny/987.png b/public/images/pokemon/back/shiny/987.png index 8022d2f900a6beeb514bb881d0de2fbccd6fd28b..8c4c0c8b62a8a2656833ad7e9eb650696aedec01 100644 GIT binary patch delta 736 zcmV<60w4X!1?&Zo7=H)@0000hQ`;K=0004VQb$4nuFf3k0000dP)t-s0000F4-ZLO z5_=#3i=;uca{#>{7{%3M=9~cZ^z{E)DgVU)y}-LLZ8-!0000eiQchC<|NsC0|NsC0 z|NsC0Ed)WW00077NklYh8glWbmdY3`MA~C z&axbokC)yk=Z|%{f4=XC-utIAyT2<)J4T1vt|&vyJbqE%bJ8Piiw)6UA;VqgTI&E& zLzM*dl_D|_dq^K*sa0Qrk>~TtTgu>|!XW#ei74x^#sWKvAuVa3JYgrLh05bG?4Uvz zjNa)GsH!z)5r2UhY6>xoa_Es>D59-4%(|xl(cncXGFlo8h?G!@zJUQns}ysDSXd2r zIWV-P03p@PP_>yFA&1w6XUR-6W0Do4h?2yfpk5XeS%S78wj^+v2Sxmf2UAM{10uZ| z5Lg;dcXBLTaW7RkIN;V0?y*tW(h*C!&#mC;j$p{mFMrd2Fsy*!RwP2!r%p5*QjLbR zraC8Qk&KU342)B3-Oyp#D2#n3<)BL;Xr-#yNCF))gQ*AXx`G1x~{4h}RN5_B5il6UY4Edrx?qX5Z(K zEhfeq=O;r~rLs1)j{VX6FO;-0_`Lo2GI|)rCmI`Q@0MG2K{q=S4T>*Yk4l@;lY?6?|ZUTlT)>oeB-yy z?I!Bv)$N9sZYV!`TVFkUXzft&Wr^PlQ|j}Q;Lfm~ey9UZR? zlT@>sbPAbUW(>MoAVO(8O8Vyl9uf6R}Q@1F;M>X5mwb)GkaBuzQP zH*dal({z}BI6A;lbb3XgBXgvp(OG>x!TN=TpObJ)=&au{GKhOH6cmq4Uje> z5^gmaZ*VHqF#fz&TL}n34LT`Q|IUdaAAdlrUFL-+Mztk>Ku_}FWFO(=c>I1hIY^08 zW_>Z(O?ng5AbNLAZ;CM>!?0zIHvU~&cd1(Tn1mwEdToY`!7&rLu*LY-ol(+af+RFV z_(YexO{ffr?@}!>Nq~c0-Db3cFwI{*Lx diff --git a/public/images/pokemon/exp/back/987.png b/public/images/pokemon/exp/back/987.png index 1da8db869dc117a8f4bb73752fba78576c9260e6..4956b630d3eca7102acf6a0f9e2a6f8e7c7891a5 100644 GIT binary patch delta 2319 zcmV+q3GnvR5x)|UBn|;{Qb$4nuFf3k0000dktHa9RE~%OSBm2R000eiQchC<|NsC0 z|NsC0|NsC0Ed)WW000QBNkl&mMuG$-^+~+C$UHgY&hnKKLhihcBf}+MIJi(JeL4F_rOQT z>ovjq=Z75RkcN2H3XYn0v`iI1tjVh^5P4Cb0+E6TuLyAaJ5c&!YN(m;(&uJekL3s91Njw@KyxURqA-&PdvLo^c0B2G{93um+q7?SP3le zm#0e+9E=P6fu`04_F*J6aakzODG(=~`9>fH7vW^hx?A8IZhpTh5W)zr*gakh9a+>2 zrd0AYWN#h)whQbMFD8&zb zh9^uN6kp7|uq-8e3am(WUg8!uf5~7SmVRBB1 zD<8!;Svm~9DhA>lmqj6MC=aezjDmIHSBvtn6~{O@yCpZvvPknzZafSntJR{SEJ{sXM2*i}d=|%|#a0~)5I0Ph9DAjYG@j&ETrwGGddWvHdh;(bC zOr19tdm58KOfG_YHSHdMj#(gL7)?X_xp5%Ut-uhDX&{d857T5Ah&ID45G_Y{Al|E} zcWFomoSxZVF7+c~>D4_FPv7B7sibv);qvq|oEroWN%d@ZD!CWf8Pt&U&iMl3r zA$&~S)?7hKmGV?7@9<5RdZc0>s%uP4Jm%G*LS{0hTyp{=Che~08_pBd>W<4 zW;Dyko0W2ZNGrW&$+OfK@8|-J-{n&maaahwc2GmIfg~YSG~OsV>+54aO(E!t-&QEP z=v*m}K;bWIUC{zfS!D?v^jid^*4*MLRm$Ug5Pet8G}BE5iFA)fK82W0TRP}}evC>sb>%TjV3bR5;*3f*7s_MQ zLGSU5N;WO!F|I7Q`Pe=z+0^r?rVW~`Tldlil1)Q-l>caH-N3PvY#Pd=;$E6Ilx(UJ zcuE|1@|dM$GpsxsOE$w2xTR!cAc4pI+n`cDo=;6Hh~(x|>g9ZBg`y#tG4lJwiMEbEYbte8yU*$? z4KYinidDn8NMhVyBlUm4{+yk5q`wHv;M%)?kpQXGskKfOM-I(L+zHj$ME7JYsSwQS z$f@~gVpXl#dSo|Jsgrm9D2}8Sl-PiB&WbHNjh1+8)MkaSsO%|`%# zSs^$|6^=@a&0a$r9=EH!9$HY+ov!v+d^rPYsZMwfgxoDND=38A^1x?e*=wKFO(IIQ7@Fy zuWbpt1002ovPDHLkV1l07W7Gfu delta 2212 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 delta 2166 zcmV-+2#NQ_5`z(tB!3}LOjJbx000jU4|^a0i=;uca{#>{7{%3M=9~cZ^z{E)DgVU) z|5Br%00001bW%=J06^y0W&i*P5J^NqRCwC$n}KrUDhx$^BLXS^|G_UH0AYh|g3{fc zd7kZT)28HFTm;dHw(VcI%=}*%)BXO=^OfZoV~qFS5D~@4-hUf&^(Wq&nOB(6u z3{dzrMLiB@Mh|kry=6sdw4)JuQ6G#L%|k>KlViyNK%A3~hrr7s-56gl z5uVnFT_;90JXaPrg)7VXc|4!*uP_SYtJwG-ake@LGJombq@FaGm2%>}QP6U{CjgZ6 zAdiA9Cup%Y%1L^x(6bkmS1HNx2tADvZ8Tyx4e$-cTc@n?J<40l^N}(n%c1y>J?#w8 zQ&W~jV;^b6jYm2$B0za2vLGV+eCBw7D2Im!+H0xH!p883U&r`JBSt-O6kwP@k>-Q- zq=41=34eN0gu=8BvTa!x@`Zw))`)Q+02XF&LI8=EPWpFxQa0e(>Ux<|YVx6!gOL%5 z!Z=+^*Vi^Cd>JVR$)Y78_EMtbXQgE!{DZA)M6pae^Hsz+2LyxgBh%O?zFwU7{>+oe z2qYFu&xlk5-3<@`8$u4=%wVl?-tpMgT=Dy}jeop^n)CDCh$+%#UHG%X;=0Ll;6nOD zD~HIPZtP8xvK=F$8j;tA~=LbO^Y+%IfuIR(@vZx^fK*VxbO?ph2 zI)96gj7U|E1Fp`v5Yv-_1Kw?C)r^f;mc^aZchQ5arp&>8HMflDCiP5D(X|ni5#q*; z^Hq@!l275^&(xe6F$)5#zLxV4L0u>t42-w|gsEZD2v0noiLMET4X zQ`L%?Wh2JOr0L=qVMWZU5o;EY2PG`XQ7|G1NSPw5`drVt5&7s;#Bh`ryrW^nc(loy zHmsOO!-zFRAX-~kYDNq;+LrcnWh2I;z*-8_G~)XHplU>&OU;O?qGpYFucB^@`F|B7 z8h`yli8=j-5skkBTB(-p%$MdfzA-CRavaOEkAs*QXfsQX5?xDmAvo{7lTf2p%4?~7 zA~t4nZnB(IQVx2C1Sv9`IfOK&2Y_+jyFy3`(0W-xkRF?0HX)$*Ejep?rhQa-Rt8#c zK~1GR0m@Jra(CrKE6%BD@tOcyyMIb~VK#&J_okDOFv&s-?X!hz2%yze$`i8@2&uC~ zcfq(~kA3%)@L<~kEm0{yAf&ydg4e`0;9g_$ILPinP{wO5&}xuP1_=#9+6&4cv*ZS` zD7wqK>z>4g1kehC+DiFGJA`y7-ZNcms_hazKH3%6ul*-07rs^iQm0amJbzWWlG{)u z$-p~uY67Fp`XQ1B67MTB!Ge0ora?#px<(SN@wD4xJ{_RP4quDU9#zVzM5njgCb}lk zV+l{mr-iNg3y=VN2icHd>IaIS;o8>dY4T~%L)UsLUmGHu^v;$BL`%RmG;&(t_HOddr7i@EgcmGUI$oIDl|>TllO8nQVfj|~UKeKDUSn{hrx0grU^ zEu;dnIU$e8;L+Zaqlaux$YYj!IkY0O86xnSIB<6mC1kTq9+i>JG6L5`HVOz_vr@jE zPgN`B3i(vCQm%x+b$=@5Y6x7TQm&4`mynG<0$)Qm>Ii%l*{J5zW#A`P7s~f)JnclJw^g>ux@6`)jtd z_M8w#w+68;^Qm*Yb{}U44KZetVttrTxxXfrUJ?3p8g?WsKYz=OKFg=E)R}9Y8IJ6l zkGK!)ACRr#o z>H6lT(v~{02W#crluCVh>(5**#3 z8#?wG^+MI&BmCA!rEt}P!o|gJAFoA>E?ZED6!vzdLU69z|HAflRS3?d*Xw2EM(vqXp3#E9Z*Xo7R z5~I}%wfxpXwHIpreU54`)RLMn^g<~lWyM19YJmRHLhvuiQ3PuWyOkXwpSEdT%j07*qoM6N<$g7x(xIsgCw diff --git a/public/images/pokemon/variant/back/987.json b/public/images/pokemon/variant/back/987.json index 1773ba70c36..e28a34d5435 100644 --- a/public/images/pokemon/variant/back/987.json +++ b/public/images/pokemon/variant/back/987.json @@ -9,7 +9,7 @@ "de62a4": "ffc668", "4a83a4": "387fa7", "314a62": "244260", - "70bbb4": "f8d371", + "548e88": "2d60bb", "a4295a": "cc762f" }, "1": { @@ -22,7 +22,7 @@ "de62a4": "ffdf90", "4a83a4": "a1c8db", "314a62": "7396b4", - "70bbb4": "70bbb4", + "548e88": "a9c0c6", "a4295a": "e28c27" }, "2": { @@ -35,7 +35,7 @@ "de62a4": "e25038", "4a83a4": "e6aa47", "314a62": "b56f2a", - "70bbb4": "f8d371", + "548e88": "e0b544", "a4295a": "a62a21" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/987.json b/public/images/pokemon/variant/exp/back/987.json index 385a9eeb29f..5fb59f6979d 100644 --- a/public/images/pokemon/variant/exp/back/987.json +++ b/public/images/pokemon/variant/exp/back/987.json @@ -8,7 +8,7 @@ "0f0f0f": "0f0f0f", "314a62": "244260", "621841": "71370f", - "70bbb4": "f8d371", + "548e88": "2d60bb", "de62a4": "ffc668", "a4295a": "cc762f" }, @@ -21,7 +21,7 @@ "0f0f0f": "0f0f0f", "314a62": "7396b4", "621841": "7b3c08", - "70bbb4": "70bbb4", + "548e88": "a9c0c6", "de62a4": "ffdf90", "a4295a": "e28c27" }, @@ -34,7 +34,7 @@ "0f0f0f": "0f0f0f", "314a62": "b56f2a", "621841": "5a0a05", - "70bbb4": "f8d371", + "548e88": "e0b544", "de62a4": "e25038", "a4295a": "a62a21" } From 58b7f67ca8faad7fda46e9cb02f47e59ab1c36eb Mon Sep 17 00:00:00 2001 From: Scooom <97370685+Scoooom@users.noreply.github.com> Date: Sun, 19 Jan 2025 13:15:59 -0600 Subject: [PATCH 108/119] [Challenge] Fix flip inverse achievement (#5145) * Actually issue FLIP_INVERSE achivement * Local to remote * Update src/system/achv.ts Fix correctly giving FLIP_INVERSE Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> --------- Co-authored-by: Scooom Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> Co-authored-by: damocleas --- src/system/achv.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/system/achv.ts b/src/system/achv.ts index a2777101186..e0c9f0cf052 100644 --- a/src/system/achv.ts +++ b/src/system/achv.ts @@ -292,7 +292,6 @@ export function getAchievementDescription(localizationKey: string): string { } - export const achvs = { _10K_MONEY: new MoneyAchv("10K_MONEY", "", 10000, "nugget", 10), _100K_MONEY: new MoneyAchv("100K_MONEY", "", 100000, "big_nugget", 25).setSecret(true), @@ -365,7 +364,7 @@ export const achvs = { FRESH_START: new ChallengeAchv("FRESH_START", "", "FRESH_START.description", "reviver_seed", 100, (c) => c instanceof FreshStartChallenge && c.value > 0 && !globalScene.gameMode.challenges.some(c => [ Challenges.INVERSE_BATTLE, Challenges.FLIP_STAT ].includes(c.id) && c.value > 0)), INVERSE_BATTLE: new ChallengeAchv("INVERSE_BATTLE", "", "INVERSE_BATTLE.description", "inverse", 100, (c) => c instanceof InverseBattleChallenge && c.value > 0), FLIP_STATS: new ChallengeAchv("FLIP_STATS", "", "FLIP_STATS.description", "dubious_disc", 100, (c) => c instanceof FlipStatChallenge && c.value > 0), - FLIP_INVERSE: new ChallengeAchv("FLIP_INVERSE", "", "FLIP_INVERSE.description", "cracked_pot", 100, (c) => c instanceof FlipStatChallenge && c.value > 0 && globalScene.gameMode.challenges.every(c => [ Challenges.INVERSE_BATTLE, Challenges.FLIP_STAT ].includes(c.id) && c.value > 0)).setSecret(), + FLIP_INVERSE: new ChallengeAchv("FLIP_INVERSE", "", "FLIP_INVERSE.description", "cracked_pot", 100, (c) => c instanceof FlipStatChallenge && c.value > 0 && globalScene.gameMode.challenges.some(c => c.id === Challenges.INVERSE_BATTLE && c.value > 0)).setSecret(), BREEDERS_IN_SPACE: new Achv("BREEDERS_IN_SPACE", "", "BREEDERS_IN_SPACE.description", "moon_stone", 50).setSecret(), }; From ce30897c0a7dc593402b5372ffaaba7cc5d9e9a9 Mon Sep 17 00:00:00 2001 From: Unicornpowerstar Date: Mon, 20 Jan 2025 00:48:07 +0100 Subject: [PATCH 109/119] [Sprite] Update Primal Kyogre Backsprite (#5156) --- public/images/pokemon/exp/back/382-primal.png | Bin 14063 -> 16319 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/public/images/pokemon/exp/back/382-primal.png b/public/images/pokemon/exp/back/382-primal.png index 55c73cf877e6c93e144da8257dd8c7f70529a121..7bf840bcf24f07a53e50bc2e9df0a1f70af26824 100644 GIT binary patch literal 16319 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 E51hCr8UO$Q From f551c51413f948a74db28cf90e4a702a5b1a46cd Mon Sep 17 00:00:00 2001 From: Wlowscha <54003515+Wlowscha@users.noreply.github.com> Date: Mon, 20 Jan 2025 18:01:42 +0100 Subject: [PATCH 110/119] [UI/UX] Adding options to see mons with only one or only two cost reductions (#5045) --- src/ui/dropdown.ts | 12 +++++++++++- src/ui/starter-select-ui-handler.ts | 13 ++++++++++--- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/ui/dropdown.ts b/src/ui/dropdown.ts index ec124312e14..d8ba88d3484 100644 --- a/src/ui/dropdown.ts +++ b/src/ui/dropdown.ts @@ -7,7 +7,9 @@ export enum DropDownState { ON = 0, OFF = 1, EXCLUDE = 2, - UNLOCKABLE = 3 + UNLOCKABLE = 3, + ONE = 4, + TWO = 5 } export enum DropDownType { @@ -55,6 +57,8 @@ export class DropDownOption extends Phaser.GameObjects.Container { private offColor = 0x272727; private excludeColor = 0xff5555; private unlockableColor = 0xffff00; + private oneColor = 0x33bbff; + private twoColor = 0x33bbff; constructor(val: any, labels: DropDownLabel | DropDownLabel[]) { super(globalScene); @@ -126,6 +130,12 @@ export class DropDownOption extends Phaser.GameObjects.Container { case DropDownState.UNLOCKABLE: this.toggle.setTint(this.unlockableColor); break; + case DropDownState.ONE: + this.toggle.setTint(this.oneColor); + break; + case DropDownState.TWO: + this.toggle.setTint(this.twoColor); + break; } } diff --git a/src/ui/starter-select-ui-handler.ts b/src/ui/starter-select-ui-handler.ts index 40325d24af7..d99eb35cf4c 100644 --- a/src/ui/starter-select-ui-handler.ts +++ b/src/ui/starter-select-ui-handler.ts @@ -450,6 +450,8 @@ export default class StarterSelectUiHandler extends MessageUiHandler { const costReductionLabels = [ new DropDownLabel(i18next.t("filterBar:costReduction"), undefined, DropDownState.OFF), new DropDownLabel(i18next.t("filterBar:costReductionUnlocked"), undefined, DropDownState.ON), + new DropDownLabel(i18next.t("filterBar:costReductionUnlockedOne"), undefined, DropDownState.ONE), + new DropDownLabel(i18next.t("filterBar:costReductionUnlockedTwo"), undefined, DropDownState.TWO), new DropDownLabel(i18next.t("filterBar:costReductionUnlockable"), undefined, DropDownState.UNLOCKABLE), new DropDownLabel(i18next.t("filterBar:costReductionLocked"), undefined, DropDownState.EXCLUDE), ]; @@ -2585,13 +2587,18 @@ export default class StarterSelectUiHandler extends MessageUiHandler { }); // Cost Reduction Filter - const isCostReduced = starterData.valueReduction > 0; + const isCostReducedByOne = starterData.valueReduction === 1; + const isCostReducedByTwo = starterData.valueReduction === 2; const isCostReductionUnlockable = this.isValueReductionAvailable(container.species.speciesId); const fitsCostReduction = this.filterBar.getVals(DropDownColumn.UNLOCKS).some(unlocks => { if (unlocks.val === "COST_REDUCTION" && unlocks.state === DropDownState.ON) { - return isCostReduced; + return isCostReducedByOne || isCostReducedByTwo; + } else if (unlocks.val === "COST_REDUCTION" && unlocks.state === DropDownState.ONE) { + return isCostReducedByOne; + } else if (unlocks.val === "COST_REDUCTION" && unlocks.state === DropDownState.TWO) { + return isCostReducedByTwo; } else if (unlocks.val === "COST_REDUCTION" && unlocks.state === DropDownState.EXCLUDE) { - return isStarterProgressable && !isCostReduced; + return isStarterProgressable && !(isCostReducedByOne || isCostReducedByTwo); } else if (unlocks.val === "COST_REDUCTION" && unlocks.state === DropDownState.UNLOCKABLE) { return isCostReductionUnlockable; } else if (unlocks.val === "COST_REDUCTION" && unlocks.state === DropDownState.OFF) { From d495c487163e8f1cce131ee950f29db836b06363 Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Mon, 20 Jan 2025 09:11:58 -0800 Subject: [PATCH 111/119] [i18n] Update locales submodule --- public/locales | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/locales b/public/locales index 7bfcbccb9b8..e07ab625f20 160000 --- a/public/locales +++ b/public/locales @@ -1 +1 @@ -Subproject commit 7bfcbccb9b8192b1059ca7c4c7e7d24901cf579d +Subproject commit e07ab625f2080afe36b61fad291b0ec5eff4000c From d85aedbdfc87a59840f0cdad2f781761d212197a Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Mon, 20 Jan 2025 09:12:58 -0800 Subject: [PATCH 112/119] [Bug] Prevent pokemon with 0 HP from being statused (#5137) * [Bug] Prevent pokemon with 0 HP from being statused * Update test * Move check to `trySetStatus()` and update test --- src/field/pokemon.ts | 3 ++ ...s-effect.test.ts => status_effect.test.ts} | 38 +++++++++++++++++++ src/utils.ts | 10 ++--- 3 files changed, 46 insertions(+), 5 deletions(-) rename src/test/data/{status-effect.test.ts => status_effect.test.ts} (92%) diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index a833facd2f8..a4b8603cbb0 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -3606,6 +3606,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (!this.canSetStatus(effect, asPhase, false, sourcePokemon)) { return false; } + if (this.isFainted() && effect !== StatusEffect.FAINT) { + return false; + } /** * If this Pokemon falls asleep or freezes in the middle of a multi-hit attack, diff --git a/src/test/data/status-effect.test.ts b/src/test/data/status_effect.test.ts similarity index 92% rename from src/test/data/status-effect.test.ts rename to src/test/data/status_effect.test.ts index 4831e8de5de..7948549b8e8 100644 --- a/src/test/data/status-effect.test.ts +++ b/src/test/data/status_effect.test.ts @@ -400,4 +400,42 @@ describe("Status Effects", () => { expect(player.getLastXMoves(1)[0].result).toBe(MoveResult.SUCCESS); }); }); + + describe("Behavior", () => { + let phaserGame: Phaser.Game; + let game: GameManager; + + beforeAll(() => { + phaserGame = new Phaser.Game({ + type: Phaser.HEADLESS, + }); + }); + + afterEach(() => { + game.phaseInterceptor.restoreOg(); + }); + + beforeEach(() => { + game = new GameManager(phaserGame); + game.override + .moveset([ Moves.SPLASH ]) + .ability(Abilities.BALL_FETCH) + .battleType("single") + .disableCrits() + .enemySpecies(Species.MAGIKARP) + .enemyAbility(Abilities.BALL_FETCH) + .enemyMoveset(Moves.NUZZLE) + .enemyLevel(2000); + }); + + it("should not inflict a 0 HP mon with a status", async () => { + await game.classicMode.startBattle([ Species.FEEBAS, Species.MILOTIC ]); + + const player = game.scene.getPlayerPokemon()!; + player.hp = 0; + + expect(player.trySetStatus(StatusEffect.BURN)).toBe(false); + expect(player.status?.effect).not.toBe(StatusEffect.BURN); + }); + }); }); diff --git a/src/utils.ts b/src/utils.ts index be0aec84ecd..2235fb69633 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -349,14 +349,14 @@ export class IntegerHolder extends NumberHolder { } } -/** @deprecated Use {@linkcode NumberHolder}*/ -export class FixedInt extends IntegerHolder { - constructor(value: integer) { - super(value); +export class FixedInt { + public readonly value: number; + + constructor(value: number) { + this.value = value; } } -/** @deprecated */ export function fixedInt(value: integer): integer { return new FixedInt(value) as unknown as integer; } From 39283e373b0ad35bf9e2e2a36da30f9f0f134f4e Mon Sep 17 00:00:00 2001 From: AJ Fontaine <36677462+Fontbane@users.noreply.github.com> Date: Mon, 20 Jan 2025 17:43:55 -0500 Subject: [PATCH 113/119] [UI/UX] Add sort by caught/hatched count to starter select (#5161) --- src/ui/dropdown.ts | 4 +++- src/ui/starter-select-ui-handler.ts | 8 +++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/ui/dropdown.ts b/src/ui/dropdown.ts index d8ba88d3484..8c318b29d64 100644 --- a/src/ui/dropdown.ts +++ b/src/ui/dropdown.ts @@ -29,7 +29,9 @@ export enum SortCriteria { COST = 1, CANDY = 2, IV = 3, - NAME = 4 + NAME = 4, + CAUGHT = 5, + HATCHED = 6 } export class DropDownLabel { diff --git a/src/ui/starter-select-ui-handler.ts b/src/ui/starter-select-ui-handler.ts index d99eb35cf4c..dd427802083 100644 --- a/src/ui/starter-select-ui-handler.ts +++ b/src/ui/starter-select-ui-handler.ts @@ -502,7 +502,9 @@ export default class StarterSelectUiHandler extends MessageUiHandler { new DropDownOption(SortCriteria.COST, new DropDownLabel(i18next.t("filterBar:sortByCost"))), new DropDownOption(SortCriteria.CANDY, new DropDownLabel(i18next.t("filterBar:sortByCandies"))), new DropDownOption(SortCriteria.IV, new DropDownLabel(i18next.t("filterBar:sortByIVs"))), - new DropDownOption(SortCriteria.NAME, new DropDownLabel(i18next.t("filterBar:sortByName"))) + new DropDownOption(SortCriteria.NAME, new DropDownLabel(i18next.t("filterBar:sortByName"))), + new DropDownOption(SortCriteria.CAUGHT, new DropDownLabel(i18next.t("filterBar:sortByNumCaught"))), + new DropDownOption(SortCriteria.HATCHED, new DropDownLabel(i18next.t("filterBar:sortByNumHatched"))) ]; this.filterBar.addFilter(DropDownColumn.SORT, i18next.t("filterBar:sortFilter"), new DropDown(0, 0, sortOptions, this.updateStarters, DropDownType.SINGLE)); this.filterBarContainer.add(this.filterBar); @@ -2698,6 +2700,10 @@ export default class StarterSelectUiHandler extends MessageUiHandler { return (avgIVsA - avgIVsB) * -sort.dir; case SortCriteria.NAME: return a.species.name.localeCompare(b.species.name) * -sort.dir; + case SortCriteria.CAUGHT: + return (globalScene.gameData.dexData[a.species.speciesId].caughtCount - globalScene.gameData.dexData[b.species.speciesId].caughtCount) * -sort.dir; + case SortCriteria.HATCHED: + return (globalScene.gameData.dexData[a.species.speciesId].hatchedCount - globalScene.gameData.dexData[b.species.speciesId].hatchedCount) * -sort.dir; } return 0; }); From 93fc779350dca66e446e60211510a99c85efac50 Mon Sep 17 00:00:00 2001 From: Madmadness65 <59298170+Madmadness65@users.noreply.github.com> Date: Tue, 21 Jan 2025 16:34:18 -0600 Subject: [PATCH 114/119] [Bug] Fix G-Max Urshifus having wrong movesets (#5162) --- src/data/balance/pokemon-level-moves.ts | 38 +++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/src/data/balance/pokemon-level-moves.ts b/src/data/balance/pokemon-level-moves.ts index 8e28300eb8a..8fe61da35c0 100644 --- a/src/data/balance/pokemon-level-moves.ts +++ b/src/data/balance/pokemon-level-moves.ts @@ -19718,6 +19718,44 @@ export const pokemonFormLevelMoves: PokemonSpeciesFormLevelMoves = { [ 48, Moves.CLOSE_COMBAT ], [ 52, Moves.FOCUS_PUNCH ], ], + 2: [ + [ EVOLVE_MOVE, Moves.WICKED_BLOW ], + [ 1, Moves.LEER ], + [ 1, Moves.FOCUS_ENERGY ], + [ 1, Moves.ENDURE ], + [ 1, Moves.ROCK_SMASH ], + [ 1, Moves.SUCKER_PUNCH ], + [ 12, Moves.AERIAL_ACE ], + [ 16, Moves.SCARY_FACE ], + [ 20, Moves.HEADBUTT ], + [ 24, Moves.BRICK_BREAK ], + [ 28, Moves.DETECT ], + [ 32, Moves.BULK_UP ], + [ 36, Moves.IRON_HEAD ], + [ 40, Moves.DYNAMIC_PUNCH ], + [ 44, Moves.COUNTER ], + [ 48, Moves.CLOSE_COMBAT ], + [ 52, Moves.FOCUS_PUNCH ], + ], + 3: [ + [ EVOLVE_MOVE, Moves.SURGING_STRIKES ], + [ 1, Moves.LEER ], + [ 1, Moves.FOCUS_ENERGY ], + [ 1, Moves.ENDURE ], + [ 1, Moves.ROCK_SMASH ], + [ 1, Moves.AQUA_JET ], + [ 12, Moves.AERIAL_ACE ], + [ 16, Moves.SCARY_FACE ], + [ 20, Moves.HEADBUTT ], + [ 24, Moves.BRICK_BREAK ], + [ 28, Moves.DETECT ], + [ 32, Moves.BULK_UP ], + [ 36, Moves.IRON_HEAD ], + [ 40, Moves.DYNAMIC_PUNCH ], + [ 44, Moves.COUNTER ], + [ 48, Moves.CLOSE_COMBAT ], + [ 52, Moves.FOCUS_PUNCH ], + ], }, [Species.CALYREX]: { 1: [ From 271e51be582134c5be30c292ebad99a8ed6c4c45 Mon Sep 17 00:00:00 2001 From: AJ Fontaine <36677462+Fontbane@users.noreply.github.com> Date: Tue, 21 Jan 2025 17:40:05 -0500 Subject: [PATCH 115/119] [Balance] [Feature] Match evil teams to monogen challenge (#4850) * Match evil teams to monogen challenge * Remove outdated comment * Remove BBL adjustment --------- Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> Co-authored-by: damocleas --- src/battle.ts | 61 +++++++++++++++++++++++++++---------------- src/data/challenge.ts | 55 +++++++++++++++++++++++++++++++------- 2 files changed, 84 insertions(+), 32 deletions(-) diff --git a/src/battle.ts b/src/battle.ts index b1196bb0139..287a981f83d 100644 --- a/src/battle.ts +++ b/src/battle.ts @@ -24,9 +24,26 @@ import { ModifierTier } from "#app/modifier/modifier-tier"; import type { MysteryEncounterType } from "#enums/mystery-encounter-type"; export enum ClassicFixedBossWaves { - // TODO: other fixed wave battles should be added here + TOWN_YOUNGSTER = 5, + RIVAL_1 = 8, + RIVAL_2 = 25, + EVIL_GRUNT_1 = 35, + RIVAL_3 = 55, + EVIL_GRUNT_2 = 62, + EVIL_GRUNT_3 = 64, + EVIL_ADMIN_1 = 66, + RIVAL_4 = 95, + EVIL_GRUNT_4 = 112, + EVIL_ADMIN_2 = 114, EVIL_BOSS_1 = 115, + RIVAL_5 = 145, EVIL_BOSS_2 = 165, + ELITE_FOUR_1 = 182, + ELITE_FOUR_2 = 184, + ELITE_FOUR_3 = 186, + ELITE_FOUR_4 = 188, + CHAMPION = 190, + RIVAL_6 = 195, } export enum BattleType { @@ -500,7 +517,7 @@ export class FixedBattleConfig { * @param seedOffset the seed offset to use for the random generation of the trainer * @returns the generated trainer */ -function getRandomTrainerFunc(trainerPool: (TrainerType | TrainerType[])[], randomGender: boolean = false, seedOffset: number = 0): GetTrainerFunc { +export function getRandomTrainerFunc(trainerPool: (TrainerType | TrainerType[])[], randomGender: boolean = false, seedOffset: number = 0): GetTrainerFunc { return () => { const rand = Utils.randSeedInt(trainerPool.length); const trainerTypes: TrainerType[] = []; @@ -544,51 +561,51 @@ export interface FixedBattleConfigs { * Champion on 190 */ export const classicFixedBattles: FixedBattleConfigs = { - [5]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) + [ClassicFixedBossWaves.TOWN_YOUNGSTER]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) .setGetTrainerFunc(() => new Trainer(TrainerType.YOUNGSTER, Utils.randSeedInt(2) ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)), - [8]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) + [ClassicFixedBossWaves.RIVAL_1]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) .setGetTrainerFunc(() => new Trainer(TrainerType.RIVAL, globalScene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)), - [25]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) + [ClassicFixedBossWaves.RIVAL_2]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) .setGetTrainerFunc(() => new Trainer(TrainerType.RIVAL_2, globalScene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)) .setCustomModifierRewards({ guaranteedModifierTiers: [ ModifierTier.ULTRA, ModifierTier.GREAT, ModifierTier.GREAT ], allowLuckUpgrades: false }), - [35]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) + [ClassicFixedBossWaves.EVIL_GRUNT_1]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) .setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.ROCKET_GRUNT, TrainerType.MAGMA_GRUNT, TrainerType.AQUA_GRUNT, TrainerType.GALACTIC_GRUNT, TrainerType.PLASMA_GRUNT, TrainerType.FLARE_GRUNT, TrainerType.AETHER_GRUNT, TrainerType.SKULL_GRUNT, TrainerType.MACRO_GRUNT, TrainerType.STAR_GRUNT ], true)), - [55]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) + [ClassicFixedBossWaves.RIVAL_3]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) .setGetTrainerFunc(() => new Trainer(TrainerType.RIVAL_3, globalScene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)) .setCustomModifierRewards({ guaranteedModifierTiers: [ ModifierTier.ULTRA, ModifierTier.ULTRA, ModifierTier.GREAT, ModifierTier.GREAT ], allowLuckUpgrades: false }), - [62]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(35) + [ClassicFixedBossWaves.EVIL_GRUNT_2]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(ClassicFixedBossWaves.EVIL_GRUNT_1) .setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.ROCKET_GRUNT, TrainerType.MAGMA_GRUNT, TrainerType.AQUA_GRUNT, TrainerType.GALACTIC_GRUNT, TrainerType.PLASMA_GRUNT, TrainerType.FLARE_GRUNT, TrainerType.AETHER_GRUNT, TrainerType.SKULL_GRUNT, TrainerType.MACRO_GRUNT, TrainerType.STAR_GRUNT ], true)), - [64]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(35) + [ClassicFixedBossWaves.EVIL_GRUNT_3]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(ClassicFixedBossWaves.EVIL_GRUNT_1) .setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.ROCKET_GRUNT, TrainerType.MAGMA_GRUNT, TrainerType.AQUA_GRUNT, TrainerType.GALACTIC_GRUNT, TrainerType.PLASMA_GRUNT, TrainerType.FLARE_GRUNT, TrainerType.AETHER_GRUNT, TrainerType.SKULL_GRUNT, TrainerType.MACRO_GRUNT, TrainerType.STAR_GRUNT ], true)), - [66]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(35) + [ClassicFixedBossWaves.EVIL_ADMIN_1]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(ClassicFixedBossWaves.EVIL_GRUNT_1) .setGetTrainerFunc(getRandomTrainerFunc([[ TrainerType.ARCHER, TrainerType.ARIANA, TrainerType.PROTON, TrainerType.PETREL ], [ TrainerType.TABITHA, TrainerType.COURTNEY ], [ TrainerType.MATT, TrainerType.SHELLY ], [ TrainerType.JUPITER, TrainerType.MARS, TrainerType.SATURN ], [ TrainerType.ZINZOLIN, TrainerType.ROOD ], [ TrainerType.XEROSIC, TrainerType.BRYONY ], TrainerType.FABA, TrainerType.PLUMERIA, TrainerType.OLEANA, [ TrainerType.GIACOMO, TrainerType.MELA, TrainerType.ATTICUS, TrainerType.ORTEGA, TrainerType.ERI ]], true)), - [95]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) + [ClassicFixedBossWaves.RIVAL_4]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) .setGetTrainerFunc(() => new Trainer(TrainerType.RIVAL_4, globalScene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)) .setCustomModifierRewards({ guaranteedModifierTiers: [ ModifierTier.ULTRA, ModifierTier.ULTRA, ModifierTier.ULTRA, ModifierTier.ULTRA ], allowLuckUpgrades: false }), - [112]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(35) + [ClassicFixedBossWaves.EVIL_GRUNT_4]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(ClassicFixedBossWaves.EVIL_GRUNT_1) .setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.ROCKET_GRUNT, TrainerType.MAGMA_GRUNT, TrainerType.AQUA_GRUNT, TrainerType.GALACTIC_GRUNT, TrainerType.PLASMA_GRUNT, TrainerType.FLARE_GRUNT, TrainerType.AETHER_GRUNT, TrainerType.SKULL_GRUNT, TrainerType.MACRO_GRUNT, TrainerType.STAR_GRUNT ], true)), - [114]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(35) + [ClassicFixedBossWaves.EVIL_ADMIN_2]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(ClassicFixedBossWaves.EVIL_GRUNT_1) .setGetTrainerFunc(getRandomTrainerFunc([[ TrainerType.ARCHER, TrainerType.ARIANA, TrainerType.PROTON, TrainerType.PETREL ], [ TrainerType.TABITHA, TrainerType.COURTNEY ], [ TrainerType.MATT, TrainerType.SHELLY ], [ TrainerType.JUPITER, TrainerType.MARS, TrainerType.SATURN ], [ TrainerType.ZINZOLIN, TrainerType.ROOD ], [ TrainerType.XEROSIC, TrainerType.BRYONY ], TrainerType.FABA, TrainerType.PLUMERIA, TrainerType.OLEANA, [ TrainerType.GIACOMO, TrainerType.MELA, TrainerType.ATTICUS, TrainerType.ORTEGA, TrainerType.ERI ]], true, 1)), - [ClassicFixedBossWaves.EVIL_BOSS_1]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(35) + [ClassicFixedBossWaves.EVIL_BOSS_1]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(ClassicFixedBossWaves.EVIL_GRUNT_1) .setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.ROCKET_BOSS_GIOVANNI_1, TrainerType.MAXIE, TrainerType.ARCHIE, TrainerType.CYRUS, TrainerType.GHETSIS, TrainerType.LYSANDRE, TrainerType.LUSAMINE, TrainerType.GUZMA, TrainerType.ROSE, TrainerType.PENNY ])) .setCustomModifierRewards({ guaranteedModifierTiers: [ ModifierTier.ROGUE, ModifierTier.ROGUE, ModifierTier.ULTRA, ModifierTier.ULTRA, ModifierTier.ULTRA ], allowLuckUpgrades: false }), - [145]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) + [ClassicFixedBossWaves.RIVAL_5]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) .setGetTrainerFunc(() => new Trainer(TrainerType.RIVAL_5, globalScene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)) .setCustomModifierRewards({ guaranteedModifierTiers: [ ModifierTier.ROGUE, ModifierTier.ROGUE, ModifierTier.ROGUE, ModifierTier.ULTRA, ModifierTier.ULTRA ], allowLuckUpgrades: false }), - [ClassicFixedBossWaves.EVIL_BOSS_2]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(35) + [ClassicFixedBossWaves.EVIL_BOSS_2]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(ClassicFixedBossWaves.EVIL_GRUNT_1) .setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.ROCKET_BOSS_GIOVANNI_2, TrainerType.MAXIE_2, TrainerType.ARCHIE_2, TrainerType.CYRUS_2, TrainerType.GHETSIS_2, TrainerType.LYSANDRE_2, TrainerType.LUSAMINE_2, TrainerType.GUZMA_2, TrainerType.ROSE_2, TrainerType.PENNY_2 ])) .setCustomModifierRewards({ guaranteedModifierTiers: [ ModifierTier.ROGUE, ModifierTier.ROGUE, ModifierTier.ULTRA, ModifierTier.ULTRA, ModifierTier.ULTRA, ModifierTier.ULTRA ], allowLuckUpgrades: false }), - [182]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) + [ClassicFixedBossWaves.ELITE_FOUR_1]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) .setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.LORELEI, TrainerType.WILL, TrainerType.SIDNEY, TrainerType.AARON, TrainerType.SHAUNTAL, TrainerType.MALVA, [ TrainerType.HALA, TrainerType.MOLAYNE ], TrainerType.MARNIE_ELITE, TrainerType.RIKA, TrainerType.CRISPIN ])), - [184]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(182) + [ClassicFixedBossWaves.ELITE_FOUR_2]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(ClassicFixedBossWaves.ELITE_FOUR_1) .setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.BRUNO, TrainerType.KOGA, TrainerType.PHOEBE, TrainerType.BERTHA, TrainerType.MARSHAL, TrainerType.SIEBOLD, TrainerType.OLIVIA, TrainerType.NESSA_ELITE, TrainerType.POPPY, TrainerType.AMARYS ])), - [186]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(182) + [ClassicFixedBossWaves.ELITE_FOUR_3]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(ClassicFixedBossWaves.ELITE_FOUR_1) .setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.AGATHA, TrainerType.BRUNO, TrainerType.GLACIA, TrainerType.FLINT, TrainerType.GRIMSLEY, TrainerType.WIKSTROM, TrainerType.ACEROLA, [ TrainerType.BEA_ELITE, TrainerType.ALLISTER_ELITE ], TrainerType.LARRY_ELITE, TrainerType.LACEY ])), - [188]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(182) + [ClassicFixedBossWaves.ELITE_FOUR_4]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(ClassicFixedBossWaves.ELITE_FOUR_1) .setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.LANCE, TrainerType.KAREN, TrainerType.DRAKE, TrainerType.LUCIAN, TrainerType.CAITLIN, TrainerType.DRASNA, TrainerType.KAHILI, TrainerType.RAIHAN_ELITE, TrainerType.HASSEL, TrainerType.DRAYTON ])), - [190]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(182) + [ClassicFixedBossWaves.CHAMPION]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(ClassicFixedBossWaves.ELITE_FOUR_1) .setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.BLUE, [ TrainerType.RED, TrainerType.LANCE_CHAMPION ], [ TrainerType.STEVEN, TrainerType.WALLACE ], TrainerType.CYNTHIA, [ TrainerType.ALDER, TrainerType.IRIS ], TrainerType.DIANTHA, TrainerType.HAU, TrainerType.LEON, [ TrainerType.GEETA, TrainerType.NEMONA ], TrainerType.KIERAN ])), - [195]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) + [ClassicFixedBossWaves.RIVAL_6]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) .setGetTrainerFunc(() => new Trainer(TrainerType.RIVAL_6, globalScene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)) .setCustomModifierRewards({ guaranteedModifierTiers: [ ModifierTier.ROGUE, ModifierTier.ROGUE, ModifierTier.ULTRA, ModifierTier.ULTRA, ModifierTier.GREAT, ModifierTier.GREAT ], allowLuckUpgrades: false }) }; diff --git a/src/data/challenge.ts b/src/data/challenge.ts index a01ceab8aa3..fab5196601c 100644 --- a/src/data/challenge.ts +++ b/src/data/challenge.ts @@ -8,7 +8,7 @@ import { speciesStarterCosts } from "#app/data/balance/starters"; import type Pokemon from "#app/field/pokemon"; import { PokemonMove } from "#app/field/pokemon"; import type { FixedBattleConfig } from "#app/battle"; -import { BattleType } from "#app/battle"; +import { ClassicFixedBossWaves, BattleType, getRandomTrainerFunc } from "#app/battle"; import Trainer, { TrainerVariant } from "#app/field/trainer"; import type { GameMode } from "#app/game-mode"; import { Type } from "#enums/type"; @@ -20,6 +20,7 @@ import type { Moves } from "#enums/moves"; import { TypeColor, TypeShadow } from "#enums/color"; import { pokemonEvolutions } from "#app/data/balance/pokemon-evolutions"; import { pokemonFormChanges } from "#app/data/pokemon-forms"; +import { ModifierTier } from "#app/modifier/modifier-tier"; /** A constant for the default max cost of the starting party before a run */ const DEFAULT_PARTY_MAX_COST = 10; @@ -464,30 +465,64 @@ export class SingleGenerationChallenge extends Challenge { return false; } - applyFixedBattle(waveIndex: Number, battleConfig: FixedBattleConfig): boolean { - let trainerTypes: TrainerType[] = []; + applyFixedBattle(waveIndex: number, battleConfig: FixedBattleConfig): boolean { + let trainerTypes: (TrainerType | TrainerType[])[] = []; + const evilTeamWaves: number[] = [ ClassicFixedBossWaves.EVIL_GRUNT_1, ClassicFixedBossWaves.EVIL_GRUNT_2, ClassicFixedBossWaves.EVIL_GRUNT_3, ClassicFixedBossWaves.EVIL_ADMIN_1, ClassicFixedBossWaves.EVIL_GRUNT_4, ClassicFixedBossWaves.EVIL_ADMIN_2, ClassicFixedBossWaves.EVIL_BOSS_1, ClassicFixedBossWaves.EVIL_BOSS_2 ]; + const evilTeamGrunts = [[ TrainerType.ROCKET_GRUNT ], [ TrainerType.ROCKET_GRUNT ], [ TrainerType.MAGMA_GRUNT, TrainerType.AQUA_GRUNT ], [ TrainerType.GALACTIC_GRUNT ], [ TrainerType.PLASMA_GRUNT ], [ TrainerType.FLARE_GRUNT ], [ TrainerType.AETHER_GRUNT, TrainerType.SKULL_GRUNT ], [ TrainerType.MACRO_GRUNT ], [ TrainerType.STAR_GRUNT ]]; + const evilTeamAdmins = [[ TrainerType.ARCHER, TrainerType.ARIANA, TrainerType.PROTON, TrainerType.PETREL ], [ TrainerType.ARCHER, TrainerType.ARIANA, TrainerType.PROTON, TrainerType.PETREL ], [[ TrainerType.TABITHA, TrainerType.COURTNEY ], [ TrainerType.MATT, TrainerType.SHELLY ]], [ TrainerType.JUPITER, TrainerType.MARS, TrainerType.SATURN ], [ TrainerType.ZINZOLIN, TrainerType.ROOD ], [ TrainerType.XEROSIC, TrainerType.BRYONY ], [ TrainerType.FABA, TrainerType.PLUMERIA ], [ TrainerType.OLEANA ], [ TrainerType.GIACOMO, TrainerType.MELA, TrainerType.ATTICUS, TrainerType.ORTEGA, TrainerType.ERI ]]; + const evilTeamBosses = [[ TrainerType.ROCKET_BOSS_GIOVANNI_1 ], [ TrainerType.ROCKET_BOSS_GIOVANNI_1 ], [ TrainerType.MAXIE, TrainerType.ARCHIE ], [ TrainerType.CYRUS ], [ TrainerType.GHETSIS ], [ TrainerType.LYSANDRE ], [ TrainerType.LUSAMINE, TrainerType.GUZMA ], [ TrainerType.ROSE ], [ TrainerType.PENNY ]]; + const evilTeamBossRematches = [[ TrainerType.ROCKET_BOSS_GIOVANNI_2 ], [ TrainerType.ROCKET_BOSS_GIOVANNI_2 ], [ TrainerType.MAXIE_2, TrainerType.ARCHIE_2 ], [ TrainerType.CYRUS_2 ], [ TrainerType.GHETSIS_2 ], [ TrainerType.LYSANDRE_2 ], [ TrainerType.LUSAMINE_2, TrainerType.GUZMA_2 ], [ TrainerType.ROSE_2 ], [ TrainerType.PENNY_2 ]]; switch (waveIndex) { - case 182: + case ClassicFixedBossWaves.EVIL_GRUNT_1: + trainerTypes = evilTeamGrunts[this.value - 1]; + battleConfig.setBattleType(BattleType.TRAINER).setGetTrainerFunc(getRandomTrainerFunc(trainerTypes, true)); + return true; + case ClassicFixedBossWaves.EVIL_GRUNT_2: + case ClassicFixedBossWaves.EVIL_GRUNT_3: + case ClassicFixedBossWaves.EVIL_GRUNT_4: + trainerTypes = evilTeamGrunts[this.value - 1]; + break; + case ClassicFixedBossWaves.EVIL_ADMIN_1: + case ClassicFixedBossWaves.EVIL_ADMIN_2: + trainerTypes = evilTeamAdmins[this.value - 1]; + break; + case ClassicFixedBossWaves.EVIL_BOSS_1: + trainerTypes = evilTeamBosses[this.value - 1]; + battleConfig.setBattleType(BattleType.TRAINER).setSeedOffsetWave(ClassicFixedBossWaves.EVIL_GRUNT_1).setGetTrainerFunc(getRandomTrainerFunc(trainerTypes, true)) + .setCustomModifierRewards({ guaranteedModifierTiers: [ ModifierTier.ROGUE, ModifierTier.ROGUE, ModifierTier.ULTRA, ModifierTier.ULTRA, ModifierTier.ULTRA ], allowLuckUpgrades: false }); + return true; + case ClassicFixedBossWaves.EVIL_BOSS_2: + trainerTypes = evilTeamBossRematches[this.value - 1]; + battleConfig.setBattleType(BattleType.TRAINER).setSeedOffsetWave(ClassicFixedBossWaves.EVIL_GRUNT_1).setGetTrainerFunc(getRandomTrainerFunc(trainerTypes, true)) + .setCustomModifierRewards({ guaranteedModifierTiers: [ ModifierTier.ROGUE, ModifierTier.ROGUE, ModifierTier.ULTRA, ModifierTier.ULTRA, ModifierTier.ULTRA, ModifierTier.ULTRA ], allowLuckUpgrades: false }); + return true; + case ClassicFixedBossWaves.ELITE_FOUR_1: trainerTypes = [ TrainerType.LORELEI, TrainerType.WILL, TrainerType.SIDNEY, TrainerType.AARON, TrainerType.SHAUNTAL, TrainerType.MALVA, Utils.randSeedItem([ TrainerType.HALA, TrainerType.MOLAYNE ]), TrainerType.MARNIE_ELITE, TrainerType.RIKA ]; break; - case 184: + case ClassicFixedBossWaves.ELITE_FOUR_2: trainerTypes = [ TrainerType.BRUNO, TrainerType.KOGA, TrainerType.PHOEBE, TrainerType.BERTHA, TrainerType.MARSHAL, TrainerType.SIEBOLD, TrainerType.OLIVIA, TrainerType.NESSA_ELITE, TrainerType.POPPY ]; break; - case 186: + case ClassicFixedBossWaves.ELITE_FOUR_3: trainerTypes = [ TrainerType.AGATHA, TrainerType.BRUNO, TrainerType.GLACIA, TrainerType.FLINT, TrainerType.GRIMSLEY, TrainerType.WIKSTROM, TrainerType.ACEROLA, Utils.randSeedItem([ TrainerType.BEA_ELITE, TrainerType.ALLISTER_ELITE ]), TrainerType.LARRY_ELITE ]; break; - case 188: + case ClassicFixedBossWaves.ELITE_FOUR_4: trainerTypes = [ TrainerType.LANCE, TrainerType.KAREN, TrainerType.DRAKE, TrainerType.LUCIAN, TrainerType.CAITLIN, TrainerType.DRASNA, TrainerType.KAHILI, TrainerType.RAIHAN_ELITE, TrainerType.HASSEL ]; break; - case 190: + case ClassicFixedBossWaves.CHAMPION: trainerTypes = [ TrainerType.BLUE, Utils.randSeedItem([ TrainerType.RED, TrainerType.LANCE_CHAMPION ]), Utils.randSeedItem([ TrainerType.STEVEN, TrainerType.WALLACE ]), TrainerType.CYNTHIA, Utils.randSeedItem([ TrainerType.ALDER, TrainerType.IRIS ]), TrainerType.DIANTHA, TrainerType.HAU, TrainerType.LEON, Utils.randSeedItem([ TrainerType.GEETA, TrainerType.NEMONA ]) ]; break; } if (trainerTypes.length === 0) { return false; - } else { - battleConfig.setBattleType(BattleType.TRAINER).setGetTrainerFunc(() => new Trainer(trainerTypes[this.value - 1], TrainerVariant.DEFAULT)); + } else if (evilTeamWaves.includes(waveIndex)) { + battleConfig.setBattleType(BattleType.TRAINER).setSeedOffsetWave(ClassicFixedBossWaves.EVIL_GRUNT_1).setGetTrainerFunc(getRandomTrainerFunc(trainerTypes, true)); return true; + } else if (waveIndex >= ClassicFixedBossWaves.ELITE_FOUR_1 && waveIndex <= ClassicFixedBossWaves.CHAMPION) { + const ttypes = trainerTypes as TrainerType[]; + battleConfig.setBattleType(BattleType.TRAINER).setGetTrainerFunc(() => new Trainer(ttypes[this.value - 1], TrainerVariant.DEFAULT)); + return true; + } else { + return false; } } From d10b7c05f73887902391a8cf7bfff56756b30373 Mon Sep 17 00:00:00 2001 From: Wlowscha <54003515+Wlowscha@users.noreply.github.com> Date: Wed, 22 Jan 2025 00:42:27 +0100 Subject: [PATCH 116/119] [Refactor] Descriptions for evolution and form change requirements (#5147) * Adding extensions of the SpeciesEvolutionCondition class * Commented out logs * Introducing descriptions for form changes; new class SpeciesFormChangeAbilityTrigger which is functionally identical to SpeciesFormChangeManualTrigger but has appropriate description * Fix in description of compound trigger * Commenting out logs * Small fixes, clearing logs, implementing suggestions * Apply suggestions from code review Trigger functions are declared with no arguments when not needed. Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> * Removed exports for new classes --------- Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> Co-authored-by: damocleas --- src/data/ability.ts | 12 +- src/data/balance/pokemon-evolutions.ts | 498 +++++++++++++----- src/data/battler-tags.ts | 10 +- .../the-winstrate-challenge-encounter.ts | 4 +- src/data/pokemon-forms.ts | 108 ++-- src/plugins/i18n.ts | 1 + 6 files changed, 433 insertions(+), 200 deletions(-) diff --git a/src/data/ability.ts b/src/data/ability.ts index 0e8b3c2392d..5e5231176b5 100644 --- a/src/data/ability.ts +++ b/src/data/ability.ts @@ -16,7 +16,7 @@ import type { ArenaTrapTag } from "./arena-tag"; import { ArenaTagSide } from "./arena-tag"; import { BerryModifier, HitHealModifier, PokemonHeldItemModifier } from "../modifier/modifier"; import { TerrainType } from "./terrain"; -import { SpeciesFormChangeManualTrigger, SpeciesFormChangeRevertWeatherFormTrigger, SpeciesFormChangeWeatherTrigger } from "./pokemon-forms"; +import { SpeciesFormChangeAbilityTrigger, SpeciesFormChangeRevertWeatherFormTrigger, SpeciesFormChangeWeatherTrigger } from "./pokemon-forms"; import i18next from "i18next"; import type { Localizable } from "#app/interfaces/locales"; import { Command } from "../ui/command-ui-handler"; @@ -232,7 +232,7 @@ export class PostBattleInitFormChangeAbAttr extends PostBattleInitAbAttr { applyPostBattleInit(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { const formIndex = this.formFunc(pokemon); if (formIndex !== pokemon.formIndex && !simulated) { - return globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeManualTrigger, false); + return globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeAbilityTrigger, false); } return false; @@ -1875,7 +1875,7 @@ export class PostVictoryFormChangeAbAttr extends PostVictoryAbAttr { const formIndex = this.formFunc(pokemon); if (formIndex !== pokemon.formIndex) { if (!simulated) { - globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeManualTrigger, false); + globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeAbilityTrigger, false); } return true; } @@ -2306,7 +2306,7 @@ export class PostSummonFormChangeAbAttr extends PostSummonAbAttr { applyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean { const formIndex = this.formFunc(pokemon); if (formIndex !== pokemon.formIndex) { - return simulated || globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeManualTrigger, false); + return simulated || globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeAbilityTrigger, false); } return false; @@ -2734,7 +2734,7 @@ export class PreSwitchOutFormChangeAbAttr extends PreSwitchOutAbAttr { const formIndex = this.formFunc(pokemon); if (formIndex !== pokemon.formIndex) { if (!simulated) { - globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeManualTrigger, false); + globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeAbilityTrigger, false); } return true; } @@ -3704,7 +3704,7 @@ export class PostTurnFormChangeAbAttr extends PostTurnAbAttr { const formIndex = this.formFunc(pokemon); if (formIndex !== pokemon.formIndex) { if (!simulated) { - globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeManualTrigger, false); + globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeAbilityTrigger, false); } return true; diff --git a/src/data/balance/pokemon-evolutions.ts b/src/data/balance/pokemon-evolutions.ts index bf34b5122dc..a8fe3b5f4ab 100644 --- a/src/data/balance/pokemon-evolutions.ts +++ b/src/data/balance/pokemon-evolutions.ts @@ -12,6 +12,8 @@ import { Species } from "#enums/species"; import { TimeOfDay } from "#enums/time-of-day"; import { DamageMoneyRewardModifier, ExtraModifierModifier, MoneyMultiplierModifier, TempExtraModifierModifier } from "#app/modifier/modifier"; import { SpeciesFormKey } from "#enums/species-form-key"; +import { speciesStarterCosts } from "./starters"; +import i18next from "i18next"; export enum SpeciesWildEvolutionDelay { @@ -120,17 +122,214 @@ export class FusionSpeciesFormEvolution extends SpeciesFormEvolution { export class SpeciesEvolutionCondition { public predicate: EvolutionConditionPredicate; - public enforceFunc: EvolutionConditionEnforceFunc | undefined; + public enforceFunc?: EvolutionConditionEnforceFunc; + public description: string; constructor(predicate: EvolutionConditionPredicate, enforceFunc?: EvolutionConditionEnforceFunc) { this.predicate = predicate; this.enforceFunc = enforceFunc; + this.description = ""; } } -export class SpeciesFriendshipEvolutionCondition extends SpeciesEvolutionCondition { - constructor(friendshipAmount: integer, predicate?: EvolutionConditionPredicate, enforceFunc?: EvolutionConditionEnforceFunc) { - super(p => p.friendship >= friendshipAmount && (!predicate || predicate(p)), enforceFunc); +class GenderEvolutionCondition extends SpeciesEvolutionCondition { + public gender: Gender; + constructor(gender: Gender) { + super(p => p.gender === gender, p => p.gender = gender); + this.gender = gender; + this.description = i18next.t("pokemonEvolutions:gender", { gender: i18next.t(`pokemonEvolutions:${Gender[gender]}`) }); + } +} + +class TimeOfDayEvolutionCondition extends SpeciesEvolutionCondition { + public timesOfDay: TimeOfDay[]; + constructor(tod: "day" | "night") { + if (tod === "day") { + super(() => globalScene.arena.getTimeOfDay() === TimeOfDay.DAWN || globalScene.arena.getTimeOfDay() === TimeOfDay.DAY); + this.timesOfDay = [ TimeOfDay.DAWN, TimeOfDay.DAY ]; + } else if (tod === "night") { + super(() => globalScene.arena.getTimeOfDay() === TimeOfDay.DUSK || globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT); + this.timesOfDay = [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]; + } else { + super(() => false); + this.timesOfDay = []; + } + this.description = i18next.t("pokemonEvolutions:timeOfDay", { tod: i18next.t(`pokemonEvolutions:${tod}`) }); + } +} + +class MoveEvolutionCondition extends SpeciesEvolutionCondition { + public move: Moves; + constructor(move: Moves) { + super(p => p.moveset.filter(m => m?.moveId === move).length > 0); + this.move = move; + const moveKey = Moves[this.move].split("_").filter(f => f).map((f, i) => i ? `${f[0]}${f.slice(1).toLowerCase()}` : f.toLowerCase()).join(""); + this.description = i18next.t("pokemonEvolutions:move", { move: i18next.t(`move:${moveKey}.name`) }); + } +} + +class FriendshipEvolutionCondition extends SpeciesEvolutionCondition { + public amount: integer; + constructor(amount: number) { + super(p => p.friendship >= amount); + this.amount = amount; + this.description = i18next.t("pokemonEvolutions:friendship"); + } +} + +class FriendshipTimeOfDayEvolutionCondition extends SpeciesEvolutionCondition { + public amount: integer; + public timesOfDay: TimeOfDay[]; + constructor(amount: number, tod: "day" | "night") { + if (tod === "day") { + super(p => p.friendship >= amount && (globalScene.arena.getTimeOfDay() === TimeOfDay.DAWN || globalScene.arena.getTimeOfDay() === TimeOfDay.DAY)); + this.timesOfDay = [ TimeOfDay.DAWN, TimeOfDay.DAY ]; + } else if (tod === "night") { + super(p => p.friendship >= amount && (globalScene.arena.getTimeOfDay() === TimeOfDay.DUSK || globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT)); + this.timesOfDay = [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]; + } else { + super(p => false); + this.timesOfDay = []; + } + this.amount = amount; + this.description = i18next.t("pokemonEvolutions:friendshipTimeOfDay", { tod: i18next.t(`pokemonEvolutions:${tod}`) }); + } +} + +class FriendshipMoveTypeEvolutionCondition extends SpeciesEvolutionCondition { + public amount: integer; + public type: Type; + constructor(amount: number, type: Type) { + super(p => p.friendship >= amount && !!p.getMoveset().find(m => m?.getMove().type === type)); + this.amount = amount; + this.type = type; + this.description = i18next.t("pokemonEvolutions:friendshipMoveType", { type: i18next.t(`pokemonInfo:Type.${Type[this.type]}`) }); + } +} + +class ShedinjaEvolutionCondition extends SpeciesEvolutionCondition { + constructor() { + super(() => globalScene.getPlayerParty().length < 6 && globalScene.pokeballCounts[PokeballType.POKEBALL] > 0); + this.description = i18next.t("pokemonEvolutions:shedinja"); + } +} + +class PartyTypeEvolutionCondition extends SpeciesEvolutionCondition { + public type: Type; + constructor(type: Type) { + super(() => !!globalScene.getPlayerParty().find(p => p.getTypes(false, false, true).indexOf(type) > -1)); + this.type = type; + this.description = i18next.t("pokemonEvolutions:partyType", { type: i18next.t(`pokemonInfo:Type.${Type[this.type]}`) }); + } +} + +class CaughtEvolutionCondition extends SpeciesEvolutionCondition { + public species: Species; + constructor(species: Species) { + super(() => !!globalScene.gameData.dexData[species].caughtAttr); + this.species = species; + this.description = i18next.t("pokemonEvolutions:caught", { species: i18next.t(`pokemon:${Species[this.species].toLowerCase()}`) }); + } +} + +class WeatherEvolutionCondition extends SpeciesEvolutionCondition { + public weatherTypes: WeatherType[]; + constructor(weatherTypes: WeatherType[]) { + super(() => weatherTypes.indexOf(globalScene.arena.weather?.weatherType || WeatherType.NONE) > -1); + this.weatherTypes = weatherTypes; + } +} + +class MoveTypeEvolutionCondition extends SpeciesEvolutionCondition { + public type: Type; + constructor(type: Type) { + super(p => p.moveset.filter(m => m?.getMove().type === type).length > 0); + this.type = type; + this.description = i18next.t("pokemonEvolutions:moveType", { type: i18next.t(`pokemonInfo:Type.${Type[this.type]}`) }); + } +} + +class TreasureEvolutionCondition extends SpeciesEvolutionCondition { + constructor() { + super(p => p.evoCounter + + p.getHeldItems().filter(m => m instanceof DamageMoneyRewardModifier).length + + globalScene.findModifiers(m => m instanceof MoneyMultiplierModifier + || m instanceof ExtraModifierModifier || m instanceof TempExtraModifierModifier).length > 9); + this.description = i18next.t("pokemonEvolutions:treasure"); + } +} + +class TyrogueEvolutionCondition extends SpeciesEvolutionCondition { + public move: Moves; + constructor(move: Moves) { + super(p => + p.getMoveset(true).find(m => m && [ Moves.LOW_SWEEP, Moves.MACH_PUNCH, Moves.RAPID_SPIN ].includes(m?.moveId))?.moveId === move); + this.move = move; + const moveKey = Moves[this.move].split("_").filter(f => f).map((f, i) => i ? `${f[0]}${f.slice(1).toLowerCase()}` : f.toLowerCase()).join(""); + this.description = i18next.t("pokemonEvolutions:move", { move: i18next.t(`move:${moveKey}.name`) }); + } +} + +class NatureEvolutionCondition extends SpeciesEvolutionCondition { + public natures: Nature[]; + constructor(natures: Nature[]) { + super(p => natures.indexOf(p.getNature()) > -1); + this.natures = natures; + this.description = i18next.t("pokemonEvolutions:nature"); + } +} + +class MoveTimeOfDayEvolutionCondition extends SpeciesEvolutionCondition { + public move: Moves; + public timesOfDay: TimeOfDay[]; + constructor(move: Moves, tod: "day" | "night") { + if (tod === "day") { + super(p => p.moveset.filter(m => m?.moveId === move).length > 0 && (globalScene.arena.getTimeOfDay() === TimeOfDay.DAWN || globalScene.arena.getTimeOfDay() === TimeOfDay.DAY)); + this.move = move; + this.timesOfDay = [ TimeOfDay.DAWN, TimeOfDay.DAY ]; + } else if (tod === "night") { + super(p => p.moveset.filter(m => m?.moveId === move).length > 0 && (globalScene.arena.getTimeOfDay() === TimeOfDay.DUSK || globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT)); + this.move = move; + this.timesOfDay = [ TimeOfDay.DUSK, TimeOfDay.NIGHT ]; + } else { + super(() => false); + this.timesOfDay = []; + } + const moveKey = Moves[this.move].split("_").filter(f => f).map((f, i) => i ? `${f[0]}${f.slice(1).toLowerCase()}` : f.toLowerCase()).join(""); + this.description = i18next.t("pokemonEvolutions:moveTimeOfDay", { move: i18next.t(`move:${moveKey}.name`), tod: i18next.t(`pokemonEvolutions:${tod}`) }); + } +} + +class BiomeEvolutionCondition extends SpeciesEvolutionCondition { + public biomes: Biome[]; + constructor(biomes: Biome[]) { + super(() => biomes.filter(b => b === globalScene.arena.biomeType).length > 0); + this.biomes = biomes; + this.description = i18next.t("pokemonEvolutions:biome"); + } +} + +class DunsparceEvolutionCondition extends SpeciesEvolutionCondition { + constructor() { + super(p => { + let ret = false; + if (p.moveset.filter(m => m?.moveId === Moves.HYPER_DRILL).length > 0) { + globalScene.executeWithSeedOffset(() => ret = !Utils.randSeedInt(4), p.id); + } + return ret; + }); + const moveKey = Moves[Moves.HYPER_DRILL].split("_").filter(f => f).map((f, i) => i ? `${f[0]}${f.slice(1).toLowerCase()}` : f.toLowerCase()).join(""); + this.description = i18next.t("pokemonEvolutions:move", { move: i18next.t(`move:${moveKey}.name`) }); + } +} + +class TandemausEvolutionCondition extends SpeciesEvolutionCondition { + constructor() { + super(p => { + let ret = false; + globalScene.executeWithSeedOffset(() => ret = !Utils.randSeedInt(4), p.id); + return ret; + }); } } @@ -267,8 +466,8 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.ELECTRODE, 30, null, null) ], [Species.CUBONE]: [ - new SpeciesEvolution(Species.ALOLA_MAROWAK, 28, null, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DUSK || globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT)), - new SpeciesEvolution(Species.MAROWAK, 28, null, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DAWN || globalScene.arena.getTimeOfDay() === TimeOfDay.DAY)) + new SpeciesEvolution(Species.ALOLA_MAROWAK, 28, null, new TimeOfDayEvolutionCondition("night")), + new SpeciesEvolution(Species.MAROWAK, 28, null, new TimeOfDayEvolutionCondition("day")) ], [Species.TYROGUE]: [ /** @@ -277,19 +476,13 @@ export const pokemonEvolutions: PokemonEvolutions = { * If Tyrogue knows multiple of these moves, its evolution is based on * the first qualifying move in its moveset. */ - new SpeciesEvolution(Species.HITMONLEE, 20, null, new SpeciesEvolutionCondition(p => - p.getMoveset(true).find(move => move && [ Moves.LOW_SWEEP, Moves.MACH_PUNCH, Moves.RAPID_SPIN ].includes(move?.moveId))?.moveId === Moves.LOW_SWEEP - )), - new SpeciesEvolution(Species.HITMONCHAN, 20, null, new SpeciesEvolutionCondition(p => - p.getMoveset(true).find(move => move && [ Moves.LOW_SWEEP, Moves.MACH_PUNCH, Moves.RAPID_SPIN ].includes(move?.moveId))?.moveId === Moves.MACH_PUNCH - )), - new SpeciesEvolution(Species.HITMONTOP, 20, null, new SpeciesEvolutionCondition(p => - p.getMoveset(true).find(move => move && [ Moves.LOW_SWEEP, Moves.MACH_PUNCH, Moves.RAPID_SPIN ].includes(move?.moveId))?.moveId === Moves.RAPID_SPIN - )), + new SpeciesEvolution(Species.HITMONLEE, 20, null, new TyrogueEvolutionCondition(Moves.LOW_SWEEP)), + new SpeciesEvolution(Species.HITMONCHAN, 20, null, new TyrogueEvolutionCondition(Moves.MACH_PUNCH)), + new SpeciesEvolution(Species.HITMONTOP, 20, null, new TyrogueEvolutionCondition(Moves.RAPID_SPIN)), ], [Species.KOFFING]: [ - new SpeciesEvolution(Species.GALAR_WEEZING, 35, null, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DUSK || globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT)), - new SpeciesEvolution(Species.WEEZING, 35, null, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DAWN || globalScene.arena.getTimeOfDay() === TimeOfDay.DAY)) + new SpeciesEvolution(Species.GALAR_WEEZING, 35, null, new TimeOfDayEvolutionCondition("night")), + new SpeciesEvolution(Species.WEEZING, 35, null, new TimeOfDayEvolutionCondition("day")) ], [Species.RHYHORN]: [ new SpeciesEvolution(Species.RHYDON, 42, null, null) @@ -334,8 +527,8 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.QUILAVA, 14, null, null) ], [Species.QUILAVA]: [ - new SpeciesEvolution(Species.HISUI_TYPHLOSION, 36, null, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DUSK || globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT)), - new SpeciesEvolution(Species.TYPHLOSION, 36, null, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DAWN || globalScene.arena.getTimeOfDay() === TimeOfDay.DAY)) + new SpeciesEvolution(Species.HISUI_TYPHLOSION, 36, null, new TimeOfDayEvolutionCondition("night")), + new SpeciesEvolution(Species.TYPHLOSION, 36, null, new TimeOfDayEvolutionCondition("day")) ], [Species.TOTODILE]: [ new SpeciesEvolution(Species.CROCONAW, 18, null, null) @@ -437,8 +630,8 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.LINOONE, 20, null, null) ], [Species.WURMPLE]: [ - new SpeciesEvolution(Species.SILCOON, 7, null, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DAWN || globalScene.arena.getTimeOfDay() === TimeOfDay.DAY)), - new SpeciesEvolution(Species.CASCOON, 7, null, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DUSK || globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT)) + new SpeciesEvolution(Species.SILCOON, 7, null, new TimeOfDayEvolutionCondition("day")), + new SpeciesEvolution(Species.CASCOON, 7, null, new TimeOfDayEvolutionCondition("night")) ], [Species.SILCOON]: [ new SpeciesEvolution(Species.BEAUTIFLY, 10, null, null) @@ -462,8 +655,8 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.KIRLIA, 20, null, null) ], [Species.KIRLIA]: [ - new SpeciesEvolution(Species.GARDEVOIR, 30, null, new SpeciesEvolutionCondition(p => p.gender === Gender.FEMALE, p => p.gender = Gender.FEMALE)), - new SpeciesEvolution(Species.GALLADE, 30, null, new SpeciesEvolutionCondition(p => p.gender === Gender.MALE, p => p.gender = Gender.MALE)) + new SpeciesEvolution(Species.GARDEVOIR, 30, null, new GenderEvolutionCondition(Gender.FEMALE)), + new SpeciesEvolution(Species.GALLADE, 30, null, new GenderEvolutionCondition(Gender.MALE)) ], [Species.SURSKIT]: [ new SpeciesEvolution(Species.MASQUERAIN, 22, null, null) @@ -479,7 +672,7 @@ export const pokemonEvolutions: PokemonEvolutions = { ], [Species.NINCADA]: [ new SpeciesEvolution(Species.NINJASK, 20, null, null), - new SpeciesEvolution(Species.SHEDINJA, 20, null, new SpeciesEvolutionCondition(p => globalScene.getPlayerParty().length < 6 && globalScene.pokeballCounts[PokeballType.POKEBALL] > 0)) + new SpeciesEvolution(Species.SHEDINJA, 20, null, new ShedinjaEvolutionCondition()) ], [Species.WHISMUR]: [ new SpeciesEvolution(Species.LOUDRED, 20, null, null) @@ -551,8 +744,8 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.DUSCLOPS, 37, null, null) ], [Species.SNORUNT]: [ - new SpeciesEvolution(Species.GLALIE, 42, null, new SpeciesEvolutionCondition(p => p.gender === Gender.MALE, p => p.gender = Gender.MALE)), - new SpeciesEvolution(Species.FROSLASS, 42, null, new SpeciesEvolutionCondition(p => p.gender === Gender.FEMALE, p => p.gender = Gender.FEMALE)) + new SpeciesEvolution(Species.GLALIE, 42, null, new GenderEvolutionCondition(Gender.MALE)), + new SpeciesEvolution(Species.FROSLASS, 42, null, new GenderEvolutionCondition(Gender.FEMALE)) ], [Species.SPHEAL]: [ new SpeciesEvolution(Species.SEALEO, 32, null, null) @@ -615,11 +808,11 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.BASTIODON, 30, null, null) ], [Species.BURMY]: [ - new SpeciesEvolution(Species.MOTHIM, 20, null, new SpeciesEvolutionCondition(p => p.gender === Gender.MALE, p => p.gender = Gender.MALE)), - new SpeciesEvolution(Species.WORMADAM, 20, null, new SpeciesEvolutionCondition(p => p.gender === Gender.FEMALE, p => p.gender = Gender.FEMALE)) + new SpeciesEvolution(Species.MOTHIM, 20, null, new GenderEvolutionCondition(Gender.MALE)), + new SpeciesEvolution(Species.WORMADAM, 20, null, new GenderEvolutionCondition(Gender.FEMALE)) ], [Species.COMBEE]: [ - new SpeciesEvolution(Species.VESPIQUEN, 21, null, new SpeciesEvolutionCondition(p => p.gender === Gender.FEMALE, p => p.gender = Gender.FEMALE)) + new SpeciesEvolution(Species.VESPIQUEN, 21, null, new GenderEvolutionCondition(Gender.FEMALE)) ], [Species.BUIZEL]: [ new SpeciesEvolution(Species.FLOATZEL, 26, null, null) @@ -661,7 +854,7 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.LUMINEON, 31, null, null) ], [Species.MANTYKE]: [ - new SpeciesEvolution(Species.MANTINE, 32, null, new SpeciesEvolutionCondition(p => !!globalScene.gameData.dexData[Species.REMORAID].caughtAttr), SpeciesWildEvolutionDelay.MEDIUM) + new SpeciesEvolution(Species.MANTINE, 32, null, new CaughtEvolutionCondition(Species.REMORAID), SpeciesWildEvolutionDelay.MEDIUM) ], [Species.SNOVER]: [ new SpeciesEvolution(Species.ABOMASNOW, 40, null, null) @@ -682,8 +875,8 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.DEWOTT, 17, null, null) ], [Species.DEWOTT]: [ - new SpeciesEvolution(Species.HISUI_SAMUROTT, 36, null, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DUSK || globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT)), - new SpeciesEvolution(Species.SAMUROTT, 36, null, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DAWN || globalScene.arena.getTimeOfDay() === TimeOfDay.DAY)) + new SpeciesEvolution(Species.HISUI_SAMUROTT, 36, null, new TimeOfDayEvolutionCondition("night")), + new SpeciesEvolution(Species.SAMUROTT, 36, null, new TimeOfDayEvolutionCondition("day")) ], [Species.PATRAT]: [ new SpeciesEvolution(Species.WATCHOG, 20, null, null) @@ -833,8 +1026,8 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.KINGAMBIT, 1, EvolutionItem.LEADERS_CREST, null, SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.RUFFLET]: [ - new SpeciesEvolution(Species.HISUI_BRAVIARY, 54, null, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DUSK || globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT)), - new SpeciesEvolution(Species.BRAVIARY, 54, null, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DAWN || globalScene.arena.getTimeOfDay() === TimeOfDay.DAY)) + new SpeciesEvolution(Species.HISUI_BRAVIARY, 54, null, new TimeOfDayEvolutionCondition("night")), + new SpeciesEvolution(Species.BRAVIARY, 54, null, new TimeOfDayEvolutionCondition("day")) ], [Species.VULLABY]: [ new SpeciesEvolution(Species.MANDIBUZZ, 54, null, null) @@ -891,11 +1084,11 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.GOGOAT, 32, null, null) ], [Species.PANCHAM]: [ - new SpeciesEvolution(Species.PANGORO, 32, null, new SpeciesEvolutionCondition(p => !!globalScene.getPlayerParty().find(p => p.getTypes(false, false, true).indexOf(Type.DARK) > -1)), SpeciesWildEvolutionDelay.MEDIUM) + new SpeciesEvolution(Species.PANGORO, 32, null, new PartyTypeEvolutionCondition(Type.DARK), SpeciesWildEvolutionDelay.MEDIUM) ], [Species.ESPURR]: [ - new SpeciesFormEvolution(Species.MEOWSTIC, "", "female", 25, null, new SpeciesEvolutionCondition(p => p.gender === Gender.FEMALE, p => p.gender = Gender.FEMALE)), - new SpeciesFormEvolution(Species.MEOWSTIC, "", "", 25, null, new SpeciesEvolutionCondition(p => p.gender === Gender.MALE, p => p.gender = Gender.MALE)) + new SpeciesFormEvolution(Species.MEOWSTIC, "", "female", 25, null, new GenderEvolutionCondition(Gender.FEMALE)), + new SpeciesFormEvolution(Species.MEOWSTIC, "", "", 25, null, new GenderEvolutionCondition(Gender.MALE)) ], [Species.HONEDGE]: [ new SpeciesEvolution(Species.DOUBLADE, 35, null, null) @@ -913,21 +1106,21 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.CLAWITZER, 37, null, null) ], [Species.TYRUNT]: [ - new SpeciesEvolution(Species.TYRANTRUM, 39, null, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DAWN || globalScene.arena.getTimeOfDay() === TimeOfDay.DAY)) + new SpeciesEvolution(Species.TYRANTRUM, 39, null, new TimeOfDayEvolutionCondition("day")) ], [Species.AMAURA]: [ - new SpeciesEvolution(Species.AURORUS, 39, null, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DUSK || globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT)) + new SpeciesEvolution(Species.AURORUS, 39, null, new TimeOfDayEvolutionCondition("night")) ], [Species.GOOMY]: [ - new SpeciesEvolution(Species.HISUI_SLIGGOO, 40, null, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DUSK || globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT)), - new SpeciesEvolution(Species.SLIGGOO, 40, null, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DAWN || globalScene.arena.getTimeOfDay() === TimeOfDay.DAY)) + new SpeciesEvolution(Species.HISUI_SLIGGOO, 40, null, new TimeOfDayEvolutionCondition("night")), + new SpeciesEvolution(Species.SLIGGOO, 40, null, new TimeOfDayEvolutionCondition("day")) ], [Species.SLIGGOO]: [ - new SpeciesEvolution(Species.GOODRA, 50, null, new SpeciesEvolutionCondition(p => [ WeatherType.RAIN, WeatherType.FOG, WeatherType.HEAVY_RAIN ].indexOf(globalScene.arena.weather?.weatherType || WeatherType.NONE) > -1), SpeciesWildEvolutionDelay.LONG) + new SpeciesEvolution(Species.GOODRA, 50, null, new WeatherEvolutionCondition([ WeatherType.RAIN, WeatherType.FOG, WeatherType.HEAVY_RAIN ]), SpeciesWildEvolutionDelay.LONG) ], [Species.BERGMITE]: [ - new SpeciesEvolution(Species.HISUI_AVALUGG, 37, null, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DUSK || globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT)), - new SpeciesEvolution(Species.AVALUGG, 37, null, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DAWN || globalScene.arena.getTimeOfDay() === TimeOfDay.DAY)) + new SpeciesEvolution(Species.HISUI_AVALUGG, 37, null, new TimeOfDayEvolutionCondition("night")), + new SpeciesEvolution(Species.AVALUGG, 37, null, new TimeOfDayEvolutionCondition("day")) ], [Species.NOIBAT]: [ new SpeciesEvolution(Species.NOIVERN, 48, null, null) @@ -936,8 +1129,8 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.DARTRIX, 17, null, null) ], [Species.DARTRIX]: [ - new SpeciesEvolution(Species.HISUI_DECIDUEYE, 36, null, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DUSK || globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT)), - new SpeciesEvolution(Species.DECIDUEYE, 34, null, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DAWN || globalScene.arena.getTimeOfDay() === TimeOfDay.DAY)) + new SpeciesEvolution(Species.HISUI_DECIDUEYE, 36, null, new TimeOfDayEvolutionCondition("night")), + new SpeciesEvolution(Species.DECIDUEYE, 34, null, new TimeOfDayEvolutionCondition("day")) ], [Species.LITTEN]: [ new SpeciesEvolution(Species.TORRACAT, 17, null, null) @@ -958,7 +1151,7 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.TOUCANNON, 28, null, null) ], [Species.YUNGOOS]: [ - new SpeciesEvolution(Species.GUMSHOOS, 20, null, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DAWN || globalScene.arena.getTimeOfDay() === TimeOfDay.DAY)) + new SpeciesEvolution(Species.GUMSHOOS, 20, null, new TimeOfDayEvolutionCondition("day")) ], [Species.GRUBBIN]: [ new SpeciesEvolution(Species.CHARJABUG, 20, null, null) @@ -976,13 +1169,13 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.ARAQUANID, 22, null, null) ], [Species.FOMANTIS]: [ - new SpeciesEvolution(Species.LURANTIS, 34, null, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DAWN || globalScene.arena.getTimeOfDay() === TimeOfDay.DAY)) + new SpeciesEvolution(Species.LURANTIS, 34, null, new TimeOfDayEvolutionCondition("day")) ], [Species.MORELULL]: [ new SpeciesEvolution(Species.SHIINOTIC, 24, null, null) ], [Species.SALANDIT]: [ - new SpeciesEvolution(Species.SALAZZLE, 33, null, new SpeciesEvolutionCondition(p => p.gender === Gender.FEMALE, p => p.gender = Gender.FEMALE)) + new SpeciesEvolution(Species.SALAZZLE, 33, null, new GenderEvolutionCondition(Gender.FEMALE)) ], [Species.STUFFUL]: [ new SpeciesEvolution(Species.BEWEAR, 27, null, null) @@ -1013,7 +1206,7 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.MELMETAL, 48, null, null) ], [Species.ALOLA_RATTATA]: [ - new SpeciesEvolution(Species.ALOLA_RATICATE, 20, null, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DUSK || globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT)) + new SpeciesEvolution(Species.ALOLA_RATICATE, 20, null, new TimeOfDayEvolutionCondition("night")) ], [Species.ALOLA_DIGLETT]: [ new SpeciesEvolution(Species.ALOLA_DUGTRIO, 26, null, null) @@ -1086,7 +1279,8 @@ export const pokemonEvolutions: PokemonEvolutions = { ], [Species.TOXEL]: [ new SpeciesFormEvolution(Species.TOXTRICITY, "", "lowkey", 30, null, - new SpeciesEvolutionCondition(p => [ Nature.LONELY, Nature.BOLD, Nature.RELAXED, Nature.TIMID, Nature.SERIOUS, Nature.MODEST, Nature.MILD, Nature.QUIET, Nature.BASHFUL, Nature.CALM, Nature.GENTLE, Nature.CAREFUL ].indexOf(p.getNature()) > -1)), + new NatureEvolutionCondition([ Nature.LONELY, Nature.BOLD, Nature.RELAXED, Nature.TIMID, Nature.SERIOUS, Nature.MODEST, Nature.MILD, Nature.QUIET, Nature.BASHFUL, Nature.CALM, Nature.GENTLE, Nature.CAREFUL ]) + ), new SpeciesFormEvolution(Species.TOXTRICITY, "", "amped", 30, null, null) ], [Species.SIZZLIPEDE]: [ @@ -1136,7 +1330,7 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.GALAR_LINOONE, 20, null, null) ], [Species.GALAR_LINOONE]: [ - new SpeciesEvolution(Species.OBSTAGOON, 35, null, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DUSK || globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT)) + new SpeciesEvolution(Species.OBSTAGOON, 35, null, new TimeOfDayEvolutionCondition("night")) ], [Species.GALAR_YAMASK]: [ new SpeciesEvolution(Species.RUNERIGUS, 34, null, null) @@ -1145,7 +1339,7 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.HISUI_ZOROARK, 30, null, null) ], [Species.HISUI_SLIGGOO]: [ - new SpeciesEvolution(Species.HISUI_GOODRA, 50, null, new SpeciesEvolutionCondition(p => [ WeatherType.RAIN, WeatherType.FOG, WeatherType.HEAVY_RAIN ].indexOf(globalScene.arena.weather?.weatherType || WeatherType.NONE) > -1), SpeciesWildEvolutionDelay.LONG) + new SpeciesEvolution(Species.HISUI_GOODRA, 50, null, new WeatherEvolutionCondition([ WeatherType.RAIN, WeatherType.FOG, WeatherType.HEAVY_RAIN ]), SpeciesWildEvolutionDelay.LONG) ], [Species.SPRIGATITO]: [ new SpeciesEvolution(Species.FLORAGATO, 16, null, null) @@ -1166,8 +1360,8 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.QUAQUAVAL, 36, null, null) ], [Species.LECHONK]: [ - new SpeciesFormEvolution(Species.OINKOLOGNE, "", "female", 18, null, new SpeciesEvolutionCondition(p => p.gender === Gender.FEMALE, p => p.gender = Gender.FEMALE)), - new SpeciesFormEvolution(Species.OINKOLOGNE, "", "", 18, null, new SpeciesEvolutionCondition(p => p.gender === Gender.MALE, p => p.gender = Gender.MALE)) + new SpeciesFormEvolution(Species.OINKOLOGNE, "", "female", 18, null, new GenderEvolutionCondition(Gender.FEMALE)), + new SpeciesFormEvolution(Species.OINKOLOGNE, "", "", 18, null, new GenderEvolutionCondition(Gender.MALE)) ], [Species.TAROUNTULA]: [ new SpeciesEvolution(Species.SPIDOPS, 15, null, null) @@ -1182,11 +1376,7 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.PAWMOT, 32, null, null) ], [Species.TANDEMAUS]: [ - new SpeciesFormEvolution(Species.MAUSHOLD, "", "three", 25, null, new SpeciesEvolutionCondition(p => { - let ret = false; - globalScene.executeWithSeedOffset(() => ret = !Utils.randSeedInt(4), p.id); - return ret; - })), + new SpeciesFormEvolution(Species.MAUSHOLD, "", "three", 25, null, new TandemausEvolutionCondition()), new SpeciesEvolution(Species.MAUSHOLD, 25, null, null) ], [Species.FIDOUGH]: [ @@ -1244,7 +1434,7 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.GLIMMORA, 35, null, null) ], [Species.GREAVARD]: [ - new SpeciesEvolution(Species.HOUNDSTONE, 30, null, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DUSK || globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT)) + new SpeciesEvolution(Species.HOUNDSTONE, 30, null, new TimeOfDayEvolutionCondition("night")) ], [Species.FRIGIBAX]: [ new SpeciesEvolution(Species.ARCTIBAX, 35, null, null) @@ -1301,21 +1491,21 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.EXEGGUTOR, 1, EvolutionItem.LEAF_STONE, null, SpeciesWildEvolutionDelay.LONG) ], [Species.TANGELA]: [ - new SpeciesEvolution(Species.TANGROWTH, 34, null, new SpeciesEvolutionCondition(p => p.moveset.filter(m => m?.moveId === Moves.ANCIENT_POWER).length > 0), SpeciesWildEvolutionDelay.LONG) + new SpeciesEvolution(Species.TANGROWTH, 34, null, new MoveEvolutionCondition(Moves.ANCIENT_POWER), SpeciesWildEvolutionDelay.LONG) ], [Species.LICKITUNG]: [ - new SpeciesEvolution(Species.LICKILICKY, 32, null, new SpeciesEvolutionCondition(p => p.moveset.filter(m => m?.moveId === Moves.ROLLOUT).length > 0), SpeciesWildEvolutionDelay.LONG) + new SpeciesEvolution(Species.LICKILICKY, 32, null, new MoveEvolutionCondition(Moves.ROLLOUT), SpeciesWildEvolutionDelay.LONG) ], [Species.STARYU]: [ new SpeciesEvolution(Species.STARMIE, 1, EvolutionItem.WATER_STONE, null, SpeciesWildEvolutionDelay.LONG) ], [Species.EEVEE]: [ - new SpeciesFormEvolution(Species.SYLVEON, "", "", 1, null, new SpeciesFriendshipEvolutionCondition(120, p => !!p.getMoveset().find(m => m?.getMove().type === Type.FAIRY)), SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.SYLVEON, "partner", "", 1, null, new SpeciesFriendshipEvolutionCondition(120, p => !!p.getMoveset().find(m => m?.getMove().type === Type.FAIRY)), SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.ESPEON, "", "", 1, null, new SpeciesFriendshipEvolutionCondition(120, p => globalScene.arena.getTimeOfDay() === TimeOfDay.DAY), SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.ESPEON, "partner", "", 1, null, new SpeciesFriendshipEvolutionCondition(120, p => globalScene.arena.getTimeOfDay() === TimeOfDay.DAY), SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.UMBREON, "", "", 1, null, new SpeciesFriendshipEvolutionCondition(120, p => globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT), SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.UMBREON, "partner", "", 1, null, new SpeciesFriendshipEvolutionCondition(120, p => globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT), SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(Species.SYLVEON, "", "", 1, null, new FriendshipMoveTypeEvolutionCondition(120, Type.FAIRY), SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(Species.SYLVEON, "partner", "", 1, null, new FriendshipMoveTypeEvolutionCondition(120, Type.FAIRY), SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(Species.ESPEON, "", "", 1, null, new FriendshipTimeOfDayEvolutionCondition(120, "day"), SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(Species.ESPEON, "partner", "", 1, null, new FriendshipTimeOfDayEvolutionCondition(120, "day"), SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(Species.UMBREON, "", "", 1, null, new FriendshipTimeOfDayEvolutionCondition(120, "night"), SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(Species.UMBREON, "partner", "", 1, null, new FriendshipTimeOfDayEvolutionCondition(120, "night"), SpeciesWildEvolutionDelay.LONG), new SpeciesFormEvolution(Species.VAPOREON, "", "", 1, EvolutionItem.WATER_STONE, null, SpeciesWildEvolutionDelay.LONG), new SpeciesFormEvolution(Species.VAPOREON, "partner", "", 1, EvolutionItem.WATER_STONE, null, SpeciesWildEvolutionDelay.LONG), new SpeciesFormEvolution(Species.JOLTEON, "", "", 1, EvolutionItem.THUNDER_STONE, null, SpeciesWildEvolutionDelay.LONG), @@ -1331,13 +1521,13 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.TOGEKISS, 1, EvolutionItem.SHINY_STONE, null, SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.AIPOM]: [ - new SpeciesEvolution(Species.AMBIPOM, 32, null, new SpeciesEvolutionCondition(p => p.moveset.filter(m => m?.moveId === Moves.DOUBLE_HIT).length > 0), SpeciesWildEvolutionDelay.LONG) + new SpeciesEvolution(Species.AMBIPOM, 32, null, new MoveEvolutionCondition(Moves.DOUBLE_HIT), SpeciesWildEvolutionDelay.LONG) ], [Species.SUNKERN]: [ new SpeciesEvolution(Species.SUNFLORA, 1, EvolutionItem.SUN_STONE, null, SpeciesWildEvolutionDelay.LONG) ], [Species.YANMA]: [ - new SpeciesEvolution(Species.YANMEGA, 33, null, new SpeciesEvolutionCondition(p => p.moveset.filter(m => m?.moveId === Moves.ANCIENT_POWER).length > 0), SpeciesWildEvolutionDelay.LONG) + new SpeciesEvolution(Species.YANMEGA, 33, null, new MoveEvolutionCondition(Moves.ANCIENT_POWER), SpeciesWildEvolutionDelay.LONG) ], [Species.MURKROW]: [ new SpeciesEvolution(Species.HONCHKROW, 1, EvolutionItem.DUSK_STONE, null, SpeciesWildEvolutionDelay.VERY_LONG) @@ -1346,32 +1536,26 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.MISMAGIUS, 1, EvolutionItem.DUSK_STONE, null, SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.GIRAFARIG]: [ - new SpeciesEvolution(Species.FARIGIRAF, 32, null, new SpeciesEvolutionCondition(p => p.moveset.filter(m => m?.moveId === Moves.TWIN_BEAM).length > 0), SpeciesWildEvolutionDelay.LONG) + new SpeciesEvolution(Species.FARIGIRAF, 32, null, new MoveEvolutionCondition(Moves.TWIN_BEAM), SpeciesWildEvolutionDelay.LONG) ], [Species.DUNSPARCE]: [ - new SpeciesFormEvolution(Species.DUDUNSPARCE, "", "three-segment", 32, null, new SpeciesEvolutionCondition(p => { - let ret = false; - if (p.moveset.filter(m => m?.moveId === Moves.HYPER_DRILL).length > 0) { - globalScene.executeWithSeedOffset(() => ret = !Utils.randSeedInt(4), p.id); - } - return ret; - }), SpeciesWildEvolutionDelay.LONG), - new SpeciesEvolution(Species.DUDUNSPARCE, 32, null, new SpeciesEvolutionCondition(p => p.moveset.filter(m => m?.moveId === Moves.HYPER_DRILL).length > 0), SpeciesWildEvolutionDelay.LONG) + new SpeciesFormEvolution(Species.DUDUNSPARCE, "", "three-segment", 32, null, new DunsparceEvolutionCondition(), SpeciesWildEvolutionDelay.LONG), + new SpeciesEvolution(Species.DUDUNSPARCE, 32, null, new MoveEvolutionCondition(Moves.HYPER_DRILL), SpeciesWildEvolutionDelay.LONG) ], [Species.GLIGAR]: [ - new SpeciesEvolution(Species.GLISCOR, 1, EvolutionItem.RAZOR_FANG, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DUSK || globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT /* Razor fang at night*/), SpeciesWildEvolutionDelay.VERY_LONG) + new SpeciesEvolution(Species.GLISCOR, 1, EvolutionItem.RAZOR_FANG, new TimeOfDayEvolutionCondition("night") /* Razor fang at night*/, SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.SNEASEL]: [ - new SpeciesEvolution(Species.WEAVILE, 1, EvolutionItem.RAZOR_CLAW, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DUSK || globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT /* Razor claw at night*/), SpeciesWildEvolutionDelay.VERY_LONG) + new SpeciesEvolution(Species.WEAVILE, 1, EvolutionItem.RAZOR_CLAW, new TimeOfDayEvolutionCondition("night") /* Razor claw at night*/, SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.URSARING]: [ new SpeciesEvolution(Species.URSALUNA, 1, EvolutionItem.PEAT_BLOCK, null, SpeciesWildEvolutionDelay.VERY_LONG) //Ursaring does not evolve into Bloodmoon Ursaluna ], [Species.PILOSWINE]: [ - new SpeciesEvolution(Species.MAMOSWINE, 1, null, new SpeciesEvolutionCondition(p => p.moveset.filter(m => m?.moveId === Moves.ANCIENT_POWER).length > 0), SpeciesWildEvolutionDelay.VERY_LONG) + new SpeciesEvolution(Species.MAMOSWINE, 1, null, new MoveEvolutionCondition(Moves.ANCIENT_POWER), SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.STANTLER]: [ - new SpeciesEvolution(Species.WYRDEER, 25, null, new SpeciesEvolutionCondition(p => p.moveset.filter(m => m?.moveId === Moves.PSYSHIELD_BASH).length > 0), SpeciesWildEvolutionDelay.VERY_LONG) + new SpeciesEvolution(Species.WYRDEER, 25, null, new MoveEvolutionCondition(Moves.PSYSHIELD_BASH), SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.LOMBRE]: [ new SpeciesEvolution(Species.LUDICOLO, 1, EvolutionItem.WATER_STONE, null, SpeciesWildEvolutionDelay.LONG) @@ -1389,11 +1573,11 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.ROSERADE, 1, EvolutionItem.SHINY_STONE, null, SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.BONSLY]: [ - new SpeciesEvolution(Species.SUDOWOODO, 1, null, new SpeciesEvolutionCondition(p => p.moveset.filter(m => m?.moveId === Moves.MIMIC).length > 0), SpeciesWildEvolutionDelay.MEDIUM) + new SpeciesEvolution(Species.SUDOWOODO, 1, null, new MoveEvolutionCondition(Moves.MIMIC), SpeciesWildEvolutionDelay.MEDIUM) ], [Species.MIME_JR]: [ - new SpeciesEvolution(Species.GALAR_MR_MIME, 1, null, new SpeciesEvolutionCondition(p => p.moveset.filter(m => m?.moveId === Moves.MIMIC).length > 0 && (globalScene.arena.getTimeOfDay() === TimeOfDay.DUSK || globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT)), SpeciesWildEvolutionDelay.MEDIUM), - new SpeciesEvolution(Species.MR_MIME, 1, null, new SpeciesEvolutionCondition(p => p.moveset.filter(m => m?.moveId === Moves.MIMIC).length > 0 && (globalScene.arena.getTimeOfDay() === TimeOfDay.DAWN || globalScene.arena.getTimeOfDay() === TimeOfDay.DAY)), SpeciesWildEvolutionDelay.MEDIUM) + new SpeciesEvolution(Species.GALAR_MR_MIME, 1, null, new MoveTimeOfDayEvolutionCondition(Moves.MIMIC, "night"), SpeciesWildEvolutionDelay.MEDIUM), + new SpeciesEvolution(Species.MR_MIME, 1, null, new MoveTimeOfDayEvolutionCondition(Moves.MIMIC, "day"), SpeciesWildEvolutionDelay.MEDIUM) ], [Species.PANSAGE]: [ new SpeciesEvolution(Species.SIMISAGE, 1, EvolutionItem.LEAF_STONE, null, SpeciesWildEvolutionDelay.LONG) @@ -1415,8 +1599,8 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.LILLIGANT, 1, EvolutionItem.SUN_STONE, null, SpeciesWildEvolutionDelay.LONG) ], [Species.BASCULIN]: [ - new SpeciesFormEvolution(Species.BASCULEGION, "white-striped", "female", 40, null, new SpeciesEvolutionCondition(p => p.gender === Gender.FEMALE, p => p.gender = Gender.FEMALE), SpeciesWildEvolutionDelay.VERY_LONG), - new SpeciesFormEvolution(Species.BASCULEGION, "white-striped", "male", 40, null, new SpeciesEvolutionCondition(p => p.gender === Gender.MALE, p => p.gender = Gender.MALE), SpeciesWildEvolutionDelay.VERY_LONG) + new SpeciesFormEvolution(Species.BASCULEGION, "white-striped", "female", 40, null, new GenderEvolutionCondition(Gender.FEMALE), SpeciesWildEvolutionDelay.VERY_LONG), + new SpeciesFormEvolution(Species.BASCULEGION, "white-striped", "male", 40, null, new GenderEvolutionCondition(Gender.MALE), SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.MINCCINO]: [ new SpeciesEvolution(Species.CINCCINO, 1, EvolutionItem.SHINY_STONE, null, SpeciesWildEvolutionDelay.LONG) @@ -1443,15 +1627,15 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.CRABOMINABLE, 1, EvolutionItem.ICE_STONE, null, SpeciesWildEvolutionDelay.LONG) ], [Species.ROCKRUFF]: [ - new SpeciesFormEvolution(Species.LYCANROC, "", "midday", 25, null, new SpeciesEvolutionCondition(p => (globalScene.arena.getTimeOfDay() === TimeOfDay.DAWN || globalScene.arena.getTimeOfDay() === TimeOfDay.DAY) && (p.formIndex === 0))), - new SpeciesFormEvolution(Species.LYCANROC, "own-tempo", "dusk", 25, null, new SpeciesEvolutionCondition(p => p.formIndex === 1)), - new SpeciesFormEvolution(Species.LYCANROC, "", "midnight", 25, null, new SpeciesEvolutionCondition(p => (globalScene.arena.getTimeOfDay() === TimeOfDay.DUSK || globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT) && (p.formIndex === 0))) + new SpeciesFormEvolution(Species.LYCANROC, "own-tempo", "dusk", 25, null, null), + new SpeciesFormEvolution(Species.LYCANROC, "", "midday", 25, null, new TimeOfDayEvolutionCondition("day")), + new SpeciesFormEvolution(Species.LYCANROC, "", "midnight", 25, null, new TimeOfDayEvolutionCondition("night")) ], [Species.STEENEE]: [ - new SpeciesEvolution(Species.TSAREENA, 28, null, new SpeciesEvolutionCondition(p => p.moveset.filter(m => m?.moveId === Moves.STOMP).length > 0), SpeciesWildEvolutionDelay.LONG) + new SpeciesEvolution(Species.TSAREENA, 28, null, new MoveEvolutionCondition(Moves.STOMP), SpeciesWildEvolutionDelay.LONG) ], [Species.POIPOLE]: [ - new SpeciesEvolution(Species.NAGANADEL, 1, null, new SpeciesEvolutionCondition(p => p.moveset.filter(m => m?.moveId === Moves.DRAGON_PULSE).length > 0), SpeciesWildEvolutionDelay.LONG) + new SpeciesEvolution(Species.NAGANADEL, 1, null, new MoveEvolutionCondition(Moves.DRAGON_PULSE), SpeciesWildEvolutionDelay.LONG) ], [Species.ALOLA_SANDSHREW]: [ new SpeciesEvolution(Species.ALOLA_SANDSLASH, 1, EvolutionItem.ICE_STONE, null, SpeciesWildEvolutionDelay.LONG) @@ -1465,22 +1649,40 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.APPLETUN, 1, EvolutionItem.SWEET_APPLE, null, SpeciesWildEvolutionDelay.LONG) ], [Species.CLOBBOPUS]: [ - new SpeciesEvolution(Species.GRAPPLOCT, 35, null, new SpeciesEvolutionCondition(p => p.moveset.filter(m => m?.moveId === Moves.TAUNT).length > 0)/*Once Taunt is implemented, change evo level to 1 and delay to LONG*/) + new SpeciesEvolution(Species.GRAPPLOCT, 35, null, new MoveEvolutionCondition(Moves.TAUNT)/*Once Taunt is implemented, change evo level to 1 and delay to LONG*/) ], [Species.SINISTEA]: [ new SpeciesFormEvolution(Species.POLTEAGEIST, "phony", "phony", 1, EvolutionItem.CRACKED_POT, null, SpeciesWildEvolutionDelay.LONG), new SpeciesFormEvolution(Species.POLTEAGEIST, "antique", "antique", 1, EvolutionItem.CHIPPED_POT, null, SpeciesWildEvolutionDelay.LONG) ], [Species.MILCERY]: [ - new SpeciesFormEvolution(Species.ALCREMIE, "", "vanilla-cream", 1, EvolutionItem.STRAWBERRY_SWEET, new SpeciesEvolutionCondition(p => globalScene.arena.biomeType === Biome.TOWN || globalScene.arena.biomeType === Biome.PLAINS || globalScene.arena.biomeType === Biome.GRASS || globalScene.arena.biomeType === Biome.TALL_GRASS || globalScene.arena.biomeType === Biome.METROPOLIS), SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.ALCREMIE, "", "ruby-cream", 1, EvolutionItem.STRAWBERRY_SWEET, new SpeciesEvolutionCondition(p => globalScene.arena.biomeType === Biome.BADLANDS || globalScene.arena.biomeType === Biome.VOLCANO || globalScene.arena.biomeType === Biome.GRAVEYARD || globalScene.arena.biomeType === Biome.FACTORY || globalScene.arena.biomeType === Biome.SLUM), SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.ALCREMIE, "", "matcha-cream", 1, EvolutionItem.STRAWBERRY_SWEET, new SpeciesEvolutionCondition(p => globalScene.arena.biomeType === Biome.FOREST || globalScene.arena.biomeType === Biome.SWAMP || globalScene.arena.biomeType === Biome.MEADOW || globalScene.arena.biomeType === Biome.JUNGLE), SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.ALCREMIE, "", "mint-cream", 1, EvolutionItem.STRAWBERRY_SWEET, new SpeciesEvolutionCondition(p => globalScene.arena.biomeType === Biome.SEA || globalScene.arena.biomeType === Biome.BEACH || globalScene.arena.biomeType === Biome.LAKE || globalScene.arena.biomeType === Biome.SEABED), SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.ALCREMIE, "", "lemon-cream", 1, EvolutionItem.STRAWBERRY_SWEET, new SpeciesEvolutionCondition(p => globalScene.arena.biomeType === Biome.DESERT || globalScene.arena.biomeType === Biome.POWER_PLANT || globalScene.arena.biomeType === Biome.DOJO || globalScene.arena.biomeType === Biome.RUINS || globalScene.arena.biomeType === Biome.CONSTRUCTION_SITE), SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.ALCREMIE, "", "salted-cream", 1, EvolutionItem.STRAWBERRY_SWEET, new SpeciesEvolutionCondition(p => globalScene.arena.biomeType === Biome.MOUNTAIN || globalScene.arena.biomeType === Biome.CAVE || globalScene.arena.biomeType === Biome.ICE_CAVE || globalScene.arena.biomeType === Biome.FAIRY_CAVE || globalScene.arena.biomeType === Biome.SNOWY_FOREST), SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.ALCREMIE, "", "ruby-swirl", 1, EvolutionItem.STRAWBERRY_SWEET, new SpeciesEvolutionCondition(p => globalScene.arena.biomeType === Biome.WASTELAND || globalScene.arena.biomeType === Biome.LABORATORY), SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.ALCREMIE, "", "caramel-swirl", 1, EvolutionItem.STRAWBERRY_SWEET, new SpeciesEvolutionCondition(p => globalScene.arena.biomeType === Biome.TEMPLE || globalScene.arena.biomeType === Biome.ISLAND), SpeciesWildEvolutionDelay.LONG), - new SpeciesFormEvolution(Species.ALCREMIE, "", "rainbow-swirl", 1, EvolutionItem.STRAWBERRY_SWEET, new SpeciesEvolutionCondition(p => globalScene.arena.biomeType === Biome.ABYSS || globalScene.arena.biomeType === Biome.SPACE || globalScene.arena.biomeType === Biome.END), SpeciesWildEvolutionDelay.LONG) + new SpeciesFormEvolution(Species.ALCREMIE, "", "vanilla-cream", 1, EvolutionItem.STRAWBERRY_SWEET, + new BiomeEvolutionCondition([ Biome.TOWN, Biome.PLAINS, Biome.GRASS, Biome.TALL_GRASS, Biome.METROPOLIS ]), + SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(Species.ALCREMIE, "", "ruby-cream", 1, EvolutionItem.STRAWBERRY_SWEET, + new BiomeEvolutionCondition([ Biome.BADLANDS, Biome.VOLCANO, Biome.GRAVEYARD, Biome.FACTORY, Biome.SLUM ]), + SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(Species.ALCREMIE, "", "matcha-cream", 1, EvolutionItem.STRAWBERRY_SWEET, + new BiomeEvolutionCondition([ Biome.FOREST, Biome.SWAMP, Biome.MEADOW, Biome.JUNGLE ]), + SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(Species.ALCREMIE, "", "mint-cream", 1, EvolutionItem.STRAWBERRY_SWEET, + new BiomeEvolutionCondition([ Biome.SEA, Biome.BEACH, Biome.LAKE, Biome.SEABED ]), + SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(Species.ALCREMIE, "", "lemon-cream", 1, EvolutionItem.STRAWBERRY_SWEET, + new BiomeEvolutionCondition([ Biome.DESERT, Biome.POWER_PLANT, Biome.DOJO, Biome.RUINS, Biome.CONSTRUCTION_SITE ]), + SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(Species.ALCREMIE, "", "salted-cream", 1, EvolutionItem.STRAWBERRY_SWEET, + new BiomeEvolutionCondition([ Biome.MOUNTAIN, Biome.CAVE, Biome.ICE_CAVE, Biome.FAIRY_CAVE, Biome.SNOWY_FOREST ]), + SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(Species.ALCREMIE, "", "ruby-swirl", 1, EvolutionItem.STRAWBERRY_SWEET, + new BiomeEvolutionCondition([ Biome.WASTELAND, Biome.LABORATORY ]), + SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(Species.ALCREMIE, "", "caramel-swirl", 1, EvolutionItem.STRAWBERRY_SWEET, + new BiomeEvolutionCondition([ Biome.TEMPLE, Biome.ISLAND ]), + SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(Species.ALCREMIE, "", "rainbow-swirl", 1, EvolutionItem.STRAWBERRY_SWEET, + new BiomeEvolutionCondition([ Biome.ABYSS, Biome.SPACE, Biome.END ]), + SpeciesWildEvolutionDelay.LONG) ], [Species.DURALUDON]: [ new SpeciesFormEvolution(Species.ARCHALUDON, "", "", 1, EvolutionItem.METAL_ALLOY, null, SpeciesWildEvolutionDelay.VERY_LONG) @@ -1499,10 +1701,10 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.HISUI_ELECTRODE, 1, EvolutionItem.LEAF_STONE, null, SpeciesWildEvolutionDelay.LONG) ], [Species.HISUI_QWILFISH]: [ - new SpeciesEvolution(Species.OVERQWIL, 28, null, new SpeciesEvolutionCondition(p => p.moveset.filter(m => m?.moveId === Moves.BARB_BARRAGE).length > 0), SpeciesWildEvolutionDelay.LONG) + new SpeciesEvolution(Species.OVERQWIL, 28, null, new MoveEvolutionCondition(Moves.BARB_BARRAGE), SpeciesWildEvolutionDelay.LONG) ], [Species.HISUI_SNEASEL]: [ - new SpeciesEvolution(Species.SNEASLER, 1, EvolutionItem.RAZOR_CLAW, new SpeciesEvolutionCondition(p => globalScene.arena.getTimeOfDay() === TimeOfDay.DAWN || globalScene.arena.getTimeOfDay() === TimeOfDay.DAY /* Razor claw at day*/), SpeciesWildEvolutionDelay.VERY_LONG) + new SpeciesEvolution(Species.SNEASLER, 1, EvolutionItem.RAZOR_CLAW, new TimeOfDayEvolutionCondition("day") /* Razor claw at day*/, SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.CHARCADET]: [ new SpeciesEvolution(Species.ARMAROUGE, 1, EvolutionItem.AUSPICIOUS_ARMOR, null, SpeciesWildEvolutionDelay.LONG), @@ -1522,7 +1724,7 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesFormEvolution(Species.SINISTCHA, "artisan", "masterpiece", 1, EvolutionItem.MASTERPIECE_TEACUP, null, SpeciesWildEvolutionDelay.LONG) ], [Species.DIPPLIN]: [ - new SpeciesEvolution(Species.HYDRAPPLE, 1, null, new SpeciesEvolutionCondition(p => p.moveset.filter(m => m?.moveId === Moves.DRAGON_CHEER).length > 0), SpeciesWildEvolutionDelay.VERY_LONG) + new SpeciesEvolution(Species.HYDRAPPLE, 1, null, new MoveEvolutionCondition(Moves.DRAGON_CHEER), SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.KADABRA]: [ new SpeciesEvolution(Species.ALAKAZAM, 1, EvolutionItem.LINKING_CORD, null, SpeciesWildEvolutionDelay.VERY_LONG) @@ -1537,9 +1739,7 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.GENGAR, 1, EvolutionItem.LINKING_CORD, null, SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.ONIX]: [ - new SpeciesEvolution(Species.STEELIX, 1, EvolutionItem.LINKING_CORD, new SpeciesEvolutionCondition( - p => p.moveset.filter(m => m?.getMove().type === Type.STEEL).length > 0), - SpeciesWildEvolutionDelay.VERY_LONG) + new SpeciesEvolution(Species.STEELIX, 1, EvolutionItem.LINKING_CORD, new MoveTypeEvolutionCondition(Type.STEEL), SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.RHYDON]: [ new SpeciesEvolution(Species.RHYPERIOR, 1, EvolutionItem.PROTECTOR, null, SpeciesWildEvolutionDelay.VERY_LONG) @@ -1548,9 +1748,7 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.KINGDRA, 1, EvolutionItem.DRAGON_SCALE, null, SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.SCYTHER]: [ - new SpeciesEvolution(Species.SCIZOR, 1, EvolutionItem.LINKING_CORD, new SpeciesEvolutionCondition( - p => p.moveset.filter(m => m?.getMove().type === Type.STEEL).length > 0), - SpeciesWildEvolutionDelay.VERY_LONG), + new SpeciesEvolution(Species.SCIZOR, 1, EvolutionItem.LINKING_CORD, new MoveTypeEvolutionCondition(Type.STEEL), SpeciesWildEvolutionDelay.VERY_LONG), new SpeciesEvolution(Species.KLEAVOR, 1, EvolutionItem.BLACK_AUGURITE, null, SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.ELECTABUZZ]: [ @@ -1572,8 +1770,8 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.DUSKNOIR, 1, EvolutionItem.REAPER_CLOTH, null, SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.CLAMPERL]: [ - new SpeciesEvolution(Species.HUNTAIL, 1, EvolutionItem.LINKING_CORD, new SpeciesEvolutionCondition(p => p.gender === Gender.MALE, p => p.gender = Gender.MALE /* Deep Sea Tooth */), SpeciesWildEvolutionDelay.VERY_LONG), - new SpeciesEvolution(Species.GOREBYSS, 1, EvolutionItem.LINKING_CORD, new SpeciesEvolutionCondition(p => p.gender === Gender.FEMALE, p => p.gender = Gender.FEMALE /* Deep Sea Scale */), SpeciesWildEvolutionDelay.VERY_LONG) + new SpeciesEvolution(Species.HUNTAIL, 1, EvolutionItem.LINKING_CORD, new GenderEvolutionCondition(Gender.MALE /* Deep Sea Tooth */), SpeciesWildEvolutionDelay.VERY_LONG), + new SpeciesEvolution(Species.GOREBYSS, 1, EvolutionItem.LINKING_CORD, new GenderEvolutionCondition(Gender.FEMALE /* Deep Sea Scale */), SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.BOLDORE]: [ new SpeciesEvolution(Species.GIGALITH, 1, EvolutionItem.LINKING_CORD, null, SpeciesWildEvolutionDelay.VERY_LONG) @@ -1582,10 +1780,10 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.CONKELDURR, 1, EvolutionItem.LINKING_CORD, null, SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.KARRABLAST]: [ - new SpeciesEvolution(Species.ESCAVALIER, 1, EvolutionItem.LINKING_CORD, new SpeciesEvolutionCondition(p => !!globalScene.gameData.dexData[Species.SHELMET].caughtAttr), SpeciesWildEvolutionDelay.VERY_LONG) + new SpeciesEvolution(Species.ESCAVALIER, 1, EvolutionItem.LINKING_CORD, new CaughtEvolutionCondition(Species.SHELMET), SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.SHELMET]: [ - new SpeciesEvolution(Species.ACCELGOR, 1, EvolutionItem.LINKING_CORD, new SpeciesEvolutionCondition(p => !!globalScene.gameData.dexData[Species.KARRABLAST].caughtAttr), SpeciesWildEvolutionDelay.VERY_LONG) + new SpeciesEvolution(Species.ACCELGOR, 1, EvolutionItem.LINKING_CORD, new CaughtEvolutionCondition(Species.KARRABLAST), SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.SPRITZEE]: [ new SpeciesEvolution(Species.AROMATISSE, 1, EvolutionItem.SACHET, null, SpeciesWildEvolutionDelay.VERY_LONG) @@ -1603,72 +1801,66 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.ALOLA_GOLEM, 1, EvolutionItem.LINKING_CORD, null, SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.PRIMEAPE]: [ - new SpeciesEvolution(Species.ANNIHILAPE, 35, null, new SpeciesEvolutionCondition(p => p.moveset.filter(m => m?.moveId === Moves.RAGE_FIST).length > 0), SpeciesWildEvolutionDelay.VERY_LONG) + new SpeciesEvolution(Species.ANNIHILAPE, 35, null, new MoveEvolutionCondition(Moves.RAGE_FIST), SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.GOLBAT]: [ - new SpeciesEvolution(Species.CROBAT, 1, null, new SpeciesFriendshipEvolutionCondition(120), SpeciesWildEvolutionDelay.VERY_LONG) + new SpeciesEvolution(Species.CROBAT, 1, null, new FriendshipEvolutionCondition(120), SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.CHANSEY]: [ - new SpeciesEvolution(Species.BLISSEY, 1, null, new SpeciesFriendshipEvolutionCondition(200), SpeciesWildEvolutionDelay.LONG) + new SpeciesEvolution(Species.BLISSEY, 1, null, new FriendshipEvolutionCondition(200), SpeciesWildEvolutionDelay.LONG) ], [Species.PICHU]: [ - new SpeciesFormEvolution(Species.PIKACHU, "spiky", "partner", 1, null, new SpeciesFriendshipEvolutionCondition(90), SpeciesWildEvolutionDelay.SHORT), - new SpeciesFormEvolution(Species.PIKACHU, "", "", 1, null, new SpeciesFriendshipEvolutionCondition(90), SpeciesWildEvolutionDelay.SHORT), + new SpeciesFormEvolution(Species.PIKACHU, "spiky", "partner", 1, null, new FriendshipEvolutionCondition(90), SpeciesWildEvolutionDelay.SHORT), + new SpeciesFormEvolution(Species.PIKACHU, "", "", 1, null, new FriendshipEvolutionCondition(90), SpeciesWildEvolutionDelay.SHORT), ], [Species.CLEFFA]: [ - new SpeciesEvolution(Species.CLEFAIRY, 1, null, new SpeciesFriendshipEvolutionCondition(160), SpeciesWildEvolutionDelay.SHORT) + new SpeciesEvolution(Species.CLEFAIRY, 1, null, new FriendshipEvolutionCondition(160), SpeciesWildEvolutionDelay.SHORT) ], [Species.IGGLYBUFF]: [ - new SpeciesEvolution(Species.JIGGLYPUFF, 1, null, new SpeciesFriendshipEvolutionCondition(70), SpeciesWildEvolutionDelay.SHORT) + new SpeciesEvolution(Species.JIGGLYPUFF, 1, null, new FriendshipEvolutionCondition(70), SpeciesWildEvolutionDelay.SHORT) ], [Species.TOGEPI]: [ - new SpeciesEvolution(Species.TOGETIC, 1, null, new SpeciesFriendshipEvolutionCondition(70), SpeciesWildEvolutionDelay.SHORT) + new SpeciesEvolution(Species.TOGETIC, 1, null, new FriendshipEvolutionCondition(70), SpeciesWildEvolutionDelay.SHORT) ], [Species.AZURILL]: [ - new SpeciesEvolution(Species.MARILL, 1, null, new SpeciesFriendshipEvolutionCondition(70), SpeciesWildEvolutionDelay.SHORT) + new SpeciesEvolution(Species.MARILL, 1, null, new FriendshipEvolutionCondition(70), SpeciesWildEvolutionDelay.SHORT) ], [Species.BUDEW]: [ - new SpeciesEvolution(Species.ROSELIA, 1, null, new SpeciesFriendshipEvolutionCondition(70, p => globalScene.arena.getTimeOfDay() === TimeOfDay.DAWN || globalScene.arena.getTimeOfDay() === TimeOfDay.DAY), SpeciesWildEvolutionDelay.SHORT) + new SpeciesEvolution(Species.ROSELIA, 1, null, new FriendshipTimeOfDayEvolutionCondition(70, "day"), SpeciesWildEvolutionDelay.SHORT) ], [Species.BUNEARY]: [ - new SpeciesEvolution(Species.LOPUNNY, 1, null, new SpeciesFriendshipEvolutionCondition(70), SpeciesWildEvolutionDelay.MEDIUM) + new SpeciesEvolution(Species.LOPUNNY, 1, null, new FriendshipEvolutionCondition(70), SpeciesWildEvolutionDelay.MEDIUM) ], [Species.CHINGLING]: [ - new SpeciesEvolution(Species.CHIMECHO, 1, null, new SpeciesFriendshipEvolutionCondition(90, p => globalScene.arena.getTimeOfDay() === TimeOfDay.DUSK || globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT), SpeciesWildEvolutionDelay.MEDIUM) + new SpeciesEvolution(Species.CHIMECHO, 1, null, new FriendshipTimeOfDayEvolutionCondition(90, "night"), SpeciesWildEvolutionDelay.MEDIUM) ], [Species.HAPPINY]: [ - new SpeciesEvolution(Species.CHANSEY, 1, null, new SpeciesFriendshipEvolutionCondition(160), SpeciesWildEvolutionDelay.SHORT) + new SpeciesEvolution(Species.CHANSEY, 1, null, new FriendshipEvolutionCondition(160), SpeciesWildEvolutionDelay.SHORT) ], [Species.MUNCHLAX]: [ - new SpeciesEvolution(Species.SNORLAX, 1, null, new SpeciesFriendshipEvolutionCondition(120), SpeciesWildEvolutionDelay.LONG) + new SpeciesEvolution(Species.SNORLAX, 1, null, new FriendshipEvolutionCondition(120), SpeciesWildEvolutionDelay.LONG) ], [Species.RIOLU]: [ - new SpeciesEvolution(Species.LUCARIO, 1, null, new SpeciesFriendshipEvolutionCondition(120, p => globalScene.arena.getTimeOfDay() === TimeOfDay.DAWN || globalScene.arena.getTimeOfDay() === TimeOfDay.DAY), SpeciesWildEvolutionDelay.LONG) + new SpeciesEvolution(Species.LUCARIO, 1, null, new FriendshipTimeOfDayEvolutionCondition(120, "day"), SpeciesWildEvolutionDelay.LONG) ], [Species.WOOBAT]: [ - new SpeciesEvolution(Species.SWOOBAT, 1, null, new SpeciesFriendshipEvolutionCondition(90), SpeciesWildEvolutionDelay.MEDIUM) + new SpeciesEvolution(Species.SWOOBAT, 1, null, new FriendshipEvolutionCondition(90), SpeciesWildEvolutionDelay.MEDIUM) ], [Species.SWADLOON]: [ - new SpeciesEvolution(Species.LEAVANNY, 1, null, new SpeciesFriendshipEvolutionCondition(120), SpeciesWildEvolutionDelay.LONG) + new SpeciesEvolution(Species.LEAVANNY, 1, null, new FriendshipEvolutionCondition(120), SpeciesWildEvolutionDelay.LONG) ], [Species.TYPE_NULL]: [ - new SpeciesEvolution(Species.SILVALLY, 1, null, new SpeciesFriendshipEvolutionCondition(100), SpeciesWildEvolutionDelay.LONG) + new SpeciesEvolution(Species.SILVALLY, 1, null, new FriendshipEvolutionCondition(100), SpeciesWildEvolutionDelay.LONG) ], [Species.ALOLA_MEOWTH]: [ - new SpeciesEvolution(Species.ALOLA_PERSIAN, 1, null, new SpeciesFriendshipEvolutionCondition(120), SpeciesWildEvolutionDelay.LONG) + new SpeciesEvolution(Species.ALOLA_PERSIAN, 1, null, new FriendshipEvolutionCondition(120), SpeciesWildEvolutionDelay.LONG) ], [Species.SNOM]: [ - new SpeciesEvolution(Species.FROSMOTH, 1, null, new SpeciesFriendshipEvolutionCondition(90, p => globalScene.arena.getTimeOfDay() === TimeOfDay.DUSK || globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT), SpeciesWildEvolutionDelay.MEDIUM) + new SpeciesEvolution(Species.FROSMOTH, 1, null, new FriendshipTimeOfDayEvolutionCondition(90, "night"), SpeciesWildEvolutionDelay.MEDIUM) ], [Species.GIMMIGHOUL]: [ - new SpeciesFormEvolution(Species.GHOLDENGO, "chest", "", 1, null, new SpeciesEvolutionCondition(p => p.evoCounter - + p.getHeldItems().filter(m => m instanceof DamageMoneyRewardModifier).length - + globalScene.findModifiers(m => m instanceof MoneyMultiplierModifier - || m instanceof ExtraModifierModifier || m instanceof TempExtraModifierModifier).length > 9), SpeciesWildEvolutionDelay.VERY_LONG), - new SpeciesFormEvolution(Species.GHOLDENGO, "roaming", "", 1, null, new SpeciesEvolutionCondition(p => p.evoCounter - + p.getHeldItems().filter(m => m instanceof DamageMoneyRewardModifier).length - + globalScene.findModifiers(m => m instanceof MoneyMultiplierModifier - || m instanceof ExtraModifierModifier || m instanceof TempExtraModifierModifier).length > 9), SpeciesWildEvolutionDelay.VERY_LONG) + new SpeciesFormEvolution(Species.GHOLDENGO, "chest", "", 1, null, new TreasureEvolutionCondition(), SpeciesWildEvolutionDelay.VERY_LONG), + new SpeciesFormEvolution(Species.GHOLDENGO, "roaming", "", 1, null, new TreasureEvolutionCondition(), SpeciesWildEvolutionDelay.VERY_LONG) ] }; @@ -1691,3 +1883,19 @@ export function initPokemonPrevolutions(): void { } }); } + + +// TODO: This may cause funny business for double starters such as Pichu/Pikachu +export const pokemonStarters: PokemonPrevolutions = {}; + +export function initPokemonStarters(): void { + const starterKeys = Object.keys(pokemonPrevolutions); + starterKeys.forEach(pk => { + const prevolution = pokemonPrevolutions[pk]; + if (speciesStarterCosts.hasOwnProperty(prevolution)) { + pokemonStarters[pk] = prevolution; + } else { + pokemonStarters[pk] = pokemonPrevolutions[prevolution]; + } + }); +} diff --git a/src/data/battler-tags.ts b/src/data/battler-tags.ts index 3a58ff4a99d..4c68de5abc5 100644 --- a/src/data/battler-tags.ts +++ b/src/data/battler-tags.ts @@ -18,7 +18,7 @@ import { MoveFlags, StatusCategoryOnAllyAttr } from "#app/data/move"; -import { SpeciesFormChangeManualTrigger } from "#app/data/pokemon-forms"; +import { SpeciesFormChangeAbilityTrigger } from "#app/data/pokemon-forms"; import { getStatusEffectHealText } from "#app/data/status-effect"; import { TerrainType } from "#app/data/terrain"; import { Type } from "#enums/type"; @@ -2149,7 +2149,7 @@ export class FormBlockDamageTag extends BattlerTag { super.onAdd(pokemon); if (pokemon.formIndex !== 0) { - globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeManualTrigger); + globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeAbilityTrigger); } } @@ -2161,7 +2161,7 @@ export class FormBlockDamageTag extends BattlerTag { onRemove(pokemon: Pokemon): void { super.onRemove(pokemon); - globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeManualTrigger); + globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeAbilityTrigger); } } /** Provides the additional weather-based effects of the Ice Face ability */ @@ -2361,12 +2361,12 @@ export class GulpMissileTag extends BattlerTag { onAdd(pokemon: Pokemon): void { super.onAdd(pokemon); - globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeManualTrigger); + globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeAbilityTrigger); } onRemove(pokemon: Pokemon): void { super.onRemove(pokemon); - globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeManualTrigger); + globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeAbilityTrigger); } } diff --git a/src/data/mystery-encounters/encounters/the-winstrate-challenge-encounter.ts b/src/data/mystery-encounters/encounters/the-winstrate-challenge-encounter.ts index d0a44504763..ca6b384cfbb 100644 --- a/src/data/mystery-encounters/encounters/the-winstrate-challenge-encounter.ts +++ b/src/data/mystery-encounters/encounters/the-winstrate-challenge-encounter.ts @@ -16,7 +16,7 @@ import { Nature } from "#enums/nature"; import { Type } from "#enums/type"; import { BerryType } from "#enums/berry-type"; import { Stat } from "#enums/stat"; -import { SpeciesFormChangeManualTrigger } from "#app/data/pokemon-forms"; +import { SpeciesFormChangeAbilityTrigger } from "#app/data/pokemon-forms"; import { applyPostBattleInitAbAttrs, PostBattleInitAbAttr } from "#app/data/ability"; import { showEncounterDialogue, showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; import { MysteryEncounterMode } from "#enums/mystery-encounter-mode"; @@ -198,7 +198,7 @@ function endTrainerBattleAndShowDialogue(): Promise { // Only trigger form change when Eiscue is in Noice form // Hardcoded Eiscue for now in case it is fused with another pokemon if (pokemon.species.speciesId === Species.EISCUE && pokemon.hasAbility(Abilities.ICE_FACE) && pokemon.formIndex === 1) { - globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeManualTrigger); + globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeAbilityTrigger); } pokemon.resetBattleData(); diff --git a/src/data/pokemon-forms.ts b/src/data/pokemon-forms.ts index b1c3db47768..035cd6f1369 100644 --- a/src/data/pokemon-forms.ts +++ b/src/data/pokemon-forms.ts @@ -212,6 +212,8 @@ export class SpeciesFormChangeCondition { } export abstract class SpeciesFormChangeTrigger { + public description: string = ""; + canChange(pokemon: Pokemon): boolean { return true; } @@ -222,16 +224,19 @@ export abstract class SpeciesFormChangeTrigger { } export class SpeciesFormChangeManualTrigger extends SpeciesFormChangeTrigger { - canChange(pokemon: Pokemon): boolean { - return true; - } +} + +export class SpeciesFormChangeAbilityTrigger extends SpeciesFormChangeTrigger { + public description: string = i18next.t("pokemonEvolutions:Forms.ability"); } export class SpeciesFormChangeCompoundTrigger { + public description: string = ""; public triggers: SpeciesFormChangeTrigger[]; constructor(...triggers: SpeciesFormChangeTrigger[]) { this.triggers = triggers; + this.description = this.triggers.filter(trigger => trigger?.description?.length > 0).map(trigger => trigger.description).join(", "); } canChange(pokemon: Pokemon): boolean { @@ -257,6 +262,9 @@ export class SpeciesFormChangeItemTrigger extends SpeciesFormChangeTrigger { super(); this.item = item; this.active = active; + this.description = this.active ? + i18next.t("pokemonEvolutions:Forms.item", { item: i18next.t(`modifierType:FormChangeItem.${FormChangeItem[this.item]}`) }) : + i18next.t("pokemonEvolutions:Forms.deactivateItem", { item: i18next.t(`modifierType:FormChangeItem.${FormChangeItem[this.item]}`) }); } canChange(pokemon: Pokemon): boolean { @@ -270,6 +278,7 @@ export class SpeciesFormChangeTimeOfDayTrigger extends SpeciesFormChangeTrigger constructor(...timesOfDay: TimeOfDay[]) { super(); this.timesOfDay = timesOfDay; + this.description = i18next.t("pokemonEvolutions:Forms.timeOfDay"); } canChange(pokemon: Pokemon): boolean { @@ -283,6 +292,7 @@ export class SpeciesFormChangeActiveTrigger extends SpeciesFormChangeTrigger { constructor(active: boolean = false) { super(); this.active = active; + this.description = this.active ? i18next.t("pokemonEvolutions:Forms.enter") : i18next.t("pokemonEvolutions:Forms.leave"); } canChange(pokemon: Pokemon): boolean { @@ -301,6 +311,7 @@ export class SpeciesFormChangeStatusEffectTrigger extends SpeciesFormChangeTrigg } this.statusEffects = statusEffects; this.invert = invert; + this.description = i18next.t("pokemonEvolutions:Forms.statusEffect"); } canChange(pokemon: Pokemon): boolean { @@ -316,6 +327,8 @@ export class SpeciesFormChangeMoveLearnedTrigger extends SpeciesFormChangeTrigge super(); this.move = move; this.known = known; + const moveKey = Moves[this.move].split("_").filter(f => f).map((f, i) => i ? `${f[0]}${f.slice(1).toLowerCase()}` : f.toLowerCase()).join("") as unknown as string; + this.description = i18next.t("pokemonEvolutions:Forms.moveLearned", { move: i18next.t(`move:${moveKey}.name`) }); } canChange(pokemon: Pokemon): boolean { @@ -335,6 +348,8 @@ export abstract class SpeciesFormChangeMoveTrigger extends SpeciesFormChangeTrig } export class SpeciesFormChangePreMoveTrigger extends SpeciesFormChangeMoveTrigger { + description = i18next.t("pokemonEvolutions:Forms.preMove"); + canChange(pokemon: Pokemon): boolean { const command = globalScene.currentBattle.turnCommands[pokemon.getBattlerIndex()]; return !!command?.move && this.movePredicate(command.move.move) === this.used; @@ -342,6 +357,8 @@ export class SpeciesFormChangePreMoveTrigger extends SpeciesFormChangeMoveTrigge } export class SpeciesFormChangePostMoveTrigger extends SpeciesFormChangeMoveTrigger { + description = i18next.t("pokemonEvolutions:Forms.postMove"); + canChange(pokemon: Pokemon): boolean { return pokemon.summonData && !!pokemon.getLastXMoves(1).filter(m => this.movePredicate(m.move)).length === this.used; } @@ -367,6 +384,7 @@ export class SpeciesDefaultFormMatchTrigger extends SpeciesFormChangeTrigger { constructor(formKey: string) { super(); this.formKey = formKey; + this.description = ""; } canChange(pokemon: Pokemon): boolean { @@ -386,6 +404,7 @@ export class SpeciesFormChangeTeraTrigger extends SpeciesFormChangeTrigger { constructor(teraType: Type) { super(); this.teraType = teraType; + this.description = i18next.t("pokemonEvolutions:Forms.tera", { teraType: i18next.t(`pokemonInfo:Type.${Type[this.teraType]}`) }); } /** @@ -404,6 +423,8 @@ export class SpeciesFormChangeTeraTrigger extends SpeciesFormChangeTrigger { * @extends SpeciesFormChangeTrigger */ export class SpeciesFormChangeLapseTeraTrigger extends SpeciesFormChangeTrigger { + description = i18next.t("pokemonEvolutions:Forms.teraLapse"); + canChange(pokemon: Pokemon): boolean { return !!globalScene.findModifier(m => m instanceof TerastallizeModifier && m.pokemonId === pokemon.id); } @@ -424,6 +445,7 @@ export class SpeciesFormChangeWeatherTrigger extends SpeciesFormChangeTrigger { super(); this.ability = ability; this.weathers = weathers; + this.description = i18next.t("pokemonEvolutions:Forms.weather"); } /** @@ -457,6 +479,7 @@ export class SpeciesFormChangeRevertWeatherFormTrigger extends SpeciesFormChange super(); this.ability = ability; this.weathers = weathers; + this.description = i18next.t("pokemonEvolutions:Forms.weatherRevert"); } /** @@ -751,8 +774,8 @@ export const pokemonFormChanges: PokemonFormChanges = { new SpeciesFormChange(Species.ARCEUS, "normal", "fairy", new SpeciesFormChangeItemTrigger(FormChangeItem.PIXIE_PLATE)) ], [Species.DARMANITAN]: [ - new SpeciesFormChange(Species.DARMANITAN, "", "zen", new SpeciesFormChangeManualTrigger(), true), - new SpeciesFormChange(Species.DARMANITAN, "zen", "", new SpeciesFormChangeManualTrigger(), true) + new SpeciesFormChange(Species.DARMANITAN, "", "zen", new SpeciesFormChangeAbilityTrigger(), true), + new SpeciesFormChange(Species.DARMANITAN, "zen", "", new SpeciesFormChangeAbilityTrigger(), true) ], [Species.GARBODOR]: [ new SpeciesFormChange(Species.GARBODOR, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) @@ -785,12 +808,12 @@ export const pokemonFormChanges: PokemonFormChanges = { new SpeciesFormChange(Species.GENESECT, "", "douse", new SpeciesFormChangeItemTrigger(FormChangeItem.DOUSE_DRIVE)) ], [Species.GRENINJA]: [ - new SpeciesFormChange(Species.GRENINJA, "battle-bond", "ash", new SpeciesFormChangeManualTrigger(), true), - new SpeciesFormChange(Species.GRENINJA, "ash", "battle-bond", new SpeciesFormChangeManualTrigger(), true) + new SpeciesFormChange(Species.GRENINJA, "battle-bond", "ash", new SpeciesFormChangeAbilityTrigger(), true), + new SpeciesFormChange(Species.GRENINJA, "ash", "battle-bond", new SpeciesFormChangeAbilityTrigger(), true) ], [Species.PALAFIN] : [ - new SpeciesFormChange(Species.PALAFIN, "zero", "hero", new SpeciesFormChangeManualTrigger(), true), - new SpeciesFormChange(Species.PALAFIN, "hero", "zero", new SpeciesFormChangeManualTrigger(), true) + new SpeciesFormChange(Species.PALAFIN, "zero", "hero", new SpeciesFormChangeAbilityTrigger(), true), + new SpeciesFormChange(Species.PALAFIN, "hero", "zero", new SpeciesFormChangeAbilityTrigger(), true) ], [Species.AEGISLASH]: [ new SpeciesFormChange(Species.AEGISLASH, "blade", "shield", new SpeciesFormChangePreMoveTrigger(Moves.KINGS_SHIELD), true, new SpeciesFormChangeCondition(p => p.hasAbility(Abilities.STANCE_CHANGE))), @@ -802,10 +825,10 @@ export const pokemonFormChanges: PokemonFormChanges = { new SpeciesFormChange(Species.XERNEAS, "active", "neutral", new SpeciesFormChangeActiveTrigger(false), true) ], [Species.ZYGARDE]: [ - new SpeciesFormChange(Species.ZYGARDE, "50-pc", "complete", new SpeciesFormChangeManualTrigger(), true), - new SpeciesFormChange(Species.ZYGARDE, "complete", "50-pc", new SpeciesFormChangeManualTrigger(), true), - new SpeciesFormChange(Species.ZYGARDE, "10-pc", "10-complete", new SpeciesFormChangeManualTrigger(), true), - new SpeciesFormChange(Species.ZYGARDE, "10-complete", "10-pc", new SpeciesFormChangeManualTrigger(), true) + new SpeciesFormChange(Species.ZYGARDE, "50-pc", "complete", new SpeciesFormChangeAbilityTrigger(), true), + new SpeciesFormChange(Species.ZYGARDE, "complete", "50-pc", new SpeciesFormChangeAbilityTrigger(), true), + new SpeciesFormChange(Species.ZYGARDE, "10-pc", "10-complete", new SpeciesFormChangeAbilityTrigger(), true), + new SpeciesFormChange(Species.ZYGARDE, "10-complete", "10-pc", new SpeciesFormChangeAbilityTrigger(), true) ], [Species.DIANCIE]: [ new SpeciesFormChange(Species.DIANCIE, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.DIANCITE)) @@ -814,8 +837,8 @@ export const pokemonFormChanges: PokemonFormChanges = { new SpeciesFormChange(Species.HOOPA, "", "unbound", new SpeciesFormChangeItemTrigger(FormChangeItem.PRISON_BOTTLE)) ], [Species.WISHIWASHI]: [ - new SpeciesFormChange(Species.WISHIWASHI, "", "school", new SpeciesFormChangeManualTrigger(), true), - new SpeciesFormChange(Species.WISHIWASHI, "school", "", new SpeciesFormChangeManualTrigger(), true) + new SpeciesFormChange(Species.WISHIWASHI, "", "school", new SpeciesFormChangeAbilityTrigger(), true), + new SpeciesFormChange(Species.WISHIWASHI, "school", "", new SpeciesFormChangeAbilityTrigger(), true) ], [Species.SILVALLY]: [ new SpeciesFormChange(Species.SILVALLY, "normal", "fighting", new SpeciesFormChangeItemTrigger(FormChangeItem.FIGHTING_MEMORY)), @@ -837,24 +860,24 @@ export const pokemonFormChanges: PokemonFormChanges = { new SpeciesFormChange(Species.SILVALLY, "normal", "fairy", new SpeciesFormChangeItemTrigger(FormChangeItem.FAIRY_MEMORY)) ], [Species.MINIOR]: [ - new SpeciesFormChange(Species.MINIOR, "red-meteor", "red", new SpeciesFormChangeManualTrigger(), true), - new SpeciesFormChange(Species.MINIOR, "red", "red-meteor", new SpeciesFormChangeManualTrigger(), true), - new SpeciesFormChange(Species.MINIOR, "orange-meteor", "orange", new SpeciesFormChangeManualTrigger(), true), - new SpeciesFormChange(Species.MINIOR, "orange", "orange-meteor", new SpeciesFormChangeManualTrigger(), true), - new SpeciesFormChange(Species.MINIOR, "yellow-meteor", "yellow", new SpeciesFormChangeManualTrigger(), true), - new SpeciesFormChange(Species.MINIOR, "yellow", "yellow-meteor", new SpeciesFormChangeManualTrigger(), true), - new SpeciesFormChange(Species.MINIOR, "green-meteor", "green", new SpeciesFormChangeManualTrigger(), true), - new SpeciesFormChange(Species.MINIOR, "green", "green-meteor", new SpeciesFormChangeManualTrigger(), true), - new SpeciesFormChange(Species.MINIOR, "blue-meteor", "blue", new SpeciesFormChangeManualTrigger(), true), - new SpeciesFormChange(Species.MINIOR, "blue", "blue-meteor", new SpeciesFormChangeManualTrigger(), true), - new SpeciesFormChange(Species.MINIOR, "indigo-meteor", "indigo", new SpeciesFormChangeManualTrigger(), true), - new SpeciesFormChange(Species.MINIOR, "indigo", "indigo-meteor", new SpeciesFormChangeManualTrigger(), true), - new SpeciesFormChange(Species.MINIOR, "violet-meteor", "violet", new SpeciesFormChangeManualTrigger(), true), - new SpeciesFormChange(Species.MINIOR, "violet", "violet-meteor", new SpeciesFormChangeManualTrigger(), true) + new SpeciesFormChange(Species.MINIOR, "red-meteor", "red", new SpeciesFormChangeAbilityTrigger(), true), + new SpeciesFormChange(Species.MINIOR, "red", "red-meteor", new SpeciesFormChangeAbilityTrigger(), true), + new SpeciesFormChange(Species.MINIOR, "orange-meteor", "orange", new SpeciesFormChangeAbilityTrigger(), true), + new SpeciesFormChange(Species.MINIOR, "orange", "orange-meteor", new SpeciesFormChangeAbilityTrigger(), true), + new SpeciesFormChange(Species.MINIOR, "yellow-meteor", "yellow", new SpeciesFormChangeAbilityTrigger(), true), + new SpeciesFormChange(Species.MINIOR, "yellow", "yellow-meteor", new SpeciesFormChangeAbilityTrigger(), true), + new SpeciesFormChange(Species.MINIOR, "green-meteor", "green", new SpeciesFormChangeAbilityTrigger(), true), + new SpeciesFormChange(Species.MINIOR, "green", "green-meteor", new SpeciesFormChangeAbilityTrigger(), true), + new SpeciesFormChange(Species.MINIOR, "blue-meteor", "blue", new SpeciesFormChangeAbilityTrigger(), true), + new SpeciesFormChange(Species.MINIOR, "blue", "blue-meteor", new SpeciesFormChangeAbilityTrigger(), true), + new SpeciesFormChange(Species.MINIOR, "indigo-meteor", "indigo", new SpeciesFormChangeAbilityTrigger(), true), + new SpeciesFormChange(Species.MINIOR, "indigo", "indigo-meteor", new SpeciesFormChangeAbilityTrigger(), true), + new SpeciesFormChange(Species.MINIOR, "violet-meteor", "violet", new SpeciesFormChangeAbilityTrigger(), true), + new SpeciesFormChange(Species.MINIOR, "violet", "violet-meteor", new SpeciesFormChangeAbilityTrigger(), true) ], [Species.MIMIKYU]: [ - new SpeciesFormChange(Species.MIMIKYU, "disguised", "busted", new SpeciesFormChangeManualTrigger(), true), - new SpeciesFormChange(Species.MIMIKYU, "busted", "disguised", new SpeciesFormChangeManualTrigger(), true) + new SpeciesFormChange(Species.MIMIKYU, "disguised", "busted", new SpeciesFormChangeAbilityTrigger(), true), + new SpeciesFormChange(Species.MIMIKYU, "busted", "disguised", new SpeciesFormChangeAbilityTrigger(), true) ], [Species.NECROZMA]: [ new SpeciesFormChange(Species.NECROZMA, "", "dawn-wings", new SpeciesFormChangeItemTrigger(FormChangeItem.N_LUNARIZER), false, getSpeciesDependentFormChangeCondition(Species.LUNALA)), @@ -896,10 +919,10 @@ export const pokemonFormChanges: PokemonFormChanges = { new SpeciesFormChange(Species.SANDACONDA, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) ], [Species.CRAMORANT]: [ - new SpeciesFormChange(Species.CRAMORANT, "", "gulping", new SpeciesFormChangeManualTrigger, true, new SpeciesFormChangeCondition(p => p.getHpRatio() >= .5)), - new SpeciesFormChange(Species.CRAMORANT, "", "gorging", new SpeciesFormChangeManualTrigger, true, new SpeciesFormChangeCondition(p => p.getHpRatio() < .5)), - new SpeciesFormChange(Species.CRAMORANT, "gulping", "", new SpeciesFormChangeManualTrigger, true), - new SpeciesFormChange(Species.CRAMORANT, "gorging", "", new SpeciesFormChangeManualTrigger, true), + new SpeciesFormChange(Species.CRAMORANT, "", "gulping", new SpeciesFormChangeAbilityTrigger, true, new SpeciesFormChangeCondition(p => p.getHpRatio() >= .5)), + new SpeciesFormChange(Species.CRAMORANT, "", "gorging", new SpeciesFormChangeAbilityTrigger, true, new SpeciesFormChangeCondition(p => p.getHpRatio() < .5)), + new SpeciesFormChange(Species.CRAMORANT, "gulping", "", new SpeciesFormChangeAbilityTrigger, true), + new SpeciesFormChange(Species.CRAMORANT, "gorging", "", new SpeciesFormChangeAbilityTrigger, true), new SpeciesFormChange(Species.CRAMORANT, "gulping", "", new SpeciesFormChangeActiveTrigger(false), true), new SpeciesFormChange(Species.CRAMORANT, "gorging", "", new SpeciesFormChangeActiveTrigger(false), true) ], @@ -930,12 +953,12 @@ export const pokemonFormChanges: PokemonFormChanges = { new SpeciesFormChange(Species.ALCREMIE, "rainbow-swirl", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) ], [Species.EISCUE]: [ - new SpeciesFormChange(Species.EISCUE, "", "no-ice", new SpeciesFormChangeManualTrigger(), true), - new SpeciesFormChange(Species.EISCUE, "no-ice", "", new SpeciesFormChangeManualTrigger(), true) + new SpeciesFormChange(Species.EISCUE, "", "no-ice", new SpeciesFormChangeAbilityTrigger(), true), + new SpeciesFormChange(Species.EISCUE, "no-ice", "", new SpeciesFormChangeAbilityTrigger(), true) ], [Species.MORPEKO]: [ - new SpeciesFormChange(Species.MORPEKO, "full-belly", "hangry", new SpeciesFormChangeManualTrigger(), true), - new SpeciesFormChange(Species.MORPEKO, "hangry", "full-belly", new SpeciesFormChangeManualTrigger(), true) + new SpeciesFormChange(Species.MORPEKO, "full-belly", "hangry", new SpeciesFormChangeAbilityTrigger(), true), + new SpeciesFormChange(Species.MORPEKO, "hangry", "full-belly", new SpeciesFormChangeAbilityTrigger(), true) ], [Species.COPPERAJAH]: [ new SpeciesFormChange(Species.COPPERAJAH, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)) @@ -978,13 +1001,13 @@ export const pokemonFormChanges: PokemonFormChanges = { new SpeciesFormChange(Species.OGERPON, "cornerstone-mask-tera", "cornerstone-mask", new SpeciesFormChangeLapseTeraTrigger(), true, new SpeciesFormChangeCondition(p => p.getTeraType() !== Type.ROCK)) ], [Species.TERAPAGOS]: [ - new SpeciesFormChange(Species.TERAPAGOS, "", "terastal", new SpeciesFormChangeManualTrigger(), true), + new SpeciesFormChange(Species.TERAPAGOS, "", "terastal", new SpeciesFormChangeAbilityTrigger(), true), new SpeciesFormChange(Species.TERAPAGOS, "terastal", "stellar", new SpeciesFormChangeTeraTrigger(Type.STELLAR)), new SpeciesFormChange(Species.TERAPAGOS, "stellar", "terastal", new SpeciesFormChangeLapseTeraTrigger(), true, new SpeciesFormChangeCondition(p => p.getTeraType() !== Type.STELLAR)) ], [Species.GALAR_DARMANITAN]: [ - new SpeciesFormChange(Species.GALAR_DARMANITAN, "", "zen", new SpeciesFormChangeManualTrigger(), true), - new SpeciesFormChange(Species.GALAR_DARMANITAN, "zen", "", new SpeciesFormChangeManualTrigger(), true) + new SpeciesFormChange(Species.GALAR_DARMANITAN, "", "zen", new SpeciesFormChangeAbilityTrigger(), true), + new SpeciesFormChange(Species.GALAR_DARMANITAN, "zen", "", new SpeciesFormChangeAbilityTrigger(), true) ], }; @@ -1002,3 +1025,4 @@ export function initPokemonForms() { formChanges.push(...newFormChanges); }); } + diff --git a/src/plugins/i18n.ts b/src/plugins/i18n.ts index 845739dfcac..cc798bc8585 100644 --- a/src/plugins/i18n.ts +++ b/src/plugins/i18n.ts @@ -204,6 +204,7 @@ export async function initI18n(): Promise { "nature", "pokeball", "pokemon", + "pokemonEvolutions", "pokemonForm", "pokemonInfo", "pokemonInfoContainer", From 134c6e928f9b1bbbb055367181a3a7bb3bac5a95 Mon Sep 17 00:00:00 2001 From: Lugiad <2070109+Adri1@users.noreply.github.com> Date: Wed, 22 Jan 2025 19:15:48 +0100 Subject: [PATCH 117/119] [UI/UX] New version of the 0 (zero) of pokemon-emerald-pro font (#5167) --- public/fonts/pokemon-emerald-pro.ttf | Bin 93816 -> 93788 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/public/fonts/pokemon-emerald-pro.ttf b/public/fonts/pokemon-emerald-pro.ttf index e4ee49dbff37948936b7770f697ab143b9f434d5..758130172c76eb3ddd06ced11258f00e8b92671e 100644 GIT binary patch delta 2255 zcmW+&aY)(?8vbQwX6DMw%$b>)bIzGFGqbW^W@cq(W#*chIWse7u3WQbYUWyNX4{B} zi0F&hH@b-Mi+%B3gme+RT|~s_y3s{+5fS6N5nV(?cis2G^S&=U@H~G$&&6)o?rsOG6(qz`8|{nDhgGEnnV4elc6i2Cr}Pl z2DL(mp>xnx=nnKc3=>8R1H)`#p0Me#wXh=?1jc|VVP4n>Y!0>sI}N9WmxNox-QiQ= zf$*>4`{5UGESv?egqz?#_y_m~{0M##fsFtoq!GplXT*dnVliSf;s}95un}T}5#d9u zAdVv8k&H-Qq&m_bIS{!Nd5B~nl}HmZfLx72MbV=4QMRa+sEw!-6cj~ADN$xrKWY*+ zi&{c$qQ2jv-7?);j7CTEqBYUp=(*^<7-$STrZUD6Gaj=PbAX1R$!H26P6S9@JKujuf%uY$MB!=7qIdaDcdRE zDFB5?VNinFlDd|9s|kXGL(!q#x!H+ zKJq?z-*SKA{+IjbOd?ak>|>5ISC|KBh%|PZBCRcLB<)k$Aq&OIVd+>-)*Nf^0sH~e z^+5H&`C#_JHXFg_vrX&~_A2`6nc@cDctzl%S`-{gPKhGo;TdD*qu*6fk&+3fY~{TxgV zFQ+!gku#dJnDZs)C>NPa%ms4|x#PLP++zV;z!fM2eS#^$g5W@KnMcVJ=e6Zc1CTGAdb=Y)LMQ$;Bnb#$tc*eDQMex8kc3YKfx6R^pm0 z`BJi1a$SlpWtWOdHKp#-_obgocco}4T?$H-(l)7IIxAh1{$7SDW0z^m{ACMe8)auQ zs*ER-%Pg|DvVd%>9A3^T*OlAL$I6$=_vJ7-T`rY-0$XrK#$w8m^kHTB$lwpcNd2QsGw2D2}R0)q-kOwY_?zdain{ zdP|8?3YA)=Q#qzwP<~aO)(~q-YLqpOn(3O=noAW)B~p1*i>esdfd_%j!+_k@~a_QirOe*0Jlf zbscphbsy`3b?bG9b(b2FhM@s9dW}~zs#(%}(d^d)^@MtEy|TWeezJbGey9FgOVBd4 zpte%0(OR{`+9mB_1Ehi8plIl77;9K+IMHEsQk_p1d<=aodTe++`FQ8?g`T39=}j*E zuzp_uS-;;1Yh*M^8_kU)je*8p1H`~E$P9MFTf>53y9sEbG|8K+O(RW#rq4~=O(#aI zk!)lcON?rx$>=c78H2_><7G3knb$0Bwl$A8e{5cEK54!%VNEoX(4;nXn1)RO(}ro! zbk%}wVYGlPsup+4e2Z(x3^%jPTC?9gZ~kgNe?oX7dE$OD^W?ySvWP4;%O}fmE1{L& zYHl59U26SigXP3joVgir_UJA)Xzqqtv$QyV0G9!W;*ttV_eTA&mGU_pYPkF?J~R1{+s={ z6V^%U1UuE81Dy+<2VKZ6ZkM`ixa)J*j~AF1!WY&Tqc4IlP8?W=%+c={c1${E9m|d_ z$C2Zr8`;h1mUf%Fece;t!S40$-R|S=3n$8ncWRvT&K2jL3+lqU*e;c;%QfaYcEjB+ zvRmMmyNzzId)mG1KIuXBka`$Bf*xg$rN`4V(G%#|_CP#%567eMm_4JOMbElt$8*vP z>BaX7dkww*-r3$QFVvgkReL+U6W$f?$xFyf_DkJM@5`B&$9?oZQ{P12YTv~x;j6Y+ z?_d4)YOkN!Ki+@wy7IN*wMX@O`t{e>7X$PG-N3}a{u}HY&6}Awi*I({ocnM-mQUi- z`s}`G-sUfF@p*Qv6*Ku>mZpi-twNzF0 delta 2260 zcmX9=e@NO78a6XCD`#eAW@TnSX3ktcOwH_*nOT{cnKd)BW@hHhHP_6Unwe{6wsm7f z#BSF`L_|d2*f%1=ixImnBDxq65wVLHBch8gVvIQNdoMiC^FHqj&-?FtbQE%X6oLf> zfj}T+fFK|cpD(TY%ZI;y0R`zDZ?V-0=D-TpuJ6@^(qzjZ5OD|;lysnNYf-1R#sBlI zivmeu9>U%(r$nhhps>FiyPlbrSik-O3KCM@eowkT2?7Nj{ShBX|Fh=H*XDcd|A4~- zcLH@Rj>Z2^|MlW;mfvVWBXM>lm>8d12jEh84}1c? z3%?G>gtNl=;ks~l_;~nM_*DceLLFg_@JH-L;v?yi-I317-N>WJTLcQhK&TNG#Cya7 zVimE4I7a-uN55yjw}~Vm`A9u-47r9pk3vNOQK~3U)Lhh7)FlduqM^j79@Kl(3hFZ2 zj*I3+o1$l<_s}pj2i=NxqZiTpG2j?tj4;L&Ga0iLbB9U8G+=y~70g*II+h=6iuJ}$ z$NFOruqZ4CtHq9CH?TKxgg8c=Ce9r<6Sp0Aj>F;TI5p0No5g*NhsKlRMe)}7x%gu| z63@V^@bB=O_{#)TLT-Z8o?uKEPw*#PCn6IWiPA)C;#A^(50ElP`!cBAUo1YKd=%E5w@=a*8y?km64Hkg}MvlX9B! zlY}5qNC3$|@{v|ahp7>%*{QNrTk1sWdg`|{bQ(X+l4f5>+ertf)6-??p7i8#ILS2R4Wf@Y+7X=}9ehnR-`I2aC()5>|rS>$YRE{kAA*+tSKN6~!IQPCBE z0uliMpa+J4S>OoxRg5Sm7fXr_#g5_+#s1@@@t_t^szp98;K$W3tvTCF1NCXz; ziufX>$SV3E@{3NYG1c5^W3{__wtB1jLW~wO#B%W)@uv8D4ZMb2BdC$r=xUrb<2Aby zkR)58mP|-CC6~3>TCTlTUprJgRl8cdTYD=dNV!tA)F)k$Ue{6Ugms!acinW|THSu# zi3~3j%M3EFY*w}*`&JLCr_?vptLr`WOZ9sVum);_q~T4&X2abh`Xl8d_oL-UCvvzv zS1y&C*}xSi#Bu{t4-c!X`62IxBbu{H7t!nktxjv!dbDfW9qoAstb@|Q?~r#mJLWn*b!>Os>YzH3j;<5ybUK%AO6S)d>CQXh zoup1yr>IlY>FZqYw4doQdXC2da~^jy3k+F!_CcwVf(xG*Q073K-^7xPUo zx|iB3>ecm*_iprFT5uMgMQ53^e6`%YB)$~Cw7r~px%2YYO0p`f@2ykT1?#GH+j?TX z?t}K>`dEGPK1<(3-(ufR-(la6z8f3VhPP$d^tN@|uI=28vXkt9U1J}z&)RPs7>Awa z5IU5O9>~`&s?Mes#aK|4sjVzrX*~iF9T-xz1Ln#W~~LbRIg-oVNqW zfs6t1fN5ZIV0GZcg>qH6bS{@`-nHwx9YhWSgT}$J!Ii-qH^Xgq&%5_tL0^eqIbMBy z_2t$15PN9uHT1RWwdwVnhSy84zj>e@hR5ic_goBLYj*mpHb8U;qBqt?;I(Vfxr-`vFC zga7pJ+W6}HyquWKpuC*u|4U3%z^6wAY;;akaG>`C4gdhSTqhUsbHIKu#~-i&5abBZ jT>y?C;LiUC0uvBuU^wmf;k2Nu(%`@k@w-DGbQJVoc!ykm From 9c29cdc63dd2e5a5d680c20ee069e3bd0463046a Mon Sep 17 00:00:00 2001 From: Xavion3 Date: Fri, 24 Jan 2025 11:18:21 +1100 Subject: [PATCH 118/119] [Bug] Fix miniblackhole (#5169) --- src/modifier/modifier.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/modifier/modifier.ts b/src/modifier/modifier.ts index 37f88deea7f..c51fa129efe 100644 --- a/src/modifier/modifier.ts +++ b/src/modifier/modifier.ts @@ -3183,12 +3183,12 @@ export abstract class HeldItemTransferModifier extends PokemonHeldItemModifier { break; } } - const randItemIndex = pokemon.randSeedInt(itemModifiers.length); - const randItem = itemModifiers[randItemIndex]; + const randItemIndex = pokemon.randSeedInt(tierItemModifiers.length); + const randItem = tierItemModifiers[randItemIndex]; heldItemTransferPromises.push(globalScene.tryTransferHeldItemModifier(randItem, pokemon, false).then(success => { if (success) { transferredModifierTypes.push(randItem.type); - itemModifiers.splice(randItemIndex, 1); + tierItemModifiers.splice(randItemIndex, 1); } })); } From 747656e8df60333889b0a2794549cc0108d1ee3f Mon Sep 17 00:00:00 2001 From: Bertie690 <136088738+Bertie690@users.noreply.github.com> Date: Thu, 23 Jan 2025 20:47:22 -0500 Subject: [PATCH 119/119] [Test] Added learn move utility function & level cap overrides (#5058) * Added learn move utility function * Added utility functions * add another test * Update overrides.ts * Update moveHelper.ts * Update overridesHelper.ts --------- Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> Co-authored-by: damocleas --- src/battle-scene.ts | 6 +- src/field/pokemon.ts | 9 +- src/overrides.ts | 5 +- src/test/phases/learn-move-phase.test.ts | 117 ++++++++++++++++++++-- src/test/utils/helpers/moveHelper.ts | 45 ++++++++- src/test/utils/helpers/overridesHelper.ts | 20 ++++ 6 files changed, 187 insertions(+), 15 deletions(-) diff --git a/src/battle-scene.ts b/src/battle-scene.ts index 65ec6a844ee..39c09a31ceb 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -1843,8 +1843,10 @@ export default class BattleScene extends SceneBase { this.currentBattle.battleScore += Math.ceil(scoreIncrease); } - getMaxExpLevel(ignoreLevelCap?: boolean): integer { - if (ignoreLevelCap) { + getMaxExpLevel(ignoreLevelCap: boolean = false): integer { + if (Overrides.LEVEL_CAP_OVERRIDE > 0) { + return Overrides.LEVEL_CAP_OVERRIDE; + } else if (ignoreLevelCap || Overrides.LEVEL_CAP_OVERRIDE < 0) { return Number.MAX_SAFE_INTEGER; } const waveIndex = Math.ceil((this.currentBattle?.waveIndex || 1) / 10) * 10; diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index a4b8603cbb0..a9c270ec09e 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -2391,8 +2391,13 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { this.battleInfo.toggleFlyout(visible); } - addExp(exp: integer) { - const maxExpLevel = globalScene.getMaxExpLevel(); + /** + * Adds experience to this PlayerPokemon, subject to wave based level caps. + * @param exp The amount of experience to add + * @param ignoreLevelCap Whether to ignore level caps when adding experience (defaults to false) + */ + addExp(exp: integer, ignoreLevelCap: boolean = false) { + const maxExpLevel = globalScene.getMaxExpLevel(ignoreLevelCap); const initialExp = this.exp; this.exp += exp; while (this.level < maxExpLevel && this.exp >= getLevelTotalExp(this.level + 1, this.species.growthRate)) { diff --git a/src/overrides.ts b/src/overrides.ts index 1f8601b7659..4b1f4b280eb 100644 --- a/src/overrides.ts +++ b/src/overrides.ts @@ -63,8 +63,11 @@ class DefaultOverrides { readonly STARTING_WAVE_OVERRIDE: number = 0; readonly STARTING_BIOME_OVERRIDE: Biome = Biome.TOWN; readonly ARENA_TINT_OVERRIDE: TimeOfDay | null = null; - /** Multiplies XP gained by this value including 0. Set to null to ignore the override */ + /** Multiplies XP gained by this value including 0. Set to null to ignore the override. */ readonly XP_MULTIPLIER_OVERRIDE: number | null = null; + /** Sets the level cap to this number during experience gain calculations. Set to `0` to disable override & use normal wave-based level caps, + or any negative number to set it to 9 quadrillion (effectively disabling it). */ + readonly LEVEL_CAP_OVERRIDE: number = 0; readonly NEVER_CRIT_OVERRIDE: boolean = false; /** default 1000 */ readonly STARTING_MONEY_OVERRIDE: number = 0; diff --git a/src/test/phases/learn-move-phase.test.ts b/src/test/phases/learn-move-phase.test.ts index c4fa0e8bf45..3a3d111f551 100644 --- a/src/test/phases/learn-move-phase.test.ts +++ b/src/test/phases/learn-move-phase.test.ts @@ -4,6 +4,8 @@ import GameManager from "#test/utils/gameManager"; import { Species } from "#enums/species"; import { Moves } from "#enums/moves"; import { LearnMovePhase } from "#app/phases/learn-move-phase"; +import { Mode } from "#app/ui/ui"; +import { Button } from "#app/enums/buttons"; describe("Learn Move Phase", () => { let phaserGame: Phaser.Game; @@ -26,7 +28,7 @@ describe("Learn Move Phase", () => { it("If Pokemon has less than 4 moves, its newest move will be added to the lowest empty index", async () => { game.override.moveset([ Moves.SPLASH ]); - await game.startBattle([ Species.BULBASAUR ]); + await game.classicMode.startBattle([ Species.BULBASAUR ]); const pokemon = game.scene.getPlayerPokemon()!; const newMovePos = pokemon?.getMoveset().length; game.move.select(Moves.SPLASH); @@ -36,12 +38,113 @@ describe("Learn Move Phase", () => { const levelReq = levelMove[0]; const levelMoveId = levelMove[1]; expect(pokemon.level).toBeGreaterThanOrEqual(levelReq); - expect(pokemon?.getMoveset()[newMovePos]?.moveId).toBe(levelMoveId); + expect(pokemon?.moveset[newMovePos]?.moveId).toBe(levelMoveId); + }); + + it("If a pokemon has 4 move slots filled, the chosen move will be deleted and replaced", async () => { + await game.classicMode.startBattle([ Species.BULBASAUR ]); + const bulbasaur = game.scene.getPlayerPokemon()!; + const prevMoveset = [ Moves.SPLASH, Moves.ABSORB, Moves.ACID, Moves.VINE_WHIP ]; + const moveSlotNum = 3; + + game.move.changeMoveset(bulbasaur, prevMoveset); + game.move.select(Moves.SPLASH); + await game.doKillOpponents(); + + // queue up inputs to confirm dialog boxes + game.onNextPrompt("LearnMovePhase", Mode.CONFIRM, () => { + game.scene.ui.processInput(Button.ACTION); + }); + game.onNextPrompt("LearnMovePhase", Mode.SUMMARY, () => { + for (let x = 0; x < moveSlotNum; x++) { + game.scene.ui.processInput(Button.DOWN); + } + game.scene.ui.processInput(Button.ACTION); + }); + await game.phaseInterceptor.to(LearnMovePhase); + + const levelMove = bulbasaur.getLevelMoves(5)[0]; + const levelReq = levelMove[0]; + const levelMoveId = levelMove[1]; + expect(bulbasaur.level).toBeGreaterThanOrEqual(levelReq); + // Check each of mr mime's moveslots to make sure the changed move (and ONLY the changed move) is different + bulbasaur.getMoveset().forEach((move, index) => { + const expectedMove: Moves = (index === moveSlotNum ? levelMoveId : prevMoveset[index]); + expect(move?.moveId).toBe(expectedMove); + }); + }); + + it("selecting the newly deleted move will reject it and keep old moveset", async () => { + await game.classicMode.startBattle([ Species.BULBASAUR ]); + const bulbasaur = game.scene.getPlayerPokemon()!; + const prevMoveset = [ Moves.SPLASH, Moves.ABSORB, Moves.ACID, Moves.VINE_WHIP ]; + + game.move.changeMoveset(bulbasaur, [ Moves.SPLASH, Moves.ABSORB, Moves.ACID, Moves.VINE_WHIP ]); + game.move.select(Moves.SPLASH); + await game.doKillOpponents(); + + // queue up inputs to confirm dialog boxes + game.onNextPrompt("LearnMovePhase", Mode.CONFIRM, () => { + game.scene.ui.processInput(Button.ACTION); + }); + game.onNextPrompt("LearnMovePhase", Mode.SUMMARY, () => { + for (let x = 0; x < 4; x++) { + game.scene.ui.processInput(Button.DOWN); // moves down 4 times to the 5th move slot + } + game.scene.ui.processInput(Button.ACTION); + }); + game.onNextPrompt("LearnMovePhase", Mode.CONFIRM, () => { + game.scene.ui.processInput(Button.ACTION); + }); + await game.phaseInterceptor.to(LearnMovePhase); + + const levelReq = bulbasaur.getLevelMoves(5)[0][0]; + expect(bulbasaur.level).toBeGreaterThanOrEqual(levelReq); + expect(bulbasaur.getMoveset().map(m => m?.moveId)).toEqual(prevMoveset); + }); + + it("macro should add moves in free slots normally", async () => { + await game.classicMode.startBattle([ Species.BULBASAUR ]); + const bulbasaur = game.scene.getPlayerPokemon()!; + + game.move.changeMoveset(bulbasaur, [ Moves.SPLASH, Moves.ABSORB, Moves.ACID ]); + game.move.select(Moves.SPLASH); + await game.move.learnMove(Moves.SACRED_FIRE, 0, 1); + expect(bulbasaur.getMoveset().map(m => m?.moveId)).toEqual([ Moves.SPLASH, Moves.ABSORB, Moves.ACID, Moves.SACRED_FIRE ]); + + }); + + it("macro should replace moves", async () => { + await game.classicMode.startBattle([ Species.BULBASAUR ]); + const bulbasaur = game.scene.getPlayerPokemon()!; + + game.move.changeMoveset(bulbasaur, [ Moves.SPLASH, Moves.ABSORB, Moves.ACID, Moves.VINE_WHIP ]); + game.move.select(Moves.SPLASH); + await game.move.learnMove(Moves.SACRED_FIRE, 0, 1); + expect(bulbasaur.getMoveset().map(m => m?.moveId)).toEqual([ Moves.SPLASH, Moves.SACRED_FIRE, Moves.ACID, Moves.VINE_WHIP ]); + + }); + + it("macro should allow for cancelling move learning", async () => { + await game.classicMode.startBattle([ Species.BULBASAUR ]); + const bulbasaur = game.scene.getPlayerPokemon()!; + + game.move.changeMoveset(bulbasaur, [ Moves.SPLASH, Moves.ABSORB, Moves.ACID, Moves.VINE_WHIP ]); + game.move.select(Moves.SPLASH); + await game.move.learnMove(Moves.SACRED_FIRE, 0, 4); + expect(bulbasaur.getMoveset().map(m => m?.moveId)).toEqual([ Moves.SPLASH, Moves.ABSORB, Moves.ACID, Moves.VINE_WHIP ]); + + }); + + it("macro works on off-field party members", async () => { + await game.classicMode.startBattle([ Species.BULBASAUR, Species.SQUIRTLE ]); + const squirtle = game.scene.getPlayerParty()[1]!; + + game.move.changeMoveset(squirtle, [ Moves.SPLASH, Moves.WATER_GUN, Moves.FREEZE_DRY, Moves.GROWL ]); + game.move.select(Moves.TACKLE); + await game.move.learnMove(Moves.SHELL_SMASH, 1, 0); + expect(squirtle.getMoveset().map(m => m?.moveId)).toEqual([ Moves.SHELL_SMASH, Moves.WATER_GUN, Moves.FREEZE_DRY, Moves.GROWL ]); + }); - /** - * Future Tests: - * If a Pokemon has four moves, the user can specify an old move to be forgotten and a new move will take its place. - * If a Pokemon has four moves, the user can reject the new move, keeping the moveset the same. - */ }); diff --git a/src/test/utils/helpers/moveHelper.ts b/src/test/utils/helpers/moveHelper.ts index 4b2069ee881..ad39755b556 100644 --- a/src/test/utils/helpers/moveHelper.ts +++ b/src/test/utils/helpers/moveHelper.ts @@ -1,8 +1,10 @@ import type { BattlerIndex } from "#app/battle"; +import { Button } from "#app/enums/buttons"; import type Pokemon from "#app/field/pokemon"; import { PokemonMove } from "#app/field/pokemon"; import Overrides from "#app/overrides"; import type { CommandPhase } from "#app/phases/command-phase"; +import { LearnMovePhase } from "#app/phases/learn-move-phase"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; import { Command } from "#app/ui/command-ui-handler"; import { Mode } from "#app/ui/ui"; @@ -75,9 +77,10 @@ export class MoveHelper extends GameManagerHelper { } /** - * Used when the normal moveset override can't be used (such as when it's necessary to check updated properties of the moveset). - * @param pokemon - The pokemon being modified - * @param moveset - The moveset to use + * Changes a pokemon's moveset to the given move(s). + * Used when the normal moveset override can't be used (such as when it's necessary to check or update properties of the moveset). + * @param pokemon - The {@linkcode Pokemon} being modified + * @param moveset - The {@linkcode Moves} (single or array) to change the Pokemon's moveset to */ public changeMoveset(pokemon: Pokemon, moveset: Moves | Moves[]): void { if (!Array.isArray(moveset)) { @@ -90,4 +93,40 @@ export class MoveHelper extends GameManagerHelper { const movesetStr = moveset.map((moveId) => Moves[moveId]).join(", "); console.log(`Pokemon ${pokemon.species.name}'s moveset manually set to ${movesetStr} (=[${moveset.join(", ")}])!`); } + + /** + * Simulates learning a move for a player pokemon. + * @param move The {@linkcode Moves} being learnt + * @param partyIndex The party position of the {@linkcode PlayerPokemon} learning the move (defaults to 0) + * @param moveSlotIndex The INDEX (0-4) of the move slot to replace if existent move slots are full; + * defaults to 0 (first slot) and 4 aborts the procedure + * @returns a promise that resolves once the move has been successfully learnt + */ + public async learnMove(move: Moves | integer, partyIndex: integer = 0, moveSlotIndex: integer = 0) { + return new Promise(async (resolve, reject) => { + this.game.scene.pushPhase(new LearnMovePhase(partyIndex, move)); + + // if slots are full, queue up inputs to replace existing moves + if (this.game.scene.getPlayerParty()[partyIndex].moveset.filter(m => m).length === 4) { + this.game.onNextPrompt("LearnMovePhase", Mode.CONFIRM, () => { + this.game.scene.ui.processInput(Button.ACTION); // "Should a move be forgotten and replaced with XXX?" + }); + this.game.onNextPrompt("LearnMovePhase", Mode.SUMMARY, () => { + for (let x = 0; x < (moveSlotIndex ?? 0); x++) { + this.game.scene.ui.processInput(Button.DOWN); // Scrolling in summary pane to move position + } + this.game.scene.ui.processInput(Button.ACTION); + if (moveSlotIndex === 4) { + this.game.onNextPrompt("LearnMovePhase", Mode.CONFIRM, () => { + this.game.scene.ui.processInput(Button.ACTION); // "Give up on learning XXX?" + }); + } + }); + } + + await this.game.phaseInterceptor.to(LearnMovePhase).catch(e => reject(e)); + resolve(); + }); + } + } diff --git a/src/test/utils/helpers/overridesHelper.ts b/src/test/utils/helpers/overridesHelper.ts index 9af811561b7..15815c96691 100644 --- a/src/test/utils/helpers/overridesHelper.ts +++ b/src/test/utils/helpers/overridesHelper.ts @@ -71,6 +71,26 @@ export class OverridesHelper extends GameManagerHelper { return this; } + /** + * Override the wave level cap + * @param cap the level cap value to set; 0 uses normal level caps and negative values + * disable it completely + * @returns `this` + */ + public levelCap(cap: number): this { + vi.spyOn(Overrides, "LEVEL_CAP_OVERRIDE", "get").mockReturnValue(cap); + let capStr: string; + if (cap > 0) { + capStr = `Level cap set to ${cap}!`; + } else if (cap < 0) { + capStr = "Level cap disabled!"; + } else { + capStr = "Level cap reset to default value for wave."; + } + this.log(capStr); + return this; + } + /** * Override the player (pokemon) starting held items * @param items the items to hold

    qlbkX{Q~kcKiuOYV9VRw& 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 z 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 bG?WxJP-f!9&Xoj!KMF73y!a_&`r&^8bi|Y- literal 0 HcmV?d00001 diff --git a/public/images/events/winter_holidays2024-event-it.png b/public/images/events/winter_holidays2024-event-it.png new file mode 100644 index 0000000000000000000000000000000000000000..f3062f40d5149dd5045d186edbcdce729a5c4e3f GIT binary patch literal 33346 zcmce-2Ut_x(kQ&?MG&M2f|NqbPB-z<}*37I~GqYx9O<$3j4A*ZoADE0601)`t=^1$#sXr8lI6HEKt(+~P+&+#j z*JA-m86Oug#2)GavV_{$IZ4s)Hn-D*?5w2d4TaQs)m;>zwsy*XZctr64LyjTJw(ik zUPc-u=_8Ip;0W~qgM1tvoZQ8Ir09R)6-QlP-{zqQ{Q~i@m!g-uCI~W8*8(XxyFo!h z+`?QCK0$tvh!{7YFs~TDASZ~QmrsO;SA>U8fQy$;oL5*}Kn(QfMUSH9W@Rm|qj>)h zEz~b5dRq?<7jYgQZ*OmIZvk#+Hya*4F)=Y7UVa{ael8RQm%Fc%2iS+p$(`XZ42n>9 zh?|{@hn=$%=o%x~(%I8PiXO%3?|$-^B5%l9{|i>qd7buSo)ZN+B4FXm2Lb1v4*KFK9bfEu`=l@_h3jFWE9(LCMX6*Ho z|1v44kKMlky?*jHsEfFQ8x-u}?55}J?C_WFX#FKckb(k;)zHq#%GukU?Ro}(z@ds@ z52zG9KQF%^7at#&0IwcDpE#cgN{u+K^@;a4sJgS2owe^jgYt9niRtn4iu3Y|^9%hK zP?Qc^fjz+g5!ebMZtd*m2u7`dog>%=%H!f>Ll63UUBwlg9h}`zgi+iH{Nh4gU0lV< z-2?0dfvPA<(W9ooZD(gC&MRUmVl4pSUWl-mB}C}2 z@ruq6&udk?9{=0wtehbz9RHxoXU%6VWCa0pLBZG91O<7yz`VkuT*6kuB2b8xr69i; zvs=r_~z>X;5dUCqDnjl?e6%At$zYjiQ1>{c?liV90M> zgIqfiC`vbf-?sY~7WY5X?cd|QZJ{Ww{@=Kl-(c>})*jwqH>jKq$`t;C^ZKW?{co&0 zJ9$Cf{)u@Pup3I#JWxt0MQ`oq>i@Zb{wy8D7VKmLMa3gL{})pc1`9)lM1-tSF3j4J%M#`PxWJ+ULR>YyFU}0g@uWN0-#^(HgySx9rU;I<}{FmoO#pKtQ ze8nD9Y*iyxh6+?O@ao+>LLS+0gTp5g@>blQY(D zd4aB)Z>g1OYgSJ6f`hc6&sNVYGE()^Y4qxrP-8|eUhyrx50N(t`t(29hT=uo=ZE6w z_h7l;v12eiv9ej;ED_%bK%VNol73`r=xum1Hb3Hv#d4%K>DE-Dab$!1gbbQ&2hWp6 z@Do_EkbyzZWR=-4Z{0%U?XiWVjH=|XC@NLOk&^d5fj|GgU!%g3@=D{=PM-#=1i0=K zp80`44&ZZQ7(}C_LRM;Cm@jG?nbfBlCKj@2KpzNsPiYH@;WNpurOCnp!tzjqUK5-x z%3?ny4#m6$IL1scUj%BqmgO5MRb_3=8Xh$@tVYpdh&pXMbN|?u$4$~vmU~N_@B&Tp zb&9a+rf-{&Zs(w~n#x`W&fS^`h!G@`l|YeL3l&!=5hswz;~vsF5yCu^G88uzHyQa{ z^J9&@D}WIaQcU_G#LAj%6fg1RX3)ukh=xbL$ICra=_?+U!I?LEwjSXMflOd)&c)$^;dEL z>E(pxg^f>741fsbjUH6=d14`Ts8o7D+KAf~Xy!)7jFF28DOjn*xA5e8Y1_~`!Y6m= z)Efz95kbRL21T%k3L%9<9OJ50g{6cOlcghr%7amcz~!tjeaSQ8J{&queB;AY7tF*I zD}oq0urhAKu||kc#|;h|&FH;&X(S6)>itGyJI3vw;~UUIrfv=(XMbM~cTkR9eMWF} zYZ&k`+|61ECm-qL+qm^idH@!+zW(}Y>-vS4KV=2r)AIpE0Y}VEXP`z@C61SPVO)a6 z2Mm3>_j62Mk>H$_fL(E&OC)b(i*3FS9c6U( zI*Gf1cDMb?N3YorgYA+dC=G?h$+bwo$y)yGMJ5Z|6EOyCj(oG@;P1IW!`dLNF^e`g zjIY%#!#C2^*&C3vT3UI!L0tjF^vF{RScjlco2gpt>yNH#b;_O^UY6~54qR%B!!uM? zS*%NR%Zh6NPxc4uAM%3M$IyWKJl79P#Wp7o<4ZEkgX&6$6hybCDO=`4w5-A^@k8Qq za&#w}(JNo}#B8oSBfcHZo@}*GZjrSVZod^bl-llIae5|b>L)o?pz3DHoS2)zrlKvR zs+Kw+x1&T5=jt_bn75T-UTDs#4W)6rX0}iTZEwHhKw}TSdpT(m4;}`EmiiR z;&Lo0I{1LdYeBwS1omnQepsB}y|3M=I;w1wyQK+t9G4t@nT3oP z9%dVmf4>Cb#A*~dk3}8?$v&a6)crh*+_`V4qcaU%Hq9)qk>ZU;b8U(1Vp)ITxq}9h z(}@D@Sh9A>4pdh@cM@5ukDtgQv1be?E1W2m9mIy%9s%X&A2R7bm&5z& z2v3G0&Mmy@ir2|4f>(J{0yuW!j>$D&xG_<07`_b4vqMHzkQ%+BCa1@h8>A~6BFA*` z|H4ZQOCntv(A0_23z~7o0?dOh+UHqG<~K3R>PLGN8^b_e~_}OdL z8&z$p&#Vj1sU4Y^ATg<&v3#nTf`YQt_b6fN`8E5y`C^af*#OK+L3V++%6kR5t?%K$ z2gJ09lMK!DY$NMuFZuqPss)pYnuF0G_m7_}yhWM&y)5>*-(8YhT$|{EExj1uiaPh3 zM{Ff8M!%NaRkRX1Q{2=U8`-Ehy93|zwF3<@>8tQk(D;VB!UCS+o31h<3Rer7aQ z+T;kDu^#kPb1z!c0y7b;^0#KKKfTSw!YtC5;RP#ZR*fzlr)Wh}8q+jD_8PaHH8(nj z%96nmu(Zg`%-CsT_Lu0m`reg-BpKco=)KJP9}eGC69d`r+E(zbnmAUrs#q`pVMm#T zAQN&azT}FvJDqOq0Hjc6Lb;0DARjsh!bv1(X-`w=f#WmP%dHYB5qqFhgMKJ<6%F_> ztE3+)S#%IaxuYn#1@h;NRqGighORcbntY78#mEA5R5U$6mz4{$JZ^?LduHX3jVs!@ z)}H5!$f|z6e2`3+H;bnVN9fz+Moc$+$sX<|QazaVLI+gcXVJ?;zDv#KgflfPzCSVF z=BtSzV}vD`4M&Z8YzQe$6P1)w9tK14z^u`|bJe@%u4OfHKMa$D)qP?1lV7keX|x7d zVX31}(1LBxs>7ZtSJ)iCd!Jj)4qaR?qukqe8*KAO`y|d~^Sah`yURsI0yf4$%3@Az zmkc6)B^&YjdsyfVi3Sl{s=XaYg1B2ePCtdUUMHa_qQvk{`-cWVjfEJ@8hk*6 zAbZw15RY67Lvh8qy~>`pi@F|2l(M;LOnxZ=(r=@$0&V#_KI zrk*v+1k^DX#jd_Zey)LFKMwYqr!|u({5m~*-getd6xYcZgB}gg!Oh$RBuh#pY}*sz zK0Om0Fd?7-{J17!!ekTc08j7gNx%|y`wwT2DP5rDGV$cT^{%%gvaI6Gtc3sOF!fbM z$6U1o4Ims~&|emlYBqn=Vi=o17Qr8DiDPx__E^o!k8&dx3^kL>BC@OW;V(~>xm&N& zIKhZnh5IuX0L&5l?Jb(bowC(py+8V7=;ZCp6IB_by{C*|H!KtxXPcaI4ir0LEhKYJ83of3Jn}*d2EA_t+ ztMSGea085jnm$dt$wrMbd*c@rnLnJzfB%EXVyi`eMmkp^SK$J)Nv4_b#4*v&GwTZ0 zvh>4qCTAD@baO$o);@G-|9yHcu8zBHsXqKgih&X1_)OvWSu9^AjXcnJF{b!#n9Z(C z>d7k_F{!SvW|?c&(_|rjnW=19wBP-1Cq+4Lq}$BEK^`x~UtGFioau5tjp4w=b23fV zzn2*?k>Xi@OP+J;Xy50Js=`q-0%Tyczjcyg%PPhP>C+tIgcV!N;Q?a)EmzC$WPB&8 z6P(V5aL|2b0)eH2_V2V@E?>jkWSXx6UmYxX9|*RMxp-y;&u1a??I4}94R!6|25`bW zp&C9_>WwvCty!*w&L?%8x5!cJ_m)}XVZ}J*^mO0w_uDJ^Wf*CyXtwn4_#xS}Zq9r8 z9)l=8)k27g?T7~3JPV73s#iVVCrscaWghXinC~t_VtvomF*|RQc zw+(r;P}h><2#=jGVIwKr8Km=m!LKV1qp|NQ)K|)=(J^5wIO_bSq&A|%1`t9G-Uzbh zOJ7w{ZfPCj@v4DVk}7>I?eLIZwakt&JAfvL1QV%a`z-Nc(hwuvppbUs!kL8dH5U=8 z8bedpTo}NL*{R>-X^Nv~?&R+5Km1I+WYAe0dh&Hg4DQtd0aibD)&d_+pn1 z(}Sl97xFKLqXkn;s)T;orGwK9{!A!szNvn8pz^?7Y43`50TsC05<0E5juIM*SI-g} zHoaGUy?YKyW|rMO?{<~-)HU!L%+uP>A4xLSKiyvMf~a_ShIcd8u4 zqd8%5uAZ%&dhd$l4CpYnmcv9I7z1@!I5V2jGGS)3Y=N1#Szzx z;x!ZnUMDaeal51JvVb_sul$4~=Yo?KtFL@g*t#4_0=8w4Q{~fdJyM{jzZ9lYntn&cR9fo#S!6UUYj@kpI(Yun8y>lhvt+?{GUnCW z!tAp44FrF|*f2!~u#J9&!{Sx<)4E@%Ch2{e?5Rw8$@o$je*0S}r_|sY+ESE*qCBqo zQr0);v#y^O{rzLKi#myj(}`dNpKI?258j!{wxc2J^84wGCb(RYAs=j2Hr;444W3{@ zdDdQ&0KmmyFVB^zc1c-tx^RTZlG~lj+RjAHF}O&>n|t@>c0+UN;p z4Kf|)kkpswI&oxHs2tEse2GiN&O6`uOoi=La_*=uSz)nCjjdyhfr&kL=NqG&!f#rz z(6Dz7EiM;E&?J{%<4i&8F*-VoeXa;6LG~J*v&|1m>7(>tvX;{nq)eFD!+OihGt)ki zn>`PCH0_pTPWbSLe!ptsXhfK`1x_wmbb&F8sy(D8QPpl)Q3dPiYILr@-l)qb)MT-p zjmbDB^uTKQ9PpaVy~d-Ok0^7=xeY!k6~1pD#70>Vt8=bK>zh4qEdu~Im^fVsFzGOH z(3f`FSMM6LIeIKFnR7efL5NvYiSZKKf>VW+k{P=`8Z{?mi*R;YFg;|mRjhS9Am#Dkz883TpLBBEUW*si#d{wZLhL+uBwK)}dtmmaHQ|Q69p&*OTsc`#7=9rx_4o3cWm935lq?%zAEJ=nm3<#c z_xBE~EH_P)o+^(y3N`;!?M$|QL5&af$jXvz9D_(Y3kwiy;XJs!(NHsk~G z`y>B6N4UTAKK>sRiqSuHwW~LCp(zgmin_Jk`qsJZRWFRChana_r$rG3T(OAsaW0-L zWjnLTGQDwE5o-M%Hg$9_eG2JK<=&T?C4#IXtRAn0Xz5r93dvS`c2Nb5aA9(Q`s`rz zis);&jR)20g^wgneDAxsGqV)0j`O8Vp7rpe_S5hEM5gT14YrP7t!`%m!^>K3AD`Zq z4|`qqLeh>NmdY$O`++55EO)BB9iD$X!T!Qq_w{$<(Xe7+lJt!zKf))Ug>p+~9yqPH zf=mX^mE3vfrBFmx_G?sAt#qSme+u_wx`6$W2Sl96FFW{Vg@Wg_vXld|_!@e+PwbBb zQ7V1=zI*g*A}rt*ENMMkYfiv@J~huBi|By?g;8ZhVtza083v z$97o?bAI?IN2;$pH)m0`2O z{Io5b&B&?qVUN%?eE6^nkkRS`6PmrHmbs5P-C8ftZ+{;AJkv z0&qC5hA=Lo^{)b1Ui&<(hXA^3cUU{yLUq`N2@!AeeHCihgxE|KG-R#>n*)08*zC)H zW_OmtPB-^s3vsNF9N8h2WOumO&^=I5y8>D=!|SU!M#Q%XE8=7@Y0l?46>EZ!zi z$7E&H8olr+7|;`BGfnYJr_oHj!v+Zd+`yjC9KQ3*0x}i86Mao#U)Qg7S}T#jm~)AJ zxzkiv)nbKh0w9Q2O7v6LVeXPd&K?R?R5G1ey3)|0>rR- zC%8B6-sMIbm#K-Q_N~dST|btny&}@MqBgGkYvzjbpF+5WLGEBGrCbXf!mnXlxf`Hf&+%(!l zKJ$b~&j(xDqVG;|1=itce~XwhSX+1EnId*r|9&yAJ?iAC3%8q zUfekhhf-fgDC9_uzbjL4^K|RdQZ=5WXCQ!X>6?~20RlRJ!|Dj(n-`%wzZ5P>$1c+O z`S}D~tni^)cFH-9^~#+}gW$Svy)Sf15<~Q7A`G_KEEZua4J(KQ3iIP?E+9_o*huuf zOfsa)KTe{Yc6Q|rI>cy-2%k?Txe#eE-oK{Fqv1tY>OYIeG!h5?{CYq9>Dh&#Go&1)`-k8J^Ksa|If7B9H> z=C$pYM+ig^h_>w?Z_-ZgiO8Pg6o8Ci)+3Vs?wa)6t^ryK@?B9byPvJJuCr_9rIw zP0DgTl#?_`j^0G&yHpi;b)h!yQFX|j+4_Ud z6nv+fLYEBhuHvNt`i9mUn71AvpX;P}0S%OZ)(jyiY%au zOOlcT*|Z-@Cg9w1Ab4;dDfX+l8mVXQffzyB+7-nmb(-UT(sBM)m(yoknpg(iC`nG4t=bp<(q4ST> z(fSh!T@bES^0#0L5z>(CUT_(ApL_TT@OwWAOR00J#ic(c!hCAB*(dbv7l&2l4Cq@S|Y|R>?^r4Vxgqt+SDbv8hKf_(F_DNo#^gR ziI4&zApF9PJPcK0RCri&!*Q6-{Eu%CP9K_Tr|v)<3a zd(o$#%w{|eODk;QwG&9hE)vmTgXs3T2V{A4c-~mHFr+kBUo^XURQ1X)J3cCYni1FL z7I-$eh+%qx2j(*NxRdvhnBIzK?U)7*W2CaH5OsDaeOR6JQ>>pDK3E;s0Y%PHw{j}6 zjY@J!v{3b{3BRt0R7Q=$lq}p3yLB8bRXn-7-m7oaPYeuGb$T-Ve>6VFNWKlj2!YcM zpseVJNX1TxxzQ6$9UQ;6p)#H=4m#nd+h=6q_9ExG^>0rY8wB4r z8S%{8K@1EGEHjnq07}S*$A`h>L_vGc!iYtJB&zMk_IVJoksl=w9xg1sCJMAAV_Jbx z8G3fWp9Gr{d|75_c;&}u#A#djv7vk?m{F!9m8Au*Bh}dDBUi6<%bALeibng6N9aTC z@Ai!hO3lVHA$*mw`C`H`m}vdA$^=mldZhvcsq zW8y|RR^XR!D38?aVq@{>8}ZQgJPrE8{XVBhc_j}4k?MT&I)NDviF-g9U<(mF@hw*D z8Lqr`REmd(MKZ4nyKg9N2DN%-j%WKC1?{4Uw6fBM_%Anj)hQzz9hSIwros2 z$0#0z^-Up1o$1sr?{S^gqaQyP-R#={8`V7{Rt%dsnl-a%$!{BAQ5w^ju#fr6&F~C4 z9=5BgGt0(0c=z&D#I3BhoivU-sqp?>B;DvgvV}JiOoOHv)|1rCcmFL39=FOHlG#TV zX}y+5q*mkSd~)v=N)i~!@}Fr)?0A?jid_i;MK;-uN51O`H9yI~Sur_Lt7;94o;5tX zvn7DG1#KR=ns<*3%R9V5f~!aoaH>#RT6(l%mF3a-#0WFFYpvAb(q7-c*BZP2Bf_|C zw^&IgddmJsny}k;f}hFzzqF5nIVR31mZbS*bR;X2f%wO$0+H!9LDI)n^c+1Po52dV z8)QeMWCKTEbZL{qy-r zL7nexhrS!}?=5aN3*I4GI4D065nEbI58M~XJ)ir8LF4t|nP$+VMHjaL4n&#tiVgC! zK+a(b%g`*Sw;@JstKCydw{;zEwihnCbSXowEA_am;=8eB3FkMb!{F5MT&5gW15^rL zGjTPDrss{^IZB#4Mim&evha9)t-5bm{M3PcIooKZg-!%|tMe82luuVf2fHswsmR`2 znVz~CO!9OQo;z!lJKW;no!c2?7l4>vIo7X_PJB#brg|G)dX?XL`?GzxAuxgUK<2!7 z^WNT8MPNZcceaT06X}@Y?30{;AvjU>(V!^FKl6FOYbr%U!EsXgA$dRt6ELF<{C4ZB z;`EO1aB(#S!%LkXM|1vzt^TbGXS7$}a-{st5lQJoj#kHU_ar`wu9UrG*CC&?Xp)Xj z_C03oqNGat@bmm7HG-?Du2!Inif#6&UjGZan_HwC#_lsmyoJ~c)Ri5X>9sUa4hoXHePNV-4z*s$QklXg`YeVZd@ z8lzteN<3;VC&3mX0URN?p_q6{cjMB{EgWz6PA~u3J1sx&i8P6+)E5|t`@u>L#hYf| ztK!VxgnP_8`gt!_H_fa-9UqdhxRS9rtOzo{AjjpH{}@pnIL|N@Xjnk`GMG~lq%?&m z0e%dtO6{EXFKrz+udxv_*-caCAJrWQBZvH zIzC7+4r1OuG7#l7LG6=P$!<9w60sKOb5Z0ZK|byNGm2vYDkJ5*y*(F8dma)?$#It9 zh`hVJVz64nCsVL~`4denXW(X1?`}{!UZT856S$rN439k`O=PsKpYH$nHg^u zYn+Ckv|xACB`-R9+sw*TX#Qvri~2e~uFOW>twL6GlP`xz^{uFZYtmu9=vMa=L{2$7 zl`l|8EXO*w{eV$%<}kxEgf0Hl7{7#bi`~Y@>UEoc7TD)xi6be%9c;;?E` z>@wv&zqrLEu%|fK;DIv6H`Ezng41oZESIgfMeMMJs~>G0hT&W?@nD*e+k;C!%n$7D z_2L2W+R>+E1MGkfKI)9$K>V?t^lK~F!+5O6M@FzOPsmuRqLRZ7zKm_=c_uNs=6@A6 z=1lZyKqtoJCwRu2AV;iB_no|EG2r~!VNHLpcfi-Vlbbvgd#Alf#B;BJ4umm-a;CNV zZq1#a#SOk`yOIarMP45FyzX_7?t4J%epnDMmX%&{J|m=`zwk-Ugvz|AGnDe`!h3%et{pqR;wtdHwBcX0ZZV*hgB85z;A!OzAij8C^!@?(TewiWFrgYIEJ zouK-r_%_Sd;BI)@HnQOe@kpwULdjwGIRwX0m8r@^)Ym5x9Tbk+mG|YjB^R2&ouXe= zmmC$o8CE#_ODBIqZLa_fxHnOl;m=>h1e8z>!QjAc+&r~HCBgCmF`QD-}oHU=8V1t(y=vaO} z8BQ(4*|W%FnAOcJ^jsI~2?_Sx2Y`99HG27eC#<(0zAAH8xpR&d^OT>83J+CA#RTX` z=#*8L@4t8bAY*=pd=`tKjkzCfjHCR;visany9mG~(HQ{Yc4|e)C1gjvjgzi`)k^B) zlDw*voEU~WM!&fOFA`CPn|?B(Ht$h-eRM+_i8I7^tjpH}A?|y#HktOF?_da{2lOJf za~|%yB?Nxsr)8mzR&fh&OpiK)7MGKv1#i*F}ws% zK7LG;(bq-{FKau-2m{}&To=CI`IL1L?J6VaJYe=9<^KEWhaoixqLBCBf?;I4wSwb3 z&(zypea3BGX?ZojR~13!R8FW5Y>rnQ!UTq@52^-^ln#DnUSqd~+CP)h|4K^3$P_6n ztEm;R3kB_-DfU17dMngGT&|wlLqd*HbsEnKqzLjQoJ4L)9|B`4s8$MW)#u^_q+{Af zD#htqDYhG0`ZkMGsPhWBdeSnFXHFtUo0#zz$s*I5^G@nSQwNU-j_05KrIsiv?e^ZWdAYWZzwr@O^tSuJ8jV%G{4n5FRJtV^ZHZs;Cu=I0$JREBRAFx0l(#m6^YI z%Q}pPdlR#A5$7W484sHGoG%U!Z4wsq{`-?3Va?7>htA032+_D{#lU_hB*9XW8h2Q7 zyy>F6{l)Q)(@&0)1B-bfr}a|%%Y}Cb0=8z@UmUfTW)QRL+Dn~^KltFDx$SR{9QM+` zzCSQ*{?RnRY31MXRVjnrudGw*a_S*O(moWG8El7gph_2pZ2?R?YHai7+UXX@yCRD< zrIs=y9-CqFb$$#n?>Td$6ptia*x(a;rv8%2y!!nr_7KsLsSwzKs5YRSTKKKZBjN^c zT`ph9y#Mi@{9P86q{=w(=pm*+?plas&gLz>TC+6yVy9wpuzr`zY?*&V!I4kTDu+ee zsIcC^QB)IRhSmq`ap2cn{EO>+ z>#?fB(u&!!csVS=XM5r8IQ8)3%V1PB&zQrf$|!*vVNQOLqmK|H@0dph&MVMX^3Asy zSEJ>AsU3?4AB}jPTB-$Cjo!*#o86tmM=eDK7EmbCeFVw-KDZvh@UUu<()yxCbC=JY z3>{D;W^_o$M1)|v;s6?Fzx8V+lSbW-3~;%?X&!%WW?<;w^G!5vg>k)F#-E=^mP~1e z5=N5Tag1?H6LJ*6miE@O2`y!!N=S_qK?LCbimYhbjdQJ-YwiJ^puH!*tN+_M?ENpA z(H_!^32kZv9mhoG#+!_)fj@S0Fo2>qoM&~&adS;J@?Mp@4}fDUnhd8BM70>BStD`uH?fDX)gjlQ&?V>GfO zhqw+7$DXR{QFXl=>iSaeR=-TVa)O9C6<1=k;X4b8yFb))| zhkDvMgrZ`VDTI29bSwg=<0?BzG%i_GCBK*gWhjhJxCwmsso^OGs#i35g?}*6D@Zsh`IN_V{tse18`liH2m|bWFCD-A9(pyy(@C z@{Ax{y3Qz8Oqkx?2Pix$BuDvZSfDu1tq(@*zUAbIWm@i~PkDy4P~dXhSQ9>zgz*$; zIjafAa+$FU-V7SJr5H1ABzkH?HFaqxny7d5r8gTkT$vhmrlO%o!lQ`;Fh~Ea=&#K! zyH)=?2!nxzlal$g?kh03W|5%^LAZ&SPs>QI9-*3RlNeP-qv^9ThOqa4(AKoci+}x3cfeliO_HAO(LS>iB_W4pDNMyunu^@gB87c+S`rU90kjnL-%` zC!f&1^(Lh3Pq3XSiI!*N`n+I;0J%8C;{}3w6kMuFTpT+hyS=Dc+AoH)ttG5}pWWE^ z#xSv*v_L+9?VZ2VM(3X)XN|u)-^%{+eT${cx$Ii~#gE_k^PKH~!a-qfS1B>qh%ucJK5ofv5G9K@6X#Bn@JSTj3L^GFfhIOH3=V5=eU53RR#Y^7(RntwQI_pQ z!;olw9G}@cmXN8UA*T9-7?ra0Zyo5LcbFs zSM@cnl+M+T;JSmTvI{%H z*97rFhuQ*^Bi|bjJ~q#BxD429(5z$&x5NyONj?9X^P{*Ru7v6U{6KOl$STI`q~w+? zk@RZbGa|9#R9B4`cJY;|MV1Hat)<+EHh<^Mur;hf`;05d`o5qIc9QO4s@CG9iuyBjHJP*lIk zn5K+Wy%yFi!lD&S4sc&lo1Yaxkoiyi>#jE1ZpQC)ex}Y%)uD2pxUCb(%URJd7N0(d zz9rh#cEp#$-;!MSOXE=|J#SSt)@(eU5O=%ME0J|qjhZCLrsWMC1*fR`H2V?B(kGXe zx6Q=nAdfEwl#u5@hM8@U{^4NpYo46&2wXYV#tJ9YY7A%8Zwi{&-y3G71+h9l?Q!s` zyFhgrDcRkWbpZw3{Jk;cY_3dzq6%&#rc$y*#K5;nO`x3?3{FgbhM{TtG&`$&(cdG}6W!Ou)& zLc-hU;n2EZjST6_y)FQlJQ#@R2Xy5V5_GWTe7j%OSaVa1j+<-vhGEC!mx~b*=~YT48tK&S z7e!C)MEl}*8@|n*Vz*pan?_8v1G6LSQ6Z$GN+YUujGL8suWILkFUL4HGkf15&Cb3W17yC z7l^0M0Yy)qZS%AgZ!y#}Z*Iq{hjZ6+ZlX3?#dT8A?Xqnx@VfJ8h6BnSp~~TDDbhQQ z=Q8lS?$*lrvRWWTSu*@vxcHHUAT;zmaEkB?z8At(6R6LL7sBs0MTuE4_?7dRl&M$A zLiFf9eG1DflP~_QtRtMCdnhx^E7DoVx0M>H6iwJ*dM_E(h%etUlX-^R)<>5nD^;M_ z&Baf2vvA7J66vDWnvLjIH2Be6rl-pT+!eZ z4*Cgq9sY{bSNeIeQD?|1)lE$gaP91g?QUZ5_fWpuPRqq8E<{R1_1UXNoe$baB#lEbc^v;7jx{Db@@5*sg_^^9I z`a*D5Pw!zSK1~Dx_)I||A5MQZ(TwneinWVXK$B%oQ@?n-T#nL91evg1-SWtV#h6UhVZckh=g4_@Jn>_0%w6O?CFtJ}Aq*@v1NAYS3%I+TXfoSb{@Mlbf(U@JOvu=)`Ym zWy||)(mOYN$W4Y_WT)k=$JLp$&%KbMwl~%CA5$vpPwOn^`fp6a7s9|oD%y|IQaBP! z?r*8Ne6Q-gscsFp^fO(Vg^u2DKj_ICVvzfg2e6BPQkfwM|!?mEcng zIqAMXetWQT2U*p7H`z3JS&0_MWtFx)FZJE(LqxC4ZoKbP4L@PP{fEu>pE$JpHKo#f zId8E$2qN0b0H329Ihac#(m`he=BM%t>%lTbw9`7ADjsu>$w56w*e*&1iB!q+Zr{7m zTF7w7WZa%R5+a?LxotQ(!)PC?RxX*7s*>W~!qqOouB_;|o#bBsr3biAZCjvUx>L)s z0hI$N(><=y}YBH1DprJ3XxG znD82>Qf1pmop*Cbff=j89#*(>!+IbfIvjMLFj{J7KLZl?1G6hTfGxG<%F)Ika4YD` zriaDh=(1PVIflk&hWbDv+a zsD1fYtZzc*nZxaqp%$e!wtdd)wRe%t@TSbA z3n1GTD+_*>k|l@{(O%nnGhkGwVZw%cQDkG$sH>8eO%a5pc2)*N$|3C82KE=qxHK`hN?$@7c{Qm8lK z{P%5(*7LIwsrLxqTrP|pxq7BCdvouo>|U`2v?7loW=xG}gXxEs3M+#d1zcFN_;$~; zl7CVg3}#~6d*T$mexd9eN^jmdE;Bc_V5^Yja<;barl&oPI7DVbrWf;d~|NWWUym0B}? zCsRSa+|?;Xo@5RGrm3hCNxB>C44m=5Pxi`PVEU$TUs7Xl)e**`A z8QG%p=XwX9dZupnv;_T>`|Vx#A7a#<2smuwAa4Mod$))bFi3sew_+E|*RnNJgu0$I z_RLIupQ?iVRLv554y>5p`KZ#DiUw764|W`>NN@cf4w$22q>dw=py9BUmzZ*l%7>mn zrpbA96#`ZlOmTf4-s$z^LK8_AYJ%JGRu`z@o3VwdXjvRo4#euKGT(jr$LMa_H_}S5 zh)Q)*%(}K}JR@yC^KEVs(p3{B=~t)lk^&spSkq~2P}`o^X0CgHnj?}kg*NCE>?I%~ z=7Zg`70y#XxZApf(ZVZW2%v=;5rRYp+G`x%)LywCA}cf`@j8NNB`G>y%*H=h$H9dz zEIU+xqlV;w;ZE;cBuwW zUR+cZP;Cc5=Wc#5tHkXB@)(<#MVIPweJ?&){o&B(i_h2a#?K#b5-ZC|zjz#wz7gG?z zmp166`D4yr$e8Gx3pjO}4D#Ht!s}!pyfEJNj{8G~9x0Laz>|ehUYxw6Z2_dW3stYf z)!U3Mv_M*5#LRVk+z?Vp@GZTfg#;QdN0DV(ca`%<8hh$I@_Fm>)brh@E3f9H)MPVq zjhn<&4Bvxn(YbXA?pHUkcnZ-{Kkp)7UPsVPaO*F{2#jQ1g3<$j(l^hU#sX8FWiaAf zrWaVyL8lZMz;p)(*ek_(g$c0ae6d*J+&x)Cq-EF9I;T$yJRXaFL4C94bGCgXIv{%o zQX{-n%rHe#R44fMPkb`-GqmRz!7fUX1~bxleoun5V;Le55qJj*;2# zuACR!=KV1wxsPgpx~KG*_c z$uih*M1hV4$08GPryq91dc6I`#*xFOCO%APXFqkKWhf}5|F0%gR1cE?I%*DF2DD2~ z7O>}0DVCeP!)!O%gqJM9yR=+UdKXPi0-Go?tvR zxzqBe?_!^mQa+Lww=hM1;G?-e9-T;kIjU3p6{E`CUTre?5vA0iralT8zNOuK`HFeF z9SoU!MI}2bva{Xrc%@$Gq!x9EF~Pq7r^kn8WDd*_{PFyveI$?!b#T}TLN%-s>&)$c zPsgXLLo?Yn4LZ94`_j5w%cPQY5%?Xw6x%@pfe8@#j8_43PqJE15Ijb+!D!UyZi7`s z&Xi9DRQ5&$ZIfQu-$?zM7W9R%{>rV?C1^iRDmngnSCA-XFMx`fG{%Eps4~4HFvnk!qJ~5o1Abt)jQbWqA|Qq5CJ+H z#_u$3p%TpWB3YxJA?%x1^LJvSZ94z7TuXR>7Zz^*5Fzg+?%fUDhgdn-e>$;x-&wod z=gB^ce%p~&5Pah8OGnVP8@TJw!NKwTu7?(J7??PL_|6iOv)}jFA2#1P?pbxMYpv`2 zor^ByOTD3?VT{e>p%=(G5JgbH@oY_$xDIE1;Uh0)$5rTs$`5!4Re6`;FtfX59tc7& z3Rlj+AI8HLmT2+EZKJNLdCo%d^8)-}%6*y6M56}$QMmg|6j_$#YnArfx}zu?hKR-{ z>KBuO#e58%HN8RSdRco&DwRG98X=Q<-HdXeLTLQ&a>)H9i~Fb;x0|0ZoC#MVM~ezu zS6$A;NvX<9zbHDK={KO#PX{DorW{pAC&Q3i*Pm1Sr;Aws?@Y8Zk&z{KLg2_MhWD^A zppLal&S2=<6LsG$2x3K)P=Of(N;T4eR=AX5O)NCyi-lePerX>0v-IO|B>IfQdfP|T zy>rknR62y1ojczE{{zoP=)L?GqElO0eRRZY#h@RVUnHZ>I@1}y{PI>gUnYjlfGc9U z>L2m`}1Nx|+r3VjpHS?A>zio_9wRg%BlkyvqhbY=;2z6TR(oFj;# zTfF<3d(E#LAq?K-+VG#;=Ud*N4?T}(m)gQ}=RNSddJ|8c(5^34 zVSc7Vjj*h=6wy8yPocb`vHG}sX!H4)XX1!H+gd(BG%BS7{^Y%=Oce{D#2=4-b?fT| za@}&Wu)us&Ke6n}9{b_-p31ZrL9W@yRkkPZFx>$;fMe6vy)4n@P}h~V?~bcwotFuv z?}nYLPPATif5V{*uoQJ$$!e^j^l1we=#A-Jahl`h`TzSFlM$uV-Kwj;8QocVvnlL- zz-B`Z-K~I1#_ zEqYCXn4zWk_o>`{zww$rY3g=~%=_{C=)arhRM1D}%E%Q{+ipo?)y6}?>d!UMBQ{s`K~?|jJreL7lT6Wb9y(a!owaFWRpX^ zeQHG4ibUJLpMWOI!R&uLv75j!x1~nt#C{;ytO{`1#C$rOXPqa>kINM zQQ~OW#o~tXet^aF?*GjFHZYeSHJFm!qak4$VeY-X3@2bCaU=6 zUiOx!nb2uzd+(eLO`xHXzeZgkPM^erUtq#{a9=U17eTyURnD>f3QLnt_%K7wk^oQr#__A5c?ieY~WE| z%^sR?Q+kp+a2oFPov-IGe!SUxR-ZoZfJ7QxL{dAY-OUCLE#K8u@aQG$s^Dk#CWzh(hWb8|M_)%@;T&T zimo~*m@|?jEJJrdCPc1dVJs8+`uL~}MFVws&q&a>2iMh$v6q}XT+6_tp?N=5blVYW z6L9(An6iAgO#;2ig{~H?b~uyPO|BRK6In%D2GMf-#G_ z8U`<6jl3Pr;BhZNm-Q>%c%FxzjiaNgA#R1}94#^jrO_id7o2g#1Ti!08pq-(bvTw+ zM)l$mbSA^*1?X})Fn@I=>PXoP_Z|P0j)D8>wn+7-a+fA=ZqfNN$_mu!Ox{`YGfUsD z_Fh^uB3MEYYi|c7Zw$@4M*Y1|(J?aVBprQ$y$fjD2S3W5-If zR$uqF!i2_IAlS6stN?v3ez-y~cCcQZcWzE5k6VU`C1)Ph9M~5LB3=%WgyeZ$eV1Xw z0pR=*Hx}||eE?I|wfgepDqd)`ba_e0>21CA@*i~O3&9mK$fIzG2$KSKFV&=tci6+U zwe1{<*#N>1sfgWlW?{T!5(R6+f>I*YXo1Vp4<>zcPHpSc{44z`mUn>|OCEjntBBDn zj3uur-pU@|GfkP!o3EyNi{>X=+{+2@wlmkt&EWB$I1FCL7)K($EB^Z3C**pGwda{T zTBbe3+d%N}(}!99Ui$7~kBFgn^Lce7TuVNE1k5d%X}bp%+};JQclSR50QNTkh-)0v zN{M_f9}}jHDG|9iY+}akJqJb5im>Tqq0Am4HM&DG`PBfuHm@KXZqE)R56Opo2r*7P z#KD|Tib~~vWMs7fpw`8DkfZC1D*yFd4lb##Fq}=Np@;iOJ8d#PT%E62xMZ@KcubK@ z8Mgye3N%rmoY!zp%NpB#K|he>(9f%mGbB)*qJqL0(Fn$c6ATdCe---@ZDh&<_(j;`mGEZYf(oCdd&f=zSH(LJ*-j_&}a) zA}XB%WJ$FU9STtNB=SplA7}wRxY>CDCElYD)L9;5tqts334y3H6X#YhF@)CbhN2EN zKWYky{3zlb{*cdkBMx^C)HGI~i(dQ`dZu@Qnj&Fxe>~pCB8zV+gi!=){h$Vg#0yyG z6XkzorR(Pgx%}|3nd(jddia@bsmyfSlF(@=xZ$be^IGd`gf!m%;a)`}TtdIPn%O=v zHrlv}a&m{a38a-&l=34ilEjikl`}G}99wb?b%k?`gon!frNkI6tKS>m1Id<5edfQF zS!(*29Ja(=X7W8vpqDj9?Tx9W1#e_o(3>ZVomnK3M7NrQQTH||zY9(;c730r072^W zJ83THSafZ!tHL8ufv%kj>W?Cl6|*kq*}1`7x_Pn>k)a+x2%sYDnpd_4zDr<(BG~nZi~kXD5jwduBtob#;M! zGgxY@k;(F^6OA@+@)I~n>n2;$zbXl_;aXDx`baD}rlK{DP?UXl6p?N;knVXs%f^82 zcixP+xz1IuM-pXLKfKx14t0#j6Ln6rWS`@{Afzo$c+IBfMVFE$v)HWBH=&(L=USkQ z8Hcr_k=ErQEwa&XI!~v+RXwy6zLp)wN4xvNeIH3cCXXfW{!2So{J+a15H6Ngzx9Ak z)VER@XxBOggtY%x_5)5LLu$7wpU>8WfGQN1*y}R}-8ZXM)Ww#BCvBFqm2Z_7Ee*E~ zCbSw-px?1+4N4N<)`26}RtujH?jHDdBsJo_OQyMBxSg4FUN_ubE2_Q2Wz=zDF}Dc!TeFh4lCWaQm#L=qka?58{Iy zC?JZ|g_?9a59|RbqC(S!FPdB1kDLwnHV>oKwKIoOnG3nAygnOoFs3Fo-u^6S@}gk{ zy&bsBJ(V5FeYWF_E;+p6h181B#bh%=us~KXrWw~%WLim~j51fvL33!tfHw0P_yMPP zT#o7@J95nRzBB1EMn~qy=Ai2ZqX$&Ytg_#Z^_C2A_=bywJRYdAK>eVlR9S5kVH&?NUc>^vMbJr^+4>a>=TUd0yf~^OkFUmqm=SBG* z-h!bdBT7P5YPb(uMy@01-uD0G3)m%4mwC4L=e^!xz2}amaKhFNI1YYYCTRNciptT z4Bc`#jMqgalDQvm3QQ60gI{@$BI~t(kGDI1Yu?t|irPyQ>9(t~)tX17N=#6-#<$N> zQ8ru{3XRg!?b}-&3FEkx>b{-21N6;DP0Z{pZ|NWI1Vu}?0Wu)c_MP}fSBpT@;GjAnbCdP_Pr=8qF zekEvJSxo1mVl8UB^L#zwEurnpm`Q$1ZooNyKF-@F4pa&_U4NIFZP2i-tvTdrK?UH!m}oW&Wmku~qO?<< z#YFGfJ1biRU)O%pd`OThGQIK0mL7t>!;lB5I3LJzZj|O5?XrGhDqv!I^xO=3HXQEK zSakmwjWB-?_M7{F-LoN@clipWEs3D5Wt>Z`sic7Dtox;M9C^G@NtsMeKLL_DwO)(( z?+Z@YJT)_PwB5B1u$5nsf~Cm%8rh3LqGBLs6;1!&F>71{$eX_f^6XDd9<>{g&#k#l zgE&64tVMWs)ar zH^m0}8I_pG0s=^hWX13ZR_0VP8yOGApq?pEcF0l&1)c_}J67vU6vkqxI}>Cj$p~8l13!uVyu-` znR;H#c7*M58wwHacU3COr1aHByVH3tU_b~yziV)L2;%K{>4ZuB!PSB=%-)g?)c?!j zMZ+D=71!9olLdtMQKuu(4!CJE7&A17iwAyd?iL%sWu%#yoQkQYE2|zq>+ZP>eH`$l z;jw&*zMFwJ`iUk}!|PB`BMR}-aTK9%Cq)6x()MR9MS^-EP8U=pDuXFAAg`}XIB%~< z^o-cm!TkJ2PAg+Se|54pXg0nFpuwe8A+R19f1B>YdI{|Oqs$}^sG)SA zkJjI^RE?YA_j{S1n)T+H z#;ty$dBI&rV<4aHC{L?Tq^=hxHBfp6u514mW>x35FRA5Ai zLG(K}e^D_&rDjb6c8fs(3hm`v?0qjkOcc8OX~;>$S?YCn#II}5-VoFWrMtMRytr@~ z7E92Fhex8lpNO(9eNuNGsjA93!*&eN1&4Vy$Rjga%c*_gk4w|)v_b`UW5pqkYk0!{ z#SV*M;B?7_RMhK~ElyTw?`^3@{EgUtR=}yDT^*}j#9nZ8qu2EbeA6}f-TAyd8SD5h zm1E@%)$sZJ&~{ovRBXXYGPj`=(LOJVik)V^t3leS*W%xSLbC0<`hcc@@!{;WvbxI3 zQTuV7Ivb-hM<&rC#B&>ubwNnZqfb0+jKwY6SX%}uWlFG3IyD#i=g@;q1; zXFnXSx4Q==&l4xnzEA|oicwKk|L_28x}4Ah16Awkee`FozgT7?kbiZ8^j6;%s5Z`l z%w|R?JQ|BMLL{nb@#8)Ypt(_Za=IAf1hw(^CT}NPRDj~CmUO4Je&qg*e!!8IYN_sQ zdq31&3c`{U^rvp@*T+AlRhgmaEA*Q1h?Sp++e%L>ZDDiHo{kFrFDEgs;0l9xh}@Cy z_QKm5C)MwfqceRB;I+)M4!ur|6t)u{mTY^)|Lq$Icw3yCFNXrdF@TF&5#E{B< z#Il1gsROPr+U3V%{b#evP|g>*zj&-@m^FNh-}Oqx`&oT7$&Q+_7%0E?_FeU+1Od(n z8&kgI5TYy*jO%xYeT7d%Aui~#0GRRh82b{Vxn{vmt~={s>*i1t2^CSH#l}@m zkYQWk6-%+8+8cZZ$dkQx!MPj{mLQt0N21Lu-9)f(ztuMqD+2^)wfX3XVCA{TlpzmS zy?xR4X!PLIlbZR9v%J|LE-d;WXjqg5u40sIxeN^vr$xP{epy{ZD7eszYu_oy=&s^? zb?Hu~ZfsVl*U^3%f8Pk>Q?PrS-DpjU%-Pvlr@@>!#V;x1(VCav9kn#6RwwTi0n+46 zD`ff`MmPrvrr~8(Yq1D6|AH)S#d(k+uhYiUx5jMh^Xb`r-|JjAh?)>btr&`d@vmvv zq7rq?7G8GSe-hihNc~ma3N=~ml|c9}g0bKg593fc)m7o&3tG>) z$erW&biJ0WtcvM3^Ys3DYvVR~=q@6eJ3L5tq94DT(BxI{ABCiEEia3^zrATgtQ^5a z*Ng47K9DDPS+ai?c3J+ZM&(U7belnS@$8s(Z2@kMz7I$CN0himg6~U0oY0HJAPmyQ zwyWUnGcv&4b?`(H8pkpg_4D7dm2}@Bz z*B+uZ^RAyjHv3m&3OHh68XWh}iR!@t1guUBdzv9Q%gk(Pc@3pwZ^9$kOuS6nUcNO_nVesV9BN z0gVH}F=A$BDmiOhlJ5=v6OZ#&<_;^pT4`Umj8RF33taar3zNGvR3{=<;hyn-l+B;D8Q@vS(%4cH}(9vy{^3KY6sR>x8yH;L!TuIAF*T=ZerPiBQB~OJGyjLFKPd- zb6VGHJP7(EALmp=v%@Wv3gOH^lQgjjfh}LXX6WR{HEw>OK)tKTVmha0t7+`(PNq!X zE#LO|;E=dGL=vy+`{`YL0R1%)$?#r|(1S(f>>+3^NWFm;1j6K``g{f=sSCp-C7k@0 z^*JPxCSJfKXCh&WV;fZTIV)0fblS|V*cio8Sy|~=Q79GzyFO}#zgFig28N_i%82vN zPrCbs7>Stb78};ydh9Wj$y83&d0b=9zA)m|Zk;sm>0+%JzE21}ej3e~4BRofsLI;0 z#=I>=8#caD2L#o>)UsLIIdq3Uksjs2NuxIyl;KfAf6waot*F49tdz+7=BmD7{U&lB zLw@yF!%i~|%vUrkzRUty8UpR)Jb%imvm&oME`2Cz-!_I6%p{33xL%nrVn94vF|a_s z_rA&z{Uo8LvXRA(i3&@JO0DcLC1W`n5WreWCv-|CGTe@K*#;eDC zy?<(}W_mx_FVZDy2{A z{`d@ic7#q}b-7#237a=ZcRNiZOEy;+38?%Ku=-ohyjpBvybox86vt@0)vA=k3Bw4n zs09z}2v(ZL@RjQVT0%f^`y^{gOIGTSnz#t4V+&Nph}RiW*PWLOPKALSqxh;t$(AJc z^!60?%lj7rI$pD;zTCw=@D+NciHyEr5mA0(Isa|9^!u&$joXKfuFHd=41otV_6HIdIVg!1g_A*k zy61DnhJad~O)-?>1zLUKIx*^G^^?1x@daEt#@6dMOhot#?Sa}4*mY7B)lxaOwug_c z#OtcZUifX4i_1Y1l`xyQMJ@V4<57h1r;ZTtVs2rRzRk&DL{33)K>Xk7x6i`(t`x?d z!y!dtl&^o8dFNG8m{2LOQ?e+=GNyzwa6V2=(4gK$BtDDhvc2q?;r~C|P&4uWwGFxH zj@?)K98$#N5(N>Fbu_Q?c|81B-Kn^q;#Jg-g?)z#n3!7H#v5Ls*gU;_wNzNYQfrq) z=`kFFuFu1RbI;Slo4rKNmLfpVsra z`Ba!xDU(Qx96NqlRF}9BL0PBEoRX^eKuL8d%CX{s3Wk!Qt88M83%Y>f_xU=lg6t<^kKL#3eoU3#>juHvFW27w)>972*pCZR@$BtDTE{O zYN1J>u|}6G@y!gV;FFCwk;TxL&H>tffDmAj+K**bi=QbcQGXPpYE6s*xEXNia8)Lw zKE|xgb~ZgGk$-mK?Lxb$xUaZxu&Y>Rz;hG%pWD?+)1MlLmqiMJzWGmZAcsgFA<*@F z)!{}}y;fafT5NhOz)8lEQE;c%u`fw(HIISa=h^wXntCU`1fF2KN$k@DSwbi(b5>Q3 z5wVFr)O}l}aI}ioMZ~>K#O>go$&jYkadPOkS{rzkyIdCdTHiD3c{+!+^47pKXq3#S z;=lxN=N2A}0~Hb}F=YcBjJ%LLdAq0q;xH~52+{3MG@4!d%%R_TeYIn6|JUIMF^uDP z@H=*p%Tvg{I|sxQ)v{XCRCo3I*{3N~{T|CK$ovDl>2o{_83@nA-_=h^Rs{h~Z5x_J zBJ7-Nz;V3 zuyjgSYM;DP>Ymgmzq(ui(`%S&x&Q%o$gDQ;Ok__TM#tMZasnGa`*T(v{A0KeYGk4{ zqk)n%AS^hx>%?|{^JSl>O5bR4)s?d0j|T$}-+uj}mLNtimDb>IY;|snqrHBANdiS# zEV&+hP>GV~9JvHW_UKZ?uR7{~!ll}LgU@EvFSl@_0nJrj0`f@3^?B8#kwc+oNY-n2 za2S7mqN@6SClcZ7W?(q)3)BlrSDRLm@K=u0<3f40nhwY*iKCVFg+)M5U-FUf==_6Q zaN&)A+-}Kp-c8$`5z)mh1>(KNdg-0a-_Zf1Fg^uuuH#L~gFh<5tJkzzjjcRMox{j) zRHWz45{xEqqvd;ac0n{VZFDr#o>RF^UVTENk_1|@Jg|oS9|8vrxAmsIPQ)g~MJ`H)f}HRXdRaj_(o`f5$ym%R=m@0%7QJ z-u3z8vU_EnLtpNP7MY^b9}zCZ^EjJ!tft&=bovX;PVg~5wK(qBAFNu~TGsmGRcZ7` zoUs)IHK!Q0nR2NOF$;V#v$!8K_I#*KniSgfSQtZclGEt6|0m{GV}{VMGfE7<89ap` z0_V=L$9j}b9y9J!xwY!EqIIh~3?jZ&yHf9ks}EO4qs6WL*j@gIObegH4qx=5v0m<& zR7d+df?gl#_j0(rGQ(IK&0Qk%ldBEI8IRHsqxqF!obcL+Jtkm835~_1_P`f!-013K z#u@-uy8N#R&-Mc#U&N1kVVKxm^fj0RY*Qyv9n;YZEmsm^oIRee6on|{rdcXMS=E(1 z2xZwE$gCa!R%`8MzxOZF)(4Li-rVMY-jt^X{*9O`x2(G_OA7w zKUJffk*f{q==c8hX9nt1JSMTypKq*do}^x|^6v_@JK^WYE=mwk zT@UsTc7}Yzcx!}d0-{zDpgDuWLSFS zR{0j4sd$+5Q{EV9iY*Dc{S1(vOW1SK3M_I_ve@B-)Pol!=Z6^oB$l7a7Gz&!t_{^g z2xWVjgzgqMa{(nRJHPVulQ4t%j4r}+I@sm}EGm_EeISpBzSd;DVIB7p($g*#F z!Dj&j2jDdKH6kKe9+w%kbUIwkz~Alk6YR5ik1(Z$v;K<4C z8!F!TNe(FiWd|l5J+r1JFexb>W*C5qsbYfQ`2Y6p64U2wGoB*+HAK7w7=zw7rccf~ z0n0!IOlC6GsnC>d&?|YSM@-SUida6F)!?6T=zqCd9dX~4hC(LO-2MAqlioKxz54Di zNR(p;jF@_HYnvUk<4M5@j)^eA8-b4?;%mb}`#fD`CoDG3`rBHxPSFQ=O0B+DC)U5>&E zA(A7(W5oE+Yw)Q+L;u)q^0h`q^$ZVWSjfUqkTR^q^sS!C{Nz|UP9V^R90+M_$8_FQ zsNpuH>PyV8BC7udJK&pB#K3~)?61FVZC7pL7^g(T`g~yI=4j=S`hhwf5Z`fTL+?mT zUn-NT>ZPh!2QJ1lUoeK4L(&9)uWUE)&Q6#*0h@h#zzZp-`}@gD)62HS#uce?#!ghl zz>SmVg=n{)qm+|cCR%3he#CxMvo{8otRfjnIBQByZhMtEQ9k0^s*;G_p++~A)sU}e zOCbZHC;#V1zh$sqMoxYfyURWDzQq9ry<8<;BYk5Iy2?H|WxMi1rd3|mb-l21Nsogf za58A!))>?C+ejhcSp*KyKdy)Q+Y}K-Vb}3knEgmOX08h*Tz7;ZW|%MubMhm#UWi40 zJ7LYt3!hnMb3C(d=3i2FZITr-LzvMoQ)X&kH%*aHeeyC)ulD+^kN=eSfh-AjX7r*} zrdKAJY$d*h81{npx`RA~33uEJ&gp^R`rDVoiO>r4Sseld-3gsX&s~DIZJaJ}ESzwV z$Fwp){>cS$K5{ZSI{pzhv5gkvO zfAJc+A|%xoXJP2!a<>AN5%+#1>ndYGXoNInIPaGM9mh%3oJpW3H~KTPsQUO7WAJO4 zfv--nmCUBJClQfA9x;Dt=sHW}38a?i%eUR+?V=Oh5%T&S+* zyXGzNZMz6`!~!LUpYXQRX@{WjoTUENuZLd&4PBNwtLyWSaS0h9D45N=c-%U|mo43S zwHz<;`dCFfgkGFk&X1eyC?7-L9ooZkl-+_dVyUVixjsa15guqyq&@Dgt}09Rv3C)CIB zECGE-4TdUZs%LBIHK&$+?4)OVi{HD2v{Ymq@}GnHbkZV@yMNLtL# zUbG*Mh{6R9T2C6CGObs#I=Z4#@nXNc{1Ka-G?CNrZXfaT6Crg7NLePQB(V)qKN5&f zrH43*%b}S^ibxqmsUh#g-;k|z6mRqKCLw@BuU4@Vo&y`!sDTWw3=cqtXkJv*-Q1vAG z+sXWtkbsfGt8_yF#BW;4k}zYD2F0q{0#=O5$$8Pai{1)+#sH}Zs>9NdG zKQZtaMrOUtwB4)d{};03HTN(q7G+=opdLH)0Pie-nAdmYf`nt0emsRe(Blzk^XbaGQ+56DD-NUQjgaZJaI&mpekq%G>e5TLCS=Hg+ zNiK6+MAM@qNZM>+=D~#Tgn#*V-e7^S#{=@2+dSaZP9$m1mM(tfwXmr?n-O!o6d=SM0 zyg&9{a%+CfZ2u9Uzx9@zQnt`ktrO|BugJSu+Tp4o2XdY3&h5@Y-DufC2s&MmL|%OW zsPiqt#oXgezq(RFxwV3nT(hQ%v8x>rCq5$$rj0Z4VWA0Wy2z@0?}D_+7F#}TqHvD( zFG1Qu^n4|=_v8-{i|iOppRgd>%A#N~r|uNsWt=QDV71~qs)-E`A9z|GP+(bhQjpmR@D5nh ze!U%d?jarS+9fRM%5w%dqHHIS-Gh!`jgJLA`)9JgVOw0(`?hYZ|5KGNgQTk$SqpaW6h(+4OQ zgi=p&Ri@qgD|eRuT$?JI+K^S2=-UagtVme-U};y@nxAmvm9C8JDZzASuaY2&BcGzU znzDLLCm!7VpjYVU$1}q5&Q2q4WV^6I#*p-cd$)gWu&cySkdoMb=P79<~ zl=Iz&Qdno&w87O^oEHe*DQ#8DNzOSs5LJ=-%c9?w1oY zRtWkcIlv(EWl!jE?-bchsbe>(Rgfzidp)W$IvB2F4 zup8XFIM=~J$f?Mx>TRCnTf_;~IY7*Y`f8vam)=g-;K%P?2?$+;YZ%Yj8dT2x4lS{; zlp-C?C$h28BM{A3QO6 z$d!I~q>tI{@%n0c5|v??GMjtT8Egf-`vI!9>T~$E!F6_&<-YBZ5tkDwTqP{Po9B^YkpAN* zMYWL@m#H}O*+#q8ZGnHJnP?*96GMPYUA;p!$Czxo-dr(!jsu<2C((XJjzunK>{za_@GW_ zi5kmGo801Sa-w3rO*!@ztYv=OD+ND#!9mq>_OWx6qR`@d*Vp^o4UM$JKU$L?6s(>@ zZ+!ZTjBVoVxYO<1-8J#9MFz@mOE_2`yp{9_xYyyyn>=&3{wBN;wb6OgTJk+l4=?iF zh4RC=$Uy9+4UOicrGcTx=F1%zdLMqzTr^f(9XuU&S^fBAXWJ|(08uA!G@aG$_9_yg z>FMiZ4zls}3}IM^da`7FK1_v<@Ozk(LID8&{4gIvixqzr^vhYH7n}8bL8=Z!D#i5^ z3nX|}{h#%B1tR&sny0>rfAgU7x4{#kHzNZ=+*;~}4nZi<{vu0mYJ02xPgo8-#Fp`F znW1t&f6ZyQ#FKWZ%YdT$L8-X%b3amDE#=BOFNUJ5bwhNFjmwAL81~pfd-pbH$WwCK zm}P>`+_&;fc6lniQ>QNtqiKFxEp?d49L#t6^hT9|iFi(JceTgFQM$ZwV$@Q#JwTT~ zw%}rbyjG?7BS>E8#j5Hms667BkTt9->DH@+pnuu<9yYahk~}kRL{@B`-CGe__qF~bNeHD$Id;`0&F^tkDhE$ zAunUX13fkAl3)Ut^oG&KFs@mvy|SSiRK_g^uutBt{=&`vW_Obt zHu>E&yJ%^@u`cEsb9qL`EiX-w61Q*lBduF;@fGDvPW_)JtJddraiQ{(8c;M2t+c^u TI3za?1pKKfX(?99TZI2Vih`Xa literal 0 HcmV?d00001 diff --git a/public/images/events/winter_holidays2024-event-ja.png b/public/images/events/winter_holidays2024-event-ja.png new file mode 100644 index 0000000000000000000000000000000000000000..0a217c81d03d8ecc46a8bc23caa6f47bf995d094 GIT binary patch literal 38333 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

    q&Lai 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

  2. mM0I|+jbh};}Z>Ksq^SedX49lTnt@PpWLa#Fecmq#m_l^%5lPwZrRu3=9nl75NTW0J4(TT@3FzD)l7)rM4( z{vvRN_U6+rdf(7m9R*f^!Z{%(>M?Uu*V2w>;~=^3b0swb(oRn6)~O}y;(c~?$)*1C z)uTj=b_MJ)^~L-~Ktvff9`&hB0YKU(BO4X(0o{j0;ez5+AQ<6zU_Mi>8y3^1+y=t$ z<_Kn)8=i^^idu><)Vk@Tyr^@MupgoGj-vF9*aJj4CRBJQgd)`S~IUKG}a(p z@?Vu%K>~62z(AvTvWTyBxyoZuzvyt?_5LP|B(S;7eEIFe=ibCuB#NyKcJjEEF-}}m zdcMkUOKs)5cMDf;f zi4;a;&-HRTG|H=kEh6`VvBh2cw@YAt<2rM0ORERhTBUlKY(_nI#>Sm%+rciDG`>sh zwoA+;A5m#V!I)pka~uE{0~bnwAJoX>0V;Zq8;GjsE`KwmKQ@ZxDL*q>p4XWzdyZL< zr^SZ0cHJ!$nKRrZ&GWImPMk0*&K}O5HET*yAazkVV{F5z9G6v_3WFGsw!A0>H2RzQz*5+B1D^Ufo*L61gvI+oj^(4W=6qSQs@__4BO2!%vul#|_ zkj$P=ssAa{pGRdV^%ZVQhsvL{OPo6f@wUO90zXH?x`IMrckoT?7y-53-zTxTJ84k^ ziCK;vptGLuhDCjCaf-{JGF2*oUkK=1%ER3OhDb5vqakWsQuO7Bf-B>6-U3`~#G)O) zevDpq}I^U#nLd+s~>Sn_v%3r**k@n^o0)G`_7LZ(bV#Nc1I)A4zOkQ4Sa_ z@MVsZxLE)R=?dhAL5vMiwEhg5aV*5kin?eJZ$7evlj!KY?5DTORTWLWet*|ISgzjO zqAoaz)Uk1eOO%e(cT0b51t|dt1%)+)(F;xMElFYu8RuGhOV}sQKAo>E+&w?d~8PkeH)@w#0|(g&e>}kYuSzX`w)0u0n-_;ftuHl8pB-upKaf5wmmS z{a%PvI!PF5GQ<WeCD7%`Q4dS~ms#`AI;RzI$Y%8Wrcn5B1F0 zvcHB{u@z0XM=;nI5t09S7&yCc8j6||uKw9A43IMUNHIN!`(~#^y{8*MLl@&D+28_t zKJk`-|Mt}k7h&I)aMj(M9+i@px}Vk>2a}x;b=ye60s%1uP~cUH%+A3}+pz!6Xs14z zn@6km;osRv4VP)qJr57I8iWmI`jnQ}1@FAn-Qq#Yho+WrLJzhi?||2Tic|xL)kAS^W?;eNTdenF+Mj@vE5r%V>Eh4rUDWJ>RDEe+SMr<#2Ac=3q+g4ADv z>C~9`J~g;4T@Lm6YkJch`uTf-6qzQ=D@M7{Lej3ciXMmfHVS|whcHg@fFGN9VIUAD zpn8`&SxO^uKmN0jJjdPifLqUcZX6BVvLT^=Uj9ZYA0_l8Sql*AaQVHKGC^=(DskN* ztImE23GsJ7RgCcXlUwC?uL6v8mx7UcJF$l(U__40*N^{xn#9Gk@rPC7@qO-@ZVP*V z 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