From 253ed21c2df63f6e9de6468c93c2625a8a51fe86 Mon Sep 17 00:00:00 2001 From: hayuna Date: Mon, 13 May 2024 18:00:35 +0200 Subject: [PATCH 1/4] Implement Trump Card move --- src/data/move.ts | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/src/data/move.ts b/src/data/move.ts index 2a841a401..7b6f348ea 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -1885,6 +1885,35 @@ export class VariablePowerAttr extends MoveAttr { } } + +export class LessPPMorePowerAttr extends VariablePowerAttr { + apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { + const ppMax = move.pp; + const ppUsed = user.moveset.find((m) => m.moveId === move.id).ppUsed; + const ppRemains = ppMax - ppUsed; + const power = args[0] as Utils.NumberHolder; + + switch (ppRemains) { + case 3: + power.value = 50; + break; + case 2: + power.value = 60; + break; + case 1: + power.value = 80; + break; + case 0: + power.value = 200; + break; + default: + power.value = 40; + break; + } + return true; + } +} + export class MovePowerMultiplierAttr extends VariablePowerAttr { private powerMultiplierFunc: (user: Pokemon, target: Pokemon, move: Move) => number; @@ -5210,7 +5239,7 @@ export function initMoves() { ), new AttackMove(Moves.TRUMP_CARD, Type.NORMAL, MoveCategory.SPECIAL, -1, -1, 5, -1, 0, 4) .makesContact() - .unimplemented(), + .attr(LessPPMorePowerAttr), new StatusMove(Moves.HEAL_BLOCK, Type.PSYCHIC, 100, 15, -1, 0, 4) .target(MoveTarget.ALL_NEAR_ENEMIES) .unimplemented(), From 4dad5f8090a2e87b74c352cf367976d01cd3c558 Mon Sep 17 00:00:00 2001 From: hayuna Date: Mon, 13 May 2024 18:41:59 +0200 Subject: [PATCH 2/4] Add docs, rearrange order of conditions --- src/data/move.ts | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/data/move.ts b/src/data/move.ts index 7b6f348ea..006aee94f 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -1885,8 +1885,15 @@ export class VariablePowerAttr extends MoveAttr { } } - export class LessPPMorePowerAttr extends VariablePowerAttr { + /** + * Power up moves when less PP user has + * @param user Pokemon that used the move + * @param target The target of the move + * @param move Move with this attribute + * @param args Utils.NumberHolder for calculating power + * @returns true if the function succeeds + */ apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { const ppMax = move.pp; const ppUsed = user.moveset.find((m) => m.moveId === move.id).ppUsed; @@ -1894,17 +1901,17 @@ export class LessPPMorePowerAttr extends VariablePowerAttr { const power = args[0] as Utils.NumberHolder; switch (ppRemains) { - case 3: - power.value = 50; - break; - case 2: - power.value = 60; + case 0: + power.value = 200; break; case 1: power.value = 80; break; - case 0: - power.value = 200; + case 2: + power.value = 60; + break; + case 3: + power.value = 50; break; default: power.value = 40; From 3b17136b0367585093ee192a55d96ba94f61becf Mon Sep 17 00:00:00 2001 From: hayuna Date: Tue, 14 May 2024 15:30:39 +0200 Subject: [PATCH 3/4] Add Pressure consequences --- src/data/move.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/data/move.ts b/src/data/move.ts index e1f792a36..37a7c10e7 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -1915,8 +1915,15 @@ export class LessPPMorePowerAttr extends VariablePowerAttr { */ apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { const ppMax = move.pp; - const ppUsed = user.moveset.find((m) => m.moveId === move.id).ppUsed; - const ppRemains = ppMax - ppUsed; + let ppUsed = user.moveset.find((m) => m.moveId === move.id).ppUsed; + + if(target.hasAbility(Abilities.PRESSURE)) { + ppUsed += 1; + } + + let ppRemains = ppMax - ppUsed; + if(ppRemains < 0) ppRemains = 0; + const power = args[0] as Utils.NumberHolder; switch (ppRemains) { From 7ea3c727acd5ea82f799964ebceb647b07ab7ab5 Mon Sep 17 00:00:00 2001 From: hayuna Date: Tue, 14 May 2024 17:50:32 +0200 Subject: [PATCH 4/4] Remove additional reducing PP if pressure --- src/data/move.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/data/move.ts b/src/data/move.ts index 37a7c10e7..d225f36c1 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -1917,10 +1917,6 @@ export class LessPPMorePowerAttr extends VariablePowerAttr { const ppMax = move.pp; let ppUsed = user.moveset.find((m) => m.moveId === move.id).ppUsed; - if(target.hasAbility(Abilities.PRESSURE)) { - ppUsed += 1; - } - let ppRemains = ppMax - ppUsed; if(ppRemains < 0) ppRemains = 0;