diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index bb8cfec050..09ef8d35a6 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -2382,6 +2382,21 @@ Move_DISARMING_VOICE: end Move_PARTING_SHOT: + loadspritegfx ANIM_TAG_NOISE_LINE + fadetobg BG_DARK + waitbgfadein + delay 0 + createvisualtask sub_8158E9C, 2, 0, 255 + call RoarEffect + delay 10 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 1, 0, 9, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_DEF_PARTNER, 1, 0, 9, 1 + waitforvisualfinish + createvisualtask sub_8159078, 5 + waitforvisualfinish + delay 1 + restorebg + waitbgfadein end Move_TOPSY_TURVY: diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 64d937e1b7..0087f0d279 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -342,6 +342,49 @@ gBattleScriptsForMoveEffects:: @ 82D86A8 .4byte BattleScript_EffectPowder .4byte BattleScript_EffectSpAtkUpHit .4byte BattleScript_EffectBelch + .4byte BattleScript_EffectPartingShot + +BattleScript_EffectPartingShot:: + attackcanceler + attackstring + ppreduce + jumpifstat BS_TARGET, CMP_GREATER_THAN, STAT_ATK, 0x0, BattleScript_EffectPartingShotTryAtk + jumpifstat BS_TARGET, CMP_EQUAL, STAT_SPATK, 0x0, BattleScript_CantLowerMultipleStats +BattleScript_EffectPartingShotTryAtk: + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + attackanimation + waitanimation + setbyte sSTAT_ANIM_PLAYED, FALSE + playstatchangeanimation BS_TARGET, BIT_ATK | BIT_SPATK, ATK48_STAT_NEGATIVE | ATK48_ONLY_MULTIPLE + playstatchangeanimation BS_TARGET, BIT_ATK, ATK48_STAT_NEGATIVE + setstatchanger STAT_ATK, 1, TRUE + statbuffchange 0x1, BattleScript_EffectPartingShotTrySpAtk + printfromtable gStatDownStringIds + waitmessage 0x40 +BattleScript_EffectPartingShotTrySpAtk: + playstatchangeanimation BS_TARGET, BIT_SPATK, ATK48_STAT_NEGATIVE + setstatchanger STAT_SPATK, 1, TRUE + statbuffchange 0x1, BattleScript_EffectPartingShotSwitch + printfromtable gStatDownStringIds + waitmessage 0x40 +BattleScript_EffectPartingShotSwitch: + setbyte sMOVEEND_STATE, 0x0 + moveend 0x0, 0x0 + jumpifcantswitch ATK4F_DONT_CHECK_STATUSES | BS_ATTACKER, BattleScript_PartingShotEnd + openpartyscreen 0x1, BattleScript_PartingShotEnd + switchoutabilities BS_ATTACKER + waitstate + switchhandleorder BS_ATTACKER, 0x2 + returntoball BS_ATTACKER + getswitchedmondata BS_ATTACKER + switchindataupdate BS_ATTACKER + hpthresholds BS_ATTACKER + printstring STRINGID_SWITCHINMON + switchinanim BS_ATTACKER, TRUE + waitstate + switchineffects BS_ATTACKER +BattleScript_PartingShotEnd: + end BattleScript_EffectSpAtkUpHit: setmoveeffect MOVE_EFFECT_SP_ATK_PLUS_1 | MOVE_EFFECT_AFFECTS_USER diff --git a/include/constants/battle_move_effects.h b/include/constants/battle_move_effects.h index 7d1f1399ac..d6171a8e01 100644 --- a/include/constants/battle_move_effects.h +++ b/include/constants/battle_move_effects.h @@ -330,5 +330,6 @@ #define EFFECT_POWDER 324 #define EFFECT_SP_ATTACK_UP_HIT 325 #define EFFECT_BELCH 326 +#define EFFECT_PARTING_SHOT 327 #endif // GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index a45a31dda7..195cb27acf 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -8069,7 +8069,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_PARTING_SHOT] = { - .effect = EFFECT_PLACEHOLDER, // Needs a custom move effect + .effect = EFFECT_PARTING_SHOT, .power = 0, .type = TYPE_DARK, .accuracy = 100,