From 3689e316aeb21d74a3d0ad41abae80820bf1592a Mon Sep 17 00:00:00 2001 From: Greenlamp Date: Tue, 7 May 2024 15:31:10 +0200 Subject: [PATCH] better code positioning --- src/battle-scene.ts | 27 ++++++++++----------------- src/game-mode.ts | 23 +---------------------- src/modifier/modifier.ts | 21 +++++++++++++++++++++ src/phases.ts | 11 ++++++++++- src/ui/starter-select-ui-handler.ts | 9 --------- 5 files changed, 42 insertions(+), 49 deletions(-) diff --git a/src/battle-scene.ts b/src/battle-scene.ts index 484115db161..39fd4d6577a 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -615,6 +615,16 @@ export default class BattleScene extends SceneBase { if (OPP_SPECIES_OVERRIDE) species = getPokemonSpecies(OPP_SPECIES_OVERRIDE); const pokemon = new EnemyPokemon(this, species, level, trainerSlot, boss, dataSource); + // we get the modifiers override for the opponent + const modifiersOverride = this.getEnemyModifiersOverride(); + // if we have some modifiers override, apply them to the opponent + if (modifiersOverride?.length) { + // we delete all previous modifiers to avoid stack of override + this.enemyModifiers = []; + for (const m of modifiersOverride) { + this.addEnemyModifier(getModifierType(modifierTypes[m]).newModifier(pokemon) as PersistentModifier, true, true); + } + } if (boss && !dataSource) { const secondaryIvs = Utils.getIvsFromId(Utils.randSeedInt(4294967295)); @@ -1760,17 +1770,6 @@ export default class BattleScene extends SceneBase { } party.forEach((enemyPokemon: EnemyPokemon, i: integer) => { - // we get the modifiers override for the opponent - const modifiersOverride = this.getEnemyModifiersOverride(); - // if we have some modifiers override, apply them to the opponent - if (modifiersOverride?.length) { - // we delete all previous modifiers to avoid stack of override - this.clearEnemyModifiers(); - for (const m of modifiersOverride) { - this.addEnemyModifier(getModifierType(modifierTypes[m]).newModifier(enemyPokemon) as PersistentModifier, true, true); - } - this.updateModifiers(false).then(() => resolve()); - } const isBoss = enemyPokemon.isBoss() || (this.currentBattle.battleType === BattleType.TRAINER && this.currentBattle.trainer.config.isBoss); let upgradeChance = 32; if (isBoss) @@ -1796,12 +1795,6 @@ export default class BattleScene extends SceneBase { }); } - clearEnemyModifiers(): void { - for (let m of this.enemyModifiers) - this.enemyModifiers.splice(this.enemyModifiers.indexOf(m), 1); - this.updateModifiers(false).then(() => this.updateUIPositions()); - } - clearEnemyHeldItemModifiers(): void { const modifiersToRemove = this.enemyModifiers.filter(m => m instanceof PokemonHeldItemModifier); for (let m of modifiersToRemove) diff --git a/src/game-mode.ts b/src/game-mode.ts index e703136b30e..81db8242564 100644 --- a/src/game-mode.ts +++ b/src/game-mode.ts @@ -5,9 +5,7 @@ import { Species } from "./data/enums/species"; import PokemonSpecies, { allSpecies } from "./data/pokemon-species"; import { Arena } from "./field/arena"; import * as Utils from "./utils"; -import { STARTING_BIOME_OVERRIDE, STARTING_LEVEL_OVERRIDE, STARTING_MODIFIER_OVERRIDE, STARTING_MODIFIER_QTY_OVERRIDE, STARTING_MONEY_OVERRIDE } from './overrides'; -import { Modifier } from "./modifier/modifier"; -import { modifierTypes } from "./modifier/modifier-type"; +import { STARTING_BIOME_OVERRIDE, STARTING_LEVEL_OVERRIDE, STARTING_MONEY_OVERRIDE } from './overrides'; export enum GameModes { CLASSIC, @@ -62,25 +60,6 @@ export class GameMode implements GameModeConfig { return STARTING_MONEY_OVERRIDE || 1000; } - getModifierOverride(): Modifier[] { - // if no override, do nothing - const modifiers: Modifier[] = new Array(); - if (!STARTING_MODIFIER_OVERRIDE || STARTING_MODIFIER_OVERRIDE.length === 0) return modifiers; - // we loop through all the modifier name given in the override file - for (const [index, modifierName] of STARTING_MODIFIER_OVERRIDE.entries()) { - // if the modifier does not exist, we skip it - if (!modifierTypes.hasOwnProperty(modifierName)) continue; - const modifierType = modifierTypes[modifierName](); - // We get how many modifiers, if none given, default to 1 - const qty = STARTING_MODIFIER_QTY_OVERRIDE[index] || 1 - for (const i of [...Array(qty).keys()]) { - // for example, if qty is 2, we create an array of size 2 with the modifier on each slot - modifiers.push(modifierType.withIdFromFunc(modifierTypes[modifierName]).newModifier()); - } - } - return modifiers; - } - getStartingBiome(scene: BattleScene): Biome { switch (this.modeId) { case GameModes.DAILY: diff --git a/src/modifier/modifier.ts b/src/modifier/modifier.ts index 88b009d3a48..e5a9f3d68a7 100644 --- a/src/modifier/modifier.ts +++ b/src/modifier/modifier.ts @@ -20,6 +20,8 @@ import { PreventBerryUseAbAttr, applyAbAttrs } from '../data/ability'; import { FormChangeItem, SpeciesFormChangeItemTrigger } from '../data/pokemon-forms'; import { Nature } from '#app/data/nature'; import { BattlerTagType } from '#app/data/enums/battler-tag-type'; +import { STARTING_MODIFIER_OVERRIDE, STARTING_MODIFIER_QTY_OVERRIDE } from "../overrides"; +import { modifierTypes } from "./modifier-type"; type ModifierType = ModifierTypes.ModifierType; export type ModifierPredicate = (modifier: Modifier) => boolean; @@ -2169,4 +2171,23 @@ export class EnemyFusionChanceModifier extends EnemyPersistentModifier { getMaxStackCount(scene: BattleScene): integer { return 10; } +} + +export function getModifierOverride(): Modifier[] { + // if no override, do nothing + const modifiers: Modifier[] = new Array(); + if (!STARTING_MODIFIER_OVERRIDE || STARTING_MODIFIER_OVERRIDE.length === 0) return modifiers; + // we loop through all the modifier name given in the override file + for (const [index, modifierName] of STARTING_MODIFIER_OVERRIDE.entries()) { + // if the modifier does not exist, we skip it + if (!modifierTypes.hasOwnProperty(modifierName)) continue; + const modifierType = modifierTypes[modifierName](); + // We get how many modifiers, if none given, default to 1 + const qty = STARTING_MODIFIER_QTY_OVERRIDE[index] || 1 + for (const i of [...Array(qty).keys()]) { + // for example, if qty is 2, we create an array of size 2 with the modifier on each slot + modifiers.push(modifierType.withIdFromFunc(modifierTypes[modifierName]).newModifier()); + } + } + return modifiers; } \ No newline at end of file diff --git a/src/phases.ts b/src/phases.ts index fc6af354a2d..4901053ac68 100644 --- a/src/phases.ts +++ b/src/phases.ts @@ -6,7 +6,7 @@ import { allMoves, applyMoveAttrs, BypassSleepAttr, ChargeAttr, applyFilteredMov import { Mode } from './ui/ui'; import { Command } from "./ui/command-ui-handler"; import { Stat } from "./data/pokemon-stat"; -import { BerryModifier, ContactHeldItemTransferChanceModifier, EnemyAttackStatusEffectChanceModifier, EnemyPersistentModifier, EnemyStatusEffectHealChanceModifier, EnemyTurnHealModifier, ExpBalanceModifier, ExpBoosterModifier, ExpShareModifier, ExtraModifierModifier, FlinchChanceModifier, FusePokemonModifier, HealingBoosterModifier, HitHealModifier, LapsingPersistentModifier, MapModifier, Modifier, MultipleParticipantExpBonusModifier, PersistentModifier, PokemonExpBoosterModifier, PokemonHeldItemModifier, PokemonInstantReviveModifier, SwitchEffectTransferModifier, TempBattleStatBoosterModifier, TurnHealModifier, TurnHeldItemTransferModifier, MoneyMultiplierModifier, MoneyInterestModifier, IvScannerModifier, LapsingPokemonHeldItemModifier, PokemonMultiHitModifier, PokemonMoveAccuracyBoosterModifier } from "./modifier/modifier"; +import { BerryModifier, ContactHeldItemTransferChanceModifier, EnemyAttackStatusEffectChanceModifier, EnemyPersistentModifier, EnemyStatusEffectHealChanceModifier, EnemyTurnHealModifier, ExpBalanceModifier, ExpBoosterModifier, ExpShareModifier, ExtraModifierModifier, FlinchChanceModifier, FusePokemonModifier, HealingBoosterModifier, HitHealModifier, LapsingPersistentModifier, MapModifier, Modifier, MultipleParticipantExpBonusModifier, PersistentModifier, PokemonExpBoosterModifier, PokemonHeldItemModifier, PokemonInstantReviveModifier, SwitchEffectTransferModifier, TempBattleStatBoosterModifier, TurnHealModifier, TurnHeldItemTransferModifier, MoneyMultiplierModifier, MoneyInterestModifier, IvScannerModifier, LapsingPokemonHeldItemModifier, PokemonMultiHitModifier, PokemonMoveAccuracyBoosterModifier, getModifierOverride } from "./modifier/modifier"; import PartyUiHandler, { PartyOption, PartyUiMode } from "./ui/party-ui-handler"; import { doPokeballBounceAnim, getPokeballAtlasKey, getPokeballCatchMultiplier, getPokeballTintColor, PokeballType } from "./data/pokeball"; import { CommonAnim, CommonBattleAnim, MoveAnim, initMoveAnim, loadMoveAnimAssets } from "./data/battle-anims"; @@ -510,6 +510,15 @@ export class SelectStarterPhase extends Phase { party.push(starterPokemon); loadPokemonAssets.push(starterPokemon.loadAssets()); }); + // we get the modifiers override + const modifiersOverride = getModifierOverride(); + // if we have some modifiers override, apply them to the player + if (modifiersOverride?.length) { + for (const m of modifiersOverride) { + this.scene.addModifier(m, true, false, false, true); + } + this.scene.updateModifiers(true, true); + } Promise.all(loadPokemonAssets).then(() => { SoundFade.fadeOut(this.scene, this.scene.sound.get('menu'), 500, true); this.scene.time.delayedCall(500, () => this.scene.playBgm()); diff --git a/src/ui/starter-select-ui-handler.ts b/src/ui/starter-select-ui-handler.ts index 9b955ba38e7..aa97b655a6b 100644 --- a/src/ui/starter-select-ui-handler.ts +++ b/src/ui/starter-select-ui-handler.ts @@ -1702,15 +1702,6 @@ export default class StarterSelectUiHandler extends MessageUiHandler { const startRun = (gameMode: GameModes) => { this.scene.gameMode = gameModes[gameMode]; this.scene.money = this.scene.gameMode.getStartingMoney(); - // we get the modifiers override - const modifiersOverride = this.scene.gameMode.getModifierOverride(); - // if we have some modifiers override, apply them to the player - if (modifiersOverride?.length) { - for (const m of modifiersOverride) { - this.scene.addModifier(m, true, false, false, true); - } - this.scene.updateModifiers(true, true); - } ui.setMode(Mode.STARTER_SELECT); const thisObj = this; const originalStarterSelectCallback = this.starterSelectCallback;