From a3a42931ba350502995bcdc00362f9a8838ba076 Mon Sep 17 00:00:00 2001 From: snoozbuster Date: Sat, 3 Aug 2024 22:41:12 -0700 Subject: [PATCH] add move attrs for pursuit --- src/data/move.ts | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/src/data/move.ts b/src/data/move.ts index 250e00eb45b..b9f9ac49814 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -3744,6 +3744,21 @@ export class BlizzardAccuracyAttr extends VariableAccuracyAttr { } } +const isPursuingFunc = (user: Pokemon, target: Pokemon) => + user.getTag(BattlerTagType.ANTICIPATING_ACTION) && target.getTag(BattlerTagType.ESCAPING); + +export class PursuitAccuracyAttr extends VariableAccuracyAttr { + apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { + if (isPursuingFunc(user, target)) { + const accuracy = args[0] as Utils.NumberHolder; + accuracy.value = -1; + return true; + } + + return false; + } +} + export class VariableMoveCategoryAttr extends MoveAttr { apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { return false; @@ -4482,8 +4497,8 @@ export class LapseBattlerTagAttr extends MoveEffectAttr { export class RemoveBattlerTagAttr extends MoveEffectAttr { public tagTypes: BattlerTagType[]; - constructor(tagTypes: BattlerTagType[], selfTarget: boolean = false) { - super(selfTarget); + constructor(tagTypes: BattlerTagType[], selfTarget: boolean = false, trigger?: MoveEffectTrigger) { + super(selfTarget, trigger); this.tagTypes = tagTypes; } @@ -6811,7 +6826,10 @@ export function initMoves() { .attr(AddBattlerTagAttr, BattlerTagType.ENCORE, false, true) .condition((user, target, move) => new EncoreTag(user.id).canAdd(target)), new AttackMove(Moves.PURSUIT, Type.DARK, MoveCategory.PHYSICAL, 40, 100, 20, -1, 0, 2) - .partial(), + .attr(PursuitAccuracyAttr) + .attr(AddBattlerTagOnMoveReadyAttr, BattlerTagType.ANTICIPATING_ACTION) + .attr(RemoveBattlerTagAttr, [BattlerTagType.ANTICIPATING_ACTION], true, MoveEffectTrigger.POST_APPLY) + .attr(MovePowerMultiplierAttr, (user, target) => isPursuingFunc(user, target) ? 2 : 1), new AttackMove(Moves.RAPID_SPIN, Type.NORMAL, MoveCategory.PHYSICAL, 50, 100, 40, 100, 0, 2) .attr(StatChangeAttr, BattleStat.SPD, 1, true) .attr(RemoveBattlerTagAttr, [