Rename HELD_ITEM_EFFECT enum-object to HeldItemEffect

This commit is contained in:
NightKev 2025-07-10 01:31:55 -07:00
parent 79779765e2
commit d576d66617
41 changed files with 171 additions and 171 deletions

View File

@ -141,7 +141,7 @@ import { timedEventManager } from "./global-event-manager";
import { starterColors } from "./global-vars/starter-colors";
import { startingWave } from "./starting-wave";
import { applyHeldItems } from "./items/all-held-items";
import { HELD_ITEM_EFFECT } from "./items/held-item";
import { HeldItemEffect } from "./items/held-item";
import { PhaseManager } from "./phase-manager";
import { HeldItemId } from "#enums/held-item-id";
import { assignEnemyHeldItemsForWave, assignItemsFromConfiguration } from "./items/held-item-pool";
@ -3222,7 +3222,7 @@ export default class BattleScene extends SceneBase {
expMultiplier = Overrides.XP_MULTIPLIER_OVERRIDE;
}
const pokemonExp = new NumberHolder(expValue * expMultiplier);
applyHeldItems(HELD_ITEM_EFFECT.EXP_BOOSTER, { pokemon: partyMember, expAmount: pokemonExp });
applyHeldItems(HeldItemEffect.EXP_BOOSTER, { pokemon: partyMember, expAmount: pokemonExp });
partyMemberExp.push(Math.floor(pokemonExp.value));
}

View File

