[Bug] Full Heals and Full Restore cure confusion (#1112)
* Added Confusion to be healed with Full Heals and Full Restores * Semi-Colon oversight * Changed resetStatus to have a condition whether to include confusion or not, defaults to false so you manually have to add * Fixed spacing and semicolon * Refactored the Lum Berry case * Fix berry conflicts * Update {} * Fix PP Conflict * Build fix? * Fix Modifier * Build Fix * Fix * Fix StatuHeal from eslint
This commit is contained in:
parent
bb7af15c4a
commit
6c4b60a2fa
|
@ -94,12 +94,9 @@ export function getBerryEffectFunc(berryType: BerryType): BerryEffectFunc {
|
|||
}
|
||||
if (pokemon.status) {
|
||||
pokemon.scene.queueMessage(getPokemonMessage(pokemon, getStatusEffectHealText(pokemon.status.effect)));
|
||||
pokemon.resetStatus();
|
||||
pokemon.updateInfo();
|
||||
}
|
||||
if (pokemon.getTag(BattlerTagType.CONFUSED)) {
|
||||
pokemon.lapseTag(BattlerTagType.CONFUSED);
|
||||
}
|
||||
pokemon.resetStatus(true, true);
|
||||
pokemon.updateInfo();
|
||||
};
|
||||
case BerryType.LIECHI:
|
||||
case BerryType.GANLON:
|
||||
|
|
|
@ -2426,9 +2426,10 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
|
|||
|
||||
/**
|
||||
* Resets the status of a pokemon
|
||||
* @param revive whether revive should be cured, defaults to true
|
||||
* @param {boolean} revive Whether revive should be cured; defaults to true.
|
||||
* @param {boolean} confusion Whether resetStatus should include confusion or not; defaults to false.
|
||||
*/
|
||||
resetStatus(revive: boolean = true): void {
|
||||
resetStatus(revive: boolean = true, confusion: boolean = false): void {
|
||||
const lastStatus = this.status?.effect;
|
||||
if (!revive && lastStatus === StatusEffect.FAINT) {
|
||||
return;
|
||||
|
@ -2440,6 +2441,11 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
|
|||
this.lapseTag(BattlerTagType.NIGHTMARE);
|
||||
}
|
||||
}
|
||||
if (confusion) {
|
||||
if (this.getTag(BattlerTagType.CONFUSED)) {
|
||||
this.lapseTag(BattlerTagType.CONFUSED);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
primeSummonData(summonDataPrimer: PokemonSummonData): void {
|
||||
|
|
|
@ -21,6 +21,7 @@ import { ModifierTier } from "./modifier-tier";
|
|||
import { Nature, getNatureName, getNatureStatMultiplier } from "#app/data/nature";
|
||||
import i18next from "#app/plugins/i18n";
|
||||
import { getModifierTierTextTint } from "#app/ui/text";
|
||||
import { BattlerTagType } from "#app/data/enums/battler-tag-type.js";
|
||||
|
||||
const outputModifierData = false;
|
||||
const useMaxWeightForOutput = false;
|
||||
|
@ -230,7 +231,7 @@ export class PokemonHpRestoreModifierType extends PokemonModifierType {
|
|||
constructor(localeKey: string, iconImage: string, restorePoints: integer, restorePercent: integer, healStatus: boolean = false, newModifierFunc?: NewModifierFunc, selectFilter?: PokemonSelectFilter, group?: string) {
|
||||
super(localeKey, iconImage, newModifierFunc || ((_type, args) => new Modifiers.PokemonHpRestoreModifier(this, (args[0] as PlayerPokemon).id, this.restorePoints, this.restorePercent, this.healStatus, false)),
|
||||
selectFilter || ((pokemon: PlayerPokemon) => {
|
||||
if (!pokemon.hp || (pokemon.hp >= pokemon.getMaxHp() && (!this.healStatus || !pokemon.status))) {
|
||||
if (!pokemon.hp || (pokemon.hp >= pokemon.getMaxHp() && (!this.healStatus || (!pokemon.status && !pokemon.getTag(BattlerTagType.CONFUSED))))) {
|
||||
return PartyUiHandler.NoEffectMessage;
|
||||
}
|
||||
return null;
|
||||
|
@ -280,7 +281,7 @@ export class PokemonStatusHealModifierType extends PokemonModifierType {
|
|||
constructor(localeKey: string, iconImage: string) {
|
||||
super(localeKey, iconImage, ((_type, args) => new Modifiers.PokemonStatusHealModifier(this, (args[0] as PlayerPokemon).id)),
|
||||
((pokemon: PlayerPokemon) => {
|
||||
if (!pokemon.hp || !pokemon.status) {
|
||||
if (!pokemon.hp || (!pokemon.status && !pokemon.getTag(BattlerTagType.CONFUSED))) {
|
||||
return PartyUiHandler.NoEffectMessage;
|
||||
}
|
||||
return null;
|
||||
|
|
|
@ -1057,16 +1057,14 @@ export class PokemonHpRestoreModifier extends ConsumablePokemonModifier {
|
|||
let restorePoints = this.restorePoints;
|
||||
if (!this.fainted) {
|
||||
restorePoints = Math.floor(restorePoints * (args[1] as number));
|
||||
if (this.fainted || this.healStatus) {
|
||||
pokemon.resetStatus(true, true);
|
||||
}
|
||||
pokemon.hp = Math.min(pokemon.hp + Math.max(Math.ceil(Math.max(Math.floor((this.restorePercent * 0.01) * pokemon.getMaxHp()), restorePoints)), 1), pokemon.getMaxHp());
|
||||
return true;
|
||||
}
|
||||
if (this.fainted || this.healStatus) {
|
||||
pokemon.resetStatus();
|
||||
}
|
||||
pokemon.hp = Math.min(pokemon.hp + Math.max(Math.ceil(Math.max(Math.floor((this.restorePercent * 0.01) * pokemon.getMaxHp()), restorePoints)), 1), pokemon.getMaxHp());
|
||||
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1077,8 +1075,7 @@ export class PokemonStatusHealModifier extends ConsumablePokemonModifier {
|
|||
|
||||
apply(args: any[]): boolean {
|
||||
const pokemon = args[0] as Pokemon;
|
||||
pokemon.resetStatus();
|
||||
|
||||
pokemon.resetStatus(true, true);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue