mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-07-03 23:12:20 +02:00
Merge 6402692cba
into 12aaa31454
This commit is contained in:
commit
539516c324
@ -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:"]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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";
|
||||||
|
|
||||||
|
@ -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";
|
||||||
|
|
||||||
|
@ -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 {}
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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.
|
||||||
|
@ -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
|
||||||
|
@ -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.
|
||||||
|
@ -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;
|
||||||
|
@ -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.
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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",
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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,
|
||||||
|
@ -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(
|
||||||
|
@ -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) {
|
||||||
|
@ -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 = {
|
||||||
|
@ -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,
|
||||||
|
@ -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.
|
||||||
|
@ -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;
|
||||||
|
@ -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}.
|
||||||
|
@ -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`);
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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[] = [];
|
||||||
|
@ -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[];
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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,
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
|
@ -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.
|
||||||
|
@ -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";
|
||||||
|
@ -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";
|
||||||
|
@ -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 */
|
||||||
|
@ -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";
|
||||||
|
@ -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";
|
||||||
|
@ -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";
|
||||||
|
@ -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";
|
||||||
|
@ -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";
|
||||||
|
@ -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";
|
||||||
|
@ -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";
|
||||||
|
@ -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";
|
||||||
|
@ -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";
|
||||||
|
@ -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";
|
||||||
|
@ -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";
|
||||||
|
@ -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";
|
||||||
|
@ -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;
|
||||||
|
@ -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";
|
||||||
|
@ -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";
|
||||||
|
@ -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";
|
||||||
|
@ -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";
|
||||||
|
@ -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 */
|
||||||
|
@ -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";
|
||||||
|
@ -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";
|
||||||
|
@ -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";
|
||||||
|
@ -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";
|
||||||
|
@ -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";
|
||||||
|
@ -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";
|
||||||
|
@ -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";
|
||||||
|
@ -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";
|
||||||
|
@ -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";
|
||||||
|
@ -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";
|
||||||
|
@ -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[];
|
||||||
|
@ -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[];
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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,
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
|
@ -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,
|
||||||
|
@ -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,
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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 = "";
|
||||||
|
@ -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;
|
||||||
|
@ -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.
|
||||||
|
@ -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";
|
||||||
|
|
||||||
|
@ -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,
|
||||||
|
@ -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
Loading…
Reference in New Issue
Block a user