diff --git a/src/data/move.ts b/src/data/move.ts index 0020dd88a62..757b5ae148f 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -6,7 +6,7 @@ import { EncoreTag } from "./battler-tags"; import { BattlerTagType } from "./enums/battler-tag-type"; import { getPokemonMessage } from "../messages"; import Pokemon, { AttackMoveResult, EnemyPokemon, HitResult, MoveResult, PlayerPokemon, PokemonMove, TurnMove } from "../field/pokemon"; -import { StatusEffect, getStatusEffectHealText } from "./status-effect"; +import { StatusEffect, getStatusEffectHealText, isNonVolatileStatusEffect, getNonVolatileStatusEffects} from "./status-effect"; import { Type } from "./type"; import * as Utils from "../utils"; import { WeatherType } from "./weather"; @@ -6813,8 +6813,11 @@ export function initMoves() { .unimplemented(), new AttackMove(Moves.SMART_STRIKE, Type.STEEL, MoveCategory.PHYSICAL, 70, -1, 10, -1, 0, 7), new StatusMove(Moves.PURIFY, Type.POISON, -1, 20, -1, 0, 7) - .triageMove() - .unimplemented(), + .condition( + (user: Pokemon, target: Pokemon, move: Move) => isNonVolatileStatusEffect(user.status?.effect)) + .attr(HealAttr, 0.5) + .attr(HealStatusEffectAttr, true, ...getNonVolatileStatusEffects()) + .triageMove(), new AttackMove(Moves.REVELATION_DANCE, Type.NORMAL, MoveCategory.SPECIAL, 90, 100, 15, -1, 0, 7) .danceMove() .attr(MatchUserTypeAttr), diff --git a/src/data/status-effect.ts b/src/data/status-effect.ts index bac04222751..810bd4d9482 100644 --- a/src/data/status-effect.ts +++ b/src/data/status-effect.ts @@ -175,3 +175,27 @@ export function getRandomStatus(statusA: Status, statusB: Status): Status { return Utils.randIntRange(0, 2) ? statusA : statusB; } + +/** + * Gets all non volatile status effects + * @returns A list containing all non volatile status effects + */ +export function getNonVolatileStatusEffects():Array { + return [ + StatusEffect.POISON, + StatusEffect.TOXIC, + StatusEffect.PARALYSIS, + StatusEffect.SLEEP, + StatusEffect.FREEZE, + StatusEffect.BURN + ]; +} + +/** + * Returns whether a statuss effect is non volatile. + * Non-volatile status condition is a status that remains after being switched out. + * @param status The status to check + */ +export function isNonVolatileStatusEffect(status: StatusEffect): boolean { + return getNonVolatileStatusEffects().includes(status); +}