mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-06-30 13:33:01 +02:00
Added Baton and Golden Punch
This commit is contained in:
parent
0b32cfb622
commit
bac6aa1d3d
@ -17,9 +17,11 @@ import {
|
|||||||
BaseStatBoosterHeldItem,
|
BaseStatBoosterHeldItem,
|
||||||
permanentStatToHeldItem,
|
permanentStatToHeldItem,
|
||||||
} from "./held-items/base-stat-booster";
|
} from "./held-items/base-stat-booster";
|
||||||
|
import { type BATON_PARAMS, BatonHeldItem } from "./held-items/baton";
|
||||||
import { type BERRY_PARAMS, BerryHeldItem, berryTypeToHeldItem } from "./held-items/berry";
|
import { type BERRY_PARAMS, BerryHeldItem, berryTypeToHeldItem } from "./held-items/berry";
|
||||||
import { type BYPASS_SPEED_CHANCE_PARAMS, BypassSpeedChanceHeldItem } from "./held-items/bypass-speed-chance";
|
import { type BYPASS_SPEED_CHANCE_PARAMS, BypassSpeedChanceHeldItem } from "./held-items/bypass-speed-chance";
|
||||||
import { type CRIT_BOOST_PARAMS, CritBoostHeldItem, SpeciesCritBoostHeldItem } from "./held-items/crit-booster";
|
import { type CRIT_BOOST_PARAMS, CritBoostHeldItem, SpeciesCritBoostHeldItem } from "./held-items/crit-booster";
|
||||||
|
import { type DAMAGE_MONEY_REWARD_PARAMS, DamageMoneyRewardHeldItem } from "./held-items/damage-money-reward";
|
||||||
import { type EXP_BOOST_PARAMS, ExpBoosterHeldItem } from "./held-items/exp-booster";
|
import { type EXP_BOOST_PARAMS, ExpBoosterHeldItem } from "./held-items/exp-booster";
|
||||||
import { type FIELD_EFFECT_PARAMS, FieldEffectHeldItem } from "./held-items/field-effect";
|
import { type FIELD_EFFECT_PARAMS, FieldEffectHeldItem } from "./held-items/field-effect";
|
||||||
import { type FLINCH_CHANCE_PARAMS, FlinchChanceHeldItem } from "./held-items/flinch-chance";
|
import { type FLINCH_CHANCE_PARAMS, FlinchChanceHeldItem } from "./held-items/flinch-chance";
|
||||||
@ -119,6 +121,8 @@ export function initHeldItems() {
|
|||||||
allHeldItems[HeldItemId.SOUL_DEW] = new NatureWeightBoosterHeldItem(HeldItemId.SOUL_DEW, 10);
|
allHeldItems[HeldItemId.SOUL_DEW] = new NatureWeightBoosterHeldItem(HeldItemId.SOUL_DEW, 10);
|
||||||
allHeldItems[HeldItemId.WIDE_LENS] = new AccuracyBoosterHeldItem(HeldItemId.WIDE_LENS, 3, 5);
|
allHeldItems[HeldItemId.WIDE_LENS] = new AccuracyBoosterHeldItem(HeldItemId.WIDE_LENS, 3, 5);
|
||||||
allHeldItems[HeldItemId.MULTI_LENS] = new MultiHitHeldItem(HeldItemId.MULTI_LENS, 2);
|
allHeldItems[HeldItemId.MULTI_LENS] = new MultiHitHeldItem(HeldItemId.MULTI_LENS, 2);
|
||||||
|
allHeldItems[HeldItemId.GOLDEN_PUNCH] = new DamageMoneyRewardHeldItem(HeldItemId.GOLDEN_PUNCH, 5);
|
||||||
|
allHeldItems[HeldItemId.BATON] = new BatonHeldItem(HeldItemId.BATON, 1);
|
||||||
|
|
||||||
allHeldItems[HeldItemId.FLAME_ORB] = new TurnEndStatusHeldItem(HeldItemId.FLAME_ORB, 1, StatusEffect.BURN);
|
allHeldItems[HeldItemId.FLAME_ORB] = new TurnEndStatusHeldItem(HeldItemId.FLAME_ORB, 1, StatusEffect.BURN);
|
||||||
allHeldItems[HeldItemId.TOXIC_ORB] = new TurnEndStatusHeldItem(HeldItemId.TOXIC_ORB, 1, StatusEffect.TOXIC);
|
allHeldItems[HeldItemId.TOXIC_ORB] = new TurnEndStatusHeldItem(HeldItemId.TOXIC_ORB, 1, StatusEffect.TOXIC);
|
||||||
@ -150,6 +154,8 @@ type APPLY_HELD_ITEMS_PARAMS = {
|
|||||||
[ITEM_EFFECT.NATURE_WEIGHT_BOOSTER]: NATURE_WEIGHT_BOOST_PARAMS;
|
[ITEM_EFFECT.NATURE_WEIGHT_BOOSTER]: NATURE_WEIGHT_BOOST_PARAMS;
|
||||||
[ITEM_EFFECT.ACCURACY_BOOSTER]: ACCURACY_BOOST_PARAMS;
|
[ITEM_EFFECT.ACCURACY_BOOSTER]: ACCURACY_BOOST_PARAMS;
|
||||||
[ITEM_EFFECT.MULTI_HIT]: MULTI_HIT_PARAMS;
|
[ITEM_EFFECT.MULTI_HIT]: MULTI_HIT_PARAMS;
|
||||||
|
[ITEM_EFFECT.DAMAGE_MONEY_REWARD]: DAMAGE_MONEY_REWARD_PARAMS;
|
||||||
|
[ITEM_EFFECT.BATON]: BATON_PARAMS;
|
||||||
};
|
};
|
||||||
|
|
||||||
export function applyHeldItems<T extends ITEM_EFFECT>(effect: T, params: APPLY_HELD_ITEMS_PARAMS[T]) {
|
export function applyHeldItems<T extends ITEM_EFFECT>(effect: T, params: APPLY_HELD_ITEMS_PARAMS[T]) {
|
||||||
|
@ -25,6 +25,8 @@ export const ITEM_EFFECT = {
|
|||||||
NATURE_WEIGHT_BOOSTER: 17,
|
NATURE_WEIGHT_BOOSTER: 17,
|
||||||
ACCURACY_BOOSTER: 18,
|
ACCURACY_BOOSTER: 18,
|
||||||
MULTI_HIT: 19,
|
MULTI_HIT: 19,
|
||||||
|
DAMAGE_MONEY_REWARD: 20,
|
||||||
|
BATON: 21,
|
||||||
} as const;
|
} as const;
|
||||||
|
|
||||||
export type ITEM_EFFECT = (typeof ITEM_EFFECT)[keyof typeof ITEM_EFFECT];
|
export type ITEM_EFFECT = (typeof ITEM_EFFECT)[keyof typeof ITEM_EFFECT];
|
||||||
|
22
src/items/held-items/baton.ts
Normal file
22
src/items/held-items/baton.ts
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
import type Pokemon from "#app/field/pokemon";
|
||||||
|
import type { NumberHolder } from "#app/utils/common";
|
||||||
|
import { HeldItem, ITEM_EFFECT } from "../held-item";
|
||||||
|
|
||||||
|
export interface BATON_PARAMS {
|
||||||
|
/** The pokemon with the item */
|
||||||
|
pokemon: Pokemon;
|
||||||
|
/** The amount of exp to gain */
|
||||||
|
expAmount: NumberHolder;
|
||||||
|
}
|
||||||
|
|
||||||
|
export class BatonHeldItem extends HeldItem {
|
||||||
|
public effects: ITEM_EFFECT[] = [ITEM_EFFECT.BATON];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Applies {@linkcode SwitchEffectTransferModifier}
|
||||||
|
* @returns always `true`
|
||||||
|
*/
|
||||||
|
apply(): boolean {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
33
src/items/held-items/damage-money-reward.ts
Normal file
33
src/items/held-items/damage-money-reward.ts
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
import type Pokemon from "#app/field/pokemon";
|
||||||
|
import { globalScene } from "#app/global-scene";
|
||||||
|
import { MoneyMultiplierModifier } from "#app/modifier/modifier";
|
||||||
|
import { NumberHolder } from "#app/utils/common";
|
||||||
|
import { HeldItem, ITEM_EFFECT } from "../held-item";
|
||||||
|
|
||||||
|
export interface DAMAGE_MONEY_REWARD_PARAMS {
|
||||||
|
/** The pokemon with the item */
|
||||||
|
pokemon: Pokemon;
|
||||||
|
/** The amount of exp to gain */
|
||||||
|
damage: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
export class DamageMoneyRewardHeldItem extends HeldItem {
|
||||||
|
public effects: ITEM_EFFECT[] = [ITEM_EFFECT.DAMAGE_MONEY_REWARD];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Applies {@linkcode DamageMoneyRewardModifier}
|
||||||
|
* @param pokemon The {@linkcode Pokemon} attacking
|
||||||
|
* @param multiplier {@linkcode NumberHolder} holding the multiplier value
|
||||||
|
* @returns always `true`
|
||||||
|
*/
|
||||||
|
apply(params: DAMAGE_MONEY_REWARD_PARAMS): boolean {
|
||||||
|
const pokemon = params.pokemon;
|
||||||
|
const damage = params.damage;
|
||||||
|
const stackCount = pokemon.heldItemManager.getStack(this.type);
|
||||||
|
const moneyAmount = new NumberHolder(Math.floor(damage * (0.5 * stackCount)));
|
||||||
|
globalScene.applyModifiers(MoneyMultiplierModifier, true, moneyAmount);
|
||||||
|
globalScene.addMoney(moneyAmount.value);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
@ -1812,34 +1812,6 @@ export class MoneyMultiplierModifier extends PersistentModifier {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export class DamageMoneyRewardModifier extends PokemonHeldItemModifier {
|
|
||||||
matchType(modifier: Modifier): boolean {
|
|
||||||
return modifier instanceof DamageMoneyRewardModifier;
|
|
||||||
}
|
|
||||||
|
|
||||||
clone(): DamageMoneyRewardModifier {
|
|
||||||
return new DamageMoneyRewardModifier(this.type, this.pokemonId, this.stackCount);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Applies {@linkcode DamageMoneyRewardModifier}
|
|
||||||
* @param pokemon The {@linkcode Pokemon} attacking
|
|
||||||
* @param multiplier {@linkcode NumberHolder} holding the multiplier value
|
|
||||||
* @returns always `true`
|
|
||||||
*/
|
|
||||||
override apply(_pokemon: Pokemon, multiplier: NumberHolder): boolean {
|
|
||||||
const moneyAmount = new NumberHolder(Math.floor(multiplier.value * (0.5 * this.getStackCount())));
|
|
||||||
globalScene.applyModifiers(MoneyMultiplierModifier, true, moneyAmount);
|
|
||||||
globalScene.addMoney(moneyAmount.value);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
getMaxHeldItemCount(_pokemon: Pokemon): number {
|
|
||||||
return 5;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export class MoneyInterestModifier extends PersistentModifier {
|
export class MoneyInterestModifier extends PersistentModifier {
|
||||||
match(modifier: Modifier): boolean {
|
match(modifier: Modifier): boolean {
|
||||||
return modifier instanceof MoneyInterestModifier;
|
return modifier instanceof MoneyInterestModifier;
|
||||||
@ -2035,28 +2007,6 @@ export class BoostBugSpawnModifier extends PersistentModifier {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export class SwitchEffectTransferModifier extends PokemonHeldItemModifier {
|
|
||||||
matchType(modifier: Modifier): boolean {
|
|
||||||
return modifier instanceof SwitchEffectTransferModifier;
|
|
||||||
}
|
|
||||||
|
|
||||||
clone(): SwitchEffectTransferModifier {
|
|
||||||
return new SwitchEffectTransferModifier(this.type, this.pokemonId, this.stackCount);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Applies {@linkcode SwitchEffectTransferModifier}
|
|
||||||
* @returns always `true`
|
|
||||||
*/
|
|
||||||
override apply(): boolean {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
getMaxHeldItemCount(_pokemon: Pokemon): number {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Abstract class for held items that steal other Pokemon's items.
|
* Abstract class for held items that steal other Pokemon's items.
|
||||||
* @see {@linkcode TurnHeldItemTransferModifier}
|
* @see {@linkcode TurnHeldItemTransferModifier}
|
||||||
|
@ -54,7 +54,6 @@ import { HitResult, MoveResult } from "#app/field/pokemon";
|
|||||||
import { getPokemonNameWithAffix } from "#app/messages";
|
import { getPokemonNameWithAffix } from "#app/messages";
|
||||||
import {
|
import {
|
||||||
ContactHeldItemTransferChanceModifier,
|
ContactHeldItemTransferChanceModifier,
|
||||||
DamageMoneyRewardModifier,
|
|
||||||
EnemyAttackStatusEffectChanceModifier,
|
EnemyAttackStatusEffectChanceModifier,
|
||||||
EnemyEndureChanceModifier,
|
EnemyEndureChanceModifier,
|
||||||
} from "#app/modifier/modifier";
|
} from "#app/modifier/modifier";
|
||||||
@ -887,7 +886,7 @@ export class MoveEffectPhase extends PokemonPhase {
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (user.isPlayer() && !target.isPlayer()) {
|
if (user.isPlayer() && !target.isPlayer()) {
|
||||||
globalScene.applyModifiers(DamageMoneyRewardModifier, true, user, new NumberHolder(damage));
|
applyHeldItems(ITEM_EFFECT.DAMAGE_MONEY_REWARD, { pokemon: user, damage: damage });
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
Loading…
Reference in New Issue
Block a user