diff --git a/asm/macros/battle_anim_script.inc b/asm/macros/battle_anim_script.inc index e0fda482ba..19651d5533 100644 --- a/asm/macros/battle_anim_script.inc +++ b/asm/macros/battle_anim_script.inc @@ -340,6 +340,22 @@ createsprite gTailGlowOrbSpriteTemplate, \anim_battler, \subpriority_offset, \relative_to .endm + .macro create_sharp_teeth_sprite anim_battler:req, subpriority_offset:req, x:req, y:req, animation:req, x_velocity:req, y_velocity:req, half_duration:req + createsprite gSharpTeethSpriteTemplate, \anim_battler, \subpriority_offset, \x, \y, \animation, 256 * \x_velocity, 256 * \y_velocity, \half_duration + .endm + + .macro create_clamp_jaw_sprite anim_battler:req, subpriority_offset:req, x:req, y:req, animation:req, x_velocity:req, y_velocity:req, half_duration:req + createsprite gClampJawSpriteTemplate, \anim_battler, \subpriority_offset, \x, \y, \animation, 256 * \x_velocity, 256 * \y_velocity, \half_duration + .endm + + .macro create_tear_drop_sprite anim_battler:req, subpriority_offset:req, relative_to:req, type:req + createsprite gTearDropSpriteTemplate, \anim_battler, \subpriority_offset, \relative_to, \type + .endm + + .macro create_claw_slash_sprite anim_battler:req, subpriority_offset:req, x:req, y:req, animation:req + createsprite gClawSlashSpriteTemplate, \anim_battler, \subpriority_offset, \x, \y, \animation + .endm + .macro create_confusion_duck_sprite anim_battler:req, subpriority_offset:req, x:req, y:req, wave_offset:req, wave_period:req, duration:req createsprite gConfusionDuckSpriteTemplate, \anim_battler, \subpriority_offset, \x, \y, \wave_offset, \wave_period, \duration .endm @@ -379,6 +395,30 @@ @ createvisualtask wrappers @ The arguments are based on the CMD_ARGS of the task. + .macro metallic_shine priority=5, permanent:req, color + .ifb \color + createvisualtask AnimTask_MetallicShine, \priority, \permanent, FALSE, RGB_BLACK + .else + createvisualtask AnimTask_MetallicShine, \priority, \permanent, TRUE, \color + .endif + .endm + + .macro set_grayscale_pal priority=5, battler:req + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, \priority, \battler, FALSE + .endm + + .macro set_original_pal priority=5, battler:req + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, \priority, \battler, TRUE + .endm + + .macro attacker_fade_to_invisible priority=2, step_delay:req + createvisualtask AnimTask_AttackerFadeToInvisible, \priority, \step_delay + .endm + + .macro attacker_fade_from_invisible priority=2, step_delay:req + createvisualtask AnimTask_AttackerFadeFromInvisible, \priority, \step_delay + .endm + .macro blend_color_cycle priority=2, selector:req, delay:req, num_blends:req, initial_blend_y:req, target_blend_y:req, color:req createvisualtask AnimTask_BlendColorCycle, \priority, \selector, \delay, \num_blends, \initial_blend_y, \target_blend_y, \color .endm diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index 5d79c375ed..3670de686b 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -1657,12 +1657,12 @@ Explosion1: Move_DEFENSE_CURL: loadspritegfx ANIM_TAG_ECLIPSING_ORB loopsewithpan SE_M_TRI_ATTACK, SOUND_PAN_ATTACKER, 18, 3 - createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_ATTACKER, FALSE + set_grayscale_pal battler=ANIM_ATTACKER createvisualtask AnimTask_DefenseCurlDeformMon, 5 waitforvisualfinish createsprite gEclipsingOrbSpriteTemplate, ANIM_ATTACKER, 2, 0, 6, 0, 1 waitforvisualfinish - createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_ATTACKER, TRUE + set_original_pal battler=ANIM_ATTACKER waitforvisualfinish end @@ -2965,7 +2965,7 @@ SkyAttackUnleash: monbg ANIM_ATTACKER createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 0, 0, 16, RGB_WHITE delay 4 - createvisualtask AnimTask_AttackerFadeToInvisible, 5, 0 + attacker_fade_to_invisible priority=5, step_delay=0 waitforvisualfinish createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_SKY_UPPERCUT, SOUND_PAN_ATTACKER createsprite gSkyAttackBirdSpriteTemplate, ANIM_TARGET, 2 @@ -2973,7 +2973,7 @@ SkyAttackUnleash: createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 10, 0, 18, 1 createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_MEGA_KICK2, SOUND_PAN_TARGET delay 20 - createvisualtask AnimTask_AttackerFadeFromInvisible, 5, 1 + attacker_fade_from_invisible priority=5, step_delay=1 delay 2 createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 0, 15, 0, RGB_WHITE waitforvisualfinish @@ -3875,13 +3875,13 @@ Move_CAMOUFLAGE: setalpha 16, 0 createvisualtask AnimTask_SetCamouflageBlend, 5, F_PAL_ATTACKER, 3, 0, 14 delay 16 - createvisualtask AnimTask_AttackerFadeToInvisible, 2, 4 + attacker_fade_to_invisible step_delay=4 playsewithpan SE_M_FAINT_ATTACK, SOUND_PAN_ATTACKER waitforvisualfinish delay 8 createvisualtask AnimTask_SetCamouflageBlend, 5, F_PAL_ATTACKER, 0, 0, 0 waitforvisualfinish - createvisualtask AnimTask_AttackerFadeFromInvisible, 2, 1 + attacker_fade_from_invisible step_delay=1 waitforvisualfinish blendoff clearmonbg ANIM_ATK_PARTNER @@ -4116,12 +4116,12 @@ Move_CRUSH_CLAW: createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 6, 4 delay 4 createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 18, 1 - createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, -10, -10, 0 - createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, -10, 10, 0 + create_claw_slash_sprite ANIM_TARGET, 2, x=-10, y=-10, animation=0 + create_claw_slash_sprite ANIM_TARGET, 2, x=-10, y=10, animation=0 playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET delay 12 - createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, 10, -10, 1 - createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, 10, 10, 1 + create_claw_slash_sprite ANIM_TARGET, 2, x=10, y=-10, animation=1 + create_claw_slash_sprite ANIM_TARGET, 2, x=10, y=10, animation=1 playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET waitforvisualfinish blendoff @@ -4176,17 +4176,17 @@ Move_FAKE_TEARS: createvisualtask AnimTask_RockMonBackAndForth, 5, ANIM_ATTACKER, 2, 1 loopsewithpan SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER, 12, 4 delay 8 - createsprite gTearDropSpriteTemplate, ANIM_ATTACKER, 2, 0, 0 - createsprite gTearDropSpriteTemplate, ANIM_ATTACKER, 2, 0, 1 + create_tear_drop_sprite ANIM_ATTACKER, 2, relative_to=ANIM_ATTACKER, type=0 + create_tear_drop_sprite ANIM_ATTACKER, 2, relative_to=ANIM_ATTACKER, type=1 delay 8 - createsprite gTearDropSpriteTemplate, ANIM_ATTACKER, 2, 0, 2 - createsprite gTearDropSpriteTemplate, ANIM_ATTACKER, 2, 0, 3 + create_tear_drop_sprite ANIM_ATTACKER, 2, relative_to=ANIM_ATTACKER, type=2 + create_tear_drop_sprite ANIM_ATTACKER, 2, relative_to=ANIM_ATTACKER, type=3 delay 8 - createsprite gTearDropSpriteTemplate, ANIM_ATTACKER, 2, 0, 0 - createsprite gTearDropSpriteTemplate, ANIM_ATTACKER, 2, 0, 1 + create_tear_drop_sprite ANIM_ATTACKER, 2, relative_to=ANIM_ATTACKER, type=0 + create_tear_drop_sprite ANIM_ATTACKER, 2, relative_to=ANIM_ATTACKER, type=1 delay 8 - createsprite gTearDropSpriteTemplate, ANIM_ATTACKER, 2, 0, 2 - createsprite gTearDropSpriteTemplate, ANIM_ATTACKER, 2, 0, 3 + create_tear_drop_sprite ANIM_ATTACKER, 2, relative_to=ANIM_ATTACKER, type=2 + create_tear_drop_sprite ANIM_ATTACKER, 2, relative_to=ANIM_ATTACKER, type=3 waitforvisualfinish end @@ -4360,7 +4360,7 @@ Move_AERIAL_ACE: Move_IRON_DEFENSE: loopsewithpan SE_SHINY, SOUND_PAN_ATTACKER, 28, 2 - createvisualtask AnimTask_MetallicShine, 5, 0, 0, RGB_BLACK + metallic_shine permanent=FALSE complex_palette_blend unused_anim_battler=ANIM_ATTACKER, unused_subpriority_offset=2, selector=F_PAL_BG, delay=8, num_blends=2, color1=RGB_WHITEALPHA, blend_y1=14, color2=RGB_WHITEALPHA, blend_y2=0 waitforvisualfinish end @@ -4572,7 +4572,7 @@ Move_SHOCK_WAVE: Move_HARDEN: loopsewithpan SE_M_HARDEN, SOUND_PAN_ATTACKER, 28, 2 - createvisualtask AnimTask_MetallicShine, 5, 0, 0, RGB_BLACK + metallic_shine permanent=FALSE waitforvisualfinish end @@ -5155,7 +5155,7 @@ Move_FAINT_ATTACK: delay 0 playsewithpan SE_M_FAINT_ATTACK, SOUND_PAN_ATTACKER createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 18, 6, 1, 3 - createvisualtask AnimTask_AttackerFadeToInvisible, 2, 1 + attacker_fade_to_invisible step_delay=1 waitforvisualfinish clearmonbg ANIM_ATTACKER invisible ANIM_ATTACKER @@ -5175,7 +5175,7 @@ Move_FAINT_ATTACK: delay 32 createvisualtask AnimTask_InitAttackerFadeFromInvisible, 2 monbg ANIM_ATTACKER - createvisualtask AnimTask_AttackerFadeFromInvisible, 2, 1 + attacker_fade_from_invisible step_delay=1 waitforvisualfinish clearmonbg ANIM_ATTACKER delay 1 @@ -5286,8 +5286,8 @@ Move_BITE: monbg ANIM_TARGET setalpha 12, 8 playsewithpan SE_M_BITE, SOUND_PAN_TARGET - createsprite gSharpTeethSpriteTemplate, ANIM_ATTACKER, 2, 0, -32, 0, 0, 819, 10 - createsprite gSharpTeethSpriteTemplate, ANIM_ATTACKER, 2, 0, 32, 4, 0, -819, 10 + create_sharp_teeth_sprite ANIM_ATTACKER, 2, x=0, y=-32, animation=0, x_velocity=0, y_velocity=32/10, half_duration=10 + create_sharp_teeth_sprite ANIM_ATTACKER, 2, x=0, y=32, animation=4, x_velocity=0, y_velocity=-32/10, half_duration=10 delay 10 create_basic_hitsplat_sprite ANIM_ATTACKER, 2, x=0, y=0, relative_to=ANIM_TARGET, animation=2 createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 4, 7, 1 @@ -5305,15 +5305,15 @@ Move_CRUNCH: waitbgfadein setalpha 12, 8 playsewithpan SE_M_BITE, SOUND_PAN_TARGET - createsprite gSharpTeethSpriteTemplate, ANIM_ATTACKER, 2, -32, -32, 1, 819, 819, 10 - createsprite gSharpTeethSpriteTemplate, ANIM_ATTACKER, 2, 32, 32, 5, -819, -819, 10 + create_sharp_teeth_sprite ANIM_ATTACKER, 2, x=-32, y=-32, animation=1, x_velocity=32/10, y_velocity=32/10, half_duration=10 + create_sharp_teeth_sprite ANIM_ATTACKER, 2, x=32, y=32, animation=5, x_velocity=-32/10, y_velocity=-32/10, half_duration=10 delay 10 create_basic_hitsplat_sprite ANIM_ATTACKER, 2, x=-8, y=0, relative_to=ANIM_TARGET, animation=1 createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 7, 5, 2 waitforvisualfinish playsewithpan SE_M_BITE, SOUND_PAN_TARGET - createsprite gSharpTeethSpriteTemplate, ANIM_ATTACKER, 2, 32, -32, 7, -819, 819, 10 - createsprite gSharpTeethSpriteTemplate, ANIM_ATTACKER, 2, -32, 32, 3, 819, -819, 10 + create_sharp_teeth_sprite ANIM_ATTACKER, 2, x=32, y=-32, animation=7, x_velocity=-32/10, y_velocity=32/10, half_duration=10 + create_sharp_teeth_sprite ANIM_ATTACKER, 2, x=-32, y=32, animation=3, x_velocity=32/10, y_velocity=-32/10, half_duration=10 delay 10 create_basic_hitsplat_sprite ANIM_ATTACKER, 2, x=8, y=0, relative_to=ANIM_TARGET, animation=1 createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 8, 4, 2 @@ -5331,8 +5331,8 @@ Move_CLAMP: monbg ANIM_TARGET setalpha 12, 8 playsewithpan SE_M_VICEGRIP, SOUND_PAN_TARGET - createsprite gClampJawSpriteTemplate, ANIM_ATTACKER, 2, -32, 0, 2, 819, 0, 10 - createsprite gClampJawSpriteTemplate, ANIM_ATTACKER, 2, 32, 0, 6, -819, 0, 10 + create_clamp_jaw_sprite ANIM_ATTACKER, 2, x=-32, y=0, animation=2, x_velocity=32/10, y_velocity=0, half_duration=10 + create_clamp_jaw_sprite ANIM_ATTACKER, 2, x=32, y=0, animation=6, x_velocity=-32/10, y_velocity=0, half_duration=10 delay 10 create_basic_hitsplat_sprite ANIM_ATTACKER, 2, x=0, y=0, relative_to=ANIM_TARGET, animation=2 createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 3, 0, 5, 1 @@ -7219,7 +7219,7 @@ Move_STEEL_WING: loadspritegfx ANIM_TAG_GUST loadspritegfx ANIM_TAG_IMPACT loopsewithpan SE_M_HARDEN, SOUND_PAN_ATTACKER, 28, 2 - createvisualtask AnimTask_MetallicShine, 5, 0, 0, RGB_BLACK + metallic_shine permanent=FALSE waitforvisualfinish monbg ANIM_DEF_PARTNER splitbgprio ANIM_TARGET @@ -7245,7 +7245,7 @@ Move_STEEL_WING: Move_IRON_TAIL: loadspritegfx ANIM_TAG_IMPACT loopsewithpan SE_M_HARDEN, SOUND_PAN_ATTACKER, 28, 2 - createvisualtask AnimTask_MetallicShine, 5, 1, 0, RGB_BLACK + metallic_shine permanent=TRUE waitforvisualfinish monbg ANIM_TARGET setalpha 12, 8 @@ -7255,7 +7255,7 @@ Move_IRON_TAIL: createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET waitforvisualfinish - createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_ATTACKER, TRUE + set_original_pal battler=ANIM_ATTACKER clearmonbg ANIM_TARGET blendoff waitforvisualfinish @@ -7265,7 +7265,7 @@ Move_POISON_TAIL: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_POISON_BUBBLE loopsewithpan SE_M_HARDEN, SOUND_PAN_ATTACKER, 28, 2 - createvisualtask AnimTask_MetallicShine, 5, 1, 1, RGB(24, 6, 23) + metallic_shine permanent=TRUE, color=RGB(24, 6, 23) waitforvisualfinish monbg ANIM_TARGET setalpha 12, 8 @@ -7275,7 +7275,7 @@ Move_POISON_TAIL: createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET waitforvisualfinish - createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_ATTACKER, TRUE + set_original_pal battler=ANIM_ATTACKER clearmonbg ANIM_TARGET blendoff call PoisonBubblesEffect @@ -7285,20 +7285,20 @@ Move_POISON_TAIL: Move_METAL_CLAW: loadspritegfx ANIM_TAG_CLAW_SLASH loopsewithpan SE_M_HARDEN, SOUND_PAN_ATTACKER, 28, 2 - createvisualtask AnimTask_MetallicShine, 5, 0, 0, RGB_BLACK + metallic_shine permanent=FALSE waitforvisualfinish createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 6, 4 delay 2 playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET - createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, -10, -10, 0 - createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, -10, 10, 0 + create_claw_slash_sprite ANIM_TARGET, 2, x=-10, y=-10, animation=0 + create_claw_slash_sprite ANIM_TARGET, 2, x=-10, y=10, animation=0 shake_mon_or_platform velocity=-4, shake_timer=1, shake_duration=10, type=SHAKE_MON_Y, battler_selector=SHAKE_MON_TARGET delay 8 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 6, 4 delay 2 playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET - createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, 10, -10, 1 - createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, 10, 10, 1 + create_claw_slash_sprite ANIM_TARGET, 2, x=10, y=-10, animation=1 + create_claw_slash_sprite ANIM_TARGET, 2, x=10, y=10, animation=1 shake_mon_or_platform velocity=-4, shake_timer=1, shake_duration=10, type=SHAKE_MON_Y, battler_selector=SHAKE_MON_TARGET waitforvisualfinish end @@ -7947,16 +7947,16 @@ Move_PERISH_SONG: panse SE_M_PERISH_SONG, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0 delay 80 simple_palette_blend selector=F_PAL_BG, delay=3, initial_blend_y=0, target_blend_y=16, color=RGB_BLACK - createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_PLAYER_LEFT, FALSE - createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_PLAYER_RIGHT, FALSE - createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_OPPONENT_LEFT, FALSE - createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_OPPONENT_RIGHT, FALSE + set_grayscale_pal battler=ANIM_PLAYER_LEFT + set_grayscale_pal battler=ANIM_PLAYER_RIGHT + set_grayscale_pal battler=ANIM_OPPONENT_LEFT + set_grayscale_pal battler=ANIM_OPPONENT_RIGHT delay 100 simple_palette_blend selector=F_PAL_BG, delay=3, initial_blend_y=16, target_blend_y=0, color=RGB_BLACK - createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_PLAYER_LEFT, TRUE - createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_PLAYER_RIGHT, TRUE - createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_OPPONENT_LEFT, TRUE - createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_OPPONENT_RIGHT, TRUE + set_original_pal battler=ANIM_PLAYER_LEFT + set_original_pal battler=ANIM_PLAYER_RIGHT + set_original_pal battler=ANIM_OPPONENT_LEFT + set_original_pal battler=ANIM_OPPONENT_RIGHT waitforvisualfinish end @@ -8635,8 +8635,8 @@ Move_DRAGON_CLAW: createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 528, 30, 13, 50, ANIM_ATTACKER delay 2 createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_RAZOR_WIND, SOUND_PAN_TARGET - createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, -10, -10, 0 - createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, -10, 10, 0 + create_claw_slash_sprite ANIM_TARGET, 2, x=-10, y=-10, animation=0 + create_claw_slash_sprite ANIM_TARGET, 2, x=-10, y=10, animation=0 shake_mon_or_platform velocity=-4, shake_timer=1, shake_duration=10, type=SHAKE_MON_Y, battler_selector=SHAKE_MON_TARGET createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 32, 480, 20, 16, -46, ANIM_ATTACKER delay 2 @@ -8648,8 +8648,8 @@ Move_DRAGON_CLAW: createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 512, 25, 16, 46, ANIM_ATTACKER delay 2 createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_RAZOR_WIND, SOUND_PAN_TARGET - createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, 10, -10, 1 - createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, 10, 10, 1 + create_claw_slash_sprite ANIM_TARGET, 2, x=10, y=-10, animation=1 + create_claw_slash_sprite ANIM_TARGET, 2, x=10, y=10, animation=1 shake_mon_or_platform velocity=-4, shake_timer=1, shake_duration=10, type=SHAKE_MON_Y, battler_selector=SHAKE_MON_TARGET createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 33, 464, 30, 15, -50, ANIM_ATTACKER delay 2 @@ -9575,7 +9575,7 @@ Move_DOOM_DESIRE: createvisualtask GetIsDoomDesireHitTurn, 2 delay 1 monbg ANIM_ATK_PARTNER - createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_TARGET, FALSE + set_grayscale_pal battler=ANIM_TARGET simple_palette_blend selector=F_PAL_BG, delay=1, initial_blend_y=0, target_blend_y=4, color=RGB_BLACK waitforvisualfinish setalpha 8, 8 @@ -9583,7 +9583,7 @@ Move_DOOM_DESIRE: createvisualtask AnimTask_ScaleMonAndRestore, 5, -4, -4, 15, ANIM_ATTACKER, 1 waitforvisualfinish delay 20 - createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_TARGET, TRUE + set_original_pal battler=ANIM_TARGET simple_palette_blend selector=F_PAL_BG, delay=1, initial_blend_y=4, target_blend_y=0, color=RGB_BLACK waitforvisualfinish clearmonbg ANIM_ATK_PARTNER @@ -10407,8 +10407,8 @@ Status_Clamp: monbg ANIM_TARGET setalpha 12, 8 playsewithpan SE_M_VICEGRIP, SOUND_PAN_TARGET - createsprite gClampJawSpriteTemplate, ANIM_ATTACKER, 2, -32, 0, 2, 819, 0, 10 - createsprite gClampJawSpriteTemplate, ANIM_ATTACKER, 2, 32, 0, 6, -819, 0, 10 + create_clamp_jaw_sprite ANIM_ATTACKER, 2, x=-32, y=0, animation=2, x_velocity=32/10, y_velocity=0, half_duration=10 + create_clamp_jaw_sprite ANIM_ATTACKER, 2, x=32, y=0, animation=6, x_velocity=-32/10, y_velocity=0, half_duration=10 delay 10 create_basic_hitsplat_sprite ANIM_ATTACKER, 2, x=0, y=0, relative_to=ANIM_TARGET, animation=2 createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 3, 0, 5, 1 @@ -10471,7 +10471,7 @@ General_SmokeballEscape: createsprite gSmokeBallEscapeCloudSpriteTemplate, ANIM_ATTACKER, 124, 2, 14, -20, 30 delay 4 playsewithpan SE_BALL_OPEN, SOUND_PAN_TARGET - createvisualtask AnimTask_AttackerFadeToInvisible, 2, 2 + attacker_fade_to_invisible step_delay=2 createsprite gSmokeBallEscapeCloudSpriteTemplate, ANIM_ATTACKER, 123, 3, 4, 4, 30 delay 14 playsewithpan SE_BALL_OPEN, SOUND_PAN_TARGET diff --git a/src/battle_anim_dark.c b/src/battle_anim_dark.c index 03df99e135..ffa4c15362 100644 --- a/src/battle_anim_dark.c +++ b/src/battle_anim_dark.c @@ -1,5 +1,6 @@ #include "global.h" #include "battle_anim.h" +#include "battle_anim_internal.h" #include "contest.h" #include "gpu_regs.h" #include "graphics.h" @@ -189,8 +190,10 @@ const struct SpriteTemplate gClawSlashSpriteTemplate = void AnimTask_AttackerFadeToInvisible(u8 taskId) { + CMD_ARGS(stepDelay); + int battler; - gTasks[taskId].data[0] = gBattleAnimArgs[0]; + gTasks[taskId].data[0] = cmd->stepDelay; battler = gBattleAnimAttacker; gTasks[taskId].data[1] = 16; SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 0)); @@ -227,7 +230,9 @@ static void AnimTask_AttackerFadeToInvisible_Step(u8 taskId) void AnimTask_AttackerFadeFromInvisible(u8 taskId) { - gTasks[taskId].data[0] = gBattleAnimArgs[0]; + CMD_ARGS(stepDelay); + + gTasks[taskId].data[0] = cmd->stepDelay; gTasks[taskId].data[1] = BLDALPHA_BLEND(0, 16); gTasks[taskId].func = AnimTask_AttackerFadeFromInvisible_Step; SetGpuReg(REG_OFFSET_BLDALPHA, gTasks[taskId].data[1]); @@ -314,12 +319,14 @@ static void AnimUnusedBagSteal_Step(struct Sprite *sprite) // Move sprite inward for Bite/Crunch and Clamp static void AnimBite(struct Sprite *sprite) { - sprite->x += gBattleAnimArgs[0]; - sprite->y += gBattleAnimArgs[1]; - StartSpriteAffineAnim(sprite, gBattleAnimArgs[2]); - sprite->data[0] = gBattleAnimArgs[3]; - sprite->data[1] = gBattleAnimArgs[4]; - sprite->data[2] = gBattleAnimArgs[5]; + CMD_ARGS(x, y, animation, xVelocity, yVelocity, halfDuration); + + sprite->x += cmd->x; + sprite->y += cmd->y; + StartSpriteAffineAnim(sprite, cmd->animation); + sprite->data[0] = cmd->xVelocity; + sprite->data[1] = cmd->yVelocity; + sprite->data[2] = cmd->halfDuration; sprite->callback = AnimBite_Step1; } @@ -346,10 +353,12 @@ static void AnimBite_Step2(struct Sprite *sprite) // Launches a tear drop away from the battler. Used by Fake Tears static void AnimTearDrop(struct Sprite *sprite) { + CMD_ARGS(relativeTo, type); + u8 battler; s8 xOffset; - if (gBattleAnimArgs[0] == ANIM_ATTACKER) + if (cmd->relativeTo == ANIM_ATTACKER) battler = gBattleAnimAttacker; else battler = gBattleAnimTarget; @@ -357,7 +366,7 @@ static void AnimTearDrop(struct Sprite *sprite) xOffset = 20; sprite->oam.tileNum += 4; - switch (gBattleAnimArgs[1]) + switch (cmd->type) { case 0: sprite->x = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_RIGHT) - 8; @@ -798,21 +807,22 @@ void AnimTask_MementoHandleBg(u8 taskId) // Animates a deep slash from a claw. Used by Metal Claw, Dragon Claw, and Crush Claw static void AnimClawSlash(struct Sprite *sprite) { - sprite->x += gBattleAnimArgs[0]; - sprite->y += gBattleAnimArgs[1]; - StartSpriteAnim(sprite, gBattleAnimArgs[2]); + CMD_ARGS(x, y, animation); + + sprite->x += cmd->x; + sprite->y += cmd->y; + StartSpriteAnim(sprite, cmd->animation); sprite->callback = RunStoredCallbackWhenAnimEnds; StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); } // Makes the attacker metallic and shining. // Used by MOVE_HARDEN and MOVE_IRON_DEFENSE. -// arg0: if true won't change battler's palette back -// arg1: if true, use custom color -// arg2: custom color // Custom color argument is used in MOVE_POISON_TAIL to make the mon turn purplish/pinkish as if became cloaked in poison. void AnimTask_MetallicShine(u8 taskId) { + CMD_ARGS(permanent, useColor, color); + u16 species; u8 spriteId; u8 newSpriteId; @@ -869,15 +879,15 @@ void AnimTask_MetallicShine(u8 taskId) gBattle_BG1_Y = -gSprites[spriteId].y + 32; paletteNum = 16 + gSprites[spriteId].oam.paletteNum; - if (gBattleAnimArgs[1] == 0) + if (cmd->useColor == 0) SetGrayscaleOrOriginalPalette(paletteNum, FALSE); else - BlendPalette(BG_PLTT_ID(paletteNum), 16, 11, gBattleAnimArgs[2]); + BlendPalette(BG_PLTT_ID(paletteNum), 16, 11, cmd->color); gTasks[taskId].data[0] = newSpriteId; - gTasks[taskId].data[1] = gBattleAnimArgs[0]; - gTasks[taskId].data[2] = gBattleAnimArgs[1]; - gTasks[taskId].data[3] = gBattleAnimArgs[2]; + gTasks[taskId].data[1] = cmd->permanent; + gTasks[taskId].data[2] = cmd->useColor; + gTasks[taskId].data[3] = cmd->color; gTasks[taskId].data[6] = priorityChanged; gTasks[taskId].func = AnimTask_MetallicShine_Step; } @@ -926,22 +936,22 @@ static void AnimTask_MetallicShine_Step(u8 taskId) } // Changes battler's palette to either grayscale or original. -// arg0: which battler -// arg1: FALSE grayscale, TRUE original void AnimTask_SetGrayscaleOrOriginalPal(u8 taskId) { + CMD_ARGS(battler, mode); + u8 spriteId; u8 battler; bool8 calcSpriteId = FALSE; u8 position = B_POSITION_PLAYER_LEFT; - switch (gBattleAnimArgs[0]) + switch (cmd->battler) { case ANIM_ATTACKER: case ANIM_TARGET: case ANIM_ATK_PARTNER: case ANIM_DEF_PARTNER: - spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); + spriteId = GetAnimBattlerSpriteId(cmd->battler); break; case ANIM_PLAYER_LEFT: position = B_POSITION_PLAYER_LEFT; @@ -974,7 +984,7 @@ void AnimTask_SetGrayscaleOrOriginalPal(u8 taskId) } if (spriteId != SPRITE_NONE) - SetGrayscaleOrOriginalPalette(gSprites[spriteId].oam.paletteNum + 16, gBattleAnimArgs[1]); + SetGrayscaleOrOriginalPalette(gSprites[spriteId].oam.paletteNum + 16, cmd->mode); DestroyAnimVisualTask(taskId); }