From 22eed3f4bfd17b5ed3c47b5e0e8af369fa90c3c2 Mon Sep 17 00:00:00 2001 From: Martin Griffin Date: Tue, 3 Dec 2024 10:09:35 +0000 Subject: [PATCH] Partially document battle_anim_effects_1.c --- asm/macros/battle_anim_script.inc | 108 +++++ data/battle_anim_scripts.s | 520 ++++++++++++------------ src/battle_anim_effects_1.c | 629 ++++++++++++++++-------------- 3 files changed, 700 insertions(+), 557 deletions(-) diff --git a/asm/macros/battle_anim_script.inc b/asm/macros/battle_anim_script.inc index 2ed25ab4ac..d46638949b 100644 --- a/asm/macros/battle_anim_script.inc +++ b/asm/macros/battle_anim_script.inc @@ -380,6 +380,106 @@ createsprite gOverheatFlameSpriteTemplate, \anim_battler, \subpriority_offset, \speed, \unk1, \unk2, \duration, \y .endm + .macro create_sleep_powder_particle_sprite anim_battler:req, subpriority_offset:req, x:req, y:req, duration:req, y_velocity:req, wave_amplitude:req, wave_speed:req + createsprite gSleepPowderParticleSpriteTemplate, \anim_battler, \subpriority_offset, \x, \y, \duration, 256 * \y_velocity, \wave_amplitude, \wave_speed + .endm + + .macro create_stun_spore_particle_sprite anim_battler:req, subpriority_offset:req, x:req, y:req, duration:req, y_velocity:req, wave_amplitude:req, wave_speed:req + createsprite gStunSporeParticleSpriteTemplate, \anim_battler, \subpriority_offset, \x, \y, \duration, 256 * \y_velocity, \wave_amplitude, \wave_speed + .endm + + .macro create_poison_powder_particle_sprite anim_battler:req, subpriority_offset:req, x:req, y:req, duration:req, y_velocity:req, wave_amplitude:req, wave_speed:req + createsprite gPoisonPowderParticleSpriteTemplate, \anim_battler, \subpriority_offset, \x, \y, \duration, 256 * \y_velocity, \wave_amplitude, \wave_speed + .endm + + .macro create_power_absorption_orb_sprite anim_battler:req, subpriority_offset:req, x:req, y:req, duration:req + createsprite gPowerAbsorptionOrbSpriteTemplate, \anim_battler, \subpriority_offset, \x, \y, \duration + .endm + + .macro create_stockpile_absorption_orb_sprite anim_battler:req, subpriority_offset:req, x:req, y:req, duration:req + createsprite gStockpileAbsorptionOrbSpriteTemplate, \anim_battler, \subpriority_offset, \x, \y, \duration + .endm + + .macro create_solar_beam_big_orb_sprite anim_battler:req, subpriority_offset:req, x:req, y:req, duration:req, animation:req + createsprite gSolarBeamBigOrbSpriteTemplate, \anim_battler, \subpriority_offset, \x, \y, \duration, \animation + .endm + + .macro create_absorption_orb_sprite anim_battler:req, subpriority_offset:req, x:req, y:req, wave_amplitude:req, wave_period:req + createsprite gAbsorptionOrbSpriteTemplate, \anim_battler, \subpriority_offset, \x, \y, \wave_amplitude, \wave_period + .endm + + .macro create_hyper_beam_orb_sprite anim_battler:req, subpriority_offset:req + createsprite gHyperBeamOrbSpriteTemplate, \anim_battler, \subpriority_offset + .endm + + .macro createleechseedsprite anim_battler:req, subpriority_offset:req, initial_x:req, initial_y:req, target_x:req, target_y:req, duration:req, wave_amplitude:req + createsprite gLeechSeedSpriteTemplate, \anim_battler, \subpriority_offset, \initial_x, \initial_y, \target_x, \target_y, \duration, \wave_amplitude + .endm + + .macro create_spore_particle_sprite anim_battler:req, subpriority_offset:req, x:req, y:req, wave_offset:req, duration:req, blend:req + createsprite gSporeParticleSpriteTemplate, \anim_battler, \subpriority_offset, \x, \y, \wave_offset, \duration, \blend + .endm + + .macro create_petal_dance_big_flower_sprite anim_battler:req, subpriority_offset:req, initial_x:req, initial_y:req, target_y:req, duration:req + createsprite gPetalDanceBigFlowerSpriteTemplate, \anim_battler, \subpriority_offset, \initial_x, \initial_y, \target_y, \duration + .endm + + .macro create_petal_dance_small_flower_sprite anim_battler:req, subpriority_offset:req, initial_x:req, initial_y:req, target_y:req, duration:req + createsprite gPetalDanceSmallFlowerSpriteTemplate, \anim_battler, \subpriority_offset, \initial_x, \initial_y, \target_y, \duration + .endm + + .macro create_razor_leaf_particle_sprite anim_battler:req, subpriority_offset:req, upward_delta_x:req, upward_delta_y:req, upward_duration:req + createsprite gRazorLeafParticleSpriteTemplate, \anim_battler, \subpriority_offset, \upward_delta_x, \upward_delta_y, \upward_duration + .endm + + .macro create_razor_leaf_cutter_sprite anim_battler:req, subpriority_offset:req, initial_x:req, initial_y:req, target_x:req, target_y:req, duration:req, wave_amplitude:req, target_both:req + createsprite gRazorLeafCutterSpriteTemplate, \anim_battler, \subpriority_offset, \initial_x, \initial_y, \target_x, \target_y, \duration, \wave_amplitude, \target_both + .endm + + .macro create_swift_star_sprite anim_battler:req, subpriority_offset:req, initial_x:req, initial_y:req, target_x:req, target_y:req, duration:req, wave_amplitude:req, target_both:req + createsprite gSwiftStarSpriteTemplate, \anim_battler, \subpriority_offset, \initial_x, \initial_y, \target_x, \target_y, \duration, \wave_amplitude, \target_both + .endm + + .macro create_twister_leaf_sprite anim_battler:req, subpriority_offset:req, duration:req, distance_y:req, wave_period:req, wave_amplitude:req, speed_up_on_frame:req + createsprite gTwisterLeafSpriteTemplate, \anim_battler, \subpriority_offset, \duration, \distance_y, \wave_period, \wave_amplitude, \speed_up_on_frame + .endm + + .macro create_constrict_binding_sprite anim_battler:req, subpriority_offset:req, initial_x:req, initial_y:req, affine_animation:req, squeezes:req + createsprite gConstrictBindingSpriteTemplate, \anim_battler, \subpriority_offset, \initial_x, \initial_y, \affine_animation, \squeezes + .endm + + .macro create_mimic_orb_sprite anim_battler:req, subpriority_offset:req, initial_x:req, initial_y:req + createsprite gMimicOrbSpriteTemplate, \anim_battler, \subpriority_offset, \initial_x, \initial_y + .endm + + .macro create_ingrain_root_sprite anim_battler:req, subpriority_offset:req, offset_x:req, offset_y:req, subpriority:req, animation:req, duration:req + createsprite gIngrainRootSpriteTemplate, \anim_battler, \subpriority_offset, \offset_x, \offset_y, \subpriority - 30, \animation, \duration + .endm + + .macro create_frenzy_plant_root_sprite anim_battler:req, subpriority_offset:req, interpolate_percent:req, offset_x:req, offset_y:req, subpriority:req, animation:req, duration:req + createsprite gFrenzyPlantRootSpriteTemplate, \anim_battler, \subpriority_offset, \interpolate_percent, \offset_x, \offset_y, \subpriority - 30, \animation, \duration + .endm + + .macro create_ingrain_orb_sprite anim_battler:req, subpriority_offset:req, initial_x:req, initial_y:req, velocity_x:req, wave_amplitude:req, duration:req + createsprite gIngrainOrbSpriteTemplate, \anim_battler, \subpriority_offset, \initial_x, \initial_y, \velocity_x, \wave_amplitude, \duration + .endm + + .macro create_present_sprite anim_battler:req, subpriority_offset:req, initial_x:req, initial_y:req, unk2:req, unk3:req, unk4:req + createsprite gPresentSpriteTemplate, \anim_battler, \subpriority_offset, \initial_x, \initial_y, \unk2, \unk3, \unk4 + .endm + + .macro create_present_heal_particle_sprite anim_battler:req, subpriority_offset:req, initial_x:req, initial_y:req, velocity_y:req, unused3=1 + createsprite gPresentHealParticleSpriteTemplate, \anim_battler, \subpriority_offset, \initial_x, \initial_y, \velocity_y, \unused3 + .endm + + .macro create_item_steal_sprite anim_battler:req, subpriority_offset:req, initial_x:req, initial_y:req, unk2, unk3, unk4 + createsprite gItemStealSpriteTemplate, \anim_battler, \subpriority_offset, \initial_x, \initial_y, \unk2, \unk3, \unk4 + .endm + + .macro create_trick_bag_sprite anim_battler:req, subpriority_offset:req, initial_y:req, wave_offset:req + createsprite gTrickBagSpriteTemplate, \anim_battler, \subpriority_offset, \initial_y, \wave_offset + .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 @@ -443,6 +543,14 @@ createvisualtask AnimTask_AttackerFadeFromInvisible, \priority, \step_delay .endm + .macro shrink_target_copy priority=5, unk0:req, unk1:req + createvisualtask AnimTask_ShrinkTargetCopy, \priority, \unk0, \unk1 + .endm + + .macro create_leaf_blade_task priority=5 + createvisualtask AnimTask_LeafBlade, \priority + .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 0bf4c93050..409e2d60ff 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -458,72 +458,72 @@ Move_POISON_POWDER: loadspritegfx ANIM_TAG_POISON_POWDER loadspritegfx ANIM_TAG_POISON_BUBBLE loopsewithpan SE_M_POISON_POWDER, SOUND_PAN_TARGET, 10, 6 - createsprite gPoisonPowderParticleSpriteTemplate, ANIM_TARGET, 2, -30, -22, 117, 80, 5, 1 - createsprite gPoisonPowderParticleSpriteTemplate, ANIM_TARGET, 2, 10, -22, 117, 80, -5, 1 - createsprite gPoisonPowderParticleSpriteTemplate, ANIM_TARGET, 2, -25, -22, 117, 112, 5, 3 + create_poison_powder_particle_sprite ANIM_TARGET, 2, x=-30, y=-22, duration=117, y_velocity=80/256, wave_amplitude=5, wave_speed=1 + create_poison_powder_particle_sprite ANIM_TARGET, 2, x=10, y=-22, duration=117, y_velocity=80/256, wave_amplitude=-5, wave_speed=1 + create_poison_powder_particle_sprite ANIM_TARGET, 2, x=-25, y=-22, duration=117, y_velocity=112/256, wave_amplitude=5, wave_speed=3 delay 15 - createsprite gPoisonPowderParticleSpriteTemplate, ANIM_TARGET, 2, -5, -22, 117, 80, -5, 1 - createsprite gPoisonPowderParticleSpriteTemplate, ANIM_TARGET, 2, 5, -22, 117, 96, 5, 1 - createsprite gPoisonPowderParticleSpriteTemplate, ANIM_TARGET, 2, 0, -22, 117, 69, -5, 1 - createsprite gPoisonPowderParticleSpriteTemplate, ANIM_TARGET, 2, -15, -22, 117, 112, 5, 2 + create_poison_powder_particle_sprite ANIM_TARGET, 2, x=-5, y=-22, duration=117, y_velocity=80/256, wave_amplitude=-5, wave_speed=1 + create_poison_powder_particle_sprite ANIM_TARGET, 2, x=5, y=-22, duration=117, y_velocity=96/256, wave_amplitude=5, wave_speed=1 + create_poison_powder_particle_sprite ANIM_TARGET, 2, x=0, y=-22, duration=117, y_velocity=69/256, wave_amplitude=-5, wave_speed=1 + create_poison_powder_particle_sprite ANIM_TARGET, 2, x=-15, y=-22, duration=117, y_velocity=112/256, wave_amplitude=5, wave_speed=2 delay 30 - createsprite gPoisonPowderParticleSpriteTemplate, ANIM_TARGET, 2, -15, -22, 117, 112, 5, 2 - createsprite gPoisonPowderParticleSpriteTemplate, ANIM_TARGET, 2, 15, -22, 117, 80, -5, 1 - createsprite gPoisonPowderParticleSpriteTemplate, ANIM_TARGET, 2, -10, -22, 117, 96, 7, 2 - createsprite gPoisonPowderParticleSpriteTemplate, ANIM_TARGET, 2, -5, -22, 117, 90, -8, 0 + create_poison_powder_particle_sprite ANIM_TARGET, 2, x=-15, y=-22, duration=117, y_velocity=112/256, wave_amplitude=5, wave_speed=2 + create_poison_powder_particle_sprite ANIM_TARGET, 2, x=15, y=-22, duration=117, y_velocity=80/256, wave_amplitude=-5, wave_speed=1 + create_poison_powder_particle_sprite ANIM_TARGET, 2, x=-10, y=-22, duration=117, y_velocity=96/256, wave_amplitude=7, wave_speed=2 + create_poison_powder_particle_sprite ANIM_TARGET, 2, x=-5, y=-22, duration=117, y_velocity=90/256, wave_amplitude=-8, wave_speed=0 delay 20 - createsprite gPoisonPowderParticleSpriteTemplate, ANIM_TARGET, 2, -10, -22, 117, 80, -5, 1 - createsprite gPoisonPowderParticleSpriteTemplate, ANIM_TARGET, 2, 0, -22, 117, 89, 5, 2 - createsprite gPoisonPowderParticleSpriteTemplate, ANIM_TARGET, 2, 20, -22, 117, 112, -8, 2 - createsprite gPoisonPowderParticleSpriteTemplate, ANIM_TARGET, 2, 5, -22, 117, 80, 5, 1 + create_poison_powder_particle_sprite ANIM_TARGET, 2, x=-10, y=-22, duration=117, y_velocity=80/256, wave_amplitude=-5, wave_speed=1 + create_poison_powder_particle_sprite ANIM_TARGET, 2, x=0, y=-22, duration=117, y_velocity=89/256, wave_amplitude=5, wave_speed=2 + create_poison_powder_particle_sprite ANIM_TARGET, 2, x=20, y=-22, duration=117, y_velocity=112/256, wave_amplitude=-8, wave_speed=2 + create_poison_powder_particle_sprite ANIM_TARGET, 2, x=5, y=-22, duration=117, y_velocity=80/256, wave_amplitude=5, wave_speed=1 waitforvisualfinish end Move_STUN_SPORE: loadspritegfx ANIM_TAG_STUN_SPORE loopsewithpan SE_M_POISON_POWDER, SOUND_PAN_TARGET, 10, 6 - createsprite gStunSporeParticleSpriteTemplate, ANIM_TARGET, 2, -30, -22, 117, 80, 5, 1 - createsprite gStunSporeParticleSpriteTemplate, ANIM_TARGET, 2, 10, -22, 117, 80, -5, 1 - createsprite gStunSporeParticleSpriteTemplate, ANIM_TARGET, 2, -25, -22, 117, 112, 5, 3 + create_stun_spore_particle_sprite ANIM_TARGET, 2, x=-30, y=-22, duration=117, y_velocity=80/256, wave_amplitude=5, wave_speed=1 + create_stun_spore_particle_sprite ANIM_TARGET, 2, x=10, y=-22, duration=117, y_velocity=80/256, wave_amplitude=-5, wave_speed=1 + create_stun_spore_particle_sprite ANIM_TARGET, 2, x=-25, y=-22, duration=117, y_velocity=112/256, wave_amplitude=5, wave_speed=3 delay 15 - createsprite gStunSporeParticleSpriteTemplate, ANIM_TARGET, 2, -5, -22, 117, 80, -5, 1 - createsprite gStunSporeParticleSpriteTemplate, ANIM_TARGET, 2, 5, -22, 117, 96, 5, 1 - createsprite gStunSporeParticleSpriteTemplate, ANIM_TARGET, 2, 0, -22, 117, 69, -5, 1 - createsprite gStunSporeParticleSpriteTemplate, ANIM_TARGET, 2, -15, -22, 117, 112, 5, 2 + create_stun_spore_particle_sprite ANIM_TARGET, 2, x=-5, y=-22, duration=117, y_velocity=80/256, wave_amplitude=-5, wave_speed=1 + create_stun_spore_particle_sprite ANIM_TARGET, 2, x=5, y=-22, duration=117, y_velocity=96/256, wave_amplitude=5, wave_speed=1 + create_stun_spore_particle_sprite ANIM_TARGET, 2, x=0, y=-22, duration=117, y_velocity=69/256, wave_amplitude=-5, wave_speed=1 + create_stun_spore_particle_sprite ANIM_TARGET, 2, x=-15, y=-22, duration=117, y_velocity=112/256, wave_amplitude=5, wave_speed=2 delay 30 - createsprite gStunSporeParticleSpriteTemplate, ANIM_TARGET, 2, -15, -22, 117, 112, 5, 2 - createsprite gStunSporeParticleSpriteTemplate, ANIM_TARGET, 2, 15, -22, 117, 80, -5, 1 - createsprite gStunSporeParticleSpriteTemplate, ANIM_TARGET, 2, -10, -22, 117, 96, 7, 2 - createsprite gStunSporeParticleSpriteTemplate, ANIM_TARGET, 2, -5, -22, 117, 90, -8, 0 + create_stun_spore_particle_sprite ANIM_TARGET, 2, x=-15, y=-22, duration=117, y_velocity=112/256, wave_amplitude=5, wave_speed=2 + create_stun_spore_particle_sprite ANIM_TARGET, 2, x=15, y=-22, duration=117, y_velocity=80/256, wave_amplitude=-5, wave_speed=1 + create_stun_spore_particle_sprite ANIM_TARGET, 2, x=-10, y=-22, duration=117, y_velocity=96/256, wave_amplitude=7, wave_speed=2 + create_stun_spore_particle_sprite ANIM_TARGET, 2, x=-5, y=-22, duration=117, y_velocity=90/256, wave_amplitude=-8, wave_speed=0 delay 20 - createsprite gStunSporeParticleSpriteTemplate, ANIM_TARGET, 2, -10, -22, 117, 80, -5, 1 - createsprite gStunSporeParticleSpriteTemplate, ANIM_TARGET, 2, 0, -22, 117, 89, 5, 2 - createsprite gStunSporeParticleSpriteTemplate, ANIM_TARGET, 2, 20, -22, 117, 112, -8, 2 - createsprite gStunSporeParticleSpriteTemplate, ANIM_TARGET, 2, 5, -22, 117, 80, 5, 1 + create_stun_spore_particle_sprite ANIM_TARGET, 2, x=-10, y=-22, duration=117, y_velocity=80/256, wave_amplitude=-5, wave_speed=1 + create_stun_spore_particle_sprite ANIM_TARGET, 2, x=0, y=-22, duration=117, y_velocity=89/256, wave_amplitude=5, wave_speed=2 + create_stun_spore_particle_sprite ANIM_TARGET, 2, x=20, y=-22, duration=117, y_velocity=112/256, wave_amplitude=-8, wave_speed=2 + create_stun_spore_particle_sprite ANIM_TARGET, 2, x=5, y=-22, duration=117, y_velocity=80/256, wave_amplitude=5, wave_speed=1 waitforvisualfinish end Move_SLEEP_POWDER: loadspritegfx ANIM_TAG_SLEEP_POWDER loopsewithpan SE_M_POISON_POWDER, SOUND_PAN_TARGET, 10, 6 - createsprite gSleepPowderParticleSpriteTemplate, ANIM_TARGET, 2, -30, -22, 117, 80, 5, 1 - createsprite gSleepPowderParticleSpriteTemplate, ANIM_TARGET, 2, 10, -22, 117, 80, -5, 1 - createsprite gSleepPowderParticleSpriteTemplate, ANIM_TARGET, 2, -25, -22, 117, 112, 5, 3 + create_sleep_powder_particle_sprite ANIM_TARGET, 2, x=-30, y=-22, duration=117, y_velocity=80/256, wave_amplitude=5, wave_speed=1 + create_sleep_powder_particle_sprite ANIM_TARGET, 2, x=10, y=-22, duration=117, y_velocity=80/256, wave_amplitude=-5, wave_speed=1 + create_sleep_powder_particle_sprite ANIM_TARGET, 2, x=-25, y=-22, duration=117, y_velocity=112/256, wave_amplitude=5, wave_speed=3 delay 15 - createsprite gSleepPowderParticleSpriteTemplate, ANIM_TARGET, 2, -5, -22, 117, 80, -5, 1 - createsprite gSleepPowderParticleSpriteTemplate, ANIM_TARGET, 2, 5, -22, 117, 96, 5, 1 - createsprite gSleepPowderParticleSpriteTemplate, ANIM_TARGET, 2, 0, -22, 117, 69, -5, 1 - createsprite gSleepPowderParticleSpriteTemplate, ANIM_TARGET, 2, -15, -22, 117, 112, 5, 2 + create_sleep_powder_particle_sprite ANIM_TARGET, 2, x=-5, y=-22, duration=117, y_velocity=80/256, wave_amplitude=-5, wave_speed=1 + create_sleep_powder_particle_sprite ANIM_TARGET, 2, x=5, y=-22, duration=117, y_velocity=96/256, wave_amplitude=5, wave_speed=1 + create_sleep_powder_particle_sprite ANIM_TARGET, 2, x=0, y=-22, duration=117, y_velocity=69/256, wave_amplitude=-5, wave_speed=1 + create_sleep_powder_particle_sprite ANIM_TARGET, 2, x=-15, y=-22, duration=117, y_velocity=112/256, wave_amplitude=5, wave_speed=2 delay 30 - createsprite gSleepPowderParticleSpriteTemplate, ANIM_TARGET, 2, -15, -22, 117, 112, 5, 2 - createsprite gSleepPowderParticleSpriteTemplate, ANIM_TARGET, 2, 15, -22, 117, 80, -5, 1 - createsprite gSleepPowderParticleSpriteTemplate, ANIM_TARGET, 2, -10, -22, 117, 96, 7, 2 - createsprite gSleepPowderParticleSpriteTemplate, ANIM_TARGET, 2, -5, -22, 117, 90, -8, 0 + create_sleep_powder_particle_sprite ANIM_TARGET, 2, x=-15, y=-22, duration=117, y_velocity=112/256, wave_amplitude=5, wave_speed=2 + create_sleep_powder_particle_sprite ANIM_TARGET, 2, x=15, y=-22, duration=117, y_velocity=80/256, wave_amplitude=-5, wave_speed=1 + create_sleep_powder_particle_sprite ANIM_TARGET, 2, x=-10, y=-22, duration=117, y_velocity=96/256, wave_amplitude=7, wave_speed=2 + create_sleep_powder_particle_sprite ANIM_TARGET, 2, x=-5, y=-22, duration=117, y_velocity=90/256, wave_amplitude=-8, wave_speed=0 delay 20 - createsprite gSleepPowderParticleSpriteTemplate, ANIM_TARGET, 2, -10, -22, 117, 80, -5, 1 - createsprite gSleepPowderParticleSpriteTemplate, ANIM_TARGET, 2, 0, -22, 117, 89, 5, 2 - createsprite gSleepPowderParticleSpriteTemplate, ANIM_TARGET, 2, 20, -22, 117, 112, -8, 2 - createsprite gSleepPowderParticleSpriteTemplate, ANIM_TARGET, 2, 5, -22, 117, 80, 5, 1 + create_sleep_powder_particle_sprite ANIM_TARGET, 2, x=-10, y=-22, duration=117, y_velocity=80/256, wave_amplitude=-5, wave_speed=1 + create_sleep_powder_particle_sprite ANIM_TARGET, 2, x=0, y=-22, duration=117, y_velocity=89/256, wave_amplitude=5, wave_speed=2 + create_sleep_powder_particle_sprite ANIM_TARGET, 2, x=20, y=-22, duration=117, y_velocity=112/256, wave_amplitude=-8, wave_speed=2 + create_sleep_powder_particle_sprite ANIM_TARGET, 2, x=5, y=-22, duration=117, y_velocity=80/256, wave_amplitude=5, wave_speed=1 waitforvisualfinish end @@ -533,21 +533,21 @@ Move_SWIFT: monbg ANIM_DEF_PARTNER setalpha 12, 8 playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER - createsprite gSwiftStarSpriteTemplate, ANIM_TARGET, 3, 20, -10, 20, 0, 22, 20, 1 + create_swift_star_sprite ANIM_TARGET, 3, initial_x=20, initial_y=-10, target_x=20, target_y=0, duration=22, wave_amplitude=20, target_both=TRUE delay 5 playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER - createsprite gSwiftStarSpriteTemplate, ANIM_TARGET, 3, 20, -10, 20, 5, 22, -18, 1 + create_swift_star_sprite ANIM_TARGET, 3, initial_x=20, initial_y=-10, target_x=20, target_y=5, duration=22, wave_amplitude=-18, target_both=TRUE delay 5 playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER - createsprite gSwiftStarSpriteTemplate, ANIM_TARGET, 3, 20, -10, 20, -10, 22, 15, 1 + create_swift_star_sprite ANIM_TARGET, 3, initial_x=20, initial_y=-10, target_x=20, target_y=-10, duration=22, wave_amplitude=15, target_both=TRUE createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 18, 1 createvisualtask AnimTask_ShakeMon2, 2, ANIM_DEF_PARTNER, 2, 0, 18, 1 delay 5 playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER - createsprite gSwiftStarSpriteTemplate, ANIM_TARGET, 3, 20, -10, 20, 0, 22, -20, 1 + create_swift_star_sprite ANIM_TARGET, 3, initial_x=20, initial_y=-10, target_x=20, target_y=0, duration=22, wave_amplitude=-20, target_both=TRUE delay 5 playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER - createsprite gSwiftStarSpriteTemplate, ANIM_TARGET, 3, 20, -10, 20, 0, 22, 12, 1 + create_swift_star_sprite ANIM_TARGET, 3, initial_x=20, initial_y=-10, target_x=20, target_y=0, duration=22, wave_amplitude=12, target_both=TRUE delay 5 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER @@ -904,13 +904,13 @@ FireBlastCross: Move_LEECH_SEED: loadspritegfx ANIM_TAG_SEED playsewithpan SE_M_POISON_POWDER, SOUND_PAN_ATTACKER - createsprite gLeechSeedSpriteTemplate, ANIM_TARGET, 2, 15, 0, 0, 24, 35, -32 + createleechseedsprite ANIM_TARGET, 2, initial_x=15, initial_y=0, target_x=0, target_y=24, duration=35, wave_amplitude=-32 delay 8 playsewithpan SE_M_POISON_POWDER, SOUND_PAN_ATTACKER - createsprite gLeechSeedSpriteTemplate, ANIM_TARGET, 2, 15, 0, -16, 24, 35, -40 + createleechseedsprite ANIM_TARGET, 2, initial_x=15, initial_y=0, target_x=-16, target_y=24, duration=35, wave_amplitude=-40 delay 8 playsewithpan SE_M_POISON_POWDER, SOUND_PAN_ATTACKER - createsprite gLeechSeedSpriteTemplate, ANIM_TARGET, 2, 15, 0, 16, 24, 35, -37 + createleechseedsprite ANIM_TARGET, 2, initial_x=15, initial_y=0, target_x=16, target_y=24, duration=35, wave_amplitude=-37 delay 12 loopsewithpan SE_M_TAIL_WHIP, SOUND_PAN_TARGET, 10, 8 waitforvisualfinish @@ -4494,7 +4494,7 @@ Move_CALM_MIND: Move_LEAF_BLADE: loadspritegfx ANIM_TAG_LEAF loadspritegfx ANIM_TAG_CROSS_IMPACT - createvisualtask AnimTask_LeafBlade, 5 + create_leaf_blade_task delay 2 createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 8, 1 playsewithpan SE_M_CUT, SOUND_PAN_TARGET @@ -5445,54 +5445,54 @@ SolarBeamSetUp: blendoff goto SolarBeamEnd SolarBeamAbsorbEffect: - createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 40, 40, 16 + create_power_absorption_orb_sprite ANIM_ATTACKER, 2, x=40, y=40, duration=16 delay 2 - createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, -40, -40, 16 + create_power_absorption_orb_sprite ANIM_ATTACKER, 2, x=-40, y=-40, duration=16 delay 2 - createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 0, 40, 16 + create_power_absorption_orb_sprite ANIM_ATTACKER, 2, x=0, y=40, duration=16 delay 2 - createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 0, -40, 16 + create_power_absorption_orb_sprite ANIM_ATTACKER, 2, x=0, y=-40, duration=16 delay 2 - createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 40, -20, 16 + create_power_absorption_orb_sprite ANIM_ATTACKER, 2, x=40, y=-20, duration=16 delay 2 - createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 40, 20, 16 + create_power_absorption_orb_sprite ANIM_ATTACKER, 2, x=40, y=20, duration=16 delay 2 - createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, -40, -20, 16 + create_power_absorption_orb_sprite ANIM_ATTACKER, 2, x=-40, y=-20, duration=16 delay 2 - createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, -40, 20, 16 + create_power_absorption_orb_sprite ANIM_ATTACKER, 2, x=-40, y=20, duration=16 delay 2 - createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, -20, 30, 16 + create_power_absorption_orb_sprite ANIM_ATTACKER, 2, x=-20, y=30, duration=16 delay 2 - createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 20, -30, 16 + create_power_absorption_orb_sprite ANIM_ATTACKER, 2, x=20, y=-30, duration=16 delay 2 - createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, -20, -30, 16 + create_power_absorption_orb_sprite ANIM_ATTACKER, 2, x=-20, y=-30, duration=16 delay 2 - createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 20, 30, 16 + create_power_absorption_orb_sprite ANIM_ATTACKER, 2, x=20, y=30, duration=16 delay 2 - createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, -40, 0, 16 + create_power_absorption_orb_sprite ANIM_ATTACKER, 2, x=-40, y=0, duration=16 delay 2 - createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 40, 0, 16 + create_power_absorption_orb_sprite ANIM_ATTACKER, 2, x=40, y=0, duration=16 delay 2 return SolarBeamUnleash: call SetSolarBeamBg panse SE_M_SOLAR_BEAM, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0 createvisualtask AnimTask_CreateSmallSolarBeamOrbs, 5 - createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 0 + create_solar_beam_big_orb_sprite ANIM_TARGET, 3, x=15, y=0, duration=20, animation=0 delay 4 - createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 1 + create_solar_beam_big_orb_sprite ANIM_TARGET, 3, x=15, y=0, duration=20, animation=1 delay 4 createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 1, 0, 10, RGB(25, 31, 0) - createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 2 + create_solar_beam_big_orb_sprite ANIM_TARGET, 3, x=15, y=0, duration=20, animation=2 delay 4 createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 2, 0, 65, 1 - createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 3 + create_solar_beam_big_orb_sprite ANIM_TARGET, 3, x=15, y=0, duration=20, animation=3 delay 4 - createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 4 + create_solar_beam_big_orb_sprite ANIM_TARGET, 3, x=15, y=0, duration=20, animation=4 delay 4 - createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 5 + create_solar_beam_big_orb_sprite ANIM_TARGET, 3, x=15, y=0, duration=20, animation=5 delay 4 - createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 6 + create_solar_beam_big_orb_sprite ANIM_TARGET, 3, x=15, y=0, duration=20, animation=6 delay 4 call SolarBeamUnleash1 call SolarBeamUnleash1 @@ -5501,19 +5501,19 @@ SolarBeamUnleash: call UnsetSolarBeamBg goto SolarBeamEnd SolarBeamUnleash1: - createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 0 + create_solar_beam_big_orb_sprite ANIM_TARGET, 3, x=15, y=0, duration=20, animation=0 delay 4 - createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 1 + create_solar_beam_big_orb_sprite ANIM_TARGET, 3, x=15, y=0, duration=20, animation=1 delay 4 - createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 2 + create_solar_beam_big_orb_sprite ANIM_TARGET, 3, x=15, y=0, duration=20, animation=2 delay 4 - createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 3 + create_solar_beam_big_orb_sprite ANIM_TARGET, 3, x=15, y=0, duration=20, animation=3 delay 4 - createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 4 + create_solar_beam_big_orb_sprite ANIM_TARGET, 3, x=15, y=0, duration=20, animation=4 delay 4 - createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 5 + create_solar_beam_big_orb_sprite ANIM_TARGET, 3, x=15, y=0, duration=20, animation=5 delay 4 - createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 6 + create_solar_beam_big_orb_sprite ANIM_TARGET, 3, x=15, y=0, duration=20, animation=6 delay 4 return @@ -5719,28 +5719,28 @@ Move_ABSORB: AbsorbEffect: playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=0, y=5, wave_amplitude=8, wave_period=26 delay 4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=10, y=-5, wave_amplitude=-8, wave_period=26 delay 4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -5, 15, 16, 33 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=-5, y=15, wave_amplitude=16, wave_period=33 delay 4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, -15, -16, 36 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=0, y=-15, wave_amplitude=-16, wave_period=36 delay 4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=0, y=5, wave_amplitude=8, wave_period=26 delay 4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=10, y=-5, wave_amplitude=-8, wave_period=26 delay 4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -10, 20, 20, 39 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=-10, y=20, wave_amplitude=20, wave_period=39 delay 4 playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 5, -18, -20, 35 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=5, y=-18, wave_amplitude=-20, wave_period=35 delay 4 return @@ -5772,36 +5772,36 @@ Move_MEGA_DRAIN: MegaDrainAbsorbEffect: playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 5, -18, -20, 35 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=0, y=5, wave_amplitude=8, wave_period=26 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=5, y=-18, wave_amplitude=-20, wave_period=35 delay 4 playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26 - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -10, 20, 20, 39 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=10, y=-5, wave_amplitude=-8, wave_period=26 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=-10, y=20, wave_amplitude=20, wave_period=39 delay 4 playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -5, 15, 16, 33 - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=-5, y=15, wave_amplitude=16, wave_period=33 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=10, y=-5, wave_amplitude=-8, wave_period=26 delay 4 playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, -15, -16, 36 - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=0, y=-15, wave_amplitude=-16, wave_period=36 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=0, y=5, wave_amplitude=8, wave_period=26 delay 4 playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, -15, -16, 36 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=0, y=5, wave_amplitude=8, wave_period=26 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=0, y=-15, wave_amplitude=-16, wave_period=36 delay 4 playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26 - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -5, 15, 16, 33 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=10, y=-5, wave_amplitude=-8, wave_period=26 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=-5, y=15, wave_amplitude=16, wave_period=33 delay 4 playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -10, 20, 20, 39 - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=-10, y=20, wave_amplitude=20, wave_period=39 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=10, y=-5, wave_amplitude=-8, wave_period=26 delay 4 playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 5, -18, -20, 35 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=0, y=5, wave_amplitude=8, wave_period=26 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=5, y=-18, wave_amplitude=-20, wave_period=35 delay 4 return @@ -5833,44 +5833,44 @@ Move_GIGA_DRAIN: GigaDrainAbsorbEffect: playsewithpan SE_M_GIGA_DRAIN, SOUND_PAN_TARGET - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 5, -18, -40, 35 - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -10, 20, 20, 39 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=0, y=5, wave_amplitude=8, wave_period=26 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=5, y=-18, wave_amplitude=-40, wave_period=35 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=-10, y=20, wave_amplitude=20, wave_period=39 delay 4 playsewithpan SE_M_GIGA_DRAIN, SOUND_PAN_TARGET - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 28, 26 - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26 - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -10, 20, 40, 39 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=0, y=5, wave_amplitude=28, wave_period=26 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=10, y=-5, wave_amplitude=-8, wave_period=26 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=-10, y=20, wave_amplitude=40, wave_period=39 delay 4 playsewithpan SE_M_GIGA_DRAIN, SOUND_PAN_TARGET - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26 - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -5, 15, 16, 33 - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -32, 26 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=10, y=-5, wave_amplitude=-8, wave_period=26 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=-5, y=15, wave_amplitude=16, wave_period=33 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=10, y=-5, wave_amplitude=-32, wave_period=26 delay 4 playsewithpan SE_M_GIGA_DRAIN, SOUND_PAN_TARGET - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, -15, -16, 36 - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=0, y=-15, wave_amplitude=-16, wave_period=36 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=0, y=5, wave_amplitude=8, wave_period=26 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=10, y=-5, wave_amplitude=-8, wave_period=26 delay 4 playsewithpan SE_M_GIGA_DRAIN, SOUND_PAN_TARGET - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -5, 15, 16, 33 - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, -15, -16, 36 - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=-5, y=15, wave_amplitude=16, wave_period=33 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=0, y=-15, wave_amplitude=-16, wave_period=36 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=0, y=5, wave_amplitude=8, wave_period=26 delay 4 playsewithpan SE_M_GIGA_DRAIN, SOUND_PAN_TARGET - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -5, 15, 16, 33 - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -40, 26 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=0, y=5, wave_amplitude=8, wave_period=26 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=-5, y=15, wave_amplitude=16, wave_period=33 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=10, y=-5, wave_amplitude=-40, wave_period=26 delay 4 playsewithpan SE_M_GIGA_DRAIN, SOUND_PAN_TARGET - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -5, 15, 36, 33 - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26 - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -10, 20, 20, 39 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=-5, y=15, wave_amplitude=36, wave_period=33 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=10, y=-5, wave_amplitude=-8, wave_period=26 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=-10, y=20, wave_amplitude=20, wave_period=39 delay 4 playsewithpan SE_M_GIGA_DRAIN, SOUND_PAN_TARGET - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 5, -18, -20, 35 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=0, y=5, wave_amplitude=8, wave_period=26 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=0, y=5, wave_amplitude=8, wave_period=26 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=5, y=-18, wave_amplitude=-20, wave_period=35 delay 4 return @@ -6753,11 +6753,11 @@ Move_COTTON_SPORE: end CreateCottonSpores: - createsprite gSporeParticleSpriteTemplate, ANIM_ATTACKER, 2, 0, -20, 85, 80, 0 + create_spore_particle_sprite ANIM_ATTACKER, 2, x=0, y=-20, wave_offset=85, duration=80, blend=FALSE delay 12 - createsprite gSporeParticleSpriteTemplate, ANIM_ATTACKER, 2, 0, -10, 170, 80, 0 + create_spore_particle_sprite ANIM_ATTACKER, 2, x=0, y=-10, wave_offset=170, duration=80, blend=FALSE delay 12 - createsprite gSporeParticleSpriteTemplate, ANIM_ATTACKER, 2, 0, -15, 0, 80, 0 + create_spore_particle_sprite ANIM_ATTACKER, 2, x=0, y=-15, wave_offset=0, duration=80, blend=FALSE delay 12 return @@ -6777,11 +6777,11 @@ Move_SPORE: end CreateSpore: - createsprite gSporeParticleSpriteTemplate, ANIM_TARGET, 2, 0, -20, 85, 80, 1 + create_spore_particle_sprite ANIM_TARGET, 2, x=0, y=-20, wave_offset=85, duration=80, blend=TRUE delay 12 - createsprite gSporeParticleSpriteTemplate, ANIM_TARGET, 2, 0, -10, 170, 80, 1 + create_spore_particle_sprite ANIM_TARGET, 2, x=0, y=-10, wave_offset=170, duration=80, blend=TRUE delay 12 - createsprite gSporeParticleSpriteTemplate, ANIM_TARGET, 2, 0, -15, 0, 80, 1 + create_spore_particle_sprite ANIM_TARGET, 2, x=0, y=-15, wave_offset=0, duration=80, blend=TRUE delay 12 return @@ -6792,23 +6792,23 @@ Move_PETAL_DANCE: setalpha 12, 8 playsewithpan SE_M_PETAL_DANCE, SOUND_PAN_ATTACKER createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 12, 6, 6, 3 - createsprite gPetalDanceBigFlowerSpriteTemplate, ANIM_ATTACKER, 2, 0, -24, 8, 140 - createsprite gPetalDanceSmallFlowerSpriteTemplate, ANIM_ATTACKER, 2, 16, -24, 8, 100 - createsprite gPetalDanceSmallFlowerSpriteTemplate, ANIM_ATTACKER, 2, -16, -24, 8, 100 + create_petal_dance_big_flower_sprite ANIM_ATTACKER, 2, initial_x=0, initial_y=-24, target_y=8, duration=140 + create_petal_dance_small_flower_sprite ANIM_ATTACKER, 2, initial_x=16, initial_y=-24, target_y=8, duration=100 + create_petal_dance_small_flower_sprite ANIM_ATTACKER, 2, initial_x=-16, initial_y=-24, target_y=8, duration=100 delay 15 - createsprite gPetalDanceBigFlowerSpriteTemplate, ANIM_ATTACKER, 2, 0, -24, 8, 140 - createsprite gPetalDanceSmallFlowerSpriteTemplate, ANIM_ATTACKER, 2, 32, -24, 8, 100 - createsprite gPetalDanceSmallFlowerSpriteTemplate, ANIM_ATTACKER, 2, -32, -24, 8, 100 + create_petal_dance_big_flower_sprite ANIM_ATTACKER, 2, initial_x=0, initial_y=-24, target_y=8, duration=140 + create_petal_dance_small_flower_sprite ANIM_ATTACKER, 2, initial_x=32, initial_y=-24, target_y=8, duration=100 + create_petal_dance_small_flower_sprite ANIM_ATTACKER, 2, initial_x=-32, initial_y=-24, target_y=8, duration=100 delay 15 - createsprite gPetalDanceBigFlowerSpriteTemplate, ANIM_ATTACKER, 2, 0, -24, 8, 140 - createsprite gPetalDanceSmallFlowerSpriteTemplate, ANIM_ATTACKER, 2, 24, -24, 8, 100 - createsprite gPetalDanceSmallFlowerSpriteTemplate, ANIM_ATTACKER, 2, -24, -24, 8, 100 + create_petal_dance_big_flower_sprite ANIM_ATTACKER, 2, initial_x=0, initial_y=-24, target_y=8, duration=140 + create_petal_dance_small_flower_sprite ANIM_ATTACKER, 2, initial_x=24, initial_y=-24, target_y=8, duration=100 + create_petal_dance_small_flower_sprite ANIM_ATTACKER, 2, initial_x=-24, initial_y=-24, target_y=8, duration=100 delay 30 - createsprite gPetalDanceSmallFlowerSpriteTemplate, ANIM_ATTACKER, 2, 16, -24, 0, 100 - createsprite gPetalDanceSmallFlowerSpriteTemplate, ANIM_ATTACKER, 2, -16, -24, 0, 100 + create_petal_dance_small_flower_sprite ANIM_ATTACKER, 2, initial_x=16, initial_y=-24, target_y=0, duration=100 + create_petal_dance_small_flower_sprite ANIM_ATTACKER, 2, initial_x=-16, initial_y=-24, target_y=0, duration=100 delay 30 - createsprite gPetalDanceSmallFlowerSpriteTemplate, ANIM_ATTACKER, 2, 20, -16, 14, 80 - createsprite gPetalDanceSmallFlowerSpriteTemplate, ANIM_ATTACKER, 2, -20, -14, 16, 80 + create_petal_dance_small_flower_sprite ANIM_ATTACKER, 2, initial_x=20, initial_y=-16, target_y=14, duration=80 + create_petal_dance_small_flower_sprite ANIM_ATTACKER, 2, initial_x=-20, initial_y=-14, target_y=16, duration=80 waitforvisualfinish createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 24, 0, 0, 5 delay 3 @@ -6831,29 +6831,29 @@ Move_RAZOR_LEAF: setalpha 12, 8 delay 1 loopsewithpan SE_M_POISON_POWDER, SOUND_PAN_ATTACKER, 10, 5 - createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, -3, -2, 10 + create_razor_leaf_particle_sprite ANIM_ATTACKER, 2, upward_delta_x=-3, upward_delta_y=-2, upward_duration=10 delay 2 - createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, -1, -1, 15 + create_razor_leaf_particle_sprite ANIM_ATTACKER, 2, upward_delta_x=-1, upward_delta_y=-1, upward_duration=15 delay 2 - createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, -4, -4, 7 + create_razor_leaf_particle_sprite ANIM_ATTACKER, 2, upward_delta_x=-4, upward_delta_y=-4, upward_duration=7 delay 2 - createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, 3, -3, 11 + create_razor_leaf_particle_sprite ANIM_ATTACKER, 2, upward_delta_x=3, upward_delta_y=-3, upward_duration=11 delay 2 - createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, -1, -6, 8 + create_razor_leaf_particle_sprite ANIM_ATTACKER, 2, upward_delta_x=-1, upward_delta_y=-6, upward_duration=8 delay 2 - createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, 2, -1, 12 + create_razor_leaf_particle_sprite ANIM_ATTACKER, 2, upward_delta_x=2, upward_delta_y=-1, upward_duration=12 delay 2 - createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, -3, -4, 13 + create_razor_leaf_particle_sprite ANIM_ATTACKER, 2, upward_delta_x=-3, upward_delta_y=-4, upward_duration=13 delay 2 - createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, 4, -5, 7 + create_razor_leaf_particle_sprite ANIM_ATTACKER, 2, upward_delta_x=4, upward_delta_y=-5, upward_duration=7 delay 2 - createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, 2, -6, 11 + create_razor_leaf_particle_sprite ANIM_ATTACKER, 2, upward_delta_x=2, upward_delta_y=-6, upward_duration=11 delay 2 - createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, -3, -5, 8 + create_razor_leaf_particle_sprite ANIM_ATTACKER, 2, upward_delta_x=-3, upward_delta_y=-5, upward_duration=8 delay 60 playsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER - createsprite gRazorLeafCutterSpriteTemplate, ANIM_TARGET, 3, 20, -10, 20, 0, 22, 20, 1 - createsprite gRazorLeafCutterSpriteTemplate, ANIM_TARGET, 3, 20, -10, 20, 0, 22, -20, 1 + create_razor_leaf_cutter_sprite ANIM_TARGET, 3, initial_x=20, initial_y=-10, target_x=20, target_y=0, duration=22, wave_amplitude=20, target_both=TRUE + create_razor_leaf_cutter_sprite ANIM_TARGET, 3, initial_x=20, initial_y=-10, target_x=20, target_y=0, duration=22, wave_amplitude=-20, target_both=TRUE delay 20 playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 8, 1 @@ -7031,44 +7031,44 @@ Move_DREAM_EATER: end DreamEaterAbsorb: playsewithpan SE_M_SWAGGER, SOUND_PAN_TARGET - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 5, -18, -40, 35 - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -10, 20, 20, 39 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=0, y=5, wave_amplitude=8, wave_period=26 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=5, y=-18, wave_amplitude=-40, wave_period=35 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=-10, y=20, wave_amplitude=20, wave_period=39 delay 4 playsewithpan SE_M_SWAGGER, SOUND_PAN_TARGET - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 28, 26 - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26 - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -10, 20, 40, 39 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=0, y=5, wave_amplitude=28, wave_period=26 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=10, y=-5, wave_amplitude=-8, wave_period=26 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=-10, y=20, wave_amplitude=40, wave_period=39 delay 4 playsewithpan SE_M_SWAGGER, SOUND_PAN_TARGET - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26 - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -5, 15, 16, 33 - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -32, 26 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=10, y=-5, wave_amplitude=-8, wave_period=26 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=-5, y=15, wave_amplitude=16, wave_period=33 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=10, y=-5, wave_amplitude=-32, wave_period=26 delay 4 playsewithpan SE_M_SWAGGER, SOUND_PAN_TARGET - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, -15, -16, 36 - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=0, y=-15, wave_amplitude=-16, wave_period=36 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=0, y=5, wave_amplitude=8, wave_period=26 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=10, y=-5, wave_amplitude=-8, wave_period=26 delay 4 playsewithpan SE_M_SWAGGER, SOUND_PAN_TARGET - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -5, 15, 16, 33 - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, -15, -16, 36 - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=-5, y=15, wave_amplitude=16, wave_period=33 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=0, y=-15, wave_amplitude=-16, wave_period=36 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=0, y=5, wave_amplitude=8, wave_period=26 delay 4 playsewithpan SE_M_SWAGGER, SOUND_PAN_TARGET - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -5, 15, 16, 33 - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -40, 26 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=0, y=5, wave_amplitude=8, wave_period=26 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=-5, y=15, wave_amplitude=16, wave_period=33 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=10, y=-5, wave_amplitude=-40, wave_period=26 delay 4 playsewithpan SE_M_SWAGGER, SOUND_PAN_TARGET - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -5, 15, 36, 33 - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26 - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -10, 20, 20, 39 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=-5, y=15, wave_amplitude=36, wave_period=33 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=10, y=-5, wave_amplitude=-8, wave_period=26 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=-10, y=20, wave_amplitude=20, wave_period=39 delay 4 playsewithpan SE_M_SWAGGER, SOUND_PAN_TARGET - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 - createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 5, -18, -20, 35 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=0, y=5, wave_amplitude=8, wave_period=26 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=0, y=5, wave_amplitude=8, wave_period=26 + create_absorption_orb_sprite ANIM_ATTACKER, 3, x=5, y=-18, wave_amplitude=-20, wave_period=35 delay 4 return @@ -7579,19 +7579,19 @@ Move_RECOVER: end RecoverAbsorbEffect: - createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 40, -10, 13 + create_power_absorption_orb_sprite ANIM_ATTACKER, 2, x=40, y=-10, duration=13 delay 3 - createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, -35, -10, 13 + create_power_absorption_orb_sprite ANIM_ATTACKER, 2, x=-35, y=-10, duration=13 delay 3 - createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 15, -40, 13 + create_power_absorption_orb_sprite ANIM_ATTACKER, 2, x=15, y=-40, duration=13 delay 3 - createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, -10, -32, 13 + create_power_absorption_orb_sprite ANIM_ATTACKER, 2, x=-10, y=-32, duration=13 delay 3 - createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 25, -20, 13 + create_power_absorption_orb_sprite ANIM_ATTACKER, 2, x=25, y=-20, duration=13 delay 3 - createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, -40, -20, 13 + create_power_absorption_orb_sprite ANIM_ATTACKER, 2, x=-40, y=-20, duration=13 delay 3 - createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 5, -40, 13 + create_power_absorption_orb_sprite ANIM_ATTACKER, 2, x=5, y=-40, duration=13 delay 3 return @@ -7601,9 +7601,9 @@ Move_MIMIC: monbg_static ANIM_DEF_PARTNER splitbgprio_all panse SE_M_MINIMIZE, SOUND_PAN_TARGET, SOUND_PAN_ATTACKER, -3, 0 - createvisualtask AnimTask_ShrinkTargetCopy, 5, 128, 24 + shrink_target_copy unk0=128, unk1=24 delay 15 - createsprite gMimicOrbSpriteTemplate, ANIM_TARGET, 2, -12, 24 + create_mimic_orb_sprite ANIM_TARGET, 2, initial_x=-12, initial_y=24 delay 10 setarg 7, 0xFFFF waitforvisualfinish @@ -7617,12 +7617,12 @@ Move_MIMIC: Move_CONSTRICT: loadspritegfx ANIM_TAG_TENDRILS loopsewithpan SE_M_SCRATCH, SOUND_PAN_TARGET, 6, 4 - createsprite gConstrictBindingSpriteTemplate, ANIM_TARGET, 4, 0, 16, 0, 2 + create_constrict_binding_sprite ANIM_TARGET, 4, initial_x=0, initial_y=16, affine_animation=0, squeezes=2 delay 7 - createsprite gConstrictBindingSpriteTemplate, ANIM_TARGET, 3, 0, 0, 0, 2 - createsprite gConstrictBindingSpriteTemplate, ANIM_TARGET, 2, 0, 8, 1, 2 + create_constrict_binding_sprite ANIM_TARGET, 3, initial_x=0, initial_y=0, affine_animation=0, squeezes=2 + create_constrict_binding_sprite ANIM_TARGET, 2, initial_x=0, initial_y=8, affine_animation=1, squeezes=2 delay 7 - createsprite gConstrictBindingSpriteTemplate, ANIM_TARGET, 3, 0, -8, 1, 2 + create_constrict_binding_sprite ANIM_TARGET, 3, initial_x=0, initial_y=-8, affine_animation=1, squeezes=2 delay 8 createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 3, 0, 6, 1 delay 20 @@ -7830,28 +7830,28 @@ Move_FURY_SWIPES: Move_INGRAIN: loadspritegfx ANIM_TAG_ROOTS loadspritegfx ANIM_TAG_ORBS - createsprite gIngrainRootSpriteTemplate, ANIM_ATTACKER, 2, 16, 26, -1, 2, 150 + create_ingrain_root_sprite ANIM_ATTACKER, 2, offset_x=16, offset_y=26, subpriority=29, animation=2, duration=150 playsewithpan SE_M_SCRATCH, SOUND_PAN_ATTACKER delay 10 - createsprite gIngrainRootSpriteTemplate, ANIM_ATTACKER, 2, -32, 20, 1, 1, 140 + create_ingrain_root_sprite ANIM_ATTACKER, 2, offset_x=-32, offset_y=20, subpriority=31, animation=1, duration=140 playsewithpan SE_M_SCRATCH, SOUND_PAN_ATTACKER delay 10 - createsprite gIngrainRootSpriteTemplate, ANIM_ATTACKER, 2, 32, 22, 1, 0, 130 + create_ingrain_root_sprite ANIM_ATTACKER, 2, offset_x=32, offset_y=22, subpriority=31, animation=0, duration=130 playsewithpan SE_M_SCRATCH, SOUND_PAN_ATTACKER delay 10 - createsprite gIngrainRootSpriteTemplate, ANIM_ATTACKER, 2, -16, 25, -1, 3, 120 + create_ingrain_root_sprite ANIM_ATTACKER, 2, offset_x=-16, offset_y=25, subpriority=29, animation=3, duration=120 playsewithpan SE_M_SCRATCH, SOUND_PAN_ATTACKER delay 40 - createsprite gIngrainOrbSpriteTemplate, ANIM_ATTACKER, 3, 32, 26, -1, 3, 30 + create_ingrain_orb_sprite ANIM_ATTACKER, 3, initial_x=32, initial_y=26, velocity_x=-1, wave_amplitude=3, duration=30 delay 5 playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER delay 5 - createsprite gIngrainOrbSpriteTemplate, ANIM_ATTACKER, 3, -48, 20, 1, 2, 30 + create_ingrain_orb_sprite ANIM_ATTACKER, 3, initial_x=-48, initial_y=20, velocity_x=1, wave_amplitude=2, duration=30 playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER delay 5 playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER delay 5 - createsprite gIngrainOrbSpriteTemplate, ANIM_ATTACKER, 3, 48, 26, -2, 3, 18 + create_ingrain_orb_sprite ANIM_ATTACKER, 3, initial_x=48, initial_y=26, velocity_x=-2, wave_amplitude=3, duration=18 playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER delay 10 waitforvisualfinish @@ -7860,7 +7860,7 @@ Move_INGRAIN: Move_PRESENT: loadspritegfx ANIM_TAG_ITEM_BAG createvisualtask AnimTask_IsHealingMove, 2 - createsprite gPresentSpriteTemplate, ANIM_TARGET, 2, 0, -5, 10, 2, -1 + create_present_sprite ANIM_TARGET, 2, initial_x=0, initial_y=-5, unk2=10, unk3=2, unk4=-1 playsewithpan SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER delay 14 playsewithpan SE_M_BUBBLE2, SOUND_PAN_ATTACKER @@ -7895,23 +7895,23 @@ PresentHeal: loadspritegfx ANIM_TAG_GREEN_SPARKLE loadspritegfx ANIM_TAG_BLUE_STAR playsewithpan SE_M_MORNING_SUN, SOUND_PAN_TARGET - createsprite gPresentHealParticleSpriteTemplate, ANIM_TARGET, 4, -16, 32, -3, 1 + create_present_heal_particle_sprite ANIM_TARGET, 4, initial_x=-16, initial_y=32, velocity_y=-3 delay 3 - createsprite gPresentHealParticleSpriteTemplate, ANIM_TARGET, 4, 16, 32, -3, -1 + create_present_heal_particle_sprite ANIM_TARGET, 4, initial_x=16, initial_y=32, velocity_y=-3, unused3=-1 delay 3 - createsprite gPresentHealParticleSpriteTemplate, ANIM_TARGET, 4, 32, 32, -3, 1 + create_present_heal_particle_sprite ANIM_TARGET, 4, initial_x=32, initial_y=32, velocity_y=-3 delay 3 - createsprite gPresentHealParticleSpriteTemplate, ANIM_TARGET, 4, -32, 32, -3, 1 + create_present_heal_particle_sprite ANIM_TARGET, 4, initial_x=-32, initial_y=32, velocity_y=-3 delay 3 - createsprite gPresentHealParticleSpriteTemplate, ANIM_TARGET, 4, 0, 32, -3, 1 + create_present_heal_particle_sprite ANIM_TARGET, 4, initial_x=0, initial_y=32, velocity_y=-3 delay 3 - createsprite gPresentHealParticleSpriteTemplate, ANIM_TARGET, 4, -8, 32, -3, 1 + create_present_heal_particle_sprite ANIM_TARGET, 4, initial_x=-8, initial_y=32, velocity_y=-3 delay 3 - createsprite gPresentHealParticleSpriteTemplate, ANIM_TARGET, 4, -8, 32, -3, 1 + create_present_heal_particle_sprite ANIM_TARGET, 4, initial_x=-8, initial_y=32, velocity_y=-3 delay 3 - createsprite gPresentHealParticleSpriteTemplate, ANIM_TARGET, 4, 24, 32, -3, 1 + create_present_heal_particle_sprite ANIM_TARGET, 4, initial_x=24, initial_y=32, velocity_y=-3 delay 3 - createsprite gPresentHealParticleSpriteTemplate, ANIM_TARGET, 4, -24, 32, -3, 1 + create_present_heal_particle_sprite ANIM_TARGET, 4, initial_x=-24, initial_y=32, velocity_y=-3 waitforvisualfinish waitsound call HealingEffect2 @@ -8121,8 +8121,8 @@ Move_ENCORE: Move_TRICK: loadspritegfx ANIM_TAG_ITEM_BAG loadspritegfx ANIM_TAG_SPEED_DUST - createsprite gTrickBagSpriteTemplate, ANIM_ATTACKER, 2, -40, 80 - createsprite gTrickBagSpriteTemplate, ANIM_ATTACKER, 2, -40, 208 + create_trick_bag_sprite ANIM_ATTACKER, 2, initial_y=-40, wave_offset=80 + create_trick_bag_sprite ANIM_ATTACKER, 2, initial_y=-40, wave_offset=208 delay 16 playsewithpan SE_M_SKETCH, 0 createvisualtask AnimTask_StretchTargetUp, 3 @@ -8173,21 +8173,21 @@ Move_STOCKPILE: simple_palette_blend selector=F_PAL_ATTACKER, delay=0, initial_blend_y=12, target_blend_y=0, color=RGB_WHITE end StockpileAbsorb: - createsprite gStockpileAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 55, 55, 13 + create_stockpile_absorption_orb_sprite ANIM_ATTACKER, 2, x=55, y=55, duration=13 delay 1 - createsprite gStockpileAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, -55, -55, 13 + create_stockpile_absorption_orb_sprite ANIM_ATTACKER, 2, x=-55, y=-55, duration=13 delay 1 - createsprite gStockpileAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 0, 55, 13 + create_stockpile_absorption_orb_sprite ANIM_ATTACKER, 2, x=0, y=55, duration=13 delay 1 - createsprite gStockpileAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 0, -55, 13 + create_stockpile_absorption_orb_sprite ANIM_ATTACKER, 2, x=0, y=-55, duration=13 delay 1 - createsprite gStockpileAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 55, -34, 13 + create_stockpile_absorption_orb_sprite ANIM_ATTACKER, 2, x=55, y=-34, duration=13 delay 1 - createsprite gStockpileAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 55, 34, 13 + create_stockpile_absorption_orb_sprite ANIM_ATTACKER, 2, x=55, y=34, duration=13 delay 1 - createsprite gStockpileAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, -55, -34, 13 + create_stockpile_absorption_orb_sprite ANIM_ATTACKER, 2, x=-55, y=-34, duration=13 delay 1 - createsprite gStockpileAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, -55, 34, 13 + create_stockpile_absorption_orb_sprite ANIM_ATTACKER, 2, x=-55, y=34, duration=13 delay 1 return @@ -8398,8 +8398,8 @@ Move_HYPER_BEAM: simple_palette_blend selector=F_PAL_BG, delay=4, initial_blend_y=16, target_blend_y=0, color=RGB_BLACK end HyperBeamOrbs: - createsprite gHyperBeamOrbSpriteTemplate, ANIM_TARGET, 2 - createsprite gHyperBeamOrbSpriteTemplate, ANIM_TARGET, 2 + create_hyper_beam_orb_sprite ANIM_TARGET, 2 + create_hyper_beam_orb_sprite ANIM_TARGET, 2 delay 1 return @@ -8795,31 +8795,31 @@ Move_FRENZY_PLANT: setalpha 12, 8 simple_palette_blend unused_subpriority_offset=0, selector=F_PAL_BG, delay=2, initial_blend_y=0, target_blend_y=5, color=RGB_BLACK waitforvisualfinish - createsprite gFrenzyPlantRootSpriteTemplate, ANIM_ATTACKER, 2, 10, 8, 2, 0, 0, 100 + create_frenzy_plant_root_sprite ANIM_ATTACKER, 2, interpolate_percent=10, offset_x=8, offset_y=2, subpriority=30, animation=0, duration=100 playsewithpan SE_M_SCRATCH, SOUND_PAN_ATTACKER delay 5 - createsprite gFrenzyPlantRootSpriteTemplate, ANIM_ATTACKER, 2, 20, -8, -2, 0, 1, 95 + create_frenzy_plant_root_sprite ANIM_ATTACKER, 2, interpolate_percent=20, offset_x=-8, offset_y=-2, subpriority=30, animation=1, duration=95 playsewithpan SE_M_SCRATCH, -43 delay 5 - createsprite gFrenzyPlantRootSpriteTemplate, ANIM_ATTACKER, 2, 30, 8, -4, 0, 0, 90 + create_frenzy_plant_root_sprite ANIM_ATTACKER, 2, interpolate_percent=30, offset_x=8, offset_y=-4, subpriority=30, animation=0, duration=90 playsewithpan SE_M_SCRATCH, -22 delay 5 - createsprite gFrenzyPlantRootSpriteTemplate, ANIM_ATTACKER, 2, 40, -8, 4, 0, 1, 85 + create_frenzy_plant_root_sprite ANIM_ATTACKER, 2, interpolate_percent=40, offset_x=-8, offset_y=4, subpriority=30, animation=1, duration=85 playsewithpan SE_M_SCRATCH, 0 delay 5 - createsprite gFrenzyPlantRootSpriteTemplate, ANIM_ATTACKER, 2, 50, 8, 0, 0, 0, 85 + create_frenzy_plant_root_sprite ANIM_ATTACKER, 2, interpolate_percent=50, offset_x=8, offset_y=0, subpriority=30, animation=0, duration=85 playsewithpan SE_M_SCRATCH, +21 delay 5 - createsprite gFrenzyPlantRootSpriteTemplate, ANIM_ATTACKER, 2, 60, -8, -2, 0, 1, 85 + create_frenzy_plant_root_sprite ANIM_ATTACKER, 2, interpolate_percent=60, offset_x=-8, offset_y=-2, subpriority=30, animation=1, duration=85 playsewithpan SE_M_SCRATCH, +42 delay 5 - createsprite gFrenzyPlantRootSpriteTemplate, ANIM_ATTACKER, 2, 75, 8, 0, 0, 0, 85 + create_frenzy_plant_root_sprite ANIM_ATTACKER, 2, interpolate_percent=75, offset_x=8, offset_y=0, subpriority=30, animation=0, duration=85 playsewithpan SE_M_SCRATCH, SOUND_PAN_TARGET delay 5 - createsprite gFrenzyPlantRootSpriteTemplate, ANIM_ATTACKER, 2, 85, 16, 6, 0, 3, 80 + create_frenzy_plant_root_sprite ANIM_ATTACKER, 2, interpolate_percent=85, offset_x=16, offset_y=6, subpriority=30, animation=3, duration=80 playsewithpan SE_M_SCRATCH, SOUND_PAN_TARGET delay 5 - createsprite gFrenzyPlantRootSpriteTemplate, ANIM_ATTACKER, 2, 85, -16, -6, 0, 2, 75 + create_frenzy_plant_root_sprite ANIM_ATTACKER, 2, interpolate_percent=85, offset_x=-16, offset_y=-6, subpriority=30, animation=2, duration=75 playsewithpan SE_M_SCRATCH, SOUND_PAN_TARGET delay 5 create_basic_hitsplat_sprite ANIM_ATTACKER, 2, x=-10, y=-10, relative_to=ANIM_TARGET, animation=3 @@ -9654,26 +9654,26 @@ Move_TWISTER: monbg ANIM_DEF_PARTNER splitbgprio ANIM_TARGET playsewithpan SE_M_TWISTER, SOUND_PAN_TARGET - createsprite gTwisterLeafSpriteTemplate, ANIM_TARGET, 2, 120, 70, 5, 70, 30 + create_twister_leaf_sprite ANIM_TARGET, 2, duration=120, distance_y=70, wave_period=5, wave_amplitude=70, speed_up_on_frame=30 delay 1 - createsprite gTwisterLeafSpriteTemplate, ANIM_TARGET, 2, 115, 55, 6, 60, 25 + create_twister_leaf_sprite ANIM_TARGET, 2, duration=115, distance_y=55, wave_period=6, wave_amplitude=60, speed_up_on_frame=25 delay 1 - createsprite gTwisterLeafSpriteTemplate, ANIM_TARGET, 2, 115, 60, 7, 60, 30 - createsprite gTwisterLeafSpriteTemplate, ANIM_TARGET, 2, 115, 55, 10, 60, 30 + create_twister_leaf_sprite ANIM_TARGET, 2, duration=115, distance_y=60, wave_period=7, wave_amplitude=60, speed_up_on_frame=30 + create_twister_leaf_sprite ANIM_TARGET, 2, duration=115, distance_y=55, wave_period=10, wave_amplitude=60, speed_up_on_frame=30 delay 3 createsprite gTwisterRockSpriteTemplate, ANIM_TARGET, 2, 100, 50, 4, 50, 26 delay 1 - createsprite gTwisterLeafSpriteTemplate, ANIM_TARGET, 2, 105, 25, 8, 60, 20 + create_twister_leaf_sprite ANIM_TARGET, 2, duration=105, distance_y=25, wave_period=8, wave_amplitude=60, speed_up_on_frame=20 delay 1 - createsprite gTwisterLeafSpriteTemplate, ANIM_TARGET, 2, 115, 40, 10, 48, 30 + create_twister_leaf_sprite ANIM_TARGET, 2, duration=115, distance_y=40, wave_period=10, wave_amplitude=48, speed_up_on_frame=30 delay 3 createsprite gTwisterRockSpriteTemplate, ANIM_TARGET, 2, 120, 30, 6, 45, 25 - createsprite gTwisterLeafSpriteTemplate, ANIM_TARGET, 2, 115, 35, 10, 60, 30 + create_twister_leaf_sprite ANIM_TARGET, 2, duration=115, distance_y=35, wave_period=10, wave_amplitude=60, speed_up_on_frame=30 delay 3 createsprite gTwisterRockSpriteTemplate, ANIM_TARGET, 2, 105, 20, 8, 40, 0 delay 3 - createsprite gTwisterLeafSpriteTemplate, ANIM_TARGET, 2, 20, 255, 15, 32, 0 - createsprite gTwisterLeafSpriteTemplate, ANIM_TARGET, 2, 110, 10, 8, 32, 20 + create_twister_leaf_sprite ANIM_TARGET, 2, duration=20, distance_y=255, wave_period=15, wave_amplitude=32, speed_up_on_frame=0 + create_twister_leaf_sprite ANIM_TARGET, 2, duration=110, distance_y=10, wave_period=8, wave_amplitude=32, speed_up_on_frame=20 waitforvisualfinish create_basic_hitsplat_sprite ANIM_TARGET, 3, x=-32, y=-16, relative_to=ANIM_TARGET, animation=3 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET @@ -9702,29 +9702,29 @@ Move_MAGICAL_LEAF: delay 1 loopsewithpan SE_M_POISON_POWDER, SOUND_PAN_ATTACKER, 10, 5 createvisualtask AnimTask_CycleMagicalLeafPal, 5 - createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, -3, -2, 10 + create_razor_leaf_particle_sprite ANIM_ATTACKER, 2, upward_delta_x=-3, upward_delta_y=-2, upward_duration=10 delay 2 - createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, -1, -1, 15 + create_razor_leaf_particle_sprite ANIM_ATTACKER, 2, upward_delta_x=-1, upward_delta_y=-1, upward_duration=15 delay 2 - createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, -4, -4, 7 + create_razor_leaf_particle_sprite ANIM_ATTACKER, 2, upward_delta_x=-4, upward_delta_y=-4, upward_duration=7 delay 2 - createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, 3, -3, 11 + create_razor_leaf_particle_sprite ANIM_ATTACKER, 2, upward_delta_x=3, upward_delta_y=-3, upward_duration=11 delay 2 - createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, -1, -6, 8 + create_razor_leaf_particle_sprite ANIM_ATTACKER, 2, upward_delta_x=-1, upward_delta_y=-6, upward_duration=8 delay 2 - createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, 2, -1, 12 + create_razor_leaf_particle_sprite ANIM_ATTACKER, 2, upward_delta_x=2, upward_delta_y=-1, upward_duration=12 delay 2 - createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, -3, -4, 13 + create_razor_leaf_particle_sprite ANIM_ATTACKER, 2, upward_delta_x=-3, upward_delta_y=-4, upward_duration=13 delay 2 - createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, 4, -5, 7 + create_razor_leaf_particle_sprite ANIM_ATTACKER, 2, upward_delta_x=4, upward_delta_y=-5, upward_duration=7 delay 2 - createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, 2, -6, 11 + create_razor_leaf_particle_sprite ANIM_ATTACKER, 2, upward_delta_x=2, upward_delta_y=-6, upward_duration=11 delay 2 - createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, -3, -5, 8 + create_razor_leaf_particle_sprite ANIM_ATTACKER, 2, upward_delta_x=-3, upward_delta_y=-5, upward_duration=8 delay 60 playsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER - createsprite gRazorLeafCutterSpriteTemplate, ANIM_TARGET, 3, 20, -10, 20, 0, 32, 20, 0 - createsprite gRazorLeafCutterSpriteTemplate, ANIM_TARGET, 3, 20, -10, 20, 0, 32, -20, 0 + create_razor_leaf_cutter_sprite ANIM_TARGET, 3, initial_x=20, initial_y=-10, target_x=20, target_y=0, duration=32, wave_amplitude=20, target_both=FALSE + create_razor_leaf_cutter_sprite ANIM_TARGET, 3, initial_x=20, initial_y=-10, target_x=20, target_y=0, duration=32, wave_amplitude=-20, target_both=FALSE delay 30 playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET create_basic_hitsplat_sprite ANIM_TARGET, 4, x=-10, y=-4, relative_to=ANIM_TARGET, animation=2 @@ -10362,9 +10362,9 @@ General_TurnTrap: Status_BindWrap: loadspritegfx ANIM_TAG_TENDRILS loopsewithpan SE_M_SCRATCH, SOUND_PAN_TARGET, 6, 2 - createsprite gConstrictBindingSpriteTemplate, ANIM_TARGET, 4, 0, 16, 0, 1 + create_constrict_binding_sprite ANIM_TARGET, 4, initial_x=0, initial_y=16, affine_animation=0, squeezes=1 delay 7 - createsprite gConstrictBindingSpriteTemplate, ANIM_TARGET, 2, 0, 8, 1, 1 + create_constrict_binding_sprite ANIM_TARGET, 2, initial_x=0, initial_y=8, affine_animation=1, squeezes=1 delay 3 createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 8, 1 delay 20 @@ -10546,7 +10546,7 @@ General_ItemSteal: createvisualtask AnimTask_SetAnimAttackerAndTargetForEffectAtk, 2 createvisualtask AnimTask_SetTargetToEffectBattler, 2 @ Redundant with above delay 1 - createsprite gItemStealSpriteTemplate, ANIM_ATTACKER, 2, 0, -5, 10, 2, -1 + create_item_steal_sprite ANIM_ATTACKER, 2, initial_x=0, initial_y=-5, unk2=10, unk3=2, unk4=-1 end General_SnatchMove: diff --git a/src/battle_anim_effects_1.c b/src/battle_anim_effects_1.c index c2894894b6..cdf566380a 100644 --- a/src/battle_anim_effects_1.c +++ b/src/battle_anim_effects_1.c @@ -1,6 +1,7 @@ #include "global.h" #include "malloc.h" #include "battle_anim.h" +#include "battle_anim_internal.h" #include "battle_interface.h" #include "decompress.h" #include "gpu_regs.h" @@ -2191,29 +2192,21 @@ const struct SpriteTemplate gTauntFingerSpriteTemplate = // Animates the falling particles that horizontally wave back and forth. // Used by Sleep Powder, Stun Spore, and Poison Powder. -// arg 0: initial x pixel offset -// arg 1: initial y pixel offset -// arg 2: total duration in frames -// arg 3: vertical movement speed (sub-pixel value) -// arg 4: wave amplitude -// arg 5: wave speed static void AnimMovePowderParticle(struct Sprite *sprite) { - sprite->x += gBattleAnimArgs[0]; - sprite->y += gBattleAnimArgs[1]; - sprite->data[0] = gBattleAnimArgs[2]; - sprite->data[1] = gBattleAnimArgs[3]; + CMD_ARGS(x, y, duration, yVelocity, waveAmplitude, waveSpeed); + + sprite->x += cmd->x; + sprite->y += cmd->y; + sprite->data[0] = cmd->duration; + sprite->data[1] = cmd->yVelocity; if (GetBattlerSide(gBattleAnimAttacker)) - { - sprite->data[3] = -gBattleAnimArgs[4]; - } + sprite->data[3] = -cmd->waveAmplitude; else - { - sprite->data[3] = gBattleAnimArgs[4]; - } + sprite->data[3] = cmd->waveAmplitude; - sprite->data[4] = gBattleAnimArgs[5]; + sprite->data[4] = cmd->waveSpeed; sprite->callback = AnimMovePowderParticle_Step; } @@ -2234,13 +2227,12 @@ static void AnimMovePowderParticle_Step(struct Sprite *sprite) } // Moves an energy orb towards the center of the mon. -// arg 0: initial x pixel offset -// arg 1: initial y pixel offset -// arg 2: duration static void AnimPowerAbsorptionOrb(struct Sprite *sprite) { + CMD_ARGS(x, y, duration); + InitSpritePosToAnimAttacker(sprite, TRUE); - sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[0] = cmd->duration; sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); sprite->callback = StartAnimLinearTranslation; @@ -2248,15 +2240,13 @@ static void AnimPowerAbsorptionOrb(struct Sprite *sprite) } // Moves an orb in a straight line towards the target mon. -// arg 0: initial x pixel offset -// arg 1: initial y pixel offset -// arg 2: duration -// arg 3: sprite anim number static void AnimSolarBeamBigOrb(struct Sprite *sprite) { + CMD_ARGS(x, y, duration, animation); + InitSpritePosToAnimAttacker(sprite, TRUE); - StartSpriteAnim(sprite, gBattleAnimArgs[3]); - sprite->data[0] = gBattleAnimArgs[2]; + StartSpriteAnim(sprite, cmd->animation); + sprite->data[0] = cmd->duration; sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); sprite->callback = StartAnimLinearTranslation; @@ -2265,20 +2255,18 @@ static void AnimSolarBeamBigOrb(struct Sprite *sprite) // Moves a small orb in a wavy pattern towards the target mon. // The small orb "circles" the big orbs in AnimSolarBeamBigOrb. -// arg 0: initial x pixel offset -// arg 1: initial y pixel offset -// arg 2: duration -// arg 3: initial wave offset static void AnimSolarBeamSmallOrb(struct Sprite *sprite) { + CMD_ARGS(x, y, duration, waveOffset); + InitSpritePosToAnimAttacker(sprite, TRUE); - sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[0] = cmd->duration; sprite->data[1] = sprite->x; sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); sprite->data[3] = sprite->y; sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); InitAnimLinearTranslation(sprite); - sprite->data[5] = gBattleAnimArgs[3]; + sprite->data[5] = cmd->waveOffset; sprite->callback = AnimSolarBeamSmallOrb_Step; sprite->callback(sprite); } @@ -2311,6 +2299,7 @@ void AnimTask_CreateSmallSolarBeamOrbs(u8 taskId) { gTasks[taskId].data[1]++; gTasks[taskId].data[0] = 6; + // See AnimSolarBeamSmallOrb for how to interpret these. gBattleAnimArgs[0] = 15; gBattleAnimArgs[1] = 0; gBattleAnimArgs[2] = 80; @@ -2323,17 +2312,15 @@ void AnimTask_CreateSmallSolarBeamOrbs(u8 taskId) } // Moves an orb from the target mon to the attacking mon in an arc-like fashion. -// arg 0: initial x pixel offset -// arg 1: initial y pixel offset -// arg 2: wave amplitude -// arg 3: wave period (lower means faster wave) static void AnimAbsorptionOrb(struct Sprite *sprite) { + CMD_ARGS(x, y, waveAmplitude, wavePeriod); + InitSpritePosToAnimTarget(sprite, TRUE); - sprite->data[0] = gBattleAnimArgs[3]; + sprite->data[0] = cmd->wavePeriod; sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); - sprite->data[5] = gBattleAnimArgs[2]; + sprite->data[5] = cmd->waveAmplitude; InitAnimArcTranslation(sprite); sprite->callback = AnimAbsorptionOrb_Step; } @@ -2393,22 +2380,18 @@ static void AnimHyperBeamOrb_Step(struct Sprite *sprite) // seed (sprouts a sapling from a seed.) // Used by Leech Seed. -// arg 0: initial x pixel offset -// arg 1: initial y pixel offset -// arg 2: target x pixel offset -// arg 3: target y pixel offset -// arg 4: duration -// arg 5: wave amplitude static void AnimLeechSeed(struct Sprite *sprite) { + CMD_ARGS(initialX, initialY, targetX, targetY, duration, waveAmplitude); + InitSpritePosToAnimAttacker(sprite, TRUE); if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) - gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + cmd->targetX = -cmd->targetX; - sprite->data[0] = gBattleAnimArgs[4]; - sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X) + gBattleAnimArgs[2]; - sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + gBattleAnimArgs[3]; - sprite->data[5] = gBattleAnimArgs[5]; + sprite->data[0] = cmd->duration; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X) + cmd->targetX; + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + cmd->targetY; + sprite->data[5] = cmd->waveAmplitude; InitAnimArcTranslation(sprite); sprite->callback = AnimLeechSeed_Step; } @@ -2436,20 +2419,17 @@ static void AnimLeechSeedSprouts(struct Sprite *sprite) // Moves a spore particle in a halo around the target mon. // The sprite's priority is updated to give the effect of going // behind the mon's sprite. -// arg 0: initial x pixel offset -// arg 1: initial y pixel offset -// arg 2: initial wave offset -// arg 3: duration -// arg 4: blend (0 = off, 1 = on) static void AnimSporeParticle(struct Sprite *sprite) { + CMD_ARGS(x, y, waveOffset, duration, blend); + InitSpritePosToAnimTarget(sprite, TRUE); - StartSpriteAnim(sprite, gBattleAnimArgs[4]); - if (gBattleAnimArgs[4] == 1) + StartSpriteAnim(sprite, cmd->blend); + if (cmd->blend == TRUE) sprite->oam.objMode = ST_OAM_OBJ_BLEND; - sprite->data[0] = gBattleAnimArgs[3]; - sprite->data[1] = gBattleAnimArgs[2]; + sprite->data[0] = cmd->duration; + sprite->data[1] = cmd->waveOffset; sprite->callback = AnimSporeParticle_Step; sprite->callback(sprite); } @@ -2499,18 +2479,16 @@ void AnimTask_SporeDoubleBattle(u8 taskId) // Rotates a big flower around the attacking mon, and slowly floats // downward. -// arg 0: initial x pixel offset -// arg 1: initial y pixel offset -// arg 2: target y pixel offset -// arg 3: duration static void AnimPetalDanceBigFlower(struct Sprite *sprite) { + CMD_ARGS(initialX, initialY, targetY, duration); + InitSpritePosToAnimAttacker(sprite, FALSE); - sprite->data[0] = gBattleAnimArgs[3]; + sprite->data[0] = cmd->duration; sprite->data[1] = sprite->x; sprite->data[2] = sprite->x; sprite->data[3] = sprite->y; - sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[2]; + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) + cmd->targetY; InitAnimLinearTranslation(sprite); sprite->data[5] = 0x40; sprite->callback = AnimPetalDanceBigFlower_Step; @@ -2537,18 +2515,16 @@ static void AnimPetalDanceBigFlower_Step(struct Sprite *sprite) } // Slowly floats a small flower downard, while swaying from right to left. -// arg 0: initial x pixel offset -// arg 1: initial y pixel offset -// arg 2: target y pixel offset -// arg 3: duration static void AnimPetalDanceSmallFlower(struct Sprite *sprite) { + CMD_ARGS(initialX, initialY, targetY, duration); + InitSpritePosToAnimAttacker(sprite, TRUE); - sprite->data[0] = gBattleAnimArgs[3]; + sprite->data[0] = cmd->duration; sprite->data[1] = sprite->x; sprite->data[2] = sprite->x; sprite->data[3] = sprite->y; - sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[2]; + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) + cmd->targetY; InitAnimLinearTranslation(sprite); sprite->data[5] = 0x40; sprite->callback = AnimPetalDanceSmallFlower_Step; @@ -2573,16 +2549,15 @@ static void AnimPetalDanceSmallFlower_Step(struct Sprite *sprite) } // Shoots a leaf upward, then floats it downward while swaying back and forth. -// arg 0: upward x delta per frame -// arg 1: upward y delta per frame -// arg 2: upward duration static void AnimRazorLeafParticle(struct Sprite *sprite) { + CMD_ARGS(upwardDeltaX, upwardDeltaY, upwardDuration); + sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); - sprite->data[0] = gBattleAnimArgs[0]; - sprite->data[1] = gBattleAnimArgs[1]; - sprite->data[2] = gBattleAnimArgs[2]; + sprite->data[0] = cmd->upwardDeltaX; + sprite->data[1] = cmd->upwardDeltaY; + sprite->data[2] = cmd->upwardDuration; sprite->callback = AnimRazorLeafParticle_Step1; } @@ -2632,33 +2607,28 @@ static void AnimRazorLeafParticle_Step2(struct Sprite *sprite) // Animates a sprite that moves linearly from one location to another, with a // single-cycle sine wave added to the y position along the way. // Used by Razor Leaf and Magical Leaf. -// arg 0: initial x offset -// arg 1: initial y offset -// arg 2: target x offset -// arg 3: target y offset -// arg 4: translation duration -// arg 5: wave amplitude -// arg 6: target between double battle opponents (boolean) static void AnimTranslateLinearSingleSineWave(struct Sprite *sprite) { + CMD_ARGS(initialX, initialY, targetX, targetY, duration, waveAmplitude, targetBoth); + InitSpritePosToAnimAttacker(sprite, TRUE); if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) - gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + cmd->targetX = -cmd->targetX; - sprite->data[0] = gBattleAnimArgs[4]; - if (!gBattleAnimArgs[6]) + sprite->data[0] = cmd->duration; + if (!cmd->targetBoth) { - sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2]; - sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3]; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + cmd->targetX; + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + cmd->targetY; } else { SetAverageBattlerPositions(gBattleAnimTarget, TRUE, &sprite->data[2], &sprite->data[4]); - sprite->data[2] += gBattleAnimArgs[2]; - sprite->data[4] += gBattleAnimArgs[3]; + sprite->data[2] += cmd->targetX; + sprite->data[4] += cmd->targetY; } - sprite->data[5] = gBattleAnimArgs[5]; + sprite->data[5] = cmd->waveAmplitude; InitAnimArcTranslation(sprite); if (GetBattlerSide(gBattleAnimAttacker) == GetBattlerSide(gBattleAnimTarget)) sprite->data[0] = 1; @@ -2701,22 +2671,19 @@ static void AnimTranslateLinearSingleSineWave_Step(struct Sprite *sprite) } // Animates particles in the Twister move animation. -// arg 0: duration -// arg 1: total y delta (the particles rise upward) -// arg 2: wave period (higher means faster wave) -// arg 3: wave amplitude -// arg 4: speedup frame (particles move faster at the end of the animation) void AnimMoveTwisterParticle(struct Sprite *sprite) { + CMD_ARGS(duration, distanceY, wavePeriod, waveAmplitude, speedUpOnFrame); + if (IsDoubleBattle() == TRUE) SetAverageBattlerPositions(gBattleAnimTarget, TRUE, &sprite->x, &sprite->y); sprite->y += 32; - sprite->data[0] = gBattleAnimArgs[0]; - sprite->data[1] = gBattleAnimArgs[1]; - sprite->data[2] = gBattleAnimArgs[2]; - sprite->data[3] = gBattleAnimArgs[3]; - sprite->data[4] = gBattleAnimArgs[4]; + sprite->data[0] = cmd->duration; + sprite->data[1] = cmd->distanceY; + sprite->data[2] = cmd->wavePeriod; + sprite->data[3] = cmd->waveAmplitude; + sprite->data[4] = cmd->speedUpOnFrame; sprite->callback = AnimMoveTwisterParticle_Step; } @@ -2749,17 +2716,15 @@ static void AnimMoveTwisterParticle_Step(struct Sprite *sprite) } // Squeezes a constricting "rope" several times via affine animations. -// arg 0: initial x pixel offset -// arg 1: initial y pixel offset -// arg 2: affine anim num -// arg 3: num squeezes static void AnimConstrictBinding(struct Sprite *sprite) { + CMD_ARGS(initialX, initialY, affineAnimation, squeezes); + InitSpritePosToAnimTarget(sprite, FALSE); sprite->affineAnimPaused = 1; - StartSpriteAffineAnim(sprite, gBattleAnimArgs[2]); - sprite->data[6] = gBattleAnimArgs[2]; - sprite->data[7] = gBattleAnimArgs[3]; + StartSpriteAffineAnim(sprite, cmd->affineAnimation); + sprite->data[6] = cmd->affineAnimation; + sprite->data[7] = cmd->squeezes; sprite->callback = AnimConstrictBinding_Step1; } @@ -2799,8 +2764,11 @@ static void AnimConstrictBinding_Step2(struct Sprite *sprite) } } +// unk1 may be some sort of duration? void AnimTask_ShrinkTargetCopy(u8 taskId) { + CMD_ARGS(unk0, unk1); + u8 spriteId = GetAnimBattlerSpriteId(ANIM_TARGET); if (gSprites[spriteId].invisible) { @@ -2814,8 +2782,8 @@ void AnimTask_ShrinkTargetCopy(u8 taskId) spriteId = GetAnimBattlerSpriteId(ANIM_DEF_PARTNER); gTasks[taskId].data[15] = gSprites[spriteId].oam.priority; gSprites[spriteId].oam.priority = GetBattlerSpriteBGPriority(BATTLE_PARTNER(gBattleAnimTarget)); - gTasks[taskId].data[0] = gBattleAnimArgs[0]; - gTasks[taskId].data[1] = gBattleAnimArgs[1]; + gTasks[taskId].data[0] = cmd->unk0; + gTasks[taskId].data[1] = cmd->unk1; gTasks[taskId].data[11] = 0x100; gTasks[taskId].func = AnimTask_DuplicateAndShrinkToPos_Step1; } @@ -2841,6 +2809,7 @@ static void AnimTask_DuplicateAndShrinkToPos_Step1(u8 taskId) static void AnimTask_DuplicateAndShrinkToPos_Step2(u8 taskId) { + // TODO: gBattleAnimArgs[ARG_RET_ID]? if ((u16)gBattleAnimArgs[7] == 0xFFFF) { if (gTasks[taskId].data[0] == 0) @@ -2868,18 +2837,18 @@ static void AnimTask_DuplicateAndShrinkToPos_Step2(u8 taskId) } // Moves an orb from the target mon to the attacking mon. -// arg 0: initial x pixel offset -// arg 1: initial y pixel offset static void AnimMimicOrb(struct Sprite *sprite) { + CMD_ARGS(initialX, initialY); + switch (sprite->data[0]) { case 0: if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) - gBattleAnimArgs[0] *= -1; + cmd->initialX *= -1; - sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X) + gBattleAnimArgs[0]; - sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + gBattleAnimArgs[1]; + sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X) + cmd->initialX; + sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + cmd->initialY; sprite->invisible = TRUE; sprite->data[0]++; break; @@ -2899,22 +2868,19 @@ static void AnimMimicOrb(struct Sprite *sprite) } // Animates a root that flickers away after some time. -// arg 0: x pixel offset -// arg 1: y pixel offset -// arg 2: sprite subpriority offset -// arg 3: sprite anim num -// arg 4: duration static void AnimIngrainRoot(struct Sprite *sprite) { + CMD_ARGS(offsetX, offsetY, subpriorityM30, animation, duration); + if (!sprite->data[0]) { sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y); - sprite->x2 = gBattleAnimArgs[0]; - sprite->y2 = gBattleAnimArgs[1]; - sprite->subpriority = gBattleAnimArgs[2] + 30; - StartSpriteAnim(sprite, gBattleAnimArgs[3]); - sprite->data[2] = gBattleAnimArgs[4]; + sprite->x2 = cmd->offsetX; + sprite->y2 = cmd->offsetY; + sprite->subpriority = cmd->subpriorityM30 + 30; + StartSpriteAnim(sprite, cmd->animation); + sprite->data[2] = cmd->duration; sprite->data[0]++; if (sprite->y + sprite->y2 > 120) sprite->y += sprite->y2 + sprite->y - 120; @@ -2923,14 +2889,10 @@ static void AnimIngrainRoot(struct Sprite *sprite) } // Places a root on the path to the target mon that flickers away after some time. -// arg 0: percent along the path to the target mon -// arg 1: x pixel offset -// arg 2: y pixel offset -// arg 3: sprite subpriority offset -// arg 4: sprite anum num -// arg 5: duration static void AnimFrenzyPlantRoot(struct Sprite *sprite) { + CMD_ARGS(interpolatePercent, offsetX, offsetY, subpriorityM30, animation, duration); + s16 attackerX = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); s16 attackerY = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); s16 targetX = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); @@ -2938,13 +2900,13 @@ static void AnimFrenzyPlantRoot(struct Sprite *sprite) targetX -= attackerX; targetY -= attackerY; - sprite->x = attackerX + targetX * gBattleAnimArgs[0] / 100; - sprite->y = attackerY + targetY * gBattleAnimArgs[0] / 100; - sprite->x2 = gBattleAnimArgs[1]; - sprite->y2 = gBattleAnimArgs[2]; - sprite->subpriority = gBattleAnimArgs[3] + 30; - StartSpriteAnim(sprite, gBattleAnimArgs[4]); - sprite->data[2] = gBattleAnimArgs[5]; + sprite->x = attackerX + targetX * cmd->interpolatePercent / 100; + sprite->y = attackerY + targetY * cmd->interpolatePercent / 100; + sprite->x2 = cmd->offsetX; + sprite->y2 = cmd->offsetY; + sprite->subpriority = cmd->subpriorityM30 + 30; + StartSpriteAnim(sprite, cmd->animation); + sprite->data[2] = cmd->duration; sprite->callback = AnimRootFlickerOut; sFrenzyPlantRootData.startX = sprite->x; sFrenzyPlantRootData.startY = sprite->y; @@ -2962,20 +2924,17 @@ static void AnimRootFlickerOut(struct Sprite *sprite) } // Moves an orb in a fast wavy path. -// arg 0: initial x pixel offset -// arg 1: initial y pixel offset -// arg 2: horizontal velocity -// arg 3: wave amplitude -// arg 4: duration static void AnimIngrainOrb(struct Sprite *sprite) { + CMD_ARGS(initialX, initialY, velocityX, waveAmplitude, duration); + if (!sprite->data[0]) { - sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + gBattleAnimArgs[0]; - sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y) + gBattleAnimArgs[1]; - sprite->data[1] = gBattleAnimArgs[2]; - sprite->data[2] = gBattleAnimArgs[3]; - sprite->data[3] = gBattleAnimArgs[4]; + sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + cmd->initialX; + sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y) + cmd->initialY; + sprite->data[1] = cmd->velocityX; + sprite->data[2] = cmd->waveAmplitude; + sprite->data[3] = cmd->duration; } sprite->data[0]++; @@ -3056,6 +3015,8 @@ static void AnimItemSteal_Step1(struct Sprite *sprite) static void AnimPresent(struct Sprite *sprite) { + CMD_ARGS(initialX, initialY, unk2, unk3, unk4); + s16 targetX; s16 targetY; InitSpritePosToAnimAttacker(sprite, FALSE); @@ -3125,16 +3086,14 @@ static void AnimKnockOffItem(struct Sprite *sprite) } // Animates a heal particle upward. -// arg 0: initial x pixel offset -// arg 1: initial y pixel offset -// arg 2: vertical velocity -// arg 3: unused static void AnimPresentHealParticle(struct Sprite *sprite) { + CMD_ARGS(initialX, initialY, velocityY, unused3); + if (!sprite->data[0]) { InitSpritePosToAnimTarget(sprite, FALSE); - sprite->data[1] = gBattleAnimArgs[2]; + sprite->data[1] = cmd->velocityY; } sprite->data[0]++; @@ -3145,6 +3104,8 @@ static void AnimPresentHealParticle(struct Sprite *sprite) static void AnimItemSteal(struct Sprite *sprite) { + CMD_ARGS(initialX, initialY); + s16 attackerX; s16 attackerY; InitSpritePosToAnimTarget(sprite, FALSE); @@ -3192,10 +3153,10 @@ static void AnimItemSteal_Step3(struct Sprite *sprite) } // Moves a bag in a circular motion. -// arg 0: y position -// arg 1: initial wave offset static void AnimTrickBag(struct Sprite *sprite) { + CMD_ARGS(initialY, waveOffset); + int a; int b; @@ -3203,14 +3164,14 @@ static void AnimTrickBag(struct Sprite *sprite) { if (!IsContest()) { - sprite->data[1] = gBattleAnimArgs[1]; + sprite->data[1] = cmd->waveOffset; sprite->x = 120; } else { - a = gBattleAnimArgs[1] - 32; + a = cmd->waveOffset - 32; if (a < 0) - b = gBattleAnimArgs[1] + 0xDF; + b = cmd->waveOffset + 0xDF; else b = a; @@ -3218,8 +3179,8 @@ static void AnimTrickBag(struct Sprite *sprite) sprite->x = 70; } - sprite->y = gBattleAnimArgs[0]; - sprite->data[2] = gBattleAnimArgs[0]; + sprite->y = cmd->initialY; + sprite->data[2] = cmd->initialY; sprite->data[4] = 20; sprite->x2 = Cos(sprite->data[1], 60); sprite->y2 = Sin(sprite->data[1], 20); @@ -3564,8 +3525,14 @@ static void AnimTask_LeafBlade_Step2_Callback(struct Sprite *sprite) static void AnimFlyingParticle(struct Sprite *sprite) { + // unk6 chooses an anchor? + // unk3 is probably some sort of y offset relative to the center of + // the screen? + // unk5 is some kind of mode. it affects priority and y. + CMD_ARGS(unk0, unk1, unk2, unk3, unk4, unk5, unk6); + u8 battler; - if (!gBattleAnimArgs[6]) + if (!cmd->unk6) battler = gBattleAnimAttacker; else battler = gBattleAnimTarget; @@ -3573,35 +3540,35 @@ static void AnimFlyingParticle(struct Sprite *sprite) if (GetBattlerSide(battler) != B_SIDE_PLAYER) { sprite->data[4] = 0; - sprite->data[2] = gBattleAnimArgs[3]; + sprite->data[2] = cmd->unk3; sprite->x = -16; } else { sprite->data[4] = 1; - sprite->data[2] = -gBattleAnimArgs[3]; + sprite->data[2] = -cmd->unk3; sprite->x = DISPLAY_WIDTH + 16; } - sprite->data[1] = gBattleAnimArgs[1]; - sprite->data[0] = gBattleAnimArgs[2]; - sprite->data[3] = gBattleAnimArgs[4]; - switch (gBattleAnimArgs[5]) + sprite->data[1] = cmd->unk1; + sprite->data[0] = cmd->unk2; + sprite->data[3] = cmd->unk4; + switch (cmd->unk5) { case 0: - sprite->y = gBattleAnimArgs[0]; + sprite->y = cmd->unk0; sprite->oam.priority = GetBattlerSpriteBGPriority(battler); break; case 1: - sprite->y = gBattleAnimArgs[0]; + sprite->y = cmd->unk0; sprite->oam.priority = GetBattlerSpriteBGPriority(battler) + 1; break; case 2: - sprite->y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[0]; + sprite->y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y_PIC_OFFSET) + cmd->unk0; sprite->oam.priority = GetBattlerSpriteBGPriority(battler); break; case 3: - sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[0]; + sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + cmd->unk0; GetAnimBattlerSpriteId(ANIM_TARGET); sprite->oam.priority = GetBattlerSpriteBGPriority(battler) + 1; break; @@ -3657,25 +3624,28 @@ void AnimTask_CycleMagicalLeafPal(u8 taskId) break; } + // TODO: gBattleAnimArgs[ARG_RET_ID]? if (gBattleAnimArgs[7] == -1) DestroyAnimVisualTask(taskId); } static void AnimNeedleArmSpike(struct Sprite *sprite) { + CMD_ARGS(unk0, unk1, unk2, unk3, unk4); + u8 a; u8 b; u16 c; u16 x; u16 y; - if (gBattleAnimArgs[4] == 0) + if (cmd->unk4 == 0) { DestroyAnimSprite(sprite); } else { - if (gBattleAnimArgs[0] == 0) + if (cmd->unk0 == 0) { a = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); b = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); @@ -3686,11 +3656,11 @@ static void AnimNeedleArmSpike(struct Sprite *sprite) b = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); } - sprite->data[0] = gBattleAnimArgs[4]; - if (gBattleAnimArgs[1] == 0) + sprite->data[0] = cmd->unk4; + if (cmd->unk1 == 0) { - sprite->x = gBattleAnimArgs[2] + a; - sprite->y = gBattleAnimArgs[3] + b; + sprite->x = cmd->unk2 + a; + sprite->y = cmd->unk3 + b; sprite->data[5] = a; sprite->data[6] = b; } @@ -3698,16 +3668,16 @@ static void AnimNeedleArmSpike(struct Sprite *sprite) { sprite->x = a; sprite->y = b; - sprite->data[5] = gBattleAnimArgs[2] + a; - sprite->data[6] = gBattleAnimArgs[3] + b; + sprite->data[5] = cmd->unk2 + a; + sprite->data[6] = cmd->unk3 + b; } x = sprite->x; sprite->data[1] = x * 16; y = sprite->y; sprite->data[2] = y * 16; - sprite->data[3] = (sprite->data[5] - sprite->x) * 16 / gBattleAnimArgs[4]; - sprite->data[4] = (sprite->data[6] - sprite->y) * 16 / gBattleAnimArgs[4]; + sprite->data[3] = (sprite->data[5] - sprite->x) * 16 / cmd->unk4; + sprite->data[4] = (sprite->data[6] - sprite->y) * 16 / cmd->unk4; c = ArcTan2Neg(sprite->data[5] - x, sprite->data[6] - y); if (IsContest()) c -= 0x8000; @@ -3741,15 +3711,17 @@ static void AnimWhipHit_WaitEnd(struct Sprite *sprite) static void AnimSlidingHit(struct Sprite *sprite) { + CMD_ARGS(unk0, unk1); + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) { - sprite->x -= gBattleAnimArgs[0]; - sprite->y += gBattleAnimArgs[1]; + sprite->x -= cmd->unk0; + sprite->y += cmd->unk1; } else { - sprite->x += gBattleAnimArgs[0]; - sprite->y += gBattleAnimArgs[1]; + sprite->x += cmd->unk0; + sprite->y += cmd->unk1; } sprite->callback = RunStoredCallbackWhenAnimEnds; @@ -3758,23 +3730,27 @@ static void AnimSlidingHit(struct Sprite *sprite) static void AnimWhipHit(struct Sprite *sprite) { + CMD_ARGS(unk0, unk1); + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) StartSpriteAnim(sprite, 1); sprite->callback = AnimWhipHit_WaitEnd; - SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]); - sprite->y += gBattleAnimArgs[1]; + SetAnimSpriteInitialXOffset(sprite, cmd->unk0); + sprite->y += cmd->unk1; } static void AnimFlickeringPunch(struct Sprite *sprite) { - sprite->x += gBattleAnimArgs[0]; - sprite->y += gBattleAnimArgs[1]; - sprite->data[0] = gBattleAnimArgs[2]; - sprite->data[1] = gBattleAnimArgs[3]; - sprite->data[3] = gBattleAnimArgs[4]; - sprite->data[5] = gBattleAnimArgs[5]; - StartSpriteAffineAnim(sprite, gBattleAnimArgs[6]); + CMD_ARGS(unk0, unk1, unk2, unk3, unk4, unk5, unk6); + + sprite->x += cmd->unk0; + sprite->y += cmd->unk1; + sprite->data[0] = cmd->unk2; + sprite->data[1] = cmd->unk3; + sprite->data[3] = cmd->unk4; + sprite->data[5] = cmd->unk5; + StartSpriteAffineAnim(sprite, cmd->unk6); StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); sprite->callback = TranslateSpriteLinearAndFlicker; } @@ -3786,34 +3762,38 @@ static void AnimFlickeringPunch(struct Sprite *sprite) // arg 2: slice direction; 0 = right-to-left, 1 = left-to-right static void AnimCuttingSlice(struct Sprite *sprite) { + CMD_ARGS(unk0, unk1, unk2); + sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X); sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y); if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) sprite->y += 8; sprite->callback = AnimSlice_Step; - if (gBattleAnimArgs[2] == 0) + if (cmd->unk2 == 0) { - sprite->x += gBattleAnimArgs[0]; + sprite->x += cmd->unk0; } else { - sprite->x -= gBattleAnimArgs[0]; + sprite->x -= cmd->unk0; sprite->hFlip = 1; } - sprite->y += gBattleAnimArgs[1]; + sprite->y += cmd->unk1; sprite->data[1] -= 0x400; sprite->data[2] += 0x400; - sprite->data[5] = gBattleAnimArgs[2]; + sprite->data[5] = cmd->unk2; if (sprite->data[5] == 1) sprite->data[1] = -sprite->data[1]; } static void AnimAirCutterSlice(struct Sprite *sprite) { + CMD_ARGS(unk0, unk1, unk2, unk3); + u8 x, y; - switch (gBattleAnimArgs[3]) + switch (cmd->unk3) { case 1: x = GetBattlerSpriteCoord(BATTLE_PARTNER(gBattleAnimTarget), BATTLER_COORD_X); @@ -3841,20 +3821,20 @@ static void AnimAirCutterSlice(struct Sprite *sprite) sprite->y += 8; sprite->callback = AnimSlice_Step; - if (gBattleAnimArgs[2] == 0) + if (cmd->unk2 == 0) { - sprite->x += gBattleAnimArgs[0]; + sprite->x += cmd->unk0; } else { - sprite->x -= gBattleAnimArgs[0]; + sprite->x -= cmd->unk0; sprite->hFlip = 1; } - sprite->y += gBattleAnimArgs[1]; + sprite->y += cmd->unk1; sprite->data[1] -= 0x400; sprite->data[2] += 0x400; - sprite->data[5] = gBattleAnimArgs[2]; + sprite->data[5] = cmd->unk2; if (sprite->data[5] == 1) sprite->data[1] = -sprite->data[1]; } @@ -3915,16 +3895,18 @@ static void UNUSED UnusedFlickerAnim(struct Sprite *sprite) static void AnimCirclingMusicNote(struct Sprite *sprite) { - sprite->data[0] = gBattleAnimArgs[2]; - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) - sprite->x -= gBattleAnimArgs[0]; - else - sprite->x += gBattleAnimArgs[0]; + CMD_ARGS(unk0, unk1, unk2, unk3, unk4, unk5); - StartSpriteAnim(sprite, gBattleAnimArgs[5]); - sprite->data[1] = -gBattleAnimArgs[3]; - sprite->y += gBattleAnimArgs[1]; - sprite->data[3] = gBattleAnimArgs[4]; + sprite->data[0] = cmd->unk2; + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + sprite->x -= cmd->unk0; + else + sprite->x += cmd->unk0; + + StartSpriteAnim(sprite, cmd->unk5); + sprite->data[1] = -cmd->unk3; + sprite->y += cmd->unk1; + sprite->data[3] = cmd->unk4; sprite->callback = AnimCirclingMusicNote_Step; sprite->callback(sprite); } @@ -3948,17 +3930,19 @@ static void AnimCirclingMusicNote_Step(struct Sprite *sprite) static void AnimProtect(struct Sprite *sprite) { - if (IsContest()) - gBattleAnimArgs[1] += 8; + CMD_ARGS(unk0, unk1, unk2); - sprite->x = GetBattlerSpriteCoord2(gBattleAnimAttacker, BATTLER_COORD_X) + gBattleAnimArgs[0]; - sprite->y = GetBattlerSpriteCoord2(gBattleAnimAttacker, BATTLER_COORD_Y) + gBattleAnimArgs[1]; + if (IsContest()) + cmd->unk1 += 8; + + sprite->x = GetBattlerSpriteCoord2(gBattleAnimAttacker, BATTLER_COORD_X) + cmd->unk0; + sprite->y = GetBattlerSpriteCoord2(gBattleAnimAttacker, BATTLER_COORD_Y) + cmd->unk1; if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER || IsContest()) sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker) + 1; else sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker); - sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[0] = cmd->unk2; sprite->data[2] = OBJ_PLTT_ID(IndexOfSpritePaletteTag(ANIM_TAG_PROTECT)); sprite->data[7] = 16; SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND); @@ -4123,67 +4107,73 @@ static void AnimMilkBottle_Step2(struct Sprite *sprite, int unk1, int unk2) static void AnimGrantingStars(struct Sprite *sprite) { - if (!gBattleAnimArgs[2]) + CMD_ARGS(unk0, unk1, unk2, unk3, unk4, unk5); + + if (!cmd->unk2) SetSpriteCoordsToAnimAttackerCoords(sprite); - SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]); - sprite->y += gBattleAnimArgs[1]; - sprite->data[0] = gBattleAnimArgs[5]; - sprite->data[1] = gBattleAnimArgs[3]; - sprite->data[2] = gBattleAnimArgs[4]; + SetAnimSpriteInitialXOffset(sprite, cmd->unk0); + sprite->y += cmd->unk1; + sprite->data[0] = cmd->unk5; + sprite->data[1] = cmd->unk3; + sprite->data[2] = cmd->unk4; StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); sprite->callback = TranslateSpriteLinearFixedPoint; } static void AnimSparklingStars(struct Sprite *sprite) { + CMD_ARGS(unk0, unk1, unk2, unk3, unk4, unk5, unk6); + u8 battler; - if (!gBattleAnimArgs[2]) + if (!cmd->unk2) battler = gBattleAnimAttacker; else battler = gBattleAnimTarget; if (IsDoubleBattle() && IsBattlerSpriteVisible(BATTLE_PARTNER(battler))) { - SetAverageBattlerPositions(battler, gBattleAnimArgs[6], &sprite->x, &sprite->y); - SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]); - sprite->y += gBattleAnimArgs[1]; + SetAverageBattlerPositions(battler, cmd->unk6, &sprite->x, &sprite->y); + SetAnimSpriteInitialXOffset(sprite, cmd->unk0); + sprite->y += cmd->unk1; } else { - if (!gBattleAnimArgs[6]) + if (!cmd->unk6) { sprite->x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X); - sprite->y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y) + gBattleAnimArgs[1]; + sprite->y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y) + cmd->unk1; } else { sprite->x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2); - sprite->y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[1]; + sprite->y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y_PIC_OFFSET) + cmd->unk1; } - SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]); + SetAnimSpriteInitialXOffset(sprite, cmd->unk0); } - sprite->data[0] = gBattleAnimArgs[5]; - sprite->data[1] = gBattleAnimArgs[3]; - sprite->data[2] = gBattleAnimArgs[4]; + sprite->data[0] = cmd->unk5; + sprite->data[1] = cmd->unk3; + sprite->data[2] = cmd->unk4; StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); sprite->callback = TranslateSpriteLinearFixedPoint; } static void AnimBubbleBurst(struct Sprite *sprite) { + CMD_ARGS(unk0, unk1); + SetSpriteCoordsToAnimAttackerCoords(sprite); if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) { - sprite->x += gBattleAnimArgs[0]; - sprite->y += gBattleAnimArgs[1]; + sprite->x += cmd->unk0; + sprite->y += cmd->unk1; } else { - sprite->x -= gBattleAnimArgs[0]; - sprite->y += gBattleAnimArgs[1]; + sprite->x -= cmd->unk0; + sprite->y += cmd->unk1; StartSpriteAnim(sprite, 1); } @@ -4205,17 +4195,19 @@ static void AnimBubbleBurst_Step(struct Sprite *sprite) static void AnimSleepLetterZ(struct Sprite *sprite) { + CMD_ARGS(unk0, unk1); + SetSpriteCoordsToAnimAttackerCoords(sprite); if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) { - sprite->x += gBattleAnimArgs[0]; - sprite->y += gBattleAnimArgs[1]; + sprite->x += cmd->unk0; + sprite->y += cmd->unk1; sprite->data[3] = 1; } else { - sprite->x -= gBattleAnimArgs[0]; - sprite->y += gBattleAnimArgs[1]; + sprite->x -= cmd->unk0; + sprite->y += cmd->unk1; sprite->data[3] = 0xFFFF; StartSpriteAffineAnim(sprite, 1); } @@ -4358,6 +4350,7 @@ static void AnimLockOnTarget_Step4(struct Sprite *sprite) static void AnimLockOnTarget_Step5(struct Sprite *sprite) { + // TODO: gBattleAnimArgs[ARG_RET_ID]? if ((u16)gBattleAnimArgs[7] == 0xFFFF) { sprite->data[1] = 0; @@ -4381,7 +4374,9 @@ static void AnimLockOnTarget_Step6(struct Sprite *sprite) static void AnimLockOnMoveTarget(struct Sprite *sprite) { - sprite->oam.affineParam = gBattleAnimArgs[0]; + CMD_ARGS(unk0); + + sprite->oam.affineParam = cmd->unk0; if ((s16)sprite->oam.affineParam == 1) { sprite->x -= 0x18; @@ -4413,9 +4408,11 @@ static void AnimLockOnMoveTarget(struct Sprite *sprite) static void AnimBowMon(struct Sprite *sprite) { + CMD_ARGS(unk0); + sprite->invisible = TRUE; sprite->data[0] = 0; - switch (gBattleAnimArgs[0]) + switch (cmd->unk0) { case 0: sprite->callback = AnimBowMon_Step1; @@ -4559,13 +4556,15 @@ static void AnimTipMon_Step(struct Sprite *sprite) void AnimTask_SkullBashPosition(u8 taskId) { + CMD_ARGS(unk0); + u8 side; gTasks[taskId].data[0] = gBattlerSpriteIds[gBattleAnimAttacker]; side = GetBattlerSide(gBattleAnimAttacker); gTasks[taskId].data[1] = side; gTasks[taskId].data[2] = 0; - switch (gBattleAnimArgs[0]) + switch (cmd->unk0) { default: DestroyAnimVisualTask(taskId); @@ -4705,15 +4704,17 @@ static void AnimTask_SkullBashPositionReset(u8 taskId) static void AnimSlashSlice(struct Sprite *sprite) { - if (gBattleAnimArgs[0] == 0) + CMD_ARGS(unk0, unk1, unk2); + + if (cmd->unk0 == 0) { - sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + gBattleAnimArgs[1]; - sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[2]; + sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + cmd->unk1; + sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) + cmd->unk2; } else { - sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[1]; - sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[2]; + sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + cmd->unk1; + sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + cmd->unk2; } sprite->data[0] = 0; @@ -4732,7 +4733,9 @@ static void AnimFalseSwipeSlice(struct Sprite *sprite) static void AnimFalseSwipePositionedSlice(struct Sprite *sprite) { - sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) - 48 + gBattleAnimArgs[0]; + CMD_ARGS(unk0); + + sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) - 48 + cmd->unk0; sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); StartSpriteAnim(sprite, 1); sprite->data[0] = 0; @@ -4772,19 +4775,21 @@ static void AnimFalseSwipeSlice_Step3(struct Sprite *sprite) static void AnimEndureEnergy(struct Sprite *sprite) { - if (gBattleAnimArgs[0] == 0) + CMD_ARGS(unk0, unk1, unk2, unk3); + + if (cmd->unk0 == 0) { - sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X) + gBattleAnimArgs[1]; - sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y) + gBattleAnimArgs[2]; + sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X) + cmd->unk1; + sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y) + cmd->unk2; } else { - sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X) + gBattleAnimArgs[1]; - sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + gBattleAnimArgs[2]; + sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X) + cmd->unk1; + sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + cmd->unk2; } sprite->data[0] = 0; - sprite->data[1] = gBattleAnimArgs[3]; + sprite->data[1] = cmd->unk3; sprite->callback = AnimEndureEnergy_Step; } @@ -4840,16 +4845,19 @@ static void AnimSharpenSphere_Step(struct Sprite *sprite) static void AnimConversion(struct Sprite *sprite) { + CMD_ARGS(unk0, unk1); + if (sprite->data[0] == 0) { - sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X) + gBattleAnimArgs[0]; - sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y) + gBattleAnimArgs[1]; + sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X) + cmd->unk0; + sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y) + cmd->unk1; if (IsContest()) sprite->y += 10; sprite->data[0]++; } + // TODO: gBattleAnimArgs[ARG_RET_ID]? if ((u16)gBattleAnimArgs[7] == 0xFFFF) DestroyAnimSprite(sprite); } @@ -4858,6 +4866,7 @@ void AnimTask_ConversionAlphaBlend(u8 taskId) { if (gTasks[taskId].data[2] == 1) { + // TODO: gBattleAnimArgs[ARG_RET_ID]? gBattleAnimArgs[7] = 0xFFFF; gTasks[taskId].data[2]++; } @@ -4880,9 +4889,11 @@ void AnimTask_ConversionAlphaBlend(u8 taskId) static void AnimConversion2(struct Sprite *sprite) { + CMD_ARGS(unk0, unk1, unk2); + InitSpritePosToAnimTarget(sprite, FALSE); sprite->animPaused = 1; - sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[0] = cmd->unk2; sprite->callback = AnimConversion2_Step; } @@ -4917,13 +4928,15 @@ void AnimTask_Conversion2AlphaBlend(u8 taskId) static void UNUSED AnimTask_HideBattlersHealthbox(u8 taskId) { + CMD_ARGS(unk0, unk1); + u8 i; for (i = 0; i < gBattlersCount; i++) { - if (gBattleAnimArgs[0] == TRUE && GetBattlerSide(i) == B_SIDE_PLAYER) + if (cmd->unk0 == TRUE && GetBattlerSide(i) == B_SIDE_PLAYER) SetHealthboxSpriteInvisible(gHealthboxSpriteIds[i]); - if (gBattleAnimArgs[1] == TRUE && GetBattlerSide(i) == B_SIDE_OPPONENT) + if (cmd->unk1 == TRUE && GetBattlerSide(i) == B_SIDE_OPPONENT) SetHealthboxSpriteInvisible(gHealthboxSpriteIds[i]); } @@ -4941,6 +4954,8 @@ static void UNUSED AnimTask_ShowBattlersHealthbox(u8 taskId) static void AnimMoon(struct Sprite *sprite) { + CMD_ARGS(unk0, unk1); + if (IsContest()) { sprite->x = 48; @@ -4948,8 +4963,8 @@ static void AnimMoon(struct Sprite *sprite) } else { - sprite->x = gBattleAnimArgs[0]; - sprite->y = gBattleAnimArgs[1]; + sprite->x = cmd->unk0; + sprite->y = cmd->unk1; } sprite->oam.shape = SPRITE_SHAPE(64x64); @@ -4966,8 +4981,10 @@ static void AnimMoon_Step(struct Sprite *sprite) static void AnimMoonlightSparkle(struct Sprite *sprite) { - sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + gBattleAnimArgs[0]; - sprite->y = gBattleAnimArgs[1]; + CMD_ARGS(unk0, unk1); + + sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + cmd->unk0; + sprite->y = cmd->unk1; sprite->data[0] = 0; sprite->data[1] = 0; sprite->data[2] = 0; @@ -5099,16 +5116,18 @@ static void AnimTask_MoonlightEndFade_Step(u8 taskId) static void AnimHornHit(struct Sprite *sprite) { - if (gBattleAnimArgs[2] < 2) - gBattleAnimArgs[2] = 2; + CMD_ARGS(unk0, unk1, unk2); - if (gBattleAnimArgs[2] > 0x7F) - gBattleAnimArgs[2] = 0x7F; + if (cmd->unk2 < 2) + cmd->unk2 = 2; + + if (cmd->unk2 > 0x7F) + cmd->unk2 = 0x7F; sprite->data[0] = 0; - sprite->data[1] = gBattleAnimArgs[2]; - sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[0]; - sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[1]; + sprite->data[1] = cmd->unk2; + sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + cmd->unk0; + sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + cmd->unk1; sprite->data[6] = sprite->x; sprite->data[7] = sprite->y; if (IsContest()) @@ -5286,16 +5305,18 @@ void AnimTask_MusicNotesClearRainbowBlend(u8 taskId) static void AnimWavyMusicNotes(struct Sprite *sprite) { + CMD_ARGS(unk0, unk1, unk2); + u8 index; u8 x, y; SetSpriteCoordsToAnimAttackerCoords(sprite); - StartSpriteAnim(sprite, gBattleAnimArgs[0]); - if ((index = IndexOfSpritePaletteTag(gParticlesColorBlendTable[gBattleAnimArgs[1]][0])) != 0xFF) + StartSpriteAnim(sprite, cmd->unk0); + if ((index = IndexOfSpritePaletteTag(gParticlesColorBlendTable[cmd->unk1][0])) != 0xFF) sprite->oam.paletteNum = index; - sprite->sBlendTableIdx = gBattleAnimArgs[1]; + sprite->sBlendTableIdx = cmd->unk1; sprite->sBlendTimer = 0; - sprite->sBlendCycleTime = gBattleAnimArgs[2]; + sprite->sBlendCycleTime = cmd->unk2; if (IsContest()) { x = 48; @@ -5364,18 +5385,20 @@ static void AnimWavyMusicNotes_Step(struct Sprite *sprite) static void AnimFlyingMusicNotes(struct Sprite *sprite) { - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT) - gBattleAnimArgs[1] *= -1; + CMD_ARGS(unk0, unk1, unk2); - sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + gBattleAnimArgs[1]; - sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[2]; - StartSpriteAnim(sprite, gBattleAnimArgs[0]); + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT) + cmd->unk1 *= -1; + + sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + cmd->unk1; + sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) + cmd->unk2; + StartSpriteAnim(sprite, cmd->unk0); sprite->data[2] = 0; sprite->data[3] = 0; sprite->data[4] = sprite->x << 4; sprite->data[5] = sprite->y << 4; - sprite->data[6] = (gBattleAnimArgs[1] << 4) / 5; - sprite->data[7] = (gBattleAnimArgs[2] << 7) / 5; + sprite->data[6] = (cmd->unk1 << 4) / 5; + sprite->data[7] = (cmd->unk2 << 7) / 5; sprite->callback = AnimFlyingMusicNotes_Step; } @@ -5400,8 +5423,10 @@ static void AnimFlyingMusicNotes_Step(struct Sprite *sprite) static void AnimBellyDrumHand(struct Sprite *sprite) { + CMD_ARGS(unk0); + s16 a; - if (gBattleAnimArgs[0] == 1) + if (cmd->unk0 == 1) { sprite->oam.matrixNum = ST_OAM_HFLIP; a = 16; @@ -5420,23 +5445,25 @@ static void AnimBellyDrumHand(struct Sprite *sprite) void AnimSlowFlyingMusicNotes(struct Sprite *sprite) { + CMD_ARGS(unk0, unk1, unk2, unk3); + s16 xDiff; u8 index; SetSpriteCoordsToAnimAttackerCoords(sprite); sprite->y += 8; - StartSpriteAnim(sprite, gBattleAnimArgs[1]); - index = IndexOfSpritePaletteTag(gParticlesColorBlendTable[gBattleAnimArgs[2]][0]); + StartSpriteAnim(sprite, cmd->unk1); + index = IndexOfSpritePaletteTag(gParticlesColorBlendTable[cmd->unk2][0]); if (index != 0xFF) sprite->oam.paletteNum = index; - xDiff = (gBattleAnimArgs[0] == 0) ? -32 : 32; + xDiff = (cmd->unk0 == 0) ? -32 : 32; sprite->data[0] = 40; sprite->data[1] = sprite->x; sprite->data[2] = xDiff + sprite->data[1]; sprite->data[3] = sprite->y; sprite->data[4] = sprite->data[3] - 40; InitAnimLinearTranslation(sprite); - sprite->data[5] = gBattleAnimArgs[3]; + sprite->data[5] = cmd->unk3; sprite->callback = AnimSlowFlyingMusicNotes_Step; } @@ -5471,16 +5498,18 @@ void SetSpriteNextToMonHead(u8 battler, struct Sprite *sprite) static void AnimThoughtBubble(struct Sprite *sprite) { + CMD_ARGS(unk0, unk1); + u8 animNum; u8 battler; - if (gBattleAnimArgs[0] == 0) + if (cmd->unk0 == 0) battler = gBattleAnimAttacker; else battler = gBattleAnimTarget; SetSpriteNextToMonHead(battler, sprite); animNum = (GetBattlerSide(battler) == B_SIDE_PLAYER) ? 0 : 1; - sprite->data[0] = gBattleAnimArgs[1]; + sprite->data[0] = cmd->unk1; sprite->data[1] = animNum + 2; StartSpriteAnim(sprite, animNum); StoreSpriteCallbackInData6(sprite, AnimThoughtBubble_Step); @@ -5499,8 +5528,10 @@ static void AnimThoughtBubble_Step(struct Sprite *sprite) static void AnimMetronomeFinger(struct Sprite *sprite) { + CMD_ARGS(unk0); + u8 battler; - if (gBattleAnimArgs[0] == 0) + if (cmd->unk0 == 0) battler = gBattleAnimAttacker; else battler = gBattleAnimTarget; @@ -5523,8 +5554,10 @@ static void AnimMetronomeFinger_Step(struct Sprite *sprite) static void AnimFollowMeFinger(struct Sprite *sprite) { + CMD_ARGS(unk0); + u8 battler; - if (gBattleAnimArgs[0] == 0) + if (cmd->unk0 == 0) battler = gBattleAnimAttacker; else battler = gBattleAnimTarget; @@ -5581,8 +5614,10 @@ static void AnimFollowMeFinger_Step2(struct Sprite *sprite) static void AnimTauntFinger(struct Sprite *sprite) { + CMD_ARGS(unk0); + u8 battler; - if (gBattleAnimArgs[0] == 0) + if (cmd->unk0 == 0) battler = gBattleAnimAttacker; else battler = gBattleAnimTarget;