update sleeping snorlax encounter

This commit is contained in:
ImperialSympathizer 2024-07-18 13:41:50 -04:00
parent a3664b4624
commit fd48c3fcae
33 changed files with 362 additions and 393 deletions

View File

@ -1554,7 +1554,7 @@ export class MysteryEncounterPostSummonTag extends BattlerTag {
const cancelled = new Utils.BooleanHolder(false);
applyAbAttrs(ProtectStatAbAttr, pokemon, cancelled);
if (!cancelled.value) {
const mysteryEncounterBattleEffects = pokemon.summonData.mysteryEncounterBattleEffects;
const mysteryEncounterBattleEffects = pokemon.mysteryEncounterBattleEffects;
if (mysteryEncounterBattleEffects) {
mysteryEncounterBattleEffects(pokemon);
}

View File

@ -13,7 +13,7 @@ import { EnemyPartyConfig, EnemyPokemonConfig, initBattleWithEnemyConfig, leaveE
import { getRandomPlayerPokemon, getRandomSpeciesByStarterTier } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils";
/** i18n namespace for encounter */
const namespace = "mysteryEncounter:dark_deal";
const namespace = "mysteryEncounter:darkDeal";
/** Exclude Ultra Beasts (inludes Cosmog/Solgaleo/Lunala/Necrozma), Paradox (includes Miraidon/Koraidon), Eternatus, and egg-locked mythicals */
const excludedBosses = [
@ -91,32 +91,32 @@ export const DarkDealEncounter: IMysteryEncounter =
])
.withIntroDialogue([
{
text: `${namespace}_intro_message`,
text: `${namespace}:intro`,
},
{
speaker: `${namespace}_speaker`,
text: `${namespace}_intro_dialogue`,
speaker: `${namespace}:speaker`,
text: `${namespace}:intro_dialogue`,
},
])
.withSceneWaveRangeRequirement(30, 180) // waves 30 to 180
.withScenePartySizeRequirement(2, 6) // Must have at least 2 pokemon in party
.withCatchAllowed(true)
.withTitle(`${namespace}_title`)
.withDescription(`${namespace}_description`)
.withQuery(`${namespace}_query`)
.withTitle(`${namespace}:title`)
.withDescription(`${namespace}:description`)
.withQuery(`${namespace}:query`)
.withOption(
new MysteryEncounterOptionBuilder()
.withOptionMode(EncounterOptionMode.DEFAULT)
.withDialogue({
buttonLabel: `${namespace}_option_1_label`,
buttonTooltip: `${namespace}_option_1_tooltip`,
buttonLabel: `${namespace}:option:1:label`,
buttonTooltip: `${namespace}:option:1:tooltip`,
selected: [
{
speaker: `${namespace}_speaker`,
text: `${namespace}_option_1_selected`,
speaker: `${namespace}:speaker`,
text: `${namespace}:option:1:selected_dialogue`,
},
{
text: `${namespace}_option_1_selected_message`,
text: `${namespace}:option:1:selected_message`,
},
],
})
@ -126,10 +126,7 @@ export const DarkDealEncounter: IMysteryEncounter =
const removedPokemon = getRandomPlayerPokemon(scene, false, true);
scene.removePokemonFromPlayerParty(removedPokemon);
scene.currentBattle.mysteryEncounter.setDialogueToken(
"pokeName",
removedPokemon.name
);
scene.currentBattle.mysteryEncounter.setDialogueToken("pokeName", removedPokemon.name);
// Store removed pokemon types
scene.currentBattle.mysteryEncounter.misc = [
@ -158,7 +155,6 @@ export const DarkDealEncounter: IMysteryEncounter =
pokemonConfig.formIndex = 0;
}
const config: EnemyPartyConfig = {
levelAdditiveMultiplier: 0.75,
pokemonConfigs: [pokemonConfig],
};
return initBattleWithEnemyConfig(scene, config);
@ -167,12 +163,12 @@ export const DarkDealEncounter: IMysteryEncounter =
)
.withSimpleOption(
{
buttonLabel: `${namespace}_option_2_label`,
buttonTooltip: `${namespace}_option_2_tooltip`,
buttonLabel: `${namespace}:option:2:label`,
buttonTooltip: `${namespace}:option:2:tooltip`,
selected: [
{
speaker: `${namespace}_speaker`,
text: `${namespace}_option_2_selected`,
speaker: `${namespace}:speaker`,
text: `${namespace}:option:2:selected`,
},
],
},
@ -184,7 +180,7 @@ export const DarkDealEncounter: IMysteryEncounter =
)
.withOutroDialogue([
{
text: `${namespace}_outro`
text: `${namespace}:outro`
}
])
.build();

View File

@ -102,23 +102,23 @@ export const FightOrFlightEncounter: IMysteryEncounter =
const primaryPokemon = encounter.options[1].primaryPokemon;
if (primaryPokemon) {
// Use primaryPokemon to execute the thievery
encounter.options[1].dialogue.buttonTooltip = `${namespace}_option_2_steal_tooltip`;
encounter.options[1].dialogue.buttonTooltip = `${namespace}:option:2:tooltip_special`;
} else {
encounter.options[1].dialogue.buttonTooltip = `${namespace}_option_2_tooltip`;
encounter.options[1].dialogue.buttonTooltip = `${namespace}:option:2:tooltip`;
}
return true;
})
.withTitle(`${namespace}_title`)
.withDescription(`${namespace}_description`)
.withQuery(`${namespace}_query`)
.withTitle(`${namespace}:title`)
.withDescription(`${namespace}:description`)
.withQuery(`${namespace}:query`)
.withSimpleOption(
{
buttonLabel: `${namespace}_option_1_label`,
buttonTooltip: `${namespace}_option_1_tooltip`,
buttonLabel: `${namespace}:option:1:label`,
buttonTooltip: `${namespace}:option:1:tooltip`,
selected: [
{
text: `${namespace}_option_1_selected_message`,
text: `${namespace}:option:1:selected`,
},
],
},
@ -135,8 +135,8 @@ export const FightOrFlightEncounter: IMysteryEncounter =
.withOptionMode(EncounterOptionMode.DEFAULT_OR_SPECIAL)
.withPrimaryPokemonRequirement(new MoveRequirement(STEALING_MOVES)) // Will set option2PrimaryName and option2PrimaryMove dialogue tokens automatically
.withDialogue({
buttonLabel: `${namespace}_option_2_label`,
buttonTooltip: `${namespace}_option_2_tooltip`,
buttonLabel: `${namespace}:option:2:label`,
buttonTooltip: `${namespace}:option:2:tooltip`,
})
.withOptionPhase(async (scene: BattleScene) => {
// Pick steal
@ -148,7 +148,7 @@ export const FightOrFlightEncounter: IMysteryEncounter =
const primaryPokemon = encounter.options[1].primaryPokemon;
if (primaryPokemon) {
// Use primaryPokemon to execute the thievery
await showEncounterText(scene, `${namespace}_option_2_steal_result`);
await showEncounterText(scene, `${namespace}:option:2:steal_result`);
leaveEncounterWithoutBattle(scene);
return;
}
@ -160,15 +160,15 @@ export const FightOrFlightEncounter: IMysteryEncounter =
config.pokemonConfigs[0].tags = [BattlerTagType.MYSTERY_ENCOUNTER_POST_SUMMON];
config.pokemonConfigs[0].mysteryEncounterBattleEffects = (pokemon: Pokemon) => {
pokemon.scene.currentBattle.mysteryEncounter.setDialogueToken("enemyPokemon", pokemon.name);
queueEncounterMessage(pokemon.scene, `${namespace}_boss_enraged`);
queueEncounterMessage(pokemon.scene, `${namespace}:boss_enraged`);
pokemon.scene.unshiftPhase(new StatChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [BattleStat.ATK, BattleStat.DEF, BattleStat.SPATK, BattleStat.SPDEF, BattleStat.SPD], 1));
};
await showEncounterText(scene, `${namespace}_option_2_bad_result`);
await showEncounterText(scene, `${namespace}:option:2:bad_result`);
await initBattleWithEnemyConfig(scene, config);
} else {
// Steal item (37.5%)
// Display result message then proceed to rewards
await showEncounterText(scene, `${namespace}_option_2_good_result`);
await showEncounterText(scene, `${namespace}:option:2:good_result`);
leaveEncounterWithoutBattle(scene);
}
})
@ -176,11 +176,11 @@ export const FightOrFlightEncounter: IMysteryEncounter =
)
.withSimpleOption(
{
buttonLabel: `${namespace}_option_3_label`,
buttonTooltip: `${namespace}_option_3_tooltip`,
buttonLabel: `${namespace}:option:3:label`,
buttonTooltip: `${namespace}:option:3:tooltip`,
selected: [
{
text: `${namespace}_option_3_selected`,
text: `${namespace}:option:3:selected`,
},
],
},

View File

@ -16,7 +16,7 @@ const OPTION_2_REQUIRED_MOVE = Moves.FLY;
*/
const DAMAGE_PERCENTAGE: number = 25;
/** The i18n namespace for the encounter */
const namepsace = "mysteryEncounter:lostAtSeaDialogue";
const namespace = "mysteryEncounter:lostAtSea";
/**
* Lost at sea encounter.
@ -35,7 +35,7 @@ export const LostAtSeaEncounter: MysteryEncounter = MysteryEncounterBuilder.with
y: 3,
},
])
.withIntroDialogue([{ text: `${namepsace}:intro` }])
.withIntroDialogue([{ text: `${namespace}:intro` }])
.withOnInit((scene: BattleScene) => {
const { mysteryEncounter } = scene.currentBattle;
@ -45,22 +45,22 @@ export const LostAtSeaEncounter: MysteryEncounter = MysteryEncounterBuilder.with
return true;
})
.withTitle(`${namepsace}:title`)
.withDescription(`${namepsace}:description`)
.withQuery(`${namepsace}:query`)
.withTitle(`${namespace}:title`)
.withDescription(`${namespace}:description`)
.withQuery(`${namespace}:query`)
.withOption(
// Option 1: Use a (non fainted) pokemon that can learn Surf to guide you back/
new MysteryEncounterOptionBuilder()
.withPokemonCanLearnMoveRequirement(OPTION_1_REQUIRED_MOVE)
.withOptionMode(EncounterOptionMode.DISABLED_OR_DEFAULT)
.withDialogue({
buttonLabel: `${namepsace}:option:1:label`,
disabledButtonLabel: `${namepsace}:option:1:label_disabled`,
buttonTooltip: `${namepsace}:option:1:tooltip`,
disabledButtonTooltip: `${namepsace}:option:1:tooltip_disabled`,
buttonLabel: `${namespace}:option:1:label`,
disabledButtonLabel: `${namespace}:option:1:label_disabled`,
buttonTooltip: `${namespace}:option:1:tooltip`,
disabledButtonTooltip: `${namespace}:option:1:tooltip_disabled`,
selected: [
{
text: `${namepsace}:option:1:selected`,
text: `${namespace}:option:1:selected`,
},
],
})
@ -73,13 +73,13 @@ export const LostAtSeaEncounter: MysteryEncounter = MysteryEncounterBuilder.with
.withPokemonCanLearnMoveRequirement(OPTION_2_REQUIRED_MOVE)
.withOptionMode(EncounterOptionMode.DISABLED_OR_DEFAULT)
.withDialogue({
buttonLabel: `${namepsace}:option:2:label`,
disabledButtonLabel: `${namepsace}:option:2:label_disabled`,
buttonTooltip: `${namepsace}:option:2:tooltip`,
disabledButtonTooltip: `${namepsace}:option:2:tooltip_disabled`,
buttonLabel: `${namespace}:option:2:label`,
disabledButtonLabel: `${namespace}:option:2:label_disabled`,
buttonTooltip: `${namespace}:option:2:tooltip`,
disabledButtonTooltip: `${namespace}:option:2:tooltip_disabled`,
selected: [
{
text: `${namepsace}:option:2:selected`,
text: `${namespace}:option:2:selected`,
},
],
})
@ -89,11 +89,11 @@ export const LostAtSeaEncounter: MysteryEncounter = MysteryEncounterBuilder.with
.withSimpleOption(
// Option 3: Wander aimlessly
{
buttonLabel: `${namepsace}:option:3:label`,
buttonTooltip: `${namepsace}:option:3:tooltip`,
buttonLabel: `${namespace}:option:3:label`,
buttonTooltip: `${namespace}:option:3:tooltip`,
selected: [
{
text: `${namepsace}:option:3:selected`,
text: `${namespace}:option:3:selected`,
},
],
},
@ -113,7 +113,7 @@ export const LostAtSeaEncounter: MysteryEncounter = MysteryEncounterBuilder.with
)
.withOutroDialogue([
{
text: `${namepsace}:outro`,
text: `${namespace}:outro`,
},
])
.build();

View File

@ -99,7 +99,7 @@ export const MysteriousChallengersEncounter: IMysteryEncounter =
const brutalSpriteKey = brutalConfig.getSpriteKey(female, brutalConfig.doubleOnly);
encounter.enemyPartyConfigs.push({
trainerConfig: brutalConfig,
levelAdditiveMultiplier: 1.1,
levelAdditiveMultiplier: 1,
female: female,
});

View File

@ -9,7 +9,7 @@ import IMysteryEncounter, { MysteryEncounterBuilder, MysteryEncounterTier, } fro
import { EncounterOptionMode, MysteryEncounterOptionBuilder } from "../mystery-encounter-option";
/** i18n namespace for encounter */
const namespace = "mysteryEncounter:dark_deal";
const namespace = "mysteryEncounter:mysteriousChest";
/**
* Mysterious Chest encounter.

View File

@ -1,17 +1,19 @@
import { STEALING_MOVES } from "#app/data/mystery-encounters/requirements/requirement-groups";
import { modifierTypes } from "#app/modifier/modifier-type";
import { BerryType } from "#enums/berry-type";
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
import { Species } from "#enums/species";
import BattleScene from "../../../battle-scene";
import * as Utils from "../../../utils";
import { getPokemonSpecies } from "../../pokemon-species";
import { Status, StatusEffect } from "../../status-effect";
import BattleScene from "#app/battle-scene";
import { StatusEffect } from "#app/data/status-effect";
import IMysteryEncounter, { MysteryEncounterBuilder, MysteryEncounterTier, } from "../mystery-encounter";
import { EncounterOptionMode, MysteryEncounterOptionBuilder } from "../mystery-encounter-option";
import { MoveRequirement } from "../mystery-encounter-requirements";
import { EnemyPartyConfig, EnemyPokemonConfig, generateModifierTypeOption, initBattleWithEnemyConfig, leaveEncounterWithoutBattle, setEncounterExp, setEncounterRewards, } from "../utils/encounter-phase-utils";
import { EnemyPartyConfig, EnemyPokemonConfig, initBattleWithEnemyConfig, initCustomMovesForEncounter, leaveEncounterWithoutBattle, setEncounterExp, setEncounterRewards, } from "../utils/encounter-phase-utils";
import { queueEncounterMessage } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils";
import { Moves } from "#enums/moves";
import { BattlerIndex } from "#app/battle";
import { PokemonMove } from "#app/field/pokemon";
import { getPokemonSpecies } from "#app/data/pokemon-species";
import { PartyHealPhase } from "#app/phases";
/** i18n namespace for the encounter */
const namespace = "mysteryEncounter:sleeping_snorlax";
@ -54,13 +56,18 @@ export const SleepingSnorlaxEncounter: IMysteryEncounter =
const pokemonConfig: EnemyPokemonConfig = {
species: bossSpecies,
isBoss: true,
status: StatusEffect.SLEEP,
status: [StatusEffect.SLEEP, 5], // Extra turns on timer for Snorlax's start of fight moves
moveSet: [Moves.REST, Moves.SLEEP_TALK, Moves.CRUNCH, Moves.GIGA_IMPACT]
};
const config: EnemyPartyConfig = {
levelAdditiveMultiplier: 2,
levelAdditiveMultiplier: 0.5,
pokemonConfigs: [pokemonConfig],
};
encounter.enemyPartyConfigs = [config];
// Load animations/sfx for Snorlax fight start moves
initCustomMovesForEncounter(scene, [Moves.SNORE]);
return true;
})
.withTitle(`${namespace}_title`)
@ -78,12 +85,22 @@ export const SleepingSnorlaxEncounter: IMysteryEncounter =
},
async (scene: BattleScene) => {
// Pick battle
// TODO: do we want special rewards for this?
// setCustomEncounterRewards(scene, { guaranteedModifierTypeFuncs: [modifierTypes.LEFTOVERS], fillRemaining: true});
await initBattleWithEnemyConfig(
scene,
scene.currentBattle.mysteryEncounter.enemyPartyConfigs[0]
);
const encounter = scene.currentBattle.mysteryEncounter;
setEncounterRewards(scene, { guaranteedModifierTypeFuncs: [modifierTypes.LEFTOVERS], fillRemaining: true});
encounter.startOfBattleEffects.push(
{
sourceBattlerIndex: BattlerIndex.ENEMY,
targets: [BattlerIndex.PLAYER],
move: new PokemonMove(Moves.SNORE),
ignorePp: true
},
{
sourceBattlerIndex: BattlerIndex.ENEMY,
targets: [BattlerIndex.PLAYER],
move: new PokemonMove(Moves.SNORE),
ignorePp: true
});
await initBattleWithEnemyConfig(scene, encounter.enemyPartyConfigs[0]);
}
)
.withSimpleOption(
@ -97,46 +114,11 @@ export const SleepingSnorlaxEncounter: IMysteryEncounter =
],
},
async (scene: BattleScene) => {
const instance = scene.currentBattle.mysteryEncounter;
let roll: integer;
scene.executeWithSeedOffset(() => {
roll = Utils.randSeedInt(16, 0);
}, scene.currentBattle.waveIndex);
// Half Snorlax exp to entire party
setEncounterExp(
scene,
scene.getParty().map((p) => p.id),
98
);
if (roll > 4) {
// Fall asleep and get a sitrus berry (75%)
const p = instance.primaryPokemon;
p.status = new Status(StatusEffect.SLEEP, 0, 3);
p.updateInfo(true);
const sitrus = generateModifierTypeOption(scene, modifierTypes.BERRY, [BerryType.SITRUS]);
setEncounterRewards(scene, {
guaranteedModifierTypeOptions: [sitrus],
fillRemaining: false,
});
queueEncounterMessage(scene, `${namespace}_option_2_bad_result`);
leaveEncounterWithoutBattle(scene);
} else {
// Heal to full (25%)
for (const pokemon of scene.getParty()) {
pokemon.hp = pokemon.getMaxHp();
pokemon.resetStatus();
for (const move of pokemon.moveset) {
move.ppUsed = 0;
}
pokemon.updateInfo(true);
}
queueEncounterMessage(scene, `${namespace}_option_2_good_result`);
leaveEncounterWithoutBattle(scene);
}
// Fall asleep waiting for Snorlax
// Full heal party
scene.unshiftPhase(new PartyHealPhase(scene, true));
queueEncounterMessage(scene, `${namespace}_option_2_good_result`);
leaveEncounterWithoutBattle(scene);
}
)
.withOption(
@ -151,13 +133,10 @@ export const SleepingSnorlaxEncounter: IMysteryEncounter =
.withOptionPhase(async (scene: BattleScene) => {
// Steal the Snorlax's Leftovers
const instance = scene.currentBattle.mysteryEncounter;
setEncounterRewards(scene, {
guaranteedModifierTypeFuncs: [modifierTypes.LEFTOVERS],
fillRemaining: false,
});
setEncounterRewards(scene, { guaranteedModifierTypeFuncs: [modifierTypes.LEFTOVERS], fillRemaining: false });
queueEncounterMessage(scene, `${namespace}_option_3_good_result`);
// Snorlax exp to Pokemon that did the stealing
setEncounterExp(scene, [instance.primaryPokemon.id], 189);
setEncounterExp(scene, instance.primaryPokemon.id, getPokemonSpecies(Species.SNORLAX).baseExp);
leaveEncounterWithoutBattle(scene);
})
.build()

View File

@ -43,8 +43,8 @@ export interface StartOfBattleEffect {
sourceBattlerIndex?: BattlerIndex;
targets: BattlerIndex[];
move: PokemonMove;
ignorePp: boolean;
followUp?: boolean;
ignorePp?: boolean;
}
export default interface IMysteryEncounter {

View File

@ -158,14 +158,15 @@ const anyBiomeEncounters: MysteryEncounterType[] = [
*/
export const mysteryEncountersByBiome = new Map<Biome, MysteryEncounterType[]>([
[Biome.TOWN, []],
[Biome.PLAINS, []],
[Biome.PLAINS, [
MysteryEncounterType.SLEEPING_SNORLAX
]],
[Biome.GRASS, [
MysteryEncounterType.SLEEPING_SNORLAX,
]],
[Biome.TALL_GRASS, []],
[Biome.METROPOLIS, []],
[Biome.FOREST, [
MysteryEncounterType.SLEEPING_SNORLAX,
MysteryEncounterType.SAFARI_ZONE
]],
@ -178,13 +179,9 @@ export const mysteryEncountersByBiome = new Map<Biome, MysteryEncounterType[]>([
[Biome.BEACH, []],
[Biome.LAKE, []],
[Biome.SEABED, []],
[Biome.MOUNTAIN, [
MysteryEncounterType.SLEEPING_SNORLAX
]],
[Biome.MOUNTAIN, []],
[Biome.BADLANDS, []],
[Biome.CAVE, [
MysteryEncounterType.SLEEPING_SNORLAX
]],
[Biome.CAVE, []],
[Biome.DESERT, []],
[Biome.ICE_CAVE, []],
[Biome.MEADOW, []],

View File

@ -3,13 +3,13 @@ import { biomeLinks } from "#app/data/biomes";
import MysteryEncounterOption from "#app/data/mystery-encounters/mystery-encounter-option";
import { WIGHT_INCREMENT_ON_SPAWN_MISS } from "#app/data/mystery-encounters/mystery-encounters";
import { queueEncounterMessage, showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils";
import Pokemon, { FieldPosition, PlayerPokemon } from "#app/field/pokemon";
import Pokemon, { FieldPosition, PlayerPokemon, PokemonMove } from "#app/field/pokemon";
import { getPokemonNameWithAffix } from "#app/messages";
import { ExpBalanceModifier, ExpShareModifier, MultipleParticipantExpBonusModifier, PokemonExpBoosterModifier } from "#app/modifier/modifier";
import { CustomModifierSettings, getModifierPoolForType, ModifierPoolType, ModifierType, ModifierTypeFunc, ModifierTypeGenerator, ModifierTypeOption, modifierTypes, PokemonHeldItemModifierType, regenerateModifierPoolThresholds } from "#app/modifier/modifier-type";
import * as Overrides from "#app/overrides";
import { BattleEndPhase, EggLapsePhase, ExpPhase, GameOverPhase, ModifierRewardPhase, MovePhase, SelectModifierPhase, ShowPartyExpBarPhase, TrainerVictoryPhase } from "#app/phases";
import { MysteryEncounterBattlePhase, MysteryEncounterPhase, MysteryEncounterRewardsPhase } from "#app/phases/mystery-encounter-phase";
import { MysteryEncounterBattlePhase, MysteryEncounterBattleStartCleanupPhase, MysteryEncounterPhase, MysteryEncounterRewardsPhase } from "#app/phases/mystery-encounter-phases";
import PokemonData from "#app/system/pokemon-data";
import { OptionSelectConfig, OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler";
import { PartyOption, PartyUiMode } from "#app/ui/party-ui-handler";
@ -30,25 +30,27 @@ import { Gender } from "#app/data/gender";
import { Moves } from "#enums/moves";
import { initMoveAnim, loadMoveAnimAssets } from "#app/data/battle-anims";
export class EnemyPokemonConfig {
export interface EnemyPokemonConfig {
species: PokemonSpecies;
isBoss: boolean = false;
isBoss: boolean;
bossSegments?: number;
bossSegmentModifier?: number; // Additive to the determined segment number
formIndex?: number;
level?: number;
gender?: Gender;
modifierTypes?: PokemonHeldItemModifierType[];
dataSource?: PokemonData;
tags?: BattlerTagType[];
mysteryEncounterBattleEffects?: (pokemon: Pokemon) => void;
status?: StatusEffect;
passive?: boolean;
moveSet?: Moves[];
/** Can set just the status, or pass a timer on the status turns */
status?: StatusEffect | [StatusEffect, number];
mysteryEncounterBattleEffects?: (pokemon: Pokemon) => void;
modifierTypes?: PokemonHeldItemModifierType[];
tags?: BattlerTagType[];
dataSource?: PokemonData;
}
export class EnemyPartyConfig {
levelAdditiveMultiplier?: number = 0; // Formula for enemy: level += waveIndex / 10 * levelAdditive
doubleBattle?: boolean = false;
export interface EnemyPartyConfig {
levelAdditiveMultiplier?: number; // Formula for enemy: level += waveIndex / 10 * levelAdditive
doubleBattle?: boolean;
trainerType?: TrainerType; // Generates trainer battle solely off trainer type
trainerConfig?: TrainerConfig; // More customizable option for configuring trainer battle
pokemonConfigs?: EnemyPokemonConfig[];
@ -167,11 +169,6 @@ export async function initBattleWithEnemyConfig(scene: BattleScene, partyConfig:
enemyPokemon.formIndex = config.formIndex;
}
// Set gender
if (!isNullOrUndefined(config.gender)) {
enemyPokemon.gender = config.gender;
}
// Set Boss
if (config.isBoss) {
let segments = !isNullOrUndefined(config.bossSegments) ? config.bossSegments : scene.getEncounterBossSegments(scene.currentBattle.waveIndex, level, enemySpecies, true);
@ -189,21 +186,40 @@ export async function initBattleWithEnemyConfig(scene: BattleScene, partyConfig:
// Set Status
if (partyConfig.pokemonConfigs[e].status) {
// Default to cureturn 3 for sleep
const cureTurn = partyConfig.pokemonConfigs[e].status === StatusEffect.SLEEP ? 3 : null;
enemyPokemon.status = new Status(partyConfig.pokemonConfigs[e].status, 0, cureTurn);
const status = partyConfig.pokemonConfigs[e].status instanceof Array ? partyConfig.pokemonConfigs[e].status[0] : partyConfig.pokemonConfigs[e].status;
const cureTurn = partyConfig.pokemonConfigs[e].status instanceof Array ? partyConfig.pokemonConfigs[e].status[1] : partyConfig.pokemonConfigs[e].status === StatusEffect.SLEEP ? 3 : null;
enemyPokemon.status = new Status(status, 0, cureTurn);
}
// Set summon data fields
// Set gender
if (!isNullOrUndefined(config.gender)) {
enemyPokemon.gender = config.gender;
enemyPokemon.summonData.gender = config.gender;
}
// Set moves
if (config?.moveSet?.length > 0) {
const moves = config.moveSet.map(m => new PokemonMove(m));
enemyPokemon.moveset = moves;
enemyPokemon.summonData.moveset = moves;
}
// Set tags
if (config.tags?.length > 0) {
const tags = config.tags;
tags.forEach(tag => enemyPokemon.addTag(tag));
// mysteryEncounterBattleEffects can be used IFF MYSTERY_ENCOUNTER_POST_SUMMON tag is applied
enemyPokemon.summonData.mysteryEncounterBattleEffects = config.mysteryEncounterBattleEffects;
// Requires re-priming summon data so that tags are not cleared on SummonPhase
enemyPokemon.primeSummonData(enemyPokemon.summonData);
}
// mysteryEncounterBattleEffects will only be used IFF MYSTERY_ENCOUNTER_POST_SUMMON tag is applied
if (config.mysteryEncounterBattleEffects) {
enemyPokemon.mysteryEncounterBattleEffects = config.mysteryEncounterBattleEffects;
}
// Requires re-priming summon data to update everything properly
enemyPokemon.primeSummonData(enemyPokemon.summonData);
enemyPokemon.initBattleInfo();
enemyPokemon.getBattleInfo().initInfo(enemyPokemon);
}
@ -626,6 +642,9 @@ export function handleEncounterStartOfBattleEffects(scene: BattleScene) {
scene.pushPhase(new MovePhase(scene, source, effect.targets, effect.move, effect.followUp, effect.followUp));
});
// Pseudo turn end phase to reset flinch states, Endure, etc.
scene.pushPhase(new MysteryEncounterBattleStartCleanupPhase(scene));
encounter.startOfBattleEffectsComplete = true;
}
}

View File

@ -101,6 +101,8 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
public battleSummonData: PokemonBattleSummonData;
public turnData: PokemonTurnData;
public mysteryEncounterBattleEffects: (pokemon: Pokemon) => void = null;
public fieldPosition: FieldPosition;
public maskEnabled: boolean;
@ -3931,7 +3933,6 @@ export class PokemonSummonData {
public moveset: PokemonMove[];
// If not initialized this value will not be populated from save data.
public types: Type[] = null;
public mysteryEncounterBattleEffects: (pokemon: Pokemon) => void = null;
}
export class PokemonBattleData {

View File

@ -1,4 +1,15 @@
import { lostAtSeaDialogue } from "./mystery-encounters/lost-at-sea-dialogue";
import { mysteriousChestDialogue } from "#app/locales/en/mystery-encounters/mysterious-chest-dialogue";
import { mysteriousChallengersDialogue } from "#app/locales/en/mystery-encounters/mysterious-challengers-dialogue";
import { darkDealDialogue } from "#app/locales/en/mystery-encounters/dark-deal-dialogue";
import { departmentStoreSaleDialogue } from "#app/locales/en/mystery-encounters/department-store-sale-dialogue";
import { fieldTripDialogue } from "#app/locales/en/mystery-encounters/field-trip-dialogue";
import { fieryFalloutDialogue } from "#app/locales/en/mystery-encounters/fiery-fallout-dialogue";
import { fightOrFlightDialogue } from "#app/locales/en/mystery-encounters/fight-or-flight-dialogue";
import { safariZoneDialogue } from "#app/locales/en/mystery-encounters/safari-zone-dialogue";
import { shadyVitaminDealerDialogue } from "#app/locales/en/mystery-encounters/shady-vitamin-dealer-dialogue";
import { sleepingSnorlaxDialogue } from "#app/locales/en/mystery-encounters/sleeping-snorlax-dialogue";
import { trainingSessionDialogue } from "#app/locales/en/mystery-encounters/training-session-dialogue";
/**
* Patterns that can be used:
@ -21,47 +32,6 @@ export const mysteryEncounter = {
"paid_money": "You paid ₽{{amount, number}}.",
"receive_money": "You received ₽{{amount, number}}!",
// Mystery Encounters -- Common Tier
"mysterious_chest_intro_message": "You found...@d{32} a chest?",
"mysterious_chest_title": "The Mysterious Chest",
"mysterious_chest_description": "A beautifully ornamented chest stands on the ground. There must be something good inside... right?",
"mysterious_chest_query": "Will you open it?",
"mysterious_chest_option_1_label": "Open it",
"mysterious_chest_option_1_tooltip": "@[SUMMARY_BLUE]{(35%) Something terrible}\n@[SUMMARY_GREEN]{(40%) Okay Rewards}\n@[SUMMARY_GREEN]{(20%) Good Rewards}\n@[SUMMARY_GREEN]{(4%) Great Rewards}\n@[SUMMARY_GREEN]{(1%) Amazing Rewards}",
"mysterious_chest_option_2_label": "It's too risky, leave",
"mysterious_chest_option_2_tooltip": "(-) No Rewards",
"mysterious_chest_option_1_selected_message": "You open the chest to find...",
"mysterious_chest_option_2_selected_message": "You hurry along your way,\nwith a slight feeling of regret.",
"mysterious_chest_option_1_normal_result": "Just some normal tools and items.",
"mysterious_chest_option_1_good_result": "Some pretty nice tools and items.",
"mysterious_chest_option_1_great_result": "A couple great tools and items!",
"mysterious_chest_option_1_amazing_result": "Whoa! An amazing item!",
"mysterious_chest_option_1_bad_result": `Oh no!@d{32}\nThe chest was trapped!
$Your {{pokeName}} jumps in front of you\nbut is KOed in the process.`,
"fight_or_flight_intro_message": "Something shiny is sparkling\non the ground near that Pokémon!",
"fight_or_flight_title": "Fight or Flight",
"fight_or_flight_description": "It looks like there's a strong Pokémon guarding an item. Battling is the straightforward approach, but this Pokémon looks strong. You could also try to sneak around, though the Pokémon might catch you.",
"fight_or_flight_query": "What will you do?",
"fight_or_flight_option_1_label": "Battle the Pokémon",
"fight_or_flight_option_1_tooltip": "(-) Hard Battle\n(+) New Item",
"fight_or_flight_option_2_label": "Steal the item",
"fight_or_flight_option_2_tooltip": "@[SUMMARY_GREEN]{(35%) Steal Item}\n@[SUMMARY_BLUE]{(65%) Harder Battle}",
"fight_or_flight_option_2_steal_tooltip": "(+) {{option2PrimaryName}} uses {{option2PrimaryMove}}",
"fight_or_flight_option_3_label": "Leave",
"fight_or_flight_option_3_tooltip": "(-) No Rewards",
"fight_or_flight_option_1_selected_message": "You approach the\nPokémon without fear.",
"fight_or_flight_option_2_good_result": `.@d{32}.@d{32}.@d{32}
$You manage to sneak your way\npast and grab the item!`,
"fight_or_flight_option_2_steal_result": `.@d{32}.@d{32}.@d{32}
$Your {{option2PrimaryName}} helps you out and uses {{option2PrimaryMove}}!
$ You nabbed the item!`,
"fight_or_flight_option_2_bad_result": `.@d{32}.@d{32}.@d{32}
$The Pokémon catches you\nas you try to sneak around!`,
"fight_or_flight_boss_enraged": "The opposing {{enemyPokemon}} has become enraged!",
"fight_or_flight_option_3_selected": "You leave the strong Pokémon\nwith its prize and continue on.",
"department_store_sale_intro_message": "It's a lady with a ton of shopping bags.",
"department_store_sale_speaker": "Shopper",
"department_store_sale_intro_dialogue": `Hello! Are you here for\nthe amazing sales too?
@ -217,28 +187,6 @@ export const mysteryEncounter = {
// Mystery Encounters -- Rogue Tier
"dark_deal_intro_message": "A strange man in a tattered coat\nstands in your way...",
"dark_deal_speaker": "Shady Guy",
"dark_deal_intro_dialogue": `Hey, you!
$I've been working on a new device\nto bring out a Pokémon's latent power!
$It completely rebinds the Pokémon's atoms\nat a molecular level into a far more powerful form.
$Hehe...@d{64} I just need some sac-@d{32}\nErr, test subjects, to prove it works.`,
"dark_deal_title": "Dark Deal",
"dark_deal_description": "The disturbing fellow holds up some Pokéballs.\n\"I'll make it worth your while! You can have these strong Pokéballs as payment, All I need is a Pokémon from your team! Hehe...\"",
"dark_deal_query": "What will you do?",
"dark_deal_option_1_label": "Accept",
"dark_deal_option_1_tooltip": "(+) 5 Rogue Balls\n(?) Enhance a Random Pokémon",
"dark_deal_option_2_label": "Refuse",
"dark_deal_option_2_tooltip": "(-) No Rewards",
"dark_deal_option_1_selected": `Let's see, that {{pokeName}} will do nicely!
$Remember, I'm not responsible\nif anything bad happens!@d{32} Hehe...`,
"dark_deal_option_1_selected_message": `The man hands you 5 Rogue Balls.
\${{pokeName}} hops into the strange machine...
$Flashing lights and weird noises\nstart coming from the machine!
$...@d{96} Something emerges\nfrom the device, raging wildly!`,
"dark_deal_option_2_selected": "Not gonna help a poor fellow out?\nPah!",
"dark_deal_outro": "After the harrowing encounter,\nyou collect yourself and depart.",
"sleeping_snorlax_intro_message": `As you walk down a narrow pathway, you see a towering silhouette blocking your path.
$You get closer to see a Snorlax sleeping peacefully.\nIt seems like there's no way around it.`,
"sleeping_snorlax_title": "Sleeping Snorlax",
@ -253,12 +201,20 @@ export const mysteryEncounter = {
"sleeping_snorlax_option_3_disabled_tooltip": "Your Pokémon need to know certain moves to choose this",
"sleeping_snorlax_option_1_selected_message": "You approach the\nPokémon without fear.",
"sleeping_snorlax_option_2_selected_message": `.@d{32}.@d{32}.@d{32}
$You wait for a time, but the Snorlax's yawns make your party sleepy.`,
"sleeping_snorlax_option_2_good_result": "When you all awaken, the Snorlax is no where to be found - but your Pokémon are all healed!",
"sleeping_snorlax_option_2_bad_result": `Your {{primaryName}} is still asleep...
$But on the bright side, the Snorlax left something behind...
$@s{item_fanfare}You gained a Berry!`,
$You wait for a time, but the Snorlax's yawns make your party sleepy...`,
"sleeping_snorlax_option_2_good_result": "When you all awaken, the Snorlax is no where to be found -\nbut your Pokémon are all healed!",
"sleeping_snorlax_option_3_good_result": "Your {{option3PrimaryName}} uses {{option3PrimaryMove}}! @s{item_fanfare}It steals Leftovers off the sleeping Snorlax and you make out like bandits!",
mysteriousChallengers: mysteriousChallengersDialogue,
mysteriousChest: mysteriousChestDialogue,
darkDeal: darkDealDialogue,
fightOrFlight: fightOrFlightDialogue,
sleepingSnorlax: sleepingSnorlaxDialogue,
trainingSession: trainingSessionDialogue,
departmentStoreSale: departmentStoreSaleDialogue,
shadyVitaminDealer: shadyVitaminDealerDialogue,
fieldTrip: fieldTripDialogue,
safariZone: safariZoneDialogue,
lostAtSea: lostAtSeaDialogue,
fieryFallout: fieryFalloutDialogue,
} as const;

View File

@ -1,31 +1,29 @@
export const darkDealDialogue = {
intro: "Wandering aimlessly, you effectively get nowhere.",
title: "Lost at sea",
description: "The sea is turbulent in this area, and you seem to be running out of fuel.\nThis is bad. Is there a way out of the situation?",
intro: "A strange man in a tattered coat\nstands in your way...",
speaker: "Shady Guy",
intro_dialogue: `Hey, you!
$I've been working on a new device\nto bring out a Pokémon's latent power!
$It completely rebinds the Pokémon's atoms\nat a molecular level into a far more powerful form.
$Hehe...@d{64} I just need some sac-@d{32}\nErr, test subjects, to prove it works.`,
title: "Dark Deal",
description: "The disturbing fellow holds up some Pokéballs.\n\"I'll make it worth your while! You can have these strong Pokéballs as payment, All I need is a Pokémon from your team! Hehe...\"",
query: "What will you do?",
option: {
1: {
label: "{{option1PrimaryName}} can help",
label_disabled: "Can't {{option1RequiredMove}}",
tooltip: "(+) {{option1PrimaryName}} saves you.\n(+) {{option1PrimaryName}} gains some EXP.",
tooltip_disabled: "You have no Pokémon to {{option1RequiredMove}} on",
selected:
"{{option1PrimaryName}} swims ahead, guiding you back on track.\n{{option1PrimaryName}} seems to also have gotten stronger in this time of need.",
label: "Accept",
tooltip: "(+) 5 Rogue Balls\n(?) Enhance a Random Pokémon",
selected_dialogue: `Let's see, that {{pokeName}} will do nicely!
$Remember, I'm not responsible\nif anything bad happens!@d{32} Hehe...`,
selected_message: `The man hands you 5 Rogue Balls.
\${{pokeName}} hops into the strange machine...
$Flashing lights and weird noises\nstart coming from the machine!
$...@d{96} Something emerges\nfrom the device, raging wildly!`
},
2: {
label: "{{option2PrimaryName}} can help",
label_disabled: "Can't {{option2RequiredMove}}",
tooltip: "(+) {{option2PrimaryName}} saves you.\n(+) {{option2PrimaryName}} gains some EXP.",
tooltip_disabled: "You have no Pokémon to {{option2RequiredMove}} with",
selected:
"{{option2PrimaryName}} flies ahead of your boat, guiding you back on track.\n{{option2PrimaryName}} seems to also have gotten stronger in this time of need.",
},
3: {
label: "Wander aimlessly",
tooltip: "(-) Each of your Pokémon lose {{damagePercentage}}% of their total HP.",
selected: `You float about in the boat, steering it aimlessly until you finally get back on track.
$You and your Pokémon get very fatigued during the whole ordeal.`,
},
label: "Refuse",
tooltip: "(-) No Rewards",
selected: "Not gonna help a poor fellow out?\nPah!",
}
},
outro: "You are back on track."
outro: "After the harrowing encounter,\nyou collect yourself and depart."
};

View File

@ -1,30 +1,30 @@
export const departmentStoreSaleDialogue = {
intro: "Wandering aimlessly, you effectively get nowhere.",
title: "Lost at sea",
description: "The sea is turbulent in this area, and you seem to be running out of fuel.\nThis is bad. Is there a way out of the situation?",
intro: "Wandering aimlessly through the sea, you've effectively gotten nowhere.",
title: "Lost at Sea",
description: "The sea is turbulent in this area, and you're running out of energy.\nThis is bad. Is there a way out of the situation?",
query: "What will you do?",
option: {
1: {
label: "{{option1PrimaryName}} can help",
label_disabled: "Can't {{option1RequiredMove}}",
tooltip: "(+) {{option1PrimaryName}} saves you.\n(+) {{option1PrimaryName}} gains some EXP.",
tooltip: "(+) {{option1PrimaryName}} saves you\n(+) {{option1PrimaryName}} gains some EXP",
tooltip_disabled: "You have no Pokémon to {{option1RequiredMove}} on",
selected:
"{{option1PrimaryName}} swims ahead, guiding you back on track.\n{{option1PrimaryName}} seems to also have gotten stronger in this time of need.",
selected: `{{option1PrimaryName}} swims ahead, guiding you back on track.
\${{option1PrimaryName}} seems to also have gotten stronger in this time of need!`,
},
2: {
label: "{{option2PrimaryName}} can help",
label_disabled: "Can't {{option2RequiredMove}}",
tooltip: "(+) {{option2PrimaryName}} saves you.\n(+) {{option2PrimaryName}} gains some EXP.",
tooltip: "(+) {{option2PrimaryName}} saves you\n(+) {{option2PrimaryName}} gains some EXP",
tooltip_disabled: "You have no Pokémon to {{option2RequiredMove}} with",
selected:
"{{option2PrimaryName}} flies ahead of your boat, guiding you back on track.\n{{option2PrimaryName}} seems to also have gotten stronger in this time of need.",
selected: `{{option2PrimaryName}} flies ahead of your boat, guiding you back on track.
\${{option2PrimaryName}} seems to also have gotten stronger in this time of need!`,
},
3: {
label: "Wander aimlessly",
tooltip: "(-) Each of your Pokémon lose {{damagePercentage}}% of their total HP.",
selected: `You float about in the boat, steering it aimlessly until you finally get back on track.
$You and your Pokémon get very fatigued during the whole ordeal.`,
tooltip: "(-) Each of your Pokémon lose {{damagePercentage}}% of their total HP",
selected: `You float about in the boat, steering without direction until you finally spot a landmark you remember.
$You and your Pokémon are fatigued from the whole ordeal.`,
},
},
outro: "You are back on track."

View File

@ -1,30 +1,30 @@
export const fieldTripDialogue = {
intro: "Wandering aimlessly, you effectively get nowhere.",
title: "Lost at sea",
description: "The sea is turbulent in this area, and you seem to be running out of fuel.\nThis is bad. Is there a way out of the situation?",
intro: "Wandering aimlessly through the sea, you've effectively gotten nowhere.",
title: "Lost at Sea",
description: "The sea is turbulent in this area, and you're running out of energy.\nThis is bad. Is there a way out of the situation?",
query: "What will you do?",
option: {
1: {
label: "{{option1PrimaryName}} can help",
label_disabled: "Can't {{option1RequiredMove}}",
tooltip: "(+) {{option1PrimaryName}} saves you.\n(+) {{option1PrimaryName}} gains some EXP.",
tooltip: "(+) {{option1PrimaryName}} saves you\n(+) {{option1PrimaryName}} gains some EXP",
tooltip_disabled: "You have no Pokémon to {{option1RequiredMove}} on",
selected:
"{{option1PrimaryName}} swims ahead, guiding you back on track.\n{{option1PrimaryName}} seems to also have gotten stronger in this time of need.",
selected: `{{option1PrimaryName}} swims ahead, guiding you back on track.
\${{option1PrimaryName}} seems to also have gotten stronger in this time of need!`,
},
2: {
label: "{{option2PrimaryName}} can help",
label_disabled: "Can't {{option2RequiredMove}}",
tooltip: "(+) {{option2PrimaryName}} saves you.\n(+) {{option2PrimaryName}} gains some EXP.",
tooltip: "(+) {{option2PrimaryName}} saves you\n(+) {{option2PrimaryName}} gains some EXP",
tooltip_disabled: "You have no Pokémon to {{option2RequiredMove}} with",
selected:
"{{option2PrimaryName}} flies ahead of your boat, guiding you back on track.\n{{option2PrimaryName}} seems to also have gotten stronger in this time of need.",
selected: `{{option2PrimaryName}} flies ahead of your boat, guiding you back on track.
\${{option2PrimaryName}} seems to also have gotten stronger in this time of need!`,
},
3: {
label: "Wander aimlessly",
tooltip: "(-) Each of your Pokémon lose {{damagePercentage}}% of their total HP.",
selected: `You float about in the boat, steering it aimlessly until you finally get back on track.
$You and your Pokémon get very fatigued during the whole ordeal.`,
tooltip: "(-) Each of your Pokémon lose {{damagePercentage}}% of their total HP",
selected: `You float about in the boat, steering without direction until you finally spot a landmark you remember.
$You and your Pokémon are fatigued from the whole ordeal.`,
},
},
outro: "You are back on track."

View File

@ -1,30 +1,30 @@
export const fieryFalloutDialogue = {
intro: "Wandering aimlessly, you effectively get nowhere.",
title: "Lost at sea",
description: "The sea is turbulent in this area, and you seem to be running out of fuel.\nThis is bad. Is there a way out of the situation?",
intro: "Wandering aimlessly through the sea, you've effectively gotten nowhere.",
title: "Lost at Sea",
description: "The sea is turbulent in this area, and you're running out of energy.\nThis is bad. Is there a way out of the situation?",
query: "What will you do?",
option: {
1: {
label: "{{option1PrimaryName}} can help",
label_disabled: "Can't {{option1RequiredMove}}",
tooltip: "(+) {{option1PrimaryName}} saves you.\n(+) {{option1PrimaryName}} gains some EXP.",
tooltip: "(+) {{option1PrimaryName}} saves you\n(+) {{option1PrimaryName}} gains some EXP",
tooltip_disabled: "You have no Pokémon to {{option1RequiredMove}} on",
selected:
"{{option1PrimaryName}} swims ahead, guiding you back on track.\n{{option1PrimaryName}} seems to also have gotten stronger in this time of need.",
selected: `{{option1PrimaryName}} swims ahead, guiding you back on track.
\${{option1PrimaryName}} seems to also have gotten stronger in this time of need!`,
},
2: {
label: "{{option2PrimaryName}} can help",
label_disabled: "Can't {{option2RequiredMove}}",
tooltip: "(+) {{option2PrimaryName}} saves you.\n(+) {{option2PrimaryName}} gains some EXP.",
tooltip: "(+) {{option2PrimaryName}} saves you\n(+) {{option2PrimaryName}} gains some EXP",
tooltip_disabled: "You have no Pokémon to {{option2RequiredMove}} with",
selected:
"{{option2PrimaryName}} flies ahead of your boat, guiding you back on track.\n{{option2PrimaryName}} seems to also have gotten stronger in this time of need.",
selected: `{{option2PrimaryName}} flies ahead of your boat, guiding you back on track.
\${{option2PrimaryName}} seems to also have gotten stronger in this time of need!`,
},
3: {
label: "Wander aimlessly",
tooltip: "(-) Each of your Pokémon lose {{damagePercentage}}% of their total HP.",
selected: `You float about in the boat, steering it aimlessly until you finally get back on track.
$You and your Pokémon get very fatigued during the whole ordeal.`,
tooltip: "(-) Each of your Pokémon lose {{damagePercentage}}% of their total HP",
selected: `You float about in the boat, steering without direction until you finally spot a landmark you remember.
$You and your Pokémon are fatigued from the whole ordeal.`,
},
},
outro: "You are back on track."

View File

@ -1,31 +1,31 @@
export const fightOrFlightDialogue = {
intro: "Wandering aimlessly, you effectively get nowhere.",
title: "Lost at sea",
description: "The sea is turbulent in this area, and you seem to be running out of fuel.\nThis is bad. Is there a way out of the situation?",
intro: "Something shiny is sparkling\non the ground near that Pokémon!",
title: "Fight or Flight",
description: "It looks like there's a strong Pokémon guarding an item. Battling is the straightforward approach, but this Pokémon looks strong. You could also try to sneak around, though the Pokémon might catch you.",
query: "What will you do?",
option: {
1: {
label: "{{option1PrimaryName}} can help",
label_disabled: "Can't {{option1RequiredMove}}",
tooltip: "(+) {{option1PrimaryName}} saves you.\n(+) {{option1PrimaryName}} gains some EXP.",
tooltip_disabled: "You have no Pokémon to {{option1RequiredMove}} on",
selected:
"{{option1PrimaryName}} swims ahead, guiding you back on track.\n{{option1PrimaryName}} seems to also have gotten stronger in this time of need.",
label: "Battle the Pokémon",
tooltip: "(-) Hard Battle\n(+) New Item",
selected: "You approach the\nPokémon without fear.",
},
2: {
label: "{{option2PrimaryName}} can help",
label_disabled: "Can't {{option2RequiredMove}}",
tooltip: "(+) {{option2PrimaryName}} saves you.\n(+) {{option2PrimaryName}} gains some EXP.",
tooltip_disabled: "You have no Pokémon to {{option2RequiredMove}} with",
selected:
"{{option2PrimaryName}} flies ahead of your boat, guiding you back on track.\n{{option2PrimaryName}} seems to also have gotten stronger in this time of need.",
tooltip: "@[SUMMARY_GREEN]{(35%) Steal Item}\n@[SUMMARY_BLUE]{(65%) Harder Battle}",
tooltip_special: "(+) {{option2PrimaryName}} uses {{option2PrimaryMove}}",
good_result: `.@d{32}.@d{32}.@d{32}
$You manage to sneak your way\npast and grab the item!`,
special_result: `.@d{32}.@d{32}.@d{32}
$Your {{option2PrimaryName}} helps you out and uses {{option2PrimaryMove}}!
$ You nabbed the item!`,
bad_result: `.@d{32}.@d{32}.@d{32}
$The Pokémon catches you\nas you try to sneak around!`,
boss_enraged: "The opposing {{enemyPokemon}} has become enraged!"
},
3: {
label: "Wander aimlessly",
tooltip: "(-) Each of your Pokémon lose {{damagePercentage}}% of their total HP.",
selected: `You float about in the boat, steering it aimlessly until you finally get back on track.
$You and your Pokémon get very fatigued during the whole ordeal.`,
label: "Leave",
tooltip: "(-) No Rewards",
selected: "You leave the strong Pokémon\nwith its prize and continue on.",
},
},
outro: "You are back on track."
}
};

View File

@ -7,7 +7,7 @@ export const lostAtSeaDialogue = {
1: {
label: "{{option1PrimaryName}} can help",
label_disabled: "Can't {{option1RequiredMove}}",
tooltip: "(+) {{option1PrimaryName}} saves you.\n(+) {{option1PrimaryName}} gains some EXP.",
tooltip: "(+) {{option1PrimaryName}} saves you\n(+) {{option1PrimaryName}} gains some EXP",
tooltip_disabled: "You have no Pokémon to {{option1RequiredMove}} on",
selected: `{{option1PrimaryName}} swims ahead, guiding you back on track.
\${{option1PrimaryName}} seems to also have gotten stronger in this time of need!`,
@ -15,16 +15,16 @@ export const lostAtSeaDialogue = {
2: {
label: "{{option2PrimaryName}} can help",
label_disabled: "Can't {{option2RequiredMove}}",
tooltip: "(+) {{option2PrimaryName}} saves you.\n(+) {{option2PrimaryName}} gains some EXP.",
tooltip: "(+) {{option2PrimaryName}} saves you\n(+) {{option2PrimaryName}} gains some EXP",
tooltip_disabled: "You have no Pokémon to {{option2RequiredMove}} with",
selected: `{{option2PrimaryName}} flies ahead of your boat, guiding you back on track.
\${{option2PrimaryName}} seems to also have gotten stronger in this time of need!`,
},
3: {
label: "Wander aimlessly",
tooltip: "(-) Each of your Pokémon lose {{damagePercentage}}% of their total HP.",
selected: `You float about in the boat, steering it aimlessly until you finally get back on track.
$You and your Pokémon get very fatigued during the whole ordeal.`,
tooltip: "(-) Each of your Pokémon lose {{damagePercentage}}% of their total HP",
selected: `You float about in the boat, steering without direction until you finally spot a landmark you remember.
$You and your Pokémon are fatigued from the whole ordeal.`,
},
},
outro: "You are back on track."

View File

@ -1,30 +1,30 @@
export const mysteriousChallengersDialogue = {
intro: "Wandering aimlessly, you effectively get nowhere.",
title: "Lost at sea",
description: "The sea is turbulent in this area, and you seem to be running out of fuel.\nThis is bad. Is there a way out of the situation?",
intro: "Wandering aimlessly through the sea, you've effectively gotten nowhere.",
title: "Lost at Sea",
description: "The sea is turbulent in this area, and you're running out of energy.\nThis is bad. Is there a way out of the situation?",
query: "What will you do?",
option: {
1: {
label: "{{option1PrimaryName}} can help",
label_disabled: "Can't {{option1RequiredMove}}",
tooltip: "(+) {{option1PrimaryName}} saves you.\n(+) {{option1PrimaryName}} gains some EXP.",
tooltip: "(+) {{option1PrimaryName}} saves you\n(+) {{option1PrimaryName}} gains some EXP",
tooltip_disabled: "You have no Pokémon to {{option1RequiredMove}} on",
selected:
"{{option1PrimaryName}} swims ahead, guiding you back on track.\n{{option1PrimaryName}} seems to also have gotten stronger in this time of need.",
selected: `{{option1PrimaryName}} swims ahead, guiding you back on track.
\${{option1PrimaryName}} seems to also have gotten stronger in this time of need!`,
},
2: {
label: "{{option2PrimaryName}} can help",
label_disabled: "Can't {{option2RequiredMove}}",
tooltip: "(+) {{option2PrimaryName}} saves you.\n(+) {{option2PrimaryName}} gains some EXP.",
tooltip: "(+) {{option2PrimaryName}} saves you\n(+) {{option2PrimaryName}} gains some EXP",
tooltip_disabled: "You have no Pokémon to {{option2RequiredMove}} with",
selected:
"{{option2PrimaryName}} flies ahead of your boat, guiding you back on track.\n{{option2PrimaryName}} seems to also have gotten stronger in this time of need.",
selected: `{{option2PrimaryName}} flies ahead of your boat, guiding you back on track.
\${{option2PrimaryName}} seems to also have gotten stronger in this time of need!`,
},
3: {
label: "Wander aimlessly",
tooltip: "(-) Each of your Pokémon lose {{damagePercentage}}% of their total HP.",
selected: `You float about in the boat, steering it aimlessly until you finally get back on track.
$You and your Pokémon get very fatigued during the whole ordeal.`,
tooltip: "(-) Each of your Pokémon lose {{damagePercentage}}% of their total HP",
selected: `You float about in the boat, steering without direction until you finally spot a landmark you remember.
$You and your Pokémon are fatigued from the whole ordeal.`,
},
},
outro: "You are back on track."

View File

@ -1,30 +1,30 @@
export const safariZoneDialogue = {
intro: "Wandering aimlessly, you effectively get nowhere.",
title: "Lost at sea",
description: "The sea is turbulent in this area, and you seem to be running out of fuel.\nThis is bad. Is there a way out of the situation?",
intro: "Wandering aimlessly through the sea, you've effectively gotten nowhere.",
title: "Lost at Sea",
description: "The sea is turbulent in this area, and you're running out of energy.\nThis is bad. Is there a way out of the situation?",
query: "What will you do?",
option: {
1: {
label: "{{option1PrimaryName}} can help",
label_disabled: "Can't {{option1RequiredMove}}",
tooltip: "(+) {{option1PrimaryName}} saves you.\n(+) {{option1PrimaryName}} gains some EXP.",
tooltip: "(+) {{option1PrimaryName}} saves you\n(+) {{option1PrimaryName}} gains some EXP",
tooltip_disabled: "You have no Pokémon to {{option1RequiredMove}} on",
selected:
"{{option1PrimaryName}} swims ahead, guiding you back on track.\n{{option1PrimaryName}} seems to also have gotten stronger in this time of need.",
selected: `{{option1PrimaryName}} swims ahead, guiding you back on track.
\${{option1PrimaryName}} seems to also have gotten stronger in this time of need!`,
},
2: {
label: "{{option2PrimaryName}} can help",
label_disabled: "Can't {{option2RequiredMove}}",
tooltip: "(+) {{option2PrimaryName}} saves you.\n(+) {{option2PrimaryName}} gains some EXP.",
tooltip: "(+) {{option2PrimaryName}} saves you\n(+) {{option2PrimaryName}} gains some EXP",
tooltip_disabled: "You have no Pokémon to {{option2RequiredMove}} with",
selected:
"{{option2PrimaryName}} flies ahead of your boat, guiding you back on track.\n{{option2PrimaryName}} seems to also have gotten stronger in this time of need.",
selected: `{{option2PrimaryName}} flies ahead of your boat, guiding you back on track.
\${{option2PrimaryName}} seems to also have gotten stronger in this time of need!`,
},
3: {
label: "Wander aimlessly",
tooltip: "(-) Each of your Pokémon lose {{damagePercentage}}% of their total HP.",
selected: `You float about in the boat, steering it aimlessly until you finally get back on track.
$You and your Pokémon get very fatigued during the whole ordeal.`,
tooltip: "(-) Each of your Pokémon lose {{damagePercentage}}% of their total HP",
selected: `You float about in the boat, steering without direction until you finally spot a landmark you remember.
$You and your Pokémon are fatigued from the whole ordeal.`,
},
},
outro: "You are back on track."

View File

@ -1,30 +1,30 @@
export const shadyVitaminDealerDialogue = {
intro: "Wandering aimlessly, you effectively get nowhere.",
title: "Lost at sea",
description: "The sea is turbulent in this area, and you seem to be running out of fuel.\nThis is bad. Is there a way out of the situation?",
intro: "Wandering aimlessly through the sea, you've effectively gotten nowhere.",
title: "Lost at Sea",
description: "The sea is turbulent in this area, and you're running out of energy.\nThis is bad. Is there a way out of the situation?",
query: "What will you do?",
option: {
1: {
label: "{{option1PrimaryName}} can help",
label_disabled: "Can't {{option1RequiredMove}}",
tooltip: "(+) {{option1PrimaryName}} saves you.\n(+) {{option1PrimaryName}} gains some EXP.",
tooltip: "(+) {{option1PrimaryName}} saves you\n(+) {{option1PrimaryName}} gains some EXP",
tooltip_disabled: "You have no Pokémon to {{option1RequiredMove}} on",
selected:
"{{option1PrimaryName}} swims ahead, guiding you back on track.\n{{option1PrimaryName}} seems to also have gotten stronger in this time of need.",
selected: `{{option1PrimaryName}} swims ahead, guiding you back on track.
\${{option1PrimaryName}} seems to also have gotten stronger in this time of need!`,
},
2: {
label: "{{option2PrimaryName}} can help",
label_disabled: "Can't {{option2RequiredMove}}",
tooltip: "(+) {{option2PrimaryName}} saves you.\n(+) {{option2PrimaryName}} gains some EXP.",
tooltip: "(+) {{option2PrimaryName}} saves you\n(+) {{option2PrimaryName}} gains some EXP",
tooltip_disabled: "You have no Pokémon to {{option2RequiredMove}} with",
selected:
"{{option2PrimaryName}} flies ahead of your boat, guiding you back on track.\n{{option2PrimaryName}} seems to also have gotten stronger in this time of need.",
selected: `{{option2PrimaryName}} flies ahead of your boat, guiding you back on track.
\${{option2PrimaryName}} seems to also have gotten stronger in this time of need!`,
},
3: {
label: "Wander aimlessly",
tooltip: "(-) Each of your Pokémon lose {{damagePercentage}}% of their total HP.",
selected: `You float about in the boat, steering it aimlessly until you finally get back on track.
$You and your Pokémon get very fatigued during the whole ordeal.`,
tooltip: "(-) Each of your Pokémon lose {{damagePercentage}}% of their total HP",
selected: `You float about in the boat, steering without direction until you finally spot a landmark you remember.
$You and your Pokémon are fatigued from the whole ordeal.`,
},
},
outro: "You are back on track."

View File

@ -1,30 +1,30 @@
export const sleepingSnorlaxDialogue = {
intro: "Wandering aimlessly, you effectively get nowhere.",
title: "Lost at sea",
description: "The sea is turbulent in this area, and you seem to be running out of fuel.\nThis is bad. Is there a way out of the situation?",
intro: "Wandering aimlessly through the sea, you've effectively gotten nowhere.",
title: "Lost at Sea",
description: "The sea is turbulent in this area, and you're running out of energy.\nThis is bad. Is there a way out of the situation?",
query: "What will you do?",
option: {
1: {
label: "{{option1PrimaryName}} can help",
label_disabled: "Can't {{option1RequiredMove}}",
tooltip: "(+) {{option1PrimaryName}} saves you.\n(+) {{option1PrimaryName}} gains some EXP.",
tooltip: "(+) {{option1PrimaryName}} saves you\n(+) {{option1PrimaryName}} gains some EXP",
tooltip_disabled: "You have no Pokémon to {{option1RequiredMove}} on",
selected:
"{{option1PrimaryName}} swims ahead, guiding you back on track.\n{{option1PrimaryName}} seems to also have gotten stronger in this time of need.",
selected: `{{option1PrimaryName}} swims ahead, guiding you back on track.
\${{option1PrimaryName}} seems to also have gotten stronger in this time of need!`,
},
2: {
label: "{{option2PrimaryName}} can help",
label_disabled: "Can't {{option2RequiredMove}}",
tooltip: "(+) {{option2PrimaryName}} saves you.\n(+) {{option2PrimaryName}} gains some EXP.",
tooltip: "(+) {{option2PrimaryName}} saves you\n(+) {{option2PrimaryName}} gains some EXP",
tooltip_disabled: "You have no Pokémon to {{option2RequiredMove}} with",
selected:
"{{option2PrimaryName}} flies ahead of your boat, guiding you back on track.\n{{option2PrimaryName}} seems to also have gotten stronger in this time of need.",
selected: `{{option2PrimaryName}} flies ahead of your boat, guiding you back on track.
\${{option2PrimaryName}} seems to also have gotten stronger in this time of need!`,
},
3: {
label: "Wander aimlessly",
tooltip: "(-) Each of your Pokémon lose {{damagePercentage}}% of their total HP.",
selected: `You float about in the boat, steering it aimlessly until you finally get back on track.
$You and your Pokémon get very fatigued during the whole ordeal.`,
tooltip: "(-) Each of your Pokémon lose {{damagePercentage}}% of their total HP",
selected: `You float about in the boat, steering without direction until you finally spot a landmark you remember.
$You and your Pokémon are fatigued from the whole ordeal.`,
},
},
outro: "You are back on track."

View File

@ -1,30 +1,30 @@
export const trainingSessionDialogue = {
intro: "Wandering aimlessly, you effectively get nowhere.",
title: "Lost at sea",
description: "The sea is turbulent in this area, and you seem to be running out of fuel.\nThis is bad. Is there a way out of the situation?",
intro: "Wandering aimlessly through the sea, you've effectively gotten nowhere.",
title: "Lost at Sea",
description: "The sea is turbulent in this area, and you're running out of energy.\nThis is bad. Is there a way out of the situation?",
query: "What will you do?",
option: {
1: {
label: "{{option1PrimaryName}} can help",
label_disabled: "Can't {{option1RequiredMove}}",
tooltip: "(+) {{option1PrimaryName}} saves you.\n(+) {{option1PrimaryName}} gains some EXP.",
tooltip: "(+) {{option1PrimaryName}} saves you\n(+) {{option1PrimaryName}} gains some EXP",
tooltip_disabled: "You have no Pokémon to {{option1RequiredMove}} on",
selected:
"{{option1PrimaryName}} swims ahead, guiding you back on track.\n{{option1PrimaryName}} seems to also have gotten stronger in this time of need.",
selected: `{{option1PrimaryName}} swims ahead, guiding you back on track.
\${{option1PrimaryName}} seems to also have gotten stronger in this time of need!`,
},
2: {
label: "{{option2PrimaryName}} can help",
label_disabled: "Can't {{option2RequiredMove}}",
tooltip: "(+) {{option2PrimaryName}} saves you.\n(+) {{option2PrimaryName}} gains some EXP.",
tooltip: "(+) {{option2PrimaryName}} saves you\n(+) {{option2PrimaryName}} gains some EXP",
tooltip_disabled: "You have no Pokémon to {{option2RequiredMove}} with",
selected:
"{{option2PrimaryName}} flies ahead of your boat, guiding you back on track.\n{{option2PrimaryName}} seems to also have gotten stronger in this time of need.",
selected: `{{option2PrimaryName}} flies ahead of your boat, guiding you back on track.
\${{option2PrimaryName}} seems to also have gotten stronger in this time of need!`,
},
3: {
label: "Wander aimlessly",
tooltip: "(-) Each of your Pokémon lose {{damagePercentage}}% of their total HP.",
selected: `You float about in the boat, steering it aimlessly until you finally get back on track.
$You and your Pokémon get very fatigued during the whole ordeal.`,
tooltip: "(-) Each of your Pokémon lose {{damagePercentage}}% of their total HP",
selected: `You float about in the boat, steering without direction until you finally spot a landmark you remember.
$You and your Pokémon are fatigued from the whole ordeal.`,
},
},
outro: "You are back on track."

View File

@ -117,9 +117,9 @@ export const EGG_GACHA_PULL_COUNT_OVERRIDE: number = 0;
*/
// 1 to 256, set to null to ignore
export const MYSTERY_ENCOUNTER_RATE_OVERRIDE: number = null;
export const MYSTERY_ENCOUNTER_RATE_OVERRIDE: number = 256;
export const MYSTERY_ENCOUNTER_TIER_OVERRIDE: MysteryEncounterTier = null;
export const MYSTERY_ENCOUNTER_OVERRIDE: MysteryEncounterType = null;
export const MYSTERY_ENCOUNTER_OVERRIDE: MysteryEncounterType = MysteryEncounterType.SLEEPING_SNORLAX;
/**
* MODIFIER / ITEM OVERRIDES

View File

@ -66,7 +66,7 @@ import { PlayerGender } from "#enums/player-gender";
import { Species } from "#enums/species";
import { TrainerType } from "#enums/trainer-type";
import { MysteryEncounterVariant } from "#app/data/mystery-encounters/mystery-encounter";
import { MysteryEncounterPhase } from "#app/phases/mystery-encounter-phase";
import { MysteryEncounterPhase } from "#app/phases/mystery-encounter-phases";
import { handleEncounterStartOfBattleEffects, handleMysteryEncounterVictory } from "#app/data/mystery-encounters/utils/encounter-phase-utils";
import ModifierSelectUiHandler, { SHOP_OPTIONS_ROW_LIMIT } from "#app/ui/modifier-select-ui-handler";
import { getEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils";

View File

@ -14,6 +14,7 @@ import { IvScannerModifier } from "../modifier/modifier";
import * as Utils from "../utils";
import { isNullOrUndefined } from "../utils";
import { getEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils";
import { BattlerTagLapseType } from "#app/data/battler-tags";
/**
* Will handle (in order):
@ -165,6 +166,28 @@ export class MysteryEncounterOptionSelectedPhase extends Phase {
}
}
/**
* Runs at the beginning of an Encounter's battle
* Will cleanup any residual flinches, Endure, etc. that are left over from startOfBattleEffects
* See [TurnEndPhase](../phases.ts) for more details
*/
export class MysteryEncounterBattleStartCleanupPhase extends Phase {
constructor(scene: BattleScene) {
super(scene);
}
start() {
super.start();
const field = this.scene.getField(true).filter(p => p.summonData);
field.forEach(pokemon => {
pokemon.lapseTags(BattlerTagLapseType.TURN_END);
});
this.end();
}
}
/**
* Will handle (in order):
* - Setting BGM

View File

@ -1,6 +1,6 @@
import { Button } from "#app/enums/buttons";
import { MessagePhase, VictoryPhase } from "#app/phases";
import { MysteryEncounterPhase, MysteryEncounterRewardsPhase } from "#app/phases/mystery-encounter-phase";
import { MysteryEncounterPhase, MysteryEncounterRewardsPhase } from "#app/phases/mystery-encounter-phases";
import MysteryEncounterUiHandler from "#app/ui/mystery-encounter-ui-handler";
import { Mode } from "#app/ui/ui";
import GameManager from "../utils/gameManager";

View File

@ -12,7 +12,7 @@ import GameManager from "#app/test/utils/gameManager";
import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
import { runSelectMysteryEncounterOption } from "../encounterTestUtils";
const namepsace = "mysteryEncounter:lostAtSeaDialogue";
const namespace = "mysteryEncounter:lostAtSeaDialogue";
/** Blastoise for surf. Pidgeot for fly. Abra for none. */
const defaultParty = [Species.BLASTOISE, Species.PIDGEOT, Species.ABRA];
const defaultBiome = Biome.SEA;
@ -49,10 +49,10 @@ describe("Lost at Sea - Mystery Encounter", () => {
expect(LostAtSeaEncounter.encounterType).toBe(MysteryEncounterType.LOST_AT_SEA);
expect(LostAtSeaEncounter.dialogue).toBeDefined();
expect(LostAtSeaEncounter.dialogue.intro).toStrictEqual([{ text: `${namepsace}:intro` }]);
expect(LostAtSeaEncounter.dialogue.encounterOptionsDialogue.title).toBe(`${namepsace}:title`);
expect(LostAtSeaEncounter.dialogue.encounterOptionsDialogue.description).toBe(`${namepsace}:description`);
expect(LostAtSeaEncounter.dialogue.encounterOptionsDialogue.query).toBe(`${namepsace}:query`);
expect(LostAtSeaEncounter.dialogue.intro).toStrictEqual([{ text: `${namespace}:intro` }]);
expect(LostAtSeaEncounter.dialogue.encounterOptionsDialogue.title).toBe(`${namespace}:title`);
expect(LostAtSeaEncounter.dialogue.encounterOptionsDialogue.description).toBe(`${namespace}:description`);
expect(LostAtSeaEncounter.dialogue.encounterOptionsDialogue.query).toBe(`${namespace}:query`);
expect(LostAtSeaEncounter.options.length).toBe(3);
});
@ -100,13 +100,13 @@ describe("Lost at Sea - Mystery Encounter", () => {
expect(option1.optionMode).toBe(EncounterOptionMode.DISABLED_OR_DEFAULT);
expect(option1.dialogue).toBeDefined();
expect(option1.dialogue).toStrictEqual({
buttonLabel: `${namepsace}:option:1:label`,
disabledButtonLabel: `${namepsace}:option:1:label_disabled`,
buttonTooltip: `${namepsace}:option:1:tooltip`,
disabledButtonTooltip: `${namepsace}:option:1:tooltip_disabled`,
buttonLabel: `${namespace}:option:1:label`,
disabledButtonLabel: `${namespace}:option:1:label_disabled`,
buttonTooltip: `${namespace}:option:1:tooltip`,
disabledButtonTooltip: `${namespace}:option:1:tooltip_disabled`,
selected: [
{
text: `${namepsace}:option:1:selected`,
text: `${namespace}:option:1:selected`,
},
],
});
@ -147,13 +147,13 @@ describe("Lost at Sea - Mystery Encounter", () => {
expect(option2.optionMode).toBe(EncounterOptionMode.DISABLED_OR_DEFAULT);
expect(option2.dialogue).toBeDefined();
expect(option2.dialogue).toStrictEqual({
buttonLabel: `${namepsace}:option:2:label`,
disabledButtonLabel: `${namepsace}:option:2:label_disabled`,
buttonTooltip: `${namepsace}:option:2:tooltip`,
disabledButtonTooltip: `${namepsace}:option:2:tooltip_disabled`,
buttonLabel: `${namespace}:option:2:label`,
disabledButtonLabel: `${namespace}:option:2:label_disabled`,
buttonTooltip: `${namespace}:option:2:tooltip`,
disabledButtonTooltip: `${namespace}:option:2:tooltip_disabled`,
selected: [
{
text: `${namepsace}:option:2:selected`,
text: `${namespace}:option:2:selected`,
},
],
});
@ -197,11 +197,11 @@ describe("Lost at Sea - Mystery Encounter", () => {
expect(option3.optionMode).toBe(EncounterOptionMode.DEFAULT);
expect(option3.dialogue).toBeDefined();
expect(option3.dialogue).toStrictEqual({
buttonLabel: `${namepsace}:option:3:label`,
buttonTooltip: `${namepsace}:option:3:tooltip`,
buttonLabel: `${namespace}:option:3:label`,
buttonTooltip: `${namespace}:option:3:tooltip`,
selected: [
{
text: `${namepsace}:option:3:selected`,
text: `${namespace}:option:3:selected`,
},
],
});

View File

@ -2,7 +2,7 @@ import { afterEach, beforeAll, beforeEach, expect, describe, it } from "vitest";
import GameManager from "#app/test/utils/gameManager";
import Phaser from "phaser";
import { Species } from "#enums/species";
import { MysteryEncounterPhase } from "#app/phases/mystery-encounter-phase";
import { MysteryEncounterPhase } from "#app/phases/mystery-encounter-phases";
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
describe("Mystery Encounters", () => {

View File

@ -2,7 +2,7 @@ import {afterEach, beforeAll, beforeEach, expect, describe, it, vi } from "vites
import GameManager from "#app/test/utils/gameManager";
import Phaser from "phaser";
import {Species} from "#enums/species";
import { MysteryEncounterOptionSelectedPhase, MysteryEncounterPhase } from "#app/phases/mystery-encounter-phase";
import { MysteryEncounterOptionSelectedPhase, MysteryEncounterPhase } from "#app/phases/mystery-encounter-phases";
import {Mode} from "#app/ui/ui";
import {Button} from "#enums/buttons";
import MysteryEncounterUiHandler from "#app/ui/mystery-encounter-ui-handler";

View File

@ -34,7 +34,7 @@ import { Button } from "#enums/buttons";
import { BattlerIndex } from "#app/battle.js";
import TargetSelectUiHandler from "#app/ui/target-select-ui-handler.js";
import BattleMessageUiHandler from "#app/ui/battle-message-ui-handler";
import {MysteryEncounterPhase} from "#app/phases/mystery-encounter-phase";
import {MysteryEncounterPhase} from "#app/phases/mystery-encounter-phases";
import { OverridesHelper } from "./overridesHelper";
/**

View File

@ -44,7 +44,7 @@ import {
MysteryEncounterPhase,
MysteryEncounterRewardsPhase,
PostMysteryEncounterPhase
} from "#app/phases/mystery-encounter-phase";
} from "#app/phases/mystery-encounter-phases";
export default class PhaseInterceptor {
public scene;

View File

@ -4,7 +4,7 @@ import { Mode } from "./ui";
import UiHandler from "./ui-handler";
import { Button } from "#enums/buttons";
import { addWindow, WindowVariant } from "./ui-theme";
import { MysteryEncounterPhase } from "../phases/mystery-encounter-phase";
import { MysteryEncounterPhase } from "../phases/mystery-encounter-phases";
import { PartyUiMode } from "./party-ui-handler";
import MysteryEncounterOption, { EncounterOptionMode } from "../data/mystery-encounters/mystery-encounter-option";
import * as Utils from "../utils";