Some changes to modifier files

This commit is contained in:
Wlowscha 2025-06-17 21:27:03 +02:00
parent a15920a605
commit 9611948d80
No known key found for this signature in database
GPG Key ID: 3C8F1AD330565D04
3 changed files with 11 additions and 87 deletions

View File

@ -1,7 +1,10 @@
export enum ModifierPoolType {
PLAYER,
WILD,
TRAINER,
ENEMY_BUFF,
DAILY_STARTER
}
export enum HeldItemPoolType {
WILD,
TRAINER,
}

View File

@ -1,6 +1,5 @@
import { FusionSpeciesFormEvolution, pokemonEvolutions } from "#app/data/balance/pokemon-evolutions";
import { getLevelTotalExp } from "#app/data/exp";
import { allMoves, modifierTypes } from "#app/data/data-lists";
import { MAX_PER_TYPE_POKEBALLS } from "#app/data/pokeball";
import { getStatusEffectHealText } from "#app/data/status-effect";
import type Pokemon from "#app/field/pokemon";
@ -33,42 +32,26 @@ import {
type ModifierType,
type TerastallizeModifierType,
type TmModifierType,
getModifierType,
ModifierTypeGenerator,
modifierTypes,
} from "./modifier-type";
import { getModifierType } from "#app/utils/modifier-utils";
import { FRIENDSHIP_GAIN_FROM_RARE_CANDY } from "#app/data/balance/starters";
import { globalScene } from "#app/global-scene";
import type { ModifierInstanceMap, ModifierString } from "#app/@types/modifier-types";
export type ModifierPredicate = (modifier: Modifier) => boolean;
const iconOverflowIndex = 24;
export const modifierSortFunc = (a: Modifier, b: Modifier): number => {
const itemNameMatch = a.type.name.localeCompare(b.type.name);
const typeNameMatch = a.constructor.name.localeCompare(b.constructor.name);
const aId = a instanceof PokemonHeldItemModifier && a.pokemonId ? a.pokemonId : 4294967295;
const bId = b instanceof PokemonHeldItemModifier && b.pokemonId ? b.pokemonId : 4294967295;
//First sort by pokemonID
if (aId < bId) {
return 1;
}
if (aId > bId) {
return -1;
}
if (aId === bId) {
//Then sort by item type
if (typeNameMatch === 0) {
return itemNameMatch;
//Finally sort by item name
}
return typeNameMatch;
}
return 0;
};
export class ModifierBar extends Phaser.GameObjects.Container {
@ -172,23 +155,6 @@ export abstract class Modifier {
return this instanceof targetModifier;
}
/**
* Return whether this modifier is of the given class
*
* @remarks
* Used to avoid requiring the caller to have imported the specific modifier class, avoiding circular dependencies.
*
* @param modifier - The modifier to check against
* @returns Whether the modiifer is an instance of the given type
*/
public is<T extends ModifierString>(modifier: T): this is ModifierInstanceMap[T] {
const targetModifier = ModifierClassMap[modifier];
if (!targetModifier) {
return false;
}
return this instanceof targetModifier;
}
match(_modifier: Modifier): boolean {
return false;
}
@ -1289,41 +1255,6 @@ export class ExpBalanceModifier extends PersistentModifier {
}
}
export class MoneyRewardModifier extends ConsumableModifier {
private moneyMultiplier: number;
constructor(type: ModifierType, moneyMultiplier: number) {
super(type);
this.moneyMultiplier = moneyMultiplier;
}
/**
* Applies {@linkcode MoneyRewardModifier}
* @returns always `true`
*/
override apply(): boolean {
const moneyAmount = new NumberHolder(globalScene.getWaveMoneyAmount(this.moneyMultiplier));
globalScene.applyModifiers(MoneyMultiplierModifier, true, moneyAmount);
globalScene.addMoney(moneyAmount.value);
globalScene.getPlayerParty().map(p => {
if (p.species?.speciesId === SpeciesId.GIMMIGHOUL || p.fusionSpecies?.speciesId === SpeciesId.GIMMIGHOUL) {
const factor = Math.min(Math.floor(this.moneyMultiplier), 3);
const modifier = getModifierType(modifierTypes.EVOLUTION_TRACKER_GIMMIGHOUL).newModifier(
p,
factor,
) as EvoTrackerModifier;
globalScene.addModifier(modifier);
}
});
return true;
}
}
export class MoneyMultiplierModifier extends PersistentModifier {
match(modifier: Modifier): boolean {
return modifier instanceof MoneyMultiplierModifier;

View File

@ -1,11 +1,5 @@
import { ModifierPoolType } from "#enums/modifier-pool-type";
import {
dailyStarterModifierPool,
enemyBuffModifierPool,
modifierPool,
trainerModifierPool,
wildModifierPool,
} from "#app/modifier/modifier-pools";
import { dailyStarterModifierPool, enemyBuffModifierPool, modifierPool } from "#app/modifier/modifier-pools";
import type { ModifierPool, ModifierTypeFunc } from "#app/@types/modifier-types";
import { modifierTypes } from "#app/data/data-lists";
import type { ModifierType } from "#app/modifier/modifier-type";
@ -14,10 +8,6 @@ export function getModifierPoolForType(poolType: ModifierPoolType): ModifierPool
switch (poolType) {
case ModifierPoolType.PLAYER:
return modifierPool;
case ModifierPoolType.WILD:
return wildModifierPool;
case ModifierPoolType.TRAINER:
return trainerModifierPool;
case ModifierPoolType.ENEMY_BUFF:
return enemyBuffModifierPool;
case ModifierPoolType.DAILY_STARTER: