This commit is contained in:
NightKev 2025-07-02 10:55:54 +00:00 committed by GitHub
commit 539516c324
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
779 changed files with 6169 additions and 6282 deletions

View File

@ -38,14 +38,13 @@
] ]
}, },
// TODO: Configure and enable import sorting
"assist": { "assist": {
"actions": { "actions": {
"source": { "source": {
"organizeImports": { "organizeImports": {
"level": "off", "level": "on",
"options": { "options": {
"groups": [] "groups": [":ALIAS:", ":NODE:", ":PACKAGE_WITH_PROTOCOL:", ":PACKAGE:", ":PATH:"]
} }
} }
} }

View File

@ -1,14 +1,14 @@
/** /*
* This script creates a test boilerplate file in the appropriate * This script creates a test boilerplate file in the appropriate
* directory based on the type selected. * directory based on the type selected.
* @example pnpm test:create * Usage: `pnpm test:create`
*/ */
import chalk from "chalk";
import inquirer from "inquirer";
import fs from "node:fs"; import fs from "node:fs";
import path from "node:path"; import path from "node:path";
import { fileURLToPath } from "node:url"; import { fileURLToPath } from "node:url";
import chalk from "chalk";
import inquirer from "inquirer";
//#region Constants //#region Constants

View File

@ -1,7 +1,7 @@
import { AbilityId } from "#enums/ability-id"; import { AbilityId } from "#enums/ability-id";
import { MoveId } from "#enums/move-id"; import { MoveId } from "#enums/move-id";
import { SpeciesId } from "#enums/species-id"; import { SpeciesId } from "#enums/species-id";
import GameManager from "#test/testUtils/gameManager"; import { GameManager } from "#test/testUtils/gameManager";
import Phaser from "phaser"; import Phaser from "phaser";
import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest";

View File

@ -1,7 +1,8 @@
import pkg from "crypto-js"; // Usage: node decrypt-save.js <encrypted-file> [save-file]
const { AES, enc } = pkg;
// biome-ignore lint: This is how you import fs from node // biome-ignore lint/performance/noNamespaceImport: This is how you import fs from node
import * as fs from "node:fs"; import * as fs from "node:fs";
import { AES, enc } from "crypto-js";
const SAVE_KEY = "x0i2O7WRiANTqPmZ"; const SAVE_KEY = "x0i2O7WRiANTqPmZ";

View File

@ -1,4 +1,4 @@
import type { UserInfo } from "#app/@types/UserInfo"; import type { UserInfo } from "#types/UserInfo";
export interface AccountInfoResponse extends UserInfo {} export interface AccountInfoResponse extends UserInfo {}

View File

@ -1,4 +1,4 @@
import type { ScoreboardCategory } from "#app/ui/daily-run-scoreboard"; import type { ScoreboardCategory } from "#ui/daily-run-scoreboard";
export interface GetDailyRankingsRequest { export interface GetDailyRankingsRequest {
category: ScoreboardCategory; category: ScoreboardCategory;

View File

@ -1,4 +1,4 @@
import type { SessionSaveData, SystemSaveData } from "#app/system/game-data"; import type { SessionSaveData, SystemSaveData } from "#system/game-data";
export interface UpdateAllSavedataRequest { export interface UpdateAllSavedataRequest {
system: SystemSaveData; system: SystemSaveData;

View File

@ -1,4 +1,4 @@
import type { SystemSaveData } from "#app/system/game-data"; import type { SystemSaveData } from "#system/game-data";
export interface GetSystemSavedataRequest { export interface GetSystemSavedataRequest {
clientSessionId: string; clientSessionId: string;

View File

@ -1,4 +1,4 @@
import type { SessionSaveData } from "#app/system/game-data"; import type { SessionSaveData } from "#system/game-data";
export interface SessionSaveMigrator { export interface SessionSaveMigrator {
version: string; version: string;

View File

@ -1,4 +1,4 @@
import type { SystemSaveData } from "#app/system/game-data"; import type { SystemSaveData } from "#system/game-data";
export interface SystemSaveMigrator { export interface SystemSaveMigrator {
version: string; version: string;

View File

@ -1,13 +1,13 @@
import type Move from "#app/data/moves/move"; import type { AbAttrConstructorMap } from "#abilities/ability";
import type Pokemon from "#app/field/pokemon";
import type { BattleStat } from "#enums/stat"; import type { BattleStat } from "#enums/stat";
import type { AbAttrConstructorMap } from "#app/data/abilities/ability"; import type { Pokemon } from "#field/pokemon";
import type { Move } from "#moves/move";
// intentionally re-export all types from abilities to have this be the centralized place to import ability types // intentionally re-export all types from abilities to have this be the centralized place to import ability types
export type * from "#app/data/abilities/ability"; export type * from "#abilities/ability";
// biome-ignore lint/correctness/noUnusedImports: Used in a tsdoc comment // biome-ignore lint/correctness/noUnusedImports: Used in a tsdoc comment
import type { applyAbAttrs } from "#app/data/abilities/apply-ab-attrs"; import type { applyAbAttrs } from "#abilities/apply-ab-attrs";
export type AbAttrCondition = (pokemon: Pokemon) => boolean; export type AbAttrCondition = (pokemon: Pokemon) => boolean;
export type PokemonAttackCondition = (user: Pokemon | null, target: Pokemon | null, move: Move) => boolean; export type PokemonAttackCondition = (user: Pokemon | null, target: Pokemon | null, move: Move) => boolean;

View File

@ -1,6 +1,6 @@
import type { BattlerIndex } from "#enums/battler-index"; import type { BattlerIndex } from "#enums/battler-index";
import type { DamageResult } from "#app/@types/damage-result";
import type { MoveId } from "#enums/move-id"; import type { MoveId } from "#enums/move-id";
import type { DamageResult } from "#types/damage-result";
export interface AttackMoveResult { export interface AttackMoveResult {
move: MoveId; move: MoveId;

View File

@ -1,7 +1,7 @@
import type { PokemonHeldItemModifierType } from "#app/modifier/modifier-type"; import type { PokemonHeldItemModifier } from "#modifiers/modifier";
import type { PokemonHeldItemModifier } from "#app/modifier/modifier"; import type { PokemonHeldItemModifierType } from "#modifiers/modifier-type";
export default interface HeldModifierConfig { export interface HeldModifierConfig {
modifier: PokemonHeldItemModifierType | PokemonHeldItemModifier; modifier: PokemonHeldItemModifierType | PokemonHeldItemModifier;
stackCount?: number; stackCount?: number;
isTransferable?: boolean; isTransferable?: boolean;

View File

@ -1,8 +1,8 @@
import type { Gender } from "#app/data/gender"; import type { Gender } from "#data/gender";
import type PokemonSpecies from "#app/data/pokemon-species"; import type { PokemonSpecies } from "#data/pokemon-species";
import type { Variant } from "#app/sprites/variant";
import type { PokeballType } from "#enums/pokeball"; import type { PokeballType } from "#enums/pokeball";
import type { SpeciesId } from "#enums/species-id"; import type { SpeciesId } from "#enums/species-id";
import type { Variant } from "#sprites/variant";
/** /**
* Data pertaining to a Pokemon's Illusion. * Data pertaining to a Pokemon's Illusion.

View File

@ -1,14 +1,13 @@
/** // Intentionally re-exports `ModifierConstructorMap` from `modifier.ts`
* Re-exports of all the types defined in the modifier module.
*/ import type { Pokemon } from "#field/pokemon";
import type { ModifierConstructorMap } from "#modifiers/modifier";
import type { ModifierType, WeightedModifierType } from "#modifiers/modifier-type";
import type Pokemon from "#app/field/pokemon";
import type { ModifierConstructorMap } from "#app/modifier/modifier";
import type { ModifierType, WeightedModifierType } from "#app/modifier/modifier-type";
export type ModifierTypeFunc = () => ModifierType; export type ModifierTypeFunc = () => ModifierType;
export type WeightedModifierTypeWeightFunc = (party: Pokemon[], rerollCount?: number) => number; export type WeightedModifierTypeWeightFunc = (party: Pokemon[], rerollCount?: number) => number;
export type { ModifierConstructorMap } from "#app/modifier/modifier"; export type { ModifierConstructorMap } from "#modifiers/modifier";
/** /**
* Map of modifier names to their respective instance types * Map of modifier names to their respective instance types

View File

@ -1,16 +1,16 @@
import type { import type {
AttackMove, AttackMove,
StatusMove,
SelfStatusMove,
ChargingAttackMove, ChargingAttackMove,
ChargingSelfStatusMove, ChargingSelfStatusMove,
MoveAttrConstructorMap,
MoveAttr, MoveAttr,
} from "#app/data/moves/move"; MoveAttrConstructorMap,
SelfStatusMove,
StatusMove,
} from "#moves/move";
export type MoveAttrFilter = (attr: MoveAttr) => boolean; export type MoveAttrFilter = (attr: MoveAttr) => boolean;
export type * from "#app/data/moves/move"; export type * from "#moves/move";
/** /**
* Map of move subclass names to their respective classes. * Map of move subclass names to their respective classes.

View File

@ -1,9 +1,9 @@
import type { EnemyPokemon } from "#app/field/pokemon";
import type { PersistentModifier } from "#app/modifier/modifier";
import type { PartyMemberStrength } from "#enums/party-member-strength"; import type { PartyMemberStrength } from "#enums/party-member-strength";
import type { SpeciesId } from "#enums/species-id"; import type { SpeciesId } from "#enums/species-id";
import type { TrainerConfig } from "../data/trainers/trainer-config"; import type { EnemyPokemon } from "#field/pokemon";
import type { TrainerPartyTemplate } from "../data/trainers/TrainerPartyTemplate"; import type { PersistentModifier } from "#modifiers/modifier";
import type { TrainerPartyTemplate } from "#trainers/TrainerPartyTemplate";
import type { TrainerConfig } from "#trainers/trainer-config";
export type PartyTemplateFunc = () => TrainerPartyTemplate; export type PartyTemplateFunc = () => TrainerPartyTemplate;
export type PartyMemberFunc = (level: number, strength: PartyMemberStrength) => EnemyPokemon; export type PartyMemberFunc = (level: number, strength: PartyMemberStrength) => EnemyPokemon;

View File

@ -3,7 +3,7 @@
*/ */
// biome-ignore lint/correctness/noUnusedImports: Used in a tsdoc comment // biome-ignore lint/correctness/noUnusedImports: Used in a tsdoc comment
import type { AbAttr } from "./ability-types"; import type { AbAttr } from "#types/ability-types";
/** /**
* Exactly matches the type of the argument, preventing adding additional properties. * Exactly matches the type of the argument, preventing adding additional properties.

View File

@ -1,7 +1,7 @@
import { pokerogueApi } from "#app/plugins/api/pokerogue-api"; import { pokerogueApi } from "#api/pokerogue-api";
import type { UserInfo } from "#app/@types/UserInfo"; import { bypassLogin } from "#app/global-vars/bypass-login";
import { bypassLogin } from "./global-vars/bypass-login"; import type { UserInfo } from "#types/UserInfo";
import { randomString } from "#app/utils/common"; import { randomString } from "#utils/common";
export let loggedInUser: UserInfo | null = null; export let loggedInUser: UserInfo | null = null;
// This is a random string that is used to identify the client session - unique per session (tab or window) so that the game will only save on the one that the server is expecting // This is a random string that is used to identify the client session - unique per session (tab or window) so that the game will only save on the one that the server is expecting

View File

@ -1,27 +1,84 @@
import Phaser from "phaser"; import { applyAbAttrs } from "#abilities/apply-ab-attrs";
import UI from "#app/ui/ui"; import type { FixedBattleConfig } from "#app/battle";
import type Pokemon from "#app/field/pokemon"; import { Battle } from "#app/battle";
import { EnemyPokemon, PlayerPokemon } from "#app/field/pokemon";
import type { PokemonSpeciesFilter } from "#app/data/pokemon-species";
import type PokemonSpecies from "#app/data/pokemon-species";
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
import { allSpecies } from "#app/data/data-lists";
import { import {
fixedInt, ANTI_VARIANCE_WEIGHT_MODIFIER,
getIvsFromId, AVERAGE_ENCOUNTERS_PER_RUN_TARGET,
randSeedInt, BASE_MYSTERY_ENCOUNTER_SPAWN_WEIGHT,
getEnumValues, MYSTERY_ENCOUNTER_SPAWN_MAX_WEIGHT,
randomString, } from "#app/constants";
NumberHolder, import type { GameMode } from "#app/game-mode";
shiftCharCodes, import { getGameMode } from "#app/game-mode";
formatMoney, import { timedEventManager } from "#app/global-event-manager";
isNullOrUndefined, import { initGlobalScene } from "#app/global-scene";
BooleanHolder, import { starterColors } from "#app/global-vars/starter-colors";
type Constructor, import { InputsController } from "#app/inputs-controller";
isBetween, import { LoadingScene } from "#app/loading-scene";
} from "#app/utils/common"; import Overrides from "#app/overrides";
import { deepMergeSpriteData } from "#app/utils/data"; import type { Phase } from "#app/phase";
import type { Modifier, ModifierPredicate, TurnHeldItemTransferModifier } from "./modifier/modifier"; import { PhaseManager } from "#app/phase-manager";
import { FieldSpritePipeline } from "#app/pipelines/field-sprite";
import { InvertPostFX } from "#app/pipelines/invert";
import { SpritePipeline } from "#app/pipelines/sprite";
import { SceneBase } from "#app/scene-base";
import { startingWave } from "#app/starting-wave";
import { TimedEventManager } from "#app/timed-event-manager";
import { UiInputs } from "#app/ui-inputs";
import { biomeDepths, getBiomeName } from "#balance/biomes";
import { pokemonPrevolutions } from "#balance/pokemon-evolutions";
import { FRIENDSHIP_GAIN_FROM_BATTLE } from "#balance/starters";
import {
initCommonAnims,
initMoveAnim,
loadCommonAnimAssets,
loadMoveAnimAssets,
populateAnims,
} from "#data/battle-anims";
import { allAbilities, allMoves, allSpecies, modifierTypes } from "#data/data-lists";
import { battleSpecDialogue } from "#data/dialogue";
import type { SpeciesFormChangeTrigger } from "#data/form-change-triggers";
import { SpeciesFormChangeManualTrigger, SpeciesFormChangeTimeOfDayTrigger } from "#data/form-change-triggers";
import { Gender } from "#data/gender";
import type { SpeciesFormChange } from "#data/pokemon-forms";
import { pokemonFormChanges } from "#data/pokemon-forms";
import type { PokemonSpecies, PokemonSpeciesFilter } from "#data/pokemon-species";
import { getTypeRgb } from "#data/type";
import { BattleSpec } from "#enums/battle-spec";
import { BattleStyle } from "#enums/battle-style";
import { BattleType } from "#enums/battle-type";
import { BattlerTagType } from "#enums/battler-tag-type";
import { BiomeId } from "#enums/biome-id";
import { EaseType } from "#enums/ease-type";
import { ExpGainsSpeed } from "#enums/exp-gains-speed";
import type { ExpNotification } from "#enums/exp-notification";
import { FormChangeItem } from "#enums/form-change-item";
import { GameModes } from "#enums/game-modes";
import { ModifierPoolType } from "#enums/modifier-pool-type";
import { MoneyFormat } from "#enums/money-format";
import { MoveId } from "#enums/move-id";
import { MysteryEncounterMode } from "#enums/mystery-encounter-mode";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
import { Nature } from "#enums/nature";
import { PlayerGender } from "#enums/player-gender";
import { PokeballType } from "#enums/pokeball";
import type { PokemonAnimType } from "#enums/pokemon-anim-type";
import { PokemonType } from "#enums/pokemon-type";
import { ShopCursorTarget } from "#enums/shop-cursor-target";
import { SpeciesId } from "#enums/species-id";
import { StatusEffect } from "#enums/status-effect";
import type { TrainerSlot } from "#enums/trainer-slot";
import { TrainerType } from "#enums/trainer-type";
import { TrainerVariant } from "#enums/trainer-variant";
import { UiTheme } from "#enums/ui-theme";
import { NewArenaEvent } from "#events/battle-scene";
import { Arena, ArenaBase } from "#field/arena";
import { DamageNumberHandler } from "#field/damage-number-handler";
import type { Pokemon } from "#field/pokemon";
import { EnemyPokemon, PlayerPokemon } from "#field/pokemon";
import { PokemonSpriteSparkleHandler } from "#field/pokemon-sprite-sparkle-handler";
import { Trainer } from "#field/trainer";
import type { Modifier, ModifierPredicate, TurnHeldItemTransferModifier } from "#modifiers/modifier";
import { import {
ConsumableModifier, ConsumableModifier,
ConsumablePokemonModifier, ConsumablePokemonModifier,
@ -39,22 +96,7 @@ import {
PokemonHpRestoreModifier, PokemonHpRestoreModifier,
PokemonIncrementingStatModifier, PokemonIncrementingStatModifier,
RememberMoveModifier, RememberMoveModifier,
} from "./modifier/modifier"; } from "#modifiers/modifier";
import { PokeballType } from "#enums/pokeball";
import {
initCommonAnims,
initMoveAnim,
loadCommonAnimAssets,
loadMoveAnimAssets,
populateAnims,
} from "#app/data/battle-anims";
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";
import { addTextObject, getTextColor, TextStyle } from "#app/ui/text";
import { allMoves } from "./data/data-lists";
import { MusicPreference } from "#app/system/settings/settings";
import { import {
getDefaultModifierTypeForTier, getDefaultModifierTypeForTier,
getEnemyModifierTypesForWave, getEnemyModifierTypesForWave,
@ -62,106 +104,58 @@ import {
getLuckTextTint, getLuckTextTint,
getPartyLuckValue, getPartyLuckValue,
PokemonHeldItemModifierType, PokemonHeldItemModifierType,
} from "#app/modifier/modifier-type"; } from "#modifiers/modifier-type";
import { getModifierType } from "./utils/modifier-utils"; import { MysteryEncounter } from "#mystery-encounters/mystery-encounter";
import { modifierTypes } from "./data/data-lists"; import { MysteryEncounterSaveData } from "#mystery-encounters/mystery-encounter-save-data";
import { getModifierPoolForType } from "./utils/modifier-utils"; import { allMysteryEncounters, mysteryEncountersByBiome } from "#mystery-encounters/mystery-encounters";
import { ModifierPoolType } from "#enums/modifier-pool-type"; import type { MovePhase } from "#phases/move-phase";
import AbilityBar from "#app/ui/ability-bar"; import { expSpriteKeys } from "#sprites/sprite-keys";
import { applyAbAttrs } from "./data/abilities/apply-ab-attrs"; import { hasExpSprite } from "#sprites/sprite-utils";
import { allAbilities } from "./data/data-lists"; import type { Variant } from "#sprites/variant";
import type { FixedBattleConfig } from "#app/battle"; import { clearVariantData, variantData } from "#sprites/variant";
import Battle from "#app/battle"; import type { Achv } from "#system/achv";
import { BattleType } from "#enums/battle-type"; import { achvs, ModifierAchv, MoneyAchv } from "#system/achv";
import type { GameMode } from "#app/game-mode"; import { GameData } from "#system/game-data";
import { getGameMode } from "#app/game-mode"; import { initGameSpeed } from "#system/game-speed";
import { GameModes } from "#enums/game-modes"; import type { PokemonData } from "#system/pokemon-data";
import FieldSpritePipeline from "#app/pipelines/field-sprite"; import { MusicPreference } from "#system/settings";
import SpritePipeline from "#app/pipelines/sprite"; import type { TrainerData } from "#system/trainer-data";
import PartyExpBar from "#app/ui/party-exp-bar"; import type { Voucher } from "#system/voucher";
import type { TrainerSlot } from "./enums/trainer-slot"; import { vouchers } from "#system/voucher";
import { trainerConfigs } from "#app/data/trainers/trainer-config"; import { trainerConfigs } from "#trainers/trainer-config";
import Trainer from "#app/field/trainer"; import type { HeldModifierConfig } from "#types/held-modifier-config";
import { TrainerVariant } from "#enums/trainer-variant"; import type { Localizable } from "#types/locales";
import type TrainerData from "#app/system/trainer-data"; import { AbilityBar } from "#ui/ability-bar";
import SoundFade from "phaser3-rex-plugins/plugins/soundfade"; import { ArenaFlyout } from "#ui/arena-flyout";
import { pokemonPrevolutions } from "#app/data/balance/pokemon-evolutions"; import { CandyBar } from "#ui/candy-bar";
import PokeballTray from "#app/ui/pokeball-tray"; import { CharSprite } from "#ui/char-sprite";
import InvertPostFX from "#app/pipelines/invert"; import { PartyExpBar } from "#ui/party-exp-bar";
import type { Achv } from "#app/system/achv"; import { PokeballTray } from "#ui/pokeball-tray";
import { achvs, ModifierAchv, MoneyAchv } from "#app/system/achv"; import { PokemonInfoContainer } from "#ui/pokemon-info-container";
import type { Voucher } from "#app/system/voucher"; import { addTextObject, getTextColor, TextStyle } from "#ui/text";
import { vouchers } from "#app/system/voucher"; import { UI } from "#ui/ui";
import { Gender } from "#app/data/gender"; import { addUiThemeOverrides } from "#ui/ui-theme";
import type UIPlugin from "phaser3-rex-plugins/templates/ui/ui-plugin";
import { addUiThemeOverrides } from "#app/ui/ui-theme";
import type PokemonData from "#app/system/pokemon-data";
import { Nature } from "#enums/nature";
import type { SpeciesFormChange } from "#app/data/pokemon-forms";
import type { SpeciesFormChangeTrigger } from "./data/pokemon-forms/form-change-triggers";
import { pokemonFormChanges } from "#app/data/pokemon-forms";
import { SpeciesFormChangeTimeOfDayTrigger } from "./data/pokemon-forms/form-change-triggers";
import { SpeciesFormChangeManualTrigger } from "./data/pokemon-forms/form-change-triggers";
import { FormChangeItem } from "#enums/form-change-item";
import { getTypeRgb } from "#app/data/type";
import { PokemonType } from "#enums/pokemon-type";
import PokemonSpriteSparkleHandler from "#app/field/pokemon-sprite-sparkle-handler";
import CharSprite from "#app/ui/char-sprite";
import DamageNumberHandler from "#app/field/damage-number-handler";
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 type { Variant } from "#app/sprites/variant";
import { variantData, clearVariantData } from "#app/sprites/variant";
import type { Localizable } from "#app/@types/locales";
import Overrides from "#app/overrides";
import { InputsController } from "#app/inputs-controller";
import { UiInputs } from "#app/ui-inputs";
import { NewArenaEvent } from "#app/events/battle-scene";
import { ArenaFlyout } from "#app/ui/arena-flyout";
import { EaseType } from "#enums/ease-type";
import { BattleSpec } from "#enums/battle-spec";
import { BattleStyle } from "#enums/battle-style";
import { BiomeId } from "#enums/biome-id";
import type { ExpNotification } from "#enums/exp-notification";
import { MoneyFormat } from "#enums/money-format";
import { MoveId } from "#enums/move-id";
import { PlayerGender } from "#enums/player-gender";
import { SpeciesId } from "#enums/species-id";
import { UiTheme } from "#enums/ui-theme";
import { TimedEventManager } from "#app/timed-event-manager";
import type { PokemonAnimType } from "#enums/pokemon-anim-type";
import i18next from "i18next";
import { TrainerType } from "#enums/trainer-type";
import { battleSpecDialogue } from "#app/data/dialogue";
import { LoadingScene } from "#app/loading-scene";
import type { MovePhase } from "#app/phases/move-phase";
import { ShopCursorTarget } from "#app/enums/shop-cursor-target";
import MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter";
import { allMysteryEncounters, mysteryEncountersByBiome } from "#app/data/mystery-encounters/mystery-encounters";
import { import {
ANTI_VARIANCE_WEIGHT_MODIFIER, BooleanHolder,
AVERAGE_ENCOUNTERS_PER_RUN_TARGET, type Constructor,
BASE_MYSTERY_ENCOUNTER_SPAWN_WEIGHT, fixedInt,
MYSTERY_ENCOUNTER_SPAWN_MAX_WEIGHT, formatMoney,
} from "./constants"; getEnumValues,
import { MysteryEncounterSaveData } from "#app/data/mystery-encounters/mystery-encounter-save-data"; getIvsFromId,
import { MysteryEncounterType } from "#enums/mystery-encounter-type"; isBetween,
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; isNullOrUndefined,
import type HeldModifierConfig from "#app/@types/held-modifier-config"; NumberHolder,
import { MysteryEncounterMode } from "#enums/mystery-encounter-mode"; randomString,
import { ExpGainsSpeed } from "#enums/exp-gains-speed"; randSeedInt,
import { BattlerTagType } from "#enums/battler-tag-type"; shiftCharCodes,
import { FRIENDSHIP_GAIN_FROM_BATTLE } from "#app/data/balance/starters"; } from "#utils/common";
import { StatusEffect } from "#enums/status-effect"; import { deepMergeSpriteData } from "#utils/data";
import { initGlobalScene } from "#app/global-scene"; import { getModifierPoolForType, getModifierType } from "#utils/modifier-utils";
import { expSpriteKeys } from "./sprites/sprite-keys"; import { getPokemonSpecies } from "#utils/pokemon-utils";
import { hasExpSprite } from "./sprites/sprite-utils"; import i18next from "i18next";
import { timedEventManager } from "./global-event-manager"; import Phaser from "phaser";
import { starterColors } from "./global-vars/starter-colors"; import SoundFade from "phaser3-rex-plugins/plugins/soundfade";
import { startingWave } from "./starting-wave"; import type UIPlugin from "phaser3-rex-plugins/templates/ui/ui-plugin";
import { PhaseManager } from "./phase-manager";
const DEBUG_RNG = false; const DEBUG_RNG = false;
@ -176,7 +170,7 @@ export interface InfoToggle {
isActive(): boolean; isActive(): boolean;
} }
export default class BattleScene extends SceneBase { export class BattleScene extends SceneBase {
public rexUI: UIPlugin; public rexUI: UIPlugin;
public inputController: InputsController; public inputController: InputsController;
public uiInputs: UiInputs; public uiInputs: UiInputs;

View File

@ -1,41 +1,40 @@
import type { GameMode } from "#app/game-mode";
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
import type { Command } from "#enums/command";
import {
randomString,
getEnumValues,
NumberHolder,
randSeedInt,
shiftCharCodes,
randSeedItem,
randInt,
randSeedFloat,
} from "#app/utils/common";
import Trainer from "./field/trainer";
import { TrainerVariant } from "#enums/trainer-variant";
import type { GameMode } from "./game-mode";
import { MoneyMultiplierModifier, type PokemonHeldItemModifier } from "./modifier/modifier";
import type { PokeballType } from "#enums/pokeball";
import { trainerConfigs } from "#app/data/trainers/trainer-config";
import { SpeciesFormKey } from "#enums/species-form-key";
import type { EnemyPokemon, PlayerPokemon } from "#app/field/pokemon";
import type { TurnMove } from "./@types/turn-move";
import type Pokemon from "#app/field/pokemon";
import { ArenaTagType } from "#enums/arena-tag-type"; import { ArenaTagType } from "#enums/arena-tag-type";
import { BattleSpec } from "#enums/battle-spec"; import { BattleSpec } from "#enums/battle-spec";
import { BattleType } from "#enums/battle-type";
import { BattlerIndex } from "#enums/battler-index";
import type { Command } from "#enums/command";
import { ClassicFixedBossWaves } from "#enums/fixed-boss-waves";
import { ModifierTier } from "#enums/modifier-tier";
import type { MoveId } from "#enums/move-id"; import type { MoveId } from "#enums/move-id";
import { MysteryEncounterMode } from "#enums/mystery-encounter-mode";
import type { MysteryEncounterType } from "#enums/mystery-encounter-type";
import { PlayerGender } from "#enums/player-gender"; import { PlayerGender } from "#enums/player-gender";
import { MusicPreference } from "#app/system/settings/settings"; import type { PokeballType } from "#enums/pokeball";
import { SpeciesFormKey } from "#enums/species-form-key";
import { SpeciesId } from "#enums/species-id"; import { SpeciesId } from "#enums/species-id";
import { TrainerType } from "#enums/trainer-type"; import { TrainerType } from "#enums/trainer-type";
import i18next from "#app/plugins/i18n"; import { TrainerVariant } from "#enums/trainer-variant";
import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; import type { EnemyPokemon, PlayerPokemon, Pokemon } from "#field/pokemon";
import { MysteryEncounterMode } from "#enums/mystery-encounter-mode"; import { Trainer } from "#field/trainer";
import type { CustomModifierSettings } from "#app/modifier/modifier-type"; import { MoneyMultiplierModifier, type PokemonHeldItemModifier } from "#modifiers/modifier";
import { ModifierTier } from "#enums/modifier-tier"; import type { CustomModifierSettings } from "#modifiers/modifier-type";
import type { MysteryEncounterType } from "#enums/mystery-encounter-type"; import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter";
import { BattleType } from "#enums/battle-type"; import i18next from "#plugins/i18n";
import { ClassicFixedBossWaves } from "#enums/fixed-boss-waves"; import { MusicPreference } from "#system/settings";
import { BattlerIndex } from "#enums/battler-index"; import { trainerConfigs } from "#trainers/trainer-config";
import type { TurnMove } from "#types/turn-move";
import {
getEnumValues,
NumberHolder,
randInt,
randomString,
randSeedFloat,
randSeedInt,
randSeedItem,
shiftCharCodes,
} from "#utils/common";
export interface TurnCommand { export interface TurnCommand {
command: Command; command: Command;
@ -55,7 +54,7 @@ interface TurnCommands {
[key: number]: TurnCommand | null; [key: number]: TurnCommand | null;
} }
export default class Battle { export class Battle {
protected gameMode: GameMode; protected gameMode: GameMode;
public waveIndex: number; public waveIndex: number;
public battleType: BattleType; public battleType: BattleType;

View File

@ -1,5 +1,5 @@
import { Button } from "#enums/buttons"; import { Button } from "#enums/buttons";
import { SettingKeyboard } from "#app/system/settings/settings-keyboard"; import { SettingKeyboard } from "#system/settings-keyboard";
const cfg_keyboard_qwerty = { const cfg_keyboard_qwerty = {
padID: "default", padID: "default",

View File

@ -1,5 +1,5 @@
import { SettingGamepad } from "../../system/settings/settings-gamepad";
import { Button } from "#enums/buttons"; import { Button } from "#enums/buttons";
import { SettingGamepad } from "#system/settings-gamepad";
/** /**
* Dualshock mapping * Dualshock mapping

View File

@ -1,5 +1,5 @@
import { SettingGamepad } from "../../system/settings/settings-gamepad";
import { Button } from "#enums/buttons"; import { Button } from "#enums/buttons";
import { SettingGamepad } from "#system/settings-gamepad";
/** /**
* Generic pad mapping * Generic pad mapping

View File

@ -1,5 +1,5 @@
import { SettingGamepad } from "#app/system/settings/settings-gamepad";
import { Button } from "#enums/buttons"; import { Button } from "#enums/buttons";
import { SettingGamepad } from "#system/settings-gamepad";
/** /**
* Nintendo Pro Controller mapping * Nintendo Pro Controller mapping

View File

@ -1,5 +1,5 @@
import { SettingGamepad } from "../../system/settings/settings-gamepad";
import { Button } from "#enums/buttons"; import { Button } from "#enums/buttons";
import { SettingGamepad } from "#system/settings-gamepad";
/** /**
* 081f-e401 - UnlicensedSNES * 081f-e401 - UnlicensedSNES

View File

@ -1,5 +1,5 @@
import { SettingGamepad } from "../../system/settings/settings-gamepad";
import { Button } from "#enums/buttons"; import { Button } from "#enums/buttons";
import { SettingGamepad } from "#system/settings-gamepad";
/** /**
* Generic pad mapping * Generic pad mapping

View File

@ -1,92 +1,80 @@
import { MoveResult } from "#enums/move-result"; /* biome-ignore-start lint/correctness/noUnusedImports: tsdoc imports */
import { HitResult } from "#enums/hit-result"; import type { BattleScene } from "#app/battle-scene";
import { import type { SpeciesFormChangeRevertWeatherFormTrigger } from "#data/form-change-triggers";
BooleanHolder, /* biome-ignore-end lint/correctness/noUnusedImports: tsdoc imports */
NumberHolder,
toDmgValue,
isNullOrUndefined,
randSeedItem,
randSeedInt,
randSeedFloat,
coerceArray,
} from "#app/utils/common";
import { getPokemonNameWithAffix } from "#app/messages";
import { GroundedTag } from "#app/data/battler-tags";
import { BattlerTagLapseType } from "#enums/battler-tag-lapse-type";
import {
getNonVolatileStatusEffects,
getStatusEffectDescriptor,
getStatusEffectHealText,
} from "#app/data/status-effect";
import { Gender } from "#app/data/gender";
import { applyMoveAttrs } from "../moves/apply-attrs";
import { allMoves } from "../data-lists";
import { ArenaTagSide } from "#enums/arena-tag-side";
import { BerryModifier, HitHealModifier, PokemonHeldItemModifier } from "#app/modifier/modifier";
import { TerrainType } from "#app/data/terrain";
import { pokemonFormChanges } from "../pokemon-forms";
import {
SpeciesFormChangeWeatherTrigger,
SpeciesFormChangeAbilityTrigger,
} from "../pokemon-forms/form-change-triggers";
import i18next from "i18next";
import { Command } from "#enums/command";
import { BerryModifierType } from "#app/modifier/modifier-type";
import { getPokeballName } from "#app/data/pokeball";
import { BattleType } from "#enums/battle-type";
import { globalScene } from "#app/global-scene";
import { allAbilities } from "#app/data/data-lists";
// Enum imports import { applyAbAttrs } from "#abilities/apply-ab-attrs";
import { Stat, BATTLE_STATS, EFFECTIVE_STATS, getStatKey } from "#enums/stat"; import { globalScene } from "#app/global-scene";
import { PokemonType } from "#enums/pokemon-type"; import { getPokemonNameWithAffix } from "#app/messages";
import { PokemonAnimType } from "#enums/pokemon-anim-type"; import type { ArenaTrapTag, SuppressAbilitiesTag } from "#data/arena-tag";
import { StatusEffect } from "#enums/status-effect"; import type { BattlerTag } from "#data/battler-tags";
import { WeatherType } from "#enums/weather-type"; import { GroundedTag } from "#data/battler-tags";
import { getBerryEffectFunc } from "#data/berry";
import { allAbilities, allMoves } from "#data/data-lists";
import { SpeciesFormChangeAbilityTrigger, SpeciesFormChangeWeatherTrigger } from "#data/form-change-triggers";
import { Gender } from "#data/gender";
import { getPokeballName } from "#data/pokeball";
import { pokemonFormChanges } from "#data/pokemon-forms";
import { getNonVolatileStatusEffects, getStatusEffectDescriptor, getStatusEffectHealText } from "#data/status-effect";
import { TerrainType } from "#data/terrain";
import type { Weather } from "#data/weather";
import { AbilityId } from "#enums/ability-id"; import { AbilityId } from "#enums/ability-id";
import { ArenaTagSide } from "#enums/arena-tag-side";
import { ArenaTagType } from "#enums/arena-tag-type"; import { ArenaTagType } from "#enums/arena-tag-type";
import { BattleType } from "#enums/battle-type";
import type { BattlerIndex } from "#enums/battler-index";
import { BattlerTagLapseType } from "#enums/battler-tag-lapse-type";
import { BattlerTagType } from "#enums/battler-tag-type"; import { BattlerTagType } from "#enums/battler-tag-type";
import { MoveId } from "#enums/move-id"; import type { BerryType } from "#enums/berry-type";
import { SpeciesId } from "#enums/species-id"; import { Command } from "#enums/command";
import { SwitchType } from "#enums/switch-type"; import { HitResult } from "#enums/hit-result";
import { MoveCategory } from "#enums/MoveCategory";
import { MoveFlags } from "#enums/MoveFlags"; import { MoveFlags } from "#enums/MoveFlags";
import { MoveTarget } from "#enums/MoveTarget"; import { MoveTarget } from "#enums/MoveTarget";
import { MoveCategory } from "#enums/MoveCategory";
import { CommonAnim } from "#enums/move-anims-common"; import { CommonAnim } from "#enums/move-anims-common";
import { getBerryEffectFunc } from "#app/data/berry"; import { MoveId } from "#enums/move-id";
import { BerryUsedEvent } from "#app/events/battle-scene"; import { MoveResult } from "#enums/move-result";
import { noAbilityTypeOverrideMoves } from "#app/data/moves/invalid-moves";
import { MoveUseMode } from "#enums/move-use-mode"; import { MoveUseMode } from "#enums/move-use-mode";
import { PokemonAnimType } from "#enums/pokemon-anim-type";
// Type imports import { PokemonType } from "#enums/pokemon-type";
import type { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; import { SpeciesId } from "#enums/species-id";
import type { BattleStat, EffectiveStat } from "#enums/stat"; import type { BattleStat, EffectiveStat } from "#enums/stat";
import type { BerryType } from "#enums/berry-type"; import { BATTLE_STATS, EFFECTIVE_STATS, getStatKey, Stat } from "#enums/stat";
import type { EnemyPokemon } from "#app/field/pokemon"; import { StatusEffect } from "#enums/status-effect";
import type { PokemonMove } from "../moves/pokemon-move"; import { SwitchType } from "#enums/switch-type";
import type Pokemon from "#app/field/pokemon"; import { WeatherType } from "#enums/weather-type";
import type { Weather } from "#app/data/weather"; import { BerryUsedEvent } from "#events/battle-scene";
import type { BattlerTag } from "#app/data/battler-tags"; import type { EnemyPokemon, Pokemon } from "#field/pokemon";
import { BerryModifier, HitHealModifier, PokemonHeldItemModifier } from "#modifiers/modifier";
import { BerryModifierType } from "#modifiers/modifier-type";
import { applyMoveAttrs } from "#moves/apply-attrs";
import { noAbilityTypeOverrideMoves } from "#moves/invalid-moves";
import type { Move } from "#moves/move";
import type { PokemonMove } from "#moves/pokemon-move";
import type { StatStageChangePhase } from "#phases/stat-stage-change-phase";
import type { import type {
AbAttrCondition, AbAttrCondition,
AbAttrMap,
AbAttrString,
PokemonAttackCondition,
PokemonDefendCondition, PokemonDefendCondition,
PokemonStatStageChangeCondition, PokemonStatStageChangeCondition,
PokemonAttackCondition, } from "#types/ability-types";
AbAttrString, import type { Localizable } from "#types/locales";
AbAttrMap, import type { Closed, Exact } from "#types/type-helpers";
} from "#app/@types/ability-types"; import type { Constructor } from "#utils/common";
import type { BattlerIndex } from "#enums/battler-index"; import {
import type Move from "#app/data/moves/move"; BooleanHolder,
import type { ArenaTrapTag, SuppressAbilitiesTag } from "#app/data/arena-tag"; coerceArray,
import type { Constructor } from "#app/utils/common"; isNullOrUndefined,
import type { Localizable } from "#app/@types/locales"; NumberHolder,
import { applyAbAttrs } from "./apply-ab-attrs"; randSeedFloat,
import type { Closed, Exact } from "#app/@types/type-helpers"; randSeedInt,
randSeedItem,
toDmgValue,
} from "#utils/common";
import i18next from "i18next";
// biome-ignore-start lint/correctness/noUnusedImports: Used in TSDoc
import type BattleScene from "#app/battle-scene";
import type { SpeciesFormChangeRevertWeatherFormTrigger } from "../pokemon-forms/form-change-triggers";
// biome-ignore-end lint/correctness/noUnusedImports: Used in TSDoc
export class Ability implements Localizable { export class Ability implements Localizable {
public id: AbilityId; public id: AbilityId;

View File

@ -1,6 +1,5 @@
import type { AbAttrParamMap } from "#app/@types/ability-types";
import type { AbAttrBaseParams, AbAttrString, CallableAbAttrString } from "#app/@types/ability-types";
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
import type { AbAttrBaseParams, AbAttrParamMap, AbAttrString, CallableAbAttrString } from "#types/ability-types";
function applySingleAbAttrs<T extends AbAttrString>( function applySingleAbAttrs<T extends AbAttrString>(
attrType: T, attrType: T,

View File

@ -1,26 +1,26 @@
import { applyAbAttrs, applyOnGainAbAttrs, applyOnLoseAbAttrs } from "#abilities/apply-ab-attrs";
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
import type { Arena } from "#app/field/arena";
import { PokemonType } from "#enums/pokemon-type";
import { BooleanHolder, NumberHolder, toDmgValue } from "#app/utils/common";
import { allMoves } from "./data-lists";
import { MoveTarget } from "#enums/MoveTarget";
import { MoveCategory } from "#enums/MoveCategory";
import { getPokemonNameWithAffix } from "#app/messages"; import { getPokemonNameWithAffix } from "#app/messages";
import type Pokemon from "#app/field/pokemon"; import { CommonBattleAnim } from "#data/battle-anims";
import { HitResult } from "#enums/hit-result"; import { allMoves } from "#data/data-lists";
import { StatusEffect } from "#enums/status-effect";
import type { BattlerIndex } from "#enums/battler-index";
import { applyAbAttrs, applyOnGainAbAttrs, applyOnLoseAbAttrs } from "./abilities/apply-ab-attrs";
import { Stat } from "#enums/stat";
import { CommonBattleAnim } from "#app/data/battle-anims";
import { CommonAnim } from "#enums/move-anims-common";
import i18next from "i18next";
import { AbilityId } from "#enums/ability-id"; import { AbilityId } from "#enums/ability-id";
import { ArenaTagType } from "#enums/arena-tag-type";
import { BattlerTagType } from "#enums/battler-tag-type";
import { MoveId } from "#enums/move-id";
import { ArenaTagSide } from "#enums/arena-tag-side"; import { ArenaTagSide } from "#enums/arena-tag-side";
import { ArenaTagType } from "#enums/arena-tag-type";
import type { BattlerIndex } from "#enums/battler-index";
import { BattlerTagType } from "#enums/battler-tag-type";
import { HitResult } from "#enums/hit-result";
import { MoveCategory } from "#enums/MoveCategory";
import { MoveTarget } from "#enums/MoveTarget";
import { CommonAnim } from "#enums/move-anims-common";
import { MoveId } from "#enums/move-id";
import { MoveUseMode } from "#enums/move-use-mode"; import { MoveUseMode } from "#enums/move-use-mode";
import { PokemonType } from "#enums/pokemon-type";
import { Stat } from "#enums/stat";
import { StatusEffect } from "#enums/status-effect";
import type { Arena } from "#field/arena";
import type { Pokemon } from "#field/pokemon";
import { BooleanHolder, NumberHolder, toDmgValue } from "#utils/common";
import i18next from "i18next";
export abstract class ArenaTag { export abstract class ArenaTag {
constructor( constructor(

View File

@ -1,13 +1,12 @@
import { PokemonType } from "#enums/pokemon-type"; import type { SpeciesFormEvolution } from "#balance/pokemon-evolutions";
import { randSeedInt, getEnumValues } from "#app/utils/common"; import { pokemonEvolutions } from "#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 { BiomeId } from "#enums/biome-id"; import { BiomeId } from "#enums/biome-id";
import { PokemonType } from "#enums/pokemon-type";
import { SpeciesId } from "#enums/species-id"; import { SpeciesId } from "#enums/species-id";
import { TimeOfDay } from "#enums/time-of-day"; import { TimeOfDay } from "#enums/time-of-day";
import { TrainerType } from "#enums/trainer-type"; import { TrainerType } from "#enums/trainer-type";
// import beautify from "json-beautify"; import { getEnumValues, randSeedInt } from "#utils/common";
import i18next from "i18next";
export function getBiomeName(biome: BiomeId | -1) { export function getBiomeName(biome: BiomeId | -1) {
if (biome === -1) { if (biome === -1) {

View File

@ -1,7 +1,7 @@
import { allMoves } from "../data-lists"; import { allMoves } from "#data/data-lists";
import { getEnumKeys, getEnumValues } from "#app/utils/common";
import { MoveId } from "#enums/move-id"; import { MoveId } from "#enums/move-id";
import { SpeciesId } from "#enums/species-id"; import { SpeciesId } from "#enums/species-id";
import { getEnumKeys, getEnumValues } from "#utils/common";
export const speciesEggMoves = { export const speciesEggMoves = {

View File

@ -1,21 +1,21 @@
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
import { Gender, getGenderSymbol } from "#app/data/gender"; import { speciesStarterCosts } from "#balance/starters";
import { PokeballType } from "#enums/pokeball"; import { allMoves } from "#data/data-lists";
import type Pokemon from "#app/field/pokemon"; import { Gender, getGenderSymbol } from "#data/gender";
import { PokemonType } from "#enums/pokemon-type";
import { coerceArray, isNullOrUndefined, randSeedInt } from "#app/utils/common";
import { WeatherType } from "#enums/weather-type";
import { Nature } from "#enums/nature";
import { BiomeId } from "#enums/biome-id"; import { BiomeId } from "#enums/biome-id";
import { MoveId } from "#enums/move-id"; import { MoveId } from "#enums/move-id";
import { SpeciesId } from "#enums/species-id"; import { Nature } from "#enums/nature";
import { PokeballType } from "#enums/pokeball";
import { PokemonType } from "#enums/pokemon-type";
import { SpeciesFormKey } from "#enums/species-form-key"; import { SpeciesFormKey } from "#enums/species-form-key";
import { SpeciesId } from "#enums/species-id";
import { TimeOfDay } from "#enums/time-of-day"; import { TimeOfDay } from "#enums/time-of-day";
import type { SpeciesStatBoosterItem, SpeciesStatBoosterModifierType } from "#app/modifier/modifier-type"; import { WeatherType } from "#enums/weather-type";
import { speciesStarterCosts } from "./starters"; import type { Pokemon } from "#field/pokemon";
import type { SpeciesStatBoosterItem, SpeciesStatBoosterModifierType } from "#modifiers/modifier-type";
import { coerceArray, isNullOrUndefined, randSeedInt } from "#utils/common";
import { getPokemonSpecies } from "#utils/pokemon-utils";
import i18next from "i18next"; import i18next from "i18next";
import { allMoves } from "#app/data/data-lists";
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
export enum SpeciesWildEvolutionDelay { export enum SpeciesWildEvolutionDelay {
NONE, NONE,

View File

@ -1,5 +1,5 @@
import { SpeciesId } from "#enums/species-id";
import { EggTier } from "#enums/egg-type"; import { EggTier } from "#enums/egg-type";
import { SpeciesId } from "#enums/species-id";
/** /**
* Map of all starters and their respective {@linkcode EggTier}, which determines the type of egg the starter hatches from. * Map of all starters and their respective {@linkcode EggTier}, which determines the type of egg the starter hatches from.

View File

@ -1,22 +1,22 @@
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
import { allMoves } from "#app/data/data-lists"; import { allMoves } from "#data/data-lists";
import type { BattlerIndex } from "#enums/battler-index";
import { BattlerTagType } from "#enums/battler-tag-type";
import { EncounterAnim } from "#enums/encounter-anims";
import { MoveFlags } from "#enums/MoveFlags"; import { MoveFlags } from "#enums/MoveFlags";
import type Pokemon from "#app/field/pokemon"; import { AnimBlendType, AnimFocus, AnimFrameTarget, ChargeAnim, CommonAnim } from "#enums/move-anims-common";
import { MoveId } from "#enums/move-id";
import type { Pokemon } from "#field/pokemon";
import { import {
type nil,
getFrameMs,
getEnumKeys,
getEnumValues,
animationFileName, animationFileName,
coerceArray, coerceArray,
getEnumKeys,
getEnumValues,
getFrameMs,
isNullOrUndefined, isNullOrUndefined,
} from "#app/utils/common"; type nil,
import type { BattlerIndex } from "#enums/battler-index"; } from "#utils/common";
import { MoveId } from "#enums/move-id";
import Phaser from "phaser"; import Phaser from "phaser";
import { EncounterAnim } from "#enums/encounter-anims";
import { AnimBlendType, AnimFrameTarget, AnimFocus, ChargeAnim, CommonAnim } from "#enums/move-anims-common";
import { BattlerTagType } from "#enums/battler-tag-type";
export class AnimConfig { export class AnimConfig {
public id: number; public id: number;

View File

@ -1,39 +1,37 @@
import { applyAbAttrs } from "#abilities/apply-ab-attrs";
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
import Overrides from "#app/overrides";
import { applyAbAttrs } from "./abilities/apply-ab-attrs";
import { allAbilities } from "./data-lists";
import { CommonBattleAnim, MoveChargeAnim } from "#app/data/battle-anims";
import { ChargeAnim, CommonAnim } from "#enums/move-anims-common";
import type Move from "#app/data/moves/move";
import { applyMoveAttrs } from "./moves/apply-attrs";
import { allMoves } from "./data-lists";
import { MoveFlags } from "#enums/MoveFlags";
import { MoveCategory } from "#enums/MoveCategory";
import { SpeciesFormChangeAbilityTrigger } from "./pokemon-forms/form-change-triggers";
import { getStatusEffectHealText } from "#app/data/status-effect";
import { TerrainType } from "#app/data/terrain";
import { PokemonType } from "#enums/pokemon-type";
import type Pokemon from "#app/field/pokemon";
import { MoveResult } from "#enums/move-result";
import { HitResult } from "#enums/hit-result";
import { getPokemonNameWithAffix } from "#app/messages"; import { getPokemonNameWithAffix } from "#app/messages";
import type { MoveEffectPhase } from "#app/phases/move-effect-phase"; import Overrides from "#app/overrides";
import type { MovePhase } from "#app/phases/move-phase"; import { CommonBattleAnim, MoveChargeAnim } from "#data/battle-anims";
import type { StatStageChangeCallback } from "#app/phases/stat-stage-change-phase"; import { allAbilities, allMoves } from "#data/data-lists";
import i18next from "#app/plugins/i18n"; import { SpeciesFormChangeAbilityTrigger } from "#data/form-change-triggers";
import { BooleanHolder, coerceArray, getFrameMs, NumberHolder, toDmgValue } from "#app/utils/common"; import { getStatusEffectHealText } from "#data/status-effect";
import { TerrainType } from "#data/terrain";
import { AbilityId } from "#enums/ability-id"; import { AbilityId } from "#enums/ability-id";
import { BattlerTagLapseType } from "#enums/battler-tag-lapse-type";
import { BattlerTagType } from "#enums/battler-tag-type"; import { BattlerTagType } from "#enums/battler-tag-type";
import { HitResult } from "#enums/hit-result";
import { MoveCategory } from "#enums/MoveCategory";
import { MoveFlags } from "#enums/MoveFlags";
import { ChargeAnim, CommonAnim } from "#enums/move-anims-common";
import { MoveId } from "#enums/move-id"; import { MoveId } from "#enums/move-id";
import { MoveResult } from "#enums/move-result";
import { MoveUseMode } from "#enums/move-use-mode";
import { PokemonAnimType } from "#enums/pokemon-anim-type"; import { PokemonAnimType } from "#enums/pokemon-anim-type";
import { PokemonType } from "#enums/pokemon-type";
import { SpeciesId } from "#enums/species-id"; import { SpeciesId } from "#enums/species-id";
import { EFFECTIVE_STATS, getStatKey, Stat, type BattleStat, type EffectiveStat } from "#enums/stat"; import { type BattleStat, EFFECTIVE_STATS, type EffectiveStat, getStatKey, Stat } from "#enums/stat";
import { StatusEffect } from "#enums/status-effect"; import { StatusEffect } from "#enums/status-effect";
import { WeatherType } from "#enums/weather-type"; import { WeatherType } from "#enums/weather-type";
import { isNullOrUndefined } from "#app/utils/common"; import type { Pokemon } from "#field/pokemon";
import { MoveUseMode } from "#enums/move-use-mode"; import { applyMoveAttrs } from "#moves/apply-attrs";
import { invalidEncoreMoves } from "./moves/invalid-moves"; import { invalidEncoreMoves } from "#moves/invalid-moves";
import { BattlerTagLapseType } from "#enums/battler-tag-lapse-type"; import type { Move } from "#moves/move";
import type { MoveEffectPhase } from "#phases/move-effect-phase";
import type { MovePhase } from "#phases/move-phase";
import type { StatStageChangeCallback } from "#phases/stat-stage-change-phase";
import i18next from "#plugins/i18n";
import { BooleanHolder, coerceArray, getFrameMs, isNullOrUndefined, NumberHolder, toDmgValue } from "#utils/common";
/** /**
* A {@linkcode BattlerTag} represents a semi-persistent effect that can be attached to a {@linkcode Pokemon}. * A {@linkcode BattlerTag} represents a semi-persistent effect that can be attached to a {@linkcode Pokemon}.

View File

@ -1,14 +1,14 @@
import { getPokemonNameWithAffix } from "../messages"; import { applyAbAttrs } from "#abilities/apply-ab-attrs";
import type Pokemon from "../field/pokemon"; import { globalScene } from "#app/global-scene";
import { HitResult } from "#enums/hit-result"; import { getPokemonNameWithAffix } from "#app/messages";
import { getStatusEffectHealText } from "./status-effect"; import { getStatusEffectHealText } from "#data/status-effect";
import { NumberHolder, toDmgValue, randSeedInt } from "#app/utils/common";
import { applyAbAttrs } from "./abilities/apply-ab-attrs";
import i18next from "i18next";
import { BattlerTagType } from "#enums/battler-tag-type"; import { BattlerTagType } from "#enums/battler-tag-type";
import { BerryType } from "#enums/berry-type"; import { BerryType } from "#enums/berry-type";
import { Stat, type BattleStat } from "#app/enums/stat"; import { HitResult } from "#enums/hit-result";
import { globalScene } from "#app/global-scene"; import { type BattleStat, Stat } from "#enums/stat";
import type { Pokemon } from "#field/pokemon";
import { NumberHolder, randSeedInt, toDmgValue } from "#utils/common";
import i18next from "i18next";
export function getBerryName(berryType: BerryType): string { export function getBerryName(berryType: BerryType): string {
return i18next.t(`berry:${BerryType[berryType]}.name`); return i18next.t(`berry:${BerryType[berryType]}.name`);

View File

@ -1,33 +1,33 @@
import { BooleanHolder, type NumberHolder, randSeedItem } from "#app/utils/common";
import { deepCopy } from "#app/utils/data";
import i18next from "i18next";
import type { DexAttrProps, GameData } from "#app/system/game-data";
import { defaultStarterSpecies } from "#app/constants";
import type PokemonSpecies from "#app/data/pokemon-species";
import { getPokemonSpeciesForm } from "#app/data/pokemon-species";
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
import { speciesStarterCosts } from "#app/data/balance/starters";
import type Pokemon from "#app/field/pokemon";
import { PokemonMove } from "./moves/pokemon-move";
import type { FixedBattleConfig } from "#app/battle"; import type { FixedBattleConfig } from "#app/battle";
import { getRandomTrainerFunc } from "#app/battle"; import { getRandomTrainerFunc } from "#app/battle";
import { ClassicFixedBossWaves } from "#enums/fixed-boss-waves"; import { defaultStarterSpecies } from "#app/constants";
import { globalScene } from "#app/global-scene";
import { pokemonEvolutions } from "#balance/pokemon-evolutions";
import { speciesStarterCosts } from "#balance/starters";
import { pokemonFormChanges } from "#data/pokemon-forms";
import type { PokemonSpecies } from "#data/pokemon-species";
import { getPokemonSpeciesForm } from "#data/pokemon-species";
import { BattleType } from "#enums/battle-type"; import { BattleType } from "#enums/battle-type";
import Trainer from "#app/field/trainer"; import { ChallengeType } from "#enums/challenge-type";
import { TrainerVariant } from "#enums/trainer-variant";
import { PokemonType } from "#enums/pokemon-type";
import { Challenges } from "#enums/challenges"; import { Challenges } from "#enums/challenges";
import { TypeColor, TypeShadow } from "#enums/color";
import { ClassicFixedBossWaves } from "#enums/fixed-boss-waves";
import { ModifierTier } from "#enums/modifier-tier";
import type { MoveId } from "#enums/move-id";
import type { MoveSourceType } from "#enums/move-source-type";
import { Nature } from "#enums/nature";
import { PokemonType } from "#enums/pokemon-type";
import { SpeciesId } from "#enums/species-id"; import { SpeciesId } from "#enums/species-id";
import { TrainerType } from "#enums/trainer-type"; import { TrainerType } from "#enums/trainer-type";
import { Nature } from "#enums/nature"; import { TrainerVariant } from "#enums/trainer-variant";
import type { MoveId } from "#enums/move-id"; import type { Pokemon } from "#field/pokemon";
import { TypeColor, TypeShadow } from "#enums/color"; import { Trainer } from "#field/trainer";
import { ModifierTier } from "#enums/modifier-tier"; import { PokemonMove } from "#moves/pokemon-move";
import { globalScene } from "#app/global-scene"; import type { DexAttrProps, GameData } from "#system/game-data";
import { pokemonFormChanges } from "./pokemon-forms"; import { BooleanHolder, type NumberHolder, randSeedItem } from "#utils/common";
import { pokemonEvolutions } from "./balance/pokemon-evolutions"; import { deepCopy } from "#utils/data";
import { ChallengeType } from "#enums/challenge-type"; import { getPokemonSpecies } from "#utils/pokemon-utils";
import type { MoveSourceType } from "#enums/move-source-type"; import i18next from "i18next";
/** A constant for the default max cost of the starting party before a run */ /** A constant for the default max cost of the starting party before a run */
const DEFAULT_PARTY_MAX_COST = 10; const DEFAULT_PARTY_MAX_COST = 10;

View File

@ -1,15 +1,15 @@
import { pokerogueApi } from "#api/pokerogue-api";
import { globalScene } from "#app/global-scene";
import { speciesStarterCosts } from "#balance/starters";
import type { PokemonSpeciesForm } from "#data/pokemon-species";
import { getPokemonSpeciesForm, PokemonSpecies } from "#data/pokemon-species";
import { BiomeId } from "#enums/biome-id";
import { PartyMemberStrength } from "#enums/party-member-strength"; import { PartyMemberStrength } from "#enums/party-member-strength";
import type { SpeciesId } from "#enums/species-id"; import type { SpeciesId } from "#enums/species-id";
import { globalScene } from "#app/global-scene"; import { PlayerPokemon } from "#field/pokemon";
import { PlayerPokemon } from "#app/field/pokemon"; import type { Starter } from "#ui/starter-select-ui-handler";
import type { Starter } from "#app/ui/starter-select-ui-handler"; import { getEnumValues, randSeedGauss, randSeedInt, randSeedItem } from "#utils/common";
import { randSeedGauss, randSeedInt, randSeedItem, getEnumValues } from "#app/utils/common"; import { getPokemonSpecies } from "#utils/pokemon-utils";
import type { PokemonSpeciesForm } from "#app/data/pokemon-species";
import PokemonSpecies, { getPokemonSpeciesForm } from "#app/data/pokemon-species";
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
import { speciesStarterCosts } from "#app/data/balance/starters";
import { pokerogueApi } from "#app/plugins/api/pokerogue-api";
import { BiomeId } from "#enums/biome-id";
export interface DailyRunConfig { export interface DailyRunConfig {
seed: number; seed: number;

View File

@ -1,7 +1,7 @@
import type PokemonSpecies from "#app/data/pokemon-species"; import type { Ability } from "#abilities/ability";
import type { ModifierTypes } from "#app/modifier/modifier-type"; import type { PokemonSpecies } from "#data/pokemon-species";
import type { Ability } from "./abilities/ability"; import type { ModifierTypes } from "#modifiers/modifier-type";
import type Move from "./moves/move"; import type { Move } from "#moves/move";
export const allAbilities: Ability[] = []; export const allAbilities: Ability[] = [];
export const allMoves: Move[] = []; export const allMoves: Move[] = [];

View File

@ -1,6 +1,6 @@
import { BattleSpec } from "#enums/battle-spec"; import { BattleSpec } from "#enums/battle-spec";
import { TrainerType } from "#enums/trainer-type"; import { TrainerType } from "#enums/trainer-type";
import { trainerConfigs } from "./trainers/trainer-config"; import { trainerConfigs } from "#trainers/trainer-config";
export interface TrainerTypeMessages { export interface TrainerTypeMessages {
encounter?: string | string[]; encounter?: string | string[];

View File

@ -1,7 +1,7 @@
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
import type { PlayerPokemon } from "#app/field/pokemon"; import type { PlayerPokemon } from "#field/pokemon";
import type { StarterDataEntry } from "#app/system/game-data"; import type { StarterDataEntry } from "#system/game-data";
import type { DexEntry } from "#app/@types/dex-data"; import type { DexEntry } from "#types/dex-data";
/** /**
* Stores data associated with a specific egg and the hatched pokemon * Stores data associated with a specific egg and the hatched pokemon

View File

@ -1,43 +1,43 @@
import type BattleScene from "#app/battle-scene"; import type { BattleScene } from "#app/battle-scene";
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
import type PokemonSpecies from "#app/data/pokemon-species";
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
import { speciesStarterCosts } from "#app/data/balance/starters";
import { VariantTier } from "#enums/variant-tier";
import { randInt, randomString, randSeedInt, getIvsFromId } from "#app/utils/common";
import Overrides from "#app/overrides"; import Overrides from "#app/overrides";
import { pokemonPrevolutions } from "#app/data/balance/pokemon-evolutions"; import { pokemonPrevolutions } from "#balance/pokemon-evolutions";
import type { PlayerPokemon } from "#app/field/pokemon";
import i18next from "i18next";
import { EggTier } from "#enums/egg-type";
import { SpeciesId } from "#enums/species-id";
import { EggSourceType } from "#enums/egg-source-types";
import { import {
MANAPHY_EGG_MANAPHY_RATE,
SAME_SPECIES_EGG_HA_RATE,
GACHA_EGG_HA_RATE,
GACHA_DEFAULT_RARE_EGGMOVE_RATE,
SAME_SPECIES_EGG_RARE_EGGMOVE_RATE,
GACHA_MOVE_UP_RARE_EGGMOVE_RATE,
GACHA_DEFAULT_SHINY_RATE,
GACHA_SHINY_UP_SHINY_RATE,
SAME_SPECIES_EGG_SHINY_RATE,
EGG_PITY_LEGENDARY_THRESHOLD,
EGG_PITY_EPIC_THRESHOLD, EGG_PITY_EPIC_THRESHOLD,
EGG_PITY_LEGENDARY_THRESHOLD,
EGG_PITY_RARE_THRESHOLD, EGG_PITY_RARE_THRESHOLD,
SHINY_VARIANT_CHANCE,
SHINY_EPIC_CHANCE,
GACHA_DEFAULT_COMMON_EGG_THRESHOLD, GACHA_DEFAULT_COMMON_EGG_THRESHOLD,
GACHA_DEFAULT_RARE_EGG_THRESHOLD,
GACHA_DEFAULT_EPIC_EGG_THRESHOLD, GACHA_DEFAULT_EPIC_EGG_THRESHOLD,
GACHA_DEFAULT_RARE_EGG_THRESHOLD,
GACHA_DEFAULT_RARE_EGGMOVE_RATE,
GACHA_DEFAULT_SHINY_RATE,
GACHA_EGG_HA_RATE,
GACHA_LEGENDARY_UP_THRESHOLD_OFFSET, GACHA_LEGENDARY_UP_THRESHOLD_OFFSET,
HATCH_WAVES_MANAPHY_EGG, GACHA_MOVE_UP_RARE_EGGMOVE_RATE,
GACHA_SHINY_UP_SHINY_RATE,
HATCH_WAVES_COMMON_EGG, HATCH_WAVES_COMMON_EGG,
HATCH_WAVES_RARE_EGG,
HATCH_WAVES_EPIC_EGG, HATCH_WAVES_EPIC_EGG,
HATCH_WAVES_LEGENDARY_EGG, HATCH_WAVES_LEGENDARY_EGG,
} from "#app/data/balance/rates"; HATCH_WAVES_MANAPHY_EGG,
import { speciesEggTiers } from "#app/data/balance/species-egg-tiers"; HATCH_WAVES_RARE_EGG,
MANAPHY_EGG_MANAPHY_RATE,
SAME_SPECIES_EGG_HA_RATE,
SAME_SPECIES_EGG_RARE_EGGMOVE_RATE,
SAME_SPECIES_EGG_SHINY_RATE,
SHINY_EPIC_CHANCE,
SHINY_VARIANT_CHANCE,
} from "#balance/rates";
import { speciesEggTiers } from "#balance/species-egg-tiers";
import { speciesStarterCosts } from "#balance/starters";
import type { PokemonSpecies } from "#data/pokemon-species";
import { EggSourceType } from "#enums/egg-source-types";
import { EggTier } from "#enums/egg-type";
import { SpeciesId } from "#enums/species-id";
import { VariantTier } from "#enums/variant-tier";
import type { PlayerPokemon } from "#field/pokemon";
import { getIvsFromId, randInt, randomString, randSeedInt } from "#utils/common";
import { getPokemonSpecies } from "#utils/pokemon-utils";
import i18next from "i18next";
export const EGG_SEED = 1073741824; export const EGG_SEED = 1073741824;

View File

@ -1,11 +1,11 @@
/** /*
* Module holding functions to apply move attributes. * Module holding functions to apply move attributes.
* Must not import anything that is not a type. * Must not import anything that is not a type.
*/ */
import type Pokemon from "#app/field/pokemon";
import type { default as Move, MoveAttr } from "./move"; import type { Pokemon } from "#field/pokemon";
import type { ChargingMove } from "#app/@types/move-types"; import type { Move, MoveAttr } from "#moves/move";
import type { MoveAttrFilter, MoveAttrString } from "#app/@types/move-types"; import type { ChargingMove, MoveAttrFilter, MoveAttrString } from "#types/move-types";
function applyMoveAttrsInternal( function applyMoveAttrsInternal(
attrFilter: MoveAttrFilter, attrFilter: MoveAttrFilter,

View File

@ -1,14 +1,13 @@
import type Pokemon from "#app/field/pokemon"; import { allMoves } from "#data/data-lists";
import type { BattlerIndex } from "#enums/battler-index"; import type { BattlerIndex } from "#enums/battler-index";
import type { MoveId } from "#enums/move-id";
import type { MoveTargetSet, UserMoveConditionFunc } from "./move";
import type Move from "./move";
import { NumberHolder, isNullOrUndefined } from "#app/utils/common";
import { MoveTarget } from "#enums/MoveTarget";
import { PokemonType } from "#enums/pokemon-type";
import { allMoves } from "#app/data/data-lists";
import { applyMoveAttrs } from "./apply-attrs";
import { BattlerTagType } from "#enums/battler-tag-type"; import { BattlerTagType } from "#enums/battler-tag-type";
import { MoveTarget } from "#enums/MoveTarget";
import type { MoveId } from "#enums/move-id";
import { PokemonType } from "#enums/pokemon-type";
import type { Pokemon } from "#field/pokemon";
import { applyMoveAttrs } from "#moves/apply-attrs";
import type { Move, MoveTargetSet, UserMoveConditionFunc } from "#moves/move";
import { isNullOrUndefined, NumberHolder } from "#utils/common";
/** /**
* Return whether the move targets the field * Return whether the move targets the field

View File

@ -1,5 +1,14 @@
import { MoveChargeAnim } from "../battle-anims"; import { AbAttrParamsWithCancel, PreAttackModifyPowerAbAttrParams } from "#abilities/ability";
import { ChargeAnim } from "#enums/move-anims-common"; import {
applyAbAttrs
} from "#abilities/apply-ab-attrs";
import { loggedInUser } from "#app/account";
import type { GameMode } from "#app/game-mode";
import { globalScene } from "#app/global-scene";
import { getPokemonNameWithAffix } from "#app/messages";
import type { ArenaTrapTag } from "#data/arena-tag";
import { WeakenMoveTypeTag } from "#data/arena-tag";
import { MoveChargeAnim } from "#data/battle-anims";
import { import {
CommandedTag, CommandedTag,
EncoreTag, EncoreTag,
@ -11,32 +20,53 @@ import {
SubstituteTag, SubstituteTag,
TrappedTag, TrappedTag,
TypeBoostTag, TypeBoostTag,
} from "../battler-tags"; } from "#data/battler-tags";
import { getPokemonNameWithAffix } from "../../messages"; import { getBerryEffectFunc } from "#data/berry";
import type { TurnMove } from "#app/@types/turn-move"; import { applyChallenges } from "#data/challenge";
import type { AttackMoveResult } from "#app/@types/attack-move-result"; import { allAbilities, allMoves } from "#data/data-lists";
import type Pokemon from "../../field/pokemon"; import { SpeciesFormChangeRevertWeatherFormTrigger } from "#data/form-change-triggers";
import type { EnemyPokemon } from "#app/field/pokemon";
import { PokemonMove } from "./pokemon-move";
import { MoveResult } from "#enums/move-result";
import { HitResult } from "#enums/hit-result";
import { FieldPosition } from "#enums/field-position";
import { import {
getNonVolatileStatusEffects, getNonVolatileStatusEffects,
getStatusEffectHealText, getStatusEffectHealText,
isNonVolatileStatusEffect, isNonVolatileStatusEffect,
} from "../status-effect"; } from "#data/status-effect";
import { getTypeDamageMultiplier } from "../type"; import { TerrainType } from "#data/terrain";
import { PokemonType } from "#enums/pokemon-type"; import { getTypeDamageMultiplier } from "#data/type";
import { BooleanHolder, NumberHolder, isNullOrUndefined, toDmgValue, randSeedItem, randSeedInt, getEnumValues, toReadableString, type Constructor, randSeedFloat } from "#app/utils/common"; import { AbilityId } from "#enums/ability-id";
import { WeatherType } from "#enums/weather-type";
import type { ArenaTrapTag } from "../arena-tag";
import { WeakenMoveTypeTag } from "../arena-tag";
import { ArenaTagSide } from "#enums/arena-tag-side"; import { ArenaTagSide } from "#enums/arena-tag-side";
import { ArenaTagType } from "#enums/arena-tag-type";
import { BattleType } from "#enums/battle-type";
import type { BattlerIndex } from "#enums/battler-index";
import { BattlerTagType } from "#enums/battler-tag-type";
import { BiomeId } from "#enums/biome-id";
import { ChallengeType } from "#enums/challenge-type";
import { Command } from "#enums/command";
import { FieldPosition } from "#enums/field-position";
import { HitResult } from "#enums/hit-result";
import { ModifierPoolType } from "#enums/modifier-pool-type";
import { ChargeAnim } from "#enums/move-anims-common";
import { MoveId } from "#enums/move-id";
import { MoveResult } from "#enums/move-result";
import { isVirtual, MoveUseMode } from "#enums/move-use-mode";
import { MoveCategory } from "#enums/MoveCategory";
import { MoveEffectTrigger } from "#enums/MoveEffectTrigger";
import { MoveFlags } from "#enums/MoveFlags";
import { MoveTarget } from "#enums/MoveTarget";
import { MultiHitType } from "#enums/MultiHitType";
import { PokemonType } from "#enums/pokemon-type";
import { SpeciesId } from "#enums/species-id";
import { import {
applyAbAttrs BATTLE_STATS,
} from "../abilities/apply-ab-attrs"; type BattleStat,
import { allAbilities, allMoves } from "../data-lists"; type EffectiveStat,
getStatKey,
Stat,
} from "#enums/stat";
import { StatusEffect } from "#enums/status-effect";
import { SwitchType } from "#enums/switch-type";
import { WeatherType } from "#enums/weather-type";
import { MoveUsedEvent } from "#events/battle-scene";
import type { EnemyPokemon, Pokemon } from "#field/pokemon";
import { import {
AttackTypeBoosterModifier, AttackTypeBoosterModifier,
BerryModifier, BerryModifier,
@ -44,52 +74,21 @@ import {
PokemonMoveAccuracyBoosterModifier, PokemonMoveAccuracyBoosterModifier,
PokemonMultiHitModifier, PokemonMultiHitModifier,
PreserveBerryModifier, PreserveBerryModifier,
} from "../../modifier/modifier"; } from "#modifiers/modifier";
import type { BattlerIndex } from "#enums/battler-index"; import { applyMoveAttrs } from "#moves/apply-attrs";
import { BattleType } from "#enums/battle-type"; import { invalidAssistMoves, invalidCopycatMoves, invalidMetronomeMoves, invalidMirrorMoveMoves, invalidSketchMoves, invalidSleepTalkMoves } from "#moves/invalid-moves";
import { TerrainType } from "../terrain"; import { frenzyMissFunc, getMoveTargets } from "#moves/move-utils";
import { ModifierPoolType } from "#enums/modifier-pool-type"; import { PokemonMove } from "#moves/pokemon-move";
import { Command } from "#enums/command"; import { MoveEndPhase } from "#phases/move-end-phase";
import { MovePhase } from "#phases/move-phase";
import { PokemonHealPhase } from "#phases/pokemon-heal-phase";
import { SwitchSummonPhase } from "#phases/switch-summon-phase";
import type { AttackMoveResult } from "#types/attack-move-result";
import type { Localizable } from "#types/locales";
import type { ChargingMove, MoveAttrMap, MoveAttrString, MoveClassMap, MoveKindString } from "#types/move-types";
import type { TurnMove } from "#types/turn-move";
import { BooleanHolder, type Constructor, getEnumValues, isNullOrUndefined, NumberHolder, randSeedFloat, randSeedInt, randSeedItem, toDmgValue, toReadableString } from "#utils/common";
import i18next from "i18next"; import i18next from "i18next";
import type { Localizable } from "#app/@types/locales";
import { getBerryEffectFunc } from "../berry";
import { AbilityId } from "#enums/ability-id";
import { ArenaTagType } from "#enums/arena-tag-type";
import { BattlerTagType } from "#enums/battler-tag-type";
import { BiomeId } from "#enums/biome-id";
import { MoveId } from "#enums/move-id";
import { SpeciesId } from "#enums/species-id";
import { MoveUsedEvent } from "#app/events/battle-scene";
import {
BATTLE_STATS,
type BattleStat,
type EffectiveStat,
getStatKey,
Stat,
} from "#app/enums/stat";
import { MoveEndPhase } from "#app/phases/move-end-phase";
import { MovePhase } from "#app/phases/move-phase";
import { PokemonHealPhase } from "#app/phases/pokemon-heal-phase";
import { SwitchSummonPhase } from "#app/phases/switch-summon-phase";
import { SpeciesFormChangeRevertWeatherFormTrigger } from "../pokemon-forms/form-change-triggers";
import type { GameMode } from "#app/game-mode";
import { applyChallenges } from "../challenge";
import { ChallengeType } from "#enums/challenge-type";
import { SwitchType } from "#enums/switch-type";
import { StatusEffect } from "#enums/status-effect";
import { globalScene } from "#app/global-scene";
import { loggedInUser } from "#app/account";
import { MoveCategory } from "#enums/MoveCategory";
import { MoveTarget } from "#enums/MoveTarget";
import { MoveFlags } from "#enums/MoveFlags";
import { MoveEffectTrigger } from "#enums/MoveEffectTrigger";
import { MultiHitType } from "#enums/MultiHitType";
import { invalidAssistMoves, invalidCopycatMoves, invalidMetronomeMoves, invalidMirrorMoveMoves, invalidSleepTalkMoves, invalidSketchMoves } from "./invalid-moves";
import { isVirtual, MoveUseMode } from "#enums/move-use-mode";
import type { ChargingMove, MoveAttrMap, MoveAttrString, MoveKindString, MoveClassMap } from "#app/@types/move-types";
import { applyMoveAttrs } from "./apply-attrs";
import { frenzyMissFunc, getMoveTargets } from "./move-utils";
import { AbAttrBaseParams, AbAttrParamsWithCancel, PreAttackModifyPowerAbAttrParams } from "../abilities/ability";
/** /**
* A function used to conditionally determine execution of a given {@linkcode MoveAttr}. * A function used to conditionally determine execution of a given {@linkcode MoveAttr}.
@ -98,7 +97,7 @@ import { AbAttrBaseParams, AbAttrParamsWithCancel, PreAttackModifyPowerAbAttrPar
type MoveConditionFunc = (user: Pokemon, target: Pokemon, move: Move) => boolean; type MoveConditionFunc = (user: Pokemon, target: Pokemon, move: Move) => boolean;
export type UserMoveConditionFunc = (user: Pokemon, move: Move) => boolean; export type UserMoveConditionFunc = (user: Pokemon, move: Move) => boolean;
export default abstract class Move implements Localizable { export abstract class Move implements Localizable {
public id: MoveId; public id: MoveId;
public name: string; public name: string;
private _type: PokemonType; private _type: PokemonType;

View File

@ -1,8 +1,8 @@
import type Pokemon from "#app/field/pokemon"; import { allMoves } from "#data/data-lists";
import { toDmgValue } from "#app/utils/common";
import type { MoveId } from "#enums/move-id"; import type { MoveId } from "#enums/move-id";
import { allMoves } from "../data-lists"; import type { Pokemon } from "#field/pokemon";
import type Move from "./move"; import type { Move } from "#moves/move";
import { toDmgValue } from "#utils/common";
/** /**
* Wrapper class for the {@linkcode Move} class for Pokemon to interact with. * Wrapper class for the {@linkcode Move} class for Pokemon to interact with.

View File

@ -1,27 +1,27 @@
import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants";
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
import type { EnemyPartyConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { modifierTypes } from "#data/data-lists";
import type { IEggOptions } from "#data/egg";
import { EggSourceType } from "#enums/egg-source-types";
import { EggTier } from "#enums/egg-type";
import { ModifierTier } from "#enums/modifier-tier";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
import { SpeciesId } from "#enums/species-id";
import { TrainerType } from "#enums/trainer-type";
import type { EnemyPartyConfig } from "#mystery-encounters/encounter-phase-utils";
import { import {
initBattleWithEnemyConfig, initBattleWithEnemyConfig,
leaveEncounterWithoutBattle, leaveEncounterWithoutBattle,
setEncounterRewards, setEncounterRewards,
transitionMysteryEncounterIntroVisuals, transitionMysteryEncounterIntroVisuals,
} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; } from "#mystery-encounters/encounter-phase-utils";
import { trainerConfigs } from "#app/data/trainers/trainer-config"; import { getSpriteKeysFromSpecies } from "#mystery-encounters/encounter-pokemon-utils";
import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter";
import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter";
import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; import { trainerConfigs } from "#trainers/trainer-config";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { randSeedInt } from "#utils/common";
import { TrainerType } from "#enums/trainer-type";
import { SpeciesId } from "#enums/species-id";
import { getSpriteKeysFromSpecies } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils";
import { randSeedInt } from "#app/utils/common";
import i18next from "i18next"; import i18next from "i18next";
import type { IEggOptions } from "#app/data/egg";
import { EggSourceType } from "#enums/egg-source-types";
import { EggTier } from "#enums/egg-type";
import { ModifierTier } from "#enums/modifier-tier";
import { modifierTypes } from "#app/data/data-lists";
import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants";
/** the i18n namespace for the encounter */ /** the i18n namespace for the encounter */
const namespace = "mysteryEncounters/aTrainersTest"; const namespace = "mysteryEncounters/aTrainersTest";

View File

@ -1,44 +1,44 @@
import type { EnemyPartyConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { globalScene } from "#app/global-scene";
import { modifierTypes } from "#data/data-lists";
import { BattlerIndex } from "#enums/battler-index";
import { BattlerTagType } from "#enums/battler-tag-type";
import type { BerryType } from "#enums/berry-type";
import { MoveId } from "#enums/move-id";
import { MoveUseMode } from "#enums/move-use-mode";
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
import { PokeballType } from "#enums/pokeball";
import { SpeciesId } from "#enums/species-id";
import { Stat } from "#enums/stat";
import { TrainerSlot } from "#enums/trainer-slot";
import type { Pokemon } from "#field/pokemon";
import { EnemyPokemon } from "#field/pokemon";
import { BerryModifier, PokemonInstantReviveModifier } from "#modifiers/modifier";
import type { BerryModifierType, PokemonHeldItemModifierType } from "#modifiers/modifier-type";
import { PokemonMove } from "#moves/pokemon-move";
import { queueEncounterMessage } from "#mystery-encounters/encounter-dialogue-utils";
import type { EnemyPartyConfig } from "#mystery-encounters/encounter-phase-utils";
import { import {
generateModifierType, generateModifierType,
initBattleWithEnemyConfig, initBattleWithEnemyConfig,
leaveEncounterWithoutBattle, leaveEncounterWithoutBattle,
setEncounterRewards, setEncounterRewards,
transitionMysteryEncounterIntroVisuals, transitionMysteryEncounterIntroVisuals,
} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; } from "#mystery-encounters/encounter-phase-utils";
import type Pokemon from "#app/field/pokemon";
import { EnemyPokemon } from "#app/field/pokemon";
import { PokemonMove } from "#app/data/moves/pokemon-move";
import type { BerryModifierType, PokemonHeldItemModifierType } from "#app/modifier/modifier-type";
import { modifierTypes } from "#app/data/data-lists";
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
import { SpeciesId } from "#enums/species-id";
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";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
import { BerryModifier, PokemonInstantReviveModifier } from "#app/modifier/modifier";
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
import { MoveId } from "#enums/move-id";
import { BattlerTagType } from "#enums/battler-tag-type";
import { randInt } from "#app/utils/common";
import { BattlerIndex } from "#enums/battler-index";
import { import {
applyModifierTypeToPlayerPokemon, applyModifierTypeToPlayerPokemon,
catchPokemon, catchPokemon,
getHighestLevelPlayerPokemon, getHighestLevelPlayerPokemon,
} from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; } from "#mystery-encounters/encounter-pokemon-utils";
import { TrainerSlot } from "#enums/trainer-slot"; import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter";
import { PokeballType } from "#enums/pokeball"; import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter";
import type HeldModifierConfig from "#app/@types/held-modifier-config"; import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option";
import type { BerryType } from "#enums/berry-type"; import { PersistentModifierRequirement } from "#mystery-encounters/mystery-encounter-requirements";
import { Stat } from "#enums/stat"; import type { HeldModifierConfig } from "#types/held-modifier-config";
import { randInt } from "#utils/common";
import { getPokemonSpecies } from "#utils/pokemon-utils";
import i18next from "i18next"; import i18next from "i18next";
import { MoveUseMode } from "#enums/move-use-mode";
/** the i18n namespace for this encounter */ /** the i18n namespace for this encounter */
const namespace = "mysteryEncounters/absoluteAvarice"; const namespace = "mysteryEncounters/absoluteAvarice";

View File

@ -1,28 +1,28 @@
import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants";
import { globalScene } from "#app/global-scene";
import { speciesStarterCosts } from "#balance/starters";
import { modifierTypes } from "#data/data-lists";
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
import { SpeciesId } from "#enums/species-id";
import { import {
generateModifierType, generateModifierType,
leaveEncounterWithoutBattle, leaveEncounterWithoutBattle,
setEncounterExp, setEncounterExp,
updatePlayerMoney, updatePlayerMoney,
} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; } from "#mystery-encounters/encounter-phase-utils";
import { modifierTypes } from "#app/data/data-lists"; import { getHighestStatTotalPlayerPokemon } from "#mystery-encounters/encounter-pokemon-utils";
import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter";
import { SpeciesId } from "#enums/species-id"; import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter";
import { globalScene } from "#app/global-scene"; import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option";
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 { import {
AbilityRequirement, AbilityRequirement,
CombinationPokemonRequirement, CombinationPokemonRequirement,
MoveRequirement, MoveRequirement,
} from "#app/data/mystery-encounters/mystery-encounter-requirements"; } from "#mystery-encounters/mystery-encounter-requirements";
import { getHighestStatTotalPlayerPokemon } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; import { EXTORTION_ABILITIES, EXTORTION_MOVES } from "#mystery-encounters/requirement-groups";
import { EXTORTION_ABILITIES, EXTORTION_MOVES } from "#app/data/mystery-encounters/requirements/requirement-groups"; import { getPokemonSpecies } from "#utils/pokemon-utils";
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
import { speciesStarterCosts } from "#app/data/balance/starters";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants";
import i18next from "i18next"; import i18next from "i18next";
/** the i18n namespace for this encounter */ /** the i18n namespace for this encounter */

View File

@ -1,5 +1,20 @@
import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants";
import type { EnemyPartyConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { globalScene } from "#app/global-scene";
import { getPokemonNameWithAffix } from "#app/messages";
import { modifierTypes } from "#data/data-lists";
import { BattlerTagType } from "#enums/battler-tag-type";
import { BerryType } from "#enums/berry-type";
import { ModifierPoolType } from "#enums/modifier-pool-type";
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
import { PERMANENT_STATS, Stat } from "#enums/stat";
import type { PlayerPokemon, Pokemon } from "#field/pokemon";
import { BerryModifier } from "#modifiers/modifier";
import type { BerryModifierType, ModifierTypeOption } from "#modifiers/modifier-type";
import { regenerateModifierPoolThresholds } from "#modifiers/modifier-type";
import { queueEncounterMessage, showEncounterText } from "#mystery-encounters/encounter-dialogue-utils";
import type { EnemyPartyConfig } from "#mystery-encounters/encounter-phase-utils";
import { import {
generateModifierType, generateModifierType,
generateModifierTypeOption, generateModifierTypeOption,
@ -8,36 +23,20 @@ import {
leaveEncounterWithoutBattle, leaveEncounterWithoutBattle,
setEncounterExp, setEncounterExp,
setEncounterRewards, setEncounterRewards,
} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; } from "#mystery-encounters/encounter-phase-utils";
import type { PlayerPokemon } from "#app/field/pokemon";
import type Pokemon from "#app/field/pokemon";
import type { BerryModifierType, ModifierTypeOption } from "#app/modifier/modifier-type";
import { regenerateModifierPoolThresholds } from "#app/modifier/modifier-type";
import { modifierTypes } from "#app/data/data-lists";
import { ModifierPoolType } from "#enums/modifier-pool-type";
import { randSeedInt } from "#app/utils/common";
import { BattlerTagType } from "#enums/battler-tag-type";
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
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";
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
import { import {
applyModifierTypeToPlayerPokemon, applyModifierTypeToPlayerPokemon,
getEncounterPokemonLevelForWave, getEncounterPokemonLevelForWave,
getHighestStatPlayerPokemon, getHighestStatPlayerPokemon,
getSpriteKeysFromPokemon, getSpriteKeysFromPokemon,
STANDARD_ENCOUNTER_BOOSTED_LEVEL_MODIFIER, STANDARD_ENCOUNTER_BOOSTED_LEVEL_MODIFIER,
} from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; } from "#mystery-encounters/encounter-pokemon-utils";
import PokemonData from "#app/system/pokemon-data"; import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter";
import { BerryModifier } from "#app/modifier/modifier"; import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter";
import i18next from "#app/plugins/i18n"; import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option";
import { BerryType } from "#enums/berry-type"; import i18next from "#plugins/i18n";
import { PERMANENT_STATS, Stat } from "#enums/stat"; import { PokemonData } from "#system/pokemon-data";
import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; import { randSeedInt } from "#utils/common";
/** the i18n namespace for the encounter */ /** the i18n namespace for the encounter */
const namespace = "mysteryEncounters/berriesAbound"; const namespace = "mysteryEncounters/berriesAbound";

View File

@ -1,4 +1,29 @@
import type { EnemyPartyConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants";
import { globalScene } from "#app/global-scene";
import { allMoves, modifierTypes } from "#data/data-lists";
import { ModifierTier } from "#enums/modifier-tier";
import { MoveId } from "#enums/move-id";
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
import { PartyMemberStrength } from "#enums/party-member-strength";
import { PokemonType } from "#enums/pokemon-type";
import { SpeciesId } from "#enums/species-id";
import { TrainerSlot } from "#enums/trainer-slot";
import { TrainerType } from "#enums/trainer-type";
import type { PlayerPokemon, Pokemon } from "#field/pokemon";
import type { PokemonHeldItemModifier } from "#modifiers/modifier";
import {
AttackTypeBoosterModifier,
BypassSpeedChanceModifier,
ContactHeldItemTransferChanceModifier,
GigantamaxAccessModifier,
MegaEvolutionAccessModifier,
} from "#modifiers/modifier";
import type { AttackTypeBoosterModifierType, ModifierTypeOption } from "#modifiers/modifier-type";
import { PokemonMove } from "#moves/pokemon-move";
import { getEncounterText, showEncounterDialogue } from "#mystery-encounters/encounter-dialogue-utils";
import type { EnemyPartyConfig } from "#mystery-encounters/encounter-phase-utils";
import { import {
generateModifierType, generateModifierType,
generateModifierTypeOption, generateModifierTypeOption,
@ -8,51 +33,23 @@ import {
selectPokemonForOption, selectPokemonForOption,
setEncounterRewards, setEncounterRewards,
transitionMysteryEncounterIntroVisuals, transitionMysteryEncounterIntroVisuals,
} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; } from "#mystery-encounters/encounter-phase-utils";
import { getRandomPartyMemberFunc, trainerConfigs } from "#app/data/trainers/trainer-config"; import { getSpriteKeysFromSpecies } from "#mystery-encounters/encounter-pokemon-utils";
import { TrainerPartyCompoundTemplate } from "#app/data/trainers/TrainerPartyTemplate"; import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter";
import { TrainerPartyTemplate } from "#app/data/trainers/TrainerPartyTemplate"; import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter";
import { TrainerSlot } from "#enums/trainer-slot"; import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option";
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
import { PartyMemberStrength } from "#enums/party-member-strength";
import { globalScene } from "#app/global-scene";
import { isNullOrUndefined, randSeedInt, randSeedShuffle } from "#app/utils/common";
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 { SpeciesId } from "#enums/species-id";
import type { PlayerPokemon } from "#app/field/pokemon";
import type Pokemon from "#app/field/pokemon";
import { PokemonMove } from "#app/data/moves/pokemon-move";
import { getEncounterText, showEncounterDialogue } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils";
import { MoveId } from "#enums/move-id";
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 { import {
AttackTypeBoosterHeldItemTypeRequirement, AttackTypeBoosterHeldItemTypeRequirement,
CombinationPokemonRequirement, CombinationPokemonRequirement,
HeldItemRequirement, HeldItemRequirement,
TypeRequirement, TypeRequirement,
} from "#app/data/mystery-encounters/mystery-encounter-requirements"; } from "#mystery-encounters/mystery-encounter-requirements";
import { PokemonType } from "#enums/pokemon-type"; import { TrainerPartyCompoundTemplate, TrainerPartyTemplate } from "#trainers/TrainerPartyTemplate";
import type { AttackTypeBoosterModifierType, ModifierTypeOption } from "#app/modifier/modifier-type"; import { getRandomPartyMemberFunc, trainerConfigs } from "#trainers/trainer-config";
import { modifierTypes } from "#app/data/data-lists"; import type { OptionSelectItem } from "#ui/abstact-option-select-ui-handler";
import type { PokemonHeldItemModifier } from "#app/modifier/modifier"; import { MoveInfoOverlay } from "#ui/move-info-overlay";
import { import { isNullOrUndefined, randSeedInt, randSeedShuffle } from "#utils/common";
AttackTypeBoosterModifier,
BypassSpeedChanceModifier,
ContactHeldItemTransferChanceModifier,
GigantamaxAccessModifier,
MegaEvolutionAccessModifier,
} from "#app/modifier/modifier";
import i18next from "i18next"; import i18next from "i18next";
import MoveInfoOverlay from "#app/ui/move-info-overlay";
import { allMoves } from "#app/data/data-lists";
import { ModifierTier } from "#enums/modifier-tier";
import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants";
import { getSpriteKeysFromSpecies } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils";
/** the i18n namespace for the encounter */ /** the i18n namespace for the encounter */
const namespace = "mysteryEncounters/bugTypeSuperfan"; const namespace = "mysteryEncounters/bugTypeSuperfan";

View File

@ -1,4 +1,32 @@
import type { EnemyPartyConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants";
import { globalScene } from "#app/global-scene";
import { EncounterBattleAnim } from "#data/battle-anims";
import { allAbilities, modifierTypes } from "#data/data-lists";
import { CustomPokemonData } from "#data/pokemon-data";
import { AbilityId } from "#enums/ability-id";
import { BattlerIndex } from "#enums/battler-index";
import { BerryType } from "#enums/berry-type";
import { Challenges } from "#enums/challenges";
import { EncounterAnim } from "#enums/encounter-anims";
import { MoveCategory } from "#enums/MoveCategory";
import { ModifierPoolType } from "#enums/modifier-pool-type";
import { ModifierTier } from "#enums/modifier-tier";
import { MoveId } from "#enums/move-id";
import { MoveUseMode } from "#enums/move-use-mode";
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
import { PartyMemberStrength } from "#enums/party-member-strength";
import { PokemonType } from "#enums/pokemon-type";
import { SpeciesId } from "#enums/species-id";
import { TrainerType } from "#enums/trainer-type";
import { UiMode } from "#enums/ui-mode";
import type { PlayerPokemon } from "#field/pokemon";
import { BerryModifier } from "#modifiers/modifier";
import type { PokemonHeldItemModifierType } from "#modifiers/modifier-type";
import { PokemonMove } from "#moves/pokemon-move";
import { showEncounterDialogue, showEncounterText } from "#mystery-encounters/encounter-dialogue-utils";
import type { EnemyPartyConfig } from "#mystery-encounters/encounter-phase-utils";
import { import {
generateModifierType, generateModifierType,
initBattleWithEnemyConfig, initBattleWithEnemyConfig,
@ -7,49 +35,20 @@ import {
selectPokemonForOption, selectPokemonForOption,
setEncounterRewards, setEncounterRewards,
transitionMysteryEncounterIntroVisuals, transitionMysteryEncounterIntroVisuals,
} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; } from "#mystery-encounters/encounter-phase-utils";
import { trainerConfigs } from "#app/data/trainers/trainer-config";
import { TrainerPartyCompoundTemplate } from "#app/data/trainers/TrainerPartyTemplate";
import { TrainerPartyTemplate } from "#app/data/trainers/TrainerPartyTemplate";
import { ModifierTier } from "#enums/modifier-tier";
import type { PokemonHeldItemModifierType } from "#app/modifier/modifier-type";
import { ModifierPoolType } from "#enums/modifier-pool-type";
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
import { PartyMemberStrength } from "#enums/party-member-strength";
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 { SpeciesId } from "#enums/species-id";
import { TrainerType } from "#enums/trainer-type";
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
import { AbilityId } from "#enums/ability-id";
import { import {
applyAbilityOverrideToPokemon, applyAbilityOverrideToPokemon,
applyModifierTypeToPlayerPokemon, applyModifierTypeToPlayerPokemon,
} from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; } from "#mystery-encounters/encounter-pokemon-utils";
import { PokemonType } from "#enums/pokemon-type"; import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter";
import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter";
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option";
import { randSeedInt, randSeedShuffle } from "#app/utils/common"; import { TrainerPartyCompoundTemplate, TrainerPartyTemplate } from "#trainers/TrainerPartyTemplate";
import { showEncounterDialogue, showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; import { trainerConfigs } from "#trainers/trainer-config";
import { UiMode } from "#enums/ui-mode"; import type { OptionSelectConfig } from "#ui/abstact-option-select-ui-handler";
import { randSeedInt, randSeedShuffle } from "#utils/common";
import { getPokemonSpecies } from "#utils/pokemon-utils";
import i18next from "i18next"; import i18next from "i18next";
import type { OptionSelectConfig } from "#app/ui/abstact-option-select-ui-handler";
import type { PlayerPokemon } from "#app/field/pokemon";
import { PokemonMove } from "#app/data/moves/pokemon-move";
import { BerryModifier } from "#app/modifier/modifier";
import { BerryType } from "#enums/berry-type";
import { BattlerIndex } from "#enums/battler-index";
import { MoveId } from "#enums/move-id";
import { EncounterBattleAnim } from "#app/data/battle-anims";
import { MoveCategory } from "#enums/MoveCategory";
import { CustomPokemonData } from "#app/data/pokemon/pokemon-data";
import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants";
import { EncounterAnim } from "#enums/encounter-anims";
import { Challenges } from "#enums/challenges";
import { MoveUseMode } from "#enums/move-use-mode";
import { allAbilities, modifierTypes } from "#app/data/data-lists";
/** the i18n namespace for the encounter */ /** the i18n namespace for the encounter */
const namespace = "mysteryEncounters/clowningAround"; const namespace = "mysteryEncounters/clowningAround";

View File

@ -1,46 +1,45 @@
import { BattlerIndex } from "#enums/battler-index";
import { globalScene } from "#app/global-scene";
import { EncounterBattleAnim } from "#app/data/battle-anims";
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 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/utils/pokemon-utils";
import { TrainerSlot } from "#enums/trainer-slot";
import type { PlayerPokemon } from "#app/field/pokemon";
import type Pokemon from "#app/field/pokemon";
import { EnemyPokemon } from "#app/field/pokemon";
import { PokemonMove } from "#app/data/moves/pokemon-move";
import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants";
import { modifierTypes } from "#app/data/data-lists"; import { globalScene } from "#app/global-scene";
import PokemonData from "#app/system/pokemon-data"; import { EncounterBattleAnim } from "#data/battle-anims";
import type { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; import { modifierTypes } from "#data/data-lists";
import { BattlerIndex } from "#enums/battler-index";
import { BattlerTagType } from "#enums/battler-tag-type"; import { BattlerTagType } from "#enums/battler-tag-type";
import { BiomeId } from "#enums/biome-id"; import { BiomeId } from "#enums/biome-id";
import { EncounterAnim } from "#enums/encounter-anims"; import { EncounterAnim } from "#enums/encounter-anims";
import { MoveId } from "#enums/move-id"; import { MoveId } from "#enums/move-id";
import { MoveUseMode } from "#enums/move-use-mode";
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { MysteryEncounterType } from "#enums/mystery-encounter-type";
import { PokeballType } from "#enums/pokeball"; import { PokeballType } from "#enums/pokeball";
import { SpeciesId } from "#enums/species-id"; import { SpeciesId } from "#enums/species-id";
import { Stat } from "#enums/stat"; import { Stat } from "#enums/stat";
import { TrainerSlot } from "#enums/trainer-slot";
import type { PlayerPokemon, Pokemon } from "#field/pokemon";
import { EnemyPokemon } from "#field/pokemon";
import { PokemonMove } from "#moves/pokemon-move";
import { getEncounterText, queueEncounterMessage } from "#mystery-encounters/encounter-dialogue-utils";
import type { EnemyPartyConfig } from "#mystery-encounters/encounter-phase-utils";
import {
initBattleWithEnemyConfig,
leaveEncounterWithoutBattle,
selectPokemonForOption,
setEncounterRewards,
} from "#mystery-encounters/encounter-phase-utils";
import {
catchPokemon,
getEncounterPokemonLevelForWave,
STANDARD_ENCOUNTER_BOOSTED_LEVEL_MODIFIER,
} from "#mystery-encounters/encounter-pokemon-utils";
import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter";
import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter";
import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option";
import { MoveRequirement } from "#mystery-encounters/mystery-encounter-requirements";
import { DANCING_MOVES } from "#mystery-encounters/requirement-groups";
import { PokemonData } from "#system/pokemon-data";
import type { OptionSelectItem } from "#ui/abstact-option-select-ui-handler";
import { getPokemonSpecies } from "#utils/pokemon-utils";
import i18next from "i18next"; import i18next from "i18next";
import { MoveUseMode } from "#enums/move-use-mode";
/** the i18n namespace for this encounter */ /** the i18n namespace for this encounter */
const namespace = "mysteryEncounters/dancingLessons"; const namespace = "mysteryEncounters/dancingLessons";

View File

@ -1,25 +1,22 @@
import type { PokemonType } from "#enums/pokemon-type";
import { isNullOrUndefined, randSeedInt } from "#app/utils/common";
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
import { SpeciesId } from "#enums/species-id";
import { globalScene } from "#app/global-scene";
import { modifierTypes } from "#app/data/data-lists";
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
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 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 type { PokemonHeldItemModifier } from "#app/modifier/modifier";
import { PokemonFormChangeItemModifier } from "#app/modifier/modifier";
import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants";
import { globalScene } from "#app/global-scene";
import { modifierTypes } from "#data/data-lists";
import { Challenges } from "#enums/challenges"; import { Challenges } from "#enums/challenges";
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
import type { PokemonType } from "#enums/pokemon-type";
import { SpeciesId } from "#enums/species-id";
import type { PokemonHeldItemModifier } from "#modifiers/modifier";
import { PokemonFormChangeItemModifier } from "#modifiers/modifier";
import type { EnemyPartyConfig, EnemyPokemonConfig } from "#mystery-encounters/encounter-phase-utils";
import { initBattleWithEnemyConfig, leaveEncounterWithoutBattle } from "#mystery-encounters/encounter-phase-utils";
import { getRandomPlayerPokemon, getRandomSpeciesByStarterCost } from "#mystery-encounters/encounter-pokemon-utils";
import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter";
import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter";
import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option";
import { isNullOrUndefined, randSeedInt } from "#utils/common";
import { getPokemonSpecies } from "#utils/pokemon-utils";
/** i18n namespace for encounter */ /** i18n namespace for encounter */
const namespace = "mysteryEncounters/darkDeal"; const namespace = "mysteryEncounters/darkDeal";

View File

@ -1,42 +1,41 @@
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/utils/pokemon-utils";
import type { PlayerPokemon } from "#app/field/pokemon";
import type Pokemon from "#app/field/pokemon";
import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants";
import type { PokemonHeldItemModifier, PokemonInstantReviveModifier } from "#app/modifier/modifier"; import { timedEventManager } from "#app/global-event-manager";
import { globalScene } from "#app/global-scene";
import { modifierTypes } from "#data/data-lists";
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
import { SpeciesId } from "#enums/species-id";
import type { PlayerPokemon, Pokemon } from "#field/pokemon";
import type { PokemonHeldItemModifier, PokemonInstantReviveModifier } from "#modifiers/modifier";
import { import {
BerryModifier, BerryModifier,
HealingBoosterModifier, HealingBoosterModifier,
LevelIncrementBoosterModifier, LevelIncrementBoosterModifier,
MoneyMultiplierModifier, MoneyMultiplierModifier,
PreserveBerryModifier, PreserveBerryModifier,
} from "#app/modifier/modifier"; } from "#modifiers/modifier";
import type { PokemonHeldItemModifierType } from "#app/modifier/modifier-type"; import type { PokemonHeldItemModifierType } from "#modifiers/modifier-type";
import { modifierTypes } from "#app/data/data-lists"; import { getEncounterText, showEncounterText } from "#mystery-encounters/encounter-dialogue-utils";
import i18next from "#app/plugins/i18n"; import {
import type { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; generateModifierType,
import { randSeedItem } from "#app/utils/common"; leaveEncounterWithoutBattle,
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; selectPokemonForOption,
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; updatePlayerMoney,
import { MysteryEncounterType } from "#enums/mystery-encounter-type"; } from "#mystery-encounters/encounter-phase-utils";
import { SpeciesId } from "#enums/species-id"; import { applyModifierTypeToPlayerPokemon } from "#mystery-encounters/encounter-pokemon-utils";
import { timedEventManager } from "#app/global-event-manager"; import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter";
import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter";
import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option";
import {
CombinationPokemonRequirement,
HeldItemRequirement,
MoneyRequirement,
} from "#mystery-encounters/mystery-encounter-requirements";
import i18next from "#plugins/i18n";
import type { OptionSelectItem } from "#ui/abstact-option-select-ui-handler";
import { randSeedItem } from "#utils/common";
import { getPokemonSpecies } from "#utils/pokemon-utils";
/** the i18n namespace for this encounter */ /** the i18n namespace for this encounter */
const namespace = "mysteryEncounters/delibirdy"; const namespace = "mysteryEncounters/delibirdy";

View File

@ -1,16 +1,13 @@
import { import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants";
leaveEncounterWithoutBattle, import { modifierTypes } from "#data/data-lists";
setEncounterRewards, import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
} from "#app/data/mystery-encounters/utils/encounter-phase-utils";
import type { ModifierTypeFunc } from "#app/@types/modifier-types";
import { modifierTypes } from "#app/data/data-lists";
import { randSeedInt } from "#app/utils/common";
import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { MysteryEncounterType } from "#enums/mystery-encounter-type";
import { SpeciesId } from "#enums/species-id"; import { SpeciesId } from "#enums/species-id";
import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; import { leaveEncounterWithoutBattle, setEncounterRewards } from "#mystery-encounters/encounter-phase-utils";
import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter";
import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; import type { ModifierTypeFunc } from "#types/modifier-types";
import { randSeedInt } from "#utils/common";
/** i18n namespace for encounter */ /** i18n namespace for encounter */
const namespace = "mysteryEncounters/departmentStoreSale"; const namespace = "mysteryEncounters/departmentStoreSale";

View File

@ -1,25 +1,25 @@
import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants";
import { globalScene } from "#app/global-scene";
import { modifierTypes } from "#data/data-lists";
import { MoveCategory } from "#enums/MoveCategory"; import { MoveCategory } from "#enums/MoveCategory";
import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
import { Stat } from "#enums/stat";
import type { PlayerPokemon } from "#field/pokemon";
import type { PokemonMove } from "#moves/pokemon-move";
import { import {
generateModifierTypeOption, generateModifierTypeOption,
leaveEncounterWithoutBattle, leaveEncounterWithoutBattle,
selectPokemonForOption, selectPokemonForOption,
setEncounterExp, setEncounterExp,
setEncounterRewards, setEncounterRewards,
} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; } from "#mystery-encounters/encounter-phase-utils";
import type { PlayerPokemon } from "#app/field/pokemon"; import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter";
import type { PokemonMove } from "#app/data/moves/pokemon-move"; import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter";
import { modifierTypes } from "#app/data/data-lists"; import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option";
import type { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; import type { OptionSelectItem } from "#ui/abstact-option-select-ui-handler";
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
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";
import i18next from "i18next"; import i18next from "i18next";
import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants";
/** i18n namespace for the encounter */ /** i18n namespace for the encounter */
const namespace = "mysteryEncounters/fieldTrip"; const namespace = "mysteryEncounters/fieldTrip";

View File

@ -1,52 +1,52 @@
import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants";
import type { EnemyPartyConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { globalScene } from "#app/global-scene";
import { EncounterBattleAnim } from "#data/battle-anims";
import { allAbilities, modifierTypes } from "#data/data-lists";
import { Gender } from "#data/gender";
import { AbilityId } from "#enums/ability-id";
import { BattlerIndex } from "#enums/battler-index";
import { BattlerTagType } from "#enums/battler-tag-type";
import { EncounterAnim } from "#enums/encounter-anims";
import { MoveId } from "#enums/move-id";
import { MoveUseMode } from "#enums/move-use-mode";
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
import { PokemonType } from "#enums/pokemon-type";
import { SpeciesId } from "#enums/species-id";
import { Stat } from "#enums/stat";
import { StatusEffect } from "#enums/status-effect";
import { WeatherType } from "#enums/weather-type";
import type { Pokemon } from "#field/pokemon";
import type { AttackTypeBoosterModifierType } from "#modifiers/modifier-type";
import { PokemonMove } from "#moves/pokemon-move";
import { queueEncounterMessage } from "#mystery-encounters/encounter-dialogue-utils";
import type { EnemyPartyConfig } from "#mystery-encounters/encounter-phase-utils";
import { import {
generateModifierType,
initBattleWithEnemyConfig, initBattleWithEnemyConfig,
loadCustomMovesForEncounter,
leaveEncounterWithoutBattle, leaveEncounterWithoutBattle,
loadCustomMovesForEncounter,
setEncounterExp, setEncounterExp,
setEncounterRewards, setEncounterRewards,
transitionMysteryEncounterIntroVisuals, transitionMysteryEncounterIntroVisuals,
generateModifierType, } from "#mystery-encounters/encounter-phase-utils";
} from "#app/data/mystery-encounters/utils/encounter-phase-utils";
import type { AttackTypeBoosterModifierType } from "#app/modifier/modifier-type";
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
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 { SpeciesId } from "#enums/species-id";
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
import { Gender } from "#app/data/gender";
import { PokemonType } from "#enums/pokemon-type";
import { BattlerIndex } from "#enums/battler-index";
import type Pokemon from "#app/field/pokemon";
import { PokemonMove } from "#app/data/moves/pokemon-move";
import { MoveId } from "#enums/move-id";
import { EncounterBattleAnim } from "#app/data/battle-anims";
import { WeatherType } from "#enums/weather-type";
import { isNullOrUndefined, randSeedInt } from "#app/utils/common";
import { StatusEffect } from "#enums/status-effect";
import { queueEncounterMessage } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils";
import { import {
applyAbilityOverrideToPokemon, applyAbilityOverrideToPokemon,
applyDamageToPokemon, applyDamageToPokemon,
applyModifierTypeToPlayerPokemon, applyModifierTypeToPlayerPokemon,
} from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; } from "#mystery-encounters/encounter-pokemon-utils";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter";
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter";
import { EncounterAnim } from "#enums/encounter-anims"; import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option";
import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; import {
import { AbilityId } from "#enums/ability-id"; AbilityRequirement,
import { BattlerTagType } from "#enums/battler-tag-type"; CombinationPokemonRequirement,
import { Stat } from "#enums/stat"; TypeRequirement,
import { FIRE_RESISTANT_ABILITIES } from "#app/data/mystery-encounters/requirements/requirement-groups"; } from "#mystery-encounters/mystery-encounter-requirements";
import { MoveUseMode } from "#enums/move-use-mode"; import { FIRE_RESISTANT_ABILITIES } from "#mystery-encounters/requirement-groups";
import { allAbilities, modifierTypes } from "#app/data/data-lists"; import { isNullOrUndefined, randSeedInt } from "#utils/common";
import { getPokemonSpecies } from "#utils/pokemon-utils";
/** the i18n namespace for the encounter */ /** the i18n namespace for the encounter */
const namespace = "mysteryEncounters/fieryFallout"; const namespace = "mysteryEncounters/fieryFallout";

View File

@ -1,35 +1,35 @@
import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants";
import type { EnemyPartyConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { globalScene } from "#app/global-scene";
import { BattlerTagType } from "#enums/battler-tag-type";
import { ModifierPoolType } from "#enums/modifier-pool-type";
import { ModifierTier } from "#enums/modifier-tier";
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
import type { Pokemon } from "#field/pokemon";
import type { ModifierTypeOption } from "#modifiers/modifier-type";
import { getPlayerModifierTypeOptions, regenerateModifierPoolThresholds } from "#modifiers/modifier-type";
import { queueEncounterMessage } from "#mystery-encounters/encounter-dialogue-utils";
import type { EnemyPartyConfig } from "#mystery-encounters/encounter-phase-utils";
import { import {
getRandomEncounterSpecies, getRandomEncounterSpecies,
initBattleWithEnemyConfig, initBattleWithEnemyConfig,
leaveEncounterWithoutBattle, leaveEncounterWithoutBattle,
setEncounterExp, setEncounterExp,
setEncounterRewards, setEncounterRewards,
} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; } from "#mystery-encounters/encounter-phase-utils";
import { STEALING_MOVES } from "#app/data/mystery-encounters/requirements/requirement-groups";
import type Pokemon from "#app/field/pokemon";
import { ModifierTier } from "#enums/modifier-tier";
import type { ModifierTypeOption } from "#app/modifier/modifier-type";
import { getPlayerModifierTypeOptions, regenerateModifierPoolThresholds } from "#app/modifier/modifier-type";
import { ModifierPoolType } from "#enums/modifier-pool-type";
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
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";
import { import {
getEncounterPokemonLevelForWave, getEncounterPokemonLevelForWave,
getSpriteKeysFromPokemon, getSpriteKeysFromPokemon,
STANDARD_ENCOUNTER_BOOSTED_LEVEL_MODIFIER, STANDARD_ENCOUNTER_BOOSTED_LEVEL_MODIFIER,
} from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; } from "#mystery-encounters/encounter-pokemon-utils";
import PokemonData from "#app/system/pokemon-data"; import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter";
import { BattlerTagType } from "#enums/battler-tag-type"; import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter";
import { queueEncounterMessage } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option";
import { randSeedInt } from "#app/utils/common"; import { MoveRequirement } from "#mystery-encounters/mystery-encounter-requirements";
import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; import { STEALING_MOVES } from "#mystery-encounters/requirement-groups";
import { PokemonData } from "#system/pokemon-data";
import { randSeedInt } from "#utils/common";
/** the i18n namespace for the encounter */ /** the i18n namespace for the encounter */
const namespace = "mysteryEncounters/fightOrFlight"; const namespace = "mysteryEncounters/fightOrFlight";

View File

@ -1,35 +1,34 @@
import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants";
import { globalScene } from "#app/global-scene";
import { getPokemonNameWithAffix } from "#app/messages";
import { modifierTypes } from "#data/data-lists";
import { SpeciesFormChangeActiveTrigger } from "#data/form-change-triggers";
import { getPokeballAtlasKey, getPokeballTintColor } from "#data/pokeball";
import { FieldPosition } from "#enums/field-position";
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
import { Nature } from "#enums/nature";
import { PlayerGender } from "#enums/player-gender";
import { SpeciesId } from "#enums/species-id";
import { TrainerSlot } from "#enums/trainer-slot";
import { addPokeballOpenParticles } from "#field/anims";
import type { PlayerPokemon, Pokemon } from "#field/pokemon";
import { queueEncounterMessage, showEncounterText } from "#mystery-encounters/encounter-dialogue-utils";
import { import {
leaveEncounterWithoutBattle, leaveEncounterWithoutBattle,
selectPokemonForOption, selectPokemonForOption,
setEncounterRewards, setEncounterRewards,
transitionMysteryEncounterIntroVisuals, transitionMysteryEncounterIntroVisuals,
updatePlayerMoney, updatePlayerMoney,
} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; } from "#mystery-encounters/encounter-phase-utils";
import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { isPokemonValidForEncounterOptionSelection } from "#mystery-encounters/encounter-pokemon-utils";
import { globalScene } from "#app/global-scene"; import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter";
import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter";
import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option";
import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; import { MoneyRequirement } from "#mystery-encounters/mystery-encounter-requirements";
import { TrainerSlot } from "#enums/trainer-slot"; import { getPokemonSpecies } from "#utils/pokemon-utils";
import type { PlayerPokemon } from "#app/field/pokemon";
import type Pokemon from "#app/field/pokemon";
import { FieldPosition } from "#enums/field-position";
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
import { MoneyRequirement } from "#app/data/mystery-encounters/mystery-encounter-requirements";
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 { SpeciesId } from "#enums/species-id";
import i18next from "i18next"; import i18next from "i18next";
import { getPokemonNameWithAffix } from "#app/messages";
import { PlayerGender } from "#enums/player-gender";
import { getPokeballAtlasKey, getPokeballTintColor } from "#app/data/pokeball";
import { addPokeballOpenParticles } from "#app/field/anims";
import { SpeciesFormChangeActiveTrigger } from "#app/data/pokemon-forms/form-change-triggers";
import { modifierTypes } from "#app/data/data-lists";
import { Nature } from "#enums/nature";
import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants";
import { isPokemonValidForEncounterOptionSelection } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils";
/** the i18n namespace for the encounter */ /** the i18n namespace for the encounter */
const namespace = "mysteryEncounters/funAndGames"; const namespace = "mysteryEncounters/funAndGames";

View File

@ -1,58 +1,50 @@
import { import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants";
leaveEncounterWithoutBattle, import { timedEventManager } from "#app/global-event-manager";
selectPokemonForOption,
setEncounterRewards,
} from "#app/data/mystery-encounters/utils/encounter-phase-utils";
import { TrainerSlot } from "#enums/trainer-slot";
import { ModifierTier } from "#enums/modifier-tier";
import { MusicPreference } from "#app/system/settings/settings";
import type { ModifierTypeOption } from "#app/modifier/modifier-type";
import { getPlayerModifierTypeOptions, regenerateModifierPoolThresholds } from "#app/modifier/modifier-type";
import { ModifierPoolType } from "#enums/modifier-pool-type";
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; import { allSpecies } from "#data/data-lists";
import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; import { Gender, getGenderSymbol } from "#data/gender";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { getNatureName } from "#data/nature";
import { SpeciesId } from "#enums/species-id"; import { getPokeballAtlasKey, getPokeballTintColor } from "#data/pokeball";
import type PokemonSpecies from "#app/data/pokemon-species"; import type { PokemonSpecies } from "#data/pokemon-species";
import { getPokemonSpecies } from "#app/utils/pokemon-utils"; import { getTypeRgb } from "#data/type";
import { allSpecies } from "#app/data/data-lists"; import { ModifierPoolType } from "#enums/modifier-pool-type";
import { getTypeRgb } from "#app/data/type"; import { ModifierTier } from "#enums/modifier-tier";
import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option";
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
import { import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
NumberHolder, import { MysteryEncounterType } from "#enums/mystery-encounter-type";
isNullOrUndefined, import type { PokeballType } from "#enums/pokeball";
randInt, import { SpeciesId } from "#enums/species-id";
randSeedInt, import { TrainerSlot } from "#enums/trainer-slot";
randSeedShuffle, import { TrainerType } from "#enums/trainer-type";
randSeedItem, import { doShinySparkleAnim } from "#field/anims";
} from "#app/utils/common"; import type { PlayerPokemon, Pokemon } from "#field/pokemon";
import type { PlayerPokemon } from "#app/field/pokemon"; import { EnemyPokemon } from "#field/pokemon";
import type Pokemon from "#app/field/pokemon"; import type { PokemonHeldItemModifier } from "#modifiers/modifier";
import { EnemyPokemon } from "#app/field/pokemon";
import { PokemonMove } from "#app/data/moves/pokemon-move";
import type { PokemonHeldItemModifier } from "#app/modifier/modifier";
import { import {
HiddenAbilityRateBoosterModifier, HiddenAbilityRateBoosterModifier,
PokemonFormChangeItemModifier, PokemonFormChangeItemModifier,
ShinyRateBoosterModifier, ShinyRateBoosterModifier,
SpeciesStatBoosterModifier, SpeciesStatBoosterModifier,
} from "#app/modifier/modifier"; } from "#modifiers/modifier";
import type { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; import type { ModifierTypeOption } from "#modifiers/modifier-type";
import PokemonData from "#app/system/pokemon-data"; import { getPlayerModifierTypeOptions, regenerateModifierPoolThresholds } from "#modifiers/modifier-type";
import { PokemonMove } from "#moves/pokemon-move";
import { getEncounterText, showEncounterText } from "#mystery-encounters/encounter-dialogue-utils";
import {
leaveEncounterWithoutBattle,
selectPokemonForOption,
setEncounterRewards,
} from "#mystery-encounters/encounter-phase-utils";
import { addPokemonDataToDexAndValidateAchievements } from "#mystery-encounters/encounter-pokemon-utils";
import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter";
import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter";
import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option";
import { PokemonData } from "#system/pokemon-data";
import { MusicPreference } from "#system/settings";
import type { OptionSelectItem } from "#ui/abstact-option-select-ui-handler";
import { isNullOrUndefined, NumberHolder, randInt, randSeedInt, randSeedItem, randSeedShuffle } from "#utils/common";
import { getPokemonSpecies } from "#utils/pokemon-utils";
import i18next from "i18next"; import i18next from "i18next";
import { Gender, getGenderSymbol } from "#app/data/gender";
import { getNatureName } from "#app/data/nature";
import { getPokeballAtlasKey, getPokeballTintColor } from "#app/data/pokeball";
import { getEncounterText, showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils";
import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants";
import { addPokemonDataToDexAndValidateAchievements } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils";
import type { PokeballType } from "#enums/pokeball";
import { doShinySparkleAnim } from "#app/field/anims";
import { TrainerType } from "#enums/trainer-type";
import { timedEventManager } from "#app/global-event-manager";
/** the i18n namespace for the encounter */ /** the i18n namespace for the encounter */
const namespace = "mysteryEncounters/globalTradeSystem"; const namespace = "mysteryEncounters/globalTradeSystem";

View File

@ -1,17 +1,17 @@
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
import { MoveId } from "#enums/move-id";
import { SpeciesId } from "#enums/species-id";
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
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";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants";
import { PokemonMove } from "#app/data/moves/pokemon-move"; import { globalScene } from "#app/global-scene";
import { MoveId } from "#enums/move-id";
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
import { SpeciesId } from "#enums/species-id";
import { PokemonMove } from "#moves/pokemon-move";
import { leaveEncounterWithoutBattle, setEncounterExp } from "#mystery-encounters/encounter-phase-utils";
import { applyDamageToPokemon } from "#mystery-encounters/encounter-pokemon-utils";
import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter";
import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter";
import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option";
import { getPokemonSpecies } from "#utils/pokemon-utils";
const OPTION_1_REQUIRED_MOVE = MoveId.SURF; const OPTION_1_REQUIRED_MOVE = MoveId.SURF;
const OPTION_2_REQUIRED_MOVE = MoveId.FLY; const OPTION_2_REQUIRED_MOVE = MoveId.FLY;

View File

@ -1,22 +1,21 @@
import type { EnemyPartyConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants";
import { import { globalScene } from "#app/global-scene";
initBattleWithEnemyConfig, import { modifierTypes } from "#data/data-lists";
setEncounterRewards,
} from "#app/data/mystery-encounters/utils/encounter-phase-utils";
import { trainerConfigs } from "#app/data/trainers/trainer-config";
import { trainerPartyTemplates } from "#app/data/trainers/TrainerPartyTemplate";
import { TrainerPartyCompoundTemplate } from "#app/data/trainers/TrainerPartyTemplate";
import { TrainerPartyTemplate } from "#app/data/trainers/TrainerPartyTemplate";
import { ModifierTier } from "#enums/modifier-tier"; import { ModifierTier } from "#enums/modifier-tier";
import { modifierTypes } from "#app/data/data-lists"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { MysteryEncounterType } from "#enums/mystery-encounter-type";
import { PartyMemberStrength } from "#enums/party-member-strength"; import { PartyMemberStrength } from "#enums/party-member-strength";
import { globalScene } from "#app/global-scene"; import type { EnemyPartyConfig } from "#mystery-encounters/encounter-phase-utils";
import { randSeedInt } from "#app/utils/common"; import { initBattleWithEnemyConfig, setEncounterRewards } from "#mystery-encounters/encounter-phase-utils";
import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter";
import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import {
import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; TrainerPartyCompoundTemplate,
TrainerPartyTemplate,
trainerPartyTemplates,
} from "#trainers/TrainerPartyTemplate";
import { trainerConfigs } from "#trainers/trainer-config";
import { randSeedInt } from "#utils/common";
/** the i18n namespace for the encounter */ /** the i18n namespace for the encounter */
const namespace = "mysteryEncounters/mysteriousChallengers"; const namespace = "mysteryEncounters/mysteriousChallengers";

View File

@ -1,28 +1,25 @@
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 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/utils/pokemon-utils";
import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants";
import { globalScene } from "#app/global-scene";
import { ModifierTier } from "#enums/modifier-tier"; import { ModifierTier } from "#enums/modifier-tier";
import { randSeedInt } from "#app/utils/common";
import { MoveId } from "#enums/move-id"; import { MoveId } from "#enums/move-id";
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { MysteryEncounterType } from "#enums/mystery-encounter-type";
import { SpeciesId } from "#enums/species-id"; import { SpeciesId } from "#enums/species-id";
import { queueEncounterMessage, showEncounterText } from "#mystery-encounters/encounter-dialogue-utils";
import type { EnemyPartyConfig } from "#mystery-encounters/encounter-phase-utils";
import {
initBattleWithEnemyConfig,
leaveEncounterWithoutBattle,
setEncounterRewards,
transitionMysteryEncounterIntroVisuals,
} from "#mystery-encounters/encounter-phase-utils";
import { getHighestLevelPlayerPokemon, koPlayerPokemon } from "#mystery-encounters/encounter-pokemon-utils";
import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter";
import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter";
import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option";
import { randSeedInt } from "#utils/common";
import { getPokemonSpecies } from "#utils/pokemon-utils";
/** i18n namespace for encounter */ /** i18n namespace for encounter */
const namespace = "mysteryEncounters/mysteriousChest"; const namespace = "mysteryEncounters/mysteriousChest";

View File

@ -1,4 +1,11 @@
import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants";
import { globalScene } from "#app/global-scene";
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
import { Stat } from "#enums/stat";
import type { PlayerPokemon, Pokemon } from "#field/pokemon";
import { showEncounterDialogue, showEncounterText } from "#mystery-encounters/encounter-dialogue-utils";
import { import {
leaveEncounterWithoutBattle, leaveEncounterWithoutBattle,
selectPokemonForOption, selectPokemonForOption,
@ -6,22 +13,14 @@ import {
setEncounterRewards, setEncounterRewards,
transitionMysteryEncounterIntroVisuals, transitionMysteryEncounterIntroVisuals,
updatePlayerMoney, updatePlayerMoney,
} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; } from "#mystery-encounters/encounter-phase-utils";
import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { isPokemonValidForEncounterOptionSelection } from "#mystery-encounters/encounter-pokemon-utils";
import { globalScene } from "#app/global-scene"; import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter";
import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter";
import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option";
import { MoveRequirement } from "#app/data/mystery-encounters/mystery-encounter-requirements"; import { MoveRequirement } from "#mystery-encounters/mystery-encounter-requirements";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { CHARMING_MOVES } from "#mystery-encounters/requirement-groups";
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
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 i18next from "i18next";
import type { PlayerPokemon } from "#app/field/pokemon";
import type Pokemon from "#app/field/pokemon";
import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants";
import { isPokemonValidForEncounterOptionSelection } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils";
/** the i18n namespace for the encounter */ /** the i18n namespace for the encounter */
const namespace = "mysteryEncounters/partTimer"; const namespace = "mysteryEncounters/partTimer";

View File

@ -1,36 +1,36 @@
import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants";
import { globalScene } from "#app/global-scene";
import { getPokemonNameWithAffix } from "#app/messages";
import { NON_LEGEND_PARADOX_POKEMON } from "#balance/special-species-groups";
import type { PokemonSpecies } from "#data/pokemon-species";
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
import { PlayerGender } from "#enums/player-gender";
import { PokeballType } from "#enums/pokeball";
import { TrainerSlot } from "#enums/trainer-slot";
import type { EnemyPokemon } from "#field/pokemon";
import { HiddenAbilityRateBoosterModifier, IvScannerModifier } from "#modifiers/modifier";
import { getEncounterText, showEncounterText } from "#mystery-encounters/encounter-dialogue-utils";
import { import {
initSubsequentOptionSelect, initSubsequentOptionSelect,
leaveEncounterWithoutBattle, leaveEncounterWithoutBattle,
transitionMysteryEncounterIntroVisuals, transitionMysteryEncounterIntroVisuals,
updatePlayerMoney, updatePlayerMoney,
} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; } from "#mystery-encounters/encounter-phase-utils";
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
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 "#enums/trainer-slot";
import { HiddenAbilityRateBoosterModifier, IvScannerModifier } from "#app/modifier/modifier";
import type { EnemyPokemon } from "#app/field/pokemon";
import { PokeballType } from "#enums/pokeball";
import { PlayerGender } from "#enums/player-gender";
import { NumberHolder, randSeedInt } from "#app/utils/common";
import type PokemonSpecies from "#app/data/pokemon-species";
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
import { MoneyRequirement } from "#app/data/mystery-encounters/mystery-encounter-requirements";
import { import {
doPlayerFlee, doPlayerFlee,
doPokemonFlee, doPokemonFlee,
getRandomSpeciesByStarterCost, getRandomSpeciesByStarterCost,
trainerThrowPokeball, trainerThrowPokeball,
} from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; } from "#mystery-encounters/encounter-pokemon-utils";
import { getEncounterText, showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter";
import { getPokemonNameWithAffix } from "#app/messages"; import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import type { MysteryEncounterOption } from "#mystery-encounters/mystery-encounter-option";
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option";
import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; import { MoneyRequirement } from "#mystery-encounters/mystery-encounter-requirements";
import { NON_LEGEND_PARADOX_POKEMON } from "#app/data/balance/special-species-groups"; import { NumberHolder, randSeedInt } from "#utils/common";
import { getPokemonSpecies } from "#utils/pokemon-utils";
/** the i18n namespace for the encounter */ /** the i18n namespace for the encounter */
const namespace = "mysteryEncounters/safariZone"; const namespace = "mysteryEncounters/safariZone";

View File

@ -1,32 +1,31 @@
import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants";
import { globalScene } from "#app/global-scene";
import { modifierTypes } from "#data/data-lists";
import { getNatureName } from "#data/nature";
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
import type { Nature } from "#enums/nature";
import { SpeciesId } from "#enums/species-id";
import type { PlayerPokemon, Pokemon } from "#field/pokemon";
import { getEncounterText, queueEncounterMessage } from "#mystery-encounters/encounter-dialogue-utils";
import { import {
generateModifierType, generateModifierType,
leaveEncounterWithoutBattle, leaveEncounterWithoutBattle,
selectPokemonForOption, selectPokemonForOption,
setEncounterExp, setEncounterExp,
updatePlayerMoney, updatePlayerMoney,
} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; } from "#mystery-encounters/encounter-phase-utils";
import type { PlayerPokemon } from "#app/field/pokemon";
import type Pokemon from "#app/field/pokemon";
import { modifierTypes } from "#app/data/data-lists";
import { randSeedInt } from "#app/utils/common";
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
import { SpeciesId } from "#enums/species-id";
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 { import {
applyDamageToPokemon, applyDamageToPokemon,
applyModifierTypeToPlayerPokemon, applyModifierTypeToPlayerPokemon,
isPokemonValidForEncounterOptionSelection, isPokemonValidForEncounterOptionSelection,
} from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; } from "#mystery-encounters/encounter-pokemon-utils";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter";
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter";
import type { Nature } from "#enums/nature"; import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option";
import { getNatureName } from "#app/data/nature"; import { MoneyRequirement } from "#mystery-encounters/mystery-encounter-requirements";
import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants"; import { randSeedInt } from "#utils/common";
import i18next from "i18next"; import i18next from "i18next";
/** the i18n namespace for this encounter */ /** the i18n namespace for this encounter */

View File

@ -1,15 +1,22 @@
import { STEALING_MOVES } from "#app/data/mystery-encounters/requirements/requirement-groups";
import type { PokemonHeldItemModifierType } from "#app/modifier/modifier-type";
import { modifierTypes } from "#app/data/data-lists";
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
import { SpeciesId } from "#enums/species-id";
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
import { modifierTypes } from "#data/data-lists";
import { CustomPokemonData } from "#data/pokemon-data";
import { AiType } from "#enums/ai-type";
import { BattlerIndex } from "#enums/battler-index";
import { BerryType } from "#enums/berry-type";
import { MoveId } from "#enums/move-id";
import { MoveUseMode } from "#enums/move-use-mode";
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
import { Nature } from "#enums/nature";
import { SpeciesId } from "#enums/species-id";
import { Stat } from "#enums/stat";
import { StatusEffect } from "#enums/status-effect"; import { StatusEffect } from "#enums/status-effect";
import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; import type { PokemonHeldItemModifierType } from "#modifiers/modifier-type";
import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; import { PokemonMove } from "#moves/pokemon-move";
import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; import { queueEncounterMessage } from "#mystery-encounters/encounter-dialogue-utils";
import { MoveRequirement } from "#app/data/mystery-encounters/mystery-encounter-requirements"; import type { EnemyPartyConfig, EnemyPokemonConfig } from "#mystery-encounters/encounter-phase-utils";
import type { EnemyPartyConfig, EnemyPokemonConfig } from "../utils/encounter-phase-utils";
import { import {
generateModifierType, generateModifierType,
initBattleWithEnemyConfig, initBattleWithEnemyConfig,
@ -17,21 +24,14 @@ import {
loadCustomMovesForEncounter, loadCustomMovesForEncounter,
setEncounterExp, setEncounterExp,
setEncounterRewards, setEncounterRewards,
} from "../utils/encounter-phase-utils"; } from "#mystery-encounters/encounter-phase-utils";
import { queueEncounterMessage } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter";
import { Nature } from "#enums/nature"; import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter";
import { MoveId } from "#enums/move-id"; import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option";
import { BattlerIndex } from "#enums/battler-index"; import { MoveRequirement } from "#mystery-encounters/mystery-encounter-requirements";
import { PokemonMove } from "#app/data/moves/pokemon-move"; import { STEALING_MOVES } from "#mystery-encounters/requirement-groups";
import { AiType } from "#enums/ai-type"; import { randSeedInt } from "#utils/common";
import { getPokemonSpecies } from "#app/utils/pokemon-utils"; import { getPokemonSpecies } from "#utils/pokemon-utils";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
import { BerryType } from "#enums/berry-type";
import { Stat } from "#enums/stat";
import { CustomPokemonData } from "#app/data/pokemon/pokemon-data";
import { randSeedInt } from "#app/utils/common";
import { MoveUseMode } from "#enums/move-use-mode";
/** i18n namespace for the encounter */ /** i18n namespace for the encounter */
const namespace = "mysteryEncounters/slumberingSnorlax"; const namespace = "mysteryEncounters/slumberingSnorlax";

View File

@ -1,4 +1,21 @@
import type { EnemyPartyConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants";
import { globalScene } from "#app/global-scene";
import { getPokemonNameWithAffix } from "#app/messages";
import { modifierTypes } from "#data/data-lists";
import { BattlerTagType } from "#enums/battler-tag-type";
import { BiomeId } from "#enums/biome-id";
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
import { PokemonType } from "#enums/pokemon-type";
import { Stat } from "#enums/stat";
import { TrainerSlot } from "#enums/trainer-slot";
import { getBiomeKey } from "#field/arena";
import type { Pokemon } from "#field/pokemon";
import { EnemyPokemon } from "#field/pokemon";
import { getPartyLuckValue } from "#modifiers/modifier-type";
import { queueEncounterMessage, showEncounterText } from "#mystery-encounters/encounter-dialogue-utils";
import type { EnemyPartyConfig } from "#mystery-encounters/encounter-phase-utils";
import { import {
generateModifierTypeOption, generateModifierTypeOption,
initBattleWithEnemyConfig, initBattleWithEnemyConfig,
@ -6,34 +23,17 @@ import {
setEncounterRewards, setEncounterRewards,
transitionMysteryEncounterIntroVisuals, transitionMysteryEncounterIntroVisuals,
updatePlayerMoney, updatePlayerMoney,
} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; } from "#mystery-encounters/encounter-phase-utils";
import { randSeedInt } from "#app/utils/common";
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
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 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";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
import { BiomeId } from "#enums/biome-id";
import { getBiomeKey } from "#app/field/arena";
import { PokemonType } from "#enums/pokemon-type";
import { getPartyLuckValue } from "#app/modifier/modifier-type";
import { modifierTypes } from "#app/data/data-lists";
import { TrainerSlot } from "#enums/trainer-slot";
import { BattlerTagType } from "#enums/battler-tag-type";
import { getPokemonNameWithAffix } from "#app/messages";
import { Stat } from "#enums/stat";
import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants";
import { import {
getEncounterPokemonLevelForWave, getEncounterPokemonLevelForWave,
STANDARD_ENCOUNTER_BOOSTED_LEVEL_MODIFIER, STANDARD_ENCOUNTER_BOOSTED_LEVEL_MODIFIER,
} from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; } from "#mystery-encounters/encounter-pokemon-utils";
import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter";
import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter";
import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option";
import { MoneyRequirement, WaveModulusRequirement } from "#mystery-encounters/mystery-encounter-requirements";
import { PokemonData } from "#system/pokemon-data";
import { randSeedInt } from "#utils/common";
/** the i18n namespace for this encounter */ /** the i18n namespace for this encounter */
const namespace = "mysteryEncounters/teleportingHijinks"; const namespace = "mysteryEncounters/teleportingHijinks";

View File

@ -1,34 +1,34 @@
import type { EnemyPartyConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { globalScene } from "#app/global-scene";
import { speciesStarterCosts } from "#balance/starters";
import { modifierTypes } from "#data/data-lists";
import type { IEggOptions } from "#data/egg";
import { getPokeballTintColor } from "#data/pokeball";
import { BiomeId } from "#enums/biome-id";
import { EggSourceType } from "#enums/egg-source-types";
import { EggTier } from "#enums/egg-type";
import { MoveId } from "#enums/move-id";
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
import { Nature } from "#enums/nature";
import { PokemonType } from "#enums/pokemon-type";
import { SpeciesId } from "#enums/species-id";
import { TrainerType } from "#enums/trainer-type";
import type { PlayerPokemon } from "#field/pokemon";
import { getEncounterText } from "#mystery-encounters/encounter-dialogue-utils";
import type { EnemyPartyConfig } from "#mystery-encounters/encounter-phase-utils";
import { import {
handleMysteryEncounterBattleFailed, handleMysteryEncounterBattleFailed,
initBattleWithEnemyConfig, initBattleWithEnemyConfig,
setEncounterRewards, setEncounterRewards,
} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; } from "#mystery-encounters/encounter-phase-utils";
import { trainerConfigs } from "#app/data/trainers/trainer-config"; import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter";
import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter";
import { globalScene } from "#app/global-scene"; import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option";
import { randSeedShuffle } from "#app/utils/common"; import { trainerConfigs } from "#trainers/trainer-config";
import type MysteryEncounter from "../mystery-encounter"; import { randSeedShuffle } from "#utils/common";
import { MysteryEncounterBuilder } from "../mystery-encounter"; import { getPokemonSpecies } from "#utils/pokemon-utils";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
import { BiomeId } from "#enums/biome-id";
import { TrainerType } from "#enums/trainer-type";
import i18next from "i18next"; import i18next from "i18next";
import { SpeciesId } from "#enums/species-id";
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
import { speciesStarterCosts } from "#app/data/balance/starters";
import { Nature } from "#enums/nature";
import { MoveId } from "#enums/move-id";
import type { PlayerPokemon } from "#app/field/pokemon";
import { getEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils";
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 } from "#app/data/data-lists";
import { PokemonType } from "#enums/pokemon-type";
import { getPokeballTintColor } from "#app/data/pokeball";
/** the i18n namespace for the encounter */ /** the i18n namespace for the encounter */
const namespace = "mysteryEncounters/theExpertPokemonBreeder"; const namespace = "mysteryEncounters/theExpertPokemonBreeder";

View File

@ -1,35 +1,35 @@
import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants";
import { timedEventManager } from "#app/global-event-manager";
import { globalScene } from "#app/global-scene";
import { NON_LEGEND_PARADOX_POKEMON, NON_LEGEND_ULTRA_BEASTS } from "#balance/special-species-groups";
import { speciesStarterCosts } from "#balance/starters";
import type { PokemonSpecies } from "#data/pokemon-species";
import { AbilityId } from "#enums/ability-id";
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
import { PokeballType } from "#enums/pokeball";
import { SpeciesId } from "#enums/species-id";
import type { EnemyPokemon } from "#field/pokemon";
import { PlayerPokemon } from "#field/pokemon";
import { showEncounterDialogue } from "#mystery-encounters/encounter-dialogue-utils";
import { import {
leaveEncounterWithoutBattle, leaveEncounterWithoutBattle,
transitionMysteryEncounterIntroVisuals, transitionMysteryEncounterIntroVisuals,
updatePlayerMoney, updatePlayerMoney,
} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; } from "#mystery-encounters/encounter-phase-utils";
import { isNullOrUndefined, randSeedInt, randSeedItem } from "#app/utils/common";
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
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 { import {
catchPokemon, catchPokemon,
getRandomSpeciesByStarterCost, getRandomSpeciesByStarterCost,
getSpriteKeysFromPokemon, getSpriteKeysFromPokemon,
} from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; } from "#mystery-encounters/encounter-pokemon-utils";
import type PokemonSpecies from "#app/data/pokemon-species"; import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter";
import { getPokemonSpecies } from "#app/utils/pokemon-utils"; import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter";
import { speciesStarterCosts } from "#app/data/balance/starters"; import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option";
import { SpeciesId } from "#enums/species-id"; import { MoneyRequirement } from "#mystery-encounters/mystery-encounter-requirements";
import { PokeballType } from "#enums/pokeball"; import { PokemonData } from "#system/pokemon-data";
import type { EnemyPokemon } from "#app/field/pokemon"; import { isNullOrUndefined, randSeedInt, randSeedItem } from "#utils/common";
import { PlayerPokemon } from "#app/field/pokemon"; import { getPokemonSpecies } from "#utils/pokemon-utils";
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";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants";
import { AbilityId } from "#enums/ability-id";
import { NON_LEGEND_PARADOX_POKEMON, NON_LEGEND_ULTRA_BEASTS } from "#app/data/balance/special-species-groups";
import { timedEventManager } from "#app/global-event-manager";
/** the i18n namespace for this encounter */ /** the i18n namespace for this encounter */
const namespace = "mysteryEncounters/thePokemonSalesman"; const namespace = "mysteryEncounters/thePokemonSalesman";

View File

@ -1,34 +1,34 @@
import type { EnemyPartyConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants";
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/data/data-lists";
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; import { modifierTypes } from "#data/data-lists";
import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; import { CustomPokemonData } from "#data/pokemon-data";
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
import { SpeciesId } from "#enums/species-id";
import { Nature } from "#enums/nature";
import type Pokemon from "#app/field/pokemon";
import { PokemonMove } from "#app/data/moves/pokemon-move";
import { queueEncounterMessage, showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils";
import { modifyPlayerPokemonBST } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils";
import { MoveId } from "#enums/move-id";
import { BattlerIndex } from "#enums/battler-index"; import { BattlerIndex } from "#enums/battler-index";
import { BattlerTagType } from "#enums/battler-tag-type"; import { BattlerTagType } from "#enums/battler-tag-type";
import { BerryType } from "#enums/berry-type"; import { BerryType } from "#enums/berry-type";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import { MoveId } from "#enums/move-id";
import { CustomPokemonData } from "#app/data/pokemon/pokemon-data";
import { Stat } from "#enums/stat";
import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants";
import { MoveUseMode } from "#enums/move-use-mode"; import { MoveUseMode } from "#enums/move-use-mode";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
import { Nature } from "#enums/nature";
import { SpeciesId } from "#enums/species-id";
import { Stat } from "#enums/stat";
import type { Pokemon } from "#field/pokemon";
import type { PokemonHeldItemModifierType } from "#modifiers/modifier-type";
import { PokemonMove } from "#moves/pokemon-move";
import { queueEncounterMessage, showEncounterText } from "#mystery-encounters/encounter-dialogue-utils";
import type { EnemyPartyConfig } from "#mystery-encounters/encounter-phase-utils";
import {
generateModifierType,
initBattleWithEnemyConfig,
leaveEncounterWithoutBattle,
loadCustomMovesForEncounter,
setEncounterRewards,
transitionMysteryEncounterIntroVisuals,
} from "#mystery-encounters/encounter-phase-utils";
import { modifyPlayerPokemonBST } from "#mystery-encounters/encounter-pokemon-utils";
import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter";
import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter";
import { getPokemonSpecies } from "#utils/pokemon-utils";
/** the i18n namespace for the encounter */ /** the i18n namespace for the encounter */
const namespace = "mysteryEncounters/theStrongStuff"; const namespace = "mysteryEncounters/theStrongStuff";

View File

@ -1,4 +1,24 @@
import type { EnemyPartyConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { applyAbAttrs } from "#abilities/apply-ab-attrs";
import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants";
import { globalScene } from "#app/global-scene";
import { modifierTypes } from "#data/data-lists";
import { SpeciesFormChangeAbilityTrigger } from "#data/form-change-triggers";
import { AbilityId } from "#enums/ability-id";
import { BattlerTagType } from "#enums/battler-tag-type";
import { BerryType } from "#enums/berry-type";
import { ModifierTier } from "#enums/modifier-tier";
import { MoveId } from "#enums/move-id";
import { MysteryEncounterMode } from "#enums/mystery-encounter-mode";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
import { Nature } from "#enums/nature";
import { PokemonType } from "#enums/pokemon-type";
import { SpeciesId } from "#enums/species-id";
import { Stat } from "#enums/stat";
import { TrainerType } from "#enums/trainer-type";
import type { PokemonHeldItemModifierType } from "#modifiers/modifier-type";
import { showEncounterDialogue, showEncounterText } from "#mystery-encounters/encounter-dialogue-utils";
import type { EnemyPartyConfig } from "#mystery-encounters/encounter-phase-utils";
import { import {
generateModifierType, generateModifierType,
generateModifierTypeOption, generateModifierTypeOption,
@ -6,31 +26,11 @@ import {
leaveEncounterWithoutBattle, leaveEncounterWithoutBattle,
setEncounterRewards, setEncounterRewards,
transitionMysteryEncounterIntroVisuals, transitionMysteryEncounterIntroVisuals,
} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; } from "#mystery-encounters/encounter-phase-utils";
import type { PokemonHeldItemModifierType } from "#app/modifier/modifier-type"; import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter";
import { modifierTypes } from "#app/data/data-lists"; import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter";
import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { getPokemonSpecies } from "#utils/pokemon-utils";
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 { SpeciesId } from "#enums/species-id";
import { AbilityId } from "#enums/ability-id";
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
import { MoveId } from "#enums/move-id";
import { Nature } from "#enums/nature";
import { PokemonType } from "#enums/pokemon-type";
import { BerryType } from "#enums/berry-type";
import { Stat } from "#enums/stat";
import { SpeciesFormChangeAbilityTrigger } from "#app/data/pokemon-forms/form-change-triggers";
import { applyAbAttrs } from "#app/data/abilities/apply-ab-attrs";
import { showEncounterDialogue, showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils";
import { MysteryEncounterMode } from "#enums/mystery-encounter-mode";
import i18next from "i18next"; import i18next from "i18next";
import { ModifierTier } from "#enums/modifier-tier";
import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants";
import { BattlerTagType } from "#enums/battler-tag-type";
/** the i18n namespace for the encounter */ /** the i18n namespace for the encounter */
const namespace = "mysteryEncounters/theWinstrateChallenge"; const namespace = "mysteryEncounters/theWinstrateChallenge";

View File

@ -1,36 +1,35 @@
import type { Ability } from "#app/data/abilities/ability"; import type { Ability } from "#abilities/ability";
import { allAbilities } from "#app/data/data-lists"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants";
import type { EnemyPartyConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { globalScene } from "#app/global-scene";
import { speciesStarterCosts } from "#balance/starters";
import { allAbilities } from "#data/data-lists";
import { getNatureName } from "#data/nature";
import { AbilityAttr } from "#enums/ability-attr";
import { BattlerTagType } from "#enums/battler-tag-type";
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
import type { Nature } from "#enums/nature";
import { getStatKey } from "#enums/stat";
import type { PlayerPokemon, Pokemon } from "#field/pokemon";
import type { PokemonHeldItemModifier } from "#modifiers/modifier";
import { queueEncounterMessage, showEncounterText } from "#mystery-encounters/encounter-dialogue-utils";
import type { EnemyPartyConfig } from "#mystery-encounters/encounter-phase-utils";
import { import {
initBattleWithEnemyConfig, initBattleWithEnemyConfig,
leaveEncounterWithoutBattle, leaveEncounterWithoutBattle,
selectPokemonForOption, selectPokemonForOption,
setEncounterRewards, setEncounterRewards,
} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; } from "#mystery-encounters/encounter-phase-utils";
import { getNatureName } from "#app/data/nature"; import { isPokemonValidForEncounterOptionSelection } from "#mystery-encounters/encounter-pokemon-utils";
import { speciesStarterCosts } from "#app/data/balance/starters"; import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter";
import type { PlayerPokemon } from "#app/field/pokemon"; import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter";
import type Pokemon from "#app/field/pokemon"; import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option";
import type { PokemonHeldItemModifier } from "#app/modifier/modifier"; import { PokemonData } from "#system/pokemon-data";
import { AbilityAttr } from "#enums/ability-attr"; import type { HeldModifierConfig } from "#types/held-modifier-config";
import PokemonData from "#app/system/pokemon-data"; import type { OptionSelectItem } from "#ui/abstact-option-select-ui-handler";
import type { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; import { isNullOrUndefined, randSeedShuffle } from "#utils/common";
import { isNullOrUndefined, randSeedShuffle } from "#app/utils/common";
import { BattlerTagType } from "#enums/battler-tag-type";
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
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 type HeldModifierConfig from "#app/@types/held-modifier-config";
import i18next from "i18next"; import i18next from "i18next";
import { getStatKey } from "#enums/stat";
import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants";
import { isPokemonValidForEncounterOptionSelection } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils";
import type { Nature } from "#enums/nature";
/** The i18n namespace for the encounter */ /** The i18n namespace for the encounter */
const namespace = "mysteryEncounters/trainingSession"; const namespace = "mysteryEncounters/trainingSession";

View File

@ -1,4 +1,19 @@
import type { EnemyPartyConfig, EnemyPokemonConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants";
import { globalScene } from "#app/global-scene";
import { modifierTypes } from "#data/data-lists";
import { BattlerIndex } from "#enums/battler-index";
import { ModifierTier } from "#enums/modifier-tier";
import { MoveId } from "#enums/move-id";
import { MoveUseMode } from "#enums/move-use-mode";
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
import { SpeciesId } from "#enums/species-id";
import { HitHealModifier, PokemonHeldItemModifier, TurnHealModifier } from "#modifiers/modifier";
import type { PokemonHeldItemModifierType } from "#modifiers/modifier-type";
import { PokemonMove } from "#moves/pokemon-move";
import { showEncounterText } from "#mystery-encounters/encounter-dialogue-utils";
import type { EnemyPartyConfig, EnemyPokemonConfig } from "#mystery-encounters/encounter-phase-utils";
import { import {
generateModifierType, generateModifierType,
initBattleWithEnemyConfig, initBattleWithEnemyConfig,
@ -6,29 +21,14 @@ import {
loadCustomMovesForEncounter, loadCustomMovesForEncounter,
setEncounterRewards, setEncounterRewards,
transitionMysteryEncounterIntroVisuals, transitionMysteryEncounterIntroVisuals,
} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; } from "#mystery-encounters/encounter-phase-utils";
import type { PokemonHeldItemModifierType } from "#app/modifier/modifier-type"; import { applyModifierTypeToPlayerPokemon } from "#mystery-encounters/encounter-pokemon-utils";
import { modifierTypes } from "#app/data/data-lists"; import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter";
import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter";
import { globalScene } from "#app/global-scene"; import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option";
import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; import i18next from "#plugins/i18n";
import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; import { randSeedInt } from "#utils/common";
import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; import { getPokemonSpecies } from "#utils/pokemon-utils";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
import { SpeciesId } from "#enums/species-id";
import { HitHealModifier, PokemonHeldItemModifier, TurnHealModifier } from "#app/modifier/modifier";
import { applyModifierTypeToPlayerPokemon } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils";
import { showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils";
import i18next from "#app/plugins/i18n";
import { ModifierTier } from "#enums/modifier-tier";
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
import { MoveId } from "#enums/move-id";
import { BattlerIndex } from "#enums/battler-index";
import { PokemonMove } from "#app/data/moves/pokemon-move";
import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants";
import { randSeedInt } from "#app/utils/common";
import { MoveUseMode } from "#enums/move-use-mode";
/** the i18n namespace for this encounter */ /** the i18n namespace for this encounter */
const namespace = "mysteryEncounters/trashToTreasure"; const namespace = "mysteryEncounters/trashToTreasure";

View File

@ -1,42 +1,38 @@
import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants";
import type { EnemyPartyConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { globalScene } from "#app/global-scene";
import { BattlerIndex } from "#enums/battler-index";
import { BattlerTagType } from "#enums/battler-tag-type";
import type { MoveId } from "#enums/move-id";
import { MoveUseMode } from "#enums/move-use-mode";
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
import { PokeballType } from "#enums/pokeball";
import { Stat } from "#enums/stat";
import type { EnemyPokemon, Pokemon } from "#field/pokemon";
import { BerryModifier } from "#modifiers/modifier";
import { PokemonMove } from "#moves/pokemon-move";
import { queueEncounterMessage } from "#mystery-encounters/encounter-dialogue-utils";
import type { EnemyPartyConfig } from "#mystery-encounters/encounter-phase-utils";
import { import {
getRandomEncounterSpecies, getRandomEncounterSpecies,
initBattleWithEnemyConfig, initBattleWithEnemyConfig,
leaveEncounterWithoutBattle, leaveEncounterWithoutBattle,
setEncounterExp, setEncounterExp,
setEncounterRewards, setEncounterRewards,
} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; } from "#mystery-encounters/encounter-phase-utils";
import { CHARMING_MOVES } from "#app/data/mystery-encounters/requirements/requirement-groups";
import type Pokemon from "#app/field/pokemon";
import type { EnemyPokemon } from "#app/field/pokemon";
import { PokemonMove } from "#app/data/moves/pokemon-move";
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
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";
import { import {
catchPokemon, catchPokemon,
getHighestLevelPlayerPokemon, getHighestLevelPlayerPokemon,
getSpriteKeysFromPokemon, getSpriteKeysFromPokemon,
} from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; } from "#mystery-encounters/encounter-pokemon-utils";
import PokemonData from "#app/system/pokemon-data"; import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter";
import { isNullOrUndefined, randSeedInt } from "#app/utils/common"; import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter";
import type { MoveId } from "#enums/move-id"; import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option";
import { BattlerIndex } from "#enums/battler-index"; import { MoveRequirement, PersistentModifierRequirement } from "#mystery-encounters/mystery-encounter-requirements";
import { PokeballType } from "#enums/pokeball"; import { CHARMING_MOVES } from "#mystery-encounters/requirement-groups";
import { BattlerTagType } from "#enums/battler-tag-type"; import { PokemonData } from "#system/pokemon-data";
import { queueEncounterMessage } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; import { isNullOrUndefined, randSeedInt } from "#utils/common";
import { BerryModifier } from "#app/modifier/modifier";
import { Stat } from "#enums/stat";
import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants";
import { MoveUseMode } from "#enums/move-use-mode";
/** the i18n namespace for the encounter */ /** the i18n namespace for the encounter */
const namespace = "mysteryEncounters/uncommonBreed"; const namespace = "mysteryEncounters/uncommonBreed";

View File

@ -1,49 +1,47 @@
import { PokemonType } from "#enums/pokemon-type";
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
import { SpeciesId } from "#enums/species-id";
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter"; import { allSpecies, modifierTypes } from "#data/data-lists";
import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; import { getLevelTotalExp } from "#data/exp";
import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; import type { PokemonSpecies } from "#data/pokemon-species";
import type { EnemyPartyConfig, EnemyPokemonConfig } from "../utils/encounter-phase-utils"; import { Challenges } from "#enums/challenges";
import { ModifierTier } from "#enums/modifier-tier";
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
import { Nature } from "#enums/nature";
import { PartyMemberStrength } from "#enums/party-member-strength";
import { PlayerGender } from "#enums/player-gender";
import { PokemonType } from "#enums/pokemon-type";
import { SpeciesId } from "#enums/species-id";
import { Stat } from "#enums/stat";
import { TrainerType } from "#enums/trainer-type";
import type { PlayerPokemon, Pokemon } from "#field/pokemon";
import type { PokemonHeldItemModifier } from "#modifiers/modifier";
import { HiddenAbilityRateBoosterModifier, PokemonFormChangeItemModifier } from "#modifiers/modifier";
import type { PokemonHeldItemModifierType } from "#modifiers/modifier-type";
import { PokemonMove } from "#moves/pokemon-move";
import { showEncounterText } from "#mystery-encounters/encounter-dialogue-utils";
import type { EnemyPartyConfig, EnemyPokemonConfig } from "#mystery-encounters/encounter-phase-utils";
import { import {
generateModifierType, generateModifierType,
initBattleWithEnemyConfig, initBattleWithEnemyConfig,
leaveEncounterWithoutBattle, leaveEncounterWithoutBattle,
setEncounterRewards, setEncounterRewards,
} from "../utils/encounter-phase-utils"; } from "#mystery-encounters/encounter-phase-utils";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
import type { PlayerPokemon } from "#app/field/pokemon";
import type Pokemon from "#app/field/pokemon";
import { PokemonMove } from "#app/data/moves/pokemon-move";
import { NumberHolder, isNullOrUndefined, randSeedInt, randSeedShuffle } from "#app/utils/common";
import type PokemonSpecies from "#app/data/pokemon-species";
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
import { allSpecies } from "#app/data/data-lists";
import type { PokemonHeldItemModifier } from "#app/modifier/modifier";
import { HiddenAbilityRateBoosterModifier, PokemonFormChangeItemModifier } from "#app/modifier/modifier";
import { achvs } from "#app/system/achv";
import { showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils";
import type { PokemonHeldItemModifierType } from "#app/modifier/modifier-type";
import { modifierTypes } from "#app/data/data-lists";
import i18next from "#app/plugins/i18n";
import { import {
doPokemonTransformationSequence, doPokemonTransformationSequence,
TransformationScreenPosition, TransformationScreenPosition,
} from "#app/data/mystery-encounters/utils/encounter-transformation-sequence"; } from "#mystery-encounters/encounter-transformation-sequence";
import { getLevelTotalExp } from "#app/data/exp"; import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter";
import { Stat } from "#enums/stat"; import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter";
import { Challenges } from "#enums/challenges"; import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option";
import { ModifierTier } from "#enums/modifier-tier"; import i18next from "#plugins/i18n";
import { PlayerGender } from "#enums/player-gender"; import { achvs } from "#system/achv";
import { TrainerType } from "#enums/trainer-type"; import { PokemonData } from "#system/pokemon-data";
import PokemonData from "#app/system/pokemon-data"; import { TrainerPartyTemplate } from "#trainers/TrainerPartyTemplate";
import { Nature } from "#enums/nature"; import { trainerConfigs } from "#trainers/trainer-config";
import type HeldModifierConfig from "#app/@types/held-modifier-config"; import type { HeldModifierConfig } from "#types/held-modifier-config";
import { trainerConfigs } from "#app/data/trainers/trainer-config"; import { isNullOrUndefined, NumberHolder, randSeedInt, randSeedShuffle } from "#utils/common";
import { TrainerPartyTemplate } from "#app/data/trainers/TrainerPartyTemplate"; import { getPokemonSpecies } from "#utils/pokemon-utils";
import { PartyMemberStrength } from "#enums/party-member-strength";
/** i18n namespace for encounter */ /** i18n namespace for encounter */
const namespace = "mysteryEncounters/weirdDream"; const namespace = "mysteryEncounters/weirdDream";

View File

@ -1,4 +1,4 @@
import type { TextStyle } from "#app/ui/text"; import type { TextStyle } from "#ui/text";
export class TextDisplay { export class TextDisplay {
speaker?: string; speaker?: string;
@ -67,7 +67,7 @@ export class EncounterOptionsDialogue {
} }
* *
*/ */
export default class MysteryEncounterDialogue { export class MysteryEncounterDialogue {
intro?: TextDisplay[]; intro?: TextDisplay[];
encounterOptionsDialogue?: EncounterOptionsDialogue; encounterOptionsDialogue?: EncounterOptionsDialogue;
outro?: TextDisplay[]; outro?: TextDisplay[];

View File

@ -1,19 +1,18 @@
import type { OptionTextDisplay } from "#app/data/mystery-encounters/mystery-encounter-dialogue";
import type { MoveId } from "#enums/move-id";
import type { PlayerPokemon } from "#app/field/pokemon";
import type Pokemon from "#app/field/pokemon";
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
import type { MoveId } from "#enums/move-id";
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
import type { PokemonType } from "#enums/pokemon-type"; import type { PokemonType } from "#enums/pokemon-type";
import type { PlayerPokemon, Pokemon } from "#field/pokemon";
import type { CanLearnMoveRequirementOptions } from "#mystery-encounters/can-learn-move-requirement";
import { CanLearnMoveRequirement } from "#mystery-encounters/can-learn-move-requirement";
import type { OptionTextDisplay } from "#mystery-encounters/mystery-encounter-dialogue";
import { import {
EncounterPokemonRequirement, EncounterPokemonRequirement,
EncounterSceneRequirement, EncounterSceneRequirement,
MoneyRequirement, MoneyRequirement,
TypeRequirement, TypeRequirement,
} from "#app/data/mystery-encounters/mystery-encounter-requirements"; } from "#mystery-encounters/mystery-encounter-requirements";
import type { CanLearnMoveRequirementOptions } from "./requirements/can-learn-move-requirement"; import { isNullOrUndefined, randSeedInt } from "#utils/common";
import { CanLearnMoveRequirement } from "./requirements/can-learn-move-requirement";
import { isNullOrUndefined, randSeedInt } from "#app/utils/common";
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
// biome-ignore lint/suspicious/noConfusingVoidType: void unions in callbacks are OK // biome-ignore lint/suspicious/noConfusingVoidType: void unions in callbacks are OK
export type OptionPhaseCallback = () => Promise<void | boolean>; export type OptionPhaseCallback = () => Promise<void | boolean>;
@ -39,7 +38,7 @@ export interface IMysteryEncounterOption {
onPostOptionPhase?: OptionPhaseCallback; onPostOptionPhase?: OptionPhaseCallback;
} }
export default class MysteryEncounterOption implements IMysteryEncounterOption { export class MysteryEncounterOption implements IMysteryEncounterOption {
optionMode: MysteryEncounterOptionMode; optionMode: MysteryEncounterOptionMode;
hasDexProgress: boolean; hasDexProgress: boolean;
requirements: EncounterSceneRequirement[]; requirements: EncounterSceneRequirement[];

View File

@ -1,21 +1,21 @@
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
import { allAbilities } from "../data-lists"; import { allAbilities } from "#data/data-lists";
import { Nature } from "#enums/nature"; import { SpeciesFormChangeItemTrigger } from "#data/form-change-triggers";
import { pokemonFormChanges } from "#app/data/pokemon-forms"; import { pokemonFormChanges } from "#data/pokemon-forms";
import { SpeciesFormChangeItemTrigger } from "../pokemon-forms/form-change-triggers";
import { FormChangeItem } from "#enums/form-change-item";
import { StatusEffect } from "#enums/status-effect";
import { PokemonType } from "#enums/pokemon-type";
import { WeatherType } from "#enums/weather-type";
import type { PlayerPokemon } from "#app/field/pokemon";
import { AttackTypeBoosterModifier } from "#app/modifier/modifier";
import type { AttackTypeBoosterModifierType } from "#app/modifier/modifier-type";
import { coerceArray, isNullOrUndefined } from "#app/utils/common";
import type { AbilityId } from "#enums/ability-id"; import type { AbilityId } from "#enums/ability-id";
import { FormChangeItem } from "#enums/form-change-item";
import { MoveId } from "#enums/move-id"; import { MoveId } from "#enums/move-id";
import type { MysteryEncounterType } from "#enums/mystery-encounter-type"; import type { MysteryEncounterType } from "#enums/mystery-encounter-type";
import { Nature } from "#enums/nature";
import { PokemonType } from "#enums/pokemon-type";
import { SpeciesId } from "#enums/species-id"; import { SpeciesId } from "#enums/species-id";
import { StatusEffect } from "#enums/status-effect";
import { TimeOfDay } from "#enums/time-of-day"; import { TimeOfDay } from "#enums/time-of-day";
import { WeatherType } from "#enums/weather-type";
import type { PlayerPokemon } from "#field/pokemon";
import { AttackTypeBoosterModifier } from "#modifiers/modifier";
import type { AttackTypeBoosterModifierType } from "#modifiers/modifier-type";
import { coerceArray, isNullOrUndefined } from "#utils/common";
export interface EncounterRequirement { export interface EncounterRequirement {
meetsRequirement(): boolean; // Boolean to see if a requirement is met meetsRequirement(): boolean; // Boolean to see if a requirement is met

View File

@ -1,7 +1,7 @@
import type { MysteryEncounterType } from "#enums/mystery-encounter-type";
import { BASE_MYSTERY_ENCOUNTER_SPAWN_WEIGHT } from "#app/constants"; import { BASE_MYSTERY_ENCOUNTER_SPAWN_WEIGHT } from "#app/constants";
import { isNullOrUndefined } from "#app/utils/common";
import type { MysteryEncounterTier } from "#enums/mystery-encounter-tier"; import type { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
import type { MysteryEncounterType } from "#enums/mystery-encounter-type";
import { isNullOrUndefined } from "#utils/common";
export class SeenEncounterData { export class SeenEncounterData {
type: MysteryEncounterType; type: MysteryEncounterType;

View File

@ -1,18 +1,22 @@
import type { EnemyPartyConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { globalScene } from "#app/global-scene";
import type { PlayerPokemon } from "#app/field/pokemon"; import type { BattlerIndex } from "#enums/battler-index";
import type { PokemonMove } from "../moves/pokemon-move"; import type { Challenges } from "#enums/challenges";
import type Pokemon from "#app/field/pokemon"; import type { EncounterAnim } from "#enums/encounter-anims";
import { capitalizeFirstLetter, coerceArray, isNullOrUndefined } from "#app/utils/common"; import type { GameModes } from "#enums/game-modes";
import type { MoveUseMode } from "#enums/move-use-mode";
import { MysteryEncounterMode } from "#enums/mystery-encounter-mode";
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
import type { MysteryEncounterType } from "#enums/mystery-encounter-type"; 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 { randSeedInt } from "#app/utils/common";
import type { StatusEffect } from "#enums/status-effect"; import type { StatusEffect } from "#enums/status-effect";
import type { OptionTextDisplay } from "./mystery-encounter-dialogue"; import type { MysteryEncounterSpriteConfig } from "#field/mystery-encounter-intro";
import type MysteryEncounterDialogue from "./mystery-encounter-dialogue"; import { MysteryEncounterIntroVisuals } from "#field/mystery-encounter-intro";
import type { OptionPhaseCallback } from "./mystery-encounter-option"; import type { PlayerPokemon, Pokemon } from "#field/pokemon";
import type MysteryEncounterOption from "./mystery-encounter-option"; import type { PokemonMove } from "#moves/pokemon-move";
import { MysteryEncounterOptionBuilder } from "./mystery-encounter-option"; import type { EnemyPartyConfig } from "#mystery-encounters/encounter-phase-utils";
import type { MysteryEncounterDialogue, OptionTextDisplay } from "#mystery-encounters/mystery-encounter-dialogue";
import type { MysteryEncounterOption, OptionPhaseCallback } from "#mystery-encounters/mystery-encounter-option";
import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option";
import { import {
EncounterPokemonRequirement, EncounterPokemonRequirement,
EncounterSceneRequirement, EncounterSceneRequirement,
@ -20,16 +24,8 @@ import {
PartySizeRequirement, PartySizeRequirement,
StatusEffectRequirement, StatusEffectRequirement,
WaveRangeRequirement, WaveRangeRequirement,
} from "./mystery-encounter-requirements"; } from "#mystery-encounters/mystery-encounter-requirements";
import type { BattlerIndex } from "#enums/battler-index"; import { capitalizeFirstLetter, coerceArray, isNullOrUndefined, randSeedInt } from "#utils/common";
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
import { MysteryEncounterMode } from "#enums/mystery-encounter-mode";
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
import type { GameModes } from "#enums/game-modes";
import type { EncounterAnim } from "#enums/encounter-anims";
import type { Challenges } from "#enums/challenges";
import { globalScene } from "#app/global-scene";
import type { MoveUseMode } from "#enums/move-use-mode";
export interface EncounterStartOfBattleEffect { export interface EncounterStartOfBattleEffect {
sourcePokemon?: Pokemon; sourcePokemon?: Pokemon;
@ -91,7 +87,7 @@ export interface IMysteryEncounter {
* These objects will be saved as part of session data any time the player is on a floor with an encounter * These objects will be saved as part of session data any time the player is on a floor with an encounter
* Unless you know what you're doing, you should use MysteryEncounterBuilder to create an instance for this class * Unless you know what you're doing, you should use MysteryEncounterBuilder to create an instance for this class
*/ */
export default class MysteryEncounter implements IMysteryEncounter { export class MysteryEncounter implements IMysteryEncounter {
// #region Required params // #region Required params
encounterType: MysteryEncounterType; encounterType: MysteryEncounterType;

View File

@ -1,38 +1,38 @@
import { getBiomeName } from "#balance/biomes";
import { BiomeId } from "#enums/biome-id"; import { BiomeId } from "#enums/biome-id";
import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { MysteryEncounterType } from "#enums/mystery-encounter-type";
import { DarkDealEncounter } from "./encounters/dark-deal-encounter"; import { ATrainersTestEncounter } from "#mystery-encounters/a-trainers-test-encounter";
import { DepartmentStoreSaleEncounter } from "./encounters/department-store-sale-encounter"; import { AbsoluteAvariceEncounter } from "#mystery-encounters/absolute-avarice-encounter";
import { FieldTripEncounter } from "./encounters/field-trip-encounter"; import { AnOfferYouCantRefuseEncounter } from "#mystery-encounters/an-offer-you-cant-refuse-encounter";
import { FightOrFlightEncounter } from "./encounters/fight-or-flight-encounter"; import { BerriesAboundEncounter } from "#mystery-encounters/berries-abound-encounter";
import { LostAtSeaEncounter } from "./encounters/lost-at-sea-encounter"; import { BugTypeSuperfanEncounter } from "#mystery-encounters/bug-type-superfan-encounter";
import { MysteriousChallengersEncounter } from "./encounters/mysterious-challengers-encounter"; import { ClowningAroundEncounter } from "#mystery-encounters/clowning-around-encounter";
import { MysteriousChestEncounter } from "./encounters/mysterious-chest-encounter"; import { DancingLessonsEncounter } from "#mystery-encounters/dancing-lessons-encounter";
import { ShadyVitaminDealerEncounter } from "./encounters/shady-vitamin-dealer-encounter"; import { DarkDealEncounter } from "#mystery-encounters/dark-deal-encounter";
import { SlumberingSnorlaxEncounter } from "./encounters/slumbering-snorlax-encounter"; import { DelibirdyEncounter } from "#mystery-encounters/delibirdy-encounter";
import { TrainingSessionEncounter } from "./encounters/training-session-encounter"; import { DepartmentStoreSaleEncounter } from "#mystery-encounters/department-store-sale-encounter";
import type MysteryEncounter from "./mystery-encounter"; import { FieldTripEncounter } from "#mystery-encounters/field-trip-encounter";
import { SafariZoneEncounter } from "#app/data/mystery-encounters/encounters/safari-zone-encounter"; import { FieryFalloutEncounter } from "#mystery-encounters/fiery-fallout-encounter";
import { FieryFalloutEncounter } from "#app/data/mystery-encounters/encounters/fiery-fallout-encounter"; import { FightOrFlightEncounter } from "#mystery-encounters/fight-or-flight-encounter";
import { TheStrongStuffEncounter } from "#app/data/mystery-encounters/encounters/the-strong-stuff-encounter"; import { FunAndGamesEncounter } from "#mystery-encounters/fun-and-games-encounter";
import { ThePokemonSalesmanEncounter } from "#app/data/mystery-encounters/encounters/the-pokemon-salesman-encounter"; import { GlobalTradeSystemEncounter } from "#mystery-encounters/global-trade-system-encounter";
import { AnOfferYouCantRefuseEncounter } from "#app/data/mystery-encounters/encounters/an-offer-you-cant-refuse-encounter"; import { LostAtSeaEncounter } from "#mystery-encounters/lost-at-sea-encounter";
import { DelibirdyEncounter } from "#app/data/mystery-encounters/encounters/delibirdy-encounter"; import { MysteriousChallengersEncounter } from "#mystery-encounters/mysterious-challengers-encounter";
import { AbsoluteAvariceEncounter } from "#app/data/mystery-encounters/encounters/absolute-avarice-encounter"; import { MysteriousChestEncounter } from "#mystery-encounters/mysterious-chest-encounter";
import { ATrainersTestEncounter } from "#app/data/mystery-encounters/encounters/a-trainers-test-encounter"; import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter";
import { TrashToTreasureEncounter } from "#app/data/mystery-encounters/encounters/trash-to-treasure-encounter"; import { PartTimerEncounter } from "#mystery-encounters/part-timer-encounter";
import { BerriesAboundEncounter } from "#app/data/mystery-encounters/encounters/berries-abound-encounter"; import { SafariZoneEncounter } from "#mystery-encounters/safari-zone-encounter";
import { ClowningAroundEncounter } from "#app/data/mystery-encounters/encounters/clowning-around-encounter"; import { ShadyVitaminDealerEncounter } from "#mystery-encounters/shady-vitamin-dealer-encounter";
import { PartTimerEncounter } from "#app/data/mystery-encounters/encounters/part-timer-encounter"; import { SlumberingSnorlaxEncounter } from "#mystery-encounters/slumbering-snorlax-encounter";
import { DancingLessonsEncounter } from "#app/data/mystery-encounters/encounters/dancing-lessons-encounter"; import { TeleportingHijinksEncounter } from "#mystery-encounters/teleporting-hijinks-encounter";
import { WeirdDreamEncounter } from "#app/data/mystery-encounters/encounters/weird-dream-encounter"; import { TheExpertPokemonBreederEncounter } from "#mystery-encounters/the-expert-pokemon-breeder-encounter";
import { TheWinstrateChallengeEncounter } from "#app/data/mystery-encounters/encounters/the-winstrate-challenge-encounter"; import { ThePokemonSalesmanEncounter } from "#mystery-encounters/the-pokemon-salesman-encounter";
import { TeleportingHijinksEncounter } from "#app/data/mystery-encounters/encounters/teleporting-hijinks-encounter"; import { TheStrongStuffEncounter } from "#mystery-encounters/the-strong-stuff-encounter";
import { BugTypeSuperfanEncounter } from "#app/data/mystery-encounters/encounters/bug-type-superfan-encounter"; import { TheWinstrateChallengeEncounter } from "#mystery-encounters/the-winstrate-challenge-encounter";
import { FunAndGamesEncounter } from "#app/data/mystery-encounters/encounters/fun-and-games-encounter"; import { TrainingSessionEncounter } from "#mystery-encounters/training-session-encounter";
import { UncommonBreedEncounter } from "#app/data/mystery-encounters/encounters/uncommon-breed-encounter"; import { TrashToTreasureEncounter } from "#mystery-encounters/trash-to-treasure-encounter";
import { GlobalTradeSystemEncounter } from "#app/data/mystery-encounters/encounters/global-trade-system-encounter"; import { UncommonBreedEncounter } from "#mystery-encounters/uncommon-breed-encounter";
import { TheExpertPokemonBreederEncounter } from "#app/data/mystery-encounters/encounters/the-expert-pokemon-breeder-encounter"; import { WeirdDreamEncounter } from "#mystery-encounters/weird-dream-encounter";
import { getBiomeName } from "#app/data/balance/biomes";
export const EXTREME_ENCOUNTER_BIOMES = [ export const EXTREME_ENCOUNTER_BIOMES = [
BiomeId.SEA, BiomeId.SEA,

View File

@ -1,9 +1,9 @@
import type { MoveId } from "#enums/move-id";
import type { PlayerPokemon } from "#app/field/pokemon";
import { PokemonMove } from "#app/data/moves/pokemon-move";
import { coerceArray, isNullOrUndefined } from "#app/utils/common";
import { EncounterPokemonRequirement } from "#app/data/mystery-encounters/mystery-encounter-requirements";
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
import type { MoveId } from "#enums/move-id";
import type { PlayerPokemon } from "#field/pokemon";
import { PokemonMove } from "#moves/pokemon-move";
import { EncounterPokemonRequirement } from "#mystery-encounters/mystery-encounter-requirements";
import { coerceArray, isNullOrUndefined } from "#utils/common";
/** /**
* {@linkcode CanLearnMoveRequirement} options * {@linkcode CanLearnMoveRequirement} options

View File

@ -1,5 +1,5 @@
import { MoveId } from "#enums/move-id";
import { AbilityId } from "#enums/ability-id"; import { AbilityId } from "#enums/ability-id";
import { MoveId } from "#enums/move-id";
/** /**
* Moves that "steal" things * Moves that "steal" things

View File

@ -1,8 +1,8 @@
import { globalScene } from "#app/global-scene"; 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 { UiTheme } from "#enums/ui-theme";
import { isNullOrUndefined } from "#app/utils/common"; import type { TextStyle } from "#ui/text";
import { getTextWithColors } from "#ui/text";
import { isNullOrUndefined } from "#utils/common";
import i18next from "i18next"; import i18next from "i18next";
/** /**

View File

@ -1,58 +1,57 @@
import type Battle from "#app/battle"; import type { Battle } from "#app/battle";
import { BattleType } from "#enums/battle-type";
import { biomeLinks, BiomePoolTier } from "#app/data/balance/biomes";
import type MysteryEncounterOption from "#app/data/mystery-encounters/mystery-encounter-option";
import { AVERAGE_ENCOUNTERS_PER_RUN_TARGET, WEIGHT_INCREMENT_ON_SPAWN_MISS } from "#app/constants"; import { AVERAGE_ENCOUNTERS_PER_RUN_TARGET, WEIGHT_INCREMENT_ON_SPAWN_MISS } from "#app/constants";
import { showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; import { timedEventManager } from "#app/global-event-manager";
import type { PlayerPokemon } from "#app/field/pokemon"; import { globalScene } from "#app/global-scene";
import { getPokemonNameWithAffix } from "#app/messages";
import { BiomePoolTier, biomeLinks } from "#balance/biomes";
import { initMoveAnim, loadMoveAnimAssets } from "#data/battle-anims";
import { modifierTypes } from "#data/data-lists";
import type { IEggOptions } from "#data/egg";
import { Egg } from "#data/egg";
import type { Gender } from "#data/gender";
import { getNatureName } from "#data/nature";
import type { CustomPokemonData } from "#data/pokemon-data";
import type { PokemonSpecies } from "#data/pokemon-species";
import { Status } from "#data/status-effect";
import type { AiType } from "#enums/ai-type"; import type { AiType } from "#enums/ai-type";
import type Pokemon from "#app/field/pokemon"; import { BattleType } from "#enums/battle-type";
import { EnemyPokemon } from "#app/field/pokemon"; import type { BattlerTagType } from "#enums/battler-tag-type";
import { PokemonMove } from "#app/data/moves/pokemon-move"; import { BiomeId } from "#enums/biome-id";
import { FieldPosition } from "#enums/field-position"; import { FieldPosition } from "#enums/field-position";
import type { CustomModifierSettings, ModifierType } from "#app/modifier/modifier-type"; import { ModifierPoolType } from "#enums/modifier-pool-type";
import type { MoveId } from "#enums/move-id";
import { MysteryEncounterMode } from "#enums/mystery-encounter-mode";
import type { Nature } from "#enums/nature";
import { PokemonType } from "#enums/pokemon-type";
import { StatusEffect } from "#enums/status-effect";
import { TrainerSlot } from "#enums/trainer-slot";
import type { TrainerType } from "#enums/trainer-type";
import { TrainerVariant } from "#enums/trainer-variant";
import { UiMode } from "#enums/ui-mode";
import type { PlayerPokemon, Pokemon } from "#field/pokemon";
import { EnemyPokemon } from "#field/pokemon";
import { Trainer } from "#field/trainer";
import type { CustomModifierSettings, ModifierType } from "#modifiers/modifier-type";
import { import {
getPartyLuckValue, getPartyLuckValue,
ModifierTypeGenerator, ModifierTypeGenerator,
ModifierTypeOption, ModifierTypeOption,
regenerateModifierPoolThresholds, regenerateModifierPoolThresholds,
} from "#app/modifier/modifier-type"; } from "#modifiers/modifier-type";
import { modifierTypes } from "#app/data/data-lists"; import { PokemonMove } from "#moves/pokemon-move";
import { ModifierPoolType } from "#enums/modifier-pool-type"; import { showEncounterText } from "#mystery-encounters/encounter-dialogue-utils";
import type PokemonData from "#app/system/pokemon-data"; import type { MysteryEncounterOption } from "#mystery-encounters/mystery-encounter-option";
import type { OptionSelectConfig, OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; import type { Variant } from "#sprites/variant";
import type { PartyOption, PokemonSelectFilter } from "#app/ui/party-ui-handler"; import type { PokemonData } from "#system/pokemon-data";
import { PartyUiMode } from "#app/ui/party-ui-handler"; import type { TrainerConfig } from "#trainers/trainer-config";
import { UiMode } from "#enums/ui-mode"; import { trainerConfigs } from "#trainers/trainer-config";
import { isNullOrUndefined, randSeedInt, randomString, randSeedItem, coerceArray } from "#app/utils/common"; import type { HeldModifierConfig } from "#types/held-modifier-config";
import type { BattlerTagType } from "#enums/battler-tag-type"; import type { OptionSelectConfig, OptionSelectItem } from "#ui/abstact-option-select-ui-handler";
import { BiomeId } from "#enums/biome-id"; import type { PartyOption, PokemonSelectFilter } from "#ui/party-ui-handler";
import type { TrainerType } from "#enums/trainer-type"; import { PartyUiMode } from "#ui/party-ui-handler";
import { coerceArray, isNullOrUndefined, randomString, randSeedInt, randSeedItem } from "#utils/common";
import { getPokemonSpecies } from "#utils/pokemon-utils";
import i18next from "i18next"; import i18next from "i18next";
import Trainer from "#app/field/trainer";
import { TrainerVariant } from "#enums/trainer-variant";
import type { Gender } from "#app/data/gender";
import type { Nature } from "#enums/nature";
import type { MoveId } from "#enums/move-id";
import { initMoveAnim, loadMoveAnimAssets } from "#app/data/battle-anims";
import { MysteryEncounterMode } from "#enums/mystery-encounter-mode";
import { Status } from "#app/data/status-effect";
import type { TrainerConfig } from "#app/data/trainers/trainer-config";
import { trainerConfigs } from "#app/data/trainers/trainer-config";
import { TrainerSlot } from "#enums/trainer-slot";
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/pokemon/pokemon-data";
import type HeldModifierConfig from "#app/@types/held-modifier-config";
import type { Variant } from "#app/sprites/variant";
import { StatusEffect } from "#enums/status-effect";
import { globalScene } from "#app/global-scene";
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
import { PokemonType } from "#enums/pokemon-type";
import { getNatureName } from "#app/data/nature";
import { getPokemonNameWithAffix } from "#app/messages";
import { timedEventManager } from "#app/global-event-manager";
/** /**
* Animates exclamation sprite over trainer's head at start of encounter * Animates exclamation sprite over trainer's head at start of encounter

View File

@ -1,42 +1,41 @@
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
import i18next from "i18next"; import { getPokemonNameWithAffix } from "#app/messages";
import { isNullOrUndefined, randSeedInt } from "#app/utils/common"; import { speciesStarterCosts } from "#balance/starters";
import { PokemonHeldItemModifier } from "#app/modifier/modifier"; import { modifierTypes } from "#data/data-lists";
import type { EnemyPokemon, PlayerPokemon } from "#app/field/pokemon"; import { Gender } from "#data/gender";
import type Pokemon from "#app/field/pokemon";
import { import {
doPokeballBounceAnim, doPokeballBounceAnim,
getPokeballAtlasKey, getPokeballAtlasKey,
getPokeballCatchMultiplier, getPokeballCatchMultiplier,
getPokeballTintColor, getPokeballTintColor,
} from "#app/data/pokeball"; } from "#data/pokeball";
import { CustomPokemonData } from "#data/pokemon-data";
import type { PokemonSpecies } from "#data/pokemon-species";
import { getStatusEffectCatchRateMultiplier } from "#data/status-effect";
import type { AbilityId } from "#enums/ability-id";
import { PlayerGender } from "#enums/player-gender"; import { PlayerGender } from "#enums/player-gender";
import { addPokeballCaptureStars, addPokeballOpenParticles } from "#app/field/anims"; import type { PokeballType } from "#enums/pokeball";
import { getStatusEffectCatchRateMultiplier } from "#app/data/status-effect";
import { achvs } from "#app/system/achv";
import { UiMode } from "#enums/ui-mode";
import type { PartyOption } from "#app/ui/party-ui-handler";
import { PartyUiMode } from "#app/ui/party-ui-handler";
import { SpeciesId } from "#enums/species-id";
import type { PokemonType } from "#enums/pokemon-type"; import type { PokemonType } from "#enums/pokemon-type";
import type PokemonSpecies from "#app/data/pokemon-species"; import { SpeciesId } from "#enums/species-id";
import { getPokemonSpecies } from "#app/utils/pokemon-utils"; import type { PermanentStat } from "#enums/stat";
import { speciesStarterCosts } from "#app/data/balance/starters"; import { StatusEffect } from "#enums/status-effect";
import { UiMode } from "#enums/ui-mode";
import { addPokeballCaptureStars, addPokeballOpenParticles } from "#field/anims";
import type { EnemyPokemon, PlayerPokemon, Pokemon } from "#field/pokemon";
import { PokemonHeldItemModifier } from "#modifiers/modifier";
import type { PokemonHeldItemModifierType } from "#modifiers/modifier-type";
import { import {
getEncounterText, getEncounterText,
queueEncounterMessage, queueEncounterMessage,
showEncounterText, showEncounterText,
} from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; } from "#mystery-encounters/encounter-dialogue-utils";
import { getPokemonNameWithAffix } from "#app/messages"; import { achvs } from "#system/achv";
import type { PokemonHeldItemModifierType } from "#app/modifier/modifier-type"; import type { PartyOption } from "#ui/party-ui-handler";
import { modifierTypes } from "#app/data/data-lists"; import { PartyUiMode } from "#ui/party-ui-handler";
import { Gender } from "#app/data/gender"; import { SummaryUiMode } from "#ui/summary-ui-handler";
import type { PermanentStat } from "#enums/stat"; import { isNullOrUndefined, randSeedInt } from "#utils/common";
import { SummaryUiMode } from "#app/ui/summary-ui-handler"; import { getPokemonSpecies } from "#utils/pokemon-utils";
import { CustomPokemonData } from "#app/data/pokemon/pokemon-data"; import i18next from "i18next";
import type { AbilityId } from "#enums/ability-id";
import type { PokeballType } from "#enums/pokeball";
import { StatusEffect } from "#enums/status-effect";
/** Will give +1 level every 10 waves */ /** Will give +1 level every 10 waves */
export const STANDARD_ENCOUNTER_BOOSTED_LEVEL_MODIFIER = 1; export const STANDARD_ENCOUNTER_BOOSTED_LEVEL_MODIFIER = 1;

View File

@ -1,8 +1,8 @@
import type { PlayerPokemon } from "#app/field/pokemon";
import { getFrameMs } from "#app/utils/common";
import { cos, sin } from "#app/field/anims";
import { getTypeRgb } from "#app/data/type";
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
import { getTypeRgb } from "#data/type";
import { cos, sin } from "#field/anims";
import type { PlayerPokemon } from "#field/pokemon";
import { getFrameMs } from "#utils/common";
export enum TransformationScreenPosition { export enum TransformationScreenPosition {
CENTER, CENTER,

View File

@ -1,9 +1,9 @@
import { toReadableString } from "#app/utils/common";
import { TextStyle, getBBCodeFrag } from "../ui/text";
import { Nature } from "#enums/nature"; import { Nature } from "#enums/nature";
import { EFFECTIVE_STATS, getShortenedStatKey, Stat } from "#enums/stat";
import { UiTheme } from "#enums/ui-theme"; import { UiTheme } from "#enums/ui-theme";
import { getBBCodeFrag, TextStyle } from "#ui/text";
import { toReadableString } from "#utils/common";
import i18next from "i18next"; import i18next from "i18next";
import { Stat, EFFECTIVE_STATS, getShortenedStatKey } from "#enums/stat";
export function getNatureName( export function getNatureName(
nature: Nature, nature: Nature,

View File

@ -1,12 +1,12 @@
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
import type { Phase } from "#app/phase"; import type { Phase } from "#app/phase";
import { ActivatePriorityQueuePhase } from "#app/phases/activate-priority-queue-phase"; import { TrickRoomTag } from "#data/arena-tag";
import type { PostSummonPhase } from "#app/phases/post-summon-phase";
import { PostSummonActivateAbilityPhase } from "#app/phases/post-summon-activate-ability-phase";
import { Stat } from "#enums/stat";
import { BooleanHolder } from "#app/utils/common";
import { TrickRoomTag } from "#app/data/arena-tag";
import { DynamicPhaseType } from "#enums/dynamic-phase-type"; import { DynamicPhaseType } from "#enums/dynamic-phase-type";
import { Stat } from "#enums/stat";
import { ActivatePriorityQueuePhase } from "#phases/activate-priority-queue-phase";
import { PostSummonActivateAbilityPhase } from "#phases/post-summon-activate-ability-phase";
import type { PostSummonPhase } from "#phases/post-summon-phase";
import { BooleanHolder } from "#utils/common";
/** /**
* Stores a list of {@linkcode Phase}s * Stores a list of {@linkcode Phase}s

View File

@ -1,6 +1,6 @@
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
import { NumberHolder } from "#app/utils/common";
import { PokeballType } from "#enums/pokeball"; import { PokeballType } from "#enums/pokeball";
import { NumberHolder } from "#utils/common";
import i18next from "i18next"; import i18next from "i18next";
export const MAX_PER_TYPE_POKEBALLS: number = 99; export const MAX_PER_TYPE_POKEBALLS: number = 99;

View File

@ -1,14 +1,5 @@
import type Pokemon from "../field/pokemon";
import { allMoves } from "./data-lists";
import { MoveCategory } from "#enums/MoveCategory";
import type { Constructor, nil } from "#app/utils/common";
import { AbilityId } from "#enums/ability-id";
import { MoveId } from "#enums/move-id";
import { SpeciesId } from "#enums/species-id";
import { WeatherType } from "#enums/weather-type";
import { SpeciesFormKey } from "#enums/species-form-key";
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
import { FormChangeItem } from "#enums/form-change-item"; import { allMoves } from "#data/data-lists";
import { import {
MeloettaFormChangePostMoveTrigger, MeloettaFormChangePostMoveTrigger,
SpeciesDefaultFormMatchTrigger, SpeciesDefaultFormMatchTrigger,
@ -24,7 +15,16 @@ import {
SpeciesFormChangeTeraTrigger, SpeciesFormChangeTeraTrigger,
type SpeciesFormChangeTrigger, type SpeciesFormChangeTrigger,
SpeciesFormChangeWeatherTrigger, SpeciesFormChangeWeatherTrigger,
} from "./pokemon-forms/form-change-triggers"; } from "#data/form-change-triggers";
import { AbilityId } from "#enums/ability-id";
import { FormChangeItem } from "#enums/form-change-item";
import { MoveCategory } from "#enums/MoveCategory";
import { MoveId } from "#enums/move-id";
import { SpeciesFormKey } from "#enums/species-form-key";
import { SpeciesId } from "#enums/species-id";
import { WeatherType } from "#enums/weather-type";
import type { Pokemon } from "#field/pokemon";
import type { Constructor, nil } from "#utils/common";
export type SpeciesFormChangeConditionPredicate = (p: Pokemon) => boolean; export type SpeciesFormChangeConditionPredicate = (p: Pokemon) => boolean;
export type SpeciesFormChangeConditionEnforceFunc = (p: Pokemon) => void; export type SpeciesFormChangeConditionEnforceFunc = (p: Pokemon) => void;

View File

@ -1,18 +1,18 @@
import i18next from "i18next";
import { coerceArray, type Constructor } from "#app/utils/common";
import type { TimeOfDay } from "#enums/time-of-day";
import type Pokemon from "#app/field/pokemon";
import type { SpeciesFormChange } from "#app/data/pokemon-forms";
import type { PokemonFormChangeItemModifier } from "#app/modifier/modifier";
import { getPokemonNameWithAffix } from "#app/messages";
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
import { FormChangeItem } from "#enums/form-change-item"; import { getPokemonNameWithAffix } from "#app/messages";
import type { SpeciesFormChange } from "#data/pokemon-forms";
import { AbilityId } from "#enums/ability-id"; import { AbilityId } from "#enums/ability-id";
import { Challenges } from "#enums/challenges"; import { Challenges } from "#enums/challenges";
import { FormChangeItem } from "#enums/form-change-item";
import { MoveId } from "#enums/move-id"; import { MoveId } from "#enums/move-id";
import { SpeciesFormKey } from "#enums/species-form-key"; import { SpeciesFormKey } from "#enums/species-form-key";
import { StatusEffect } from "#enums/status-effect"; import { StatusEffect } from "#enums/status-effect";
import type { TimeOfDay } from "#enums/time-of-day";
import { WeatherType } from "#enums/weather-type"; import { WeatherType } from "#enums/weather-type";
import type { Pokemon } from "#field/pokemon";
import type { PokemonFormChangeItemModifier } from "#modifiers/modifier";
import { type Constructor, coerceArray } from "#utils/common";
import i18next from "i18next";
export abstract class SpeciesFormChangeTrigger { export abstract class SpeciesFormChangeTrigger {
public description = ""; public description = "";

View File

@ -1,49 +1,45 @@
import type { Localizable } from "#app/@types/locales";
import { AbilityId } from "#enums/ability-id";
import { PartyMemberStrength } from "#enums/party-member-strength";
import { SpeciesId } from "#enums/species-id";
import { QuantizerCelebi, argbFromRgba, rgbaFromArgb } from "@material/material-color-utilities";
import i18next from "i18next";
import type { AnySound } from "#app/battle-scene"; import type { AnySound } from "#app/battle-scene";
import { globalScene } from "#app/global-scene";
import type { GameMode } from "#app/game-mode"; import type { GameMode } from "#app/game-mode";
import type { StarterMoveset } from "#app/system/game-data"; import { globalScene } from "#app/global-scene";
import { DexAttr } from "#enums/dex-attr"; import { uncatchableSpecies } from "#balance/biomes";
import { import { speciesEggMoves } from "#balance/egg-moves";
isNullOrUndefined, import { starterPassiveAbilities } from "#balance/passives";
capitalizeString, import type { EvolutionLevel } from "#balance/pokemon-evolutions";
randSeedInt, import { pokemonEvolutions, pokemonPrevolutions, SpeciesWildEvolutionDelay } from "#balance/pokemon-evolutions";
randSeedGauss, import type { LevelMoves } from "#balance/pokemon-level-moves";
randSeedItem,
randSeedFloat,
} from "#app/utils/common";
import { uncatchableSpecies } from "#app/data/balance/biomes";
import { speciesEggMoves } from "#app/data/balance/egg-moves";
import { GrowthRate } from "#app/data/exp";
import type { EvolutionLevel } from "#app/data/balance/pokemon-evolutions";
import {
SpeciesWildEvolutionDelay,
pokemonEvolutions,
pokemonPrevolutions,
} from "#app/data/balance/pokemon-evolutions";
import { PokemonType } from "#enums/pokemon-type";
import type { LevelMoves } from "#app/data/balance/pokemon-level-moves";
import { import {
pokemonFormLevelMoves, pokemonFormLevelMoves,
pokemonFormLevelMoves as pokemonSpeciesFormLevelMoves, pokemonFormLevelMoves as pokemonSpeciesFormLevelMoves,
pokemonSpeciesLevelMoves, pokemonSpeciesLevelMoves,
} from "#app/data/balance/pokemon-level-moves"; } from "#balance/pokemon-level-moves";
import type { Stat } from "#enums/stat"; import { POKERUS_STARTER_COUNT, speciesStarterCosts } from "#balance/starters";
import type { Variant, VariantSet } from "#app/sprites/variant"; import { allSpecies } from "#data/data-lists";
import { populateVariantColorCache, variantColorCache, variantData } from "#app/sprites/variant"; import { GrowthRate } from "#data/exp";
import { speciesStarterCosts, POKERUS_STARTER_COUNT } from "#app/data/balance/starters"; import { Gender } from "#data/gender";
import { AbilityId } from "#enums/ability-id";
import { DexAttr } from "#enums/dex-attr";
import { PartyMemberStrength } from "#enums/party-member-strength";
import { PokemonType } from "#enums/pokemon-type";
import { SpeciesFormKey } from "#enums/species-form-key"; import { SpeciesFormKey } from "#enums/species-form-key";
import { starterPassiveAbilities } from "#app/data/balance/passives"; import { SpeciesId } from "#enums/species-id";
import { loadPokemonVariantAssets } from "#app/sprites/pokemon-sprite"; import type { Stat } from "#enums/stat";
import { hasExpSprite } from "#app/sprites/sprite-utils"; import { loadPokemonVariantAssets } from "#sprites/pokemon-sprite";
import { Gender } from "./gender"; import { hasExpSprite } from "#sprites/sprite-utils";
import { allSpecies } from "#app/data/data-lists"; import type { Variant, VariantSet } from "#sprites/variant";
import { getPokemonSpecies } from "#app/utils/pokemon-utils"; import { populateVariantColorCache, variantColorCache, variantData } from "#sprites/variant";
import type { StarterMoveset } from "#system/game-data";
import type { Localizable } from "#types/locales";
import {
capitalizeString,
isNullOrUndefined,
randSeedFloat,
randSeedGauss,
randSeedInt,
randSeedItem,
} from "#utils/common";
import { getPokemonSpecies } from "#utils/pokemon-utils";
import { argbFromRgba, QuantizerCelebi, rgbaFromArgb } from "@material/material-color-utilities";
import i18next from "i18next";
export enum Region { export enum Region {
NORMAL, NORMAL,
@ -759,7 +755,7 @@ export abstract class PokemonSpeciesForm {
} }
} }
export default class PokemonSpecies extends PokemonSpeciesForm implements Localizable { export class PokemonSpecies extends PokemonSpeciesForm implements Localizable {
public name: string; public name: string;
readonly subLegendary: boolean; readonly subLegendary: boolean;
readonly legendary: boolean; readonly legendary: boolean;

View File

@ -1,17 +1,17 @@
import { type BattlerTag, loadBattlerTag } from "#app/data/battler-tags"; import { type BattlerTag, loadBattlerTag } from "#data/battler-tags";
import type { Gender } from "#app/data/gender"; import type { Gender } from "#data/gender";
import type { PokemonSpeciesForm } from "#app/data/pokemon-species"; import { PokemonMove } from "#data/moves/pokemon-move";
import type { TypeDamageMultiplier } from "#app/data/type"; import type { PokemonSpeciesForm } from "#data/pokemon-species";
import { isNullOrUndefined } from "#app/utils/common"; import type { TypeDamageMultiplier } from "#data/type";
import type { AbilityId } from "#enums/ability-id"; import type { AbilityId } from "#enums/ability-id";
import type { BerryType } from "#enums/berry-type"; import type { BerryType } from "#enums/berry-type";
import type { MoveId } from "#enums/move-id"; import type { MoveId } from "#enums/move-id";
import type { PokemonType } from "#enums/pokemon-type";
import { PokemonMove } from "#app/data/moves/pokemon-move";
import type { TurnMove } from "#app/@types/turn-move";
import type { AttackMoveResult } from "#app/@types/attack-move-result";
import type { Nature } from "#enums/nature"; import type { Nature } from "#enums/nature";
import type { IllusionData } from "#app/@types/illusion-data"; import type { PokemonType } from "#enums/pokemon-type";
import type { AttackMoveResult } from "#types/attack-move-result";
import type { IllusionData } from "#types/illusion-data";
import type { TurnMove } from "#types/turn-move";
import { isNullOrUndefined } from "#utils/common";
/** /**
* Permanent data that can customize a Pokemon in non-standard ways from its Species. * Permanent data that can customize a Pokemon in non-standard ways from its Species.

View File

@ -1,5 +1,5 @@
import { randIntRange } from "#app/utils/common";
import { StatusEffect } from "#enums/status-effect"; import { StatusEffect } from "#enums/status-effect";
import { randIntRange } from "#utils/common";
import type { ParseKeys } from "i18next"; import type { ParseKeys } from "i18next";
import i18next from "i18next"; import i18next from "i18next";

View File

@ -1,9 +1,9 @@
import type Pokemon from "../field/pokemon";
import type Move from "./moves/move";
import { PokemonType } from "#enums/pokemon-type";
import type { BattlerIndex } from "#enums/battler-index";
import i18next from "i18next";
import { getPokemonNameWithAffix } from "#app/messages"; import { getPokemonNameWithAffix } from "#app/messages";
import type { BattlerIndex } from "#enums/battler-index";
import { PokemonType } from "#enums/pokemon-type";
import type { Pokemon } from "#field/pokemon";
import type { Move } from "#moves/move";
import i18next from "i18next";
export enum TerrainType { export enum TerrainType {
NONE, NONE,

View File

@ -1,5 +1,5 @@
import { TrainerType } from "#enums/trainer-type"; import { TrainerType } from "#enums/trainer-type";
import { toReadableString } from "#app/utils/common"; import { toReadableString } from "#utils/common";
class TrainerNameConfig { class TrainerNameConfig {
public urls: string[]; public urls: string[];

Some files were not shown because too many files have changed in this diff Show More