mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-07-20 15:22:19 +02:00
Refactors damageAndUpdate to replace optional parameters with object parameter
This commit is contained in:
parent
b5bf9766aa
commit
855d795f2d
@ -1036,7 +1036,7 @@ export class PostDefendContactDamageAbAttr extends PostDefendAbAttr {
|
||||
override applyPostDefend(pokemon: Pokemon, _passive: boolean, simulated: boolean, attacker: Pokemon, move: Move, _hitResult: HitResult, _args: any[]): boolean {
|
||||
if (!simulated && move.checkFlag(MoveFlags.MAKES_CONTACT, attacker, pokemon)
|
||||
&& !attacker.hasAbilityWithAttr(BlockNonDirectDamageAbAttr) && !move.hitsSubstitute(attacker, pokemon)) {
|
||||
attacker.damageAndUpdate(Utils.toDmgValue(attacker.getMaxHp() * (1 / this.damageRatio)), HitResult.INDIRECT);
|
||||
attacker.damageAndUpdate(Utils.toDmgValue(attacker.getMaxHp() * (1 / this.damageRatio)), { result: HitResult.INDIRECT });
|
||||
attacker.turnData.damageTaken += Utils.toDmgValue(attacker.getMaxHp() * (1 / this.damageRatio));
|
||||
return true;
|
||||
}
|
||||
@ -3738,7 +3738,7 @@ export class PostWeatherLapseDamageAbAttr extends PostWeatherLapseAbAttr {
|
||||
if (!simulated) {
|
||||
const abilityName = (!passive ? pokemon.getAbility() : pokemon.getPassiveAbility()).name;
|
||||
globalScene.queueMessage(i18next.t("abilityTriggers:postWeatherLapseDamage", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), abilityName }));
|
||||
pokemon.damageAndUpdate(Utils.toDmgValue(pokemon.getMaxHp() / (16 / this.damageFactor)), HitResult.INDIRECT);
|
||||
pokemon.damageAndUpdate(Utils.toDmgValue(pokemon.getMaxHp() / (16 / this.damageFactor)), { result: HitResult.INDIRECT });
|
||||
}
|
||||
|
||||
return true;
|
||||
@ -4050,7 +4050,7 @@ export class PostTurnHurtIfSleepingAbAttr extends PostTurnAbAttr {
|
||||
for (const opp of pokemon.getOpponents()) {
|
||||
if ((opp.status?.effect === StatusEffect.SLEEP || opp.hasAbility(Abilities.COMATOSE)) && !opp.hasAbilityWithAttr(BlockNonDirectDamageAbAttr) && !opp.switchOutStatus) {
|
||||
if (!simulated) {
|
||||
opp.damageAndUpdate(Utils.toDmgValue(opp.getMaxHp() / 8), HitResult.INDIRECT);
|
||||
opp.damageAndUpdate(Utils.toDmgValue(opp.getMaxHp() / 8), { result: HitResult.INDIRECT });
|
||||
globalScene.queueMessage(i18next.t("abilityTriggers:badDreams", { pokemonName: getPokemonNameWithAffix(opp) }));
|
||||
}
|
||||
hadEffect = true;
|
||||
@ -4532,7 +4532,7 @@ export class PostFaintContactDamageAbAttr extends PostFaintAbAttr {
|
||||
return false;
|
||||
}
|
||||
if (!simulated) {
|
||||
attacker.damageAndUpdate(Utils.toDmgValue(attacker.getMaxHp() * (1 / this.damageRatio)), HitResult.INDIRECT);
|
||||
attacker.damageAndUpdate(Utils.toDmgValue(attacker.getMaxHp() * (1 / this.damageRatio)), { result: HitResult.INDIRECT });
|
||||
attacker.turnData.damageTaken += Utils.toDmgValue(attacker.getMaxHp() * (1 / this.damageRatio));
|
||||
}
|
||||
return true;
|
||||
@ -4557,7 +4557,7 @@ export class PostFaintHPDamageAbAttr extends PostFaintAbAttr {
|
||||
applyPostFaint(pokemon: Pokemon, passive: boolean, simulated: boolean, attacker?: Pokemon, move?: Move, hitResult?: HitResult, ...args: any[]): boolean {
|
||||
if (move !== undefined && attacker !== undefined && !simulated) { //If the mon didn't die to indirect damage
|
||||
const damage = pokemon.turnData.attacksReceived[0].damage;
|
||||
attacker.damageAndUpdate((damage), HitResult.INDIRECT);
|
||||
attacker.damageAndUpdate((damage), { result: HitResult.INDIRECT });
|
||||
attacker.turnData.damageTaken += damage;
|
||||
}
|
||||
return true;
|
||||
@ -4956,7 +4956,7 @@ export class FormBlockDamageAbAttr extends ReceivedMoveDamageMultiplierAbAttr {
|
||||
(args[0] as Utils.NumberHolder).value = this.multiplier;
|
||||
pokemon.removeTag(this.tagType);
|
||||
if (this.recoilDamageFunc) {
|
||||
pokemon.damageAndUpdate(this.recoilDamageFunc(pokemon), HitResult.INDIRECT, false, true, true);
|
||||
pokemon.damageAndUpdate(this.recoilDamageFunc(pokemon), { result: HitResult.INDIRECT, ignoreSegments: true, ignoreFaintPhase: true });
|
||||
}
|
||||
}
|
||||
return true;
|
||||
|
@ -698,7 +698,7 @@ class SpikesTag extends ArenaTrapTag {
|
||||
const damage = toDmgValue(pokemon.getMaxHp() * damageHpRatio);
|
||||
|
||||
globalScene.queueMessage(i18next.t("arenaTag:spikesActivateTrap", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) }));
|
||||
pokemon.damageAndUpdate(damage, HitResult.INDIRECT);
|
||||
pokemon.damageAndUpdate(damage, { result: HitResult.INDIRECT });
|
||||
if (pokemon.turnData) {
|
||||
pokemon.turnData.damageTaken += damage;
|
||||
}
|
||||
@ -864,7 +864,7 @@ class StealthRockTag extends ArenaTrapTag {
|
||||
}
|
||||
const damage = toDmgValue(pokemon.getMaxHp() * damageHpRatio);
|
||||
globalScene.queueMessage(i18next.t("arenaTag:stealthRockActivateTrap", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) }));
|
||||
pokemon.damageAndUpdate(damage, HitResult.INDIRECT);
|
||||
pokemon.damageAndUpdate(damage, { result: HitResult.INDIRECT });
|
||||
if (pokemon.turnData) {
|
||||
pokemon.turnData.damageTaken += damage;
|
||||
}
|
||||
@ -1148,7 +1148,7 @@ class FireGrassPledgeTag extends ArenaTag {
|
||||
globalScene.queueMessage(i18next.t("arenaTag:fireGrassPledgeLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) }));
|
||||
// TODO: Replace this with a proper animation
|
||||
globalScene.unshiftPhase(new CommonAnimPhase(pokemon.getBattlerIndex(), pokemon.getBattlerIndex(), CommonAnim.MAGMA_STORM));
|
||||
pokemon.damageAndUpdate(toDmgValue(pokemon.getMaxHp() / 8), HitResult.INDIRECT);
|
||||
pokemon.damageAndUpdate(toDmgValue(pokemon.getMaxHp() / 8), { result: HitResult.INDIRECT });
|
||||
});
|
||||
|
||||
return super.lapse(arena);
|
||||
|
@ -666,7 +666,7 @@ export class ConfusedTag extends BattlerTag {
|
||||
const def = pokemon.getEffectiveStat(Stat.DEF);
|
||||
const damage = toDmgValue(((((2 * pokemon.level / 5 + 2) * 40 * atk / def) / 50) + 2) * (pokemon.randSeedIntRange(85, 100) / 100));
|
||||
globalScene.queueMessage(i18next.t("battlerTags:confusedLapseHurtItself"));
|
||||
pokemon.damageAndUpdate(damage, HitResult.CONFUSION);
|
||||
pokemon.damageAndUpdate(damage, { result: HitResult.CONFUSION });
|
||||
pokemon.battleData.hitCount++;
|
||||
(globalScene.getCurrentPhase() as MovePhase).cancel();
|
||||
}
|
||||
@ -723,7 +723,7 @@ export class DestinyBondTag extends BattlerTag {
|
||||
pokemonNameWithAffix2: getPokemonNameWithAffix(pokemon)
|
||||
})
|
||||
);
|
||||
pokemon.damageAndUpdate(pokemon.hp, HitResult.INDIRECT_KO, false, true);
|
||||
pokemon.damageAndUpdate(pokemon.hp, { result: HitResult.INDIRECT_KO, ignoreSegments: true });
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -841,7 +841,7 @@ export class SeedTag extends BattlerTag {
|
||||
if (!cancelled.value) {
|
||||
globalScene.unshiftPhase(new CommonAnimPhase(source.getBattlerIndex(), pokemon.getBattlerIndex(), CommonAnim.LEECH_SEED));
|
||||
|
||||
const damage = pokemon.damageAndUpdate(toDmgValue(pokemon.getMaxHp() / 8), HitResult.INDIRECT);
|
||||
const damage = pokemon.damageAndUpdate(toDmgValue(pokemon.getMaxHp() / 8), { result: HitResult.INDIRECT });
|
||||
const reverseDrain = pokemon.hasAbilityWithAttr(ReverseDrainAbAttr, false);
|
||||
globalScene.unshiftPhase(new PokemonHealPhase(source.getBattlerIndex(),
|
||||
!reverseDrain ? damage : damage * -1,
|
||||
@ -898,7 +898,7 @@ export class PowderTag extends BattlerTag {
|
||||
const cancelDamage = new BooleanHolder(false);
|
||||
applyAbAttrs(BlockNonDirectDamageAbAttr, pokemon, cancelDamage);
|
||||
if (!cancelDamage.value) {
|
||||
pokemon.damageAndUpdate(Math.floor(pokemon.getMaxHp() / 4), HitResult.INDIRECT);
|
||||
pokemon.damageAndUpdate(Math.floor(pokemon.getMaxHp() / 4), { result: HitResult.INDIRECT });
|
||||
}
|
||||
|
||||
// "When the flame touched the powder\non the Pokémon, it exploded!"
|
||||
@ -940,7 +940,7 @@ export class NightmareTag extends BattlerTag {
|
||||
applyAbAttrs(BlockNonDirectDamageAbAttr, pokemon, cancelled);
|
||||
|
||||
if (!cancelled.value) {
|
||||
pokemon.damageAndUpdate(toDmgValue(pokemon.getMaxHp() / 4), HitResult.INDIRECT);
|
||||
pokemon.damageAndUpdate(toDmgValue(pokemon.getMaxHp() / 4), { result: HitResult.INDIRECT });
|
||||
}
|
||||
}
|
||||
|
||||
@ -1268,7 +1268,7 @@ export abstract class DamagingTrapTag extends TrappedTag {
|
||||
applyAbAttrs(BlockNonDirectDamageAbAttr, pokemon, cancelled);
|
||||
|
||||
if (!cancelled.value) {
|
||||
pokemon.damageAndUpdate(toDmgValue(pokemon.getMaxHp() / 8), HitResult.INDIRECT);
|
||||
pokemon.damageAndUpdate(toDmgValue(pokemon.getMaxHp() / 8), { result: HitResult.INDIRECT });
|
||||
}
|
||||
}
|
||||
|
||||
@ -1459,7 +1459,7 @@ export class ContactDamageProtectedTag extends ProtectedTag {
|
||||
if (effectPhase instanceof MoveEffectPhase && effectPhase.move.getMove().hasFlag(MoveFlags.MAKES_CONTACT)) {
|
||||
const attacker = effectPhase.getPokemon();
|
||||
if (!attacker.hasAbilityWithAttr(BlockNonDirectDamageAbAttr)) {
|
||||
attacker.damageAndUpdate(toDmgValue(attacker.getMaxHp() * (1 / this.damageRatio)), HitResult.INDIRECT);
|
||||
attacker.damageAndUpdate(toDmgValue(attacker.getMaxHp() * (1 / this.damageRatio)), { result: HitResult.INDIRECT });
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1613,7 +1613,7 @@ export class PerishSongTag extends BattlerTag {
|
||||
})
|
||||
);
|
||||
} else {
|
||||
pokemon.damageAndUpdate(pokemon.hp, HitResult.INDIRECT_KO, false, true);
|
||||
pokemon.damageAndUpdate(pokemon.hp, { result: HitResult.INDIRECT_KO, ignoreSegments: true });
|
||||
}
|
||||
|
||||
return ret;
|
||||
@ -1981,7 +1981,7 @@ export class SaltCuredTag extends BattlerTag {
|
||||
|
||||
if (!cancelled.value) {
|
||||
const pokemonSteelOrWater = pokemon.isOfType(Type.STEEL) || pokemon.isOfType(Type.WATER);
|
||||
pokemon.damageAndUpdate(toDmgValue(pokemonSteelOrWater ? pokemon.getMaxHp() / 4 : pokemon.getMaxHp() / 8), HitResult.INDIRECT);
|
||||
pokemon.damageAndUpdate(toDmgValue(pokemonSteelOrWater ? pokemon.getMaxHp() / 4 : pokemon.getMaxHp() / 8), { result: HitResult.INDIRECT });
|
||||
|
||||
globalScene.queueMessage(
|
||||
i18next.t("battlerTags:saltCuredLapse", {
|
||||
@ -2027,7 +2027,7 @@ export class CursedTag extends BattlerTag {
|
||||
applyAbAttrs(BlockNonDirectDamageAbAttr, pokemon, cancelled);
|
||||
|
||||
if (!cancelled.value) {
|
||||
pokemon.damageAndUpdate(toDmgValue(pokemon.getMaxHp() / 4), HitResult.INDIRECT);
|
||||
pokemon.damageAndUpdate(toDmgValue(pokemon.getMaxHp() / 4), { result: HitResult.INDIRECT });
|
||||
globalScene.queueMessage(i18next.t("battlerTags:cursedLapse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) }));
|
||||
}
|
||||
}
|
||||
@ -2327,7 +2327,7 @@ export class GulpMissileTag extends BattlerTag {
|
||||
applyAbAttrs(BlockNonDirectDamageAbAttr, attacker, cancelled);
|
||||
|
||||
if (!cancelled.value) {
|
||||
attacker.damageAndUpdate(Math.max(1, Math.floor(attacker.getMaxHp() / 4)), HitResult.INDIRECT);
|
||||
attacker.damageAndUpdate(Math.max(1, Math.floor(attacker.getMaxHp() / 4)), { result: HitResult.INDIRECT });
|
||||
}
|
||||
|
||||
if (this.tagType === BattlerTagType.GULP_MISSILE_ARROKUDA) {
|
||||
|
@ -1731,7 +1731,7 @@ export class RecoilAttr extends MoveEffectAttr {
|
||||
return false;
|
||||
}
|
||||
|
||||
user.damageAndUpdate(recoilDamage, HitResult.INDIRECT, false, true);
|
||||
user.damageAndUpdate(recoilDamage, { result: HitResult.INDIRECT, ignoreSegments: true });
|
||||
globalScene.queueMessage(i18next.t("moveTriggers:hitWithRecoil", { pokemonName: getPokemonNameWithAffix(user) }));
|
||||
user.turnData.damageTaken += recoilDamage;
|
||||
|
||||
@ -1763,7 +1763,7 @@ export class SacrificialAttr extends MoveEffectAttr {
|
||||
* @returns true if the function succeeds
|
||||
**/
|
||||
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
|
||||
user.damageAndUpdate(user.hp, HitResult.INDIRECT, false, true);
|
||||
user.damageAndUpdate(user.hp, { result: HitResult.INDIRECT, ignoreSegments: true });
|
||||
user.turnData.damageTaken += user.hp;
|
||||
|
||||
return true;
|
||||
@ -1801,7 +1801,7 @@ export class SacrificialAttrOnHit extends MoveEffectAttr {
|
||||
return false;
|
||||
}
|
||||
|
||||
user.damageAndUpdate(user.hp, HitResult.INDIRECT, false, true);
|
||||
user.damageAndUpdate(user.hp, { result: HitResult.INDIRECT, ignoreSegments: true });
|
||||
user.turnData.damageTaken += user.hp;
|
||||
|
||||
return true;
|
||||
@ -1843,7 +1843,7 @@ export class HalfSacrificialAttr extends MoveEffectAttr {
|
||||
// Check to see if the Pokemon has an ability that blocks non-direct damage
|
||||
applyAbAttrs(BlockNonDirectDamageAbAttr, user, cancelled);
|
||||
if (!cancelled.value) {
|
||||
user.damageAndUpdate(Utils.toDmgValue(user.getMaxHp() / 2), HitResult.INDIRECT, false, true);
|
||||
user.damageAndUpdate(Utils.toDmgValue(user.getMaxHp() / 2), { result: HitResult.INDIRECT, ignoreSegments: true });
|
||||
globalScene.queueMessage(i18next.t("moveTriggers:cutHpPowerUpMove", { pokemonName: getPokemonNameWithAffix(user) })); // Queue recoil message
|
||||
}
|
||||
return true;
|
||||
@ -1890,7 +1890,7 @@ export class AddSubstituteAttr extends MoveEffectAttr {
|
||||
}
|
||||
|
||||
const damageTaken = this.roundUp ? Math.ceil(user.getMaxHp() * this.hpCost) : Math.floor(user.getMaxHp() * this.hpCost);
|
||||
user.damageAndUpdate(damageTaken, HitResult.INDIRECT, false, true, true);
|
||||
user.damageAndUpdate(damageTaken, { result: HitResult.INDIRECT, ignoreSegments: true, ignoreFaintPhase: true });
|
||||
user.addTag(BattlerTagType.SUBSTITUTE, 0, move.id, user.id);
|
||||
return true;
|
||||
}
|
||||
@ -2048,7 +2048,7 @@ export class FlameBurstAttr extends MoveEffectAttr {
|
||||
return false;
|
||||
}
|
||||
|
||||
targetAlly.damageAndUpdate(Math.max(1, Math.floor(1 / 16 * targetAlly.getMaxHp())), HitResult.INDIRECT);
|
||||
targetAlly.damageAndUpdate(Math.max(1, Math.floor(1 / 16 * targetAlly.getMaxHp())), { result: HitResult.INDIRECT });
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -3528,7 +3528,7 @@ export class CutHpStatStageBoostAttr extends StatStageChangeAttr {
|
||||
this.messageCallback = messageCallback;
|
||||
}
|
||||
override apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
|
||||
user.damageAndUpdate(Utils.toDmgValue(user.getMaxHp() / this.cutRatio), HitResult.INDIRECT, false);
|
||||
user.damageAndUpdate(Utils.toDmgValue(user.getMaxHp() / this.cutRatio), { result: HitResult.INDIRECT });
|
||||
user.updateInfo();
|
||||
const ret = super.apply(user, target, move, args);
|
||||
if (this.messageCallback) {
|
||||
@ -5420,7 +5420,7 @@ const crashDamageFunc = (user: Pokemon, move: Move) => {
|
||||
return false;
|
||||
}
|
||||
|
||||
user.damageAndUpdate(Utils.toDmgValue(user.getMaxHp() / 2), HitResult.INDIRECT, false);
|
||||
user.damageAndUpdate(Utils.toDmgValue(user.getMaxHp() / 2), { result: HitResult.INDIRECT });
|
||||
globalScene.queueMessage(i18next.t("moveTriggers:keptGoingAndCrashed", { pokemonName: getPokemonNameWithAffix(user) }));
|
||||
user.turnData.damageTaken += Utils.toDmgValue(user.getMaxHp() / 2);
|
||||
|
||||
@ -5716,7 +5716,7 @@ export class CurseAttr extends MoveEffectAttr {
|
||||
return false;
|
||||
}
|
||||
const curseRecoilDamage = Math.max(1, Math.floor(user.getMaxHp() / 2));
|
||||
user.damageAndUpdate(curseRecoilDamage, HitResult.INDIRECT, false, true);
|
||||
user.damageAndUpdate(curseRecoilDamage, { result: HitResult.INDIRECT, ignoreSegments: true });
|
||||
globalScene.queueMessage(
|
||||
i18next.t("battlerTags:cursedOnAdd", {
|
||||
pokemonNameWithAffix: getPokemonNameWithAffix(user),
|
||||
|
@ -3054,7 +3054,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
|
||||
* We explicitly require to ignore the faint phase here, as we want to show the messages
|
||||
* about the critical hit and the super effective/not very effective messages before the faint phase.
|
||||
*/
|
||||
const damage = this.damageAndUpdate(isBlockedBySubstitute ? 0 : dmg, result as DamageResult, isCritical, false, true, source);
|
||||
const damage = this.damageAndUpdate(isBlockedBySubstitute ? 0 : dmg, { result: result as DamageResult, critical: isCritical, ignoreSegments: false, ignoreFaintPhase: true, source: source });
|
||||
|
||||
if (damage > 0) {
|
||||
if (source.isPlayer()) {
|
||||
@ -3168,7 +3168,14 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
|
||||
* @param ignoreFaintPhase boolean to ignore adding a FaintPhase, passsed to damage()
|
||||
* @returns integer of damage done
|
||||
*/
|
||||
damageAndUpdate(damage: number, result: DamageResult = HitResult.EFFECTIVE, critical: boolean = false, ignoreSegments: boolean = false, ignoreFaintPhase: boolean = false, source?: Pokemon): number {
|
||||
damageAndUpdate(damage: number,
|
||||
{
|
||||
result = HitResult.EFFECTIVE, critical = false, ignoreSegments = false, ignoreFaintPhase = false, source = undefined,
|
||||
}:
|
||||
{
|
||||
result?: DamageResult, critical?: boolean, ignoreSegments?: boolean, ignoreFaintPhase?: boolean, source?: Pokemon,
|
||||
}
|
||||
): number {
|
||||
const isIndirectDamage = [ HitResult.INDIRECT, HitResult.INDIRECT_KO ].includes(result);
|
||||
const damagePhase = new DamageAnimPhase(this.getBattlerIndex(), damage, result as DamageResult, critical);
|
||||
globalScene.unshiftPhase(damagePhase);
|
||||
|
@ -3,7 +3,6 @@ import type { BattlerIndex } from "#app/battle";
|
||||
import { CommonAnim } from "#app/data/battle-anims";
|
||||
import { getStatusEffectHealText } from "#app/data/status-effect";
|
||||
import { StatusEffect } from "#app/enums/status-effect";
|
||||
import type { DamageResult } from "#app/field/pokemon";
|
||||
import { HitResult } from "#app/field/pokemon";
|
||||
import { getPokemonNameWithAffix } from "#app/messages";
|
||||
import { HealingBoosterModifier } from "#app/modifier/modifier";
|
||||
@ -68,7 +67,7 @@ export class PokemonHealPhase extends CommonAnimPhase {
|
||||
}
|
||||
const healAmount = new Utils.NumberHolder(Math.floor(this.hpHealed * hpRestoreMultiplier.value));
|
||||
if (healAmount.value < 0) {
|
||||
pokemon.damageAndUpdate(healAmount.value * -1, HitResult.INDIRECT as DamageResult);
|
||||
pokemon.damageAndUpdate(healAmount.value * -1, { result: HitResult.INDIRECT });
|
||||
healAmount.value = 0;
|
||||
}
|
||||
// Prevent healing to full if specified (in case of healing tokens so Sturdy doesn't cause a softlock)
|
||||
|
@ -49,7 +49,7 @@ export class WeatherEffectPhase extends CommonAnimPhase {
|
||||
const damage = Utils.toDmgValue(pokemon.getMaxHp() / 16);
|
||||
|
||||
globalScene.queueMessage(getWeatherDamageMessage(this.weather?.weatherType!, pokemon)!); // TODO: are those bangs correct?
|
||||
pokemon.damageAndUpdate(damage, HitResult.INDIRECT, false, true);
|
||||
pokemon.damageAndUpdate(damage, { result: HitResult.INDIRECT, ignoreSegments: true });
|
||||
};
|
||||
|
||||
this.executeForAll((pokemon: Pokemon) => {
|
||||
|
@ -259,7 +259,7 @@ describe("Abilities - Wimp Out", () => {
|
||||
|
||||
const wimpod = game.scene.getPlayerPokemon()!;
|
||||
|
||||
wimpod.damageAndUpdate(toDmgValue(wimpod.getMaxHp() * 0.4));
|
||||
wimpod.damageAndUpdate(toDmgValue(wimpod.getMaxHp() * 0.4), {});
|
||||
|
||||
game.move.select(Moves.DOUBLE_EDGE);
|
||||
game.doSelectPartyPokemon(1);
|
||||
|
@ -125,7 +125,7 @@ describe("Boss Pokemon / Shields", () => {
|
||||
expect(boss1.bossSegmentIndex).toBe(4);
|
||||
|
||||
// Not enough damage to break through all shields
|
||||
boss1.damageAndUpdate(Math.floor(requiredDamageBoss1 - 5));
|
||||
boss1.damageAndUpdate(Math.floor(requiredDamageBoss1 - 5), {});
|
||||
expect(boss1.bossSegmentIndex).toBe(1);
|
||||
expect(boss1.hp).toBe(boss1.getMaxHp() - toDmgValue(boss1SegmentHp * 3));
|
||||
|
||||
@ -137,7 +137,7 @@ describe("Boss Pokemon / Shields", () => {
|
||||
expect(boss2.bossSegments).toBe(5);
|
||||
|
||||
// Enough damage to break through all shields
|
||||
boss2.damageAndUpdate(Math.ceil(requiredDamageBoss2));
|
||||
boss2.damageAndUpdate(Math.ceil(requiredDamageBoss2), {});
|
||||
expect(boss2.bossSegmentIndex).toBe(0);
|
||||
expect(boss2.hp).toBe(boss2.getMaxHp() - toDmgValue(boss2SegmentHp * 4));
|
||||
|
||||
@ -165,7 +165,7 @@ describe("Boss Pokemon / Shields", () => {
|
||||
|
||||
// Break the shields one by one
|
||||
for (let i = 1; i <= shieldsToBreak; i++) {
|
||||
boss1.damageAndUpdate(singleShieldDamage);
|
||||
boss1.damageAndUpdate(singleShieldDamage, {});
|
||||
expect(boss1.bossSegmentIndex).toBe(shieldsToBreak - i);
|
||||
expect(boss1.hp).toBe(boss1.getMaxHp() - toDmgValue(boss1SegmentHp * i));
|
||||
// Do nothing and go to next turn so that the StatStageChangePhase gets applied
|
||||
@ -186,7 +186,7 @@ describe("Boss Pokemon / Shields", () => {
|
||||
expect(getTotalStatStageBoosts(boss2)).toBe(0);
|
||||
|
||||
// Enough damage to break all shields at once
|
||||
boss2.damageAndUpdate(Math.ceil(requiredDamage));
|
||||
boss2.damageAndUpdate(Math.ceil(requiredDamage), {});
|
||||
expect(boss2.bossSegmentIndex).toBe(0);
|
||||
expect(boss2.hp).toBe(boss2.getMaxHp() - toDmgValue(boss2SegmentHp * shieldsToBreak));
|
||||
// Do nothing and go to next turn so that the StatStageChangePhase gets applied
|
||||
|
@ -55,7 +55,7 @@ describe("Items - Reviver Seed", () => {
|
||||
.enemyMoveset(move);
|
||||
await game.classicMode.startBattle([ Species.MAGIKARP, Species.FEEBAS ]);
|
||||
const player = game.scene.getPlayerPokemon()!;
|
||||
player.damageAndUpdate(player.hp - 1);
|
||||
player.damageAndUpdate(player.hp - 1, {});
|
||||
|
||||
const reviverSeed = player.getHeldItems()[0] as PokemonInstantReviveModifier;
|
||||
vi.spyOn(reviverSeed, "apply");
|
||||
@ -73,7 +73,7 @@ describe("Items - Reviver Seed", () => {
|
||||
.enemyMoveset(Moves.SPLASH);
|
||||
await game.classicMode.startBattle([ Species.MAGIKARP, Species.FEEBAS ]);
|
||||
const player = game.scene.getPlayerPokemon()!;
|
||||
player.damageAndUpdate(player.hp - 1);
|
||||
player.damageAndUpdate(player.hp - 1, {});
|
||||
player.addTag(BattlerTagType.CONFUSED, 3);
|
||||
|
||||
const reviverSeed = player.getHeldItems()[0] as PokemonInstantReviveModifier;
|
||||
@ -102,7 +102,7 @@ describe("Items - Reviver Seed", () => {
|
||||
.enemyMoveset(Moves.ENDURE);
|
||||
await game.classicMode.startBattle([ Species.MAGIKARP, Species.FEEBAS ]);
|
||||
const enemy = game.scene.getEnemyPokemon()!;
|
||||
enemy.damageAndUpdate(enemy.hp - 1);
|
||||
enemy.damageAndUpdate(enemy.hp - 1, {});
|
||||
|
||||
game.move.select(move);
|
||||
await game.phaseInterceptor.to("TurnEndPhase");
|
||||
@ -126,7 +126,7 @@ describe("Items - Reviver Seed", () => {
|
||||
.enemyMoveset(Moves.SPLASH);
|
||||
await game.classicMode.startBattle([ Species.GASTLY, Species.FEEBAS ]);
|
||||
const player = game.scene.getPlayerPokemon()!;
|
||||
player.damageAndUpdate(player.hp - 1);
|
||||
player.damageAndUpdate(player.hp - 1, {});
|
||||
|
||||
const playerSeed = player.getHeldItems()[0] as PokemonInstantReviveModifier;
|
||||
vi.spyOn(playerSeed, "apply");
|
||||
@ -147,7 +147,7 @@ describe("Items - Reviver Seed", () => {
|
||||
.enemyMoveset(Moves.TACKLE);
|
||||
await game.classicMode.startBattle([ Species.MAGIKARP, Species.FEEBAS ]);
|
||||
const player = game.scene.getPlayerPokemon()!;
|
||||
player.damageAndUpdate(player.hp - 1);
|
||||
player.damageAndUpdate(player.hp - 1, {});
|
||||
const enemy = game.scene.getEnemyPokemon()!;
|
||||
|
||||
game.move.select(Moves.DESTINY_BOND);
|
||||
|
@ -76,7 +76,7 @@ describe("Moves - Endure", () => {
|
||||
.enemyMoveset(Moves.ENDURE);
|
||||
await game.classicMode.startBattle([ Species.MAGIKARP, Species.FEEBAS ]);
|
||||
const enemy = game.scene.getEnemyPokemon()!;
|
||||
enemy.damageAndUpdate(enemy.hp - 1);
|
||||
enemy.damageAndUpdate(enemy.hp - 1, {});
|
||||
|
||||
game.move.select(move);
|
||||
await game.phaseInterceptor.to("TurnEndPhase");
|
||||
|
@ -52,7 +52,7 @@ describe("Moves - Fake Out", () => {
|
||||
await game.classicMode.startBattle([ Species.FEEBAS ]);
|
||||
|
||||
const enemy = game.scene.getEnemyPokemon()!;
|
||||
enemy.damageAndUpdate(enemy.getMaxHp() - 1);
|
||||
enemy.damageAndUpdate(enemy.getMaxHp() - 1, {});
|
||||
|
||||
game.move.select(Moves.FAKE_OUT);
|
||||
await game.toNextWave();
|
||||
|
@ -43,7 +43,7 @@ describe("Moves - Heal Block", () => {
|
||||
const player = game.scene.getPlayerPokemon()!;
|
||||
const enemy = game.scene.getEnemyPokemon()!;
|
||||
|
||||
player.damageAndUpdate(enemy.getMaxHp() - 1);
|
||||
player.damageAndUpdate(enemy.getMaxHp() - 1, {});
|
||||
|
||||
game.move.select(Moves.ABSORB);
|
||||
await game.setTurnOrder([ BattlerIndex.ENEMY, BattlerIndex.PLAYER ]);
|
||||
@ -74,7 +74,7 @@ describe("Moves - Heal Block", () => {
|
||||
|
||||
const player = game.scene.getPlayerPokemon()!;
|
||||
|
||||
player.damageAndUpdate(player.getMaxHp() - 1);
|
||||
player.damageAndUpdate(player.getMaxHp() - 1, {});
|
||||
|
||||
game.move.select(Moves.WISH);
|
||||
await game.phaseInterceptor.to("TurnEndPhase");
|
||||
@ -95,7 +95,7 @@ describe("Moves - Heal Block", () => {
|
||||
|
||||
const player = game.scene.getPlayerPokemon()!;
|
||||
|
||||
player.damageAndUpdate(player.getMaxHp() - 1);
|
||||
player.damageAndUpdate(player.getMaxHp() - 1, {});
|
||||
|
||||
game.move.select(Moves.SPLASH);
|
||||
await game.phaseInterceptor.to("TurnEndPhase");
|
||||
@ -108,7 +108,7 @@ describe("Moves - Heal Block", () => {
|
||||
|
||||
const player = game.scene.getPlayerPokemon()!;
|
||||
|
||||
player.damageAndUpdate(player.getMaxHp() - 1);
|
||||
player.damageAndUpdate(player.getMaxHp() - 1, {});
|
||||
|
||||
game.move.select(Moves.AQUA_RING);
|
||||
await game.phaseInterceptor.to("TurnEndPhase");
|
||||
@ -126,7 +126,7 @@ describe("Moves - Heal Block", () => {
|
||||
|
||||
const player = game.scene.getPlayerPokemon()!;
|
||||
|
||||
player.damageAndUpdate(player.getMaxHp() - 1);
|
||||
player.damageAndUpdate(player.getMaxHp() - 1, {});
|
||||
|
||||
game.move.select(Moves.SPLASH);
|
||||
await game.phaseInterceptor.to("TurnEndPhase");
|
||||
@ -140,7 +140,7 @@ describe("Moves - Heal Block", () => {
|
||||
await game.classicMode.startBattle([ Species.CHARIZARD ]);
|
||||
|
||||
const player = game.scene.getPlayerPokemon()!;
|
||||
player.damageAndUpdate(player.getMaxHp() - 1);
|
||||
player.damageAndUpdate(player.getMaxHp() - 1, {});
|
||||
|
||||
game.move.select(Moves.SPLASH);
|
||||
await game.phaseInterceptor.to("TurnEndPhase");
|
||||
|
@ -121,7 +121,7 @@ describe("Moves - Safeguard", () => {
|
||||
game.move.select(Moves.SPLASH);
|
||||
await game.setTurnOrder([ BattlerIndex.ENEMY, BattlerIndex.PLAYER ]);
|
||||
await game.toNextTurn();
|
||||
enemyPokemon.damageAndUpdate(1);
|
||||
enemyPokemon.damageAndUpdate(1, {});
|
||||
|
||||
expect(enemyPokemon.status?.effect).toEqual(StatusEffect.BURN);
|
||||
|
||||
@ -130,7 +130,7 @@ describe("Moves - Safeguard", () => {
|
||||
// TODO: Remove after enemy AI rework is in
|
||||
enemyPokemon.getMoveset();
|
||||
game.move.select(Moves.SPLASH);
|
||||
enemyPokemon.damageAndUpdate(1);
|
||||
enemyPokemon.damageAndUpdate(1, {});
|
||||
await game.toNextTurn();
|
||||
|
||||
expect(enemyPokemon.status?.effect).toEqual(StatusEffect.SLEEP);
|
||||
|
Loading…
Reference in New Issue
Block a user