@ -40,7 +40,6 @@ import { allAbilities, allHeldItems, allMoves } from "../data-lists";
import type { BattlerIndex } from "#enums/battler-index";
import { BattleType } from "#enums/battle-type";
import { TerrainType } from "../terrain";
import { ModifierPoolType } from "#enums/modifier-pool-type";
import { Command } from "#enums/command";
import i18next from "i18next";
import type { Localizable } from "#app/@types/locales";
@ -78,14 +77,14 @@ import { MoveEffectTrigger } from "#enums/MoveEffectTrigger";
import { MultiHitType } from "#enums/MultiHitType";
import { invalidAssistMoves, invalidCopycatMoves, invalidMetronomeMoves, invalidMirrorMoveMoves, invalidSleepTalkMoves, invalidSketchMoves } from "./invalid-moves";
import { isVirtual, MoveUseMode } from "#enums/move-use-mode";
import { HELD_ITEM_EFFECT } from "#app/items/held-item";
import { HeldItemEffect } from "#app/items/held-item";
import { BerryHeldItem, berryTypeToHeldItem } from "#app/items/held-items/berry";
import { HeldItemCategoryId, HeldItemId, isItemInCategory } from "#enums/held-item-id";
import type { ChargingMove, MoveAttrMap, MoveAttrString, MoveKindString, MoveClassMap } from "#app/@types/move-types";
import { applyMoveAttrs } from "./apply-attrs";
import { frenzyMissFunc, getMoveTargets } from "./move-utils";
import { TRAINER_ITEM_EFFECT } from "#app/items/trainer-item";
import { AbAttrBaseParams, AbAttrParamsWithCancel, PreAttackModifyPowerAbAttrParams } from "../abilities/ability";
import { AbAttrParamsWithCancel, PreAttackModifyPowerAbAttrParams } from "../abilities/ability";
import { applyHeldItems } from "#app/items/all-held-items";
/**
@ -766,7 +765,7 @@ export default abstract class Move implements Localizable {
const isOhko = this.hasAttr("OneHitKOAccuracyAttr");
if (!isOhko) {
applyHeldItems(HELD_ITEM_EFFECT.ACCURACY_BOOSTER, { pokemon: user, moveAccuracy: moveAccuracy });
applyHeldItems(HeldItemEffect.ACCURACY_BOOSTER, { pokemon: user, moveAccuracy: moveAccuracy });
}
if (globalScene.arena.weather?.weatherType === WeatherType.FOG) {
@ -848,7 +847,7 @@ export default abstract class Move implements Localizable {
if (!this.hasAttr("TypelessAttr")) {
globalScene.arena.applyTags(WeakenMoveTypeTag, simulated, typeChangeHolder.value, power);
applyHeldItems(HELD_ITEM_EFFECT.ATTACK_TYPE_BOOST, {
applyHeldItems(HeldItemEffect.ATTACK_TYPE_BOOST, {
pokemon: source,
moveType: typeChangeHolder.value,
movePower: power,

View File

@ -35,7 +35,7 @@ import {
} from "#app/data/pokemon-forms/form-change-triggers";
import { WeatherType } from "#enums/weather-type";
import { applyHeldItems } from "#app/items/all-held-items";
import { HELD_ITEM_EFFECT } from "#app/items/held-item";
import { HeldItemEffect } from "#app/items/held-item";
export class Arena {
public biomeType: BiomeId;
@ -339,7 +339,7 @@ export class Arena {
if (!isNullOrUndefined(user)) {
weatherDuration.value = 5;
applyHeldItems(HELD_ITEM_EFFECT.FIELD_EFFECT, { pokemon: user, fieldDuration: weatherDuration });
applyHeldItems(HeldItemEffect.FIELD_EFFECT, { pokemon: user, fieldDuration: weatherDuration });
}
this.weather = weather ? new Weather(weather, weatherDuration.value) : null;
@ -426,7 +426,7 @@ export class Arena {
if (!isNullOrUndefined(user)) {
terrainDuration.value = 5;
applyHeldItems(HELD_ITEM_EFFECT.FIELD_EFFECT, { pokemon: user, fieldDuration: terrainDuration });
applyHeldItems(HeldItemEffect.FIELD_EFFECT, { pokemon: user, fieldDuration: terrainDuration });
}
this.terrain = terrain ? new Terrain(terrain, terrainDuration.value) : null;

View File

@ -154,7 +154,7 @@ import { timedEventManager } from "#app/global-event-manager";
import { loadMoveAnimations } from "#app/sprites/pokemon-asset-loader";
import { PokemonItemManager } from "./pokemon-held-item-manager";
import { applyHeldItems } from "#app/items/all-held-items";
import { HELD_ITEM_EFFECT } from "#app/items/held-item";
import { HeldItemEffect } from "#app/items/held-item";
import { HeldItemId } from "#enums/held-item-id";
import { isVirtual, isIgnorePP, MoveUseMode } from "#enums/move-use-mode";
import { FieldPosition } from "#enums/field-position";
@ -1346,7 +1346,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
getCritStage(source: Pokemon, move: Move): number {
const critStage = new NumberHolder(0);
applyMoveAttrs("HighCritAttr", source, this, move, critStage);
applyHeldItems(HELD_ITEM_EFFECT.CRIT_BOOST, { pokemon: source, critStage: critStage });
applyHeldItems(HeldItemEffect.CRIT_BOOST, { pokemon: source, critStage: critStage });
globalScene.applyPlayerItems(TRAINER_ITEM_EFFECT.TEMP_CRIT_BOOSTER, { numberHolder: critStage });
applyAbAttrs("BonusCritAbAttr", { pokemon: source, critStage });
const critBoostTag = source.getTag(CritBoostTag);
@ -1401,7 +1401,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
): number {
const statVal = new NumberHolder(this.getStat(stat, false));
if (!ignoreHeldItems) {
applyHeldItems(HELD_ITEM_EFFECT.STAT_BOOST, { pokemon: this, stat: stat, statValue: statVal });
applyHeldItems(HeldItemEffect.STAT_BOOST, { pokemon: this, stat: stat, statValue: statVal });
}
// The Ruin abilities here are never ignored, but they reveal themselves on summon anyway
@ -1509,7 +1509,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
const statHolder = new NumberHolder(Math.floor((2 * baseStats[s] + this.ivs[s]) * this.level * 0.01));
if (s === Stat.HP) {
statHolder.value = statHolder.value + this.level + 10;
applyHeldItems(HELD_ITEM_EFFECT.INCREMENTING_STAT, { pokemon: this, stat: s, statHolder: statHolder });
applyHeldItems(HeldItemEffect.INCREMENTING_STAT, { pokemon: this, stat: s, statHolder: statHolder });
if (this.hasAbility(AbilityId.WONDER_GUARD, false, true)) {
statHolder.value = 1;
}
@ -1524,14 +1524,14 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
} else {
statHolder.value += 5;
const natureStatMultiplier = new NumberHolder(getNatureStatMultiplier(this.getNature(), s));
applyHeldItems(HELD_ITEM_EFFECT.NATURE_WEIGHT_BOOSTER, { pokemon: this, multiplier: natureStatMultiplier });
applyHeldItems(HeldItemEffect.NATURE_WEIGHT_BOOSTER, { pokemon: this, multiplier: natureStatMultiplier });
if (natureStatMultiplier.value !== 1) {
statHolder.value = Math.max(
Math[natureStatMultiplier.value > 1 ? "ceil" : "floor"](statHolder.value * natureStatMultiplier.value),
1,
);
}
applyHeldItems(HELD_ITEM_EFFECT.INCREMENTING_STAT, { pokemon: this, stat: s, statHolder: statHolder });
applyHeldItems(HeldItemEffect.INCREMENTING_STAT, { pokemon: this, stat: s, statHolder: statHolder });
}
statHolder.value = Phaser.Math.Clamp(statHolder.value, 1, Number.MAX_SAFE_INTEGER);
@ -1544,9 +1544,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
const baseStats = this.getSpeciesForm(true).baseStats.slice(0);
applyChallenges(ChallengeType.FLIP_STAT, this, baseStats);
// Shuckle Juice
applyHeldItems(HELD_ITEM_EFFECT.BASE_STAT_TOTAL, { pokemon: this, baseStats: baseStats });
applyHeldItems(HeldItemEffect.BASE_STAT_TOTAL, { pokemon: this, baseStats: baseStats });
// Old Gateau
applyHeldItems(HELD_ITEM_EFFECT.BASE_STAT_FLAT, { pokemon: this, baseStats: baseStats });
applyHeldItems(HeldItemEffect.BASE_STAT_FLAT, { pokemon: this, baseStats: baseStats });
if (this.isFusion()) {
const fusionBaseStats = this.getFusionSpeciesForm(true).baseStats;
applyChallenges(ChallengeType.FLIP_STAT, this, fusionBaseStats);
@ -1560,7 +1560,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
}
}
// Vitamins
applyHeldItems(HELD_ITEM_EFFECT.BASE_STAT_BOOSTER, { pokemon: this, baseStats: baseStats });
applyHeldItems(HeldItemEffect.BASE_STAT_BOOSTER, { pokemon: this, baseStats: baseStats });
return baseStats;
}
@ -3707,7 +3707,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
applyMoveAttrs("FixedDamageAttr", source, this, move, fixedDamage);
if (fixedDamage.value) {
const multiLensMultiplier = new NumberHolder(1);
applyHeldItems(HELD_ITEM_EFFECT.MULTI_HIT, {
applyHeldItems(HeldItemEffect.MULTI_HIT, {
pokemon: source,
moveId: move.id,
damageMultiplier: multiLensMultiplier,
@ -3755,7 +3755,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
/** Multiplier for moves enhanced by Multi-Lens and/or Parental Bond */
const multiStrikeEnhancementMultiplier = new NumberHolder(1);
applyHeldItems(HELD_ITEM_EFFECT.MULTI_HIT, {
applyHeldItems(HeldItemEffect.MULTI_HIT, {
pokemon: source,
moveId: move.id,
damageMultiplier: multiStrikeEnhancementMultiplier,
@ -3993,7 +3993,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
surviveDamage.value = this.lapseTag(BattlerTagType.ENDURE_TOKEN);
}
if (!surviveDamage.value) {
applyHeldItems(HELD_ITEM_EFFECT.SURVIVE_CHANCE, { pokemon: this, surviveDamage: surviveDamage });
applyHeldItems(HeldItemEffect.SURVIVE_CHANCE, { pokemon: this, surviveDamage: surviveDamage });
}
if (surviveDamage.value) {
damage = this.hp - 1;
@ -5748,7 +5748,7 @@ export class PlayerPokemon extends Pokemon {
fusionStarterSpeciesId ? globalScene.gameData.starterData[fusionStarterSpeciesId] : null,
].filter(d => !!d);
const amount = new NumberHolder(friendship);
applyHeldItems(HELD_ITEM_EFFECT.FRIENDSHIP_BOOSTER, { pokemon: this, friendship: amount });
applyHeldItems(HeldItemEffect.FRIENDSHIP_BOOSTER, { pokemon: this, friendship: amount });
const candyFriendshipMultiplier = globalScene.gameMode.isClassic
? timedEventManager.getClassicFriendshipMultiplier()
: 1;

View File

@ -6,7 +6,7 @@ import type { PokemonType } from "#enums/pokemon-type";
import { SpeciesId } from "#enums/species-id";
import { Stat, type PermanentStat } from "#enums/stat";
import { StatusEffect } from "#enums/status-effect";
import { HELD_ITEM_EFFECT } from "./held-item";
import { HeldItemEffect } from "./held-item";
import { type ACCURACY_BOOST_PARAMS, AccuracyBoosterHeldItem } from "./held-items/accuracy-booster";
import {
type ATTACK_TYPE_BOOST_PARAMS,
@ -174,36 +174,36 @@ export function initHeldItems() {
}
type APPLY_HELD_ITEMS_PARAMS = {
[HELD_ITEM_EFFECT.ATTACK_TYPE_BOOST]: ATTACK_TYPE_BOOST_PARAMS;
[HELD_ITEM_EFFECT.TURN_END_HEAL]: TURN_END_HEAL_PARAMS;
[HELD_ITEM_EFFECT.HIT_HEAL]: HIT_HEAL_PARAMS;
[HELD_ITEM_EFFECT.RESET_NEGATIVE_STAT_STAGE]: RESET_NEGATIVE_STAT_STAGE_PARAMS;
[HELD_ITEM_EFFECT.EXP_BOOSTER]: EXP_BOOST_PARAMS;
[HELD_ITEM_EFFECT.BERRY]: BERRY_PARAMS;
[HELD_ITEM_EFFECT.BASE_STAT_BOOSTER]: BASE_STAT_BOOSTER_PARAMS;
[HELD_ITEM_EFFECT.INSTANT_REVIVE]: INSTANT_REVIVE_PARAMS;
[HELD_ITEM_EFFECT.STAT_BOOST]: STAT_BOOST_PARAMS;
[HELD_ITEM_EFFECT.CRIT_BOOST]: CRIT_BOOST_PARAMS;
[HELD_ITEM_EFFECT.TURN_END_STATUS]: TURN_END_STATUS_PARAMS;
[HELD_ITEM_EFFECT.SURVIVE_CHANCE]: SURVIVE_CHANCE_PARAMS;
[HELD_ITEM_EFFECT.BYPASS_SPEED_CHANCE]: BYPASS_SPEED_CHANCE_PARAMS;
[HELD_ITEM_EFFECT.FLINCH_CHANCE]: FLINCH_CHANCE_PARAMS;
[HELD_ITEM_EFFECT.FIELD_EFFECT]: FIELD_EFFECT_PARAMS;
[HELD_ITEM_EFFECT.FRIENDSHIP_BOOSTER]: FRIENDSHIP_BOOST_PARAMS;
[HELD_ITEM_EFFECT.NATURE_WEIGHT_BOOSTER]: NATURE_WEIGHT_BOOST_PARAMS;
[HELD_ITEM_EFFECT.ACCURACY_BOOSTER]: ACCURACY_BOOST_PARAMS;
[HELD_ITEM_EFFECT.MULTI_HIT]: MULTI_HIT_PARAMS;
[HELD_ITEM_EFFECT.DAMAGE_MONEY_REWARD]: DAMAGE_MONEY_REWARD_PARAMS;
[HELD_ITEM_EFFECT.BATON]: BATON_PARAMS;
[HELD_ITEM_EFFECT.CONTACT_ITEM_STEAL_CHANCE]: ITEM_STEAL_PARAMS;
[HELD_ITEM_EFFECT.TURN_END_ITEM_STEAL]: ITEM_STEAL_PARAMS;
[HELD_ITEM_EFFECT.BASE_STAT_TOTAL]: BASE_STAT_TOTAL_PARAMS;
[HELD_ITEM_EFFECT.BASE_STAT_FLAT]: BASE_STAT_FLAT_PARAMS;
[HELD_ITEM_EFFECT.INCREMENTING_STAT]: INCREMENTING_STAT_PARAMS;
[HELD_ITEM_EFFECT.EVO_TRACKER]: EVO_TRACKER_PARAMS;
[HeldItemEffect.ATTACK_TYPE_BOOST]: ATTACK_TYPE_BOOST_PARAMS;
[HeldItemEffect.TURN_END_HEAL]: TURN_END_HEAL_PARAMS;
[HeldItemEffect.HIT_HEAL]: HIT_HEAL_PARAMS;
[HeldItemEffect.RESET_NEGATIVE_STAT_STAGE]: RESET_NEGATIVE_STAT_STAGE_PARAMS;
[HeldItemEffect.EXP_BOOSTER]: EXP_BOOST_PARAMS;
[HeldItemEffect.BERRY]: BERRY_PARAMS;
[HeldItemEffect.BASE_STAT_BOOSTER]: BASE_STAT_BOOSTER_PARAMS;
[HeldItemEffect.INSTANT_REVIVE]: INSTANT_REVIVE_PARAMS;
[HeldItemEffect.STAT_BOOST]: STAT_BOOST_PARAMS;
[HeldItemEffect.CRIT_BOOST]: CRIT_BOOST_PARAMS;
[HeldItemEffect.TURN_END_STATUS]: TURN_END_STATUS_PARAMS;
[HeldItemEffect.SURVIVE_CHANCE]: SURVIVE_CHANCE_PARAMS;
[HeldItemEffect.BYPASS_SPEED_CHANCE]: BYPASS_SPEED_CHANCE_PARAMS;
[HeldItemEffect.FLINCH_CHANCE]: FLINCH_CHANCE_PARAMS;
[HeldItemEffect.FIELD_EFFECT]: FIELD_EFFECT_PARAMS;
[HeldItemEffect.FRIENDSHIP_BOOSTER]: FRIENDSHIP_BOOST_PARAMS;
[HeldItemEffect.NATURE_WEIGHT_BOOSTER]: NATURE_WEIGHT_BOOST_PARAMS;
[HeldItemEffect.ACCURACY_BOOSTER]: ACCURACY_BOOST_PARAMS;
[HeldItemEffect.MULTI_HIT]: MULTI_HIT_PARAMS;
[HeldItemEffect.DAMAGE_MONEY_REWARD]: DAMAGE_MONEY_REWARD_PARAMS;
[HeldItemEffect.BATON]: BATON_PARAMS;
[HeldItemEffect.CONTACT_ITEM_STEAL_CHANCE]: ITEM_STEAL_PARAMS;
[HeldItemEffect.TURN_END_ITEM_STEAL]: ITEM_STEAL_PARAMS;
[HeldItemEffect.BASE_STAT_TOTAL]: BASE_STAT_TOTAL_PARAMS;
[HeldItemEffect.BASE_STAT_FLAT]: BASE_STAT_FLAT_PARAMS;
[HeldItemEffect.INCREMENTING_STAT]: INCREMENTING_STAT_PARAMS;
[HeldItemEffect.EVO_TRACKER]: EVO_TRACKER_PARAMS;
};
export function applyHeldItems<T extends HELD_ITEM_EFFECT>(effect: T, params: APPLY_HELD_ITEMS_PARAMS[T]) {
export function applyHeldItems<T extends HeldItemEffect>(effect: T, params: APPLY_HELD_ITEMS_PARAMS[T]) {
const pokemon = params.pokemon;
if (pokemon) {
for (const item of Object.keys(pokemon.heldItemManager.heldItems)) {

View File

@ -4,7 +4,8 @@ import { globalScene } from "#app/global-scene";
import { HeldItemNames, type HeldItemId } from "#enums/held-item-id";
import i18next from "i18next";
export const HELD_ITEM_EFFECT = {
// TODO: this should be moved to its own file
export const HeldItemEffect = {
ATTACK_TYPE_BOOST: 1,
TURN_END_HEAL: 2,
HIT_HEAL: 3,
@ -35,7 +36,7 @@ export const HELD_ITEM_EFFECT = {
INCREMENTING_STAT: 52,
} as const;
export type HELD_ITEM_EFFECT = (typeof HELD_ITEM_EFFECT)[keyof typeof HELD_ITEM_EFFECT];
export type HeldItemEffect = (typeof HeldItemEffect)[keyof typeof HeldItemEffect];
export class HeldItem {
// public pokemonId: number;

View File

@ -1,7 +1,7 @@
import type Pokemon from "#app/field/pokemon";
import type { NumberHolder } from "#app/utils/common";
import type { HeldItemId } from "#enums/held-item-id";
import { HeldItem, HELD_ITEM_EFFECT } from "../held-item";
import { HeldItemEffect, HeldItem } from "../held-item";
export interface ACCURACY_BOOST_PARAMS {
/** The pokemon with the item */
@ -11,7 +11,7 @@ export interface ACCURACY_BOOST_PARAMS {
}
export class AccuracyBoosterHeldItem extends HeldItem {
public effects: HELD_ITEM_EFFECT[] = [HELD_ITEM_EFFECT.ACCURACY_BOOSTER];
public effects: HeldItemEffect[] = [HeldItemEffect.ACCURACY_BOOSTER];
private accuracyAmount: number;

View File

@ -3,7 +3,7 @@ import { PokemonType } from "#enums/pokemon-type";
import i18next from "i18next";
import type { NumberHolder } from "#app/utils/common";
import type Pokemon from "#app/field/pokemon";
import { HeldItem, HELD_ITEM_EFFECT } from "#app/items/held-item";
import { HeldItemEffect, HeldItem } from "#app/items/held-item";
export interface ATTACK_TYPE_BOOST_PARAMS {
/** The pokemon with the item */
@ -41,7 +41,7 @@ export const attackTypeToHeldItem: AttackTypeToHeldItemMap = {
};
export class AttackTypeBoosterHeldItem extends HeldItem {
public effects: HELD_ITEM_EFFECT[] = [HELD_ITEM_EFFECT.TURN_END_HEAL];
public effects: HeldItemEffect[] = [HeldItemEffect.TURN_END_HEAL];
public moveType: PokemonType;
public powerBoost: number;

View File

@ -2,7 +2,7 @@ import type Pokemon from "#app/field/pokemon";
import { HeldItemId } from "#enums/held-item-id";
import { getStatKey, type PermanentStat, Stat } from "#enums/stat";
import i18next from "i18next";
import { HeldItem, HELD_ITEM_EFFECT } from "../held-item";
import { HeldItemEffect, HeldItem } from "../held-item";
export interface BASE_STAT_BOOSTER_PARAMS {
/** The pokemon with the item */
@ -33,7 +33,7 @@ export const statBoostItems: Record<PermanentStat, string> = {
};
export class BaseStatBoosterHeldItem extends HeldItem {
public effects: HELD_ITEM_EFFECT[] = [HELD_ITEM_EFFECT.BASE_STAT_BOOSTER];
public effects: HeldItemEffect[] = [HeldItemEffect.BASE_STAT_BOOSTER];
public stat: PermanentStat;
constructor(type: HeldItemId, maxStackCount = 1, stat: PermanentStat) {

View File

@ -1,5 +1,5 @@
import type Pokemon from "#app/field/pokemon";
import { HeldItem, HELD_ITEM_EFFECT } from "../held-item";
import { HeldItemEffect, HeldItem } from "../held-item";
import { Stat } from "#enums/stat";
import i18next from "i18next";
@ -14,7 +14,7 @@ export interface BASE_STAT_FLAT_PARAMS {
* Currently used by Old Gateau item
*/
export class BaseStatFlatHeldItem extends HeldItem {
public effects: HELD_ITEM_EFFECT[] = [HELD_ITEM_EFFECT.BASE_STAT_FLAT];
public effects: HeldItemEffect[] = [HeldItemEffect.BASE_STAT_FLAT];
public isTransferable = false;
get description(): string {

View File

@ -1,6 +1,6 @@
import type Pokemon from "#app/field/pokemon";
import i18next from "i18next";
import { HeldItem, HELD_ITEM_EFFECT } from "../held-item";
import { HeldItemEffect, HeldItem } from "../held-item";
import type { HeldItemId } from "#enums/held-item-id";
export interface BASE_STAT_TOTAL_PARAMS {
@ -14,7 +14,7 @@ export interface BASE_STAT_TOTAL_PARAMS {
* Currently used by Shuckle Juice item
*/
export class BaseStatTotalHeldItem extends HeldItem {
public effects: HELD_ITEM_EFFECT[] = [HELD_ITEM_EFFECT.BASE_STAT_TOTAL];
public effects: HeldItemEffect[] = [HeldItemEffect.BASE_STAT_TOTAL];
public isTransferable = false;
public statModifier: number;

View File

@ -1,6 +1,6 @@
import type Pokemon from "#app/field/pokemon";
import type { NumberHolder } from "#app/utils/common";
import { HeldItem, HELD_ITEM_EFFECT } from "../held-item";
import { HeldItemEffect, HeldItem } from "../held-item";
export interface BATON_PARAMS {
/** The pokemon with the item */
@ -10,7 +10,7 @@ export interface BATON_PARAMS {
}
export class BatonHeldItem extends HeldItem {
public effects: HELD_ITEM_EFFECT[] = [HELD_ITEM_EFFECT.BATON];
public effects: HeldItemEffect[] = [HeldItemEffect.BATON];
/**
* Applies {@linkcode SwitchEffectTransferModifier}

View File

@ -2,7 +2,7 @@ import { getBerryEffectDescription, getBerryEffectFunc, getBerryName, getBerryPr
import { BerryUsedEvent } from "#app/events/battle-scene";
import type Pokemon from "#app/field/pokemon";
import { globalScene } from "#app/global-scene";
import { ConsumableHeldItem, HELD_ITEM_EFFECT } from "#app/items/held-item";
import { ConsumableHeldItem, HeldItemEffect } from "#app/items/held-item";
import { BooleanHolder } from "#app/utils/common";
import { BerryType } from "#enums/berry-type";
import { HeldItemId } from "#enums/held-item-id";
@ -33,7 +33,7 @@ export interface BERRY_PARAMS {
// TODO: Maybe split up into subclasses?
export class BerryHeldItem extends ConsumableHeldItem {
public effects: HELD_ITEM_EFFECT[] = [HELD_ITEM_EFFECT.BERRY];
public effects: HeldItemEffect[] = [HeldItemEffect.BERRY];
public berryType: BerryType;
constructor(berryType: BerryType, maxStackCount = 1) {

View File

@ -1,5 +1,5 @@
import type Pokemon from "#app/field/pokemon";
import { HeldItem, HELD_ITEM_EFFECT } from "#app/items/held-item";
import { HeldItemEffect, HeldItem } from "#app/items/held-item";
import type { BooleanHolder } from "#app/utils/common";
import { globalScene } from "#app/global-scene";
import i18next from "i18next";
@ -19,7 +19,7 @@ export interface BYPASS_SPEED_CHANCE_PARAMS {
* @see {@linkcode apply}
*/
export class BypassSpeedChanceHeldItem extends HeldItem {
public effects: HELD_ITEM_EFFECT[] = [HELD_ITEM_EFFECT.BYPASS_SPEED_CHANCE];
public effects: HeldItemEffect[] = [HeldItemEffect.BYPASS_SPEED_CHANCE];
/**
* Checks if {@linkcode BypassSpeedChanceModifier} should be applied

View File

@ -2,7 +2,7 @@ import type Pokemon from "#app/field/pokemon";
import type { NumberHolder } from "#app/utils/common";
import type { HeldItemId } from "#enums/held-item-id";
import type { SpeciesId } from "#enums/species-id";
import { HeldItem, HELD_ITEM_EFFECT } from "../held-item";
import { HeldItemEffect, HeldItem } from "../held-item";
export interface CRIT_BOOST_PARAMS {
/** The pokemon with the item */
@ -17,7 +17,7 @@ export interface CRIT_BOOST_PARAMS {
* @see {@linkcode apply}
*/
export class CritBoostHeldItem extends HeldItem {
public effects: HELD_ITEM_EFFECT[] = [HELD_ITEM_EFFECT.CRIT_BOOST];
public effects: HeldItemEffect[] = [HeldItemEffect.CRIT_BOOST];
/** The amount of stages by which the held item increases the current critical-hit stage value */
protected stageIncrement: number;

View File

@ -1,7 +1,7 @@
import type Pokemon from "#app/field/pokemon";
import { globalScene } from "#app/global-scene";
import { NumberHolder } from "#app/utils/common";
import { HeldItem, HELD_ITEM_EFFECT } from "../held-item";
import { HeldItemEffect, HeldItem } from "../held-item";
import { TRAINER_ITEM_EFFECT } from "../trainer-item";
export interface DAMAGE_MONEY_REWARD_PARAMS {
@ -12,7 +12,7 @@ export interface DAMAGE_MONEY_REWARD_PARAMS {
}
export class DamageMoneyRewardHeldItem extends HeldItem {
public effects: HELD_ITEM_EFFECT[] = [HELD_ITEM_EFFECT.DAMAGE_MONEY_REWARD];
public effects: HeldItemEffect[] = [HeldItemEffect.DAMAGE_MONEY_REWARD];
/**
* Applies {@linkcode DamageMoneyRewardModifier}

View File

@ -3,7 +3,7 @@ import { globalScene } from "#app/global-scene";
import { HeldItemId } from "#enums/held-item-id";
import type { SpeciesId } from "#enums/species-id";
import i18next from "i18next";
import { HeldItem, HELD_ITEM_EFFECT } from "../held-item";
import { HeldItemEffect, HeldItem } from "../held-item";
import { TrainerItemId } from "#enums/trainer-item-id";
export interface EVO_TRACKER_PARAMS {
@ -12,7 +12,7 @@ export interface EVO_TRACKER_PARAMS {
}
export class EvoTrackerHeldItem extends HeldItem {
public effects: HELD_ITEM_EFFECT[] = [HELD_ITEM_EFFECT.EVO_TRACKER];
public effects: HeldItemEffect[] = [HeldItemEffect.EVO_TRACKER];
protected species: SpeciesId;
protected required: number;

View File

@ -2,7 +2,7 @@ import type Pokemon from "#app/field/pokemon";
import type { NumberHolder } from "#app/utils/common";
import type { HeldItemId } from "#enums/held-item-id";
import i18next from "i18next";
import { HeldItem, HELD_ITEM_EFFECT } from "../held-item";
import { HeldItemEffect, HeldItem } from "../held-item";
export interface EXP_BOOST_PARAMS {
/** The pokemon with the item */
@ -12,7 +12,7 @@ export interface EXP_BOOST_PARAMS {
}
export class ExpBoosterHeldItem extends HeldItem {
public effects: HELD_ITEM_EFFECT[] = [HELD_ITEM_EFFECT.EXP_BOOSTER];
public effects: HeldItemEffect[] = [HeldItemEffect.EXP_BOOSTER];
private boostPercent: number;
private boostMultiplier: number;

View File

@ -1,5 +1,5 @@
import type Pokemon from "#app/field/pokemon";
import { HeldItem, HELD_ITEM_EFFECT } from "#app/items/held-item";
import { HeldItemEffect, HeldItem } from "#app/items/held-item";
import type { NumberHolder } from "#app/utils/common";
export interface FIELD_EFFECT_PARAMS {
@ -15,7 +15,7 @@ export interface FIELD_EFFECT_PARAMS {
* @see {@linkcode apply}
*/
export class FieldEffectHeldItem extends HeldItem {
public effects: HELD_ITEM_EFFECT[] = [HELD_ITEM_EFFECT.FIELD_EFFECT];
public effects: HeldItemEffect[] = [HeldItemEffect.FIELD_EFFECT];
/**
* Provides two more turns per stack to any weather or terrain effect caused

View File

@ -1,5 +1,5 @@
import type Pokemon from "#app/field/pokemon";
import { HeldItem, HELD_ITEM_EFFECT } from "#app/items/held-item";
import { HeldItemEffect, HeldItem } from "#app/items/held-item";
import type { BooleanHolder } from "#app/utils/common";
import type { HeldItemId } from "#enums/held-item-id";
@ -16,7 +16,7 @@ export interface FLINCH_CHANCE_PARAMS {
* @see {@linkcode apply}
*/
export class FlinchChanceHeldItem extends HeldItem {
public effects: HELD_ITEM_EFFECT[] = [HELD_ITEM_EFFECT.FLINCH_CHANCE];
public effects: HeldItemEffect[] = [HeldItemEffect.FLINCH_CHANCE];
private chance: number;
constructor(type: HeldItemId, maxStackCount = 1, chance: number) {

View File

@ -1,7 +1,7 @@
import type Pokemon from "#app/field/pokemon";
import type { NumberHolder } from "#app/utils/common";
import i18next from "i18next";
import { HeldItem, HELD_ITEM_EFFECT } from "../held-item";
import { HeldItemEffect, HeldItem } from "../held-item";
export interface FRIENDSHIP_BOOST_PARAMS {
/** The pokemon with the item */
@ -11,7 +11,7 @@ export interface FRIENDSHIP_BOOST_PARAMS {
}
export class FriendshipBoosterHeldItem extends HeldItem {
public effects: HELD_ITEM_EFFECT[] = [HELD_ITEM_EFFECT.FRIENDSHIP_BOOSTER];
public effects: HeldItemEffect[] = [HeldItemEffect.FRIENDSHIP_BOOSTER];
get description(): string {
return i18next.t("modifierType:ModifierType.PokemonFriendshipBoosterModifierType.description");

View File

@ -1,7 +1,7 @@
import type Pokemon from "#app/field/pokemon";
import { globalScene } from "#app/global-scene";
import i18next from "i18next";
import { HeldItem, HELD_ITEM_EFFECT } from "#app/items/held-item";
import { HeldItemEffect, HeldItem } from "#app/items/held-item";
import { PokemonHealPhase } from "#app/phases/pokemon-heal-phase";
import { toDmgValue } from "#app/utils/common";
import { getPokemonNameWithAffix } from "#app/messages";
@ -12,7 +12,7 @@ export interface HIT_HEAL_PARAMS {
}
export class HitHealHeldItem extends HeldItem {
public effects: HELD_ITEM_EFFECT[] = [HELD_ITEM_EFFECT.TURN_END_HEAL];
public effects: HeldItemEffect[] = [HeldItemEffect.TURN_END_HEAL];
get name(): string {
return i18next.t("modifierType:ModifierType.SHELL_BELL.name");

View File

@ -1,5 +1,5 @@
import type Pokemon from "#app/field/pokemon";
import { HeldItem, HELD_ITEM_EFFECT } from "../held-item";
import { HeldItemEffect, HeldItem } from "../held-item";
import { Stat } from "#enums/stat";
import type { NumberHolder } from "#app/utils/common";
import i18next from "i18next";
@ -16,7 +16,7 @@ export interface INCREMENTING_STAT_PARAMS {
* Currently used by Macho Brace item
*/
export class IncrementingStatHeldItem extends HeldItem {
public effects: HELD_ITEM_EFFECT[] = [HELD_ITEM_EFFECT.INCREMENTING_STAT];
public effects: HeldItemEffect[] = [HeldItemEffect.INCREMENTING_STAT];
public isTransferable = false;
/**

View File

@ -1,7 +1,7 @@
import type Pokemon from "#app/field/pokemon";
import { globalScene } from "#app/global-scene";
import i18next from "i18next";
import { ConsumableHeldItem, HELD_ITEM_EFFECT } from "../held-item";
import { ConsumableHeldItem, HeldItemEffect } from "../held-item";
import { getPokemonNameWithAffix } from "#app/messages";
import { PokemonHealPhase } from "#app/phases/pokemon-heal-phase";
import { toDmgValue } from "#app/utils/common";
@ -19,7 +19,7 @@ export interface INSTANT_REVIVE_PARAMS {
* @see {@linkcode apply}
*/
export class InstantReviveHeldItem extends ConsumableHeldItem {
public effects: HELD_ITEM_EFFECT[] = [HELD_ITEM_EFFECT.INSTANT_REVIVE];
public effects: HeldItemEffect[] = [HeldItemEffect.INSTANT_REVIVE];
get name(): string {
return i18next.t("modifierType:ModifierType.REVIVER_SEED.name");

View File

@ -2,7 +2,7 @@ import Pokemon from "#app/field/pokemon";
import { randSeedFloat } from "#app/utils/common";
import type { HeldItemId } from "#enums/held-item-id";
import i18next from "i18next";
import { HeldItem, HELD_ITEM_EFFECT } from "../held-item";
import { HeldItemEffect, HeldItem } from "../held-item";
import { getPokemonNameWithAffix } from "#app/messages";
import { allHeldItems } from "../all-held-items";
import { globalScene } from "#app/global-scene";
@ -83,7 +83,7 @@ export abstract class ItemTransferHeldItem extends HeldItem {
* @see {@linkcode modifierTypes[MINI_BLACK_HOLE]}
*/
export class TurnEndItemStealHeldItem extends ItemTransferHeldItem {
public effects: HELD_ITEM_EFFECT[] = [HELD_ITEM_EFFECT.TURN_END_ITEM_STEAL];
public effects: HeldItemEffect[] = [HeldItemEffect.TURN_END_ITEM_STEAL];
isTransferable = true;
get description(): string {
@ -125,7 +125,7 @@ export class TurnEndItemStealHeldItem extends ItemTransferHeldItem {
* @see {@linkcode HeldItemTransferModifier}
*/
export class ContactItemStealChanceHeldItem extends ItemTransferHeldItem {
public effects: HELD_ITEM_EFFECT[] = [HELD_ITEM_EFFECT.CONTACT_ITEM_STEAL_CHANCE];
public effects: HeldItemEffect[] = [HeldItemEffect.CONTACT_ITEM_STEAL_CHANCE];
public readonly chancePercent: number;
public readonly chance: number;

View File

@ -1,5 +1,5 @@
import type Pokemon from "#app/field/pokemon";
import { HeldItem, HELD_ITEM_EFFECT } from "#app/items/held-item";
import { HeldItemEffect, HeldItem } from "#app/items/held-item";
import { isNullOrUndefined, type NumberHolder } from "#app/utils/common";
import type { MoveId } from "#enums/move-id";
import { allMoves } from "#app/data/data-lists";
@ -19,7 +19,7 @@ export interface MULTI_HIT_PARAMS {
* @see {@linkcode apply}
*/
export class MultiHitHeldItem extends HeldItem {
public effects: HELD_ITEM_EFFECT[] = [HELD_ITEM_EFFECT.MULTI_HIT];
public effects: HeldItemEffect[] = [HeldItemEffect.MULTI_HIT];
get description(): string {
return i18next.t("modifierType:ModifierType.PokemonMultiHitModifierType.description");

View File

@ -1,6 +1,6 @@
import type Pokemon from "#app/field/pokemon";
import type { NumberHolder } from "#app/utils/common";
import { HeldItem, HELD_ITEM_EFFECT } from "../held-item";
import { HeldItemEffect, HeldItem } from "../held-item";
export interface NATURE_WEIGHT_BOOST_PARAMS {
/** The pokemon with the item */
@ -10,7 +10,7 @@ export interface NATURE_WEIGHT_BOOST_PARAMS {
}
export class NatureWeightBoosterHeldItem extends HeldItem {
public effects: HELD_ITEM_EFFECT[] = [HELD_ITEM_EFFECT.NATURE_WEIGHT_BOOSTER];
public effects: HeldItemEffect[] = [HeldItemEffect.NATURE_WEIGHT_BOOSTER];
/**
* Applies {@linkcode PokemonNatureWeightModifier}

View File

@ -2,7 +2,7 @@ import type Pokemon from "#app/field/pokemon";
import { globalScene } from "#app/global-scene";
import { BATTLE_STATS } from "#enums/stat";
import i18next from "i18next";
import { ConsumableHeldItem, HELD_ITEM_EFFECT } from "../held-item";
import { ConsumableHeldItem, HeldItemEffect } from "../held-item";
import { getPokemonNameWithAffix } from "#app/messages";
export interface RESET_NEGATIVE_STAT_STAGE_PARAMS {
@ -19,7 +19,7 @@ export interface RESET_NEGATIVE_STAT_STAGE_PARAMS {
* @see {@linkcode apply}
*/
export class ResetNegativeStatStageHeldItem extends ConsumableHeldItem {
public effects: HELD_ITEM_EFFECT[] = [HELD_ITEM_EFFECT.RESET_NEGATIVE_STAT_STAGE];
public effects: HeldItemEffect[] = [HeldItemEffect.RESET_NEGATIVE_STAT_STAGE];
get name(): string {
return i18next.t("modifierType:ModifierType.WHITE_HERB.name");

View File

@ -4,7 +4,7 @@ import type { NumberHolder } from "#app/utils/common";
import { HeldItemId } from "#enums/held-item-id";
import type { SpeciesId } from "#enums/species-id";
import type { Stat } from "#enums/stat";
import { HeldItem, HELD_ITEM_EFFECT } from "../held-item";
import { HeldItemEffect, HeldItem } from "../held-item";
export interface STAT_BOOST_PARAMS {
/** The pokemon with the item */
@ -20,7 +20,7 @@ export interface STAT_BOOST_PARAMS {
* @see {@linkcode apply}
*/
export class StatBoostHeldItem extends HeldItem {
public effects: HELD_ITEM_EFFECT[] = [HELD_ITEM_EFFECT.STAT_BOOST];
public effects: HeldItemEffect[] = [HeldItemEffect.STAT_BOOST];
/** The stats that the held item boosts */
protected stats: Stat[];
/** The multiplier used to increase the relevant stat(s) */

View File

@ -1,5 +1,5 @@
import type Pokemon from "#app/field/pokemon";
import { HeldItem, HELD_ITEM_EFFECT } from "#app/items/held-item";
import { HeldItemEffect, HeldItem } from "#app/items/held-item";
import type { BooleanHolder } from "#app/utils/common";
import { globalScene } from "#app/global-scene";
import i18next from "i18next";
@ -18,7 +18,7 @@ export interface SURVIVE_CHANCE_PARAMS {
* @see {@linkcode apply}
*/
export class SurviveChanceHeldItem extends HeldItem {
public effects: HELD_ITEM_EFFECT[] = [HELD_ITEM_EFFECT.SURVIVE_CHANCE];
public effects: HeldItemEffect[] = [HeldItemEffect.SURVIVE_CHANCE];
/**
* Checks if the {@linkcode SurviveDamageModifier} should be applied

View File

@ -1,7 +1,7 @@
import type Pokemon from "#app/field/pokemon";
import { globalScene } from "#app/global-scene";
import i18next from "i18next";
import { HeldItem, HELD_ITEM_EFFECT } from "#app/items/held-item";
import { HeldItemEffect, HeldItem } from "#app/items/held-item";
import { PokemonHealPhase } from "#app/phases/pokemon-heal-phase";
import { toDmgValue } from "#app/utils/common";
import { getPokemonNameWithAffix } from "#app/messages";
@ -12,7 +12,7 @@ export interface TURN_END_HEAL_PARAMS {
}
export class TurnEndHealHeldItem extends HeldItem {
public effects: HELD_ITEM_EFFECT[] = [HELD_ITEM_EFFECT.TURN_END_HEAL];
public effects: HeldItemEffect[] = [HeldItemEffect.TURN_END_HEAL];
apply(params: TURN_END_HEAL_PARAMS): boolean {
const pokemon = params.pokemon;

View File

@ -1,5 +1,5 @@
import type Pokemon from "#app/field/pokemon";
import { HeldItem, HELD_ITEM_EFFECT } from "#app/items/held-item";
import { HeldItemEffect, HeldItem } from "#app/items/held-item";
import type { StatusEffect } from "#enums/status-effect";
import type { HeldItemId } from "#enums/held-item-id";
@ -15,7 +15,7 @@ export interface TURN_END_STATUS_PARAMS {
* @see {@linkcode apply}
*/
export class TurnEndStatusHeldItem extends HeldItem {
public effects: HELD_ITEM_EFFECT[] = [HELD_ITEM_EFFECT.TURN_END_STATUS];
public effects: HeldItemEffect[] = [HeldItemEffect.TURN_END_STATUS];
/** The status effect to be applied by the held item */
public effect: StatusEffect;

View File

@ -7,7 +7,7 @@ import { FieldPhase } from "./field-phase";
import { globalScene } from "#app/global-scene";
import type Pokemon from "#app/field/pokemon";
import { allHeldItems, applyHeldItems } from "#app/items/all-held-items";
import { HELD_ITEM_EFFECT } from "#app/items/held-item";
import { HeldItemEffect } from "#app/items/held-item";
import { HeldItemCategoryId, isItemInCategory } from "#enums/held-item-id";
/**
@ -59,7 +59,7 @@ export class BerryPhase extends FieldPhase {
CommonAnim.USE_ITEM,
);
applyHeldItems(HELD_ITEM_EFFECT.BERRY, { pokemon: pokemon });
applyHeldItems(HeldItemEffect.BERRY, { pokemon: pokemon });
globalScene.updateItems(pokemon.isPlayer());
// AbilityId.CHEEK_POUCH only works once per round of nom noms

View File

@ -21,7 +21,7 @@ import { isNullOrUndefined } from "#app/utils/common";
import { FRIENDSHIP_LOSS_FROM_FAINT } from "#app/data/balance/starters";
import { BattlerTagType } from "#enums/battler-tag-type";
import { applyHeldItems } from "#app/items/all-held-items";
import { HELD_ITEM_EFFECT } from "#app/items/held-item";
import { HeldItemEffect } from "#app/items/held-item";
export class FaintPhase extends PokemonPhase {
public readonly phaseName = "FaintPhase";
@ -55,7 +55,7 @@ export class FaintPhase extends PokemonPhase {
faintPokemon.resetSummonData();
if (!this.preventInstantRevive) {
applyHeldItems(HELD_ITEM_EFFECT.INSTANT_REVIVE, { pokemon: faintPokemon });
applyHeldItems(HeldItemEffect.INSTANT_REVIVE, { pokemon: faintPokemon });
}
/**

View File

@ -41,7 +41,7 @@ import type Move from "#app/data/moves/move";
import { isFieldTargeted } from "#app/data/moves/move-utils";
import { DamageAchv } from "#app/system/achv";
import { applyHeldItems } from "#app/items/all-held-items";
import { HELD_ITEM_EFFECT } from "#app/items/held-item";
import { HeldItemEffect } from "#app/items/held-item";
import { isVirtual, isReflected, MoveUseMode } from "#enums/move-use-mode";
import { TRAINER_ITEM_EFFECT } from "#app/items/trainer-item";
@ -313,7 +313,7 @@ export class MoveEffectPhase extends PokemonPhase {
// If Parental Bond is applicable, add another hit
applyAbAttrs("AddSecondStrikeAbAttr", { pokemon: user, move, hitCount });
// If Multi-Lens is applicable, add hits equal to the number of held Multi-Lenses
applyHeldItems(HELD_ITEM_EFFECT.MULTI_HIT, { pokemon: user, moveId: move.id, count: hitCount });
applyHeldItems(HeldItemEffect.MULTI_HIT, { pokemon: user, moveId: move.id, count: hitCount });
// Set the user's relevant turnData fields to reflect the final hit count
user.turnData.hitCount = hitCount.value;
user.turnData.hitsLeft = hitCount.value;
@ -413,7 +413,7 @@ export class MoveEffectPhase extends PokemonPhase {
globalScene.phaseManager.queueMessage(i18next.t("battle:attackHitsCount", { count: hitsTotal }));
}
applyHeldItems(HELD_ITEM_EFFECT.HIT_HEAL, { pokemon: user });
applyHeldItems(HeldItemEffect.HIT_HEAL, { pokemon: user });
this.getTargets().forEach(target => {
target.turnData.moveEffectiveness = null;
});
@ -455,7 +455,7 @@ export class MoveEffectPhase extends PokemonPhase {
!this.move.hitsSubstitute(user, target)
) {
const flinched = new BooleanHolder(false);
applyHeldItems(HELD_ITEM_EFFECT.FLINCH_CHANCE, { pokemon: user, flinched: flinched });
applyHeldItems(HeldItemEffect.FLINCH_CHANCE, { pokemon: user, flinched: flinched });
if (flinched.value) {
target.addTag(BattlerTagType.FLINCHED, undefined, this.move.id, user.id);
}
@ -900,7 +900,7 @@ export class MoveEffectPhase extends PokemonPhase {
});
if (user.isPlayer() && target.isEnemy()) {
applyHeldItems(HELD_ITEM_EFFECT.DAMAGE_MONEY_REWARD, { pokemon: user, damage: damage });
applyHeldItems(HeldItemEffect.DAMAGE_MONEY_REWARD, { pokemon: user, damage: damage });
}
return [result, isCritical];
@ -1013,7 +1013,7 @@ export class MoveEffectPhase extends PokemonPhase {
// Apply Grip Claw's chance to steal an item from the target
if (this.move.is("AttackMove")) {
applyHeldItems(HELD_ITEM_EFFECT.CONTACT_ITEM_STEAL_CHANCE, { pokemon: user, target: target });
applyHeldItems(HeldItemEffect.CONTACT_ITEM_STEAL_CHANCE, { pokemon: user, target: target });
}
}
}

View File

@ -14,7 +14,7 @@ import { Stat, type BattleStat, getStatKey, getStatStageChangeDescriptionKey } f
import { OctolockTag } from "#app/data/battler-tags";
import { ArenaTagType } from "#app/enums/arena-tag-type";
import { applyHeldItems } from "#app/items/all-held-items";
import { HELD_ITEM_EFFECT } from "#app/items/held-item";
import { HeldItemEffect } from "#app/items/held-item";
import type {
ConditionalUserFieldProtectStatAbAttrParams,
PreStatStageChangeAbAttrParams,
@ -236,7 +236,7 @@ export class StatStageChangePhase extends PokemonPhase {
);
if (!existingPhase?.is("StatStageChangePhase")) {
// Apply White Herb if needed
applyHeldItems(HELD_ITEM_EFFECT.RESET_NEGATIVE_STAT_STAGE, { pokemon: pokemon, isPlayer: this.player });
applyHeldItems(HeldItemEffect.RESET_NEGATIVE_STAT_STAGE, { pokemon: pokemon, isPlayer: this.player });
}
pokemon.updateInfo();

View File

@ -9,7 +9,7 @@ import i18next from "i18next";
import { FieldPhase } from "./field-phase";
import { globalScene } from "#app/global-scene";
import { applyHeldItems } from "#app/items/all-held-items";
import { HELD_ITEM_EFFECT } from "#app/items/held-item";
import { HeldItemEffect } from "#app/items/held-item";
import { TRAINER_ITEM_EFFECT } from "#app/items/trainer-item";
export class TurnEndPhase extends FieldPhase {
@ -26,7 +26,7 @@ export class TurnEndPhase extends FieldPhase {
if (!pokemon.switchOutStatus) {
pokemon.lapseTags(BattlerTagLapseType.TURN_END);
applyHeldItems(HELD_ITEM_EFFECT.TURN_END_HEAL, { pokemon: pokemon });
applyHeldItems(HeldItemEffect.TURN_END_HEAL, { pokemon: pokemon });
if (globalScene.arena.terrain?.terrainType === TerrainType.GRASSY && pokemon.isGrounded()) {
globalScene.phaseManager.unshiftNew(
@ -48,9 +48,9 @@ export class TurnEndPhase extends FieldPhase {
applyAbAttrs("PostTurnAbAttr", { pokemon });
}
applyHeldItems(HELD_ITEM_EFFECT.TURN_END_STATUS, { pokemon: pokemon });
applyHeldItems(HeldItemEffect.TURN_END_STATUS, { pokemon: pokemon });
applyHeldItems(HELD_ITEM_EFFECT.TURN_END_ITEM_STEAL, { pokemon: pokemon });
applyHeldItems(HeldItemEffect.TURN_END_ITEM_STEAL, { pokemon: pokemon });
pokemon.tempSummonData.turnCount++;
pokemon.tempSummonData.waveTurnCount++;

View File

@ -10,7 +10,7 @@ import { BattlerIndex } from "#enums/battler-index";
import { TrickRoomTag } from "#app/data/arena-tag";
import { SwitchType } from "#enums/switch-type";
import { globalScene } from "#app/global-scene";
import { HELD_ITEM_EFFECT } from "#app/items/held-item";
import { HeldItemEffect } from "#app/items/held-item";
import { applyHeldItems } from "#app/items/all-held-items";
export class TurnStartPhase extends FieldPhase {
@ -73,7 +73,7 @@ export class TurnStartPhase extends FieldPhase {
canCheckHeldItems: canCheckHeldItems,
});
if (canCheckHeldItems.value) {
applyHeldItems(HELD_ITEM_EFFECT.BYPASS_SPEED_CHANCE, { pokemon: p, doBypassSpeed: bypassSpeed });
applyHeldItems(HeldItemEffect.BYPASS_SPEED_CHANCE, { pokemon: p, doBypassSpeed: bypassSpeed });
}
battlerBypassSpeed[p.getBattlerIndex()] = bypassSpeed;
});

View File

@ -1,5 +1,5 @@
import { applyHeldItems } from "#app/items/all-held-items";
import { HELD_ITEM_EFFECT } from "#app/items/held-item";
import { HeldItemEffect } from "#app/items/held-item";
import { NumberHolder, randItem } from "#app/utils/common";
import { HeldItemId } from "#enums/held-item-id";
import { SpeciesId } from "#enums/species-id";
@ -34,7 +34,7 @@ describe("Items - Eviolite", () => {
vi.spyOn(partyMember, "getEffectiveStat").mockImplementation((stat, _opponent?, _move?, _isCritical?) => {
const statValue = new NumberHolder(partyMember.getStat(stat, false));
applyHeldItems(HELD_ITEM_EFFECT.STAT_BOOST, { pokemon: partyMember, stat: stat, statValue: statValue });
applyHeldItems(HeldItemEffect.STAT_BOOST, { pokemon: partyMember, stat: stat, statValue: statValue });
return Math.floor(statValue.value);
});
@ -53,7 +53,7 @@ describe("Items - Eviolite", () => {
vi.spyOn(partyMember, "getEffectiveStat").mockImplementation((stat, _opponent?, _move?, _isCritical?) => {
const statValue = new NumberHolder(partyMember.getStat(stat, false));
applyHeldItems(HELD_ITEM_EFFECT.STAT_BOOST, { pokemon: partyMember, stat: stat, statValue: statValue });
applyHeldItems(HeldItemEffect.STAT_BOOST, { pokemon: partyMember, stat: stat, statValue: statValue });
// Ignore other calculations for simplicity
@ -83,7 +83,7 @@ describe("Items - Eviolite", () => {
vi.spyOn(partyMember, "getEffectiveStat").mockImplementation((stat, _opponent?, _move?, _isCritical?) => {
const statValue = new NumberHolder(partyMember.getStat(stat, false));
applyHeldItems(HELD_ITEM_EFFECT.STAT_BOOST, { pokemon: partyMember, stat: stat, statValue: statValue });
applyHeldItems(HeldItemEffect.STAT_BOOST, { pokemon: partyMember, stat: stat, statValue: statValue });
// Ignore other calculations for simplicity
@ -113,7 +113,7 @@ describe("Items - Eviolite", () => {
vi.spyOn(partyMember, "getEffectiveStat").mockImplementation((stat, _opponent?, _move?, _isCritical?) => {
const statValue = new NumberHolder(partyMember.getStat(stat, false));
applyHeldItems(HELD_ITEM_EFFECT.STAT_BOOST, { pokemon: partyMember, stat: stat, statValue: statValue });
applyHeldItems(HeldItemEffect.STAT_BOOST, { pokemon: partyMember, stat: stat, statValue: statValue });
// Ignore other calculations for simplicity
@ -143,7 +143,7 @@ describe("Items - Eviolite", () => {
vi.spyOn(partyMember, "getEffectiveStat").mockImplementation((stat, _opponent?, _move?, _isCritical?) => {
const statValue = new NumberHolder(partyMember.getStat(stat, false));
applyHeldItems(HELD_ITEM_EFFECT.STAT_BOOST, { pokemon: partyMember, stat: stat, statValue: statValue });
applyHeldItems(HeldItemEffect.STAT_BOOST, { pokemon: partyMember, stat: stat, statValue: statValue });
// Ignore other calculations for simplicity
@ -173,7 +173,7 @@ describe("Items - Eviolite", () => {
vi.spyOn(partyMember, "getEffectiveStat").mockImplementation((stat, _opponent?, _move?, _isCritical?) => {
const statValue = new NumberHolder(partyMember.getStat(stat, false));
applyHeldItems(HELD_ITEM_EFFECT.STAT_BOOST, { pokemon: partyMember, stat: stat, statValue: statValue });
applyHeldItems(HeldItemEffect.STAT_BOOST, { pokemon: partyMember, stat: stat, statValue: statValue });
// Ignore other calculations for simplicity
@ -203,7 +203,7 @@ describe("Items - Eviolite", () => {
vi.spyOn(partyMember, "getEffectiveStat").mockImplementation((stat, _opponent?, _move?, _isCritical?) => {
const statValue = new NumberHolder(partyMember.getStat(stat, false));
applyHeldItems(HELD_ITEM_EFFECT.STAT_BOOST, { pokemon: partyMember, stat: stat, statValue: statValue });
applyHeldItems(HeldItemEffect.STAT_BOOST, { pokemon: partyMember, stat: stat, statValue: statValue });
// Ignore other calculations for simplicity

View File

@ -5,7 +5,7 @@ import Phase from "phaser";
import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest";
import { HeldItemId } from "#enums/held-item-id";
import { applyHeldItems } from "#app/items/all-held-items";
import { HELD_ITEM_EFFECT } from "#app/items/held-item";
import { HeldItemEffect } from "#app/items/held-item";
describe("EXP Modifier Items", () => {
let phaserGame: Phaser.Game;
@ -34,7 +34,7 @@ describe("EXP Modifier Items", () => {
const partyMember = game.scene.getPlayerPokemon()!;
partyMember.exp = 100;
const expHolder = new NumberHolder(partyMember.exp);
applyHeldItems(HELD_ITEM_EFFECT.EXP_BOOSTER, { pokemon: partyMember, expAmount: expHolder });
applyHeldItems(HeldItemEffect.EXP_BOOSTER, { pokemon: partyMember, expAmount: expHolder });
expect(expHolder.value).toBe(440);
});
});

View File

@ -7,7 +7,7 @@ import Phase from "phaser";
import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
import { HeldItemId } from "#enums/held-item-id";
import { applyHeldItems } from "#app/items/all-held-items";
import { HELD_ITEM_EFFECT } from "#app/items/held-item";
import { HeldItemEffect } from "#app/items/held-item";
describe("Items - Light Ball", () => {
let phaserGame: Phaser.Game;
@ -92,17 +92,17 @@ describe("Items - Light Ball", () => {
// Making sure modifier is not applied without holding item
const atkValue = new NumberHolder(atkStat);
applyHeldItems(HELD_ITEM_EFFECT.STAT_BOOST, { pokemon: partyMember, stat: Stat.DEF, statValue: atkValue });
applyHeldItems(HeldItemEffect.STAT_BOOST, { pokemon: partyMember, stat: Stat.DEF, statValue: atkValue });
const spAtkValue = new NumberHolder(spAtkStat);
applyHeldItems(HELD_ITEM_EFFECT.STAT_BOOST, { pokemon: partyMember, stat: Stat.SPDEF, statValue: spAtkValue });
applyHeldItems(HeldItemEffect.STAT_BOOST, { pokemon: partyMember, stat: Stat.SPDEF, statValue: spAtkValue });
expect(atkValue.value / atkStat).toBe(1);
expect(spAtkValue.value / spAtkStat).toBe(1);
// Giving Light Ball to party member and testing if it applies
partyMember.heldItemManager.add(HeldItemId.LIGHT_BALL);
applyHeldItems(HELD_ITEM_EFFECT.STAT_BOOST, { pokemon: partyMember, stat: Stat.ATK, statValue: atkValue });
applyHeldItems(HELD_ITEM_EFFECT.STAT_BOOST, { pokemon: partyMember, stat: Stat.SPATK, statValue: spAtkValue });
applyHeldItems(HeldItemEffect.STAT_BOOST, { pokemon: partyMember, stat: Stat.ATK, statValue: atkValue });
applyHeldItems(HeldItemEffect.STAT_BOOST, { pokemon: partyMember, stat: Stat.SPATK, statValue: spAtkValue });
expect(atkValue.value / atkStat).toBe(2);
expect(spAtkValue.value / spAtkStat).toBe(2);
@ -128,9 +128,9 @@ describe("Items - Light Ball", () => {
// Making sure modifier is not applied without holding item
const atkValue = new NumberHolder(atkStat);
applyHeldItems(HELD_ITEM_EFFECT.STAT_BOOST, { pokemon: partyMember, stat: Stat.DEF, statValue: atkValue });
applyHeldItems(HeldItemEffect.STAT_BOOST, { pokemon: partyMember, stat: Stat.DEF, statValue: atkValue });
const spAtkValue = new NumberHolder(spAtkStat);
applyHeldItems(HELD_ITEM_EFFECT.STAT_BOOST, { pokemon: partyMember, stat: Stat.SPDEF, statValue: spAtkValue });
applyHeldItems(HeldItemEffect.STAT_BOOST, { pokemon: partyMember, stat: Stat.SPDEF, statValue: spAtkValue });
expect(atkValue.value / atkStat).toBe(1);
expect(spAtkValue.value / spAtkStat).toBe(1);
@ -138,8 +138,8 @@ describe("Items - Light Ball", () => {
// Giving Light Ball to party member and testing if it applies
partyMember.heldItemManager.add(HeldItemId.LIGHT_BALL);
applyHeldItems(HELD_ITEM_EFFECT.STAT_BOOST, { pokemon: partyMember, stat: Stat.ATK, statValue: atkValue });
applyHeldItems(HELD_ITEM_EFFECT.STAT_BOOST, { pokemon: partyMember, stat: Stat.SPATK, statValue: spAtkValue });
applyHeldItems(HeldItemEffect.STAT_BOOST, { pokemon: partyMember, stat: Stat.ATK, statValue: atkValue });
applyHeldItems(HeldItemEffect.STAT_BOOST, { pokemon: partyMember, stat: Stat.SPATK, statValue: spAtkValue });
expect(atkValue.value / atkStat).toBe(2);
expect(spAtkValue.value / spAtkStat).toBe(2);
@ -165,9 +165,9 @@ describe("Items - Light Ball", () => {
// Making sure modifier is not applied without holding item
const atkValue = new NumberHolder(atkStat);
applyHeldItems(HELD_ITEM_EFFECT.STAT_BOOST, { pokemon: partyMember, stat: Stat.DEF, statValue: atkValue });
applyHeldItems(HeldItemEffect.STAT_BOOST, { pokemon: partyMember, stat: Stat.DEF, statValue: atkValue });
const spAtkValue = new NumberHolder(spAtkStat);
applyHeldItems(HELD_ITEM_EFFECT.STAT_BOOST, { pokemon: partyMember, stat: Stat.SPDEF, statValue: spAtkValue });
applyHeldItems(HeldItemEffect.STAT_BOOST, { pokemon: partyMember, stat: Stat.SPDEF, statValue: spAtkValue });
expect(atkValue.value / atkStat).toBe(1);
expect(spAtkValue.value / spAtkStat).toBe(1);
@ -175,8 +175,8 @@ describe("Items - Light Ball", () => {
// Giving Light Ball to party member and testing if it applies
partyMember.heldItemManager.add(HeldItemId.LIGHT_BALL);
applyHeldItems(HELD_ITEM_EFFECT.STAT_BOOST, { pokemon: partyMember, stat: Stat.ATK, statValue: atkValue });
applyHeldItems(HELD_ITEM_EFFECT.STAT_BOOST, { pokemon: partyMember, stat: Stat.SPATK, statValue: spAtkValue });
applyHeldItems(HeldItemEffect.STAT_BOOST, { pokemon: partyMember, stat: Stat.ATK, statValue: atkValue });
applyHeldItems(HeldItemEffect.STAT_BOOST, { pokemon: partyMember, stat: Stat.SPATK, statValue: spAtkValue });
expect(atkValue.value / atkStat).toBe(2);
expect(spAtkValue.value / spAtkStat).toBe(2);
@ -192,17 +192,17 @@ describe("Items - Light Ball", () => {
// Making sure modifier is not applied without holding item
const atkValue = new NumberHolder(atkStat);
applyHeldItems(HELD_ITEM_EFFECT.STAT_BOOST, { pokemon: partyMember, stat: Stat.DEF, statValue: atkValue });
applyHeldItems(HeldItemEffect.STAT_BOOST, { pokemon: partyMember, stat: Stat.DEF, statValue: atkValue });
const spAtkValue = new NumberHolder(spAtkStat);
applyHeldItems(HELD_ITEM_EFFECT.STAT_BOOST, { pokemon: partyMember, stat: Stat.SPDEF, statValue: spAtkValue });
applyHeldItems(HeldItemEffect.STAT_BOOST, { pokemon: partyMember, stat: Stat.SPDEF, statValue: spAtkValue });
expect(atkValue.value / atkStat).toBe(1);
expect(spAtkValue.value / spAtkStat).toBe(1);
// Giving Light Ball to party member and testing if it applies
partyMember.heldItemManager.add(HeldItemId.LIGHT_BALL);
applyHeldItems(HELD_ITEM_EFFECT.STAT_BOOST, { pokemon: partyMember, stat: Stat.ATK, statValue: atkValue });
applyHeldItems(HELD_ITEM_EFFECT.STAT_BOOST, { pokemon: partyMember, stat: Stat.SPATK, statValue: spAtkValue });
applyHeldItems(HeldItemEffect.STAT_BOOST, { pokemon: partyMember, stat: Stat.ATK, statValue: atkValue });
applyHeldItems(HeldItemEffect.STAT_BOOST, { pokemon: partyMember, stat: Stat.SPATK, statValue: spAtkValue });
expect(atkValue.value / atkStat).toBe(1);
expect(spAtkValue.value / spAtkStat).toBe(1);