mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-06-30 21:42:20 +02:00
Changed held-items.ts to held-item-id.ts and renamed id object accoridngly
This commit is contained in:
parent
e98004cefa
commit
d109bc202f
@ -1,4 +1,4 @@
|
||||
export const HeldItems = {
|
||||
export const HeldItemId = {
|
||||
NONE: 0x0000,
|
||||
|
||||
// Berries
|
||||
@ -84,13 +84,13 @@ export const HeldItems = {
|
||||
CARBOS: 0x0906,
|
||||
};
|
||||
|
||||
export type HeldItems = (typeof HeldItems)[keyof typeof HeldItems];
|
||||
export type HeldItemId = (typeof HeldItemId)[keyof typeof HeldItemId];
|
||||
|
||||
type HeldItemName = keyof typeof HeldItems;
|
||||
type HeldItemValue = typeof HeldItems[HeldItemName];
|
||||
type HeldItemName = keyof typeof HeldItemId;
|
||||
type HeldItemValue = typeof HeldItemId[HeldItemName];
|
||||
|
||||
// Use a type-safe reducer to force number keys and values
|
||||
export const HeldItemNames: Record<HeldItemValue, HeldItemName> = Object.entries(HeldItems).reduce(
|
||||
export const HeldItemNames: Record<HeldItemValue, HeldItemName> = Object.entries(HeldItemId).reduce(
|
||||
(acc, [key, value]) => {
|
||||
acc[value as HeldItemValue] = key as HeldItemName;
|
||||
return acc;
|
@ -1,5 +1,5 @@
|
||||
import { allHeldItems } from "#app/items/all-held-items";
|
||||
import type { HeldItems } from "#app/enums/held-items";
|
||||
import type { HeldItemId } from "#app/enums/held-item-id";
|
||||
|
||||
interface HeldItemProperties {
|
||||
stack: number;
|
||||
@ -8,7 +8,7 @@ interface HeldItemProperties {
|
||||
}
|
||||
|
||||
type HeldItemPropertyMap = {
|
||||
[key in HeldItems]: HeldItemProperties;
|
||||
[key in HeldItemId]: HeldItemProperties;
|
||||
};
|
||||
|
||||
export class PokemonItemManager {
|
||||
@ -22,20 +22,20 @@ export class PokemonItemManager {
|
||||
return Object.keys(this.heldItems).map(k => Number(k));
|
||||
}
|
||||
|
||||
hasItem(itemType: HeldItems): boolean {
|
||||
hasItem(itemType: HeldItemId): boolean {
|
||||
return itemType in this.heldItems;
|
||||
}
|
||||
|
||||
getItem(itemType: HeldItems): HeldItemProperties {
|
||||
getItem(itemType: HeldItemId): HeldItemProperties {
|
||||
// TODO: Not very safe
|
||||
return this.heldItems[itemType];
|
||||
}
|
||||
|
||||
getStack(itemType: HeldItems): number {
|
||||
getStack(itemType: HeldItemId): number {
|
||||
return itemType in this.heldItems ? this.heldItems[itemType].stack : 0;
|
||||
}
|
||||
|
||||
add(itemType: HeldItems, addStack = 1) {
|
||||
add(itemType: HeldItemId, addStack = 1) {
|
||||
const maxStack = allHeldItems[itemType].getMaxStackCount();
|
||||
|
||||
if (this.hasItem(itemType)) {
|
||||
@ -46,7 +46,7 @@ export class PokemonItemManager {
|
||||
}
|
||||
}
|
||||
|
||||
remove(itemType: HeldItems, removeStack = 1) {
|
||||
remove(itemType: HeldItemId, removeStack = 1) {
|
||||
this.heldItems[itemType].stack -= removeStack;
|
||||
|
||||
if (this.heldItems[itemType].stack <= 0) {
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { getEnumValues } from "#app/utils/common";
|
||||
import { BerryType } from "#enums/berry-type";
|
||||
import { HeldItems } from "#enums/held-items";
|
||||
import { HeldItemId } from "#enums/held-item-id";
|
||||
import type { PokemonType } from "#enums/pokemon-type";
|
||||
import type { PermanentStat } from "#enums/stat";
|
||||
import { ITEM_EFFECT } from "./held-item";
|
||||
@ -36,11 +36,11 @@ export function initHeldItems() {
|
||||
allHeldItems[heldItemType] = new BaseStatBoosterHeldItem(heldItemType, 10, stat);
|
||||
}
|
||||
|
||||
allHeldItems[HeldItems.LEFTOVERS] = new TurnEndHealHeldItem(HeldItems.LEFTOVERS, 4);
|
||||
allHeldItems[HeldItems.SHELL_BELL] = new HitHealHeldItem(HeldItems.SHELL_BELL, 4);
|
||||
allHeldItems[HeldItemId.LEFTOVERS] = new TurnEndHealHeldItem(HeldItemId.LEFTOVERS, 4);
|
||||
allHeldItems[HeldItemId.SHELL_BELL] = new HitHealHeldItem(HeldItemId.SHELL_BELL, 4);
|
||||
|
||||
allHeldItems[HeldItems.LUCKY_EGG] = new ExpBoosterHeldItem(HeldItems.LUCKY_EGG, 99, 40);
|
||||
allHeldItems[HeldItems.GOLDEN_EGG] = new ExpBoosterHeldItem(HeldItems.GOLDEN_EGG, 99, 100);
|
||||
allHeldItems[HeldItemId.LUCKY_EGG] = new ExpBoosterHeldItem(HeldItemId.LUCKY_EGG, 99, 40);
|
||||
allHeldItems[HeldItemId.GOLDEN_EGG] = new ExpBoosterHeldItem(HeldItemId.GOLDEN_EGG, 99, 100);
|
||||
|
||||
for (const berry of getEnumValues(BerryType)) {
|
||||
let maxStackCount: number;
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { applyPostItemLostAbAttrs, PostItemLostAbAttr } from "#app/data/abilities/ability";
|
||||
import type Pokemon from "#app/field/pokemon";
|
||||
import { globalScene } from "#app/global-scene";
|
||||
import type { HeldItems } from "#enums/held-items";
|
||||
import type { HeldItemId } from "#enums/held-item-id";
|
||||
|
||||
export const ITEM_EFFECT = {
|
||||
ATTACK_TYPE_BOOST: 1,
|
||||
@ -18,13 +18,13 @@ export type ITEM_EFFECT = (typeof ITEM_EFFECT)[keyof typeof ITEM_EFFECT];
|
||||
|
||||
export class HeldItem {
|
||||
// public pokemonId: number;
|
||||
public type: HeldItems;
|
||||
public type: HeldItemId;
|
||||
public maxStackCount: number;
|
||||
public isTransferable = true;
|
||||
public isStealable = true;
|
||||
public isSuppressable = true;
|
||||
|
||||
constructor(type: HeldItems, maxStackCount = 1) {
|
||||
constructor(type: HeldItemId, maxStackCount = 1) {
|
||||
this.type = type;
|
||||
this.maxStackCount = maxStackCount;
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { HeldItemNames, HeldItems } from "#enums/held-items";
|
||||
import { HeldItemNames, HeldItemId } from "#enums/held-item-id";
|
||||
import { PokemonType } from "#enums/pokemon-type";
|
||||
import i18next from "i18next";
|
||||
import type { NumberHolder } from "#app/utils/common";
|
||||
@ -15,28 +15,28 @@ export interface ATTACK_TYPE_BOOST_PARAMS {
|
||||
}
|
||||
|
||||
interface AttackTypeToHeldItemMap {
|
||||
[key: number]: HeldItems;
|
||||
[key: number]: HeldItemId;
|
||||
}
|
||||
|
||||
export const attackTypeToHeldItem: AttackTypeToHeldItemMap = {
|
||||
[PokemonType.NORMAL]: HeldItems.SILK_SCARF,
|
||||
[PokemonType.FIGHTING]: HeldItems.BLACK_BELT,
|
||||
[PokemonType.FLYING]: HeldItems.SHARP_BEAK,
|
||||
[PokemonType.POISON]: HeldItems.POISON_BARB,
|
||||
[PokemonType.GROUND]: HeldItems.SOFT_SAND,
|
||||
[PokemonType.ROCK]: HeldItems.HARD_STONE,
|
||||
[PokemonType.BUG]: HeldItems.SILVER_POWDER,
|
||||
[PokemonType.GHOST]: HeldItems.SPELL_TAG,
|
||||
[PokemonType.STEEL]: HeldItems.METAL_COAT,
|
||||
[PokemonType.FIRE]: HeldItems.CHARCOAL,
|
||||
[PokemonType.WATER]: HeldItems.MYSTIC_WATER,
|
||||
[PokemonType.GRASS]: HeldItems.MIRACLE_SEED,
|
||||
[PokemonType.ELECTRIC]: HeldItems.MAGNET,
|
||||
[PokemonType.PSYCHIC]: HeldItems.TWISTED_SPOON,
|
||||
[PokemonType.ICE]: HeldItems.NEVER_MELT_ICE,
|
||||
[PokemonType.DRAGON]: HeldItems.DRAGON_FANG,
|
||||
[PokemonType.DARK]: HeldItems.BLACK_GLASSES,
|
||||
[PokemonType.FAIRY]: HeldItems.FAIRY_FEATHER,
|
||||
[PokemonType.NORMAL]: HeldItemId.SILK_SCARF,
|
||||
[PokemonType.FIGHTING]: HeldItemId.BLACK_BELT,
|
||||
[PokemonType.FLYING]: HeldItemId.SHARP_BEAK,
|
||||
[PokemonType.POISON]: HeldItemId.POISON_BARB,
|
||||
[PokemonType.GROUND]: HeldItemId.SOFT_SAND,
|
||||
[PokemonType.ROCK]: HeldItemId.HARD_STONE,
|
||||
[PokemonType.BUG]: HeldItemId.SILVER_POWDER,
|
||||
[PokemonType.GHOST]: HeldItemId.SPELL_TAG,
|
||||
[PokemonType.STEEL]: HeldItemId.METAL_COAT,
|
||||
[PokemonType.FIRE]: HeldItemId.CHARCOAL,
|
||||
[PokemonType.WATER]: HeldItemId.MYSTIC_WATER,
|
||||
[PokemonType.GRASS]: HeldItemId.MIRACLE_SEED,
|
||||
[PokemonType.ELECTRIC]: HeldItemId.MAGNET,
|
||||
[PokemonType.PSYCHIC]: HeldItemId.TWISTED_SPOON,
|
||||
[PokemonType.ICE]: HeldItemId.NEVER_MELT_ICE,
|
||||
[PokemonType.DRAGON]: HeldItemId.DRAGON_FANG,
|
||||
[PokemonType.DARK]: HeldItemId.BLACK_GLASSES,
|
||||
[PokemonType.FAIRY]: HeldItemId.FAIRY_FEATHER,
|
||||
};
|
||||
|
||||
export class AttackTypeBoosterHeldItem extends HeldItem {
|
||||
@ -45,7 +45,7 @@ export class AttackTypeBoosterHeldItem extends HeldItem {
|
||||
public powerBoost: number;
|
||||
|
||||
// This constructor may need a revision
|
||||
constructor(type: HeldItems, maxStackCount = 1, moveType: PokemonType, powerBoost: number) {
|
||||
constructor(type: HeldItemId, maxStackCount = 1, moveType: PokemonType, powerBoost: number) {
|
||||
super(type, maxStackCount);
|
||||
this.moveType = moveType;
|
||||
this.powerBoost = powerBoost;
|
||||
|
@ -1,5 +1,5 @@
|
||||
import type Pokemon from "#app/field/pokemon";
|
||||
import { HeldItems } from "#enums/held-items";
|
||||
import { HeldItemId } from "#enums/held-item-id";
|
||||
import { getStatKey, type PermanentStat, Stat } from "#enums/stat";
|
||||
import i18next from "i18next";
|
||||
import { HeldItem, ITEM_EFFECT } from "../held-item";
|
||||
@ -11,16 +11,16 @@ export interface BASE_STAT_BOOSTER_PARAMS {
|
||||
}
|
||||
|
||||
interface PermanentStatToHeldItemMap {
|
||||
[key: number]: HeldItems;
|
||||
[key: number]: HeldItemId;
|
||||
}
|
||||
|
||||
export const permanentStatToHeldItem: PermanentStatToHeldItemMap = {
|
||||
[Stat.HP]: HeldItems.HP_UP,
|
||||
[Stat.ATK]: HeldItems.PROTEIN,
|
||||
[Stat.DEF]: HeldItems.IRON,
|
||||
[Stat.SPATK]: HeldItems.CALCIUM,
|
||||
[Stat.SPDEF]: HeldItems.ZINC,
|
||||
[Stat.SPD]: HeldItems.CARBOS,
|
||||
[Stat.HP]: HeldItemId.HP_UP,
|
||||
[Stat.ATK]: HeldItemId.PROTEIN,
|
||||
[Stat.DEF]: HeldItemId.IRON,
|
||||
[Stat.SPATK]: HeldItemId.CALCIUM,
|
||||
[Stat.SPDEF]: HeldItemId.ZINC,
|
||||
[Stat.SPD]: HeldItemId.CARBOS,
|
||||
};
|
||||
|
||||
export const statBoostItems: Record<PermanentStat, string> = {
|
||||
@ -36,7 +36,7 @@ export class BaseStatBoosterHeldItem extends HeldItem {
|
||||
public effects: ITEM_EFFECT[] = [ITEM_EFFECT.BASE_STAT_BOOSTER];
|
||||
public stat: PermanentStat;
|
||||
|
||||
constructor(type: HeldItems, maxStackCount = 1, stat: PermanentStat) {
|
||||
constructor(type: HeldItemId, maxStackCount = 1, stat: PermanentStat) {
|
||||
super(type, maxStackCount);
|
||||
this.stat = stat;
|
||||
}
|
||||
|
@ -5,24 +5,24 @@ import { ConsumableHeldItem, ITEM_EFFECT } from "#app/items/held-item";
|
||||
import { PreserveBerryModifier } from "#app/modifier/modifier";
|
||||
import { BooleanHolder } from "#app/utils/common";
|
||||
import { BerryType } from "#enums/berry-type";
|
||||
import { HeldItems } from "#enums/held-items";
|
||||
import { HeldItemId } from "#enums/held-item-id";
|
||||
|
||||
interface BerryTypeToHeldItemMap {
|
||||
[key: number]: HeldItems;
|
||||
[key: number]: HeldItemId;
|
||||
}
|
||||
|
||||
export const berryTypeToHeldItem: BerryTypeToHeldItemMap = {
|
||||
[BerryType.SITRUS]: HeldItems.SITRUS_BERRY,
|
||||
[BerryType.LUM]: HeldItems.LUM_BERRY,
|
||||
[BerryType.ENIGMA]: HeldItems.ENIGMA_BERRY,
|
||||
[BerryType.LIECHI]: HeldItems.LIECHI_BERRY,
|
||||
[BerryType.GANLON]: HeldItems.GANLON_BERRY,
|
||||
[BerryType.PETAYA]: HeldItems.PETAYA_BERRY,
|
||||
[BerryType.APICOT]: HeldItems.APICOT_BERRY,
|
||||
[BerryType.SALAC]: HeldItems.SALAC_BERRY,
|
||||
[BerryType.LANSAT]: HeldItems.LANSAT_BERRY,
|
||||
[BerryType.STARF]: HeldItems.STARF_BERRY,
|
||||
[BerryType.LEPPA]: HeldItems.LEPPA_BERRY,
|
||||
[BerryType.SITRUS]: HeldItemId.SITRUS_BERRY,
|
||||
[BerryType.LUM]: HeldItemId.LUM_BERRY,
|
||||
[BerryType.ENIGMA]: HeldItemId.ENIGMA_BERRY,
|
||||
[BerryType.LIECHI]: HeldItemId.LIECHI_BERRY,
|
||||
[BerryType.GANLON]: HeldItemId.GANLON_BERRY,
|
||||
[BerryType.PETAYA]: HeldItemId.PETAYA_BERRY,
|
||||
[BerryType.APICOT]: HeldItemId.APICOT_BERRY,
|
||||
[BerryType.SALAC]: HeldItemId.SALAC_BERRY,
|
||||
[BerryType.LANSAT]: HeldItemId.LANSAT_BERRY,
|
||||
[BerryType.STARF]: HeldItemId.STARF_BERRY,
|
||||
[BerryType.LEPPA]: HeldItemId.LEPPA_BERRY,
|
||||
};
|
||||
|
||||
export interface BERRY_PARAMS {
|
||||
|
@ -1,6 +1,6 @@
|
||||
import type Pokemon from "#app/field/pokemon";
|
||||
import type { NumberHolder } from "#app/utils/common";
|
||||
import { HeldItems } from "#enums/held-items";
|
||||
import { HeldItemId } from "#enums/held-item-id";
|
||||
import i18next from "i18next";
|
||||
import { HeldItem, ITEM_EFFECT } from "../held-item";
|
||||
|
||||
@ -15,25 +15,25 @@ export class ExpBoosterHeldItem extends HeldItem {
|
||||
public effects: ITEM_EFFECT[] = [ITEM_EFFECT.EXP_BOOSTER];
|
||||
private boostMultiplier: number;
|
||||
|
||||
constructor(type: HeldItems, maxStackCount = 1, boostPercent: number) {
|
||||
constructor(type: HeldItemId, maxStackCount = 1, boostPercent: number) {
|
||||
super(type, maxStackCount);
|
||||
this.boostMultiplier = boostPercent * 0.01;
|
||||
}
|
||||
|
||||
get name(): string {
|
||||
return this.type === HeldItems.LUCKY_EGG
|
||||
return this.type === HeldItemId.LUCKY_EGG
|
||||
? i18next.t("modifierType:ModifierType.LUCKY_EGG.name")
|
||||
: i18next.t("modifierType:ModifierType.GOLDEN_EGG.name");
|
||||
}
|
||||
|
||||
get description(): string {
|
||||
return this.type === HeldItems.LUCKY_EGG
|
||||
return this.type === HeldItemId.LUCKY_EGG
|
||||
? i18next.t("modifierType:ModifierType.LUCKY_EGG.description")
|
||||
: i18next.t("modifierType:ModifierType.GOLDEN_EGG.description");
|
||||
}
|
||||
|
||||
get icon(): string {
|
||||
return this.type === HeldItems.LUCKY_EGG ? "lucky_egg" : "golden_egg";
|
||||
return this.type === HeldItemId.LUCKY_EGG ? "lucky_egg" : "golden_egg";
|
||||
}
|
||||
|
||||
// TODO: What do we do with this? Need to look up all the shouldApply
|
||||
|
@ -129,7 +129,7 @@ import { getStatKey, Stat, TEMP_BATTLE_STATS } from "#enums/stat";
|
||||
import { StatusEffect } from "#enums/status-effect";
|
||||
import i18next from "i18next";
|
||||
import { timedEventManager } from "#app/global-event-manager";
|
||||
import { HeldItems } from "#enums/held-items";
|
||||
import { HeldItemId } from "#enums/held-item-id";
|
||||
import { allHeldItems } from "#app/items/all-held-items";
|
||||
import { TYPE_BOOST_ITEM_BOOST_PERCENT } from "#app/constants";
|
||||
import { attackTypeToHeldItem } from "#app/items/held-items/attack-type-booster";
|
||||
@ -429,8 +429,8 @@ export class PokemonHeldItemModifierType extends PokemonModifierType {
|
||||
}
|
||||
|
||||
export class PokemonHeldItemReward extends PokemonModifierType {
|
||||
public itemId: HeldItems;
|
||||
constructor(itemId: HeldItems, newModifierFunc: NewModifierFunc, group?: string, soundName?: string) {
|
||||
public itemId: HeldItemId;
|
||||
constructor(itemId: HeldItemId, newModifierFunc: NewModifierFunc, group?: string, soundName?: string) {
|
||||
super(
|
||||
"",
|
||||
"",
|
||||
@ -2153,7 +2153,7 @@ export const modifierTypes = {
|
||||
|
||||
WHITE_HERB_REWARD: () =>
|
||||
new PokemonHeldItemReward(
|
||||
HeldItems.WHITE_HERB,
|
||||
HeldItemId.WHITE_HERB,
|
||||
(type, args) => new ResetNegativeStatStageModifier(type, (args[0] as Pokemon).id),
|
||||
),
|
||||
|
||||
@ -2316,12 +2316,12 @@ export const modifierTypes = {
|
||||
|
||||
LUCKY_EGG_REWARD: () =>
|
||||
new PokemonHeldItemReward(
|
||||
HeldItems.LUCKY_EGG,
|
||||
HeldItemId.LUCKY_EGG,
|
||||
(type, args) => new ExpBoosterModifier(type, (args[0] as Pokemon).id),
|
||||
),
|
||||
GOLDEN_EGG_REWARD: () =>
|
||||
new PokemonHeldItemReward(
|
||||
HeldItems.GOLDEN_EGG,
|
||||
HeldItemId.GOLDEN_EGG,
|
||||
(type, args) => new ExpBoosterModifier(type, (args[0] as Pokemon).id),
|
||||
),
|
||||
|
||||
@ -2459,10 +2459,16 @@ export const modifierTypes = {
|
||||
),
|
||||
|
||||
LEFTOVERS_REWARD: () =>
|
||||
new PokemonHeldItemReward(HeldItems.LEFTOVERS, (type, args) => new TurnHealModifier(type, (args[0] as Pokemon).id)),
|
||||
new PokemonHeldItemReward(
|
||||
HeldItemId.LEFTOVERS,
|
||||
(type, args) => new TurnHealModifier(type, (args[0] as Pokemon).id),
|
||||
),
|
||||
|
||||
SHELL_BELL_REWARD: () =>
|
||||
new PokemonHeldItemReward(HeldItems.SHELL_BELL, (type, args) => new HitHealModifier(type, (args[0] as Pokemon).id)),
|
||||
new PokemonHeldItemReward(
|
||||
HeldItemId.SHELL_BELL,
|
||||
(type, args) => new HitHealModifier(type, (args[0] as Pokemon).id),
|
||||
),
|
||||
|
||||
LEFTOVERS: () =>
|
||||
new PokemonHeldItemModifierType(
|
||||
@ -3778,14 +3784,14 @@ export function getEnemyModifierTypesForWave(
|
||||
}
|
||||
|
||||
// TODO: Add proper documentation to this function (once it fully works...)
|
||||
// TODO: Convert trainer pool to HeldItems too
|
||||
// TODO: Convert trainer pool to HeldItemId too
|
||||
export function getEnemyHeldItemsForWave(
|
||||
waveIndex: number,
|
||||
count: number,
|
||||
party: EnemyPokemon[],
|
||||
poolType: ModifierPoolType.WILD | ModifierPoolType.TRAINER,
|
||||
upgradeChance = 0,
|
||||
): HeldItems[] {
|
||||
): HeldItemId[] {
|
||||
const ret = new Array(count).fill(0).map(() => {
|
||||
const reward = getNewModifierTypeOption(
|
||||
party,
|
||||
@ -3797,7 +3803,7 @@ export function getEnemyHeldItemsForWave(
|
||||
});
|
||||
if (!(waveIndex % 1000)) {
|
||||
// TODO: Change this line with the actual held item when implemented
|
||||
ret.push(HeldItems.MINI_BLACK_HOLE);
|
||||
ret.push(HeldItemId.MINI_BLACK_HOLE);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user