better code positioning

This commit is contained in:
Greenlamp 2024-05-07 15:31:10 +02:00
parent 557c21fd25
commit 3689e316ae
5 changed files with 42 additions and 49 deletions

View File

@ -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)

View File

@ -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:

View File

@ -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;
}

View File

@ -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());

View File

@ -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;