diff --git a/Makefile b/Makefile index 785d95df7..ec560f765 100644 --- a/Makefile +++ b/Makefile @@ -245,7 +245,7 @@ $(C_BUILDDIR)/isagbprn.o: CC1 := tools/agbcc/bin/old_agbcc$(EXE) $(C_BUILDDIR)/isagbprn.o: CFLAGS := -mthumb-interwork $(C_BUILDDIR)/trainer_tower.o: CFLAGS += -ffreestanding -$(C_BUILDDIR)/flying.o: CFLAGS += -ffreestanding +$(C_BUILDDIR)/battle_anim_flying.o: CFLAGS += -ffreestanding $(C_BUILDDIR)/librfu_intr.o: CC1 := tools/agbcc/bin/agbcc_arm$(EXE) $(C_BUILDDIR)/librfu_intr.o: CFLAGS := -O2 -mthumb-interwork -quiet diff --git a/asm/macros/battle_anim_script.inc b/asm/macros/battle_anim_script.inc index 5426cdfba..15c48c39f 100644 --- a/asm/macros/battle_anim_script.inc +++ b/asm/macros/battle_anim_script.inc @@ -14,7 +14,7 @@ .byte 0x02 .4byte \template .if \anim_battler == ANIM_TARGET - .byte 0x80 | (\subpriority_offset & 0x7F) + .byte ANIMSPRITE_IS_TARGET | (\subpriority_offset & 0x7F) .else .byte (\subpriority_offset & 0x7F) .endif @@ -34,20 +34,20 @@ .Lcreatetask_\@_2: .endm - .macro delay param0:req + .macro delay frames:req .byte 0x4 - .byte \param0 + .byte \frames .endm .macro waitforvisualfinish .byte 0x5 .endm - .macro hang1 + .macro nop .byte 0x6 .endm - .macro hang2 + .macro nop2 .byte 0x7 .endm @@ -79,30 +79,30 @@ .byte 0xd .endm - .macro call param0:req + .macro call ptr:req .byte 0xe - .4byte \param0 + .4byte \ptr .endm .macro return .byte 0xf .endm - .macro setarg param0:req, param1:req + .macro setarg argId:req, value:req .byte 0x10 - .byte \param0 - .2byte \param1 + .byte \argId + .2byte \value .endm - .macro choosetwoturnanim param0:req, param1:req + .macro choosetwoturnanim ptr1:req, ptr2:req .byte 0x11 - .4byte \param0 - .4byte \param1 + .4byte \ptr1 + .4byte \ptr2 .endm - .macro jumpifmoveturn param0:req, ptr:req + .macro jumpifmoveturn value:req, ptr:req .byte 0x12 - .byte \param0 + .byte \value .4byte \ptr .endm @@ -144,13 +144,13 @@ .byte \pan .endm - .macro panse_1B se:req, param1:req, param2:req, param3:req, param4:req + .macro panse se:req, currentPan:req, targetPan:req, incrementPan:req, delay:req .byte 0x1b .2byte \se - .byte \param1 - .byte \param2 - .byte \param3 - .byte \param4 + .byte \currentPan + .byte \targetPan + .byte \incrementPan + .byte \delay .endm .macro loopsewithpan se:req, pan:req, wait:req, times:req @@ -168,9 +168,9 @@ .byte \wait .endm - .macro setbldcnt param0:req + .macro setbldcnt bldcnt:req .byte 0x1e - .2byte \param0 + .2byte \bldcnt .endm .macro createsoundtask addr:req, argv:vararg @@ -186,19 +186,19 @@ .byte 0x20 .endm - .macro jumpargeq param0:req, param1:req, ptr:req + .macro jumpargeq argId:req, value:req, ptr:req .byte 0x21 - .byte \param0 - .2byte \param1 + .byte \argId + .2byte \value .4byte \ptr .endm - .macro monbg_22 battler:req + .macro monbg_static battler:req .byte 0x22 .byte \battler .endm - .macro clearmonbg_23 battler:req + .macro clearmonbg_static battler:req .byte 0x23 .byte \battler .endm @@ -208,41 +208,41 @@ .4byte \ptr .endm - .macro fadetobgfromset param0:req, param1:req, param2:req + .macro fadetobgfromset bgOpponent:req, bgPlayer:req, bgContest:req .byte 0x25 - .byte \param0 - .byte \param1 - .byte \param2 + .byte \bgOpponent + .byte \bgPlayer + .byte \bgContest .endm - .macro panse_26 se:req, param1:req, param2:req, param3:req, param4:req + .macro panse_adjustnone se:req, currentPan:req, targetPan:req, incrementPan:req, delay:req .byte 0x26 .2byte \se - .byte \param1 - .byte \param2 - .byte \param3 - .byte \param4 + .byte \currentPan + .byte \targetPan + .byte \incrementPan + .byte \delay .endm - .macro panse_27 se:req, param1:req, param2:req, param3:req, param4:req + .macro panse_adjustall se:req, currentPan:req, targetPan:req, incrementPan:req, delay:req .byte 0x27 .2byte \se - .byte \param1 - .byte \param2 - .byte \param3 - .byte \param4 + .byte \currentPan + .byte \targetPan + .byte \incrementPan + .byte \delay .endm - .macro monbgprio_28 battler:req + .macro splitbgprio battler:req .byte 0x28 .byte \battler .endm - .macro monbgprio_29 + .macro splitbgprio_all .byte 0x29 .endm - .macro monbgprio_2A battler:req + .macro splitbgprio_foes battler:req .byte 0x2a .byte \battler .endm @@ -257,12 +257,12 @@ .byte \battler .endm - .macro doublebattle_2D battler:req + .macro teamattack_moveback battler:req .byte 0x2d .byte \battler .endm - .macro doublebattle_2E battler:req + .macro teamattack_movefwd battler:req .byte 0x2e .byte \battler .endm diff --git a/constants/gba_constants.inc b/constants/gba_constants.inc index 9d59c8fcd..3ff857ee8 100644 --- a/constants/gba_constants.inc +++ b/constants/gba_constants.inc @@ -488,3 +488,26 @@ .set OAM_SIZE_8x32, OAM_SIZE_1 | OAM_V_RECTANGLE .set OAM_SIZE_16x32, OAM_SIZE_2 | OAM_V_RECTANGLE .set OAM_SIZE_32x64, OAM_SIZE_3 | OAM_V_RECTANGLE + +@ BLDCNT + + .set BLDCNT_TGT1_BG0, 1 << 0 + .set BLDCNT_TGT1_BG1, 1 << 1 + .set BLDCNT_TGT1_BG2, 1 << 2 + .set BLDCNT_TGT1_BG3, 1 << 3 + .set BLDCNT_TGT1_OBJ, 1 << 4 + .set BLDCNT_TGT1_BD, 1 << 5 + .set BLDCNT_TGT1_ALL, BLDCNT_TGT1_BG0 | BLDCNT_TGT1_BG1 | BLDCNT_TGT1_BG2 | BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD + + .set BLDCNT_EFFECT_NONE, 0 << 6 + .set BLDCNT_EFFECT_BLEND, 1 << 6 + .set BLDCNT_EFFECT_LIGHTEN, 2 << 6 + .set BLDCNT_EFFECT_DARKEN, 3 << 6 + + .set BLDCNT_TGT2_BG0, 1 << 8 + .set BLDCNT_TGT2_BG1, 1 << 9 + .set BLDCNT_TGT2_BG2, 1 << 10 + .set BLDCNT_TGT2_BG3, 1 << 11 + .set BLDCNT_TGT2_OBJ, 1 << 12 + .set BLDCNT_TGT2_BD, 1 << 13 + .set BLDCNT_TGT2_ALL, BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index 936e58a35..3304833c7 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -1,40 +1,13 @@ #include "constants/battle.h" #include "constants/battle_anim.h" +#include "constants/battle_string_ids.h" +#include "constants/rgb.h" #include "constants/songs.h" #include "constants/sound.h" #include "constants/moves.h" .include "asm/macros.inc" .include "asm/macros/battle_anim_script.inc" - -#define FALSE 0 -#define TRUE 1 - -#define RGB(r, g, b) ((r) | ((g) << 5) | ((b) << 10)) -#define RGB_BLACK 0x0000 -#define RGB_WHITE 0x7FFF -#define RGB_WHITEALPHA 0xFFFF - -// BLDCNT -// Bits 0-5 select layers for the 1st target -#define BLDCNT_TGT1_BG0 (1 << 0) -#define BLDCNT_TGT1_BG1 (1 << 1) -#define BLDCNT_TGT1_BG2 (1 << 2) -#define BLDCNT_TGT1_BG3 (1 << 3) -#define BLDCNT_TGT1_OBJ (1 << 4) -#define BLDCNT_TGT1_BD (1 << 5) -// Bits 6-7 select the special effect -#define BLDCNT_EFFECT_NONE (0 << 6) // no special effect -#define BLDCNT_EFFECT_BLEND (1 << 6) // 1st+2nd targets mixed (controlled by BLDALPHA) -#define BLDCNT_EFFECT_LIGHTEN (2 << 6) // 1st target becomes whiter (controlled by BLDY) -#define BLDCNT_EFFECT_DARKEN (3 << 6) // 1st target becomes blacker (controlled by BLDY) -// Bits 8-13 select layers for the 2nd target -#define BLDCNT_TGT2_BG0 (1 << 8) -#define BLDCNT_TGT2_BG1 (1 << 9) -#define BLDCNT_TGT2_BG2 (1 << 10) -#define BLDCNT_TGT2_BG3 (1 << 11) -#define BLDCNT_TGT2_OBJ (1 << 12) -#define BLDCNT_TGT2_BD (1 << 13) -#define BLDCNT_TGT2_ALL (BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD) + .include "constants/constants.inc" .section script_data, "aw", %progbits @@ -314,7 +287,7 @@ gBattleAnims_Moves:: .4byte Move_FOCUS_PUNCH .4byte Move_SMELLING_SALT .4byte Move_FOLLOW_ME - .4byte Move_ANCIENT_POWER + .4byte Move_NATURE_POWER .4byte Move_CHARGE .4byte Move_TAUNT .4byte Move_HELPING_HAND @@ -402,97 +375,101 @@ gBattleAnims_Moves:: .4byte Move_WATER_PULSE .4byte Move_DOOM_DESIRE .4byte Move_PSYCHO_BOOST - .4byte Move_COUNT + .4byte Move_COUNT @ cannot be reached, because last move is Psycho Boost + .align 2 gBattleAnims_StatusConditions:: - .4byte Status_Poison - .4byte Status_Confusion - .4byte Status_Burn - .4byte Status_Infatuation - .4byte Status_Sleep - .4byte Status_Paralysis - .4byte Status_Freeze - .4byte Status_Curse - .4byte Status_Nightmare + .4byte Status_Poison @ B_ANIM_STATUS_PSN + .4byte Status_Confusion @ B_ANIM_STATUS_CONFUSION + .4byte Status_Burn @ B_ANIM_STATUS_BRN + .4byte Status_Infatuation @ B_ANIM_STATUS_INFATUATION + .4byte Status_Sleep @ B_ANIM_STATUS_SLP + .4byte Status_Paralysis @ B_ANIM_STATUS_PRZ + .4byte Status_Freeze @ B_ANIM_STATUS_FRZ + .4byte Status_Curse @ B_ANIM_STATUS_CURSED + .4byte Status_Nightmare @ B_ANIM_STATUS_NIGHTMARE + .align 2 gBattleAnims_General:: - .4byte General_CastformChange - .4byte General_StatsChange - .4byte General_SubstituteFade - .4byte General_SubstituteAppear - .4byte General_BaitThrow - .4byte General_ItemKnockoff - .4byte General_TurnTrap - .4byte General_ItemEffect - .4byte General_SmokeballEscape - .4byte General_HangedOn - .4byte General_Rain - .4byte General_Sun - .4byte General_Sandstorm - .4byte General_Hail - .4byte General_LeechSeedDrain - .4byte General_MonHit - .4byte General_ItemSteal - .4byte General_SnatchMove - .4byte General_FutureSightHit - .4byte General_DoomDesireHit - .4byte General_FocusPunchSetUp - .4byte General_IngrainHeal - .4byte General_WishHeal - .4byte General_MonScared - .4byte General_GhostGetOut - .4byte General_SilphScoped - .4byte General_SafariRockThrow - .4byte General_SafariReaction + .4byte General_CastformChange @ B_ANIM_CASTFORM_CHANGE + .4byte General_StatsChange @ B_ANIM_STATS_CHANGE + .4byte General_SubstituteFade @ B_ANIM_SUBSTITUTE_FADE + .4byte General_SubstituteAppear @ B_ANIM_SUBSTITUTE_APPEAR + .4byte General_BaitThrow @ B_ANIM_BAIT_THROW + .4byte General_ItemKnockoff @ B_ANIM_ITEM_KNOCKOFF + .4byte General_TurnTrap @ B_ANIM_TURN_TRAP + .4byte General_HeldItemEffect @ B_ANIM_HELD_ITEM_EFFECT + .4byte General_SmokeballEscape @ B_ANIM_SMOKEBALL_ESCAPE + .4byte General_FocusBand @ B_ANIM_FOCUS_BAND + .4byte General_Rain @ B_ANIM_RAIN_CONTINUES + .4byte General_Sun @ B_ANIM_SUN_CONTINUES + .4byte General_Sandstorm @ B_ANIM_SANDSTORM_CONTINUES + .4byte General_Hail @ B_ANIM_HAIL_CONTINUES + .4byte General_LeechSeedDrain @ B_ANIM_LEECH_SEED_DRAIN + .4byte General_MonHit @ B_ANIM_MON_HIT + .4byte General_ItemSteal @ B_ANIM_ITEM_STEAL + .4byte General_SnatchMove @ B_ANIM_SNATCH_MOVE + .4byte General_FutureSightHit @ B_ANIM_FUTURE_SIGHT_HIT + .4byte General_DoomDesireHit @ B_ANIM_DOOM_DESIRE_HIT + .4byte General_FocusPunchSetUp @ B_ANIM_FOCUS_PUNCH_SETUP + .4byte General_IngrainHeal @ B_ANIM_INGRAIN_HEAL + .4byte General_WishHeal @ B_ANIM_WISH_HEAL + .4byte General_MonScared @ B_ANIM_MON_SCARED + .4byte General_GhostGetOut @ B_ANIM_GHOST_GET_OUT + .4byte General_SilphScoped @ B_ANIM_SILPH_SCOPED + .4byte General_SafariRockThrow @ B_ANIM_ROCK_THROW + .4byte General_SafariReaction @ B_ANIM_SAFARI_REACTION + .align 2 gBattleAnims_Special:: - .4byte Special_LevelUp - .4byte Special_SwitchOutPlayerMon - .4byte Special_SwitchOutOpponentMon - .4byte Special_BallThrow - .4byte Special_SafariBallThrow - .4byte Special_SubstituteToMon - .4byte Special_MonToSubstitute + .4byte Special_LevelUp @ B_ANIM_LVL_UP + .4byte Special_SwitchOutPlayerMon @ B_ANIM_SWITCH_OUT_PLAYER_MON + .4byte Special_SwitchOutOpponentMon @ B_ANIM_SWITCH_OUT_OPPONENT_MON + .4byte Special_BallThrow @ B_ANIM_BALL_THROW + .4byte Special_BallThrowWithTrainer @ B_ANIM_BALL_THROW_WITH_TRAINER + .4byte Special_SubstituteToMon @ B_ANIM_SUBSTITUTE_TO_MON + .4byte Special_MonToSubstitute @ B_ANIM_MON_TO_SUBSTITUTE -Move_NONE:: -Move_POUND:: -Move_MIRROR_MOVE:: +Move_NONE: +Move_MIRROR_MOVE: +Move_POUND: loadspritegfx ANIM_TAG_IMPACT - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 - playsewithpan SE_M_DOUBLE_SLAP, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2 - createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1 + playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1 waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -Move_DOUBLE_SLAP:: +Move_DOUBLE_SLAP: loadspritegfx ANIM_TAG_IMPACT - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 choosetwoturnanim DoubleSlapLeft, DoubleSlapRight -DoubleSlapContinue:: - createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1 - playsewithpan SE_M_DOUBLE_SLAP, 63 + +DoubleSlapContinue: + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1 + playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -DoubleSlapLeft:: - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -8, 0, 1, 2 +DoubleSlapLeft: + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -8, 0, ANIM_TARGET, 2 goto DoubleSlapContinue -DoubleSlapRight:: - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 8, 0, 1, 2 +DoubleSlapRight: + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 8, 0, ANIM_TARGET, 2 goto DoubleSlapContinue -Move_POISON_POWDER:: +Move_POISON_POWDER: loadspritegfx ANIM_TAG_POISON_POWDER loadspritegfx ANIM_TAG_POISON_BUBBLE - loopsewithpan SE_M_POISON_POWDER, 63, 10, 6 + 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 @@ -514,9 +491,9 @@ Move_POISON_POWDER:: waitforvisualfinish end -Move_STUN_SPORE:: +Move_STUN_SPORE: loadspritegfx ANIM_TAG_STUN_SPORE - loopsewithpan SE_M_POISON_POWDER, 63, 10, 6 + 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 @@ -538,9 +515,9 @@ Move_STUN_SPORE:: waitforvisualfinish end -Move_SLEEP_POWDER:: +Move_SLEEP_POWDER: loadspritegfx ANIM_TAG_SLEEP_POWDER - loopsewithpan SE_M_POISON_POWDER, 63, 10, 6 + 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 @@ -562,26 +539,26 @@ Move_SLEEP_POWDER:: waitforvisualfinish end -Move_SWIFT:: +Move_SWIFT: loadspritegfx ANIM_TAG_YELLOW_STAR loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 - playsewithpan SE_M_SWIFT, 192 + playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER createsprite gSwiftStarSpriteTemplate, ANIM_TARGET, 3, 20, -10, 20, 0, 22, 20, 1 delay 5 - playsewithpan SE_M_SWIFT, 192 + playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER createsprite gSwiftStarSpriteTemplate, ANIM_TARGET, 3, 20, -10, 20, 5, 22, -18, 1 delay 5 - playsewithpan SE_M_SWIFT, 192 + playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER createsprite gSwiftStarSpriteTemplate, ANIM_TARGET, 3, 20, -10, 20, -10, 22, 15, 1 - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 18, 1 - createvisualtask AnimTask_ShakeMon2, 2, 3, 2, 0, 18, 1 + 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, 192 + playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER createsprite gSwiftStarSpriteTemplate, ANIM_TARGET, 3, 20, -10, 20, 0, 22, -20, 1 delay 5 - playsewithpan SE_M_SWIFT, 192 + playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER createsprite gSwiftStarSpriteTemplate, ANIM_TARGET, 3, 20, -10, 20, 0, 22, 12, 1 delay 5 waitforvisualfinish @@ -589,62 +566,62 @@ Move_SWIFT:: blendoff end -Move_STRENGTH:: +Move_STRENGTH: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 - playsewithpan SE_M_TAKE_DOWN, 192 - createvisualtask AnimTask_ShakeAndSinkMon, 5, 0, 2, 0, 96, 30 + playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER + createvisualtask AnimTask_ShakeAndSinkMon, 5, ANIM_ATTACKER, 2, 0, 96, 30 waitforvisualfinish delay 10 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 4 - createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 1, 18, 6, 2, 4 + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_TARGET, 18, 6, 2, 4 delay 4 - playsewithpan SE_M_MEGA_KICK2, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 16, 12, 1, 1 + playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 16, 12, ANIM_TARGET, 1 delay 4 - playsewithpan SE_M_MEGA_KICK2, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -16, -12, 1, 1 + playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -16, -12, ANIM_TARGET, 1 delay 4 - playsewithpan SE_M_MEGA_KICK2, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 3, 4, 1, 1 + playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 3, 4, ANIM_TARGET, 1 waitforvisualfinish - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 8, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 8, 1 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -Move_TACKLE:: +Move_TACKLE: loadspritegfx ANIM_TAG_IMPACT - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 4 delay 6 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2 - createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1 - playsewithpan SE_M_COMET_PUNCH, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -Move_BODY_SLAM:: +Move_BODY_SLAM: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 - playsewithpan SE_M_TAKE_DOWN, 192 - createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, 0 + playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER + createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, ANIM_ATTACKER waitforvisualfinish delay 11 createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 26, 0, 0, 5 delay 6 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 4, -10, 0, 1, 0 - loopsewithpan SE_M_MEGA_KICK2, 63, 10, 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 4, -10, 0, ANIM_TARGET, 0 + loopsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET, 10, 2 delay 1 createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -28, 0, 0, 3 waitforvisualfinish - createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 4, 0, 12, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 4, 0, 12, 1 waitforvisualfinish delay 10 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 6 @@ -655,12 +632,12 @@ Move_BODY_SLAM:: blendoff end -Move_SUPERSONIC:: +Move_SUPERSONIC: loadspritegfx ANIM_TAG_GOLD_RING monbg ANIM_ATK_PARTNER - monbgprio_2A 0 + splitbgprio_foes ANIM_ATTACKER setalpha 12, 8 - createvisualtask AnimTask_ShakeMon2, 2, 0, 2, 0, 8, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 2, 0, 8, 1 call SupersonicRing call SupersonicRing call SupersonicRing @@ -672,140 +649,142 @@ Move_SUPERSONIC:: blendoff end -SupersonicRing:: - playsewithpan SE_M_SUPERSONIC, 192 - createsprite gSupersonicWaveSpriteTemplate, ANIM_TARGET, 2, 16, 0, 0, 0, 30, 0 +SupersonicRing: + playsewithpan SE_M_SUPERSONIC, SOUND_PAN_ATTACKER + createsprite gSupersonicRingSpriteTemplate, ANIM_TARGET, 2, 16, 0, 0, 0, 30, 0 delay 2 return -Move_SCREECH:: +Move_SCREECH: loadspritegfx ANIM_TAG_PURPLE_RING - createvisualtask AnimTask_ShakeMon2, 2, 0, 3, 0, 2, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 3, 0, 2, 1 call ScreechRing call ScreechRing delay 16 - createvisualtask AnimTask_SwayMon, 5, 0, 6, 2048, 2, 1 + createvisualtask AnimTask_SwayMon, 5, 0, 6, 2048, 2, ANIM_TARGET waitforvisualfinish end -ScreechRing:: - playsewithpan SE_M_SCREECH, 192 - createsprite gScreechWaveSpriteTemplate, ANIM_TARGET, 2, 16, 0, 0, 0, 30, 0 +ScreechRing: + playsewithpan SE_M_SCREECH, SOUND_PAN_ATTACKER + createsprite gScreechRingSpriteTemplate, ANIM_TARGET, 2, 16, 0, 0, 0, 30, 0 delay 2 return -Move_FLAME_WHEEL:: +Move_FLAME_WHEEL: loadspritegfx ANIM_TAG_SMALL_EMBER monbg ANIM_DEF_PARTNER - monbgprio_2A 1 + splitbgprio_foes ANIM_TARGET createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 0 - playsewithpan SE_M_FLAME_WHEEL, 192 + playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER delay 2 createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 4 - playsewithpan SE_M_FLAME_WHEEL, 192 + playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER delay 2 createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 8 - playsewithpan SE_M_FLAME_WHEEL, 192 + playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER delay 2 createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 12 - playsewithpan SE_M_FLAME_WHEEL, 192 + playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER delay 2 createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 16 - playsewithpan SE_M_FLAME_WHEEL, 192 + playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER delay 2 createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 20 - playsewithpan SE_M_FLAME_WHEEL, 192 + playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER delay 2 createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 24 - playsewithpan SE_M_FLAME_WHEEL, 192 + playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER waitforvisualfinish createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 24, 0, 0, 6 delay 4 - createvisualtask AnimTask_ShakeMon, 2, 1, 5, 0, 8, 1 - createvisualtask AnimTask_BlendMonInAndOut, 3, 1, 31, 12, 1, 1 - playsewithpan SE_M_FLAME_WHEEL2, 63 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 8, 1 + createvisualtask AnimTask_BlendMonInAndOut, 3, ANIM_TARGET, RGB_RED, 12, 1, 1 + playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_TARGET call FireSpreadEffect delay 7 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 9 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER end + +FlameWheel1: @ Unused createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 50 delay 4 return -Move_PIN_MISSILE:: +Move_PIN_MISSILE: loadspritegfx ANIM_TAG_NEEDLE loadspritegfx ANIM_TAG_IMPACT - monbg 1 - monbgprio_28 1 + monbg ANIM_TARGET + splitbgprio ANIM_TARGET setalpha 12, 8 - playsewithpan SE_M_JUMP_KICK, 192 + playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER createsprite gPinMissileSpriteTemplate, ANIM_ATTACKER, 2, 20, -8, -8, -8, 20, -32 delay 15 createsprite gPinMissileSpriteTemplate, ANIM_ATTACKER, 2, 20, -8, 8, 8, 20, -40 delay 4 - playsewithpan SE_M_HORN_ATTACK, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -8, -8, 1, 2 - createvisualtask AnimTask_ShakeMon2, 2, 1, 3, 0, 2, 1 + playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -8, -8, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 3, 0, 2, 1 delay 9 createsprite gPinMissileSpriteTemplate, ANIM_ATTACKER, 2, 20, -8, 0, 0, 20, -32 delay 4 - playsewithpan SE_M_HORN_ATTACK, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 8, 8, 1, 2 - createvisualtask AnimTask_ShakeMon2, 2, 1, 3, 0, 2, 1 + playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 8, 8, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 3, 0, 2, 1 delay 14 - playsewithpan SE_M_HORN_ATTACK, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 2 - createvisualtask AnimTask_ShakeMon2, 2, 1, 3, 0, 2, 1 + playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 3, 0, 2, 1 waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -Move_ICICLE_SPEAR:: +Move_ICICLE_SPEAR: loadspritegfx ANIM_TAG_ICICLE_SPEAR loadspritegfx ANIM_TAG_IMPACT - monbg 1 - monbgprio_28 1 + monbg ANIM_TARGET + splitbgprio ANIM_TARGET setalpha 12, 8 - playsewithpan SE_M_ICY_WIND, 192 + playsewithpan SE_M_ICY_WIND, SOUND_PAN_ATTACKER createsprite gIcicleSpearSpriteTemplate, ANIM_ATTACKER, 2, 20, -8, -8, -8, 20, -32 delay 15 createsprite gIcicleSpearSpriteTemplate, ANIM_ATTACKER, 2, 20, -8, 8, 8, 20, -40 delay 4 - playsewithpan SE_M_HORN_ATTACK, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -8, -8, 1, 2 - createvisualtask AnimTask_ShakeMon2, 2, 1, 3, 0, 2, 1 + playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -8, -8, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 3, 0, 2, 1 delay 9 createsprite gIcicleSpearSpriteTemplate, ANIM_ATTACKER, 2, 20, -8, 0, 0, 20, -32 delay 4 - playsewithpan SE_M_HORN_ATTACK, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 8, 8, 1, 2 - createvisualtask AnimTask_ShakeMon2, 2, 1, 3, 0, 2, 1 + playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 8, 8, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 3, 0, 2, 1 delay 14 - playsewithpan SE_M_HORN_ATTACK, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 2 - createvisualtask AnimTask_ShakeMon2, 2, 1, 3, 0, 2, 1 + playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 3, 0, 2, 1 waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -Move_TAKE_DOWN:: +Move_TAKE_DOWN: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 - playsewithpan SE_M_TAKE_DOWN, 192 - createvisualtask AnimTask_WindUpLunge, 5, 0, -24, 8, 23, 10, 40, 10 + playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER + createvisualtask AnimTask_WindUpLunge, 5, ANIM_ATTACKER, -24, 8, 23, 10, 40, 10 delay 35 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, 0, 10, 0, 0 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 4, -10, 0, 1, 0 - playsewithpan SE_M_MEGA_KICK2, 63 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB_BLACK, 10, RGB_BLACK, 0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 4, -10, 0, ANIM_TARGET, 0 + playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET delay 1 createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -16, 0, 0, 4 waitforvisualfinish - createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 4, 0, 12, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 4, 0, 12, 1 waitforvisualfinish delay 2 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 5 @@ -816,32 +795,32 @@ Move_TAKE_DOWN:: blendoff end -Move_DOUBLE_EDGE:: +Move_DOUBLE_EDGE: loadspritegfx ANIM_TAG_IMPACT - playsewithpan SE_M_SWIFT, 192 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, 4, 2, RGB_WHITE, 10, 0, 0 + playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_ATTACKER, 4, 2, RGB_WHITE, 10, RGB_BLACK, 0 waitforvisualfinish delay 10 - playsewithpan SE_M_SWAGGER, 192 - waitplaysewithpan SE_M_SWAGGER, 192, 8 - createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 18, 6, 2, 4 + playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER + waitplaysewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER, 8 + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 18, 6, 2, 4 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 16, 16, RGB_WHITE + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 0, 16, 16, RGB_WHITE createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, 0, 0, 4 delay 3 waitforvisualfinish - playsewithpan SE_M_MEGA_KICK2, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, -10, 0, 1, 0 + playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, -10, 0, ANIM_TARGET, 0 createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -32, 0, 0, 3 waitforvisualfinish - createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, 0, 0 - createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, 1, 0 - createvisualtask AnimTask_ShakeMonInPlace, 2, 0, 4, 0, 12, 1 - createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 4, 0, 12, 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 16, 0, RGB_WHITE + createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_ATTACKER, 0 + createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_TARGET, 0 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 4, 0, 12, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 4, 0, 12, 1 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 16, 0, RGB_WHITE waitforvisualfinish - createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, 0, 1 - createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, 1, 1 + createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_ATTACKER, 1 + createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_TARGET, 1 waitforvisualfinish createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 5 delay 3 @@ -849,57 +828,57 @@ Move_DOUBLE_EDGE:: waitforvisualfinish end -Move_POISON_STING:: +Move_POISON_STING: loadspritegfx ANIM_TAG_NEEDLE loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_POISON_BUBBLE - monbg 1 - monbgprio_28 1 + monbg ANIM_TARGET + splitbgprio ANIM_TARGET setalpha 12, 8 - playsewithpan SE_M_RAZOR_WIND2, 192 + playsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER createsprite gLinearStingerSpriteTemplate, ANIM_TARGET, 2, 20, 0, -8, 0, 20 waitforvisualfinish - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 2 - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 5, 1 - playsewithpan SE_M_HORN_ATTACK, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 5, 1 + playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET waitforvisualfinish call PoisonBubblesEffect waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -Move_TWINEEDLE:: +Move_TWINEEDLE: loadspritegfx ANIM_TAG_NEEDLE loadspritegfx ANIM_TAG_IMPACT - monbg 1 - monbgprio_28 1 + monbg ANIM_TARGET + splitbgprio ANIM_TARGET setalpha 12, 8 - loopsewithpan SE_M_RAZOR_WIND2, 192, 6, 2 + loopsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER, 6, 2 createsprite gLinearStingerSpriteTemplate, ANIM_TARGET, 2, 10, -4, 0, -4, 20 createsprite gLinearStingerSpriteTemplate, ANIM_TARGET, 2, 20, 12, 10, 12, 20 delay 20 - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 5, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 5, 1 createsprite gHandleInvertHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, -4, 1, 3 - loopsewithpan SE_M_HORN_ATTACK, 63, 5, 2 + loopsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET, 5, 2 delay 1 createsprite gHandleInvertHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 10, 12, 1, 3 waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -Move_FIRE_BLAST:: +Move_FIRE_BLAST: loadspritegfx ANIM_TAG_SMALL_EMBER - createsoundtask sub_80DCE10, SE_M_FLAME_WHEEL, SE_M_FLAME_WHEEL2 + createsoundtask SoundTask_FireBlast, SE_M_FLAME_WHEEL, SE_M_FLAME_WHEEL2 call FireBlastRing call FireBlastRing call FireBlastRing delay 24 - createvisualtask AnimTask_BlendSelected, 10, 1, 3, 0, 8, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 3, 0, 8, RGB_BLACK waitforvisualfinish delay 19 - createvisualtask AnimTask_ShakeMon, 2, 1, 5, 0, 20, 1 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 20, 1 call FireBlastCross delay 3 call FireBlastCross @@ -918,11 +897,11 @@ Move_FIRE_BLAST:: delay 3 call FireBlastCross waitforvisualfinish - createvisualtask AnimTask_BlendSelected, 10, 1, 2, 8, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 2, 8, 0, RGB_BLACK waitforvisualfinish end -FireBlastRing:: +FireBlastRing: createsprite gFireBlastRingSpriteTemplate, ANIM_TARGET, 2, 0, 0, 0 createsprite gFireBlastRingSpriteTemplate, ANIM_TARGET, 2, 0, 0, 51 createsprite gFireBlastRingSpriteTemplate, ANIM_TARGET, 2, 0, 0, 102 @@ -931,7 +910,7 @@ FireBlastRing:: delay 5 return -FireBlastCross:: +FireBlastCross: createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0, 0, 10, 0, -2 createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0, 0, 13, -2, 0 createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0, 0, 13, 2, 0 @@ -939,205 +918,205 @@ FireBlastCross:: createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0, 0, 15, 2, 2 return -Move_LEECH_SEED:: +Move_LEECH_SEED: loadspritegfx ANIM_TAG_SEED - playsewithpan SE_M_POISON_POWDER, 192 + playsewithpan SE_M_POISON_POWDER, SOUND_PAN_ATTACKER createsprite gLeechSeedSpriteTemplate, ANIM_TARGET, 2, 15, 0, 0, 24, 35, -32 delay 8 - playsewithpan SE_M_POISON_POWDER, 192 + playsewithpan SE_M_POISON_POWDER, SOUND_PAN_ATTACKER createsprite gLeechSeedSpriteTemplate, ANIM_TARGET, 2, 15, 0, -16, 24, 35, -40 delay 8 - playsewithpan SE_M_POISON_POWDER, 192 + playsewithpan SE_M_POISON_POWDER, SOUND_PAN_ATTACKER createsprite gLeechSeedSpriteTemplate, ANIM_TARGET, 2, 15, 0, 16, 24, 35, -37 delay 12 - loopsewithpan SE_M_TAIL_WHIP, 63, 10, 8 + loopsewithpan SE_M_TAIL_WHIP, SOUND_PAN_TARGET, 10, 8 waitforvisualfinish end -Move_EMBER:: +Move_EMBER: loadspritegfx ANIM_TAG_SMALL_EMBER - loopsewithpan SE_M_EMBER, 192, 5, 2 + loopsewithpan SE_M_EMBER, SOUND_PAN_ATTACKER, 5, 2 createsprite gEmberSpriteTemplate, ANIM_TARGET, 2, 20, 0, -16, 24, 20, 1 delay 4 createsprite gEmberSpriteTemplate, ANIM_TARGET, 2, 20, 0, 0, 24, 20, 1 delay 4 createsprite gEmberSpriteTemplate, ANIM_TARGET, 2, 20, 0, 16, 24, 20, 1 delay 16 - playsewithpan SE_M_FLAME_WHEEL, 63 + playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_TARGET call EmberFireHit call EmberFireHit call EmberFireHit end -EmberFireHit:: - createsprite gEmberFlareSpriteTemplate, ANIM_TARGET, 2, -24, 24, 24, 24, 20, 1, 1 +EmberFireHit: + createsprite gEmberFlareSpriteTemplate, ANIM_TARGET, 2, -24, 24, 24, 24, 20, ANIM_TARGET, 1 delay 4 return -Move_MEGA_PUNCH:: +Move_MEGA_PUNCH: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET - monbg 1 + monbg ANIM_TARGET delay 2 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 0, 16, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 0, 0, 16, RGB_BLACK setalpha 12, 8 - playsewithpan SE_M_MEGA_KICK, 63 + playsewithpan SE_M_MEGA_KICK, SOUND_PAN_TARGET createsprite gMegaPunchKickSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 50 - createvisualtask AnimTask_BlendSelected, 10, 4, 2, 0, 7, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 7, RGB_WHITE delay 50 call SetImpactBackground - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 0 - createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 22, 1 - createvisualtask AnimTask_BlendSelected, 10, 4, 2, 0, 0, RGB_WHITE - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, 0, 8, 0, 0 - playsewithpan SE_M_VITAL_THROW2, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 0 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 22, 1 + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 0, RGB_WHITE + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB_BLACK, 8, RGB_BLACK, 0 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff delay 2 restorebg waitbgfadein end -SetImpactBackground:: +SetImpactBackground: delay 2 - createvisualtask AnimTask_IsContest, 2, - jumpargeq 7, 1, SetImpactContestsBG - createvisualtask AnimTask_IsTargetPlayerSide, 2, - jumpargeq 7, 0, SetImpactOpponentBG - jumpargeq 7, 1, SetImpactPlayerBG -SetImpactBackgroundRet:: + createvisualtask AnimTask_IsContest, 2 + jumprettrue SetImpactContestsBG + createvisualtask AnimTask_IsTargetPlayerSide, 2 + jumpretfalse SetImpactOpponentBG + jumprettrue SetImpactPlayerBG +SetImpactBackgroundRet: return -SetImpactOpponentBG:: - changebg 4 +SetImpactOpponentBG: + changebg BG_IMPACT_OPPONENT goto SetImpactBackgroundRet -SetImpactPlayerBG:: - changebg 5 +SetImpactPlayerBG: + changebg BG_IMPACT_PLAYER goto SetImpactBackgroundRet -SetImpactContestsBG:: - changebg 6 +SetImpactContestsBG: + changebg BG_IMPACT_CONTESTS goto SetImpactBackgroundRet -Move_MEGA_KICK:: +Move_MEGA_KICK: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET - monbg 1 + monbg ANIM_TARGET delay 2 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 0, 16, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 0, 0, 16, RGB_BLACK setalpha 12, 8 - playsewithpan SE_M_MEGA_KICK, 63 + playsewithpan SE_M_MEGA_KICK, SOUND_PAN_TARGET createsprite gMegaPunchKickSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 50 - createvisualtask AnimTask_BlendSelected, 10, 4, 2, 0, 7, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 7, RGB_WHITE delay 50 - playsewithpan SE_M_MEGA_KICK2, 63 + playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET call SetImpactBackground - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 0 - createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 22, 1 - createvisualtask AnimTask_BlendSelected, 10, 4, 2, 0, 0, RGB_WHITE - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, 0, 8, 0, 0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 0 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 22, 1 + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 0, RGB_WHITE + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB_BLACK, 8, RGB_BLACK, 0 waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff delay 2 restorebg waitbgfadein end -Move_COMET_PUNCH:: +Move_COMET_PUNCH: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 choosetwoturnanim CometPunchLeft, CometPunchRight -CometPunchContinue:: - createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1 - playsewithpan SE_M_COMET_PUNCH, 63 +CometPunchContinue: + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -CometPunchLeft:: - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -8, -8, 1, 2 +CometPunchLeft: + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -8, -8, ANIM_TARGET, 2 createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 3, -8, 0, 8, 1, 0 goto CometPunchContinue -CometPunchRight:: - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 8, -8, 1, 2 +CometPunchRight: + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 8, -8, ANIM_TARGET, 2 createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 3, 8, 0, 8, 1, 0 goto CometPunchContinue -Move_SONIC_BOOM:: +Move_SONIC_BOOM: loadspritegfx ANIM_TAG_AIR_WAVE loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER - monbgprio_28 1 + splitbgprio ANIM_TARGET setalpha 12, 8 call SonicBoomProjectile call SonicBoomProjectile call SonicBoomProjectile - createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 10, 1 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 10, 1 call SonicBoomHit waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -SonicBoomProjectile:: - playsewithpan SE_M_RAZOR_WIND2, 192 +SonicBoomProjectile: + playsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER createsprite gSonicBoomSpriteTemplate, ANIM_TARGET, 2, 16, 0, 0, 0, 15 delay 4 return -SonicBoomHit:: - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 2 +SonicBoomHit: + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 2 delay 4 return -Move_THUNDER_SHOCK:: +Move_THUNDER_SHOCK: loadspritegfx ANIM_TAG_SPARK loadspritegfx ANIM_TAG_SPARK_2 - createvisualtask AnimTask_BlendSelected, 10, 1, 0, 0, 6, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 0, 6, RGB_BLACK waitforvisualfinish delay 10 createvisualtask AnimTask_ElectricBolt, 5, 0, -44, 0 - playsewithpan SE_M_THUNDERBOLT, 63 + playsewithpan SE_M_THUNDERBOLT, SOUND_PAN_TARGET delay 9 - createvisualtask AnimTask_BlendSelected, 10, 4, 0, 0, 13, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 0, 0, 13, RGB_BLACK waitforvisualfinish - createvisualtask AnimTask_BlendSelected, 10, 4, 0, 13, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 0, 13, 0, RGB_BLACK waitforvisualfinish delay 20 call ElectricityEffect waitforvisualfinish delay 20 - createvisualtask AnimTask_BlendSelected, 10, 1, 0, 6, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 6, 0, RGB_BLACK waitforvisualfinish end -Move_THUNDERBOLT:: +Move_THUNDERBOLT: loadspritegfx ANIM_TAG_SPARK loadspritegfx ANIM_TAG_SHOCK_3 loadspritegfx ANIM_TAG_SPARK_2 - createvisualtask AnimTask_BlendSelected, 10, 1, 0, 0, 6, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 0, 6, RGB_BLACK waitforvisualfinish delay 10 createvisualtask AnimTask_ElectricBolt, 5, 24, -52, 0 - playsewithpan SE_M_THUNDERBOLT, 63 + playsewithpan SE_M_THUNDERBOLT, SOUND_PAN_TARGET delay 7 createvisualtask AnimTask_ElectricBolt, 5, -24, -52, 0 - playsewithpan SE_M_THUNDERBOLT, 63 + playsewithpan SE_M_THUNDERBOLT, SOUND_PAN_TARGET delay 7 createvisualtask AnimTask_ElectricBolt, 5, 0, -60, 1 - playsewithpan SE_M_THUNDERBOLT, 63 + playsewithpan SE_M_THUNDERBOLT, SOUND_PAN_TARGET delay 9 - createvisualtask AnimTask_BlendSelected, 10, 4, 0, 0, 13, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 0, 0, 13, RGB_BLACK waitforvisualfinish - createvisualtask AnimTask_BlendSelected, 10, 4, 0, 13, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 0, 13, 0, RGB_BLACK waitforvisualfinish delay 20 createsprite gThunderboltOrbSpriteTemplate, ANIM_TARGET, 3, 44, 0, 0, 3 @@ -1149,128 +1128,129 @@ Move_THUNDERBOLT:: createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 16, 44, 96, 40, 1, -32765 createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 16, 44, 160, 40, 0, -32765 createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 16, 44, 224, 40, 2, -32765 - playsewithpan SE_M_HYPER_BEAM, 63 + playsewithpan SE_M_HYPER_BEAM, SOUND_PAN_TARGET delay 0 - createvisualtask AnimTask_BlendSelected, 10, 1, 0, 2, 2, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 2, 2, RGB_BLACK delay 6 - createvisualtask AnimTask_BlendSelected, 10, 1, 0, 6, 6, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 6, 6, RGB_BLACK delay 6 - createvisualtask AnimTask_BlendSelected, 10, 1, 0, 2, 2, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 2, 2, RGB_BLACK delay 6 - createvisualtask AnimTask_BlendSelected, 10, 1, 0, 6, 6, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 6, 6, RGB_BLACK waitforvisualfinish delay 20 - waitplaysewithpan SE_M_THUNDERBOLT2, 63, 19 + waitplaysewithpan SE_M_THUNDERBOLT2, SOUND_PAN_TARGET, 19 call ElectricityEffect waitforvisualfinish delay 20 - createvisualtask AnimTask_BlendSelected, 10, 1, 0, 6, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 6, 0, RGB_BLACK waitforvisualfinish end -Move_THUNDER_WAVE:: +Move_THUNDER_WAVE: loadspritegfx ANIM_TAG_SPARK loadspritegfx ANIM_TAG_SPARK_2 loadspritegfx ANIM_TAG_SPARK_H - createvisualtask AnimTask_BlendSelected, 10, 1, 0, 0, 6, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 0, 6, RGB_BLACK waitforvisualfinish delay 10 createvisualtask AnimTask_ElectricBolt, 5, 0, -48, 0 - playsewithpan SE_M_THUNDER_WAVE, 63 + playsewithpan SE_M_THUNDER_WAVE, SOUND_PAN_TARGET delay 20 - loopsewithpan SE_M_THUNDERBOLT2, 63, 10, 4 + loopsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_TARGET, 10, 4 createsprite gThunderWaveSpriteTemplate, ANIM_TARGET, 2, -16, -16 delay 4 createsprite gThunderWaveSpriteTemplate, ANIM_TARGET, 2, -16, 0 delay 4 createsprite gThunderWaveSpriteTemplate, ANIM_TARGET, 2, -16, 16 waitforvisualfinish - createvisualtask AnimTask_BlendSelected, 10, 1, 0, 6, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 6, 0, RGB_BLACK waitforvisualfinish end -Move_BEAT_UP:: +Move_BEAT_UP: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 choosetwoturnanim BeatUpLeft, BeatUpRight -BeatUpContinue:: + +BeatUpContinue: waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -BeatUpLeft:: - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -20, -20, 1, 2 +BeatUpLeft: + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -20, -20, ANIM_TARGET, 2 createsprite gFistFootSpriteTemplate, ANIM_TARGET, 3, -20, -12, 8, 1, 0 - createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1 - playsewithpan SE_M_VITAL_THROW2, 63 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET delay 8 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 8, 0, 1, 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 8, 0, ANIM_TARGET, 2 createsprite gFistFootSpriteTemplate, ANIM_TARGET, 3, 8, 8, 8, 1, 0 - createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1 - playsewithpan SE_M_VITAL_THROW2, 63 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET goto BeatUpContinue -BeatUpRight:: - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 12, -20, 1, 2 +BeatUpRight: + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 12, -20, ANIM_TARGET, 2 createsprite gFistFootSpriteTemplate, ANIM_TARGET, 3, 12, -12, 8, 1, 0 - createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1 - playsewithpan SE_M_VITAL_THROW2, 63 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET delay 8 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -12, 0, 1, 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -12, 0, ANIM_TARGET, 2 createsprite gFistFootSpriteTemplate, ANIM_TARGET, 3, -12, 8, 8, 1, 0 - createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1 - playsewithpan SE_M_VITAL_THROW2, 63 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET goto BeatUpContinue -Move_STOMP:: +Move_STOMP: loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_IMPACT - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 - playsewithpan SE_M_DOUBLE_TEAM, 63 + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_TARGET createsprite gStompFootSpriteTemplate, ANIM_ATTACKER, 3, 0, -32, 15 delay 19 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, -8, 1, 1 - createvisualtask AnimTask_ShakeMon, 2, 1, 0, 4, 9, 1 - playsewithpan SE_M_MEGA_KICK2, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, -8, ANIM_TARGET, 1 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 4, 9, 1 + playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -Move_TAIL_WHIP:: - loopsewithpan SE_M_TAIL_WHIP, 192, 24, 3 - createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 12, 4, 2, 3 +Move_TAIL_WHIP: + loopsewithpan SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER, 24, 3 + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 12, 4, 2, 3 waitforvisualfinish end -Move_CUT:: +Move_CUT: loadspritegfx ANIM_TAG_CUT - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 - playsewithpan SE_M_CUT, 63 + playsewithpan SE_M_CUT, SOUND_PAN_TARGET createsprite gCuttingSliceSpriteTemplate, ANIM_ATTACKER, 2, 40, -32, 0 delay 5 - createvisualtask AnimTask_ShakeMon, 2, 1, 0, 3, 10, 1 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 10, 1 waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff waitforvisualfinish end -Move_HIDDEN_POWER:: +Move_HIDDEN_POWER: loadspritegfx ANIM_TAG_RED_ORB - playsewithpan SE_M_TAKE_DOWN, 192 - createvisualtask AnimTask_ScaleMonAndRestore, 5, -7, -7, 11, 0, 0 + playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER + createvisualtask AnimTask_ScaleMonAndRestore, 5, -7, -7, 11, ANIM_ATTACKER, 0 waitforvisualfinish delay 30 - createvisualtask AnimTask_BlendMonInAndOut, 5, 0, 20479, 12, 5, 1 + createvisualtask AnimTask_BlendMonInAndOut, 5, ANIM_ATTACKER, RGB(31, 31, 19), 12, 5, 1 delay 4 - createvisualtask AnimTask_ScaleMonAndRestore, 5, -7, -7, 11, 0, 0 - playsewithpan SE_M_REVERSAL, 192 + createvisualtask AnimTask_ScaleMonAndRestore, 5, -7, -7, 11, ANIM_ATTACKER, 0 + playsewithpan SE_M_REVERSAL, SOUND_PAN_ATTACKER createsprite gHiddenPowerOrbSpriteTemplate, ANIM_ATTACKER, 2, 26, 0 createsprite gHiddenPowerOrbSpriteTemplate, ANIM_ATTACKER, 2, 26, 42 createsprite gHiddenPowerOrbSpriteTemplate, ANIM_ATTACKER, 2, 26, 84 @@ -1278,9 +1258,9 @@ Move_HIDDEN_POWER:: createsprite gHiddenPowerOrbSpriteTemplate, ANIM_ATTACKER, 2, 26, 168 createsprite gHiddenPowerOrbSpriteTemplate, ANIM_ATTACKER, 2, 26, 210 delay 52 - setarg 7, 65535 - playsewithpan SE_M_REFLECT, 192 - createvisualtask AnimTask_ScaleMonAndRestore, 5, -7, -7, 11, 0, 0 + setarg 7, 0xFFFF + playsewithpan SE_M_REFLECT, SOUND_PAN_ATTACKER + createvisualtask AnimTask_ScaleMonAndRestore, 5, -7, -7, 11, ANIM_ATTACKER, 0 createsprite gHiddenPowerOrbScatterSpriteTemplate, ANIM_TARGET, 2, 0 createsprite gHiddenPowerOrbScatterSpriteTemplate, ANIM_TARGET, 2, 32 createsprite gHiddenPowerOrbScatterSpriteTemplate, ANIM_TARGET, 2, 64 @@ -1291,17 +1271,17 @@ Move_HIDDEN_POWER:: createsprite gHiddenPowerOrbScatterSpriteTemplate, ANIM_TARGET, 2, 224 end -Move_REVERSAL:: +Move_REVERSAL: loadspritegfx ANIM_TAG_BLUE_ORB loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_IMPACT - playsewithpan SE_M_DETECT, 192 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 3, RGB_WHITE, 8, 0, 0 + playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 3, RGB_WHITE, 8, RGB_BLACK, 0 waitforvisualfinish delay 30 - createvisualtask AnimTask_CurseBlendEffect, 2, 31, 3, 2, 0, 10, RGB_WHITE + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 2, 0, 10, RGB_WHITE delay 10 - playsewithpan SE_M_REVERSAL, 192 + playsewithpan SE_M_REVERSAL, SOUND_PAN_ATTACKER createsprite gReversalOrbSpriteTemplate, ANIM_ATTACKER, 2, 26, 0 createsprite gReversalOrbSpriteTemplate, ANIM_ATTACKER, 2, 26, 42 createsprite gReversalOrbSpriteTemplate, ANIM_ATTACKER, 2, 26, 84 @@ -1312,14 +1292,14 @@ Move_REVERSAL:: delay 20 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 6, 4 delay 8 - playsewithpan SE_M_VITAL_THROW2, 63 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, RGB_WHITE, 8, 0, 0 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB_WHITE, 8, RGB_BLACK, 0 createsprite gFistFootSpriteTemplate, ANIM_TARGET, 4, 0, 0, 10, 1, 0 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1 - createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 5, 0, 1, 8, 1, 0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 1 + createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 5, FALSE, 1, 8, 1, 0 end -Move_PURSUIT:: +Move_PURSUIT: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_TARGET fadetobg BG_DARK @@ -1327,7 +1307,8 @@ Move_PURSUIT:: delay 0 setalpha 12, 8 choosetwoturnanim PursuitNormal, PursuitOnSwitchout -PursuitContinue:: + +PursuitContinue: waitforvisualfinish clearmonbg ANIM_TARGET blendoff @@ -1336,27 +1317,27 @@ PursuitContinue:: waitbgfadein end -PursuitNormal:: - playsewithpan SE_M_COMET_PUNCH, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 2 - createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 5, 0, 1, 6, 1, 0 +PursuitNormal: + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 5, FALSE, 1, 6, 1, 0 goto PursuitContinue -PursuitOnSwitchout:: - playsewithpan SE_M_COMET_PUNCH, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 1 - createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 5, 0, 1, 6, 1, 0 +PursuitOnSwitchout: + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 1 + createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 5, FALSE, 1, 6, 1, 0 goto PursuitContinue -Move_SPIKE_CANNON:: +Move_SPIKE_CANNON: loadspritegfx ANIM_TAG_NEEDLE loadspritegfx ANIM_TAG_IMPACT - monbg 1 - monbgprio_28 1 + monbg ANIM_TARGET + splitbgprio ANIM_TARGET setalpha 12, 8 - createvisualtask AnimTask_WindUpLunge, 5, 0, -4, 0, 4, 6, 8, 4 + createvisualtask AnimTask_WindUpLunge, 5, ANIM_ATTACKER, -4, 0, 4, 6, 8, 4 waitforvisualfinish - loopsewithpan SE_M_RAZOR_WIND2, 192, 5, 3 + loopsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER, 5, 3 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 5 createsprite gLinearStingerSpriteTemplate, ANIM_ATTACKER, 2, 10, -8, -8, -8, 20 createsprite gLinearStingerSpriteTemplate, ANIM_ATTACKER, 2, 18, 0, 0, 0, 20 @@ -1365,57 +1346,57 @@ Move_SPIKE_CANNON:: createsprite gHandleInvertHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -8, -8, 1, 2 createsprite gHandleInvertHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 2 createsprite gHandleInvertHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 8, 8, 1, 2 - createvisualtask AnimTask_ShakeMon2, 2, 1, 3, 0, 7, 1 - loopsewithpan SE_M_HORN_ATTACK, 63, 5, 3 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 3, 0, 7, 1 + loopsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET, 5, 3 waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -Move_SWORDS_DANCE:: +Move_SWORDS_DANCE: loadspritegfx ANIM_TAG_SWORD monbg ANIM_ATTACKER setalpha 12, 8 - playsewithpan SE_M_SWORDS_DANCE, 192 - createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 16, 6, 1, 4 + playsewithpan SE_M_SWORDS_DANCE, SOUND_PAN_ATTACKER + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 16, 6, 1, 4 createsprite gSwordsDanceBladeSpriteTemplate, ANIM_ATTACKER, 2, 0, 0 delay 22 - createvisualtask AnimTask_FlashAnimTagWithColor, 2, 10005, 2, 2, 32754, 16, 0, 0 + createvisualtask AnimTask_FlashAnimTagWithColor, 2, ANIM_TAG_SWORD, 2, 2, RGB(18, 31, 31), 16, 0, 0 waitforvisualfinish clearmonbg ANIM_ATTACKER blendoff delay 1 end -Move_PSYCH_UP:: +Move_PSYCH_UP: loadspritegfx ANIM_TAG_SPIRAL monbg ANIM_ATK_PARTNER - createvisualtask AnimTask_BlendColorCycleExclude, 2, 1, 2, 6, 1, 11, 0 + createvisualtask AnimTask_BlendColorCycleExclude, 2, 1, 2, 6, 1, 11, RGB_BLACK setalpha 12, 8 - loopsewithpan SE_M_PSYBEAM2, 192, 5, 10 + loopsewithpan SE_M_PSYBEAM2, SOUND_PAN_ATTACKER, 5, 10 createsprite gPsychUpSpiralSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 0, 0 - createvisualtask AnimTask_SwayMon, 5, 0, 5, 2560, 8, 0 + createvisualtask AnimTask_SwayMon, 5, 0, 5, 2560, 8, ANIM_ATTACKER delay 127 delay 4 - playsewithpan SE_M_PSYBEAM, 192 - createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 10, 0, 1 - createvisualtask AnimTask_BlendSelected, 9, 2, 2, 10, 0, RGB(31, 31, 0) + playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER + createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 10, ANIM_ATTACKER, 1 + createvisualtask AnimTask_BlendBattleAnimPal, 9, F_PAL_ATTACKER, 2, 10, 0, RGB_YELLOW delay 30 clearmonbg ANIM_ATK_PARTNER blendoff waitforvisualfinish end -Move_DIZZY_PUNCH:: +Move_DIZZY_PUNCH: loadspritegfx ANIM_TAG_DUCK loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_IMPACT - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 call DizzyPunchLunge createsprite gFistFootSpriteTemplate, ANIM_TARGET, 5, 16, 8, 20, 1, 0 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, 16, 0, 1, 1 - playsewithpan SE_M_COMET_PUNCH, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, 16, 0, ANIM_TARGET, 1 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, 16, 8, 160, -32 createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, 16, 8, -256, -40 createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, 16, 8, 128, -16 @@ -1425,8 +1406,8 @@ Move_DIZZY_PUNCH:: delay 10 call DizzyPunchLunge createsprite gFistFootSpriteTemplate, ANIM_TARGET, 5, -16, -8, 20, 1, 0 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, -16, -16, 1, 1 - playsewithpan SE_M_VITAL_THROW2, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, -16, -16, ANIM_TARGET, 1 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, -16, -8, 160, -32 createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, -16, -8, -256, -40 createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, -16, -8, 128, -16 @@ -1434,89 +1415,89 @@ Move_DIZZY_PUNCH:: createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, -16, -8, -128, -22 createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, -16, -8, -384, -31 waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -DizzyPunchLunge:: +DizzyPunchLunge: createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 6, 4 delay 6 - createvisualtask AnimTask_ShakeMon2, 2, 1, 3, 0, 7, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 3, 0, 7, 1 return -Move_FIRE_SPIN:: +Move_FIRE_SPIN: loadspritegfx ANIM_TAG_SMALL_EMBER - playsewithpan SE_M_SACRED_FIRE2, 63 - createvisualtask AnimTask_ShakeMon, 5, 1, 0, 2, 47, 1 + playsewithpan SE_M_SACRED_FIRE2, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 2, 47, 1 call FireSpinEffect call FireSpinEffect call FireSpinEffect waitforvisualfinish end -FireSpinEffect:: - createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 28, 528, 30, 13, 50, 1 +FireSpinEffect: + createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 28, 528, 30, 13, 50, ANIM_TARGET delay 2 - createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 32, 480, 20, 16, -46, 1 + createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 32, 480, 20, 16, -46, ANIM_TARGET delay 2 - createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 33, 576, 20, 8, 42, 1 + createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 33, 576, 20, 8, 42, ANIM_TARGET delay 2 - createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 31, 400, 25, 11, -42, 1 + createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 31, 400, 25, 11, -42, ANIM_TARGET delay 2 - createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 28, 512, 25, 16, 46, 1 + createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 28, 512, 25, 16, 46, ANIM_TARGET delay 2 - createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 33, 464, 30, 15, -50, 1 + createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 33, 464, 30, 15, -50, ANIM_TARGET delay 2 return -Move_FURY_CUTTER:: +Move_FURY_CUTTER: loadspritegfx ANIM_TAG_CUT - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 - playsewithpan SE_M_RAZOR_WIND, 63 - createvisualtask AnimTask_IsFuryCutterHitRight, 2, - jumpargeq 7, 0, FuryCutterLeft + playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET + createvisualtask AnimTask_IsFuryCutterHitRight, 2 + jumpretfalse FuryCutterLeft goto FuryCutterRight -FuryCutterContinue:: - createvisualtask AnimTask_GetFuryCutterHitCount, 2, - jumpargeq 7, 1, FuryCutterContinue2 - jumpargeq 7, 2, FuryCutterMedium - jumpargeq 7, 3, FuryCutterStrong +FuryCutterContinue: + createvisualtask AnimTask_GetFuryCutterHitCount, 2 + jumpreteq 1, FuryCutterContinue2 + jumpreteq 2, FuryCutterMedium + jumpreteq 3, FuryCutterStrong goto FuryCutterStrongest -FuryCutterContinue2:: +FuryCutterContinue2: delay 5 - createvisualtask AnimTask_ShakeMon, 2, 1, 0, 3, 10, 1 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 10, 1 waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff waitforvisualfinish end -FuryCutterLeft:: +FuryCutterLeft: createsprite gCuttingSliceSpriteTemplate, ANIM_ATTACKER, 2, 40, -32, 0 goto FuryCutterContinue -FuryCutterRight:: +FuryCutterRight: createsprite gCuttingSliceSpriteTemplate, ANIM_ATTACKER, 2, 40, -32, 1 goto FuryCutterContinue -FuryCutterMedium:: - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, 10505, 4, 0, 0 +FuryCutterMedium: + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB(9, 8, 10), 4, RGB_BLACK, 0 goto FuryCutterContinue2 -FuryCutterStrong:: - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 3, 10505, 4, 0, 0 +FuryCutterStrong: + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 3, RGB(9, 8, 10), 4, RGB_BLACK, 0 goto FuryCutterContinue2 -FuryCutterStrongest:: - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 3, 10505, 4, 0, 0 +FuryCutterStrongest: + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 3, RGB(9, 8, 10), 4, RGB_BLACK, 0 goto FuryCutterContinue2 -Move_SELF_DESTRUCT:: +Move_SELF_DESTRUCT: loadspritegfx ANIM_TAG_EXPLOSION - createvisualtask AnimTask_BlendSelected, 10, 2, 1, 0, 9, RGB(31, 0, 0) + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 0, 9, RGB_RED createvisualtask AnimTask_ShakeMon2, 5, 4, 6, 0, 38, 1 createvisualtask AnimTask_ShakeMon2, 5, 5, 6, 0, 38, 1 createvisualtask AnimTask_ShakeMon2, 5, 6, 6, 0, 38, 1 @@ -1525,74 +1506,74 @@ Move_SELF_DESTRUCT:: call SelfDestructExplode call SelfDestructExplode waitforvisualfinish - createvisualtask AnimTask_BlendSelected, 10, 2, 1, 9, 0, RGB(31, 0, 0) + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 9, 0, RGB_RED end -SelfDestructExplode:: - playsewithpan SE_M_SELF_DESTRUCT, 192 +SelfDestructExplode: + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_ATTACKER createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 1 delay 6 - playsewithpan SE_M_SELF_DESTRUCT, 192 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_ATTACKER createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 24, -24, 0, 1 delay 6 - playsewithpan SE_M_SELF_DESTRUCT, 192 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_ATTACKER createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, -16, 16, 0, 1 delay 6 - playsewithpan SE_M_SELF_DESTRUCT, 192 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_ATTACKER createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, -24, -12, 0, 1 delay 6 - playsewithpan SE_M_SELF_DESTRUCT, 192 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_ATTACKER createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 16, 16, 0, 1 delay 6 return -Move_SLAM:: +Move_SLAM: loadspritegfx ANIM_TAG_SLAM_HIT loadspritegfx ANIM_TAG_IMPACT - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 - playsewithpan SE_M_COMET_PUNCH, 192 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_ATTACKER createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, 3, 0, 4 delay 1 createsprite gSlamHitSpriteTemplate, ANIM_ATTACKER, 2, 0, 0 delay 3 - playsewithpan SE_M_MEGA_KICK2, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 1 + playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 1 createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -12, 10, 0, 3 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 5 delay 3 - createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 0, 3, 6, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 0, 3, 6, 1 waitforvisualfinish delay 5 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 6 waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -Move_VINE_WHIP:: +Move_VINE_WHIP: loadspritegfx ANIM_TAG_WHIP_HIT - playsewithpan SE_M_JUMP_KICK, 192 + playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 6 delay 6 - playsewithpan SE_M_SCRATCH, 63 + playsewithpan SE_M_SCRATCH, SOUND_PAN_TARGET createsprite gVineWhipSpriteTemplate, ANIM_TARGET, 2, 0, 0 delay 6 - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 6, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 6, 1 end -Move_DRILL_PECK:: +Move_DRILL_PECK: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_WHIRLWIND_LINES createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 0 - playsewithpan SE_M_HEADBUTT, 192 + playsewithpan SE_M_HEADBUTT, SOUND_PAN_ATTACKER waitforvisualfinish delay 2 createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 1 delay 2 - loopsewithpan SE_M_HORN_ATTACK, 63, 4, 8 + loopsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET, 4, 8 createvisualtask AnimTask_DrillPeckHitSplats, 5 - createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 18, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 18, 1 waitforvisualfinish createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 2 waitforvisualfinish @@ -1600,37 +1581,37 @@ Move_DRILL_PECK:: waitforvisualfinish end -Move_WATERFALL:: +Move_WATERFALL: loadspritegfx ANIM_TAG_WATER_IMPACT loadspritegfx ANIM_TAG_SMALL_BUBBLES loadspritegfx ANIM_TAG_ICE_CRYSTALS monbg ANIM_DEF_PARTNER setalpha 12, 8 - createvisualtask AnimTask_ShakeMon, 5, 0, 0, 2, 23, 1 + createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 23, 1 delay 5 - playsewithpan SE_M_CRABHAMMER, 192 - createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 10, 10, 25, 0 + playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 10, 10, 25, ANIM_ATTACKER delay 4 - playsewithpan SE_M_CRABHAMMER, 192 - createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, -15, 0, 25, 0 + playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, -15, 0, 25, ANIM_ATTACKER delay 4 - playsewithpan SE_M_CRABHAMMER, 192 - createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 20, 10, 25, 0 + playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 20, 10, 25, ANIM_ATTACKER delay 4 - playsewithpan SE_M_CRABHAMMER, 192 - createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 0, -10, 25, 0 + playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 0, -10, 25, ANIM_ATTACKER delay 4 - playsewithpan SE_M_CRABHAMMER, 192 - createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, -10, 15, 25, 0 + playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, -10, 15, 25, ANIM_ATTACKER delay 4 - playsewithpan SE_M_CRABHAMMER, 192 - createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 25, 20, 25, 0 + playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 25, 20, 25, ANIM_ATTACKER delay 4 - playsewithpan SE_M_CRABHAMMER, 192 - createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, -20, 20, 25, 0 + playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, -20, 20, 25, ANIM_ATTACKER delay 4 - playsewithpan SE_M_CRABHAMMER, 192 - createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 12, 0, 25, 0 + playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 12, 0, 25, ANIM_ATTACKER waitforvisualfinish delay 10 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 6, 5 @@ -1641,49 +1622,49 @@ Move_WATERFALL:: blendoff end -RisingWaterHitEffect:: - playsewithpan SE_M_WATERFALL, 63 - createvisualtask AnimTask_ShakeMon2, 5, 1, 4, 0, 17, 1 - createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 20, 1, 1 +RisingWaterHitEffect: + playsewithpan SE_M_WATERFALL, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 4, 0, 17, 1 + createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 20, ANIM_TARGET, 1 createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0, 20 createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0, 20 delay 2 - createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 15, 1, 1 + createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 15, ANIM_TARGET, 1 createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0, 15 createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0, 15 delay 2 - createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 10, 1, 1 + createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 10, ANIM_TARGET, 1 createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0, 10 createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0, 10 delay 2 - createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 1, 1 + createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, ANIM_TARGET, 1 createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0, 5 createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0, 5 delay 2 - createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 1 + createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 1 createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0, 0 createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0, 0 delay 2 - createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, -5, 1, 1 + createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, -5, ANIM_TARGET, 1 createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0, -5 createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0, -5 delay 2 - createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, -10, 1, 1 + createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, -10, ANIM_TARGET, 1 createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0, -10 createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0, -10 delay 2 - createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, -15, 1, 1 + createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, -15, ANIM_TARGET, 1 createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0, -15 createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0, -15 delay 2 - createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, -20, 1, 1 + createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, -20, ANIM_TARGET, 1 createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0, -20 createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0, -20 return -Move_EXPLOSION:: +Move_EXPLOSION: loadspritegfx ANIM_TAG_EXPLOSION - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 8, 9, 8474, 8, 0, 8 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 8, 9, RGB(26, 8, 8), 8, RGB_BLACK, 8 createvisualtask AnimTask_ShakeMon2, 5, 4, 8, 0, 40, 1 createvisualtask AnimTask_ShakeMon2, 5, 5, 8, 0, 40, 1 createvisualtask AnimTask_ShakeMon2, 5, 6, 8, 0, 40, 1 @@ -1692,251 +1673,252 @@ Move_EXPLOSION:: call Explosion1 call Explosion1 waitforvisualfinish - createvisualtask AnimTask_BlendSelected, 10, 1, 1, 16, 16, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 16, 16, RGB_WHITE delay 50 - createvisualtask AnimTask_BlendSelected, 10, 1, 3, 16, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 3, 16, 0, RGB_WHITE end -Explosion1:: - playsewithpan SE_M_EXPLOSION, 192 +Explosion1: + playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 1 delay 6 - playsewithpan SE_M_EXPLOSION, 192 + playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 24, -24, 0, 1 delay 6 - playsewithpan SE_M_EXPLOSION, 192 + playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, -16, 16, 0, 1 delay 6 - playsewithpan SE_M_EXPLOSION, 192 + playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, -24, -12, 0, 1 delay 6 - playsewithpan SE_M_EXPLOSION, 192 + playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 16, 16, 0, 1 delay 6 return -Move_DEFENSE_CURL:: +Move_DEFENSE_CURL: loadspritegfx ANIM_TAG_ECLIPSING_ORB - loopsewithpan SE_M_TRI_ATTACK, 192, 18, 3 - createvisualtask AnimTask_SetGreyscaleOrOriginalPal, 5, 0, 0 - createvisualtask AnimTask_DefenseCurlDeformMon, 5, + loopsewithpan SE_M_TRI_ATTACK, SOUND_PAN_ATTACKER, 18, 3 + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_ATTACKER, 0 + createvisualtask AnimTask_DefenseCurlDeformMon, 5 waitforvisualfinish createsprite gEclipsingOrbSpriteTemplate, ANIM_ATTACKER, 2, 0, 6, 0, 1 waitforvisualfinish - createvisualtask AnimTask_SetGreyscaleOrOriginalPal, 5, 0, 1 + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_ATTACKER, 1 waitforvisualfinish end -Move_PROTECT:: +Move_PROTECT: loadspritegfx ANIM_TAG_PROTECT monbg ANIM_ATK_PARTNER - monbgprio_28 0 - waitplaysewithpan SE_M_REFLECT, 192, 16 - createsprite gProtectWallSpriteTemplate, ANIM_ATTACKER, 2, 24, 0, 90 + splitbgprio ANIM_ATTACKER + waitplaysewithpan SE_M_REFLECT, SOUND_PAN_ATTACKER, 16 + createsprite gProtectSpriteTemplate, ANIM_ATTACKER, 2, 24, 0, 90 waitforvisualfinish clearmonbg ANIM_ATK_PARTNER end -Move_DETECT:: +Move_DETECT: loadspritegfx ANIM_TAG_SPARKLE_4 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 9, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 9, RGB_BLACK waitforvisualfinish - createvisualtask AnimTask_BlendSelected, 10, 2, 1, 0, 9, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 0, 9, RGB_WHITE delay 18 - playsewithpan SE_M_DETECT, 192 - createsprite gSpriteTemplate_83BF480, ANIM_ATTACKER, 13, 20, -20 + playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER + createsprite gSpinningSparkleSpriteTemplate, ANIM_ATTACKER, 13, 20, -20 waitforvisualfinish delay 10 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 9, 0, 0 - createvisualtask AnimTask_BlendSelected, 10, 2, 2, 9, 0, RGB_WHITE + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 9, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 2, 9, 0, RGB_WHITE waitforvisualfinish end -Move_FRUSTRATION:: +Move_FRUSTRATION: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_ANGER monbg ANIM_DEF_PARTNER setalpha 12, 8 - createvisualtask AnimTask_GetFrustrationPowerLevel, 1, - jumpargeq 7, 0, Frustration_Strongest - jumpargeq 7, 1, Frustration_Strong - jumpargeq 7, 2, Frustration_Medium + createvisualtask AnimTask_GetFrustrationPowerLevel, 1 + jumpreteq 0, Frustration_Strongest + jumpreteq 1, Frustration_Strong + jumpreteq 2, Frustration_Medium goto Frustration_Weak -Frustration_Continue:: + +Frustration_Continue: waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -Frustration_Strongest:: - playsewithpan SE_M_DRAGON_RAGE, 192 - createvisualtask AnimTask_ShakeMon2, 5, 0, 1, 0, 15, 1 - createvisualtask AnimTask_BlendSelected, 10, 2, 3, 0, 9, RGB(31, 0, 0) +Frustration_Strongest: + playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER + createvisualtask AnimTask_ShakeMon2, 5, ANIM_ATTACKER, 1, 0, 15, 1 + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 3, 0, 9, RGB_RED waitforvisualfinish delay 20 - playsewithpan SE_M_SWAGGER2, 192 + playsewithpan SE_M_SWAGGER2, SOUND_PAN_ATTACKER createsprite gAngerMarkSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, -28 waitforvisualfinish - playsewithpan SE_M_SWAGGER2, 192 + playsewithpan SE_M_SWAGGER2, SOUND_PAN_ATTACKER createsprite gAngerMarkSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, -28 waitforvisualfinish delay 10 - createvisualtask AnimTask_SwayMon, 5, 0, 16, 6144, 8, 0 + createvisualtask AnimTask_SwayMon, 5, 0, 16, 6144, 8, ANIM_ATTACKER delay 5 - createvisualtask AnimTask_ShakeMon2, 5, 1, 4, 0, 30, 1 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 0 - playsewithpan SE_M_COMET_PUNCH, 63 + createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 4, 0, 30, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 0 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 5 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 24, 8, 1, 0 - playsewithpan SE_M_COMET_PUNCH, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 24, 8, ANIM_TARGET, 0 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 5 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -24, -16, 1, 0 - playsewithpan SE_M_COMET_PUNCH, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -24, -16, ANIM_TARGET, 0 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 5 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 8, 4, 1, 0 - playsewithpan SE_M_COMET_PUNCH, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 8, 4, ANIM_TARGET, 0 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 5 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -16, 19, 1, 0 - playsewithpan SE_M_COMET_PUNCH, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -16, 19, ANIM_TARGET, 0 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 5 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 18, -18, 1, 0 - playsewithpan SE_M_COMET_PUNCH, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 18, -18, ANIM_TARGET, 0 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET waitforvisualfinish - createvisualtask AnimTask_BlendSelected, 10, 2, 3, 9, 0, RGB(31, 0, 0) + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 3, 9, 0, RGB_RED goto Frustration_Continue -Frustration_Strong:: - playsewithpan SE_M_DRAGON_RAGE, 192 - createvisualtask AnimTask_ShakeMon2, 5, 0, 1, 0, 15, 1 - createvisualtask AnimTask_BlendSelected, 10, 2, 3, 0, 9, RGB(31, 0, 0) +Frustration_Strong: + playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER + createvisualtask AnimTask_ShakeMon2, 5, ANIM_ATTACKER, 1, 0, 15, 1 + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 3, 0, 9, RGB_RED waitforvisualfinish delay 20 - playsewithpan SE_M_SWAGGER2, 192 + playsewithpan SE_M_SWAGGER2, SOUND_PAN_ATTACKER createsprite gAngerMarkSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, -28 waitforvisualfinish delay 5 - createvisualtask AnimTask_StrongFrustrationGrowAndShrink, 5, + createvisualtask AnimTask_StrongFrustrationGrowAndShrink, 5 delay 7 - playsewithpan SE_M_COMET_PUNCH, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 8, 1, 1 - createvisualtask AnimTask_ShakeMon2, 5, 1, 4, 0, 6, 1 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 8, ANIM_TARGET, 1 + createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 4, 0, 6, 1 delay 14 - playsewithpan SE_M_COMET_PUNCH, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 12, -6, 1, 1 - createvisualtask AnimTask_ShakeMon2, 5, 1, 4, 0, 6, 1 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 12, -6, ANIM_TARGET, 1 + createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 4, 0, 6, 1 delay 14 - playsewithpan SE_M_COMET_PUNCH, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -12, -6, 1, 1 - createvisualtask AnimTask_ShakeMon2, 5, 1, 4, 0, 6, 1 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -12, -6, ANIM_TARGET, 1 + createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 4, 0, 6, 1 waitforvisualfinish - createvisualtask AnimTask_BlendSelected, 10, 2, 3, 9, 0, RGB(31, 0, 0) + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 3, 9, 0, RGB_RED goto Frustration_Continue -Frustration_Medium:: - playsewithpan SE_M_SWAGGER2, 192 +Frustration_Medium: + playsewithpan SE_M_SWAGGER2, SOUND_PAN_ATTACKER createsprite gAngerMarkSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, -28 waitforvisualfinish delay 5 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 4 delay 6 - playsewithpan SE_M_COMET_PUNCH, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 10, 4, 1, 1 - createvisualtask AnimTask_ShakeMon2, 2, 1, 3, 0, 6, 1 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 10, 4, ANIM_TARGET, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 3, 0, 6, 1 waitforvisualfinish createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 4 delay 6 - playsewithpan SE_M_COMET_PUNCH, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -4, 1, 2 - createvisualtask AnimTask_ShakeMon2, 2, 1, 3, 0, 6, 1 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -4, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 3, 0, 6, 1 goto Frustration_Continue -Frustration_Weak:: +Frustration_Weak: createsprite gWeakFrustrationAngerMarkSpriteTemplate, ANIM_ATTACKER, 2, 20, -28 waitforvisualfinish delay 10 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 10, 2 delay 12 - playsewithpan SE_M_COMET_PUNCH, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2 - createvisualtask AnimTask_ShakeMon2, 2, 1, 1, 0, 6, 1 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 1, 0, 6, 1 goto Frustration_Continue -Move_SAFEGUARD:: +Move_SAFEGUARD: loadspritegfx ANIM_TAG_GUARD_RING monbg ANIM_ATK_PARTNER setalpha 8, 8 - playsewithpan SE_M_MILK_DRINK, 192 - createsprite gGuardRingSpriteTemplate, ANIM_ATTACKER, 2, + playsewithpan SE_M_MILK_DRINK, SOUND_PAN_ATTACKER + createsprite gGuardRingSpriteTemplate, ANIM_ATTACKER, 2 delay 4 - createsprite gGuardRingSpriteTemplate, ANIM_ATTACKER, 2, + createsprite gGuardRingSpriteTemplate, ANIM_ATTACKER, 2 delay 4 - createsprite gGuardRingSpriteTemplate, ANIM_ATTACKER, 2, + createsprite gGuardRingSpriteTemplate, ANIM_ATTACKER, 2 waitforvisualfinish - playsewithpan SE_SHINY, 192 - createvisualtask AnimTask_CurseBlendEffect, 2, 10, 0, 2, 0, 10, RGB_WHITE + playsewithpan SE_SHINY, SOUND_PAN_ATTACKER + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATK_SIDE, 0, 2, 0, 10, RGB_WHITE waitforvisualfinish clearmonbg ANIM_ATK_PARTNER blendoff end -Move_PAIN_SPLIT:: +Move_PAIN_SPLIT: loadspritegfx ANIM_TAG_PAIN_SPLIT - createsprite gPainSplitProjectileSpriteTemplate, ANIM_ATTACKER, 2, -8, -42, 0 - createsprite gPainSplitProjectileSpriteTemplate, ANIM_TARGET, 2, -8, -42, 1 + createsprite gPainSplitProjectileSpriteTemplate, ANIM_ATTACKER, 2, -8, -42, ANIM_ATTACKER + createsprite gPainSplitProjectileSpriteTemplate, ANIM_TARGET, 2, -8, -42, ANIM_TARGET delay 10 playsewithpan SE_M_SWAGGER2, 0 - createvisualtask AnimTask_PainSplitMovement, 2, 0, 0 - createvisualtask AnimTask_PainSplitMovement, 2, 1, 0 + createvisualtask AnimTask_PainSplitMovement, 2, ANIM_ATTACKER, 0 + createvisualtask AnimTask_PainSplitMovement, 2, ANIM_TARGET, 0 waitforvisualfinish - createsprite gPainSplitProjectileSpriteTemplate, ANIM_ATTACKER, 2, -24, -42, 0 - createsprite gPainSplitProjectileSpriteTemplate, ANIM_TARGET, 2, -24, -42, 1 + createsprite gPainSplitProjectileSpriteTemplate, ANIM_ATTACKER, 2, -24, -42, ANIM_ATTACKER + createsprite gPainSplitProjectileSpriteTemplate, ANIM_TARGET, 2, -24, -42, ANIM_TARGET delay 10 playsewithpan SE_M_SWAGGER2, 0 - createvisualtask AnimTask_PainSplitMovement, 2, 0, 1 - createvisualtask AnimTask_PainSplitMovement, 2, 1, 1 + createvisualtask AnimTask_PainSplitMovement, 2, ANIM_ATTACKER, 1 + createvisualtask AnimTask_PainSplitMovement, 2, ANIM_TARGET, 1 waitforvisualfinish - createsprite gPainSplitProjectileSpriteTemplate, ANIM_ATTACKER, 2, 8, -42, 0 - createsprite gPainSplitProjectileSpriteTemplate, ANIM_TARGET, 2, 8, -42, 1 + createsprite gPainSplitProjectileSpriteTemplate, ANIM_ATTACKER, 2, 8, -42, ANIM_ATTACKER + createsprite gPainSplitProjectileSpriteTemplate, ANIM_TARGET, 2, 8, -42, ANIM_TARGET delay 10 playsewithpan SE_M_SWAGGER2, 0 - createvisualtask AnimTask_PainSplitMovement, 2, 0, 2 - createvisualtask AnimTask_PainSplitMovement, 2, 1, 2 + createvisualtask AnimTask_PainSplitMovement, 2, ANIM_ATTACKER, 2 + createvisualtask AnimTask_PainSplitMovement, 2, ANIM_TARGET, 2 end -Move_VICE_GRIP:: +Move_VICE_GRIP: loadspritegfx ANIM_TAG_CUT loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 - playsewithpan SE_M_VICEGRIP, 63 + playsewithpan SE_M_VICEGRIP, SOUND_PAN_TARGET createsprite gViceGripSpriteTemplate, ANIM_ATTACKER, 2, 0 createsprite gViceGripSpriteTemplate, ANIM_ATTACKER, 2, 1 delay 9 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 1, 0, 0, 1, 2 - createvisualtask AnimTask_ShakeMon2, 5, 1, 2, 0, 5, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 1, 0, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 2, 0, 5, 1 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -Move_GUILLOTINE:: +Move_GUILLOTINE: loadspritegfx ANIM_TAG_CUT loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 - fadetobgfromset 12, 13, 14 + fadetobgfromset BG_GUILLOTINE_OPPONENT, BG_GUILLOTINE_PLAYER, BG_GUILLOTINE_CONTESTS waitbgfadein - playsewithpan SE_M_VICEGRIP, 63 + playsewithpan SE_M_VICEGRIP, SOUND_PAN_TARGET createsprite gGuillotineSpriteTemplate, ANIM_ATTACKER, 2, 0 createsprite gGuillotineSpriteTemplate, ANIM_ATTACKER, 2, 1 - createvisualtask AnimTask_BlendSelected, 10, 4, 2, 0, 16, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 16, RGB_BLACK delay 9 - createvisualtask AnimTask_ShakeMon2, 5, 1, 2, 0, 23, 1 + createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 2, 0, 23, 1 delay 46 - createvisualtask AnimTask_ShakeMon2, 5, 1, 4, 0, 8, 1 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 0 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, 0, 8, 0, 0 - playsewithpan SE_M_RAZOR_WIND, 63 + createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 4, 0, 8, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB_BLACK, 8, RGB_BLACK, 0 + playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -1944,29 +1926,29 @@ Move_GUILLOTINE:: waitbgfadein end -Move_PAY_DAY:: +Move_PAY_DAY: loadspritegfx ANIM_TAG_COIN loadspritegfx ANIM_TAG_IMPACT - monbg 1 - monbgprio_28 1 + monbg ANIM_TARGET + splitbgprio ANIM_TARGET setalpha 12, 8 - playsewithpan SE_M_RAZOR_WIND2, 192 + playsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER createsprite gCoinThrowSpriteTemplate, ANIM_ATTACKER, 2, 20, 0, 0, 0, 1152 waitforvisualfinish - playsewithpan SE_M_PAY_DAY, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 1, 0, 0, 1, 2 - createsprite gFallingCoinSpriteTemplate, ANIM_ATTACKER, 2, - createvisualtask AnimTask_ShakeMon2, 2, 1, 1, 0, 6, 1 + playsewithpan SE_M_PAY_DAY, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 1, 0, 0, ANIM_TARGET, 2 + createsprite gFallingCoinSpriteTemplate, ANIM_ATTACKER, 2 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 1, 0, 6, 1 waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -Move_OUTRAGE:: +Move_OUTRAGE: loadspritegfx ANIM_TAG_SMALL_EMBER - loopsewithpan SE_M_DRAGON_RAGE, 192, 8, 3 - createvisualtask AnimTask_CurseBlendEffect, 2, 7, 2, 5, 3, 8, 430 - createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 12, 6, 5, 4 + loopsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER, 8, 3 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG | F_PAL_ATTACKER | F_PAL_TARGET, 2, 5, 3, 8, RGB(14, 13, 0) + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 12, 6, 5, 4 delay 0 createsprite gOutrageFlameSpriteTemplate, ANIM_TARGET, 2, 0, 0, 30, 1280, 0, 3 delay 0 @@ -1976,7 +1958,7 @@ Move_OUTRAGE:: delay 0 createsprite gOutrageFlameSpriteTemplate, ANIM_TARGET, 2, 0, 0, 30, 0, -1280, 3 delay 0 - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 40, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 40, 1 createsprite gOutrageFlameSpriteTemplate, ANIM_TARGET, 2, 0, 0, 30, 1280, 768, 3 delay 0 createsprite gOutrageFlameSpriteTemplate, ANIM_TARGET, 2, 0, 0, 30, -1280, 768, 3 @@ -1991,7 +1973,7 @@ Move_OUTRAGE:: waitforvisualfinish end -OutrageFlames:: +OutrageFlames: delay 3 createsprite gOutrageFlameSpriteTemplate, ANIM_TARGET, 2, 0, 0, 30, -1280, 0, 3 delay 0 @@ -2008,30 +1990,30 @@ OutrageFlames:: createsprite gOutrageFlameSpriteTemplate, ANIM_TARGET, 2, 0, 0, 30, -1280, -768, 3 return -Move_SPARK:: +Move_SPARK: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_SPARK_2 delay 0 - createvisualtask AnimTask_CurseBlendEffect, 2, 3, -31, 1, 5, 5, 23551 - playsewithpan SE_M_THUNDERBOLT2, 192 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 24, 190, 12, 0, 1, 0 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG | F_PAL_ATTACKER, -31, 1, 5, 5, RGB(31, 31, 22) + playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 24, 190, 12, ANIM_ATTACKER, 1, 0 delay 0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 24, 22, 12, 0, 1, 0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 24, 121, 13, 0, 1, 1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 24, 22, 12, ANIM_ATTACKER, 1, 0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 24, 121, 13, ANIM_ATTACKER, 1, 1 delay 0 - createvisualtask AnimTask_CurseBlendEffect, 2, 3, -31, 1, 0, 0, 23551 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG | F_PAL_ATTACKER, -31, 1, 0, 0, RGB(31, 31, 22) delay 10 - createvisualtask AnimTask_CurseBlendEffect, 2, 3, -31, 1, 5, 5, 23551 - playsewithpan SE_M_THUNDERBOLT2, 192 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 24, 60, 10, 0, 1, 0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 24, 42, 11, 0, 1, 1 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG | F_PAL_ATTACKER, -31, 1, 5, 5, RGB(31, 31, 22) + playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 24, 60, 10, ANIM_ATTACKER, 1, 0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 24, 42, 11, ANIM_ATTACKER, 1, 1 delay 0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 24, 165, 10, 0, 1, 1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 24, 165, 10, ANIM_ATTACKER, 1, 1 delay 0 - createvisualtask AnimTask_CurseBlendEffect, 2, 3, -31, 1, 0, 0, 23551 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG | F_PAL_ATTACKER, -31, 1, 0, 0, RGB(31, 31, 22) delay 20 - createvisualtask AnimTask_CurseBlendEffect, 2, 3, -31, 1, 7, 7, 23551 - playsewithpan SE_M_THUNDERBOLT2, 192 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG | F_PAL_ATTACKER, -31, 1, 7, 7, RGB(31, 31, 22) + playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 32, 12, 0, 20, 0, 0 createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 32, 12, 64, 20, 1, 0 createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 32, 12, 128, 20, 0, 0 @@ -2042,26 +2024,26 @@ Move_SPARK:: createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 16, 12, 224, 20, 2, 0 delay 4 waitforvisualfinish - createvisualtask AnimTask_CurseBlendEffect, 2, 3, -31, 1, 0, 0, 23551 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG | F_PAL_ATTACKER, -31, 1, 0, 0, RGB(31, 31, 22) createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 4 delay 4 - playsewithpan SE_M_HYPER_BEAM, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 2 - createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1 + playsewithpan SE_M_HYPER_BEAM, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1 waitforvisualfinish - createvisualtask AnimTask_CurseBlendEffect, 2, 4, -31, 2, 0, 6, 23551 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, -31, 2, 0, 6, RGB(31, 31, 22) call ElectricityEffect waitforvisualfinish end -Move_ATTRACT:: +Move_ATTRACT: loadspritegfx ANIM_TAG_RED_HEART - loopsewithpan SE_M_CHARM, 192, 12, 3 - createvisualtask AnimTask_SwayMon, 5, 0, 12, 4096, 4, 0 + loopsewithpan SE_M_CHARM, SOUND_PAN_ATTACKER, 12, 3 + createvisualtask AnimTask_SwayMon, 5, 0, 12, 4096, 4, ANIM_ATTACKER delay 15 createsprite gRedHeartProjectileSpriteTemplate, ANIM_TARGET, 3, 20, -8 waitforvisualfinish - playsewithpan SE_M_ATTRACT, 63 + playsewithpan SE_M_ATTRACT, SOUND_PAN_TARGET createsprite gRedHeartBurstSpriteTemplate, ANIM_TARGET, 3, 160, -32 createsprite gRedHeartBurstSpriteTemplate, ANIM_TARGET, 3, -256, -40 createsprite gRedHeartBurstSpriteTemplate, ANIM_TARGET, 3, 128, -16 @@ -2070,7 +2052,7 @@ Move_ATTRACT:: createsprite gRedHeartBurstSpriteTemplate, ANIM_TARGET, 3, -384, -31 waitforvisualfinish waitplaysewithpan SE_M_ATTRACT2, 0, 15 - createvisualtask AnimTask_HeartsBackground, 5, + createvisualtask AnimTask_HeartsBackground, 5 createsprite gRedHeartRisingSpriteTemplate, ANIM_ATTACKER, 40, 16, 256, 0 createsprite gRedHeartRisingSpriteTemplate, ANIM_ATTACKER, 40, 224, 240, 15 createsprite gRedHeartRisingSpriteTemplate, ANIM_ATTACKER, 40, 126, 272, 30 @@ -2080,52 +2062,52 @@ Move_ATTRACT:: createsprite gRedHeartRisingSpriteTemplate, ANIM_ATTACKER, 40, 112, 256, 90 createsprite gRedHeartRisingSpriteTemplate, ANIM_ATTACKER, 40, 200, 272, 90 delay 75 - createvisualtask AnimTask_CurseBlendEffect, 2, 4, 4, 4, 0, 10, 28479 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 4, 4, 0, 10, RGB(31, 25, 27) end -Move_GROWTH:: +Move_GROWTH: call GrowthEffect waitforvisualfinish call GrowthEffect waitforvisualfinish end -GrowthEffect:: - createvisualtask AnimTask_CurseBlendEffect, 2, 2, 0, 2, 0, 8, RGB_WHITE - playsewithpan SE_M_TAKE_DOWN, 192 - createvisualtask AnimTask_ScaleMonAndRestore, 5, -3, -3, 16, 0, 0 +GrowthEffect: + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 0, 2, 0, 8, RGB_WHITE + playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER + createvisualtask AnimTask_ScaleMonAndRestore, 5, -3, -3, 16, ANIM_ATTACKER, 0 return -Move_WHIRLWIND:: +Move_WHIRLWIND: loadspritegfx ANIM_TAG_WHIRLWIND_LINES - createsprite gWhirlwindLineSpriteTemplate, ANIM_ATTACKER, 2, 0, -8, 1, 60, 0 - createsprite gWhirlwindLineSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 60, 1 - createsprite gWhirlwindLineSpriteTemplate, ANIM_ATTACKER, 2, 0, 8, 1, 60, 2 - createsprite gWhirlwindLineSpriteTemplate, ANIM_ATTACKER, 2, 0, 16, 1, 60, 3 - createsprite gWhirlwindLineSpriteTemplate, ANIM_ATTACKER, 2, 0, 24, 1, 60, 4 - createsprite gWhirlwindLineSpriteTemplate, ANIM_ATTACKER, 2, 0, 32, 1, 60, 0 + createsprite gWhirlwindLineSpriteTemplate, ANIM_ATTACKER, 2, 0, -8, ANIM_TARGET, 60, 0 + createsprite gWhirlwindLineSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 60, 1 + createsprite gWhirlwindLineSpriteTemplate, ANIM_ATTACKER, 2, 0, 8, ANIM_TARGET, 60, 2 + createsprite gWhirlwindLineSpriteTemplate, ANIM_ATTACKER, 2, 0, 16, ANIM_TARGET, 60, 3 + createsprite gWhirlwindLineSpriteTemplate, ANIM_ATTACKER, 2, 0, 24, ANIM_TARGET, 60, 4 + createsprite gWhirlwindLineSpriteTemplate, ANIM_ATTACKER, 2, 0, 32, ANIM_TARGET, 60, 0 delay 5 - loopsewithpan SE_M_DOUBLE_TEAM, 63, 10, 4 - createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 15, 1 + loopsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_TARGET, 10, 4 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 15, 1 delay 29 - createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 1, 12, 6, 1, 5 + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_TARGET, 12, 6, 1, 5 delay 7 - playsewithpan SE_M_STRING_SHOT, 63 - createvisualtask AnimTask_SlideOffScreen, 5, 1, 8 + playsewithpan SE_M_STRING_SHOT, SOUND_PAN_TARGET + createvisualtask AnimTask_SlideOffScreen, 5, ANIM_TARGET, 8 waitforvisualfinish end -Move_CONFUSE_RAY:: +Move_CONFUSE_RAY: loadspritegfx ANIM_TAG_YELLOW_BALL monbg ANIM_DEF_PARTNER - fadetobg 2 + fadetobg BG_GHOST waitbgfadein - createvisualtask SoundTask_AdjustPanningVar, 2, -64, 63, 2, 0 - createvisualtask AnimTask_BlendColorCycleByTag, 2, ANIM_TAG_YELLOW_BALL, 0, 6, 0, 14, 351 + createvisualtask SoundTask_AdjustPanningVar, 2, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 2, 0 + createvisualtask AnimTask_BlendColorCycleByTag, 2, ANIM_TAG_YELLOW_BALL, 0, 6, 0, 14, RGB(31, 10, 0) createsprite gConfuseRayBallBounceSpriteTemplate, ANIM_TARGET, 2, 28, 0, 288 waitforvisualfinish setalpha 8, 8 - playsewithpan SE_M_STRING_SHOT2, 63 + playsewithpan SE_M_STRING_SHOT2, SOUND_PAN_TARGET createsprite gConfuseRayBallSpiralSpriteTemplate, ANIM_TARGET, 2, 0, -16 waitforvisualfinish delay 0 @@ -2135,71 +2117,71 @@ Move_CONFUSE_RAY:: waitbgfadein end -Move_LOCK_ON:: +Move_LOCK_ON: loadspritegfx ANIM_TAG_LOCK_ON - createsprite gLockOnTargetSpriteTemplate, ANIM_ATTACKER, 40, + createsprite gLockOnTargetSpriteTemplate, ANIM_ATTACKER, 40 createsprite gLockOnMoveTargetSpriteTemplate, ANIM_ATTACKER, 40, 1 createsprite gLockOnMoveTargetSpriteTemplate, ANIM_ATTACKER, 40, 2 createsprite gLockOnMoveTargetSpriteTemplate, ANIM_ATTACKER, 40, 3 - createsprite gLockOnMoveTargetSpriteTemplate, ANIM_ATTACKER, 40, 4 + createsprite gLockOnMoveTargetSpriteTemplate, ANIM_ATTACKER, 40, 4 @ Also transitions to red target delay 120 - setarg 7, 65535 + setarg 7, 0xFFFF @ Signal target to flash/disappear waitforvisualfinish end -Move_MEAN_LOOK:: +Move_MEAN_LOOK: loadspritegfx ANIM_TAG_EYE monbg ANIM_DEF_PARTNER - playsewithpan SE_M_PSYBEAM, 192 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 16, 0 - loopsewithpan SE_M_CONFUSE_RAY, 63, 15, 4 - waitplaysewithpan SE_M_LEER, 63, 85 - createsprite gMeanLookEyeSpriteTemplate, ANIM_ATTACKER, 2, + playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 16, RGB_BLACK + loopsewithpan SE_M_CONFUSE_RAY, SOUND_PAN_TARGET, 15, 4 + waitplaysewithpan SE_M_LEER, SOUND_PAN_TARGET, 85 + createsprite gMeanLookEyeSpriteTemplate, ANIM_ATTACKER, 2 delay 120 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 16, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 16, 0, RGB_BLACK delay 30 clearmonbg ANIM_DEF_PARTNER waitforvisualfinish end -Move_ROCK_THROW:: +Move_ROCK_THROW: loadspritegfx ANIM_TAG_ROCKS createsprite gShakeMonOrTerrainSpriteTemplate, ANIM_TARGET, 2, 6, 1, 15, 1 createsprite gFallingRockSpriteTemplate, ANIM_TARGET, 2, 0, 1, 0, 0 - playsewithpan SE_M_ROCK_THROW, 63 + playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 6 createsprite gFallingRockSpriteTemplate, ANIM_TARGET, 2, 19, 1, 10, 0 - playsewithpan SE_M_ROCK_THROW, 63 + playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 6 createsprite gFallingRockSpriteTemplate, ANIM_TARGET, 2, -23, 2, -10, 0 - playsewithpan SE_M_ROCK_THROW, 63 - createvisualtask AnimTask_ShakeMon, 2, 1, 0, 5, 20, 1 + playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 5, 20, 1 delay 6 createsprite gFallingRockSpriteTemplate, ANIM_TARGET, 2, -15, 1, -10, 0 - playsewithpan SE_M_ROCK_THROW, 63 + playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 6 createsprite gFallingRockSpriteTemplate, ANIM_TARGET, 2, 23, 2, 10, 0 - playsewithpan SE_M_ROCK_THROW, 63 + playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET waitforvisualfinish end -Move_ROCK_SLIDE:: +Move_ROCK_SLIDE: loadspritegfx ANIM_TAG_ROCKS monbg ANIM_DEF_PARTNER createsprite gShakeMonOrTerrainSpriteTemplate, ANIM_ATTACKER, 2, 7, 1, 11, 1 createsprite gFallingRockSpriteTemplate, ANIM_TARGET, 2, -5, 1, -5, 1 - playsewithpan SE_M_ROCK_THROW, 63 + playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 2 createsprite gFallingRockSpriteTemplate, ANIM_TARGET, 2, 5, 0, 6, 1 - playsewithpan SE_M_ROCK_THROW, 63 + playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 2 createsprite gFallingRockSpriteTemplate, ANIM_TARGET, 2, 19, 1, 10, 1 - playsewithpan SE_M_ROCK_THROW, 63 + playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 2 createsprite gFallingRockSpriteTemplate, ANIM_TARGET, 2, -23, 2, -10, 1 - playsewithpan SE_M_ROCK_THROW, 63 - createvisualtask AnimTask_ShakeMon, 2, 1, 0, 5, 50, 1 - createvisualtask AnimTask_ShakeMon, 2, 3, 0, 5, 50, 1 + playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 5, 50, 1 + createvisualtask AnimTask_ShakeMon, 2, ANIM_DEF_PARTNER, 0, 5, 50, 1 delay 2 call RockSlideRocks call RockSlideRocks @@ -2207,118 +2189,118 @@ Move_ROCK_SLIDE:: clearmonbg ANIM_DEF_PARTNER end -RockSlideRocks:: +RockSlideRocks: createsprite gFallingRockSpriteTemplate, ANIM_TARGET, 2, -20, 0, -10, 1 - playsewithpan SE_M_ROCK_THROW, 63 + playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 2 createsprite gFallingRockSpriteTemplate, ANIM_TARGET, 2, 28, 1, 10, 1 - playsewithpan SE_M_ROCK_THROW, 63 + playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 2 createsprite gFallingRockSpriteTemplate, ANIM_TARGET, 2, -10, 1, -5, 1 - playsewithpan SE_M_ROCK_THROW, 63 + playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 2 createsprite gFallingRockSpriteTemplate, ANIM_TARGET, 2, 10, 0, 6, 1 - playsewithpan SE_M_ROCK_THROW, 63 + playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 2 createsprite gFallingRockSpriteTemplate, ANIM_TARGET, 2, 24, 1, 10, 1 - playsewithpan SE_M_ROCK_THROW, 63 + playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 2 createsprite gFallingRockSpriteTemplate, ANIM_TARGET, 2, -32, 2, -10, 1 - playsewithpan SE_M_ROCK_THROW, 63 + playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 2 createsprite gFallingRockSpriteTemplate, ANIM_TARGET, 2, -20, 0, -10, 1 - playsewithpan SE_M_ROCK_THROW, 63 + playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 2 createsprite gFallingRockSpriteTemplate, ANIM_TARGET, 2, 30, 2, 10, 1 - playsewithpan SE_M_ROCK_THROW, 63 + playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 2 return -Move_THIEF:: +Move_THIEF: loadspritegfx ANIM_TAG_IMPACT - monbg 1 + monbg ANIM_TARGET delay 1 - fadetobg 1 + fadetobg BG_DARK waitbgfadein setalpha 12, 8 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 6, 4 delay 6 - playsewithpan SE_M_VITAL_THROW, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2 - createvisualtask AnimTask_ShakeMon2, 2, 1, 1, 0, 8, 1 + playsewithpan SE_M_VITAL_THROW, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 1, 0, 8, 1 waitforvisualfinish delay 20 - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff restorebg waitbgfadein end -Move_BUBBLE_BEAM:: +Move_BUBBLE_BEAM: loadspritegfx ANIM_TAG_BUBBLE loadspritegfx ANIM_TAG_SMALL_BUBBLES - monbg 1 - monbgprio_28 1 + monbg ANIM_TARGET + splitbgprio ANIM_TARGET setalpha 12, 8 delay 1 call BulbblebeamCreateBubbles - createvisualtask AnimTask_SwayMon, 5, 0, 3, 3072, 8, 1 + createvisualtask AnimTask_SwayMon, 5, 0, 3, 3072, 8, ANIM_TARGET call BulbblebeamCreateBubbles call BulbblebeamCreateBubbles waitforvisualfinish call WaterBubblesEffectShort waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -BulbblebeamCreateBubbles:: +BulbblebeamCreateBubbles: createsprite gWaterBubbleProjectileSpriteTemplate, ANIM_ATTACKER, 2, 18, 0, 35, 70, 0, 256, 50 - playsewithpan SE_M_BUBBLE, 192 + playsewithpan SE_M_BUBBLE, SOUND_PAN_ATTACKER delay 3 createsprite gWaterBubbleProjectileSpriteTemplate, ANIM_ATTACKER, 2, 18, 0, 20, 40, -10, 256, 50 - playsewithpan SE_M_BUBBLE, 192 + playsewithpan SE_M_BUBBLE, SOUND_PAN_ATTACKER delay 3 createsprite gWaterBubbleProjectileSpriteTemplate, ANIM_ATTACKER, 2, 18, 0, 10, -60, 0, 256, 50 - playsewithpan SE_M_BUBBLE, 192 + playsewithpan SE_M_BUBBLE, SOUND_PAN_ATTACKER delay 3 createsprite gWaterBubbleProjectileSpriteTemplate, ANIM_ATTACKER, 2, 18, 0, 15, -15, 10, 256, 50 - playsewithpan SE_M_BUBBLE, 192 + playsewithpan SE_M_BUBBLE, SOUND_PAN_ATTACKER delay 3 createsprite gWaterBubbleProjectileSpriteTemplate, ANIM_ATTACKER, 2, 18, 0, 30, 10, -10, 256, 50 - playsewithpan SE_M_BUBBLE, 192 + playsewithpan SE_M_BUBBLE, SOUND_PAN_ATTACKER delay 3 createsprite gWaterBubbleProjectileSpriteTemplate, ANIM_ATTACKER, 2, 18, 0, 25, -30, 10, 256, 50 - playsewithpan SE_M_BUBBLE, 192 + playsewithpan SE_M_BUBBLE, SOUND_PAN_ATTACKER delay 3 return -Move_ICY_WIND:: +Move_ICY_WIND: loadspritegfx ANIM_TAG_ICE_CRYSTALS loadspritegfx ANIM_TAG_ICE_SPIKES monbg ANIM_DEF_PARTNER - createvisualtask AnimTask_BlendSelected, 10, 11, 4, 0, 4, RGB_BLACK - fadetobg 15 + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_ATK_SIDE, 4, 0, 4, RGB_BLACK + fadetobg BG_ICE waitbgfadeout playsewithpan SE_M_ICY_WIND, 0 waitbgfadein waitforvisualfinish - panse_1B SE_M_GUST, 192, 63, 2, 0 + panse SE_M_GUST, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0 call IcyWindSwirlingSnowballs delay 5 call IcyWindSwirlingSnowballs - playsewithpan SE_M_GUST2, 63 + playsewithpan SE_M_GUST2, SOUND_PAN_TARGET delay 55 call IceSpikesEffectLong waitforvisualfinish clearmonbg ANIM_DEF_PARTNER restorebg waitbgfadeout - createvisualtask AnimTask_BlendSelected, 10, 11, 4, 4, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_ATK_SIDE, 4, 4, 0, RGB_BLACK waitbgfadein end -IcyWindSwirlingSnowballs:: +IcyWindSwirlingSnowballs: createsprite gSwirlingSnowballSpriteTemplate, ANIM_TARGET, 40, 0, 0, 0, 0, 72, 1 delay 5 createsprite gSwirlingSnowballSpriteTemplate, ANIM_TARGET, 40, 0, 10, 0, 10, 72, 1 @@ -2330,15 +2312,15 @@ IcyWindSwirlingSnowballs:: createsprite gSwirlingSnowballSpriteTemplate, ANIM_TARGET, 40, 0, -5, 0, -5, 72, 1 return -Move_SMOKESCREEN:: +Move_SMOKESCREEN: loadspritegfx ANIM_TAG_BLACK_SMOKE loadspritegfx ANIM_TAG_BLACK_BALL - playsewithpan SE_M_DOUBLE_TEAM, 192 + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER createsprite gBlackBallSpriteTemplate, ANIM_TARGET, 2, 20, 0, 0, 0, 35, -25 waitforvisualfinish - createvisualtask AnimTask_SmokescreenImpact, 2, + createvisualtask AnimTask_SmokescreenImpact, 2 delay 2 - playsewithpan SE_M_SAND_ATTACK, 63 + playsewithpan SE_M_SAND_ATTACK, SOUND_PAN_TARGET createsprite gBlackSmokeSpriteTemplate, ANIM_TARGET, 4, 0, -12, 104, 0, 75 createsprite gBlackSmokeSpriteTemplate, ANIM_TARGET, 4, 0, -12, 72, 1, 75 createsprite gBlackSmokeSpriteTemplate, ANIM_TARGET, 4, 0, -6, 56, 1, 75 @@ -2354,13 +2336,13 @@ Move_SMOKESCREEN:: waitforvisualfinish end -Move_CONVERSION:: +Move_CONVERSION: loadspritegfx ANIM_TAG_CONVERSION monbg ANIM_ATK_PARTNER - monbgprio_28 0 + splitbgprio ANIM_ATTACKER setalpha 16, 0 delay 0 - playsewithpan SE_M_SWIFT, 192 + playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER createsprite gConversionSpriteTemplate, ANIM_ATTACKER, 2, -24, -24 delay 3 createsprite gConversionSpriteTemplate, ANIM_ATTACKER, 2, -8, -24 @@ -2369,7 +2351,7 @@ Move_CONVERSION:: delay 3 createsprite gConversionSpriteTemplate, ANIM_ATTACKER, 2, 24, -24 delay 3 - playsewithpan SE_M_SWIFT, 192 + playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER createsprite gConversionSpriteTemplate, ANIM_ATTACKER, 2, -24, -8 delay 3 createsprite gConversionSpriteTemplate, ANIM_ATTACKER, 2, -8, -8 @@ -2378,7 +2360,7 @@ Move_CONVERSION:: delay 3 createsprite gConversionSpriteTemplate, ANIM_ATTACKER, 2, 24, -8 delay 3 - playsewithpan SE_M_SWIFT, 192 + playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER createsprite gConversionSpriteTemplate, ANIM_ATTACKER, 2, -24, 8 delay 3 createsprite gConversionSpriteTemplate, ANIM_ATTACKER, 2, -8, 8 @@ -2387,7 +2369,7 @@ Move_CONVERSION:: delay 3 createsprite gConversionSpriteTemplate, ANIM_ATTACKER, 2, 24, 8 delay 3 - playsewithpan SE_M_SWIFT, 192 + playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER createsprite gConversionSpriteTemplate, ANIM_ATTACKER, 2, -24, 24 delay 3 createsprite gConversionSpriteTemplate, ANIM_ATTACKER, 2, -8, 24 @@ -2396,23 +2378,23 @@ Move_CONVERSION:: delay 3 createsprite gConversionSpriteTemplate, ANIM_ATTACKER, 2, 24, 24 delay 20 - playsewithpan SE_M_BARRIER, 192 - createvisualtask AnimTask_FlashAnimTagWithColor, 2, 10018, 1, 1, 14335, 12, 0, 0 + playsewithpan SE_M_BARRIER, SOUND_PAN_ATTACKER + createvisualtask AnimTask_FlashAnimTagWithColor, 2, ANIM_TAG_CONVERSION, 1, 1, RGB(31, 31, 13), 12, 0, 0 delay 6 - createvisualtask AnimTask_ConversionAlphaBlend, 5, + createvisualtask AnimTask_ConversionAlphaBlend, 5 waitforvisualfinish delay 1 clearmonbg ANIM_ATK_PARTNER blendoff end -Move_CONVERSION_2:: +Move_CONVERSION_2: loadspritegfx ANIM_TAG_CONVERSION monbg ANIM_DEF_PARTNER - monbgprio_2A 1 + splitbgprio_foes ANIM_TARGET setalpha 0, 16 delay 0 - playsewithpan SE_M_BARRIER, 63 + playsewithpan SE_M_BARRIER, SOUND_PAN_TARGET createsprite gConversion2SpriteTemplate, ANIM_ATTACKER, 2, -24, -24, 60 createsprite gConversion2SpriteTemplate, ANIM_ATTACKER, 2, -8, -24, 65 createsprite gConversion2SpriteTemplate, ANIM_ATTACKER, 2, 8, -24, 70 @@ -2429,199 +2411,200 @@ Move_CONVERSION_2:: createsprite gConversion2SpriteTemplate, ANIM_ATTACKER, 2, -8, 24, 125 createsprite gConversion2SpriteTemplate, ANIM_ATTACKER, 2, 8, 24, 130 createsprite gConversion2SpriteTemplate, ANIM_ATTACKER, 2, 24, 24, 135 - createvisualtask AnimTask_Conversion2AlphaBlend, 5, + createvisualtask AnimTask_Conversion2AlphaBlend, 5 delay 60 - playsewithpan SE_M_SWIFT, 63 + playsewithpan SE_M_SWIFT, SOUND_PAN_TARGET delay 10 - playsewithpan SE_M_SWIFT, 63 + playsewithpan SE_M_SWIFT, SOUND_PAN_TARGET delay 10 - playsewithpan SE_M_SWIFT, 63 + playsewithpan SE_M_SWIFT, SOUND_PAN_TARGET delay 10 - playsewithpan SE_M_SWIFT, 63 + playsewithpan SE_M_SWIFT, SOUND_PAN_TARGET delay 10 - playsewithpan SE_M_SWIFT, 63 + playsewithpan SE_M_SWIFT, SOUND_PAN_TARGET delay 10 - playsewithpan SE_M_SWIFT, 63 + playsewithpan SE_M_SWIFT, SOUND_PAN_TARGET delay 10 - playsewithpan SE_M_SWIFT, 63 + playsewithpan SE_M_SWIFT, SOUND_PAN_TARGET delay 10 - playsewithpan SE_M_SWIFT, 63 + playsewithpan SE_M_SWIFT, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -Move_ROLLING_KICK:: +Move_ROLLING_KICK: loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_IMPACT - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 - createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 18, 6, 1, 4 - playsewithpan SE_M_DOUBLE_TEAM, 192 + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 18, 6, 1, 4 + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER delay 6 - playsewithpan SE_M_DOUBLE_TEAM, 192 + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER waitforvisualfinish createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, 0, 0, 4 createsprite gSlidingKickSpriteTemplate, ANIM_ATTACKER, 2, -24, 0, 48, 10, 160, 0 delay 5 - playsewithpan SE_M_VITAL_THROW2, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -8, 0, 1, 2 - createvisualtask AnimTask_ShakeMon, 2, 1, 5, 0, 6, 1 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -8, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 6, 1 waitforvisualfinish createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 1, 8 - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -Move_HEADBUTT:: +Move_HEADBUTT: loadspritegfx ANIM_TAG_IMPACT createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 0 - playsewithpan SE_M_HEADBUTT, 192 + playsewithpan SE_M_HEADBUTT, SOUND_PAN_ATTACKER waitforvisualfinish delay 2 createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 1 waitforvisualfinish - createvisualtask AnimTask_ShakeMonInPlace, 2, 0, 2, 0, 4, 1 - createvisualtask AnimTask_ShakeMon, 2, 1, 5, 0, 6, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 2, 0, 4, 1 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 6, 1 createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 2 - createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1 - playsewithpan SE_M_VITAL_THROW2, 63 + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 1 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET waitforvisualfinish end -Move_HORN_ATTACK:: +Move_HORN_ATTACK: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HORN_HIT createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 0 - playsewithpan SE_M_HEADBUTT, 192 + playsewithpan SE_M_HEADBUTT, SOUND_PAN_ATTACKER waitforvisualfinish delay 2 createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 1 createsprite gHornHitSpriteTemplate, ANIM_TARGET, 4, 0, 0, 10 waitforvisualfinish - createvisualtask AnimTask_ShakeMonInPlace, 2, 0, 2, 0, 4, 1 - createvisualtask AnimTask_ShakeMon, 2, 1, 5, 0, 6, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 2, 0, 4, 1 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 6, 1 createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 2 - createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1 - playsewithpan SE_M_HORN_ATTACK, 63 + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 1 + playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET waitforvisualfinish end -Move_FURY_ATTACK:: +Move_FURY_ATTACK: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HORN_HIT - createvisualtask AnimTask_RotateMonSpriteToSide, 2, 4, 256, 0, 2 + createvisualtask AnimTask_RotateMonSpriteToSide, 2, 4, 256, ANIM_ATTACKER, 2 choosetwoturnanim FuryAttackRight, FuryAttackLeft -FuryAttackContinue:: - createvisualtask AnimTask_ShakeMon, 2, 1, 5, 0, 6, 1 + +FuryAttackContinue: + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 6, 1 waitforvisualfinish end -FuryAttackRight:: +FuryAttackRight: createsprite gHornHitSpriteTemplate, ANIM_TARGET, 4, 8, 8, 10 waitforvisualfinish - createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1 - playsewithpan SE_M_HORN_ATTACK, 63 + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 1 + playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET goto FuryAttackContinue -FuryAttackLeft:: +FuryAttackLeft: createsprite gHornHitSpriteTemplate, ANIM_TARGET, 4, -8, -8, 10 waitforvisualfinish - createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1 - playsewithpan SE_M_HORN_ATTACK, 63 + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 1 + playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET goto FuryAttackContinue -Move_HORN_DRILL:: +Move_HORN_DRILL: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HORN_HIT jumpifcontest HornDrillInContest - fadetobg 7 + fadetobg BG_DRILL waitbgfadeout createvisualtask AnimTask_StartSlidingBg, 5, -2304, 768, 1, -1 -HornDrillContinue:: +HornDrillContinue: waitbgfadein setalpha 12, 8 createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 0 - playsewithpan SE_M_HEADBUTT, 192 + playsewithpan SE_M_HEADBUTT, SOUND_PAN_ATTACKER waitforvisualfinish delay 2 createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 1 createsprite gHornHitSpriteTemplate, ANIM_TARGET, 4, 0, 0, 12 waitforvisualfinish playse SE_BANG - createvisualtask AnimTask_ShakeMonInPlace, 2, 0, 2, 0, 40, 1 - createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 10, 0, 40, 1 - createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 3 - playsewithpan SE_M_HORN_ATTACK, 63 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 2, 0, 40, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 10, 0, 40, 1 + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 3 + playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET delay 4 - createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 2, 1, 3 - playsewithpan SE_M_HORN_ATTACK, 63 + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 2, ANIM_TARGET, 3 + playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET delay 4 - createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, -4, 3, 1, 3 - playsewithpan SE_M_HORN_ATTACK, 63 + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, -4, 3, ANIM_TARGET, 3 + playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET delay 4 - createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, -8, -5, 1, 3 - playsewithpan SE_M_HORN_ATTACK, 63 + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, -8, -5, ANIM_TARGET, 3 + playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET delay 4 - createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 4, -12, 1, 3 - playsewithpan SE_M_HORN_ATTACK, 63 + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 4, -12, ANIM_TARGET, 3 + playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET delay 4 - createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 16, 0, 1, 3 - playsewithpan SE_M_HORN_ATTACK, 63 + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 16, 0, ANIM_TARGET, 3 + playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET delay 4 - createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 5, 18, 1, 3 - playsewithpan SE_M_HORN_ATTACK, 63 + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 5, 18, ANIM_TARGET, 3 + playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET delay 4 - createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, -17, 12, 1, 2 - playsewithpan SE_M_HORN_ATTACK, 63 + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, -17, 12, ANIM_TARGET, 2 + playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET delay 4 - createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, -21, -15, 1, 2 - playsewithpan SE_M_HORN_ATTACK, 63 + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, -21, -15, ANIM_TARGET, 2 + playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET delay 4 - createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 8, -27, 1, 2 - playsewithpan SE_M_HORN_ATTACK, 63 + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 8, -27, ANIM_TARGET, 2 + playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET delay 4 - createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 32, 0, 1, 2 - playsewithpan SE_M_HORN_ATTACK, 63 + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 32, 0, ANIM_TARGET, 2 + playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET delay 4 createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 2 waitforvisualfinish restorebg waitbgfadeout - setarg 7, 65535 + setarg 7, 0xFFFF waitbgfadein end -HornDrillInContest:: - fadetobg 8 +HornDrillInContest: + fadetobg BG_DRILL_CONTESTS waitbgfadeout createvisualtask AnimTask_StartSlidingBg, 5, 2304, 768, 0, -1 goto HornDrillContinue -Move_THRASH:: +Move_THRASH: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET - createvisualtask AnimTask_ThrashMoveMonHorizontal, 2, - createvisualtask AnimTask_ThrashMoveMonVertical, 2, + createvisualtask AnimTask_ThrashMoveMonHorizontal, 2 + createvisualtask AnimTask_ThrashMoveMonVertical, 2 createsprite gFistFootRandomPosSpriteTemplate, ANIM_TARGET, 3, 1, 10, 0 - createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 4, 0, 7, 1 - playsewithpan SE_M_COMET_PUNCH, 63 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 4, 0, 7, 1 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 28 createsprite gFistFootRandomPosSpriteTemplate, ANIM_TARGET, 3, 1, 10, 1 - createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 4, 0, 7, 1 - playsewithpan SE_M_VITAL_THROW2, 63 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 4, 0, 7, 1 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET delay 28 createsprite gFistFootRandomPosSpriteTemplate, ANIM_TARGET, 3, 1, 10, 3 - createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 8, 0, 16, 1 - playsewithpan SE_M_MEGA_KICK2, 63 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 8, 0, 16, 1 + playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET end -Move_SING:: +Move_SING: loadspritegfx ANIM_TAG_MUSIC_NOTES monbg ANIM_DEF_PARTNER - createvisualtask AnimTask_MusicNotesRainbowBlend, 2, + createvisualtask AnimTask_MusicNotesRainbowBlend, 2 waitforvisualfinish - panse_1B SE_M_SING, 192, 63, 2, 0 + panse SE_M_SING, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0 createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 7, 0, 12 delay 5 createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 6, 1, 12 @@ -2648,89 +2631,89 @@ Move_SING:: delay 4 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER - createvisualtask AnimTask_MusicNotesClearRainbowBlend, 2, + createvisualtask AnimTask_MusicNotesClearRainbowBlend, 2 waitforvisualfinish end -Move_LOW_KICK:: +Move_LOW_KICK: loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_IMPACT createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, 0, 0, 4 createsprite gSlidingKickSpriteTemplate, ANIM_TARGET, 2, -24, 28, 40, 8, 160, 0 delay 4 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -8, 8, 1, 2 - createvisualtask AnimTask_RotateMonSpriteToSide, 2, 6, 384, 1, 2 - playsewithpan SE_M_VITAL_THROW2, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -8, 8, ANIM_TARGET, 2 + createvisualtask AnimTask_RotateMonSpriteToSide, 2, 6, 384, ANIM_TARGET, 2 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET waitforvisualfinish createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 1, 4 end -Move_EARTHQUAKE:: - createvisualtask AnimTask_HorizontalShake, 5, 5, 10, 50 - createvisualtask AnimTask_HorizontalShake, 5, 4, 10, 50 +Move_EARTHQUAKE: + createvisualtask AnimTask_HorizontalShake, 5, (MAX_BATTLERS_COUNT + 1), 10, 50 + createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 10, 50 playsewithpan SE_M_EARTHQUAKE, 0 delay 10 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, 0, 14, RGB_WHITE, 14 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 delay 16 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, 0, 14, RGB_WHITE, 14 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 end -Move_FISSURE:: +Move_FISSURE: loadspritegfx ANIM_TAG_MUD_SAND - createvisualtask AnimTask_HorizontalShake, 3, 5, 10, 50 - createvisualtask AnimTask_HorizontalShake, 3, 1, 10, 50 - playsewithpan SE_M_EARTHQUAKE, 63 + createvisualtask AnimTask_HorizontalShake, 3, (MAX_BATTLERS_COUNT + 1), 10, 50 + createvisualtask AnimTask_HorizontalShake, 3, ANIM_TARGET, 10, 50 + playsewithpan SE_M_EARTHQUAKE, SOUND_PAN_TARGET delay 8 call FissureDirtPlumeFar delay 15 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, 0, 14, RGB_WHITE, 14 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 delay 15 call FissureDirtPlumeClose delay 15 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, 0, 14, RGB_WHITE, 14 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 delay 15 call FissureDirtPlumeFar delay 50 fadetobg BG_FISSURE waitbgfadeout - createvisualtask AnimTask_PositionFissureBgOnBattler, 5, 1, 5, -1 + createvisualtask AnimTask_PositionFissureBgOnBattler, 5, ANIM_TARGET, 5, -1 waitbgfadein delay 40 restorebg waitbgfadeout - setarg 7, 65535 + setarg 7, -1 waitbgfadein end -FissureDirtPlumeFar:: +FissureDirtPlumeFar: createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, 1, 0, 12, -48, -16, 24 createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, 1, 0, 16, -16, -10, 24 createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, 1, 1, 14, -52, -18, 24 createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, 1, 1, 12, -32, -16, 24 - playsewithpan SE_M_DIG, 63 + playsewithpan SE_M_DIG, SOUND_PAN_TARGET return -FissureDirtPlumeClose:: +FissureDirtPlumeClose: createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, 1, 0, 12, -24, -16, 24 createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, 1, 0, 16, -38, -10, 24 createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, 1, 1, 14, -20, -18, 24 createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, 1, 1, 12, -36, -16, 24 - playsewithpan SE_M_DIG, 63 + playsewithpan SE_M_DIG, SOUND_PAN_TARGET return -Move_DIG:: +Move_DIG: choosetwoturnanim DigSetUp, DigUnleash -DigEnd:: +DigEnd: end -DigSetUp:: +DigSetUp: loadspritegfx ANIM_TAG_MUD_SAND loadspritegfx ANIM_TAG_DIRT_MOUND createsprite gDirtMoundSpriteTemplate, ANIM_ATTACKER, 1, 0, 0, 180 createsprite gDirtMoundSpriteTemplate, ANIM_ATTACKER, 1, 0, 1, 180 - monbg_22 0 + monbg_static ANIM_ATTACKER delay 1 - createvisualtask AnimTask_DigDownMovement, 2, 0 + createvisualtask AnimTask_DigDownMovement, 2, FALSE delay 6 call DigThrowDirt call DigThrowDirt @@ -2738,61 +2721,61 @@ DigSetUp:: call DigThrowDirt call DigThrowDirt waitforvisualfinish - clearmonbg_23 0 + clearmonbg_static ANIM_ATTACKER delay 1 - createvisualtask AnimTask_DigDownMovement, 2, 1 + createvisualtask AnimTask_DigDownMovement, 2, TRUE goto DigEnd -DigUnleash:: +DigUnleash: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_DIRT_MOUND - createvisualtask AnimTask_DigUpMovement, 2, 0 + createvisualtask AnimTask_DigUpMovement, 2, FALSE waitforvisualfinish monbg ANIM_ATTACKER createsprite gDirtMoundSpriteTemplate, ANIM_ATTACKER, 1, 0, 0, 48 createsprite gDirtMoundSpriteTemplate, ANIM_ATTACKER, 1, 0, 1, 48 delay 1 - createvisualtask AnimTask_DigUpMovement, 2, 1 + createvisualtask AnimTask_DigUpMovement, 2, TRUE delay 16 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -8, 0, 1, 2 - createvisualtask AnimTask_ShakeMon, 2, 1, 5, 0, 6, 1 - playsewithpan SE_M_MEGA_KICK2, 192 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -8, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 6, 1 + playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_ATTACKER clearmonbg ANIM_ATTACKER goto DigEnd -DigThrowDirt:: +DigThrowDirt: createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 12, 4, -16, 18 createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 16, 4, -10, 18 createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0, 1, 14, 4, -18, 18 createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0, 1, 12, 4, -16, 18 - playsewithpan SE_M_DIG, 192 + playsewithpan SE_M_DIG, SOUND_PAN_ATTACKER delay 32 return -Move_MEDITATE:: +Move_MEDITATE: call SetPsychicBackground createvisualtask AnimTask_MeditateStretchAttacker, 2 - playsewithpan SE_M_HEADBUTT, 192 + playsewithpan SE_M_HEADBUTT, SOUND_PAN_ATTACKER delay 16 - playsewithpan SE_M_TAKE_DOWN, 192 + playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER waitforvisualfinish - call UnsetPsychicBg + call UnsetPsychicBackground end -Move_AGILITY:: +Move_AGILITY: monbg ANIM_ATK_PARTNER setalpha 12, 8 - createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 24, 6, 4, 4 - createvisualtask AnimTask_CloneBattlerSpriteWithBlend, 2, 0, 4, 7, 10 - playsewithpan SE_M_DOUBLE_TEAM, 192 + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 24, 6, 4, 4 + createvisualtask AnimTask_TraceMonBlended, 2, 0, 4, 7, 10 + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER delay 12 - playsewithpan SE_M_DOUBLE_TEAM, 192 + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER delay 12 - playsewithpan SE_M_DOUBLE_TEAM, 192 + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER delay 12 - playsewithpan SE_M_DOUBLE_TEAM, 192 + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER delay 12 - playsewithpan SE_M_DOUBLE_TEAM, 192 + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER delay 12 waitforvisualfinish clearmonbg ANIM_ATK_PARTNER @@ -2800,474 +2783,473 @@ Move_AGILITY:: delay 1 end -Move_QUICK_ATTACK:: +Move_QUICK_ATTACK: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_ATK_PARTNER setalpha 12, 8 - createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 24, 6, 1, 5 - createvisualtask AnimTask_CloneBattlerSpriteWithBlend, 2, 0, 4, 7, 3 - playsewithpan SE_M_JUMP_KICK, 192 + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 24, 6, 1, 5 + createvisualtask AnimTask_TraceMonBlended, 2, 0, 4, 7, 3 + playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER delay 4 - createvisualtask AnimTask_ShakeMon, 2, 1, 5, 0, 6, 1 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, 0, 0, 1, 1 - playsewithpan SE_M_VITAL_THROW2, 63 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 6, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, 0, 0, ANIM_TARGET, 1 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_ATK_PARTNER blendoff waitforvisualfinish end -Move_RAGE:: +Move_RAGE: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_ANGER - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 - createvisualtask AnimTask_BlendMonInAndOut, 3, 0, 31, 10, 0, 2 + createvisualtask AnimTask_BlendMonInAndOut, 3, ANIM_ATTACKER, RGB_RED, 10, 0, 2 createsprite gAngerMarkSpriteTemplate, ANIM_ATTACKER, 2, 0, -20, -28 - playsewithpan SE_M_SWAGGER2, 192 + playsewithpan SE_M_SWAGGER2, SOUND_PAN_ATTACKER delay 20 createsprite gAngerMarkSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, -28 - playsewithpan SE_M_SWAGGER2, 192 + playsewithpan SE_M_SWAGGER2, SOUND_PAN_ATTACKER waitforvisualfinish createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 6 delay 4 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2 - createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, 1, 1, 10, 1, 0 - playsewithpan SE_M_VITAL_THROW2, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, TRUE, 1, 10, 1, 0 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET end -Move_TELEPORT:: +Move_TELEPORT: call SetPsychicBackground createvisualtask AnimTask_Teleport, 2 - playsewithpan SE_M_TELEPORT, 192 + playsewithpan SE_M_TELEPORT, SOUND_PAN_ATTACKER delay 15 - call UnsetPsychicBg + call UnsetPsychicBackground waitforvisualfinish end -Move_DOUBLE_TEAM:: +Move_DOUBLE_TEAM: monbg ANIM_ATK_PARTNER setalpha 12, 8 - createvisualtask AnimTask_DoubleTeam, 2, - playsewithpan SE_M_DOUBLE_TEAM, 192 + createvisualtask AnimTask_DoubleTeam, 2 + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER delay 32 - playsewithpan SE_M_DOUBLE_TEAM, 192 + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER delay 24 - playsewithpan SE_M_DOUBLE_TEAM, 192 + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER delay 16 - playsewithpan SE_M_DOUBLE_TEAM, 192 + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER delay 8 - playsewithpan SE_M_DOUBLE_TEAM, 192 + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER delay 8 - playsewithpan SE_M_DOUBLE_TEAM, 192 + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER delay 8 - playsewithpan SE_M_DOUBLE_TEAM, 192 + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER delay 8 - playsewithpan SE_M_DOUBLE_TEAM, 192 + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER delay 8 - playsewithpan SE_M_DOUBLE_TEAM, 192 + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER waitforvisualfinish clearmonbg ANIM_ATK_PARTNER blendoff delay 1 end -Move_MINIMIZE:: +Move_MINIMIZE: setalpha 10, 8 - createvisualtask AnimTask_Minimize, 2, - loopsewithpan SE_M_MINIMIZE, 192, 34, 3 + createvisualtask AnimTask_Minimize, 2 + loopsewithpan SE_M_MINIMIZE, SOUND_PAN_ATTACKER, 34, 3 waitforvisualfinish blendoff end -Move_METRONOME:: +Move_METRONOME: loadspritegfx ANIM_TAG_FINGER loadspritegfx ANIM_TAG_THOUGHT_BUBBLE createsprite gThoughtBubbleSpriteTemplate, ANIM_ATTACKER, 11, 0, 100 - playsewithpan SE_M_METRONOME, 192 + playsewithpan SE_M_METRONOME, SOUND_PAN_ATTACKER delay 6 createsprite gMetronomeFingerSpriteTemplate, ANIM_ATTACKER, 12, 0 delay 24 - loopsewithpan SE_M_TAIL_WHIP, 192, 22, 3 + loopsewithpan SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER, 22, 3 waitforvisualfinish end -Move_SKULL_BASH:: +Move_SKULL_BASH: choosetwoturnanim SkullBashSetUp, SkullBashAttack -SkullBashEnd:: +SkullBashEnd: end -SkullBashSetUp:: +SkullBashSetUp: call SkullBashSetUpHeadDown call SkullBashSetUpHeadDown waitforvisualfinish goto SkullBashEnd -SkullBashSetUpHeadDown:: - createsprite gSlideMonToOffsetAndBackSpriteTemplate, ANIM_ATTACKER, 2, 0, -24, 0, 0, 10, 0 - playsewithpan SE_M_TAKE_DOWN, 192 +SkullBashSetUpHeadDown: + createsprite gSlideMonToOffsetAndBackSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, -24, 0, 0, 10, 0 + playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER waitforvisualfinish - createvisualtask AnimTask_RotateMonSpriteToSide, 2, 16, 96, 0, 2 + createvisualtask AnimTask_RotateMonSpriteToSide, 2, 16, 96, ANIM_ATTACKER, 2 waitforvisualfinish - createsprite gSlideMonToOffsetAndBackSpriteTemplate, ANIM_ATTACKER, 2, 0, 24, 0, 0, 10, 1 + createsprite gSlideMonToOffsetAndBackSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 24, 0, 0, 10, 1 waitforvisualfinish return -SkullBashAttack:: +SkullBashAttack: loadspritegfx ANIM_TAG_IMPACT createvisualtask AnimTask_SkullBashPosition, 2, 0 - playsewithpan SE_M_TAKE_DOWN, 192 + playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER waitforvisualfinish playse SE_BANG - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, 0, 14, RGB_WHITE, 14 - createvisualtask AnimTask_ShakeMonInPlace, 2, 0, 2, 0, 40, 1 - createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 10, 0, 40, 1 - createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 4, 0, 0, 1, 0 - loopsewithpan SE_M_MEGA_KICK2, 63, 8, 3 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 2, 0, 40, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 10, 0, 40, 1 + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 4, 0, 0, ANIM_TARGET, 0 + loopsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET, 8, 3 waitforvisualfinish createvisualtask AnimTask_SkullBashPosition, 2, 1 goto SkullBashEnd -Move_AMNESIA:: +Move_AMNESIA: loadspritegfx ANIM_TAG_AMNESIA call SetPsychicBackground delay 8 createsprite gQuestionMarkSpriteTemplate, ANIM_ATTACKER, 20 - playsewithpan SE_M_METRONOME, 192 + playsewithpan SE_M_METRONOME, SOUND_PAN_ATTACKER delay 54 - loopsewithpan SE_M_METRONOME, 192, 16, 3 + loopsewithpan SE_M_METRONOME, SOUND_PAN_ATTACKER, 16, 3 waitforvisualfinish - call UnsetPsychicBg + call UnsetPsychicBackground end -Move_KINESIS:: +Move_KINESIS: loadspritegfx ANIM_TAG_ALERT loadspritegfx ANIM_TAG_BENT_SPOON - playsewithpan SE_M_PSYBEAM, 192 + playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER call SetPsychicBackground createsprite gBentSpoonSpriteTemplate, ANIM_ATTACKER, 20 createsprite gKinesisZapEnergySpriteTemplate, ANIM_ATTACKER, 19, 32, -8, 0 createsprite gKinesisZapEnergySpriteTemplate, ANIM_ATTACKER, 19, 32, 16, 1 - loopsewithpan SE_M_CONFUSE_RAY, 192, 21, 2 + loopsewithpan SE_M_CONFUSE_RAY, SOUND_PAN_ATTACKER, 21, 2 delay 60 - playsewithpan SE_M_DIZZY_PUNCH, 192 + playsewithpan SE_M_DIZZY_PUNCH, SOUND_PAN_ATTACKER delay 30 - loopsewithpan SE_M_DIZZY_PUNCH, 192, 20, 2 + loopsewithpan SE_M_DIZZY_PUNCH, SOUND_PAN_ATTACKER, 20, 2 delay 70 - playsewithpan SE_M_SWAGGER2, 192 + playsewithpan SE_M_SWAGGER2, SOUND_PAN_ATTACKER waitforvisualfinish - call UnsetPsychicBg + call UnsetPsychicBackground end -Move_GLARE:: +Move_GLARE: loadspritegfx ANIM_TAG_SMALL_RED_EYE loadspritegfx ANIM_TAG_EYE_SPARKLE createvisualtask AnimTask_GlareEyeDots, 5, 0 - playsewithpan SE_M_PSYBEAM2, 192 + playsewithpan SE_M_PSYBEAM2, SOUND_PAN_ATTACKER waitforvisualfinish - createvisualtask AnimTask_BlendSelected, 5, 1, 0, 0, 16, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 5, F_PAL_BG, 0, 0, 16, RGB_BLACK waitforvisualfinish createsprite gEyeSparkleSpriteTemplate, ANIM_ATTACKER, 0, -16, -8 createsprite gEyeSparkleSpriteTemplate, ANIM_ATTACKER, 0, 16, -8 - createvisualtask AnimTask_ScaryFace, 5, - playsewithpan SE_M_LEER, 192 + createvisualtask AnimTask_ScaryFace, 5 + playsewithpan SE_M_LEER, SOUND_PAN_ATTACKER delay 2 - createvisualtask AnimTask_ShakeTargetInPattern, 3, 20, 1, 0 + createvisualtask AnimTask_ShakeTargetInPattern, 3, 20, 1, FALSE waitforvisualfinish - createvisualtask AnimTask_BlendSelected, 5, 1, 0, 16, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 5, F_PAL_BG, 0, 16, 0, RGB_BLACK end -Move_BARRAGE:: +Move_BARRAGE: loadspritegfx ANIM_TAG_RED_BALL - createvisualtask AnimTask_BarrageBall, 3, - playsewithpan SE_M_SWAGGER, 192 + createvisualtask AnimTask_BarrageBall, 3 + playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER delay 24 createsprite gShakeMonOrTerrainSpriteTemplate, ANIM_ATTACKER, 2, 8, 1, 40, 1 - createvisualtask AnimTask_ShakeMon, 3, 1, 0, 4, 20, 1 - createvisualtask AnimTask_ShakeMon, 3, 3, 0, 4, 20, 1 - loopsewithpan SE_M_STRENGTH, 63, 8, 2 + createvisualtask AnimTask_ShakeMon, 3, ANIM_TARGET, 0, 4, 20, 1 + createvisualtask AnimTask_ShakeMon, 3, ANIM_DEF_PARTNER, 0, 4, 20, 1 + loopsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET, 8, 2 end -Move_SKY_ATTACK:: +Move_SKY_ATTACK: choosetwoturnanim SkyAttackSetUp, SkyAttackUnleash -SkyAttackEnd:: +SkyAttackEnd: end -SkyAttackSetUp:: +SkyAttackSetUp: monbg ANIM_DEF_PARTNER setalpha 12, 11 - createvisualtask AnimTask_GetTargetIsAttackerPartner, 5, 7 - jumpargeq 7, 0, SkyAttackSetUpAgainstOpponent + createvisualtask AnimTask_GetTargetIsAttackerPartner, 5, ARG_RET_ID + jumpretfalse SkyAttackSetUpAgainstOpponent goto SkyAttackSetUpAgainstPartner -SkyAttackSetUpAgainstOpponent:: - createvisualtask AnimTask_BlendSelected, 10, 27, 1, 0, 12, RGB_BLACK +SkyAttackSetUpAgainstOpponent: + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_ATK_SIDE | F_PAL_DEF_PARTNER, 1, 0, 12, RGB_BLACK waitforvisualfinish delay 12 - createvisualtask AnimTask_BlendSelected, 10, 2, 1, 8, 0, RGB_BLACK - createvisualtask AnimTask_HorizontalShake, 5, 0, 2, 16 - loopsewithpan SE_M_STAT_INCREASE, 192, 4, 8 - createvisualtask AnimTask_BlendSelected, 10, 2, 1, 0, 15, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 8, 0, RGB_BLACK + createvisualtask AnimTask_HorizontalShake, 5, ANIM_ATTACKER, 2, 16 + loopsewithpan SE_M_STAT_INCREASE, SOUND_PAN_ATTACKER, 4, 8 + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 0, 15, RGB_WHITE delay 20 - createvisualtask AnimTask_BlendSelected, 10, 2, 1, 15, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 15, 0, RGB_WHITE waitforvisualfinish - createvisualtask AnimTask_BlendSelected, 10, 25, 1, 8, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_ATK_PARTNER | F_PAL_DEF_PARTNER, 1, 8, 0, RGB_BLACK waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff goto SkyAttackEnd -SkyAttackSetUpAgainstPartner:: - createvisualtask AnimTask_BlendExcept, 10, 1, 1, 0, 12, 0 +SkyAttackSetUpAgainstPartner: + createvisualtask AnimTask_BlendBattleAnimPalExclude, 10, ANIM_TARGET, 1, 0, 12, RGB_BLACK waitforvisualfinish delay 12 - createvisualtask AnimTask_BlendSelected, 10, 2, 1, 8, 0, RGB_BLACK - createvisualtask AnimTask_HorizontalShake, 5, 0, 2, 16 - playsewithpan SE_M_STAT_INCREASE, 192 + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 8, 0, RGB_BLACK + createvisualtask AnimTask_HorizontalShake, 5, ANIM_ATTACKER, 2, 16 + playsewithpan SE_M_STAT_INCREASE, SOUND_PAN_ATTACKER delay 8 - createvisualtask AnimTask_BlendSelected, 10, 2, 1, 0, 15, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 0, 15, RGB_WHITE delay 20 - createvisualtask AnimTask_BlendSelected, 10, 2, 1, 15, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 15, 0, RGB_WHITE waitforvisualfinish - createvisualtask AnimTask_BlendExcept, 10, 4, 1, 8, 0, 0 + createvisualtask AnimTask_BlendBattleAnimPalExclude, 10, 4, 1, 8, 0, RGB_BLACK waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff goto SkyAttackEnd -SkyAttackUnleash:: +SkyAttackUnleash: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_BIRD call SetSkyBg monbg ANIM_ATTACKER - createvisualtask AnimTask_BlendSelected, 10, 2, 0, 0, 16, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 0, 0, 16, RGB_WHITE delay 4 createvisualtask AnimTask_AttackerFadeToInvisible, 5, 0 waitforvisualfinish - createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_SKY_UPPERCUT, -64 + createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_SKY_UPPERCUT, SOUND_PAN_ATTACKER createsprite gSkyAttackBirdSpriteTemplate, ANIM_TARGET, 2 delay 14 - createvisualtask AnimTask_ShakeMon2, 2, 1, 10, 0, 18, 1 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_MEGA_KICK2, 63 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 10, 0, 18, 1 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_MEGA_KICK2, SOUND_PAN_TARGET delay 20 createvisualtask AnimTask_AttackerFadeFromInvisible, 5, 1 delay 2 - createvisualtask AnimTask_BlendSelected, 10, 2, 0, 15, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 0, 15, 0, RGB_WHITE waitforvisualfinish clearmonbg ANIM_ATTACKER call UnsetSkyBg goto SkyAttackEnd -Move_FLASH:: - playsewithpan SE_M_LEER, 192 +Move_FLASH: + playsewithpan SE_M_LEER, SOUND_PAN_ATTACKER createvisualtask AnimTask_Flash, 2 waitforvisualfinish end -Move_SPLASH:: +Move_SPLASH: createvisualtask AnimTask_Splash, 2, 0, 3 delay 8 - loopsewithpan SE_M_TAIL_WHIP, 192, 38, 3 + loopsewithpan SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER, 38, 3 waitforvisualfinish end -Move_ACID_ARMOR:: +Move_ACID_ARMOR: monbg ANIM_ATTACKER setalpha 15, 0 - createvisualtask AnimTask_AcidArmor, 2, 0 - playsewithpan SE_M_ACID_ARMOR, 192 + createvisualtask AnimTask_AcidArmor, 2, ANIM_ATTACKER + playsewithpan SE_M_ACID_ARMOR, SOUND_PAN_ATTACKER waitforvisualfinish blendoff clearmonbg ANIM_ATTACKER delay 1 end -Move_SHARPEN:: +Move_SHARPEN: loadspritegfx ANIM_TAG_SPHERE_TO_CUBE - createsprite gSharpenSphereSpriteTemplate, ANIM_ATTACKER, 2, + createsprite gSharpenSphereSpriteTemplate, ANIM_ATTACKER, 2 waitforvisualfinish end -Move_SUPER_FANG:: +Move_SUPER_FANG: loadspritegfx ANIM_TAG_FANG_ATTACK - createvisualtask AnimTask_ShakeMonInPlace, 2, 0, 1, 0, 20, 1 - playsewithpan SE_M_DRAGON_RAGE, 192 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 1, 0, 20, 1 + playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER waitforvisualfinish - createvisualtask AnimTask_ShakeMonInPlace, 2, 0, 3, 0, 48, 1 - createvisualtask AnimTask_BlendMonInAndOut, 2, 0, 1247, 12, 4, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 3, 0, 48, 1 + createvisualtask AnimTask_BlendMonInAndOut, 2, ANIM_ATTACKER, RGB(31, 6, 1), 12, 4, 1 waitforvisualfinish delay 20 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 4 delay 4 - createsprite gSuperFangSpriteTemplate, ANIM_TARGET, 2, - playsewithpan SE_M_BITE, 63 + createsprite gSuperFangSpriteTemplate, ANIM_TARGET, 2 + playsewithpan SE_M_BITE, SOUND_PAN_TARGET delay 8 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, 2143, 14, RGB_WHITE, 14 - createvisualtask AnimTask_ShakeMon, 2, 1, 0, 7, 12, 1 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 1, RGB(31, 2, 2), 14, RGB_WHITE, 14 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 7, 12, 1 waitforvisualfinish blendoff end -Move_SLASH:: +Move_SLASH: loadspritegfx ANIM_TAG_SLASH createsprite gSlashSliceSpriteTemplate, ANIM_TARGET, 2, 1, -8, 0 - playsewithpan SE_M_RAZOR_WIND, 63 + playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET delay 4 createsprite gSlashSliceSpriteTemplate, ANIM_TARGET, 2, 1, 8, 0 - createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 18, 1 - playsewithpan SE_M_RAZOR_WIND, 63 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 18, 1 + playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET waitforvisualfinish end -Move_STRUGGLE:: +Move_STRUGGLE: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_MOVEMENT_WAVES - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 - createvisualtask AnimTask_ShakeMonInPlace, 2, 0, 3, 0, 12, 4 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 3, 0, 12, 4 createsprite gMovementWavesSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 2 createsprite gMovementWavesSpriteTemplate, ANIM_ATTACKER, 2, 0, 1, 2 - loopsewithpan SE_M_HEADBUTT, 192, 12, 4 + loopsewithpan SE_M_HEADBUTT, SOUND_PAN_ATTACKER, 12, 4 waitforvisualfinish - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 2 - createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 3, 0, 6, 1 - playsewithpan SE_M_MEGA_KICK2, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 3, 0, 6, 1 + playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -Move_SKETCH:: +Move_SKETCH: loadspritegfx ANIM_TAG_PENCIL - monbg 1 + monbg ANIM_TARGET createvisualtask AnimTask_SketchDrawMon, 2 - createsprite gPencilSpriteTemplate, ANIM_TARGET, 2, + createsprite gPencilSpriteTemplate, ANIM_TARGET, 2 waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET createvisualtask AnimTask_Splash, 2, 0, 2 - loopsewithpan SE_M_TAIL_WHIP, 192, 38, 2 + loopsewithpan SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER, 38, 2 end -Move_NIGHTMARE:: - fadetobg 2 +Move_NIGHTMARE: + fadetobg BG_GHOST waitbgfadein jumpifcontest NightmareInContest monbg ANIM_DEF_PARTNER createvisualtask AnimTask_NightmareClone, 2 - createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 40, 1 - playsewithpan SE_M_NIGHTMARE, 63 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 40, 1 + playsewithpan SE_M_NIGHTMARE, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_DEF_PARTNER restorebg waitbgfadein end -NightmareInContest:: - createvisualtask AnimTask_BlendMonInAndOut, 2, 0, RGB_WHITE, 10, 2, 1 - createvisualtask AnimTask_ShakeMon, 2, 0, 3, 0, 32, 1 - playsewithpan SE_M_NIGHTMARE, 63 +NightmareInContest: + createvisualtask AnimTask_BlendMonInAndOut, 2, ANIM_ATTACKER, RGB_WHITE, 10, 2, 1 + createvisualtask AnimTask_ShakeMon, 2, ANIM_ATTACKER, 3, 0, 32, 1 + playsewithpan SE_M_NIGHTMARE, SOUND_PAN_TARGET waitforvisualfinish restorebg waitbgfadein end -Move_FLAIL:: +Move_FLAIL: loadspritegfx ANIM_TAG_IMPACT - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 - createvisualtask AnimTask_FlailMovement, 2, 0 - loopsewithpan SE_M_HEADBUTT, 192, 8, 2 + createvisualtask AnimTask_FlailMovement, 2, ANIM_ATTACKER + loopsewithpan SE_M_HEADBUTT, SOUND_PAN_ATTACKER, 8, 2 waitforvisualfinish - createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 1, 3 - createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, 0, 1, 30, 1, 0 - playsewithpan SE_M_MEGA_KICK2, 63 + createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, ANIM_TARGET, 3 + createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, FALSE, 1, 30, 1, 0 + playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -Move_SPITE:: - fadetobg 2 - playsewithpan SE_M_PSYBEAM, 192 +Move_SPITE: + fadetobg BG_GHOST + playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER waitbgfadein monbg ANIM_DEF_PARTNER - createvisualtask AnimTask_CurseBlendEffect, 2, 2, 2, 6, 0, 8, RGB_WHITE + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 2, 6, 0, 8, RGB_WHITE createvisualtask AnimTask_SpiteTargetShadow, 2 - loopsewithpan SE_M_PSYBEAM, 63, 20, 3 + loopsewithpan SE_M_PSYBEAM, SOUND_PAN_TARGET, 20, 3 waitforvisualfinish restorebg waitbgfadein - clearmonbg 1 + clearmonbg ANIM_TARGET end -Move_MACH_PUNCH:: +Move_MACH_PUNCH: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET monbg ANIM_ATK_PARTNER - createvisualtask AnimTask_GetAttackerSide, 2, - jumpargeq 7, 1, MachPunchOnPlayer + createvisualtask AnimTask_GetAttackerSide, 2 + jumprettrue MachPunchAgainstPlayer fadetobg BG_HIGHSPEED_OPPONENT - -MachPunchContinue:: +MachPunchContinue: waitbgfadeout createvisualtask AnimTask_StartSlidingBg, 5, -2304, 0, 1, -1 waitbgfadein delay 0 setalpha 9, 8 - createvisualtask AnimTask_AttackerPunchWithTrace, 2, 28968, 10 - playsewithpan SE_M_JUMP_KICK, 192 + createvisualtask AnimTask_AttackerPunchWithTrace, 2, RGB(8, 9, 28), 10 + playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER delay 6 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 1 createsprite gFistFootSpriteTemplate, ANIM_TARGET, 4, 0, 0, 8, 1, 0 - playsewithpan SE_M_COMET_PUNCH, 63 - createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1 waitforvisualfinish clearmonbg ANIM_ATK_PARTNER blendoff restorebg waitbgfadeout - setarg 7, 65535 + setarg 7, 0xFFFF waitbgfadein end -MachPunchOnPlayer:: +MachPunchAgainstPlayer: fadetobg BG_HIGHSPEED_PLAYER goto MachPunchContinue -Move_FORESIGHT:: +Move_FORESIGHT: loadspritegfx ANIM_TAG_MAGNIFYING_GLASS monbg ANIM_DEF_PARTNER - monbgprio_28 1 + splitbgprio ANIM_TARGET setalpha 16, 0 - createsprite gForesightMagnifyingGlassSpriteTemplate, ANIM_TARGET, 2, 1 + createsprite gForesightMagnifyingGlassSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET delay 17 - loopsewithpan SE_M_SKETCH, 63, 16, 4 + loopsewithpan SE_M_SKETCH, SOUND_PAN_TARGET, 16, 4 delay 48 delay 24 - playsewithpan SE_M_SKETCH, 63 + playsewithpan SE_M_SKETCH, SOUND_PAN_TARGET delay 10 - createvisualtask AnimTask_BlendMonInAndOut, 5, 1, RGB_WHITE, 12, 2, 1 - playsewithpan SE_M_DETECT, 63 + createvisualtask AnimTask_BlendMonInAndOut, 5, ANIM_TARGET, RGB_WHITE, 12, 2, 1 + playsewithpan SE_M_DETECT, SOUND_PAN_TARGET waitforvisualfinish blendoff clearmonbg ANIM_DEF_PARTNER end -Move_DESTINY_BOND:: +Move_DESTINY_BOND: loadspritegfx ANIM_TAG_WHITE_SHADOW - fadetobg 2 - playsewithpan SE_M_PSYBEAM, 192 + fadetobg BG_GHOST + playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER waitbgfadein createvisualtask AnimTask_DestinyBondWhiteShadow, 5, 0, 48 - playsewithpan SE_M_CONFUSE_RAY, 192 + playsewithpan SE_M_CONFUSE_RAY, SOUND_PAN_ATTACKER delay 48 - createvisualtask AnimTask_ShakeMonInPlace, 2, 0, 2, 0, 24, 1 - createvisualtask AnimTask_BlendExcept, 2, 6, 1, 0, 12, 30653 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 2, 0, 24, 1 + createvisualtask AnimTask_BlendBattleAnimPalExclude, 2, 6, 1, 0, 12, RGB(29, 29, 29) delay 24 - createvisualtask AnimTask_BlendExcept, 2, 6, 1, 12, 0, 30653 - playsewithpan SE_M_NIGHTMARE, 63 + createvisualtask AnimTask_BlendBattleAnimPalExclude, 2, 6, 1, 12, 0, RGB(29, 29, 29) + playsewithpan SE_M_NIGHTMARE, SOUND_PAN_TARGET waitforvisualfinish restorebg waitbgfadein @@ -3275,20 +3257,20 @@ Move_DESTINY_BOND:: clearmonbg 5 end -Move_ENDURE:: +Move_ENDURE: loadspritegfx ANIM_TAG_FOCUS_ENERGY - playsewithpan SE_M_DRAGON_RAGE, 192 + playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER call EndureEffect delay 8 - createvisualtask AnimTask_CurseBlendEffect, 2, 2, 2, 2, 0, 11, 31 - createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 32, 1 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 2, 2, 0, 11, RGB_RED + createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 32, 1 call EndureEffect delay 8 call EndureEffect waitforvisualfinish end -EndureEffect:: +EndureEffect: createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, -24, 26, 2 delay 4 createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, 14, 28, 1 @@ -3300,152 +3282,152 @@ EndureEffect:: createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, -12, 0, 1 return -Move_CHARM:: +Move_CHARM: loadspritegfx ANIM_TAG_MAGENTA_HEART - createvisualtask AnimTask_RockMonBackAndForth, 5, 0, 2, 0 + createvisualtask AnimTask_RockMonBackAndForth, 5, ANIM_ATTACKER, 2, 0 createsprite gMagentaHeartSpriteTemplate, ANIM_ATTACKER, 3, 0, 20 - playsewithpan SE_M_CHARM, 192 + playsewithpan SE_M_CHARM, SOUND_PAN_ATTACKER delay 15 createsprite gMagentaHeartSpriteTemplate, ANIM_ATTACKER, 3, -20, 20 - playsewithpan SE_M_CHARM, 192 + playsewithpan SE_M_CHARM, SOUND_PAN_ATTACKER delay 15 createsprite gMagentaHeartSpriteTemplate, ANIM_ATTACKER, 3, 20, 20 - playsewithpan SE_M_CHARM, 192 + playsewithpan SE_M_CHARM, SOUND_PAN_ATTACKER waitforvisualfinish end -Move_ROLLOUT:: +Move_ROLLOUT: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_MUD_SAND loadspritegfx ANIM_TAG_ROCKS monbg ANIM_DEF_PARTNER - monbgprio_28 1 + splitbgprio ANIM_TARGET setalpha 12, 8 createvisualtask AnimTask_Rollout, 2 waitforvisualfinish - createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, 0, 1, 30, 1, 0 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 1, 2 - playsewithpan SE_M_MEGA_KICK2, 63 + createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, FALSE, 1, 30, 1, 0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, ANIM_TARGET, 2 + playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -Move_FALSE_SWIPE:: +Move_FALSE_SWIPE: loadspritegfx ANIM_TAG_SLASH_2 loadspritegfx ANIM_TAG_IMPACT - createsprite gFalseSwipeSliceSpriteTemplate, ANIM_TARGET, 2, - playsewithpan SE_M_VITAL_THROW, 63 + createsprite gFalseSwipeSliceSpriteTemplate, ANIM_TARGET, 2 + playsewithpan SE_M_VITAL_THROW, SOUND_PAN_TARGET delay 16 createsprite gFalseSwipePositionedSliceSpriteTemplate, ANIM_TARGET, 2, 0 - playsewithpan SE_M_DOUBLE_TEAM, 63 + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_TARGET delay 2 createsprite gFalseSwipePositionedSliceSpriteTemplate, ANIM_TARGET, 2, 16 delay 2 createsprite gFalseSwipePositionedSliceSpriteTemplate, ANIM_TARGET, 2, 32 - playsewithpan SE_M_DOUBLE_TEAM, 63 + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_TARGET delay 2 createsprite gFalseSwipePositionedSliceSpriteTemplate, ANIM_TARGET, 2, 48 delay 2 createsprite gFalseSwipePositionedSliceSpriteTemplate, ANIM_TARGET, 2, 64 - playsewithpan SE_M_DOUBLE_TEAM, 63 + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_TARGET delay 2 createsprite gFalseSwipePositionedSliceSpriteTemplate, ANIM_TARGET, 2, 80 delay 2 waitforvisualfinish - createvisualtask AnimTask_ShakeMon, 2, 1, 5, 0, 6, 1 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, 0, 0, 1, 3 - playsewithpan SE_M_COMET_PUNCH, 63 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 6, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, 0, 0, ANIM_TARGET, 3 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET end -Move_SWAGGER:: +Move_SWAGGER: loadspritegfx ANIM_TAG_BREATH loadspritegfx ANIM_TAG_ANGER - createvisualtask AnimTask_GrowAndShrink, 2, - playsewithpan SE_M_SWAGGER, 192 + createvisualtask AnimTask_GrowAndShrink, 2 + playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER waitforvisualfinish - createsprite gBreathPuffSpriteTemplate, ANIM_ATTACKER, 2, - loopsewithpan SE_M_SWAGGER, 192, 4, 2 + createsprite gBreathPuffSpriteTemplate, ANIM_ATTACKER, 2 + loopsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER, 4, 2 waitforvisualfinish delay 24 createsprite gAngerMarkSpriteTemplate, ANIM_TARGET, 2, 1, -20, -28 - playsewithpan SE_M_SWAGGER2, 63 + playsewithpan SE_M_SWAGGER2, SOUND_PAN_TARGET delay 12 createsprite gAngerMarkSpriteTemplate, ANIM_TARGET, 2, 1, 20, -28 - playsewithpan SE_M_SWAGGER2, 63 + playsewithpan SE_M_SWAGGER2, SOUND_PAN_TARGET waitforvisualfinish end -Move_MILK_DRINK:: +Move_MILK_DRINK: loadspritegfx ANIM_TAG_MILK_BOTTLE loadspritegfx ANIM_TAG_THIN_RING loadspritegfx ANIM_TAG_BLUE_STAR - monbg 1 - createsprite gMilkBottleSpriteTemplate, ANIM_ATTACKER, 2, + monbg ANIM_TARGET + createsprite gMilkBottleSpriteTemplate, ANIM_ATTACKER, 2 delay 40 - playsewithpan SE_M_CRABHAMMER, 192 + playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER delay 12 - playsewithpan SE_M_CRABHAMMER, 192 + playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER delay 20 - playsewithpan SE_M_CRABHAMMER, 192 + playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER waitforvisualfinish createsprite gThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 0 - playsewithpan SE_M_MILK_DRINK, 192 + playsewithpan SE_M_MILK_DRINK, SOUND_PAN_ATTACKER waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET call HealingEffect2 waitforvisualfinish end -Move_MAGNITUDE:: - createvisualtask AnimTask_IsPowerOver99, 2, +Move_MAGNITUDE: + createvisualtask AnimTask_IsPowerOver99, 2 waitforvisualfinish - jumpargeq 15, 0, MagnitudeRegular - jumpargeq 15, 1, MagnitudeIntense -MagnitudeEnd:: + jumpargeq 15, FALSE, MagnitudeRegular + jumpargeq 15, TRUE, MagnitudeIntense +MagnitudeEnd: end -MagnitudeRegular:: - createvisualtask AnimTask_HorizontalShake, 5, 5, 0, 50 - createvisualtask AnimTask_HorizontalShake, 5, 4, 0, 50 - loopsewithpan SE_M_STRENGTH, 63, 8, 10 +MagnitudeRegular: + createvisualtask AnimTask_HorizontalShake, 5, (MAX_BATTLERS_COUNT + 1), 0, 50 + createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 0, 50 + loopsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET, 8, 10 goto MagnitudeEnd -MagnitudeIntense:: - createvisualtask AnimTask_HorizontalShake, 5, 5, 0, 50 - createvisualtask AnimTask_HorizontalShake, 5, 4, 0, 50 - loopsewithpan SE_M_STRENGTH, 63, 8, 10 +MagnitudeIntense: + createvisualtask AnimTask_HorizontalShake, 5, (MAX_BATTLERS_COUNT + 1), 0, 50 + createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 0, 50 + loopsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET, 8, 10 delay 10 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, 0, 14, RGB_WHITE, 14 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 delay 16 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, 0, 14, RGB_WHITE, 14 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 goto MagnitudeEnd -Move_RAPID_SPIN:: +Move_RAPID_SPIN: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_RAPID_SPIN monbg ANIM_ATTACKER createsprite gRapidSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 32, -32, 40, -2 createvisualtask AnimTask_RapinSpinMonElevation, 2, 0, 2, 0 - loopsewithpan SE_M_RAZOR_WIND2, 192, 8, 4 + loopsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER, 8, 4 waitforvisualfinish - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 2 - createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, 0, 1, 10, 1, 0 - playsewithpan SE_M_DOUBLE_SLAP, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, FALSE, 1, 10, 1, 0 + playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET waitforvisualfinish delay 8 createvisualtask AnimTask_RapinSpinMonElevation, 2, 0, 2, 1 - loopsewithpan SE_M_RAZOR_WIND2, 192, 8, 4 + loopsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER, 8, 4 waitforvisualfinish clearmonbg ANIM_ATTACKER end -Move_MOONLIGHT:: +Move_MOONLIGHT: loadspritegfx ANIM_TAG_MOON loadspritegfx ANIM_TAG_GREEN_SPARKLE loadspritegfx ANIM_TAG_BLUE_STAR setalpha 0, 16 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 16, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 16, RGB_BLACK waitforvisualfinish createsprite gMoonSpriteTemplate, ANIM_ATTACKER, 2, 120, 56 createvisualtask AnimTask_AlphaFadeIn, 3, 0, 16, 16, 0, 1 @@ -3461,93 +3443,92 @@ Move_MOONLIGHT:: delay 30 createsprite gMoonlightSparkleSpriteTemplate, ANIM_ATTACKER, 40, 10, 0 delay 20 - createvisualtask AnimTask_FadeScreenBlue, 2, + createvisualtask AnimTask_MoonlightEndFade, 2 waitforvisualfinish call HealingEffect waitforvisualfinish end -Move_EXTREME_SPEED:: +Move_EXTREME_SPEED: loadspritegfx ANIM_TAG_SPEED_DUST loadspritegfx ANIM_TAG_IMPACT - createvisualtask AnimTask_GetAttackerSide, 2, - jumpargeq 7, 1, ExtremeSpeedOnPlayer + createvisualtask AnimTask_GetAttackerSide, 2 + jumprettrue ExtremeSpeedAgainstPlayer fadetobg BG_HIGHSPEED_OPPONENT - -ExtremeSpeedContinue:: +ExtremeSpeedContinue: waitbgfadeout createvisualtask AnimTask_StartSlidingBg, 5, -2304, 0, 1, -1 waitbgfadein - createvisualtask AnimTask_StretchAttacker, 2 - loopsewithpan SE_M_RAZOR_WIND2, 192, 8, 3 + createvisualtask AnimTask_AttackerStretchAndDisappear, 2 + loopsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER, 8, 3 waitforvisualfinish delay 1 createvisualtask AnimTask_SetAttackerInvisibleWaitForSignal, 2 monbg ANIM_TARGET setalpha 12, 8 delay 18 - createvisualtask AnimTask_ExtremeSpeedImpact, 2, + createvisualtask AnimTask_ExtremeSpeedImpact, 2 delay 2 - playsewithpan SE_M_COMET_PUNCH, 63 - createsprite gMonEdgeHitSplatSpriteTemplate, ANIM_TARGET, 2, 1, 0, -12, 3 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET + createsprite gMonEdgeHitSplatSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0, -12, 3 delay 10 - playsewithpan SE_M_COMET_PUNCH, 63 - createsprite gMonEdgeHitSplatSpriteTemplate, ANIM_TARGET, 2, 1, 0, 12, 3 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET + createsprite gMonEdgeHitSplatSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0, 12, 3 delay 10 - playsewithpan SE_M_VITAL_THROW2, 63 - createsprite gMonEdgeHitSplatSpriteTemplate, ANIM_TARGET, 2, 1, 0, 0, 3 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET + createsprite gMonEdgeHitSplatSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0, 0, 3 waitforvisualfinish - createvisualtask AnimTask_SpeedDust, 2, + createvisualtask AnimTask_SpeedDust, 2 delay 10 - createvisualtask AnimTask_ExtremeSpeedMonReappear, 2, - loopsewithpan SE_M_DOUBLE_TEAM, 192, 8, 4 + createvisualtask AnimTask_ExtremeSpeedMonReappear, 2 + loopsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER, 8, 4 waitforvisualfinish restorebg waitbgfadeout - setarg 7, 65535 + setarg 7, 0xFFFF waitbgfadein - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff delay 1 - setarg 7, 4096 + setarg 7, 0x1000 delay 1 end -ExtremeSpeedOnPlayer:: +ExtremeSpeedAgainstPlayer: fadetobg BG_HIGHSPEED_PLAYER goto ExtremeSpeedContinue -Move_UPROAR:: +Move_UPROAR: loadspritegfx ANIM_TAG_JAGGED_MUSIC_NOTE loadspritegfx ANIM_TAG_THIN_RING monbg ANIM_DEF_PARTNER createvisualtask AnimTask_UproarDistortion, 2, 0 createsprite gUproarRingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0, 31, 8 - playsewithpan SE_M_UPROAR, 192 + playsewithpan SE_M_UPROAR, SOUND_PAN_ATTACKER createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, 29, -12, 0 createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, -12, -29, 1 delay 16 createvisualtask AnimTask_UproarDistortion, 2, 0 createsprite gUproarRingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0, 31, 8 - playsewithpan SE_M_UPROAR, 192 + playsewithpan SE_M_UPROAR, SOUND_PAN_ATTACKER createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, 12, -29, 1 createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, -29, -12, 0 delay 16 createvisualtask AnimTask_UproarDistortion, 2, 0 createsprite gUproarRingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0, 31, 8 - playsewithpan SE_M_UPROAR, 192 + playsewithpan SE_M_UPROAR, SOUND_PAN_ATTACKER createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, 24, -24, 1 createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, -24, -24, 0 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER end -Move_HEAT_WAVE:: +Move_HEAT_WAVE: loadspritegfx ANIM_TAG_FLYING_DIRT - createvisualtask AnimTask_BlendParticle, 5, 10261, 0, 6, 6, 31 - createvisualtask AnimTask_LoadSandstormBackground, 5, 1 - createvisualtask AnimTask_BlendBackground, 6, 6, 31 - panse_1B SE_M_HEAT_WAVE, 192, 63, 2, 0 + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_FLYING_DIRT, 0, 6, 6, RGB_RED + createvisualtask AnimTask_LoadSandstormBackground, 5, TRUE + createvisualtask AnimTask_BlendBackground, 6, 6, RGB_RED + panse SE_M_HEAT_WAVE, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0 delay 4 createvisualtask AnimTask_MoveHeatWaveTargets, 5 delay 12 @@ -3566,159 +3547,160 @@ Move_HEAT_WAVE:: createsprite gFlyingSandCrescentSpriteTemplate, ANIM_ATTACKER, 40, 60, 2560, 96, 1 end -Move_HAIL:: +@ Also used by Hail weather +Move_HAIL: loadspritegfx ANIM_TAG_HAIL loadspritegfx ANIM_TAG_ICE_CRYSTALS - createvisualtask AnimTask_BlendSelected, 10, 1, 3, 0, 6, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 3, 0, 6, RGB_BLACK waitforvisualfinish - createvisualtask AnimTask_Hail1, 5, + createvisualtask AnimTask_Hail, 5 loopsewithpan SE_M_HAIL, 0, 8, 10 waitforvisualfinish - createvisualtask AnimTask_BlendSelected, 10, 1, 3, 6, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 3, 6, 0, RGB_BLACK end -Move_TORMENT:: +Move_TORMENT: loadspritegfx ANIM_TAG_ANGER loadspritegfx ANIM_TAG_THOUGHT_BUBBLE - createvisualtask AnimTask_TormentAttacker, 2, + createvisualtask AnimTask_TormentAttacker, 2 waitforvisualfinish - createvisualtask AnimTask_BlendMonInAndOut, 2, 1, 31, 10, 1, 1 + createvisualtask AnimTask_BlendMonInAndOut, 2, ANIM_TARGET, RGB_RED, 10, 1, 1 createsprite gAngerMarkSpriteTemplate, ANIM_TARGET, 2, 1, -20, -28 - playsewithpan SE_M_SWAGGER2, 63 + playsewithpan SE_M_SWAGGER2, SOUND_PAN_TARGET delay 20 createsprite gAngerMarkSpriteTemplate, ANIM_TARGET, 2, 1, 20, -28 - playsewithpan SE_M_SWAGGER2, 63 + playsewithpan SE_M_SWAGGER2, SOUND_PAN_TARGET end -Move_MEMENTO:: +Move_MEMENTO: setalpha 0, 16 delay 1 createvisualtask AnimTask_InitMementoShadow, 2 delay 1 createvisualtask AnimTask_MoveAttackerMementoShadow, 5 - playsewithpan SE_M_PSYBEAM, 192 + playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER delay 48 - playsewithpan SE_M_PSYBEAM2, 192 + playsewithpan SE_M_PSYBEAM2, SOUND_PAN_ATTACKER waitforvisualfinish - createvisualtask sub_80B8664, 2, + createvisualtask AnimTask_MementoHandleBg, 2 delay 12 setalpha 0, 16 delay 1 - monbg_22 1 + monbg_static ANIM_TARGET createvisualtask AnimTask_MoveTargetMementoShadow, 5 - playsewithpan SE_M_PSYBEAM, 63 + playsewithpan SE_M_PSYBEAM, SOUND_PAN_TARGET waitforvisualfinish - clearmonbg_23 1 + clearmonbg_static ANIM_TARGET delay 1 blendoff delay 1 end -Move_FACADE:: +Move_FACADE: loadspritegfx ANIM_TAG_SWEAT_DROP - createvisualtask AnimTask_SquishAndSweatDroplets, 2, 0, 3 - createvisualtask AnimTask_FacadeColorBlend, 2, 0, 72 - loopsewithpan SE_M_SWAGGER, 192, 24, 3 + createvisualtask AnimTask_SquishAndSweatDroplets, 2, ANIM_ATTACKER, 3 + createvisualtask AnimTask_FacadeColorBlend, 2, ANIM_ATTACKER, 72 + loopsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER, 24, 3 end -Move_SMELLING_SALT:: +Move_SMELLING_SALT: loadspritegfx ANIM_TAG_TAG_HAND loadspritegfx ANIM_TAG_SMELLINGSALT_EFFECT - createsprite gSmellingSaltsHandSpriteTemplate, ANIM_TARGET, 2, 1, 0, 2 - createsprite gSmellingSaltsHandSpriteTemplate, ANIM_TARGET, 2, 1, 1, 2 + createsprite gSmellingSaltsHandSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0, 2 + createsprite gSmellingSaltsHandSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 1, 2 delay 32 - createvisualtask AnimTask_SmellingSaltsSquish, 3, 1, 2 - loopsewithpan SE_M_DOUBLE_SLAP, 63, 12, 2 + createvisualtask AnimTask_SmellingSaltsSquish, 3, ANIM_TARGET, 2 + loopsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET, 12, 2 waitforvisualfinish delay 4 - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 6, 2 - createsprite gSmellingSaltExclamationSpriteTemplate, ANIM_TARGET, 2, 1, 8, 3 - loopsewithpan SE_M_SWAGGER2, 63, 16, 3 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 6, 2 + createsprite gSmellingSaltExclamationSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 8, 3 + loopsewithpan SE_M_SWAGGER2, SOUND_PAN_TARGET, 16, 3 end -Move_FOLLOW_ME:: +Move_FOLLOW_ME: loadspritegfx ANIM_TAG_FINGER createsprite gFollowMeFingerSpriteTemplate, ANIM_ATTACKER, 2, 0 - playsewithpan SE_M_TAIL_WHIP, 192 + playsewithpan SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER delay 18 - playsewithpan SE_M_ATTRACT, 192 + playsewithpan SE_M_ATTRACT, SOUND_PAN_ATTACKER delay 71 - loopsewithpan SE_M_TAIL_WHIP, 192, 22, 3 + loopsewithpan SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER, 22, 3 end -Move_CHARGE:: +Move_CHARGE: loadspritegfx ANIM_TAG_ELECTRIC_ORBS loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT loadspritegfx ANIM_TAG_ELECTRICITY monbg ANIM_ATTACKER setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 4, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 4, RGB_BLACK waitforvisualfinish - createvisualtask AnimTask_ElectricChargingParticles, 2, 0, 60, 2, 12 - playsewithpan SE_M_CHARGE, 192 + createvisualtask AnimTask_ElectricChargingParticles, 2, ANIM_ATTACKER, 60, 2, 12 + playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER delay 30 - playsewithpan SE_M_CHARGE, 192 + playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER delay 30 - playsewithpan SE_M_CHARGE, 192 + playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER createsprite gGrowingChargeOrbSpriteTemplate, ANIM_ATTACKER, 2, 0 delay 25 - playsewithpan SE_M_CHARGE, 192 + playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER delay 20 - playsewithpan SE_M_CHARGE, 192 + playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER delay 15 - playsewithpan SE_M_CHARGE, 192 + playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER delay 10 delay 6 - loopsewithpan SE_M_CHARGE, 192, 6, 5 + loopsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER, 6, 5 waitforvisualfinish createsprite gElectricPuffSpriteTemplate, ANIM_ATTACKER, 2, 0, 16, 16 delay 2 createsprite gElectricPuffSpriteTemplate, ANIM_ATTACKER, 2, 0, -16, -16 - playsewithpan SE_M_THUNDERBOLT2, 192 + playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 4, 4, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 4, 4, 0, RGB_BLACK clearmonbg ANIM_ATTACKER blendoff end -Move_TAUNT:: +Move_TAUNT: loadspritegfx ANIM_TAG_FINGER_2 loadspritegfx ANIM_TAG_THOUGHT_BUBBLE loadspritegfx ANIM_TAG_ANGER createsprite gThoughtBubbleSpriteTemplate, ANIM_ATTACKER, 11, 0, 45 - playsewithpan SE_M_METRONOME, 192 + playsewithpan SE_M_METRONOME, SOUND_PAN_ATTACKER delay 6 createsprite gTauntFingerSpriteTemplate, ANIM_ATTACKER, 12, 0 delay 4 - loopsewithpan SE_M_TAIL_WHIP, 192, 16, 2 + loopsewithpan SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER, 16, 2 waitforvisualfinish delay 8 createsprite gAngerMarkSpriteTemplate, ANIM_TARGET, 2, 1, -20, -28 - playsewithpan SE_M_SWAGGER2, 63 + playsewithpan SE_M_SWAGGER2, SOUND_PAN_TARGET waitforvisualfinish delay 12 createsprite gAngerMarkSpriteTemplate, ANIM_TARGET, 2, 1, 20, -28 - playsewithpan SE_M_SWAGGER2, 63 + playsewithpan SE_M_SWAGGER2, SOUND_PAN_TARGET end -Move_HELPING_HAND:: +Move_HELPING_HAND: loadspritegfx ANIM_TAG_TAG_HAND - createvisualtask AnimTask_HelpingHandAttackerMovement, 5, + createvisualtask AnimTask_HelpingHandAttackerMovement, 5 createsprite gHelpingHandClapSpriteTemplate, ANIM_ATTACKER, 40, 0 createsprite gHelpingHandClapSpriteTemplate, ANIM_ATTACKER, 40, 1 delay 19 playsewithpan SE_M_ENCORE, 0 - createvisualtask AnimTask_ShakeMon2, 2, 2, 2, 0, 5, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATK_PARTNER, 2, 0, 5, 1 delay 14 playsewithpan SE_M_ENCORE, 0 - createvisualtask AnimTask_ShakeMon2, 2, 2, 2, 0, 5, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATK_PARTNER, 2, 0, 5, 1 delay 20 playsewithpan SE_M_ENCORE, 0 - createvisualtask AnimTask_ShakeMon2, 2, 2, 3, 0, 10, 1 - createvisualtask AnimTask_BlendMonInAndOut, 2, 2, 1023, 12, 1, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATK_PARTNER, 3, 0, 10, 1 + createvisualtask AnimTask_BlendMonInAndOut, 2, ANIM_ATK_PARTNER, RGB_YELLOW, 12, 1, 1 end -Move_ASSIST:: +Move_ASSIST: loadspritegfx ANIM_TAG_PAW_PRINT createsprite gAssistPawprintSpriteTemplate, ANIM_ATTACKER, 50, 112, -16, 140, 128, 36 delay 2 @@ -3735,15 +3717,15 @@ Move_ASSIST:: playsewithpan SE_M_SCRATCH, 0 end -Move_SUPERPOWER:: +Move_SUPERPOWER: loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT loadspritegfx ANIM_TAG_METEOR loadspritegfx ANIM_TAG_FLAT_ROCK monbg ANIM_ATK_PARTNER - monbgprio_28 0 + splitbgprio ANIM_ATTACKER setalpha 12, 8 - createsprite gSuperpowerOrbSpriteTemplate, ANIM_TARGET, 2, 0 - playsewithpan SE_M_MEGA_KICK, 192 + createsprite gSuperpowerOrbSpriteTemplate, ANIM_TARGET, 2, ANIM_ATTACKER + playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER delay 20 createsprite gShakeMonOrTerrainSpriteTemplate, ANIM_ATTACKER, 2, 4, 1, 180, 1 createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_EARTHQUAKE, 0 @@ -3758,144 +3740,144 @@ Move_SUPERPOWER:: delay 8 createsprite gSuperpowerRockSpriteTemplate, ANIM_ATTACKER, 41, 60, 288, 3, 88 delay 74 - createsprite gSuperpowerFireballSpriteTemplate, ANIM_TARGET, 3, 0 - playsewithpan SE_M_SWAGGER, 192 + createsprite gSuperpowerFireballSpriteTemplate, ANIM_TARGET, 3, ANIM_ATTACKER + playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER delay 16 - createvisualtask AnimTask_ShakeMon2, 2, 1, 8, 0, 16, 1 - playsewithpan SE_M_MEGA_KICK2, 63 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 8, 0, 16, 1 + playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_ATK_PARTNER blendoff delay 1 end -Move_RECYCLE:: +Move_RECYCLE: loadspritegfx ANIM_TAG_RECYCLE monbg ANIM_ATTACKER setalpha 0, 16 delay 1 - createsprite gRecycleSpriteTemplate, ANIM_ATTACKER, 2, - loopsewithpan SE_M_TAKE_DOWN, 192, 24, 3 + createsprite gRecycleSpriteTemplate, ANIM_ATTACKER, 2 + loopsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER, 24, 3 waitforvisualfinish - createvisualtask AnimTask_BlendMonInAndOut, 5, 0, RGB_WHITE, 12, 2, 1 - playsewithpan SE_M_TAKE_DOWN, 192 + createvisualtask AnimTask_BlendMonInAndOut, 5, ANIM_ATTACKER, RGB_WHITE, 12, 2, 1 + playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER waitforvisualfinish blendoff clearmonbg ANIM_ATTACKER delay 1 end -Move_BRICK_BREAK:: +Move_BRICK_BREAK: loadspritegfx ANIM_TAG_BLUE_LIGHT_WALL loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_TORN_METAL choosetwoturnanim BrickBreakNormal, BrickBreakShatteredWall -BrickBreakNormal:: - monbg 1 +BrickBreakNormal: + monbg ANIM_TARGET setalpha 12, 8 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 3, 8 delay 4 delay 1 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -18, -18, 1, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -18, -18, ANIM_TARGET, 1 createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 2, -18, -18, 10, 1, 0 - playsewithpan SE_M_VITAL_THROW, 63 + playsewithpan SE_M_VITAL_THROW, SOUND_PAN_TARGET delay 20 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 3, 8 delay 5 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 18, 18, 1, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 18, 18, ANIM_TARGET, 1 createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 2, 18, 18, 10, 1, 0 - playsewithpan SE_M_VITAL_THROW, 63 + playsewithpan SE_M_VITAL_THROW, SOUND_PAN_TARGET delay 20 - createvisualtask AnimTask_WindUpLunge, 2, 0, -24, 0, 24, 10, 24, 3 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 6, 0 + createvisualtask AnimTask_WindUpLunge, 2, ANIM_ATTACKER, -24, 0, 24, 10, 24, 3 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 6, RGB_BLACK delay 37 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 1 createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 10, 1, 0 - playsewithpan SE_M_VITAL_THROW2, 63 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 6, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 6, 0, RGB_BLACK waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET end -BrickBreakShatteredWall:: - monbg 1 +BrickBreakShatteredWall: + monbg ANIM_TARGET setalpha 12, 8 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 3, 8 delay 4 - createsprite gBrickBreakWallSpriteTemplate, ANIM_ATTACKER, 3, 1, 0, 0, 90, 10 + createsprite gBrickBreakWallSpriteTemplate, ANIM_ATTACKER, 3, ANIM_TARGET, 0, 0, 90, 10 delay 1 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -18, -18, 1, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -18, -18, ANIM_TARGET, 1 createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 2, -18, -18, 10, 1, 0 - playsewithpan SE_M_VITAL_THROW, 63 + playsewithpan SE_M_VITAL_THROW, SOUND_PAN_TARGET delay 20 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 3, 8 delay 5 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 18, 18, 1, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 18, 18, ANIM_TARGET, 1 createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 2, 18, 18, 10, 1, 0 - playsewithpan SE_M_VITAL_THROW, 63 + playsewithpan SE_M_VITAL_THROW, SOUND_PAN_TARGET delay 20 - createvisualtask AnimTask_WindUpLunge, 2, 0, -24, 0, 24, 10, 24, 3 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 6, 0 + createvisualtask AnimTask_WindUpLunge, 2, ANIM_ATTACKER, -24, 0, 24, 10, 24, 3 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 6, RGB_BLACK delay 37 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 1 createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 10, 1, 0 - playsewithpan SE_M_VITAL_THROW2, 63 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET waitforvisualfinish - createsprite gBrickBreakWallShardSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, -8, -12 - createsprite gBrickBreakWallShardSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 8, -12 - createsprite gBrickBreakWallShardSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, -8, 12 - createsprite gBrickBreakWallShardSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 8, 12 - playsewithpan SE_M_BRICK_BREAK, 63 + createsprite gBrickBreakWallShardSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, -8, -12 + createsprite gBrickBreakWallShardSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 1, 8, -12 + createsprite gBrickBreakWallShardSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 2, -8, 12 + createsprite gBrickBreakWallShardSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 3, 8, 12 + playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_TARGET waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 6, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 6, 0, RGB_BLACK waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET end -Move_YAWN:: +Move_YAWN: loadspritegfx ANIM_TAG_PINK_CLOUD - createvisualtask AnimTask_DeepInhale, 2, 0 - playsewithpan SE_M_YAWN, 192 + createvisualtask AnimTask_DeepInhale, 2, ANIM_ATTACKER + playsewithpan SE_M_YAWN, SOUND_PAN_ATTACKER waitforvisualfinish createsprite gYawnCloudSpriteTemplate, ANIM_TARGET, 5, 2 - playsewithpan SE_M_SPIT_UP, 192 + playsewithpan SE_M_SPIT_UP, SOUND_PAN_ATTACKER delay 4 createsprite gYawnCloudSpriteTemplate, ANIM_TARGET, 5, 1 delay 4 createsprite gYawnCloudSpriteTemplate, ANIM_TARGET, 5, 0 waitforvisualfinish - createvisualtask AnimTask_DeepInhale, 2, 1 - playsewithpan SE_M_YAWN, 63 + createvisualtask AnimTask_DeepInhale, 2, ANIM_TARGET + playsewithpan SE_M_YAWN, SOUND_PAN_TARGET end -Move_ENDEAVOR:: +Move_ENDEAVOR: loadspritegfx ANIM_TAG_SWEAT_DROP loadspritegfx ANIM_TAG_IMPACT - createvisualtask AnimTask_SquishAndSweatDroplets, 2, 0, 2 - loopsewithpan SE_M_TAIL_WHIP, 192, 24, 2 - createvisualtask AnimTask_BlendMonInAndOut, 5, 0, 703, 12, 1, 2 + createvisualtask AnimTask_SquishAndSweatDroplets, 2, ANIM_ATTACKER, 2 + loopsewithpan SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER, 24, 2 + createvisualtask AnimTask_BlendMonInAndOut, 5, ANIM_ATTACKER, RGB(31, 21, 0), 12, 1, 2 delay 6 - createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 5, 0, 1, 8, 1, 0 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 12, -12, 1, 2 - playsewithpan SE_M_DOUBLE_SLAP, 63 + createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 5, FALSE, 1, 8, 1, 0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 12, -12, ANIM_TARGET, 2 + playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET delay 24 - createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 5, 0, 1, 8, 1, 0 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -12, 12, 1, 2 - playsewithpan SE_M_COMET_PUNCH, 63 + createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 5, FALSE, 1, 8, 1, 0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -12, 12, ANIM_TARGET, 2 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET end -Move_ERUPTION:: +Move_ERUPTION: loadspritegfx ANIM_TAG_WARM_ROCK - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 2, 0, 4, 31 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 2, 0, 4, RGB_RED waitforvisualfinish createvisualtask AnimTask_EruptionLaunchRocks, 2 - waitplaysewithpan SE_M_EXPLOSION, 192, 60 + waitplaysewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER, 60 waitforvisualfinish createvisualtask AnimTask_EruptionLaunchRocks, 2 - waitplaysewithpan SE_M_EXPLOSION, 192, 60 + waitplaysewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER, 60 waitforvisualfinish delay 30 createsprite gEruptionFallingRockSpriteTemplate, ANIM_ATTACKER, 40, 200, -32, 0, 100, 0 @@ -3905,72 +3887,72 @@ Move_ERUPTION:: createsprite gEruptionFallingRockSpriteTemplate, ANIM_ATTACKER, 40, 110, -32, 64, 50, 0 createsprite gEruptionFallingRockSpriteTemplate, ANIM_ATTACKER, 40, 60, -32, 80, 70, 1 delay 22 - createvisualtask AnimTask_HorizontalShake, 5, 5, 8, 60 - createvisualtask AnimTask_HorizontalShake, 5, 4, 8, 60 - loopsewithpan SE_M_ROCK_THROW, 63, 16, 12 + createvisualtask AnimTask_HorizontalShake, 5, (MAX_BATTLERS_COUNT + 1), 8, 60 + createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 8, 60 + loopsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET, 16, 12 delay 80 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 40, 31, 4, 4, 0, 31 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 40, F_PAL_BG | F_PAL_BATTLERS, 4, 4, 0, RGB_RED end -Move_SKILL_SWAP:: +Move_SKILL_SWAP: loadspritegfx ANIM_TAG_BLUEGREEN_ORB call SetPsychicBackground - createvisualtask AnimTask_SkillSwap, 3, 1 - createvisualtask AnimTask_BlendMonInAndOut, 5, 1, RGB_WHITE, 12, 3, 1 - loopsewithpan SE_M_REVERSAL, 192, 24, 3 + createvisualtask AnimTask_SkillSwap, 3, ANIM_TARGET + createvisualtask AnimTask_BlendMonInAndOut, 5, ANIM_TARGET, RGB_WHITE, 12, 3, 1 + loopsewithpan SE_M_REVERSAL, SOUND_PAN_ATTACKER, 24, 3 delay 16 - createvisualtask AnimTask_SkillSwap, 3, 0 - createvisualtask AnimTask_BlendMonInAndOut, 5, 0, RGB_WHITE, 12, 3, 1 + createvisualtask AnimTask_SkillSwap, 3, ANIM_ATTACKER + createvisualtask AnimTask_BlendMonInAndOut, 5, ANIM_ATTACKER, RGB_WHITE, 12, 3, 1 waitforvisualfinish - call UnsetPsychicBg + call UnsetPsychicBackground end -Move_IMPRISON:: +Move_IMPRISON: loadspritegfx ANIM_TAG_HOLLOW_ORB loadspritegfx ANIM_TAG_X_SIGN call SetPsychicBackground monbg ANIM_DEF_PARTNER createvisualtask AnimTask_ImprisonOrbs, 5 delay 8 - loopsewithpan SE_M_HORN_ATTACK, 192, 8, 5 + loopsewithpan SE_M_HORN_ATTACK, SOUND_PAN_ATTACKER, 8, 5 waitforvisualfinish delay 4 - createsprite gRedXSpriteTemplate, ANIM_ATTACKER, 5, 0, 40 - createvisualtask AnimTask_HorizontalShake, 5, 4, 1, 10 - playsewithpan SE_M_HYPER_BEAM, 192 + createsprite gRedXSpriteTemplate, ANIM_ATTACKER, 5, ANIM_ATTACKER, 40 + createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 1, 10 + playsewithpan SE_M_HYPER_BEAM, SOUND_PAN_ATTACKER clearmonbg ANIM_DEF_PARTNER - call UnsetPsychicBg + call UnsetPsychicBackground end -Move_GRUDGE:: +Move_GRUDGE: loadspritegfx ANIM_TAG_PURPLE_FLAME monbg ANIM_ATTACKER - monbgprio_29 - fadetobg 2 - playsewithpan SE_M_PSYBEAM, 192 + splitbgprio_all + fadetobg BG_GHOST + playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER waitbgfadein createvisualtask AnimTask_GrudgeFlames, 3 - loopsewithpan SE_M_EMBER, 192, 16, 4 + loopsewithpan SE_M_EMBER, SOUND_PAN_ATTACKER, 16, 4 delay 10 delay 80 - playsewithpan SE_M_NIGHTMARE, 63 + playsewithpan SE_M_NIGHTMARE, SOUND_PAN_TARGET waitforvisualfinish restorebg waitbgfadein clearmonbg ANIM_ATTACKER end -Move_CAMOUFLAGE:: +Move_CAMOUFLAGE: monbg ANIM_ATK_PARTNER - monbgprio_28 0 + splitbgprio ANIM_ATTACKER setalpha 16, 0 - createvisualtask AnimTask_SetCamouflageBlend, 5, 2, 3, 0, 14 + createvisualtask AnimTask_SetCamouflageBlend, 5, F_PAL_ATTACKER, 3, 0, 14 delay 16 createvisualtask AnimTask_AttackerFadeToInvisible, 2, 4 - playsewithpan SE_M_FAINT_ATTACK, 192 + playsewithpan SE_M_FAINT_ATTACK, SOUND_PAN_ATTACKER waitforvisualfinish delay 8 - createvisualtask AnimTask_SetCamouflageBlend, 5, 2, 0, 0, 0 + createvisualtask AnimTask_SetCamouflageBlend, 5, F_PAL_ATTACKER, 0, 0, 0 waitforvisualfinish createvisualtask AnimTask_AttackerFadeFromInvisible, 2, 1 waitforvisualfinish @@ -3978,90 +3960,90 @@ Move_CAMOUFLAGE:: clearmonbg ANIM_ATK_PARTNER end -Move_TAIL_GLOW:: +Move_TAIL_GLOW: loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT monbg ANIM_ATTACKER setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 4, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 4, RGB_BLACK waitforvisualfinish - createsprite gTailGlowOrbSpriteTemplate, ANIM_ATTACKER, 66, 0 + createsprite gTailGlowOrbSpriteTemplate, ANIM_ATTACKER, 66, ANIM_ATTACKER delay 18 - loopsewithpan SE_M_MORNING_SUN, 192, 16, 6 + loopsewithpan SE_M_MORNING_SUN, SOUND_PAN_ATTACKER, 16, 6 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 4, 4, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 4, 4, 0, RGB_BLACK clearmonbg ANIM_ATTACKER blendoff delay 1 end -Move_LUSTER_PURGE:: +Move_LUSTER_PURGE: loadspritegfx ANIM_TAG_WHITE_CIRCLE_OF_LIGHT loadspritegfx ANIM_TAG_IMPACT - fadetobg 3 + fadetobg BG_PSYCHIC waitbgfadeout - createvisualtask AnimTask_FadeScreenToWhite, 5, + createvisualtask AnimTask_FadeScreenToWhite, 5 waitbgfadein monbg ANIM_ATTACKER setalpha 12, 8 - playsewithpan SE_M_SOLAR_BEAM, 192 + playsewithpan SE_M_SOLAR_BEAM, SOUND_PAN_ATTACKER createsprite gLusterPurgeCircleSpriteTemplate, ANIM_ATTACKER, 41, 0, 0, 0, 0 delay 20 - createvisualtask AnimTask_BlendExcept, 5, 5, 2, 0, 16, -1 - createvisualtask AnimTask_BlendParticle, 5, 10267, 2, 0, 16, -1 + createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 0, 16, RGB_WHITEALPHA + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_WHITE_CIRCLE_OF_LIGHT, 2, 0, 16, RGB_WHITEALPHA waitforvisualfinish - createvisualtask AnimTask_BlendParticle, 5, 10135, 0, 12, 12, 23552 + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_IMPACT, 0, 12, 12, RGB(0, 0, 23) waitforvisualfinish createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 1, 2 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_HYPER_BEAM, 63 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_HYPER_BEAM, SOUND_PAN_TARGET delay 3 createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 1, 2 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_HYPER_BEAM, 63 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_HYPER_BEAM, SOUND_PAN_TARGET delay 3 createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 1, 2 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_HYPER_BEAM, 63 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_HYPER_BEAM, SOUND_PAN_TARGET delay 3 createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 1, 2 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_HYPER_BEAM, 63 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_HYPER_BEAM, SOUND_PAN_TARGET delay 3 createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 1, 2 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_HYPER_BEAM, 63 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_HYPER_BEAM, SOUND_PAN_TARGET delay 3 createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 1, 2 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_HYPER_BEAM, 63 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_HYPER_BEAM, SOUND_PAN_TARGET waitforvisualfinish - createvisualtask AnimTask_BlendExcept, 5, 5, 2, 16, 0, -1 - createvisualtask AnimTask_HorizontalShake, 5, 1, 5, 14 + createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 16, 0, RGB_WHITEALPHA + createvisualtask AnimTask_HorizontalShake, 5, ANIM_TARGET, 5, 14 waitforvisualfinish clearmonbg ANIM_ATTACKER blendoff - call UnsetPsychicBg + call UnsetPsychicBackground end -Move_MIST_BALL:: +Move_MIST_BALL: loadspritegfx ANIM_TAG_SMALL_BUBBLES loadspritegfx ANIM_TAG_WHITE_FEATHER delay 0 - playsewithpan SE_M_STRING_SHOT, 192 + playsewithpan SE_M_STRING_SHOT, SOUND_PAN_ATTACKER createsprite gMistBallSpriteTemplate, ANIM_TARGET, 0, 0, 0, 0, 0, 30, 0 waitforvisualfinish - playsewithpan SE_M_SAND_ATTACK, 63 - createvisualtask AnimTask_ShakeMon, 2, 1, 5, 0, 10, 0 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 1, 1, 1, 32279, 16, RGB_WHITE, 16 + playsewithpan SE_M_SAND_ATTACK, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 10, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_BG, 1, 1, RGB(23, 16, 31), 16, RGB_WHITE, 16 delay 0 playsewithpan SE_M_HAZE, 0 - createvisualtask AnimTask_LoadMistTiles, 5, - createvisualtask AnimTask_BlendSelected, 10, 4, 3, 0, 16, RGB_WHITE + createvisualtask AnimTask_MistBallFog, 5 + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 3, 0, 16, RGB_WHITE delay 8 - createvisualtask AnimTask_ShakeMon, 2, 1, 4, 0, 70, 0 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 4, 0, 70, 0 delay 70 - createvisualtask AnimTask_BlendSelected, 10, 4, 2, 16, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 16, 0, RGB_WHITE end -Move_FEATHER_DANCE:: +Move_FEATHER_DANCE: loadspritegfx ANIM_TAG_WHITE_FEATHER monbg ANIM_DEF_PARTNER - monbgprio_29 - playsewithpan SE_M_PETAL_DANCE, 63 + splitbgprio_all + playsewithpan SE_M_PETAL_DANCE, SOUND_PAN_TARGET delay 0 createsprite gFallingFeatherSpriteTemplate, ANIM_TARGET, 0, 0, -16, 64, 2, 104, 11304, 32, 1 delay 6 @@ -4079,41 +4061,41 @@ Move_FEATHER_DANCE:: clearmonbg ANIM_DEF_PARTNER end -Move_TEETER_DANCE:: +Move_TEETER_DANCE: loadspritegfx ANIM_TAG_MUSIC_NOTES loadspritegfx ANIM_TAG_DUCK - createvisualtask AnimTask_TeeterDanceMovement, 5, + createvisualtask AnimTask_TeeterDanceMovement, 5 createsprite gFastFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0, 16, -2 - playsewithpan SE_M_TEETER_DANCE, 192 + playsewithpan SE_M_TEETER_DANCE, SOUND_PAN_ATTACKER delay 24 createsprite gFastFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, -2 - playsewithpan SE_M_TEETER_DANCE, 192 + playsewithpan SE_M_TEETER_DANCE, SOUND_PAN_ATTACKER delay 24 createsprite gFastFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0, -16, -2 - playsewithpan SE_M_TEETER_DANCE, 192 + playsewithpan SE_M_TEETER_DANCE, SOUND_PAN_ATTACKER delay 24 createsprite gFastFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 1, -8, -2 - playsewithpan SE_M_TEETER_DANCE, 192 + playsewithpan SE_M_TEETER_DANCE, SOUND_PAN_ATTACKER delay 24 createsprite gFastFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 2, 8, -2 - playsewithpan SE_M_TEETER_DANCE, 192 + playsewithpan SE_M_TEETER_DANCE, SOUND_PAN_ATTACKER end -Move_MUD_SPORT:: +Move_MUD_SPORT: loadspritegfx ANIM_TAG_MUD_SAND createvisualtask AnimTask_Splash, 2, 0, 6 delay 24 createsprite gMudsportMudSpriteTemplate, ANIM_TARGET, 2, 0, -4, -16 createsprite gMudsportMudSpriteTemplate, ANIM_TARGET, 2, 0, 4, -12 - playsewithpan SE_M_DIG, 192 + playsewithpan SE_M_DIG, SOUND_PAN_ATTACKER delay 32 createsprite gMudsportMudSpriteTemplate, ANIM_TARGET, 2, 0, -3, -12 createsprite gMudsportMudSpriteTemplate, ANIM_TARGET, 2, 0, 5, -14 - playsewithpan SE_M_DIG, 192 + playsewithpan SE_M_DIG, SOUND_PAN_ATTACKER delay 32 createsprite gMudsportMudSpriteTemplate, ANIM_TARGET, 2, 0, -5, -18 createsprite gMudsportMudSpriteTemplate, ANIM_TARGET, 2, 0, 3, -14 - playsewithpan SE_M_DIG, 192 + playsewithpan SE_M_DIG, SOUND_PAN_ATTACKER delay 16 createsprite gMudsportMudSpriteTemplate, ANIM_TARGET, 2, 1, 220, 60 waitplaysewithpan SE_M_BUBBLE2, 0, 15 @@ -4146,11 +4128,11 @@ Move_MUD_SPORT:: waitplaysewithpan SE_M_BUBBLE2, 0, 10 end -Move_NEEDLE_ARM:: +Move_NEEDLE_ARM: loadspritegfx ANIM_TAG_GREEN_SPIKE loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET - loopsewithpan SE_M_HORN_ATTACK, 63, 2, 16 + loopsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET, 2, 16 createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 1, 0, 0, -32, 16 delay 2 createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 1, 0, 22, -22, 16 @@ -4175,10 +4157,10 @@ Move_NEEDLE_ARM:: delay 2 createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 1, 0, 16, 16, 16 waitforvisualfinish - createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 18, 1 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 18, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 1 createsprite gFistFootSpriteTemplate, ANIM_TARGET, 4, 0, 0, 8, 1, 0 - playsewithpan SE_M_VITAL_THROW2, 63 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 1, 1, 0, -24, 10 createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 1, 1, 17, -17, 10 createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 1, 1, 24, 0, 10 @@ -4189,43 +4171,43 @@ Move_NEEDLE_ARM:: createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 1, 1, -17, -17, 10 end -Move_SLACK_OFF:: +Move_SLACK_OFF: loadspritegfx ANIM_TAG_BLUE_STAR - createvisualtask AnimTask_SlackOffSquish, 2, 0 - playsewithpan SE_M_YAWN, 192 + createvisualtask AnimTask_SlackOffSquish, 2, ANIM_ATTACKER + playsewithpan SE_M_YAWN, SOUND_PAN_ATTACKER waitforvisualfinish call HealingEffect waitforvisualfinish end -Move_CRUSH_CLAW:: +Move_CRUSH_CLAW: loadspritegfx ANIM_TAG_BLUE_LIGHT_WALL loadspritegfx ANIM_TAG_CLAW_SLASH loadspritegfx ANIM_TAG_TORN_METAL - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 6, 4 delay 4 - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 18, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 18, 1 createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, -10, -10, 0 createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, -10, 10, 0 - playsewithpan SE_M_RAZOR_WIND, 63 + playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET delay 12 createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, 10, -10, 1 createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, 10, 10, 1 - playsewithpan SE_M_RAZOR_WIND, 63 - waitforvisualfinish + playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET waitforvisualfinish + waitforvisualfinish @ Redundant blendoff - clearmonbg 1 + clearmonbg ANIM_TARGET end -Move_AROMATHERAPY:: +Move_AROMATHERAPY: playsewithpan SE_M_PETAL_DANCE, 0 loadspritegfx ANIM_TAG_FLOWER loadspritegfx ANIM_TAG_THIN_RING loadspritegfx ANIM_TAG_SPARKLE_2 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 1, 0, 0, 7, 13293 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_BG, 0, 0, 7, RGB(13, 31, 12) delay 1 monbg ANIM_ATTACKER delay 1 @@ -4243,30 +4225,30 @@ Move_AROMATHERAPY:: waitforvisualfinish clearmonbg ANIM_ATTACKER delay 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 1, 0, 7, 0, 13293 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_BG, 0, 7, 0, RGB(13, 31, 12) delay 1 - playsewithpan SE_M_STAT_INCREASE, 192 + playsewithpan SE_M_STAT_INCREASE, SOUND_PAN_ATTACKER createvisualtask AnimTask_StatusClearedEffect, 2, 1 waitforvisualfinish - playsewithpan SE_M_MORNING_SUN, 192 + playsewithpan SE_M_MORNING_SUN, SOUND_PAN_ATTACKER createsprite gSparklingStarsSpriteTemplate, ANIM_ATTACKER, 16, -15, 0, 0, 0, 32, 60, 1 delay 8 createsprite gSparklingStarsSpriteTemplate, ANIM_ATTACKER, 16, 12, -5, 0, 0, 32, 60, 1 waitforvisualfinish - playsewithpan SE_SHINY, 192 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 43, 3, 10, 0, 13293 + playsewithpan SE_SHINY, SOUND_PAN_ATTACKER + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_BG | F_PAL_ATK_SIDE | F_PAL_ANIM_1, 3, 10, 0, RGB(13, 31, 12) createsprite gBlendThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 16, 0, 0, 0, 1 waitforvisualfinish end -Move_FAKE_TEARS:: +Move_FAKE_TEARS: loadspritegfx ANIM_TAG_SMALL_BUBBLES loadspritegfx ANIM_TAG_THOUGHT_BUBBLE loadspritegfx ANIM_TAG_MUSIC_NOTES - createvisualtask AnimTask_BlendParticle, 5, 10155, 0, 4, 4, 32108 + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_SMALL_BUBBLES, 0, 4, 4, RGB(12, 11, 31) waitforvisualfinish - createvisualtask AnimTask_RockMonBackAndForth, 5, 0, 2, 1 - loopsewithpan SE_M_TAIL_WHIP, 192, 12, 4 + createvisualtask AnimTask_RockMonBackAndForth, 5, ANIM_ATTACKER, 2, 1 + loopsewithpan SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER, 12, 4 delay 8 createsprite gTearDropSpriteTemplate, ANIM_ATTACKER, 2, 0, 0 createsprite gTearDropSpriteTemplate, ANIM_ATTACKER, 2, 0, 1 @@ -4282,7 +4264,7 @@ Move_FAKE_TEARS:: waitforvisualfinish end -Move_AIR_CUTTER:: +Move_AIR_CUTTER: loadspritegfx ANIM_TAG_AIR_WAVE loadspritegfx ANIM_TAG_CUT loadspritegfx ANIM_TAG_IMPACT @@ -4290,42 +4272,42 @@ Move_AIR_CUTTER:: monbg ANIM_DEF_PARTNER setalpha 12, 8 delay 0 - createvisualtask AnimTask_AirCutterProjectile, 2, 32, -24, 1536, 2, 128 + createvisualtask AnimTask_AirCutterProjectile, 2, 32, -24, 6 * 256, 2, 128 @ 6 * 256 == Q_8_8(6) waitforvisualfinish - playsewithpan SE_M_CUT, 63 + playsewithpan SE_M_CUT, SOUND_PAN_TARGET createsprite gAirCutterSliceSpriteTemplate, ANIM_ATTACKER, 2, 40, -32, 0, 2 delay 5 - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 8, 1 - createvisualtask AnimTask_ShakeMon2, 2, 3, 2, 0, 8, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 8, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_DEF_PARTNER, 2, 0, 8, 1 waitforvisualfinish blendoff clearmonbg ANIM_DEF_PARTNER delay 0 end -Move_ODOR_SLEUTH:: - monbg 1 - createvisualtask AnimTask_OdorSleuthMovement, 5, +Move_ODOR_SLEUTH: + monbg ANIM_TARGET + createvisualtask AnimTask_OdorSleuthMovement, 5 delay 24 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 3, 4 - playsewithpan SE_M_SWAGGER, 192 + playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER delay 6 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 3, 4 - playsewithpan SE_M_SWAGGER, 192 + playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET delay 1 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, -1, 16, -1, 0 - playsewithpan SE_M_LEER, 192 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 1, RGB_WHITEALPHA, 16, RGB_WHITEALPHA, 0 + playsewithpan SE_M_LEER, SOUND_PAN_ATTACKER end -Move_GRASS_WHISTLE:: +Move_GRASS_WHISTLE: loadspritegfx ANIM_TAG_MUSIC_NOTES - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 4, 13298 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 4, RGB(18, 31, 12) waitforvisualfinish - createvisualtask AnimTask_MusicNotesRainbowBlend, 2, + createvisualtask AnimTask_MusicNotesRainbowBlend, 2 waitforvisualfinish - panse_1B SE_M_GRASSWHISTLE, 192, 63, 2, 0 + panse SE_M_GRASSWHISTLE, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0 createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 7, 1, 0 delay 5 createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 6, 1, 0 @@ -4351,60 +4333,60 @@ Move_GRASS_WHISTLE:: createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 5, 1, 0 delay 4 waitforvisualfinish - createvisualtask AnimTask_MusicNotesClearRainbowBlend, 2, - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 4, 4, 0, 13298 + createvisualtask AnimTask_MusicNotesClearRainbowBlend, 2 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 4, 4, 0, RGB(18, 31, 12) waitforvisualfinish end -Move_TICKLE:: +Move_TICKLE: loadspritegfx ANIM_TAG_EYE_SPARKLE - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, 0, 0, 16, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_ATTACKER, 0, 0, 16, RGB_BLACK waitforvisualfinish createsprite gEyeSparkleSpriteTemplate, ANIM_ATTACKER, 0, -16, -8 createsprite gEyeSparkleSpriteTemplate, ANIM_ATTACKER, 0, 16, -8 - playsewithpan SE_M_DETECT, 192 + playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, 0, 16, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_ATTACKER, 0, 16, 0, RGB_BLACK waitforvisualfinish delay 20 - createvisualtask AnimTask_SwayMon, 3, 0, 6, 1280, 3, 0 + createvisualtask AnimTask_SwayMon, 3, 0, 6, 1280, 3, ANIM_ATTACKER delay 12 - createvisualtask AnimTask_RockMonBackAndForth, 3, 1, 6, 2 - loopsewithpan SE_M_TAIL_WHIP, 63, 8, 8 + createvisualtask AnimTask_RockMonBackAndForth, 3, ANIM_TARGET, 6, 2 + loopsewithpan SE_M_TAIL_WHIP, SOUND_PAN_TARGET, 8, 8 waitforvisualfinish end -Move_WATER_SPOUT:: +Move_WATER_SPOUT: loadspritegfx ANIM_TAG_GLOWY_BLUE_ORB loadspritegfx ANIM_TAG_WATER_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 - createvisualtask AnimTask_WaterSpoutLaunch, 5, - playsewithpan SE_M_HEADBUTT, 192 + createvisualtask AnimTask_WaterSpoutLaunch, 5 + playsewithpan SE_M_HEADBUTT, SOUND_PAN_ATTACKER delay 44 - playsewithpan SE_M_DIVE, 192 + playsewithpan SE_M_DIVE, SOUND_PAN_ATTACKER waitforvisualfinish delay 16 - createvisualtask AnimTask_WaterSpoutRain, 5, - playsewithpan SE_M_SURF, 63 + createvisualtask AnimTask_WaterSpoutRain, 5 + playsewithpan SE_M_SURF, SOUND_PAN_TARGET clearmonbg ANIM_DEF_PARTNER blendoff end -Move_SHADOW_PUNCH:: +Move_SHADOW_PUNCH: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET - fadetobg 2 + fadetobg BG_GHOST waitbgfadein monbg ANIM_ATK_PARTNER setalpha 9, 8 - createvisualtask AnimTask_AttackerPunchWithTrace, 2, 0, 13 - playsewithpan SE_M_JUMP_KICK, 192 + createvisualtask AnimTask_AttackerPunchWithTrace, 2, RGB_BLACK, 13 + playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER delay 6 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 1 createsprite gFistFootSpriteTemplate, ANIM_TARGET, 4, 0, 0, 8, 1, 0 - playsewithpan SE_M_COMET_PUNCH, 63 - createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1 waitforvisualfinish clearmonbg ANIM_ATK_PARTNER blendoff @@ -4412,212 +4394,212 @@ Move_SHADOW_PUNCH:: waitbgfadein end -Move_EXTRASENSORY:: +Move_EXTRASENSORY: call SetPsychicBackground monbg ANIM_DEF_PARTNER setalpha 12, 8 - createvisualtask AnimTask_BlendMonInAndOut, 5, 0, 891, 12, 1, 1 + createvisualtask AnimTask_BlendMonInAndOut, 5, ANIM_ATTACKER, RGB(27, 27, 0), 12, 1, 1 createvisualtask AnimTask_ExtrasensoryDistortion, 5, 0 - playsewithpan SE_M_BIND, 63 + playsewithpan SE_M_BIND, SOUND_PAN_TARGET waitforvisualfinish - createvisualtask AnimTask_BlendMonInAndOut, 5, 0, 891, 12, 1, 1 + createvisualtask AnimTask_BlendMonInAndOut, 5, ANIM_ATTACKER, RGB(27, 27, 0), 12, 1, 1 createvisualtask AnimTask_ExtrasensoryDistortion, 5, 1 - playsewithpan SE_M_BIND, 63 + playsewithpan SE_M_BIND, SOUND_PAN_TARGET waitforvisualfinish createvisualtask AnimTask_TransparentCloneGrowAndShrink, 5, ANIM_ATTACKER createvisualtask AnimTask_ExtrasensoryDistortion, 5, 2 - playsewithpan SE_M_LEER, 192 + playsewithpan SE_M_LEER, SOUND_PAN_ATTACKER waitforvisualfinish blendoff clearmonbg ANIM_DEF_PARTNER - call UnsetPsychicBg + call UnsetPsychicBackground end -Move_AERIAL_ACE:: +Move_AERIAL_ACE: loadspritegfx ANIM_TAG_CUT - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 - createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 24, 6, 1, 5 - createvisualtask AnimTask_CloneBattlerSpriteWithBlend, 2, 0, 4, 7, 3 + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 24, 6, 1, 5 + createvisualtask AnimTask_TraceMonBlended, 2, 0, 4, 7, 3 createsprite gCuttingSliceSpriteTemplate, ANIM_ATTACKER, 2, 40, -32, 0 - playsewithpan SE_M_RAZOR_WIND2, 192 + playsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER delay 5 - createvisualtask AnimTask_ShakeMon, 2, 1, 0, 3, 10, 1 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, 0, 10, 0, 0 - playsewithpan SE_M_RAZOR_WIND, 63 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 10, 1 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB_BLACK, 10, RGB_BLACK, 0 + playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -Move_IRON_DEFENSE:: - loopsewithpan SE_SHINY, 192, 28, 2 +Move_IRON_DEFENSE: + loopsewithpan SE_SHINY, SOUND_PAN_ATTACKER, 28, 2 createvisualtask AnimTask_MetallicShine, 5, 0, 0, 0 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 8, 2, -1, 14, -1, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 8, 2, RGB_WHITEALPHA, 14, RGB_WHITEALPHA, 0 waitforvisualfinish end -Move_BLOCK:: +Move_BLOCK: loadspritegfx ANIM_TAG_X_SIGN - createsprite gBlockXSpriteTemplate, ANIM_TARGET, 66, - playsewithpan SE_M_SWAGGER, 63 + createsprite gBlockXSpriteTemplate, ANIM_TARGET, 66 + playsewithpan SE_M_SWAGGER, SOUND_PAN_TARGET end -Move_HOWL:: +Move_HOWL: loadspritegfx ANIM_TAG_NOISE_LINE createvisualtask AnimTask_DeepInhale, 2, 0 delay 12 call RoarEffect - createvisualtask SoundTask_PlayCryHighPitch, 2, 0, 3 + createvisualtask SoundTask_PlayCryHighPitch, 2, ANIM_ATTACKER, 3 waitforvisualfinish delay 30 end -Move_BULK_UP:: +Move_BULK_UP: loadspritegfx ANIM_TAG_BREATH - createvisualtask AnimTask_GrowAndShrink, 2, - playsewithpan SE_M_SWAGGER, 192 + createvisualtask AnimTask_GrowAndShrink, 2 + playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER waitforvisualfinish - createsprite gBreathPuffSpriteTemplate, ANIM_ATTACKER, 2, - loopsewithpan SE_M_SWAGGER, 192, 4, 2 + createsprite gBreathPuffSpriteTemplate, ANIM_ATTACKER, 2 + loopsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER, 4, 2 waitforvisualfinish end -Move_COVET:: +Move_COVET: loadspritegfx ANIM_TAG_MAGENTA_HEART loadspritegfx ANIM_TAG_ITEM_BAG - createvisualtask AnimTask_RockMonBackAndForth, 5, 0, 2, 0 + createvisualtask AnimTask_RockMonBackAndForth, 5, ANIM_ATTACKER, 2, 0 createsprite gMagentaHeartSpriteTemplate, ANIM_ATTACKER, 3, 0, 20 - playsewithpan SE_M_CHARM, 192 + playsewithpan SE_M_CHARM, SOUND_PAN_ATTACKER delay 15 createsprite gMagentaHeartSpriteTemplate, ANIM_ATTACKER, 3, -20, 20 - playsewithpan SE_M_CHARM, 192 + playsewithpan SE_M_CHARM, SOUND_PAN_ATTACKER delay 15 createsprite gMagentaHeartSpriteTemplate, ANIM_ATTACKER, 3, 20, 20 - playsewithpan SE_M_CHARM, 192 + playsewithpan SE_M_CHARM, SOUND_PAN_ATTACKER waitforvisualfinish - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 8, 1 - loopsewithpan SE_M_DIZZY_PUNCH, 63, 4, 3 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 8, 1 + loopsewithpan SE_M_DIZZY_PUNCH, SOUND_PAN_TARGET, 4, 3 end -Move_VOLT_TACKLE:: +Move_VOLT_TACKLE: loadspritegfx ANIM_TAG_SPARK loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT loadspritegfx ANIM_TAG_ELECTRICITY monbg ANIM_ATTACKER setalpha 12, 8 - createvisualtask AnimTask_BlendSelected, 10, 1, 0, 0, 8, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 0, 8, RGB_BLACK waitforvisualfinish createsprite gVoltTackleOrbSlideSpriteTemplate, ANIM_ATTACKER, 1 - playsewithpan SE_M_CHARGE, 192 + playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER waitforvisualfinish clearmonbg ANIM_ATTACKER blendoff delay 8 createvisualtask AnimTask_VoltTackleBolt, 5, 0 - playsewithpan SE_M_THUNDERBOLT, 192 + playsewithpan SE_M_THUNDERBOLT, SOUND_PAN_ATTACKER waitforvisualfinish createvisualtask AnimTask_VoltTackleBolt, 5, 1 - playsewithpan SE_M_THUNDERBOLT, 63 + playsewithpan SE_M_THUNDERBOLT, SOUND_PAN_TARGET waitforvisualfinish createvisualtask AnimTask_VoltTackleBolt, 5, 2 - playsewithpan SE_M_THUNDERBOLT, 192 + playsewithpan SE_M_THUNDERBOLT, SOUND_PAN_ATTACKER waitforvisualfinish createvisualtask AnimTask_VoltTackleBolt, 5, 3 - playsewithpan SE_M_THUNDERBOLT, 63 + playsewithpan SE_M_THUNDERBOLT, SOUND_PAN_TARGET waitforvisualfinish createvisualtask AnimTask_VoltTackleBolt, 5, 4 - playsewithpan SE_M_THUNDERBOLT, 192 + playsewithpan SE_M_THUNDERBOLT, SOUND_PAN_ATTACKER delay 8 - createvisualtask AnimTask_ShakeMon2, 2, 1, 10, 0, 18, 1 - playsewithpan SE_M_SELF_DESTRUCT, 63 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 10, 0, 18, 1 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET createsprite gElectricPuffSpriteTemplate, ANIM_ATTACKER, 2, 1, 16, 16 delay 2 createsprite gElectricPuffSpriteTemplate, ANIM_ATTACKER, 2, 1, -16, -16 delay 8 createvisualtask AnimTask_VoltTackleAttackerReappear, 5 waitforvisualfinish - createvisualtask AnimTask_ShakeMon2, 2, 0, 3, 0, 9, 1 - playsewithpan SE_M_THUNDERBOLT2, 192 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 3, 0, 9, 1 + playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER createsprite gElectricPuffSpriteTemplate, ANIM_ATTACKER, 2, 0, 16, 16 delay 2 createsprite gElectricPuffSpriteTemplate, ANIM_ATTACKER, 2, 0, -16, -16 waitforvisualfinish - createvisualtask AnimTask_BlendSelected, 10, 1, 0, 8, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 8, 0, RGB_BLACK waitforvisualfinish end -Move_WATER_SPORT:: +Move_WATER_SPORT: loadspritegfx ANIM_TAG_GLOWY_BLUE_ORB - createvisualtask AnimTask_WaterSport, 5, + createvisualtask AnimTask_WaterSport, 5 delay 8 - playsewithpan SE_M_SURF, 192 + playsewithpan SE_M_SURF, SOUND_PAN_ATTACKER delay 44 - playsewithpan SE_M_SURF, 192 + playsewithpan SE_M_SURF, SOUND_PAN_ATTACKER delay 44 - playsewithpan SE_M_SURF, 192 + playsewithpan SE_M_SURF, SOUND_PAN_ATTACKER delay 44 - panse_1B SE_M_SURF, 192, 63, 2, 0 + panse SE_M_SURF, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0 end -Move_CALM_MIND:: +Move_CALM_MIND: loadspritegfx ANIM_TAG_THIN_RING monbg ANIM_ATK_PARTNER - createvisualtask AnimTask_BlendExcept, 5, 0, 0, 0, 16, 0 + createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, ANIM_ATTACKER, 0, 0, 16, RGB_BLACK waitforvisualfinish - createvisualtask AnimTask_SetAllNonAttackersInvisiblity, 5, 1 + createvisualtask AnimTask_SetAllNonAttackersInvisiblity, 5, TRUE waitforvisualfinish createsprite gThinRingShrinkingSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, 0, 0 - playsewithpan SE_M_SUPERSONIC, 192 + playsewithpan SE_M_SUPERSONIC, SOUND_PAN_ATTACKER delay 14 createsprite gThinRingShrinkingSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, 0, 0 - playsewithpan SE_M_SUPERSONIC, 192 + playsewithpan SE_M_SUPERSONIC, SOUND_PAN_ATTACKER delay 14 createsprite gThinRingShrinkingSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, 0, 0 - playsewithpan SE_M_SUPERSONIC, 192 + playsewithpan SE_M_SUPERSONIC, SOUND_PAN_ATTACKER waitforvisualfinish - createvisualtask AnimTask_SetAllNonAttackersInvisiblity, 5, 0 - visible 0 + createvisualtask AnimTask_SetAllNonAttackersInvisiblity, 5, FALSE + visible ANIM_ATTACKER @ Redundant waitforvisualfinish - createvisualtask AnimTask_BlendExcept, 5, 0, 0, 16, 0, 0 + createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, ANIM_ATTACKER, 0, 16, 0, RGB_BLACK waitforvisualfinish clearmonbg ANIM_ATK_PARTNER end -Move_LEAF_BLADE:: +Move_LEAF_BLADE: loadspritegfx ANIM_TAG_LEAF loadspritegfx ANIM_TAG_CROSS_IMPACT - createvisualtask AnimTask_LeafBlade, 5, + createvisualtask AnimTask_LeafBlade, 5 delay 2 - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 8, 1 - playsewithpan SE_M_CUT, 63 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 8, 1 + playsewithpan SE_M_CUT, SOUND_PAN_TARGET delay 50 - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 8, 1 - playsewithpan SE_M_CUT, 63 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 8, 1 + playsewithpan SE_M_CUT, SOUND_PAN_TARGET delay 50 - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 8, 1 - playsewithpan SE_M_CUT, 63 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 8, 1 + playsewithpan SE_M_CUT, SOUND_PAN_TARGET waitforvisualfinish - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 delay 12 - createvisualtask AnimTask_ShakeMon2, 2, 1, 8, 0, 18, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 8, 0, 18, 1 createsprite gCrossImpactSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 36 - playsewithpan SE_M_LEER, 63 + playsewithpan SE_M_LEER, SOUND_PAN_TARGET waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -Move_DRAGON_DANCE:: +Move_DRAGON_DANCE: loadspritegfx ANIM_TAG_HOLLOW_ORB monbg ANIM_ATTACKER - monbgprio_28 0 + splitbgprio ANIM_ATTACKER delay 1 createvisualtask AnimTask_DragonDanceWaver, 5 - playsewithpan SE_M_TELEPORT, 192 + playsewithpan SE_M_TELEPORT, SOUND_PAN_ATTACKER delay 8 - createvisualtask AnimTask_BlendPalInAndOutByTag, 5, 10249, 19456, 14, 0, 3 + createvisualtask AnimTask_BlendPalInAndOutByTag, 5, ANIM_TAG_HOLLOW_ORB, RGB(0, 0, 19), 14, 0, 3 createsprite gDragonDanceOrbSpriteTemplate, ANIM_ATTACKER, 2, 0 createsprite gDragonDanceOrbSpriteTemplate, ANIM_ATTACKER, 2, 43 createsprite gDragonDanceOrbSpriteTemplate, ANIM_ATTACKER, 2, 85 @@ -4625,110 +4607,110 @@ Move_DRAGON_DANCE:: createsprite gDragonDanceOrbSpriteTemplate, ANIM_ATTACKER, 2, 170 createsprite gDragonDanceOrbSpriteTemplate, ANIM_ATTACKER, 2, 213 delay 30 - playsewithpan SE_M_TELEPORT, 192 + playsewithpan SE_M_TELEPORT, SOUND_PAN_ATTACKER delay 30 - playsewithpan SE_M_TELEPORT, 192 + playsewithpan SE_M_TELEPORT, SOUND_PAN_ATTACKER waitforvisualfinish clearmonbg ANIM_ATTACKER delay 1 end -Move_SHOCK_WAVE:: +Move_SHOCK_WAVE: loadspritegfx ANIM_TAG_ELECTRIC_ORBS loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT loadspritegfx ANIM_TAG_SPARK loadspritegfx ANIM_TAG_LIGHTNING monbg ANIM_ATTACKER setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 4, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 4, RGB_BLACK waitforvisualfinish - createvisualtask AnimTask_ElectricChargingParticles, 2, 0, 20, 0, 2 - playsewithpan SE_M_CHARGE, 192 + createvisualtask AnimTask_ElectricChargingParticles, 2, ANIM_ATTACKER, 20, 0, 2 + playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER delay 12 createsprite gGrowingShockWaveOrbSpriteTemplate, ANIM_ATTACKER, 2 delay 30 - createvisualtask AnimTask_ShockWaveProgressingBolt, 5, + createvisualtask AnimTask_ShockWaveProgressingBolt, 5 delay 12 waitforvisualfinish - createvisualtask AnimTask_ShockWaveLightning, 5, - playsewithpan SE_M_TRI_ATTACK2, 63 + createvisualtask AnimTask_ShockWaveLightning, 5 + playsewithpan SE_M_TRI_ATTACK2, SOUND_PAN_TARGET waitforvisualfinish - createvisualtask AnimTask_ShakeMon, 2, 1, 0, 6, 18, 1 - createvisualtask AnimTask_BlendSelected, 5, 1, 3, 16, 0, RGB_WHITE - createvisualtask AnimTask_BlendSelected, 5, 4, 0, 16, 16, RGB_BLACK + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 6, 18, 1 + createvisualtask AnimTask_BlendBattleAnimPal, 5, F_PAL_BG, 3, 16, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 5, F_PAL_TARGET, 0, 16, 16, RGB_BLACK delay 4 - createvisualtask AnimTask_BlendSelected, 5, 4, 0, 0, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 5, F_PAL_TARGET, 0, 0, 0, RGB_BLACK waitforvisualfinish clearmonbg ANIM_ATTACKER blendoff end -Move_HARDEN:: - loopsewithpan SE_M_HARDEN, 192, 28, 2 +Move_HARDEN: + loopsewithpan SE_M_HARDEN, SOUND_PAN_ATTACKER, 28, 2 createvisualtask AnimTask_MetallicShine, 5, 0, 0, 0 waitforvisualfinish end -Move_BELLY_DRUM:: +Move_BELLY_DRUM: loadspritegfx ANIM_TAG_MUSIC_NOTES loadspritegfx ANIM_TAG_PURPLE_HAND_OUTLINE - createvisualtask AnimTask_MusicNotesRainbowBlend, 2, + createvisualtask AnimTask_MusicNotesRainbowBlend, 2 waitforvisualfinish call BellyDrumRight createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 0, 0 - playsewithpan SE_M_BELLY_DRUM, 192 + playsewithpan SE_M_BELLY_DRUM, SOUND_PAN_ATTACKER delay 15 call BellyDrumLeft createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 1, 0 - playsewithpan SE_M_BELLY_DRUM, 192 + playsewithpan SE_M_BELLY_DRUM, SOUND_PAN_ATTACKER delay 15 call BellyDrumRight createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0, 3, 3, 128 - playsewithpan SE_M_BELLY_DRUM, 192 + playsewithpan SE_M_BELLY_DRUM, SOUND_PAN_ATTACKER delay 7 call BellyDrumLeft createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 128 - playsewithpan SE_M_BELLY_DRUM, 192 + playsewithpan SE_M_BELLY_DRUM, SOUND_PAN_ATTACKER delay 7 call BellyDrumRight createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0, 1, 1, 0 - playsewithpan SE_M_BELLY_DRUM, 192 + playsewithpan SE_M_BELLY_DRUM, SOUND_PAN_ATTACKER delay 7 call BellyDrumLeft createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 3, 0 - playsewithpan SE_M_BELLY_DRUM, 192 + playsewithpan SE_M_BELLY_DRUM, SOUND_PAN_ATTACKER waitforvisualfinish - createvisualtask AnimTask_MusicNotesClearRainbowBlend, 2, + createvisualtask AnimTask_MusicNotesClearRainbowBlend, 2 waitforvisualfinish end -BellyDrumLeft:: +BellyDrumLeft: createsprite gBellyDrumHandSpriteTemplate, ANIM_ATTACKER, 3, 0 - createvisualtask AnimTask_ShakeMon, 2, 0, 0, 8, 2, 1 + createvisualtask AnimTask_ShakeMon, 2, ANIM_ATTACKER, 0, 8, 2, 1 return -BellyDrumRight:: +BellyDrumRight: createsprite gBellyDrumHandSpriteTemplate, ANIM_ATTACKER, 3, 1 - createvisualtask AnimTask_ShakeMon, 2, 0, 0, 8, 2, 1 + createvisualtask AnimTask_ShakeMon, 2, ANIM_ATTACKER, 0, 8, 2, 1 return -Move_MIND_READER:: +Move_MIND_READER: loadspritegfx ANIM_TAG_TEAL_ALERT loadspritegfx ANIM_TAG_OPENING_EYE loadspritegfx ANIM_TAG_ROUND_WHITE_HALO monbg 4 - playsewithpan SE_M_CONFUSE_RAY, 63 + playsewithpan SE_M_CONFUSE_RAY, SOUND_PAN_TARGET createsprite gOpeningEyeSpriteTemplate, ANIM_ATTACKER, 5, 0, 0, 1, 0 - createsprite gWhiteHaloSpriteTemplate, ANIM_ATTACKER, 5, + createsprite gWhiteHaloSpriteTemplate, ANIM_ATTACKER, 5 delay 40 - playsewithpan SE_M_LEER, 63 - createvisualtask AnimTask_CurseBlendEffect, 2, 1, 1, 2, 0, 10, 0 + playsewithpan SE_M_LEER, SOUND_PAN_TARGET + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG, 1, 2, 0, 10, RGB_BLACK call MindReaderEyeSpikeEffect waitforvisualfinish clearmonbg 4 end -MindReaderEyeSpikeEffect:: +MindReaderEyeSpikeEffect: createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 70, 0, 6 createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 40, 40, 6 createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 10, -60, 6 @@ -4752,16 +4734,16 @@ MindReaderEyeSpikeEffect:: delay 2 return -Move_ICE_PUNCH:: +Move_ICE_PUNCH: monbg ANIM_DEF_PARTNER setalpha 12, 8 loadspritegfx ANIM_TAG_ICE_CRYSTALS loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 7, 0 - createvisualtask AnimTask_BlendSelected, 10, 4, 2, 0, 9, RGB(12, 26, 31) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 7, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 9, RGB(12, 26, 31) delay 20 - playsewithpan SE_M_STRING_SHOT, 63 + playsewithpan SE_M_STRING_SHOT, SOUND_PAN_TARGET createsprite gIceCrystalSpiralInwardSmall, ANIM_ATTACKER, 2, 0 createsprite gIceCrystalSpiralInwardSmall, ANIM_ATTACKER, 2, 64 createsprite gIceCrystalSpiralInwardSmall, ANIM_ATTACKER, 2, 128 @@ -4773,24 +4755,24 @@ Move_ICE_PUNCH:: createsprite gIceCrystalSpiralInwardLarge, ANIM_ATTACKER, 2, 224 delay 17 createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 4, 0, -10, 8, 1, 0 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, -10, 1, 1 - playsewithpan SE_M_COMET_PUNCH, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, -10, ANIM_TARGET, 1 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 2 - createvisualtask AnimTask_ShakeMon, 5, 1, 0, 5, 3, 1 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 5, 3, 1 waitforvisualfinish delay 15 call IceCrystalEffectShort delay 5 - createvisualtask AnimTask_BlendSelected, 10, 4, 2, 9, 0, RGB(12, 26, 31) + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 9, 0, RGB(12, 26, 31) waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 7, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 0, 7, 0, RGB_BLACK waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -Move_REST:: - playsewithpan SE_M_SNORE, 192 +Move_REST: + playsewithpan SE_M_SNORE, SOUND_PAN_ATTACKER loadspritegfx ANIM_TAG_LETTER_Z createsprite gSleepLetterZSpriteTemplate, ANIM_ATTACKER, 2, 4, -10, 16, 0, 0 delay 20 @@ -4800,85 +4782,88 @@ Move_REST:: waitforvisualfinish end -Move_CONFUSION:: +Move_CONFUSION: monbg ANIM_DEF_PARTNER call SetPsychicBackground setalpha 8, 8 - createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 10, 1 - createvisualtask AnimTask_CurseBlendEffect, 2, 2, 0, 2, 0, 8, RGB_WHITE + createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 10, 1 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 0, 2, 0, 8, RGB_WHITE waitforvisualfinish - playsewithpan SE_M_SUPERSONIC, 63 - createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 15, 1 - createvisualtask AnimTask_ScaleMonAndRestore, 5, -4, -4, 15, 1, 1 + playsewithpan SE_M_SUPERSONIC, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 15, 1 + createvisualtask AnimTask_ScaleMonAndRestore, 5, -4, -4, 15, ANIM_TARGET, 1 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff delay 1 - call UnsetPsychicBg + call UnsetPsychicBackground end -Move_PSYCHIC:: +Move_PSYCHIC: monbg ANIM_DEF_PARTNER call SetPsychicBackground setalpha 8, 8 - createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 10, 1 - createvisualtask AnimTask_CurseBlendEffect, 2, 2, 0, 2, 0, 8, 767 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 10, 1 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 0, 2, 0, 8, RGB(31, 23, 0) waitforvisualfinish - loopsewithpan SE_M_SUPERSONIC, 63, 10, 3 - createvisualtask AnimTask_ShakeMon, 2, 1, 5, 0, 15, 1 - createvisualtask AnimTask_ScaleMonAndRestore, 5, -6, -6, 15, 1, 1 + loopsewithpan SE_M_SUPERSONIC, SOUND_PAN_TARGET, 10, 3 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 15, 1 + createvisualtask AnimTask_ScaleMonAndRestore, 5, -6, -6, 15, ANIM_TARGET, 1 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff delay 1 - call UnsetPsychicBg + call UnsetPsychicBackground end -Move_FUTURE_SIGHT:: +Move_FUTURE_SIGHT: goto FutureSight -FutureSightContinue:: + +FutureSightContinue: waitforvisualfinish delay 1 - call UnsetPsychicBg + call UnsetPsychicBackground end -FutureSight:: +FutureSight: monbg ANIM_ATK_PARTNER - playsewithpan SE_M_PSYBEAM, 192 + playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER call SetPsychicBackground setalpha 8, 8 - playsewithpan SE_M_SUPERSONIC, 192 - createvisualtask AnimTask_CurseBlendEffect, 2, 2, 0, 2, 0, 8, RGB_WHITE - createvisualtask AnimTask_ScaleMonAndRestore, 5, -4, -4, 15, 0, 1 + playsewithpan SE_M_SUPERSONIC, SOUND_PAN_ATTACKER + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 0, 2, 0, 8, RGB_WHITE + createvisualtask AnimTask_ScaleMonAndRestore, 5, -4, -4, 15, ANIM_ATTACKER, 1 waitforvisualfinish clearmonbg ANIM_ATK_PARTNER blendoff goto FutureSightContinue + +UnusedFutureSightHit: monbg ANIM_DEF_PARTNER - playsewithpan SE_M_PSYBEAM, 192 + playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER call SetPsychicBackground setalpha 8, 8 - playsewithpan SE_M_SUPERSONIC, 63 - waitplaysewithpan SE_M_SUPERSONIC, 63, 8 - createvisualtask AnimTask_ShakeMon, 2, 1, 4, 0, 15, 1 - createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 15, 1, 1 + playsewithpan SE_M_SUPERSONIC, SOUND_PAN_TARGET + waitplaysewithpan SE_M_SUPERSONIC, SOUND_PAN_TARGET, 8 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 4, 0, 15, 1 + createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 15, ANIM_TARGET, 1 waitforvisualfinish - createvisualtask AnimTask_ShakeMon, 2, 1, 4, 0, 24, 1 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 4, 0, 24, 1 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff goto FutureSightContinue -Move_THUNDER:: +Move_THUNDER: loadspritegfx ANIM_TAG_LIGHTNING - fadetobg 11 + fadetobg BG_THUNDER waitbgfadeout createvisualtask AnimTask_StartSlidingBg, 5, -256, 0, 1, -1 waitbgfadein - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 16, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 16, RGB_BLACK delay 16 createvisualtask AnimTask_InvertScreenColor, 2, 257, 257, 257 - playsewithpan SE_M_THUNDER_WAVE, 63 + playsewithpan SE_M_THUNDER_WAVE, SOUND_PAN_TARGET delay 1 createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 16, -36 delay 1 @@ -4887,12 +4872,12 @@ Move_THUNDER:: createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 16, 12 delay 20 createsprite gLightningSpriteTemplate, ANIM_TARGET, 6, -16, -32 - playsewithpan SE_M_THUNDER_WAVE, 63 + playsewithpan SE_M_THUNDER_WAVE, SOUND_PAN_TARGET delay 1 createsprite gLightningSpriteTemplate, ANIM_TARGET, 6, -16, -16 delay 1 createsprite gLightningSpriteTemplate, ANIM_TARGET, 6, -16, 16 - playsewithpan SE_M_THUNDER_WAVE, 63 + playsewithpan SE_M_THUNDER_WAVE, SOUND_PAN_TARGET delay 5 createvisualtask AnimTask_InvertScreenColor, 2, 257, 257, 257 delay 1 @@ -4907,7 +4892,7 @@ Move_THUNDER:: createvisualtask AnimTask_InvertScreenColor, 2, 257, 257, 257 delay 1 createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 0, -32 - playsewithpan SE_M_TRI_ATTACK2, 63 + playsewithpan SE_M_TRI_ATTACK2, SOUND_PAN_TARGET delay 1 createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 0, -16 delay 1 @@ -4915,29 +4900,29 @@ Move_THUNDER:: delay 10 createvisualtask AnimTask_InvertScreenColor, 2, 257, 257, 257 delay 1 - createvisualtask AnimTask_ShakeTargetInPattern, 2, 30, 3, 1, 0 + createvisualtask AnimTask_ShakeTargetInPattern, 2, 30, 3, TRUE, 0 delay 2 createvisualtask AnimTask_InvertScreenColor, 2, 257, 257, 257 delay 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_TARGET, 2, 1, 2, 16, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_TARGET, 2, F_PAL_BG, 2, 16, 0, RGB_BLACK waitforvisualfinish restorebg waitbgfadeout - setarg 7, 65535 + setarg 7, 0xFFFF waitbgfadein end -Move_THUNDER_PUNCH:: +Move_THUNDER_PUNCH: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_LIGHTNING - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 16, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 16, RGB_BLACK waitforvisualfinish - playsewithpan SE_M_COMET_PUNCH, 63 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET createsprite gFistFootSpriteTemplate, ANIM_TARGET, 4, 0, 0, 8, 1, 0 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 1 delay 1 createvisualtask AnimTask_InvertScreenColor, 2, 257, 257, 257 delay 1 @@ -4947,23 +4932,23 @@ Move_THUNDER_PUNCH:: delay 1 createsprite gLightningSpriteTemplate, ANIM_ATTACKER, 2, 0, 16 delay 1 - playsewithpan SE_M_TRI_ATTACK2, 63 + playsewithpan SE_M_TRI_ATTACK2, SOUND_PAN_TARGET createvisualtask AnimTask_InvertScreenColor, 2, 257, 257, 257 delay 2 - createvisualtask AnimTask_ShakeMon, 2, 1, 0, 3, 15, 1 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 2 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 15, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 2 delay 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 16, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 16, 0, RGB_BLACK delay 20 waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -Move_SACRED_FIRE:: +Move_SACRED_FIRE: loadspritegfx ANIM_TAG_FIRE loadspritegfx ANIM_TAG_FIRE_PLUME - loopsewithpan SE_M_SACRED_FIRE, 192, 7, 5 + loopsewithpan SE_M_SACRED_FIRE, SOUND_PAN_ATTACKER, 7, 5 createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, -32, 0, 50, 5, -2, 0 delay 1 createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 66, -20, -10, 50, 5, -1, -1 @@ -4984,13 +4969,13 @@ Move_SACRED_FIRE:: createvisualtask AnimTask_InvertScreenColor, 2, 257, 257, 257 delay 1 waitforvisualfinish - playsewithpan SE_M_SACRED_FIRE2, 63 + playsewithpan SE_M_SACRED_FIRE2, SOUND_PAN_TARGET createsprite gLargeFlameSpriteTemplate, ANIM_TARGET, 2, -16, 0, 70, 16, 0, 1 delay 10 - playsewithpan SE_M_SACRED_FIRE2, 63 + playsewithpan SE_M_SACRED_FIRE2, SOUND_PAN_TARGET createsprite gLargeFlameSpriteTemplate, ANIM_TARGET, 2, 0, 0, 70, 16, 0, 1 delay 10 - playsewithpan SE_M_SACRED_FIRE2, 63 + playsewithpan SE_M_SACRED_FIRE2, SOUND_PAN_TARGET createsprite gLargeFlameSpriteTemplate, ANIM_TARGET, 2, 16, 0, 80, 16, 0, 1 delay 1 createvisualtask AnimTask_InvertScreenColor, 2, 257, 257, 257 @@ -4998,7 +4983,7 @@ Move_SACRED_FIRE:: waitforvisualfinish createvisualtask AnimTask_InvertScreenColor, 2, 257, 257, 257 delay 1 - playsewithpan SE_M_FLAME_WHEEL2, 63 + playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_TARGET createsprite gLargeFlameScatterSpriteTemplate, ANIM_TARGET, 2, 0, 0, 30, 30, -1, 0 delay 1 createsprite gLargeFlameScatterSpriteTemplate, ANIM_TARGET, 2, 0, 0, 30, 30, 0, 1 @@ -5017,32 +5002,32 @@ Move_SACRED_FIRE:: waitforvisualfinish end -Move_SCRATCH:: +Move_SCRATCH: loadspritegfx ANIM_TAG_SCRATCH - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 - playsewithpan SE_M_SCRATCH, 63 + playsewithpan SE_M_SCRATCH, SOUND_PAN_TARGET createsprite gScratchSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 0 - createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1 waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff waitforvisualfinish end -Move_DRAGON_BREATH:: +Move_DRAGON_BREATH: loadspritegfx ANIM_TAG_SMALL_EMBER monbg ANIM_DEF_PARTNER - monbgprio_28 1 - loopsewithpan SE_M_FLAME_WHEEL, 192, 7, 7 + splitbgprio ANIM_TARGET + loopsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER, 7, 7 createsprite gDragonBreathFireSpriteTemplate, ANIM_TARGET, 2, 0, 0, 0, 0, 20 delay 2 createsprite gDragonBreathFireSpriteTemplate, ANIM_TARGET, 2, 0, 0, 0, 0, 20 delay 2 - createvisualtask AnimTask_BlendSelected, 10, 4, 1, 0, 9, RGB(31, 0, 0) + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 1, 0, 9, RGB_RED createsprite gDragonBreathFireSpriteTemplate, ANIM_TARGET, 2, 0, 0, 0, 0, 20 delay 2 - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 21, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 21, 1 createsprite gDragonBreathFireSpriteTemplate, ANIM_TARGET, 2, 0, 0, 0, 0, 20 delay 2 createsprite gDragonBreathFireSpriteTemplate, ANIM_TARGET, 2, 0, 0, 0, 0, 20 @@ -5059,30 +5044,30 @@ Move_DRAGON_BREATH:: delay 2 createsprite gDragonBreathFireSpriteTemplate, ANIM_TARGET, 2, 0, 0, 0, 0, 20 waitforvisualfinish - createvisualtask AnimTask_BlendSelected, 10, 4, 1, 9, 0, RGB(31, 0, 0) + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 1, 9, 0, RGB_RED waitforvisualfinish clearmonbg ANIM_DEF_PARTNER end -Move_ROAR:: +Move_ROAR: loadspritegfx ANIM_TAG_NOISE_LINE monbg ANIM_ATTACKER - monbgprio_28 0 + splitbgprio ANIM_ATTACKER setalpha 8, 8 - createvisualtask SoundTask_PlayDoubleCry, 2, 0, DOUBLE_CRY_ROAR - createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 10, 0, 1 + createvisualtask SoundTask_PlayDoubleCry, 2, ANIM_ATTACKER, DOUBLE_CRY_ROAR + createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 10, ANIM_ATTACKER, 1 call RoarEffect delay 20 - createvisualtask AnimTask_SlideOffScreen, 5, 1, 2 + createvisualtask AnimTask_SlideOffScreen, 5, ANIM_TARGET, 2 waitforvisualfinish clearmonbg ANIM_ATTACKER blendoff waitforvisualfinish - createvisualtask SoundTask_WaitForCry, 5, + createvisualtask SoundTask_WaitForCry, 5 waitforvisualfinish end -RoarEffect:: +RoarEffect: createsprite gRoarNoiseLineSpriteTemplate, ANIM_ATTACKER, 2, 24, -8, 0 createsprite gRoarNoiseLineSpriteTemplate, ANIM_ATTACKER, 2, 24, 0, 2 createsprite gRoarNoiseLineSpriteTemplate, ANIM_ATTACKER, 2, 24, 8, 1 @@ -5092,19 +5077,19 @@ RoarEffect:: createsprite gRoarNoiseLineSpriteTemplate, ANIM_ATTACKER, 2, 24, 8, 1 return -Move_GROWL:: +Move_GROWL: loadspritegfx ANIM_TAG_NOISE_LINE - createvisualtask SoundTask_PlayDoubleCry, 2, 0, DOUBLE_CRY_GROWL + createvisualtask SoundTask_PlayDoubleCry, 2, ANIM_ATTACKER, DOUBLE_CRY_GROWL call RoarEffect delay 10 - createvisualtask AnimTask_ShakeMon2, 2, 1, 1, 0, 9, 1 - createvisualtask AnimTask_ShakeMon2, 2, 3, 1, 0, 9, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 1, 0, 9, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_DEF_PARTNER, 1, 0, 9, 1 waitforvisualfinish - createvisualtask SoundTask_WaitForCry, 5, + createvisualtask SoundTask_WaitForCry, 5 waitforvisualfinish end -Move_SNORE:: +Move_SNORE: loadspritegfx ANIM_TAG_SNORE_Z monbg ANIM_ATK_PARTNER setalpha 8, 8 @@ -5116,22 +5101,22 @@ Move_SNORE:: blendoff end -SnoreEffect:: - playsewithpan SE_M_SNORE, 192 - createvisualtask AnimTask_ScaleMonAndRestore, 5, -7, -7, 7, 0, 1 - createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 7, 1 +SnoreEffect: + playsewithpan SE_M_SNORE, SOUND_PAN_ATTACKER + createvisualtask AnimTask_ScaleMonAndRestore, 5, -7, -7, 7, ANIM_ATTACKER, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 7, 1 createsprite gShakeMonOrTerrainSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, 14, 0, 0 createsprite gSnoreZSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, -42, -38, 24, 0, 0 createsprite gSnoreZSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 0, -42, 24, 0, 0 createsprite gSnoreZSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 42, -38, 24, 0, 0 return -Move_LIGHT_SCREEN:: +Move_LIGHT_SCREEN: loadspritegfx ANIM_TAG_SPARKLE_3 loadspritegfx ANIM_TAG_GREEN_LIGHT_WALL setalpha 0, 16 - waitplaysewithpan SE_M_REFLECT, 192, 15 - createsprite gLightScreenWallSpriteTemplate, ANIM_ATTACKER, 1, 40, 0, 10166 + waitplaysewithpan SE_M_REFLECT, SOUND_PAN_ATTACKER, 15 + createsprite gLightScreenWallSpriteTemplate, ANIM_ATTACKER, 1, 40, 0, ANIM_TAG_GREEN_LIGHT_WALL delay 10 call SpecialScreenSparkle waitforvisualfinish @@ -5139,102 +5124,102 @@ Move_LIGHT_SCREEN:: blendoff end -SpecialScreenSparkle:: - createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 23, 0, 0, 1 +SpecialScreenSparkle: + createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 23, 0, ANIM_ATTACKER, TRUE delay 6 - createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 31, -8, 0, 1 + createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 31, -8, ANIM_ATTACKER, TRUE delay 5 - createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 30, 20, 0, 1 + createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 30, 20, ANIM_ATTACKER, TRUE delay 7 - createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 10, -15, 0, 1 + createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 10, -15, ANIM_ATTACKER, TRUE delay 6 - createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 20, 10, 0, 1 + createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 20, 10, ANIM_ATTACKER, TRUE delay 6 - createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 10, 18, 0, 1 + createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 10, 18, ANIM_ATTACKER, TRUE return -Move_MIRROR_COAT:: +Move_MIRROR_COAT: loadspritegfx ANIM_TAG_SPARKLE_3 loadspritegfx ANIM_TAG_RED_LIGHT_WALL setalpha 0, 16 - createsprite gMirrorCoatWallSpriteTemplate, ANIM_ATTACKER, 1, 40, 0, 10168 + createsprite gMirrorCoatWallSpriteTemplate, ANIM_ATTACKER, 1, 40, 0, ANIM_TAG_RED_LIGHT_WALL delay 10 - playsewithpan SE_M_REFLECT, 192 + playsewithpan SE_M_REFLECT, SOUND_PAN_ATTACKER call SpecialScreenSparkle waitforvisualfinish delay 1 blendoff end -Move_REFLECT:: +Move_REFLECT: loadspritegfx ANIM_TAG_SPARKLE_4 loadspritegfx ANIM_TAG_BLUE_LIGHT_WALL setalpha 0, 16 - waitplaysewithpan SE_M_REFLECT, 192, 15 - createsprite gReflectWallSpriteTemplate, ANIM_ATTACKER, 1, 40, 0, 10167 + waitplaysewithpan SE_M_REFLECT, SOUND_PAN_ATTACKER, 15 + createsprite gReflectWallSpriteTemplate, ANIM_ATTACKER, 1, 40, 0, ANIM_TAG_BLUE_LIGHT_WALL delay 20 - createsprite gReflectSparkleSpriteTemplate, ANIM_ATTACKER, 2, 30, 0, 0, 1 + createsprite gReflectSparkleSpriteTemplate, ANIM_ATTACKER, 2, 30, 0, ANIM_ATTACKER, TRUE delay 7 - createsprite gReflectSparkleSpriteTemplate, ANIM_ATTACKER, 2, 19, -12, 0, 1 + createsprite gReflectSparkleSpriteTemplate, ANIM_ATTACKER, 2, 19, -12, ANIM_ATTACKER, TRUE delay 7 - createsprite gReflectSparkleSpriteTemplate, ANIM_ATTACKER, 2, 10, 20, 0, 1 + createsprite gReflectSparkleSpriteTemplate, ANIM_ATTACKER, 2, 10, 20, ANIM_ATTACKER, TRUE waitforvisualfinish delay 1 blendoff end -Move_BARRIER:: +Move_BARRIER: loadspritegfx ANIM_TAG_GRAY_LIGHT_WALL setalpha 0, 16 - waitplaysewithpan SE_M_BARRIER, 192, 15 - createsprite gBarrierWallSpriteTemplate, ANIM_ATTACKER, 3, 40, 0, 10169 + waitplaysewithpan SE_M_BARRIER, SOUND_PAN_ATTACKER, 15 + createsprite gBarrierWallSpriteTemplate, ANIM_ATTACKER, 3, 40, 0, ANIM_TAG_GRAY_LIGHT_WALL waitforvisualfinish delay 1 blendoff end -Move_BUBBLE:: +Move_BUBBLE: loadspritegfx ANIM_TAG_BUBBLE loadspritegfx ANIM_TAG_SMALL_BUBBLES - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 delay 1 createsprite gWaterBubbleProjectileSpriteTemplate, ANIM_ATTACKER, 2, 18, 0, 15, -15, 10, 128, 100 - playsewithpan SE_M_BUBBLE, 192 - waitplaysewithpan SE_M_BUBBLE2, 63, 100 + playsewithpan SE_M_BUBBLE, SOUND_PAN_ATTACKER + waitplaysewithpan SE_M_BUBBLE2, SOUND_PAN_TARGET, 100 delay 6 createsprite gWaterBubbleProjectileSpriteTemplate, ANIM_ATTACKER, 2, 18, 0, 35, 37, 40, 128, 100 - playsewithpan SE_M_BUBBLE, 192 - waitplaysewithpan SE_M_BUBBLE2, 63, 100 + playsewithpan SE_M_BUBBLE, SOUND_PAN_ATTACKER + waitplaysewithpan SE_M_BUBBLE2, SOUND_PAN_TARGET, 100 delay 6 createsprite gWaterBubbleProjectileSpriteTemplate, ANIM_ATTACKER, 2, 18, 0, 10, -37, 30, 128, 100 - playsewithpan SE_M_BUBBLE, 192 - waitplaysewithpan SE_M_BUBBLE2, 63, 100 + playsewithpan SE_M_BUBBLE, SOUND_PAN_ATTACKER + waitplaysewithpan SE_M_BUBBLE2, SOUND_PAN_TARGET, 100 delay 6 createsprite gWaterBubbleProjectileSpriteTemplate, ANIM_ATTACKER, 2, 18, 0, 30, 10, 15, 128, 100 - playsewithpan SE_M_BUBBLE, 192 - waitplaysewithpan SE_M_BUBBLE2, 63, 100 + playsewithpan SE_M_BUBBLE, SOUND_PAN_ATTACKER + waitplaysewithpan SE_M_BUBBLE2, SOUND_PAN_TARGET, 100 delay 6 createsprite gWaterBubbleProjectileSpriteTemplate, ANIM_ATTACKER, 2, 18, 0, 20, 33, 20, 128, 100 - playsewithpan SE_M_BUBBLE, 192 - waitplaysewithpan SE_M_BUBBLE2, 63, 100 + playsewithpan SE_M_BUBBLE, SOUND_PAN_ATTACKER + waitplaysewithpan SE_M_BUBBLE2, SOUND_PAN_TARGET, 100 delay 6 createsprite gWaterBubbleProjectileSpriteTemplate, ANIM_ATTACKER, 2, 18, 0, 25, -30, 10, 128, 100 - playsewithpan SE_M_BUBBLE, 192 - waitplaysewithpan SE_M_BUBBLE2, 63, 100 + playsewithpan SE_M_BUBBLE, SOUND_PAN_ATTACKER + waitplaysewithpan SE_M_BUBBLE2, SOUND_PAN_TARGET, 100 waitforvisualfinish call WaterBubblesEffectLong waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -Move_SMOG:: +Move_SMOG: loadspritegfx ANIM_TAG_PURPLE_GAS_CLOUD monbg ANIM_DEF_PARTNER - monbgprio_29 + splitbgprio_all setalpha 12, 8 - loopsewithpan SE_M_MIST, 63, 17, 10 + loopsewithpan SE_M_MIST, SOUND_PAN_TARGET, 17, 10 call SmogCloud call SmogCloud call SmogCloud @@ -5243,45 +5228,45 @@ Move_SMOG:: call SmogCloud call SmogCloud delay 120 - loopsewithpan SE_M_TOXIC, 63, 18, 2 - createvisualtask AnimTask_CurseBlendEffect, 2, 4, 2, 2, 0, 12, 26650 + loopsewithpan SE_M_TOXIC, SOUND_PAN_TARGET, 18, 2 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 2, 2, 0, 12, RGB(26, 0, 26) delay 10 - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 15, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 15, 1 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -SmogCloud:: +SmogCloud: createsprite gSmogCloudSpriteTemplate, ANIM_ATTACKER, 2, 0, -24, 48, 240, 1, 0 delay 7 return -Move_FAINT_ATTACK:: +Move_FAINT_ATTACK: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_ATTACKER - fadetobg 1 + fadetobg BG_DARK waitbgfadein delay 0 - playsewithpan SE_M_FAINT_ATTACK, 192 - createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 18, 6, 1, 3 + playsewithpan SE_M_FAINT_ATTACK, SOUND_PAN_ATTACKER + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 18, 6, 1, 3 createvisualtask AnimTask_AttackerFadeToInvisible, 2, 1 waitforvisualfinish clearmonbg ANIM_ATTACKER - invisible 0 + invisible ANIM_ATTACKER delay 1 - createvisualtask AnimTask_SetAttackerInvisibleWaitForSignal, 2, - monbg 1 + createvisualtask AnimTask_SetAttackerInvisibleWaitForSignal, 2 + monbg ANIM_TARGET setalpha 12, 8 delay 1 - playsewithpan SE_M_VITAL_THROW2, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 1 - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 9, 1 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 9, 1 waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff delay 1 - setarg 7, 4096 + setarg 7, 0x1000 delay 32 createvisualtask AnimTask_InitAttackerFadeFromInvisible, 2 monbg ANIM_ATTACKER @@ -5293,12 +5278,12 @@ Move_FAINT_ATTACK:: waitbgfadein end -Move_SAND_ATTACK:: +Move_SAND_ATTACK: loadspritegfx ANIM_TAG_MUD_SAND monbg ANIM_ATK_PARTNER - monbgprio_28 0 + splitbgprio ANIM_ATTACKER setalpha 12, 8 - playsewithpan SE_M_SAND_ATTACK, 192 + playsewithpan SE_M_SAND_ATTACK, SOUND_PAN_ATTACKER createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, -10, 0, 0, 3 waitforvisualfinish createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 2 @@ -5313,7 +5298,7 @@ Move_SAND_ATTACK:: blendoff end -SandAttackDirt:: +SandAttackDirt: createsprite gSandAttackDirtSpriteTemplate, ANIM_TARGET, 2, 15, 15, 20, 0, 0 createsprite gSandAttackDirtSpriteTemplate, ANIM_TARGET, 2, 15, 15, 20, 10, 10 createsprite gSandAttackDirtSpriteTemplate, ANIM_TARGET, 2, 15, 15, 20, -10, -10 @@ -5322,9 +5307,9 @@ SandAttackDirt:: delay 2 return -Move_MUD_SLAP:: +Move_MUD_SLAP: loadspritegfx ANIM_TAG_MUD_SAND - playsewithpan SE_M_SAND_ATTACK, 192 + playsewithpan SE_M_SAND_ATTACK, SOUND_PAN_ATTACKER createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, -10, 0, 0, 3 waitforvisualfinish createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 2 @@ -5337,7 +5322,7 @@ Move_MUD_SLAP:: waitforvisualfinish end -MudSlapMud:: +MudSlapMud: createsprite gMudSlapMudSpriteTemplate, ANIM_TARGET, 2, 15, 15, 20, 0, 0 createsprite gMudSlapMudSpriteTemplate, ANIM_TARGET, 2, 15, 15, 20, 10, 5 createsprite gMudSlapMudSpriteTemplate, ANIM_TARGET, 2, 15, 15, 20, -10, -5 @@ -5346,18 +5331,18 @@ MudSlapMud:: delay 2 return -Move_DRAGON_RAGE:: +Move_DRAGON_RAGE: loadspritegfx ANIM_TAG_SMALL_EMBER loadspritegfx ANIM_TAG_FIRE_PLUME - playsewithpan SE_M_DRAGON_RAGE, 192 - createvisualtask AnimTask_ShakeMon, 5, 0, 0, 2, 40, 1 + playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER + createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 40, 1 waitforvisualfinish createsprite gSlideMonToOffsetSpriteTemplate, ANIM_TARGET, 2, 0, 15, 0, 0, 4 waitforvisualfinish createsprite gDragonRageFireSpitSpriteTemplate, ANIM_TARGET, 2, 30, 15, 0, 10, 10 waitforvisualfinish - loopsewithpan SE_M_FLAME_WHEEL2, 63, 11, 3 - createvisualtask AnimTask_ShakeMon, 5, 1, 0, 3, 25, 1 + loopsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_TARGET, 11, 3 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 3, 25, 1 createsprite gDragonRageFirePlumeSpriteTemplate, ANIM_TARGET, 66, 1, 5, 0 delay 1 createsprite gDragonRageFirePlumeSpriteTemplate, ANIM_TARGET, 66, 1, -10, -15 @@ -5378,98 +5363,98 @@ Move_DRAGON_RAGE:: waitforvisualfinish end -Move_RAIN_DANCE:: +Move_RAIN_DANCE: loadspritegfx ANIM_TAG_RAIN_DROPS - playsewithpan SE_M_RAIN_DANCE, 192 - createvisualtask AnimTask_BlendSelected, 10, 1 | (0xF << 7), 2, 0, 4, RGB_BLACK + playsewithpan SE_M_RAIN_DANCE, SOUND_PAN_ATTACKER + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_BATTLERS_2, 2, 0, 4, RGB_BLACK waitforvisualfinish createvisualtask AnimTask_CreateRaindrops, 2, 0, 3, 120 createvisualtask AnimTask_CreateRaindrops, 2, 0, 3, 120 delay 120 delay 30 waitforvisualfinish - createvisualtask AnimTask_BlendSelected, 10, 1 | (0xF << 7), 2, 4, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_BATTLERS_2, 2, 4, 0, RGB_BLACK waitforvisualfinish end -Move_BITE:: +Move_BITE: loadspritegfx ANIM_TAG_SHARP_TEETH loadspritegfx ANIM_TAG_IMPACT - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 - playsewithpan SE_M_BITE, 63 + playsewithpan SE_M_BITE, SOUND_PAN_TARGET createsprite gSharpTeethSpriteTemplate, ANIM_ATTACKER, 2, 0, -32, 0, 0, 819, 10 createsprite gSharpTeethSpriteTemplate, ANIM_ATTACKER, 2, 0, 32, 4, 0, -819, 10 delay 10 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2 - createvisualtask AnimTask_ShakeMon, 5, 1, 0, 4, 7, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 4, 7, 1 waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff delay 1 end -Move_CRUNCH:: +Move_CRUNCH: loadspritegfx ANIM_TAG_SHARP_TEETH loadspritegfx ANIM_TAG_IMPACT - monbg 1 - fadetobg 1 + monbg ANIM_TARGET + fadetobg BG_DARK waitbgfadein setalpha 12, 8 - playsewithpan SE_M_BITE, 63 + playsewithpan SE_M_BITE, SOUND_PAN_TARGET createsprite gSharpTeethSpriteTemplate, ANIM_ATTACKER, 2, -32, -32, 1, 819, 819, 10 createsprite gSharpTeethSpriteTemplate, ANIM_ATTACKER, 2, 32, 32, 5, -819, -819, 10 delay 10 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -8, 0, 1, 1 - createvisualtask AnimTask_ShakeMon, 5, 1, 0, 7, 5, 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -8, 0, ANIM_TARGET, 1 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 7, 5, 2 waitforvisualfinish - playsewithpan SE_M_BITE, 63 + playsewithpan SE_M_BITE, SOUND_PAN_TARGET createsprite gSharpTeethSpriteTemplate, ANIM_ATTACKER, 2, 32, -32, 7, -819, 819, 10 createsprite gSharpTeethSpriteTemplate, ANIM_ATTACKER, 2, -32, 32, 3, 819, -819, 10 delay 10 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 8, 0, 1, 1 - createvisualtask AnimTask_ShakeMon, 5, 1, 0, 8, 4, 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 8, 0, ANIM_TARGET, 1 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 8, 4, 2 waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff delay 1 restorebg waitbgfadein end -Move_CLAMP:: +Move_CLAMP: loadspritegfx ANIM_TAG_CLAMP loadspritegfx ANIM_TAG_IMPACT - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 - playsewithpan SE_M_VICEGRIP, 63 + playsewithpan SE_M_VICEGRIP, SOUND_PAN_TARGET createsprite gClampJawSpriteTemplate, ANIM_ATTACKER, 2, -32, 0, 2, 819, 0, 10 createsprite gClampJawSpriteTemplate, ANIM_ATTACKER, 2, 32, 0, 6, -819, 0, 10 delay 10 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2 - createvisualtask AnimTask_ShakeMon, 5, 1, 3, 0, 5, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 3, 0, 5, 1 waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff waitforvisualfinish end -Move_ICE_BEAM:: - monbg 1 - monbgprio_28 1 +Move_ICE_BEAM: + monbg ANIM_TARGET + splitbgprio ANIM_TARGET setalpha 12, 8 loadspritegfx ANIM_TAG_ICE_CRYSTALS - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 7, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 7, RGB_BLACK waitforvisualfinish - createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_BUBBLE_BEAM2, -64, 63, 4, 4, 0, 10 + createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_BUBBLE_BEAM2, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 4, 4, 0, 10 createsprite gIceBeamOuterCrystalSpriteTemplate, ANIM_ATTACKER, 2, 20, 12, 0, 12, 20 createsprite gIceBeamOuterCrystalSpriteTemplate, ANIM_ATTACKER, 2, 20, -12, 0, -12, 20 delay 1 call IceBeamCreateCrystals call IceBeamCreateCrystals call IceBeamCreateCrystals - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 4, -31, 0, 7, 32384 - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 25, 1 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_TARGET, -31, 0, 7, RGB(0, 20, 31) + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 25, 1 call IceBeamCreateCrystals call IceBeamCreateCrystals call IceBeamCreateCrystals @@ -5484,42 +5469,42 @@ Move_ICE_BEAM:: waitforvisualfinish delay 20 call IceCrystalEffectShort - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 4, 5, 7, 0, 32384 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_TARGET, 5, 7, 0, RGB(0, 20, 31) waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 7, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 0, 7, 0, RGB_BLACK waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -IceBeamCreateCrystals:: +IceBeamCreateCrystals: createsprite gIceBeamOuterCrystalSpriteTemplate, ANIM_ATTACKER, 2, 20, 12, 0, 12, 20 createsprite gIceBeamOuterCrystalSpriteTemplate, ANIM_ATTACKER, 2, 20, -12, 0, -12, 20 createsprite gIceBeamInnerCrystalSpriteTemplate, ANIM_ATTACKER, 2, 20, 0, 0, 0, 11 delay 1 return -Move_WITHDRAW:: - playsewithpan SE_M_HEADBUTT, 192 - createvisualtask AnimTask_Withdraw, 5, +Move_WITHDRAW: + playsewithpan SE_M_HEADBUTT, SOUND_PAN_ATTACKER + createvisualtask AnimTask_Withdraw, 5 waitforvisualfinish end -Move_AURORA_BEAM:: +Move_AURORA_BEAM: loadspritegfx ANIM_TAG_RAINBOW_RINGS - fadetobg 20 + fadetobg BG_AURORA waitbgfadein - playsewithpan SE_M_BUBBLE_BEAM, 192 + playsewithpan SE_M_BUBBLE_BEAM, SOUND_PAN_ATTACKER setarg 7, 0 createvisualtask AnimTask_RotateAuroraRingColors, 10, 130 call AuroraBeamCreateRings - createvisualtask AnimTask_ShakeMon2, 5, 1, 1, 0, 17, 1 + createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 1, 0, 17, 1 call AuroraBeamCreateRings call AuroraBeamCreateRings call AuroraBeamCreateRings - setarg 7, 65535 - createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_BUBBLE_BEAM2, -64, 63, 3, 6, 0, 10 - createvisualtask AnimTask_ShakeMon2, 5, 1, 2, 0, 40, 1 + setarg 7, 0xFFFF + createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_BUBBLE_BEAM2, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 3, 6, 0, 10 + createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 2, 0, 40, 1 call AuroraBeamCreateRings call AuroraBeamCreateRings call AuroraBeamCreateRings @@ -5531,7 +5516,7 @@ Move_AURORA_BEAM:: waitbgfadein end -AuroraBeamCreateRings:: +AuroraBeamCreateRings: createsprite gAuroraBeamRingSpriteTemplate, ANIM_TARGET, 2, 20, 0, 0, 0, 17 delay 1 createsprite gAuroraBeamRingSpriteTemplate, ANIM_TARGET, 2, 20, 0, 0, 0, 17 @@ -5542,25 +5527,26 @@ AuroraBeamCreateRings:: delay 1 return -Move_SOLAR_BEAM:: +Move_SOLAR_BEAM: loadspritegfx ANIM_TAG_ORBS choosetwoturnanim SolarBeamSetUp, SolarBeamUnleash -SolarBeamEnd:: + +SolarBeamEnd: waitforvisualfinish end -SolarBeamSetUp:: +SolarBeamSetUp: monbg ANIM_ATK_PARTNER setalpha 12, 8 - createvisualtask AnimTask_CurseBlendEffect, 2, 2, 1, 4, 0, 11, 12287 - playsewithpan SE_M_MEGA_KICK, 192 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 1, 4, 0, 11, RGB(31, 31, 11) + playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER call SolarBeamAbsorbEffect waitforvisualfinish clearmonbg ANIM_ATK_PARTNER blendoff goto SolarBeamEnd -SolarBeamAbsorbEffect:: +SolarBeamAbsorbEffect: createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 40, 40, 16 delay 2 createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, -40, -40, 16 @@ -5591,18 +5577,18 @@ SolarBeamAbsorbEffect:: delay 2 return -SolarBeamUnleash:: +SolarBeamUnleash: call SetSolarBeamBg - panse_1B SE_M_SOLAR_BEAM, 192, 63, 2, 0 - createvisualtask AnimTask_CreateSmallSolarBeamOrbs, 5, + 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 delay 4 createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 1 delay 4 - createvisualtask AnimTask_BlendSelected, 10, 4, 1, 0, 10, RGB(25, 31, 0) + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 1, 0, 10, RGB(25, 31, 0) createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 2 delay 4 - createvisualtask AnimTask_ShakeMon2, 5, 1, 2, 0, 65, 1 + createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 2, 0, 65, 1 createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 3 delay 4 createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 4 @@ -5614,11 +5600,11 @@ SolarBeamUnleash:: call SolarBeamUnleash1 call SolarBeamUnleash1 waitforvisualfinish - createvisualtask AnimTask_BlendSelected, 10, 4, 1, 10, 0, RGB(25, 31, 0) + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 1, 10, 0, RGB(25, 31, 0) call UnsetSolarBeamBg goto SolarBeamEnd -SolarBeamUnleash1:: +SolarBeamUnleash1: createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 0 delay 4 createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 1 @@ -5635,22 +5621,21 @@ SolarBeamUnleash1:: delay 4 return -Move_BLIZZARD:: +Move_BLIZZARD: loadspritegfx ANIM_TAG_ICE_CRYSTALS monbg ANIM_DEF_PARTNER - createvisualtask AnimTask_GetAttackerSide, 2, - jumpargeq 7, 1, BlizzardOnPlayer + createvisualtask AnimTask_GetAttackerSide, 2 + jumprettrue BlizzardAgainstPlayer fadetobg BG_HIGHSPEED_OPPONENT - -BlizzardContinue:: +BlizzardContinue: waitbgfadeout createvisualtask AnimTask_StartSlidingBg, 5, -2304, 0, 1, -1 waitbgfadein waitforvisualfinish - panse_1B SE_M_BLIZZARD, 192, 63, 2, 0 + panse SE_M_BLIZZARD, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0 call BlizzardIceCrystals call BlizzardIceCrystals - playsewithpan SE_M_BLIZZARD2, 63 + playsewithpan SE_M_BLIZZARD2, SOUND_PAN_TARGET waitforvisualfinish call IceCrystalEffectLong waitforvisualfinish @@ -5658,11 +5643,11 @@ BlizzardContinue:: delay 20 restorebg waitbgfadeout - setarg 7, 65535 + setarg 7, 0xFFFF waitbgfadein end -BlizzardIceCrystals:: +BlizzardIceCrystals: createsprite gSwirlingSnowballSpriteTemplate, ANIM_ATTACKER, 40, 0, -10, 0, -10, 72, 1 createsprite gBlizzardIceCrystalSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, 0, 0, 80, 0, 0, 1 delay 3 @@ -5686,29 +5671,29 @@ BlizzardIceCrystals:: delay 3 return -BlizzardOnPlayer:: +BlizzardAgainstPlayer: fadetobg BG_HIGHSPEED_PLAYER goto BlizzardContinue -Move_POWDER_SNOW:: +Move_POWDER_SNOW: loadspritegfx ANIM_TAG_ICE_CRYSTALS monbg ANIM_DEF_PARTNER - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 1, 0, 3, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 1, 0, 3, RGB_BLACK waitforvisualfinish - panse_1B SE_M_GUST, 192, 63, 2, 0 + panse SE_M_GUST, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0 call PowderSnowSnowballs call PowderSnowSnowballs - playsewithpan SE_M_GUST2, 63 + playsewithpan SE_M_GUST2, SOUND_PAN_TARGET waitforvisualfinish waitsound call IceCrystalEffectLong waitforvisualfinish clearmonbg ANIM_DEF_PARTNER delay 20 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 1, 3, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 1, 3, 0, RGB_BLACK end -PowderSnowSnowballs:: +PowderSnowSnowballs: createsprite gPowderSnowSnowballSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, 0, 0, 56, 4, 4, 1 delay 3 createsprite gPowderSnowSnowballSpriteTemplate, ANIM_ATTACKER, 40, 0, -10, 0, -10, 56, 4, 4, 1 @@ -5725,20 +5710,20 @@ PowderSnowSnowballs:: delay 3 return -Move_HYDRO_PUMP:: +Move_HYDRO_PUMP: loadspritegfx ANIM_TAG_WATER_ORB loadspritegfx ANIM_TAG_WATER_IMPACT monbg ANIM_DEF_PARTNER - monbgprio_28 1 + splitbgprio ANIM_TARGET setalpha 12, 8 - createvisualtask AnimTask_ShakeMon, 5, 0, 0, 2, 40, 1 + createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 40, 1 delay 6 - panse_1B SE_M_HYDRO_PUMP, 192, 63, 2, 0 + panse SE_M_HYDRO_PUMP, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0 createvisualtask AnimTask_StartSinAnimTimer, 5, 100 call HydroPumpBeams call HydroPumpBeams call HydroPumpBeams - createvisualtask AnimTask_ShakeMon, 5, 1, 3, 0, 37, 1 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 3, 0, 37, 1 call HydroPumpHitSplats call HydroPumpBeams call HydroPumpBeams @@ -5760,7 +5745,7 @@ Move_HYDRO_PUMP:: blendoff end -HydroPumpBeams:: +HydroPumpBeams: createsprite gHydroPumpOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, 10, 0, 16 createsprite gHydroPumpOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, 10, 0, -16 delay 1 @@ -5769,18 +5754,18 @@ HydroPumpBeams:: delay 1 return -HydroPumpHitSplats:: - createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 4, 0, 15, 1, 1 - createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 4, 0, -15, 1, 1 +HydroPumpHitSplats : + createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 4, 0, 15, ANIM_TARGET, 1 + createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 4, 0, -15, ANIM_TARGET, 1 return -Move_SIGNAL_BEAM:: +Move_SIGNAL_BEAM: loadspritegfx ANIM_TAG_GLOWY_RED_ORB loadspritegfx ANIM_TAG_GLOWY_GREEN_ORB loadspritegfx ANIM_TAG_DUCK - createvisualtask AnimTask_ShakeMon, 5, 0, 0, 2, 25, 1 + createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 25, 1 delay 6 - panse_1B SE_M_BUBBLE_BEAM, 192, 63, 1, 0 + panse SE_M_BUBBLE_BEAM, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +1, 0 createvisualtask AnimTask_StartSinAnimTimer, 5, 100 call SignalBeamOrbs call SignalBeamOrbs @@ -5788,8 +5773,8 @@ Move_SIGNAL_BEAM:: call SignalBeamOrbs call SignalBeamOrbs call SignalBeamOrbs - createvisualtask AnimTask_ShakeMon, 5, 1, 3, 0, 25, 1 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 4, 8, 5, 31, 8, 961, 8 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 3, 0, 25, 1 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_TARGET, 8, 5, RGB_RED, 8, RGB(1, 30, 0), 8 call SignalBeamOrbs call SignalBeamOrbs call SignalBeamOrbs @@ -5810,25 +5795,25 @@ Move_SIGNAL_BEAM:: waitforvisualfinish end -SignalBeamOrbs:: +SignalBeamOrbs: createsprite gSignalBeamRedOrbSpriteTemplate, ANIM_TARGET, 3, 10, 10, 0, 16 createsprite gSignalBeamGreenOrbSpriteTemplate, ANIM_TARGET, 3, 10, 10, 0, -16 delay 1 return -Move_ABSORB:: +Move_ABSORB: loadspritegfx ANIM_TAG_ORBS loadspritegfx ANIM_TAG_BLUE_STAR loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER - monbgprio_2A 1 + splitbgprio_foes ANIM_TARGET setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 4, 13293 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 4, RGB(13, 31, 12) waitforvisualfinish - playsewithpan SE_M_ABSORB, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2 + playsewithpan SE_M_ABSORB, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 2 delay 2 - createvisualtask AnimTask_ShakeMon, 5, 1, 0, 5, 5, 1 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 5, 5, 1 waitforvisualfinish delay 3 call AbsorbEffect @@ -5836,52 +5821,52 @@ Move_ABSORB:: delay 15 call HealingEffect waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 4, 0, 13293 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 4, 0, RGB(13, 31, 12) waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -AbsorbEffect:: - playsewithpan SE_M_CRABHAMMER, 63 +AbsorbEffect: + playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 delay 4 - playsewithpan SE_M_CRABHAMMER, 63 + playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26 delay 4 - playsewithpan SE_M_CRABHAMMER, 63 + playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -5, 15, 16, 33 delay 4 - playsewithpan SE_M_CRABHAMMER, 63 + playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, -15, -16, 36 delay 4 - playsewithpan SE_M_CRABHAMMER, 63 + playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 delay 4 - playsewithpan SE_M_CRABHAMMER, 63 + playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26 delay 4 - playsewithpan SE_M_CRABHAMMER, 63 + playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -10, 20, 20, 39 delay 4 - playsewithpan SE_M_CRABHAMMER, 63 + playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 5, -18, -20, 35 delay 4 return -Move_MEGA_DRAIN:: +Move_MEGA_DRAIN: loadspritegfx ANIM_TAG_ORBS loadspritegfx ANIM_TAG_BLUE_STAR loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER - monbgprio_2A 1 + splitbgprio_foes ANIM_TARGET setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 8, 13293 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 8, RGB(13, 31, 12) waitforvisualfinish - playsewithpan SE_M_ABSORB, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 1 + playsewithpan SE_M_ABSORB, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 1 delay 2 - createvisualtask AnimTask_ShakeMon, 5, 1, 0, 5, 5, 1 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 5, 5, 1 waitforvisualfinish delay 3 call MegaDrainAbsorbEffect @@ -5889,60 +5874,60 @@ Move_MEGA_DRAIN:: delay 15 call HealingEffect waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 8, 0, 13293 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 8, 0, RGB(13, 31, 12) waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -MegaDrainAbsorbEffect:: - playsewithpan SE_M_BUBBLE3, 63 +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 delay 4 - playsewithpan SE_M_BUBBLE3, 63 + 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 delay 4 - playsewithpan SE_M_BUBBLE3, 63 + 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 delay 4 - playsewithpan SE_M_BUBBLE3, 63 + 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 delay 4 - playsewithpan SE_M_BUBBLE3, 63 + 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 delay 4 - playsewithpan SE_M_BUBBLE3, 63 + 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 delay 4 - playsewithpan SE_M_BUBBLE3, 63 + 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 delay 4 - playsewithpan SE_M_BUBBLE3, 63 + 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 delay 4 return -Move_GIGA_DRAIN:: +Move_GIGA_DRAIN: loadspritegfx ANIM_TAG_ORBS loadspritegfx ANIM_TAG_BLUE_STAR loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER - monbgprio_2A 1 + splitbgprio_foes ANIM_TARGET setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 12, 13293 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 12, RGB(13, 31, 12) waitforvisualfinish - playsewithpan SE_M_ABSORB, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 0 + playsewithpan SE_M_ABSORB, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 0 delay 2 - createvisualtask AnimTask_ShakeMon, 5, 1, 0, 5, 5, 1 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 5, 5, 1 waitforvisualfinish delay 3 call GigaDrainAbsorbEffect @@ -5950,97 +5935,97 @@ Move_GIGA_DRAIN:: delay 15 call HealingEffect waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 12, 0, 13293 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 12, 0, RGB(13, 31, 12) waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -GigaDrainAbsorbEffect:: - playsewithpan SE_M_GIGA_DRAIN, 63 +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 delay 4 - playsewithpan SE_M_GIGA_DRAIN, 63 + 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 delay 4 - playsewithpan SE_M_GIGA_DRAIN, 63 + 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 delay 4 - playsewithpan SE_M_GIGA_DRAIN, 63 + 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 delay 4 - playsewithpan SE_M_GIGA_DRAIN, 63 + 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 delay 4 - playsewithpan SE_M_GIGA_DRAIN, 63 + 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 delay 4 - playsewithpan SE_M_GIGA_DRAIN, 63 + 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 delay 4 - playsewithpan SE_M_GIGA_DRAIN, 63 + 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 delay 4 return -Move_LEECH_LIFE:: +Move_LEECH_LIFE: loadspritegfx ANIM_TAG_NEEDLE loadspritegfx ANIM_TAG_ORBS delay 1 loadspritegfx ANIM_TAG_BLUE_STAR loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER - monbgprio_2A 1 + splitbgprio_foes ANIM_TARGET setalpha 12, 8 delay 1 createsprite gLeechLifeNeedleSpriteTemplate, ANIM_ATTACKER, 2, -20, 15, 12 waitforvisualfinish - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2 - playsewithpan SE_M_ABSORB, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 2 + playsewithpan SE_M_ABSORB, SOUND_PAN_TARGET delay 2 - createvisualtask AnimTask_ShakeMon, 5, 1, 0, 5, 5, 1 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 5, 5, 1 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 7, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 7, RGB_BLACK waitforvisualfinish call AbsorbEffect waitforvisualfinish delay 15 call HealingEffect waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 7, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 7, 0, RGB_BLACK waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -Move_SYNTHESIS:: +Move_SYNTHESIS: loadspritegfx ANIM_TAG_BLUE_STAR loadspritegfx ANIM_TAG_SPARKLE_2 - createvisualtask AnimTask_CurseBlendEffect, 2, 2, 2, 2, 0, 16, 19451 - playsewithpan SE_M_MEGA_KICK, 192 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 2, 2, 0, 16, RGB(27, 31, 18) + playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER call GrantingStarsEffect waitforvisualfinish call HealingEffect waitforvisualfinish end -Move_TOXIC:: +Move_TOXIC: loadspritegfx ANIM_TAG_TOXIC_BUBBLE loadspritegfx ANIM_TAG_POISON_BUBBLE call ToxicBubbles @@ -6051,33 +6036,33 @@ Move_TOXIC:: waitforvisualfinish end -ToxicBubbles:: +ToxicBubbles: createsprite gToxicBubbleSpriteTemplate, ANIM_TARGET, 2, -24, 16, 1, 1 - playsewithpan SE_M_TOXIC, 63 + playsewithpan SE_M_TOXIC, SOUND_PAN_TARGET delay 15 createsprite gToxicBubbleSpriteTemplate, ANIM_TARGET, 2, 8, 16, 1, 1 - playsewithpan SE_M_TOXIC, 63 + playsewithpan SE_M_TOXIC, SOUND_PAN_TARGET delay 15 createsprite gToxicBubbleSpriteTemplate, ANIM_TARGET, 2, -8, 16, 1, 1 - playsewithpan SE_M_TOXIC, 63 + playsewithpan SE_M_TOXIC, SOUND_PAN_TARGET delay 15 createsprite gToxicBubbleSpriteTemplate, ANIM_TARGET, 2, 24, 16, 1, 1 - playsewithpan SE_M_TOXIC, 63 + playsewithpan SE_M_TOXIC, SOUND_PAN_TARGET delay 15 return -Move_SLUDGE:: +Move_SLUDGE: loadspritegfx ANIM_TAG_POISON_BUBBLE - playsewithpan SE_M_BUBBLE3, 192 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER createsprite gSludgeProjectileSpriteTemplate, ANIM_TARGET, 2, 20, 0, 40, 0 waitforvisualfinish - createvisualtask AnimTask_ShakeMon, 5, 1, 3, 0, 5, 1 - createvisualtask AnimTask_CurseBlendEffect, 2, 4, 1, 2, 0, 12, 31774 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 3, 0, 5, 1 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 1, 2, 0, 12, RGB(30, 0, 31) call PoisonBubblesEffect waitforvisualfinish end -Move_SLUDGE_BOMB:: +Move_SLUDGE_BOMB: loadspritegfx ANIM_TAG_POISON_BUBBLE call SludgeBombProjectile call SludgeBombProjectile @@ -6089,25 +6074,25 @@ Move_SLUDGE_BOMB:: call SludgeBombProjectile call SludgeBombProjectile call SludgeBombProjectile - createvisualtask AnimTask_ShakeMon2, 5, 1, 3, 0, 15, 1 - createvisualtask AnimTask_CurseBlendEffect, 2, 4, 1, 2, 0, 12, 31774 + createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 3, 0, 15, 1 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 1, 2, 0, 12, RGB(30, 0, 31) createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, 42, 27, 20 createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, -27, 44, 20 createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, 39, -28, 20 createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, -42, -42, 20 - playsewithpan SE_M_DIG, 63 + playsewithpan SE_M_DIG, SOUND_PAN_TARGET delay 5 createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, 0, 40, 20 createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, -8, -44, 20 createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, -46, -28, 20 createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, 46, 9, 20 - playsewithpan SE_M_DIG, 63 + playsewithpan SE_M_DIG, SOUND_PAN_TARGET delay 5 createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, 42, 0, 20 createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, -43, -12, 20 createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, 16, -46, 20 createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, -16, 44, 20 - playsewithpan SE_M_DIG, 63 + playsewithpan SE_M_DIG, SOUND_PAN_TARGET delay 0 waitsound waitforvisualfinish @@ -6115,186 +6100,186 @@ Move_SLUDGE_BOMB:: waitforvisualfinish end -SludgeBombProjectile:: - playsewithpan SE_M_BUBBLE3, 192 +SludgeBombProjectile: + playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER createsprite gSludgeProjectileSpriteTemplate, ANIM_TARGET, 2, 20, 0, 40, 0 delay 3 return -Move_ACID:: +Move_ACID: loadspritegfx ANIM_TAG_POISON_BUBBLE monbg ANIM_DEF_PARTNER createsprite gAcidPoisonBubbleSpriteTemplate, ANIM_TARGET, 2, 20, 0, 40, 1, 0, 0 - playsewithpan SE_M_BUBBLE3, 192 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER delay 5 createsprite gAcidPoisonBubbleSpriteTemplate, ANIM_TARGET, 2, 20, 0, 40, 1, 24, 0 - playsewithpan SE_M_BUBBLE3, 192 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER delay 5 createsprite gAcidPoisonBubbleSpriteTemplate, ANIM_TARGET, 2, 20, 0, 40, 1, -24, 0 - playsewithpan SE_M_BUBBLE3, 192 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER delay 15 - createvisualtask AnimTask_ShakeMon2, 5, 1, 2, 0, 10, 1 - createvisualtask AnimTask_ShakeMon2, 5, 3, 2, 0, 10, 1 - createvisualtask AnimTask_CurseBlendEffect, 2, 20, 2, 2, 0, 12, 31774 + createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 2, 0, 10, 1 + createvisualtask AnimTask_ShakeMon2, 5, ANIM_DEF_PARTNER, 2, 0, 10, 1 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_DEF_SIDE, 2, 2, 0, 12, RGB(30, 0, 31) createsprite gAcidPoisonDropletSpriteTemplate, ANIM_TARGET, 2, 0, -22, 0, 15, 55 - playsewithpan SE_M_BUBBLE, 63 + playsewithpan SE_M_BUBBLE, SOUND_PAN_TARGET delay 10 createsprite gAcidPoisonDropletSpriteTemplate, ANIM_TARGET, 2, -26, -24, 0, 15, 55 - playsewithpan SE_M_BUBBLE, 63 + playsewithpan SE_M_BUBBLE, SOUND_PAN_TARGET delay 10 createsprite gAcidPoisonDropletSpriteTemplate, ANIM_TARGET, 2, 15, -27, 0, 15, 50 - playsewithpan SE_M_BUBBLE, 63 + playsewithpan SE_M_BUBBLE, SOUND_PAN_TARGET delay 10 createsprite gAcidPoisonDropletSpriteTemplate, ANIM_TARGET, 2, -15, -17, 0, 10, 45 - playsewithpan SE_M_BUBBLE, 63 + playsewithpan SE_M_BUBBLE, SOUND_PAN_TARGET delay 10 createsprite gAcidPoisonDropletSpriteTemplate, ANIM_TARGET, 2, 27, -22, 0, 15, 50 - playsewithpan SE_M_BUBBLE, 63 + playsewithpan SE_M_BUBBLE, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_DEF_PARTNER end -Move_BONEMERANG:: +Move_BONEMERANG: loadspritegfx ANIM_TAG_BONE loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER - monbgprio_28 1 + splitbgprio ANIM_TARGET setalpha 12, 8 - playsewithpan SE_M_BONEMERANG, 192 + playsewithpan SE_M_BONEMERANG, SOUND_PAN_ATTACKER createsprite gBonemerangSpriteTemplate, ANIM_ATTACKER, 2 delay 20 - playsewithpan SE_M_HORN_ATTACK, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 1 - createvisualtask AnimTask_ShakeMon, 5, 1, 5, 0, 5, 1 + playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 1 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 5, 0, 5, 1 delay 17 - playsewithpan SE_M_VITAL_THROW, 192 + playsewithpan SE_M_VITAL_THROW, SOUND_PAN_ATTACKER createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 6, -4 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -Move_BONE_CLUB:: +Move_BONE_CLUB: loadspritegfx ANIM_TAG_BONE loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER - monbgprio_28 1 + splitbgprio ANIM_TARGET setalpha 12, 8 - playsewithpan SE_M_BONEMERANG, 63 + playsewithpan SE_M_BONEMERANG, SOUND_PAN_TARGET createsprite gSpinningBoneSpriteTemplate, ANIM_ATTACKER, 2, -42, -25, 0, 0, 15 delay 12 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 1 - createvisualtask AnimTask_ShakeMon, 5, 1, 0, 5, 5, 1 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 7, 5, 1, 0, 10, 0, 0 - playsewithpan SE_M_VITAL_THROW2, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 1 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 5, 5, 1 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_ATTACKER | F_PAL_TARGET, 5, 1, RGB_BLACK, 10, RGB_BLACK, 0 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -Move_BONE_RUSH:: +Move_BONE_RUSH: loadspritegfx ANIM_TAG_BONE loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 - playsewithpan SE_M_BONEMERANG, 63 + playsewithpan SE_M_BONEMERANG, SOUND_PAN_TARGET createsprite gSpinningBoneSpriteTemplate, ANIM_ATTACKER, 2, -42, -25, 0, 0, 15 delay 12 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2 - createvisualtask AnimTask_ShakeMon, 5, 1, 0, 3, 5, 1 - playsewithpan SE_M_HORN_ATTACK, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 3, 5, 1 + playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -Move_SPIKES:: +Move_SPIKES: loadspritegfx ANIM_TAG_SPIKES monbg ANIM_DEF_PARTNER - playsewithpan SE_M_JUMP_KICK, 192 - waitplaysewithpan SE_M_HORN_ATTACK, 63, 28 + playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER + waitplaysewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET, 28 createsprite gSpikesSpriteTemplate, ANIM_TARGET, 2, 20, 0, 0, 24, 30 delay 10 - playsewithpan SE_M_JUMP_KICK, 192 - waitplaysewithpan SE_M_HORN_ATTACK, 63, 28 + playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER + waitplaysewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET, 28 createsprite gSpikesSpriteTemplate, ANIM_TARGET, 2, 20, 0, -24, 24, 30 delay 10 - waitplaysewithpan SE_M_HORN_ATTACK, 63, 28 + waitplaysewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET, 28 createsprite gSpikesSpriteTemplate, ANIM_TARGET, 2, 20, 0, 24, 24, 30 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER end -Move_MEGAHORN:: +Move_MEGAHORN: loadspritegfx ANIM_TAG_HORN_HIT_2 loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER - playsewithpan SE_M_DRAGON_RAGE, 192 + playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER jumpifcontest MegahornInContest - fadetobg 7 + fadetobg BG_DRILL waitbgfadeout createvisualtask AnimTask_StartSlidingBg, 5, -2304, 768, 1, -1 -MegahornContinue:: +MegahornContinue: waitbgfadein setalpha 12, 8 - createvisualtask AnimTask_ShakeMon, 5, 0, 2, 0, 15, 1 + createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 2, 0, 15, 1 waitforvisualfinish delay 10 createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 24, 0, 0, 6 delay 3 createsprite gMegahornHornSpriteTemplate, ANIM_ATTACKER, 3, -42, 25, 0, 0, 6 delay 4 - playsewithpan SE_M_VICEGRIP, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 0 + playsewithpan SE_M_VICEGRIP, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 0 createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -16, 4, 1, 4 waitforvisualfinish - createvisualtask AnimTask_ShakeMonInPlace, 2, 1, -4, 1, 12, 1 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 7, 5, 1, RGB_WHITE, 10, 0, 0 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, -4, 1, 12, 1 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_ATTACKER | F_PAL_TARGET, 5, 1, RGB_WHITE, 10, RGB_BLACK, 0 delay 10 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 11 delay 3 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 7 waitforvisualfinish - waitforvisualfinish + waitforvisualfinish @ Redundant clearmonbg ANIM_DEF_PARTNER blendoff restorebg waitbgfadeout - setarg 7, 65535 + setarg 7, 0xFFFF waitbgfadein end -MegahornInContest:: - fadetobg 8 +MegahornInContest: + fadetobg BG_DRILL_CONTESTS waitbgfadeout createvisualtask AnimTask_StartSlidingBg, 5, 2304, 768, 0, -1 goto MegahornContinue -Move_GUST:: +Move_GUST: loadspritegfx ANIM_TAG_GUST loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER - monbgprio_28 1 + splitbgprio ANIM_TARGET setalpha 12, 8 - playsewithpan SE_M_GUST, 63 + playsewithpan SE_M_GUST, SOUND_PAN_TARGET createsprite gEllipticalGustSpriteTemplate, ANIM_ATTACKER, 2, 0, -16 createvisualtask AnimTask_AnimateGustTornadoPalette, 5, 1, 70 waitforvisualfinish - createvisualtask AnimTask_ShakeMon2, 5, 1, 1, 0, 7, 1 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2 - playsewithpan SE_M_GUST2, 63 + createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 1, 0, 7, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 2 + playsewithpan SE_M_GUST2, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -Move_WING_ATTACK:: +Move_WING_ATTACK: loadspritegfx ANIM_TAG_GUST loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER - monbgprio_28 1 + splitbgprio ANIM_TARGET setalpha 12, 8 - loopsewithpan SE_M_WING_ATTACK, 192, 20, 2 + loopsewithpan SE_M_WING_ATTACK, SOUND_PAN_ATTACKER, 20, 2 createvisualtask AnimTask_TranslateMonElliptical, 2, 0, 12, 4, 1, 4 createvisualtask AnimTask_AnimateGustTornadoPalette, 5, 1, 70 createsprite gGustToTargetSpriteTemplate, ANIM_ATTACKER, 2, -25, 0, 0, 0, 20 @@ -6302,9 +6287,9 @@ Move_WING_ATTACK:: delay 24 createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 24, 0, 0, 9 delay 17 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 16, 0, 1, 1 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -16, 0, 1, 1 - loopsewithpan SE_M_DOUBLE_SLAP, 63, 5, 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 16, 0, ANIM_TARGET, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -16, 0, ANIM_TARGET, 1 + loopsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET, 5, 2 waitforvisualfinish createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 11 waitforvisualfinish @@ -6312,30 +6297,30 @@ Move_WING_ATTACK:: blendoff end -Move_PECK:: +Move_PECK: loadspritegfx ANIM_TAG_IMPACT - playsewithpan SE_M_HORN_ATTACK, 63 - createvisualtask AnimTask_RotateMonToSideAndRestore, 2, 3, -768, 1, 2 - createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, -12, 0, 1, 3 + playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET + createvisualtask AnimTask_RotateMonToSideAndRestore, 2, 3, -768, ANIM_TARGET, 2 + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, -12, 0, ANIM_TARGET, 3 waitforvisualfinish end -Move_AEROBLAST:: +Move_AEROBLAST: loadspritegfx ANIM_TAG_AIR_WAVE_2 loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER call SetSkyBg - monbgprio_28 1 + splitbgprio ANIM_TARGET setalpha 12, 8 call AeroblastBeam - createvisualtask AnimTask_ShakeMon, 5, 1, 5, 0, 50, 1 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 5, 0, 50, 1 call AeroblastBeam call AeroblastBeam call AeroblastBeam call AeroblastBeam waitforvisualfinish - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 0 - playsewithpan SE_M_RAZOR_WIND, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 0 + playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -6343,106 +6328,106 @@ Move_AEROBLAST:: call UnsetSkyBg end -AeroblastBeam:: - playsewithpan SE_M_JUMP_KICK, 192 +AeroblastBeam: + playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER createsprite gAirWaveCrescentSpriteTemplate, ANIM_ATTACKER, 2, 14, -12, 0, -12, 15, 0, 0 createsprite gAirWaveCrescentSpriteTemplate, ANIM_ATTACKER, 2, 26, 8, 12, 8, 15, 0, 0 delay 3 - playsewithpan SE_M_JUMP_KICK, 192 + playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER createsprite gAirWaveCrescentSpriteTemplate, ANIM_ATTACKER, 2, 14, -12, 0, -12, 15, 1, 0 createsprite gAirWaveCrescentSpriteTemplate, ANIM_ATTACKER, 2, 26, 8, 12, 8, 15, 1, 0 delay 3 - playsewithpan SE_M_JUMP_KICK, 192 + playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER createsprite gAirWaveCrescentSpriteTemplate, ANIM_ATTACKER, 2, 14, -12, 0, -12, 15, 2, 0 createsprite gAirWaveCrescentSpriteTemplate, ANIM_ATTACKER, 2, 26, 8, 12, 8, 15, 2, 0 delay 3 - playsewithpan SE_M_JUMP_KICK, 192 + playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER createsprite gAirWaveCrescentSpriteTemplate, ANIM_ATTACKER, 2, 14, -12, 0, -12, 15, 3, 0 createsprite gAirWaveCrescentSpriteTemplate, ANIM_ATTACKER, 2, 26, 8, 12, 8, 15, 3, 0 delay 3 return -Move_WATER_GUN:: +Move_WATER_GUN: loadspritegfx ANIM_TAG_SMALL_BUBBLES loadspritegfx ANIM_TAG_WATER_IMPACT monbg ANIM_DEF_PARTNER - monbgprio_28 1 + splitbgprio ANIM_TARGET setalpha 12, 8 createsprite gWaterGunProjectileSpriteTemplate, ANIM_ATTACKER, 2, 20, 0, 0, 0, 40, -25 - playsewithpan SE_M_BUBBLE, 192 + playsewithpan SE_M_BUBBLE, SOUND_PAN_ATTACKER waitforvisualfinish - createvisualtask AnimTask_ShakeMon2, 5, 1, 1, 0, 8, 1 - createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 1, 2 + createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 1, 0, 8, 1 + createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, ANIM_TARGET, 2 createsprite gWaterGunDropletSpriteTemplate, ANIM_ATTACKER, 2, 0, -15, 0, 15, 55 - playsewithpan SE_M_CRABHAMMER, 63 + playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET delay 10 createsprite gWaterGunDropletSpriteTemplate, ANIM_ATTACKER, 2, 15, -20, 0, 15, 50 - playsewithpan SE_M_CRABHAMMER, 63 + playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET delay 10 createsprite gWaterGunDropletSpriteTemplate, ANIM_ATTACKER, 2, -15, -10, 0, 10, 45 - playsewithpan SE_M_CRABHAMMER, 63 + playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -Move_CRABHAMMER:: +Move_CRABHAMMER: loadspritegfx ANIM_TAG_ICE_CRYSTALS loadspritegfx ANIM_TAG_WATER_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 - createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 1, 0 - playsewithpan SE_M_VITAL_THROW2, 63 + createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, ANIM_TARGET, 0 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET delay 1 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, 32429, 10, 0, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB(13, 21, 31), 10, RGB_BLACK, 0 createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -24, 0, 0, 4 waitforvisualfinish delay 8 waitforvisualfinish createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 4 waitforvisualfinish - loopsewithpan SE_M_CRABHAMMER, 63, 20, 3 - createvisualtask AnimTask_ShakeMon, 5, 1, 0, 4, 8, 1 - createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 10, 10, 20, 1 + loopsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET, 20, 3 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 4, 8, 1 + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 10, 10, 20, ANIM_TARGET delay 4 - createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 20, -20, 20, 1 + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 20, -20, 20, ANIM_TARGET delay 4 - createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, -15, 15, 20, 1 + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, -15, 15, 20, ANIM_TARGET delay 4 - createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 20, 1 + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 20, ANIM_TARGET delay 4 - createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, -10, -20, 20, 1 + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, -10, -20, 20, ANIM_TARGET delay 4 - createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 16, -8, 20, 1 + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 16, -8, 20, ANIM_TARGET delay 4 - createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 5, 8, 20, 1 + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 5, 8, 20, ANIM_TARGET delay 4 - createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, -16, 0, 20, 1 + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, -16, 0, 20, ANIM_TARGET waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -Move_SURF:: - createvisualtask AnimTask_CreateSurfWave, 2, 0 +Move_SURF: + createvisualtask AnimTask_CreateSurfWave, 2, FALSE delay 24 - panse_1B SE_M_SURF, 192, 63, 2, 0 + panse SE_M_SURF, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0 waitforvisualfinish end -Move_FLAMETHROWER:: +Move_FLAMETHROWER: loadspritegfx ANIM_TAG_SMALL_EMBER monbg ANIM_DEF_PARTNER - monbgprio_28 1 + splitbgprio ANIM_TARGET setalpha 12, 8 - createvisualtask AnimTask_ShakeMon, 5, 0, 0, 2, 46, 1 + createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 46, 1 delay 6 createvisualtask AnimTask_StartSinAnimTimer, 5, 100 - panse_1B SE_M_FLAMETHROWER, 192, 63, 2, 0 + panse SE_M_FLAMETHROWER, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0 call FlamethrowerCreateFlames call FlamethrowerCreateFlames call FlamethrowerCreateFlames - createvisualtask AnimTask_ShakeMon, 5, 1, 3, 0, 43, 1 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 3, 0, 43, 1 call FlamethrowerCreateFlames call FlamethrowerCreateFlames call FlamethrowerCreateFlames @@ -6456,17 +6441,18 @@ Move_FLAMETHROWER:: blendoff end -FlamethrowerCreateFlames:: +FlamethrowerCreateFlames: createsprite gFlamethrowerFlameSpriteTemplate, ANIM_ATTACKER, 3, 10, 10, 0, 16 delay 2 createsprite gFlamethrowerFlameSpriteTemplate, ANIM_ATTACKER, 3, 10, 10, 0, 16 delay 2 return -Move_SANDSTORM:: +@ Also used by Sandstorm weather +Move_SANDSTORM: loadspritegfx ANIM_TAG_FLYING_DIRT playsewithpan SE_M_SANDSTORM, 0 - createvisualtask AnimTask_LoadSandstormBackground, 5, 0 + createvisualtask AnimTask_LoadSandstormBackground, 5, FALSE delay 16 createsprite gFlyingSandCrescentSpriteTemplate, ANIM_ATTACKER, 40, 10, 2304, 96, 0 delay 10 @@ -6483,146 +6469,147 @@ Move_SANDSTORM:: createsprite gFlyingSandCrescentSpriteTemplate, ANIM_ATTACKER, 40, 60, 2560, 96, 0 end -Move_WHIRLPOOL:: +Move_WHIRLPOOL: loadspritegfx ANIM_TAG_WATER_ORB monbg ANIM_DEF_PARTNER - monbgprio_28 1 + splitbgprio ANIM_TARGET setalpha 12, 8 delay 0 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 0, 7, 23968 - playsewithpan SE_M_WHIRLPOOL, 63 - createvisualtask AnimTask_ShakeMon, 5, 1, 0, 2, 50, 1 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_TARGET, 2, 0, 7, RGB(0, 13, 23) + playsewithpan SE_M_WHIRLPOOL, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 2, 50, 1 call WhirlpoolEffect call WhirlpoolEffect call WhirlpoolEffect delay 12 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 7, 0, 23968 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_TARGET, 2, 7, 0, RGB(0, 13, 23) waitforvisualfinish clearmonbg ANIM_DEF_PARTNER end -WhirlpoolEffect:: - createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 28, 384, 50, 8, 50, 1 +WhirlpoolEffect: + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 28, 384, 50, 8, 50, ANIM_TARGET delay 2 - createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 32, 240, 40, 11, -46, 1 + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 32, 240, 40, 11, -46, ANIM_TARGET delay 2 - createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 33, 416, 40, 4, 42, 1 + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 33, 416, 40, 4, 42, ANIM_TARGET delay 2 - createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 31, 288, 45, 6, -42, 1 + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 31, 288, 45, 6, -42, ANIM_TARGET delay 2 - createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 28, 448, 45, 11, 46, 1 + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 28, 448, 45, 11, 46, ANIM_TARGET delay 2 - createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 33, 464, 50, 10, -50, 1 + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 33, 464, 50, 10, -50, ANIM_TARGET delay 2 return -Move_FLY:: +Move_FLY: loadspritegfx ANIM_TAG_ROUND_SHADOW loadspritegfx ANIM_TAG_IMPACT choosetwoturnanim FlySetUp, FlyUnleash -FlyEnd:: + +FlyEnd: waitforvisualfinish end -FlySetUp:: - playsewithpan SE_M_FLY, 192 +FlySetUp: + playsewithpan SE_M_FLY, SOUND_PAN_ATTACKER createsprite gFlyBallUpSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 13, 336 goto FlyEnd -FlyUnleash:: +FlyUnleash: monbg ANIM_DEF_PARTNER setalpha 12, 8 - playsewithpan SE_M_DOUBLE_TEAM, 192 + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER createsprite gFlyBallAttackSpriteTemplate, ANIM_ATTACKER, 2, 20 delay 20 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 0 - createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1 - playsewithpan SE_M_RAZOR_WIND, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 0 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 6, 0, 8, 1 + playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff goto FlyEnd -Move_BOUNCE:: +Move_BOUNCE: loadspritegfx ANIM_TAG_ROUND_SHADOW loadspritegfx ANIM_TAG_IMPACT choosetwoturnanim BounceSetUp, BounceUnleash -BounceEnd:: +BounceEnd: end -BounceSetUp:: - playsewithpan SE_M_TELEPORT, 192 +BounceSetUp: + playsewithpan SE_M_TELEPORT, SOUND_PAN_ATTACKER createsprite gBounceBallShrinkSpriteTemplate, ANIM_ATTACKER, 2, 0, 0 goto BounceEnd -BounceUnleash:: +BounceUnleash: monbg ANIM_DEF_PARTNER setalpha 12, 8 - playsewithpan SE_M_SWAGGER, 63 + playsewithpan SE_M_SWAGGER, SOUND_PAN_TARGET createsprite gBounceBallLandSpriteTemplate, ANIM_TARGET, 3 delay 7 - playsewithpan SE_M_MEGA_KICK2, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 0 - createvisualtask AnimTask_ShakeMon, 5, 1, 0, 5, 11, 1 + playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, ANIM_TARGET, 0 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 5, 11, 1 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff goto BounceEnd -Move_KARATE_CHOP:: +Move_KARATE_CHOP: loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER - monbgprio_28 1 + splitbgprio ANIM_TARGET setalpha 12, 8 - playsewithpan SE_M_DOUBLE_TEAM, 63 + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_TARGET createsprite gKarateChopSpriteTemplate, ANIM_ATTACKER, 2, -16, 0, 0, 0, 10, 1, 3, 0 waitforvisualfinish - playsewithpan SE_M_COMET_PUNCH, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 2 - createvisualtask AnimTask_ShakeMon, 5, 1, 4, 0, 6, 1 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 4, 0, 6, 1 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -Move_CROSS_CHOP:: +Move_CROSS_CHOP: loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_CROSS_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 - playsewithpan SE_M_MEGA_KICK, 63 + playsewithpan SE_M_MEGA_KICK, SOUND_PAN_TARGET createsprite gCrossChopHandSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 0 createsprite gCrossChopHandSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1 delay 40 - playsewithpan SE_M_RAZOR_WIND, 63 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, RGB_WHITE, 10, 0, 10 + playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB_WHITE, 10, RGB_BLACK, 10 createsprite gCrossImpactSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 20 - createvisualtask AnimTask_ShakeMon, 5, 1, 7, 0, 9, 1 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 7, 0, 9, 1 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -Move_JUMP_KICK:: +Move_JUMP_KICK: loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 4 delay 3 - createsprite gJumpKickSpriteTemplate, ANIM_ATTACKER, 2, -16, 8, 0, 0, 10, 1, 1, 1 - playsewithpan SE_M_JUMP_KICK, 63 + createsprite gJumpKickSpriteTemplate, ANIM_ATTACKER, 2, -16, 8, 0, 0, 10, ANIM_TARGET, 1, 1 + playsewithpan SE_M_JUMP_KICK, SOUND_PAN_TARGET waitforvisualfinish - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 1, 0, 0, 1, 1 - createvisualtask AnimTask_ShakeMon, 5, 1, 5, 0, 7, 1 - playsewithpan SE_M_COMET_PUNCH, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 1, 0, 0, ANIM_TARGET, 1 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 5, 0, 7, 1 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -Move_HI_JUMP_KICK:: +Move_HI_JUMP_KICK: loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER @@ -6632,14 +6619,14 @@ Move_HI_JUMP_KICK:: delay 10 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 3 delay 2 - createsprite gJumpKickSpriteTemplate, ANIM_ATTACKER, 2, -16, 8, 0, 0, 10, 1, 1, 1 - playsewithpan SE_M_JUMP_KICK, 63 + createsprite gJumpKickSpriteTemplate, ANIM_ATTACKER, 2, -16, 8, 0, 0, 10, ANIM_TARGET, 1, 1 + playsewithpan SE_M_JUMP_KICK, SOUND_PAN_TARGET waitforvisualfinish - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 1 - playsewithpan SE_M_VITAL_THROW2, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 1 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -28, 0, 0, 3 delay 3 - createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 3, 0, 11, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 3, 0, 11, 1 waitforvisualfinish delay 5 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 6 @@ -6648,54 +6635,55 @@ Move_HI_JUMP_KICK:: blendoff end -Move_DOUBLE_KICK:: +Move_DOUBLE_KICK: loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 createsprite gFistFootRandomPosSpriteTemplate, ANIM_ATTACKER, 3, 1, 20, 1 - createvisualtask AnimTask_ShakeMon, 5, 1, 4, 0, 6, 1 - playsewithpan SE_M_VITAL_THROW2, 63 - waitforvisualfinish + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 4, 0, 6, 1 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET waitforvisualfinish + waitforvisualfinish @ Redundant clearmonbg ANIM_DEF_PARTNER blendoff end -Move_TRIPLE_KICK:: +Move_TRIPLE_KICK: loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 - playsewithpan SE_M_VITAL_THROW2, 63 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET jumpifmoveturn 0, TripleKickLeft jumpifmoveturn 1, TripleKickRight goto TripleKickCenter -TripleKickContinue:: + +TripleKickContinue: waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -TripleKickLeft:: +TripleKickLeft: createsprite gFistFootSpriteTemplate, ANIM_TARGET, 4, -16, -8, 20, 1, 1 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -16, -16, 1, 2 - createvisualtask AnimTask_ShakeMon, 5, 1, 4, 0, 6, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -16, -16, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 4, 0, 6, 1 goto TripleKickContinue -TripleKickRight:: +TripleKickRight: createsprite gFistFootSpriteTemplate, ANIM_TARGET, 4, 8, 8, 20, 1, 1 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 8, 0, 1, 2 - createvisualtask AnimTask_ShakeMon, 5, 1, 4, 0, 6, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 8, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 4, 0, 6, 1 goto TripleKickContinue -TripleKickCenter:: +TripleKickCenter: createsprite gFistFootSpriteTemplate, ANIM_TARGET, 4, 0, 0, 20, 1, 1 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, -8, 1, 1 - createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, -8, ANIM_TARGET, 1 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 6, 0, 8, 1 goto TripleKickContinue -Move_DYNAMIC_PUNCH:: +Move_DYNAMIC_PUNCH: loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_EXPLOSION @@ -6703,55 +6691,55 @@ Move_DYNAMIC_PUNCH:: delay 1 monbg ANIM_DEF_PARTNER setalpha 12, 8 - playsewithpan SE_M_VITAL_THROW2, 63 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET createsprite gFistFootSpriteTemplate, ANIM_TARGET, 3, 0, 0, 20, 1, 0 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 0 - createvisualtask AnimTask_ShakeMon, 5, 1, 5, 0, 7, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, ANIM_TARGET, 0 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 5, 0, 7, 1 delay 1 waitsound - playsewithpan SE_M_SELF_DESTRUCT, 63 - createvisualtask AnimTask_ShakeMon2, 5, 1, 5, 0, 28, 1 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 5, 0, 28, 1 createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 1 delay 6 - playsewithpan SE_M_SELF_DESTRUCT, 63 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 24, -24, 1, 1 delay 6 - playsewithpan SE_M_SELF_DESTRUCT, 63 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, -16, 16, 1, 1 delay 6 - playsewithpan SE_M_SELF_DESTRUCT, 63 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, -24, -12, 1, 1 delay 6 - playsewithpan SE_M_SELF_DESTRUCT, 63 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 16, 16, 1, 1 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -Move_COUNTER:: +Move_COUNTER: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET monbg ANIM_DEF_PARTNER setalpha 12, 8 - createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 18, 6, 1, 4 - playsewithpan SE_M_VITAL_THROW, 192 + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 18, 6, 1, 4 + playsewithpan SE_M_VITAL_THROW, SOUND_PAN_ATTACKER waitforvisualfinish createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, 0, 0, 4 delay 4 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -15, 18, 1, 0 - playsewithpan SE_M_VITAL_THROW2, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -15, 18, ANIM_TARGET, 0 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET delay 1 - createvisualtask AnimTask_ShakeMon, 2, 1, 5, 0, 25, 1 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 25, 1 createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 3, -15, 18, 8, 1, 0 delay 3 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, -4, 1, 0 - playsewithpan SE_M_VITAL_THROW2, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, -4, ANIM_TARGET, 0 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET delay 1 createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 3, 0, -4, 8, 1, 0 delay 3 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 15, 9, 1, 0 - playsewithpan SE_M_VITAL_THROW2, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 15, 9, ANIM_TARGET, 0 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET delay 1 createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 3, 15, 9, 8, 1, 0 delay 5 @@ -6761,17 +6749,17 @@ Move_COUNTER:: blendoff end -Move_VITAL_THROW:: +Move_VITAL_THROW: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 - playsewithpan SE_M_VITAL_THROW, 192 - createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 12, 4, 1, 2 + playsewithpan SE_M_VITAL_THROW, SOUND_PAN_ATTACKER + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 12, 4, 1, 2 waitforvisualfinish createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, 0, 0, 4 delay 2 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 1 - playsewithpan SE_M_VITAL_THROW2, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 1 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET delay 1 createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -24, 0, 0, 4 waitforvisualfinish @@ -6784,19 +6772,19 @@ Move_VITAL_THROW:: blendoff end -Move_ROCK_SMASH:: +Move_ROCK_SMASH: loadspritegfx ANIM_TAG_ROCKS loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET monbg ANIM_DEF_PARTNER setalpha 12, 8 delay 1 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 1 createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 8, 1, 0 - playsewithpan SE_M_VITAL_THROW2, 63 - createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 5, 1 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 5, 1 waitforvisualfinish - playsewithpan SE_M_ROCK_THROW, 63 + playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET createsprite gRockFragmentSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 20, 24, 14, 2 createsprite gRockFragmentSpriteTemplate, ANIM_ATTACKER, 2, 5, 0, -20, 24, 14, 1 createsprite gRockFragmentSpriteTemplate, ANIM_ATTACKER, 2, 0, 5, 20, -24, 14, 2 @@ -6805,26 +6793,26 @@ Move_ROCK_SMASH:: createsprite gRockFragmentSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 30, -18, 8, 2 createsprite gRockFragmentSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, -30, 18, 8, 2 createsprite gRockFragmentSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, -30, -18, 8, 2 - createvisualtask AnimTask_ShakeMon, 2, 1, 0, 3, 7, 1 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 7, 1 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -Move_SUBMISSION:: +Move_SUBMISSION: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 - playsewithpan SE_M_DOUBLE_TEAM, 192 - waitplaysewithpan SE_M_COMET_PUNCH, 63, 10 - waitplaysewithpan SE_M_DOUBLE_TEAM, 192, 20 - waitplaysewithpan SE_M_COMET_PUNCH, 63, 30 - waitplaysewithpan SE_M_DOUBLE_TEAM, 192, 40 - waitplaysewithpan SE_M_COMET_PUNCH, 63, 50 - waitplaysewithpan SE_M_DOUBLE_TEAM, 192, 60 - waitplaysewithpan SE_M_COMET_PUNCH, 63, 70 - waitplaysewithpan SE_M_DOUBLE_TEAM, 192, 80 - waitplaysewithpan SE_M_COMET_PUNCH, 63, 90 + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER + waitplaysewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET, 10 + waitplaysewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER, 20 + waitplaysewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET, 30 + waitplaysewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER, 40 + waitplaysewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET, 50 + waitplaysewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER, 60 + waitplaysewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET, 70 + waitplaysewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER, 80 + waitplaysewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET, 90 createvisualtask AnimTask_TranslateMonElliptical, 2, 0, -18, 6, 6, 4 createvisualtask AnimTask_TranslateMonElliptical, 2, 1, 18, 6, 6, 4 call SubmissionHit @@ -6835,43 +6823,44 @@ Move_SUBMISSION:: blendoff end -SubmissionHit:: - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, -12, 1, 1 +SubmissionHit: + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, -12, ANIM_TARGET, 1 delay 8 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -12, 8, 1, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -12, 8, ANIM_TARGET, 1 delay 8 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 12, 0, 1, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 12, 0, ANIM_TARGET, 1 delay 8 return -Move_SUNNY_DAY:: +@ Also used by Sunny weather +Move_SUNNY_DAY: loadspritegfx ANIM_TAG_SUNLIGHT monbg ANIM_ATK_PARTNER setalpha 13, 3 - createvisualtask AnimTask_BlendSelected, 10, 1 | (0xF << 7), 1, 0, 6, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_BATTLERS_2, 1, 0, 6, RGB_WHITE waitforvisualfinish - panse_26 SE_M_PETAL_DANCE, 192, 63, 1, 0 + panse_adjustnone SE_M_PETAL_DANCE, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +1, 0 call SunnyDayLightRay call SunnyDayLightRay call SunnyDayLightRay call SunnyDayLightRay waitforvisualfinish - createvisualtask AnimTask_BlendSelected, 10, 1 | (0xF << 7), 1, 6, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_BATTLERS_2, 1, 6, 0, RGB_WHITE waitforvisualfinish clearmonbg ANIM_ATK_PARTNER blendoff end -SunnyDayLightRay:: +SunnyDayLightRay: createsprite gSunlightRaySpriteTemplate, ANIM_ATTACKER, 40 delay 6 return -Move_COTTON_SPORE:: +Move_COTTON_SPORE: loadspritegfx ANIM_TAG_SPORE monbg ANIM_DEF_PARTNER - monbgprio_28 1 - loopsewithpan SE_M_POISON_POWDER, 63, 18, 10 + splitbgprio ANIM_TARGET + loopsewithpan SE_M_POISON_POWDER, SOUND_PAN_TARGET, 18, 10 call CreateCottonSpores call CreateCottonSpores call CreateCottonSpores @@ -6879,7 +6868,7 @@ Move_COTTON_SPORE:: clearmonbg ANIM_DEF_PARTNER end -CreateCottonSpores:: +CreateCottonSpores: createsprite gSporeParticleSpriteTemplate, ANIM_ATTACKER, 2, 0, -20, 85, 80, 0 delay 12 createsprite gSporeParticleSpriteTemplate, ANIM_ATTACKER, 2, 0, -10, 170, 80, 0 @@ -6888,12 +6877,12 @@ CreateCottonSpores:: delay 12 return -Move_SPORE:: +Move_SPORE: loadspritegfx ANIM_TAG_SPORE monbg ANIM_DEF_PARTNER setalpha 12, 8 - createvisualtask AnimTask_SporeDoubleBattle, 2, - loopsewithpan SE_M_POISON_POWDER, 63, 16, 11 + createvisualtask AnimTask_SporeDoubleBattle, 2 + loopsewithpan SE_M_POISON_POWDER, SOUND_PAN_TARGET, 16, 11 call CreateSpore call CreateSpore call CreateSpore @@ -6903,7 +6892,7 @@ Move_SPORE:: blendoff end -CreateSpore:: +CreateSpore: createsprite gSporeParticleSpriteTemplate, ANIM_TARGET, 2, 0, -20, 85, 80, 1 delay 12 createsprite gSporeParticleSpriteTemplate, ANIM_TARGET, 2, 0, -10, 170, 80, 1 @@ -6912,13 +6901,13 @@ CreateSpore:: delay 12 return -Move_PETAL_DANCE:: +Move_PETAL_DANCE: loadspritegfx ANIM_TAG_FLOWER loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 - playsewithpan SE_M_PETAL_DANCE, 192 - createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 12, 6, 6, 3 + 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 @@ -6939,9 +6928,9 @@ Move_PETAL_DANCE:: waitforvisualfinish createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 24, 0, 0, 5 delay 3 - playsewithpan SE_M_MEGA_KICK2, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 0 - createvisualtask AnimTask_ShakeMon, 2, 1, 6, 0, 8, 1 + playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 0 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 6, 0, 8, 1 waitforvisualfinish delay 8 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 7 @@ -6950,14 +6939,14 @@ Move_PETAL_DANCE:: blendoff end -Move_RAZOR_LEAF:: +Move_RAZOR_LEAF: loadspritegfx ANIM_TAG_LEAF loadspritegfx ANIM_TAG_RAZOR_LEAF loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 delay 1 - loopsewithpan SE_M_POISON_POWDER, 192, 10, 5 + loopsewithpan SE_M_POISON_POWDER, SOUND_PAN_ATTACKER, 10, 5 createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, -3, -2, 10 delay 2 createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, -1, -1, 15 @@ -6978,19 +6967,22 @@ Move_RAZOR_LEAF:: delay 2 createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, -3, -5, 8 delay 60 - playsewithpan SE_M_RAZOR_WIND2, 192 + 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 delay 20 - playsewithpan SE_M_RAZOR_WIND, 63 - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 8, 1 - createvisualtask AnimTask_ShakeMon2, 2, 3, 2, 0, 8, 1 + playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 8, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_DEF_PARTNER, 2, 0, 8, 1 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -Move_ANCIENT_POWER:: +Move_NATURE_POWER: + @ No actual animation, uses the animation of a move from sNaturePowerMoves instead + +Move_ANCIENT_POWER: loadspritegfx ANIM_TAG_ROCKS loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER @@ -7002,8 +6994,8 @@ Move_ANCIENT_POWER:: createsprite gAncientPowerRockSpriteTemplate, ANIM_ATTACKER, 2, -20, 32, -48, 50, 2 createsprite gAncientPowerRockSpriteTemplate, ANIM_ATTACKER, 2, 20, 32, -28, 60, 1 createsprite gAncientPowerRockSpriteTemplate, ANIM_ATTACKER, 2, 0, 32, -28, 30, 4 - createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 30, 1 - playsewithpan SE_M_DRAGON_RAGE, 192 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 30, 1 + playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER delay 10 createsprite gAncientPowerRockSpriteTemplate, ANIM_ATTACKER, 2, 15, 32, -48, 25, 5 createsprite gAncientPowerRockSpriteTemplate, ANIM_ATTACKER, 2, -10, 32, -42, 30, 4 @@ -7013,9 +7005,9 @@ Move_ANCIENT_POWER:: waitforvisualfinish createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 16, 0, 0, 4 delay 3 - playsewithpan SE_M_SELF_DESTRUCT, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 1 - createvisualtask AnimTask_ShakeMon2, 2, 1, 3, 0, 6, 1 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 3, 0, 6, 1 waitforvisualfinish createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 7 waitforvisualfinish @@ -7023,13 +7015,13 @@ Move_ANCIENT_POWER:: blendoff end -Move_OCTAZOOKA:: +Move_OCTAZOOKA: loadspritegfx ANIM_TAG_GRAY_SMOKE loadspritegfx ANIM_TAG_BLACK_BALL - playsewithpan SE_M_MEGA_KICK2, 192 + playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_ATTACKER createsprite gOctazookaBallSpriteTemplate, ANIM_TARGET, 2, 20, 0, 0, 0, 20, 0 waitforvisualfinish - playsewithpan SE_M_SELF_DESTRUCT, 63 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 2, 8, 8, 1, 0 delay 2 createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 2, -8, -8, 1, 0 @@ -7040,11 +7032,11 @@ Move_OCTAZOOKA:: waitforvisualfinish end -Move_MIST:: +Move_MIST: loadspritegfx ANIM_TAG_MIST_CLOUD monbg ANIM_ATK_PARTNER setalpha 12, 8 - loopsewithpan SE_M_MIST, 192, 20, 15 + loopsewithpan SE_M_MIST, SOUND_PAN_ATTACKER, 20, 15 call MistCloud call MistCloud call MistCloud @@ -7053,54 +7045,54 @@ Move_MIST:: call MistCloud call MistCloud delay 32 - createvisualtask AnimTask_CurseBlendEffect, 2, 10, 8, 2, 0, 14, RGB_WHITE + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATK_SIDE, 8, 2, 0, 14, RGB_WHITE waitforvisualfinish clearmonbg ANIM_ATK_PARTNER blendoff end -MistCloud:: +MistCloud: createsprite gMistCloudSpriteTemplate, ANIM_ATTACKER, 2, 0, -24, 48, 240, 0, 1 delay 7 return -Move_HAZE:: +Move_HAZE: waitforvisualfinish playsewithpan SE_M_HAZE, 0 - createvisualtask AnimTask_Haze1, 5, + createvisualtask AnimTask_HazeScrollingFog, 5 delay 30 - createvisualtask AnimTask_BlendSelected, 10, 0 | (0xF << 7), 2, 0, 16, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BATTLERS_2, 2, 0, 16, RGB_BLACK delay 90 - createvisualtask AnimTask_BlendSelected, 10, 0 | (0xF << 7), 1, 16, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BATTLERS_2, 1, 16, 0, RGB_BLACK end -Move_FIRE_PUNCH:: +Move_FIRE_PUNCH: loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_SMALL_EMBER loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 - createvisualtask AnimTask_BlendSelected, 10, 4, 2, 0, 9, RGB(31, 0, 0) + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 9, RGB_RED createsprite gFireSpiralInwardSpriteTemplate, ANIM_TARGET, 1, 0 createsprite gFireSpiralInwardSpriteTemplate, ANIM_TARGET, 1, 64 createsprite gFireSpiralInwardSpriteTemplate, ANIM_TARGET, 1, 128 createsprite gFireSpiralInwardSpriteTemplate, ANIM_TARGET, 1, 196 - playsewithpan SE_M_FLAME_WHEEL, 63 + playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_TARGET waitforvisualfinish createsprite gFistFootSpriteTemplate, ANIM_TARGET, 3, 0, 0, 8, 1, 0 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 1 - createvisualtask AnimTask_ShakeMon, 2, 1, 0, 3, 15, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, ANIM_TARGET, 1 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 15, 1 call FireSpreadEffect delay 4 - playsewithpan SE_M_FIRE_PUNCH, 63 + playsewithpan SE_M_FIRE_PUNCH, SOUND_PAN_TARGET waitforvisualfinish - createvisualtask AnimTask_BlendSelected, 10, 4, 0, 9, 0, RGB(31, 0, 0) + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 0, 9, 0, RGB_RED waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -FireSpreadEffect:: +FireSpreadEffect: createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 1, 0, 10, 192, 176, 40 createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 1, 0, 10, -192, 240, 40 createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 1, 0, 10, 192, -160, 40 @@ -7110,18 +7102,18 @@ FireSpreadEffect:: createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 1, 0, 10, 112, -128, 40 return -Move_LEER:: +Move_LEER: loadspritegfx ANIM_TAG_LEER monbg ANIM_ATTACKER - monbgprio_28 0 + splitbgprio ANIM_ATTACKER setalpha 8, 8 - playsewithpan SE_M_LEER, 192 + playsewithpan SE_M_LEER, SOUND_PAN_ATTACKER createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, 24, -12 - createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 10, 0, 1 + createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 10, ANIM_ATTACKER, 1 waitforvisualfinish delay 10 - createvisualtask AnimTask_ShakeMon2, 2, 1, 1, 0, 9, 1 - createvisualtask AnimTask_ShakeMon2, 2, 3, 1, 0, 9, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 1, 0, 9, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_DEF_PARTNER, 1, 0, 9, 1 waitforvisualfinish clearmonbg ANIM_ATTACKER blendoff @@ -7129,20 +7121,20 @@ Move_LEER:: waitforvisualfinish end -Move_DREAM_EATER:: +Move_DREAM_EATER: loadspritegfx ANIM_TAG_ORBS loadspritegfx ANIM_TAG_BLUE_STAR monbg ANIM_DEF_PARTNER - monbgprio_2A 1 - playsewithpan SE_M_PSYBEAM, 192 + splitbgprio_foes ANIM_TARGET + playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER call SetPsychicBackground setalpha 8, 8 - playsewithpan SE_M_MINIMIZE, 63 - createvisualtask AnimTask_ShakeMon, 2, 1, 5, 0, 15, 1 - createvisualtask AnimTask_ScaleMonAndRestore, 5, -6, -6, 15, 1, 1 + playsewithpan SE_M_MINIMIZE, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 15, 1 + createvisualtask AnimTask_ScaleMonAndRestore, 5, -6, -6, 15, ANIM_TARGET, 1 waitforvisualfinish setalpha 12, 8 - createvisualtask AnimTask_ShakeMon, 2, 1, 0, 2, 25, 1 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 2, 25, 1 call DreamEaterAbsorb waitforvisualfinish delay 15 @@ -7151,115 +7143,115 @@ Move_DREAM_EATER:: clearmonbg ANIM_DEF_PARTNER blendoff delay 1 - call UnsetPsychicBg + call UnsetPsychicBackground end -DreamEaterAbsorb:: - playsewithpan SE_M_SWAGGER, 63 +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 delay 4 - playsewithpan SE_M_SWAGGER, 63 + 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 delay 4 - playsewithpan SE_M_SWAGGER, 63 + 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 delay 4 - playsewithpan SE_M_SWAGGER, 63 + 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 delay 4 - playsewithpan SE_M_SWAGGER, 63 + 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 delay 4 - playsewithpan SE_M_SWAGGER, 63 + 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 delay 4 - playsewithpan SE_M_SWAGGER, 63 + 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 delay 4 - playsewithpan SE_M_SWAGGER, 63 + 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 delay 4 return -Move_POISON_GAS:: +Move_POISON_GAS: loadspritegfx ANIM_TAG_PURPLE_GAS_CLOUD loadspritegfx ANIM_TAG_POISON_BUBBLE delay 0 monbg ANIM_DEF_PARTNER - monbgprio_29 + splitbgprio_all setalpha 12, 8 delay 0 - playsewithpan SE_M_MIST, 192 + playsewithpan SE_M_MIST, SOUND_PAN_ATTACKER createsprite gPoisonGasCloudSpriteTemplate, ANIM_TARGET, 0, 64, 0, 0, -32, -6, 4192, 1072, 0 delay 4 - playsewithpan SE_M_MIST, 192 + playsewithpan SE_M_MIST, SOUND_PAN_ATTACKER createsprite gPoisonGasCloudSpriteTemplate, ANIM_TARGET, 0, 64, 0, 0, -32, -6, 4192, 1072, 0 delay 4 - playsewithpan SE_M_MIST, 192 + playsewithpan SE_M_MIST, SOUND_PAN_ATTACKER createsprite gPoisonGasCloudSpriteTemplate, ANIM_TARGET, 0, 64, 0, 0, -32, -6, 4192, 1072, 0 delay 4 - playsewithpan SE_M_MIST, 192 + playsewithpan SE_M_MIST, SOUND_PAN_ATTACKER createsprite gPoisonGasCloudSpriteTemplate, ANIM_TARGET, 0, 64, 0, 0, -32, -6, 4192, 1072, 0 delay 4 - playsewithpan SE_M_MIST, 192 + playsewithpan SE_M_MIST, SOUND_PAN_ATTACKER createsprite gPoisonGasCloudSpriteTemplate, ANIM_TARGET, 0, 64, 0, 0, -32, -6, 4192, 1072, 0 delay 4 - playsewithpan SE_M_MIST, 192 + playsewithpan SE_M_MIST, SOUND_PAN_ATTACKER createsprite gPoisonGasCloudSpriteTemplate, ANIM_TARGET, 0, 64, 0, 0, -32, -6, 4192, 1072, 0 delay 40 - loopsewithpan SE_M_MIST, 63, 28, 6 - createvisualtask AnimTask_CurseBlendEffect, 2, 4, 6, 2, 0, 12, 26650 + loopsewithpan SE_M_MIST, SOUND_PAN_TARGET, 28, 6 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 6, 2, 0, 12, RGB(26, 0, 26) waitforvisualfinish blendoff clearmonbg ANIM_DEF_PARTNER delay 0 end -Move_BIND:: - createvisualtask AnimTask_SwayMon, 5, 0, 6, 3328, 4, 0 +Move_BIND: + createvisualtask AnimTask_SwayMon, 5, 0, 6, 3328, 4, ANIM_ATTACKER goto BindWrap -BindWrap:: - playsewithpan SE_M_BIND, 63 +BindWrap: + playsewithpan SE_M_BIND, SOUND_PAN_TARGET call BindWrapSqueezeTarget call BindWrapSqueezeTarget waitforvisualfinish end -BindWrapSqueezeTarget:: - createvisualtask AnimTask_ScaleMonAndRestore, 5, 10, -5, 5, 1, 0 +BindWrapSqueezeTarget: + createvisualtask AnimTask_ScaleMonAndRestore, 5, 10, -5, 5, ANIM_TARGET, 0 delay 16 return -Move_WRAP:: - createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 6, 4, 2, 4 +Move_WRAP: + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 6, 4, 2, 4 goto BindWrap -Move_PSYBEAM:: +Move_PSYBEAM: loadspritegfx ANIM_TAG_GOLD_RING - playsewithpan SE_M_PSYBEAM, 192 + playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER call SetPsychicBackground - createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_PSYBEAM2, -64, 63, 3, 4, 0, 15 + createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_PSYBEAM2, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 3, 4, 0, 15 call PsybeamRings call PsybeamRings - createvisualtask AnimTask_SwayMon, 5, 0, 6, 2048, 4, 1 - createvisualtask AnimTask_CurseBlendEffect, 2, 4, 2, 2, 0, 12, 32351 + createvisualtask AnimTask_SwayMon, 5, 0, 6, 2048, 4, ANIM_TARGET + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 2, 2, 0, 12, RGB(31, 18, 31) call PsybeamRings call PsybeamRings call PsybeamRings @@ -7271,62 +7263,62 @@ Move_PSYBEAM:: call PsybeamRings waitforvisualfinish delay 1 - call UnsetPsychicBg + call UnsetPsychicBackground end -PsybeamRings:: +PsybeamRings: createsprite gGoldRingSpriteTemplate, ANIM_TARGET, 2, 16, 0, 0, 0, 13, 0 delay 4 return -Move_HYPNOSIS:: +Move_HYPNOSIS: loadspritegfx ANIM_TAG_GOLD_RING call SetPsychicBackground call HypnosisRings call HypnosisRings call HypnosisRings - createvisualtask AnimTask_CurseBlendEffect, 2, 4, 2, 2, 0, 12, 32351 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 2, 2, 0, 12, RGB(31, 18, 31) waitforvisualfinish delay 1 - call UnsetPsychicBg + call UnsetPsychicBackground end -HypnosisRings:: - playsewithpan SE_M_SUPERSONIC, 192 +HypnosisRings: + playsewithpan SE_M_SUPERSONIC, SOUND_PAN_ATTACKER createsprite gGoldRingSpriteTemplate, ANIM_TARGET, 2, 0, 8, 0, 8, 27, 0 createsprite gGoldRingSpriteTemplate, ANIM_TARGET, 2, 16, -8, 0, -8, 27, 0 delay 6 return -Move_PSYWAVE:: +Move_PSYWAVE: loadspritegfx ANIM_TAG_BLUE_RING - playsewithpan SE_M_PSYBEAM, 192 + playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER call SetPsychicBackground createvisualtask AnimTask_StartSinAnimTimer, 5, 100 - createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_TELEPORT, -64, 63, 2, 9, 0, 10 + createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_TELEPORT, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 2, 9, 0, 10 call PsywaveRings call PsywaveRings - createvisualtask AnimTask_CurseBlendEffect, 2, 4, 1, 4, 0, 12, 32351 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 1, 4, 0, 12, RGB(31, 18, 31) call PsywaveRings call PsywaveRings call PsywaveRings call PsywaveRings waitforvisualfinish delay 1 - call UnsetPsychicBg + call UnsetPsychicBackground end -PsywaveRings:: +PsywaveRings: createsprite gPsywaveRingSpriteTemplate, ANIM_TARGET, 3, 10, 10, 0, 16 delay 4 createsprite gPsywaveRingSpriteTemplate, ANIM_TARGET, 3, 10, 10, 0, 16 delay 4 return -Move_ZAP_CANNON:: +Move_ZAP_CANNON: loadspritegfx ANIM_TAG_BLACK_BALL_2 loadspritegfx ANIM_TAG_SPARK_2 - playsewithpan SE_M_THUNDER_WAVE, 192 + playsewithpan SE_M_THUNDER_WAVE, SOUND_PAN_ATTACKER createsprite gZapCannonBallSpriteTemplate, ANIM_TARGET, 3, 10, 0, 0, 0, 30, 0 createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 0, 40, 0 createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 64, 40, 1 @@ -7337,23 +7329,23 @@ Move_ZAP_CANNON:: createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 8, 30, 160, 40, 0 createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 8, 30, 224, 40, 2 waitforvisualfinish - createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 5, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 5, 1 delay 15 - waitplaysewithpan SE_M_THUNDERBOLT2, 63, 19 + waitplaysewithpan SE_M_THUNDERBOLT2, SOUND_PAN_TARGET, 19 call ElectricityEffect waitforvisualfinish end -Move_STEEL_WING:: +Move_STEEL_WING: loadspritegfx ANIM_TAG_GUST loadspritegfx ANIM_TAG_IMPACT - loopsewithpan SE_M_HARDEN, 192, 28, 2 + loopsewithpan SE_M_HARDEN, SOUND_PAN_ATTACKER, 28, 2 createvisualtask AnimTask_MetallicShine, 5, 0, 0, 0 waitforvisualfinish monbg ANIM_DEF_PARTNER - monbgprio_28 1 + splitbgprio ANIM_TARGET setalpha 12, 8 - loopsewithpan SE_M_WING_ATTACK, 192, 20, 2 + loopsewithpan SE_M_WING_ATTACK, SOUND_PAN_ATTACKER, 20, 2 createvisualtask AnimTask_TranslateMonElliptical, 2, 0, 12, 4, 1, 4 createvisualtask AnimTask_AnimateGustTornadoPalette, 5, 1, 70 createsprite gGustToTargetSpriteTemplate, ANIM_ATTACKER, 2, -25, 0, 0, 0, 20 @@ -7361,9 +7353,9 @@ Move_STEEL_WING:: delay 24 createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 24, 0, 0, 9 delay 17 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 16, 0, 1, 1 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -16, 0, 1, 1 - playsewithpan SE_M_RAZOR_WIND, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 16, 0, ANIM_TARGET, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -16, 0, ANIM_TARGET, 1 + playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET waitforvisualfinish createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 11 waitforvisualfinish @@ -7371,79 +7363,79 @@ Move_STEEL_WING:: blendoff end -Move_IRON_TAIL:: +Move_IRON_TAIL: loadspritegfx ANIM_TAG_IMPACT - loopsewithpan SE_M_HARDEN, 192, 28, 2 + loopsewithpan SE_M_HARDEN, SOUND_PAN_ATTACKER, 28, 2 createvisualtask AnimTask_MetallicShine, 5, 1, 0, 0 waitforvisualfinish - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 4 delay 6 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 2 - createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1 - playsewithpan SE_M_VITAL_THROW2, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET waitforvisualfinish - createvisualtask AnimTask_SetGreyscaleOrOriginalPal, 5, 0, 1 - clearmonbg 1 + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_ATTACKER, 1 + clearmonbg ANIM_TARGET blendoff waitforvisualfinish end -Move_POISON_TAIL:: +Move_POISON_TAIL: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_POISON_BUBBLE - loopsewithpan SE_M_HARDEN, 192, 28, 2 - createvisualtask AnimTask_MetallicShine, 5, 1, 1, 23768 + loopsewithpan SE_M_HARDEN, SOUND_PAN_ATTACKER, 28, 2 + createvisualtask AnimTask_MetallicShine, 5, 1, 1, RGB(24, 6, 23) waitforvisualfinish - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 4 delay 6 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 2 - createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1 - playsewithpan SE_M_VITAL_THROW2, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET waitforvisualfinish - createvisualtask AnimTask_SetGreyscaleOrOriginalPal, 5, 0, 1 - clearmonbg 1 + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_ATTACKER, 1 + clearmonbg ANIM_TARGET blendoff call PoisonBubblesEffect waitforvisualfinish end -Move_METAL_CLAW:: +Move_METAL_CLAW: loadspritegfx ANIM_TAG_CLAW_SLASH - loopsewithpan SE_M_HARDEN, 192, 28, 2 + loopsewithpan SE_M_HARDEN, SOUND_PAN_ATTACKER, 28, 2 createvisualtask AnimTask_MetallicShine, 5, 0, 0, 0 waitforvisualfinish createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 6, 4 delay 2 - playsewithpan SE_M_RAZOR_WIND, 63 + playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, -10, -10, 0 createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, -10, 10, 0 createsprite gShakeMonOrTerrainSpriteTemplate, ANIM_ATTACKER, 2, -4, 1, 10, 3, 1 delay 8 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 6, 4 delay 2 - playsewithpan SE_M_RAZOR_WIND, 63 + playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, 10, -10, 1 createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, 10, 10, 1 createsprite gShakeMonOrTerrainSpriteTemplate, ANIM_ATTACKER, 2, -4, 1, 10, 3, 1 waitforvisualfinish end -Move_NIGHT_SHADE:: +Move_NIGHT_SHADE: monbg ANIM_ATTACKER - monbgprio_28 0 - playsewithpan SE_M_PSYBEAM, 192 - fadetobg 2 + splitbgprio ANIM_ATTACKER + playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER + fadetobg BG_GHOST waitbgfadein delay 10 - playsewithpan SE_M_LEER, 192 + playsewithpan SE_M_LEER, SOUND_PAN_ATTACKER createvisualtask AnimTask_NightShadeClone, 5, 85 delay 70 - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 12, 1 - createvisualtask AnimTask_CurseBlendEffect, 2, 4, 0, 2, 0, 13, 0 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 12, 1 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 0, 2, 0, 13, RGB_BLACK waitforvisualfinish clearmonbg ANIM_ATTACKER delay 1 @@ -7451,117 +7443,117 @@ Move_NIGHT_SHADE:: waitbgfadein end -Move_EGG_BOMB:: +Move_EGG_BOMB: loadspritegfx ANIM_TAG_EXPLOSION loadspritegfx ANIM_TAG_LARGE_FRESH_EGG - playsewithpan SE_M_TAIL_WHIP, 192 + playsewithpan SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER createsprite gEggThrowSpriteTemplate, ANIM_TARGET, 2, 10, 0, 0, 0, 25, -32 waitforvisualfinish - createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 16, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 16, 1 createsprite gExplosionSpriteTemplate, ANIM_TARGET, 4, 6, 5, 1, 0 - playsewithpan SE_M_SELF_DESTRUCT, 63 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET delay 3 createsprite gExplosionSpriteTemplate, ANIM_TARGET, 4, -16, -15, 1, 0 - playsewithpan SE_M_SELF_DESTRUCT, 63 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET delay 3 createsprite gExplosionSpriteTemplate, ANIM_TARGET, 4, 16, -5, 1, 0 - playsewithpan SE_M_SELF_DESTRUCT, 63 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET delay 3 createsprite gExplosionSpriteTemplate, ANIM_TARGET, 4, -12, 18, 1, 0 - playsewithpan SE_M_SELF_DESTRUCT, 63 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET delay 3 createsprite gExplosionSpriteTemplate, ANIM_TARGET, 4, 0, 5, 1, 0 - playsewithpan SE_M_SELF_DESTRUCT, 63 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET delay 3 waitforvisualfinish end -Move_SHADOW_BALL:: +Move_SHADOW_BALL: loadspritegfx ANIM_TAG_SHADOW_BALL - fadetobg 2 + fadetobg BG_GHOST waitbgfadein delay 15 - createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_MIST, -64, 63, 5, 5, 0, 5 + createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_MIST, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 5, 5, 0, 5 createsprite gShadowBallSpriteTemplate, ANIM_TARGET, 2, 16, 16, 8 waitforvisualfinish - playsewithpan SE_M_SAND_ATTACK, 63 - createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 8, 1 + playsewithpan SE_M_SAND_ATTACK, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 8, 1 waitforvisualfinish restorebg waitbgfadein end -Move_LICK:: +Move_LICK: loadspritegfx ANIM_TAG_LICK delay 15 - playsewithpan SE_M_LICK, 63 + playsewithpan SE_M_LICK, SOUND_PAN_TARGET createsprite gLickSpriteTemplate, ANIM_TARGET, 2, 0, 0 - createvisualtask AnimTask_ShakeMon2, 2, 1, 1, 0, 16, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 1, 0, 16, 1 waitforvisualfinish end -Move_FOCUS_ENERGY:: +Move_FOCUS_ENERGY: loadspritegfx ANIM_TAG_FOCUS_ENERGY - playsewithpan SE_M_DRAGON_RAGE, 192 + playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER call EndureEffect delay 8 - createvisualtask AnimTask_CurseBlendEffect, 2, 2, 2, 2, 0, 11, RGB_WHITE - createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 32, 1 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 2, 2, 0, 11, RGB_WHITE + createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 32, 1 call EndureEffect delay 8 call EndureEffect waitforvisualfinish end -Move_BIDE:: - choosetwoturnanim BattleAnimScript_Bide_Setup, BattleAnimScript_Bide_Release +Move_BIDE: + choosetwoturnanim BideSetUp, BideUnleash end -BattleAnimScript_Bide_Setup:: - loopsewithpan SE_M_TAKE_DOWN, 192, 9, 2 - createvisualtask AnimTask_CurseBlendEffect, 2, 2, 2, 2, 0, 11, 31 - createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 32, 1 +BideSetUp: + loopsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER, 9, 2 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 2, 2, 0, 11, RGB_RED + createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 32, 1 waitforvisualfinish end -BattleAnimScript_Bide_Release:: +BideUnleash: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 - loopsewithpan SE_M_TAKE_DOWN, 192, 9, 2 - createvisualtask AnimTask_BlendSelected, 10, 2, 2, 0, 11, RGB(31, 0, 0) - createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 32, 1 + loopsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER, 9, 2 + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 2, 0, 11, RGB_RED + createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 32, 1 waitforvisualfinish createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 24, 0, 0, 4 waitforvisualfinish - createvisualtask AnimTask_ShakeMonInPlace, 2, 0, 2, 0, 12, 1 - createvisualtask AnimTask_ShakeMon2, 2, 1, 3, 0, 16, 1 - playsewithpan SE_M_COMET_PUNCH, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 1, 18, -8, 1, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 2, 0, 12, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 3, 0, 16, 1 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 1, 18, -8, ANIM_TARGET, 1 delay 5 - playsewithpan SE_M_COMET_PUNCH, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 1, -18, 8, 1, 1 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 1, -18, 8, ANIM_TARGET, 1 delay 5 - playsewithpan SE_M_COMET_PUNCH, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 1, -8, -5, 1, 1 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 1, -8, -5, ANIM_TARGET, 1 waitforvisualfinish delay 5 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 7 waitforvisualfinish - createvisualtask AnimTask_BlendSelected, 10, 2, 2, 11, 0, RGB(31, 0, 0) + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 2, 11, 0, RGB_RED waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -Move_STRING_SHOT:: +Move_STRING_SHOT: loadspritegfx ANIM_TAG_STRING loadspritegfx ANIM_TAG_WEB_THREAD monbg ANIM_DEF_PARTNER delay 0 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, 1, 2, 0, 9, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, F_PAL_BG, 2, 0, 9, RGB_BLACK waitforvisualfinish - loopsewithpan SE_M_STRING_SHOT, 192, 9, 6 + loopsewithpan SE_M_STRING_SHOT, SOUND_PAN_ATTACKER, 9, 6 call StringShotThread call StringShotThread call StringShotThread @@ -7581,7 +7573,7 @@ Move_STRING_SHOT:: call StringShotThread call StringShotThread waitforvisualfinish - playsewithpan SE_M_STRING_SHOT2, 63 + playsewithpan SE_M_STRING_SHOT2, SOUND_PAN_TARGET createsprite gStringWrapSpriteTemplate, ANIM_TARGET, 2, 0, 10 delay 4 createsprite gStringWrapSpriteTemplate, ANIM_TARGET, 2, 0, -2 @@ -7591,23 +7583,23 @@ Move_STRING_SHOT:: clearmonbg ANIM_DEF_PARTNER delay 1 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, 1, 2, 9, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, F_PAL_BG, 2, 9, 0, RGB_BLACK end -StringShotThread:: +StringShotThread: createsprite gWebThreadSpriteTemplate, ANIM_TARGET, 2, 20, 0, 512, 20, 1 delay 1 return -Move_SPIDER_WEB:: +Move_SPIDER_WEB: loadspritegfx ANIM_TAG_SPIDER_WEB loadspritegfx ANIM_TAG_WEB_THREAD monbg ANIM_DEF_PARTNER delay 0 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, 1, 2, 0, 9, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, F_PAL_BG, 2, 0, 9, RGB_BLACK waitforvisualfinish - monbgprio_28 1 - loopsewithpan SE_M_STRING_SHOT, 192, 9, 6 + splitbgprio ANIM_TARGET + loopsewithpan SE_M_STRING_SHOT, SOUND_PAN_ATTACKER, 9, 6 call SpiderWebThread call SpiderWebThread call SpiderWebThread @@ -7623,81 +7615,81 @@ Move_SPIDER_WEB:: call SpiderWebThread call SpiderWebThread waitforvisualfinish - playsewithpan SE_M_STRING_SHOT2, 63 - createsprite gSpiderWebSpriteTemplate, ANIM_ATTACKER, 2, + playsewithpan SE_M_STRING_SHOT2, SOUND_PAN_TARGET + createsprite gSpiderWebSpriteTemplate, ANIM_ATTACKER, 2 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER delay 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, 1, 2, 9, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, F_PAL_BG, 2, 9, 0, RGB_BLACK end -SpiderWebThread:: +SpiderWebThread: createsprite gWebThreadSpriteTemplate, ANIM_TARGET, 2, 20, 0, 512, 20, 0 delay 1 return -Move_RAZOR_WIND:: +Move_RAZOR_WIND: choosetwoturnanim RazorWindSetUp, RazorWindUnleash -RazorWindEnd:: +RazorWindEnd: waitforvisualfinish end -RazorWindSetUp:: +RazorWindSetUp: loadspritegfx ANIM_TAG_GUST - playsewithpan SE_M_GUST, 192 + playsewithpan SE_M_GUST, SOUND_PAN_ATTACKER createsprite gRazorWindTornadoSpriteTemplate, ANIM_ATTACKER, 2, 32, 0, 16, 16, 0, 7, 40 createsprite gRazorWindTornadoSpriteTemplate, ANIM_ATTACKER, 2, 32, 0, 16, 16, 85, 7, 40 createsprite gRazorWindTornadoSpriteTemplate, ANIM_ATTACKER, 2, 32, 0, 16, 16, 170, 7, 40 waitforvisualfinish - playsewithpan SE_M_GUST2, 192 + playsewithpan SE_M_GUST2, SOUND_PAN_ATTACKER goto RazorWindEnd -RazorWindUnleash:: +RazorWindUnleash: loadspritegfx ANIM_TAG_AIR_WAVE_2 loadspritegfx ANIM_TAG_IMPACT - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 - playsewithpan SE_M_RAZOR_WIND2, 192 + playsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER createsprite gAirWaveCrescentSpriteTemplate, ANIM_ATTACKER, 2, 14, 8, 0, 0, 22, 2, 1 delay 2 - playsewithpan SE_M_RAZOR_WIND2, 192 + playsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER createsprite gAirWaveCrescentSpriteTemplate, ANIM_ATTACKER, 2, 14, -8, 16, 14, 22, 1, 1 delay 2 - playsewithpan SE_M_RAZOR_WIND2, 192 + playsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER createsprite gAirWaveCrescentSpriteTemplate, ANIM_ATTACKER, 2, 14, 12, -16, -14, 22, 0, 1 delay 17 - playsewithpan SE_M_RAZOR_WIND, 63 - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 10, 1 - createvisualtask AnimTask_ShakeMon2, 2, 3, 2, 0, 10, 1 + playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 10, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_DEF_PARTNER, 2, 0, 10, 1 waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff goto RazorWindEnd -Move_DISABLE:: +Move_DISABLE: loadspritegfx ANIM_TAG_SPARKLE_4 - monbg 1 - monbgprio_28 1 + monbg ANIM_TARGET + splitbgprio ANIM_TARGET setalpha 8, 8 - playsewithpan SE_M_DETECT, 192 - createsprite gSpriteTemplate_83BF480, ANIM_ATTACKER, 13, 24, -16 + playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER + createsprite gSpinningSparkleSpriteTemplate, ANIM_ATTACKER, 13, 24, -16 waitforvisualfinish - createvisualtask AnimTask_GrowAndGreyscale, 5, - loopsewithpan SE_M_BIND, 63, 15, 4 + createvisualtask AnimTask_GrowAndGrayscale, 5 + loopsewithpan SE_M_BIND, SOUND_PAN_TARGET, 15, 4 waitforvisualfinish delay 1 - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -Move_RECOVER:: +Move_RECOVER: loadspritegfx ANIM_TAG_ORBS loadspritegfx ANIM_TAG_BLUE_STAR monbg ANIM_ATK_PARTNER setalpha 12, 8 - loopsewithpan SE_M_MEGA_KICK, 192, 13, 3 - createvisualtask AnimTask_CurseBlendEffect, 2, 2, 0, 6, 0, 11, 12287 + loopsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER, 13, 3 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 0, 6, 0, 11, RGB(31, 31, 11) call RecoverAbsorbEffect call RecoverAbsorbEffect call RecoverAbsorbEffect @@ -7709,7 +7701,7 @@ Move_RECOVER:: waitforvisualfinish end -RecoverAbsorbEffect:: +RecoverAbsorbEffect: createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 40, -10, 13 delay 3 createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, -35, -10, 13 @@ -7726,27 +7718,27 @@ RecoverAbsorbEffect:: delay 3 return -Move_MIMIC:: +Move_MIMIC: loadspritegfx ANIM_TAG_ORBS - monbg_22 3 + monbg_static ANIM_DEF_PARTNER setalpha 11, 5 - panse_1B SE_M_MINIMIZE, 63, 192, 253, 0 + panse SE_M_MINIMIZE, SOUND_PAN_TARGET, SOUND_PAN_ATTACKER, -3, 0 createvisualtask AnimTask_ShrinkTargetCopy, 5, 128, 24 delay 15 createsprite gMimicOrbSpriteTemplate, ANIM_TARGET, 2, -12, 24 delay 10 - setarg 7, 65535 + setarg 7, 0xFFFF waitforvisualfinish - playsewithpan SE_M_TAKE_DOWN, 192 - createvisualtask AnimTask_CurseBlendEffect, 2, 2, 0, 2, 0, 11, RGB_WHITE + playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 0, 2, 0, 11, RGB_WHITE waitforvisualfinish - clearmonbg_23 3 + clearmonbg_static ANIM_DEF_PARTNER blendoff end -Move_CONSTRICT:: +Move_CONSTRICT: loadspritegfx ANIM_TAG_TENDRILS - loopsewithpan SE_M_SCRATCH, 63, 6, 4 + loopsewithpan SE_M_SCRATCH, SOUND_PAN_TARGET, 6, 4 createsprite gConstrictBindingSpriteTemplate, ANIM_TARGET, 4, 0, 16, 0, 2 delay 7 createsprite gConstrictBindingSpriteTemplate, ANIM_TARGET, 3, 0, 0, 0, 2 @@ -7754,17 +7746,17 @@ Move_CONSTRICT:: delay 7 createsprite gConstrictBindingSpriteTemplate, ANIM_TARGET, 3, 0, -8, 1, 2 delay 8 - createvisualtask AnimTask_ShakeMon2, 2, 1, 3, 0, 6, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 3, 0, 6, 1 delay 20 - playsewithpan SE_M_BIND, 63 - setarg 7, 65535 + playsewithpan SE_M_BIND, SOUND_PAN_TARGET + setarg 7, 0xFFFF waitforvisualfinish end -Move_CURSE:: +Move_CURSE: choosetwoturnanim CurseGhost, CurseStats -CurseGhost:: +CurseGhost: loadspritegfx ANIM_TAG_NAIL loadspritegfx ANIM_TAG_GHOSTLY_SPIRIT monbg ANIM_ATK_PARTNER @@ -7782,62 +7774,62 @@ CurseGhost:: clearmonbg ANIM_ATK_PARTNER delay 1 monbg ANIM_DEF_PARTNER - playsewithpan SE_M_NIGHTMARE, 63 + playsewithpan SE_M_NIGHTMARE, SOUND_PAN_TARGET createsprite gCurseGhostSpriteTemplate, ANIM_TARGET, 2 - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 14, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 14, 1 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 16, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 16, 0, RGB_BLACK waitforvisualfinish clearmonbg ANIM_DEF_PARTNER end -CurseGhostShakeFromNail:: - createvisualtask AnimTask_ShakeMon2, 2, 0, 4, 0, 10, 0 - playsewithpan SE_M_BIND, 192 +CurseGhostShakeFromNail: + createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 4, 0, 10, 0 + playsewithpan SE_M_BIND, SOUND_PAN_ATTACKER return -CurseStats:: - createvisualtask AnimTask_SwayMon, 5, 0, 10, 1536, 3, 0 +CurseStats: + createvisualtask AnimTask_SwayMon, 5, 0, 10, 1536, 3, ANIM_ATTACKER waitforvisualfinish delay 10 call CurseStats1 waitforvisualfinish end -CurseStats1:: - playsewithpan SE_M_DRAGON_RAGE, 192 - createvisualtask AnimTask_SetUpCurseBackground, 5, - createvisualtask AnimTask_CurseBlendEffect, 5, 2, 4, 2, 0, 10, 31 +CurseStats1: + playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER + createvisualtask AnimTask_DrawFallingWhiteLinesOnAttacker, 5 + createvisualtask AnimTask_BlendColorCycle, 5, F_PAL_ATTACKER, 4, 2, 0, 10, RGB_RED return -Move_SOFT_BOILED:: +Move_SOFT_BOILED: loadspritegfx ANIM_TAG_BREAKING_EGG loadspritegfx ANIM_TAG_THIN_RING loadspritegfx ANIM_TAG_BLUE_STAR monbg ANIM_ATK_PARTNER - playsewithpan SE_M_TAIL_WHIP, 192 - createvisualtask AnimTask_ShakeMon, 2, 0, 0, 2, 6, 1 + playsewithpan SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER + createvisualtask AnimTask_ShakeMon, 2, ANIM_ATTACKER, 0, 2, 6, 1 createsprite gSoftBoiledEggSpriteTemplate, ANIM_ATTACKER, 4, 0, 16, 0 createsprite gSoftBoiledEggSpriteTemplate, ANIM_ATTACKER, 4, 0, 16, 1 delay 120 delay 7 - playsewithpan SE_M_HORN_ATTACK, 192 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 10, 0, 31500 + playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_ATTACKER + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 10, 0, RGB(12, 24, 30) createsprite gThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 3, 31, 16, 0, 1 delay 8 createsprite gThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 3, 31, 16, 0, 1 delay 60 - setarg 7, 65535 + setarg 7, 0xFFFF waitforvisualfinish clearmonbg ANIM_ATK_PARTNER call HealingEffect2 end -Move_HEAL_BELL:: +Move_HEAL_BELL: loadspritegfx ANIM_TAG_BELL loadspritegfx ANIM_TAG_MUSIC_NOTES_2 loadspritegfx ANIM_TAG_THIN_RING - createvisualtask AnimTask_BlendSelected, 10, 10, 0, 0, 10, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATK_SIDE, 0, 0, 10, RGB_WHITE waitforvisualfinish createvisualtask AnimTask_LoadMusicNotesPals, 5 createsprite gBellSpriteTemplate, ANIM_ATTACKER, 2, 0, -24, 0, 1 @@ -7866,67 +7858,67 @@ Move_HEAL_BELL:: unloadspritegfx ANIM_TAG_MUSIC_NOTES_2 unloadspritegfx ANIM_TAG_THIN_RING loadspritegfx ANIM_TAG_SPARKLE_2 - playsewithpan SE_M_MORNING_SUN, 192 + playsewithpan SE_M_MORNING_SUN, SOUND_PAN_ATTACKER createsprite gSparklingStarsSpriteTemplate, ANIM_ATTACKER, 16, -15, 0, 0, 0, 32, 60, 1 delay 8 createsprite gSparklingStarsSpriteTemplate, ANIM_ATTACKER, 16, 12, -5, 0, 0, 32, 60, 1 waitforvisualfinish unloadspritegfx ANIM_TAG_SPARKLE_2 loadspritegfx ANIM_TAG_THIN_RING - playsewithpan SE_SHINY, 192 - createvisualtask AnimTask_BlendExcept, 10, 4, 3, 10, 0, 31500 - createvisualtask AnimTask_BlendSelected, 10, 10, 3, 10, 0, RGB_WHITE + playsewithpan SE_SHINY, SOUND_PAN_ATTACKER + createvisualtask AnimTask_BlendBattleAnimPalExclude, 10, 4, 3, 10, 0, RGB(12, 24, 30) + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATK_SIDE, 3, 10, 0, RGB_WHITE createsprite gBlendThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 16, 0, 0, 0, 1 end -HealBellRing:: - createvisualtask AnimTask_BlendExcept, 10, 4, 3, 8, 0, 31500 - createvisualtask AnimTask_BlendSelected, 10, 10, 3, 2, 10, RGB_WHITE +HealBellRing: + createvisualtask AnimTask_BlendBattleAnimPalExclude, 10, 4, 3, 8, 0, RGB(12, 24, 30) + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATK_SIDE, 3, 2, 10, RGB_WHITE createsprite gThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 40, 0, -24, 0, 1 - playsewithpan SE_M_HEAL_BELL, 192 + playsewithpan SE_M_HEAL_BELL, SOUND_PAN_ATTACKER return -Move_FAKE_OUT:: +Move_FAKE_OUT: playsewithpan SE_M_FLATTER, 0 - createvisualtask AnimTask_FakeOut, 5, + createvisualtask AnimTask_FakeOut, 5 waitforvisualfinish - playsewithpan SE_M_SKETCH, 63 - createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 5, 1 + playsewithpan SE_M_SKETCH, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 5, 1 createvisualtask AnimTask_StretchTargetUp, 3 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 16, 0, RGB_WHITE + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 16, 0, RGB_WHITE end -Move_SCARY_FACE:: +Move_SCARY_FACE: loadspritegfx ANIM_TAG_EYE_SPARKLE - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 27, 3, 0, 16, 0 - playsewithpan SE_M_PSYBEAM, 192 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_ATK_SIDE | F_PAL_DEF_PARTNER, 3, 0, 16, RGB_BLACK + playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER waitforvisualfinish delay 10 - playsewithpan SE_M_LEER, 192 - createvisualtask AnimTask_ScaryFace, 5, + playsewithpan SE_M_LEER, SOUND_PAN_ATTACKER + createvisualtask AnimTask_ScaryFace, 5 delay 13 createsprite gEyeSparkleSpriteTemplate, ANIM_ATTACKER, 0, -16, -8 createsprite gEyeSparkleSpriteTemplate, ANIM_ATTACKER, 0, 16, -8 waitforvisualfinish - createvisualtask AnimTask_ShakeTargetInPattern, 3, 20, 1, 0 - playsewithpan SE_M_STRING_SHOT2, 63 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 27, 3, 16, 0, 0 + createvisualtask AnimTask_ShakeTargetInPattern, 3, 20, 1, FALSE + playsewithpan SE_M_STRING_SHOT2, SOUND_PAN_TARGET + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_ATK_SIDE | F_PAL_DEF_PARTNER, 3, 16, 0, RGB_BLACK waitforvisualfinish end -Move_SWEET_KISS:: +Move_SWEET_KISS: loadspritegfx ANIM_TAG_RED_HEART loadspritegfx ANIM_TAG_ANGEL createsprite gAngelSpriteTemplate, ANIM_TARGET, 2, 16, -48 - playsewithpan SE_M_HEAL_BELL, 63 + playsewithpan SE_M_HEAL_BELL, SOUND_PAN_TARGET delay 23 - playsewithpan SE_M_HEAL_BELL, 63 + playsewithpan SE_M_HEAL_BELL, SOUND_PAN_TARGET delay 23 - playsewithpan SE_M_HEAL_BELL, 63 + playsewithpan SE_M_HEAL_BELL, SOUND_PAN_TARGET waitforvisualfinish createsprite gRedHeartBurstSpriteTemplate, ANIM_TARGET, 3, 160, -30 - playsewithpan SE_M_ATTRACT, 63 + playsewithpan SE_M_ATTRACT, SOUND_PAN_TARGET createsprite gRedHeartBurstSpriteTemplate, ANIM_TARGET, 3, -256, -42 createsprite gRedHeartBurstSpriteTemplate, ANIM_TARGET, 3, 128, -14 createsprite gRedHeartBurstSpriteTemplate, ANIM_TARGET, 3, 416, -38 @@ -7934,102 +7926,102 @@ Move_SWEET_KISS:: createsprite gRedHeartBurstSpriteTemplate, ANIM_TARGET, 3, -384, -31 end -Move_LOVELY_KISS:: +Move_LOVELY_KISS: loadspritegfx ANIM_TAG_PINK_HEART loadspritegfx ANIM_TAG_DEVIL createsprite gDevilSpriteTemplate, ANIM_TARGET, 2, 0, -24 - playsewithpan SE_M_PSYBEAM2, 63 + playsewithpan SE_M_PSYBEAM2, SOUND_PAN_TARGET waitforvisualfinish - playsewithpan SE_M_ATTRACT, 63 + playsewithpan SE_M_ATTRACT, SOUND_PAN_TARGET createsprite gPinkHeartSpriteTemplate, ANIM_TARGET, 3, -256, -42 createsprite gPinkHeartSpriteTemplate, ANIM_TARGET, 3, 128, -14 createsprite gPinkHeartSpriteTemplate, ANIM_TARGET, 3, 416, -38 createsprite gPinkHeartSpriteTemplate, ANIM_TARGET, 3, -128, -22 end -Move_FURY_SWIPES:: +Move_FURY_SWIPES: loadspritegfx ANIM_TAG_SWIPE createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 5, 5 delay 4 - playsewithpan SE_M_SCRATCH, 63 + playsewithpan SE_M_SCRATCH, SOUND_PAN_TARGET createsprite gFurySwipesSpriteTemplate, ANIM_TARGET, 2, 16, 0, 1 - createvisualtask AnimTask_ShakeMon2, 2, 1, 3, 0, 5, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 3, 0, 5, 1 delay 10 createsprite gHorizontalLungeSpriteTemplate, ANIM_TARGET, 2, 5, 5 delay 4 - playsewithpan SE_M_SCRATCH, 63 + playsewithpan SE_M_SCRATCH, SOUND_PAN_TARGET createsprite gFurySwipesSpriteTemplate, ANIM_TARGET, 2, -16, 0, 0 - createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 7, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 7, 1 end -Move_INGRAIN:: +Move_INGRAIN: loadspritegfx ANIM_TAG_ROOTS loadspritegfx ANIM_TAG_ORBS createsprite gIngrainRootSpriteTemplate, ANIM_ATTACKER, 2, 16, 26, -1, 2, 150 - playsewithpan SE_M_SCRATCH, 192 + playsewithpan SE_M_SCRATCH, SOUND_PAN_ATTACKER delay 10 createsprite gIngrainRootSpriteTemplate, ANIM_ATTACKER, 2, -32, 20, 1, 1, 140 - playsewithpan SE_M_SCRATCH, 192 + playsewithpan SE_M_SCRATCH, SOUND_PAN_ATTACKER delay 10 createsprite gIngrainRootSpriteTemplate, ANIM_ATTACKER, 2, 32, 22, 1, 0, 130 - playsewithpan SE_M_SCRATCH, 192 + playsewithpan SE_M_SCRATCH, SOUND_PAN_ATTACKER delay 10 createsprite gIngrainRootSpriteTemplate, ANIM_ATTACKER, 2, -16, 25, -1, 3, 120 - playsewithpan SE_M_SCRATCH, 192 + playsewithpan SE_M_SCRATCH, SOUND_PAN_ATTACKER delay 40 createsprite gIngrainOrbSpriteTemplate, ANIM_ATTACKER, 3, 32, 26, -1, 3, 30 delay 5 - playsewithpan SE_M_BUBBLE3, 192 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER delay 5 createsprite gIngrainOrbSpriteTemplate, ANIM_ATTACKER, 3, -48, 20, 1, 2, 30 - playsewithpan SE_M_BUBBLE3, 192 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER delay 5 - playsewithpan SE_M_BUBBLE3, 192 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER delay 5 createsprite gIngrainOrbSpriteTemplate, ANIM_ATTACKER, 3, 48, 26, -2, 3, 18 - playsewithpan SE_M_BUBBLE3, 192 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER delay 10 waitforvisualfinish end -Move_PRESENT:: +Move_PRESENT: loadspritegfx ANIM_TAG_ITEM_BAG - createvisualtask AnimTask_IsHealingMove, 2, + createvisualtask AnimTask_IsHealingMove, 2 createsprite gPresentSpriteTemplate, ANIM_TARGET, 2, 0, -5, 10, 2, -1 - playsewithpan SE_M_TAIL_WHIP, 192 + playsewithpan SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER delay 14 - playsewithpan SE_M_BUBBLE2, 192 + playsewithpan SE_M_BUBBLE2, SOUND_PAN_ATTACKER delay 14 playsewithpan SE_M_BUBBLE2, 0 delay 20 - playsewithpan SE_M_BUBBLE2, 63 + playsewithpan SE_M_BUBBLE2, SOUND_PAN_TARGET waitforvisualfinish - jumpargeq 7, 0, PresentDamage - jumpargeq 7, 1, PresentHeal + jumpretfalse PresentDamage + jumprettrue PresentHeal end -PresentDamage:: +PresentDamage: loadspritegfx ANIM_TAG_EXPLOSION - playsewithpan SE_M_SELF_DESTRUCT, 63 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1 delay 6 - playsewithpan SE_M_SELF_DESTRUCT, 63 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 24, -24, 1, 1 delay 6 - playsewithpan SE_M_SELF_DESTRUCT, 63 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, -16, 16, 1, 1 delay 6 - playsewithpan SE_M_SELF_DESTRUCT, 63 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, -24, -12, 1, 1 delay 6 - playsewithpan SE_M_SELF_DESTRUCT, 63 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 16, 16, 1, 1 end -PresentHeal:: +PresentHeal: loadspritegfx ANIM_TAG_GREEN_SPARKLE loadspritegfx ANIM_TAG_BLUE_STAR - playsewithpan SE_M_MORNING_SUN, 63 + playsewithpan SE_M_MORNING_SUN, SOUND_PAN_TARGET createsprite gPresentHealParticleSpriteTemplate, ANIM_TARGET, 4, -16, 32, -3, 1 delay 3 createsprite gPresentHealParticleSpriteTemplate, ANIM_TARGET, 4, 16, 32, -3, -1 @@ -8052,14 +8044,14 @@ PresentHeal:: call HealingEffect2 end -Move_BATON_PASS:: +Move_BATON_PASS: loadspritegfx ANIM_TAG_POKEBALL - playsewithpan SE_M_BATON_PASS, 192 - createvisualtask AnimTask_CurseBlendEffect, 2, 31, 1, 2, 0, 11, 31455 - createsprite gBatonPassPokeballSpriteTemplate, ANIM_ATTACKER, 2, + playsewithpan SE_M_BATON_PASS, SOUND_PAN_ATTACKER + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG | F_PAL_BATTLERS, 1, 2, 0, 11, RGB(31, 22, 30) + createsprite gBatonPassPokeballSpriteTemplate, ANIM_ATTACKER, 2 end -Move_PERISH_SONG:: +Move_PERISH_SONG: loadspritegfx ANIM_TAG_MUSIC_NOTES_2 createsprite gPerishSongMusicNoteSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 0 createsprite gPerishSongMusicNoteSpriteTemplate, ANIM_ATTACKER, 4, 1, 1, 16 @@ -8079,42 +8071,42 @@ Move_PERISH_SONG:: createsprite gPerishSongMusicNoteSpriteTemplate, ANIM_ATTACKER, 4, 15, 0, 240 createsprite gPerishSongMusicNote2SpriteTemplate, ANIM_ATTACKER, 4, 15, 0, 0 delay 20 - panse_1B SE_M_PERISH_SONG, 192, 63, 2, 0 + panse SE_M_PERISH_SONG, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0 delay 80 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 0, 16, 0 - createvisualtask AnimTask_SetGreyscaleOrOriginalPal, 5, 4, 0 - createvisualtask AnimTask_SetGreyscaleOrOriginalPal, 5, 5, 0 - createvisualtask AnimTask_SetGreyscaleOrOriginalPal, 5, 6, 0 - createvisualtask AnimTask_SetGreyscaleOrOriginalPal, 5, 7, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 0, 16, RGB_BLACK + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, 4, 0 + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, 5, 0 + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, 6, 0 + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, 7, 0 delay 100 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 16, 0, 0 - createvisualtask AnimTask_SetGreyscaleOrOriginalPal, 5, 4, 1 - createvisualtask AnimTask_SetGreyscaleOrOriginalPal, 5, 5, 1 - createvisualtask AnimTask_SetGreyscaleOrOriginalPal, 5, 6, 1 - createvisualtask AnimTask_SetGreyscaleOrOriginalPal, 5, 7, 1 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 16, 0, RGB_BLACK + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, 4, 1 + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, 5, 1 + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, 6, 1 + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, 7, 1 waitforvisualfinish end -Move_SLEEP_TALK:: +Move_SLEEP_TALK: loadspritegfx ANIM_TAG_LETTER_Z - createvisualtask AnimTask_SwayMon, 5, 0, 4, 4096, 2, 0 + createvisualtask AnimTask_SwayMon, 5, 0, 4, 4096, 2, ANIM_ATTACKER delay 20 createsprite gLetterZSpriteTemplate, ANIM_TARGET, 2, 0, 20, 5, -1 - playsewithpan SE_M_SNORE, 192 + playsewithpan SE_M_SNORE, SOUND_PAN_ATTACKER delay 6 createsprite gLetterZSpriteTemplate, ANIM_TARGET, 2, 0, 20, 5, -1 delay 6 createsprite gLetterZSpriteTemplate, ANIM_TARGET, 2, 0, 20, 5, -1 delay 20 createsprite gLetterZSpriteTemplate, ANIM_TARGET, 2, 0, 20, 5, -5 - playsewithpan SE_M_SNORE, 192 + playsewithpan SE_M_SNORE, SOUND_PAN_ATTACKER delay 6 createsprite gLetterZSpriteTemplate, ANIM_TARGET, 2, 0, 20, 5, -5 delay 6 createsprite gLetterZSpriteTemplate, ANIM_TARGET, 2, 0, 20, 5, -5 delay 20 createsprite gLetterZSpriteTemplate, ANIM_TARGET, 2, 0, 20, 5, -3 - playsewithpan SE_M_SNORE, 192 + playsewithpan SE_M_SNORE, SOUND_PAN_ATTACKER delay 6 createsprite gLetterZSpriteTemplate, ANIM_TARGET, 2, 0, 20, 5, -3 delay 6 @@ -8122,54 +8114,55 @@ Move_SLEEP_TALK:: waitforvisualfinish end -Move_HYPER_FANG:: +Move_HYPER_FANG: loadspritegfx ANIM_TAG_FANG_ATTACK - playsewithpan SE_M_BITE, 63 + playsewithpan SE_M_BITE, SOUND_PAN_TARGET delay 1 delay 2 - createvisualtask AnimTask_IsContest, 2, - jumpargeq 7, 1, HyperFangInContest - createvisualtask AnimTask_IsTargetPlayerSide, 2, - jumpargeq 7, 0, HyperFangOnOpponent + createvisualtask AnimTask_IsContest, 2 + jumprettrue HyperFangInContest + createvisualtask AnimTask_IsTargetPlayerSide, 2 + jumpretfalse HyperFangOnOpponent goto HyperFangOnPlayer -HyperFangContinue:: + +HyperFangContinue: waitbgfadeout - createsprite gFangSpriteTemplate, ANIM_TARGET, 2, + createsprite gFangSpriteTemplate, ANIM_TARGET, 2 waitbgfadein - createvisualtask AnimTask_ShakeMon, 3, 1, 0, 10, 10, 1 - playsewithpan SE_M_LEER, 63 + createvisualtask AnimTask_ShakeMon, 3, ANIM_TARGET, 0, 10, 10, 1 + playsewithpan SE_M_LEER, SOUND_PAN_TARGET delay 20 restorebg waitbgfadein waitforvisualfinish end -HyperFangOnOpponent:: - fadetobg 4 +HyperFangOnOpponent: + fadetobg BG_IMPACT_OPPONENT goto HyperFangContinue -HyperFangOnPlayer:: - fadetobg 5 +HyperFangOnPlayer: + fadetobg BG_IMPACT_PLAYER goto HyperFangContinue -HyperFangInContest:: - fadetobg 6 +HyperFangInContest: + fadetobg BG_IMPACT_CONTESTS goto HyperFangContinue -Move_TRI_ATTACK:: - loadspritegfx ANIM_TAG_TRI_FORCE_TRIANGLE +Move_TRI_ATTACK: + loadspritegfx ANIM_TAG_TRI_ATTACK_TRIANGLE createsprite gTriAttackTriangleSpriteTemplate, ANIM_TARGET, 2, 16, 0 - playsewithpan SE_M_TRI_ATTACK, 192 + playsewithpan SE_M_TRI_ATTACK, SOUND_PAN_ATTACKER delay 20 - playsewithpan SE_M_TRI_ATTACK, 192 + playsewithpan SE_M_TRI_ATTACK, SOUND_PAN_ATTACKER delay 20 - createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_TRI_ATTACK, -64, 63, 5, 6, 0, 7 + createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_TRI_ATTACK, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 5, 6, 0, 7 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 16, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 16, RGB_BLACK delay 16 loadspritegfx ANIM_TAG_FIRE createsprite gLargeFlameScatterSpriteTemplate, ANIM_TARGET, 2, 0, 0, 30, 30, -1, 0 - playsewithpan SE_M_FLAME_WHEEL2, 63 + playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_TARGET createsprite gLargeFlameScatterSpriteTemplate, ANIM_TARGET, 2, 0, 0, 30, 30, 0, 1 delay 1 createsprite gLargeFlameScatterSpriteTemplate, ANIM_TARGET, 2, 0, 0, 30, 30, -1, -1 @@ -8184,35 +8177,35 @@ Move_TRI_ATTACK:: delay 1 createsprite gLargeFlameScatterSpriteTemplate, ANIM_TARGET, 2, 0, 0, 30, 30, 3, 1 delay 2 - createvisualtask AnimTask_ShakeTargetInPattern, 2, 20, 3, 1, 1 + createvisualtask AnimTask_ShakeTargetInPattern, 2, 20, 3, TRUE, 1 waitforvisualfinish loadspritegfx ANIM_TAG_LIGHTNING createvisualtask AnimTask_InvertScreenColor, 2, 257, 257, 257 - playsewithpan SE_M_TRI_ATTACK2, 63 + playsewithpan SE_M_TRI_ATTACK2, SOUND_PAN_TARGET createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 0, -48 delay 1 createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 0, -16 delay 1 createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 0, 16 delay 20 - createvisualtask AnimTask_ShakeTargetInPattern, 2, 20, 3, 1, 0 + createvisualtask AnimTask_ShakeTargetInPattern, 2, 20, 3, TRUE, 0 delay 2 createvisualtask AnimTask_InvertScreenColor, 2, 257, 257, 257 waitforvisualfinish loadspritegfx ANIM_TAG_ICE_CRYSTALS call IceCrystalEffectShort - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 16, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 16, 0, RGB_BLACK waitforvisualfinish end -Move_WILL_O_WISP:: +Move_WILL_O_WISP: loadspritegfx ANIM_TAG_WISP_FIRE loadspritegfx ANIM_TAG_WISP_ORB monbg ANIM_DEF_PARTNER - monbgprio_2A 1 - playsewithpan SE_M_EMBER, 192 - waitplaysewithpan SE_M_EMBER, 192, 10 - createvisualtask SoundTask_AdjustPanningVar, 2, -64, -64, 1, 0 + splitbgprio_foes ANIM_TARGET + playsewithpan SE_M_EMBER, SOUND_PAN_ATTACKER + waitplaysewithpan SE_M_EMBER, SOUND_PAN_ATTACKER, 10 + createvisualtask SoundTask_AdjustPanningVar, 2, SOUND_PAN_ATTACKER, SOUND_PAN_ATTACKER, 1, 0 createsprite gWillOWispOrbSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 0 delay 3 createsprite gWillOWispOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1 @@ -8221,11 +8214,11 @@ Move_WILL_O_WISP:: delay 3 createsprite gWillOWispOrbSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 3 delay 40 - createvisualtask SoundTask_AdjustPanningVar, 2, -64, 63, 2, 0 + createvisualtask SoundTask_AdjustPanningVar, 2, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 2, 0 waitforvisualfinish - monbgprio_29 - playsewithpan SE_M_FLAME_WHEEL2, 63 - createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 13, 1 + splitbgprio_all + playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 13, 1 createsprite gWillOWispFireSpriteTemplate, ANIM_ATTACKER, 2, 0 createsprite gWillOWispFireSpriteTemplate, ANIM_ATTACKER, 2, 42 createsprite gWillOWispFireSpriteTemplate, ANIM_ATTACKER, 2, 84 @@ -8236,11 +8229,11 @@ Move_WILL_O_WISP:: clearmonbg ANIM_DEF_PARTNER end -Move_ENCORE:: +Move_ENCORE: loadspritegfx ANIM_TAG_SPOTLIGHT loadspritegfx ANIM_TAG_TAG_HAND - createvisualtask AnimTask_CreateSpotlight, 2, - createvisualtask AnimTask_HardwarePaletteFade, 2, BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD | BLDCNT_EFFECT_DARKEN, 3, 0, 10, FALSE + createvisualtask AnimTask_CreateSpotlight, 2 + createvisualtask AnimTask_HardwarePaletteFade, 2, 248, 3, 0, 10, 0 waitforvisualfinish createsprite gSpotlightSpriteTemplate, ANIM_TARGET, 2, 0, -8 createsprite gClappingHandSpriteTemplate, ANIM_ATTACKER, 2, -2, 0, 0, 0, 9 @@ -8248,22 +8241,22 @@ Move_ENCORE:: createsprite gClappingHand2SpriteTemplate, ANIM_ATTACKER, 3, -2, 0, 0, 0, 9 createsprite gClappingHand2SpriteTemplate, ANIM_ATTACKER, 3, 2, 0, 1, 0, 9 delay 16 - createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_ENCORE2, 63 - createvisualtask AnimTask_SwayMon, 5, 1, 8, 1536, 5, 1 + createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_ENCORE2, SOUND_PAN_TARGET + createvisualtask AnimTask_SwayMon, 5, 1, 8, 1536, 5, ANIM_TARGET waitforvisualfinish - createvisualtask AnimTask_HardwarePaletteFade, 2, BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD | BLDCNT_EFFECT_DARKEN, 3, 10, 0, TRUE + createvisualtask AnimTask_HardwarePaletteFade, 2, 248, 3, 10, 0, 1 waitforvisualfinish - createvisualtask AnimTask_RemoveSpotlight, 2, + createvisualtask AnimTask_RemoveSpotlight, 2 end -Move_TRICK:: +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 delay 16 playsewithpan SE_M_SKETCH, 0 - createvisualtask AnimTask_StretchTargetUp, 3, + createvisualtask AnimTask_StretchTargetUp, 3 createvisualtask AnimTask_StretchAttackerUp, 3 delay 30 playsewithpan SE_M_DOUBLE_TEAM, 0 @@ -8279,39 +8272,39 @@ Move_TRICK:: playsewithpan SE_M_DOUBLE_TEAM, 0 delay 16 playsewithpan SE_M_ATTRACT, 0 - createvisualtask AnimTask_ShakeMon, 3, 0, 5, 0, 7, 2 - createvisualtask AnimTask_ShakeMon, 3, 1, 5, 0, 7, 2 + createvisualtask AnimTask_ShakeMon, 3, ANIM_ATTACKER, 5, 0, 7, 2 + createvisualtask AnimTask_ShakeMon, 3, ANIM_TARGET, 5, 0, 7, 2 waitforvisualfinish end -Move_WISH:: +Move_WISH: loadspritegfx ANIM_TAG_GOLD_STARS loadspritegfx ANIM_TAG_SPARKLE_2 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 0, 10, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 0, 10, RGB_BLACK waitforvisualfinish - panse_27 SE_M_REFLECT, 63, 192, 253, 0 - createsprite gWishStarSpriteTemplate, ANIM_ATTACKER, 40, + panse_adjustall SE_M_REFLECT, SOUND_PAN_TARGET, SOUND_PAN_ATTACKER, -3, 0 + createsprite gWishStarSpriteTemplate, ANIM_ATTACKER, 40 waitforvisualfinish delay 60 - loopsewithpan SE_M_HEAL_BELL, 192, 16, 3 + loopsewithpan SE_M_HEAL_BELL, SOUND_PAN_ATTACKER, 16, 3 call GrantingStarsEffect waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 10, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 10, 0, RGB_BLACK waitforvisualfinish end -Move_STOCKPILE:: +Move_STOCKPILE: loadspritegfx ANIM_TAG_GRAY_ORB - playsewithpan SE_M_MEGA_KICK, 192 - createvisualtask AnimTask_CurseBlendEffect, 2, 2, 8, 1, 0, 12, RGB_WHITE - createvisualtask AnimTask_StockpileDeformMon, 5, + playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 8, 1, 0, 12, RGB_WHITE + createvisualtask AnimTask_StockpileDeformMon, 5 call StockpileAbsorb call StockpileAbsorb waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, 0, 12, 0, RGB_WHITE + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_ATTACKER, 0, 12, 0, RGB_WHITE end -StockpileAbsorb:: +StockpileAbsorb: createsprite gStockpileAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 55, 55, 13 delay 1 createsprite gStockpileAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, -55, -55, 13 @@ -8330,14 +8323,14 @@ StockpileAbsorb:: delay 1 return -Move_SPIT_UP:: +Move_SPIT_UP: loadspritegfx ANIM_TAG_RED_ORB_2 loadspritegfx ANIM_TAG_IMPACT - playsewithpan SE_M_TAKE_DOWN, 192 - createvisualtask AnimTask_SpitUpDeformMon, 5, - createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 8, 2 + playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER + createvisualtask AnimTask_SpitUpDeformMon, 5 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 8, 2 delay 45 - playsewithpan SE_M_SPIT_UP, 192 + playsewithpan SE_M_SPIT_UP, SOUND_PAN_ATTACKER delay 3 createsprite gSpitUpOrbSpriteTemplate, ANIM_ATTACKER, 2, 0, 12 createsprite gSpitUpOrbSpriteTemplate, ANIM_ATTACKER, 2, 32, 12 @@ -8350,25 +8343,25 @@ Move_SPIT_UP:: delay 5 jumpifmoveturn 2, SpitUpStrong jumpifmoveturn 3, SpitUpStrongest -SpitUpContinue:: +SpitUpContinue: delay 5 - createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, 0, 1, 8, 1, 0 - playsewithpan SE_M_DOUBLE_SLAP, 63 - createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, -12, 10, 1, 1 + createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, FALSE, 1, 8, 1, 0 + playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, -12, 10, ANIM_TARGET, 1 delay 5 - playsewithpan SE_M_DOUBLE_SLAP, 63 - createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 12, -10, 1, 1 + playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 12, -10, ANIM_TARGET, 1 waitforvisualfinish end -SpitUpStrong:: +SpitUpStrong: createsprite gSpitUpOrbSpriteTemplate, ANIM_ATTACKER, 2, 16 createsprite gSpitUpOrbSpriteTemplate, ANIM_ATTACKER, 2, 80 createsprite gSpitUpOrbSpriteTemplate, ANIM_ATTACKER, 2, 144 createsprite gSpitUpOrbSpriteTemplate, ANIM_ATTACKER, 2, 208 goto SpitUpContinue -SpitUpStrongest:: +SpitUpStrongest: createsprite gSpitUpOrbSpriteTemplate, ANIM_ATTACKER, 2, 16 createsprite gSpitUpOrbSpriteTemplate, ANIM_ATTACKER, 2, 48 createsprite gSpitUpOrbSpriteTemplate, ANIM_ATTACKER, 2, 80 @@ -8379,24 +8372,24 @@ SpitUpStrongest:: createsprite gSpitUpOrbSpriteTemplate, ANIM_ATTACKER, 2, 240 goto SpitUpContinue -Move_SWALLOW:: +Move_SWALLOW: loadspritegfx ANIM_TAG_BLUE_ORB loadspritegfx ANIM_TAG_BLUE_STAR - playsewithpan SE_M_TAKE_DOWN, 192 - createvisualtask AnimTask_SwallowDeformMon, 5, - createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 8, 2 + playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER + createvisualtask AnimTask_SwallowDeformMon, 5 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 8, 2 delay 38 - playsewithpan SE_M_SPIT_UP, 192 - createvisualtask AnimTask_ShakeMon2, 2, 0, 2, 0, 12, 1 + playsewithpan SE_M_SPIT_UP, SOUND_PAN_ATTACKER + createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 2, 0, 12, 1 call SwallowEffect jumpifmoveturn 2, SwallowGood jumpifmoveturn 3, SwallowBest -SwallowContinue:: +SwallowContinue: waitforvisualfinish call HealingEffect end -SwallowEffect:: +SwallowEffect: createsprite gSwallowBlueOrbSpriteTemplate, ANIM_ATTACKER, 2, 0, -8 delay 1 createsprite gSwallowBlueOrbSpriteTemplate, ANIM_ATTACKER, 2, -24, -8 @@ -8409,30 +8402,30 @@ SwallowEffect:: delay 1 return -SwallowGood:: +SwallowGood: call SwallowEffect goto SwallowContinue -SwallowBest:: +SwallowBest: call SwallowEffect call SwallowEffect goto SwallowContinue -Move_TRANSFORM:: +Move_TRANSFORM: monbg ANIM_ATTACKER - playsewithpan SE_M_TELEPORT, 192 - waitplaysewithpan SE_M_MINIMIZE, 192, 48 + playsewithpan SE_M_TELEPORT, SOUND_PAN_ATTACKER + waitplaysewithpan SE_M_MINIMIZE, SOUND_PAN_ATTACKER, 48 createvisualtask AnimTask_TransformMon, 2, 0 waitforvisualfinish clearmonbg ANIM_ATTACKER end -Move_MORNING_SUN:: +Move_MORNING_SUN: loadspritegfx ANIM_TAG_GREEN_STAR loadspritegfx ANIM_TAG_BLUE_STAR - createvisualtask AnimTask_MorningSunLightBeam, 5, + createvisualtask AnimTask_MorningSunLightBeam, 5 delay 8 - createvisualtask AnimTask_BlendSelected, 10, 1 | (0xF << 7), 8, 0, 12, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_BATTLERS_2, 8, 0, 12, RGB_WHITE delay 14 call MorningSunStar call MorningSunStar @@ -8449,32 +8442,32 @@ Move_MORNING_SUN:: call MorningSunStar call MorningSunStar call MorningSunStar - createvisualtask AnimTask_BlendSelected, 10, 1 | (0xF << 7), 3, 12, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_BATTLERS_2, 3, 12, 0, RGB_WHITE waitforvisualfinish waitsound call HealingEffect end -MorningSunStar:: +MorningSunStar: createsprite gGreenStarSpriteTemplate, ANIM_ATTACKER, 2, 30, 640 delay 5 return -Move_SWEET_SCENT:: +Move_SWEET_SCENT: loadspritegfx ANIM_TAG_PINK_PETAL - playsewithpan SE_M_SWEET_SCENT, 192 + playsewithpan SE_M_SWEET_SCENT, SOUND_PAN_ATTACKER createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 100, 0, 100 delay 25 setpan 0 call SweetScentEffect createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 55, 0 - setpan 63 - createvisualtask AnimTask_CurseBlendEffect, 2, 20, 1, 5, 5, 13, 22207 + setpan SOUND_PAN_TARGET + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_DEF_SIDE, 1, 5, 5, 13, RGB(31, 21, 21) call SweetScentEffect waitforvisualfinish end -SweetScentEffect:: +SweetScentEffect: createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 70, 1, 64 delay 2 createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 60, 0, 64 @@ -8499,25 +8492,25 @@ SweetScentEffect:: delay 2 return -Move_HYPER_BEAM:: +Move_HYPER_BEAM: loadspritegfx ANIM_TAG_ORBS - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 4, 0, 16, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 4, 0, 16, RGB_BLACK waitforvisualfinish delay 10 - playsewithpan SE_M_HYPER_BEAM, 192 - createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 4, 1 + playsewithpan SE_M_HYPER_BEAM, SOUND_PAN_ATTACKER + createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 4, 1 waitforvisualfinish delay 30 - createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_HYPER_BEAM2, -64, 63, 1, 15, 0, 5 - createvisualtask AnimTask_ShakeMon, 2, 0, 0, 4, 50, 1 - createvisualtask AnimTask_FlashAnimTagWithColor, 2, 10147, 1, 12, 31, 16, 0, 0 + createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_HYPER_BEAM2, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 1, 15, 0, 5 + createvisualtask AnimTask_ShakeMon, 2, ANIM_ATTACKER, 0, 4, 50, 1 + createvisualtask AnimTask_FlashAnimTagWithColor, 2, ANIM_TAG_ORBS, 1, 12, RGB(31, 0, 0), 16, 0, 0 call HyperBeamOrbs call HyperBeamOrbs call HyperBeamOrbs call HyperBeamOrbs call HyperBeamOrbs - createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 50, 1 - createvisualtask AnimTask_BlendSelected, 10, 4, 2, 0, 11, RGB(25, 25, 25) + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 50, 1 + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 11, RGB(25, 25, 25) call HyperBeamOrbs call HyperBeamOrbs call HyperBeamOrbs @@ -8539,31 +8532,31 @@ Move_HYPER_BEAM:: call HyperBeamOrbs call HyperBeamOrbs call HyperBeamOrbs - createvisualtask AnimTask_BlendSelected, 10, 4, 2, 11, 0, RGB(25, 25, 25) + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 11, 0, RGB(25, 25, 25) waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 4, 16, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 4, 16, 0, RGB_BLACK end -HyperBeamOrbs:: - createsprite gHyperBeamOrbSpriteTemplate, ANIM_TARGET, 2, - createsprite gHyperBeamOrbSpriteTemplate, ANIM_TARGET, 2, +HyperBeamOrbs: + createsprite gHyperBeamOrbSpriteTemplate, ANIM_TARGET, 2 + createsprite gHyperBeamOrbSpriteTemplate, ANIM_TARGET, 2 delay 1 return -Move_FLATTER:: +Move_FLATTER: loadspritegfx ANIM_TAG_SPOTLIGHT loadspritegfx ANIM_TAG_CONFETTI - createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_ENCORE2, 63 - createvisualtask AnimTask_CreateSpotlight, 2, - createvisualtask AnimTask_HardwarePaletteFade, 2, BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD | BLDCNT_EFFECT_DARKEN, 3, 0, 10, FALSE + createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_ENCORE2, SOUND_PAN_TARGET + createvisualtask AnimTask_CreateSpotlight, 2 + createvisualtask AnimTask_HardwarePaletteFade, 2, 248, 3, 0, 10, 0 waitforvisualfinish createsprite gFlatterSpotlightSpriteTemplate, ANIM_TARGET, 2, 0, -8, 80 delay 0 - createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 5, 2, 1 + createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 5, 2, ANIM_TARGET delay 10 - createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 5, 2, 1 + createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 5, 2, ANIM_TARGET delay 0 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_FLATTER, -64 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_FLATTER, SOUND_PAN_ATTACKER call CreateFlatterConfetti call CreateFlatterConfetti call CreateFlatterConfetti @@ -8584,69 +8577,69 @@ Move_FLATTER:: call CreateFlatterConfetti call CreateFlatterConfetti delay 5 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_FLATTER, 63 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_FLATTER, SOUND_PAN_TARGET waitforvisualfinish - createvisualtask AnimTask_HardwarePaletteFade, 2, BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD | BLDCNT_EFFECT_DARKEN, 3, 10, 0, TRUE + createvisualtask AnimTask_HardwarePaletteFade, 2, 248, 3, 10, 0, 1 waitforvisualfinish - createvisualtask AnimTask_RemoveSpotlight, 2, + createvisualtask AnimTask_RemoveSpotlight, 2 end -CreateFlatterConfetti:: - createsprite gFlatterConfettiSpriteTemplate, ANIM_ATTACKER, 40, 0 - createsprite gFlatterConfettiSpriteTemplate, ANIM_ATTACKER, 40, 1 +CreateFlatterConfetti: + createsprite gFlatterConfettiSpriteTemplate, ANIM_ATTACKER, 40, ANIM_ATTACKER + createsprite gFlatterConfettiSpriteTemplate, ANIM_ATTACKER, 40, ANIM_TARGET return -Move_ROLE_PLAY:: +Move_ROLE_PLAY: monbg ANIM_ATK_PARTNER - createvisualtask AnimTask_BlendSelected, 10, 4, 2, 0, 16, RGB_WHITE - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 10, 0 + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 16, RGB_WHITE + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 10, RGB_BLACK waitforvisualfinish - playsewithpan SE_M_TRI_ATTACK, 192 - waitplaysewithpan SE_M_DETECT, 192, 30 - createvisualtask AnimTask_RolePlaySilhouette, 2, + playsewithpan SE_M_TRI_ATTACK, SOUND_PAN_ATTACKER + waitplaysewithpan SE_M_DETECT, SOUND_PAN_ATTACKER, 30 + createvisualtask AnimTask_RolePlaySilhouette, 2 waitforvisualfinish clearmonbg ANIM_ATK_PARTNER - createvisualtask AnimTask_BlendSelected, 10, 4, 2, 16, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 16, 0, RGB_WHITE delay 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 10, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 10, 0, RGB_BLACK end -Move_REFRESH:: +Move_REFRESH: loadspritegfx ANIM_TAG_THIN_RING loadspritegfx ANIM_TAG_SPARKLE_2 - playsewithpan SE_M_STAT_INCREASE, 192 + playsewithpan SE_M_STAT_INCREASE, SOUND_PAN_ATTACKER createvisualtask AnimTask_StatusClearedEffect, 2, 0 waitforvisualfinish - playsewithpan SE_M_MORNING_SUN, 192 + playsewithpan SE_M_MORNING_SUN, SOUND_PAN_ATTACKER call GrantingStarsEffect waitforvisualfinish - playsewithpan SE_SHINY, 192 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 10, 0, 31500 + playsewithpan SE_SHINY, SOUND_PAN_ATTACKER + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 10, 0, RGB(12, 24, 30) createsprite gThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0 end -Move_BLAZE_KICK:: +Move_BLAZE_KICK: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_SMALL_EMBER - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 - playsewithpan SE_M_FLAME_WHEEL, 63 + playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_TARGET createsprite gSpinningHandOrFootSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 30 - createvisualtask AnimTask_BlendSelected, 10, 4, 2, 0, 7, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 7, RGB_WHITE delay 30 - playsewithpan SE_M_FIRE_PUNCH, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 0 - createvisualtask AnimTask_ShakeMon2, 2, 1, 3, 0, 14, 1 - createvisualtask AnimTask_BlendSelected, 10, 4, 2, 0, 0, RGB_WHITE - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, 0, 8, 0, 0 + playsewithpan SE_M_FIRE_PUNCH, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, ANIM_TARGET, 0 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 3, 0, 14, 1 + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 0, RGB_WHITE + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB_BLACK, 8, RGB_BLACK, 0 call FireSpreadEffect waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -Move_HYPER_VOICE:: +Move_HYPER_VOICE: loadspritegfx ANIM_TAG_THIN_RING call HyperVoiceEffect waitforvisualfinish @@ -8655,56 +8648,56 @@ Move_HYPER_VOICE:: waitforvisualfinish end -HyperVoiceEffect:: - createvisualtask sub_80DD334, 5 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 8, 0, 1023 - createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 5, 0, 0 +HyperVoiceEffect: + createvisualtask SoundTask_PlayCryWithEcho, 5 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 8, 0, RGB_YELLOW + createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 5, ANIM_ATTACKER, 0 createsprite gHyperVoiceRingSpriteTemplate, ANIM_ATTACKER, 0, 45, 0, 0, 0, 0, 0, 1 - createvisualtask AnimTask_ShakeMon2, 2, 1, 1, 0, 6, 1 - createvisualtask AnimTask_ShakeMon2, 2, 3, 1, 0, 6, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 1, 0, 6, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_DEF_PARTNER, 1, 0, 6, 1 createvisualtask AnimTask_ShakeBattleTerrain, 2, 1, 0, 6, 1 - createvisualtask SoundTask_WaitForCry, 5, + createvisualtask SoundTask_WaitForCry, 5 return -Move_SAND_TOMB:: +Move_SAND_TOMB: loadspritegfx ANIM_TAG_MUD_SAND - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 0, 7, 563 - createvisualtask AnimTask_ShakeMon, 5, 1, 0, 2, 43, 1 - playsewithpan SE_M_SAND_TOMB, 63 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_TARGET, 2, 0, 7, RGB(19, 17, 0) + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 2, 43, 1 + playsewithpan SE_M_SAND_TOMB, SOUND_PAN_TARGET call SandTombSwirlingDirt call SandTombSwirlingDirt call SandTombSwirlingDirt delay 22 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 7, 0, 563 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_TARGET, 2, 7, 0, RGB(19, 17, 0) waitforvisualfinish end -SandTombSwirlingDirt:: - createsprite gSwirlingDirtSpriteTemplate, ANIM_TARGET, 2, 0, 32, 528, 30, 10, 50, 1 +SandTombSwirlingDirt: + createsprite gSwirlingDirtSpriteTemplate, ANIM_TARGET, 2, 0, 32, 528, 30, 10, 50, ANIM_TARGET delay 2 - createsprite gSwirlingDirtSpriteTemplate, ANIM_TARGET, 2, 0, 36, 480, 20, 13, -46, 1 + createsprite gSwirlingDirtSpriteTemplate, ANIM_TARGET, 2, 0, 36, 480, 20, 13, -46, ANIM_TARGET delay 2 - createsprite gSwirlingDirtSpriteTemplate, ANIM_TARGET, 2, 0, 37, 576, 20, 5, 42, 1 + createsprite gSwirlingDirtSpriteTemplate, ANIM_TARGET, 2, 0, 37, 576, 20, 5, 42, ANIM_TARGET delay 2 - createsprite gSwirlingDirtSpriteTemplate, ANIM_TARGET, 2, 0, 35, 400, 25, 8, -42, 1 + createsprite gSwirlingDirtSpriteTemplate, ANIM_TARGET, 2, 0, 35, 400, 25, 8, -42, ANIM_TARGET delay 2 - createsprite gSwirlingDirtSpriteTemplate, ANIM_TARGET, 2, 0, 32, 512, 25, 13, 46, 1 + createsprite gSwirlingDirtSpriteTemplate, ANIM_TARGET, 2, 0, 32, 512, 25, 13, 46, ANIM_TARGET delay 2 - createsprite gSwirlingDirtSpriteTemplate, ANIM_TARGET, 2, 0, 37, 464, 30, 12, -50, 1 + createsprite gSwirlingDirtSpriteTemplate, ANIM_TARGET, 2, 0, 37, 464, 30, 12, -50, ANIM_TARGET delay 2 return -Move_SHEER_COLD:: - fadetobg 15 +Move_SHEER_COLD: + fadetobg BG_ICE waitbgfadeout playsewithpan SE_M_ICY_WIND, 0 waitbgfadein loadspritegfx ANIM_TAG_ICE_CUBE monbg ANIM_DEF_PARTNER - monbgprio_28 1 + splitbgprio ANIM_TARGET setalpha 12, 8 createvisualtask AnimTask_FrozenIceCube, 2 - waitplaysewithpan SE_M_HAIL, 63, 17 + waitplaysewithpan SE_M_HAIL, SOUND_PAN_TARGET, 17 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -8712,42 +8705,43 @@ Move_SHEER_COLD:: waitbgfadein end -Move_ARM_THRUST:: +Move_ARM_THRUST: loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_IMPACT - monbgprio_28 1 + splitbgprio ANIM_TARGET setalpha 12, 8 - createvisualtask AnimTask_RotateMonSpriteToSide, 5, 8, 5, 0, 0 + createvisualtask AnimTask_RotateMonSpriteToSide, 5, 8, 5, ANIM_ATTACKER, 0 delay 6 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 3 delay 4 - playsewithpan SE_M_SWAGGER, 63 + playsewithpan SE_M_SWAGGER, SOUND_PAN_TARGET createsprite gArmThrustHandSpriteTemplate, ANIM_TARGET, 2, 10, -8, 14, 3 waitforvisualfinish - createvisualtask AnimTask_RotateMonSpriteToSide, 5, 8, 5, 0, 1 - playsewithpan SE_M_DOUBLE_SLAP, 63 + createvisualtask AnimTask_RotateMonSpriteToSide, 5, 8, 5, ANIM_ATTACKER, 1 + playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET choosetwoturnanim ArmThrustRight, ArmThrustLeft -ArmThrustContinue:: - createvisualtask AnimTask_ShakeMon, 5, 1, 4, 0, 6, 1 + +ArmThrustContinue: + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 4, 0, 6, 1 waitforvisualfinish blendoff end -ArmThrustRight:: - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 8, 0, 1, 2 +ArmThrustRight: + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 8, 0, ANIM_TARGET, 2 goto ArmThrustContinue -ArmThrustLeft:: - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -8, 0, 1, 2 +ArmThrustLeft: + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -8, 0, ANIM_TARGET, 2 goto ArmThrustContinue -Move_MUDDY_WATER:: - panse_1B SE_M_WHIRLPOOL, 192, 63, 2, 0 - createvisualtask AnimTask_CreateSurfWave, 2, 1 +Move_MUDDY_WATER: + panse SE_M_WHIRLPOOL, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0 + createvisualtask AnimTask_CreateSurfWave, 2, TRUE waitforvisualfinish end -Move_BULLET_SEED:: +Move_BULLET_SEED: loadspritegfx ANIM_TAG_SEED createsprite gBulletSeedSpriteTemplate, ANIM_TARGET, 2, 20, 0 delay 5 @@ -8755,7 +8749,7 @@ Move_BULLET_SEED:: delay 5 createsprite gBulletSeedSpriteTemplate, ANIM_TARGET, 2, 20, 0 delay 5 - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 30, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 30, 1 createsprite gBulletSeedSpriteTemplate, ANIM_TARGET, 2, 20, 0 delay 5 createsprite gBulletSeedSpriteTemplate, ANIM_TARGET, 2, 20, 0 @@ -8772,80 +8766,81 @@ Move_BULLET_SEED:: waitforvisualfinish end -Move_DRAGON_CLAW:: +Move_DRAGON_CLAW: loadspritegfx ANIM_TAG_SMALL_EMBER loadspritegfx ANIM_TAG_CLAW_SLASH - playsewithpan SE_M_SACRED_FIRE2, 192 - createvisualtask AnimTask_BlendSelected, 10, 2, 4, 0, 8, RGB(31, 19, 0) - createvisualtask AnimTask_ShakeMon, 5, 0, 0, 2, 15, 1 + playsewithpan SE_M_SACRED_FIRE2, SOUND_PAN_ATTACKER + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 4, 0, 8, RGB(31, 19, 0) + createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 15, 1 call DragonClawFireSpiral call DragonClawFireSpiral createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 6, 4 - createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 528, 30, 13, 50, 0 + createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 528, 30, 13, 50, ANIM_ATTACKER delay 2 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_RAZOR_WIND, 63 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_RAZOR_WIND, SOUND_PAN_TARGET createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, -10, -10, 0 createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, -10, 10, 0 createsprite gShakeMonOrTerrainSpriteTemplate, ANIM_ATTACKER, 2, -4, 1, 10, 3, 1 - createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 32, 480, 20, 16, -46, 0 + createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 32, 480, 20, 16, -46, ANIM_ATTACKER delay 2 - createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 33, 576, 20, 8, 42, 0 + createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 33, 576, 20, 8, 42, ANIM_ATTACKER delay 2 - createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 31, 400, 25, 11, -42, 0 + createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 31, 400, 25, 11, -42, ANIM_ATTACKER delay 2 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 6, 4 - createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 512, 25, 16, 46, 0 + createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 512, 25, 16, 46, ANIM_ATTACKER delay 2 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_RAZOR_WIND, 63 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_RAZOR_WIND, SOUND_PAN_TARGET createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, 10, -10, 1 createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, 10, 10, 1 createsprite gShakeMonOrTerrainSpriteTemplate, ANIM_ATTACKER, 2, -4, 1, 10, 3, 1 - createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 33, 464, 30, 15, -50, 0 + createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 33, 464, 30, 15, -50, ANIM_ATTACKER delay 2 - createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 528, 30, 13, 50, 0 + createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 528, 30, 13, 50, ANIM_ATTACKER delay 2 - createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 32, 480, 20, 16, -46, 0 + createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 32, 480, 20, 16, -46, ANIM_ATTACKER delay 2 - createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 33, 576, 20, 8, 42, 0 + createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 33, 576, 20, 8, 42, ANIM_ATTACKER delay 2 - createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 31, 400, 25, 11, -42, 0 + createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 31, 400, 25, 11, -42, ANIM_ATTACKER delay 2 - createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 512, 25, 16, 46, 0 + createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 512, 25, 16, 46, ANIM_ATTACKER delay 2 - createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 33, 464, 30, 15, -50, 0 - createvisualtask AnimTask_BlendSelected, 10, 2, 4, 8, 0, RGB(31, 19, 0) + createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 33, 464, 30, 15, -50, ANIM_ATTACKER + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 4, 8, 0, RGB(31, 19, 0) waitforvisualfinish end -DragonClawFireSpiral:: - createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 528, 30, 13, 50, 0 +DragonClawFireSpiral: + createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 528, 30, 13, 50, ANIM_ATTACKER delay 2 - createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 32, 480, 20, 16, -46, 0 + createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 32, 480, 20, 16, -46, ANIM_ATTACKER delay 2 - createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 33, 576, 20, 8, 42, 0 + createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 33, 576, 20, 8, 42, ANIM_ATTACKER delay 2 - createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 31, 400, 25, 11, -42, 0 + createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 31, 400, 25, 11, -42, ANIM_ATTACKER delay 2 - createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 512, 25, 16, 46, 0 + createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 512, 25, 16, 46, ANIM_ATTACKER delay 2 - createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 33, 464, 30, 15, -50, 0 + createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 33, 464, 30, 15, -50, ANIM_ATTACKER delay 2 return + end -Move_MUD_SHOT:: +Move_MUD_SHOT: loadspritegfx ANIM_TAG_BROWN_ORB monbg ANIM_DEF_PARTNER - monbgprio_28 1 + splitbgprio ANIM_TARGET setalpha 12, 8 - createvisualtask AnimTask_ShakeMon, 5, 0, 0, 2, 46, 1 + createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 46, 1 delay 6 createvisualtask AnimTask_StartSinAnimTimer, 5, 100 - panse_1B SE_M_WHIRLPOOL, 192, 63, 1, 0 + panse SE_M_WHIRLPOOL, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +1, 0 call MudShotOrbs call MudShotOrbs call MudShotOrbs - createvisualtask AnimTask_ShakeMon, 5, 1, 3, 0, 43, 1 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 3, 0, 43, 1 call MudShotOrbs call MudShotOrbs call MudShotOrbs @@ -8859,19 +8854,19 @@ Move_MUD_SHOT:: blendoff end -MudShotOrbs:: +MudShotOrbs: createsprite gMudShotOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, 10, 0, 16 delay 2 createsprite gMudShotOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, 10, 0, 16 delay 2 return -Move_METEOR_MASH:: +Move_METEOR_MASH: loadspritegfx ANIM_TAG_GOLD_STARS loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET - panse_1B SE_M_BARRIER, 192, 63, 3, 0 - fadetobg 16 + panse SE_M_BARRIER, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +3, 0 + fadetobg BG_COSMIC waitbgfadein waitforvisualfinish createsprite gMeteorMashStarSpriteTemplate, ANIM_TARGET, 3, -48, -64, 72, 32, 30 @@ -8881,9 +8876,9 @@ Move_METEOR_MASH:: createsprite gSpinningHandOrFootSpriteTemplate, ANIM_TARGET, 3, 0, 0, 0, 30 createsprite gMeteorMashStarSpriteTemplate, ANIM_TARGET, 3, -80, -64, 40, 32, 30 delay 20 - playsewithpan SE_M_VITAL_THROW2, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1 - createvisualtask AnimTask_ShakeMon2, 2, 1, 5, 0, 20, 1 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 5, 0, 20, 1 waitforvisualfinish delay 10 restorebg @@ -8891,118 +8886,118 @@ Move_METEOR_MASH:: waitforvisualfinish end -Move_REVENGE:: +Move_REVENGE: loadspritegfx ANIM_TAG_PURPLE_SCRATCH - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 - playsewithpan SE_M_TAKE_DOWN, 192 + playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER createsprite gRevengeSmallScratchSpriteTemplate, ANIM_ATTACKER, 2, 10, -10 waitforvisualfinish - createvisualtask AnimTask_CurseBlendEffect, 2, 2, 0, 4, 2, 8, 31 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 0, 4, 2, 8, RGB_RED waitforvisualfinish unloadspritegfx ANIM_TAG_PURPLE_SCRATCH loadspritegfx ANIM_TAG_PURPLE_SWIPE createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 6, 4 delay 4 - playsewithpan SE_M_SWAGGER, 63 + playsewithpan SE_M_SWAGGER, SOUND_PAN_TARGET createsprite gRevengeBigScratchSpriteTemplate, ANIM_TARGET, 2, 10, -10 waitforvisualfinish unloadspritegfx ANIM_TAG_PURPLE_SWIPE loadspritegfx ANIM_TAG_IMPACT - createvisualtask AnimTask_ShakeMon2, 2, 1, 3, 0, 10, 1 - createsprite gPersistHitSplatSpriteTemplate, ANIM_TARGET, 3, -10, -8, 1, 1, 8 - playsewithpan SE_M_VITAL_THROW2, 63 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 3, 0, 10, 1 + createsprite gPersistHitSplatSpriteTemplate, ANIM_TARGET, 3, -10, -8, ANIM_TARGET, 1, 8 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET delay 8 - createsprite gPersistHitSplatSpriteTemplate, ANIM_TARGET, 3, 10, 8, 1, 1, 8 - playsewithpan SE_M_MEGA_KICK2, 63 + createsprite gPersistHitSplatSpriteTemplate, ANIM_TARGET, 3, 10, 8, ANIM_TARGET, 1, 8 + playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -Move_POISON_FANG:: +Move_POISON_FANG: loadspritegfx ANIM_TAG_FANG_ATTACK loadspritegfx ANIM_TAG_POISON_BUBBLE - playsewithpan SE_M_BITE, 63 - createsprite gFangSpriteTemplate, ANIM_TARGET, 2, + playsewithpan SE_M_BITE, SOUND_PAN_TARGET + createsprite gFangSpriteTemplate, ANIM_TARGET, 2 delay 10 - createvisualtask AnimTask_ShakeMon, 3, 1, 3, 0, 10, 1 + createvisualtask AnimTask_ShakeMon, 3, ANIM_TARGET, 3, 0, 10, 1 waitforvisualfinish - createvisualtask AnimTask_CurseBlendEffect, 2, 4, 0, 4, 0, 12, 26650 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 0, 4, 0, 12, RGB(26, 0, 26) call PoisonBubblesEffect waitforvisualfinish end -Move_SUBSTITUTE:: - playsewithpan SE_M_ATTRACT, 192 - createvisualtask AnimTask_MonToSubstitute, 2, +Move_SUBSTITUTE: + playsewithpan SE_M_ATTRACT, SOUND_PAN_ATTACKER + createvisualtask AnimTask_MonToSubstitute, 2 end -Move_FRENZY_PLANT:: +Move_FRENZY_PLANT: loadspritegfx ANIM_TAG_ROOTS loadspritegfx ANIM_TAG_IMPACT - monbg 1 - monbgprio_28 1 + monbg ANIM_TARGET + splitbgprio ANIM_TARGET setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 1, 2, 0, 5, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_BG, 2, 0, 5, RGB_BLACK waitforvisualfinish createsprite gFrenzyPlantRootSpriteTemplate, ANIM_ATTACKER, 2, 10, 8, 2, 0, 0, 100 - playsewithpan SE_M_SCRATCH, 192 + playsewithpan SE_M_SCRATCH, SOUND_PAN_ATTACKER delay 5 createsprite gFrenzyPlantRootSpriteTemplate, ANIM_ATTACKER, 2, 20, -8, -2, 0, 1, 95 - playsewithpan SE_M_SCRATCH, 213 + playsewithpan SE_M_SCRATCH, -43 delay 5 createsprite gFrenzyPlantRootSpriteTemplate, ANIM_ATTACKER, 2, 30, 8, -4, 0, 0, 90 - playsewithpan SE_M_SCRATCH, 234 + playsewithpan SE_M_SCRATCH, -22 delay 5 createsprite gFrenzyPlantRootSpriteTemplate, ANIM_ATTACKER, 2, 40, -8, 4, 0, 1, 85 playsewithpan SE_M_SCRATCH, 0 delay 5 createsprite gFrenzyPlantRootSpriteTemplate, ANIM_ATTACKER, 2, 50, 8, 0, 0, 0, 85 - playsewithpan SE_M_SCRATCH, 21 + playsewithpan SE_M_SCRATCH, +21 delay 5 createsprite gFrenzyPlantRootSpriteTemplate, ANIM_ATTACKER, 2, 60, -8, -2, 0, 1, 85 - playsewithpan SE_M_SCRATCH, 42 + playsewithpan SE_M_SCRATCH, +42 delay 5 createsprite gFrenzyPlantRootSpriteTemplate, ANIM_ATTACKER, 2, 75, 8, 0, 0, 0, 85 - playsewithpan SE_M_SCRATCH, 63 + playsewithpan SE_M_SCRATCH, SOUND_PAN_TARGET delay 5 createsprite gFrenzyPlantRootSpriteTemplate, ANIM_ATTACKER, 2, 85, 16, 6, 0, 3, 80 - playsewithpan SE_M_SCRATCH, 63 + playsewithpan SE_M_SCRATCH, SOUND_PAN_TARGET delay 5 createsprite gFrenzyPlantRootSpriteTemplate, ANIM_ATTACKER, 2, 85, -16, -6, 0, 2, 75 - playsewithpan SE_M_SCRATCH, 63 + playsewithpan SE_M_SCRATCH, SOUND_PAN_TARGET delay 5 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -10, 1, 3 - playsewithpan SE_M_DOUBLE_SLAP, 63 - createvisualtask AnimTask_ShakeMon, 3, 1, 8, 0, 20, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -10, ANIM_TARGET, 3 + playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 3, ANIM_TARGET, 8, 0, 20, 1 delay 3 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 10, 8, 1, 3 - playsewithpan SE_M_DOUBLE_SLAP, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 10, 8, ANIM_TARGET, 3 + playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET delay 3 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 10, -3, 1, 2 - playsewithpan SE_M_DOUBLE_SLAP, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 10, -3, ANIM_TARGET, 2 + playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET delay 3 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -3, 1, 1, 2 - playsewithpan SE_M_DOUBLE_SLAP, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -3, 1, ANIM_TARGET, 2 + playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET delay 2 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, 1, 1, 1 - playsewithpan SE_M_DOUBLE_SLAP, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, 1, ANIM_TARGET, 1 + playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET delay 2 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 10, 1, 1 - playsewithpan SE_M_DOUBLE_SLAP, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 10, ANIM_TARGET, 1 + playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 1, 2, 5, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_BG, 2, 5, 0, RGB_BLACK waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -Move_METAL_SOUND:: +Move_METAL_SOUND: loadspritegfx ANIM_TAG_METAL_SOUND_WAVES monbg ANIM_DEF_PARTNER - monbgprio_2A 1 - createvisualtask AnimTask_ShakeMon2, 2, 0, 2, 0, 8, 1 + splitbgprio_foes ANIM_TARGET + createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 2, 0, 8, 1 call MetalSoundRings call MetalSoundRings call MetalSoundRings @@ -9013,45 +9008,46 @@ Move_METAL_SOUND:: waitforvisualfinish end -MetalSoundRings:: - panse_1B SE_M_SCREECH, 192, 63, 2, 0 +MetalSoundRings: + panse SE_M_SCREECH, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0 createsprite gMetalSoundSpriteTemplate, ANIM_TARGET, 2, 16, 0, 0, 0, 30, 0 delay 2 return -Move_FOCUS_PUNCH:: +Move_FOCUS_PUNCH: goto FocusPunch -FocusPunchEnd:: + +FocusPunchEnd: waitforvisualfinish end -FocusPunch:: +FocusPunch: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET delay 1 - createvisualtask AnimTask_IsContest, 2, - jumpargeq 7, 1, FocusPunchInContest - createvisualtask AnimTask_IsTargetPlayerSide, 2, - jumpargeq 7, 0, FocusPunchOnOpponent - jumpargeq 7, 1, FocusPunchOnPlayer -FocusPunchContinue:: + createvisualtask AnimTask_IsContest, 2 + jumprettrue FocusPunchInContest + createvisualtask AnimTask_IsTargetPlayerSide, 2 + jumpretfalse FocusPunchOnOpponent + jumprettrue FocusPunchOnPlayer +FocusPunchContinue: waitbgfadein monbg ANIM_DEF_PARTNER setalpha 12, 8 - playsewithpan SE_M_SWAGGER, 63 + playsewithpan SE_M_SWAGGER, SOUND_PAN_TARGET createsprite gFocusPunchFistSpriteTemplate, ANIM_TARGET, 2 delay 10 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -8, 1, 0 - createvisualtask AnimTask_ShakeMon, 5, 1, 8, 0, 24, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -8, ANIM_TARGET, 0 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 8, 0, 24, 1 delay 8 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 10, 2, 1, 0 - playsewithpan SE_M_VITAL_THROW2, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 10, 2, ANIM_TARGET, 0 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET delay 8 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 10, -6, 1, 0 - playsewithpan SE_M_VITAL_THROW2, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 10, -6, ANIM_TARGET, 0 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET delay 8 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 8, 1, 0 - playsewithpan SE_M_MEGA_KICK2, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 8, ANIM_TARGET, 0 + playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET waitforvisualfinish restorebg waitbgfadein @@ -9059,191 +9055,191 @@ FocusPunchContinue:: blendoff goto FocusPunchEnd -FocusPunchOnOpponent:: - fadetobg 4 +FocusPunchOnOpponent: + fadetobg BG_IMPACT_OPPONENT goto FocusPunchContinue -FocusPunchOnPlayer:: - fadetobg 5 +FocusPunchOnPlayer: + fadetobg BG_IMPACT_PLAYER goto FocusPunchContinue -FocusPunchInContest:: - fadetobg 6 +FocusPunchInContest: + fadetobg BG_IMPACT_CONTESTS goto FocusPunchContinue -Move_RETURN:: +Move_RETURN: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 - createvisualtask AnimTask_GetReturnPowerLevel, 2, + createvisualtask AnimTask_GetReturnPowerLevel, 2 delay 2 - jumpargeq 7, 0, ReturnWeak - jumpargeq 7, 1, ReturnMedium - jumpargeq 7, 2, ReturnStrong - jumpargeq 7, 3, ReturnStrongest -ReturnContinue:: + jumpreteq 0, ReturnWeak + jumpreteq 1, ReturnMedium + jumpreteq 2, ReturnStrong + jumpreteq 3, ReturnStrongest +ReturnContinue: waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -ReturnWeak:: - createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 16, 1, 0 - createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, -64 +ReturnWeak: + createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 16, 1, ANIM_ATTACKER + createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER waitforvisualfinish - createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 16, 1, 0 - createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, -64 + createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 16, 1, ANIM_ATTACKER + createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER delay 5 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -8, 1, 2 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_COMET_PUNCH, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -8, ANIM_TARGET, 2 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_COMET_PUNCH, SOUND_PAN_TARGET goto ReturnContinue -ReturnMedium:: - createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, 0 - createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, -64 +ReturnMedium: + createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, ANIM_ATTACKER + createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER waitforvisualfinish - createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, 0 - createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, -64 + createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, ANIM_ATTACKER + createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER waitforvisualfinish delay 11 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 5, 4 delay 6 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 2 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_MEGA_KICK2, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 2 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_MEGA_KICK2, SOUND_PAN_TARGET goto ReturnContinue -ReturnStrong:: - createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, 0 - createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, -64 +ReturnStrong: + createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, ANIM_ATTACKER + createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER waitforvisualfinish - createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, 0 - createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, -64 + createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, ANIM_ATTACKER + createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER waitforvisualfinish - createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, 0 - createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, -64 + createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, ANIM_ATTACKER + createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER waitforvisualfinish - createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, 0 - createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, -64 + createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, ANIM_ATTACKER + createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER waitforvisualfinish - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -8, 1, 2 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, 63 - createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -8, ANIM_TARGET, 2 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 6, 0, 8, 1 delay 8 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 10, 10, 1, 2 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, 63 - createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 10, 10, ANIM_TARGET, 2 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 6, 0, 8, 1 delay 8 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 3, -5, 1, 2 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, 63 - createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 3, -5, ANIM_TARGET, 2 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 6, 0, 8, 1 delay 8 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -5, 3, 1, 2 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, 63 - createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -5, 3, ANIM_TARGET, 2 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 6, 0, 8, 1 goto ReturnContinue -ReturnStrongest:: - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 0, 6, 0 +ReturnStrongest: + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 0, 0, 6, RGB_BLACK waitforvisualfinish - createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 16, 1, 0 - createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, -64 + createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 16, 1, ANIM_ATTACKER + createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER delay 8 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 3, -5, 1, 2 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 3, -5, ANIM_TARGET, 2 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, SOUND_PAN_TARGET waitforvisualfinish - createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 12, 1, 0 - createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, -64 + createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 12, 1, ANIM_ATTACKER + createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER delay 5 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -8, 1, 2 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, 63 - createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -8, ANIM_TARGET, 2 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 6, 0, 8, 1 waitforvisualfinish delay 4 - createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 8, 1, 0 - createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, -64 + createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 8, 1, ANIM_ATTACKER + createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER delay 5 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -8, 1, 2 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, 63 - createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -8, ANIM_TARGET, 2 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 6, 0, 8, 1 waitforvisualfinish delay 2 - createvisualtask AnimTask_CloneBattlerSpriteWithBlend, 2, 0, 4, 5, 1 - createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 4, 1, 0 - createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, -64 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -8, 1, 2 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, 63 - createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1 - createvisualtask AnimTask_CloneBattlerSpriteWithBlend, 2, 0, 4, 5, 1 + createvisualtask AnimTask_TraceMonBlended, 2, 0, 4, 5, 1 + createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 4, 1, ANIM_ATTACKER + createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -8, ANIM_TARGET, 2 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 6, 0, 8, 1 + createvisualtask AnimTask_TraceMonBlended, 2, 0, 4, 5, 1 waitforvisualfinish - createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 4, 2, 0 - createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, -64 + createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 4, 2, ANIM_ATTACKER + createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER delay 5 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -8, 1, 2 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, 63 - createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1 - createvisualtask AnimTask_CloneBattlerSpriteWithBlend, 2, 0, 4, 5, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -8, ANIM_TARGET, 2 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 6, 0, 8, 1 + createvisualtask AnimTask_TraceMonBlended, 2, 0, 4, 5, 1 waitforvisualfinish call ReturnStrongestHit call ReturnStrongestHit call ReturnStrongestHit call ReturnStrongestHit - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -8, 1, 0 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_MEGA_KICK2, 63 - createvisualtask AnimTask_ShakeMon, 5, 1, 8, 0, 24, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -8, ANIM_TARGET, 0 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_MEGA_KICK2, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 8, 0, 24, 1 delay 6 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 10, 10, 1, 0 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_MEGA_KICK2, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 10, 10, ANIM_TARGET, 0 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_MEGA_KICK2, SOUND_PAN_TARGET delay 6 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 3, -5, 1, 0 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_MEGA_KICK2, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 3, -5, ANIM_TARGET, 0 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_MEGA_KICK2, SOUND_PAN_TARGET delay 6 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -5, 3, 1, 0 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_MEGA_KICK2, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -5, 3, ANIM_TARGET, 0 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_MEGA_KICK2, SOUND_PAN_TARGET waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 6, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 0, 6, 0, RGB_BLACK goto ReturnContinue -ReturnStrongestHit:: - createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 4, 3, 0 - createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, -64 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, 63 - createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1 - createvisualtask AnimTask_CloneBattlerSpriteWithBlend, 2, 0, 4, 5, 1 +ReturnStrongestHit: + createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 4, 3, ANIM_ATTACKER + createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 2 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 6, 0, 8, 1 + createvisualtask AnimTask_TraceMonBlended, 2, 0, 4, 5, 1 waitforvisualfinish return -Move_COSMIC_POWER:: +Move_COSMIC_POWER: loadspritegfx ANIM_TAG_SPARKLE_2 createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_COSMIC_POWER, 0 playsewithpan SE_M_COSMIC_POWER, 0 - createvisualtask AnimTask_BlendNonAttackerPalettes, 2, 0, 0, 15, 0 + createvisualtask AnimTask_BlendNonAttackerPalettes, 2, 0, 0, 15, RGB_BLACK waitforvisualfinish - fadetobg 16 + fadetobg BG_COSMIC waitbgfadeout createvisualtask AnimTask_StartSlidingBg, 2, 0, 128, 0, -1 waitbgfadein delay 70 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_MORNING_SUN, -64 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_MORNING_SUN, SOUND_PAN_ATTACKER createsprite gGrantingStarsSpriteTemplate, ANIM_ATTACKER, 2, -15, 0, 0, 0, 32, 60 delay 8 createsprite gGrantingStarsSpriteTemplate, ANIM_ATTACKER, 2, 12, -5, 0, 0, 32, 60 delay 40 - createvisualtask AnimTask_BlendNonAttackerPalettes, 2, 0, 15, 0, 0 + createvisualtask AnimTask_BlendNonAttackerPalettes, 2, 0, 15, 0, RGB_BLACK waitforvisualfinish restorebg waitbgfadeout - setarg 7, 65535 + setarg 7, 0xFFFF waitbgfadein waitforvisualfinish end -Move_BLAST_BURN:: +Move_BLAST_BURN: loadspritegfx ANIM_TAG_FIRE_PLUME loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 - playsewithpan SE_M_SACRED_FIRE, 192 + playsewithpan SE_M_SACRED_FIRE, SOUND_PAN_ATTACKER createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, -32, 0, 24, 0, 0, 0 createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, -20, -10, 24, 0, 0, 0 createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 66, 0, -16, 24, 0, 0, 0 @@ -9253,25 +9249,25 @@ Move_BLAST_BURN:: createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, 0, 16, 24, 0, 0, 0 createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, -20, 10, 24, 0, 0, 0 delay 25 - playsewithpan SE_M_FLAME_WHEEL2, 192 + playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_ATTACKER createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, -64, 0, 24, 0, 0, 0 createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 6, -40, -20, 24, 0, 0, 0 createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 70, 0, -32, 24, 0, 0, 0 createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 70, 40, -20, 24, 0, 0, 0 - createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 6, 0, 8, 1 createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 66, 64, 0, 24, 0, 0, 0 createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 66, 40, 20, 24, 0, 0, 0 createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, 0, 32, 24, 0, 0, 0 createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, -40, 20, 24, 0, 0, 0 createvisualtask AnimTask_InvertScreenColor, 2, 257, 257, 257 delay 25 - playsewithpan SE_M_FLAME_WHEEL2, 192 + playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_ATTACKER createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, -96, 0, 24, 0, 0, 0 createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 6, -60, -30, 24, 0, 0, 0 createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 70, 0, -48, 24, 0, 0, 0 createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 70, 60, -30, 24, 0, 0, 0 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -4, 3, 1, 0 - createvisualtask AnimTask_ShakeMon, 5, 1, 12, 0, 20, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -4, 3, ANIM_TARGET, 0 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 12, 0, 20, 1 createvisualtask AnimTask_ShakeBattleTerrain, 2, 2, 0, 10, 1 createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 66, 96, 0, 24, 0, 0, 0 createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 66, 60, 30, 24, 0, 0, 0 @@ -9283,7 +9279,7 @@ Move_BLAST_BURN:: blendoff end -Move_ROCK_TOMB:: +Move_ROCK_TOMB: loadspritegfx ANIM_TAG_X_SIGN loadspritegfx ANIM_TAG_ROCKS createvisualtask AnimTask_ShakeBattleTerrain, 2, 2, 0, 10, 1 @@ -9291,47 +9287,47 @@ Move_ROCK_TOMB:: createsprite gRockTombRockSpriteTemplate, ANIM_TARGET, 2, 20, 12, 64, 114, 0 delay 8 createvisualtask AnimTask_ShakeBattleTerrain, 2, 0, 2, 3, 1 - playsewithpan SE_M_STRENGTH, 63 + playsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET delay 8 createsprite gRockTombRockSpriteTemplate, ANIM_TARGET, 2, -20, 12, 64, 98, 0 delay 8 createvisualtask AnimTask_ShakeBattleTerrain, 2, 0, 2, 3, 1 - playsewithpan SE_M_STRENGTH, 63 + playsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET delay 8 createsprite gRockTombRockSpriteTemplate, ANIM_TARGET, 66, 3, 6, 64, 82, 0 delay 8 createvisualtask AnimTask_ShakeBattleTerrain, 2, 0, 2, 3, 1 - playsewithpan SE_M_STRENGTH, 63 + playsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET delay 8 createsprite gRockTombRockSpriteTemplate, ANIM_TARGET, 2, -3, 13, 64, 66, 0 delay 8 createvisualtask AnimTask_ShakeBattleTerrain, 2, 0, 2, 3, 1 - playsewithpan SE_M_STRENGTH, 63 + playsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET delay 24 - playsewithpan SE_M_HYPER_BEAM, 63 - createsprite gRedXSpriteTemplate, ANIM_TARGET, 5, 1, 50 - createvisualtask AnimTask_ShakeMon, 5, 1, 3, 0, 20, 1 + playsewithpan SE_M_HYPER_BEAM, SOUND_PAN_TARGET + createsprite gRedXSpriteTemplate, ANIM_TARGET, 5, ANIM_TARGET, 50 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 3, 0, 20, 1 createvisualtask AnimTask_ShakeBattleTerrain, 2, 2, 0, 10, 1 waitforvisualfinish end -Move_SILVER_WIND:: +Move_SILVER_WIND: loadspritegfx ANIM_TAG_SPARKLE_6 - panse_1B SE_M_GUST, 192, 63, 2, 0 + panse SE_M_GUST, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0 playsewithpan SE_M_MORNING_SUN, 0 delay 0 monbg ANIM_DEF_PARTNER - monbgprio_29 + splitbgprio_all delay 0 - createvisualtask AnimTask_BlendExcept, 10, 1, 0, 0, 4, 0 - createvisualtask AnimTask_GetTargetSide, 2, - jumpargeq 7, 1, SilverWindOnPlayer + createvisualtask AnimTask_BlendBattleAnimPalExclude, 10, ANIM_TARGET, 0, 0, 4, RGB_BLACK + createvisualtask AnimTask_GetTargetSide, 2 + jumprettrue SilverWindOnPlayer fadetobg BG_BUG_OPPONENT waitbgfadeout createvisualtask AnimTask_StartSlidingBg, 5, 1536, 0, 0, -1 -SilverWindContinue:: +SilverWindContinue: delay 0 - createvisualtask AnimTask_BlendSelected, 10, 1, 0, 4, 4, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 4, 4, RGB_BLACK waitbgfadein createsprite gSilverWindBigSparkSpriteTemplate, ANIM_TARGET, 66, -32, 16, 0, 6, 2, 3, 1 createsprite gSilverWindBigSparkSpriteTemplate, ANIM_TARGET, 66, -8, 18, 64, 3, 2, 2, 1 @@ -9357,38 +9353,38 @@ SilverWindContinue:: createsprite gSilverWindSmallSparkSpriteTemplate, ANIM_TARGET, 66, -4, 16, 0, 6, 1, 2, 1 createsprite gSilverWindSmallSparkSpriteTemplate, ANIM_TARGET, 66, -16, 12, 192, 5, 2, 3, 1 waitforvisualfinish - playsewithpan SE_M_GUST2, 63 + playsewithpan SE_M_GUST2, SOUND_PAN_TARGET clearmonbg ANIM_DEF_PARTNER delay 0 restorebg waitbgfadeout - createvisualtask AnimTask_BlendExcept, 10, 1, 0, 4, 0, 0 - setarg 7, 65535 + createvisualtask AnimTask_BlendBattleAnimPalExclude, 10, ANIM_TARGET, 0, 4, 0, RGB_BLACK + setarg 7, 0xFFFF waitbgfadein end -SilverWindOnPlayer:: +SilverWindOnPlayer: fadetobg BG_BUG_PLAYER waitbgfadeout createvisualtask AnimTask_StartSlidingBg, 5, -1536, 0, 0, -1 goto SilverWindContinue -Move_SNATCH:: - playsewithpan SE_M_TAKE_DOWN, 192 - createvisualtask AnimTask_WindUpLunge, 5, 0, -12, 4, 10, 10, 12, 6 +Move_SNATCH: + playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER + createvisualtask AnimTask_WindUpLunge, 5, ANIM_ATTACKER, -12, 4, 10, 10, 12, 6 end -Move_DIVE:: +Move_DIVE: loadspritegfx ANIM_TAG_SPLASH loadspritegfx ANIM_TAG_SWEAT_BEAD choosetwoturnanim DiveSetUp, DiveAttack -DiveSetUp:: +DiveSetUp: loadspritegfx ANIM_TAG_ROUND_SHADOW - playsewithpan SE_M_HEADBUTT, 192 + playsewithpan SE_M_HEADBUTT, SOUND_PAN_ATTACKER createsprite gDiveBallSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 13, 336 waitforvisualfinish - playsewithpan SE_M_DIVE, 192 + playsewithpan SE_M_DIVE, SOUND_PAN_ATTACKER createsprite gDiveWaterSplashSpriteTemplate, ANIM_ATTACKER, 3, 0 call DiveSetUpWaterDroplets call DiveSetUpWaterDroplets @@ -9397,17 +9393,17 @@ DiveSetUp:: call DiveSetUpWaterDroplets end -DiveSetUpWaterDroplets:: +DiveSetUpWaterDroplets: createsprite gSprayWaterDropletSpriteTemplate, ANIM_ATTACKER, 5, 0, 0 createsprite gSprayWaterDropletSpriteTemplate, ANIM_ATTACKER, 5, 1, 0 return -DiveAttack:: +DiveAttack: loadspritegfx ANIM_TAG_WATER_IMPACT loadspritegfx ANIM_TAG_SMALL_BUBBLES monbg ANIM_DEF_PARTNER setalpha 12, 8 - playsewithpan SE_M_EXPLOSION, 63 + playsewithpan SE_M_EXPLOSION, SOUND_PAN_TARGET createsprite gDiveWaterSplashSpriteTemplate, ANIM_TARGET, 3, 1 call DiveAttackWaterDroplets call DiveAttackWaterDroplets @@ -9417,40 +9413,40 @@ DiveAttack:: delay 12 call RisingWaterHitEffect waitforvisualfinish - visible 0 + visible ANIM_ATTACKER clearmonbg ANIM_DEF_PARTNER blendoff end -DiveAttackWaterDroplets:: +DiveAttackWaterDroplets: createsprite gSprayWaterDropletSpriteTemplate, ANIM_TARGET, 5, 0, 1 createsprite gSprayWaterDropletSpriteTemplate, ANIM_TARGET, 5, 1, 1 return -Move_ROCK_BLAST:: +Move_ROCK_BLAST: loadspritegfx ANIM_TAG_ROCKS loadspritegfx ANIM_TAG_IMPACT createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 6 delay 3 - playsewithpan SE_M_SWAGGER, 192 + playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER createsprite gRockBlastRockSpriteTemplate, ANIM_TARGET, 2, 16, 0, 0, 0, 25, 257 waitforvisualfinish - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1 - playsewithpan SE_M_ROCK_THROW, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 1 + playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 2, 0, 0, 20, 24, 14, 2 - createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 5, 1 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 5, 1 createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 2, 5, 0, -20, 24, 14, 1 createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 2, 0, 5, 20, -24, 14, 2 createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 2, -5, 0, -20, -24, 14, 2 waitforvisualfinish end -Move_OVERHEAT:: +Move_OVERHEAT: loadspritegfx ANIM_TAG_SMALL_EMBER loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 18 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 5, 28 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 5, RGB(28, 0, 0) waitforvisualfinish createvisualtask AnimTask_AllocBackupPalBuffer, 5 waitforvisualfinish @@ -9458,13 +9454,13 @@ Move_OVERHEAT:: delay 1 createvisualtask AnimTask_CopyPalFadedToUnfaded, 5, 0 delay 1 - playsewithpan SE_M_DRAGON_RAGE, 192 + playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER createvisualtask AnimTask_CopyPalUnfadedToBackup, 5, 1, 0 delay 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, 1, 0, 13, 28 - createvisualtask AnimTask_ShakeMon, 5, 0, 2, 0, 15, 1 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_ATTACKER, 1, 0, 13, RGB(28, 0, 0) + createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 2, 0, 15, 1 waitforvisualfinish - playsewithpan SE_M_FLAME_WHEEL2, 192 + playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_ATTACKER createsprite gOverheatFlameSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 30, 25, -20 createsprite gOverheatFlameSpriteTemplate, ANIM_ATTACKER, 2, 1, 32, 30, 25, -20 createsprite gOverheatFlameSpriteTemplate, ANIM_ATTACKER, 2, 1, 64, 30, 25, -20 @@ -9493,26 +9489,26 @@ Move_OVERHEAT:: createsprite gOverheatFlameSpriteTemplate, ANIM_ATTACKER, 66, 1, 224, 30, 25, 10 delay 5 waitforvisualfinish - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -5, 3, 1, 0 - playsewithpan SE_M_FIRE_PUNCH, 63 - createvisualtask AnimTask_ShakeMon, 2, 1, 10, 0, 25, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -5, 3, ANIM_TARGET, 0 + playsewithpan SE_M_FIRE_PUNCH, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 10, 0, 25, 1 delay 6 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 8, -5, 1, 0 - playsewithpan SE_M_FIRE_PUNCH, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 8, -5, ANIM_TARGET, 0 + playsewithpan SE_M_FIRE_PUNCH, SOUND_PAN_TARGET delay 8 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 10, 10, 1, 0 - playsewithpan SE_M_FIRE_PUNCH, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 10, 10, ANIM_TARGET, 0 + playsewithpan SE_M_FIRE_PUNCH, SOUND_PAN_TARGET delay 8 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 0 - playsewithpan SE_M_FIRE_PUNCH, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 0 + playsewithpan SE_M_FIRE_PUNCH, SOUND_PAN_TARGET createvisualtask AnimTask_CopyPalFadedToUnfaded, 5, 1 delay 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, -1, 0, 13, 19026 - createvisualtask AnimTask_ShakeMon, 5, 0, 3, 0, 15, 1 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_ATTACKER, -1, 0, 13, RGB(18, 18, 18) + createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 3, 0, 15, 1 waitforvisualfinish createvisualtask AnimTask_CopyPalUnfadedFromBackup, 5, 0, 1 delay 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 5, 0, 28 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 5, 0, RGB(28, 0, 0) waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -9520,36 +9516,36 @@ Move_OVERHEAT:: delay 15 createvisualtask AnimTask_CopyPalUnfadedFromBackup, 5, 1, 0 delay 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, 0, 13, 0, 19026 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_ATTACKER, 0, 13, 0, RGB(18, 18, 18) waitforvisualfinish createvisualtask AnimTask_FreeBackupPalBuffer, 5 waitforvisualfinish end -Move_HYDRO_CANNON:: +Move_HYDRO_CANNON: loadspritegfx ANIM_TAG_WATER_ORB loadspritegfx ANIM_TAG_WATER_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 - playsewithpan SE_M_SURF, 192 - createsprite gHydroCannonChargeSpriteTemplate, ANIM_TARGET, 2, + playsewithpan SE_M_SURF, SOUND_PAN_ATTACKER + createsprite gHydroCannonChargeSpriteTemplate, ANIM_TARGET, 2 delay 10 createvisualtask AnimTask_InvertScreenColor, 2, 257, 257, 257 delay 30 - panse_1B SE_M_HYDRO_PUMP, 192, 63, 2, 0 + panse SE_M_HYDRO_PUMP, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0 call HydroCannonBeam - createvisualtask AnimTask_ShakeMon, 5, 1, 10, 0, 40, 1 - createsprite gWaterHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 0 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 10, 0, 40, 1 + createsprite gWaterHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, ANIM_TARGET, 0 call HydroCannonBeam - createsprite gWaterHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 0 + createsprite gWaterHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, ANIM_TARGET, 0 call HydroCannonBeam - createsprite gWaterHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 0 + createsprite gWaterHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, ANIM_TARGET, 0 call HydroCannonBeam - createsprite gWaterHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 0 + createsprite gWaterHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, ANIM_TARGET, 0 call HydroCannonBeam - createsprite gWaterHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 0 + createsprite gWaterHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, ANIM_TARGET, 0 call HydroCannonBeam - createsprite gWaterHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 0 + createsprite gWaterHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, ANIM_TARGET, 0 waitforvisualfinish createvisualtask AnimTask_InvertScreenColor, 2, 257, 257, 257 waitforvisualfinish @@ -9557,7 +9553,7 @@ Move_HYDRO_CANNON:: blendoff end -HydroCannonBeam:: +HydroCannonBeam: createsprite gHydroCannonBeamSpriteTemplate, ANIM_TARGET, 2, 10, -10, 0, 0, 15, 257 delay 1 createsprite gHydroCannonBeamSpriteTemplate, ANIM_TARGET, 2, 10, -10, 0, 0, 15, 257 @@ -9569,54 +9565,54 @@ HydroCannonBeam:: createsprite gHydroCannonBeamSpriteTemplate, ANIM_TARGET, 2, 10, -10, 0, 0, 15, 257 return -Move_ASTONISH:: +Move_ASTONISH: loadspritegfx ANIM_TAG_SWEAT_BEAD - playsewithpan SE_M_ENCORE, 192 + playsewithpan SE_M_ENCORE, SOUND_PAN_ATTACKER createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 6 delay 25 createsprite gSprayWaterDropletSpriteTemplate, ANIM_TARGET, 5, 0, 1 - playsewithpan SE_M_SKETCH, 63 + playsewithpan SE_M_SKETCH, SOUND_PAN_TARGET createsprite gSprayWaterDropletSpriteTemplate, ANIM_TARGET, 5, 1, 1 - createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 5, 1 - createvisualtask AnimTask_StretchTargetUp, 3, + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 5, 1 + createvisualtask AnimTask_StretchTargetUp, 3 waitforvisualfinish end -Move_SEISMIC_TOSS:: +Move_SEISMIC_TOSS: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_ROCKS setarg 7, 0 monbg ANIM_DEF_PARTNER setalpha 12, 8 waitforvisualfinish - createvisualtask AnimTask_GetSeismicTossDamageLevel, 3, + createvisualtask AnimTask_GetSeismicTossDamageLevel, 3 delay 1 - fadetobg 17 + fadetobg BG_IN_AIR waitbgfadeout createvisualtask AnimTask_MoveSeismicTossBg, 3 playsewithpan SE_M_SKY_UPPERCUT, 0 waitbgfadein waitforvisualfinish createvisualtask AnimTask_SeismicTossBgAccelerateDownAtEnd, 3 - jumpargeq 7, 0, SeismicTossWeak - jumpargeq 7, 1, SeismicTossMedium - jumpargeq 7, 2, SeismicTossStrong -SeismicTossContinue:: + jumpreteq 0, SeismicTossWeak + jumpreteq 1, SeismicTossMedium + jumpreteq 2, SeismicTossStrong +SeismicTossContinue: restorebg waitbgfadeout - setarg 7, 4095 + setarg 7, 0xFFF waitbgfadein clearmonbg ANIM_DEF_PARTNER blendoff end -SeismicTossWeak:: +SeismicTossWeak: call SeismicTossRockScatter1 delay 16 call SeismicTossRockScatter2 goto SeismicTossContinue -SeismicTossMedium:: +SeismicTossMedium: call SeismicTossRockScatter1 delay 14 call SeismicTossRockScatter2 @@ -9624,7 +9620,7 @@ SeismicTossMedium:: call SeismicTossRockScatter1 goto SeismicTossContinue -SeismicTossStrong:: +SeismicTossStrong: call SeismicTossRockScatter2 delay 10 call SeismicTossRockScatter1 @@ -9634,197 +9630,199 @@ SeismicTossStrong:: call SeismicTossRockScatter1 goto SeismicTossContinue -SeismicTossRockScatter1:: - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -10, -8, 1, 1 - playsewithpan SE_M_STRENGTH, 63 - createvisualtask AnimTask_ShakeMon, 2, 1, 0, 3, 5, 1 +SeismicTossRockScatter1: + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -10, -8, ANIM_TARGET, 1 + playsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 5, 1 createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, -12, 27, 2, 3 createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, 8, 28, 3, 4 createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, -4, 30, 2, 3 createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, 12, 25, 4, 4 return -SeismicTossRockScatter2:: - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 10, -8, 1, 1 - playsewithpan SE_M_ROCK_THROW, 63 - createvisualtask AnimTask_ShakeMon, 2, 1, 0, 3, 5, 1 +SeismicTossRockScatter2: + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 10, -8, ANIM_TARGET, 1 + playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 5, 1 createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, -12, 32, 3, 4 createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, 8, 31, 2, 2 createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, -4, 28, 2, 3 createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, 12, 30, 4, 3 return -Move_MAGIC_COAT:: +Move_MAGIC_COAT: loadspritegfx ANIM_TAG_ORANGE_LIGHT_WALL setalpha 0, 16 - waitplaysewithpan SE_M_BARRIER, 192, 15 - createsprite gMagicCoatWallSpriteTemplate, ANIM_ATTACKER, 3, 40, 0, 10170 + waitplaysewithpan SE_M_BARRIER, SOUND_PAN_ATTACKER, 15 + createsprite gMagicCoatWallSpriteTemplate, ANIM_ATTACKER, 3, 40, 0, ANIM_TAG_ORANGE_LIGHT_WALL waitforvisualfinish delay 1 blendoff end -Move_WATER_PULSE:: +Move_WATER_PULSE: loadspritegfx ANIM_TAG_SMALL_BUBBLES loadspritegfx ANIM_TAG_BLUE_RING_2 - monbg 1 - monbgprio_28 1 - playsewithpan SE_M_BUBBLE3, 192 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 0, 7, 29472 + monbg ANIM_TARGET + splitbgprio ANIM_TARGET + playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 0, 0, 7, RGB(0, 25, 28) delay 10 createsprite gWaterPulseBubbleSpriteTemplate, ANIM_ATTACKER, 66, 100, 100, 8, 1, 20, 40, 0 createsprite gWaterPulseBubbleSpriteTemplate, ANIM_ATTACKER, 66, 20, 100, 16, 2, 10, 35, 1 createsprite gWaterPulseBubbleSpriteTemplate, ANIM_ATTACKER, 66, 200, 80, 8, 1, 40, 20, 0 createsprite gWaterPulseBubbleSpriteTemplate, ANIM_ATTACKER, 66, 80, 60, 10, 3, 20, 50, 0 createsprite gWaterPulseBubbleSpriteTemplate, ANIM_ATTACKER, 66, 140, 100, 16, 1, 20, 30, 1 - playsewithpan SE_M_BUBBLE3, 63 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET waitforvisualfinish - playsewithpan SE_M_GIGA_DRAIN, 192 + playsewithpan SE_M_GIGA_DRAIN, SOUND_PAN_ATTACKER createsprite gWaterPulseRingSpriteTemplate, ANIM_TARGET, 2, 0, 0, 40, 15 delay 5 - playsewithpan SE_M_GIGA_DRAIN, 192 + playsewithpan SE_M_GIGA_DRAIN, SOUND_PAN_ATTACKER createsprite gWaterPulseRingSpriteTemplate, ANIM_TARGET, 2, 0, 0, 40, 15 delay 5 - playsewithpan SE_M_GIGA_DRAIN, 192 + playsewithpan SE_M_GIGA_DRAIN, SOUND_PAN_ATTACKER createsprite gWaterPulseRingSpriteTemplate, ANIM_TARGET, 2, 0, 0, 40, 15 delay 13 - createvisualtask AnimTask_ShakeMon, 2, 1, 0, 8, 18, 1 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 8, 18, 1 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 7, 0, 29472 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 7, 0, RGB(0, 25, 28) waitforvisualfinish clearmonbg ANIM_DEF_PARTNER end -Move_PSYCHO_BOOST:: +Move_PSYCHO_BOOST: loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT monbg ANIM_ATK_PARTNER - fadetobg 3 + fadetobg BG_PSYCHIC waitbgfadeout - createvisualtask AnimTask_FadeScreenToWhite, 5, + createvisualtask AnimTask_FadeScreenToWhite, 5 waitbgfadein delay 6 - createvisualtask AnimTask_CurseBlendEffect, 2, 1, 2, 8, 0, 10, 0 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG, 2, 8, 0, 10, RGB_BLACK delay 0 - monbgprio_28 0 + splitbgprio ANIM_ATTACKER setalpha 8, 8 delay 10 - createvisualtask AnimTask_ShakeMon, 2, 0, 3, 0, 240, 0 - loopsewithpan SE_M_PSYBEAM2, 192, 14, 10 + createvisualtask AnimTask_ShakeMon, 2, ANIM_ATTACKER, 3, 0, 240, 0 + loopsewithpan SE_M_PSYBEAM2, SOUND_PAN_ATTACKER, 14, 10 createsprite gPsychoBoostOrbSpriteTemplate, ANIM_ATTACKER, 2 delay 110 - loopsewithpan SE_M_PSYBEAM2, 192, 7, 10 + loopsewithpan SE_M_PSYBEAM2, SOUND_PAN_ATTACKER, 7, 10 waitforvisualfinish - createvisualtask AnimTask_ShakeMon2, 2, 1, -8, 1, 24, 1 - playsewithpan SE_M_LEER, 63 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, -8, 1, 24, 1 + playsewithpan SE_M_LEER, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_ATK_PARTNER blendoff - call UnsetPsychicBg + call UnsetPsychicBackground end -Move_KNOCK_OFF:: +Move_KNOCK_OFF: loadspritegfx ANIM_TAG_SLAM_HIT_2 loadspritegfx ANIM_TAG_IMPACT createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 6 delay 4 - playsewithpan SE_M_VITAL_THROW, 63 + playsewithpan SE_M_VITAL_THROW, SOUND_PAN_TARGET createsprite gKnockOffStrikeSpriteTemplate, ANIM_TARGET, 2, -16, -16 delay 8 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 5, 1, RGB_WHITE, 10, 0, 0 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 2 - playsewithpan SE_M_COMET_PUNCH, 63 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 5, 1, RGB_WHITE, 10, RGB_BLACK, 0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 2 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -12, 10, 0, 3 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 5 delay 3 - createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 0, 3, 6, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 0, 3, 6, 1 delay 5 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 6 delay 10 waitforvisualfinish end -Move_DOOM_DESIRE:: +Move_DOOM_DESIRE: createvisualtask GetIsDoomDesireHitTurn, 2 delay 1 monbg ANIM_ATK_PARTNER - createvisualtask AnimTask_SetGreyscaleOrOriginalPal, 5, 1, 0 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 4, 0 + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_TARGET, FALSE + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 4, RGB_BLACK waitforvisualfinish setalpha 8, 8 - playsewithpan SE_M_PSYBEAM, 192 - createvisualtask AnimTask_ScaleMonAndRestore, 5, -4, -4, 15, 0, 1 + playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER + createvisualtask AnimTask_ScaleMonAndRestore, 5, -4, -4, 15, ANIM_ATTACKER, 1 waitforvisualfinish delay 20 - createvisualtask AnimTask_SetGreyscaleOrOriginalPal, 5, 1, 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 4, 0, 0 + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_TARGET, TRUE + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 4, 0, RGB_BLACK waitforvisualfinish clearmonbg ANIM_ATK_PARTNER blendoff end + +UnusedDoomDesireHit: loadspritegfx ANIM_TAG_EXPLOSION - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 0, 16, RGB_WHITE + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 0, 16, RGB_WHITE waitforvisualfinish delay 10 - createvisualtask AnimTask_DoomDesireLightBeam, 5, + createvisualtask AnimTask_DoomDesireLightBeam, 5 delay 5 - playsewithpan SE_M_CONFUSE_RAY, 192 + playsewithpan SE_M_CONFUSE_RAY, SOUND_PAN_ATTACKER delay 10 playsewithpan SE_M_CONFUSE_RAY, 0 delay 10 - playsewithpan SE_M_CONFUSE_RAY, 63 + playsewithpan SE_M_CONFUSE_RAY, SOUND_PAN_TARGET delay 23 - createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 10, 0, 20, 1 - playsewithpan SE_M_SELF_DESTRUCT, 63 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 10, 0, 20, 1 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 1 delay 6 - playsewithpan SE_M_SELF_DESTRUCT, 63 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 24, -24, 1, 1 delay 6 - playsewithpan SE_M_SELF_DESTRUCT, 63 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, -16, 16, 1, 1 delay 6 - playsewithpan SE_M_SELF_DESTRUCT, 63 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, -24, -12, 1, 1 delay 6 - playsewithpan SE_M_SELF_DESTRUCT, 63 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 16, 16, 1, 1 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 16, 0, RGB_WHITE + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 16, 0, RGB_WHITE waitforvisualfinish end -Move_SKY_UPPERCUT:: +Move_SKY_UPPERCUT: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER - monbgprio_28 1 - fadetobg 17 + splitbgprio ANIM_TARGET + fadetobg BG_IN_AIR waitbgfadeout - playsewithpan SE_M_SKY_UPPERCUT, 192 + playsewithpan SE_M_SKY_UPPERCUT, SOUND_PAN_ATTACKER createvisualtask AnimTask_MoveSkyUppercutBg, 5, 55 waitbgfadein setalpha 12, 8 delay 38 createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 0, 0, 5 delay 4 - createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 6, 1 - playsewithpan SE_M_VITAL_THROW2, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -28, 28, 1, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 6, 1 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -28, 28, ANIM_TARGET, 1 delay 1 - playsewithpan SE_M_VITAL_THROW2, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -15, 8, 1, 1 - playsewithpan SE_M_VITAL_THROW2, 63 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -15, 8, ANIM_TARGET, 1 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET delay 1 - playsewithpan SE_M_VITAL_THROW2, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -5, -12, 1, 1 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -5, -12, ANIM_TARGET, 1 delay 1 - playsewithpan SE_M_VITAL_THROW2, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, -32, 1, 1 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, -32, ANIM_TARGET, 1 delay 1 - playsewithpan SE_M_VITAL_THROW2, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 5, -52, 1, 1 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 5, -52, ANIM_TARGET, 1 createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -26, 16, 1, 4 delay 4 - createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 0, 3, 6, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 0, 3, 6, 1 delay 30 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 6 delay 4 @@ -9833,77 +9831,77 @@ Move_SKY_UPPERCUT:: blendoff restorebg waitbgfadeout - setarg 7, 65535 + setarg 7, 0xFFFF waitbgfadein end -Move_SECRET_POWER:: - createvisualtask AnimTask_GetBattleTerrain, 5, - jumpargeq 0, 0, Move_NEEDLE_ARM - jumpargeq 0, 1, Move_MAGICAL_LEAF - jumpargeq 0, 2, Move_MUD_SHOT - jumpargeq 0, 3, Move_WATERFALL - jumpargeq 0, 4, Move_SURF - jumpargeq 0, 5, Move_BUBBLE_BEAM - jumpargeq 0, 6, Move_ROCK_THROW - jumpargeq 0, 7, Move_BITE - jumpargeq 0, 8, Move_STRENGTH +Move_SECRET_POWER: + createvisualtask AnimTask_GetBattleTerrain, 5 + jumpargeq 0, BATTLE_TERRAIN_GRASS, Move_NEEDLE_ARM + jumpargeq 0, BATTLE_TERRAIN_LONG_GRASS, Move_MAGICAL_LEAF + jumpargeq 0, BATTLE_TERRAIN_SAND, Move_MUD_SHOT + jumpargeq 0, BATTLE_TERRAIN_UNDERWATER, Move_WATERFALL + jumpargeq 0, BATTLE_TERRAIN_WATER, Move_SURF + jumpargeq 0, BATTLE_TERRAIN_POND, Move_BUBBLE_BEAM + jumpargeq 0, BATTLE_TERRAIN_MOUNTAIN, Move_ROCK_THROW + jumpargeq 0, BATTLE_TERRAIN_CAVE, Move_BITE + jumpargeq 0, BATTLE_TERRAIN_BUILDING, Move_STRENGTH goto Move_SLAM -Move_TWISTER:: +Move_TWISTER: loadspritegfx ANIM_TAG_LEAF loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_ROCKS monbg ANIM_DEF_PARTNER - monbgprio_28 1 - playsewithpan SE_M_TWISTER, 63 - createsprite gTwisterLeafParticleSpriteTemplate, ANIM_TARGET, 2, 120, 70, 5, 70, 30 + splitbgprio ANIM_TARGET + playsewithpan SE_M_TWISTER, SOUND_PAN_TARGET + createsprite gTwisterLeafSpriteTemplate, ANIM_TARGET, 2, 120, 70, 5, 70, 30 delay 1 - createsprite gTwisterLeafParticleSpriteTemplate, ANIM_TARGET, 2, 115, 55, 6, 60, 25 + createsprite gTwisterLeafSpriteTemplate, ANIM_TARGET, 2, 115, 55, 6, 60, 25 delay 1 - createsprite gTwisterLeafParticleSpriteTemplate, ANIM_TARGET, 2, 115, 60, 7, 60, 30 - createsprite gTwisterLeafParticleSpriteTemplate, ANIM_TARGET, 2, 115, 55, 10, 60, 30 + createsprite gTwisterLeafSpriteTemplate, ANIM_TARGET, 2, 115, 60, 7, 60, 30 + createsprite gTwisterLeafSpriteTemplate, ANIM_TARGET, 2, 115, 55, 10, 60, 30 delay 3 createsprite gTwisterRockSpriteTemplate, ANIM_TARGET, 2, 100, 50, 4, 50, 26 delay 1 - createsprite gTwisterLeafParticleSpriteTemplate, ANIM_TARGET, 2, 105, 25, 8, 60, 20 + createsprite gTwisterLeafSpriteTemplate, ANIM_TARGET, 2, 105, 25, 8, 60, 20 delay 1 - createsprite gTwisterLeafParticleSpriteTemplate, ANIM_TARGET, 2, 115, 40, 10, 48, 30 + createsprite gTwisterLeafSpriteTemplate, ANIM_TARGET, 2, 115, 40, 10, 48, 30 delay 3 createsprite gTwisterRockSpriteTemplate, ANIM_TARGET, 2, 120, 30, 6, 45, 25 - createsprite gTwisterLeafParticleSpriteTemplate, ANIM_TARGET, 2, 115, 35, 10, 60, 30 + createsprite gTwisterLeafSpriteTemplate, ANIM_TARGET, 2, 115, 35, 10, 60, 30 delay 3 createsprite gTwisterRockSpriteTemplate, ANIM_TARGET, 2, 105, 20, 8, 40, 0 delay 3 - createsprite gTwisterLeafParticleSpriteTemplate, ANIM_TARGET, 2, 20, 255, 15, 32, 0 - createsprite gTwisterLeafParticleSpriteTemplate, ANIM_TARGET, 2, 110, 10, 8, 32, 20 + createsprite gTwisterLeafSpriteTemplate, ANIM_TARGET, 2, 20, 255, 15, 32, 0 + createsprite gTwisterLeafSpriteTemplate, ANIM_TARGET, 2, 110, 10, 8, 32, 20 waitforvisualfinish - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -32, -16, 1, 3 - playsewithpan SE_M_COMET_PUNCH, 63 - createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 3, 0, 12, 1 - createvisualtask AnimTask_ShakeMonInPlace, 2, 3, 3, 0, 12, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -32, -16, ANIM_TARGET, 3 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 3, 0, 12, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_DEF_PARTNER, 3, 0, 12, 1 delay 4 createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 1, 3 - playsewithpan SE_M_COMET_PUNCH, 63 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 4 createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 1, 3 - playsewithpan SE_M_COMET_PUNCH, 63 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 4 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 32, 20, 1, 3 - playsewithpan SE_M_COMET_PUNCH, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 32, 20, ANIM_TARGET, 3 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -Move_MAGICAL_LEAF:: +Move_MAGICAL_LEAF: loadspritegfx ANIM_TAG_LEAF loadspritegfx ANIM_TAG_RAZOR_LEAF loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 delay 1 - loopsewithpan SE_M_POISON_POWDER, 192, 10, 5 + loopsewithpan SE_M_POISON_POWDER, SOUND_PAN_ATTACKER, 10, 5 createvisualtask AnimTask_CycleMagicalLeafPal, 5 createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, -3, -2, 10 delay 2 @@ -9925,56 +9923,56 @@ Move_MAGICAL_LEAF:: delay 2 createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, -3, -5, 8 delay 60 - playsewithpan SE_M_RAZOR_WIND2, 192 + 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 delay 30 - playsewithpan SE_M_RAZOR_WIND, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, -10, -4, 1, 2 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, 10, 4, 1, 2 - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 8, 1 + playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, -10, -4, ANIM_TARGET, 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, 10, 4, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 8, 1 delay 20 - setarg 7, 65535 + setarg 7, 0xFFFF waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -Move_ICE_BALL:: +Move_ICE_BALL: loadspritegfx ANIM_TAG_ICE_CHUNK loadspritegfx ANIM_TAG_ICE_CRYSTALS createvisualtask AnimTask_GetRolloutCounter, 5, 0 jumpargeq 0, 4, IceBallSetIceBg -IceBallContinue:: - playsewithpan SE_M_ICY_WIND, 192 +IceBallContinue: + playsewithpan SE_M_ICY_WIND, SOUND_PAN_ATTACKER createsprite gIceBallChunkSpriteTemplate, ANIM_TARGET, 2, 15, 0, -12, -16, 30, -40 delay 28 - playsewithpan SE_M_BRICK_BREAK, 63 + playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_TARGET createvisualtask AnimTask_GetRolloutCounter, 5, 0 jumpargeq 0, 0, IceBallWeakest jumpargeq 0, 1, IceBallWeak jumpargeq 0, 2, IceBallMediun jumpargeq 0, 3, IceBallStrong jumpargeq 0, 4, IceBallStrongest -IceBallContinue2:: +IceBallContinue2: createvisualtask AnimTask_GetRolloutCounter, 5, 0 jumpargeq 0, 4, IceBallUnsetIceBg -IceBallEnd:: +IceBallEnd: end -IceBallSetIceBg:: - fadetobg 15 +IceBallSetIceBg: + fadetobg BG_ICE goto IceBallContinue -IceBallUnsetIceBg:: +IceBallUnsetIceBg: waitbgfadein delay 45 restorebg waitbgfadein goto IceBallEnd -IceBallWeakest:: - createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, 0, 1, 8, 1, 0 +IceBallWeakest: + createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, FALSE, 1, 8, 1, 0 call IceBallImpactShard call IceBallImpactShard call IceBallImpactShard @@ -9982,8 +9980,8 @@ IceBallWeakest:: call IceBallImpactShard goto IceBallContinue2 -IceBallWeak:: - createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, 0, 1, 10, 1, 0 +IceBallWeak: + createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, FALSE, 1, 10, 1, 0 call IceBallImpactShard call IceBallImpactShard call IceBallImpactShard @@ -9993,8 +9991,8 @@ IceBallWeak:: call IceBallImpactShard goto IceBallContinue2 -IceBallMediun:: - createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, 0, 1, 14, 1, 0 +IceBallMediun: + createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, FALSE, 1, 14, 1, 0 call IceBallImpactShard call IceBallImpactShard call IceBallImpactShard @@ -10006,8 +10004,8 @@ IceBallMediun:: call IceBallImpactShard goto IceBallContinue2 -IceBallStrong:: - createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, 0, 1, 18, 1, 0 +IceBallStrong: + createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, FALSE, 1, 18, 1, 0 call IceBallImpactShard call IceBallImpactShard call IceBallImpactShard @@ -10020,8 +10018,8 @@ IceBallStrong:: call IceBallImpactShard goto IceBallContinue2 -IceBallStrongest:: - createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, 0, 1, 30, 1, 0 +IceBallStrongest: + createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, FALSE, 1, 30, 1, 0 call IceBallImpactShard call IceBallImpactShard call IceBallImpactShard @@ -10034,181 +10032,180 @@ IceBallStrongest:: call IceBallImpactShard goto IceBallContinue2 -IceBallImpactShard:: +IceBallImpactShard: createsprite gIceBallImpactShardSpriteTemplate, ANIM_TARGET, 4, -12, -16 return -Move_WEATHER_BALL:: +Move_WEATHER_BALL: loadspritegfx ANIM_TAG_WEATHER_BALL - createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 8, 1, 0 + createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 8, 1, ANIM_ATTACKER delay 8 - playsewithpan SE_M_SWAGGER, 192 + playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER createsprite gWeatherBallUpSpriteTemplate, ANIM_ATTACKER, 2 waitforvisualfinish delay 15 playsewithpan SE_M_DETECT, 0 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 5, 1, RGB_WHITE, 10, 0, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 5, 1, RGB_WHITE, 10, RGB_BLACK, 0 waitforvisualfinish - createvisualtask AnimTask_GetWeather, 2, + createvisualtask AnimTask_GetWeather, 2 delay 1 - jumpargeq 7, 0, WeatherBallNormal - jumpargeq 7, 1, WeatherBallFire - jumpargeq 7, 2, WeatherBallWater - jumpargeq 7, 3, WeatherBallSandstorm - jumpargeq 7, 4, WeatherBallIce - -WeatherBallNormal:: + jumpreteq ANIM_WEATHER_NONE, WeatherBallNormal + jumpreteq ANIM_WEATHER_SUN, WeatherBallFire + jumpreteq ANIM_WEATHER_RAIN, WeatherBallWater + jumpreteq ANIM_WEATHER_SANDSTORM, WeatherBallSandstorm + jumpreteq ANIM_WEATHER_HAIL, WeatherBallIce +WeatherBallNormal: loadspritegfx ANIM_TAG_IMPACT createsprite gWeatherBallNormalDownSpriteTemplate, ANIM_TARGET, 2, -30, -100, 25, 1, 0, 0 waitforvisualfinish - playsewithpan SE_M_MEGA_KICK2, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, -10, 0, 1, 2 - createvisualtask AnimTask_ShakeMon, 2, 1, 0, 3, 8, 1 + playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, -10, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 8, 1 waitforvisualfinish end -WeatherBallFire:: +WeatherBallFire: loadspritegfx ANIM_TAG_SMALL_EMBER createsprite gWeatherBallFireDownSpriteTemplate, ANIM_TARGET, 2, -30, -100, 25, 1, 40, 10 - playsewithpan SE_M_FLAME_WHEEL, 63 + playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_TARGET delay 10 createsprite gWeatherBallFireDownSpriteTemplate, ANIM_TARGET, 2, -30, -100, 25, 1, -40, 20 - playsewithpan SE_M_FLAME_WHEEL, 63 + playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_TARGET delay 10 createsprite gWeatherBallFireDownSpriteTemplate, ANIM_TARGET, 2, -30, -100, 25, 1, 0, 0 - playsewithpan SE_M_FLAME_WHEEL, 63 + playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_TARGET waitforvisualfinish - playsewithpan SE_M_FLAME_WHEEL2, 63 - createvisualtask AnimTask_ShakeMon, 2, 1, 0, 3, 8, 1 + playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 8, 1 waitforvisualfinish end -WeatherBallWater:: +WeatherBallWater: loadspritegfx ANIM_TAG_SMALL_BUBBLES createsprite gWeatherBallWaterDownSpriteTemplate, ANIM_TARGET, 2, -30, -100, 25, 1, 50, 10 - playsewithpan SE_M_CRABHAMMER, 63 + playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET delay 8 createsprite gWeatherBallWaterDownSpriteTemplate, ANIM_TARGET, 2, -30, -100, 25, 1, -20, 20 - playsewithpan SE_M_CRABHAMMER, 63 + playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET delay 13 createsprite gWeatherBallWaterDownSpriteTemplate, ANIM_TARGET, 2, -30, -100, 25, 1, 0, 0 - playsewithpan SE_M_CRABHAMMER, 63 + playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET waitforvisualfinish - createvisualtask AnimTask_ShakeMon, 2, 1, 0, 3, 8, 1 - playsewithpan SE_M_GIGA_DRAIN, 63 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 8, 1 + playsewithpan SE_M_GIGA_DRAIN, SOUND_PAN_TARGET waitforvisualfinish end -WeatherBallSandstorm:: +WeatherBallSandstorm: loadspritegfx ANIM_TAG_ROCKS createsprite gWeatherBallRockDownSpriteTemplate, ANIM_TARGET, 2, -30, -100, 25, 1, 30, 0 - playsewithpan SE_M_ROCK_THROW, 63 + playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 5 createsprite gWeatherBallRockDownSpriteTemplate, ANIM_TARGET, 2, -30, -100, 25, 1, -40, 20 - playsewithpan SE_M_ROCK_THROW, 63 + playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 14 createsprite gWeatherBallRockDownSpriteTemplate, ANIM_TARGET, 2, -30, -100, 25, 1, 0, 0 - playsewithpan SE_M_ROCK_THROW, 63 + playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET waitforvisualfinish - playsewithpan SE_M_STRENGTH, 63 + playsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, -12, 27, 2, 3 createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, 8, 28, 3, 4 createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, -4, 30, 2, 3 createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, 12, 25, 4, 4 - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 8, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 8, 1 waitforvisualfinish end -WeatherBallIce:: +WeatherBallIce: loadspritegfx ANIM_TAG_HAIL loadspritegfx ANIM_TAG_ICE_CRYSTALS createsprite gWeatherBallIceDownSpriteTemplate, ANIM_TARGET, 2, -30, -100, 25, 25, -40, 20 - playsewithpan SE_M_HAIL, 63 + playsewithpan SE_M_HAIL, SOUND_PAN_TARGET delay 10 createsprite gWeatherBallIceDownSpriteTemplate, ANIM_TARGET, 2, -30, -100, 25, 25, 40, 0 - playsewithpan SE_M_HAIL, 63 + playsewithpan SE_M_HAIL, SOUND_PAN_TARGET delay 10 createsprite gWeatherBallIceDownSpriteTemplate, ANIM_TARGET, 2, -30, -100, 25, 25, 0, 0 - playsewithpan SE_M_HAIL, 63 + playsewithpan SE_M_HAIL, SOUND_PAN_TARGET waitforvisualfinish - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 8, 1 - playsewithpan SE_M_ICY_WIND, 63 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 8, 1 + playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET call IceCrystalEffectShort waitforvisualfinish end -Move_COUNT:: +Move_COUNT: loadspritegfx ANIM_TAG_IMPACT - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 - playsewithpan SE_M_DOUBLE_SLAP, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2 - createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1 + playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1 waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -IceCrystalEffectShort:: +IceCrystalEffectShort: createsprite gIceCrystalHitLargeSpriteTemplate, ANIM_TARGET, 2, -10, -10, 0 - playsewithpan SE_M_ICY_WIND, 63 + playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 4 createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 10, 20, 0 - playsewithpan SE_M_ICY_WIND, 63 + playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 4 createsprite gIceCrystalHitLargeSpriteTemplate, ANIM_TARGET, 2, -5, 10, 0 - playsewithpan SE_M_ICY_WIND, 63 + playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 4 createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 17, -12, 0 - playsewithpan SE_M_ICY_WIND, 63 + playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 4 createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, -15, 15, 0 - playsewithpan SE_M_ICY_WIND, 63 + playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 4 createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 0, 0, 0 - playsewithpan SE_M_ICY_WIND, 63 + playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 4 createsprite gIceCrystalHitLargeSpriteTemplate, ANIM_TARGET, 2, 20, 2, 0 - playsewithpan SE_M_ICY_WIND, 63 + playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET return -IceCrystalEffectLong:: +IceCrystalEffectLong: createsprite gIceCrystalHitLargeSpriteTemplate, ANIM_TARGET, 2, -10, -10, 1 - playsewithpan SE_M_ICY_WIND, 63 + playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 4 createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 10, 20, 1 - playsewithpan SE_M_ICY_WIND, 63 + playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 4 createsprite gIceCrystalHitLargeSpriteTemplate, ANIM_TARGET, 2, -29, 0, 1 - playsewithpan SE_M_ICY_WIND, 63 + playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 4 createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 29, -20, 1 - playsewithpan SE_M_ICY_WIND, 63 + playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 4 createsprite gIceCrystalHitLargeSpriteTemplate, ANIM_TARGET, 2, -5, 10, 1 - playsewithpan SE_M_ICY_WIND, 63 + playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 4 createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 17, -12, 1 - playsewithpan SE_M_ICY_WIND, 63 + playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 4 createsprite gIceCrystalHitLargeSpriteTemplate, ANIM_TARGET, 2, -20, 0, 1 - playsewithpan SE_M_ICY_WIND, 63 + playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 4 createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, -15, 15, 1 - playsewithpan SE_M_ICY_WIND, 63 + playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 4 createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 26, -5, 1 - playsewithpan SE_M_ICY_WIND, 63 + playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 4 createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1 - playsewithpan SE_M_ICY_WIND, 63 + playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 4 createsprite gIceCrystalHitLargeSpriteTemplate, ANIM_TARGET, 2, 20, 2, 1 - playsewithpan SE_M_ICY_WIND, 63 + playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET return - + IceSpikesEffectShort: @ Unused - loopsewithpan SE_M_ICY_WIND, 63, 6, 4 + loopsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET, 6, 4 createsprite gIceGroundSpikeSpriteTemplate, ANIM_TARGET, 2, 0, 24, 0 delay 4 createsprite gIceGroundSpikeSpriteTemplate, ANIM_TARGET, 2, 8, 24, 0 @@ -10224,8 +10221,8 @@ IceSpikesEffectShort: @ Unused createsprite gIceGroundSpikeSpriteTemplate, ANIM_TARGET, 2, -32, 24, 0 return -IceSpikesEffectLong:: - loopsewithpan SE_M_ICY_WIND, 63, 6, 4 +IceSpikesEffectLong: + loopsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET, 6, 4 createsprite gIceGroundSpikeSpriteTemplate, ANIM_TARGET, 2, 0, 24, 1 delay 4 createsprite gIceGroundSpikeSpriteTemplate, ANIM_TARGET, 2, 8, 24, 1 @@ -10247,15 +10244,15 @@ IceSpikesEffectLong:: createsprite gIceGroundSpikeSpriteTemplate, ANIM_TARGET, 2, -48, 24, 1 return -GrantingStarsEffect:: +GrantingStarsEffect: createsprite gGrantingStarsSpriteTemplate, ANIM_ATTACKER, 2, -15, 0, 0, 0, 32, 60 delay 8 createsprite gGrantingStarsSpriteTemplate, ANIM_ATTACKER, 2, 12, -5, 0, 0, 32, 60 delay 8 return -HealingEffect:: - playsewithpan SE_M_ABSORB_2, 192 +HealingEffect: + playsewithpan SE_M_ABSORB_2, SOUND_PAN_ATTACKER createsprite gHealingBlueStarSpriteTemplate, ANIM_ATTACKER, 2, 0, -5, 0, 0 delay 7 createsprite gHealingBlueStarSpriteTemplate, ANIM_ATTACKER, 2, -15, 10, 0, 0 @@ -10266,8 +10263,8 @@ HealingEffect:: delay 7 return -HealingEffect2:: - playsewithpan SE_M_ABSORB_2, 63 +HealingEffect2: + playsewithpan SE_M_ABSORB_2, SOUND_PAN_TARGET createsprite gHealingBlueStarSpriteTemplate, ANIM_TARGET, 2, 0, -5, 1, 0 delay 7 createsprite gHealingBlueStarSpriteTemplate, ANIM_TARGET, 2, -15, 10, 1, 0 @@ -10278,74 +10275,74 @@ HealingEffect2:: delay 7 return -PoisonBubblesEffect:: +PoisonBubblesEffect: createsprite gPoisonBubbleSpriteTemplate, ANIM_TARGET, 2, 10, 10, 0 - playsewithpan SE_M_TOXIC, 63 + playsewithpan SE_M_TOXIC, SOUND_PAN_TARGET delay 6 createsprite gPoisonBubbleSpriteTemplate, ANIM_TARGET, 2, 20, -20, 0 - playsewithpan SE_M_TOXIC, 63 + playsewithpan SE_M_TOXIC, SOUND_PAN_TARGET delay 6 createsprite gPoisonBubbleSpriteTemplate, ANIM_TARGET, 2, -20, 15, 0 - playsewithpan SE_M_TOXIC, 63 + playsewithpan SE_M_TOXIC, SOUND_PAN_TARGET delay 6 createsprite gPoisonBubbleSpriteTemplate, ANIM_TARGET, 2, 0, 0, 0 - playsewithpan SE_M_TOXIC, 63 + playsewithpan SE_M_TOXIC, SOUND_PAN_TARGET delay 6 createsprite gPoisonBubbleSpriteTemplate, ANIM_TARGET, 2, -20, -20, 0 - playsewithpan SE_M_TOXIC, 63 + playsewithpan SE_M_TOXIC, SOUND_PAN_TARGET delay 6 createsprite gPoisonBubbleSpriteTemplate, ANIM_TARGET, 2, 16, -8, 0 - playsewithpan SE_M_TOXIC, 63 + playsewithpan SE_M_TOXIC, SOUND_PAN_TARGET return -WaterBubblesEffectShort:: +WaterBubblesEffectShort: createsprite gWaterBubbleSpriteTemplate, ANIM_ATTACKER, 2, 10, 10, 0 - playsewithpan SE_M_BUBBLE3, 63 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET delay 6 createsprite gWaterBubbleSpriteTemplate, ANIM_ATTACKER, 2, 20, -20, 0 - playsewithpan SE_M_BUBBLE3, 63 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET delay 6 createsprite gWaterBubbleSpriteTemplate, ANIM_ATTACKER, 2, -20, 15, 0 - playsewithpan SE_M_BUBBLE3, 63 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET delay 6 createsprite gWaterBubbleSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 0 - playsewithpan SE_M_BUBBLE3, 63 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET delay 6 createsprite gWaterBubbleSpriteTemplate, ANIM_ATTACKER, 2, -20, -20, 0 - playsewithpan SE_M_BUBBLE3, 63 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET delay 6 createsprite gWaterBubbleSpriteTemplate, ANIM_ATTACKER, 2, 16, -8, 0 - playsewithpan SE_M_BUBBLE3, 63 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET return -WaterBubblesEffectLong:: +WaterBubblesEffectLong: createsprite gWaterBubbleSpriteTemplate, ANIM_ATTACKER, 2, 10, 10, 1 - playsewithpan SE_M_BUBBLE3, 63 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET delay 6 createsprite gWaterBubbleSpriteTemplate, ANIM_ATTACKER, 2, -28, -10, 1 - playsewithpan SE_M_BUBBLE3, 63 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET delay 6 createsprite gWaterBubbleSpriteTemplate, ANIM_ATTACKER, 2, 20, -20, 1 - playsewithpan SE_M_BUBBLE3, 63 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET delay 6 createsprite gWaterBubbleSpriteTemplate, ANIM_ATTACKER, 2, -20, 15, 1 - playsewithpan SE_M_BUBBLE3, 63 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET delay 6 createsprite gWaterBubbleSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1 - playsewithpan SE_M_BUBBLE3, 63 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET delay 6 createsprite gWaterBubbleSpriteTemplate, ANIM_ATTACKER, 2, 27, 8, 1 - playsewithpan SE_M_BUBBLE3, 63 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET delay 6 createsprite gWaterBubbleSpriteTemplate, ANIM_ATTACKER, 2, -20, -20, 1 - playsewithpan SE_M_BUBBLE3, 63 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET delay 6 createsprite gWaterBubbleSpriteTemplate, ANIM_ATTACKER, 2, 16, -8, 1 - playsewithpan SE_M_BUBBLE3, 63 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET return -ElectricityEffect:: - playsewithpan SE_M_THUNDERBOLT2, 63 +ElectricityEffect: + playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_TARGET createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 5, 0, 5, 0 delay 2 createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, -5, 10, 5, 1 @@ -10363,8 +10360,8 @@ ElectricityEffect:: createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, -20, 15, 5, 1 return -ConfusionEffect:: - loopsewithpan SE_M_DIZZY_PUNCH, 63, 13, 6 +ConfusionEffect: + loopsewithpan SE_M_DIZZY_PUNCH, SOUND_PAN_TARGET, 13, 6 createsprite gConfusionDuckSpriteTemplate, ANIM_TARGET, 2, 0, -15, 0, 3, 90 createsprite gConfusionDuckSpriteTemplate, ANIM_TARGET, 2, 0, -15, 51, 3, 90 createsprite gConfusionDuckSpriteTemplate, ANIM_TARGET, 2, 0, -15, 102, 3, 90 @@ -10372,333 +10369,334 @@ ConfusionEffect:: createsprite gConfusionDuckSpriteTemplate, ANIM_TARGET, 2, 0, -15, 204, 3, 90 return -SetPsychicBackground:: - fadetobg 3 +SetPsychicBackground: + fadetobg BG_PSYCHIC waitbgfadeout - createvisualtask AnimTask_SetPsychicBackground, 5, + createvisualtask AnimTask_SetPsychicBackground, 5 waitbgfadein return -UnsetPsychicBg:: +UnsetPsychicBackground: restorebg waitbgfadeout - setarg 7, 65535 + setarg 7, 0xFFFF waitbgfadein return -SetSkyBg:: +SetSkyBg: jumpifcontest SetSkyBgContest - fadetobg 18 + fadetobg BG_SKY waitbgfadeout createvisualtask AnimTask_StartSlidingBg, 5, -2304, 768, 1, -1 -SetSkyBgContinue:: +SetSkyBgContinue: waitbgfadein return -SetSkyBgContest:: - fadetobg 19 +SetSkyBgContest: + fadetobg BG_SKY_CONTESTS waitbgfadeout createvisualtask AnimTask_StartSlidingBg, 5, 2304, 768, 0, -1 goto SetSkyBgContinue -UnsetSkyBg:: +UnsetSkyBg: restorebg waitbgfadeout - setarg 7, 65535 + setarg 7, 0xFFFF waitbgfadein return -SetSolarBeamBg:: - createvisualtask AnimTask_IsContest, 2, - jumpargeq 7, 1, SetSolarBeamBgContest - createvisualtask AnimTask_IsTargetPlayerSide, 2, - jumpargeq 7, 0, SetSolarBeamBgOpponent +SetSolarBeamBg: + createvisualtask AnimTask_IsContest, 2 + jumprettrue SetSolarBeamBgContest + createvisualtask AnimTask_IsTargetPlayerSide, 2 + jumpretfalse SetSolarBeamBgOpponent goto SetSolarBeamBgPlayer -SetSolarBeamBgContinue:: + +SetSolarBeamBgContinue: waitbgfadein return -SetSolarBeamBgContest:: +SetSolarBeamBgContest: fadetobg BG_SOLAR_BEAM_CONTESTS goto SetSolarBeamBgContinue -SetSolarBeamBgPlayer:: +SetSolarBeamBgPlayer: fadetobg BG_SOLAR_BEAM_PLAYER goto SetSolarBeamBgContinue -SetSolarBeamBgOpponent:: +SetSolarBeamBgOpponent: fadetobg BG_SOLAR_BEAM_OPPONENT goto SetSolarBeamBgContinue -UnsetSolarBeamBg:: +UnsetSolarBeamBg: restorebg waitbgfadein return -Status_Poison:: - loopsewithpan SE_M_TOXIC, 63, 13, 6 - createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 18, 2 - createvisualtask AnimTask_CurseBlendEffect, 2, 2, 2, 2, 0, 12, 31774 +Status_Poison: + loopsewithpan SE_M_TOXIC, SOUND_PAN_TARGET, 13, 6 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 18, 2 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 2, 2, 0, 12, RGB(30, 0, 31) end -Status_Confusion:: +Status_Confusion: loadspritegfx ANIM_TAG_DUCK call ConfusionEffect end -Status_Burn:: +Status_Burn: loadspritegfx ANIM_TAG_SMALL_EMBER - playsewithpan SE_M_FLAME_WHEEL, 63 + playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_TARGET call BurnFlame call BurnFlame call BurnFlame waitforvisualfinish end -BurnFlame:: +BurnFlame: createsprite gBurnFlameSpriteTemplate, ANIM_TARGET, 2, -24, 24, 24, 24, 20, 1, 1 delay 4 return -Status_Infatuation:: +Status_Infatuation: loadspritegfx ANIM_TAG_MAGENTA_HEART - playsewithpan SE_M_CHARM, 192 + playsewithpan SE_M_CHARM, SOUND_PAN_ATTACKER createsprite gMagentaHeartSpriteTemplate, ANIM_ATTACKER, 3, 0, 20 delay 15 - playsewithpan SE_M_CHARM, 192 + playsewithpan SE_M_CHARM, SOUND_PAN_ATTACKER createsprite gMagentaHeartSpriteTemplate, ANIM_ATTACKER, 3, -20, 20 delay 15 - playsewithpan SE_M_CHARM, 192 + playsewithpan SE_M_CHARM, SOUND_PAN_ATTACKER createsprite gMagentaHeartSpriteTemplate, ANIM_ATTACKER, 3, 20, 20 end -Status_Sleep:: +Status_Sleep: loadspritegfx ANIM_TAG_LETTER_Z - playsewithpan SE_M_SNORE, 192 + playsewithpan SE_M_SNORE, SOUND_PAN_ATTACKER createsprite gSleepLetterZSpriteTemplate, ANIM_ATTACKER, 2, 4, -10, 16, 0, 0 delay 30 createsprite gSleepLetterZSpriteTemplate, ANIM_ATTACKER, 2, 4, -10, 16, 0, 0 end -Status_Paralysis:: +Status_Paralysis: loadspritegfx ANIM_TAG_SPARK_2 - createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 10, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 10, 1 call ElectricityEffect end -Status_Freeze:: +Status_Freeze: playsewithpan SE_M_ICY_WIND, 0 loadspritegfx ANIM_TAG_ICE_CUBE monbg ANIM_DEF_PARTNER - monbgprio_28 1 - waitplaysewithpan SE_M_HAIL, 63, 17 - createvisualtask AnimTask_FrozenIceCube, 2, + splitbgprio ANIM_TARGET + waitplaysewithpan SE_M_HAIL, SOUND_PAN_TARGET, 17 + createvisualtask AnimTask_FrozenIceCube, 2 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER end -Status_Curse:: +Status_Curse: loadspritegfx ANIM_TAG_GHOSTLY_SPIRIT monbg ANIM_DEF_PARTNER - playsewithpan SE_M_NIGHTMARE, 63 - createsprite gCurseGhostSpriteTemplate, ANIM_TARGET, 2, - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 14, 1 + playsewithpan SE_M_NIGHTMARE, SOUND_PAN_TARGET + createsprite gCurseGhostSpriteTemplate, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 14, 1 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER end -Status_Nightmare:: +Status_Nightmare: loadspritegfx ANIM_TAG_DEVIL monbg ANIM_DEF_PARTNER - playsewithpan SE_M_NIGHTMARE, 63 + playsewithpan SE_M_NIGHTMARE, SOUND_PAN_TARGET createsprite gNightmareDevilSpriteTemplate, ANIM_TARGET, 2 - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 14, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 14, 1 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER end -General_CastformChange:: - createvisualtask AnimTask_IsMonInvisible, 2, - jumpargeq 7, 1, CastformChangeSkipAnim +General_CastformChange: + createvisualtask AnimTask_IsMonInvisible, 2 + jumpreteq TRUE, CastformChangeSkipAnim goto CastformChangeContinue -CastformChangeContinue:: +CastformChangeContinue: monbg ANIM_ATTACKER - playsewithpan SE_M_TELEPORT, 192 - waitplaysewithpan SE_M_MINIMIZE, 192, 48 + playsewithpan SE_M_TELEPORT, SOUND_PAN_ATTACKER + waitplaysewithpan SE_M_MINIMIZE, SOUND_PAN_ATTACKER, 48 createvisualtask AnimTask_TransformMon, 2, 1 waitforvisualfinish clearmonbg ANIM_ATTACKER end -CastformChangeSkipAnim:: +CastformChangeSkipAnim: createvisualtask AnimTask_CastformGfxChange, 2, 1 end -General_StatsChange:: - createvisualtask AnimTask_StatsChange, 5, +General_StatsChange: + createvisualtask AnimTask_StatsChange, 5 waitforvisualfinish end -General_SubstituteFade:: +General_SubstituteFade: monbg ANIM_ATTACKER createvisualtask AnimTask_SubstituteFadeToInvisible, 5 - createvisualtask AnimTask_BlendSelected, 10, 2, 0, 0, 16, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 0, 0, 16, RGB_WHITE waitforvisualfinish delay 1 clearmonbg ANIM_ATTACKER delay 2 blendoff - createvisualtask AnimTask_BlendSelected, 10, 2, 0, 0, 0, RGB_WHITE - createvisualtask AnimTask_SwapMonSpriteToFromSubstitute, 2, 1 + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 0, 0, 0, RGB_WHITE + createvisualtask AnimTask_SwapMonSpriteToFromSubstitute, 2, TRUE end -General_SubstituteAppear:: - createvisualtask AnimTask_MonToSubstitute, 2, +General_SubstituteAppear: + createvisualtask AnimTask_MonToSubstitute, 2 end -General_BaitThrow:: +General_BaitThrow: createvisualtask AnimTask_SafariOrGhost_DecideAnimSides, 2, 0 - createvisualtask AnimTask_LoadBaitGfx, 2, + createvisualtask AnimTask_LoadBaitGfx, 2 delay 0 - waitplaysewithpan SE_M_JUMP_KICK, 192, 22 + waitplaysewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER, 22 createsprite gSafariBaitSpriteTemplate, ANIM_TARGET, 3, -18, 12, 0, 32 delay 50 - loopsewithpan SE_M_TAIL_WHIP, 63, 19, 2 - createvisualtask AnimTask_SwayMon, 5, 1, 8, 1536, 2, 1 + loopsewithpan SE_M_TAIL_WHIP, SOUND_PAN_TARGET, 19, 2 + createvisualtask AnimTask_SwayMon, 5, 1, 8, 1536, 2, ANIM_TARGET waitforvisualfinish - createvisualtask AnimTask_FreeBaitGfx, 2, + createvisualtask AnimTask_FreeBaitGfx, 2 end -General_ItemKnockoff:: +General_ItemKnockoff: loadspritegfx ANIM_TAG_ITEM_BAG - createsprite gKnockOffItemSpriteTemplate, ANIM_TARGET, 2, + createsprite gKnockOffItemSpriteTemplate, ANIM_TARGET, 2 end -General_TurnTrap:: - createvisualtask AnimTask_GetTrappedMoveAnimId, 5, - jumpargeq 0, 1, Status_FireSpin - jumpargeq 0, 2, Status_Whirlpool - jumpargeq 0, 3, Status_Clamp - jumpargeq 0, 4, Status_SandTomb +General_TurnTrap: + createvisualtask AnimTask_GetTrappedMoveAnimId, 5 + jumpargeq 0, TRAP_ANIM_FIRE_SPIN, Status_FireSpin + jumpargeq 0, TRAP_ANIM_WHIRLPOOL, Status_Whirlpool + jumpargeq 0, TRAP_ANIM_CLAMP, Status_Clamp + jumpargeq 0, TRAP_ANIM_SAND_TOMB, Status_SandTomb goto Status_BindWrap -Status_BindWrap:: +Status_BindWrap: loadspritegfx ANIM_TAG_TENDRILS - loopsewithpan SE_M_SCRATCH, 63, 6, 2 + loopsewithpan SE_M_SCRATCH, SOUND_PAN_TARGET, 6, 2 createsprite gConstrictBindingSpriteTemplate, ANIM_TARGET, 4, 0, 16, 0, 1 delay 7 createsprite gConstrictBindingSpriteTemplate, ANIM_TARGET, 2, 0, 8, 1, 1 delay 3 - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 8, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 8, 1 delay 20 - setarg 7, 65535 - playsewithpan SE_M_BIND, 63 + setarg 7, 0xFFFF + playsewithpan SE_M_BIND, SOUND_PAN_TARGET waitforvisualfinish end -Status_FireSpin:: +Status_FireSpin: loadspritegfx ANIM_TAG_SMALL_EMBER - playsewithpan SE_M_SACRED_FIRE2, 63 - createvisualtask AnimTask_ShakeMon, 5, 1, 0, 2, 30, 1 + playsewithpan SE_M_SACRED_FIRE2, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 2, 30, 1 call FireSpinEffect call FireSpinEffect waitforvisualfinish stopsound end -Status_Whirlpool:: +Status_Whirlpool: loadspritegfx ANIM_TAG_WATER_ORB monbg ANIM_DEF_PARTNER - monbgprio_28 1 + splitbgprio ANIM_TARGET setalpha 12, 8 delay 0 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 0, 7, 23968 - playsewithpan SE_M_WHIRLPOOL, 63 - createvisualtask AnimTask_ShakeMon, 5, 1, 0, 2, 30, 1 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_TARGET, 2, 0, 7, RGB(0, 13, 23) + playsewithpan SE_M_WHIRLPOOL, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 2, 30, 1 call WhirlpoolEffect call WhirlpoolEffect delay 12 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 7, 0, 23968 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_TARGET, 2, 7, 0, RGB(0, 13, 23) waitforvisualfinish stopsound clearmonbg ANIM_DEF_PARTNER end -Status_Clamp:: +Status_Clamp: loadspritegfx ANIM_TAG_CLAMP loadspritegfx ANIM_TAG_IMPACT - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 - playsewithpan SE_M_VICEGRIP, 63 + playsewithpan SE_M_VICEGRIP, SOUND_PAN_TARGET createsprite gClampJawSpriteTemplate, ANIM_ATTACKER, 2, -32, 0, 2, 819, 0, 10 createsprite gClampJawSpriteTemplate, ANIM_ATTACKER, 2, 32, 0, 6, -819, 0, 10 delay 10 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2 - createvisualtask AnimTask_ShakeMon, 5, 1, 3, 0, 5, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 3, 0, 5, 1 waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff waitforvisualfinish end -Status_SandTomb:: +Status_SandTomb: loadspritegfx ANIM_TAG_MUD_SAND - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 0, 7, 563 - createvisualtask AnimTask_ShakeMon, 5, 1, 0, 2, 30, 1 - playsewithpan SE_M_SAND_TOMB, 63 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_TARGET, 2, 0, 7, RGB(19, 17, 0) + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 2, 30, 1 + playsewithpan SE_M_SAND_TOMB, SOUND_PAN_TARGET call SandTombSwirlingDirt call SandTombSwirlingDirt delay 22 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 7, 0, 563 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_TARGET, 2, 7, 0, RGB(19, 17, 0) waitforvisualfinish stopsound end -General_ItemEffect:: +General_HeldItemEffect: loadspritegfx ANIM_TAG_THIN_RING loadspritegfx ANIM_TAG_SPARKLE_2 delay 0 - playsewithpan SE_M_TAKE_DOWN, 192 - createvisualtask AnimTask_RotateMonToSideAndRestore, 2, 16, 128, 0, 2 + playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER + createvisualtask AnimTask_RotateMonToSideAndRestore, 2, 16, 128, ANIM_ATTACKER, 2 waitforvisualfinish - playsewithpan SE_M_TAKE_DOWN, 192 - createvisualtask AnimTask_RotateMonToSideAndRestore, 2, 16, 128, 0, 2 + playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER + createvisualtask AnimTask_RotateMonToSideAndRestore, 2, 16, 128, ANIM_ATTACKER, 2 waitforvisualfinish - playsewithpan SE_M_TAKE_DOWN, 192 - createvisualtask AnimTask_RotateMonToSideAndRestore, 2, 16, 128, 0, 2 + playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER + createvisualtask AnimTask_RotateMonToSideAndRestore, 2, 16, 128, ANIM_ATTACKER, 2 waitforvisualfinish - playsewithpan SE_M_MORNING_SUN, 192 + playsewithpan SE_M_MORNING_SUN, SOUND_PAN_ATTACKER call GrantingStarsEffect waitforvisualfinish - playsewithpan SE_SHINY, 192 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, 3, 7, 0, 26609 + playsewithpan SE_SHINY, SOUND_PAN_ATTACKER + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_ATTACKER, 3, 7, 0, RGB(17, 31, 25) createsprite gThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0 waitforvisualfinish end -General_SmokeballEscape:: +General_SmokeballEscape: loadspritegfx ANIM_TAG_PINK_CLOUD monbg ANIM_ATTACKER setalpha 12, 4 delay 0 - playsewithpan SE_BALL_OPEN, 63 + playsewithpan SE_BALL_OPEN, SOUND_PAN_TARGET createsprite gSmokeBallEscapeCloudSpriteTemplate, ANIM_TARGET, 0, 0, 32, 28, 30 delay 4 - playsewithpan SE_BALL_OPEN, 63 + playsewithpan SE_BALL_OPEN, SOUND_PAN_TARGET createsprite gSmokeBallEscapeCloudSpriteTemplate, ANIM_ATTACKER, 127, 2, 12, 20, 30 delay 12 - playsewithpan SE_BALL_OPEN, 63 + playsewithpan SE_BALL_OPEN, SOUND_PAN_TARGET createsprite gSmokeBallEscapeCloudSpriteTemplate, ANIM_ATTACKER, 126, 2, -28, 4, 30 delay 12 - playsewithpan SE_BALL_OPEN, 63 + playsewithpan SE_BALL_OPEN, SOUND_PAN_TARGET createsprite gSmokeBallEscapeCloudSpriteTemplate, ANIM_ATTACKER, 124, 2, 14, -20, 30 delay 4 - playsewithpan SE_BALL_OPEN, 63 + playsewithpan SE_BALL_OPEN, SOUND_PAN_TARGET createvisualtask AnimTask_AttackerFadeToInvisible, 2, 2 createsprite gSmokeBallEscapeCloudSpriteTemplate, ANIM_ATTACKER, 123, 3, 4, 4, 30 delay 14 - playsewithpan SE_BALL_OPEN, 63 + playsewithpan SE_BALL_OPEN, SOUND_PAN_TARGET createsprite gSmokeBallEscapeCloudSpriteTemplate, ANIM_ATTACKER, 122, 3, -14, 18, 46 delay 0 createsprite gSmokeBallEscapeCloudSpriteTemplate, ANIM_ATTACKER, 121, 3, 14, -14, 46 @@ -10710,168 +10708,168 @@ General_SmokeballEscape:: createsprite gSmokeBallEscapeCloudSpriteTemplate, ANIM_ATTACKER, 118, 3, 0, 0, 46 waitforvisualfinish clearmonbg ANIM_ATTACKER - invisible 0 + invisible ANIM_ATTACKER delay 0 blendoff end -General_HangedOn:: - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 2, 7, 0, 9, 31 - playsewithpan SE_M_DRAGON_RAGE, 192 +General_FocusBand: + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_ATTACKER, 7, 0, 9, RGB_RED + playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER createvisualtask AnimTask_SlideMonForFocusBand, 5, 30, 128, 0, 1, 2, 0, 1 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 2, 4, 9, 0, 31 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_ATTACKER, 4, 9, 0, RGB_RED waitforvisualfinish delay 6 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 0, 0, 0, 15 end -General_Rain:: +General_Rain: loadspritegfx ANIM_TAG_RAIN_DROPS - playsewithpan SE_M_RAIN_DANCE, 192 - createvisualtask AnimTask_BlendSelected, 10, 1 | (0xF << 7), 2, 0, 4, RGB_BLACK + playsewithpan SE_M_RAIN_DANCE, SOUND_PAN_ATTACKER + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_BATTLERS_2, 2, 0, 4, RGB_BLACK waitforvisualfinish createvisualtask AnimTask_CreateRaindrops, 2, 0, 3, 60 createvisualtask AnimTask_CreateRaindrops, 2, 0, 3, 60 delay 50 waitforvisualfinish - createvisualtask AnimTask_BlendSelected, 10, 1 | (0xF << 7), 2, 4, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_BATTLERS_2, 2, 4, 0, RGB_BLACK waitforvisualfinish end -General_Sun:: +General_Sun: goto Move_SUNNY_DAY -General_Sandstorm:: +General_Sandstorm: goto Move_SANDSTORM -General_Hail:: +General_Hail: goto Move_HAIL -General_LeechSeedDrain:: - createvisualtask AnimTask_GetBattlersFromArg, 5, +General_LeechSeedDrain: + createvisualtask AnimTask_GetBattlersFromArg, 5 delay 0 goto Move_ABSORB -General_MonHit:: +General_MonHit: loadspritegfx ANIM_TAG_IMPACT - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 - playsewithpan SE_M_DOUBLE_SLAP, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2 - createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1 + playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1 waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -General_ItemSteal:: +General_ItemSteal: loadspritegfx ANIM_TAG_ITEM_BAG createvisualtask AnimTask_SetAnimAttackerAndTargetForEffectAtk, 2 - createvisualtask AnimTask_TargetToEffectBattler, 2, + createvisualtask AnimTask_SetTargetToEffectBattler, 2 @ Redundant with above delay 1 createsprite gItemStealSpriteTemplate, ANIM_ATTACKER, 2, 0, -5, 10, 2, -1 end -General_SnatchMove:: +General_SnatchMove: loadspritegfx ANIM_TAG_ITEM_BAG createvisualtask AnimTask_SetAnimAttackerAndTargetForEffectTgt, 2 call SnatchMoveTrySwapFromSubstitute delay 1 - createvisualtask AnimTask_SwayMon, 2, 0, 5, 5120, 4, 1 + createvisualtask AnimTask_SwayMon, 2, 0, 5, 5120, 4, ANIM_TARGET waitforvisualfinish - createvisualtask AnimTask_IsTargetSameSide, 2, - jumpargeq 7, 0, SnatchOpposingMonMove + createvisualtask AnimTask_IsTargetSameSide, 2 + jumpretfalse SnatchOpposingMonMove goto SnatchPartnerMonMove -SnatchMoveContinue:: +SnatchMoveContinue: waitforvisualfinish call SnatchMoveTrySwapToSubstitute end -SnatchOpposingMonMove:: - playsewithpan SE_M_DOUBLE_TEAM, 192 - createvisualtask AnimTask_SnatchOpposingMonMove, 2, +SnatchOpposingMonMove: + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER + createvisualtask AnimTask_SnatchOpposingMonMove, 2 goto SnatchMoveContinue -SnatchPartnerMonMove:: - playsewithpan SE_M_DOUBLE_TEAM, 192 - createvisualtask AnimTask_SnatchPartnerMove, 2, +SnatchPartnerMonMove: + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER + createvisualtask AnimTask_SnatchPartnerMove, 2 goto SnatchMoveContinue -General_FutureSightHit:: +General_FutureSightHit: createvisualtask AnimTask_SetAnimTargetToBattlerTarget, 2 monbg ANIM_DEF_PARTNER - playsewithpan SE_M_PSYBEAM, 192 + playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER call SetPsychicBackground setalpha 8, 8 - playsewithpan SE_M_SUPERSONIC, 63 - waitplaysewithpan SE_M_SUPERSONIC, 63, 8 - createvisualtask AnimTask_ShakeMon, 2, 1, 4, 0, 15, 1 - createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 15, 1, 1 + playsewithpan SE_M_SUPERSONIC, SOUND_PAN_TARGET + waitplaysewithpan SE_M_SUPERSONIC, SOUND_PAN_TARGET, 8 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 4, 0, 15, 1 + createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 15, ANIM_TARGET, 1 waitforvisualfinish - createvisualtask AnimTask_ShakeMon, 2, 1, 4, 0, 24, 1 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 4, 0, 24, 1 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff waitforvisualfinish delay 1 - call UnsetPsychicBg + call UnsetPsychicBackground end -General_DoomDesireHit:: - createvisualtask AnimTask_SetAnimTargetToBattlerTarget, 2, +General_DoomDesireHit: + createvisualtask AnimTask_SetAnimTargetToBattlerTarget, 2 loadspritegfx ANIM_TAG_EXPLOSION - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 0, 16, RGB_WHITE + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 0, 16, RGB_WHITE waitforvisualfinish delay 10 - createvisualtask AnimTask_DoomDesireLightBeam, 5, + createvisualtask AnimTask_DoomDesireLightBeam, 5 delay 9 - playsewithpan SE_M_CONFUSE_RAY, 192 + playsewithpan SE_M_CONFUSE_RAY, SOUND_PAN_ATTACKER delay 9 playsewithpan SE_M_CONFUSE_RAY, 0 delay 9 - playsewithpan SE_M_CONFUSE_RAY, 63 + playsewithpan SE_M_CONFUSE_RAY, SOUND_PAN_TARGET delay 25 - createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 10, 0, 20, 1 - playsewithpan SE_M_SELF_DESTRUCT, 63 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 10, 0, 20, 1 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 1 delay 6 - playsewithpan SE_M_SELF_DESTRUCT, 63 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 24, -24, 1, 1 delay 6 - playsewithpan SE_M_SELF_DESTRUCT, 63 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, -16, 16, 1, 1 delay 6 - playsewithpan SE_M_SELF_DESTRUCT, 63 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, -24, -12, 1, 1 delay 6 - playsewithpan SE_M_SELF_DESTRUCT, 63 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 16, 16, 1, 1 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 16, 0, RGB_WHITE + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 16, 0, RGB_WHITE waitforvisualfinish end -General_FocusPunchSetUp:: +General_FocusPunchSetUp: loadspritegfx ANIM_TAG_FOCUS_ENERGY - playsewithpan SE_M_DRAGON_RAGE, 192 + playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER call EndureEffect delay 8 - createvisualtask AnimTask_CurseBlendEffect, 2, 2, 2, 2, 0, 11, 31 - createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 32, 1 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 2, 2, 0, 11, RGB_RED + createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 32, 1 call EndureEffect delay 8 call EndureEffect waitforvisualfinish end -General_IngrainHeal:: +General_IngrainHeal: loadspritegfx ANIM_TAG_ORBS loadspritegfx ANIM_TAG_BLUE_STAR monbg ANIM_DEF_PARTNER setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 4, 13293 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 4, RGB(13, 31, 12) waitforvisualfinish delay 3 call AbsorbEffect @@ -10879,90 +10877,90 @@ General_IngrainHeal:: delay 15 call HealingEffect waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 4, 0, 13293 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 4, 0, RGB(13, 31, 12) waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -General_WishHeal:: +General_WishHeal: loadspritegfx ANIM_TAG_BLUE_STAR loadspritegfx ANIM_TAG_SPARKLE_2 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 0, 10, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 0, 10, RGB_BLACK waitforvisualfinish - playsewithpan SE_M_MEGA_KICK, 192 + playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER call GrantingStarsEffect waitforvisualfinish call HealingEffect waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 10, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 10, 0, RGB_BLACK end -General_MonScared:: +General_MonScared: createvisualtask AnimTask_SafariOrGhost_DecideAnimSides, 2, 1 waitforvisualfinish loadspritegfx ANIM_TAG_SWEAT_BEAD - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 0, 10, 26336 - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 10, 1 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_TARGET, 2, 0, 10, RGB(0, 23, 25) + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 10, 1 delay 20 createsprite gSprayWaterDropletSpriteTemplate, ANIM_TARGET, 5, 0, 1 - playsewithpan SE_M_SKETCH, 63 + playsewithpan SE_M_SKETCH, SOUND_PAN_TARGET createsprite gSprayWaterDropletSpriteTemplate, ANIM_TARGET, 5, 1, 1 - createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 5, 1 - createvisualtask AnimTask_StretchTargetUp, 3, + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 5, 1 + createvisualtask AnimTask_StretchTargetUp, 3 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 10, 0, 26336 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_TARGET, 2, 10, 0, RGB(0, 23, 25) waitforvisualfinish end -General_GhostGetOut:: +General_GhostGetOut: createvisualtask AnimTask_SafariOrGhost_DecideAnimSides, 2, 1 waitforvisualfinish - fadetobg 2 + fadetobg BG_GHOST waitbgfadeout - monbg_22 0 - createvisualtask sub_80B6BBC, 2, + monbg_static ANIM_ATTACKER + createvisualtask AnimTask_GhostGetOut, 2 waitbgfadein - loopsewithpan SE_M_PSYBEAM, 63, 20, 3 + loopsewithpan SE_M_PSYBEAM, SOUND_PAN_TARGET, 20, 3 waitforvisualfinish - clearmonbg_23 0 + clearmonbg_static ANIM_ATTACKER delay 1 loadspritegfx ANIM_TAG_SWEAT_BEAD - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, -1, 0, 6, 27349 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_TARGET, -1, 0, 6, RGB(21, 22, 26) createsprite gSprayWaterDropletSpriteTemplate, ANIM_TARGET, 5, 0, 1 createsprite gSprayWaterDropletSpriteTemplate, ANIM_TARGET, 5, 1, 1 - createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 5, 1 - createvisualtask AnimTask_StretchTargetUp, 3, + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 5, 1 + createvisualtask AnimTask_StretchTargetUp, 3 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, -1, 6, 0, 27349 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_TARGET, -1, 6, 0, RGB(21, 22, 26) waitforvisualfinish restorebg waitbgfadein end -General_SilphScoped:: +General_SilphScoped: monbg ANIM_ATTACKER - playsewithpan SE_M_TELEPORT, 192 - waitplaysewithpan SE_M_MINIMIZE, 192, 48 + playsewithpan SE_M_TELEPORT, SOUND_PAN_ATTACKER + waitplaysewithpan SE_M_MINIMIZE, SOUND_PAN_ATTACKER, 48 createvisualtask AnimTask_TransformMon, 2, 255 waitsound waitforvisualfinish clearmonbg ANIM_ATTACKER end -General_SafariRockThrow:: +General_SafariRockThrow: createvisualtask AnimTask_SafariOrGhost_DecideAnimSides, 2, 0 waitforvisualfinish loadspritegfx ANIM_TAG_ROCKS loadspritegfx ANIM_TAG_IMPACT delay 0 - waitplaysewithpan SE_M_JUMP_KICK, 192, 22 + waitplaysewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER, 22 createsprite gSafariRockTemplate, ANIM_TARGET, 3, -17, 14, 8, 0 delay 50 monbg ANIM_DEF_PARTNER setalpha 12, 8 delay 0 - playsewithpan SE_M_DOUBLE_SLAP, 63 + playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -4, -20, 1, 2 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER @@ -10970,67 +10968,66 @@ General_SafariRockThrow:: waitforvisualfinish end -General_SafariReaction:: - createvisualtask AnimTask_SafariGetReaction, 2, +General_SafariReaction: + createvisualtask AnimTask_SafariGetReaction, 2 waitforvisualfinish - jumpargeq 7, 0, SafariReaction_WatchingCarefully - jumpargeq 7, 1, SafariReaction_Angry - jumpargeq 7, 2, SafariReaction_Eating + jumpreteq B_MSG_MON_WATCHING, SafariReaction_WatchingCarefully + jumpreteq B_MSG_MON_ANGRY, SafariReaction_Angry + jumpreteq B_MSG_MON_EATING, SafariReaction_Eating end -SafariReaction_WatchingCarefully:: - playsewithpan SE_M_TAKE_DOWN, 63 +SafariReaction_WatchingCarefully: + playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_TARGET createvisualtask AnimTask_RotateMonToSideAndRestore, 2, 16, 96, 0, 2 waitforvisualfinish - playsewithpan SE_M_TAKE_DOWN, 63 + playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_TARGET createvisualtask AnimTask_RotateMonToSideAndRestore, 2, 16, -96, 0, 2 end -SafariReaction_Angry:: +SafariReaction_Angry: loadspritegfx ANIM_TAG_ANGER createsprite gAngerMarkSpriteTemplate, ANIM_TARGET, 2, 1, 20, -20 - playsewithpan SE_M_SWAGGER2, 63 + playsewithpan SE_M_SWAGGER2, SOUND_PAN_TARGET waitforvisualfinish delay 12 createsprite gAngerMarkSpriteTemplate, ANIM_TARGET, 2, 1, -20, -20 - playsewithpan SE_M_SWAGGER2, 63 + playsewithpan SE_M_SWAGGER2, SOUND_PAN_TARGET end -SafariReaction_Eating:: - playsewithpan SE_M_TAKE_DOWN, 63 +SafariReaction_Eating: + playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_TARGET createvisualtask AnimTask_RotateMonToSideAndRestore, 2, 8, 136, 0, 2 waitforvisualfinish - playsewithpan SE_M_TAKE_DOWN, 63 + playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_TARGET createvisualtask AnimTask_RotateMonToSideAndRestore, 2, 8, 136, 0, 2 end -SnatchMoveTrySwapFromSubstitute:: - createvisualtask AnimTask_IsAttackerBehindSubstitute, 2, - jumpargeq 7, 1, SnatchMoveSwapSubstituteForMon - -SnatchMoveTrySwapFromSubstituteEnd:: +SnatchMoveTrySwapFromSubstitute: + createvisualtask AnimTask_IsAttackerBehindSubstitute, 2 + jumprettrue SnatchMoveSwapSubstituteForMon +SnatchMoveTrySwapFromSubstituteEnd: waitforvisualfinish return -SnatchMoveSwapSubstituteForMon:: - createvisualtask AnimTask_SwapMonSpriteToFromSubstitute, 2, 1 +SnatchMoveSwapSubstituteForMon: + createvisualtask AnimTask_SwapMonSpriteToFromSubstitute, 2, TRUE waitforvisualfinish goto SnatchMoveTrySwapFromSubstituteEnd -SnatchMoveTrySwapToSubstitute:: - createvisualtask AnimTask_IsAttackerBehindSubstitute, 2, - jumpargeq 7, 1, SnatchMoveSwapMonForSubstitute - -SnatchMoveTrySwapToSubstituteEnd:: +SnatchMoveTrySwapToSubstitute: + createvisualtask AnimTask_IsAttackerBehindSubstitute, 2 + jumprettrue SnatchMoveSwapMonForSubstitute +SnatchMoveTrySwapToSubstituteEnd: waitforvisualfinish return -SnatchMoveSwapMonForSubstitute:: - createvisualtask AnimTask_SwapMonSpriteToFromSubstitute, 2, 0 +SnatchMoveSwapMonForSubstitute: + createvisualtask AnimTask_SwapMonSpriteToFromSubstitute, 2, FALSE waitforvisualfinish goto SnatchMoveTrySwapToSubstituteEnd -Special_LevelUp:: +@ Healthbox blue flash effect on level up +Special_LevelUp: playsewithpan SE_EXP_MAX, 0 createvisualtask AnimTask_LoadHealthboxPalsForLevelUp, 2 delay 0 @@ -11039,64 +11036,64 @@ Special_LevelUp:: createvisualtask AnimTask_FreeHealthboxPalsForLevelUp, 2 end -Special_SwitchOutPlayerMon:: +Special_SwitchOutPlayerMon: createvisualtask AnimTask_SwitchOutBallEffect, 2 delay 10 createvisualtask AnimTask_SwitchOutShrinkMon, 2 end -Special_SwitchOutOpponentMon:: - createvisualtask AnimTask_SwitchOutBallEffect, 2, +Special_SwitchOutOpponentMon: + createvisualtask AnimTask_SwitchOutBallEffect, 2 delay 10 - createvisualtask AnimTask_SwitchOutShrinkMon, 2, + createvisualtask AnimTask_SwitchOutShrinkMon, 2 end -Special_BallThrow:: +Special_BallThrow: createvisualtask AnimTask_LoadBallGfx, 2 delay 0 playsewithpan SE_BALL_THROW, 0 createvisualtask AnimTask_ThrowBall, 2 - createvisualtask AnimTask_IsBallBlockedByTrainerOrDodged, 2, - jumpargeq 7, -1, BallThrowTrainerBlock - jumpargeq 7, -2, BallThrowGhostDodged -BallThrowEnd:: + createvisualtask AnimTask_IsBallBlockedByTrainerOrDodged, 2 + jumpreteq -1, BallThrowTrainerBlock + jumpreteq -2, BallThrowGhostDodged +BallThrowEnd: waitforvisualfinish createvisualtask AnimTask_FreeBallGfx, 2 end -BallThrowTrainerBlock:: +BallThrowTrainerBlock: loadspritegfx ANIM_TAG_IMPACT delay 25 monbg ANIM_DEF_PARTNER setalpha 12, 8 delay 0 - playsewithpan SE_M_DOUBLE_SLAP, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -4, -20, 1, 2 + playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -4, -20, ANIM_TARGET, 2 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff goto BallThrowEnd -BallThrowGhostDodged:: +BallThrowGhostDodged: delay 16 - createvisualtask AnimTask_WindUpLunge, 2, 1, 48, 6, 16, 48, -48, 16 - playsewithpan SE_M_TAKE_DOWN, 63 - waitplaysewithpan SE_M_TAKE_DOWN, 63, 48 + createvisualtask AnimTask_WindUpLunge, 2, ANIM_TARGET, 48, 6, 16, 48, -48, 16 + playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_TARGET + waitplaysewithpan SE_M_TAKE_DOWN, SOUND_PAN_TARGET, 48 waitforvisualfinish goto BallThrowEnd -Special_SafariBallThrow:: - createvisualtask AnimTask_LoadBallGfx, 2, +Special_BallThrowWithTrainer: + createvisualtask AnimTask_LoadBallGfx, 2 delay 0 createvisualtask AnimTask_ThrowBallSpecial, 2 waitforvisualfinish - createvisualtask AnimTask_FreeBallGfx, 2, + createvisualtask AnimTask_FreeBallGfx, 2 end -Special_SubstituteToMon:: - createvisualtask AnimTask_SwapMonSpriteToFromSubstitute, 2, 1 +Special_SubstituteToMon: + createvisualtask AnimTask_SwapMonSpriteToFromSubstitute, 2, TRUE end -Special_MonToSubstitute:: - createvisualtask AnimTask_SwapMonSpriteToFromSubstitute, 2, 0 +Special_MonToSubstitute: + createvisualtask AnimTask_SwapMonSpriteToFromSubstitute, 2, FALSE end diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 6cf321c02..674bb50d8 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -11,7 +11,7 @@ #include "constants/songs.h" #include "constants/trainers.h" #include "constants/game_stat.h" -#include "battle_string_ids.h" +#include "constants/battle_string_ids.h" .include "asm/macros/battle_script.inc" @ Define these here since misc_constants.inc conflicts with the C headers .set NULL, 0 diff --git a/data/battle_scripts_2.s b/data/battle_scripts_2.s index 7a69b2320..6f41e3ce1 100644 --- a/data/battle_scripts_2.s +++ b/data/battle_scripts_2.s @@ -9,7 +9,7 @@ #include "constants/pokemon.h" #include "constants/songs.h" #include "constants/game_stat.h" -#include "battle_string_ids.h" +#include "constants/battle_string_ids.h" .include "asm/macros/battle_script.inc" @ Define these here since misc_constants.inc conflicts with the C headers .set NULL, 0 @@ -209,7 +209,7 @@ BattleScript_PokeFluteEnd:: finishaction BattleScript_WatchesCarefully:: - printfromtable gSafariPokeblockResultStringIds + printfromtable gSafariReactionStringIds waitmessage B_WAIT_TIME_LONG playanimation BS_OPPONENT1, B_ANIM_SAFARI_REACTION end2 diff --git a/data/smokescreen.s b/data/smokescreen.s deleted file mode 100644 index 3a4a46558..000000000 --- a/data/smokescreen.s +++ /dev/null @@ -1,55 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - .section .rodata - .align 2 - -gSmokescreenImpactSpriteSheet:: - obj_tiles gSmokescreenImpactTiles, 0x0180, 55019 - -gSmokescreenImpactSpritePalette:: - obj_pal gSmokescreenImpactPalette, 55019 - -gOamData_835099C:: - .4byte 0x40000000, 0x00000400 - -gAnimCmd_82509A4:: - obj_image_anim_frame 0, 4 - obj_image_anim_frame 4, 4 - obj_image_anim_frame 8, 4 - obj_image_anim_end - -gAnimCmd_82509B4:: - obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 4, 4, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 8, 4, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - -gAnimCmd_82509C4:: - obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_frame 4, 4, OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_frame 8, 4, OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_end - -gAnimCmd_82509D4:: - obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_frame 4, 4, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_frame 8, 4, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_end - -gSpriteAnimTable_82509E4:: - .4byte gAnimCmd_82509A4 - .4byte gAnimCmd_82509B4 - .4byte gAnimCmd_82509C4 - .4byte gAnimCmd_82509D4 - -gSmokescreenImpactSpriteTemplate:: - spr_template 55019, 55019, gOamData_835099C, gSpriteAnimTable_82509E4, NULL, gDummySpriteAffineAnimTable, SpriteCB_DestroySprite - -gSpriteSheet_EnemyShadow:: - obj_tiles gFile_graphics_battle_interface_enemy_mon_shadow_sheet, 0x0080, 55129 - -gOamData_8250A14:: - .4byte 0x40004000, 0x00000c00 - -gSpriteTemplate_EnemyShadow:: - spr_template 55129, 55039, gOamData_8250A14, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCB_SetInvisible diff --git a/include/battle.h b/include/battle.h index 625c6c017..ce3f89f2d 100644 --- a/include/battle.h +++ b/include/battle.h @@ -402,8 +402,8 @@ struct BattleStruct u8 runTries; u8 caughtMonNick[POKEMON_NAME_LENGTH + 1]; u8 field_78; // unused - u8 safariGoNearCounter; - u8 safariPkblThrowCounter; + u8 safariRockThrowCounter; + u8 safariBaitThrowCounter; u8 safariEscapeFactor; u8 safariCatchFactor; u8 linkBattleVsSpriteId_V; diff --git a/include/battle_anim.h b/include/battle_anim.h index fc40e1373..120935880 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -17,6 +17,36 @@ enum BG_ANIM_SCREEN_BASE_BLOCK }; +enum +{ + BATTLER_COORD_X, + BATTLER_COORD_Y, + BATTLER_COORD_X_2, + BATTLER_COORD_Y_PIC_OFFSET, + BATTLER_COORD_Y_PIC_OFFSET_DEFAULT, +}; + +enum +{ + BATTLER_COORD_ATTR_HEIGHT, + BATTLER_COORD_ATTR_WIDTH, + BATTLER_COORD_ATTR_TOP, + BATTLER_COORD_ATTR_BOTTOM, + BATTLER_COORD_ATTR_LEFT, + BATTLER_COORD_ATTR_RIGHT, + BATTLER_COORD_ATTR_RAW_BOTTOM, +}; + +// battle_anim_status_effects.s +#define STAT_ANIM_PLUS1 15 +#define STAT_ANIM_PLUS2 39 +#define STAT_ANIM_MINUS1 22 +#define STAT_ANIM_MINUS2 46 +#define STAT_ANIM_MULTIPLE_PLUS1 55 +#define STAT_ANIM_MULTIPLE_PLUS2 56 +#define STAT_ANIM_MULTIPLE_MINUS1 57 +#define STAT_ANIM_MULTIPLE_MINUS2 58 + struct BattleAnimBgData { u8 *bgTiles; @@ -60,9 +90,8 @@ extern u8 gBattleAnimTarget; extern u8 gBattlerSpriteIds[MAX_BATTLERS_COUNT]; extern s32 gAnimMoveDmg; extern u16 gAnimBattlerSpecies[MAX_BATTLERS_COUNT]; -extern u8 gUnknown_2037F24; +extern u8 gAnimCustomPanning; -// battle_anim.c extern const struct OamData gOamData_AffineOff_ObjNormal_8x8; extern const struct OamData gOamData_AffineOff_ObjNormal_16x16; extern const struct OamData gOamData_AffineOff_ObjNormal_32x32; @@ -135,8 +164,27 @@ extern const struct OamData gOamData_AffineDouble_ObjBlend_8x16; extern const struct OamData gOamData_AffineDouble_ObjBlend_8x32; extern const struct OamData gOamData_AffineDouble_ObjBlend_16x32; extern const struct OamData gOamData_AffineDouble_ObjBlend_32x64; +extern const struct MonCoords gCastformFrontSpriteCoords[]; extern const struct CompressedSpriteSheet gBattleAnimPicTable[]; extern const struct CompressedSpritePalette gBattleAnimPaletteTable[]; +extern const struct SpriteTemplate gFlashingHitSplatSpriteTemplate; +extern const struct SpriteTemplate gBasicHitSplatSpriteTemplate; +extern const struct SpriteTemplate gWaterHitSplatSpriteTemplate; +extern const struct SpriteTemplate gWishStarSpriteTemplate; +extern const struct SpriteTemplate gMiniTwinklingStarSpriteTemplate; +extern const struct SpriteTemplate gThoughtBubbleSpriteTemplate; +extern const union AffineAnimCmd *const gAffineAnims_Bite[]; +extern const union AffineAnimCmd *const gAffineAnims_Droplet[]; +extern const union AffineAnimCmd *const gGrowingRingAffineAnimTable[]; +extern const union AnimCmd *const gAnims_SmallBubblePair[]; +extern const union AnimCmd *const gAnims_BasicFire[]; +extern const union AnimCmd *const gAnims_WaterMudOrb[]; +extern const union AnimCmd *const gAnims_WaterBubble[]; +extern const union AnimCmd *const gMusicNotesAnimTable[]; +extern const u8 *const gBattleAnims_StatusConditions[]; +extern const u8 *const gBattleAnims_Moves[]; +extern const u16 gMovesWithQuietBGM[]; + void MoveBattlerSpriteToBG(u8 battlerId, u8); void ResetBattleAnimBg(u8); void ClearBattleAnimationVars(void); @@ -152,209 +200,19 @@ s16 CalculatePanIncrement(s16 sourcePan, s16 targetPan, s16 incrementPan); bool8 IsBattlerSpriteVisible(u8 battlerId); s16 KeepPanInRange(s16 a, s32 oldPan); void RelocateBattleBgPal(u16 paletteNum, u16 *dest, s32 offset, u8 largeScreen); - -// battle_intro.c void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value); s32 GetAnimBgAttribute(u8 bgId, u8 attributeId); void HandleIntroSlide(u8 terrain); void BattleIntroSlideEnd(u8 taskId); void CopyBattlerSpriteToBg(s32 bgId, u8 x, u8 y, u8 battlerPosition, u8 palno, u8 *tilesDest, u16 *tilemapDest, u16 tilesOffset); - -// battle_anim_effects_1.c -extern const union AnimCmd *const gMusicNotesAnimTable[]; -extern const struct SpriteTemplate gThoughtBubbleSpriteTemplate; -void AnimMovePowderParticle(struct Sprite *); -void AnimPowerAbsorptionOrb(struct Sprite *); -void AnimSolarBeamBigOrb(struct Sprite *); -void AnimSolarBeamSmallOrb(struct Sprite *); -void AnimAbsorptionOrb(struct Sprite *); -void AnimHyperBeamOrb(struct Sprite *); -void AnimSporeParticle(struct Sprite *); -void AnimPetalDanceBigFlower(struct Sprite *); -void AnimPetalDanceSmallFlower(struct Sprite *); -void AnimRazorLeafParticle(struct Sprite *); -void AnimLeechSeed(struct Sprite *); -void AnimTranslateLinearSingleSineWave(struct Sprite *); -void AnimMoveTwisterParticle(struct Sprite *); -void AnimConstrictBinding(struct Sprite *); -void AnimMimicOrb(struct Sprite *); -void AnimIngrainRoot(struct Sprite *); -void AnimFrenzyPlantRoot(struct Sprite *); -void AnimIngrainOrb(struct Sprite *); -void AnimPresent(struct Sprite *); -void AnimKnockOffItem(struct Sprite *); -void AnimPresentHealParticle(struct Sprite *); -void AnimItemSteal(struct Sprite *); -void AnimTrickBag(struct Sprite *); -void AnimFlyingParticle(struct Sprite *); -void AnimNeedleArmSpike(struct Sprite *); -void AnimSlidingHit(struct Sprite *); -void AnimWhipHit(struct Sprite *); -void AnimFlickeringPunch(struct Sprite *); -void AnimCuttingSlice(struct Sprite *); -void AnimAirCutterSlice(struct Sprite *); -void AnimCirclingMusicNote(struct Sprite *); -void AnimProtect(struct Sprite *); -void AnimMilkBottle(struct Sprite *); -void AnimGrantingStars(struct Sprite *); -void AnimSparkingStars(struct Sprite *); -void AnimBubbleBurst(struct Sprite *); -void AnimSleepLetterZ(struct Sprite *); -void AnimLockOnTarget(struct Sprite *); -void AnimLockOnMoveTarget(struct Sprite *); -void AnimBowMon(struct Sprite *); -void AnimTipMon(struct Sprite *); -void AnimSlashSlice(struct Sprite *); -void AnimFalseSwipeSlice(struct Sprite *); -void AnimFalseSwipePositionedSlice(struct Sprite *); -void AnimEndureEnergy(struct Sprite *); -void AnimSharpenSphere(struct Sprite *); -void AnimConversion(struct Sprite *); -void AnimConversion2(struct Sprite *); -void AnimMoon(struct Sprite *); -void AnimMoonlightSparkle(struct Sprite *); -void AnimHornHit(struct Sprite *); -void AnimSuperFang(struct Sprite *); -void AnimWavyMusicNotes(struct Sprite *); -void AnimFlyingMusicNotes(struct Sprite *); -void AnimBellyDrumHand(struct Sprite *); -void AnimSlowFlyingMusicNotes(struct Sprite *); -void AnimThoughtBubble(struct Sprite *); -void AnimMetronomeFinger(struct Sprite *); -void AnimFollowMeFinger(struct Sprite *); -void AnimTauntFinger(struct Sprite *); void SetSpriteNextToMonHead(u8 battler, struct Sprite* sprite); -void AnimTask_ShrinkTargetCopy(u8 taskId); - -// battle_anim_effects_2.c -extern const union AffineAnimCmd *const gGrowingRingAffineAnimTable[]; -void AnimCirclingFinger(struct Sprite *); -void AnimBouncingMusicNote(struct Sprite *); -void AnimVibrateBattlerBack(struct Sprite *); -void AnimMovingClamp(struct Sprite *); -void Anim_KinesisZapEnergy(struct Sprite *); -void Anim_SwordsDanceBlade(struct Sprite *); -void AnimSonicBoomProjectile(struct Sprite *); -void AnimAirWaveProjectile(struct Sprite *); -void AnimVoidLines(struct Sprite *); -void AnimCoinThrow(struct Sprite *); -void AnimFallingCoin(struct Sprite *); -void AnimBulletSeed(struct Sprite *); -void AnimRazorWindTornado(struct Sprite *); -void AnimViceGripPincer(struct Sprite *); -void AnimGuillotinePincer(struct Sprite *); -void AnimBreathPuff(struct Sprite *); -void AnimAngerMark(struct Sprite *); -void AnimPencil(struct Sprite *); -void AnimBlendThinRing(struct Sprite *); -void AnimHyperVoiceRing(struct Sprite *); -void AnimUproarRing(struct Sprite *); -void AnimSoftBoiledEgg(struct Sprite *); -void AnimSpeedDust(struct Sprite *); -void AnimHealBellMusicNote(struct Sprite *); -void AnimMagentaHeart(struct Sprite *); -void AnimRedHeartProjectile(struct Sprite *); -void AnimParticuleBurst(struct Sprite *); -void AnimRedHeartRising(struct Sprite *); -void AnimOrbitFast(struct Sprite *); -void AnimOrbitScatter(struct Sprite *); -void AnimSpitUpOrb(struct Sprite *); -void AnimEyeSparkle(struct Sprite *); -void AnimAngel(struct Sprite *); -void AnimPinkHeart(struct Sprite *); -void AnimDevil(struct Sprite *); -void AnimFurySwipes(struct Sprite *); -void AnimMovementWaves(struct Sprite *); -void AnimJaggedMusicNote(struct Sprite *); -void AnimPerishSongMusicNote2(struct Sprite *); -void AnimPerishSongMusicNote(struct Sprite *); -void AnimGuardRing(struct Sprite *); - -// battle_anim_effects_3.c -extern const struct SpriteTemplate gWishStarSpriteTemplate; -extern const struct SpriteTemplate gMiniTwinklingStarSpriteTemplate; -void AnimBlackSmoke(struct Sprite *); -void AnimWhiteHalo(struct Sprite *); -void AnimTealAlert(struct Sprite *); -void AnimMeanLookEye(struct Sprite *); -void AnimSpikes(struct Sprite *); -void AnimLeer(struct Sprite *); -void AnimLetterZ(struct Sprite *); -void AnimFang(struct Sprite *); -void AnimSpotlight(struct Sprite *); -void AnimClappingHand(struct Sprite *); -void AnimClappingHand2(struct Sprite *); -void AnimRapidSpin(struct Sprite *); -void AnimTriAttackTriangle(struct Sprite *); -void AnimBatonPassPokeball(struct Sprite *); -void AnimWishStar(struct Sprite *); -void AnimMiniTwinklingStar(struct Sprite *); -void AnimSwallowBlueOrb(struct Sprite *); -void AnimGreenStar(struct Sprite *); -void AnimWeakFrustrationAngerMark(struct Sprite *); -void AnimSweetScentPetal(struct Sprite *); -void AnimPainSplitProjectile(struct Sprite *); -void AnimFlatterConfetti(struct Sprite *); -void AnimFlatterSpotlight(struct Sprite *); -void AnimReversalOrb(struct Sprite *); -void AnimYawnCloud(struct Sprite *); -void AnimSmokeBallEscapeCloud(struct Sprite *); -void AnimFacadeSweatDrop(struct Sprite *); -void AnimRoarNoiseLine(struct Sprite *); -void AnimGlareEyeDot(struct Sprite *); -void AnimAssistPawprint(struct Sprite *); -void AnimSmellingSaltsHand(struct Sprite *); -void AnimSmellingSaltExclamation(struct Sprite *); -void AnimHelpingHandClap(struct Sprite *); -void AnimForesightMagnifyingGlass(struct Sprite *); -void AnimMeteorMashStar(struct Sprite *); -void AnimBlockX(struct Sprite *); -void AnimUnusedItemBagSteal(struct Sprite *); -void AnimParticuleBurst(struct Sprite *); -void AnimKnockOffStrike(struct Sprite *); -void AnimRecycle(struct Sprite *); - -// battle_anim_special.c void TryShinyAnimation(u8 battler, struct Pokemon *mon); u8 ItemIdToBallId(u16 itemId); u8 AnimateBallOpenParticles(u8 x, u8 y, u8 priority, u8 subpriority, u8 ballId); u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 battlerId, u32 arg2, u8 ballId); void DoLoadHealthboxPalsForLevelUp(u8 *, u8 *, u8 battlerId); void DoFreeHealthboxPalsForLevelUp(u8 batterId); - -enum -{ - BATTLER_COORD_X, - BATTLER_COORD_Y, - BATTLER_COORD_X_2, - BATTLER_COORD_Y_PIC_OFFSET, - BATTLER_COORD_Y_PIC_OFFSET_DEFAULT, -}; - -enum -{ - BATTLER_COORD_ATTR_HEIGHT, - BATTLER_COORD_ATTR_WIDTH, - BATTLER_COORD_ATTR_TOP, - BATTLER_COORD_ATTR_BOTTOM, - BATTLER_COORD_ATTR_LEFT, - BATTLER_COORD_ATTR_RIGHT, - BATTLER_COORD_ATTR_RAW_BOTTOM, -}; - -// battle_anim_status_effects.s -#define STAT_ANIM_PLUS1 15 -#define STAT_ANIM_PLUS2 39 -#define STAT_ANIM_MINUS1 22 -#define STAT_ANIM_MINUS2 46 -#define STAT_ANIM_MULTIPLE_PLUS1 55 -#define STAT_ANIM_MULTIPLE_PLUS2 56 -#define STAT_ANIM_MULTIPLE_MINUS1 57 -#define STAT_ANIM_MULTIPLE_MINUS2 58 void LaunchStatusAnimation(u8 battlerId, u8 statusAnimId); - -// battle_anim_mons.c -extern const struct MonCoords gCastformFrontSpriteCoords[]; u8 GetBattlerSpriteCoord(u8 battlerId, u8 coordType); u8 GetBattlerSpriteCoord2(u8 battlerId, u8 coordType); u8 GetBattlerSpriteDefault_Y(u8 battlerId); @@ -363,15 +221,15 @@ u8 GetGhostSpriteDefault_Y(u8 battlerId); u8 GetBattlerYCoordWithElevation(u8 battlerId); u8 GetAnimBattlerSpriteId(u8 animBattler); void StoreSpriteCallbackInData6(struct Sprite *sprite, SpriteCallback callback); -void TranslateSpriteInCircleOverDuration(struct Sprite *sprite); -void TranslateSpriteInGrowingCircleOverDuration(struct Sprite *sprite); -void TranslateSpriteInEllipseOverDuration(struct Sprite *sprite); +void TranslateSpriteInCircle(struct Sprite *sprite); +void TranslateSpriteInGrowingCircle(struct Sprite *sprite); +void TranslateSpriteInEllipse(struct Sprite *sprite); void WaitAnimForDuration(struct Sprite *sprite); -void SetupLinearTranslationWithFixedDuration(struct Sprite *sprite); +void ConvertPosDataToTranslateLinearData(struct Sprite *sprite); void TranslateSpriteLinear(struct Sprite *sprite); void TranslateSpriteLinearFixedPoint(struct Sprite *sprite); -void TranslateMonSpriteLinear(struct Sprite *sprite); -void TranslateMonSpriteLinearFixedPoint(struct Sprite *sprite); +void TranslateSpriteLinearById(struct Sprite *sprite); +void TranslateSpriteLinearByIdFixedPoint(struct Sprite *sprite); void TranslateSpriteLinearAndFlicker(struct Sprite *sprite); void DestroySpriteAndMatrix(struct Sprite *sprite); void RunStoredCallbackWhenAffineAnimEnds(struct Sprite *sprite); @@ -400,19 +258,19 @@ void InitAnimBgTilemapBuffer(u32 bgId, const void *src); void AnimLoadCompressedBgTilemap(u32 bgId, const u32 *src); u8 GetBattleBgPaletteNum(void); void ToggleBg3Mode(bool8 arg0); -void StartSpriteLinearTranslationFromCurrentPos(struct Sprite *sprite); +void TradeMenuBouncePartySprites(struct Sprite *sprite); void InitSpriteDataForLinearTranslation(struct Sprite *sprite); void InitAnimLinearTranslation(struct Sprite *sprite); void StartAnimLinearTranslation(struct Sprite *sprite); void PlayerThrowBall_StartAnimLinearTranslation(struct Sprite *sprite); bool8 AnimTranslateLinear(struct Sprite *sprite); -void RunLinearTranslation_ThenceSetCBtoStoredInData6(struct Sprite *sprite); -void BattleAnim_InitLinearTranslationWithDuration(struct Sprite *sprite); -void BattleAnim_InitAndRunLinearTranslationWithDuration(struct Sprite *sprite); +void AnimTranslateLinear_WithFollowup(struct Sprite *sprite); +void InitAnimLinearTranslationWithSpeed(struct Sprite *sprite); +void InitAnimLinearTranslationWithSpeedAndPos(struct Sprite *sprite); void InitAndRunAnimFastLinearTranslation(struct Sprite *sprite); bool8 AnimFastTranslateLinear(struct Sprite *sprite); void InitAnimFastLinearTranslationWithSpeed(struct Sprite *sprite); -void InitAndStartAnimFastLinearTranslationWithSpeed(struct Sprite *sprite); +void InitAnimFastLinearTranslationWithSpeedAndPos(struct Sprite *sprite); void SetSpriteRotScale(u8 spriteId, s16 xScale, s16 yScale, u16 rotation); void PrepareBattlerSpriteForRotScale(u8 spriteId, u8 objMode); void ResetSpriteRotScale(u8 spriteId); @@ -421,18 +279,15 @@ void TrySetSpriteRotScale(struct Sprite *sprite, bool8 recalcCenterVector, s16 x void TryResetSpriteAffineState(struct Sprite *sprite); u16 ArcTan2Neg(s16 a, s16 b); void SetGreyscaleOrOriginalPalette(u16 paletteNum, bool8 restoreOriginalColor); -u32 SelectBattleAnimSpriteAndBgPalettes(bool8 battleBackground, bool8 attacker, bool8 target, bool8 attackerPartner, bool8 targetPartner, bool8 a6, bool8 a7); -u32 SelectBattlerSpritePalettes(bool8 playerLeft, bool8 playerRight, bool8 foeLeft, bool8 foeRight); +u32 GetBattlePalettesMask(bool8 battleBackground, bool8 attacker, bool8 target, bool8 attackerPartner, bool8 targetPartner, bool8 a6, bool8 a7); +u32 GetBattleMonSpritePalettesMask(bool8 playerLeft, bool8 playerRight, bool8 foeLeft, bool8 foeRight); u8 GetSpritePalIdxByBattler(u8 a1); void AnimSpriteOnMonPos(struct Sprite *sprite); void TranslateAnimSpriteToTargetMonLocation(struct Sprite *sprite); void AnimThrowProjectile(struct Sprite *sprite); -void AnimSnoreZ(struct Sprite *sprite); +void AnimTravelDiagonally(struct Sprite *sprite); s16 CloneBattlerSpriteWithBlend(u8 animBattler); -void obj_delete_but_dont_free_vram(struct Sprite *sprite); -void AnimTask_AlphaFadeIn(u8 taskId); -void AnimTask_BlendMonInAndOut(u8 task); -void AnimTask_BlendPalInAndOutByTag(u8 taskId); +void DestroySpriteWithActiveSheet(struct Sprite *sprite); void PrepareAffineAnimInTaskData(struct Task *task, u8 spriteId, const union AffineAnimCmd *affineAnimCmds); bool8 RunAffineAnimFromTaskData(struct Task *task); void SetBattlerSpriteYOffsetFromYScale(u8 spriteId); @@ -441,173 +296,28 @@ void StorePointerInVars(s16 *lo, s16 *hi, const void *ptr); void *LoadPointerFromVars(s16 lo, s16 hi); void BattleAnimHelper_SetSpriteSquashParams(struct Task *task, u8 spriteId, s16 xScale0, s16 yScale0, s16 xScale1, s16 yScale1, u16 duration); u8 BattleAnimHelper_RunSpriteSquash(struct Task *task); -void AnimTask_GetFrustrationPowerLevel(u8 taskId); -void ResetSpritePriorityOfAllVisibleBattlers(void); +void InitPrioritiesForVisibleBattlers(void); u8 GetBattlerSpriteSubpriority(u8 battlerId); u8 GetBattlerSpriteBGPriority(u8 battlerId); - -// Returns 2 if player left or opp right -// Returns 1 if player right or opp left u8 GetBattlerSpriteBGPriorityRank(u8 battlerId); u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 templateId, s16 x, s16 y, u8 subpriority, u32 personality, u32 trainerId, u32 battlerId, u32 ignoreDeoxys); void DestroySpriteAndFreeResources_(struct Sprite *sprite); s16 GetBattlerSpriteCoordAttr(u8 battlerId, u8 attr); void SetAverageBattlerPositions(u8 battlerId, bool8 respectMonPicOffsets, s16 *x, s16 *y); -u8 CreateCloneOfSpriteInWindowMode(s32 battlerId, u8 spriteId, s32 species); -void SpriteCB_AnimTranslateSpriteLinearAndFlicker(struct Sprite *sprite); -void SpriteCB_AnimTranslateSpriteLinearAndFlicker2(struct Sprite *sprite); -void SpriteCB_TrackOffsetFromAttackerAndWaitAnim(struct Sprite *sprite); -void AnimTask_AttackerPunchWithTrace(u8 taskId); -void SpriteCB_WeatherBallUp(struct Sprite *sprite); +u8 CreateInvisibleSpriteCopy(s32 battlerId, u8 spriteId, s32 species); +void AnimTranslateLinearAndFlicker_Flipped(struct Sprite *sprite); +void AnimTranslateLinearAndFlicker(struct Sprite *sprite); +void AnimSpinningSparkle(struct Sprite *sprite); +void AnimWeatherBallUp(struct Sprite *sprite); void AnimWeatherBallDown(struct Sprite *sprite); - -// battle_anim_mon_movement.c -void AnimTask_ShakeMon(u8 taskId); -void AnimTask_ShakeMon2(u8 taskId); -void AnimTask_ShakeMonInPlace(u8 taskId); -void AnimTask_ShakeAndSinkMon(u8 taskId); -void AnimTask_TranslateMonElliptical(u8 taskId); -void AnimTask_TranslateMonEllipticalRespectSide(u8 taskId); -void AnimTask_WindUpLunge(u8 taskId); -void AnimTask_SlideOffScreen(u8 taskId); -void AnimTask_SwayMon(u8 taskId); -void AnimTask_ScaleMonAndRestore(u8 taskId); -void AnimTask_RotateMonSpriteToSide(u8 taskId); -void AnimTask_RotateMonToSideAndRestore(u8 taskId); -void AnimTask_ShakeTargetBasedOnMovePowerOrDmg(u8 taskId); - -// normal.c -extern const struct SpriteTemplate gFlashingHitSplatSpriteTemplate; -extern const struct SpriteTemplate gBasicHitSplatSpriteTemplate; -extern const struct SpriteTemplate gWaterHitSplatSpriteTemplate; -u32 UnpackSelectedBattleAnimPalettes(s16 selector); -void AnimTask_CurseBlendEffect(u8 taskId); -void AnimTask_BlendColorCycleExclude(u8 taskId); -void AnimTask_BlendColorCycleByTag(u8 taskId); -void AnimTask_FlashAnimTagWithColor(u8 taskId); -void AnimTask_InvertScreenColor(u8 taskId); -void AnimTask_ShakeBattleTerrain(u8 taskId); - -// ground.c -void AnimTask_DigDownMovement(u8 taskId); -void AnimTask_DigUpMovement(u8 taskId); +void AnimParticleBurst(struct Sprite *); +void AnimMoveTwisterParticle(struct Sprite *); +u32 UnpackSelectedBattlePalettes(s16 selector); void AnimTask_HorizontalShake(u8 taskId); -void AnimTask_IsPowerOver99(u8 taskId); -void AnimTask_PositionFissureBgOnBattler(u8 taskId); - -// dragon.c -void AnimTask_DragonDanceWaver(u8 taskId); - -// ghost.c -void AnimTask_NightShadeClone(u8 taskId); -void AnimTask_NightmareClone(u8 taskId); -void AnimTask_SpiteTargetShadow(u8 taskId); -void AnimTask_DestinyBondWhiteShadow(u8 taskId); -void AnimTask_CurseStretchingBlackBg(u8 taskId); -void AnimTask_GrudgeFlames(u8 taskId); -void sub_80B6BBC(u8 taskId); - -// rock.c -void AnimTask_LoadSandstormBackground(u8 taskId); -void AnimTask_Rollout(u8 taskId); -void AnimTask_GetSeismicTossDamageLevel(u8 taskId); -void AnimTask_MoveSeismicTossBg(u8 taskId); -void AnimTask_SeismicTossBgAccelerateDownAtEnd(u8 taskId); - -// psychic.c -void AnimTask_MeditateStretchAttacker(u8 taskId); -void AnimTask_Teleport(u8 taskId); -void AnimTask_ImprisonOrbs(u8 taskId); -void AnimTask_SkillSwap(u8 taskId); -void AnimTask_ExtrasensoryDistortion(u8 taskId); -void AnimTask_TransparentCloneGrowAndShrink(u8 taskId); - -// dark.c -extern const union AffineAnimCmd *const gAffineAnims_Bite[]; -void AnimTask_AttackerFadeToInvisible(u8 taskId); -void AnimTask_AttackerFadeFromInvisible(u8 taskId); -void AnimTask_InitAttackerFadeFromInvisible(u8 taskId); -void AnimTask_MoveAttackerMementoShadow(u8 taskId); -void AnimTask_MoveTargetMementoShadow(u8 taskId); -void AnimTask_InitMementoShadow(u8 taskId); -void sub_80B8664(u8 taskId); -void AnimTask_MetallicShine(u8 taskId); -void AnimTask_SetGreyscaleOrOriginalPal(u8 taskId); -void GetIsDoomDesireHitTurn(u8 taskId); - -// flying.c -void AnimTask_AnimateGustTornadoPalette(u8 taskId); void DestroyAnimSpriteAfterTimer(struct Sprite *sprite); -void AnimTask_DrillPeckHitSplats(u8 taskId); - -// poison.c -extern const union AffineAnimCmd *const gAffineAnims_Droplet[]; - -// fighting.c -void AnimTask_MoveSkyUppercutBg(u8 taskId); - -// ice.c -extern const union AnimCmd *const gAnims_SmallBubblePair[]; -void AnimTask_Haze1(u8 taskId); -void AnimTask_LoadMistTiles(u8 taskId); -void AnimTask_Hail1(u8 taskId); -void AnimTask_GetRolloutCounter(u8 taskId); - -// electric.c -void AnimTask_ElectricBolt(u8 taskId); -void AnimTask_ElectricChargingParticles(u8 taskId); -void AnimTask_VoltTackleAttackerReappear(u8 taskId); -void AnimTask_VoltTackleBolt(u8 taskId); -void AnimTask_ShockWaveProgressingBolt(u8 taskId); -void AnimTask_ShockWaveLightning(u8 taskId); - -// fire.c -extern const union AnimCmd *const gAnims_BasicFire[]; -void AnimTask_EruptionLaunchRocks(u8 taskId); -void AnimTask_ShakeTargetInPattern(u8 taskId); -void AnimTask_BlendBackground(u8 taskId); -void AnimTask_MoveHeatWaveTargets(u8 taskId); - -// water.c -extern const union AnimCmd *const gAnims_WaterMudOrb[]; -extern const union AnimCmd *const gAnims_WaterBubble[]; void AnimWaterPulseRing(struct Sprite *sprite); - -// smokescreen.c u8 SmokescreenImpact(s16 x, s16 y, u8 a3); - -// battle_anim_utility_funcs.c -void AnimTask_BlendSelected(u8 taskId); -void AnimTask_BlendExcept(u8 taskId); -void AnimTask_SetCamouflageBlend(u8 taskId); -void AnimTask_BlendParticle(u8 taskId); -void AnimTask_HardwarePaletteFade(u8 taskId); -void AnimTask_CloneBattlerSpriteWithBlend(u8 taskId); -void AnimTask_SetUpCurseBackground(u8 taskId); void InitStatsChangeAnimation(u8 taskId); -void AnimTask_BlendNonAttackerPalettes(u8 taskId); -void AnimTask_StartSlidingBg(u8 taskId); -void AnimTask_GetAttackerSide(u8 taskId); -void AnimTask_GetTargetSide(u8 taskId); -void AnimTask_GetTargetIsAttackerPartner(u8 taskId); -void AnimTask_SetAllNonAttackersInvisiblity(u8 taskId); void StartMonScrollingBgMask(u8 taskId, s32 unused, u16 arg2, u8 battler1, u8 arg4, u8 arg5, u8 arg6, u8 arg7, const u32 *gfx, const u32 *tilemap, const u32 *palette); -void AnimTask_GetBattleTerrain(u8 taskId); -void AnimTask_AllocBackupPalBuffer(u8 taskId); -void AnimTask_FreeBackupPalBuffer(u8 taskId); -void AnimTask_CopyPalUnfadedToBackup(u8 taskId); -void AnimTask_CopyPalUnfadedFromBackup(u8 taskId); -void AnimTask_CopyPalFadedToUnfaded(u8 taskId); -void AnimTask_IsContest(u8 taskId); -void AnimTask_SetAnimAttackerAndTargetForEffectTgt(u8 taskId); -void AnimTask_IsTargetSameSide(u8 taskId); -void AnimTask_SetAnimTargetToBattlerTarget(u8 taskId); -void AnimTask_SetAnimAttackerAndTargetForEffectAtk(u8 taskId); -void AnimTask_SetAttackerInvisibleWaitForSignal(u8 taskId); - -// battle_anim_scripts.s -extern const u8 *const gBattleAnims_StatusConditions[]; -extern const u16 gMovesWithQuietBGM[]; -extern const u8 *const gBattleAnims_Moves[]; #endif // GUARD_BATTLE_ANIM_H diff --git a/include/battle_message.h b/include/battle_message.h index 7e882e3a8..ef5cbcd88 100644 --- a/include/battle_message.h +++ b/include/battle_message.h @@ -2,6 +2,7 @@ #define GUARD_BATTLE_MESSAGE_H #include "global.h" +#include "constants/battle_string_ids.h" // for 0xFD diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h index 4363b7fca..4fc4e4407 100644 --- a/include/constants/battle_anim.h +++ b/include/constants/battle_anim.h @@ -237,7 +237,7 @@ #define ANIM_TAG_SPOTLIGHT (ANIM_SPRITES_START + 227) #define ANIM_TAG_LETTER_Z (ANIM_SPRITES_START + 228) #define ANIM_TAG_RAPID_SPIN (ANIM_SPRITES_START + 229) -#define ANIM_TAG_TRI_FORCE_TRIANGLE (ANIM_SPRITES_START + 230) +#define ANIM_TAG_TRI_ATTACK_TRIANGLE (ANIM_SPRITES_START + 230) #define ANIM_TAG_WISP_ORB (ANIM_SPRITES_START + 231) #define ANIM_TAG_WISP_FIRE (ANIM_SPRITES_START + 232) #define ANIM_TAG_GOLD_STARS (ANIM_SPRITES_START + 233) @@ -276,7 +276,7 @@ #define ANIM_TAG_GREEN_SPIKE (ANIM_SPRITES_START + 266) #define ANIM_TAG_WHITE_CIRCLE_OF_LIGHT (ANIM_SPRITES_START + 267) #define ANIM_TAG_GLOWY_BLUE_ORB (ANIM_SPRITES_START + 268) -#define ANIM_TAG_SAFARI_BAIT (ANIM_SPRITES_START + 269) +#define ANIM_TAG_SAFARI_BAIT (ANIM_SPRITES_START + 269) #define ANIM_TAG_WHITE_FEATHER (ANIM_SPRITES_START + 270) #define ANIM_TAG_SPARKLE_6 (ANIM_SPRITES_START + 271) #define ANIM_TAG_SPLASH (ANIM_SPRITES_START + 272) @@ -318,7 +318,7 @@ #define SOUND_PAN_TARGET 63 // move background ids -#define BG_DARK_ 0 // the same as BG_DARK but is unused +#define BG_NONE 0 // the same as BG_DARK #define BG_DARK 1 #define BG_GHOST 2 #define BG_PSYCHIC 3 @@ -346,59 +346,62 @@ #define BG_SOLAR_BEAM_PLAYER 25 #define BG_SOLAR_BEAM_CONTESTS 26 -// table ids for general animations -#define B_ANIM_CASTFORM_CHANGE 0x0 -#define B_ANIM_STATS_CHANGE 0x1 -#define B_ANIM_SUBSTITUTE_FADE 0x2 -#define B_ANIM_SUBSTITUTE_APPEAR 0x3 -#define B_ANIM_BAIT_THROW 0x4 -#define B_ANIM_ITEM_KNOCKOFF 0x5 -#define B_ANIM_TURN_TRAP 0x6 -#define B_ANIM_HELD_ITEM_EFFECT 0x7 -#define B_ANIM_SMOKEBALL_ESCAPE 0x8 -#define B_ANIM_FOCUS_BAND 0x9 -#define B_ANIM_RAIN_CONTINUES 0xA -#define B_ANIM_SUN_CONTINUES 0xB -#define B_ANIM_SANDSTORM_CONTINUES 0xC -#define B_ANIM_HAIL_CONTINUES 0xD -#define B_ANIM_LEECH_SEED_DRAIN 0xE -#define B_ANIM_MON_HIT 0xF -#define B_ANIM_ITEM_STEAL 0x10 -#define B_ANIM_SNATCH_MOVE 0x11 -#define B_ANIM_FUTURE_SIGHT_HIT 0x12 -#define B_ANIM_DOOM_DESIRE_HIT 0x13 -#define B_ANIM_FOCUS_PUNCH_SETUP 0x14 -#define B_ANIM_INGRAIN_HEAL 0x15 -#define B_ANIM_WISH_HEAL 0x16 -#define B_ANIM_MON_SCARED 0x17 -#define B_ANIM_GHOST_GET_OUT 0x18 -#define B_ANIM_SILPH_SCOPED 0x19 -#define B_ANIM_ROCK_THROW 0x1A -#define B_ANIM_SAFARI_REACTION 0x1B +// table ids for general animations (gBattleAnims_General) +#define B_ANIM_CASTFORM_CHANGE 0 +#define B_ANIM_STATS_CHANGE 1 +#define B_ANIM_SUBSTITUTE_FADE 2 +#define B_ANIM_SUBSTITUTE_APPEAR 3 +#define B_ANIM_BAIT_THROW 4 +#define B_ANIM_ITEM_KNOCKOFF 5 +#define B_ANIM_TURN_TRAP 6 +#define B_ANIM_HELD_ITEM_EFFECT 7 +#define B_ANIM_SMOKEBALL_ESCAPE 8 +#define B_ANIM_FOCUS_BAND 9 +#define B_ANIM_RAIN_CONTINUES 10 +#define B_ANIM_SUN_CONTINUES 11 +#define B_ANIM_SANDSTORM_CONTINUES 12 +#define B_ANIM_HAIL_CONTINUES 13 +#define B_ANIM_LEECH_SEED_DRAIN 14 +#define B_ANIM_MON_HIT 15 +#define B_ANIM_ITEM_STEAL 16 +#define B_ANIM_SNATCH_MOVE 17 +#define B_ANIM_FUTURE_SIGHT_HIT 18 +#define B_ANIM_DOOM_DESIRE_HIT 19 +#define B_ANIM_FOCUS_PUNCH_SETUP 20 +#define B_ANIM_INGRAIN_HEAL 21 +#define B_ANIM_WISH_HEAL 22 +#define B_ANIM_MON_SCARED 23 +#define B_ANIM_GHOST_GET_OUT 24 +#define B_ANIM_SILPH_SCOPED 25 +#define B_ANIM_ROCK_THROW 26 +#define B_ANIM_SAFARI_REACTION 27 -// special animations table -#define B_ANIM_LVL_UP 0x0 -#define B_ANIM_SWITCH_OUT_PLAYER_MON 0x1 -#define B_ANIM_SWITCH_OUT_OPPONENT_MON 0x2 -#define B_ANIM_BALL_THROW 0x3 -#define B_ANIM_SAFARI_BALL_THROW 0x4 -#define B_ANIM_SUBSTITUTE_TO_MON 0x5 -#define B_ANIM_MON_TO_SUBSTITUTE 0x6 +// special animations table (gBattleAnims_Special) +#define B_ANIM_LVL_UP 0 +#define B_ANIM_SWITCH_OUT_PLAYER_MON 1 +#define B_ANIM_SWITCH_OUT_OPPONENT_MON 2 +#define B_ANIM_BALL_THROW 3 +#define B_ANIM_BALL_THROW_WITH_TRAINER 4 +#define B_ANIM_SUBSTITUTE_TO_MON 5 +#define B_ANIM_MON_TO_SUBSTITUTE 6 -// status animation table -#define B_ANIM_STATUS_PSN 0x0 -#define B_ANIM_STATUS_CONFUSION 0x1 -#define B_ANIM_STATUS_BRN 0x2 -#define B_ANIM_STATUS_INFATUATION 0x3 -#define B_ANIM_STATUS_SLP 0x4 -#define B_ANIM_STATUS_PRZ 0x5 -#define B_ANIM_STATUS_FRZ 0x6 -#define B_ANIM_STATUS_CURSED 0x7 -#define B_ANIM_STATUS_NIGHTMARE 0x8 -#define B_ANIM_STATUS_WRAPPED 0x9 // does not actually exist +// status animation table (gBattleAnims_StatusConditions) +#define B_ANIM_STATUS_PSN 0 +#define B_ANIM_STATUS_CONFUSION 1 +#define B_ANIM_STATUS_BRN 2 +#define B_ANIM_STATUS_INFATUATION 3 +#define B_ANIM_STATUS_SLP 4 +#define B_ANIM_STATUS_PRZ 5 +#define B_ANIM_STATUS_FRZ 6 +#define B_ANIM_STATUS_CURSED 7 +#define B_ANIM_STATUS_NIGHTMARE 8 +#define B_ANIM_STATUS_WRAPPED 9 // does not actually exist // Most tasks return a value to gBattleAnimArgs[7]. -#define ARG_RET_ID 0x7 +#define ARG_RET_ID 7 + +// For createsprite macro to use internally +#define ANIMSPRITE_IS_TARGET (1 << 7) // Trapping Wrap-like moves end turn animation. #define TRAP_ANIM_BIND 0 @@ -415,6 +418,22 @@ #define ANIM_WEATHER_SANDSTORM 3 #define ANIM_WEATHER_HAIL 4 +// Flags given to various functions to indicate which palettes to consider. +// Handled by UnpackSelectedBattlePalettes +#define F_PAL_BG (1 << 0) +#define F_PAL_ATTACKER (1 << 1) +#define F_PAL_TARGET (1 << 2) +#define F_PAL_ATK_PARTNER (1 << 3) +#define F_PAL_DEF_PARTNER (1 << 4) +#define F_PAL_ANIM_1 (1 << 5) // Palette set for GetBattleAnimBg1Data/GetBattleAnimBgDataByPriorityRank. Only used (ineffectually?) by Aromatherapy. +#define F_PAL_ANIM_2 (1 << 6) // Palette set for GetBattleAnimBgData/GetBattleAnimBgDataByPriorityRank. Unused. +#define F_PAL_ATK_SIDE (F_PAL_ATTACKER | F_PAL_ATK_PARTNER) +#define F_PAL_DEF_SIDE (F_PAL_TARGET | F_PAL_DEF_PARTNER) +#define F_PAL_BATTLERS (F_PAL_ATK_SIDE | F_PAL_DEF_SIDE) +// The below are only used by AnimTask_BlendBattleAnimPal to get battler sprite palettes by position rather than by role. +// It's redundant with F_PAL_BATTLERS, because they're only ever used together to refer to all the battlers at once. +#define F_PAL_BATTLERS_2 (1 << 7 | 1 << 8 | 1 << 9 | 1 << 10) + // Battle mon back animations. #define BACK_ANIM_NONE 0x00 #define BACK_ANIM_H_SLIDE_QUICK 0x01 diff --git a/include/battle_string_ids.h b/include/constants/battle_string_ids.h similarity index 99% rename from include/battle_string_ids.h rename to include/constants/battle_string_ids.h index d05863c3c..c648ad7be 100644 --- a/include/battle_string_ids.h +++ b/include/constants/battle_string_ids.h @@ -551,10 +551,11 @@ #define B_MSG_CREPT_CLOSER 0 #define B_MSG_CANT_GET_CLOSER 1 -// gSafariPokeblockResultStringIds -#define B_MSG_MON_WATCHING 0 -#define B_MSG_MON_ANGRY 1 -#define B_MSG_MON_EATING 2 +// gSafariReactionStringIds +#define B_MSG_MON_WATCHING 0 +#define B_MSG_MON_ANGRY 1 +#define B_MSG_MON_EATING 2 +#define NUM_SAFARI_REACTIONS 3 // gFlashFireStringIds #define B_MSG_FLASH_FIRE_BOOST 0 diff --git a/include/constants/rgb.h b/include/constants/rgb.h new file mode 100644 index 000000000..be3049d3c --- /dev/null +++ b/include/constants/rgb.h @@ -0,0 +1,25 @@ +#ifndef GUARD_RGB_H +#define GUARD_RGB_H + +#define GET_R(color) ((color) & 0x1F) +#define GET_G(color) (((color) >> 5) & 0x1F) +#define GET_B(color) (((color) >> 10) & 0x1F) + +#define RGB(r, g, b) ((r) | ((g) << 5) | ((b) << 10)) +#define RGB2(r, g, b) (((b) << 10) | ((g) << 5) | (r)) +#define _RGB(r, g, b) ((((b) & 0x1F) << 10) + (((g) & 0x1F) << 5) + ((r) & 0x1F)) + +#define RGB_ALPHA (1 << 15) +#define IS_ALPHA(color) ((color) & RGB_ALPHA) + +#define RGB_BLACK RGB(0, 0, 0) +#define RGB_WHITE RGB(31, 31, 31) +#define RGB_RED RGB(31, 0, 0) +#define RGB_GREEN RGB(0, 31, 0) +#define RGB_BLUE RGB(0, 0, 31) +#define RGB_YELLOW RGB(31, 31, 0) +#define RGB_MAGENTA RGB(31, 0, 31) +#define RGB_CYAN RGB(0, 31, 31) +#define RGB_WHITEALPHA (RGB_WHITE | RGB_ALPHA) + +#endif // GUARD_RGB_H diff --git a/include/data.h b/include/data.h index 6fb3bcab2..cf98e1572 100644 --- a/include/data.h +++ b/include/data.h @@ -14,6 +14,10 @@ struct MonCoords u8 y_offset; }; +#define MON_COORDS_SIZE(width, height)(DIV_ROUND_UP(width, 8) << 4 | DIV_ROUND_UP(height, 8)) +#define GET_MON_COORDS_WIDTH(size)((size >> 4) * 8) +#define GET_MON_COORDS_HEIGHT(size)((size & 0xF) * 8) + extern const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1]; extern const u8 gMoveNames[][13]; diff --git a/include/gba/defines.h b/include/gba/defines.h index f0fce824e..860ae5f08 100644 --- a/include/gba/defines.h +++ b/include/gba/defines.h @@ -79,20 +79,6 @@ #define TOTAL_OBJ_TILE_COUNT 1024 -#define RGB(r, g, b) ((r) | ((g) << 5) | ((b) << 10)) -#define RGB2(r, g, b) (((b) << 10) | ((g) << 5) | (r)) -#define _RGB(r, g, b) ((((b) & 0x1F) << 10) + (((g) & 0x1F) << 5) + ((r) & 0x1F)) - -#define RGB_BLACK RGB(0, 0, 0) -#define RGB_WHITE RGB(31, 31, 31) -#define RGB_RED RGB(31, 0, 0) -#define RGB_GREEN RGB(0, 31, 0) -#define RGB_BLUE RGB(0, 0, 31) -#define RGB_YELLOW RGB(31, 31, 0) -#define RGB_MAGENTA RGB(31, 0, 31) -#define RGB_CYAN RGB(0, 31, 31) -#define RGB_WHITEALPHA (RGB_WHITE | 0x8000) - // Some functions are strictly inline asm #define NAKED __attribute__((naked)) #define UNUSED __attribute__((unused)) diff --git a/include/global.h b/include/global.h index e474e1eaa..27fb57830 100644 --- a/include/global.h +++ b/include/global.h @@ -9,6 +9,7 @@ #include "constants/vars.h" #include "constants/species.h" #include "constants/easy_chat.h" +#include "constants/rgb.h" // Prevent cross-jump optimization. #define BLOCK_CROSS_JUMP asm(""); diff --git a/include/graphics.h b/include/graphics.h index 70b85d41b..6739f937b 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -3687,6 +3687,10 @@ extern const u32 gBattleStatMask8_Pal[]; extern const u32 gBattleStatMask1_Tilemap[]; extern const u32 gBattleStatMask2_Tilemap[]; +extern const u32 gSmokescreenImpactTiles[]; +extern const u32 gSmokescreenImpactPalette[]; +extern const u32 gEnemyMonShadow_Gfx[]; + // battle anim particle gfx extern const u32 gBattleAnimSpriteGfx_Bone[]; extern const u32 gBattleAnimSpriteGfx_Spark[]; @@ -3908,7 +3912,7 @@ extern const u32 gBattleAnimSpriteGfx_Pokeball[]; extern const u32 gBattleAnimSpriteGfx_Spotlight[]; extern const u32 gBattleAnimSpriteGfx_LetterZ[]; extern const u32 gBattleAnimSpriteGfx_RapidSpin[]; -extern const u32 gBattleAnimSpriteGfx_TriForceTriangle[]; +extern const u32 gBattleAnimSpriteGfx_TriAttackTriangle[]; extern const u32 gBattleAnimSpriteGfx_WispOrb[]; extern const u32 gBattleAnimSpriteGfx_WispFire[]; extern const u32 gBattleAnimSpriteGfx_GoldStars[]; @@ -4161,7 +4165,7 @@ extern const u32 gBattleAnimSpritePal_JaggedMusicNote[]; extern const u32 gBattleAnimSpritePal_Pokeball[]; extern const u32 gBattleAnimSpritePal_LetterZ[]; extern const u32 gBattleAnimSpritePal_RapidSpin[]; -extern const u32 gBattleAnimSpritePal_TriForceTriangle[]; +extern const u32 gBattleAnimSpritePal_TriAttackTriangle[]; extern const u32 gBattleAnimSpritePal_WispOrb[]; extern const u32 gBattleAnimSpritePal_GoldStars[]; extern const u32 gBattleAnimSpritePal_EclipsingOrb[]; @@ -4215,8 +4219,8 @@ extern const u32 gBattleAnimSpritePal_WhipHit[]; extern const u32 gBattleAnimSpritePal_BlueRing2[]; // battle anim task -extern const u32 gUnknown_D2EC24_Gfx[]; -extern const u32 gUnknown_D2EC24_Tilemap[]; +extern const u32 gUnusedLevelupAnimationGfx[]; +extern const u32 gUnusedLevelupAnimationTilemap[]; extern const u32 gCureBubblesGfx[]; extern const u32 gCureBubblesPal[]; extern const u32 gCureBubblesTilemap[]; diff --git a/include/palette.h b/include/palette.h index 55054b63d..c510a5d2f 100644 --- a/include/palette.h +++ b/include/palette.h @@ -78,7 +78,7 @@ void sub_80716F8(const u16 *src, u16 *dst, u16 count, u8 a4); void sub_80717A8(u32 a1, s8 a2, u8 a3, u8 a4, u16 a5, u8 a6, u8 a7); bool32 sub_807185C(u8 var); void sub_8071898(void); -void ResetPaletteStructByUid(u16 a1); +void PaletteStruct_ResetById(u16 a1); void ResetPaletteStruct(u8 paletteNum); #endif // GUARD_PALETTE_H diff --git a/include/sprite.h b/include/sprite.h index 9fa6280dc..eed582775 100644 --- a/include/sprite.h +++ b/include/sprite.h @@ -4,6 +4,7 @@ #include "global.h" #define MAX_SPRITES 64 +#define SPRITE_NONE 0xFF #define TAG_NONE 0xFFFF struct SpriteSheet diff --git a/ld_script.txt b/ld_script.txt index 09e230ed6..21538a7ba 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -81,7 +81,7 @@ SECTIONS { src/blend_palette.o(.text); src/daycare.o(.text); src/battle_interface.o(.text); - src/smokescreen.o(.text); + src/battle_anim_smokescreen.o(.text); src/pokeball.o(.text); src/load_save.o(.text); src/trade.o(.text); @@ -162,21 +162,21 @@ SECTIONS { src/item_use.o(.text); src/battle_anim_effects_1.o(.text); src/battle_anim_effects_2.o(.text); - src/water.o(.text); - src/fire.o(.text); - src/electric.o(.text); - src/ice.o(.text); - src/fighting.o(.text); - src/poison.o(.text); - src/flying.o(.text); - src/psychic.o(.text); - src/bug.o(.text); - src/rock.o(.text); - src/ghost.o(.text); - src/dragon.o(.text); - src/dark.o(.text); - src/ground.o(.text); - src/normal.o(.text); + src/battle_anim_water.o(.text); + src/battle_anim_fire.o(.text); + src/battle_anim_electric.o(.text); + src/battle_anim_ice.o(.text); + src/battle_anim_fight.o(.text); + src/battle_anim_poison.o(.text); + src/battle_anim_flying.o(.text); + src/battle_anim_psychic.o(.text); + src/battle_anim_bug.o(.text); + src/battle_anim_rock.o(.text); + src/battle_anim_ghost.o(.text); + src/battle_anim_dragon.o(.text); + src/battle_anim_dark.o(.text); + src/battle_anim_ground.o(.text); + src/battle_anim_normal.o(.text); src/battle_anim_utility_funcs.o(.text); src/battle_intro.o(.text); src/bike.o(.text); @@ -409,7 +409,7 @@ SECTIONS { src/battle_util.o(.rodata); src/battle_script_commands.o(.rodata); src/battle_controller_player.o(.rodata); - data/smokescreen.o(.rodata); + src/battle_anim_smokescreen.o(.rodata); src/battle_controller_opponent.o(.rodata); src/battle_controller_link_opponent.o(.rodata); src/pokemon.o(.rodata); @@ -474,21 +474,21 @@ SECTIONS { src/item_use.o(.rodata); src/battle_anim_effects_1.o(.rodata); src/battle_anim_effects_2.o(.rodata); - src/water.o(.rodata); - src/fire.o(.rodata); - src/electric.o(.rodata); - src/ice.o(.rodata); - src/fighting.o(.rodata); - src/poison.o(.rodata); - src/flying.o(.rodata); - src/psychic.o(.rodata); - src/bug.o(.rodata); - src/rock.o(.rodata); - src/ghost.o(.rodata); - src/dragon.o(.rodata); - src/dark.o(.rodata); - src/ground.o(.rodata); - src/normal.o(.rodata); + src/battle_anim_water.o(.rodata); + src/battle_anim_fire.o(.rodata); + src/battle_anim_electric.o(.rodata); + src/battle_anim_ice.o(.rodata); + src/battle_anim_fight.o(.rodata); + src/battle_anim_poison.o(.rodata); + src/battle_anim_flying.o(.rodata); + src/battle_anim_psychic.o(.rodata); + src/battle_anim_bug.o(.rodata); + src/battle_anim_rock.o(.rodata); + src/battle_anim_ghost.o(.rodata); + src/battle_anim_dragon.o(.rodata); + src/battle_anim_dark.o(.rodata); + src/battle_anim_ground.o(.rodata); + src/battle_anim_normal.o(.rodata); src/battle_anim_utility_funcs.o(.rodata); src/battle_intro.o(.rodata); src/bike.o(.rodata); diff --git a/src/battle_ai_script_commands.c b/src/battle_ai_script_commands.c index eaa203a54..fdecaccd0 100644 --- a/src/battle_ai_script_commands.c +++ b/src/battle_ai_script_commands.c @@ -1714,13 +1714,13 @@ static void Cmd_if_random_safari_flee(void) { u8 safariFleeRate; - if (gBattleStruct->safariGoNearCounter) + if (gBattleStruct->safariRockThrowCounter) { safariFleeRate = gBattleStruct->safariEscapeFactor * 2; if (safariFleeRate > 20) safariFleeRate = 20; } - else if (gBattleStruct->safariPkblThrowCounter != 0) + else if (gBattleStruct->safariBaitThrowCounter != 0) { safariFleeRate = gBattleStruct->safariEscapeFactor / 4; if (safariFleeRate == 0) diff --git a/src/battle_anim.c b/src/battle_anim.c index 3b466329c..50f8fe703 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -11,9 +11,13 @@ #include "task.h" #include "constants/battle_anim.h" +/* + This file handles the commands for the macros defined in + battle_anim_script.inc and used in battle_anim_scripts.s +*/ + #define ANIM_SPRITE_INDEX_COUNT 8 -// RAM EWRAM_DATA static const u8 *sBattleAnimScriptPtr = NULL; EWRAM_DATA static const u8 *sBattleAnimScriptRetAddr = NULL; EWRAM_DATA void (*gAnimScriptCallback)(void) = NULL; @@ -32,1755 +36,129 @@ EWRAM_DATA static u16 sSoundAnimFramesToWait = 0; EWRAM_DATA static u8 sMonAnimTaskIdArray[2] = {0}; EWRAM_DATA u8 gAnimMoveTurn = 0; EWRAM_DATA static u8 sAnimBackgroundFadeState = 0; -EWRAM_DATA static u16 sAnimMoveIndex = 0; +EWRAM_DATA static u16 sAnimMoveIndex = 0; // Set but unused. EWRAM_DATA u8 gBattleAnimAttacker = 0; EWRAM_DATA u8 gBattleAnimTarget = 0; EWRAM_DATA u16 gAnimBattlerSpecies[MAX_BATTLERS_COUNT] = {0}; -EWRAM_DATA u8 gUnknown_2037F24 = 0; +EWRAM_DATA u8 gAnimCustomPanning = 0; -// Function Declarations static void AddSpriteIndex(u16 index); static void ClearSpriteIndex(u16 index); static void WaitAnimFrameCount(void); static void RunAnimScriptCommand(void); -static void sub_8073558(u8 taskId); +static void Task_ClearMonBgStatic(u8 taskId); static void Task_FadeToBg(u8 taskId); static void Task_PanFromInitialToTarget(u8 taskId); -static void task_pA_ma0A_obj_to_bg_pal(u8 taskId); +static void Task_InitUpdateMonBg(u8 taskId); static void LoadMoveBg(u16 bgId); static void LoadDefaultBg(void); static void Task_LoopAndPlaySE(u8 taskId); static void Task_WaitAndPlaySE(u8 taskId); -static void sub_807331C(u8 taskId); - -static void ScriptCmd_loadspritegfx(void); -static void ScriptCmd_unloadspritegfx(void); -static void ScriptCmd_createsprite(void); -static void ScriptCmd_createvisualtask(void); -static void ScriptCmd_delay(void); -static void ScriptCmd_waitforvisualfinish(void); -static void ScriptCmd_hang1(void); -static void ScriptCmd_hang2(void); -static void ScriptCmd_end(void); -static void ScriptCmd_playse(void); -static void ScriptCmd_monbg(void); -static void ScriptCmd_clearmonbg(void); -static void ScriptCmd_setalpha(void); -static void ScriptCmd_blendoff(void); -static void ScriptCmd_call(void); -static void ScriptCmd_return(void); -static void ScriptCmd_setarg(void); -static void ScriptCmd_choosetwoturnanim(void); -static void ScriptCmd_jumpifmoveturn(void); -static void ScriptCmd_goto(void); -static void ScriptCmd_fadetobg(void); -static void ScriptCmd_restorebg(void); -static void ScriptCmd_waitbgfadeout(void); -static void ScriptCmd_waitbgfadein(void); -static void ScriptCmd_changebg(void); -static void ScriptCmd_playsewithpan(void); -static void ScriptCmd_setpan(void); -static void ScriptCmd_panse_1B(void); -static void ScriptCmd_loopsewithpan(void); -static void ScriptCmd_waitplaysewithpan(void); -static void ScriptCmd_setbldcnt(void); -static void ScriptCmd_createsoundtask(void); -static void ScriptCmd_waitsound(void); -static void ScriptCmd_jumpargeq(void); -static void ScriptCmd_monbg_22(void); -static void ScriptCmd_clearmonbg_23(void); -static void ScriptCmd_jumpifcontest(void); -static void ScriptCmd_fadetobgfromset(void); -static void ScriptCmd_panse_26(void); -static void ScriptCmd_panse_27(void); -static void ScriptCmd_monbgprio_28(void); -static void ScriptCmd_monbgprio_29(void); -static void ScriptCmd_monbgprio_2A(void); -static void ScriptCmd_invisible(void); -static void ScriptCmd_visible(void); -static void ScriptCmd_doublebattle_2D(void); -static void ScriptCmd_doublebattle_2E(void); -static void ScriptCmd_stopsound(void); - -// Data -const struct OamData gOamData_AffineOff_ObjNormal_8x8 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(8x8), - .x = 0, - .size = SPRITE_SIZE(8x8), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineOff_ObjNormal_16x16 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(16x16), - .x = 0, - .size = SPRITE_SIZE(16x16), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineOff_ObjNormal_32x32 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(32x32), - .x = 0, - .size = SPRITE_SIZE(32x32), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineOff_ObjNormal_64x64 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(64x64), - .x = 0, - .size = SPRITE_SIZE(64x64), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineOff_ObjNormal_16x8 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(16x8), - .x = 0, - .size = SPRITE_SIZE(16x8), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineOff_ObjNormal_32x8 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(32x8), - .x = 0, - .size = SPRITE_SIZE(32x8), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineOff_ObjNormal_32x16 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(32x16), - .x = 0, - .size = SPRITE_SIZE(32x16), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineOff_ObjNormal_64x32 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(64x32), - .x = 0, - .size = SPRITE_SIZE(64x32), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineOff_ObjNormal_8x16 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(8x16), - .x = 0, - .size = SPRITE_SIZE(8x16), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineOff_ObjNormal_8x32 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(8x32), - .x = 0, - .size = SPRITE_SIZE(8x32), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineOff_ObjNormal_16x32 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(16x32), - .x = 0, - .size = SPRITE_SIZE(16x32), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineOff_ObjNormal_32x64 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(32x64), - .x = 0, - .size = SPRITE_SIZE(32x64), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineNormal_ObjNormal_8x8 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_NORMAL, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(8x8), - .x = 0, - .size = SPRITE_SIZE(8x8), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineNormal_ObjNormal_16x16 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_NORMAL, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(16x16), - .x = 0, - .size = SPRITE_SIZE(16x16), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineNormal_ObjNormal_32x32 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_NORMAL, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(32x32), - .x = 0, - .size = SPRITE_SIZE(32x32), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineNormal_ObjNormal_64x64 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_NORMAL, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(64x64), - .x = 0, - .size = SPRITE_SIZE(64x64), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineNormal_ObjNormal_16x8 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_NORMAL, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(16x8), - .x = 0, - .size = SPRITE_SIZE(16x8), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineNormal_ObjNormal_32x8 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_NORMAL, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(32x8), - .x = 0, - .size = SPRITE_SIZE(32x8), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineNormal_ObjNormal_32x16 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_NORMAL, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(32x16), - .x = 0, - .size = SPRITE_SIZE(32x16), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineNormal_ObjNormal_64x32 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_NORMAL, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(64x32), - .x = 0, - .size = SPRITE_SIZE(64x32), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineNormal_ObjNormal_8x16 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_NORMAL, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(8x16), - .x = 0, - .size = SPRITE_SIZE(8x16), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineNormal_ObjNormal_8x32 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_NORMAL, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(8x32), - .x = 0, - .size = SPRITE_SIZE(8x32), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineNormal_ObjNormal_16x32 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_NORMAL, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(16x32), - .x = 0, - .size = SPRITE_SIZE(16x32), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineNormal_ObjNormal_32x64 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_NORMAL, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(32x64), - .x = 0, - .size = SPRITE_SIZE(32x64), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineDouble_ObjNormal_8x8 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_DOUBLE, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(8x8), - .x = 0, - .size = SPRITE_SIZE(8x8), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineDouble_ObjNormal_16x16 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_DOUBLE, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(16x16), - .x = 0, - .size = SPRITE_SIZE(16x16), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineDouble_ObjNormal_32x32 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_DOUBLE, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(32x32), - .x = 0, - .size = SPRITE_SIZE(32x32), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineDouble_ObjNormal_64x64 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_DOUBLE, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(64x64), - .x = 0, - .size = SPRITE_SIZE(64x64), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineDouble_ObjNormal_16x8 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_DOUBLE, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(16x8), - .x = 0, - .size = SPRITE_SIZE(16x8), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineDouble_ObjNormal_32x8 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_DOUBLE, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(32x8), - .x = 0, - .size = SPRITE_SIZE(32x8), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineDouble_ObjNormal_32x16 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_DOUBLE, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(32x16), - .x = 0, - .size = SPRITE_SIZE(32x16), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineDouble_ObjNormal_64x32 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_DOUBLE, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(64x32), - .x = 0, - .size = SPRITE_SIZE(64x32), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineDouble_ObjNormal_8x16 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_DOUBLE, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(8x16), - .x = 0, - .size = SPRITE_SIZE(8x16), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineDouble_ObjNormal_8x32 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_DOUBLE, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(8x32), - .x = 0, - .size = SPRITE_SIZE(8x32), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineDouble_ObjNormal_16x32 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_DOUBLE, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(16x32), - .x = 0, - .size = SPRITE_SIZE(16x32), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineDouble_ObjNormal_32x64 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_DOUBLE, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(32x64), - .x = 0, - .size = SPRITE_SIZE(32x64), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineOff_ObjBlend_8x8 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(8x8), - .x = 0, - .size = SPRITE_SIZE(8x8), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineOff_ObjBlend_16x16 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(16x16), - .x = 0, - .size = SPRITE_SIZE(16x16), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineOff_ObjBlend_32x32 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(32x32), - .x = 0, - .size = SPRITE_SIZE(32x32), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineOff_ObjBlend_64x64 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(64x64), - .x = 0, - .size = SPRITE_SIZE(64x64), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineOff_ObjBlend_16x8 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(16x8), - .x = 0, - .size = SPRITE_SIZE(16x8), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineOff_ObjBlend_32x8 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(32x8), - .x = 0, - .size = SPRITE_SIZE(32x8), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineOff_ObjBlend_32x16 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(32x16), - .x = 0, - .size = SPRITE_SIZE(32x16), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineOff_ObjBlend_64x32 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(64x32), - .x = 0, - .size = SPRITE_SIZE(64x32), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineOff_ObjBlend_8x16 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(8x16), - .x = 0, - .size = SPRITE_SIZE(8x16), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineOff_ObjBlend_8x32 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(8x32), - .x = 0, - .size = SPRITE_SIZE(8x32), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineOff_ObjBlend_16x32 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(16x32), - .x = 0, - .size = SPRITE_SIZE(16x32), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineOff_ObjBlend_32x64 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(32x64), - .x = 0, - .size = SPRITE_SIZE(32x64), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineNormal_ObjBlend_8x8 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_NORMAL, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(8x8), - .x = 0, - .size = SPRITE_SIZE(8x8), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineNormal_ObjBlend_16x16 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_NORMAL, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(16x16), - .x = 0, - .size = SPRITE_SIZE(16x16), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineNormal_ObjBlend_32x32 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_NORMAL, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(32x32), - .x = 0, - .size = SPRITE_SIZE(32x32), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineNormal_ObjBlend_64x64 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_NORMAL, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(64x64), - .x = 0, - .size = SPRITE_SIZE(64x64), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineNormal_ObjBlend_16x8 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_NORMAL, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(16x8), - .x = 0, - .size = SPRITE_SIZE(16x8), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineNormal_ObjBlend_32x8 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_NORMAL, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(32x8), - .x = 0, - .size = SPRITE_SIZE(32x8), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineNormal_ObjBlend_32x16 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_NORMAL, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(32x16), - .x = 0, - .size = SPRITE_SIZE(32x16), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineNormal_ObjBlend_64x32 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_NORMAL, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(64x32), - .x = 0, - .size = SPRITE_SIZE(64x32), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineNormal_ObjBlend_8x16 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_NORMAL, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(8x16), - .x = 0, - .size = SPRITE_SIZE(8x16), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineNormal_ObjBlend_8x32 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_NORMAL, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(8x32), - .x = 0, - .size = SPRITE_SIZE(8x32), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineNormal_ObjBlend_16x32 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_NORMAL, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(16x32), - .x = 0, - .size = SPRITE_SIZE(16x32), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineNormal_ObjBlend_32x64 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_NORMAL, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(32x64), - .x = 0, - .size = SPRITE_SIZE(32x64), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineDouble_ObjBlend_8x8 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_DOUBLE, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(8x8), - .x = 0, - .size = SPRITE_SIZE(8x8), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineDouble_ObjBlend_16x16 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_DOUBLE, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(16x16), - .x = 0, - .size = SPRITE_SIZE(16x16), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineDouble_ObjBlend_32x32 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_DOUBLE, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(32x32), - .x = 0, - .size = SPRITE_SIZE(32x32), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineDouble_ObjBlend_64x64 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_DOUBLE, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(64x64), - .x = 0, - .size = SPRITE_SIZE(64x64), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineDouble_ObjBlend_16x8 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_DOUBLE, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(16x8), - .x = 0, - .size = SPRITE_SIZE(16x8), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineDouble_ObjBlend_32x8 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_DOUBLE, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(32x8), - .x = 0, - .size = SPRITE_SIZE(32x8), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineDouble_ObjBlend_32x16 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_DOUBLE, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(32x16), - .x = 0, - .size = SPRITE_SIZE(32x16), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineDouble_ObjBlend_64x32 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_DOUBLE, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(64x32), - .x = 0, - .size = SPRITE_SIZE(64x32), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineDouble_ObjBlend_8x16 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_DOUBLE, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(8x16), - .x = 0, - .size = SPRITE_SIZE(8x16), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineDouble_ObjBlend_8x32 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_DOUBLE, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(8x32), - .x = 0, - .size = SPRITE_SIZE(8x32), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineDouble_ObjBlend_16x32 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_DOUBLE, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(16x32), - .x = 0, - .size = SPRITE_SIZE(16x32), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineDouble_ObjBlend_32x64 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_DOUBLE, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(32x64), - .x = 0, - .size = SPRITE_SIZE(32x64), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct CompressedSpriteSheet gBattleAnimPicTable[] = -{ - {gBattleAnimSpriteGfx_Bone, 0x0200, ANIM_TAG_BONE}, - {gBattleAnimSpriteGfx_Spark, 0x0300, ANIM_TAG_SPARK}, - {gBattleAnimSpriteGfx_Pencil, 0x0200, ANIM_TAG_PENCIL}, - {gBattleAnimSpriteGfx_AirWave, 0x0100, ANIM_TAG_AIR_WAVE}, - {gBattleAnimSpriteGfx_Orb, 0x0200, ANIM_TAG_ORB}, - {gBattleAnimSpriteGfx_Sword, 0x0400, ANIM_TAG_SWORD}, - {gBattleAnimSpriteGfx_Seed, 0x0180, ANIM_TAG_SEED}, - {gBattleAnimSpriteGfx_Explosion6, 0x0800, ANIM_TAG_EXPLOSION_6}, - {gBattleAnimSpriteGfx_PinkOrb, 0x0020, ANIM_TAG_PINK_ORB}, - {gBattleAnimSpriteGfx_Gust, 0x0400, ANIM_TAG_GUST}, - {gBattleAnimSpriteGfx_IceCube, 0x1200, ANIM_TAG_ICE_CUBE}, - {gBattleAnimSpriteGfx_Spark2, 0x0180, ANIM_TAG_SPARK_2}, - {gBattleAnimSpriteGfx_Orange, 0x0080, ANIM_TAG_ORANGE}, - {gBattleAnimSpriteGfx_YellowBall, 0x0080, ANIM_TAG_YELLOW_BALL}, - {gBattleAnimSpriteGfx_LockOn, 0x0280, ANIM_TAG_LOCK_ON}, - {gBattleAnimSpriteGfx_TiedBag, 0x0080, ANIM_TAG_TIED_BAG}, - {gBattleAnimSpriteGfx_BlackSmoke, 0x0100, ANIM_TAG_BLACK_SMOKE}, - {gBattleAnimSpriteGfx_BlackBall, 0x0020, ANIM_TAG_BLACK_BALL}, - {gBattleAnimSpriteGfx_Conversion, 0x0080, ANIM_TAG_CONVERSION}, - {gBattleAnimSpriteGfx_Glass, 0x0400, ANIM_TAG_GLASS}, - {gBattleAnimSpriteGfx_HornHit, 0x0200, ANIM_TAG_HORN_HIT}, - {gBattleAnimSpriteGfx_Hit, 0x0A00, ANIM_TAG_HIT}, - {gBattleAnimSpriteGfx_Hit, 0x0A00, ANIM_TAG_HIT_2}, - {gBattleAnimSpriteGfx_BlueShards, 0x0380, ANIM_TAG_BLUE_SHARDS}, - {gBattleAnimSpriteGfx_ClosingEye, 0x0300, ANIM_TAG_CLOSING_EYE}, - {gBattleAnimSpriteGfx_WavingHand, 0x0A00, ANIM_TAG_WAVING_HAND}, - {gBattleAnimSpriteGfx_HitDuplicate, 0x0A00, ANIM_TAG_HIT_DUPLICATE}, - {gBattleAnimSpriteGfx_Leer, 0x0A00, ANIM_TAG_LEER}, - {gBattleAnimSpriteGfx_BlueBurst, 0x0A00, ANIM_TAG_BLUE_BURST}, - {gBattleAnimSpriteGfx_SmallEmber, 0x0A00, ANIM_TAG_SMALL_EMBER}, - {gBattleAnimSpriteGfx_GraySmoke, 0x0A00, ANIM_TAG_GRAY_SMOKE}, - {gBattleAnimSpriteGfx_BlueStar, 0x0E00, ANIM_TAG_BLUE_STAR}, - {gBattleAnimSpriteGfx_BubbleBurst, 0x0380, ANIM_TAG_BUBBLE_BURST}, - {gBattleAnimSpriteGfx_Fire, 0x1000, ANIM_TAG_FIRE}, - {gBattleAnimSpriteGfx_SpinningFire, 0x0800, ANIM_TAG_SPINNING_FIRE}, - {gBattleAnimSpriteGfx_FirePlume, 0x0A00, ANIM_TAG_FIRE_PLUME}, - {gBattleAnimSpriteGfx_Lightning2, 0x0800, ANIM_TAG_LIGHTNING_2}, - {gBattleAnimSpriteGfx_Lightning, 0x0A00, ANIM_TAG_LIGHTNING}, - {gBattleAnimSpriteGfx_ClawSlash2, 0x0A00, ANIM_TAG_CLAW_SLASH_2}, - {gBattleAnimSpriteGfx_ClawSlash, 0x0A00, ANIM_TAG_CLAW_SLASH}, - {gBattleAnimSpriteGfx_Scratch3, 0x0A00, ANIM_TAG_SCRATCH_3}, - {gBattleAnimSpriteGfx_Scratch2, 0x0A00, ANIM_TAG_SCRATCH_2}, - {gBattleAnimSpriteGfx_BubbleBurst2, 0x0A00, ANIM_TAG_BUBBLE_BURST_2}, - {gBattleAnimSpriteGfx_IceChunk, 0x0A00, ANIM_TAG_ICE_CHUNK}, - {gBattleAnimSpriteGfx_Glass2, 0x0A00, ANIM_TAG_GLASS_2}, - {gBattleAnimSpriteGfx_PinkHeart2, 0x0A00, ANIM_TAG_PINK_HEART_2}, - {gBattleAnimSpriteGfx_SapDrip, 0x1000, ANIM_TAG_SAP_DRIP}, - {gBattleAnimSpriteGfx_SapDrip, 0x1000, ANIM_TAG_SAP_DRIP_2}, - {gBattleAnimSpriteGfx_Sparkle1, 0x1000, ANIM_TAG_SPARKLE_1}, - {gBattleAnimSpriteGfx_Sparkle1, 0x1000, ANIM_TAG_SPARKLE_2}, - {gBattleAnimSpriteGfx_HumanoidFoot, 0x0200, ANIM_TAG_HUMANOID_FOOT}, - {gBattleAnimSpriteGfx_MonsterFoot, 0x0200, ANIM_TAG_MONSTER_FOOT}, - {gBattleAnimSpriteGfx_HumanoidHand, 0x0200, ANIM_TAG_HUMANOID_HAND}, - {gBattleAnimSpriteGfx_NoiseLine, 0x0800, ANIM_TAG_NOISE_LINE}, - {gBattleAnimSpriteGfx_YellowUnk, 0x0080, ANIM_TAG_YELLOW_UNK}, - {gBattleAnimSpriteGfx_RedFist, 0x0200, ANIM_TAG_RED_FIST}, - {gBattleAnimSpriteGfx_SlamHit, 0x1000, ANIM_TAG_SLAM_HIT}, - {gBattleAnimSpriteGfx_Ring, 0x0180, ANIM_TAG_RING}, - {gBattleAnimSpriteGfx_Rocks, 0x0C00, ANIM_TAG_ROCKS}, - {gBattleAnimSpriteGfx_Z, 0x0100, ANIM_TAG_Z}, - {gBattleAnimSpriteGfx_YellowUnk2, 0x0040, ANIM_TAG_YELLOW_UNK_2}, - {gBattleAnimSpriteGfx_AirSlash, 0x0180, ANIM_TAG_AIR_SLASH}, - {gBattleAnimSpriteGfx_SpinningGreenOrbs, 0x0800, ANIM_TAG_SPINNING_GREEN_ORBS}, - {gBattleAnimSpriteGfx_Leaf, 0x0480, ANIM_TAG_LEAF}, - {gBattleAnimSpriteGfx_Finger, 0x0200, ANIM_TAG_FINGER}, - {gBattleAnimSpriteGfx_PoisonPowder, 0x0200, ANIM_TAG_POISON_POWDER}, - {gBattleAnimSpriteGfx_BrownTriangle, 0x0100, ANIM_TAG_BROWN_TRIANGLE}, - {gBattleAnimSpriteGfx_PoisonPowder, 0x0200, ANIM_TAG_SLEEP_POWDER}, - {gBattleAnimSpriteGfx_PoisonPowder, 0x0200, ANIM_TAG_STUN_SPORE}, - {gBattleAnimSpriteGfx_PoisonPowder, 0x0200, ANIM_TAG_POWDER}, - {gBattleAnimSpriteGfx_Sparkle3, 0x0200, ANIM_TAG_SPARKLE_3}, - {gBattleAnimSpriteGfx_Sparkle4, 0x0A00, ANIM_TAG_SPARKLE_4}, - {gBattleAnimSpriteGfx_MusicNotes, 0x0300, ANIM_TAG_MUSIC_NOTES}, - {gBattleAnimSpriteGfx_Duck, 0x0180, ANIM_TAG_DUCK}, - {gBattleAnimSpriteGfx_MudSand, 0x00A0, ANIM_TAG_MUD_SAND}, - {gBattleAnimSpriteGfx_Alert, 0x0700, ANIM_TAG_ALERT}, - {gBattleAnimSpriteGfx_BlueFlames, 0x0400, ANIM_TAG_BLUE_FLAMES}, - {gBattleAnimSpriteGfx_BlueFlames2, 0x0200, ANIM_TAG_BLUE_FLAMES_2}, - {gBattleAnimSpriteGfx_Shock4, 0x0300, ANIM_TAG_SHOCK_4}, - {gBattleAnimSpriteGfx_Shock, 0x0C00, ANIM_TAG_SHOCK}, - {gBattleAnimSpriteGfx_Bell2, 0x0A00, ANIM_TAG_BELL_2}, - {gBattleAnimSpriteGfx_PinkGlove, 0x0080, ANIM_TAG_PINK_GLOVE}, - {gBattleAnimSpriteGfx_BlueLines, 0x0040, ANIM_TAG_BLUE_LINES}, - {gBattleAnimSpriteGfx_Impact3, 0x0E00, ANIM_TAG_IMPACT_3}, - {gBattleAnimSpriteGfx_Impact2, 0x0E00, ANIM_TAG_IMPACT_2}, - {gBattleAnimSpriteGfx_Reticle, 0x0280, ANIM_TAG_RETICLE}, - {gBattleAnimSpriteGfx_Breath, 0x0200, ANIM_TAG_BREATH}, - {gBattleAnimSpriteGfx_Anger, 0x0080, ANIM_TAG_ANGER}, - {gBattleAnimSpriteGfx_Snowball, 0x00C0, ANIM_TAG_SNOWBALL}, - {gBattleAnimSpriteGfx_Vine, 0x0A00, ANIM_TAG_VINE}, - {gBattleAnimSpriteGfx_Sword2, 0x0200, ANIM_TAG_SWORD_2}, - {gBattleAnimSpriteGfx_Clapping, 0x0180, ANIM_TAG_CLAPPING}, - {gBattleAnimSpriteGfx_RedTube, 0x0080, ANIM_TAG_RED_TUBE}, - {gBattleAnimSpriteGfx_Amnesia, 0x1000, ANIM_TAG_AMNESIA}, - {gBattleAnimSpriteGfx_String2, 0x0A00, ANIM_TAG_STRING_2}, - {gBattleAnimSpriteGfx_Pencil2, 0x0180, ANIM_TAG_PENCIL_2}, - {gBattleAnimSpriteGfx_Petal, 0x0380, ANIM_TAG_PETAL}, - {gBattleAnimSpriteGfx_BentSpoon, 0x0C00, ANIM_TAG_BENT_SPOON}, - {gBattleAnimSpriteGfx_Web, 0x0200, ANIM_TAG_WEB}, - {gBattleAnimSpriteGfx_MilkBottle, 0x0200, ANIM_TAG_MILK_BOTTLE}, - {gBattleAnimSpriteGfx_Coin, 0x0200, ANIM_TAG_COIN}, - {gBattleAnimSpriteGfx_CrackedEgg, 0x0200, ANIM_TAG_CRACKED_EGG}, - {gBattleAnimSpriteGfx_HatchedEgg, 0x0400, ANIM_TAG_HATCHED_EGG}, - {gBattleAnimSpriteGfx_FreshEgg, 0x0080, ANIM_TAG_FRESH_EGG}, - {gBattleAnimSpriteGfx_Fangs, 0x0400, ANIM_TAG_FANGS}, - {gBattleAnimSpriteGfx_Explosion2, 0x0c00, ANIM_TAG_EXPLOSION_2}, - {gBattleAnimSpriteGfx_Explosion3, 0x0200, ANIM_TAG_EXPLOSION_3}, - {gBattleAnimSpriteGfx_WaterDroplet, 0x1000, ANIM_TAG_WATER_DROPLET}, - {gBattleAnimSpriteGfx_WaterDroplet2, 0x0a00, ANIM_TAG_WATER_DROPLET_2}, - {gBattleAnimSpriteGfx_Seed2, 0x0020, ANIM_TAG_SEED_2}, - {gBattleAnimSpriteGfx_Sprout, 0x0e00, ANIM_TAG_SPROUT}, - {gBattleAnimSpriteGfx_RedWand, 0x0080, ANIM_TAG_RED_WAND}, - {gBattleAnimSpriteGfx_PurpleGreenUnk, 0x0a00, ANIM_TAG_PURPLE_GREEN_UNK}, - {gBattleAnimSpriteGfx_WaterColumn, 0x0400, ANIM_TAG_WATER_COLUMN}, - {gBattleAnimSpriteGfx_MudUnk, 0x0200, ANIM_TAG_MUD_UNK}, - {gBattleAnimSpriteGfx_RainDrops, 0x0700, ANIM_TAG_RAIN_DROPS}, - {gBattleAnimSpriteGfx_FurySwipes, 0x0800, ANIM_TAG_FURY_SWIPES}, - {gBattleAnimSpriteGfx_Vine2, 0x0a00, ANIM_TAG_VINE_2}, - {gBattleAnimSpriteGfx_Teeth, 0x0600, ANIM_TAG_TEETH}, - {gBattleAnimSpriteGfx_Bone2, 0x0800, ANIM_TAG_BONE_2}, - {gBattleAnimSpriteGfx_WhiteBag, 0x0200, ANIM_TAG_WHITE_BAG}, - {gBattleAnimSpriteGfx_Unknown, 0x0040, ANIM_TAG_UNKNOWN}, - {gBattleAnimSpriteGfx_PurpleCoral, 0x0180, ANIM_TAG_PURPLE_CORAL}, - {gBattleAnimSpriteGfx_PurpleDroplet, 0x0600, ANIM_TAG_PURPLE_DROPLET}, - {gBattleAnimSpriteGfx_Shock2, 0x0600, ANIM_TAG_SHOCK_2}, - {gBattleAnimSpriteGfx_ClosingEye2, 0x0200, ANIM_TAG_CLOSING_EYE_2}, - {gBattleAnimSpriteGfx_MetalBall, 0x0080, ANIM_TAG_METAL_BALL}, - {gBattleAnimSpriteGfx_MonsterDoll, 0x0200, ANIM_TAG_MONSTER_DOLL}, - {gBattleAnimSpriteGfx_Whirlwind, 0x0800, ANIM_TAG_WHIRLWIND}, - {gBattleAnimSpriteGfx_Whirlwind2, 0x0080, ANIM_TAG_WHIRLWIND_2}, - {gBattleAnimSpriteGfx_Explosion4, 0x0a00, ANIM_TAG_EXPLOSION_4}, - {gBattleAnimSpriteGfx_Explosion5, 0x0280, ANIM_TAG_EXPLOSION_5}, - {gBattleAnimSpriteGfx_Tongue, 0x0280, ANIM_TAG_TONGUE}, - {gBattleAnimSpriteGfx_Smoke, 0x0100, ANIM_TAG_SMOKE}, - {gBattleAnimSpriteGfx_Smoke2, 0x0200, ANIM_TAG_SMOKE_2}, - {gBattleAnimSpriteGfx_Impact, 0x0200, ANIM_TAG_IMPACT}, - {gBattleAnimSpriteGfx_CircleImpact, 0x0020, ANIM_TAG_CIRCLE_IMPACT}, - {gBattleAnimSpriteGfx_Scratch, 0x0a00, ANIM_TAG_SCRATCH}, - {gBattleAnimSpriteGfx_Cut, 0x0800, ANIM_TAG_CUT}, - {gBattleAnimSpriteGfx_SharpTeeth, 0x0800, ANIM_TAG_SHARP_TEETH}, - {gBattleAnimSpriteGfx_RainbowRings, 0x00c0, ANIM_TAG_RAINBOW_RINGS}, - {gBattleAnimSpriteGfx_IceCrystals, 0x01c0, ANIM_TAG_ICE_CRYSTALS}, - {gBattleAnimSpriteGfx_IceSpikes, 0x0100, ANIM_TAG_ICE_SPIKES}, - {gBattleAnimSpriteGfx_HandsAndFeet, 0x0800, ANIM_TAG_HANDS_AND_FEET}, - {gBattleAnimSpriteGfx_MistCloud, 0x0200, ANIM_TAG_MIST_CLOUD}, - {gBattleAnimSpriteGfx_Clamp, 0x0800, ANIM_TAG_CLAMP}, - {gBattleAnimSpriteGfx_Bubble, 0x0180, ANIM_TAG_BUBBLE}, - {gBattleAnimSpriteGfx_Orbs, 0x0180, ANIM_TAG_ORBS}, - {gBattleAnimSpriteGfx_WaterImpact, 0x0200, ANIM_TAG_WATER_IMPACT}, - {gBattleAnimSpriteGfx_WaterOrb, 0x0200, ANIM_TAG_WATER_ORB}, - {gBattleAnimSpriteGfx_PoisonBubble, 0x0180, ANIM_TAG_POISON_BUBBLE}, - {gBattleAnimSpriteGfx_ToxicBubble, 0x0400, ANIM_TAG_TOXIC_BUBBLE}, - {gBattleAnimSpriteGfx_Spikes, 0x0080, ANIM_TAG_SPIKES}, - {gBattleAnimSpriteGfx_HornHit2, 0x0100, ANIM_TAG_HORN_HIT_2}, - {gBattleAnimSpriteGfx_AirWave2, 0x0100, ANIM_TAG_AIR_WAVE_2}, - {gBattleAnimSpriteGfx_SmallBubbles, 0x0140, ANIM_TAG_SMALL_BUBBLES}, - {gBattleAnimSpriteGfx_RoundShadow, 0x0800, ANIM_TAG_ROUND_SHADOW}, - {gBattleAnimSpriteGfx_Sunlight, 0x0200, ANIM_TAG_SUNLIGHT}, - {gBattleAnimSpriteGfx_Spore, 0x0100, ANIM_TAG_SPORE}, - {gBattleAnimSpriteGfx_Flower, 0x00a0, ANIM_TAG_FLOWER}, - {gBattleAnimSpriteGfx_RazorLeaf, 0x0100, ANIM_TAG_RAZOR_LEAF}, - {gBattleAnimSpriteGfx_Needle, 0x0080, ANIM_TAG_NEEDLE}, - {gBattleAnimSpriteGfx_WhirlwindLines, 0x0300, ANIM_TAG_WHIRLWIND_LINES}, - {gBattleAnimSpriteGfx_GoldRing, 0x0100, ANIM_TAG_GOLD_RING}, - {gBattleAnimSpriteGfx_GoldRing, 0x0100, ANIM_TAG_PURPLE_RING}, - {gBattleAnimSpriteGfx_GoldRing, 0x0100, ANIM_TAG_BLUE_RING}, - {gBattleAnimSpriteGfx_GreenLightWall, 0x0800, ANIM_TAG_GREEN_LIGHT_WALL}, - {gBattleAnimSpriteGfx_GreenLightWall, 0x0800, ANIM_TAG_BLUE_LIGHT_WALL}, - {gBattleAnimSpriteGfx_GreenLightWall, 0x0800, ANIM_TAG_RED_LIGHT_WALL}, - {gBattleAnimSpriteGfx_GreenLightWall, 0x0800, ANIM_TAG_GRAY_LIGHT_WALL}, - {gBattleAnimSpriteGfx_GreenLightWall, 0x0800, ANIM_TAG_ORANGE_LIGHT_WALL}, - {gBattleAnimSpriteGfx_BlackBall2, 0x0080, ANIM_TAG_BLACK_BALL_2}, - {gBattleAnimSpriteGfx_MistCloud, 0x0200, ANIM_TAG_PURPLE_GAS_CLOUD}, - {gBattleAnimSpriteGfx_SparkH, 0x0200, ANIM_TAG_SPARK_H}, - {gBattleAnimSpriteGfx_YellowStar, 0x0200, ANIM_TAG_YELLOW_STAR}, - {gBattleAnimSpriteGfx_LargeFreshEgg, 0x0080, ANIM_TAG_LARGE_FRESH_EGG}, - {gBattleAnimSpriteGfx_ShadowBall, 0x0200, ANIM_TAG_SHADOW_BALL}, - {gBattleAnimSpriteGfx_Lick, 0x0500, ANIM_TAG_LICK}, - {gBattleAnimSpriteGfx_VoidLines, 0x0800, ANIM_TAG_VOID_LINES}, - {gBattleAnimSpriteGfx_String, 0x0400, ANIM_TAG_STRING}, - {gBattleAnimSpriteGfx_WebThread, 0x0020, ANIM_TAG_WEB_THREAD}, - {gBattleAnimSpriteGfx_SpiderWeb, 0x0800, ANIM_TAG_SPIDER_WEB}, - {gBattleAnimSpriteGfx_Lightbulb, 0x0100, ANIM_TAG_LIGHTBULB}, - {gBattleAnimSpriteGfx_Slash, 0x0800, ANIM_TAG_SLASH}, - {gBattleAnimSpriteGfx_FocusEnergy, 0x0400, ANIM_TAG_FOCUS_ENERGY}, - {gBattleAnimSpriteGfx_SphereToCube, 0x0a00, ANIM_TAG_SPHERE_TO_CUBE}, - {gBattleAnimSpriteGfx_Tendrils, 0x1000, ANIM_TAG_TENDRILS}, - {gBattleAnimSpriteGfx_Eye, 0x0800, ANIM_TAG_EYE}, - {gBattleAnimSpriteGfx_WhiteShadow, 0x0400, ANIM_TAG_WHITE_SHADOW}, - {gBattleAnimSpriteGfx_TealAlert, 0x0200, ANIM_TAG_TEAL_ALERT}, - {gBattleAnimSpriteGfx_OpeningEye, 0x0800, ANIM_TAG_OPENING_EYE}, - {gBattleAnimSpriteGfx_RoundWhiteHalo, 0x0800, ANIM_TAG_ROUND_WHITE_HALO}, - {gBattleAnimSpriteGfx_FangAttack, 0x0800, ANIM_TAG_FANG_ATTACK}, - {gBattleAnimSpriteGfx_PurpleHandOutline, 0x0200, ANIM_TAG_PURPLE_HAND_OUTLINE}, - {gBattleAnimSpriteGfx_Moon, 0x0800, ANIM_TAG_MOON}, - {gBattleAnimSpriteGfx_GreenSparkle, 0x0200, ANIM_TAG_GREEN_SPARKLE}, - {gBattleAnimSpriteGfx_Spiral, 0x0800, ANIM_TAG_SPIRAL}, - {gBattleAnimSpriteGfx_SnoreZ, 0x0200, ANIM_TAG_SNORE_Z}, - {gBattleAnimSpriteGfx_Explosion, 0x0800, ANIM_TAG_EXPLOSION}, - {gBattleAnimSpriteGfx_Nail, 0x0400, ANIM_TAG_NAIL}, - {gBattleAnimSpriteGfx_GhostlySpirit, 0x0200, ANIM_TAG_GHOSTLY_SPIRIT}, - {gBattleAnimSpriteGfx_WarmRock, 0x0a80, ANIM_TAG_WARM_ROCK}, - {gBattleAnimSpriteGfx_BreakingEgg, 0x0600, ANIM_TAG_BREAKING_EGG}, - {gBattleAnimSpriteGfx_ThinRing, 0x0800, ANIM_TAG_THIN_RING}, - {gBattleAnimSpriteGfx_PunchImpact, 0x0200, ANIM_TAG_PUNCH_IMPACT}, - {gBattleAnimSpriteGfx_Bell, 0x0600, ANIM_TAG_BELL}, - {gBattleAnimSpriteGfx_MusicNotes2, 0x0800, ANIM_TAG_MUSIC_NOTES_2}, - {gBattleAnimSpriteGfx_SpeedDust, 0x0180, ANIM_TAG_SPEED_DUST}, - {gBattleAnimSpriteGfx_TornMetal, 0x0800, ANIM_TAG_TORN_METAL}, - {gBattleAnimSpriteGfx_ThoughtBubble, 0x0800, ANIM_TAG_THOUGHT_BUBBLE}, - {gBattleAnimSpriteGfx_MagentaHeart, 0x0080, ANIM_TAG_MAGENTA_HEART}, - {gBattleAnimSpriteGfx_ElectricOrbs, 0x0080, ANIM_TAG_ELECTRIC_ORBS}, - {gBattleAnimSpriteGfx_CircleOfLight, 0x0800, ANIM_TAG_CIRCLE_OF_LIGHT}, - {gBattleAnimSpriteGfx_Electricity, 0x0800, ANIM_TAG_ELECTRICITY}, - {gBattleAnimSpriteGfx_Finger2, 0x0600, ANIM_TAG_FINGER_2}, - {gBattleAnimSpriteGfx_MovementWaves, 0x0600, ANIM_TAG_MOVEMENT_WAVES}, - {gBattleAnimSpriteGfx_MagentaHeart, 0x0080, ANIM_TAG_RED_HEART}, - {gBattleAnimSpriteGfx_RedOrb, 0x0080, ANIM_TAG_RED_ORB}, - {gBattleAnimSpriteGfx_EyeSparkle, 0x0180, ANIM_TAG_EYE_SPARKLE}, - {gBattleAnimSpriteGfx_MagentaHeart, 0x0080, ANIM_TAG_PINK_HEART}, - {gBattleAnimSpriteGfx_Angel, 0x0200, ANIM_TAG_ANGEL}, - {gBattleAnimSpriteGfx_Devil, 0x0400, ANIM_TAG_DEVIL}, - {gBattleAnimSpriteGfx_Swipe, 0x0a00, ANIM_TAG_SWIPE}, - {gBattleAnimSpriteGfx_Roots, 0x0800, ANIM_TAG_ROOTS}, - {gBattleAnimSpriteGfx_ItemBag, 0x0200, ANIM_TAG_ITEM_BAG}, - {gBattleAnimSpriteGfx_JaggedMusicNote, 0x0400, ANIM_TAG_JAGGED_MUSIC_NOTE}, - {gBattleAnimSpriteGfx_Pokeball, 0x0080, ANIM_TAG_POKEBALL}, - {gBattleAnimSpriteGfx_Spotlight, 0x0800, ANIM_TAG_SPOTLIGHT}, - {gBattleAnimSpriteGfx_LetterZ, 0x0200, ANIM_TAG_LETTER_Z}, - {gBattleAnimSpriteGfx_RapidSpin, 0x0300, ANIM_TAG_RAPID_SPIN}, - {gBattleAnimSpriteGfx_TriForceTriangle, 0x0800, ANIM_TAG_TRI_FORCE_TRIANGLE}, - {gBattleAnimSpriteGfx_WispOrb, 0x0380, ANIM_TAG_WISP_ORB}, - {gBattleAnimSpriteGfx_WispFire, 0x0800, ANIM_TAG_WISP_FIRE}, - {gBattleAnimSpriteGfx_GoldStars, 0x00c0, ANIM_TAG_GOLD_STARS}, - {gBattleAnimSpriteGfx_EclipsingOrb, 0x0800, ANIM_TAG_ECLIPSING_ORB}, - {gBattleAnimSpriteGfx_GrayOrb, 0x0060, ANIM_TAG_GRAY_ORB}, - {gBattleAnimSpriteGfx_GrayOrb, 0x0060, ANIM_TAG_BLUE_ORB}, - {gBattleAnimSpriteGfx_GrayOrb, 0x0060, ANIM_TAG_RED_ORB_2}, - {gBattleAnimSpriteGfx_PinkPetal, 0x0080, ANIM_TAG_PINK_PETAL}, - {gBattleAnimSpriteGfx_PainSplit, 0x0180, ANIM_TAG_PAIN_SPLIT}, - {gBattleAnimSpriteGfx_Confetti, 0x0180, ANIM_TAG_CONFETTI}, - {gBattleAnimSpriteGfx_GreenStar, 0x0200, ANIM_TAG_GREEN_STAR}, - {gBattleAnimSpriteGfx_PinkCloud, 0x0200, ANIM_TAG_PINK_CLOUD}, - {gBattleAnimSpriteGfx_SweatDrop, 0x0020, ANIM_TAG_SWEAT_DROP}, - {gBattleAnimSpriteGfx_GuardRing, 0x0400, ANIM_TAG_GUARD_RING}, - {gBattleAnimSpriteGfx_PurpleScratch, 0x0600, ANIM_TAG_PURPLE_SCRATCH}, - {gBattleAnimSpriteGfx_PurpleSwipe, 0x1000, ANIM_TAG_PURPLE_SWIPE}, - {gBattleAnimSpriteGfx_TagHand, 0x0400, ANIM_TAG_TAG_HAND}, - {gBattleAnimSpriteGfx_SmallRedEye, 0x0020, ANIM_TAG_SMALL_RED_EYE}, - {gBattleAnimSpriteGfx_HollowOrb, 0x0080, ANIM_TAG_HOLLOW_ORB}, - {gBattleAnimSpriteGfx_XSign, 0x0800, ANIM_TAG_X_SIGN}, - {gBattleAnimSpriteGfx_BluegreenOrb, 0x0080, ANIM_TAG_BLUEGREEN_ORB}, - {gBattleAnimSpriteGfx_PawPrint, 0x0200, ANIM_TAG_PAW_PRINT}, - {gBattleAnimSpriteGfx_PurpleFlame, 0x0400, ANIM_TAG_PURPLE_FLAME}, - {gBattleAnimSpriteGfx_RedBall, 0x0200, ANIM_TAG_RED_BALL}, - {gBattleAnimSpriteGfx_SmellingsaltEffect, 0x0200, ANIM_TAG_SMELLINGSALT_EFFECT}, - {gBattleAnimSpriteGfx_Meteor, 0x0800, ANIM_TAG_METEOR}, - {gBattleAnimSpriteGfx_FlatRock, 0x0280, ANIM_TAG_FLAT_ROCK}, - {gBattleAnimSpriteGfx_MagnifyingGlass, 0x0200, ANIM_TAG_MAGNIFYING_GLASS}, - {gBattleAnimSpriteGfx_WaterOrb, 0x0200, ANIM_TAG_BROWN_ORB}, - {gBattleAnimSpriteGfx_MetalSoundWaves, 0x0400, ANIM_TAG_METAL_SOUND_WAVES}, - {gBattleAnimSpriteGfx_FlyingDirt, 0x0200, ANIM_TAG_FLYING_DIRT}, - {gBattleAnimSpriteGfx_IcicleSpear, 0x0200, ANIM_TAG_ICICLE_SPEAR}, - {gBattleAnimSpriteGfx_Hail, 0x0080, ANIM_TAG_HAIL}, - {gBattleAnimSpriteGfx_GlowyRedOrb, 0x0020, ANIM_TAG_GLOWY_RED_ORB}, - {gBattleAnimSpriteGfx_GlowyRedOrb, 0x0020, ANIM_TAG_GLOWY_GREEN_ORB}, - {gBattleAnimSpriteGfx_GreenSpike, 0x0080, ANIM_TAG_GREEN_SPIKE}, - {gBattleAnimSpriteGfx_CircleOfLight, 0x0800, ANIM_TAG_WHITE_CIRCLE_OF_LIGHT}, - {gBattleAnimSpriteGfx_GlowyRedOrb, 0x0020, ANIM_TAG_GLOWY_BLUE_ORB}, - {gBattleAnimSpriteGfx_SafariBait, 0x0080, ANIM_TAG_SAFARI_BAIT}, - {gBattleAnimSpriteGfx_WhiteFeather, 0x0400, ANIM_TAG_WHITE_FEATHER}, - {gBattleAnimSpriteGfx_Sparkle6, 0x0080, ANIM_TAG_SPARKLE_6}, - {gBattleAnimSpriteGfx_Splash, 0x0800, ANIM_TAG_SPLASH}, - {gBattleAnimSpriteGfx_SweatBead, 0x0020, ANIM_TAG_SWEAT_BEAD}, - {gBattleAnimSpriteGfx_Gem1, 0x0800, ANIM_TAG_GEM_1}, - {gBattleAnimSpriteGfx_Gem2, 0x0800, ANIM_TAG_GEM_2}, - {gBattleAnimSpriteGfx_Gem3, 0x0800, ANIM_TAG_GEM_3}, - {gBattleAnimSpriteGfx_SlamHit2, 0x1000, ANIM_TAG_SLAM_HIT_2}, - {gBattleAnimSpriteGfx_Recycle, 0x0800, ANIM_TAG_RECYCLE}, - {gBattleAnimSpriteGfx_RedParticles, 0x00a0, ANIM_TAG_RED_PARTICLES}, - {gBattleAnimSpriteGfx_Protect, 0x0800, ANIM_TAG_PROTECT}, - {gBattleAnimSpriteGfx_DirtMound, 0x0200, ANIM_TAG_DIRT_MOUND}, - {gBattleAnimSpriteGfx_Shock3, 0x0600, ANIM_TAG_SHOCK_3}, - {gBattleAnimSpriteGfx_WeatherBall, 0x0200, ANIM_TAG_WEATHER_BALL}, - {gBattleAnimSpriteGfx_Bird, 0x0800, ANIM_TAG_BIRD}, - {gBattleAnimSpriteGfx_CrossImpact, 0x0200, ANIM_TAG_CROSS_IMPACT}, - {gBattleAnimSpriteGfx_Slash, 0x0800, ANIM_TAG_SLASH_2}, - {gBattleAnimSpriteGfx_SlamHit, 0x1000, ANIM_TAG_WHIP_HIT}, - {gBattleAnimSpriteGfx_GoldRing, 0x0100, ANIM_TAG_BLUE_RING_2}, -}; - -const struct CompressedSpritePalette gBattleAnimPaletteTable[] = -{ - {gBattleAnimSpritePal_Bone, ANIM_TAG_BONE}, - {gBattleAnimSpritePal_Spark, ANIM_TAG_SPARK}, - {gBattleAnimSpritePal_Pencil, ANIM_TAG_PENCIL}, - {gBattleAnimSpritePal_AirWave, ANIM_TAG_AIR_WAVE}, - {gBattleAnimSpritePal_Orb, ANIM_TAG_ORB}, - {gBattleAnimSpritePal_Sword, ANIM_TAG_SWORD}, - {gBattleAnimSpritePal_Seed, ANIM_TAG_SEED}, - {gBattleAnimSpritePal_Explosion6, ANIM_TAG_EXPLOSION_6}, - {gBattleAnimSpritePal_PinkOrb, ANIM_TAG_PINK_ORB}, - {gBattleAnimSpritePal_Gust, ANIM_TAG_GUST}, - {gBattleAnimSpritePal_IceCube, ANIM_TAG_ICE_CUBE}, - {gBattleAnimSpritePal_Spark2, ANIM_TAG_SPARK_2}, - {gBattleAnimSpritePal_Orange, ANIM_TAG_ORANGE}, - {gBattleAnimSpritePal_YellowBall, ANIM_TAG_YELLOW_BALL}, - {gBattleAnimSpritePal_LockOn, ANIM_TAG_LOCK_ON}, - {gBattleAnimSpritePal_TiedBag, ANIM_TAG_TIED_BAG}, - {gBattleAnimSpritePal_BlackSmoke, ANIM_TAG_BLACK_SMOKE}, - {gBattleAnimSpritePal_BlackSmoke, ANIM_TAG_BLACK_BALL}, - {gBattleAnimSpritePal_Conversion, ANIM_TAG_CONVERSION}, - {gBattleAnimSpritePal_Glass, ANIM_TAG_GLASS}, - {gBattleAnimSpritePal_HornHit, ANIM_TAG_HORN_HIT}, - {gBattleAnimSpritePal_Hit, ANIM_TAG_HIT}, - {gBattleAnimSpritePal_Hit2, ANIM_TAG_HIT_2}, - {gBattleAnimSpritePal_BlueShards, ANIM_TAG_BLUE_SHARDS}, - {gBattleAnimSpritePal_ClosingEye, ANIM_TAG_CLOSING_EYE}, - {gBattleAnimSpritePal_WavingHand, ANIM_TAG_WAVING_HAND}, - {gBattleAnimSpritePal_HitDuplicate, ANIM_TAG_HIT_DUPLICATE}, - {gBattleAnimSpritePal_Leer, ANIM_TAG_LEER}, - {gBattleAnimSpritePal_BlueBurst, ANIM_TAG_BLUE_BURST}, - {gBattleAnimSpritePal_SmallEmber, ANIM_TAG_SMALL_EMBER}, - {gBattleAnimSpritePal_GraySmoke, ANIM_TAG_GRAY_SMOKE}, - {gBattleAnimSpritePal_BlueStar, ANIM_TAG_BLUE_STAR}, - {gBattleAnimSpritePal_BubbleBurst, ANIM_TAG_BUBBLE_BURST}, - {gBattleAnimSpritePal_Fire, ANIM_TAG_FIRE}, - {gBattleAnimSpritePal_Fire, ANIM_TAG_SPINNING_FIRE}, - {gBattleAnimSpritePal_Fire, ANIM_TAG_FIRE_PLUME}, - {gBattleAnimSpritePal_Lightning2, ANIM_TAG_LIGHTNING_2}, - {gBattleAnimSpritePal_Lightning2, ANIM_TAG_LIGHTNING}, - {gBattleAnimSpritePal_ClawSlash2, ANIM_TAG_CLAW_SLASH_2}, - {gBattleAnimSpritePal_ClawSlash, ANIM_TAG_CLAW_SLASH}, - {gBattleAnimSpritePal_ClawSlash2, ANIM_TAG_SCRATCH_3}, - {gBattleAnimSpritePal_ClawSlash2, ANIM_TAG_SCRATCH_2}, - {gBattleAnimSpritePal_BubbleBurst2, ANIM_TAG_BUBBLE_BURST_2}, - {gBattleAnimSpritePal_IceChunk, ANIM_TAG_ICE_CHUNK}, - {gBattleAnimSpritePal_Glass2, ANIM_TAG_GLASS_2}, - {gBattleAnimSpritePal_PinkHeart2, ANIM_TAG_PINK_HEART_2}, - {gBattleAnimSpritePal_SapDrip, ANIM_TAG_SAP_DRIP}, - {gBattleAnimSpritePal_SapDrip2, ANIM_TAG_SAP_DRIP}, - {gBattleAnimSpritePal_Sparkle1, ANIM_TAG_SPARKLE_1}, - {gBattleAnimSpritePal_Sparkle2, ANIM_TAG_SPARKLE_2}, - {gBattleAnimSpritePal_HumanoidFoot, ANIM_TAG_HUMANOID_FOOT}, - {gBattleAnimSpritePal_HumanoidFoot, ANIM_TAG_MONSTER_FOOT}, - {gBattleAnimSpritePal_HumanoidFoot, ANIM_TAG_HUMANOID_HAND}, - {gBattleAnimSpritePal_HitDuplicate, ANIM_TAG_NOISE_LINE}, - {gBattleAnimSpritePal_YellowUnk, ANIM_TAG_YELLOW_UNK}, - {gBattleAnimSpritePal_HumanoidFoot, ANIM_TAG_RED_FIST}, - {gBattleAnimSpritePal_SlamHit, ANIM_TAG_SLAM_HIT}, - {gBattleAnimSpritePal_Ring, ANIM_TAG_RING}, - {gBattleAnimSpritePal_Rocks, ANIM_TAG_ROCKS}, - {gBattleAnimSpritePal_Z, ANIM_TAG_Z}, - {gBattleAnimSpritePal_YellowUnk2, ANIM_TAG_YELLOW_UNK_2}, - {gBattleAnimSpritePal_AirSlash, ANIM_TAG_AIR_SLASH}, - {gBattleAnimSpritePal_SpinningGreenOrbs, ANIM_TAG_SPINNING_GREEN_ORBS}, - {gBattleAnimSpritePal_Leaf, ANIM_TAG_LEAF}, - {gBattleAnimSpritePal_Finger, ANIM_TAG_FINGER}, - {gBattleAnimSpritePal_PoisonPowder, ANIM_TAG_POISON_POWDER}, - {gBattleAnimSpritePal_BrownTriangle, ANIM_TAG_BROWN_TRIANGLE}, - {gBattleAnimSpritePal_SleepPowder, ANIM_TAG_SLEEP_POWDER}, - {gBattleAnimSpritePal_StunSpore, ANIM_TAG_STUN_SPORE}, - {gBattleAnimSpritePal_PoisonPowder, ANIM_TAG_POWDER}, - {gBattleAnimSpritePal_Sparkle3, ANIM_TAG_SPARKLE_3}, - {gBattleAnimSpritePal_Sparkle3, ANIM_TAG_SPARKLE_4}, - {gBattleAnimSpritePal_MusicNotes, ANIM_TAG_MUSIC_NOTES}, - {gBattleAnimSpritePal_Duck, ANIM_TAG_DUCK}, - {gBattleAnimSpritePal_MudSand, ANIM_TAG_MUD_SAND}, - {gBattleAnimSpritePal_Alert, ANIM_TAG_ALERT}, - {gBattleAnimSpritePal_BlueFlames, ANIM_TAG_BLUE_FLAMES}, - {gBattleAnimSpritePal_BlueFlames, ANIM_TAG_BLUE_FLAMES_2}, - {gBattleAnimSpritePal_Shock4, ANIM_TAG_SHOCK_4}, - {gBattleAnimSpritePal_Shock4, ANIM_TAG_SHOCK}, - {gBattleAnimSpritePal_Bell2, ANIM_TAG_BELL_2}, - {gBattleAnimSpritePal_PinkGlove, ANIM_TAG_PINK_GLOVE}, - {gBattleAnimSpritePal_BlueLines, ANIM_TAG_BLUE_LINES}, - {gBattleAnimSpritePal_Impact3, ANIM_TAG_IMPACT_3}, - {gBattleAnimSpritePal_Impact2, ANIM_TAG_IMPACT_2}, - {gBattleAnimSpritePal_Reticle, ANIM_TAG_RETICLE}, - {gBattleAnimSpritePal_Breath, ANIM_TAG_BREATH}, - {gBattleAnimSpritePal_Anger, ANIM_TAG_ANGER}, - {gBattleAnimSpritePal_Snowball, ANIM_TAG_SNOWBALL}, - {gBattleAnimSpritePal_Vine, ANIM_TAG_VINE}, - {gBattleAnimSpritePal_Sword2, ANIM_TAG_SWORD_2}, - {gBattleAnimSpritePal_Clapping, ANIM_TAG_CLAPPING}, - {gBattleAnimSpritePal_RedTube, ANIM_TAG_RED_TUBE}, - {gBattleAnimSpritePal_Amnesia, ANIM_TAG_AMNESIA}, - {gBattleAnimSpritePal_String2, ANIM_TAG_STRING_2}, - {gBattleAnimSpritePal_Pencil2, ANIM_TAG_PENCIL_2}, - {gBattleAnimSpritePal_Petal, ANIM_TAG_PETAL}, - {gBattleAnimSpritePal_BentSpoon, ANIM_TAG_BENT_SPOON}, - {gBattleAnimSpritePal_String2, ANIM_TAG_WEB}, - {gBattleAnimSpritePal_MilkBottle, ANIM_TAG_MILK_BOTTLE}, - {gBattleAnimSpritePal_Coin, ANIM_TAG_COIN}, - {gBattleAnimSpritePal_CrackedEgg, ANIM_TAG_CRACKED_EGG}, - {gBattleAnimSpritePal_CrackedEgg, ANIM_TAG_HATCHED_EGG}, - {gBattleAnimSpritePal_FreshEgg, ANIM_TAG_FRESH_EGG}, - {gBattleAnimSpritePal_Fangs, ANIM_TAG_FANGS}, - {gBattleAnimSpritePal_Explosion2, ANIM_TAG_EXPLOSION_2}, - {gBattleAnimSpritePal_Explosion2, ANIM_TAG_EXPLOSION_3}, - {gBattleAnimSpritePal_WaterDroplet, ANIM_TAG_WATER_DROPLET}, - {gBattleAnimSpritePal_WaterDroplet, ANIM_TAG_WATER_DROPLET_2}, - {gBattleAnimSpritePal_Seed2, ANIM_TAG_SEED_2}, - {gBattleAnimSpritePal_Seed2, ANIM_TAG_SPROUT}, - {gBattleAnimSpritePal_RedWand, ANIM_TAG_RED_WAND}, - {gBattleAnimSpritePal_PurpleGreenUnk, ANIM_TAG_PURPLE_GREEN_UNK}, - {gBattleAnimSpritePal_WaterColumn, ANIM_TAG_WATER_COLUMN}, - {gBattleAnimSpritePal_MudUnk, ANIM_TAG_MUD_UNK}, - {gBattleAnimSpritePal_RainDrops, ANIM_TAG_RAIN_DROPS}, - {gBattleAnimSpritePal_FurySwipes, ANIM_TAG_FURY_SWIPES}, - {gBattleAnimSpritePal_Vine2, ANIM_TAG_VINE_2}, - {gBattleAnimSpritePal_Teeth, ANIM_TAG_TEETH}, - {gBattleAnimSpritePal_Bone2, ANIM_TAG_BONE_2}, - {gBattleAnimSpritePal_WhiteBag, ANIM_TAG_WHITE_BAG}, - {gBattleAnimSpritePal_Unknown, ANIM_TAG_UNKNOWN}, - {gBattleAnimSpritePal_PurpleCoral, ANIM_TAG_PURPLE_CORAL}, - {gBattleAnimSpritePal_PurpleCoral, ANIM_TAG_PURPLE_DROPLET}, - {gBattleAnimSpritePal_Shock2, ANIM_TAG_SHOCK_2}, - {gBattleAnimSpritePal_ClosingEye2, ANIM_TAG_CLOSING_EYE_2}, - {gBattleAnimSpritePal_MetalBall, ANIM_TAG_METAL_BALL}, - {gBattleAnimSpritePal_MonsterDoll, ANIM_TAG_MONSTER_DOLL}, - {gBattleAnimSpritePal_Whirlwind, ANIM_TAG_WHIRLWIND}, - {gBattleAnimSpritePal_Whirlwind, ANIM_TAG_WHIRLWIND_2}, - {gBattleAnimSpritePal_Explosion4, ANIM_TAG_EXPLOSION_4}, - {gBattleAnimSpritePal_Explosion4, ANIM_TAG_EXPLOSION_5}, - {gBattleAnimSpritePal_Tongue, ANIM_TAG_TONGUE}, - {gBattleAnimSpritePal_Smoke, ANIM_TAG_SMOKE}, - {gBattleAnimSpritePal_Smoke, ANIM_TAG_SMOKE_2}, - {gBattleAnimSpritePal_Impact, ANIM_TAG_IMPACT}, - {gBattleAnimSpritePal_CircleImpact, ANIM_TAG_CIRCLE_IMPACT}, - {gBattleAnimSpritePal_Impact, ANIM_TAG_SCRATCH}, - {gBattleAnimSpritePal_Impact, ANIM_TAG_CUT}, - {gBattleAnimSpritePal_SharpTeeth, ANIM_TAG_SHARP_TEETH}, - {gBattleAnimSpritePal_RainbowRings, ANIM_TAG_RAINBOW_RINGS}, - {gBattleAnimSpritePal_IceCrystals, ANIM_TAG_ICE_CRYSTALS}, - {gBattleAnimSpritePal_IceCrystals, ANIM_TAG_ICE_SPIKES}, - {gBattleAnimSpritePal_HandsAndFeet, ANIM_TAG_HANDS_AND_FEET}, - {gBattleAnimSpritePal_MistCloud, ANIM_TAG_MIST_CLOUD}, - {gBattleAnimSpritePal_SharpTeeth, ANIM_TAG_CLAMP}, - {gBattleAnimSpritePal_RainDrops, ANIM_TAG_BUBBLE}, - {gBattleAnimSpritePal_Orbs, ANIM_TAG_ORBS}, - {gBattleAnimSpritePal_WaterImpact, ANIM_TAG_WATER_IMPACT}, - {gBattleAnimSpritePal_WaterImpact, ANIM_TAG_WATER_ORB}, - {gBattleAnimSpritePal_PoisonBubble, ANIM_TAG_POISON_BUBBLE}, - {gBattleAnimSpritePal_PoisonBubble, ANIM_TAG_TOXIC_BUBBLE}, - {gBattleAnimSpritePal_Spikes, ANIM_TAG_SPIKES}, - {gBattleAnimSpritePal_HornHit2, ANIM_TAG_HORN_HIT_2}, - {gBattleAnimSpritePal_AirWave2, ANIM_TAG_AIR_WAVE_2}, - {gBattleAnimSpritePal_SmallBubbles, ANIM_TAG_SMALL_BUBBLES}, - {gBattleAnimSpritePal_RoundShadow, ANIM_TAG_ROUND_SHADOW}, - {gBattleAnimSpritePal_Sunlight, ANIM_TAG_SUNLIGHT}, - {gBattleAnimSpritePal_Spore, ANIM_TAG_SPORE}, - {gBattleAnimSpritePal_Flower, ANIM_TAG_FLOWER}, - {gBattleAnimSpritePal_RazorLeaf, ANIM_TAG_RAZOR_LEAF}, - {gBattleAnimSpritePal_Needle, ANIM_TAG_NEEDLE}, - {gBattleAnimSpritePal_WhirlwindLines, ANIM_TAG_WHIRLWIND_LINES}, - {gBattleAnimSpritePal_GoldRing, ANIM_TAG_GOLD_RING}, - {gBattleAnimSpritePal_PurpleRing, ANIM_TAG_PURPLE_RING}, - {gBattleAnimSpritePal_BlueRing, ANIM_TAG_BLUE_RING}, - {gBattleAnimSpritePal_GreenLightWall, ANIM_TAG_GREEN_LIGHT_WALL}, - {gBattleAnimSpritePal_BlueLightWall, ANIM_TAG_BLUE_LIGHT_WALL}, - {gBattleAnimSpritePal_RedLightWall, ANIM_TAG_RED_LIGHT_WALL}, - {gBattleAnimSpritePal_GrayLightWall, ANIM_TAG_GRAY_LIGHT_WALL}, - {gBattleAnimSpritePal_OrangeLightWall, ANIM_TAG_ORANGE_LIGHT_WALL}, - {gBattleAnimSpritePal_BlackBall2, ANIM_TAG_BLACK_BALL_2}, - {gBattleAnimSpritePal_PurpleGasCloud, ANIM_TAG_PURPLE_GAS_CLOUD}, - {gBattleAnimSpritePal_Spark, ANIM_TAG_SPARK_H}, - {gBattleAnimSpritePal_YellowStar, ANIM_TAG_YELLOW_STAR}, - {gBattleAnimSpritePal_LargeFreshEgg, ANIM_TAG_LARGE_FRESH_EGG}, - {gBattleAnimSpritePal_ShadowBall, ANIM_TAG_SHADOW_BALL}, - {gBattleAnimSpritePal_Lick, ANIM_TAG_LICK}, - {gBattleAnimSpritePal_VoidLines, ANIM_TAG_VOID_LINES}, - {gBattleAnimSpritePal_String, ANIM_TAG_STRING}, - {gBattleAnimSpritePal_String, ANIM_TAG_WEB_THREAD}, - {gBattleAnimSpritePal_String, ANIM_TAG_SPIDER_WEB}, - {gBattleAnimSpritePal_Lightbulb, ANIM_TAG_LIGHTBULB}, - {gBattleAnimSpritePal_Slash, ANIM_TAG_SLASH}, - {gBattleAnimSpritePal_FocusEnergy, ANIM_TAG_FOCUS_ENERGY}, - {gBattleAnimSpritePal_SphereToCube, ANIM_TAG_SPHERE_TO_CUBE}, - {gBattleAnimSpritePal_Tendrils, ANIM_TAG_TENDRILS}, - {gBattleAnimSpritePal_Eye, ANIM_TAG_EYE}, - {gBattleAnimSpritePal_WhiteShadow, ANIM_TAG_WHITE_SHADOW}, - {gBattleAnimSpritePal_TealAlert, ANIM_TAG_TEAL_ALERT}, - {gBattleAnimSpritePal_OpeningEye, ANIM_TAG_OPENING_EYE}, - {gBattleAnimSpritePal_RoundWhiteHalo, ANIM_TAG_ROUND_WHITE_HALO}, - {gBattleAnimSpritePal_FangAttack, ANIM_TAG_FANG_ATTACK}, - {gBattleAnimSpritePal_PurpleHandOutline, ANIM_TAG_PURPLE_HAND_OUTLINE}, - {gBattleAnimSpritePal_Moon, ANIM_TAG_MOON}, - {gBattleAnimSpritePal_GreenSparkle, ANIM_TAG_GREEN_SPARKLE}, - {gBattleAnimSpritePal_Spiral, ANIM_TAG_SPIRAL}, - {gBattleAnimSpritePal_SnoreZ, ANIM_TAG_SNORE_Z}, - {gBattleAnimSpritePal_Explosion, ANIM_TAG_EXPLOSION}, - {gBattleAnimSpritePal_Nail, ANIM_TAG_NAIL}, - {gBattleAnimSpritePal_GhostlySpirit, ANIM_TAG_GHOSTLY_SPIRIT}, - {gBattleAnimSpritePal_WarmRock, ANIM_TAG_WARM_ROCK}, - {gBattleAnimSpritePal_BreakingEgg, ANIM_TAG_BREAKING_EGG}, - {gBattleAnimSpritePal_ThinRing, ANIM_TAG_THIN_RING}, - {gBattleAnimSpritePal_PunchImpact, ANIM_TAG_PUNCH_IMPACT}, - {gBattleAnimSpritePal_Bell, ANIM_TAG_BELL}, - {gBattleAnimSpritePal_MusicNotes2, ANIM_TAG_MUSIC_NOTES_2}, - {gBattleAnimSpritePal_SpeedDust, ANIM_TAG_SPEED_DUST}, - {gBattleAnimSpritePal_BlueLightWall, ANIM_TAG_TORN_METAL}, - {gBattleAnimSpritePal_ThoughtBubble, ANIM_TAG_THOUGHT_BUBBLE}, - {gBattleAnimSpritePal_MagentaHeart, ANIM_TAG_MAGENTA_HEART}, - {gBattleAnimSpritePal_ElectricOrbs, ANIM_TAG_ELECTRIC_ORBS}, - {gBattleAnimSpritePal_ElectricOrbs, ANIM_TAG_CIRCLE_OF_LIGHT}, - {gBattleAnimSpritePal_ElectricOrbs, ANIM_TAG_ELECTRICITY}, - {gBattleAnimSpritePal_Finger, ANIM_TAG_FINGER_2}, - {gBattleAnimSpritePal_MovementWaves, ANIM_TAG_MOVEMENT_WAVES}, - {gBattleAnimSpritePal_RedHeart, ANIM_TAG_RED_HEART}, - {gBattleAnimSpritePal_RedOrb, ANIM_TAG_RED_ORB}, - {gBattleAnimSpritePal_EyeSparkle, ANIM_TAG_EYE_SPARKLE}, - {gBattleAnimSpritePal_PinkHeart, ANIM_TAG_PINK_HEART}, - {gBattleAnimSpritePal_Angel, ANIM_TAG_ANGEL}, - {gBattleAnimSpritePal_Devil, ANIM_TAG_DEVIL}, - {gBattleAnimSpritePal_Swipe, ANIM_TAG_SWIPE}, - {gBattleAnimSpritePal_Roots, ANIM_TAG_ROOTS}, - {gBattleAnimSpritePal_ItemBag, ANIM_TAG_ITEM_BAG}, - {gBattleAnimSpritePal_JaggedMusicNote, ANIM_TAG_JAGGED_MUSIC_NOTE}, - {gBattleAnimSpritePal_Pokeball, ANIM_TAG_POKEBALL}, - {gBattleAnimSpritePal_Pokeball, ANIM_TAG_SPOTLIGHT}, - {gBattleAnimSpritePal_LetterZ, ANIM_TAG_LETTER_Z}, - {gBattleAnimSpritePal_RapidSpin, ANIM_TAG_RAPID_SPIN}, - {gBattleAnimSpritePal_TriForceTriangle, ANIM_TAG_TRI_FORCE_TRIANGLE}, - {gBattleAnimSpritePal_WispOrb, ANIM_TAG_WISP_ORB}, - {gBattleAnimSpritePal_WispOrb, ANIM_TAG_WISP_FIRE}, - {gBattleAnimSpritePal_GoldStars, ANIM_TAG_GOLD_STARS}, - {gBattleAnimSpritePal_EclipsingOrb, ANIM_TAG_ECLIPSING_ORB}, - {gBattleAnimSpritePal_GrayOrb, ANIM_TAG_GRAY_ORB}, - {gBattleAnimSpritePal_BlueOrb, ANIM_TAG_BLUE_ORB}, - {gBattleAnimSpritePal_RedOrb2, ANIM_TAG_RED_ORB_2}, - {gBattleAnimSpritePal_PinkPetal, ANIM_TAG_PINK_PETAL}, - {gBattleAnimSpritePal_PainSplit, ANIM_TAG_PAIN_SPLIT}, - {gBattleAnimSpritePal_Confetti, ANIM_TAG_CONFETTI}, - {gBattleAnimSpritePal_GreenStar, ANIM_TAG_GREEN_STAR}, - {gBattleAnimSpritePal_PinkCloud, ANIM_TAG_PINK_CLOUD}, - {gBattleAnimSpritePal_SweatDrop, ANIM_TAG_SWEAT_DROP}, - {gBattleAnimSpritePal_GuardRing, ANIM_TAG_GUARD_RING}, - {gBattleAnimSpritePal_PurpleScratch, ANIM_TAG_PURPLE_SCRATCH}, - {gBattleAnimSpritePal_PurpleScratch, ANIM_TAG_PURPLE_SWIPE}, - {gBattleAnimSpritePal_Finger, ANIM_TAG_TAG_HAND}, - {gBattleAnimSpritePal_SmallRedEye, ANIM_TAG_SMALL_RED_EYE}, - {gBattleAnimSpritePal_HollowOrb, ANIM_TAG_HOLLOW_ORB}, - {gBattleAnimSpritePal_HollowOrb, ANIM_TAG_X_SIGN}, - {gBattleAnimSpritePal_BluegreenOrb, ANIM_TAG_BLUEGREEN_ORB}, - {gBattleAnimSpritePal_PawPrint, ANIM_TAG_PAW_PRINT}, - {gBattleAnimSpritePal_PurpleFlame, ANIM_TAG_PURPLE_FLAME}, - {gBattleAnimSpritePal_RedBall, ANIM_TAG_RED_BALL}, - {gBattleAnimSpritePal_SmellingsaltEffect, ANIM_TAG_SMELLINGSALT_EFFECT}, - {gBattleAnimSpritePal_Meteor, ANIM_TAG_METEOR}, - {gBattleAnimSpritePal_FlatRock, ANIM_TAG_FLAT_ROCK}, - {gBattleAnimSpritePal_MagnifyingGlass, ANIM_TAG_MAGNIFYING_GLASS}, - {gBattleAnimSpritePal_BrownOrb, ANIM_TAG_BROWN_ORB}, - {gBattleAnimSpritePal_MetalSoundWaves, ANIM_TAG_METAL_SOUND_WAVES}, - {gBattleAnimSpritePal_FlyingDirt, ANIM_TAG_FLYING_DIRT}, - {gBattleAnimSpritePal_IcicleSpear, ANIM_TAG_ICICLE_SPEAR}, - {gBattleAnimSpritePal_Hail, ANIM_TAG_HAIL}, - {gBattleAnimSpritePal_GlowyRedOrb, ANIM_TAG_GLOWY_RED_ORB}, - {gBattleAnimSpritePal_GlowyGreenOrb, ANIM_TAG_GLOWY_GREEN_ORB}, - {gBattleAnimSpritePal_GreenSpike, ANIM_TAG_GREEN_SPIKE}, - {gBattleAnimSpritePal_WhiteCircleOfLight, ANIM_TAG_WHITE_CIRCLE_OF_LIGHT}, - {gBattleAnimSpritePal_GlowyBlueOrb, ANIM_TAG_GLOWY_BLUE_ORB}, - {gBattleAnimSpritePal_SafariBait, ANIM_TAG_SAFARI_BAIT}, - {gBattleAnimSpritePal_WhiteFeather, ANIM_TAG_WHITE_FEATHER}, - {gBattleAnimSpritePal_Sparkle6, ANIM_TAG_SPARKLE_6}, - {gBattleAnimSpritePal_Splash, ANIM_TAG_SPLASH}, - {gBattleAnimSpritePal_Splash, ANIM_TAG_SWEAT_BEAD}, - {gBattleAnimSpritePal_Gem1, ANIM_TAG_GEM_1}, - {gBattleAnimSpritePal_Gem1, ANIM_TAG_GEM_2}, - {gBattleAnimSpritePal_Gem1, ANIM_TAG_GEM_3}, - {gBattleAnimSpritePal_SlamHit2, ANIM_TAG_SLAM_HIT_2}, - {gBattleAnimSpritePal_Recycle, ANIM_TAG_RECYCLE}, - {gBattleAnimSpritePal_RedParticles, ANIM_TAG_RED_PARTICLES}, - {gBattleAnimSpritePal_Protect, ANIM_TAG_PROTECT}, - {gBattleAnimSpritePal_DirtMound, ANIM_TAG_DIRT_MOUND}, - {gBattleAnimSpritePal_Shock3, ANIM_TAG_SHOCK_3}, - {gBattleAnimSpritePal_WeatherBall, ANIM_TAG_WEATHER_BALL}, - {gBattleAnimSpritePal_Bird, ANIM_TAG_BIRD}, - {gBattleAnimSpritePal_CrossImpact, ANIM_TAG_CROSS_IMPACT}, - {gBattleAnimSpritePal_Slash2, ANIM_TAG_SLASH_2}, - {gBattleAnimSpritePal_WhipHit, ANIM_TAG_WHIP_HIT}, - {gBattleAnimSpritePal_BlueRing2, ANIM_TAG_BLUE_RING_2}, -}; - -const struct BattleAnimBackground gBattleAnimBackgroundTable[] = -{ - [BG_DARK_] = {gBattleAnimBgImage_Dark, gBattleAnimBgPalette_Dark, gBattleAnimBgTilemap_Dark}, - [BG_DARK] = {gBattleAnimBgImage_Dark, gBattleAnimBgPalette_Dark, gBattleAnimBgTilemap_Dark}, - [BG_GHOST] = {gBattleAnimBgImage_Ghost, gBattleAnimBgPalette_Ghost, gBattleAnimBgTilemap_Ghost}, - [BG_PSYCHIC] = {gBattleAnimBgImage_Psychic, gBattleAnimBgPalette_Psychic, gBattleAnimBgTilemap_Psychic}, - [BG_IMPACT_OPPONENT] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_Impact, gBattleAnimBgTilemap_ImpactOpponent}, - [BG_IMPACT_PLAYER] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_Impact, gBattleAnimBgTilemap_ImpactPlayer}, - [BG_IMPACT_CONTESTS] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_Impact, gBattleAnimBgTilemap_ImpactContests}, - [BG_DRILL] = {gBattleAnimBgImage_Drill, gBattleAnimBgPalette_Drill, gBattleAnimBgTilemap_Drill}, - [BG_DRILL_CONTESTS] = {gBattleAnimBgImage_Drill, gBattleAnimBgPalette_Drill, gBattleAnimBgTilemap_DrillContests}, - [BG_HIGHSPEED_OPPONENT] = {gBattleAnimBgImage_Highspeed, gBattleAnimBgPalette_Highspeed, gBattleAnimBgTilemap_HighspeedOpponent}, - [BG_HIGHSPEED_PLAYER] = {gBattleAnimBgImage_Highspeed, gBattleAnimBgPalette_Highspeed, gBattleAnimBgTilemap_HighspeedPlayer}, - [BG_THUNDER] = {gBattleAnimBgImage_Thunder, gBattleAnimBgPalette_Thunder, gBattleAnimBgTilemap_Thunder}, - [BG_GUILLOTINE_OPPONENT] = {gBattleAnimBgImage_Guillotine, gBattleAnimBgPalette_Guillotine, gBattleAnimBgTilemap_GuillotineOpponent}, - [BG_GUILLOTINE_PLAYER] = {gBattleAnimBgImage_Guillotine, gBattleAnimBgPalette_Guillotine, gBattleAnimBgTilemap_GuillotinePlayer}, - [BG_GUILLOTINE_CONTESTS] = {gBattleAnimBgImage_Guillotine, gBattleAnimBgPalette_Guillotine, gBattleAnimBgTilemap_GuillotineContests}, - [BG_ICE] = {gBattleAnimBgImage_Ice, gBattleAnimBgPalette_Ice, gBattleAnimBgTilemap_Ice}, - [BG_COSMIC] = {gBattleAnimBgImage_Cosmic, gBattleAnimBgPalette_Cosmic, gBattleAnimBgTilemap_Cosmic}, - [BG_IN_AIR] = {gBattleAnimBgImage_InAir, gBattleAnimBgPalette_InAir, gBattleAnimBgTilemap_InAir}, - [BG_SKY] = {gBattleAnimBgImage_Drill, gBattleAnimBgPalette_Sky, gBattleAnimBgTilemap_Drill}, - [BG_SKY_CONTESTS] = {gBattleAnimBgImage_Drill, gBattleAnimBgPalette_Sky, gBattleAnimBgTilemap_DrillContests}, - [BG_AURORA] = {gBattleAnimBgImage_Aurora, gBattleAnimBgPalette_Aurora, gBattleAnimBgTilemap_Aurora}, - [BG_FISSURE] = {gBattleAnimBgImage_Fissure, gBattleAnimBgPalette_Fissure, gBattleAnimBgTilemap_Fissure}, - [BG_BUG_OPPONENT] = {gBattleAnimBgImage_Highspeed, gBattleAnimBgPalette_Bug, gBattleAnimBgTilemap_HighspeedOpponent}, - [BG_BUG_PLAYER] = {gBattleAnimBgImage_Highspeed, gBattleAnimBgPalette_Bug, gBattleAnimBgTilemap_HighspeedPlayer}, - [BG_SOLAR_BEAM_OPPONENT] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_SolarBeam, gBattleAnimBgTilemap_ImpactOpponent}, - [BG_SOLAR_BEAM_PLAYER] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_SolarBeam, gBattleAnimBgTilemap_ImpactPlayer}, - [BG_SOLAR_BEAM_CONTESTS] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_SolarBeam, gBattleAnimBgTilemap_ImpactContests}, -}; +static void Task_ClearMonBg(u8 taskId); + +static void Cmd_loadspritegfx(void); +static void Cmd_unloadspritegfx(void); +static void Cmd_createsprite(void); +static void Cmd_createvisualtask(void); +static void Cmd_delay(void); +static void Cmd_waitforvisualfinish(void); +static void Cmd_nop(void); +static void Cmd_nop2(void); +static void Cmd_end(void); +static void Cmd_playse(void); +static void Cmd_monbg(void); +static void Cmd_clearmonbg(void); +static void Cmd_setalpha(void); +static void Cmd_blendoff(void); +static void Cmd_call(void); +static void Cmd_return(void); +static void Cmd_setarg(void); +static void Cmd_choosetwoturnanim(void); +static void Cmd_jumpifmoveturn(void); +static void Cmd_goto(void); +static void Cmd_fadetobg(void); +static void Cmd_restorebg(void); +static void Cmd_waitbgfadeout(void); +static void Cmd_waitbgfadein(void); +static void Cmd_changebg(void); +static void Cmd_playsewithpan(void); +static void Cmd_setpan(void); +static void Cmd_panse(void); +static void Cmd_loopsewithpan(void); +static void Cmd_waitplaysewithpan(void); +static void Cmd_setbldcnt(void); +static void Cmd_createsoundtask(void); +static void Cmd_waitsound(void); +static void Cmd_jumpargeq(void); +static void Cmd_monbg_static(void); +static void Cmd_clearmonbg_static(void); +static void Cmd_jumpifcontest(void); +static void Cmd_fadetobgfromset(void); +static void Cmd_panse_adjustnone(void); +static void Cmd_panse_adjustall(void); +static void Cmd_splitbgprio(void); +static void Cmd_splitbgprio_all(void); +static void Cmd_splitbgprio_foes(void); +static void Cmd_invisible(void); +static void Cmd_visible(void); +static void Cmd_teamattack_moveback(void); +static void Cmd_teamattack_movefwd(void); +static void Cmd_stopsound(void); + +#include "data/battle_anim.h" static void (*const sScriptCmdTable[])(void) = { - ScriptCmd_loadspritegfx, - ScriptCmd_unloadspritegfx, - ScriptCmd_createsprite, - ScriptCmd_createvisualtask, - ScriptCmd_delay, - ScriptCmd_waitforvisualfinish, - ScriptCmd_hang1, - ScriptCmd_hang2, - ScriptCmd_end, - ScriptCmd_playse, - ScriptCmd_monbg, - ScriptCmd_clearmonbg, - ScriptCmd_setalpha, - ScriptCmd_blendoff, - ScriptCmd_call, - ScriptCmd_return, - ScriptCmd_setarg, - ScriptCmd_choosetwoturnanim, - ScriptCmd_jumpifmoveturn, - ScriptCmd_goto, - ScriptCmd_fadetobg, - ScriptCmd_restorebg, - ScriptCmd_waitbgfadeout, - ScriptCmd_waitbgfadein, - ScriptCmd_changebg, - ScriptCmd_playsewithpan, - ScriptCmd_setpan, - ScriptCmd_panse_1B, - ScriptCmd_loopsewithpan, - ScriptCmd_waitplaysewithpan, - ScriptCmd_setbldcnt, - ScriptCmd_createsoundtask, - ScriptCmd_waitsound, - ScriptCmd_jumpargeq, - ScriptCmd_monbg_22, - ScriptCmd_clearmonbg_23, - ScriptCmd_jumpifcontest, - ScriptCmd_fadetobgfromset, - ScriptCmd_panse_26, - ScriptCmd_panse_27, - ScriptCmd_monbgprio_28, - ScriptCmd_monbgprio_29, - ScriptCmd_monbgprio_2A, - ScriptCmd_invisible, - ScriptCmd_visible, - ScriptCmd_doublebattle_2D, - ScriptCmd_doublebattle_2E, - ScriptCmd_stopsound + Cmd_loadspritegfx, // 0x00 + Cmd_unloadspritegfx, // 0x01 + Cmd_createsprite, // 0x02 + Cmd_createvisualtask, // 0x03 + Cmd_delay, // 0x04 + Cmd_waitforvisualfinish, // 0x05 + Cmd_nop, // 0x06 + Cmd_nop2, // 0x07 + Cmd_end, // 0x08 + Cmd_playse, // 0x09 + Cmd_monbg, // 0x0A + Cmd_clearmonbg, // 0x0B + Cmd_setalpha, // 0x0C + Cmd_blendoff, // 0x0D + Cmd_call, // 0x0E + Cmd_return, // 0x0F + Cmd_setarg, // 0x10 + Cmd_choosetwoturnanim, // 0x11 + Cmd_jumpifmoveturn, // 0x12 + Cmd_goto, // 0x13 + Cmd_fadetobg, // 0x14 + Cmd_restorebg, // 0x15 + Cmd_waitbgfadeout, // 0x16 + Cmd_waitbgfadein, // 0x17 + Cmd_changebg, // 0x18 + Cmd_playsewithpan, // 0x19 + Cmd_setpan, // 0x1A + Cmd_panse, // 0x1B + Cmd_loopsewithpan, // 0x1C + Cmd_waitplaysewithpan, // 0x1D + Cmd_setbldcnt, // 0x1E + Cmd_createsoundtask, // 0x1F + Cmd_waitsound, // 0x20 + Cmd_jumpargeq, // 0x21 + Cmd_monbg_static, // 0x22 + Cmd_clearmonbg_static, // 0x23 + Cmd_jumpifcontest, // 0x24 + Cmd_fadetobgfromset, // 0x25 + Cmd_panse_adjustnone, // 0x26 + Cmd_panse_adjustall, // 0x27 + Cmd_splitbgprio, // 0x28 + Cmd_splitbgprio_all, // 0x29 + Cmd_splitbgprio_foes, // 0x2A + Cmd_invisible, // 0x2B + Cmd_visible, // 0x2C + Cmd_teamattack_moveback, // 0x2D + Cmd_teamattack_movefwd, // 0x2E + Cmd_stopsound, // 0x2F }; -// Functions void ClearBattleAnimationVars(void) { s32 i; @@ -1802,14 +180,14 @@ void ClearBattleAnimationVars(void) for (i = 0; i < ANIM_ARGS_COUNT; i++) gBattleAnimArgs[i] = 0; - sMonAnimTaskIdArray[0] = 0xFF; - sMonAnimTaskIdArray[1] = (s8)0xFF; + sMonAnimTaskIdArray[0] = TASK_NONE; + sMonAnimTaskIdArray[1] = TASK_NONE; gAnimMoveTurn = 0; sAnimBackgroundFadeState = 0; sAnimMoveIndex = 0; gBattleAnimAttacker = 0; gBattleAnimTarget = 0; - gUnknown_2037F24 = 0; + gAnimCustomPanning = 0; } void DoMoveAnim(u16 move) @@ -1823,7 +201,7 @@ void LaunchBattleAnimation(const u8 *const animsTable[], u16 tableId, bool8 isMo { s32 i; - ResetSpritePriorityOfAllVisibleBattlers(); + InitPrioritiesForVisibleBattlers(); UpdateOamPriorityInAllHealthboxes(0); for (i = 0; i < MAX_BATTLERS_COUNT; i++) { @@ -1841,8 +219,8 @@ void LaunchBattleAnimation(const u8 *const animsTable[], u16 tableId, bool8 isMo for (i = 0; i < ANIM_ARGS_COUNT; i++) gBattleAnimArgs[i] = 0; - sMonAnimTaskIdArray[0] = 0xFF; - sMonAnimTaskIdArray[1] = (s8)-1; + sMonAnimTaskIdArray[0] = TASK_NONE; + sMonAnimTaskIdArray[1] = TASK_NONE; sBattleAnimScriptPtr = animsTable[tableId]; gAnimScriptActive = TRUE; sAnimFramesToWait = 0; @@ -1937,7 +315,7 @@ static void RunAnimScriptCommand(void) } while (sAnimFramesToWait == 0 && gAnimScriptActive); } -static void ScriptCmd_loadspritegfx(void) +static void Cmd_loadspritegfx(void) { u16 index; @@ -1951,7 +329,7 @@ static void ScriptCmd_loadspritegfx(void) gAnimScriptCallback = WaitAnimFrameCount; } -static void ScriptCmd_unloadspritegfx(void) +static void Cmd_unloadspritegfx(void) { u16 index; @@ -1968,7 +346,7 @@ static void ScriptCmd_unloadspritegfx(void) // flags: // - bits 0-6: subpriority mod (signed) // - bit 7: target if set else attacker -static void ScriptCmd_createsprite(void) +static void Cmd_createsprite(void) { s32 i; const struct SpriteTemplate *template; @@ -1991,11 +369,11 @@ static void ScriptCmd_createsprite(void) sBattleAnimScriptPtr += 2; } - if (argVar & 0x80) + if (argVar & ANIMSPRITE_IS_TARGET) { - argVar ^= 0x80; - if (argVar >= 0x40) - argVar -= 0x40; + argVar ^= ANIMSPRITE_IS_TARGET; + if (argVar >= 64) + argVar -= 64; else argVar *= -1; @@ -2003,8 +381,8 @@ static void ScriptCmd_createsprite(void) } else { - if (argVar >= 0x40) - argVar -= 0x40; + if (argVar >= 64) + argVar -= 64; else argVar *= -1; @@ -2022,7 +400,7 @@ static void ScriptCmd_createsprite(void) gAnimVisualTaskCount++; } -static void ScriptCmd_createvisualtask(void) +static void Cmd_createvisualtask(void) { TaskFunc taskFunc; u8 taskPriority; @@ -2052,7 +430,7 @@ static void ScriptCmd_createvisualtask(void) gAnimVisualTaskCount++; } -static void ScriptCmd_delay(void) +static void Cmd_delay(void) { sBattleAnimScriptPtr++; sAnimFramesToWait = sBattleAnimScriptPtr[0]; @@ -2062,7 +440,7 @@ static void ScriptCmd_delay(void) gAnimScriptCallback = WaitAnimFrameCount; } -static void ScriptCmd_waitforvisualfinish(void) +static void Cmd_waitforvisualfinish(void) { if (gAnimVisualTaskCount == 0) { @@ -2075,22 +453,22 @@ static void ScriptCmd_waitforvisualfinish(void) } } -static void ScriptCmd_hang1(void) +static void Cmd_nop(void) { } -static void ScriptCmd_hang2(void) +static void Cmd_nop2(void) { } -static void ScriptCmd_end(void) +static void Cmd_end(void) { s32 i; bool32 continuousAnim = FALSE; // Keep waiting as long as there are animations to be done. if (gAnimVisualTaskCount != 0 || gAnimSoundTaskCount != 0 - || sMonAnimTaskIdArray[0] != 0xFF || sMonAnimTaskIdArray[1] != 0xFF) + || sMonAnimTaskIdArray[0] != TASK_NONE || sMonAnimTaskIdArray[1] != TASK_NONE) { sSoundAnimFramesToWait = 0; sAnimFramesToWait = 1; @@ -2128,13 +506,13 @@ static void ScriptCmd_end(void) if (!continuousAnim) { m4aMPlayVolumeControl(&gMPlayInfo_BGM, TRACKS_ALL, 256); - ResetSpritePriorityOfAllVisibleBattlers(); + InitPrioritiesForVisibleBattlers(); UpdateOamPriorityInAllHealthboxes(1); gAnimScriptActive = FALSE; } } -static void ScriptCmd_playse(void) +static void Cmd_playse(void) { sBattleAnimScriptPtr++; PlaySE(T1_READ_16(sBattleAnimScriptPtr)); @@ -2150,7 +528,7 @@ static void ScriptCmd_playse(void) #define t2_MON_IN_BG2 5 #define t2_MONBG_BATTLER 6 -static void ScriptCmd_monbg(void) +static void Cmd_monbg(void) { bool8 toBG_2; u8 taskId; @@ -2171,6 +549,7 @@ static void ScriptCmd_monbg(void) else battlerId = gBattleAnimTarget; + // Move designated battler to background if (IsBattlerSpriteVisible(battlerId)) { position = GetBattlerPosition(battlerId); @@ -2181,7 +560,7 @@ static void ScriptCmd_monbg(void) MoveBattlerSpriteToBG(battlerId, toBG_2); spriteId = gBattlerSpriteIds[battlerId]; - taskId = CreateTask(task_pA_ma0A_obj_to_bg_pal, 10); + taskId = CreateTask(Task_InitUpdateMonBg, 10); gTasks[taskId].data[t1_MONBG_BATTLER] = spriteId; gTasks[taskId].data[1] = gSprites[spriteId].x + gSprites[spriteId].x2; gTasks[taskId].data[2] = gSprites[spriteId].y + gSprites[spriteId].y2; @@ -2212,7 +591,7 @@ static void ScriptCmd_monbg(void) MoveBattlerSpriteToBG(battlerId, toBG_2); spriteId = gBattlerSpriteIds[battlerId]; - taskId = CreateTask(task_pA_ma0A_obj_to_bg_pal, 10); + taskId = CreateTask(Task_InitUpdateMonBg, 10); gTasks[taskId].data[t1_MONBG_BATTLER] = spriteId; gTasks[taskId].data[1] = gSprites[spriteId].x + gSprites[spriteId].x2; gTasks[taskId].data[2] = gSprites[spriteId].y + gSprites[spriteId].y2; @@ -2346,7 +725,7 @@ void ResetBattleAnimBg(bool8 to_BG2) } } -static void task_pA_ma0A_obj_to_bg_pal(u8 taskId) +static void Task_InitUpdateMonBg(u8 taskId) { u8 spriteId, palIndex; s16 x, y; @@ -2382,7 +761,7 @@ static void task_pA_ma0A_obj_to_bg_pal(u8 taskId) } } -static void ScriptCmd_clearmonbg(void) +static void Cmd_clearmonbg(void) { u8 animBattlerId; u8 battlerId; @@ -2400,21 +779,21 @@ static void ScriptCmd_clearmonbg(void) else battlerId = gBattleAnimTarget; - if (sMonAnimTaskIdArray[0] != 0xFF) + if (sMonAnimTaskIdArray[0] != TASK_NONE) gSprites[gBattlerSpriteIds[battlerId]].invisible = FALSE; - if (animBattlerId > ANIM_TARGET && sMonAnimTaskIdArray[1] != 0xFF) + if (animBattlerId > ANIM_TARGET && sMonAnimTaskIdArray[1] != TASK_NONE) gSprites[gBattlerSpriteIds[battlerId ^ BIT_FLANK]].invisible = FALSE; else animBattlerId = ANIM_ATTACKER; - taskId = CreateTask(sub_807331C, 5); + taskId = CreateTask(Task_ClearMonBg, 5); gTasks[taskId].data[0] = animBattlerId; gTasks[taskId].data[2] = battlerId; sBattleAnimScriptPtr++; } -static void sub_807331C(u8 taskId) +static void Task_ClearMonBg(u8 taskId) { u8 toBG_2; u8 position; @@ -2428,23 +807,24 @@ static void sub_807331C(u8 taskId) else toBG_2 = TRUE; - if (sMonAnimTaskIdArray[0] != 0xFF) + if (sMonAnimTaskIdArray[0] != TASK_NONE) { ResetBattleAnimBg(toBG_2); DestroyTask(sMonAnimTaskIdArray[0]); - sMonAnimTaskIdArray[0] = 0xFF; + sMonAnimTaskIdArray[0] = TASK_NONE; } if (gTasks[taskId].data[0] > 1) { ResetBattleAnimBg(toBG_2 ^ 1); DestroyTask(sMonAnimTaskIdArray[1]); - sMonAnimTaskIdArray[1] = 0xFF; + sMonAnimTaskIdArray[1] = TASK_NONE; } DestroyTask(taskId); } } -static void ScriptCmd_monbg_22(void) +// Equivalent to Cmd_monbg but never creates Task_InitUpdateMonBg / Task_UpdateMonBg +static void Cmd_monbg_static(void) { bool8 toBG_2; u8 battlerId; @@ -2491,7 +871,7 @@ static void ScriptCmd_monbg_22(void) sBattleAnimScriptPtr++; } -static void ScriptCmd_clearmonbg_23(void) +static void Cmd_clearmonbg_static(void) { u8 animBattlerId; u8 battlerId; @@ -2517,14 +897,14 @@ static void ScriptCmd_clearmonbg_23(void) else animBattlerId = ANIM_ATTACKER; - taskId = CreateTask(sub_8073558, 5); + taskId = CreateTask(Task_ClearMonBgStatic, 5); gTasks[taskId].data[0] = animBattlerId; gTasks[taskId].data[2] = battlerId; sBattleAnimScriptPtr++; } -static void sub_8073558(u8 taskId) +static void Task_ClearMonBgStatic(u8 taskId) { bool8 to_BG2; u8 position; @@ -2560,7 +940,7 @@ static void sub_8073558(u8 taskId) #undef t2_MON_IN_BG2 #undef t2_MONBG_BATTLER -static void ScriptCmd_setalpha(void) +static void Cmd_setalpha(void) { u16 half1, half2; @@ -2571,7 +951,7 @@ static void ScriptCmd_setalpha(void) SetGpuReg(REG_OFFSET_BLDALPHA, half1 | half2); } -static void ScriptCmd_setbldcnt(void) +static void Cmd_setbldcnt(void) { u16 half1, half2; @@ -2581,26 +961,26 @@ static void ScriptCmd_setbldcnt(void) SetGpuReg(REG_OFFSET_BLDCNT, half1 | half2); } -static void ScriptCmd_blendoff(void) +static void Cmd_blendoff(void) { sBattleAnimScriptPtr++; SetGpuReg(REG_OFFSET_BLDCNT, 0); SetGpuReg(REG_OFFSET_BLDALPHA, 0); } -static void ScriptCmd_call(void) +static void Cmd_call(void) { sBattleAnimScriptPtr++; sBattleAnimScriptRetAddr = sBattleAnimScriptPtr + 4; sBattleAnimScriptPtr = T2_READ_PTR(sBattleAnimScriptPtr); } -static void ScriptCmd_return(void) +static void Cmd_return(void) { sBattleAnimScriptPtr = sBattleAnimScriptRetAddr; } -static void ScriptCmd_setarg(void) +static void Cmd_setarg(void) { const u8 *addr = sBattleAnimScriptPtr; u16 value; @@ -2614,7 +994,7 @@ static void ScriptCmd_setarg(void) gBattleAnimArgs[argId] = value; } -static void ScriptCmd_choosetwoturnanim(void) +static void Cmd_choosetwoturnanim(void) { sBattleAnimScriptPtr++; if (gAnimMoveTurn & 1) @@ -2622,7 +1002,7 @@ static void ScriptCmd_choosetwoturnanim(void) sBattleAnimScriptPtr = T2_READ_PTR(sBattleAnimScriptPtr); } -static void ScriptCmd_jumpifmoveturn(void) +static void Cmd_jumpifmoveturn(void) { u8 toCheck; @@ -2636,7 +1016,7 @@ static void ScriptCmd_jumpifmoveturn(void) sBattleAnimScriptPtr += 4; } -static void ScriptCmd_goto(void) +static void Cmd_goto(void) { sBattleAnimScriptPtr++; sBattleAnimScriptPtr = T2_READ_PTR(sBattleAnimScriptPtr); @@ -2648,9 +1028,9 @@ bool8 IsContest(void) } // Unused -static bool8 sub_807378C(u16 a) +static bool8 IsSpeciesNotUnown(u16 species) { - if (a == 0xC9) + if (species == SPECIES_UNOWN) return FALSE; else return TRUE; @@ -2659,7 +1039,7 @@ static bool8 sub_807378C(u16 a) #define tBackgroundId data[0] #define tState data[10] -static void ScriptCmd_fadetobg(void) +static void Cmd_fadetobg(void) { u8 backgroundId; u8 taskId; @@ -2672,7 +1052,7 @@ static void ScriptCmd_fadetobg(void) sAnimBackgroundFadeState = 1; } -static void ScriptCmd_fadetobgfromset(void) +static void Cmd_fadetobgfromset(void) { u8 bg1, bg2, bg3; u8 taskId; @@ -2741,7 +1121,7 @@ static void LoadDefaultBg(void) DrawMainBattleBackground(); } -static void ScriptCmd_restorebg(void) +static void Cmd_restorebg(void) { u8 taskId; @@ -2754,7 +1134,7 @@ static void ScriptCmd_restorebg(void) #undef tBackgroundId #undef tState -static void ScriptCmd_waitbgfadeout(void) +static void Cmd_waitbgfadeout(void) { if (sAnimBackgroundFadeState == 2) { @@ -2767,7 +1147,7 @@ static void ScriptCmd_waitbgfadeout(void) } } -static void ScriptCmd_waitbgfadein(void) +static void Cmd_waitbgfadein(void) { if (sAnimBackgroundFadeState == 0) { @@ -2780,7 +1160,7 @@ static void ScriptCmd_waitbgfadein(void) } } -static void ScriptCmd_changebg(void) +static void Cmd_changebg(void) { sBattleAnimScriptPtr++; LoadMoveBg(sBattleAnimScriptPtr[0]); @@ -2867,7 +1247,7 @@ s16 CalculatePanIncrement(s16 sourcePan, s16 targetPan, s16 incrementPan) return ret; } -static void ScriptCmd_playsewithpan(void) +static void Cmd_playsewithpan(void) { u16 songId; s8 pan; @@ -2879,7 +1259,7 @@ static void ScriptCmd_playsewithpan(void) sBattleAnimScriptPtr += 3; } -static void ScriptCmd_setpan(void) +static void Cmd_setpan(void) { s8 pan; @@ -2896,7 +1276,7 @@ static void ScriptCmd_setpan(void) #define tCurrentPan data[4] #define tFrameCounter data[8] -static void ScriptCmd_panse_1B(void) +static void Cmd_panse(void) { u16 songNum; s8 currentPanArg, incrementPan, incrementPanArg, currentPan, targetPan; @@ -2968,7 +1348,7 @@ static void Task_PanFromInitialToTarget(u8 taskId) } } -static void ScriptCmd_panse_26(void) +static void Cmd_panse_adjustnone(void) { u16 songId; s8 currentPan, targetPan, incrementPan; @@ -2995,7 +1375,7 @@ static void ScriptCmd_panse_26(void) sBattleAnimScriptPtr += 6; } -static void ScriptCmd_panse_27(void) +static void Cmd_panse_adjustall(void) { u16 songId; s8 targetPanArg, incrementPanArg, currentPanArg, currentPan, targetPan, incrementPan; @@ -3039,7 +1419,7 @@ static void ScriptCmd_panse_27(void) #define tNumberOfPlays data[3] #define tFrameCounter data[8] -static void ScriptCmd_loopsewithpan(void) +static void Cmd_loopsewithpan(void) { u16 songId; s8 panningArg, panning; @@ -3096,7 +1476,7 @@ static void Task_LoopAndPlaySE(u8 taskId) #define tPanning data[1] #define tFramesToWait data[2] -static void ScriptCmd_waitplaysewithpan(void) +static void Cmd_waitplaysewithpan(void) { u16 songId; s8 panningArg, panning; @@ -3132,7 +1512,7 @@ static void Task_WaitAndPlaySE(u8 taskId) #undef tPanning #undef tFramesToWait -static void ScriptCmd_createsoundtask(void) +static void Cmd_createsoundtask(void) { TaskFunc func; u8 numArgs, taskId; @@ -3153,7 +1533,7 @@ static void ScriptCmd_createsoundtask(void) gAnimSoundTaskCount++; } -static void ScriptCmd_waitsound(void) +static void Cmd_waitsound(void) { if (gAnimSoundTaskCount != 0) { @@ -3181,7 +1561,7 @@ static void ScriptCmd_waitsound(void) } } -static void ScriptCmd_jumpargeq(void) +static void Cmd_jumpargeq(void) { u8 argId; s16 valueToCheck; @@ -3196,12 +1576,12 @@ static void ScriptCmd_jumpargeq(void) sBattleAnimScriptPtr += 7; } -static void ScriptCmd_jumpifcontest(void) +static void Cmd_jumpifcontest(void) { sBattleAnimScriptPtr += 5; } -static void ScriptCmd_monbgprio_28(void) +static void Cmd_splitbgprio(void) { u8 wantedBattler; u8 battlerId; @@ -3215,6 +1595,7 @@ static void ScriptCmd_monbgprio_28(void) else battlerId = gBattleAnimAttacker; + // Apply only if the given battler is the lead (on left from team's perspective) battlerPosition = GetBattlerPosition(battlerId); if (battlerPosition == B_POSITION_PLAYER_LEFT || battlerPosition == B_POSITION_OPPONENT_RIGHT) { @@ -3223,14 +1604,14 @@ static void ScriptCmd_monbgprio_28(void) } } -static void ScriptCmd_monbgprio_29(void) +static void Cmd_splitbgprio_all(void) { sBattleAnimScriptPtr++; SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1); SetAnimBgAttribute(2, BG_ANIM_PRIORITY, 2); } -static void ScriptCmd_monbgprio_2A(void) +static void Cmd_splitbgprio_foes(void) { u8 wantedBattler; u8 battlerPosition; @@ -3238,6 +1619,8 @@ static void ScriptCmd_monbgprio_2A(void) wantedBattler = sBattleAnimScriptPtr[1]; sBattleAnimScriptPtr += 2; + + // Apply only if the attacking the opposing side if (GetBattlerSide(gBattleAnimAttacker) != GetBattlerSide(gBattleAnimTarget)) { if (wantedBattler != ANIM_ATTACKER) @@ -3245,6 +1628,7 @@ static void ScriptCmd_monbgprio_2A(void) else battlerId = gBattleAnimAttacker; + // Apply only if the given battler is the lead (on left from team's perspective) battlerPosition = GetBattlerPosition(battlerId); if (battlerPosition == B_POSITION_PLAYER_LEFT || battlerPosition == B_POSITION_OPPONENT_RIGHT) { @@ -3254,29 +1638,30 @@ static void ScriptCmd_monbgprio_2A(void) } } -static void ScriptCmd_invisible(void) +static void Cmd_invisible(void) { u8 spriteId; spriteId = GetAnimBattlerSpriteId(sBattleAnimScriptPtr[1]); - if (spriteId != 0xFF) + if (spriteId != SPRITE_NONE) gSprites[spriteId].invisible = TRUE; sBattleAnimScriptPtr += 2; } -static void ScriptCmd_visible(void) +static void Cmd_visible(void) { u8 spriteId; spriteId = GetAnimBattlerSpriteId(sBattleAnimScriptPtr[1]); - if (spriteId != 0xFF) + if (spriteId != SPRITE_NONE) gSprites[spriteId].invisible = FALSE; sBattleAnimScriptPtr += 2; } -static void ScriptCmd_doublebattle_2D(void) +// Below two commands are never used +static void Cmd_teamattack_moveback(void) { u8 wantedBattler; u8 priority; @@ -3284,6 +1669,8 @@ static void ScriptCmd_doublebattle_2D(void) wantedBattler = sBattleAnimScriptPtr[1]; sBattleAnimScriptPtr += 2; + + // Apply to double battles when attacking own side if (IsDoubleBattle() && GetBattlerSide(gBattleAnimAttacker) == GetBattlerSide(gBattleAnimTarget)) { @@ -3297,7 +1684,7 @@ static void ScriptCmd_doublebattle_2D(void) priority = GetBattlerSpriteBGPriorityRank(gBattleAnimTarget); spriteId = GetAnimBattlerSpriteId(ANIM_TARGET); } - if (spriteId != 0xFF) + if (spriteId != SPRITE_NONE) { gSprites[spriteId].invisible = FALSE; if (priority == 2) @@ -3311,7 +1698,7 @@ static void ScriptCmd_doublebattle_2D(void) } } -static void ScriptCmd_doublebattle_2E(void) +static void Cmd_teamattack_movefwd(void) { u8 wantedBattler; u8 priority; @@ -3319,6 +1706,8 @@ static void ScriptCmd_doublebattle_2E(void) wantedBattler = sBattleAnimScriptPtr[1]; sBattleAnimScriptPtr += 2; + + // Apply to double battles when attacking own side if (IsDoubleBattle() && GetBattlerSide(gBattleAnimAttacker) == GetBattlerSide(gBattleAnimTarget)) { @@ -3333,12 +1722,12 @@ static void ScriptCmd_doublebattle_2E(void) spriteId = GetAnimBattlerSpriteId(ANIM_TARGET); } - if (spriteId != 0xFF && priority == 2) + if (spriteId != SPRITE_NONE && priority == 2) gSprites[spriteId].oam.priority = 2; } } -static void ScriptCmd_stopsound(void) +static void Cmd_stopsound(void) { m4aMPlayStop(&gMPlayInfo_SE1); m4aMPlayStop(&gMPlayInfo_SE2); diff --git a/src/bug.c b/src/battle_anim_bug.c similarity index 82% rename from src/bug.c rename to src/battle_anim_bug.c index 32d2f3b3f..15e94665b 100644 --- a/src/bug.c +++ b/src/battle_anim_bug.c @@ -6,16 +6,16 @@ static void AnimMegahornHorn(struct Sprite *sprite); static void AnimLeechLifeNeedle(struct Sprite *sprite); static void AnimTranslateWebThread(struct Sprite *sprite); +static void AnimTranslateWebThread_Step(struct Sprite *sprite); static void AnimStringWrap(struct Sprite *sprite); +static void AnimStringWrap_Step(struct Sprite *sprite); static void AnimSpiderWeb(struct Sprite *sprite); +static void AnimSpiderWeb_Step(struct Sprite *sprite); +static void AnimSpiderWeb_End(struct Sprite *sprite); static void AnimTranslateStinger(struct Sprite *sprite); static void AnimMissileArc(struct Sprite *sprite); +static void AnimMissileArc_Step(struct Sprite *sprite); static void AnimTailGlowOrb(struct Sprite *sprite); -static void sub_80B41C0(struct Sprite *sprite); -static void sub_80B4274(struct Sprite *sprite); -static void sub_80B42E8(struct Sprite *sprite); -static void sub_80B4344(struct Sprite *sprite); -static void AnimMissileArcStep(struct Sprite *sprite); static const union AffineAnimCmd sAffineAnim_MegahornHorn_0[] = { @@ -210,11 +210,11 @@ static void AnimMegahornHorn(struct Sprite *sprite) gBattleAnimArgs[3] = -gBattleAnimArgs[3]; gBattleAnimArgs[0] = -gBattleAnimArgs[0]; } - sprite->x = GetBattlerSpriteCoord2(gBattleAnimTarget, 2) + gBattleAnimArgs[0]; - sprite->y = GetBattlerSpriteCoord2(gBattleAnimTarget, 3) + gBattleAnimArgs[1]; + sprite->x = GetBattlerSpriteCoord2(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[0]; + sprite->y = GetBattlerSpriteCoord2(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[1]; sprite->data[0] = gBattleAnimArgs[4]; - sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2]; - sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3]; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2]; + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3]; sprite->callback = StartAnimLinearTranslation; StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); } @@ -231,11 +231,11 @@ static void AnimLeechLifeNeedle(struct Sprite *sprite) gBattleAnimArgs[1] = -gBattleAnimArgs[1]; gBattleAnimArgs[0] = -gBattleAnimArgs[0]; } - sprite->x = GetBattlerSpriteCoord2(gBattleAnimTarget, 2) + gBattleAnimArgs[0]; - sprite->y = GetBattlerSpriteCoord2(gBattleAnimTarget, 3) + gBattleAnimArgs[1]; + sprite->x = GetBattlerSpriteCoord2(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[0]; + sprite->y = GetBattlerSpriteCoord2(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[1]; sprite->data[0] = gBattleAnimArgs[2]; - sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2); - sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3); + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); sprite->callback = StartAnimLinearTranslation; StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); } @@ -257,19 +257,19 @@ static void AnimTranslateWebThread(struct Sprite *sprite) sprite->data[3] = sprite->y; if (!gBattleAnimArgs[4]) { - sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2); - sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3); + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); } else { SetAverageBattlerPositions(gBattleAnimTarget, 1, &sprite->data[2], &sprite->data[4]); } - BattleAnim_InitLinearTranslationWithDuration(sprite); + InitAnimLinearTranslationWithSpeed(sprite); sprite->data[5] = gBattleAnimArgs[3]; - sprite->callback = sub_80B41C0; + sprite->callback = AnimTranslateWebThread_Step; } -static void sub_80B41C0(struct Sprite *sprite) +static void AnimTranslateWebThread_Step(struct Sprite *sprite) { if (AnimTranslateLinear(sprite)) { @@ -290,10 +290,10 @@ static void AnimStringWrap(struct Sprite *sprite) sprite->y += gBattleAnimArgs[1]; if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) sprite->y += 8; - sprite->callback = sub_80B4274; + sprite->callback = AnimStringWrap_Step; } -static void sub_80B4274(struct Sprite *sprite) +static void AnimStringWrap_Step(struct Sprite *sprite) { if (++sprite->data[0] == 3) { @@ -311,10 +311,10 @@ static void AnimSpiderWeb(struct Sprite *sprite) SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND); SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 0)); sprite->data[0] = 16; - sprite->callback = sub_80B42E8; + sprite->callback = AnimSpiderWeb_Step; } -static void sub_80B42E8(struct Sprite *sprite) +static void AnimSpiderWeb_Step(struct Sprite *sprite) { if (sprite->data[2] < 20) { @@ -328,12 +328,12 @@ static void sub_80B42E8(struct Sprite *sprite) if (sprite->data[0] == 0) { sprite->invisible = TRUE; - sprite->callback = sub_80B4344; + sprite->callback = AnimSpiderWeb_End; } } } -static void sub_80B4344(struct Sprite *sprite) +static void AnimSpiderWeb_End(struct Sprite *sprite) { SetGpuReg(REG_OFFSET_BLDCNT, 0); SetGpuReg(REG_OFFSET_BLDALPHA, 0); @@ -377,8 +377,8 @@ static void AnimTranslateStinger(struct Sprite *sprite) } } InitSpritePosToAnimAttacker(sprite, 1); - lVarX = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2]; - lVarY = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3]; + lVarX = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2]; + lVarY = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3]; rot = ArcTan2Neg(lVarX - sprite->x, lVarY - sprite->y); rot += 0xC000; TrySetSpriteRotScale(sprite, FALSE, 0x100, 0x100, rot); @@ -402,15 +402,15 @@ static void AnimMissileArc(struct Sprite *sprite) if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; sprite->data[0] = gBattleAnimArgs[4]; - sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2]; - sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3]; + 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[5] = gBattleAnimArgs[5]; InitAnimArcTranslation(sprite); - sprite->callback = AnimMissileArcStep; + sprite->callback = AnimMissileArc_Step; sprite->invisible = TRUE; } -static void AnimMissileArcStep(struct Sprite *sprite) +static void AnimMissileArc_Step(struct Sprite *sprite) { sprite->invisible = FALSE; @@ -447,15 +447,15 @@ static void AnimMissileArcStep(struct Sprite *sprite) static void AnimTailGlowOrb(struct Sprite *sprite) { - if (gBattleAnimArgs[0] == 0) + if (gBattleAnimArgs[0] == ANIM_ATTACKER) { - sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); - sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + 18; + sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) + 18; } else { - sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 2); - sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + 18; + sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + 18; } StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); sprite->callback = RunStoredCallbackWhenAffineAnimEnds; diff --git a/src/dark.c b/src/battle_anim_dark.c similarity index 90% rename from src/dark.c rename to src/battle_anim_dark.c index 9b12555d9..39e19bda7 100644 --- a/src/dark.c +++ b/src/battle_anim_dark.c @@ -6,23 +6,24 @@ #include "trig.h" #include "util.h" -static void sub_80B7ACC(struct Sprite *sprite); +static void AnimUnusedBagSteal(struct Sprite *sprite); +static void AnimUnusedBagSteal_Step(struct Sprite *sprite); static void AnimBite(struct Sprite *sprite); static void AnimTearDrop(struct Sprite *sprite); static void AnimClawSlash(struct Sprite *sprite); static void AnimTask_AttackerFadeToInvisible_Step(u8 taskId); static void AnimTask_AttackerFadeFromInvisible_Step(u8 taskId); -static void sub_80B7B48(struct Sprite *sprite); -static void sub_80B7C10(struct Sprite *sprite); -static void sub_80B7C50(struct Sprite *sprite); -static void sub_80B7D88(struct Sprite *sprite); -static void sub_80B856C(u8 priority); -static void sub_80B7F58(u8 taskId); -static void sub_80B843C(struct Task *task); -static void sub_80B82C0(u8 taskId); -static void sub_80B8920(u8 taskId); +static void AnimBite_Step1(struct Sprite *sprite); +static void AnimBite_Step2(struct Sprite *sprite); +static void AnimTearDrop_Step(struct Sprite *sprite); +static void SetAllBattlersSpritePriority(u8 priority); +static void AnimTask_MoveAttackerMementoShadow_Step(u8 taskId); +static void DoMementoShadowEffect(struct Task *task); +static void AnimTask_MoveTargetMementoShadow_Step(u8 taskId); +static void AnimTask_MetallicShine_Step(u8 taskId); -const struct SpriteTemplate gUnknown_83E7878 = +// Unused +const struct SpriteTemplate sUnusedBagStealSpriteTemplate = { .tileTag = ANIM_TAG_TIED_BAG, .paletteTag = ANIM_TAG_TIED_BAG, @@ -30,7 +31,7 @@ const struct SpriteTemplate gUnknown_83E7878 = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80B7ACC, + .callback = AnimUnusedBagSteal, }; static const union AffineAnimCmd sAffineAnim_Bite_0[] = @@ -265,7 +266,7 @@ void AnimTask_InitAttackerFadeFromInvisible(u8 taskId) DestroyAnimVisualTask(taskId); } -static void sub_80B7ACC(struct Sprite *sprite) +static void AnimUnusedBagSteal(struct Sprite *sprite) { sprite->data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); @@ -276,11 +277,11 @@ static void sub_80B7ACC(struct Sprite *sprite) sprite->data[3] = -sprite->data[1]; sprite->data[4] = -sprite->data[2]; sprite->data[6] = 0xFFD8; - sprite->callback = sub_80B7B48; + sprite->callback = AnimUnusedBagSteal_Step; sprite->callback(sprite); } -static void sub_80B7B48(struct Sprite *sprite) +static void AnimUnusedBagSteal_Step(struct Sprite *sprite) { sprite->data[3] += sprite->data[1]; sprite->data[4] += sprite->data[2]; @@ -306,6 +307,7 @@ static void sub_80B7B48(struct Sprite *sprite) DestroyAnimSprite(sprite); } +// Move sprite inward for Bite/Crunch and Clamp static void AnimBite(struct Sprite *sprite) { sprite->x += gBattleAnimArgs[0]; @@ -314,20 +316,20 @@ static void AnimBite(struct Sprite *sprite) sprite->data[0] = gBattleAnimArgs[3]; sprite->data[1] = gBattleAnimArgs[4]; sprite->data[2] = gBattleAnimArgs[5]; - sprite->callback = sub_80B7C10; + sprite->callback = AnimBite_Step1; } -static void sub_80B7C10(struct Sprite *sprite) +static void AnimBite_Step1(struct Sprite *sprite) { sprite->data[4] += sprite->data[0]; sprite->data[5] += sprite->data[1]; sprite->x2 = sprite->data[4] >> 8; sprite->y2 = sprite->data[5] >> 8; if (++sprite->data[3] == sprite->data[2]) - sprite->callback = sub_80B7C50; + sprite->callback = AnimBite_Step2; } -static void sub_80B7C50(struct Sprite *sprite) +static void AnimBite_Step2(struct Sprite *sprite) { sprite->data[4] -= sprite->data[0]; sprite->data[5] -= sprite->data[1]; @@ -337,12 +339,13 @@ static void sub_80B7C50(struct Sprite *sprite) DestroySpriteAndMatrix(sprite); } +// Launches a tear drop away from the battler. Used by Fake Tears static void AnimTearDrop(struct Sprite *sprite) { u8 battler; s8 xOffset; - if (gBattleAnimArgs[0] == 0) + if (gBattleAnimArgs[0] == ANIM_ATTACKER) battler = gBattleAnimAttacker; else battler = gBattleAnimTarget; @@ -376,10 +379,10 @@ static void AnimTearDrop(struct Sprite *sprite) sprite->data[4] = sprite->y + 12; sprite->data[5] = -12; InitAnimArcTranslation(sprite); - sprite->callback = sub_80B7D88; + sprite->callback = AnimTearDrop_Step; } -static void sub_80B7D88(struct Sprite *sprite) +static void AnimTearDrop_Step(struct Sprite *sprite) { if (TranslateAnimHorizontalArc(sprite)) DestroySpriteAndMatrix(sprite); @@ -416,7 +419,7 @@ void AnimTask_MoveAttackerMementoShadow(u8 taskId) scanlineParams.dmaDest = ®_BG1VOFS; var0 = WINOUT_WIN01_BG1; if (!IsContest()) - gBattle_BG2_X += 240; + gBattle_BG2_X += DISPLAY_WIDTH; } else { @@ -426,7 +429,7 @@ void AnimTask_MoveAttackerMementoShadow(u8 taskId) scanlineParams.dmaDest = ®_BG2VOFS; var0 = WINOUT_WIN01_BG2; if (!IsContest()) - gBattle_BG1_X += 240; + gBattle_BG1_X += DISPLAY_WIDTH; } scanlineParams.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT; scanlineParams.initState = 1; @@ -436,7 +439,7 @@ void AnimTask_MoveAttackerMementoShadow(u8 taskId) task->data[0] = 0; task->data[1] = 0; task->data[2] = 0; - sub_80B856C(3); + SetAllBattlersSpritePriority(3); for (i = 0; i < 112; ++i) { gScanlineEffectRegBuffers[0][i] = task->data[10]; @@ -446,12 +449,12 @@ void AnimTask_MoveAttackerMementoShadow(u8 taskId) SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR | (var0 ^ (WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR))); SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR); gBattle_WIN0H = (task->data[14] << 8) | task->data[15]; - gBattle_WIN0V = 160; + gBattle_WIN0V = DISPLAY_HEIGHT; - task->func = sub_80B7F58; + task->func = AnimTask_MoveAttackerMementoShadow_Step; } -static void sub_80B7F58(u8 taskId) +static void AnimTask_MoveAttackerMementoShadow_Step(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -477,13 +480,13 @@ static void sub_80B7F58(u8 taskId) break; case 1: task->data[4] -= 8; - sub_80B843C(task); + DoMementoShadowEffect(task); if (task->data[4] < task->data[8]) ++task->data[0]; break; case 2: task->data[4] -= 8; - sub_80B843C(task); + DoMementoShadowEffect(task); task->data[14] += 4; task->data[15] -= 4; if (task->data[14] >= task->data[15]) @@ -527,12 +530,12 @@ void AnimTask_MoveTargetMementoShadow(u8 taskId) if (task->data[3] == 1) { SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND | BLDCNT_TGT1_BG1); - gBattle_BG2_X += 240; + gBattle_BG2_X += DISPLAY_WIDTH; } else { SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND | BLDCNT_TGT1_BG2); - gBattle_BG1_X += 240; + gBattle_BG1_X += DISPLAY_WIDTH; } ++task->data[0]; } @@ -549,7 +552,7 @@ void AnimTask_MoveTargetMementoShadow(u8 taskId) task->data[10] = gBattle_BG2_Y; FillPalette(RGB_BLACK, 9 * 16, 32); } - sub_80B856C(3); + SetAllBattlersSpritePriority(3); ++task->data[0]; break; case 2: @@ -592,17 +595,17 @@ void AnimTask_MoveTargetMementoShadow(u8 taskId) SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR | WINOUT_WIN01_BG0 | WINOUT_WIN01_BG1 | WINOUT_WIN01_BG3 | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR); SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR); gBattle_WIN0H = (task->data[14] << 8) | task->data[15]; - gBattle_WIN0V = 160; + gBattle_WIN0V = DISPLAY_HEIGHT; task->data[0] = 0; task->data[1] = 0; task->data[2] = 0; SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(12, 8)); - task->func = sub_80B82C0; + task->func = AnimTask_MoveTargetMementoShadow_Step; break; } } -static void sub_80B82C0(u8 taskId) +static void AnimTask_MoveTargetMementoShadow_Step(u8 taskId) { u8 pos; u16 i; @@ -614,7 +617,7 @@ static void sub_80B82C0(u8 taskId) task->data[5] += 8; if (task->data[5] >= task->data[7]) task->data[5] = task->data[7]; - sub_80B843C(task); + DoMementoShadowEffect(task); if (task->data[5] == task->data[7]) ++task->data[0]; break; @@ -632,7 +635,7 @@ static void sub_80B82C0(u8 taskId) task->data[4] += 8; if (task->data[4] >= task->data[6]) task->data[4] = task->data[6]; - sub_80B843C(task); + DoMementoShadowEffect(task); if (task->data[4] == task->data[6] && task->data[1]) { task->data[1] = 0; @@ -672,7 +675,7 @@ static void sub_80B82C0(u8 taskId) } } -static void sub_80B843C(struct Task *task) +static void DoMementoShadowEffect(struct Task *task) { s32 var0, var1, var4; s16 var2, i; @@ -711,15 +714,14 @@ static void sub_80B843C(struct Task *task) } } -static void sub_80B856C(u8 priority) +static void SetAllBattlersSpritePriority(u8 priority) { u16 i; for (i = 0; i < MAX_BATTLERS_COUNT; ++i) { u8 spriteId = GetAnimBattlerSpriteId(i); - - if (spriteId != 0xFF) + if (spriteId != SPRITE_NONE) gSprites[spriteId].oam.priority = priority; } } @@ -738,7 +740,7 @@ void AnimTask_InitMementoShadow(u8 taskId) DestroyAnimVisualTask(taskId); } -void sub_80B8664(u8 taskId) +void AnimTask_MementoHandleBg(u8 taskId) { bool8 toBG2 = GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker) ^ 1 ? TRUE : FALSE; @@ -748,6 +750,7 @@ void sub_80B8664(u8 taskId) DestroyAnimVisualTask(taskId); } +// Animates a deep slash from a claw. Used by Metal Claw, Dragon Claw, and Crush Claw static void AnimClawSlash(struct Sprite *sprite) { sprite->x += gBattleAnimArgs[0]; @@ -799,7 +802,7 @@ void AnimTask_MetallicShine(u8 taskId) else species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES); spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); - newSpriteId = CreateCloneOfSpriteInWindowMode(gBattleAnimAttacker, spriteId, species); + newSpriteId = CreateInvisibleSpriteCopy(gBattleAnimAttacker, spriteId, species); GetBattleAnimBg1Data(&animBg); AnimLoadCompressedBgTilemap(animBg.bgId, gMetalShineTilemap); AnimLoadCompressedBgGfx(animBg.bgId, gMetalShineGfx, animBg.tilesOffset); @@ -816,10 +819,10 @@ void AnimTask_MetallicShine(u8 taskId) gTasks[taskId].data[2] = gBattleAnimArgs[1]; gTasks[taskId].data[3] = gBattleAnimArgs[2]; gTasks[taskId].data[6] = priorityChanged; - gTasks[taskId].func = sub_80B8920; + gTasks[taskId].func = AnimTask_MetallicShine_Step; } -static void sub_80B8920(u8 taskId) +static void AnimTask_MetallicShine_Step(u8 taskId) { struct BattleAnimBgData animBg; u16 paletteNum; @@ -863,7 +866,7 @@ static void sub_80B8920(u8 taskId) // Changes battler's palette to either greyscale or original. // arg0: which battler // arg1: 0 grayscale, 1 original -void AnimTask_SetGreyscaleOrOriginalPal(u8 taskId) +void AnimTask_SetGrayscaleOrOriginalPal(u8 taskId) { u8 spriteId, battler; bool8 calcSpriteId = FALSE; @@ -871,10 +874,10 @@ void AnimTask_SetGreyscaleOrOriginalPal(u8 taskId) switch (gBattleAnimArgs[0]) { - case 0: - case 1: - case 2: - case 3: + case ANIM_ATTACKER: + case ANIM_TARGET: + case ANIM_ATK_PARTNER: + case ANIM_DEF_PARTNER: spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); break; case 4: @@ -894,7 +897,7 @@ void AnimTask_SetGreyscaleOrOriginalPal(u8 taskId) calcSpriteId = TRUE; break; default: - spriteId = 0xFF; + spriteId = SPRITE_NONE; break; } if (calcSpriteId) @@ -903,9 +906,9 @@ void AnimTask_SetGreyscaleOrOriginalPal(u8 taskId) if (IsBattlerSpriteVisible(battler)) spriteId = gBattlerSpriteIds[battler]; else - spriteId = 0xFF; + spriteId = SPRITE_NONE; } - if (spriteId != 0xFF) + if (spriteId != SPRITE_NONE) SetGreyscaleOrOriginalPalette(gSprites[spriteId].oam.paletteNum + 16, gBattleAnimArgs[1]); DestroyAnimVisualTask(taskId); } @@ -913,8 +916,8 @@ void AnimTask_SetGreyscaleOrOriginalPal(u8 taskId) void GetIsDoomDesireHitTurn(u8 taskId) { if (gAnimMoveTurn < 2) - gBattleAnimArgs[7] = 0; + gBattleAnimArgs[ARG_RET_ID] = FALSE; if (gAnimMoveTurn == 2) - gBattleAnimArgs[7] = 1; + gBattleAnimArgs[ARG_RET_ID] = TRUE; DestroyAnimVisualTask(taskId); } diff --git a/src/dragon.c b/src/battle_anim_dragon.c similarity index 77% rename from src/dragon.c rename to src/battle_anim_dragon.c index cef5d219d..6cdcdb4e1 100644 --- a/src/dragon.c +++ b/src/battle_anim_dragon.c @@ -4,19 +4,19 @@ #include "task.h" #include "trig.h" -static void sub_80B725C(struct Sprite *sprite); +static void AnimOutrageFlame(struct Sprite *sprite); static void AnimDragonFireToTarget(struct Sprite *sprite); static void AnimDragonRageFirePlume(struct Sprite *sprite); static void AnimDragonDanceOrb(struct Sprite *sprite); static void AnimOverheatFlame(struct Sprite *sprite); -static void sub_80B74D8(struct Sprite *sprite); -static void sub_80B76B0(u8 taskId); -static void sub_80B776C(struct Task *task); -static void sub_80B7894(struct Sprite *sprite); +static void AnimDragonDanceOrb_Step(struct Sprite *sprite); +static void AnimTask_DragonDanceWaver_Step(u8 taskId); +static void UpdateDragonDanceScanlineEffect(struct Task *task); +static void AnimOverheatFlame_Step(struct Sprite *sprite); -static EWRAM_DATA u16 gUnknown_20399A4[7] = {0}; +static EWRAM_DATA u16 sUnusedOverheatData[7] = {0}; -static const union AnimCmd gUnknown_83E7710[] = +static const union AnimCmd sAnim_OutrageOverheatFire_0[] = { ANIMCMD_FRAME(0, 4), ANIMCMD_FRAME(16, 4), @@ -26,9 +26,9 @@ static const union AnimCmd gUnknown_83E7710[] = ANIMCMD_JUMP(0), }; -static const union AnimCmd *const gUnknown_83E7728[] = +static const union AnimCmd *const sAnims_OutrageOverheatFire[] = { - gUnknown_83E7710, + sAnim_OutrageOverheatFire_0, }; const struct SpriteTemplate gOutrageFlameSpriteTemplate = @@ -36,10 +36,10 @@ const struct SpriteTemplate gOutrageFlameSpriteTemplate = .tileTag = ANIM_TAG_SMALL_EMBER, .paletteTag = ANIM_TAG_SMALL_EMBER, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = gUnknown_83E7728, + .anims = sAnims_OutrageOverheatFire, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80B725C, + .callback = AnimOutrageFlame, }; static const union AnimCmd sAnim_DragonBreathFire_0[] = @@ -180,16 +180,16 @@ const struct SpriteTemplate gOverheatFlameSpriteTemplate = .tileTag = ANIM_TAG_SMALL_EMBER, .paletteTag = ANIM_TAG_SMALL_EMBER, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = gUnknown_83E7728, + .anims = sAnims_OutrageOverheatFire, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimOverheatFlame, }; -static void sub_80B725C(struct Sprite *sprite) +static void AnimOutrageFlame(struct Sprite *sprite) { - sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); - sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); + sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) { sprite->x -= gBattleAnimArgs[0]; @@ -210,11 +210,11 @@ static void sub_80B725C(struct Sprite *sprite) sprite->callback = TranslateSpriteLinearAndFlicker; } -static void sub_80B72F8(struct Sprite *sprite) +static void StartDragonFireTranslation(struct Sprite *sprite) { SetSpriteCoordsToAnimAttackerCoords(sprite); - sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2); - sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3); + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) { sprite->x -= gBattleAnimArgs[1]; @@ -239,13 +239,13 @@ static void AnimDragonRageFirePlume(struct Sprite *sprite) { if (gBattleAnimArgs[0] == 0) { - sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0); - sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1); + sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X); + sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y); } else { - sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 0); - sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1); + sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X); + sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y); } SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[1]); sprite->y += gBattleAnimArgs[2]; @@ -253,11 +253,12 @@ static void AnimDragonRageFirePlume(struct Sprite *sprite) StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); } +// For Dragon Breath and Dragon Rage static void AnimDragonFireToTarget(struct Sprite *sprite) { if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) StartSpriteAffineAnim(sprite, 1); - sub_80B72F8(sprite); + StartDragonFireTranslation(sprite); } static void AnimDragonDanceOrb(struct Sprite *sprite) @@ -265,8 +266,8 @@ static void AnimDragonDanceOrb(struct Sprite *sprite) u16 r5; u16 r0; - sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); - sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); + sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); sprite->data[4] = 0; sprite->data[5] = 1; sprite->data[6] = gBattleAnimArgs[0]; @@ -278,10 +279,10 @@ static void AnimDragonDanceOrb(struct Sprite *sprite) sprite->data[7] = r0 / 2; sprite->x2 = Cos(sprite->data[6], sprite->data[7]); sprite->y2 = Sin(sprite->data[6], sprite->data[7]); - sprite->callback = sub_80B74D8; + sprite->callback = AnimDragonDanceOrb_Step; } -static void sub_80B74D8(struct Sprite *sprite) +static void AnimDragonDanceOrb_Step(struct Sprite *sprite) { switch (sprite->data[0]) { @@ -319,26 +320,28 @@ static void sub_80B74D8(struct Sprite *sprite) } } +// Wavers the attacker back and forth. Progressing vertical wave of scanline shifts +// Used by Dragon Dance void AnimTask_DragonDanceWaver(u8 taskId) { - struct ScanlineEffectParams sp; + struct ScanlineEffectParams scanlineParams; struct Task *task = &gTasks[taskId]; u16 i; u8 r1; if (GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker) == 1) { - sp.dmaDest = ®_BG1HOFS; + scanlineParams.dmaDest = ®_BG1HOFS; task->data[2] = gBattle_BG1_X; } else { - sp.dmaDest = ®_BG2HOFS; + scanlineParams.dmaDest = ®_BG2HOFS; task->data[2] = gBattle_BG2_X; } - sp.dmaControl = 0xA2600001; - sp.initState = 1; - sp.unused9 = 0; + scanlineParams.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT; + scanlineParams.initState = 1; + scanlineParams.unused9 = 0; r1 = GetBattlerYCoordWithElevation(gBattleAnimAttacker); task->data[3] = r1 - 32; task->data[4] = r1 + 32; @@ -349,11 +352,11 @@ void AnimTask_DragonDanceWaver(u8 taskId) gScanlineEffectRegBuffers[0][i] = task->data[2]; gScanlineEffectRegBuffers[1][i] = task->data[2]; } - ScanlineEffect_SetParams(sp); - task->func = sub_80B76B0; + ScanlineEffect_SetParams(scanlineParams); + task->func = AnimTask_DragonDanceWaver_Step; } -static void sub_80B76B0(u8 taskId) +static void AnimTask_DragonDanceWaver_Step(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -366,12 +369,12 @@ static void sub_80B76B0(u8 taskId) if (++task->data[6] == 3) ++task->data[0]; } - sub_80B776C(task); + UpdateDragonDanceScanlineEffect(task); break; case 1: if (++task->data[1] > 0x3C) ++task->data[0]; - sub_80B776C(task); + UpdateDragonDanceScanlineEffect(task); break; case 2: if (++task->data[7] > 1) @@ -380,7 +383,7 @@ static void sub_80B76B0(u8 taskId) if (--task->data[6] == 0) ++task->data[0]; } - sub_80B776C(task); + UpdateDragonDanceScanlineEffect(task); break; case 3: gScanlineEffect.state = 3; @@ -392,7 +395,7 @@ static void sub_80B76B0(u8 taskId) } } -static void sub_80B776C(struct Task *task) +static void UpdateDragonDanceScanlineEffect(struct Task *task) { u16 i, r3 = task->data[5]; @@ -406,21 +409,21 @@ static void sub_80B776C(struct Task *task) static void AnimOverheatFlame(struct Sprite *sprite) { - s32 i, r6 = (gBattleAnimArgs[2] * 3) / 5; + s32 i, yAmplitude = (gBattleAnimArgs[2] * 3) / 5; - sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); - sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[4]; + sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[4]; sprite->data[1] = Cos(gBattleAnimArgs[1], gBattleAnimArgs[2]); - sprite->data[2] = Sin(gBattleAnimArgs[1], r6); + sprite->data[2] = Sin(gBattleAnimArgs[1], yAmplitude); sprite->x += sprite->data[1] * gBattleAnimArgs[0]; sprite->y += sprite->data[2] * gBattleAnimArgs[0]; sprite->data[3] = gBattleAnimArgs[3]; - sprite->callback = sub_80B7894; + sprite->callback = AnimOverheatFlame_Step; for (i = 0; i < 7; ++i) - gUnknown_20399A4[i] = sprite->data[i]; + sUnusedOverheatData[i] = sprite->data[i]; } -static void sub_80B7894(struct Sprite *sprite) +static void AnimOverheatFlame_Step(struct Sprite *sprite) { sprite->data[4] += sprite->data[1]; sprite->data[5] += sprite->data[2]; diff --git a/src/battle_anim_effects_1.c b/src/battle_anim_effects_1.c index 2d1a6f3cf..6de19d163 100644 --- a/src/battle_anim_effects_1.c +++ b/src/battle_anim_effects_1.c @@ -7,84 +7,145 @@ #include "util.h" #include "constants/songs.h" -// RAM -EWRAM_DATA static s16 gUnknown_203999C[4] = {0}; +struct { + s16 startX; + s16 startY; + s16 targetX; + s16 targetY; +} static EWRAM_DATA sFrenzyPlantRootData = {0}; // Debug? Written to but never read. -// Function Declarations -static void AnimMovePowderParticleStep(struct Sprite *); -static void AnimSolarBeamSmallOrbStep(struct Sprite *); -static void AnimAbsorptionOrbStep(struct Sprite *); -static void AnimHyperBeamOrbStep(struct Sprite *); -static void AnimLeechSeedStep(struct Sprite *); +static void AnimMovePowderParticle(struct Sprite *); +static void AnimMovePowderParticle_Step(struct Sprite *); +static void AnimSolarBeamSmallOrb(struct Sprite *); +static void AnimSolarBeamSmallOrb_Step(struct Sprite *); +static void AnimSolarBeamBigOrb(struct Sprite *); +static void AnimPowerAbsorptionOrb(struct Sprite *); +static void AnimAbsorptionOrb(struct Sprite *); +static void AnimAbsorptionOrb_Step(struct Sprite *); +static void AnimHyperBeamOrb(struct Sprite *); +static void AnimHyperBeamOrb_Step(struct Sprite *); +static void AnimMimicOrb(struct Sprite *); +static void AnimLeechSeed(struct Sprite *); +static void AnimLeechSeed_Step(struct Sprite *); static void AnimLeechSeedSprouts(struct Sprite *); -static void AnimSporeParticleStep(struct Sprite *); -static void AnimPetalDanceBigFlowerStep(struct Sprite *); -static void AnimPetalDanceSmallFlowerStep(struct Sprite *); -static void AnimRazorLeafParticleStep1(struct Sprite *); -static void AnimRazorLeafParticleStep2(struct Sprite *); -static void AnimTranslateLinearSingleSineWaveStep(struct Sprite *); -static void AnimMoveTwisterParticleStep(struct Sprite *); -static void AnimConstrictBindingStep1(struct Sprite *); -static void AnimConstrictBindingStep2(struct Sprite *); -static void AnimTask_DuplicateAndShrinkToPosStep1(u8); -static void AnimTask_DuplicateAndShrinkToPosStep2(u8); -static void AnimItemStealStep3(struct Sprite *); +static void AnimSporeParticle(struct Sprite *); +static void AnimSporeParticle_Step(struct Sprite *); +static void AnimPetalDanceBigFlower(struct Sprite *); +static void AnimPetalDanceBigFlower_Step(struct Sprite *); +static void AnimPetalDanceSmallFlower(struct Sprite *); +static void AnimPetalDanceSmallFlower_Step(struct Sprite *); +static void AnimRazorLeafParticle(struct Sprite *); +static void AnimRazorLeafParticle_Step1(struct Sprite *); +static void AnimRazorLeafParticle_Step2(struct Sprite *); +static void AnimIngrainRoot(struct Sprite *); +static void AnimFrenzyPlantRoot(struct Sprite *); +static void AnimIngrainOrb(struct Sprite *); +static void AnimTranslateLinearSingleSineWave(struct Sprite *); +static void AnimTranslateLinearSingleSineWave_Step(struct Sprite *); +static void AnimMoveTwisterParticle_Step(struct Sprite *); +static void AnimConstrictBinding(struct Sprite *); +static void AnimConstrictBinding_Step1(struct Sprite *); +static void AnimConstrictBinding_Step2(struct Sprite *); +static void AnimTask_DuplicateAndShrinkToPos_Step1(u8); +static void AnimTask_DuplicateAndShrinkToPos_Step2(u8); +static void AnimKnockOffItem(struct Sprite *); +static void AnimPresent(struct Sprite *); +static void AnimPresentHealParticle(struct Sprite *); +static void AnimItemSteal(struct Sprite *); +static void AnimItemSteal_Step3(struct Sprite *); static void AnimRootFlickerOut(struct Sprite *); -static void AnimTrickBagStep1(struct Sprite *); -static void AnimTrickBagStep2(struct Sprite *); -static void AnimTrickBagStep3(struct Sprite *); -static void AnimTask_LeafBladeStep(u8); +static void AnimTrickBag(struct Sprite *); +static void AnimTrickBag_Step1(struct Sprite *); +static void AnimTrickBag_Step2(struct Sprite *); +static void AnimTrickBag_Step3(struct Sprite *); +static void AnimTask_LeafBlade_Step(u8); static s16 LeafBladeGetPosFactor(struct Sprite *); -static void AnimTask_LeafBladeStep2(struct Task *, u8); -static void AnimTask_LeafBladeStep2_Callback(struct Sprite *); -static void AnimFlyingParticleStep(struct Sprite *); -static void AnimNeedleArmSpikeStep(struct Sprite *); -static void AnimSliceStep(struct Sprite *); +static void AnimTask_LeafBlade_Step2(struct Task *, u8); +static void AnimTask_LeafBlade_Step2_Callback(struct Sprite *); +static void AnimFlyingParticle(struct Sprite *); +static void AnimFlyingParticle_Step(struct Sprite *); +static void AnimNeedleArmSpike(struct Sprite *); +static void AnimNeedleArmSpike_Step(struct Sprite *); +static void AnimSlice_Step(struct Sprite *); +static void AnimCirclingMusicNote(struct Sprite *); static void AnimCirclingMusicNote_Step(struct Sprite *); -static void AnimProtectStep(struct Sprite *); -static void AnimMilkBottleStep1(struct Sprite *); -static void AnimMilkBottleStep2(struct Sprite *, int, int); +static void AnimProtect(struct Sprite *); +static void AnimProtect_Step(struct Sprite *); +static void AnimMilkBottle(struct Sprite *); +static void AnimMilkBottle_Step1(struct Sprite *); +static void AnimMilkBottle_Step2(struct Sprite *, int, int); +static void AnimBubbleBurst(struct Sprite *); static void AnimBubbleBurst_Step(struct Sprite *); -static void AnimSleepLetterZStep(struct Sprite *); -static void AnimLockOnTargetStep1(struct Sprite *); -static void AnimLockOnTargetStep2(struct Sprite *); -static void AnimLockOnTargetStep3(struct Sprite *); -static void AnimLockOnTargetStep4(struct Sprite *); -static void AnimLockOnTargetStep5(struct Sprite *); -static void AnimLockOnTargetStep6(struct Sprite *); -static void AnimBowMonStep1(struct Sprite *); -static void AnimBowMonStep1_Callback(struct Sprite *); -static void AnimBowMonStep2(struct Sprite *); -static void AnimBowMonStep3(struct Sprite *); -static void AnimBowMonStep4(struct Sprite *); -static void AnimBowMonStep3_Callback(struct Sprite *); +static void AnimSleepLetterZ(struct Sprite *); +static void AnimSleepLetterZ_Step(struct Sprite *); +static void AnimLockOnTarget(struct Sprite *); +static void AnimLockOnTarget_Step1(struct Sprite *); +static void AnimLockOnTarget_Step2(struct Sprite *); +static void AnimLockOnTarget_Step3(struct Sprite *); +static void AnimLockOnTarget_Step4(struct Sprite *); +static void AnimLockOnTarget_Step5(struct Sprite *); +static void AnimLockOnTarget_Step6(struct Sprite *); +static void AnimLockOnMoveTarget(struct Sprite *); +static void AnimBowMon(struct Sprite *); +static void AnimBowMon_Step1(struct Sprite *); +static void AnimBowMon_Step1_Callback(struct Sprite *); +static void AnimBowMon_Step2(struct Sprite *); +static void AnimBowMon_Step3(struct Sprite *); +static void AnimBowMon_Step4(struct Sprite *); +static void AnimBowMon_Step3_Callback(struct Sprite *); +static void AnimTipMon(struct Sprite *sprite); static void AnimTipMon_Step(struct Sprite *); static void AnimTask_SkullBashPositionSet(u8); static void AnimTask_SkullBashPositionReset(u8); -static void AnimFalseSwipeSliceStep1(struct Sprite *); -static void AnimFalseSwipeSliceStep2(struct Sprite *); -static void AnimFalseSwipeSliceStep3(struct Sprite *); -static void AnimEndureEnergyStep(struct Sprite *); -static void AnimSharpenSphereStep(struct Sprite *); -static void AnimConversion2Step(struct Sprite *); -static void AnimMoonStep(struct Sprite *); -static void AnimMoonlightSparkleStep(struct Sprite *); -static void AnimHornHitStep(struct Sprite *); -static void AnimTask_DoubleTeamStep(u8); -static void AnimTask_DoubleTeamCallback(struct Sprite *); -static void AnimWavyMusicNotesGetNextPos(s16, s16, s16 *, s16 *, s8); -static void AnimWavyMusicNotesStep(struct Sprite *); -static void AnimFlyingMusicNotesStep(struct Sprite *); -static void AnimSlowFlyingMusicNotesStep(struct Sprite *); -static void AnimThoughtBubbleStep(struct Sprite *); -static void AnimMetronomeFingerStep(struct Sprite *); -static void AnimFollowMeFingerStep1(struct Sprite *); -static void AnimFollowMeFingerStep2(struct Sprite *); -static void AnimTauntFingerStep1(struct Sprite *); -static void AnimTauntFingerStep2(struct Sprite *); +static void AnimSlashSlice(struct Sprite *); +static void AnimFalseSwipeSlice(struct Sprite *); +static void AnimFalseSwipeSlice_Step1(struct Sprite *); +static void AnimFalseSwipeSlice_Step2(struct Sprite *); +static void AnimFalseSwipeSlice_Step3(struct Sprite *); +static void AnimFalseSwipePositionedSlice(struct Sprite *); +static void AnimEndureEnergy(struct Sprite *); +static void AnimEndureEnergy_Step(struct Sprite *); +static void AnimSharpenSphere(struct Sprite *); +static void AnimSharpenSphere_Step(struct Sprite *); +static void AnimConversion(struct Sprite *); +static void AnimConversion2(struct Sprite *); +static void AnimConversion2_Step(struct Sprite *); +static void AnimMoon(struct Sprite *); +static void AnimMoon_Step(struct Sprite *); +static void AnimMoonlightSparkle(struct Sprite *); +static void AnimMoonlightSparkle_Step(struct Sprite *); +static void AnimHornHit(struct Sprite *); +static void AnimHornHit_Step(struct Sprite *); +static void AnimTask_DoubleTeam_Step(u8); +static void AnimDoubleTeam(struct Sprite *); +static void AnimWavyMusicNotes(struct Sprite *); +static void AnimWavyMusicNotes_CalcVelocity(s16, s16, s16 *, s16 *, s8); +static void AnimWavyMusicNotes_Step(struct Sprite *); +static void AnimFlyingMusicNotes(struct Sprite *); +static void AnimFlyingMusicNotes_Step(struct Sprite *); +static void AnimSlowFlyingMusicNotes(struct Sprite *); +static void AnimSlowFlyingMusicNotes_Step(struct Sprite *); +static void AnimThoughtBubble(struct Sprite *); +static void AnimThoughtBubble_Step(struct Sprite *); +static void AnimMetronomeFinger(struct Sprite *); +static void AnimMetronomeFinger_Step(struct Sprite *); +static void AnimFollowMeFinger(struct Sprite *); +static void AnimFollowMeFinger_Step1(struct Sprite *); +static void AnimFollowMeFinger_Step2(struct Sprite *); +static void AnimTauntFinger(struct Sprite *); +static void AnimTauntFinger_Step1(struct Sprite *); +static void AnimTauntFinger_Step2(struct Sprite *); +static void AnimBellyDrumHand(struct Sprite *); +static void AnimSuperFang(struct Sprite *); +static void AnimGrantingStars(struct Sprite *); +static void AnimSparklingStars(struct Sprite *); +static void AnimCuttingSlice(struct Sprite *); +static void AnimAirCutterSlice(struct Sprite *); +static void AnimFlickeringPunch(struct Sprite *); +static void AnimSlidingHit(struct Sprite *); +static void AnimWhipHit(struct Sprite *); -// Unused -static const u8 sUnknown_83E2964[] = {0x02, 0x04, 0x01, 0x03}; +static const u8 sUnused[] = {2, 4, 1, 3}; static const union AnimCmd sPowderParticlesAnimCmds[] = { @@ -455,7 +516,7 @@ const struct SpriteTemplate gRazorLeafParticleSpriteTemplate = .callback = AnimRazorLeafParticle, }; -const struct SpriteTemplate gTwisterLeafParticleSpriteTemplate = +const struct SpriteTemplate gTwisterLeafSpriteTemplate = { .tileTag = ANIM_TAG_LEAF, .paletteTag = ANIM_TAG_LEAF, @@ -513,7 +574,7 @@ const struct SpriteTemplate gSwiftStarSpriteTemplate = .callback = AnimTranslateLinearSingleSineWave, }; -static const union AnimCmd sConstrictBindingAnimCmds1[] = +static const union AnimCmd sAnim_ConstrictBinding[] = { ANIMCMD_FRAME(0, 4), ANIMCMD_FRAME(32, 4), @@ -522,7 +583,7 @@ static const union AnimCmd sConstrictBindingAnimCmds1[] = ANIMCMD_END, }; -static const union AnimCmd sConstrictBindingAnimCmds2[] = +static const union AnimCmd sAnim_ConstrictBinding_Flipped[] = { ANIMCMD_FRAME(0, 4, .hFlip = TRUE), ANIMCMD_FRAME(32, 4, .hFlip = TRUE), @@ -531,13 +592,13 @@ static const union AnimCmd sConstrictBindingAnimCmds2[] = ANIMCMD_END, }; -static const union AnimCmd *const sConstrictBindingAnimTable[] = +static const union AnimCmd *const sAnims_ConstrictBinding[] = { - sConstrictBindingAnimCmds1, - sConstrictBindingAnimCmds2, + sAnim_ConstrictBinding, + sAnim_ConstrictBinding_Flipped, }; -static const union AffineAnimCmd sConstrictBindingAffineAnimCmds1[] = +static const union AffineAnimCmd sAffineAnim_ConstrictBinding[] = { AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), AFFINEANIMCMD_FRAME(-11, 0, 0, 6), @@ -545,7 +606,7 @@ static const union AffineAnimCmd sConstrictBindingAffineAnimCmds1[] = AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sConstrictBindingAffineAnimCmds2[] = +static const union AffineAnimCmd sAffineAnim_ConstrictBinding_Flipped[] = { AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0), AFFINEANIMCMD_FRAME(11, 0, 0, 6), @@ -553,10 +614,10 @@ static const union AffineAnimCmd sConstrictBindingAffineAnimCmds2[] = AFFINEANIMCMD_END, }; -static const union AffineAnimCmd *const sConstrictBindingAffineAnimTable[] = +static const union AffineAnimCmd *const sAffineAnims_ConstrictBinding[] = { - sConstrictBindingAffineAnimCmds1, - sConstrictBindingAffineAnimCmds2, + sAffineAnim_ConstrictBinding, + sAffineAnim_ConstrictBinding_Flipped, }; const struct SpriteTemplate gConstrictBindingSpriteTemplate = @@ -564,9 +625,9 @@ const struct SpriteTemplate gConstrictBindingSpriteTemplate = .tileTag = ANIM_TAG_TENDRILS, .paletteTag = ANIM_TAG_TENDRILS, .oam = &gOamData_AffineNormal_ObjNormal_64x32, - .anims = sConstrictBindingAnimTable, + .anims = sAnims_ConstrictBinding, .images = NULL, - .affineAnims = sConstrictBindingAffineAnimTable, + .affineAnims = sAffineAnims_ConstrictBinding, .callback = AnimConstrictBinding, }; @@ -1022,7 +1083,7 @@ const struct SpriteTemplate gNeedleArmSpikeSpriteTemplate = .callback = AnimNeedleArmSpike, }; -static const union AnimCmd sWhipAnimCmds1[] = +static const union AnimCmd sAnim_Whip[] = { ANIMCMD_FRAME(64, 3), ANIMCMD_FRAME(80, 3), @@ -1031,7 +1092,7 @@ static const union AnimCmd sWhipAnimCmds1[] = ANIMCMD_END, }; -static const union AnimCmd sWhipAnimCmds2[] = +static const union AnimCmd sAnim_Whip_Flipped[] = { ANIMCMD_FRAME(64, 3, .hFlip = TRUE), ANIMCMD_FRAME(80, 3, .hFlip = TRUE), @@ -1040,10 +1101,10 @@ static const union AnimCmd sWhipAnimCmds2[] = ANIMCMD_END, }; -static const union AnimCmd *const sWhipAnimTable[] = +static const union AnimCmd *const sAnims_Whip[] = { - sWhipAnimCmds1, - sWhipAnimCmds2, + sAnim_Whip, + sAnim_Whip_Flipped, }; const struct SpriteTemplate gSlamHitSpriteTemplate = @@ -1051,7 +1112,7 @@ const struct SpriteTemplate gSlamHitSpriteTemplate = .tileTag = ANIM_TAG_SLAM_HIT, .paletteTag = ANIM_TAG_SLAM_HIT, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = sWhipAnimTable, + .anims = sAnims_Whip, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimWhipHit, @@ -1062,13 +1123,13 @@ const struct SpriteTemplate gVineWhipSpriteTemplate = .tileTag = ANIM_TAG_WHIP_HIT, .paletteTag = ANIM_TAG_WHIP_HIT, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = sWhipAnimTable, + .anims = sAnims_Whip, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimWhipHit, }; -static const union AnimCmd sUnknown_83E3178[] = +static const union AnimCmd sAnim_SlidingHit[] = { ANIMCMD_FRAME(0, 4), ANIMCMD_FRAME(16, 4), @@ -1078,105 +1139,104 @@ static const union AnimCmd sUnknown_83E3178[] = ANIMCMD_END, }; -// Unused -static const union AnimCmd *const sUnknown_83E3190[] = +static const union AnimCmd *const sAnims_SlidingHit[] = { - sUnknown_83E3178, + sAnim_SlidingHit, }; // Unused -static const struct SpriteTemplate sUnknown_83E3194 = +static const struct SpriteTemplate sSlidingHit1SpriteTemplate = { .tileTag = ANIM_TAG_HIT, .paletteTag = ANIM_TAG_HIT, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = sUnknown_83E3190, + .anims = sAnims_SlidingHit, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimSlidingHit, }; // Unused -static const struct SpriteTemplate sUnknown_83E31AC = +static const struct SpriteTemplate sSlidingHit2SpriteTemplate = { .tileTag = ANIM_TAG_HIT_2, .paletteTag = ANIM_TAG_HIT_2, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = sUnknown_83E3190, + .anims = sAnims_SlidingHit, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimSlidingHit, }; -static const union AffineAnimCmd sUnknown_83E31C4[] = +static const union AffineAnimCmd sAffineAnim_FlickeringPunch_Normal[] = { AFFINEANIMCMD_FRAME(256, 256, 0, 0), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sUnknown_83E31D4[] = +static const union AffineAnimCmd sAffineAnim_FlickeringPunch_TurnedTopLeft[] = { AFFINEANIMCMD_FRAME(256, 256, 32, 0), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sUnknown_83E31E4[] = +static const union AffineAnimCmd sAffineAnim_FlickeringPunch_TurnedLeft[] = { AFFINEANIMCMD_FRAME(256, 256, 64, 0), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sUnknown_83E31F4[] = +static const union AffineAnimCmd sAffineAnim_FlickeringPunch_TurnedBottomLeft[] = { AFFINEANIMCMD_FRAME(256, 256, 96, 0), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sUnknown_83E3204[] = +static const union AffineAnimCmd sAffineAnim_FlickeringPunch_UpsideDown[] = { AFFINEANIMCMD_FRAME(256, 256, -128, 0), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sUnknown_83E3214[] = +static const union AffineAnimCmd sAffineAnim_FlickeringPunch_TurnedBottomRight[] = { AFFINEANIMCMD_FRAME(256, 256, -96, 0), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sUnknown_83E3224[] = +static const union AffineAnimCmd sAffineAnim_FlickeringPunch_TurnedRight[] = { AFFINEANIMCMD_FRAME(256, 256, -64, 0), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sUnknown_83E3234[] = +static const union AffineAnimCmd sAffineAnim_FlickeringPunch_TurnedTopRight[] = { AFFINEANIMCMD_FRAME(256, 256, -32, 0), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd *const sUnknown_83E3244[] = +static const union AffineAnimCmd *const sAffineAnims_FlickeringPunch[] = { - sUnknown_83E31C4, - sUnknown_83E31D4, - sUnknown_83E31E4, - sUnknown_83E31F4, - sUnknown_83E3204, - sUnknown_83E3214, - sUnknown_83E3224, - sUnknown_83E3234, + sAffineAnim_FlickeringPunch_Normal, + sAffineAnim_FlickeringPunch_TurnedTopLeft, + sAffineAnim_FlickeringPunch_TurnedLeft, + sAffineAnim_FlickeringPunch_TurnedBottomLeft, + sAffineAnim_FlickeringPunch_UpsideDown, + sAffineAnim_FlickeringPunch_TurnedBottomRight, + sAffineAnim_FlickeringPunch_TurnedRight, + sAffineAnim_FlickeringPunch_TurnedTopRight, }; // Unused -static const struct SpriteTemplate sUnknown_83E3264 = +static const struct SpriteTemplate sFlickeringPunchSpriteTemplate = { .tileTag = ANIM_TAG_HANDS_AND_FEET, .paletteTag = ANIM_TAG_HANDS_AND_FEET, .oam = &gOamData_AffineNormal_ObjNormal_32x32, .anims = gDummySpriteAnimTable, .images = NULL, - .affineAnims = sUnknown_83E3244, + .affineAnims = sAffineAnims_FlickeringPunch, .callback = AnimFlickeringPunch, }; @@ -1216,93 +1276,93 @@ const struct SpriteTemplate gAirCutterSliceSpriteTemplate = .callback = AnimAirCutterSlice, }; -static const union AnimCmd sUnknown_83E32C4[] = +static const union AnimCmd sAnim_CirclingMusicNote_Eighth[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sUnknown_83E32CC[] = +static const union AnimCmd sAnim_CirclingMusicNote_BeamedEighth[] = { ANIMCMD_FRAME(4, 1), ANIMCMD_END, }; -static const union AnimCmd sUnknown_83E32D4[] = +static const union AnimCmd sAnim_CirclingMusicNote_SlantedBeamedEighth[] = { ANIMCMD_FRAME(8, 1), ANIMCMD_END, }; -static const union AnimCmd sUnknown_83E32DC[] = +static const union AnimCmd sAnim_CirclingMusicNote_Quarter[] = { ANIMCMD_FRAME(12, 1), ANIMCMD_END, }; -static const union AnimCmd sUnknown_83E32E4[] = +static const union AnimCmd sAnim_CirclingMusicNote_QuarterRest[] = { ANIMCMD_FRAME(16, 1), ANIMCMD_END, }; -static const union AnimCmd sUnknown_83E32EC[] = +static const union AnimCmd sAnim_CirclingMusicNote_EighthRest[] = { ANIMCMD_FRAME(20, 1), ANIMCMD_END, }; -static const union AnimCmd sUnknown_83E32F4[] = +static const union AnimCmd sAnim_CirclingMusicNote_Eighth_Flipped[] = { ANIMCMD_FRAME(0, 1, .vFlip = TRUE), ANIMCMD_END, }; -static const union AnimCmd sUnknown_83E32FC[] = +static const union AnimCmd sAnim_CirclingMusicNote_BeamedEighth_Flipped[] = { ANIMCMD_FRAME(4, 1, .vFlip = TRUE), ANIMCMD_END, }; -static const union AnimCmd sUnknown_83E3304[] = +static const union AnimCmd sAnim_CirclingMusicNote_SlantedBeamedEighth_Flipped[] = { ANIMCMD_FRAME(8, 1, .vFlip = TRUE), ANIMCMD_END, }; -static const union AnimCmd sUnknown_83E330C[] = +static const union AnimCmd sAnim_CirclingMusicNote_Quarter_Flipped[] = { ANIMCMD_FRAME(12, 1, .vFlip = TRUE), ANIMCMD_END, }; -static const union AnimCmd *const sUnknown_83E3314[] = +static const union AnimCmd *const sAnims_CirclingMusicNote[] = { - sUnknown_83E32C4, - sUnknown_83E32CC, - sUnknown_83E32D4, - sUnknown_83E32DC, - sUnknown_83E32E4, - sUnknown_83E32EC, - sUnknown_83E32F4, - sUnknown_83E32FC, - sUnknown_83E3304, - sUnknown_83E330C, + sAnim_CirclingMusicNote_Eighth, + sAnim_CirclingMusicNote_BeamedEighth, + sAnim_CirclingMusicNote_SlantedBeamedEighth, + sAnim_CirclingMusicNote_Quarter, + sAnim_CirclingMusicNote_QuarterRest, + sAnim_CirclingMusicNote_EighthRest, + sAnim_CirclingMusicNote_Eighth_Flipped, + sAnim_CirclingMusicNote_BeamedEighth_Flipped, + sAnim_CirclingMusicNote_SlantedBeamedEighth_Flipped, + sAnim_CirclingMusicNote_Quarter_Flipped, }; // Unused -static const struct SpriteTemplate sUnknown_83E333C = +static const struct SpriteTemplate sCirclingMusicNoteSpriteTemplate = { .tileTag = ANIM_TAG_MUSIC_NOTES, .paletteTag = ANIM_TAG_MUSIC_NOTES, .oam = &gOamData_AffineOff_ObjNormal_16x16, - .anims = sUnknown_83E3314, + .anims = sAnims_CirclingMusicNote, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimCirclingMusicNote, }; -const struct SpriteTemplate gProtectWallSpriteTemplate = +const struct SpriteTemplate gProtectSpriteTemplate = { .tileTag = ANIM_TAG_PROTECT, .paletteTag = ANIM_TAG_PROTECT, @@ -1383,10 +1443,10 @@ const struct SpriteTemplate gSparklingStarsSpriteTemplate = .anims = sGrantingStarsAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = AnimSparkingStars, + .callback = AnimSparklingStars, }; -static const union AnimCmd sUnknown_83E3424[] = +static const union AnimCmd sAnim_BubbleBurst[] = { ANIMCMD_FRAME(0, 10), ANIMCMD_FRAME(4, 10), @@ -1399,7 +1459,7 @@ static const union AnimCmd sUnknown_83E3424[] = ANIMCMD_END, }; -static const union AnimCmd sUnknown_83E3448[] = +static const union AnimCmd sAnim_BubbleBurst_Flipped[] = { ANIMCMD_FRAME(0, 10, .hFlip = TRUE), ANIMCMD_FRAME(4, 10, .hFlip = TRUE), @@ -1412,19 +1472,19 @@ static const union AnimCmd sUnknown_83E3448[] = ANIMCMD_END, }; -static const union AnimCmd *const sUnknown_83E346C[] = +static const union AnimCmd *const sAnims_BubbleBurst[] = { - sUnknown_83E3424, - sUnknown_83E3448, + sAnim_BubbleBurst, + sAnim_BubbleBurst_Flipped, }; // Unused -static const struct SpriteTemplate sUnknown_83E3474 = +static const struct SpriteTemplate sBubbleBurstSpriteTemplate = { .tileTag = ANIM_TAG_BUBBLE_BURST, .paletteTag = ANIM_TAG_BUBBLE_BURST, .oam = &gOamData_AffineOff_ObjNormal_16x16, - .anims = sUnknown_83E346C, + .anims = sAnims_BubbleBurst, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimBubbleBurst, @@ -1528,7 +1588,8 @@ const struct SpriteTemplate gBowMonSpriteTemplate = }; // Unused -static const struct SpriteTemplate sUnknown_83E3568 = +// Same as BowMon above but without backing up +static const struct SpriteTemplate sTipMonSpriteTemplate = { .tileTag = 0, .paletteTag = 0, @@ -2155,7 +2216,6 @@ const struct SpriteTemplate gTauntFingerSpriteTemplate = .callback = AnimTauntFinger, }; -// Functions // 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 @@ -2164,7 +2224,7 @@ const struct SpriteTemplate gTauntFingerSpriteTemplate = // arg 3: vertical movement speed (sub-pixel value) // arg 4: wave amplitude // arg 5: wave speed -void AnimMovePowderParticle(struct Sprite* sprite) +static void AnimMovePowderParticle(struct Sprite* sprite) { sprite->x += gBattleAnimArgs[0]; sprite->y += gBattleAnimArgs[1]; @@ -2181,10 +2241,10 @@ void AnimMovePowderParticle(struct Sprite* sprite) } sprite->data[4] = gBattleAnimArgs[5]; - sprite->callback = AnimMovePowderParticleStep; + sprite->callback = AnimMovePowderParticle_Step; } -static void AnimMovePowderParticleStep(struct Sprite* sprite) +static void AnimMovePowderParticle_Step(struct Sprite* sprite) { if (sprite->data[0] > 0) { @@ -2204,7 +2264,7 @@ static void AnimMovePowderParticleStep(struct Sprite* sprite) // arg 0: initial x pixel offset // arg 1: initial y pixel offset // arg 2: duration -void AnimPowerAbsorptionOrb(struct Sprite* sprite) +static void AnimPowerAbsorptionOrb(struct Sprite* sprite) { InitSpritePosToAnimAttacker(sprite, TRUE); sprite->data[0] = gBattleAnimArgs[2]; @@ -2219,7 +2279,7 @@ void AnimPowerAbsorptionOrb(struct Sprite* sprite) // arg 1: initial y pixel offset // arg 2: duration // arg 3: sprite anim number -void AnimSolarBeamBigOrb(struct Sprite* sprite) +static void AnimSolarBeamBigOrb(struct Sprite* sprite) { InitSpritePosToAnimAttacker(sprite, TRUE); StartSpriteAnim(sprite, gBattleAnimArgs[3]); @@ -2236,7 +2296,7 @@ void AnimSolarBeamBigOrb(struct Sprite* sprite) // arg 1: initial y pixel offset // arg 2: duration // arg 3: initial wave offset -void AnimSolarBeamSmallOrb(struct Sprite* sprite) +static void AnimSolarBeamSmallOrb(struct Sprite* sprite) { InitSpritePosToAnimAttacker(sprite, TRUE); sprite->data[0] = gBattleAnimArgs[2]; @@ -2246,11 +2306,11 @@ void AnimSolarBeamSmallOrb(struct Sprite* sprite) sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); InitAnimLinearTranslation(sprite); sprite->data[5] = gBattleAnimArgs[3]; - sprite->callback = AnimSolarBeamSmallOrbStep; + sprite->callback = AnimSolarBeamSmallOrb_Step; sprite->callback(sprite); } -static void AnimSolarBeamSmallOrbStep(struct Sprite* sprite) +static void AnimSolarBeamSmallOrb_Step(struct Sprite* sprite) { if (AnimTranslateLinear(sprite)) { @@ -2294,7 +2354,7 @@ void AnimTask_CreateSmallSolarBeamOrbs(u8 taskId) // arg 1: initial y pixel offset // arg 2: wave amplitude // arg 3: wave period (lower means faster wave) -void AnimAbsorptionOrb(struct Sprite* sprite) +static void AnimAbsorptionOrb(struct Sprite* sprite) { InitSpritePosToAnimTarget(sprite, TRUE); sprite->data[0] = gBattleAnimArgs[3]; @@ -2302,10 +2362,10 @@ void AnimAbsorptionOrb(struct Sprite* sprite) sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); sprite->data[5] = gBattleAnimArgs[2]; InitAnimArcTranslation(sprite); - sprite->callback = AnimAbsorptionOrbStep; + sprite->callback = AnimAbsorptionOrb_Step; } -static void AnimAbsorptionOrbStep(struct Sprite* sprite) +static void AnimAbsorptionOrb_Step(struct Sprite* sprite) { if (TranslateAnimHorizontalArc(sprite)) DestroyAnimSprite(sprite); @@ -2313,7 +2373,7 @@ static void AnimAbsorptionOrbStep(struct Sprite* sprite) // Moves an orb in a wave-like fashion towards the target mon. The wave's // properties and the sprite anim are randomly determined. -void AnimHyperBeamOrb(struct Sprite* sprite) +static void AnimHyperBeamOrb(struct Sprite* sprite) { u16 speed; u16 animNum = Random(); @@ -2335,11 +2395,11 @@ void AnimHyperBeamOrb(struct Sprite* sprite) InitAnimFastLinearTranslationWithSpeed(sprite); sprite->data[5] = Random() & 0xFF; sprite->data[6] = sprite->subpriority; - sprite->callback = AnimHyperBeamOrbStep; + sprite->callback = AnimHyperBeamOrb_Step; sprite->callback(sprite); } -static void AnimHyperBeamOrbStep(struct Sprite* sprite) +static void AnimHyperBeamOrb_Step(struct Sprite* sprite) { if (AnimFastTranslateLinear(sprite)) { @@ -2366,7 +2426,7 @@ static void AnimHyperBeamOrbStep(struct Sprite* sprite) // arg 3: target y pixel offset // arg 4: duration // arg 5: wave amplitude -void AnimLeechSeed(struct Sprite* sprite) +static void AnimLeechSeed(struct Sprite* sprite) { InitSpritePosToAnimAttacker(sprite, TRUE); if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) @@ -2377,10 +2437,10 @@ void AnimLeechSeed(struct Sprite* sprite) sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + gBattleAnimArgs[3]; sprite->data[5] = gBattleAnimArgs[5]; InitAnimArcTranslation(sprite); - sprite->callback = AnimLeechSeedStep; + sprite->callback = AnimLeechSeed_Step; } -static void AnimLeechSeedStep(struct Sprite* sprite) +static void AnimLeechSeed_Step(struct Sprite* sprite) { if (TranslateAnimHorizontalArc(sprite)) { @@ -2408,7 +2468,7 @@ static void AnimLeechSeedSprouts(struct Sprite* sprite) // arg 2: initial wave offset // arg 3: duration // arg 4: blend (0 = off, 1 = on) -void AnimSporeParticle(struct Sprite* sprite) +static void AnimSporeParticle(struct Sprite* sprite) { InitSpritePosToAnimTarget(sprite, TRUE); StartSpriteAnim(sprite, gBattleAnimArgs[4]); @@ -2417,11 +2477,11 @@ void AnimSporeParticle(struct Sprite* sprite) sprite->data[0] = gBattleAnimArgs[3]; sprite->data[1] = gBattleAnimArgs[2]; - sprite->callback = AnimSporeParticleStep; + sprite->callback = AnimSporeParticle_Step; sprite->callback(sprite); } -static void AnimSporeParticleStep(struct Sprite* sprite) +static void AnimSporeParticle_Step(struct Sprite* sprite) { sprite->x2 = Sin(sprite->data[1], 32); sprite->y2 = Cos(sprite->data[1], -3) + ((sprite->data[2] += 24) >> 8); @@ -2470,7 +2530,7 @@ void AnimTask_SporeDoubleBattle(u8 taskId) // arg 1: initial y pixel offset // arg 2: target y pixel offset // arg 3: duration -void AnimPetalDanceBigFlower(struct Sprite* sprite) +static void AnimPetalDanceBigFlower(struct Sprite* sprite) { InitSpritePosToAnimAttacker(sprite, FALSE); sprite->data[0] = gBattleAnimArgs[3]; @@ -2480,11 +2540,11 @@ void AnimPetalDanceBigFlower(struct Sprite* sprite) sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[2]; InitAnimLinearTranslation(sprite); sprite->data[5] = 0x40; - sprite->callback = AnimPetalDanceBigFlowerStep; + sprite->callback = AnimPetalDanceBigFlower_Step; sprite->callback(sprite); } -static void AnimPetalDanceBigFlowerStep(struct Sprite* sprite) +static void AnimPetalDanceBigFlower_Step(struct Sprite* sprite) { if (!AnimTranslateLinear(sprite)) { @@ -2508,7 +2568,7 @@ static void AnimPetalDanceBigFlowerStep(struct Sprite* sprite) // arg 1: initial y pixel offset // arg 2: target y pixel offset // arg 3: duration -void AnimPetalDanceSmallFlower(struct Sprite* sprite) +static void AnimPetalDanceSmallFlower(struct Sprite* sprite) { InitSpritePosToAnimAttacker(sprite, TRUE); sprite->data[0] = gBattleAnimArgs[3]; @@ -2518,11 +2578,11 @@ void AnimPetalDanceSmallFlower(struct Sprite* sprite) sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[2]; InitAnimLinearTranslation(sprite); sprite->data[5] = 0x40; - sprite->callback = AnimPetalDanceSmallFlowerStep; + sprite->callback = AnimPetalDanceSmallFlower_Step; sprite->callback(sprite); } -static void AnimPetalDanceSmallFlowerStep(struct Sprite* sprite) +static void AnimPetalDanceSmallFlower_Step(struct Sprite* sprite) { if (!AnimTranslateLinear(sprite)) { @@ -2543,17 +2603,17 @@ static void AnimPetalDanceSmallFlowerStep(struct Sprite* sprite) // arg 0: upward x delta per frame // arg 1: upward y delta per frame // arg 2: upward duration -void AnimRazorLeafParticle(struct Sprite* sprite) +static void AnimRazorLeafParticle(struct Sprite* sprite) { 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->callback = AnimRazorLeafParticleStep1; + sprite->callback = AnimRazorLeafParticle_Step1; } -static void AnimRazorLeafParticleStep1(struct Sprite* sprite) +static void AnimRazorLeafParticle_Step1(struct Sprite* sprite) { if (!sprite->data[2]) { @@ -2569,7 +2629,7 @@ static void AnimRazorLeafParticleStep1(struct Sprite* sprite) sprite->data[1] = 0; sprite->data[2] = 0; } - sprite->callback = AnimRazorLeafParticleStep2; + sprite->callback = AnimRazorLeafParticle_Step2; } else { @@ -2579,7 +2639,7 @@ static void AnimRazorLeafParticleStep1(struct Sprite* sprite) } } -static void AnimRazorLeafParticleStep2(struct Sprite* sprite) +static void AnimRazorLeafParticle_Step2(struct Sprite* sprite) { if (GetBattlerSide(gBattleAnimAttacker)) sprite->x2 = -Sin(sprite->data[0], 25); @@ -2606,7 +2666,7 @@ static void AnimRazorLeafParticleStep2(struct Sprite* sprite) // arg 4: translation duration // arg 5: wave amplitude // arg 6: target between double battle opponents (boolean) -void AnimTranslateLinearSingleSineWave(struct Sprite* sprite) +static void AnimTranslateLinearSingleSineWave(struct Sprite* sprite) { InitSpritePosToAnimAttacker(sprite, TRUE); if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) @@ -2632,10 +2692,10 @@ void AnimTranslateLinearSingleSineWave(struct Sprite* sprite) else sprite->data[0] = 0; - sprite->callback = AnimTranslateLinearSingleSineWaveStep; + sprite->callback = AnimTranslateLinearSingleSineWave_Step; } -static void AnimTranslateLinearSingleSineWaveStep(struct Sprite* sprite) +static void AnimTranslateLinearSingleSineWave_Step(struct Sprite* sprite) { bool8 destroy = FALSE; s16 a = sprite->data[0]; @@ -2657,9 +2717,9 @@ static void AnimTranslateLinearSingleSineWaveStep(struct Sprite* sprite) destroy = TRUE; } - if (sprite->x + sprite->x2 > 256 + if (sprite->x + sprite->x2 > DISPLAY_WIDTH + 16 || sprite->x + sprite->x2 < -16 - || sprite->y + sprite->y2 > 160 + || sprite->y + sprite->y2 > DISPLAY_HEIGHT || sprite->y + sprite->y2 < -16) destroy = TRUE; @@ -2684,10 +2744,10 @@ void AnimMoveTwisterParticle(struct Sprite* sprite) sprite->data[2] = gBattleAnimArgs[2]; sprite->data[3] = gBattleAnimArgs[3]; sprite->data[4] = gBattleAnimArgs[4]; - sprite->callback = AnimMoveTwisterParticleStep; + sprite->callback = AnimMoveTwisterParticle_Step; } -static void AnimMoveTwisterParticleStep(struct Sprite* sprite) +static void AnimMoveTwisterParticle_Step(struct Sprite* sprite) { if (sprite->data[1] == 0xFF) { @@ -2720,17 +2780,17 @@ static void AnimMoveTwisterParticleStep(struct Sprite* sprite) // arg 1: initial y pixel offset // arg 2: affine anim num // arg 3: num squeezes -void AnimConstrictBinding(struct Sprite* sprite) +static void AnimConstrictBinding(struct Sprite* sprite) { InitSpritePosToAnimTarget(sprite, FALSE); sprite->affineAnimPaused = TRUE; StartSpriteAffineAnim(sprite, gBattleAnimArgs[2]); sprite->data[6] = gBattleAnimArgs[2]; sprite->data[7] = gBattleAnimArgs[3]; - sprite->callback = AnimConstrictBindingStep1; + sprite->callback = AnimConstrictBinding_Step1; } -static void AnimConstrictBindingStep1(struct Sprite* sprite) +static void AnimConstrictBinding_Step1(struct Sprite* sprite) { u8 spriteId; @@ -2739,11 +2799,11 @@ static void AnimConstrictBindingStep1(struct Sprite* sprite) sprite->affineAnimPaused = FALSE; spriteId = GetAnimBattlerSpriteId(ANIM_TARGET); sprite->data[0] = 0x100; - sprite->callback = AnimConstrictBindingStep2; + sprite->callback = AnimConstrictBinding_Step2; } } -static void AnimConstrictBindingStep2(struct Sprite* sprite) +static void AnimConstrictBinding_Step2(struct Sprite* sprite) { u8 spriteId = GetAnimBattlerSpriteId(ANIM_TARGET); @@ -2781,11 +2841,11 @@ void AnimTask_ShrinkTargetCopy(u8 taskId) gTasks[taskId].data[0] = gBattleAnimArgs[0]; gTasks[taskId].data[1] = gBattleAnimArgs[1]; gTasks[taskId].data[11] = 0x100; - gTasks[taskId].func = AnimTask_DuplicateAndShrinkToPosStep1; + gTasks[taskId].func = AnimTask_DuplicateAndShrinkToPos_Step1; } } -static void AnimTask_DuplicateAndShrinkToPosStep1(u8 taskId) +static void AnimTask_DuplicateAndShrinkToPos_Step1(u8 taskId) { u8 spriteId = GetAnimBattlerSpriteId(ANIM_TARGET); @@ -2800,11 +2860,11 @@ static void AnimTask_DuplicateAndShrinkToPosStep1(u8 taskId) if (--gTasks[taskId].data[1] == 0) { gTasks[taskId].data[0] = 0; - gTasks[taskId].func = AnimTask_DuplicateAndShrinkToPosStep2; + gTasks[taskId].func = AnimTask_DuplicateAndShrinkToPos_Step2; } } -static void AnimTask_DuplicateAndShrinkToPosStep2(u8 taskId) +static void AnimTask_DuplicateAndShrinkToPos_Step2(u8 taskId) { if ((u16)gBattleAnimArgs[7] == 0xFFFF) { @@ -2831,7 +2891,7 @@ static void AnimTask_DuplicateAndShrinkToPosStep2(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 -void AnimMimicOrb(struct Sprite* sprite) +static void AnimMimicOrb(struct Sprite* sprite) { switch (sprite->data[0]) { @@ -2865,7 +2925,7 @@ void AnimMimicOrb(struct Sprite* sprite) // arg 2: sprite subpriority offset // arg 3: sprite anim num // arg 4: duration -void AnimIngrainRoot(struct Sprite* sprite) +static void AnimIngrainRoot(struct Sprite* sprite) { if (!sprite->data[0]) { @@ -2890,7 +2950,7 @@ void AnimIngrainRoot(struct Sprite* sprite) // arg 3: sprite subpriority offset // arg 4: sprite anum num // arg 5: duration -void AnimFrenzyPlantRoot(struct Sprite *sprite) +static void AnimFrenzyPlantRoot(struct Sprite *sprite) { s16 attackerX = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); s16 attackerY = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); @@ -2907,10 +2967,10 @@ void AnimFrenzyPlantRoot(struct Sprite *sprite) StartSpriteAnim(sprite, gBattleAnimArgs[4]); sprite->data[2] = gBattleAnimArgs[5]; sprite->callback = AnimRootFlickerOut; - gUnknown_203999C[0] = sprite->x; - gUnknown_203999C[1] = sprite->y; - gUnknown_203999C[2] = targetX; - gUnknown_203999C[3] = targetY; + sFrenzyPlantRootData.startX = sprite->x; + sFrenzyPlantRootData.startY = sprite->y; + sFrenzyPlantRootData.targetX = targetX; + sFrenzyPlantRootData.targetY = targetY; } static void AnimRootFlickerOut(struct Sprite* sprite) @@ -2928,7 +2988,7 @@ static void AnimRootFlickerOut(struct Sprite* sprite) // arg 2: horizontal velocity // arg 3: wave amplitude // arg 4: duration -void AnimIngrainOrb(struct Sprite* sprite) +static void AnimIngrainOrb(struct Sprite* sprite) { if (!sprite->data[0]) { @@ -2946,7 +3006,7 @@ void AnimIngrainOrb(struct Sprite* sprite) DestroyAnimSprite(sprite); } -static void sub_80A33B8(struct Sprite* sprite, s16 c) +static void InitItemBagData(struct Sprite* sprite, s16 c) { int a = (sprite->x << 8) | sprite->y; int b = (sprite->data[6] << 8) | sprite->data[7]; @@ -2972,7 +3032,7 @@ bool8 MoveAlongLinearPath(struct Sprite* sprite) if (xEndPos == 0) xEndPos = -32; else if (xEndPos == 255) - xEndPos = 272; + xEndPos = DISPLAY_WIDTH + 32; yEndPos_2 = yEndPos - yStartPos; r0 = xEndPos - xStartPos; @@ -2987,7 +3047,7 @@ bool8 MoveAlongLinearPath(struct Sprite* sprite) return FALSE; } -void AnimItemStealStep2(struct Sprite* sprite) +static void AnimItemSteal_Step2(struct Sprite* sprite) { if (sprite->data[0] == 10) StartSpriteAffineAnim(sprite, 1); @@ -2997,7 +3057,7 @@ void AnimItemStealStep2(struct Sprite* sprite) DestroyAnimSprite(sprite); } -static void AnimItemStealStep1(struct Sprite* sprite) +static void AnimItemSteal_Step1(struct Sprite* sprite) { sprite->data[0] += sprite->data[3] * 128 / sprite->data[4]; if (sprite->data[0] >= 128) @@ -3011,11 +3071,11 @@ static void AnimItemStealStep1(struct Sprite* sprite) { sprite->y2 = 0; sprite->data[0] = 0; - sprite->callback = AnimItemStealStep2; + sprite->callback = AnimItemSteal_Step2; } } -void AnimPresent(struct Sprite* sprite) +static void AnimPresent(struct Sprite* sprite) { s16 targetX; s16 targetY; @@ -3027,22 +3087,22 @@ void AnimPresent(struct Sprite* sprite) { sprite->data[6] = targetX; sprite->data[7] = targetY + 10; - sub_80A33B8(sprite, 60); + InitItemBagData(sprite, 60); sprite->data[3] = 1; } else { sprite->data[6] = targetX; sprite->data[7] = targetY + 10; - sub_80A33B8(sprite, 60); + InitItemBagData(sprite, 60); sprite->data[3] = 3; } sprite->data[4] = 60; - sprite->callback = AnimItemStealStep1; + sprite->callback = AnimItemSteal_Step1; } -static void sub_80A3590(struct Sprite* sprite) +static void AnimKnockOffOpponentsItem(struct Sprite* sprite) { int zero; @@ -3063,7 +3123,7 @@ static void sub_80A3590(struct Sprite* sprite) } } -void AnimKnockOffItem(struct Sprite* sprite) +static void AnimKnockOffItem(struct Sprite* sprite) { s16 targetY = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y); @@ -3071,10 +3131,10 @@ void AnimKnockOffItem(struct Sprite* sprite) { sprite->data[6] = 0; sprite->data[7] = targetY + 10; - sub_80A33B8(sprite, 40); + InitItemBagData(sprite, 40); sprite->data[3] = 3; sprite->data[4] = 60; - sprite->callback = AnimItemStealStep1; + sprite->callback = AnimItemSteal_Step1; } else { @@ -3083,10 +3143,10 @@ void AnimKnockOffItem(struct Sprite* sprite) if (IsContest()) sprite->data[6] = 0; - sub_80A33B8(sprite, 40); + InitItemBagData(sprite, 40); sprite->data[3] = 3; sprite->data[4] = 60; - sprite->callback = sub_80A3590; + sprite->callback = AnimKnockOffOpponentsItem; } } @@ -3095,7 +3155,7 @@ void AnimKnockOffItem(struct Sprite* sprite) // arg 1: initial y pixel offset // arg 2: vertical velocity // arg 3: unused -void AnimPresentHealParticle(struct Sprite* sprite) +static void AnimPresentHealParticle(struct Sprite* sprite) { if (!sprite->data[0]) { @@ -3109,7 +3169,7 @@ void AnimPresentHealParticle(struct Sprite* sprite) DestroyAnimSprite(sprite); } -void AnimItemSteal(struct Sprite* sprite) +static void AnimItemSteal(struct Sprite* sprite) { s16 attackerX; s16 attackerY; @@ -3121,22 +3181,22 @@ void AnimItemSteal(struct Sprite* sprite) { sprite->data[6] = attackerX; sprite->data[7] = attackerY + 10; - sub_80A33B8(sprite, 60); + InitItemBagData(sprite, 60); sprite->data[3] = 1; } else { sprite->data[6] = attackerX; sprite->data[7] = attackerY + 10; - sub_80A33B8(sprite, 60); + InitItemBagData(sprite, 60); sprite->data[3] = 3; } sprite->data[4] = 60; - sprite->callback = AnimItemStealStep3; + sprite->callback = AnimItemSteal_Step3; } -static void AnimItemStealStep3(struct Sprite* sprite) +static void AnimItemSteal_Step3(struct Sprite* sprite) { int zero; @@ -3156,7 +3216,7 @@ static void AnimItemStealStep3(struct Sprite* sprite) { sprite->y2 = 0; sprite->data[0] = 0; - sprite->callback = AnimItemStealStep2; + sprite->callback = AnimItemSteal_Step2; PlaySE12WithPanning(SE_M_BUBBLE2, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER)); } } @@ -3164,7 +3224,7 @@ static void AnimItemStealStep3(struct Sprite* sprite) // Moves a bag in a circular motion. // arg 0: y position // arg 1: initial wave offset -void AnimTrickBag(struct Sprite* sprite) +static void AnimTrickBag(struct Sprite* sprite) { int a; int b; @@ -3193,7 +3253,7 @@ void AnimTrickBag(struct Sprite* sprite) sprite->data[4] = 20; sprite->x2 = Cos(sprite->data[1], 60); sprite->y2 = Sin(sprite->data[1], 20); - sprite->callback = AnimTrickBagStep1; + sprite->callback = AnimTrickBag_Step1; if (sprite->data[1] > 0 && sprite->data[1] < 192) sprite->subpriority = 31; else @@ -3201,7 +3261,7 @@ void AnimTrickBag(struct Sprite* sprite) } } -static void AnimTrickBagStep1(struct Sprite* sprite) +static void AnimTrickBag_Step1(struct Sprite* sprite) { switch (sprite->data[3]) { @@ -3225,20 +3285,20 @@ static void AnimTrickBagStep1(struct Sprite* sprite) { sprite->data[0] = 0; sprite->data[2] = 0; - sprite->callback = AnimTrickBagStep2; + sprite->callback = AnimTrickBag_Step2; } break; } } -static void AnimTrickBagStep2(struct Sprite* sprite) +static void AnimTrickBag_Step2(struct Sprite* sprite) { if (sprite->data[2] == gTrickBagCoordinates[sprite->data[0]][1]) { if (gTrickBagCoordinates[sprite->data[0]][2] == 127) { sprite->data[0] = 0; - sprite->callback = AnimTrickBagStep3; + sprite->callback = AnimTrickBag_Step3; } sprite->data[2] = 0; @@ -3261,7 +3321,7 @@ static void AnimTrickBagStep2(struct Sprite* sprite) } } -static void AnimTrickBagStep3(struct Sprite* sprite) +static void AnimTrickBag_Step3(struct Sprite* sprite) { if (sprite->data[0] > 20) DestroyAnimSprite(sprite); @@ -3293,10 +3353,10 @@ void AnimTask_LeafBlade(u8 taskId) gSprites[task->data[2]].data[4] = task->data[7] + (task->data[11] / 2 + 10) * task->data[5]; gSprites[task->data[2]].data[5] = LeafBladeGetPosFactor(&gSprites[task->data[2]]); InitAnimArcTranslation(&gSprites[task->data[2]]); - task->func = AnimTask_LeafBladeStep; + task->func = AnimTask_LeafBlade_Step; } -static void AnimTask_LeafBladeStep(u8 taskId) +static void AnimTask_LeafBlade_Step(u8 taskId) { struct Task* task = &gTasks[taskId]; struct Sprite* sprite = &gSprites[task->data[2]]; @@ -3305,7 +3365,7 @@ static void AnimTask_LeafBladeStep(u8 taskId) switch (a) { case 4: - AnimTask_LeafBladeStep2(task, taskId); + AnimTask_LeafBlade_Step2(task, taskId); if (TranslateAnimHorizontalArc(sprite)) { task->data[15] = 5; @@ -3313,7 +3373,7 @@ static void AnimTask_LeafBladeStep(u8 taskId) } break; case 8: - AnimTask_LeafBladeStep2(task, taskId); + AnimTask_LeafBlade_Step2(task, taskId); if (TranslateAnimHorizontalArc(sprite)) { task->data[15] = 9; @@ -3321,7 +3381,7 @@ static void AnimTask_LeafBladeStep(u8 taskId) } break; case 0: - AnimTask_LeafBladeStep2(task, taskId); + AnimTask_LeafBlade_Step2(task, taskId); if (TranslateAnimHorizontalArc(sprite)) { task->data[15] = 1; @@ -3347,7 +3407,7 @@ static void AnimTask_LeafBladeStep(u8 taskId) task->data[0]++; break; case 2: - AnimTask_LeafBladeStep2(task, taskId); + AnimTask_LeafBlade_Step2(task, taskId); if (TranslateAnimHorizontalArc(sprite)) { task->data[15] = 3; @@ -3390,7 +3450,7 @@ static void AnimTask_LeafBladeStep(u8 taskId) task->data[0]++; break; case 6: - AnimTask_LeafBladeStep2(task, taskId); + AnimTask_LeafBlade_Step2(task, taskId); if (TranslateAnimHorizontalArc(sprite)) { task->data[15] = 7; @@ -3433,7 +3493,7 @@ static void AnimTask_LeafBladeStep(u8 taskId) task->data[0]++; break; case 10: - AnimTask_LeafBladeStep2(task, taskId); + AnimTask_LeafBlade_Step2(task, taskId); if (TranslateAnimHorizontalArc(sprite)) { task->data[15] = 11; @@ -3461,7 +3521,7 @@ static void AnimTask_LeafBladeStep(u8 taskId) break; } case 12: - AnimTask_LeafBladeStep2(task, taskId); + AnimTask_LeafBlade_Step2(task, taskId); if (TranslateAnimHorizontalArc(sprite)) { DestroySprite(sprite); @@ -3492,7 +3552,7 @@ static s16 LeafBladeGetPosFactor(struct Sprite* sprite) return var; } -static void AnimTask_LeafBladeStep2(struct Task* task, u8 taskId) +static void AnimTask_LeafBlade_Step2(struct Task* task, u8 taskId) { task->data[14]++; if (task->data[14] > 0) @@ -3513,12 +3573,12 @@ static void AnimTask_LeafBladeStep2(struct Task* task, u8 taskId) gTasks[taskId].data[13]++; StartSpriteAnim(&gSprites[spriteId], task->data[3]); gSprites[spriteId].subpriority = task->data[4]; - gSprites[spriteId].callback = AnimTask_LeafBladeStep2_Callback; + gSprites[spriteId].callback = AnimTask_LeafBlade_Step2_Callback; } } } -static void AnimTask_LeafBladeStep2_Callback(struct Sprite* sprite) +static void AnimTask_LeafBlade_Step2_Callback(struct Sprite* sprite) { sprite->data[0]++; if (sprite->data[0] > 1) @@ -3534,7 +3594,7 @@ static void AnimTask_LeafBladeStep2_Callback(struct Sprite* sprite) } } -void AnimFlyingParticle(struct Sprite* sprite) +static void AnimFlyingParticle(struct Sprite* sprite) { u8 battler; @@ -3580,10 +3640,10 @@ void AnimFlyingParticle(struct Sprite* sprite) break; } - sprite->callback = AnimFlyingParticleStep; + sprite->callback = AnimFlyingParticle_Step; } -static void AnimFlyingParticleStep(struct Sprite* sprite) +static void AnimFlyingParticle_Step(struct Sprite* sprite) { int a = sprite->data[7]; @@ -3636,7 +3696,7 @@ void AnimTask_CycleMagicalLeafPal(u8 taskId) DestroyAnimVisualTask(taskId); } -void AnimNeedleArmSpike(struct Sprite* sprite) +static void AnimNeedleArmSpike(struct Sprite* sprite) { u8 a; u8 b; @@ -3688,11 +3748,11 @@ void AnimNeedleArmSpike(struct Sprite* sprite) c -= 0x8000; TrySetSpriteRotScale(sprite, 0, 0x100, 0x100, c); - sprite->callback = AnimNeedleArmSpikeStep; + sprite->callback = AnimNeedleArmSpike_Step; } } -static void AnimNeedleArmSpikeStep(struct Sprite* sprite) +static void AnimNeedleArmSpike_Step(struct Sprite* sprite) { if (sprite->data[0]) { @@ -3708,13 +3768,13 @@ static void AnimNeedleArmSpikeStep(struct Sprite* sprite) } } -static void sub_80A43DC(struct Sprite* sprite) +static void AnimWhipHit_WaitEnd(struct Sprite* sprite) { if (sprite->animEnded) DestroyAnimSprite(sprite); } -void AnimSlidingHit(struct Sprite* sprite) +static void AnimSlidingHit(struct Sprite* sprite) { if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) { @@ -3731,17 +3791,17 @@ void AnimSlidingHit(struct Sprite* sprite) StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); } -void AnimWhipHit(struct Sprite* sprite) +static void AnimWhipHit(struct Sprite* sprite) { if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) StartSpriteAnim(sprite, 1); - sprite->callback = sub_80A43DC; + sprite->callback = AnimWhipHit_WaitEnd; SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]); sprite->y += gBattleAnimArgs[1]; } -void AnimFlickeringPunch(struct Sprite* sprite) +static void AnimFlickeringPunch(struct Sprite* sprite) { sprite->x += gBattleAnimArgs[0]; sprite->y += gBattleAnimArgs[1]; @@ -3759,14 +3819,14 @@ void AnimFlickeringPunch(struct Sprite* sprite) // arg 0: initial x pixel offset // arg 1: initial y pixel offset // arg 2: slice direction; 0 = right-to-left, 1 = left-to-right -void AnimCuttingSlice(struct Sprite* sprite) +static void AnimCuttingSlice(struct Sprite* sprite) { 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 = AnimSliceStep; + sprite->callback = AnimSlice_Step; if (gBattleAnimArgs[2] == 0) { sprite->x += gBattleAnimArgs[0]; @@ -3785,7 +3845,7 @@ void AnimCuttingSlice(struct Sprite* sprite) sprite->data[1] = -sprite->data[1]; } -void AnimAirCutterSlice(struct Sprite* sprite) +static void AnimAirCutterSlice(struct Sprite* sprite) { u8 a; u8 b; @@ -3817,7 +3877,7 @@ void AnimAirCutterSlice(struct Sprite* sprite) if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) sprite->y += 8; - sprite->callback = AnimSliceStep; + sprite->callback = AnimSlice_Step; if (gBattleAnimArgs[2] == 0) { sprite->x += gBattleAnimArgs[0]; @@ -3836,7 +3896,7 @@ void AnimAirCutterSlice(struct Sprite* sprite) sprite->data[1] = -sprite->data[1]; } -static void AnimSliceStep(struct Sprite* sprite) +static void AnimSlice_Step(struct Sprite* sprite) { sprite->data[3] += sprite->data[1]; sprite->data[4] += sprite->data[2]; @@ -3857,7 +3917,7 @@ static void AnimSliceStep(struct Sprite* sprite) } } -void sub_80A4738(struct Sprite* sprite) +static void UnusedFlickerAnim(struct Sprite* sprite) { if (sprite->data[2] > 1) { @@ -3890,7 +3950,7 @@ void sub_80A4738(struct Sprite* sprite) } } -void AnimCirclingMusicNote(struct Sprite* sprite) +static void AnimCirclingMusicNote(struct Sprite* sprite) { sprite->data[0] = gBattleAnimArgs[2]; if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) @@ -3923,7 +3983,7 @@ static void AnimCirclingMusicNote_Step(struct Sprite* sprite) DestroyAnimSprite(sprite); } -void AnimProtect(struct Sprite* sprite) +static void AnimProtect(struct Sprite* sprite) { if (IsContest()) gBattleAnimArgs[1] += 8; @@ -3940,10 +4000,10 @@ void AnimProtect(struct Sprite* sprite) sprite->data[7] = 16; SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND); SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16 - sprite->data[7], sprite->data[7])); - sprite->callback = AnimProtectStep; + sprite->callback = AnimProtect_Step; } -static void AnimProtectStep(struct Sprite *sprite) +static void AnimProtect_Step(struct Sprite *sprite) { int i, id, savedPal; sprite->data[5] += 96; @@ -3986,7 +4046,7 @@ static void AnimProtectStep(struct Sprite *sprite) } } -void AnimMilkBottle(struct Sprite* sprite) +static void AnimMilkBottle(struct Sprite* sprite) { sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + 0xFFE8; @@ -3999,10 +4059,10 @@ void AnimMilkBottle(struct Sprite* sprite) sprite->data[7] = 16; SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND); SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(sprite->data[6], sprite->data[7])); - sprite->callback = AnimMilkBottleStep1; + sprite->callback = AnimMilkBottle_Step1; } -static void AnimMilkBottleStep1(struct Sprite* sprite) +static void AnimMilkBottle_Step1(struct Sprite* sprite) { switch (sprite->data[0]) { @@ -4035,7 +4095,7 @@ static void AnimMilkBottleStep1(struct Sprite* sprite) } break; case 2: - AnimMilkBottleStep2(sprite, 16, 4); + AnimMilkBottle_Step2(sprite, 16, 4); if (++sprite->data[1] > 2) { sprite->data[1] = 0; @@ -4075,7 +4135,7 @@ static void AnimMilkBottleStep1(struct Sprite* sprite) } } -static void AnimMilkBottleStep2(struct Sprite* sprite, int unk1, int unk2) +static void AnimMilkBottle_Step2(struct Sprite* sprite, int unk1, int unk2) { if (sprite->data[3] <= 11) sprite->data[4] += 2; @@ -4096,7 +4156,7 @@ static void AnimMilkBottleStep2(struct Sprite* sprite, int unk1, int unk2) sprite->data[3] = 0; } -void AnimGrantingStars(struct Sprite* sprite) +static void AnimGrantingStars(struct Sprite* sprite) { if (!gBattleAnimArgs[2]) SetSpriteCoordsToAnimAttackerCoords(sprite); @@ -4110,7 +4170,7 @@ void AnimGrantingStars(struct Sprite* sprite) sprite->callback = TranslateSpriteLinearFixedPoint; } -void AnimSparkingStars(struct Sprite* sprite) +static void AnimSparklingStars(struct Sprite* sprite) { u8 battler; @@ -4148,7 +4208,7 @@ void AnimSparkingStars(struct Sprite* sprite) sprite->callback = TranslateSpriteLinearFixedPoint; } -void AnimBubbleBurst(struct Sprite* sprite) +static void AnimBubbleBurst(struct Sprite* sprite) { SetSpriteCoordsToAnimAttackerCoords(sprite); if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) @@ -4179,7 +4239,7 @@ static void AnimBubbleBurst_Step(struct Sprite* sprite) DestroyAnimSprite(sprite); } -void AnimSleepLetterZ(struct Sprite* sprite) +static void AnimSleepLetterZ(struct Sprite* sprite) { SetSpriteCoordsToAnimAttackerCoords(sprite); if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) @@ -4196,10 +4256,10 @@ void AnimSleepLetterZ(struct Sprite* sprite) StartSpriteAffineAnim(sprite, 1); } - sprite->callback = AnimSleepLetterZStep; + sprite->callback = AnimSleepLetterZ_Step; } -static void AnimSleepLetterZStep(struct Sprite* sprite) +static void AnimSleepLetterZ_Step(struct Sprite* sprite) { sprite->y2 = -(sprite->data[0] / 0x28); sprite->x2 = sprite->data[4] / 10; @@ -4209,23 +4269,23 @@ static void AnimSleepLetterZStep(struct Sprite* sprite) DestroySpriteAndMatrix(sprite); } -void AnimLockOnTarget(struct Sprite* sprite) +static void AnimLockOnTarget(struct Sprite* sprite) { sprite->x -= 32; sprite->y -= 32; sprite->data[0] = 20; sprite->callback = WaitAnimForDuration; - StoreSpriteCallbackInData6(sprite, AnimLockOnTargetStep1); + StoreSpriteCallbackInData6(sprite, AnimLockOnTarget_Step1); } -static void AnimLockOnTargetStep1(struct Sprite* sprite) +static void AnimLockOnTarget_Step1(struct Sprite* sprite) { switch (sprite->data[5] & 1) { case 0: sprite->data[0] = 1; sprite->callback = WaitAnimForDuration; - StoreSpriteCallbackInData6(sprite, AnimLockOnTargetStep1); + StoreSpriteCallbackInData6(sprite, AnimLockOnTarget_Step1); break; case 1: sprite->x += sprite->x2; @@ -4236,7 +4296,7 @@ static void AnimLockOnTargetStep1(struct Sprite* sprite) sprite->data[2] = sprite->x + sInclineMonCoordTable[sprite->data[5] >> 8][0]; sprite->data[4] = sprite->y + sInclineMonCoordTable[sprite->data[5] >> 8][1]; sprite->callback = StartAnimLinearTranslation; - StoreSpriteCallbackInData6(sprite, AnimLockOnTargetStep2); + StoreSpriteCallbackInData6(sprite, AnimLockOnTarget_Step2); sprite->data[5] += 0x100; PlaySE12WithPanning(SE_M_LOCK_ON, BattleAnimAdjustPanning(SOUND_PAN_TARGET)); break; @@ -4245,21 +4305,21 @@ static void AnimLockOnTargetStep1(struct Sprite* sprite) sprite->data[5] ^= 1; } -static void AnimLockOnTargetStep2(struct Sprite* sprite) +static void AnimLockOnTarget_Step2(struct Sprite* sprite) { if ((sprite->data[5] >> 8) == 4) { sprite->data[0] = 10; sprite->callback = WaitAnimForDuration; - StoreSpriteCallbackInData6(sprite, AnimLockOnTargetStep3); + StoreSpriteCallbackInData6(sprite, AnimLockOnTarget_Step3); } else { - sprite->callback = AnimLockOnTargetStep1; + sprite->callback = AnimLockOnTarget_Step1; } } -static void AnimLockOnTargetStep3(struct Sprite* sprite) +static void AnimLockOnTarget_Step3(struct Sprite* sprite) { s16 a; s16 b; @@ -4270,7 +4330,7 @@ static void AnimLockOnTargetStep3(struct Sprite* sprite) sprite->data[1] = 0; sprite->data[2] = 0; sprite->callback = WaitAnimForDuration; - StoreSpriteCallbackInData6(sprite, AnimLockOnTargetStep4); + StoreSpriteCallbackInData6(sprite, AnimLockOnTarget_Step4); } else { @@ -4302,11 +4362,11 @@ static void AnimLockOnTargetStep3(struct Sprite* sprite) sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + a; sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + b; sprite->callback = StartAnimLinearTranslation; - StoreSpriteCallbackInData6(sprite, AnimLockOnTargetStep5); + StoreSpriteCallbackInData6(sprite, AnimLockOnTarget_Step5); } } -static void AnimLockOnTargetStep4(struct Sprite* sprite) +static void AnimLockOnTarget_Step4(struct Sprite* sprite) { if (sprite->data[2] == 0) { @@ -4318,7 +4378,7 @@ static void AnimLockOnTargetStep4(struct Sprite* sprite) sprite->data[1] = 0; } - BlendPalettes(SelectBattleAnimSpriteAndBgPalettes(1, 1, 1, 1, 1, 0, 0), sprite->data[1], RGB_WHITE); + BlendPalettes(GetBattlePalettesMask(1, 1, 1, 1, 1, 0, 0), sprite->data[1], RGB_WHITE); if (sprite->data[1] == 16) { int pal; @@ -4329,21 +4389,21 @@ static void AnimLockOnTargetStep4(struct Sprite* sprite) } else if (sprite->data[1] == 0) { - sprite->callback = AnimLockOnTargetStep5; + sprite->callback = AnimLockOnTarget_Step5; } } -static void AnimLockOnTargetStep5(struct Sprite* sprite) +static void AnimLockOnTarget_Step5(struct Sprite* sprite) { if ((u16)gBattleAnimArgs[7] == 0xFFFF) { sprite->data[1] = 0; sprite->data[0] = 0; - sprite->callback = AnimLockOnTargetStep6; + sprite->callback = AnimLockOnTarget_Step6; } } -static void AnimLockOnTargetStep6(struct Sprite* sprite) +static void AnimLockOnTarget_Step6(struct Sprite* sprite) { if (sprite->data[0] % 3 == 0) { @@ -4356,7 +4416,7 @@ static void AnimLockOnTargetStep6(struct Sprite* sprite) DestroyAnimSprite(sprite); } -void AnimLockOnMoveTarget(struct Sprite* sprite) +static void AnimLockOnMoveTarget(struct Sprite* sprite) { sprite->oam.affineParam = gBattleAnimArgs[0]; if ((s16)sprite->oam.affineParam == 1) @@ -4388,38 +4448,38 @@ void AnimLockOnMoveTarget(struct Sprite* sprite) sprite->callback(sprite); } -void AnimBowMon(struct Sprite* sprite) +static void AnimBowMon(struct Sprite* sprite) { sprite->invisible = TRUE; sprite->data[0] = 0; switch (gBattleAnimArgs[0]) { case 0: - sprite->callback = AnimBowMonStep1; + sprite->callback = AnimBowMon_Step1; break; case 1: - sprite->callback = AnimBowMonStep2; + sprite->callback = AnimBowMon_Step2; break; case 2: - sprite->callback = AnimBowMonStep3; + sprite->callback = AnimBowMon_Step3; break; default: - sprite->callback = AnimBowMonStep4; + sprite->callback = AnimBowMon_Step4; break; } } -static void AnimBowMonStep1(struct Sprite* sprite) +static void AnimBowMon_Step1(struct Sprite* sprite) { sprite->data[0] = 6; sprite->data[1] = (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) ? 2 : -2; sprite->data[2] = 0; sprite->data[3] = gBattlerSpriteIds[gBattleAnimAttacker]; - StoreSpriteCallbackInData6(sprite, AnimBowMonStep1_Callback); - sprite->callback = TranslateMonSpriteLinear; + StoreSpriteCallbackInData6(sprite, AnimBowMon_Step1_Callback); + sprite->callback = TranslateSpriteLinearById; } -static void AnimBowMonStep1_Callback(struct Sprite* sprite) +static void AnimBowMon_Step1_Callback(struct Sprite* sprite) { if (sprite->data[0] == 0) { @@ -4435,30 +4495,30 @@ static void AnimBowMonStep1_Callback(struct Sprite* sprite) if (++sprite->data[0] > 3) { sprite->data[0] = 0; - sprite->callback = AnimBowMonStep4; + sprite->callback = AnimBowMon_Step4; } } -static void AnimBowMonStep2(struct Sprite* sprite) +static void AnimBowMon_Step2(struct Sprite* sprite) { sprite->data[0] = 4; sprite->data[1] = (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) ? -3 : 3; sprite->data[2] = 0; sprite->data[3] = gBattlerSpriteIds[gBattleAnimAttacker]; - StoreSpriteCallbackInData6(sprite, AnimBowMonStep4); - sprite->callback = TranslateMonSpriteLinear; + StoreSpriteCallbackInData6(sprite, AnimBowMon_Step4); + sprite->callback = TranslateSpriteLinearById; } -static void AnimBowMonStep3(struct Sprite* sprite) +static void AnimBowMon_Step3(struct Sprite* sprite) { if (++sprite->data[0] > 8) { sprite->data[0] = 0; - sprite->callback = AnimBowMonStep3_Callback; + sprite->callback = AnimBowMon_Step3_Callback; } } -static void AnimBowMonStep3_Callback(struct Sprite* sprite) +static void AnimBowMon_Step3_Callback(struct Sprite* sprite) { if (sprite->data[0] == 0) { @@ -4482,16 +4542,16 @@ static void AnimBowMonStep3_Callback(struct Sprite* sprite) if (++sprite->data[0] > 2) { ResetSpriteRotScale(sprite->data[3]); - sprite->callback = AnimBowMonStep4; + sprite->callback = AnimBowMon_Step4; } } -static void AnimBowMonStep4(struct Sprite* sprite) +static void AnimBowMon_Step4(struct Sprite* sprite) { DestroyAnimSprite(sprite); } -void AnimTipMon(struct Sprite *sprite) +static void AnimTipMon(struct Sprite *sprite) { sprite->data[0] = 0; sprite->callback = AnimTipMon_Step; @@ -4682,7 +4742,7 @@ static void AnimTask_SkullBashPositionReset(u8 taskId) } } -void AnimSlashSlice(struct Sprite* sprite) +static void AnimSlashSlice(struct Sprite* sprite) { if (gBattleAnimArgs[0] == 0) { @@ -4697,48 +4757,48 @@ void AnimSlashSlice(struct Sprite* sprite) sprite->data[0] = 0; sprite->data[1] = 0; - StoreSpriteCallbackInData6(sprite, AnimFalseSwipeSliceStep3); + StoreSpriteCallbackInData6(sprite, AnimFalseSwipeSlice_Step3); sprite->callback = RunStoredCallbackWhenAnimEnds; } -void AnimFalseSwipeSlice(struct Sprite* sprite) +static void AnimFalseSwipeSlice(struct Sprite* sprite) { sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + 0xFFD0; sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); - StoreSpriteCallbackInData6(sprite, AnimFalseSwipeSliceStep1); + StoreSpriteCallbackInData6(sprite, AnimFalseSwipeSlice_Step1); sprite->callback = RunStoredCallbackWhenAnimEnds; } -void AnimFalseSwipePositionedSlice(struct Sprite* sprite) +static void AnimFalseSwipePositionedSlice(struct Sprite* sprite) { sprite->x = sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + 0xFFD0 + gBattleAnimArgs[0]; sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); StartSpriteAnim(sprite, 1); sprite->data[0] = 0; sprite->data[1] = 0; - sprite->callback = AnimFalseSwipeSliceStep3; + sprite->callback = AnimFalseSwipeSlice_Step3; } -static void AnimFalseSwipeSliceStep1(struct Sprite* sprite) +static void AnimFalseSwipeSlice_Step1(struct Sprite* sprite) { if (++sprite->data[0] > 8) { sprite->data[0] = 12; sprite->data[1] = 8; sprite->data[2] = 0; - StoreSpriteCallbackInData6(sprite, AnimFalseSwipeSliceStep2); + StoreSpriteCallbackInData6(sprite, AnimFalseSwipeSlice_Step2); sprite->callback = TranslateSpriteLinear; } } -static void AnimFalseSwipeSliceStep2(struct Sprite* sprite) +static void AnimFalseSwipeSlice_Step2(struct Sprite* sprite) { sprite->data[0] = 0; sprite->data[1] = 0; - sprite->callback = AnimFalseSwipeSliceStep3; + sprite->callback = AnimFalseSwipeSlice_Step3; } -static void AnimFalseSwipeSliceStep3(struct Sprite* sprite) +static void AnimFalseSwipeSlice_Step3(struct Sprite* sprite) { if (++sprite->data[0] > 1) { @@ -4749,7 +4809,7 @@ static void AnimFalseSwipeSliceStep3(struct Sprite* sprite) } } -void AnimEndureEnergy(struct Sprite* sprite) +static void AnimEndureEnergy(struct Sprite* sprite) { if (gBattleAnimArgs[0] == 0) { @@ -4764,10 +4824,10 @@ void AnimEndureEnergy(struct Sprite* sprite) sprite->data[0] = 0; sprite->data[1] = gBattleAnimArgs[3]; - sprite->callback = AnimEndureEnergyStep; + sprite->callback = AnimEndureEnergy_Step; } -static void AnimEndureEnergyStep(struct Sprite* sprite) +static void AnimEndureEnergy_Step(struct Sprite* sprite) { if (++sprite->data[0] > sprite->data[1]) { @@ -4780,7 +4840,7 @@ static void AnimEndureEnergyStep(struct Sprite* sprite) DestroyAnimSprite(sprite); } -void AnimSharpenSphere(struct Sprite* sprite) +static void AnimSharpenSphere(struct Sprite* sprite) { sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) - 12; @@ -4790,10 +4850,10 @@ void AnimSharpenSphere(struct Sprite* sprite) sprite->data[3] = 0; sprite->data[4] = 0; sprite->data[5] = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER); - sprite->callback = AnimSharpenSphereStep; + sprite->callback = AnimSharpenSphere_Step; } -static void AnimSharpenSphereStep(struct Sprite* sprite) +static void AnimSharpenSphere_Step(struct Sprite* sprite) { if (++sprite->data[0] >= sprite->data[1]) { @@ -4817,7 +4877,7 @@ static void AnimSharpenSphereStep(struct Sprite* sprite) DestroyAnimSprite(sprite); } -void AnimConversion(struct Sprite* sprite) +static void AnimConversion(struct Sprite* sprite) { if (sprite->data[0] == 0) { @@ -4857,15 +4917,15 @@ void AnimTask_ConversionAlphaBlend(u8 taskId) } } -void AnimConversion2(struct Sprite* sprite) +static void AnimConversion2(struct Sprite* sprite) { InitSpritePosToAnimTarget(sprite, FALSE); sprite->animPaused = TRUE; sprite->data[0] = gBattleAnimArgs[2]; - sprite->callback = AnimConversion2Step; + sprite->callback = AnimConversion2_Step; } -static void AnimConversion2Step(struct Sprite* sprite) +static void AnimConversion2_Step(struct Sprite* sprite) { if (sprite->data[0]) { @@ -4894,33 +4954,34 @@ void AnimTask_Conversion2AlphaBlend(u8 taskId) } } -void sub_80A5E34(u8 taskId) +// Unused +static void AnimTask_HideBattlersHealthbox(u8 taskId) { u8 i; for (i = 0; i < gBattlersCount; i++) { - if (gBattleAnimArgs[0] == 1 && GetBattlerSide(i) == B_SIDE_PLAYER) + if (gBattleAnimArgs[0] == TRUE && GetBattlerSide(i) == B_SIDE_PLAYER) SetHealthboxSpriteInvisible(gHealthboxSpriteIds[i]); - if (gBattleAnimArgs[1] == 1 && GetBattlerSide(i) == B_SIDE_OPPONENT) + if (gBattleAnimArgs[1] == TRUE && GetBattlerSide(i) == B_SIDE_OPPONENT) SetHealthboxSpriteInvisible(gHealthboxSpriteIds[i]); } DestroyAnimVisualTask(taskId); } -void sub_80A5EA8(u8 taskId) +// Unused +static void AnimTask_ShowBattlersHealthbox(u8 taskId) { u8 i; - for (i = 0; i < gBattlersCount; i++) SetHealthboxSpriteVisible(gHealthboxSpriteIds[i]); DestroyAnimVisualTask(taskId); } -void AnimMoon(struct Sprite* sprite) +static void AnimMoon(struct Sprite* sprite) { if (IsContest()) { @@ -4936,16 +4997,16 @@ void AnimMoon(struct Sprite* sprite) sprite->oam.shape = SPRITE_SHAPE(8x8); sprite->oam.size = SPRITE_SIZE(64x32); sprite->data[0] = 0; - sprite->callback = AnimMoonStep; + sprite->callback = AnimMoon_Step; } -static void AnimMoonStep(struct Sprite* sprite) +static void AnimMoon_Step(struct Sprite* sprite) { if (sprite->data[0]) DestroyAnimSprite(sprite); } -void AnimMoonlightSparkle(struct Sprite* sprite) +static void AnimMoonlightSparkle(struct Sprite* sprite) { sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + gBattleAnimArgs[0]; sprite->y = gBattleAnimArgs[1]; @@ -4954,10 +5015,10 @@ void AnimMoonlightSparkle(struct Sprite* sprite) sprite->data[2] = 0; sprite->data[3] = 0; sprite->data[4] = 1; - sprite->callback = AnimMoonlightSparkleStep; + sprite->callback = AnimMoonlightSparkle_Step; } -static void AnimMoonlightSparkleStep(struct Sprite* sprite) +static void AnimMoonlightSparkle_Step(struct Sprite* sprite) { if (++sprite->data[1] > 1) { @@ -4973,12 +5034,12 @@ static void AnimMoonlightSparkleStep(struct Sprite* sprite) DestroyAnimSprite(sprite); } -void AnimTask_FadeScreenBlueStep(u8); +void AnimTask_MoonlightEndFade_Step(u8); -void AnimTask_FadeScreenBlue(u8 taskId) +void AnimTask_MoonlightEndFade(u8 taskId) { - int a = SelectBattleAnimSpriteAndBgPalettes(1, 0, 0, 0, 0, 0, 0) & 0xFFFF; + int a = GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE) & 0xFFFF; int b; int c; int d; @@ -4993,17 +5054,17 @@ void AnimTask_FadeScreenBlue(u8 taskId) gTasks[taskId].data[7] = 13; gTasks[taskId].data[8] = 14; gTasks[taskId].data[9] = 15; - b = SelectBattlerSpritePalettes(1, 1, 1, 1); + b = GetBattleMonSpritePalettesMask(1, 1, 1, 1); c = a | b; StorePointerInVars(&gTasks[taskId].data[14], &gTasks[taskId].data[15], (void *)c); b = b | (0x10000 << IndexOfSpritePaletteTag(ANIM_TAG_MOON)); d = IndexOfSpritePaletteTag(ANIM_TAG_GREEN_SPARKLE); BeginNormalPaletteFade((0x10000 << d) | b, 0, 0, 16, RGB(27, 29, 31)); - gTasks[taskId].func = AnimTask_FadeScreenBlueStep; + gTasks[taskId].func = AnimTask_MoonlightEndFade_Step; gTasks[taskId].func(taskId); } -void AnimTask_FadeScreenBlueStep(u8 taskId) +void AnimTask_MoonlightEndFade_Step(u8 taskId) { struct Task* task = &gTasks[taskId]; @@ -5082,7 +5143,7 @@ void AnimTask_FadeScreenBlueStep(u8 taskId) } } -void AnimHornHit(struct Sprite* sprite) +static void AnimHornHit(struct Sprite* sprite) { if (gBattleAnimArgs[2] < 2) gBattleAnimArgs[2] = 2; @@ -5126,10 +5187,10 @@ void AnimHornHit(struct Sprite* sprite) sprite->oam.matrixNum = (ST_OAM_HFLIP | ST_OAM_VFLIP); } - sprite->callback = AnimHornHitStep; + sprite->callback = AnimHornHit_Step; } -static void AnimHornHitStep(struct Sprite* sprite) +static void AnimHornHit_Step(struct Sprite* sprite) { sprite->data[2] += sprite->data[3]; sprite->data[4] += sprite->data[5]; @@ -5169,19 +5230,19 @@ void AnimTask_DoubleTeam(u8 taskId) gSprites[obj].data[0] = 0; gSprites[obj].data[1] = i << 7; gSprites[obj].data[2] = taskId; - gSprites[obj].callback = AnimTask_DoubleTeamCallback; + gSprites[obj].callback = AnimDoubleTeam; task->data[3]++; i++; } - task->func = AnimTask_DoubleTeamStep; + task->func = AnimTask_DoubleTeam_Step; if (GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker) == 1) ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG1_ON); else ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG2_ON); } -static void AnimTask_DoubleTeamStep(u8 taskId) +static void AnimTask_DoubleTeam_Step(u8 taskId) { struct Task* task = &gTasks[taskId]; @@ -5197,7 +5258,7 @@ static void AnimTask_DoubleTeamStep(u8 taskId) } } -static void AnimTask_DoubleTeamCallback(struct Sprite* sprite) +static void AnimDoubleTeam(struct Sprite* sprite) { if (++sprite->data[3] > 1) { @@ -5208,7 +5269,7 @@ static void AnimTask_DoubleTeamCallback(struct Sprite* sprite) if (sprite->data[0] > 64) { gTasks[sprite->data[2]].data[3]--; - obj_delete_but_dont_free_vram(sprite); + DestroySpriteWithActiveSheet(sprite); } else { @@ -5219,7 +5280,7 @@ static void AnimTask_DoubleTeamCallback(struct Sprite* sprite) } } -void AnimSuperFang(struct Sprite* sprite) +static void AnimSuperFang(struct Sprite* sprite) { StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); sprite->callback = RunStoredCallbackWhenAnimEnds; @@ -5263,88 +5324,94 @@ void AnimTask_MusicNotesClearRainbowBlend(u8 taskId) DestroyAnimVisualTask(taskId); } -void AnimWavyMusicNotes(struct Sprite* sprite) +#define sMoveTimer data[0] +#define sBlendTableIdx data[1] +#define sBlendTimer data[2] +#define sBlendCycleTime data[3] +#define sX data[4] +#define sY data[5] +#define sVelocX data[6] +#define sVelocY data[7] + +static void AnimWavyMusicNotes(struct Sprite* sprite) { u8 index; - u8 a; - u8 b; - + u8 x, y; SetSpriteCoordsToAnimAttackerCoords(sprite); StartSpriteAnim(sprite, gBattleAnimArgs[0]); if ((index = IndexOfSpritePaletteTag(sParticlesColorBlendTable[gBattleAnimArgs[1]][0])) != 0xFF) sprite->oam.paletteNum = index; - sprite->data[1] = gBattleAnimArgs[1]; - sprite->data[2] = 0; - sprite->data[3] = gBattleAnimArgs[2]; + sprite->sBlendTableIdx = gBattleAnimArgs[1]; + sprite->sBlendTimer = 0; + sprite->sBlendCycleTime = gBattleAnimArgs[2]; if (IsContest()) { - a = 48; - b = 40; + x = 48; + y = 40; } else { - a = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); - b = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); + x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); } - sprite->data[4] = sprite->x << 4; - sprite->data[5] = sprite->y << 4; - AnimWavyMusicNotesGetNextPos(a - sprite->x, b - sprite->y, &sprite->data[6], &sprite->data[7], 40); - sprite->callback = AnimWavyMusicNotesStep; + sprite->sX = sprite->x << 4; + sprite->sY = sprite->y << 4; + AnimWavyMusicNotes_CalcVelocity(x - sprite->x, y - sprite->y, &sprite->sVelocX, &sprite->sVelocY, 40); + sprite->callback = AnimWavyMusicNotes_Step; } -static void AnimWavyMusicNotesGetNextPos(s16 a, s16 b, s16 *c, s16 *d, s8 e) +static void AnimWavyMusicNotes_CalcVelocity(s16 x, s16 y, s16 *velocX, s16 *velocY, s8 xSpeedFactor) { - int f; - int g; - - if (a < 0) - e = -e; + int x2; + int time; + if (x < 0) + xSpeedFactor = -xSpeedFactor; - f = a << 8; - g = f / e; - if (g == 0) - g = 1; + x2 = x * 256; + time = x2 / xSpeedFactor; + if (time == 0) + time = 1; - *c = f / g; - *d = (b << 8) / g; + *velocX = x2 / time; + *velocY = (y * 256) / time; } -static void AnimWavyMusicNotesStep(struct Sprite* sprite) +static void AnimWavyMusicNotes_Step(struct Sprite* sprite) { - s16 y, yDelta; + s16 y, trigIdx; u8 index; - sprite->data[0]++; - yDelta = sprite->data[0] * 5 - ((sprite->data[0] * 5 / 256) << 8); - sprite->data[4] += sprite->data[6]; - sprite->data[5] += sprite->data[7]; - sprite->x = sprite->data[4] >> 4; - sprite->y = sprite->data[5] >> 4; - sprite->y2 = Sin(yDelta, 15); + sprite->sMoveTimer++; + trigIdx = sprite->sMoveTimer * 5 - ((sprite->sMoveTimer * 5 / 256) << 8); + sprite->sX += sprite->sVelocX; + sprite->sY += sprite->sVelocY; + sprite->x = sprite->sX >> 4; + sprite->y = sprite->sY >> 4; + sprite->y2 = Sin(trigIdx, 15); y = sprite->y; - if (sprite->x < -16 || sprite->x > 256 || y < -16 || y > 128) + if (sprite->x < -16 || sprite->x > DISPLAY_WIDTH + 16 || y < -16 || y > DISPLAY_HEIGHT - 32) { DestroySpriteAndMatrix(sprite); } else { - if (sprite->data[3] && ++sprite->data[2] > sprite->data[3]) + if (sprite->sBlendCycleTime && ++sprite->sBlendTimer > sprite->sBlendCycleTime) { - sprite->data[2] = 0; - if (++sprite->data[1] > 3) - sprite->data[1] = 0; + sprite->sBlendTimer = 0; + if (++sprite->sBlendTableIdx > 3) + sprite->sBlendTableIdx = 0; - index = IndexOfSpritePaletteTag(sParticlesColorBlendTable[sprite->data[1]][0]); + index = IndexOfSpritePaletteTag(sParticlesColorBlendTable[sprite->sBlendTableIdx][0]); if (index != 0xFF) sprite->oam.paletteNum = index; } } } -void AnimFlyingMusicNotes(struct Sprite* sprite) +static void AnimFlyingMusicNotes(struct Sprite* sprite) { if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT) gBattleAnimArgs[1] *= -1; @@ -5358,10 +5425,10 @@ void AnimFlyingMusicNotes(struct Sprite* sprite) sprite->data[5] = sprite->y << 4; sprite->data[6] = (gBattleAnimArgs[1] << 4) / 5; sprite->data[7] = (gBattleAnimArgs[2] << 7) / 5; - sprite->callback = AnimFlyingMusicNotesStep; + sprite->callback = AnimFlyingMusicNotes_Step; } -static void AnimFlyingMusicNotesStep(struct Sprite* sprite) +static void AnimFlyingMusicNotes_Step(struct Sprite* sprite) { sprite->data[4] += sprite->data[6]; sprite->data[5] += sprite->data[7]; @@ -5380,7 +5447,7 @@ static void AnimFlyingMusicNotesStep(struct Sprite* sprite) DestroySpriteAndMatrix(sprite); } -void AnimBellyDrumHand(struct Sprite* sprite) +static void AnimBellyDrumHand(struct Sprite* sprite) { s16 a; @@ -5401,7 +5468,7 @@ void AnimBellyDrumHand(struct Sprite* sprite) StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); } -void AnimSlowFlyingMusicNotes(struct Sprite* sprite) +static void AnimSlowFlyingMusicNotes(struct Sprite* sprite) { s16 xDiff; u8 index; @@ -5421,10 +5488,10 @@ void AnimSlowFlyingMusicNotes(struct Sprite* sprite) sprite->data[4] = sprite->data[3] - 40; InitAnimLinearTranslation(sprite); sprite->data[5] = gBattleAnimArgs[3]; - sprite->callback = AnimSlowFlyingMusicNotesStep; + sprite->callback = AnimSlowFlyingMusicNotes_Step; } -static void AnimSlowFlyingMusicNotesStep(struct Sprite* sprite) +static void AnimSlowFlyingMusicNotes_Step(struct Sprite* sprite) { if (!AnimTranslateLinear(sprite)) { @@ -5454,9 +5521,9 @@ void SetSpriteNextToMonHead(u8 battler, struct Sprite* sprite) sprite->y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y_PIC_OFFSET) - (s16)GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_HEIGHT) / 4; } -void AnimThoughtBubble(struct Sprite* sprite) +static void AnimThoughtBubble(struct Sprite* sprite) { - u8 a; + u8 animNum; u8 battler; if (gBattleAnimArgs[0] == 0) @@ -5465,15 +5532,15 @@ void AnimThoughtBubble(struct Sprite* sprite) battler = gBattleAnimTarget; SetSpriteNextToMonHead(battler, sprite); - a = (GetBattlerSide(battler) == B_SIDE_PLAYER) ? 0 : 1; + animNum = (GetBattlerSide(battler) == B_SIDE_PLAYER) ? 0 : 1; sprite->data[0] = gBattleAnimArgs[1]; - sprite->data[1] = a + 2; - StartSpriteAnim(sprite, a); - StoreSpriteCallbackInData6(sprite, AnimThoughtBubbleStep); + sprite->data[1] = animNum + 2; + StartSpriteAnim(sprite, animNum); + StoreSpriteCallbackInData6(sprite, AnimThoughtBubble_Step); sprite->callback = RunStoredCallbackWhenAnimEnds; } -static void AnimThoughtBubbleStep(struct Sprite* sprite) +static void AnimThoughtBubble_Step(struct Sprite* sprite) { if (--sprite->data[0] == 0) { @@ -5483,7 +5550,7 @@ static void AnimThoughtBubbleStep(struct Sprite* sprite) } } -void AnimMetronomeFinger(struct Sprite* sprite) +static void AnimMetronomeFinger(struct Sprite* sprite) { u8 battler; @@ -5494,11 +5561,11 @@ void AnimMetronomeFinger(struct Sprite* sprite) SetSpriteNextToMonHead(battler, sprite); sprite->data[0] = 0; - StoreSpriteCallbackInData6(sprite, AnimMetronomeFingerStep); + StoreSpriteCallbackInData6(sprite, AnimMetronomeFinger_Step); sprite->callback = RunStoredCallbackWhenAffineAnimEnds; } -static void AnimMetronomeFingerStep(struct Sprite* sprite) +static void AnimMetronomeFinger_Step(struct Sprite* sprite) { if (++sprite->data[0] > 16) { @@ -5508,7 +5575,7 @@ static void AnimMetronomeFingerStep(struct Sprite* sprite) } } -void AnimFollowMeFinger(struct Sprite* sprite) +static void AnimFollowMeFinger(struct Sprite* sprite) { u8 battler; @@ -5527,17 +5594,17 @@ void AnimFollowMeFinger(struct Sprite* sprite) sprite->data[2] = sprite->subpriority; sprite->data[3] = sprite->subpriority + 4; sprite->data[4] = 0; - StoreSpriteCallbackInData6(sprite, AnimFollowMeFingerStep1); + StoreSpriteCallbackInData6(sprite, AnimFollowMeFinger_Step1); sprite->callback = RunStoredCallbackWhenAffineAnimEnds; } -static void AnimFollowMeFingerStep1(struct Sprite* sprite) +static void AnimFollowMeFinger_Step1(struct Sprite* sprite) { if (++sprite->data[4] > 12) - sprite->callback = AnimFollowMeFingerStep2; + sprite->callback = AnimFollowMeFinger_Step2; } -static void AnimFollowMeFingerStep2(struct Sprite* sprite) +static void AnimFollowMeFinger_Step2(struct Sprite* sprite) { s16 x1, x2; @@ -5547,7 +5614,7 @@ static void AnimFollowMeFingerStep2(struct Sprite* sprite) if (--sprite->data[0] == 0) { sprite->x2 = 0; - sprite->callback = AnimMetronomeFingerStep; + sprite->callback = AnimMetronomeFinger_Step; return; } else @@ -5567,7 +5634,7 @@ static void AnimFollowMeFingerStep2(struct Sprite* sprite) sprite->x2 = (x1 >> 3) + (x2 >> 1); } -void AnimTauntFinger(struct Sprite* sprite) +static void AnimTauntFinger(struct Sprite* sprite) { u8 battler; @@ -5588,21 +5655,21 @@ void AnimTauntFinger(struct Sprite* sprite) sprite->data[0] = 3; } - sprite->callback = AnimTauntFingerStep1; + sprite->callback = AnimTauntFinger_Step1; } -static void AnimTauntFingerStep1(struct Sprite* sprite) +static void AnimTauntFinger_Step1(struct Sprite* sprite) { if (++sprite->data[1] > 10) { sprite->data[1] = 0; StartSpriteAnim(sprite, sprite->data[0]); - StoreSpriteCallbackInData6(sprite, AnimTauntFingerStep2); + StoreSpriteCallbackInData6(sprite, AnimTauntFinger_Step2); sprite->callback = RunStoredCallbackWhenAnimEnds; } } -static void AnimTauntFingerStep2(struct Sprite* sprite) +static void AnimTauntFinger_Step2(struct Sprite* sprite) { if (++sprite->data[1] > 5) DestroyAnimSprite(sprite); diff --git a/src/battle_anim_effects_2.c b/src/battle_anim_effects_2.c index 5974491f1..bc58491ee 100644 --- a/src/battle_anim_effects_2.c +++ b/src/battle_anim_effects_2.c @@ -11,29 +11,39 @@ #include "util.h" #include "constants/songs.h" +static void AnimBouncingMusicNote(struct Sprite *); static void AnimBouncingMusicNote_Step(struct Sprite *); +static void AnimMovingClamp(struct Sprite *); static void AnimMovingClamp_Step(struct Sprite *); static void AnimMovingClamp_End(struct Sprite *); -static void AnimTask_WithdrawStep(u8); -static void AnimSwordsDanceBladeStep(struct Sprite *); +static void AnimTask_Withdraw_Step(u8); +static void AnimSwordsDanceBlade(struct Sprite *); +static void AnimSwordsDanceBlade_Step(struct Sprite *); +static void AnimVoidLines(struct Sprite *); static void AnimVoidLines_Step(struct Sprite *); +static void AnimFallingCoin(struct Sprite *); static void AnimFallingCoin_Step(struct Sprite *); +static void AnimBulletSeed(struct Sprite *); static void AnimBulletSeed_Step1(struct Sprite *); static void AnimBulletSeed_Step2(struct Sprite *); -static void AnimViceGripPincerStep(struct Sprite *); -static void AnimGuillotinePincerStep1(struct Sprite *); -static void AnimGuillotinePincerStep2(struct Sprite *); -static void AnimGuillotinePincerStep3(struct Sprite *); -static void AnimTask_GrowAndGreyscaleStep(u8); -static void AnimTask_MinimizeStep1(u8); +static void AnimViceGripPincer(struct Sprite *); +static void AnimViceGripPincer_Step(struct Sprite *); +static void AnimGuillotinePincer(struct Sprite *); +static void AnimGuillotinePincer_Step1(struct Sprite *); +static void AnimGuillotinePincer_Step2(struct Sprite *); +static void AnimGuillotinePincer_Step3(struct Sprite *); +static void AnimTask_GrowAndGrayscale_Step(u8); +static void AnimTask_Minimize_Step1(u8); static void CreateMinimizeSprite(struct Task *, u8); static void ClonedMinizeSprite_Step(struct Sprite *); -static void AnimTask_SplashStep(u8); -static void AnimTask_GrowAndShrinkStep(u8); -static void ThrashMoveMonStep(u8); -static void ThrashMoveMon(u8); +static void AnimTask_Splash_Step(u8); +static void AnimTask_GrowAndShrink_Step(u8); +static void AnimTask_ThrashMoveMonHorizontal_Step(u8); +static void AnimTask_ThrashMoveMonVertical_Step(u8); static void AnimTask_SketchDrawMon_Step(u8); +static void AnimPencil(struct Sprite *); static void AnimPencil_Step(struct Sprite *); +static void AnimSoftBoiledEgg(struct Sprite *); static void AnimSoftBoiledEgg_Step1(struct Sprite *); static void AnimSoftBoiledEgg_Step2(struct Sprite *); static void AnimSoftBoiledEgg_Step3(struct Sprite *); @@ -41,27 +51,56 @@ static void AnimSoftBoiledEgg_Step3_Callback1(struct Sprite *); static void AnimSoftBoiledEgg_Step3_Callback2(struct Sprite *); static void AnimSoftBoiledEgg_Step4(struct Sprite *); static void AnimSoftBoiledEgg_Step4_Callback(struct Sprite *); -static void StretchAttacker_Step(u8); -static void ExtremeSpeedImpact_Step(u8); -static void ExtremeSpeedMonReappear_Step(u8); -static void SpeedDust_Step1(u8); -static void FakeOutStep1(u8); -static void FakeOutStep2(u8); +static void AnimTask_AttackerStretchAndDisappear_Step(u8); +static void AnimTask_ExtremeSpeedImpact_Step(u8); +static void AnimTask_ExtremeSpeedMonReappear_Step(u8); +static void AnimTask_SpeedDust_Step(u8); +static void AnimTask_FakeOut_Step1(u8); +static void AnimTask_FakeOut_Step2(u8); +static void AnimRedHeartProjectile(struct Sprite *); static void AnimRedHeartProjectile_Step(struct Sprite *); +static void AnimRedHeartRising(struct Sprite *); static void AnimRedHeartRising_Step(struct Sprite *); -static void HeartsBackground_Step(u8); -static void ScaryFace_Step(u8); -static void AnimOrbitFastStep(struct Sprite *); -static void AnimOrbitScatterStep(struct Sprite *); +static void AnimTask_HeartsBackground_Step(u8); +static void AnimTask_ScaryFace_Step(u8); +static void AnimOrbitFast(struct Sprite *); +static void AnimOrbitFast_Step(struct Sprite *); +static void AnimOrbitScatter(struct Sprite *); +static void AnimOrbitScatter_Step(struct Sprite *); +static void AnimMovementWaves(struct Sprite *); static void AnimMovementWaves_Step(struct Sprite *); -static void UproarDistortion_Step(u8); +static void AnimTask_UproarDistortion_Step(u8); +static void AnimJaggedMusicNote(struct Sprite *); static void AnimJaggedMusicNote_Step(struct Sprite *); +static void AnimPerishSongMusicNote2(struct Sprite *); +static void AnimPerishSongMusicNote(struct Sprite *); static void AnimPerishSongMusicNote_Step1(struct Sprite *); static void AnimPerishSongMusicNote_Step2(struct Sprite *); +static void AnimCirclingFinger(struct Sprite *); +static void AnimVibrateBattlerBack(struct Sprite *); +static void AnimKinesisZapEnergy(struct Sprite *); +static void AnimSonicBoomProjectile(struct Sprite *); +static void AnimAirWaveProjectile(struct Sprite *); +static void AnimCoinThrow(struct Sprite *); +static void AnimRazorWindTornado(struct Sprite *); +static void AnimBreathPuff(struct Sprite *); +static void AnimAngerMark(struct Sprite *); +static void AnimBlendThinRing(struct Sprite *); +static void AnimHyperVoiceRing(struct Sprite *); +static void AnimUproarRing(struct Sprite *); +static void AnimSpeedDust(struct Sprite *); +static void AnimHealBellMusicNote(struct Sprite *); +static void AnimMagentaHeart(struct Sprite *); +static void AnimSpitUpOrb(struct Sprite *); +static void AnimEyeSparkle(struct Sprite *); +static void AnimAngel(struct Sprite *); +static void AnimPinkHeart(struct Sprite *); +static void AnimDevil(struct Sprite *); +static void AnimFurySwipes(struct Sprite *); +static void AnimGuardRing(struct Sprite *); -// Data // Unused -static const struct SpriteTemplate sUnknown_83E3ADC = +static const struct SpriteTemplate sCirclingFingerSpriteTemplate = { .tileTag = ANIM_TAG_FINGER, .paletteTag = ANIM_TAG_FINGER, @@ -72,19 +111,20 @@ static const struct SpriteTemplate sUnknown_83E3ADC = .callback = AnimCirclingFinger, }; -static const union AnimCmd sUnknown_83E3AF4[] = +static const union AnimCmd sAnim_BouncingMusicNote[] = { ANIMCMD_FRAME(4, 1), ANIMCMD_END, }; -static const union AnimCmd *const sUnknown_83E3AFC[] = +// Unused (association assumed) +static const union AnimCmd *const sAnims_BouncingMusicNote[] = { - sUnknown_83E3AF4, + sAnim_BouncingMusicNote, }; // Unused -static const struct SpriteTemplate sUnknown_83E3B00 = +static const struct SpriteTemplate sBouncingMusicNoteSpriteTemplate = { .tileTag = ANIM_TAG_MUSIC_NOTES, .paletteTag = ANIM_TAG_MUSIC_NOTES, @@ -96,7 +136,7 @@ static const struct SpriteTemplate sUnknown_83E3B00 = }; // Unused -static const struct SpriteTemplate sUnknown_83E3B18 = +static const struct SpriteTemplate sVibrateBattlerBackSpriteTemplate = { .tileTag = 0, .paletteTag = 0, @@ -108,7 +148,7 @@ static const struct SpriteTemplate sUnknown_83E3B18 = }; // Unused -static const struct SpriteTemplate sUnknown_83E3B30 = +static const struct SpriteTemplate sMovingClampSpriteTemplate = { .tileTag = ANIM_TAG_CLAMP, .paletteTag = ANIM_TAG_CLAMP, @@ -119,7 +159,7 @@ static const struct SpriteTemplate sUnknown_83E3B30 = .callback = AnimMovingClamp, }; -static const union AnimCmd sUnknown_83E3B48[] = +static const union AnimCmd sAnim_SmallExplosion[] = { ANIMCMD_FRAME(0, 9), ANIMCMD_FRAME(16, 3), @@ -128,32 +168,32 @@ static const union AnimCmd sUnknown_83E3B48[] = ANIMCMD_END, }; -static const union AnimCmd *const sUnknown_83E3B5C[] = +static const union AnimCmd *const sAnims_SmallExplosion[] = { - sUnknown_83E3B48, + sAnim_SmallExplosion, }; -static const union AffineAnimCmd sUnknown_83E3B60[] = +static const union AffineAnimCmd sAffineAnim_SmallExplosion[] = { AFFINEANIMCMD_FRAME(80, 80, 0, 0), AFFINEANIMCMD_FRAME(9, 9, 0, 18), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd *const sUnknown_83E3B78[] = +static const union AffineAnimCmd *const sAffineAnims_SmallExplosion[] = { - sUnknown_83E3B60, + sAffineAnim_SmallExplosion, }; // Unused -static const struct SpriteTemplate sUnknown_83E3B7C = +static const struct SpriteTemplate sSmallExplosionSpriteTemplate = { .tileTag = ANIM_TAG_EXPLOSION_6, .paletteTag = ANIM_TAG_EXPLOSION_6, .oam = &gOamData_AffineNormal_ObjNormal_32x32, - .anims = sUnknown_83E3B5C, + .anims = sAnims_SmallExplosion, .images = NULL, - .affineAnims = sUnknown_83E3B78, + .affineAnims = sAffineAnims_SmallExplosion, .callback = AnimSpriteOnMonPos, }; @@ -183,7 +223,7 @@ const struct SpriteTemplate gKinesisZapEnergySpriteTemplate = .anims = sKinesisZapEnergyAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = Anim_KinesisZapEnergy, + .callback = AnimKinesisZapEnergy, }; static const union AffineAnimCmd sSwordsDanceBladeAffineAnimCmds[] = @@ -207,7 +247,7 @@ const struct SpriteTemplate gSwordsDanceBladeSpriteTemplate = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = sSwordsDanceBladeAffineAnimTable, - .callback = Anim_SwordsDanceBlade, + .callback = AnimSwordsDanceBlade, }; const struct SpriteTemplate gSonicBoomSpriteTemplate = @@ -261,7 +301,7 @@ static const union AffineAnimCmd *const sWaterPulseRingAffineAnimTable[] = sWaterPulseRingAffineAnimCmds, }; -const struct SpriteTemplate gSupersonicWaveSpriteTemplate = +const struct SpriteTemplate gSupersonicRingSpriteTemplate = { .tileTag = ANIM_TAG_GOLD_RING, .paletteTag = ANIM_TAG_GOLD_RING, @@ -272,7 +312,7 @@ const struct SpriteTemplate gSupersonicWaveSpriteTemplate = .callback = TranslateAnimSpriteToTargetMonLocation, }; -const struct SpriteTemplate gScreechWaveSpriteTemplate = +const struct SpriteTemplate gScreechRingSpriteTemplate = { .tileTag = ANIM_TAG_PURPLE_RING, .paletteTag = ANIM_TAG_PURPLE_RING, @@ -316,7 +356,7 @@ const struct SpriteTemplate gEggThrowSpriteTemplate = .callback = AnimThrowProjectile, }; -static const struct SpriteTemplate sUnknown_83E3D18 = +static const struct SpriteTemplate sVoidLinesSpriteTemplate = { .tileTag = ANIM_TAG_VOID_LINES, .paletteTag = ANIM_TAG_VOID_LINES, @@ -585,7 +625,7 @@ const struct SpriteTemplate gSnoreZSpriteTemplate = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = AnimSnoreZ, + .callback = AnimTravelDiagonally, }; static const union AnimCmd sExplosionAnimCmds[] = @@ -830,7 +870,9 @@ const struct SpriteTemplate gBellSpriteTemplate = .callback = AnimSpriteOnMonPos, }; -const u16 gMusicNotePaletteTagsTable[] = +#define NUM_MUSIC_NOTE_PAL_TAGS 3 + +const u16 gMusicNotePaletteTagsTable[NUM_MUSIC_NOTE_PAL_TAGS] = { ANIM_TAG_MUSIC_NOTES_2, ANIM_SPRITES_START - 1, @@ -859,7 +901,7 @@ const struct SpriteTemplate gMagentaHeartSpriteTemplate = .callback = AnimMagentaHeart, }; -static const union AffineAnimCmd sUnknown_83E4200[] = +static const union AffineAnimCmd sAffineAnims_StretchBattlerUp[] = { AFFINEANIMCMD_FRAME(10, -13, 0, 10), AFFINEANIMCMD_FRAME(-10, 13, 0, 10), @@ -885,7 +927,7 @@ const struct SpriteTemplate gRedHeartBurstSpriteTemplate = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = AnimParticuleBurst, + .callback = AnimParticleBurst, }; const struct SpriteTemplate gRedHeartRisingSpriteTemplate = @@ -1044,7 +1086,7 @@ const struct SpriteTemplate gDevilSpriteTemplate = .callback = AnimDevil, }; -static const union AnimCmd sFurySwipesAnimCmd1[] = +static const union AnimCmd sAnim_FurySwipes[] = { ANIMCMD_FRAME(0, 4), ANIMCMD_FRAME(16, 4), @@ -1053,7 +1095,7 @@ static const union AnimCmd sFurySwipesAnimCmd1[] = ANIMCMD_END, }; -static const union AnimCmd sFurySwipesAnimCmd2[] = +static const union AnimCmd sAnim_FurySwipes_Flipped[] = { ANIMCMD_FRAME(0, 4, .hFlip = TRUE), ANIMCMD_FRAME(16, 4, .hFlip = TRUE), @@ -1062,10 +1104,10 @@ static const union AnimCmd sFurySwipesAnimCmd2[] = ANIMCMD_END, }; -static const union AnimCmd *const sFurySwipesAnimTable[] = +static const union AnimCmd *const sAnims_FurySwipes[] = { - sFurySwipesAnimCmd1, - sFurySwipesAnimCmd2, + sAnim_FurySwipes, + sAnim_FurySwipes_Flipped, }; const struct SpriteTemplate gFurySwipesSpriteTemplate = @@ -1073,7 +1115,7 @@ const struct SpriteTemplate gFurySwipesSpriteTemplate = .tileTag = ANIM_TAG_SWIPE, .paletteTag = ANIM_TAG_SWIPE, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = sFurySwipesAnimTable, + .anims = sAnims_FurySwipes, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimFurySwipes, @@ -1209,22 +1251,31 @@ const struct SpriteTemplate gGuardRingSpriteTemplate = .callback = AnimGuardRing, }; -// Functions -void AnimCirclingFinger(struct Sprite *sprite) +#define sAmplitudeX data[1] +#define sCircleSpeed data[2] +#define sMoveSteps data[3] +#define sAmplitudeY data[4] + +static void AnimCirclingFinger(struct Sprite *sprite) { SetSpriteCoordsToAnimAttackerCoords(sprite); SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]); sprite->y += gBattleAnimArgs[1]; - sprite->data[1] = gBattleAnimArgs[2]; - sprite->data[2] = gBattleAnimArgs[4]; - sprite->data[3] = gBattleAnimArgs[5]; - sprite->data[4] = gBattleAnimArgs[3]; + sprite->sAmplitudeX = gBattleAnimArgs[2]; + sprite->sCircleSpeed = gBattleAnimArgs[4]; + sprite->sMoveSteps = gBattleAnimArgs[5]; + sprite->sAmplitudeY = gBattleAnimArgs[3]; StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); - sprite->callback = TranslateSpriteInEllipseOverDuration; + sprite->callback = TranslateSpriteInEllipse; sprite->callback(sprite); } -void AnimBouncingMusicNote(struct Sprite *sprite) +#undef sAmplitudeX +#undef sCircleSpeed +#undef sMoveSteps +#undef sAmplitudeY + +static void AnimBouncingMusicNote(struct Sprite *sprite) { u8 battler; @@ -1275,7 +1326,7 @@ static void AnimVibrateBattlerBack_Step(struct Sprite *sprite) sprite->data[0]--; } -void AnimVibrateBattlerBack(struct Sprite *sprite) +static void AnimVibrateBattlerBack(struct Sprite *sprite) { u8 spriteId; sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); @@ -1294,7 +1345,7 @@ void AnimVibrateBattlerBack(struct Sprite *sprite) sprite->invisible = TRUE; } -void AnimMovingClamp(struct Sprite *sprite) +static void AnimMovingClamp(struct Sprite *sprite) { InitSpritePosToAnimAttacker(sprite, TRUE); sprite->data[0] = gBattleAnimArgs[2]; @@ -1326,10 +1377,10 @@ static void AnimMovingClamp_End(struct Sprite *sprite) void AnimTask_Withdraw(u8 taskId) { PrepareBattlerSpriteForRotScale(gBattlerSpriteIds[gBattleAnimAttacker], ST_OAM_OBJ_NORMAL); - gTasks[taskId].func = AnimTask_WithdrawStep; + gTasks[taskId].func = AnimTask_Withdraw_Step; } -static void AnimTask_WithdrawStep(u8 taskId) +static void AnimTask_Withdraw_Step(u8 taskId) { u8 spriteId = gBattlerSpriteIds[gBattleAnimAttacker]; s16 rotation; @@ -1379,7 +1430,7 @@ static void AnimTask_WithdrawStep(u8 taskId) // arg 0: x pixel offset // arg 1: y pixel offset // arg 2: vertical flip -void Anim_KinesisZapEnergy(struct Sprite *sprite) +static void AnimKinesisZapEnergy(struct Sprite *sprite) { SetSpriteCoordsToAnimAttackerCoords(sprite); if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) @@ -1407,14 +1458,14 @@ void Anim_KinesisZapEnergy(struct Sprite *sprite) // Animates a sword that rises into the air after a brief pause. // arg 0: x pixel offset // arg 1: y pixel offset -void Anim_SwordsDanceBlade(struct Sprite *sprite) +static void AnimSwordsDanceBlade(struct Sprite *sprite) { InitSpritePosToAnimAttacker(sprite, FALSE); sprite->callback = RunStoredCallbackWhenAffineAnimEnds; - StoreSpriteCallbackInData6(sprite, AnimSwordsDanceBladeStep); + StoreSpriteCallbackInData6(sprite, AnimSwordsDanceBlade_Step); } -static void AnimSwordsDanceBladeStep(struct Sprite *sprite) +static void AnimSwordsDanceBlade_Step(struct Sprite *sprite) { sprite->data[0] = 6; sprite->data[2] = sprite->x; @@ -1430,7 +1481,7 @@ static void AnimSwordsDanceBladeStep(struct Sprite *sprite) // arg 2: target x pixel offset // arg 3: target y pixel offset // arg 4: duration -void AnimSonicBoomProjectile(struct Sprite *sprite) +static void AnimSonicBoomProjectile(struct Sprite *sprite) { s16 targetXPos; s16 targetYPos; @@ -1506,7 +1557,7 @@ static void AnimAirWaveProjectile_Step1(struct Sprite *sprite) } } -void AnimAirWaveProjectile(struct Sprite *sprite) +static void AnimAirWaveProjectile(struct Sprite *sprite) { s16 a; s16 b; @@ -1555,13 +1606,13 @@ void AnimAirWaveProjectile(struct Sprite *sprite) } } -static void AirCutterProjectileStep2(u8 taskId) +static void AirCutterProjectile_Step2(u8 taskId) { if (gTasks[taskId].data[1] == 0) DestroyAnimVisualTask(taskId); } -static void AirCutterProjectileStep1(u8 taskId) +static void AirCutterProjectile_Step1(u8 taskId) { if (gTasks[taskId].data[0]-- <= 0) { @@ -1586,7 +1637,7 @@ static void AirCutterProjectileStep1(u8 taskId) gTasks[taskId].data[1]++; PlaySE12WithPanning(SE_M_BLIZZARD2, BattleAnimAdjustPanning(-SOUND_PAN_TARGET)); if (gTasks[taskId].data[1] > 2) - gTasks[taskId].func = AirCutterProjectileStep2; + gTasks[taskId].func = AirCutterProjectile_Step2; } } @@ -1687,13 +1738,13 @@ void AnimTask_AirCutterProjectile(u8 taskId) if (gTasks[taskId].data[2] < 3) gTasks[taskId].data[2] = 3; - gTasks[taskId].func = AirCutterProjectileStep1; + gTasks[taskId].func = AirCutterProjectile_Step1; } -void AnimVoidLines(struct Sprite *sprite) +static void AnimVoidLines(struct Sprite *sprite) { InitSpritePosToAnimAttacker(sprite, FALSE); - sprite->data[0] = 0x100 + (IndexOfSpritePaletteTag(sUnknown_83E3D18.paletteTag) << 4); + sprite->data[0] = 0x100 + (IndexOfSpritePaletteTag(sVoidLinesSpriteTemplate.paletteTag) << 4); sprite->callback = AnimVoidLines_Step; } @@ -1717,7 +1768,7 @@ static void AnimVoidLines_Step(struct Sprite *sprite) } } -void AnimCoinThrow(struct Sprite *sprite) +static void AnimCoinThrow(struct Sprite *sprite) { s16 r6; s16 r7; @@ -1736,11 +1787,11 @@ void AnimCoinThrow(struct Sprite *sprite) sprite->data[0] = gBattleAnimArgs[4]; sprite->data[2] = r6; sprite->data[4] = r7; - sprite->callback = BattleAnim_InitAndRunLinearTranslationWithDuration; + sprite->callback = InitAnimLinearTranslationWithSpeedAndPos; StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); } -void AnimFallingCoin(struct Sprite *sprite) +static void AnimFallingCoin(struct Sprite *sprite) { sprite->data[2] = -16; sprite->y += 8; @@ -1765,7 +1816,7 @@ static void AnimFallingCoin_Step(struct Sprite *sprite) } } -void AnimBulletSeed(struct Sprite *sprite) +static void AnimBulletSeed(struct Sprite *sprite) { InitSpritePosToAnimAttacker(sprite, TRUE); sprite->data[0] = 20; @@ -1825,7 +1876,7 @@ static void AnimBulletSeed_Step2(struct Sprite *sprite) // arg 4: initial wave offset // arg 5: wave period (higher means faster wave) // arg 6: duration -void AnimRazorWindTornado(struct Sprite *sprite) +static void AnimRazorWindTornado(struct Sprite *sprite) { InitSpritePosToAnimAttacker(sprite, FALSE); if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) @@ -1836,14 +1887,14 @@ void AnimRazorWindTornado(struct Sprite *sprite) sprite->data[2] = gBattleAnimArgs[5]; sprite->data[3] = gBattleAnimArgs[6]; sprite->data[4] = gBattleAnimArgs[3]; - sprite->callback = TranslateSpriteInCircleOverDuration; + sprite->callback = TranslateSpriteInCircle; StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); sprite->callback(sprite); } // Animates a single pincer line that extends towards the center of the target mon. // arg 0: invert -void AnimViceGripPincer(struct Sprite *sprite) +static void AnimViceGripPincer(struct Sprite *sprite) { s16 startXOffset = 32; s16 startYOffset = -32; @@ -1865,10 +1916,10 @@ void AnimViceGripPincer(struct Sprite *sprite) sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + endXOffset; sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + endYOffset; sprite->callback = StartAnimLinearTranslation; - StoreSpriteCallbackInData6(sprite, AnimViceGripPincerStep); + StoreSpriteCallbackInData6(sprite, AnimViceGripPincer_Step); } -static void AnimViceGripPincerStep(struct Sprite *sprite) +static void AnimViceGripPincer_Step(struct Sprite *sprite) { if (sprite->animEnded) DestroyAnimSprite(sprite); @@ -1876,7 +1927,7 @@ static void AnimViceGripPincerStep(struct Sprite *sprite) // Animates a single pincer line that extends towards the center of the target mon, and then back out. // arg 0: animation id -void AnimGuillotinePincer(struct Sprite *sprite) +static void AnimGuillotinePincer(struct Sprite *sprite) { s16 startXOffset = 32; s16 startYOffset = -32; @@ -1902,10 +1953,10 @@ void AnimGuillotinePincer(struct Sprite *sprite) InitAnimLinearTranslation(sprite); sprite->data[5] = gBattleAnimArgs[0]; sprite->data[6] = sprite->data[0]; - sprite->callback = AnimGuillotinePincerStep1; + sprite->callback = AnimGuillotinePincer_Step1; } -static void AnimGuillotinePincerStep1(struct Sprite *sprite) +static void AnimGuillotinePincer_Step1(struct Sprite *sprite) { if (AnimTranslateLinear(sprite) && sprite->animEnded) { @@ -1920,11 +1971,11 @@ static void AnimGuillotinePincerStep1(struct Sprite *sprite) sprite->data[2] ^= 1; sprite->data[4] = 0; sprite->data[3] = 0; - sprite->callback = AnimGuillotinePincerStep2; + sprite->callback = AnimGuillotinePincer_Step2; } } -static void AnimGuillotinePincerStep2(struct Sprite *sprite) +static void AnimGuillotinePincer_Step2(struct Sprite *sprite) { if (sprite->data[3]) { @@ -1941,11 +1992,11 @@ static void AnimGuillotinePincerStep2(struct Sprite *sprite) sprite->data[3] = 0; sprite->animPaused = FALSE; StartSpriteAnim(sprite, sprite->data[5] ^ 1); - sprite->callback = AnimGuillotinePincerStep3; + sprite->callback = AnimGuillotinePincer_Step3; } } -static void AnimGuillotinePincerStep3(struct Sprite *sprite) +static void AnimGuillotinePincer_Step3(struct Sprite *sprite) { if (AnimTranslateLinear(sprite)) DestroyAnimSprite(sprite); @@ -1954,7 +2005,7 @@ static void AnimGuillotinePincerStep3(struct Sprite *sprite) // Scales up the target mon sprite, and sets the palette to greyscale. // Used in MOVE_DISABLE. // No args. -void AnimTask_GrowAndGreyscale(u8 taskId) +void AnimTask_GrowAndGrayscale(u8 taskId) { u8 spriteId = GetAnimBattlerSpriteId(ANIM_TARGET); @@ -1962,10 +2013,10 @@ void AnimTask_GrowAndGreyscale(u8 taskId) SetSpriteRotScale(spriteId, 0xD0, 0xD0, 0); SetGreyscaleOrOriginalPalette(gSprites[spriteId].oam.paletteNum + 16, FALSE); gTasks[taskId].data[0] = 80; - gTasks[taskId].func = AnimTask_GrowAndGreyscaleStep; + gTasks[taskId].func = AnimTask_GrowAndGrayscale_Step; } -static void AnimTask_GrowAndGreyscaleStep(u8 taskId) +static void AnimTask_GrowAndGrayscale_Step(u8 taskId) { if (--gTasks[taskId].data[0] == -1) { @@ -1993,10 +2044,10 @@ void AnimTask_Minimize(u8 taskId) task->data[5] = 0; task->data[6] = 0; task->data[7] = GetBattlerSpriteSubpriority(gBattleAnimAttacker); - task->func = AnimTask_MinimizeStep1; + task->func = AnimTask_Minimize_Step1; } -static void AnimTask_MinimizeStep1(u8 taskId) +static void AnimTask_Minimize_Step1(u8 taskId) { struct Task* task = &gTasks[taskId]; @@ -2072,7 +2123,7 @@ static void CreateMinimizeSprite(struct Task* task, u8 taskId) { if ((matrixNum = AllocOamMatrix()) == 0xFF) { - obj_delete_but_dont_free_vram(&gSprites[spriteId]); + DestroySpriteWithActiveSheet(&gSprites[spriteId]); } else { @@ -2100,7 +2151,7 @@ static void ClonedMinizeSprite_Step(struct Sprite *sprite) { gTasks[sprite->data[1]].data[sprite->data[2]]--; FreeOamMatrix(sprite->oam.matrixNum); - obj_delete_but_dont_free_vram(sprite); + DestroySpriteWithActiveSheet(sprite); } } @@ -2124,11 +2175,11 @@ void AnimTask_Splash(u8 taskId) task->data[3] = 0; task->data[4] = 0; PrepareAffineAnimInTaskData(task, spriteId, sSplashEffectAffineAnimCmds); - task->func = AnimTask_SplashStep; + task->func = AnimTask_Splash_Step; } } -static void AnimTask_SplashStep(u8 taskId) +static void AnimTask_Splash_Step(u8 taskId) { struct Task* task = &gTasks[taskId]; @@ -2189,10 +2240,10 @@ void AnimTask_GrowAndShrink(u8 taskId) u8 spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); PrepareAffineAnimInTaskData(task, spriteId, sGrowAndShrinkAffineAnimCmds); - task->func = AnimTask_GrowAndShrinkStep; + task->func = AnimTask_GrowAndShrink_Step; } -static void AnimTask_GrowAndShrinkStep(u8 taskId) +static void AnimTask_GrowAndShrink_Step(u8 taskId) { struct Task* task = &gTasks[taskId]; @@ -2203,7 +2254,7 @@ static void AnimTask_GrowAndShrinkStep(u8 taskId) // Animates a little puff of the mon's breath. // Used by MOVE_SWAGGER and MOVE_BULK_UP // No args. -void AnimBreathPuff(struct Sprite *sprite) +static void AnimBreathPuff(struct Sprite *sprite) { if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) { @@ -2231,7 +2282,7 @@ void AnimBreathPuff(struct Sprite *sprite) // arg 0: target mon (0 = attacker, 1 = target) // arg 1: x pixel offset // arg 2: y pixel offset -void AnimAngerMark(struct Sprite *sprite) +static void AnimAngerMark(struct Sprite *sprite) { u8 battler; @@ -2261,10 +2312,10 @@ void AnimTask_ThrashMoveMonHorizontal(u8 taskId) task->data[0] = spriteId; task->data[1] = 0; PrepareAffineAnimInTaskData(task, spriteId, sThrashMoveMonAffineAnimCmds); - task->func = ThrashMoveMonStep; + task->func = AnimTask_ThrashMoveMonHorizontal_Step; } -static void ThrashMoveMonStep(u8 taskId) +static void AnimTask_ThrashMoveMonHorizontal_Step(u8 taskId) { struct Task* task = &gTasks[taskId]; @@ -2290,10 +2341,10 @@ void AnimTask_ThrashMoveMonVertical(u8 taskId) if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT) task->data[2] *= -1; - task->func = ThrashMoveMon; + task->func = AnimTask_ThrashMoveMonVertical_Step; } -static void ThrashMoveMon(u8 taskId) +static void AnimTask_ThrashMoveMonVertical_Step(u8 taskId) { struct Task* task = &gTasks[taskId]; @@ -2433,7 +2484,7 @@ static void AnimTask_SketchDrawMon_Step(u8 taskId) } } -void AnimPencil(struct Sprite *sprite) +static void AnimPencil(struct Sprite *sprite) { sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X) - 16; sprite->y = GetBattlerYCoordWithElevation(gBattleAnimTarget) + 16; @@ -2506,7 +2557,7 @@ static void AnimPencil_Step(struct Sprite *sprite) } } -void AnimBlendThinRing(struct Sprite *sprite) +static void AnimBlendThinRing(struct Sprite *sprite) { u8 battler = 0; u16 sp0 = 0; @@ -2537,7 +2588,7 @@ void AnimBlendThinRing(struct Sprite *sprite) sprite->callback(sprite); } -void sub_80A8C84(struct Sprite *sprite) +static void AnimHyperVoiceRing_WaitEnd(struct Sprite *sprite) { if (AnimTranslateLinear(sprite)) { @@ -2546,16 +2597,16 @@ void sub_80A8C84(struct Sprite *sprite) } } -void AnimHyperVoiceRing(struct Sprite *sprite) +static void AnimHyperVoiceRing(struct Sprite *sprite) { - u16 r9 = 0; - u16 r6 = 0; - s16 sp0 = 0; - s16 sp1 = 0; - u8 sp4; + u16 startX = 0; + u16 startY = 0; + s16 x = 0; + s16 y = 0; + u8 yCoordType; u8 battler1; u8 battler2; - u8 r10; + u8 xCoordType; if (gBattleAnimArgs[5] == 0) { @@ -2570,18 +2621,18 @@ void AnimHyperVoiceRing(struct Sprite *sprite) if (!gBattleAnimArgs[6]) { - r10 = 0; - sp4 = 1; + xCoordType = BATTLER_COORD_X; + yCoordType = BATTLER_COORD_Y; } else { - r10 = 2; - sp4 = 3; + xCoordType = BATTLER_COORD_X_2; + yCoordType = BATTLER_COORD_Y_PIC_OFFSET; } if (GetBattlerSide(battler1) != B_SIDE_PLAYER) { - r9 = GetBattlerSpriteCoord(battler1, r10) + gBattleAnimArgs[0]; + startX = GetBattlerSpriteCoord(battler1, xCoordType) + gBattleAnimArgs[0]; if (IsBattlerSpriteVisible(BATTLE_PARTNER(battler2))) sprite->subpriority = gSprites[gBattlerSpriteIds[BATTLE_PARTNER(battler2)]].subpriority - 1; else @@ -2589,7 +2640,7 @@ void AnimHyperVoiceRing(struct Sprite *sprite) } else { - r9 = GetBattlerSpriteCoord(battler1, r10) - gBattleAnimArgs[0]; + startX = GetBattlerSpriteCoord(battler1, xCoordType) - gBattleAnimArgs[0]; if (!IsContest() && IsBattlerSpriteVisible(BATTLE_PARTNER(battler1))) { if (gSprites[gBattlerSpriteIds[battler1]].x < gSprites[gBattlerSpriteIds[BATTLE_PARTNER(battler1)]].x) @@ -2604,34 +2655,34 @@ void AnimHyperVoiceRing(struct Sprite *sprite) } - r6 = GetBattlerSpriteCoord(battler1, sp4) + gBattleAnimArgs[1]; + startY = GetBattlerSpriteCoord(battler1, yCoordType) + gBattleAnimArgs[1]; if (!IsContest() && IsBattlerSpriteVisible(BATTLE_PARTNER(battler2))) { - SetAverageBattlerPositions(battler2, gBattleAnimArgs[6], &sp0, &sp1); + SetAverageBattlerPositions(battler2, gBattleAnimArgs[6], &x, &y); } else { - sp0 = GetBattlerSpriteCoord(battler2, r10); - sp1 = GetBattlerSpriteCoord(battler2, sp4); + x = GetBattlerSpriteCoord(battler2, xCoordType); + y = GetBattlerSpriteCoord(battler2, yCoordType); } if (GetBattlerSide(battler2) != B_SIDE_PLAYER) - sp0 += gBattleAnimArgs[3]; + x += gBattleAnimArgs[3]; else - sp0 -= gBattleAnimArgs[3]; + x -= gBattleAnimArgs[3]; - sp1 += gBattleAnimArgs[4]; - sprite->x = sprite->data[1] = r9; - sprite->y = sprite->data[3] = r6; - sprite->data[2] = sp0; - sprite->data[4] = sp1; + y += gBattleAnimArgs[4]; + sprite->x = sprite->data[1] = startX; + sprite->y = sprite->data[3] = startY; + sprite->data[2] = x; + sprite->data[4] = y; sprite->data[0] = gBattleAnimArgs[0]; InitAnimLinearTranslation(sprite); - sprite->callback = sub_80A8C84; + sprite->callback = AnimHyperVoiceRing_WaitEnd; sprite->callback(sprite); } -void AnimUproarRing(struct Sprite *sprite) +static void AnimUproarRing(struct Sprite *sprite) { u8 index = IndexOfSpritePaletteTag(ANIM_TAG_THIN_RING); @@ -2645,7 +2696,7 @@ void AnimUproarRing(struct Sprite *sprite) sprite->callback(sprite); } -void AnimSoftBoiledEgg(struct Sprite *sprite) +static void AnimSoftBoiledEgg(struct Sprite *sprite) { s16 r1; @@ -2749,17 +2800,18 @@ static void AnimSoftBoiledEgg_Step4_Callback(struct Sprite *sprite) DestroyAnimSprite(sprite); } -void AnimTask_StretchAttacker(u8 taskId) +// Used by Extremespeed +void AnimTask_AttackerStretchAndDisappear(u8 taskId) { struct Task* task = &gTasks[taskId]; u8 spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); task->data[0] = spriteId; PrepareAffineAnimInTaskData(task, spriteId, sStretchAttackerAffineAnimCmds); - task->func = StretchAttacker_Step; + task->func = AnimTask_AttackerStretchAndDisappear_Step; } -static void StretchAttacker_Step(u8 taskId) +static void AnimTask_AttackerStretchAndDisappear_Step(u8 taskId) { struct Task* task = &gTasks[taskId]; @@ -2792,10 +2844,10 @@ void AnimTask_ExtremeSpeedImpact(u8 taskId) } task->data[15] = GetAnimBattlerSpriteId(ANIM_TARGET); - task->func = ExtremeSpeedImpact_Step; + task->func = AnimTask_ExtremeSpeedImpact_Step; } -static void ExtremeSpeedImpact_Step(u8 taskId) +static void AnimTask_ExtremeSpeedImpact_Step(u8 taskId) { struct Task* task = &gTasks[taskId]; @@ -2853,10 +2905,10 @@ void AnimTask_ExtremeSpeedMonReappear(u8 taskId) task->data[13] = 14; task->data[14] = 2; task->data[15] = GetAnimBattlerSpriteId(ANIM_ATTACKER); - task->func = ExtremeSpeedMonReappear_Step; + task->func = AnimTask_ExtremeSpeedMonReappear_Step; } -static void ExtremeSpeedMonReappear_Step(u8 taskId) +static void AnimTask_ExtremeSpeedMonReappear_Step(u8 taskId) { struct Task* task = &gTasks[taskId]; @@ -2901,10 +2953,10 @@ void AnimTask_SpeedDust(u8 taskId) task->data[13] = 0; task->data[14] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X); task->data[15] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y); - task->func = SpeedDust_Step1; + task->func = AnimTask_SpeedDust_Step; } -static void SpeedDust_Step1(u8 taskId) +static void AnimTask_SpeedDust_Step(u8 taskId) { struct Task* task = &gTasks[taskId]; @@ -2971,7 +3023,7 @@ static void SpeedDust_Step1(u8 taskId) } } -void AnimSpeedDust(struct Sprite *sprite) +static void AnimSpeedDust(struct Sprite *sprite) { sprite->invisible = gTasks[sprite->data[0]].data[5]; if (sprite->animEnded) @@ -2984,15 +3036,15 @@ void AnimSpeedDust(struct Sprite *sprite) void AnimTask_LoadMusicNotesPals(u8 taskId) { int i; - u8 paletteNums[3]; + u8 paletteNums[NUM_MUSIC_NOTE_PAL_TAGS]; paletteNums[0] = IndexOfSpritePaletteTag(ANIM_TAG_MUSIC_NOTES_2); - for (i = 1; i < 3; i++) + for (i = 1; i < NUM_MUSIC_NOTE_PAL_TAGS; i++) paletteNums[i] = AllocSpritePalette(ANIM_SPRITES_START - i); gMonSpritesGfxPtr->multiUseBuffer = AllocZeroed(0x2000); LZDecompressWram(gBattleAnimSpritePal_MusicNotes2, gMonSpritesGfxPtr->multiUseBuffer); - for (i = 0; i < 3; i++) + for (i = 0; i < NUM_MUSIC_NOTE_PAL_TAGS; i++) LoadPalette(&gMonSpritesGfxPtr->multiUseBuffer[i * 32], (u16)((paletteNums[i] << 4) + 0x100), 32); FREE_AND_SET_NULL(gMonSpritesGfxPtr->multiUseBuffer); @@ -3003,7 +3055,7 @@ void AnimTask_FreeMusicNotesPals(u8 taskId) { int i; - for (i = 0; i < 3; i++) + for (i = 0; i < NUM_MUSIC_NOTE_PAL_TAGS; i++) FreeSpritePaletteByTag(gMusicNotePaletteTagsTable[i]); DestroyAnimVisualTask(taskId); @@ -3016,7 +3068,7 @@ static void SetMusicNotePalette(struct Sprite *sprite, u8 a, u8 b) sprite->oam.paletteNum = IndexOfSpritePaletteTag(gMusicNotePaletteTagsTable[b >> 1]); } -void AnimHealBellMusicNote(struct Sprite *sprite) +static void AnimHealBellMusicNote(struct Sprite *sprite) { InitSpritePosToAnimAttacker(sprite, FALSE); if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) @@ -3030,7 +3082,7 @@ void AnimHealBellMusicNote(struct Sprite *sprite) SetMusicNotePalette(sprite, gBattleAnimArgs[5], gBattleAnimArgs[6]); } -void AnimMagentaHeart(struct Sprite *sprite) +static void AnimMagentaHeart(struct Sprite *sprite) { if (++sprite->data[0] == 1) InitSpritePosToAnimAttacker(sprite, FALSE); @@ -3045,30 +3097,30 @@ void AnimMagentaHeart(struct Sprite *sprite) void AnimTask_FakeOut(u8 taskId) { - u16 win0h = IsContest() ? 0x98 : 0xF0; + u16 win0h = IsContest() ? 152 : DISPLAY_WIDTH; u16 win0v = 0; gBattle_WIN0H = win0h; - gBattle_WIN0V = 0xA0; + gBattle_WIN0V = DISPLAY_HEIGHT; SetGpuReg(REG_OFFSET_WIN0H, gBattle_WIN0H); SetGpuReg(REG_OFFSET_WIN0V, gBattle_WIN0V); SetGpuReg(REG_OFFSET_WININ, WININ_WIN1_CLR | WININ_WIN1_OBJ | WININ_WIN1_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_BG_ALL); SetGpuReg(REG_OFFSET_WINOUT, WININ_WIN1_CLR | WININ_WIN1_OBJ | WININ_WIN1_BG_ALL | WININ_WIN0_CLR | WININ_WIN0_OBJ | WININ_WIN0_BG_ALL); SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG3 | BLDCNT_EFFECT_DARKEN); - SetGpuReg(REG_OFFSET_BLDY, BLDCNT_TGT1_OBJ); + SetGpuReg(REG_OFFSET_BLDY, 16); gTasks[taskId].data[0] = win0v; gTasks[taskId].data[1] = win0h; - gTasks[taskId].func = FakeOutStep1; + gTasks[taskId].func = AnimTask_FakeOut_Step1; } -static void FakeOutStep1(u8 taskId) +static void AnimTask_FakeOut_Step1(u8 taskId) { gTasks[taskId].data[0] += 13; gTasks[taskId].data[1] -= 13; if (gTasks[taskId].data[0] >= gTasks[taskId].data[1]) { gBattle_WIN0H = 0; - gTasks[taskId].func = FakeOutStep2; + gTasks[taskId].func = AnimTask_FakeOut_Step2; } else { @@ -3076,13 +3128,13 @@ static void FakeOutStep1(u8 taskId) } } -static void FakeOutStep2(u8 taskId) +static void AnimTask_FakeOut_Step2(u8 taskId) { if (++gTasks[taskId].data[10] == 5) { gTasks[taskId].data[11] = 0x88; SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG3 | BLDCNT_EFFECT_LIGHTEN); - BlendPalettes(SelectBattleAnimSpriteAndBgPalettes(1, 0, 0, 0, 0, 0, 0), 16, RGB_WHITE); + BlendPalettes(GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE), 16, RGB_WHITE); } else if (gTasks[taskId].data[10] > 4) { @@ -3102,7 +3154,7 @@ void AnimTask_StretchTargetUp(u8 taskId) if (++gTasks[taskId].data[0] == 1) { - PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(ANIM_TARGET), sUnknown_83E4200); + PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(ANIM_TARGET), sAffineAnims_StretchBattlerUp); gSprites[spriteId].x2 = 4; } else @@ -3123,7 +3175,7 @@ void AnimTask_StretchAttackerUp(u8 taskId) if (++gTasks[taskId].data[0] == 1) { - PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(ANIM_ATTACKER), sUnknown_83E4200); + PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(ANIM_ATTACKER), sAffineAnims_StretchBattlerUp); gSprites[spriteId].x2 = 4; } else @@ -3138,7 +3190,7 @@ void AnimTask_StretchAttackerUp(u8 taskId) } } -void AnimRedHeartProjectile(struct Sprite *sprite) +static void AnimRedHeartProjectile(struct Sprite *sprite) { InitSpritePosToAnimAttacker(sprite, TRUE); sprite->data[0] = 95; @@ -3163,7 +3215,7 @@ static void AnimRedHeartProjectile_Step(struct Sprite *sprite) } } -void AnimParticuleBurst(struct Sprite *sprite) +void AnimParticleBurst(struct Sprite *sprite) { if (sprite->data[0] == 0) { @@ -3185,10 +3237,10 @@ void AnimParticuleBurst(struct Sprite *sprite) } } -void AnimRedHeartRising(struct Sprite *sprite) +static void AnimRedHeartRising(struct Sprite *sprite) { sprite->x = gBattleAnimArgs[0]; - sprite->y = 160; + sprite->y = DISPLAY_HEIGHT; sprite->data[0] = gBattleAnimArgs[2]; sprite->data[1] = gBattleAnimArgs[1]; sprite->callback = WaitAnimForDuration; @@ -3234,10 +3286,10 @@ void AnimTask_HeartsBackground(u8 taskId) if (IsContest()) RelocateBattleBgPal(animBg.paletteId, animBg.bgTilemap, 0, 0); - gTasks[taskId].func = HeartsBackground_Step; + gTasks[taskId].func = AnimTask_HeartsBackground_Step; } -static void HeartsBackground_Step(u8 taskId) +static void AnimTask_HeartsBackground_Step(u8 taskId) { struct BattleAnimBgData animBg; @@ -3322,10 +3374,10 @@ void AnimTask_ScaryFace(u8 taskId) if (IsContest()) RelocateBattleBgPal(animBg.paletteId, animBg.bgTilemap, 0, 0); - gTasks[taskId].func = ScaryFace_Step; + gTasks[taskId].func = AnimTask_ScaryFace_Step; } -static void ScaryFace_Step(u8 taskId) +static void AnimTask_ScaryFace_Step(u8 taskId) { struct BattleAnimBgData animBg; @@ -3386,7 +3438,7 @@ static void ScaryFace_Step(u8 taskId) // Used by MOVE_HIDDEN_POWER // arg 0: duration // arg 1: initial wave offset -void AnimOrbitFast(struct Sprite *sprite) +static void AnimOrbitFast(struct Sprite *sprite) { sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); @@ -3394,11 +3446,11 @@ void AnimOrbitFast(struct Sprite *sprite) sprite->data[0] = gBattleAnimArgs[0]; sprite->data[1] = gBattleAnimArgs[1]; sprite->data[7] = GetBattlerSpriteSubpriority(gBattleAnimAttacker); - sprite->callback = AnimOrbitFastStep; + sprite->callback = AnimOrbitFast_Step; sprite->callback(sprite); } -static void AnimOrbitFastStep(struct Sprite *sprite) +static void AnimOrbitFast_Step(struct Sprite *sprite) { if (sprite->data[1] >= 64 && sprite->data[1] <= 191) sprite->subpriority = sprite->data[7] + 1; @@ -3437,20 +3489,21 @@ static void AnimOrbitFastStep(struct Sprite *sprite) // Moves orbs away from the mon, based on where they are in their orbit. // Used in MOVE_HIDDEN_POWER. // arg 0: initial wave offset -void AnimOrbitScatter(struct Sprite *sprite) +static void AnimOrbitScatter(struct Sprite *sprite) { sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); sprite->data[0] = Sin(gBattleAnimArgs[0], 10); sprite->data[1] = Cos(gBattleAnimArgs[0], 7); - sprite->callback = AnimOrbitScatterStep; + sprite->callback = AnimOrbitScatter_Step; } -static void AnimOrbitScatterStep(struct Sprite *sprite) +static void AnimOrbitScatter_Step(struct Sprite *sprite) { sprite->x2 += sprite->data[0]; sprite->y2 += sprite->data[1]; - if (sprite->x + sprite->x2 + 16 > 272u || sprite->y + sprite->y2 > 160 || sprite->y + sprite->y2 < -16) + if (sprite->x + sprite->x2 + 16 > ((u32)DISPLAY_WIDTH + 32) + || sprite->y + sprite->y2 > DISPLAY_HEIGHT || sprite->y + sprite->y2 < -16) DestroyAnimSprite(sprite); } @@ -3462,7 +3515,7 @@ static void AnimSpitUpOrb_Step(struct Sprite *sprite) DestroyAnimSprite(sprite); } -void AnimSpitUpOrb(struct Sprite *sprite) +static void AnimSpitUpOrb(struct Sprite *sprite) { sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); @@ -3472,19 +3525,19 @@ void AnimSpitUpOrb(struct Sprite *sprite) sprite->callback = AnimSpitUpOrb_Step; } -static void sub_80AA3D4(struct Sprite *sprite) +static void AnimEyeSparkle_Step(struct Sprite *sprite) { if (sprite->animEnded) DestroyAnimSprite(sprite); } -void AnimEyeSparkle(struct Sprite *sprite) +static void AnimEyeSparkle(struct Sprite *sprite) { InitSpritePosToAnimAttacker(sprite, TRUE); - sprite->callback = sub_80AA3D4; + sprite->callback = AnimEyeSparkle_Step; } -void AnimAngel(struct Sprite *sprite) +static void AnimAngel(struct Sprite *sprite) { s16 var0; @@ -3510,7 +3563,7 @@ void AnimAngel(struct Sprite *sprite) DestroyAnimSprite(sprite); } -static void sub_80AA49C(struct Sprite *sprite) +static void AnimPinkHeart_Step(struct Sprite *sprite) { sprite->data[5]++; sprite->x2 = Sin(sprite->data[3], 5); @@ -3523,7 +3576,7 @@ static void sub_80AA49C(struct Sprite *sprite) DestroyAnimSprite(sprite); } -void AnimPinkHeart(struct Sprite *sprite) +static void AnimPinkHeart(struct Sprite *sprite) { if (sprite->data[0] == 0) { @@ -3539,7 +3592,7 @@ void AnimPinkHeart(struct Sprite *sprite) sprite->data[3] = (sprite->data[3] + 3) & 0xFF; if (sprite->data[3] > 70) { - sprite->callback = sub_80AA49C; + sprite->callback = AnimPinkHeart_Step; sprite->x += sprite->x2; sprite->y += sprite->y2; sprite->x2 = 0; @@ -3549,7 +3602,7 @@ void AnimPinkHeart(struct Sprite *sprite) } } -void AnimDevil(struct Sprite *sprite) +static void AnimDevil(struct Sprite *sprite) { if (sprite->data[3] == 0) { @@ -3578,7 +3631,7 @@ void AnimDevil(struct Sprite *sprite) DestroyAnimSprite(sprite); } -void AnimFurySwipes(struct Sprite *sprite) +static void AnimFurySwipes(struct Sprite *sprite) { if (sprite->data[0] == 0) { @@ -3593,7 +3646,7 @@ void AnimFurySwipes(struct Sprite *sprite) } } -void AnimMovementWaves(struct Sprite *sprite) +static void AnimMovementWaves(struct Sprite *sprite) { if (!gBattleAnimArgs[2]) { @@ -3640,16 +3693,16 @@ void AnimTask_UproarDistortion(u8 taskId) u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); PrepareAffineAnimInTaskData(&gTasks[taskId], spriteId, sUproarAffineAnimCmds); - gTasks[taskId].func = UproarDistortion_Step; + gTasks[taskId].func = AnimTask_UproarDistortion_Step; } -static void UproarDistortion_Step(u8 taskId) +static void AnimTask_UproarDistortion_Step(u8 taskId) { if (!RunAffineAnimFromTaskData(&gTasks[taskId])) DestroyAnimVisualTask(taskId); } -void AnimJaggedMusicNote(struct Sprite *sprite) +static void AnimJaggedMusicNote(struct Sprite *sprite) { int var1; u8 battler = !gBattleAnimArgs[0] ? gBattleAnimAttacker : gBattleAnimTarget; @@ -3687,7 +3740,7 @@ static void AnimJaggedMusicNote_Step(struct Sprite *sprite) DestroyAnimSprite(sprite); } -void AnimPerishSongMusicNote2(struct Sprite *sprite) +static void AnimPerishSongMusicNote2(struct Sprite *sprite) { if (!sprite->data[0]) { @@ -3696,13 +3749,13 @@ void AnimPerishSongMusicNote2(struct Sprite *sprite) } if (++sprite->data[0] == sprite->data[1]) - SetGreyscaleOrOriginalPalette(sprite->oam.paletteNum + 16, 0); + SetGreyscaleOrOriginalPalette(sprite->oam.paletteNum + 16, FALSE); if (sprite->data[0] == sprite->data[1] + 80) DestroyAnimSprite(sprite); } -void AnimPerishSongMusicNote(struct Sprite *sprite) +static void AnimPerishSongMusicNote(struct Sprite *sprite) { int index; int var2; @@ -3778,11 +3831,11 @@ static void AnimPerishSongMusicNote_Step2(struct Sprite *sprite) } } -void AnimGuardRing(struct Sprite *sprite) +static void AnimGuardRing(struct Sprite *sprite) { if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimAttacker))) { - SetAverageBattlerPositions(gBattleAnimAttacker, 0, &sprite->x, &sprite->y); + SetAverageBattlerPositions(gBattleAnimAttacker, FALSE, &sprite->x, &sprite->y); sprite->y += 40; StartSpriteAffineAnim(sprite, 1); @@ -3803,12 +3856,12 @@ void AnimGuardRing(struct Sprite *sprite) void AnimTask_IsFuryCutterHitRight(u8 taskId) { - gBattleAnimArgs[7] = gAnimDisableStructPtr->furyCutterCounter & 1; + gBattleAnimArgs[ARG_RET_ID] = gAnimDisableStructPtr->furyCutterCounter & 1; DestroyAnimVisualTask(taskId); } void AnimTask_GetFuryCutterHitCount(u8 taskId) { - gBattleAnimArgs[7] = gAnimDisableStructPtr->furyCutterCounter; + gBattleAnimArgs[ARG_RET_ID] = gAnimDisableStructPtr->furyCutterCounter; DestroyAnimVisualTask(taskId); } diff --git a/src/battle_anim_effects_3.c b/src/battle_anim_effects_3.c index b7c1fa2cc..d0493ef96 100644 --- a/src/battle_anim_effects_3.c +++ b/src/battle_anim_effects_3.c @@ -15,63 +15,100 @@ #include "constants/songs.h" #include "constants/weather.h" -// Function Declarations -static void AnimBlackSmokeStep(struct Sprite *); +static void AnimBlackSmoke(struct Sprite *); +static void AnimBlackSmoke_Step(struct Sprite *); +static void AnimWhiteHalo(struct Sprite *); static void AnimWhiteHalo_Step1(struct Sprite *); static void AnimWhiteHalo_Step2(struct Sprite *); +static void AnimMeanLookEye(struct Sprite *); static void AnimMeanLookEye_Step1(struct Sprite *); static void AnimMeanLookEye_Step2(struct Sprite *); static void AnimMeanLookEye_Step3(struct Sprite *); static void AnimMeanLookEye_Step4(struct Sprite *); static void SetPsychicBackground_Step(u8); static void FadeScreenToWhite_Step(u8); +static void AnimSpikes(struct Sprite *); static void AnimSpikes_Step1(struct Sprite *); static void AnimSpikes_Step2(struct Sprite *); +static void AnimSpotlight(struct Sprite *); static void AnimSpotlight_Step1(struct Sprite *); static void AnimSpotlight_Step2(struct Sprite *); +static void AnimClappingHand(struct Sprite *); static void AnimClappingHand_Step(struct Sprite *); +static void AnimClappingHand2(struct Sprite *); +static void AnimRapidSpin(struct Sprite *); static void AnimRapidSpin_Step(struct Sprite *); static void RapinSpinMonElevation_Step(u8); static void TormentAttacker_Step(u8); static void TormentAttacker_Callback(struct Sprite *); +static void AnimWishStar(struct Sprite *); static void AnimWishStar_Step(struct Sprite *); +static void AnimMiniTwinklingStar(struct Sprite *); static void AnimMiniTwinklingStar_Step(struct Sprite *); +static void AnimGreenStar(struct Sprite *); static void AnimGreenStar_Step1(struct Sprite *); static void AnimGreenStar_Step2(struct Sprite *); static void AnimGreenStar_Callback(struct Sprite *); -static void AnimTask_RockMonBackAndForthStep(u8); -static void AnimSweetScentPetalStep(struct Sprite *); -static void AnimTask_FlailMovementStep(u8); -static void AnimFlatterConfettiStep(struct Sprite *); -static void AnimFlatterSpotlightStep(struct Sprite *); -static void AnimReversalOrbStep(struct Sprite *); -static void AnimTask_RolePlaySilhouetteStep1(u8); -static void AnimTask_RolePlaySilhouetteStep2(u8); -static void AnimTask_AcidArmorStep(u8); -static void AnimTask_DeepInhaleStep(u8); -static void AnimYawnCloudStep(struct Sprite *); -static void AnimTask_SquishAndSweatDropletsStep(u8); +static void AnimTask_RockMonBackAndForth_Step(u8); +static void AnimSweetScentPetal(struct Sprite *); +static void AnimSweetScentPetal_Step(struct Sprite *); +static void AnimTask_FlailMovement_Step(u8); +static void AnimFlatterConfetti(struct Sprite *); +static void AnimFlatterConfetti_Step(struct Sprite *); +static void AnimFlatterSpotlight(struct Sprite *); +static void AnimFlatterSpotlight_Step(struct Sprite *); +static void AnimReversalOrb(struct Sprite *); +static void AnimReversalOrb_Step(struct Sprite *); +static void AnimTask_RolePlaySilhouette_Step1(u8); +static void AnimTask_RolePlaySilhouette_Step2(u8); +static void AnimTask_AcidArmor_Step(u8); +static void AnimTask_DeepInhale_Step(u8); +static void AnimYawnCloud(struct Sprite *); +static void AnimYawnCloud_Step(struct Sprite *); +static void AnimTask_SquishAndSweatDroplets_Step(u8); static void CreateSweatDroplets(u8, bool8); -static void AnimTask_FacadeColorBlendStep(u8); -static void AnimRoarNoiseLineStep(struct Sprite *); -static void AnimTask_GlareEyeDotsStep(u8); +static void AnimTask_FacadeColorBlend_Step(u8); +static void AnimRoarNoiseLine(struct Sprite *); +static void AnimRoarNoiseLine_Step(struct Sprite *); +static void AnimTask_GlareEyeDots_Step(u8); static void GetGlareEyeDotCoords(s16, s16, s16, s16, u8, u8, s16 *, s16 *); -static void AnimTask_BarrageBallStep(u8); +static void AnimTask_BarrageBall_Step(u8); +static void AnimSmellingSaltsHand(struct Sprite *); static void AnimSmellingSaltsHand_Step(struct Sprite *); -static void AnimTask_SmellingSaltsSquishStep(u8); -static void AnimSmellingSaltExclamationStep(struct Sprite *); -static void AnimHelpingHandClapStep(struct Sprite *); -static void AnimTask_HelpingHandAttackerMovementStep(u8); -static void AnimForesightMagnifyingGlassStep(struct Sprite *); +static void AnimTask_SmellingSaltsSquish_Step(u8); +static void AnimSmellingSaltExclamation(struct Sprite *); +static void AnimSmellingSaltExclamation_Step(struct Sprite *); +static void AnimHelpingHandClap(struct Sprite *); +static void AnimHelpingHandClap_Step(struct Sprite *); +static void AnimTask_HelpingHandAttackerMovement_Step(u8); +static void AnimForesightMagnifyingGlass(struct Sprite *); +static void AnimForesightMagnifyingGlass_Step(struct Sprite *); static void AnimTask_MonToSubstituteDoll(u8); -static void AnimBlockXStep(struct Sprite *); +static void AnimBlockX(struct Sprite *); +static void AnimBlockX_Step(struct Sprite *); static void AnimTask_OdorSleuthMovementWaitFinish(u8); static void MoveOdorSleuthClone(struct Sprite *); -static void AnimTask_TeeterDanceMovementStep(u8); -static void AnimRecycleStep(struct Sprite *); -static void AnimTask_SlackOffSquishStep(u8); +static void AnimTask_TeeterDanceMovement_Step(u8); +static void AnimRecycle(struct Sprite *); +static void AnimRecycle_Step(struct Sprite *); +static void AnimTask_SlackOffSquish_Step(u8); +static void AnimTealAlert(struct Sprite *); +static void AnimLeer(struct Sprite *); +static void AnimLetterZ(struct Sprite *); +static void AnimFang(struct Sprite *); +static void AnimTriAttackTriangle(struct Sprite *); +static void AnimBatonPassPokeball(struct Sprite *); +static void AnimSwallowBlueOrb(struct Sprite *); +static void AnimWeakFrustrationAngerMark(struct Sprite *); +static void AnimPainSplitProjectile(struct Sprite *); +static void AnimSmokeBallEscapeCloud(struct Sprite *); +static void AnimFacadeSweatDrop(struct Sprite *); +static void AnimGlareEyeDot(struct Sprite *); +static void AnimAssistPawprint(struct Sprite *); +static void AnimMeteorMashStar(struct Sprite *); +static void AnimUnusedItemBagSteal(struct Sprite *); +static void AnimKnockOffStrike(struct Sprite *); -// Data static const union AnimCmd sScratchAnimCmds[] = { ANIMCMD_FRAME(0, 4), @@ -383,7 +420,7 @@ const struct SpriteTemplate gRapidSpinSpriteTemplate = .callback = AnimRapidSpin, }; -static const union AffineAnimCmd sUnknown_83FF080[] = +static const union AffineAnimCmd sAffineAnims_Torment[] = { AFFINEANIMCMD_FRAME(-12, 8, 0, 4), AFFINEANIMCMD_FRAME(20, -20, 0, 4), @@ -418,8 +455,8 @@ static const union AffineAnimCmd *const sTriAttackTriangleAffineAnimTable[] = const struct SpriteTemplate gTriAttackTriangleSpriteTemplate = { - .tileTag = ANIM_TAG_TRI_FORCE_TRIANGLE, - .paletteTag = ANIM_TAG_TRI_FORCE_TRIANGLE, + .tileTag = ANIM_TAG_TRI_ATTACK_TRIANGLE, + .paletteTag = ANIM_TAG_TRI_ATTACK_TRIANGLE, .oam = &gOamData_AffineDouble_ObjNormal_64x64, .anims = sTriAttackTriangleAnimTable, .images = NULL, @@ -669,7 +706,7 @@ const struct SpriteTemplate gSweetScentPetalSpriteTemplate = .callback = AnimSweetScentPetal, }; -static const u16 sUnknown_83FF33C[] = INCBIN_U16("graphics/battle_anims/unk_83FF33C.gbapal"); //Unused +static const u16 sUnusedPalette[] = INCBIN_U16("graphics/battle_anims/unk_83FF33C.gbapal"); //Unused static const union AnimCmd sPainSplitAnimCmds[] = { @@ -1023,7 +1060,7 @@ const struct SpriteTemplate gMeteorMashStarSpriteTemplate = .callback = AnimMeteorMashStar, }; -const struct SpriteTemplate gUnknown_83FF6D4 = +static const struct SpriteTemplate sUnusedStarBurstSpriteTemplate = { .tileTag = ANIM_TAG_GOLD_STARS, .paletteTag = ANIM_TAG_GOLD_STARS, @@ -1031,7 +1068,7 @@ const struct SpriteTemplate gUnknown_83FF6D4 = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = AnimParticuleBurst, + .callback = AnimParticleBurst, }; const struct SpriteTemplate gBlockXSpriteTemplate = @@ -1045,7 +1082,7 @@ const struct SpriteTemplate gBlockXSpriteTemplate = .callback = AnimBlockX, }; -const struct SpriteTemplate gUnknown_83FF704 = +static const struct SpriteTemplate sUnusedItemBagStealSpriteTemplate = { .tileTag = ANIM_TAG_ITEM_BAG, .paletteTag = ANIM_TAG_ITEM_BAG, @@ -1131,8 +1168,7 @@ static const union AffineAnimCmd sSlackOffSquishAffineAnimCmds[] = AFFINEANIMCMD_END, }; -// Functions -void AnimBlackSmoke(struct Sprite *sprite) +static void AnimBlackSmoke(struct Sprite *sprite) { sprite->x += gBattleAnimArgs[0]; sprite->y += gBattleAnimArgs[1]; @@ -1142,10 +1178,10 @@ void AnimBlackSmoke(struct Sprite *sprite) sprite->data[0] = -gBattleAnimArgs[2]; sprite->data[1] = gBattleAnimArgs[4]; - sprite->callback = AnimBlackSmokeStep; + sprite->callback = AnimBlackSmoke_Step; } -static void AnimBlackSmokeStep(struct Sprite *sprite) +static void AnimBlackSmoke_Step(struct Sprite *sprite) { if (sprite->data[1] > 0) { @@ -1162,11 +1198,14 @@ static void AnimBlackSmokeStep(struct Sprite *sprite) void AnimTask_SmokescreenImpact(u8 taskId) { - SmokescreenImpact(GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + 8, GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + 8, 0); + SmokescreenImpact( + GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + 8, + GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + 8, + FALSE); DestroyAnimVisualTask(taskId); } -void AnimWhiteHalo(struct Sprite *sprite) +static void AnimWhiteHalo(struct Sprite *sprite) { sprite->data[0] = 90; sprite->callback = WaitAnimForDuration; @@ -1193,7 +1232,7 @@ static void AnimWhiteHalo_Step2(struct Sprite *sprite) DestroyAnimSprite(sprite); } -void AnimTealAlert(struct Sprite *sprite) +static void AnimTealAlert(struct Sprite *sprite) { u16 rotation; u8 x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); @@ -1213,7 +1252,7 @@ void AnimTealAlert(struct Sprite *sprite) StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); } -void AnimMeanLookEye(struct Sprite *sprite) +static void AnimMeanLookEye(struct Sprite *sprite) { SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND); SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16)); @@ -1371,7 +1410,7 @@ static void FadeScreenToWhite_Step(u8 taskId) DestroyTask(taskId); } -void AnimSpikes(struct Sprite *sprite) +static void AnimSpikes(struct Sprite *sprite) { u16 x; u16 y; @@ -1409,7 +1448,7 @@ static void AnimSpikes_Step2(struct Sprite *sprite) DestroyAnimSprite(sprite); } -void AnimLeer(struct Sprite *sprite) +static void AnimLeer(struct Sprite *sprite) { SetSpriteCoordsToAnimAttackerCoords(sprite); SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]); @@ -1418,7 +1457,7 @@ void AnimLeer(struct Sprite *sprite) StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); } -void AnimLetterZ(struct Sprite *sprite) +static void AnimLetterZ(struct Sprite *sprite) { int var0; @@ -1456,7 +1495,7 @@ void AnimLetterZ(struct Sprite *sprite) DestroyAnimSprite(sprite); } -void AnimFang(struct Sprite *sprite) +static void AnimFang(struct Sprite *sprite) { if (sprite->animEnded) DestroyAnimSprite(sprite); @@ -1465,9 +1504,9 @@ void AnimFang(struct Sprite *sprite) void AnimTask_IsTargetPlayerSide(u8 taskId) { if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_OPPONENT) - gBattleAnimArgs[7] = 0; + gBattleAnimArgs[ARG_RET_ID] = FALSE; else - gBattleAnimArgs[7] = 1; + gBattleAnimArgs[ARG_RET_ID] = TRUE; DestroyAnimVisualTask(taskId); } @@ -1475,14 +1514,14 @@ void AnimTask_IsTargetPlayerSide(u8 taskId) void AnimTask_IsHealingMove(u8 taskId) { if (gAnimMoveDmg > 0) - gBattleAnimArgs[7] = 0; + gBattleAnimArgs[ARG_RET_ID] = FALSE; else - gBattleAnimArgs[7] = 1; + gBattleAnimArgs[ARG_RET_ID] = TRUE; DestroyAnimVisualTask(taskId); } -void AnimSpotlight(struct Sprite *sprite) +static void AnimSpotlight(struct Sprite *sprite) { SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ); SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJWIN_ON); @@ -1545,7 +1584,7 @@ static void AnimSpotlight_Step2(struct Sprite *sprite) DestroyAnimSprite(sprite); } -void AnimClappingHand(struct Sprite *sprite) +static void AnimClappingHand(struct Sprite *sprite) { if (gBattleAnimArgs[3] == 0) { @@ -1604,7 +1643,7 @@ static void AnimClappingHand_Step(struct Sprite *sprite) DestroyAnimSprite(sprite); } -void AnimClappingHand2(struct Sprite *sprite) +static void AnimClappingHand2(struct Sprite *sprite) { sprite->oam.objMode = ST_OAM_OBJ_WINDOW; sprite->data[3] = 255; @@ -1616,17 +1655,17 @@ void AnimTask_CreateSpotlight(u8 taskId) if (IsContest()) { SetGpuReg(REG_OFFSET_WININ, WININ_WIN1_OBJ | WININ_WIN1_BG_ALL | WININ_WIN0_CLR | WININ_WIN0_OBJ | WININ_WIN0_BG_ALL); - gBattle_WIN1H = WININ_WIN1_OBJ | WININ_WIN1_BG3 | WIN_RANGE(0, 0xF0) | WIN_RANGE(0x80, 0x0); - gBattle_WIN1V = WININ_WIN0_CLR | WIN_RANGE(0, 0x80); + gBattle_WIN1H = WIN_RANGE(152, DISPLAY_WIDTH); + gBattle_WIN1V = WIN_RANGE(0, DISPLAY_HEIGHT); SetGpuReg(REG_OFFSET_WIN1H, gBattle_WIN0H); SetGpuReg(REG_OFFSET_WIN1V, gBattle_WIN0V); } else { SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ); - gBattle_WIN1H = WIN_RANGE(0, 0xF0); - gBattle_WIN1V = WININ_WIN0_CLR | WIN_RANGE(0, 0x80) | WININ_WIN1_BG3 | WININ_WIN1_OBJ | WININ_WIN1_CLR | WIN_RANGE(0x40, 0); - SetGpuReg(REG_OFFSET_WIN1H, WIN_RANGE(0, 0xF0)); + gBattle_WIN1H = WIN_RANGE(0, DISPLAY_WIDTH); + gBattle_WIN1V = WIN_RANGE(120, DISPLAY_HEIGHT); + SetGpuReg(REG_OFFSET_WIN1H, gBattle_WIN1H); SetGpuReg(REG_OFFSET_WIN1V, gBattle_WIN1V); SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN1_ON); } @@ -1645,7 +1684,7 @@ void AnimTask_RemoveSpotlight(u8 taskId) DestroyAnimVisualTask(taskId); } -void AnimRapidSpin(struct Sprite *sprite) +static void AnimRapidSpin(struct Sprite *sprite) { if (gBattleAnimArgs[0] == 0) { @@ -1721,13 +1760,13 @@ void AnimTask_RapinSpinMonElevation(u8 taskId) { var3 = gBattle_BG1_X; task->data[8] = var3; - var4 = var3 + 240; + var4 = var3 + DISPLAY_WIDTH; } else { var3 = gBattle_BG2_X; task->data[8] = var3; - var4 = var3 + 240; + var4 = var3 + DISPLAY_WIDTH; } task->data[9] = var4; @@ -1878,7 +1917,7 @@ static void TormentAttacker_Step(u8 taskId) task->data[5] -= 6; } - PrepareAffineAnimInTaskData(task, task->data[15], sUnknown_83FF080); + PrepareAffineAnimInTaskData(task, task->data[15], sAffineAnims_Torment); task->data[1]++; task->data[0] = 1; break; @@ -1946,7 +1985,7 @@ static void TormentAttacker_Callback(struct Sprite *sprite) } } -void AnimTriAttackTriangle(struct Sprite *sprite) +static void AnimTriAttackTriangle(struct Sprite *sprite) { if (sprite->data[0] == 0) InitSpritePosToAnimAttacker(sprite, FALSE); @@ -1992,7 +2031,7 @@ void AnimTask_DefenseCurlDeformMon(u8 taskId) } } -void AnimBatonPassPokeball(struct Sprite *sprite) +static void AnimBatonPassPokeball(struct Sprite *sprite) { u8 spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); @@ -2035,12 +2074,12 @@ void AnimBatonPassPokeball(struct Sprite *sprite) } } -void AnimWishStar(struct Sprite *sprite) +static void AnimWishStar(struct Sprite *sprite) { if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) sprite->x = -16; else - sprite->x = 256; + sprite->x = DISPLAY_WIDTH + 16; sprite->y = 0; sprite->callback = AnimWishStar_Step; @@ -2069,11 +2108,11 @@ static void AnimWishStar_Step(struct Sprite *sprite) } newX = sprite->x + sprite->x2 + 32; - if (newX > 304) + if (newX > DISPLAY_WIDTH + 64) DestroyAnimSprite(sprite); } -void AnimMiniTwinklingStar(struct Sprite *sprite) +static void AnimMiniTwinklingStar(struct Sprite *sprite) { u8 rand; s8 y; @@ -2148,7 +2187,7 @@ void AnimTask_SpitUpDeformMon(u8 taskId) } } -void AnimSwallowBlueOrb(struct Sprite *sprite) +static void AnimSwallowBlueOrb(struct Sprite *sprite) { switch (sprite->data[0]) { @@ -2224,7 +2263,7 @@ void AnimTask_TransformMon(u8 taskId) src = gMonSpritesGfxPtr->sprites[position] + (gBattleMonForms[gBattleAnimAttacker] << 11); dest = animBg.bgTiles; - CpuCopy32(src, dest, 0x800); + CpuCopy32(src, dest, MON_PIC_SIZE); LoadBgTiles(1, animBg.bgTiles, 0x800, animBg.tilesOffset); gTasks[taskId].data[0]++; break; @@ -2263,7 +2302,7 @@ void AnimTask_TransformMon(u8 taskId) void AnimTask_IsMonInvisible(u8 taskId) { - gBattleAnimArgs[7] = gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].invisible; + gBattleAnimArgs[ARG_RET_ID] = gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].invisible; DestroyAnimVisualTask(taskId); } @@ -2363,7 +2402,7 @@ void AnimTask_MorningSunLightBeam(u8 taskId) } } -void AnimGreenStar(struct Sprite *sprite) +static void AnimGreenStar(struct Sprite *sprite) { s16 xOffset; u8 spriteId1; @@ -2574,7 +2613,7 @@ void AnimTask_StrongFrustrationGrowAndShrink(u8 taskId) // Animates an anger mark near the mon's head. // arg 0: initial x pixel offset // arg 1: initial y pixel offset -void AnimWeakFrustrationAngerMark(struct Sprite *sprite) +static void AnimWeakFrustrationAngerMark(struct Sprite *sprite) { if (sprite->data[0] == 0) { @@ -2638,10 +2677,10 @@ void AnimTask_RockMonBackAndForth(u8 taskId) } PrepareBattlerSpriteForRotScale(task->data[15], ST_OAM_OBJ_NORMAL); - task->func = AnimTask_RockMonBackAndForthStep; + task->func = AnimTask_RockMonBackAndForth_Step; } -static void AnimTask_RockMonBackAndForthStep(u8 taskId) +static void AnimTask_RockMonBackAndForth_Step(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -2699,7 +2738,7 @@ static void AnimTask_RockMonBackAndForthStep(u8 taskId) // arg 0: initial y pixel offset // arg 1: sprite anim num // arg 2: unused -void AnimSweetScentPetal(struct Sprite *sprite) +static void AnimSweetScentPetal(struct Sprite *sprite) { if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) { @@ -2708,16 +2747,16 @@ void AnimSweetScentPetal(struct Sprite *sprite) } else { - sprite->x = 240; + sprite->x = DISPLAY_WIDTH; sprite->y = gBattleAnimArgs[0] - 30; } sprite->data[2] = gBattleAnimArgs[2]; StartSpriteAnim(sprite, gBattleAnimArgs[1]); - sprite->callback = AnimSweetScentPetalStep; + sprite->callback = AnimSweetScentPetal_Step; } -static void AnimSweetScentPetalStep(struct Sprite *sprite) +static void AnimSweetScentPetal_Step(struct Sprite *sprite) { sprite->data[0] += 3; if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) @@ -2725,7 +2764,7 @@ static void AnimSweetScentPetalStep(struct Sprite *sprite) sprite->x += 5; sprite->y -= 1; - if (sprite->x > 240) + if (sprite->x > DISPLAY_WIDTH) DestroyAnimSprite(sprite); sprite->y2 = Sin(sprite->data[0] & 0xFF, 16); @@ -2758,10 +2797,10 @@ void AnimTask_FlailMovement(u8 taskId) task->data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); PrepareBattlerSpriteForRotScale(task->data[15], ST_OAM_OBJ_NORMAL); - task->func = AnimTask_FlailMovementStep; + task->func = AnimTask_FlailMovement_Step; } -static void AnimTask_FlailMovementStep(u8 taskId) +static void AnimTask_FlailMovement_Step(u8 taskId) { int temp; struct Task *task = &gTasks[taskId]; @@ -2835,7 +2874,7 @@ static void AnimTask_FlailMovementStep(u8 taskId) // arg 0: initial x pixel offset // arg 1: initial y pixel offset // arg 2: which battler -void AnimPainSplitProjectile(struct Sprite *sprite) +static void AnimPainSplitProjectile(struct Sprite *sprite) { if (!sprite->data[0]) { @@ -2931,7 +2970,7 @@ void AnimTask_PainSplitMovement(u8 taskId) // Move a piece of confetti in a slightly-random speed across the screen. // arg 0: which battler the confetti starts from -void AnimFlatterConfetti(struct Sprite *sprite) +static void AnimFlatterConfetti(struct Sprite *sprite) { u8 tileOffset; int rand1; @@ -2959,10 +2998,10 @@ void AnimFlatterConfetti(struct Sprite *sprite) sprite->x = 248; sprite->y = 104; - sprite->callback = AnimFlatterConfettiStep; + sprite->callback = AnimFlatterConfetti_Step; } -static void AnimFlatterConfettiStep(struct Sprite *sprite) +static void AnimFlatterConfetti_Step(struct Sprite *sprite) { if (sprite->data[2] == 0) { @@ -2988,7 +3027,7 @@ static void AnimFlatterConfettiStep(struct Sprite *sprite) // arg 0: initial x pixel offset // arg 1: initial y pixel offset // arg 2: duration of fully-opened spotlight -void AnimFlatterSpotlight(struct Sprite *sprite) +static void AnimFlatterSpotlight(struct Sprite *sprite) { SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ); SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJWIN_ON); @@ -3000,10 +3039,10 @@ void AnimFlatterSpotlight(struct Sprite *sprite) InitSpritePosToAnimTarget(sprite, FALSE); sprite->oam.objMode = ST_OAM_OBJ_WINDOW; sprite->invisible = TRUE; - sprite->callback = AnimFlatterSpotlightStep; + sprite->callback = AnimFlatterSpotlight_Step; } -static void AnimFlatterSpotlightStep(struct Sprite *sprite) +static void AnimFlatterSpotlight_Step(struct Sprite *sprite) { switch (sprite->data[1]) { @@ -3037,17 +3076,17 @@ static void AnimFlatterSpotlightStep(struct Sprite *sprite) // Spins an orb around the attacking mon, while its path radius grows and shrinks. // arg 0: duration // arg 1: initial wave offset -void AnimReversalOrb(struct Sprite *sprite) +static void AnimReversalOrb(struct Sprite *sprite) { 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->callback = AnimReversalOrbStep; + sprite->callback = AnimReversalOrb_Step; sprite->callback(sprite); } -static void AnimReversalOrbStep(struct Sprite *sprite) +static void AnimReversalOrb_Step(struct Sprite *sprite) { sprite->x2 = Sin(sprite->data[1], sprite->data[2] >> 8); sprite->y2 = Cos(sprite->data[1], sprite->data[3] >> 8); @@ -3143,10 +3182,10 @@ void AnimTask_RolePlaySilhouette(u8 taskId) SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL); SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[1], 16 - gTasks[taskId].data[1])); gTasks[taskId].data[0] = spriteId; - gTasks[taskId].func = AnimTask_RolePlaySilhouetteStep1; + gTasks[taskId].func = AnimTask_RolePlaySilhouette_Step1; } -static void AnimTask_RolePlaySilhouetteStep1(u8 taskId) +static void AnimTask_RolePlaySilhouette_Step1(u8 taskId) { if (gTasks[taskId].data[10]++ > 1) { @@ -3157,12 +3196,12 @@ static void AnimTask_RolePlaySilhouetteStep1(u8 taskId) { gTasks[taskId].data[10] = 256; gTasks[taskId].data[11] = 256; - gTasks[taskId].func = AnimTask_RolePlaySilhouetteStep2; + gTasks[taskId].func = AnimTask_RolePlaySilhouette_Step2; } } } -static void AnimTask_RolePlaySilhouetteStep2(u8 taskId) +static void AnimTask_RolePlaySilhouette_Step2(u8 taskId) { u8 spriteId = gTasks[taskId].data[0]; @@ -3239,10 +3278,10 @@ void AnimTask_AcidArmor(u8 taskId) scanlineParams.initState = 1; scanlineParams.unused9 = 0; ScanlineEffect_SetParams(scanlineParams); - task->func = AnimTask_AcidArmorStep; + task->func = AnimTask_AcidArmor_Step; } -static void AnimTask_AcidArmorStep(u8 taskId) +static void AnimTask_AcidArmor_Step(u8 taskId) { struct Task *task; s16 var1; @@ -3365,10 +3404,10 @@ void AnimTask_DeepInhale(u8 taskId) task->data[0] = 0; task->data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); PrepareAffineAnimInTaskData(&gTasks[taskId], task->data[15], sDeepInhaleAffineAnimCmds); - task->func = AnimTask_DeepInhaleStep; + task->func = AnimTask_DeepInhale_Step; } -static void AnimTask_DeepInhaleStep(u8 taskId) +static void AnimTask_DeepInhale_Step(u8 taskId) { u16 var0; struct Task *task = &gTasks[taskId]; @@ -3417,7 +3456,7 @@ static void UpdateYawnCloudPosition(struct Sprite *sprite) // Drifts a cloud in a wavy path towards the target mon. // arg 0: which affine anim -void AnimYawnCloud(struct Sprite *sprite) +static void AnimYawnCloud(struct Sprite *sprite) { s16 destX = sprite->x; s16 destY = sprite->y; @@ -3426,10 +3465,10 @@ void AnimYawnCloud(struct Sprite *sprite) StartSpriteAffineAnim(sprite, gBattleAnimArgs[0]); InitYawnCloudPosition(sprite, sprite->x, sprite->y, destX, destY, 64); sprite->data[0] = 0; - sprite->callback = AnimYawnCloudStep; + sprite->callback = AnimYawnCloud_Step; } -static void AnimYawnCloudStep(struct Sprite *sprite) +static void AnimYawnCloud_Step(struct Sprite *sprite) { int index; @@ -3455,7 +3494,7 @@ static void AnimYawnCloudStep(struct Sprite *sprite) // arg 1: initial x pixel offset // arg 2: initial y pixel offset // arg 3: ? -void AnimSmokeBallEscapeCloud(struct Sprite *sprite) +static void AnimSmokeBallEscapeCloud(struct Sprite *sprite) { sprite->data[0] = gBattleAnimArgs[3]; StartSpriteAffineAnim(sprite, gBattleAnimArgs[0]); @@ -3467,7 +3506,7 @@ void AnimSmokeBallEscapeCloud(struct Sprite *sprite) sprite->callback = DestroyAnimSpriteAfterTimer; } -static void sub_80E1990(u8 taskId) +static void AnimTask_SlideMonForFocusBand_Step2(u8 taskId) { u16 var0 = 0; u16 var1 = 0; @@ -3517,7 +3556,7 @@ static void sub_80E1990(u8 taskId) } } -static void sub_80E1AD8(u8 taskId) +static void AnimTask_SlideMonForFocusBand_Step1(u8 taskId) { u16 var0 = 0; u16 var1 = 0; @@ -3566,7 +3605,7 @@ static void sub_80E1AD8(u8 taskId) { gTasks[taskId].data[0] = 30; gTasks[taskId].data[13] = 0; - gTasks[taskId].func = sub_80E1990; + gTasks[taskId].func = AnimTask_SlideMonForFocusBand_Step2; } } @@ -3601,9 +3640,29 @@ void AnimTask_SlideMonForFocusBand(u8 taskId) gTasks[taskId].data[7] = 0; gTasks[taskId].data[4] = gBattleAnimArgs[4]; gTasks[taskId].data[5] = gBattleAnimArgs[5]; - gTasks[taskId].func = sub_80E1AD8; + gTasks[taskId].func = AnimTask_SlideMonForFocusBand_Step1; } +#define IDX_ACTIVE_SPRITES 2 // Used by the sprite callback to modify the number of active sprites + +// Task data for AnimTask_SquishAndSweatDroplets +#define tState data[0] +#define tTimer data[1] +#define tActiveSprites data[IDX_ACTIVE_SPRITES] +#define tNumSquishes data[3] +#define tBaseX data[4] +#define tBaseY data[5] +#define tSubpriority data[6] +// data[7]-data[15] used by PrepareAffineAnimInTaskData +#define tBattlerSpriteId data[15] + +// Sprite data for AnimFacadeSweatDrop +#define sTimer data[0] +#define sVelocX data[1] +#define sVelocY data[2] +#define sTaskId data[3] +#define sActiveSpritesIdx data[4] + // Squishes the mon vertically and emits sweat droplets a few times. // arg 0: battler // arg 1: num squishes @@ -3615,58 +3674,61 @@ void AnimTask_SquishAndSweatDroplets(u8 taskId) if (!gBattleAnimArgs[1]) DestroyAnimVisualTask(taskId); - task->data[0] = 0; - task->data[1] = 0; - task->data[2] = 0; - task->data[3] = gBattleAnimArgs[1]; + task->tState = 0; + task->tTimer = 0; + task->tActiveSprites = 0; + task->tNumSquishes = gBattleAnimArgs[1]; if (gBattleAnimArgs[0] == ANIM_ATTACKER) battler = gBattleAnimAttacker; else battler = gBattleAnimTarget; - task->data[4] = GetBattlerSpriteCoord(battler, BATTLER_COORD_X); - task->data[5] = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y); - task->data[6] = GetBattlerSpriteSubpriority(battler); - task->data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); - PrepareAffineAnimInTaskData(task, task->data[15], sFacadeSquishAffineAnimCmds); - task->func = AnimTask_SquishAndSweatDropletsStep; + task->tBaseX = GetBattlerSpriteCoord(battler, BATTLER_COORD_X); + task->tBaseY = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y); + task->tSubpriority = GetBattlerSpriteSubpriority(battler); + task->tBattlerSpriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); + PrepareAffineAnimInTaskData(task, task->tBattlerSpriteId, sFacadeSquishAffineAnimCmds); + task->func = AnimTask_SquishAndSweatDroplets_Step; } -static void AnimTask_SquishAndSweatDropletsStep(u8 taskId) +static void AnimTask_SquishAndSweatDroplets_Step(u8 taskId) { struct Task *task = &gTasks[taskId]; - switch (task->data[0]) + switch (task->tState) { case 0: - task->data[1]++; - if (task->data[1] == 6) + task->tTimer++; + if (task->tTimer == 6) CreateSweatDroplets(taskId, TRUE); - if (task->data[1] == 18) + if (task->tTimer == 18) CreateSweatDroplets(taskId, FALSE); if (!RunAffineAnimFromTaskData(task)) { - if (--task->data[3] == 0) + if (--task->tNumSquishes == 0) { - task->data[0]++; + // Animation is finished + task->tState++; } else { - task->data[1] = 0; - PrepareAffineAnimInTaskData(task, task->data[15], sFacadeSquishAffineAnimCmds); + // Animation continues, more droplet sprites to create + task->tTimer = 0; + PrepareAffineAnimInTaskData(task, task->tBattlerSpriteId, sFacadeSquishAffineAnimCmds); } } break; case 1: - if (task->data[2] == 0) + // Wait for sprites to be destroyed before ending task + if (task->tActiveSprites == 0) DestroyAnimVisualTask(taskId); break; } } -static void CreateSweatDroplets(u8 taskId, bool8 arg1) +static void CreateSweatDroplets(u8 taskId, bool8 lowerDroplets) { u8 i; s8 xOffset, yOffset; @@ -3675,7 +3737,7 @@ static void CreateSweatDroplets(u8 taskId, bool8 arg1) s16 yCoords[2]; task = &gTasks[taskId]; - if (!arg1) + if (!lowerDroplets) { xOffset = 18; yOffset = -20; @@ -3686,39 +3748,54 @@ static void CreateSweatDroplets(u8 taskId, bool8 arg1) yOffset = 20; } - xCoords[0] = task->data[4] - xOffset; - xCoords[1] = task->data[4] - xOffset - 4; - xCoords[2] = task->data[4] + xOffset; - xCoords[3] = task->data[4] + xOffset + 4; - yCoords[0] = task->data[5] + yOffset; - yCoords[1] = task->data[5] + yOffset + 6; + xCoords[0] = task->tBaseX - xOffset; + xCoords[1] = task->tBaseX - xOffset - 4; + xCoords[2] = task->tBaseX + xOffset; + xCoords[3] = task->tBaseX + xOffset + 4; + yCoords[0] = task->tBaseY + yOffset; + yCoords[1] = task->tBaseY + yOffset + 6; for (i = 0; i < 4; i++) { - u8 spriteId = CreateSprite(&gFacadeSweatDropSpriteTemplate, xCoords[i], yCoords[i & 1], task->data[6] - 5); + u8 spriteId = CreateSprite(&gFacadeSweatDropSpriteTemplate, xCoords[i], yCoords[i & 1], task->tSubpriority - 5); if (spriteId != MAX_SPRITES) { - gSprites[spriteId].data[0] = 0; - gSprites[spriteId].data[1] = i < 2 ? -2 : 2; - gSprites[spriteId].data[2] = -1; - gSprites[spriteId].data[3] = taskId; - gSprites[spriteId].data[4] = 2; - task->data[2]++; + gSprites[spriteId].sTimer = 0; + gSprites[spriteId].sVelocX = i < 2 ? -2 : 2; // First two travel left, remaining travel right + gSprites[spriteId].sVelocY = -1; + gSprites[spriteId].sTaskId = taskId; + gSprites[spriteId].sActiveSpritesIdx = IDX_ACTIVE_SPRITES; + task->tActiveSprites++; } } } -void AnimFacadeSweatDrop(struct Sprite *sprite) +static void AnimFacadeSweatDrop(struct Sprite *sprite) { - sprite->x += sprite->data[1]; - sprite->y += sprite->data[2]; - if (++sprite->data[0] > 6) + sprite->x += sprite->sVelocX; + sprite->y += sprite->sVelocY; + if (++sprite->sTimer > 6) { - gTasks[sprite->data[3]].data[sprite->data[4]]--; + gTasks[sprite->sTaskId].data[sprite->sActiveSpritesIdx]--; DestroySprite(sprite); } } +#undef IDX_ACTIVE_SPRITES +#undef tState +#undef tTimer +#undef tActiveSprites +#undef tNumSquishes +#undef tBaseX +#undef tBaseY +#undef tSubpriority +#undef tBattlerSpriteId +#undef sTimer +#undef sVelocX +#undef sVelocY +#undef sTaskId +#undef sActiveSpritesIdx + // Blends the mon sprite's color with a rotating set of colors. // arg 0: battler // arg 1: duration @@ -3730,10 +3807,10 @@ void AnimTask_FacadeColorBlend(u8 taskId) gTasks[taskId].data[1] = gBattleAnimArgs[1]; spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); gTasks[taskId].data[2] = 0x100 + gSprites[spriteId].oam.paletteNum * 16; - gTasks[taskId].func = AnimTask_FacadeColorBlendStep; + gTasks[taskId].func = AnimTask_FacadeColorBlend_Step; } -static void AnimTask_FacadeColorBlendStep(u8 taskId) +static void AnimTask_FacadeColorBlend_Step(u8 taskId) { if (gTasks[taskId].data[1]) { @@ -3759,7 +3836,7 @@ void AnimTask_StatusClearedEffect(u8 taskId) // arg 0: initial x pixel offset // arg 1: initial y pixel offset // arg 2: which direction (0 = upward, 1 = downward, 2 = horizontal) -void AnimRoarNoiseLine(struct Sprite *sprite) +static void AnimRoarNoiseLine(struct Sprite *sprite) { if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT) gBattleAnimArgs[0] = -gBattleAnimArgs[0]; @@ -3789,10 +3866,10 @@ void AnimRoarNoiseLine(struct Sprite *sprite) sprite->hFlip = TRUE; } - sprite->callback = AnimRoarNoiseLineStep; + sprite->callback = AnimRoarNoiseLine_Step; } -static void AnimRoarNoiseLineStep(struct Sprite *sprite) +static void AnimRoarNoiseLine_Step(struct Sprite *sprite) { sprite->data[6] += sprite->data[0]; sprite->data[7] += sprite->data[1]; @@ -3802,137 +3879,176 @@ static void AnimRoarNoiseLineStep(struct Sprite *sprite) DestroyAnimSprite(sprite); } +#define IDX_ACTIVE_SPRITES 10 // Used by the sprite callback to modify the number of active sprites + +// Task data for AnimTask_GlareEyeDots +#define tState data[0] +#define tTimer data[1] +#define tPairNum data[2] +#define tPairMax data[5] +#define tDotOffset data[6] +#define tIsContest data[7] +#define tActiveSprites data[IDX_ACTIVE_SPRITES] +#define tStartX data[11] +#define tStartY data[12] +#define tEndX data[13] +#define tEndY data[14] + +// Sprite data for AnimGlareEyeDot +#define sTimer data[0] +#define sTaskId data[1] +#define sActiveSpritesIdx data[2] + // Makes a series of dots in a trail from the attacker to the target. // arg 0: unused void AnimTask_GlareEyeDots(u8 taskId) { struct Task *task = &gTasks[taskId]; - task->data[5] = 12; - task->data[6] = 3; - task->data[7] = 0; + task->tPairMax = 12; + task->tDotOffset = 3; + task->tIsContest = FALSE; if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) - task->data[11] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_HEIGHT) / 4; + task->tStartX = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_HEIGHT) / 4; else - task->data[11] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) - GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_HEIGHT) / 4; + task->tStartX = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) - GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_HEIGHT) / 4; - task->data[12] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) - GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_HEIGHT) / 4; - task->data[13] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); - task->data[14] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); - task->func = AnimTask_GlareEyeDotsStep; + task->tStartY = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) - GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_HEIGHT) / 4; + task->tEndX = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + task->tEndY = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); + task->func = AnimTask_GlareEyeDots_Step; } -static void AnimTask_GlareEyeDotsStep(u8 taskId) +static void AnimTask_GlareEyeDots_Step(u8 taskId) { u8 i; s16 x, y; struct Task *task = &gTasks[taskId]; - switch (task->data[0]) + switch (task->tState) { case 0: - if (++task->data[1] > 3) + // Wait to create next pair of dots + if (++task->tTimer > 3) { - task->data[1] = 0; + task->tTimer = 0; GetGlareEyeDotCoords( - task->data[11], - task->data[12], - task->data[13], - task->data[14], - task->data[5], - task->data[2], + task->tStartX, + task->tStartY, + task->tEndX, + task->tEndY, + task->tPairMax, + task->tPairNum, &x, &y); + // Create dot pair for (i = 0; i < 2; i++) { u8 spriteId = CreateSprite(&gGlareEyeDotSpriteTemplate, x, y, 35); if (spriteId != MAX_SPRITES) { - if (task->data[7] == 0) + if (!task->tIsContest) { if (i == 0) - gSprites[spriteId].x2 = gSprites[spriteId].y2 = -task->data[6]; + gSprites[spriteId].x2 = gSprites[spriteId].y2 = -task->tDotOffset; else - gSprites[spriteId].x2 = gSprites[spriteId].y2 = task->data[6]; + gSprites[spriteId].x2 = gSprites[spriteId].y2 = task->tDotOffset; } else { if (i == 0) { - gSprites[spriteId].x2 = -task->data[6]; - gSprites[spriteId].y2 = task->data[6]; + gSprites[spriteId].x2 = -task->tDotOffset; + gSprites[spriteId].y2 = task->tDotOffset; } else { - gSprites[spriteId].x2 = task->data[6]; - gSprites[spriteId].y2 = -task->data[6]; + gSprites[spriteId].x2 = task->tDotOffset; + gSprites[spriteId].y2 = -task->tDotOffset; } } - gSprites[spriteId].data[0] = 0; - gSprites[spriteId].data[1] = taskId; - gSprites[spriteId].data[2] = 10; - task->data[10]++; + gSprites[spriteId].sTimer = 0; + gSprites[spriteId].sTaskId = taskId; + gSprites[spriteId].sActiveSpritesIdx = IDX_ACTIVE_SPRITES; + task->tActiveSprites++; } } - if (task->data[2] == task->data[5]) - task->data[0]++; + if (task->tPairNum == task->tPairMax) + task->tState++; - task->data[2]++; + task->tPairNum++; } break; case 1: - if (task->data[10] == 0) + // Wait for sprites to be destroyed before ending task + if (task->tActiveSprites == 0) DestroyAnimVisualTask(taskId); break; } } -static void GetGlareEyeDotCoords(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u8 arg4, u8 arg5, s16 *x, s16 *y) +static void GetGlareEyeDotCoords(s16 startX, s16 startY, s16 endX, s16 endY, u8 pairMax, u8 pairNum, s16 *x, s16 *y) { int x2; int y2; - if (arg5 == 0) + if (pairNum == 0) { - *x = arg0; - *y = arg1; + *x = startX; + *y = startY; return; } - if (arg5 >= arg4) + if (pairNum >= pairMax) { - *x = arg2; - *y = arg3; + *x = endX; + *y = endY; return; } - arg4--; - x2 = (arg0 << 8) + arg5 * (((arg2 - arg0) << 8) / arg4); - y2 = (arg1 << 8) + arg5 * (((arg3 - arg1) << 8) / arg4); + pairMax--; + x2 = (startX << 8) + pairNum * (((endX - startX) << 8) / pairMax); + y2 = (startY << 8) + pairNum * (((endY - startY) << 8) / pairMax); *x = x2 >> 8; *y = y2 >> 8; } -void AnimGlareEyeDot(struct Sprite *sprite) +static void AnimGlareEyeDot(struct Sprite *sprite) { - if (++sprite->data[0] > 36) + if (++sprite->sTimer > 36) { - gTasks[sprite->data[1]].data[sprite->data[2]]--; + gTasks[sprite->sTaskId].data[sprite->sActiveSpritesIdx]--; DestroySprite(sprite); } } +#undef IDX_ACTIVE_SPRITES +#undef tState +#undef tTimer +#undef tPairNum +#undef tPairMax +#undef tDotOffset +#undef tIsContest +#undef tActiveSprites +#undef tStartX +#undef tStartY +#undef tEndX +#undef tEndY +#undef sTimer +#undef sTaskId +#undef sActiveSpritesIdx + // Moves a pawprint in a straight line. // arg 0: initial x position // arg 1: initial y position // arg 2: destination x position // arg 3: destination y position // arg 4: duration -void AnimAssistPawprint(struct Sprite *sprite) +static void AnimAssistPawprint(struct Sprite *sprite) { sprite->x = gBattleAnimArgs[0]; sprite->y = gBattleAnimArgs[1]; @@ -3964,7 +4080,7 @@ void AnimTask_BarrageBall(u8 taskId) if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT) StartSpriteAffineAnim(&gSprites[task->data[15]], 1); - task->func = AnimTask_BarrageBallStep; + task->func = AnimTask_BarrageBall_Step; } else { @@ -3972,7 +4088,7 @@ void AnimTask_BarrageBall(u8 taskId) } } -static void AnimTask_BarrageBallStep(u8 taskId) +static void AnimTask_BarrageBall_Step(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -4019,7 +4135,7 @@ static void AnimTask_BarrageBallStep(u8 taskId) // arg 0: which battler // arg 1: horizontal flip // arg 2: num squishes -void AnimSmellingSaltsHand(struct Sprite *sprite) +static void AnimSmellingSaltsHand(struct Sprite *sprite) { u8 battler; @@ -4105,11 +4221,11 @@ void AnimTask_SmellingSaltsSquish(u8 taskId) gTasks[taskId].data[0] = gBattleAnimArgs[1]; gTasks[taskId].data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); PrepareAffineAnimInTaskData(&gTasks[taskId], gTasks[taskId].data[15], sSmellingSaltsSquishAffineAnimCmds); - gTasks[taskId].func = AnimTask_SmellingSaltsSquishStep; + gTasks[taskId].func = AnimTask_SmellingSaltsSquish_Step; } } -static void AnimTask_SmellingSaltsSquishStep(u8 taskId) +static void AnimTask_SmellingSaltsSquish_Step(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -4142,7 +4258,7 @@ static void AnimTask_SmellingSaltsSquishStep(u8 taskId) // arg 0: which mon // arg 1: blink delay // arg 2: number of blinks -void AnimSmellingSaltExclamation(struct Sprite *sprite) +static void AnimSmellingSaltExclamation(struct Sprite *sprite) { if (gBattleAnimArgs[0] == ANIM_ATTACKER) { @@ -4162,10 +4278,10 @@ void AnimSmellingSaltExclamation(struct Sprite *sprite) sprite->data[1] = gBattleAnimArgs[1]; sprite->data[2] = 0; sprite->data[3] = gBattleAnimArgs[2]; - sprite->callback = AnimSmellingSaltExclamationStep; + sprite->callback = AnimSmellingSaltExclamation_Step; } -static void AnimSmellingSaltExclamationStep(struct Sprite *sprite) +static void AnimSmellingSaltExclamation_Step(struct Sprite *sprite) { if (++sprite->data[0] >= sprite->data[1]) { @@ -4180,7 +4296,7 @@ static void AnimSmellingSaltExclamationStep(struct Sprite *sprite) // Claps a hand several times. // arg 0: which hand // arg 1: -void AnimHelpingHandClap(struct Sprite *sprite) +static void AnimHelpingHandClap(struct Sprite *sprite) { if (gBattleAnimArgs[0] == 0) { @@ -4195,10 +4311,10 @@ void AnimHelpingHandClap(struct Sprite *sprite) } sprite->y = 56; - sprite->callback = AnimHelpingHandClapStep; + sprite->callback = AnimHelpingHandClap_Step; } -static void AnimHelpingHandClapStep(struct Sprite *sprite) +static void AnimHelpingHandClap_Step(struct Sprite *sprite) { switch (sprite->data[0]) { @@ -4290,9 +4406,9 @@ void AnimTask_HelpingHandAttackerMovement(u8 taskId) task->data[15] = GetAnimBattlerSpriteId(ANIM_ATTACKER); if (IsDoubleBattle() == TRUE) { - int x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X); - int y = GetBattlerSpriteCoord(BATTLE_PARTNER(gBattleAnimAttacker), BATTLER_COORD_X); - if (x > y) + int attackerX = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X); + int partnerX = GetBattlerSpriteCoord(BATTLE_PARTNER(gBattleAnimAttacker), BATTLER_COORD_X); + if (attackerX > partnerX) task->data[14] = 1; else task->data[14] = -1; @@ -4305,10 +4421,10 @@ void AnimTask_HelpingHandAttackerMovement(u8 taskId) task->data[14] = 1; } - task->func = AnimTask_HelpingHandAttackerMovementStep; + task->func = AnimTask_HelpingHandAttackerMovement_Step; } -static void AnimTask_HelpingHandAttackerMovementStep(u8 taskId) +static void AnimTask_HelpingHandAttackerMovement_Step(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -4392,7 +4508,7 @@ static void AnimTask_HelpingHandAttackerMovementStep(u8 taskId) // Moves a magnifying glass around in straight lines. // arg 0: magnifying glass target mon -void AnimForesightMagnifyingGlass(struct Sprite *sprite) +static void AnimForesightMagnifyingGlass(struct Sprite *sprite) { if (gBattleAnimArgs[0] == ANIM_ATTACKER) { @@ -4409,10 +4525,10 @@ void AnimForesightMagnifyingGlass(struct Sprite *sprite) sprite->oam.priority = GetBattlerSpriteBGPriority(sprite->data[7]); sprite->oam.objMode = ST_OAM_OBJ_BLEND; - sprite->callback = AnimForesightMagnifyingGlassStep; + sprite->callback = AnimForesightMagnifyingGlass_Step; } -static void AnimForesightMagnifyingGlassStep(struct Sprite *sprite) +static void AnimForesightMagnifyingGlass_Step(struct Sprite *sprite) { u16 x, y; @@ -4514,7 +4630,7 @@ static void AnimForesightMagnifyingGlassStep(struct Sprite *sprite) } } -static void AnimMeteorMashStarStep(struct Sprite *sprite) +static void AnimMeteorMashStar_Step(struct Sprite *sprite) { sprite->x2 = ((sprite->data[2] - sprite->data[0]) * sprite->data[5]) / sprite->data[4]; sprite->y2 = ((sprite->data[3] - sprite->data[1]) * sprite->data[5]) / sprite->data[4]; @@ -4538,7 +4654,7 @@ static void AnimMeteorMashStarStep(struct Sprite *sprite) // arg 2: destination x pixel offset // arg 3: destination y pixel offset // arg 4: duration -void AnimMeteorMashStar(struct Sprite *sprite) +static void AnimMeteorMashStar(struct Sprite *sprite) { s16 y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); s16 x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); @@ -4559,7 +4675,7 @@ void AnimMeteorMashStar(struct Sprite *sprite) sprite->data[4] = gBattleAnimArgs[4]; sprite->x = sprite->data[0]; sprite->y = sprite->data[1]; - sprite->callback = AnimMeteorMashStarStep; + sprite->callback = AnimMeteorMashStar_Step; } void AnimTask_MonToSubstitute(u8 taskId) @@ -4590,7 +4706,7 @@ void AnimTask_MonToSubstitute(u8 taskId) else { LoadBattleMonGfxAndAnimate(gBattleAnimAttacker, 0, spriteId); - for (i = 0; i < 16; i++) + for (i = 0; i < NUM_TASK_DATA; i++) gTasks[taskId].data[i] = 0; gTasks[taskId].func = AnimTask_MonToSubstituteDoll; @@ -4652,7 +4768,7 @@ static void AnimTask_MonToSubstituteDoll(u8 taskId) // Moves down an X that flickers and disappears. // No args. -void AnimBlockX(struct Sprite *sprite) +static void AnimBlockX(struct Sprite *sprite) { s16 y; @@ -4669,10 +4785,10 @@ void AnimBlockX(struct Sprite *sprite) sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); sprite->y2 = y; - sprite->callback = AnimBlockXStep; + sprite->callback = AnimBlockX_Step; } -static void AnimBlockXStep(struct Sprite *sprite) +static void AnimBlockX_Step(struct Sprite *sprite) { switch (sprite->data[0]) { @@ -4743,7 +4859,7 @@ void AnimTask_OdorSleuthMovement(u8 taskId) spriteId2 = CloneBattlerSpriteWithBlend(ANIM_TARGET); if (spriteId2 < 0) { - obj_delete_but_dont_free_vram(&gSprites[spriteId1]); + DestroySpriteWithActiveSheet(&gSprites[spriteId1]); DestroyAnimVisualTask(taskId); return; } @@ -4823,7 +4939,7 @@ static void MoveOdorSleuthClone(struct Sprite *sprite) if (sprite->data[5] < 0) { gTasks[sprite->data[6]].data[sprite->data[7]]--; - obj_delete_but_dont_free_vram(sprite); + DestroySpriteWithActiveSheet(sprite); } } break; @@ -4832,15 +4948,15 @@ static void MoveOdorSleuthClone(struct Sprite *sprite) void AnimTask_GetReturnPowerLevel(u8 taskId) { - gBattleAnimArgs[7] = 0; + gBattleAnimArgs[ARG_RET_ID] = 0; if (gAnimFriendship < 60) - gBattleAnimArgs[7] = 0; + gBattleAnimArgs[ARG_RET_ID] = 0; if (gAnimFriendship > 60 && gAnimFriendship < 92) - gBattleAnimArgs[7] = 1; + gBattleAnimArgs[ARG_RET_ID] = 1; if (gAnimFriendship > 91 && gAnimFriendship < 201) - gBattleAnimArgs[7] = 2; + gBattleAnimArgs[ARG_RET_ID] = 2; if (gAnimFriendship > 200) - gBattleAnimArgs[7] = 3; + gBattleAnimArgs[ARG_RET_ID] = 3; DestroyAnimVisualTask(taskId); } @@ -4869,7 +4985,7 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId) gTasks[taskId].data[1] &= 0xFF; x = gSprites[spriteId].x + gSprites[spriteId].x2; - if ((u16)(x + 32) > 304) + if (x < -32 || x > DISPLAY_WIDTH + 32) { gTasks[taskId].data[1] = 0; gTasks[taskId].data[0]++; @@ -4890,7 +5006,7 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId) subpriority = gSprites[GetAnimBattlerSpriteId(ANIM_TARGET)].subpriority + 1; isBackPic = FALSE; - x = 272; + x = DISPLAY_WIDTH + 32; } else { @@ -4943,7 +5059,7 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId) } } } - if ((u16)(x + 32) > 304) + if (x < -32 || x > DISPLAY_WIDTH + 32) { gTasks[taskId].data[1] = 0; gTasks[taskId].data[0]++; @@ -4956,7 +5072,7 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId) if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) gSprites[spriteId].x2 = -gSprites[spriteId].x - 32; else - gSprites[spriteId].x2 = 272 - gSprites[spriteId].x; + gSprites[spriteId].x2 = DISPLAY_WIDTH + 32 - gSprites[spriteId].x; gTasks[taskId].data[0]++; break; @@ -4983,7 +5099,7 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId) } } -void AnimUnusedItemBagSteal(struct Sprite *sprite) +static void AnimUnusedItemBagSteal(struct Sprite *sprite) { switch (sprite->data[7]) { @@ -5101,10 +5217,10 @@ void AnimTask_TeeterDanceMovement(u8 taskId) task->data[11] = 0; task->data[10] = 1; task->data[12] = 0; - task->func = AnimTask_TeeterDanceMovementStep; + task->func = AnimTask_TeeterDanceMovement_Step; } -static void AnimTask_TeeterDanceMovementStep(u8 taskId) +static void AnimTask_TeeterDanceMovement_Step(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -5139,8 +5255,9 @@ static void AnimTask_TeeterDanceMovementStep(u8 taskId) } } -static void AnimKnockOffStrikeStep(struct Sprite *sprite) +static void AnimKnockOffStrike_Step(struct Sprite *sprite) { + // These two cases are identical. if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) { sprite->data[1] += sprite->data[0]; @@ -5163,7 +5280,7 @@ static void AnimKnockOffStrikeStep(struct Sprite *sprite) // Animates a strike that swipes downard at the target mon. // arg 0: initial x pixel offset // arg 1: initial y pixel offset -void AnimKnockOffStrike(struct Sprite *sprite) +static void AnimKnockOffStrike(struct Sprite *sprite) { if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) { @@ -5181,12 +5298,12 @@ void AnimKnockOffStrike(struct Sprite *sprite) sprite->y += gBattleAnimArgs[1]; } - sprite->callback = AnimKnockOffStrikeStep; + sprite->callback = AnimKnockOffStrike_Step; } // Gradually fades a rotating recyle arrow sprite in and back out. // No args. -void AnimRecycle(struct Sprite *sprite) +static void AnimRecycle(struct Sprite *sprite) { sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); sprite->y = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_TOP); @@ -5195,11 +5312,11 @@ void AnimRecycle(struct Sprite *sprite) sprite->data[6] = 0; sprite->data[7] = 16; - sprite->callback = AnimRecycleStep; + sprite->callback = AnimRecycle_Step; SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(sprite->data[6], sprite->data[7])); } -static void AnimRecycleStep(struct Sprite *sprite) +static void AnimRecycle_Step(struct Sprite *sprite) { switch (sprite->data[2]) { @@ -5261,15 +5378,15 @@ static void AnimRecycleStep(struct Sprite *sprite) void AnimTask_GetWeather(u8 taskId) { - gBattleAnimArgs[7] = ANIM_WEATHER_NONE; + gBattleAnimArgs[ARG_RET_ID] = ANIM_WEATHER_NONE; if (gWeatherMoveAnim & B_WEATHER_SUN) - gBattleAnimArgs[7] = ANIM_WEATHER_SUN; + gBattleAnimArgs[ARG_RET_ID] = ANIM_WEATHER_SUN; else if (gWeatherMoveAnim & B_WEATHER_RAIN) - gBattleAnimArgs[7] = ANIM_WEATHER_RAIN; + gBattleAnimArgs[ARG_RET_ID] = ANIM_WEATHER_RAIN; else if (gWeatherMoveAnim & B_WEATHER_SANDSTORM) - gBattleAnimArgs[7] = ANIM_WEATHER_SANDSTORM; + gBattleAnimArgs[ARG_RET_ID] = ANIM_WEATHER_SANDSTORM; else if (gWeatherMoveAnim & B_WEATHER_HAIL) - gBattleAnimArgs[7] = ANIM_WEATHER_HAIL; + gBattleAnimArgs[ARG_RET_ID] = ANIM_WEATHER_HAIL; DestroyAnimVisualTask(taskId); } @@ -5283,10 +5400,10 @@ void AnimTask_SlackOffSquish(u8 taskId) task->data[0] = 0; task->data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); PrepareAffineAnimInTaskData(task, task->data[15], sSlackOffSquishAffineAnimCmds); - task->func = AnimTask_SlackOffSquishStep; + task->func = AnimTask_SlackOffSquish_Step; } -static void AnimTask_SlackOffSquishStep(u8 taskId) +static void AnimTask_SlackOffSquish_Step(u8 taskId) { struct Task *task = &gTasks[taskId]; diff --git a/src/electric.c b/src/battle_anim_electric.c similarity index 87% rename from src/electric.c rename to src/battle_anim_electric.c index f6f01a8ef..a34f848f1 100644 --- a/src/electric.c +++ b/src/battle_anim_electric.c @@ -5,9 +5,9 @@ #include "constants/songs.h" static void AnimLightning(struct Sprite *sprite); -static void sub_80ADC58(struct Sprite *sprite); -static void sub_80ADCB8(struct Sprite *sprite); -static void sub_80ADD4C(struct Sprite *sprite); +static void AnimUnusedSpinningFist(struct Sprite *sprite); +static void AnimUnusedCirclingShock(struct Sprite *sprite); +static void AnimSparkElectricity(struct Sprite *sprite); static void AnimZapCannonSpark(struct Sprite *sprite); static void AnimThunderboltOrb(struct Sprite *sprite); static void AnimSparkElectricityFlashing(struct Sprite *sprite); @@ -20,19 +20,19 @@ static void AnimVoltTackleOrbSlide(struct Sprite *sprite); static void AnimVoltTackleBolt(struct Sprite *sprite); static void AnimGrowingShockWaveOrb(struct Sprite *sprite); static void AnimShockWaveProgressingBolt(struct Sprite *sprite); -static void sub_80ADC3C(struct Sprite *sprite); -static void sub_80ADC9C(struct Sprite *sprite); -static void sub_80ADF38(struct Sprite *sprite); -static void sub_80AE130(struct Sprite *sprite); -static void sub_80AE278(u8 taskId); -static void sub_80AE4F4(struct Sprite *sprite); -static void sub_80AE5BC(u8 taskId); -static void sub_80AE704(struct Sprite *sprite); -static void sub_80AE83C(struct Sprite *sprite); -static bool8 sub_80AEB98(struct Task *task, u8 taskId); -static bool8 sub_80AEE74(struct Task *task, u8 taskId); -static bool8 sub_80AF058(struct Task *task, u8 taskId); -static void sub_80AF0C8(struct Sprite *sprite); +static void AnimLightning_Step(struct Sprite *sprite); +static void AnimUnusedSpinningFist_Step(struct Sprite *sprite); +static void AnimZapCannonSpark_Step(struct Sprite *sprite); +static void AnimSparkElectricityFlashing_Step(struct Sprite *sprite); +static void AnimTask_ElectricBolt_Step(u8 taskId); +static void AnimThunderWave_Step(struct Sprite *sprite); +static void AnimTask_ElectricChargingParticles_Step(u8 taskId); +static void AnimElectricChargingParticles(struct Sprite *sprite); +static void AnimVoltTackleOrbSlide_Step(struct Sprite *sprite); +static bool8 CreateVoltTackleBolt(struct Task *task, u8 taskId); +static bool8 CreateShockWaveBoltSprite(struct Task *task, u8 taskId); +static bool8 CreateShockWaveLightningSprite(struct Task *task, u8 taskId); +static void AnimShockWaveLightning(struct Sprite *sprite); static const union AnimCmd sAnim_Lightning[] = { @@ -60,7 +60,7 @@ const struct SpriteTemplate gLightningSpriteTemplate = .callback = AnimLightning, }; -static const union AffineAnimCmd gUnknown_83E5F50[] = +static const union AffineAnimCmd sAffineAnim_UnusedSpinningFist[] = { AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 20), @@ -68,23 +68,23 @@ static const union AffineAnimCmd gUnknown_83E5F50[] = AFFINEANIMCMD_END, }; -static const union AffineAnimCmd *const gUnknown_83E5F70[] = +static const union AffineAnimCmd *const sAffineAnims_UnusedSpinningFist[] = { - gUnknown_83E5F50, + sAffineAnim_UnusedSpinningFist, }; -const struct SpriteTemplate gUnknown_83E5F74 = +static const struct SpriteTemplate sUnusedSpinningFistSpriteTemplate = { .tileTag = ANIM_TAG_HANDS_AND_FEET, .paletteTag = ANIM_TAG_HANDS_AND_FEET, .oam = &gOamData_AffineNormal_ObjNormal_32x32, .anims = gDummySpriteAnimTable, .images = NULL, - .affineAnims = gUnknown_83E5F70, - .callback = sub_80ADC58, + .affineAnims = sAffineAnims_UnusedSpinningFist, + .callback = AnimUnusedSpinningFist, }; -static const union AnimCmd gUnknown_83E5F8C[] = +static const union AnimCmd sAnim_UnusedCirclingShock[] = { ANIMCMD_FRAME(0, 5), ANIMCMD_FRAME(16, 5), @@ -95,20 +95,20 @@ static const union AnimCmd gUnknown_83E5F8C[] = ANIMCMD_JUMP(0), }; -static const union AnimCmd *const gUnknown_83E5FA8[] = +static const union AnimCmd *const sAnims_UnusedCirclingShock[] = { - gUnknown_83E5F8C, + sAnim_UnusedCirclingShock, }; -const struct SpriteTemplate gUnknown_83E5FAC = +static const struct SpriteTemplate sUnusedCirclingShockSpriteTemplate = { .tileTag = ANIM_TAG_SHOCK, .paletteTag = ANIM_TAG_SHOCK, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = gUnknown_83E5FA8, + .anims = sAnims_UnusedCirclingShock, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80ADCB8, + .callback = AnimUnusedCirclingShock, }; const struct SpriteTemplate gSparkElectricitySpriteTemplate = @@ -119,7 +119,7 @@ const struct SpriteTemplate gSparkElectricitySpriteTemplate = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80ADD4C, + .callback = AnimSparkElectricity, }; const struct SpriteTemplate gZapCannonBallSpriteTemplate = @@ -458,31 +458,31 @@ static void AnimLightning(struct Sprite *sprite) else sprite->x += gBattleAnimArgs[0]; sprite->y += gBattleAnimArgs[1]; - sprite->callback = sub_80ADC3C; + sprite->callback = AnimLightning_Step; } -static void sub_80ADC3C(struct Sprite *sprite) +static void AnimLightning_Step(struct Sprite *sprite) { if (sprite->animEnded) DestroyAnimSprite(sprite); } -static void sub_80ADC58(struct Sprite *sprite) +static void AnimUnusedSpinningFist(struct Sprite *sprite) { if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) sprite->x -= gBattleAnimArgs[0]; else sprite->x += gBattleAnimArgs[0]; - sprite->callback = sub_80ADC9C; + sprite->callback = AnimUnusedSpinningFist_Step; } -static void sub_80ADC9C(struct Sprite *sprite) +static void AnimUnusedSpinningFist_Step(struct Sprite *sprite) { if (sprite->affineAnimEnded) DestroySpriteAndMatrix(sprite); } -static void sub_80ADCB8(struct Sprite *sprite) +static void AnimUnusedCirclingShock(struct Sprite *sprite) { sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); @@ -501,10 +501,10 @@ static void sub_80ADCB8(struct Sprite *sprite) sprite->data[2] = gBattleAnimArgs[3]; sprite->data[3] = gBattleAnimArgs[4]; StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); - sprite->callback = TranslateSpriteInCircleOverDuration; + sprite->callback = TranslateSpriteInCircle; } -static void sub_80ADD4C(struct Sprite *sprite) +static void AnimSparkElectricity(struct Sprite *sprite) { u8 battler; u32 matrixNum; @@ -512,20 +512,20 @@ static void sub_80ADD4C(struct Sprite *sprite) switch (gBattleAnimArgs[4]) { - case 0: + case ANIM_ATTACKER: battler = gBattleAnimAttacker; break; - case 1: + case ANIM_TARGET: default: battler = gBattleAnimTarget; break; - case 2: + case ANIM_ATK_PARTNER: if (!IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimAttacker))) battler = gBattleAnimAttacker; else battler = BATTLE_PARTNER(gBattleAnimAttacker); break; - case 3: + case ANIM_DEF_PARTNER: if (IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimAttacker))) battler = BATTLE_PARTNER(gBattleAnimTarget); else @@ -568,11 +568,11 @@ static void AnimZapCannonSpark(struct Sprite *sprite) sprite->data[6] = gBattleAnimArgs[5]; sprite->data[7] = gBattleAnimArgs[4]; sprite->oam.tileNum += gBattleAnimArgs[6] * 4; - sprite->callback = sub_80ADF38; + sprite->callback = AnimZapCannonSpark_Step; sprite->callback(sprite); } -static void sub_80ADF38(struct Sprite *sprite) +static void AnimZapCannonSpark_Step(struct Sprite *sprite) { if (!AnimTranslateLinear(sprite)) { @@ -588,7 +588,7 @@ static void sub_80ADF38(struct Sprite *sprite) } } -static void sub_80ADFB0(struct Sprite *sprite) +static void AnimThunderboltOrb_Step(struct Sprite *sprite) { if (--sprite->data[5] == -1) { @@ -608,7 +608,7 @@ static void AnimThunderboltOrb(struct Sprite *sprite) sprite->data[3] = gBattleAnimArgs[0]; sprite->data[4] = gBattleAnimArgs[3]; sprite->data[5] = gBattleAnimArgs[3]; - sprite->callback = sub_80ADFB0; + sprite->callback = AnimThunderboltOrb_Step; } static void AnimSparkElectricityFlashing(struct Sprite *sprite) @@ -629,11 +629,11 @@ static void AnimSparkElectricityFlashing(struct Sprite *sprite) sprite->data[6] = gBattleAnimArgs[5]; sprite->data[7] = gBattleAnimArgs[4]; sprite->oam.tileNum += gBattleAnimArgs[6] * 4; - sprite->callback = sub_80AE130; + sprite->callback = AnimSparkElectricityFlashing_Step; sprite->callback(sprite); } -static void sub_80AE130(struct Sprite *sprite) +static void AnimSparkElectricityFlashing_Step(struct Sprite *sprite) { sprite->x2 = Sin(sprite->data[7], sprite->data[5]); sprite->y2 = Cos(sprite->data[7], sprite->data[5]); @@ -644,6 +644,7 @@ static void sub_80AE130(struct Sprite *sprite) DestroyAnimSprite(sprite); } +// Electricity arcs around the target. Used for Paralysis and various electric move hits static void AnimElectricity(struct Sprite *sprite) { InitSpritePosToAnimTarget(sprite, FALSE); @@ -657,15 +658,16 @@ static void AnimElectricity(struct Sprite *sprite) StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); } +// The vertical falling thunder bolt used in Thunder Wave/Shock/Bolt void AnimTask_ElectricBolt(u8 taskId) { gTasks[taskId].data[0] = GetBattlerSpriteCoord(gBattleAnimTarget, 0) + gBattleAnimArgs[0]; gTasks[taskId].data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + gBattleAnimArgs[1]; gTasks[taskId].data[2] = gBattleAnimArgs[2]; - gTasks[taskId].func = sub_80AE278; + gTasks[taskId].func = AnimTask_ElectricBolt_Step; } -static void sub_80AE278(u8 taskId) +static void AnimTask_ElectricBolt_Step(u8 taskId) { u16 r8; u16 r2; @@ -735,18 +737,19 @@ static void AnimElectricBoltSegment(struct Sprite *sprite) { if (!sprite->data[0]) { - sprite->oam.shape = ST_OAM_V_RECTANGLE; - sprite->oam.size = ST_OAM_SIZE_0; + sprite->oam.shape = SPRITE_SHAPE(8x16); + sprite->oam.size = SPRITE_SIZE(8x16); } else { - sprite->oam.shape = ST_OAM_SQUARE; - sprite->oam.size = ST_OAM_SIZE_1; + sprite->oam.shape = SPRITE_SHAPE(16x16); + sprite->oam.size = SPRITE_SIZE(16x16); } if (++sprite->data[1] == 15) DestroySprite(sprite); } +// The horizontal bands of electricity used in Thunder Wave static void AnimThunderWave(struct Sprite *sprite) { u8 spriteId; @@ -756,11 +759,11 @@ static void AnimThunderWave(struct Sprite *sprite) spriteId = CreateSprite(&gThunderWaveSpriteTemplate, sprite->x + 32, sprite->y, sprite->subpriority); gSprites[spriteId].oam.tileNum += 8; ++gAnimVisualTaskCount; - gSprites[spriteId].callback = sub_80AE4F4; - sprite->callback = sub_80AE4F4; + gSprites[spriteId].callback = AnimThunderWave_Step; + sprite->callback = AnimThunderWave_Step; } -static void sub_80AE4F4(struct Sprite *sprite) +static void AnimThunderWave_Step(struct Sprite *sprite) { if (++sprite->data[0] == 3) { @@ -771,6 +774,7 @@ static void sub_80AE4F4(struct Sprite *sprite) DestroyAnimSprite(sprite); } +// Animates small electric orbs moving from around the battler inward. For Charge/Shock Wave void AnimTask_ElectricChargingParticles(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -793,10 +797,10 @@ void AnimTask_ElectricChargingParticles(u8 taskId) task->data[11] = gBattleAnimArgs[3]; task->data[12] = 0; task->data[13] = gBattleAnimArgs[2]; - task->func = sub_80AE5BC; + task->func = AnimTask_ElectricChargingParticles_Step; } -static void sub_80AE5BC(u8 taskId) +static void AnimTask_ElectricChargingParticles_Step(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -821,7 +825,7 @@ static void sub_80AE5BC(u8 taskId) sprite->data[4] = task->data[15]; sprite->data[5] = taskId; InitAnimLinearTranslation(sprite); - StoreSpriteCallbackInData6(sprite, sub_80AE704); + StoreSpriteCallbackInData6(sprite, AnimElectricChargingParticles); sprite->callback = RunStoredCallbackWhenAnimEnds; if (++task->data[9] > 15) task->data[9] = 0; @@ -842,7 +846,7 @@ static void sub_80AE5BC(u8 taskId) } } -static void sub_80AE6D0(struct Sprite *sprite) +static void AnimElectricChargingParticles_Step(struct Sprite *sprite) { if (AnimTranslateLinear(sprite)) { @@ -851,15 +855,15 @@ static void sub_80AE6D0(struct Sprite *sprite) } } -static void sub_80AE704(struct Sprite *sprite) +static void AnimElectricChargingParticles(struct Sprite *sprite) { StartSpriteAnim(sprite, 1); - sprite->callback = sub_80AE6D0; + sprite->callback = AnimElectricChargingParticles_Step; } static void AnimGrowingChargeOrb(struct Sprite *sprite) { - if (!gBattleAnimArgs[0]) + if (gBattleAnimArgs[0] == ANIM_ATTACKER) { sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); @@ -873,9 +877,10 @@ static void AnimGrowingChargeOrb(struct Sprite *sprite) sprite->callback = RunStoredCallbackWhenAffineAnimEnds; } +// The quick electric burst at the end of Charge / during the Volt Tackle hit static void AnimElectricPuff(struct Sprite *sprite) { - if (!gBattleAnimArgs[0]) + if (gBattleAnimArgs[0] == ANIM_ATTACKER) { sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); @@ -891,6 +896,7 @@ static void AnimElectricPuff(struct Sprite *sprite) sprite->callback = RunStoredCallbackWhenAnimEnds; } +// Creates an orb of electricity that grows then slides off-screen. The attacker slides with it static void AnimVoltTackleOrbSlide(struct Sprite *sprite) { StartSpriteAffineAnim(sprite, 1); @@ -900,10 +906,10 @@ static void AnimVoltTackleOrbSlide(struct Sprite *sprite) sprite->data[7] = 16; if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT) sprite->data[7] *= -1; - sprite->callback = sub_80AE83C; + sprite->callback = AnimVoltTackleOrbSlide_Step; } -static void sub_80AE83C(struct Sprite *sprite) +static void AnimVoltTackleOrbSlide_Step(struct Sprite *sprite) { switch (sprite->data[0]) { @@ -975,6 +981,7 @@ void AnimTask_VoltTackleAttackerReappear(u8 taskId) } } +// The horizontal bolts of electricity for Volt Tackle void AnimTask_VoltTackleBolt(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -1036,7 +1043,7 @@ void AnimTask_VoltTackleBolt(u8 taskId) if (++task->data[2] > 0) { task->data[2] = 0; - if (sub_80AEB98(task, taskId) || sub_80AEB98(task, taskId)) + if (CreateVoltTackleBolt(task, taskId) || CreateVoltTackleBolt(task, taskId)) ++task->data[0]; } break; @@ -1047,7 +1054,7 @@ void AnimTask_VoltTackleBolt(u8 taskId) } } -static bool8 sub_80AEB98(struct Task *task, u8 taskId) +static bool8 CreateVoltTackleBolt(struct Task *task, u8 taskId) { u8 spriteId = CreateSprite(&gVoltTackleBoltSpriteTemplate, task->data[3], task->data[5], 35); @@ -1112,7 +1119,7 @@ void AnimTask_ShockWaveProgressingBolt(u8 taskId) task->data[4] = 7; task->data[5] = -1; task->data[11] = 12; - task->data[12] = BattleAnimAdjustPanning(task->data[11] - 76); + task->data[12] = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER); task->data[13] = BattleAnimAdjustPanning(SOUND_PAN_TARGET); task->data[14] = task->data[12]; task->data[15] = (task->data[13] - task->data[12]) / 3; @@ -1122,7 +1129,7 @@ void AnimTask_ShockWaveProgressingBolt(u8 taskId) if (++task->data[1] > 0) { task->data[1] = 0; - if (sub_80AEE74(task, taskId)) + if (CreateShockWaveBoltSprite(task, taskId)) { if (task->data[2] == 5) task->data[0] = 3; @@ -1172,7 +1179,7 @@ void AnimTask_ShockWaveProgressingBolt(u8 taskId) } } -static bool8 sub_80AEE74(struct Task *task, u8 taskId) +static bool8 CreateShockWaveBoltSprite(struct Task *task, u8 taskId) { u8 spriteId = CreateSprite(&sShockWaveProgressingBoltSpriteTemplate, task->data[6], task->data[7], 35); if (spriteId != MAX_SPRITES) @@ -1206,6 +1213,7 @@ static bool8 sub_80AEE74(struct Task *task, u8 taskId) } } +// Just runs timer for sprite. See AnimTask_ShockWaveProgressingBolt static void AnimShockWaveProgressingBolt(struct Sprite *sprite) { if (++sprite->data[0] > 12) @@ -1234,7 +1242,7 @@ void AnimTask_ShockWaveLightning(u8 taskId) if (++task->data[1] > 1) { task->data[1] = 0; - if (sub_80AF058(task, taskId)) + if (CreateShockWaveLightningSprite(task, taskId)) ++task->data[0]; } break; @@ -1245,13 +1253,13 @@ void AnimTask_ShockWaveLightning(u8 taskId) } } -static bool8 sub_80AF058(struct Task *task, u8 taskId) +static bool8 CreateShockWaveLightningSprite(struct Task *task, u8 taskId) { u8 spriteId = CreateSprite(&gLightningSpriteTemplate, task->data[13], task->data[14], task->data[12]); if (spriteId != MAX_SPRITES) { - gSprites[spriteId].callback = sub_80AF0C8; + gSprites[spriteId].callback = AnimShockWaveLightning; gSprites[spriteId].data[6] = taskId; gSprites[spriteId].data[7] = 10; ++task->data[10]; @@ -1262,7 +1270,7 @@ static bool8 sub_80AF058(struct Task *task, u8 taskId) return FALSE; } -static void sub_80AF0C8(struct Sprite *sprite) +static void AnimShockWaveLightning(struct Sprite *sprite) { if (sprite->animEnded) { diff --git a/src/fighting.c b/src/battle_anim_fight.c similarity index 82% rename from src/fighting.c rename to src/battle_anim_fight.c index f2c4b687e..c99a00785 100644 --- a/src/fighting.c +++ b/src/battle_anim_fight.c @@ -5,7 +5,7 @@ #include "task.h" #include "trig.h" -static void unc_080B08A0(struct Sprite *sprite); +static void AnimUnusedHumanoidFoot(struct Sprite *sprite); static void AnimSlideHandOrFootToTarget(struct Sprite *sprite); static void AnimJumpKick(struct Sprite *sprite); static void AnimBasicFistOrFoot(struct Sprite *sprite); @@ -23,19 +23,19 @@ static void AnimSuperpowerFireball(struct Sprite *sprite); static void AnimArmThrustHit(struct Sprite *sprite); static void AnimRevengeScratch(struct Sprite *sprite); static void AnimFocusPunchFist(struct Sprite *sprite); -static void sub_80B0B2C(struct Sprite *sprite); -static void sub_80B0BD8(struct Sprite *sprite); -static void sub_80B0CB4(struct Sprite *sprite); +static void AnimFistOrFootRandomPos_Step(struct Sprite *sprite); +static void AnimCrossChopHand_Step(struct Sprite *sprite); +static void AnimSlidingKick_Step(struct Sprite *sprite); static void AnimSpinningKickOrPunchFinish(struct Sprite *sprite); static void AnimStompFootStep(struct Sprite *sprite); static void AnimStompFootEnd(struct Sprite *sprite); -static void sub_80B0EF0(struct Sprite *sprite); -static void sub_80B1050(struct Sprite *sprite); -static void sub_80B111C(struct Sprite *sprite); -static void sub_80B11E4(struct Sprite *sprite); -static void sub_80B12A4(struct Sprite *sprite); +static void AnimBrickBreakWall_Step(struct Sprite *sprite); +static void AnimBrickBreakWallShard_Step(struct Sprite *sprite); +static void AnimSuperpowerOrb_Step(struct Sprite *sprite); +static void AnimSuperpowerRock_Step1(struct Sprite *sprite); +static void AnimSuperpowerRock_Step2(struct Sprite *sprite); -const struct SpriteTemplate gUnknown_83E668C = +static const struct SpriteTemplate sUnusedHumanoidFootSpriteTemplate = { .tileTag = ANIM_TAG_HUMANOID_FOOT, .paletteTag = ANIM_TAG_HUMANOID_FOOT, @@ -43,54 +43,46 @@ const struct SpriteTemplate gUnknown_83E668C = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = unc_080B08A0, + .callback = AnimUnusedHumanoidFoot, }; -static const union AnimCmd sAnim_HandOrFoot[] = +static const union AnimCmd sAnim_Fist[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_SlidingKick_0[] = +static const union AnimCmd sAnim_FootWide[] = { ANIMCMD_FRAME(16, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_SlidingKick_1[] = +static const union AnimCmd sAnim_FootTall[] = { ANIMCMD_FRAME(32, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_CrossChopHand_0[] = +static const union AnimCmd sAnim_HandLeft[] = { ANIMCMD_FRAME(48, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_CrossChopHand_1[] = +static const union AnimCmd sAnim_HandRight[] = { ANIMCMD_FRAME(48, 1, .hFlip = TRUE), ANIMCMD_END, }; -static const union AnimCmd *const sAnims_HandOrFoot[] = +static const union AnimCmd *const sAnims_HandsAndFeet[] = { - sAnim_HandOrFoot, -}; - -static const union AnimCmd *const sAnims_SlidingKick[] = -{ - sAnim_SlidingKick_0, - sAnim_SlidingKick_1, -}; - -static const union AnimCmd *const sAnims_CrossChopHand[] = -{ - sAnim_CrossChopHand_0, - sAnim_CrossChopHand_1, + sAnim_Fist, + sAnim_FootWide, + sAnim_FootTall, + sAnim_HandLeft, + sAnim_HandRight, }; const struct SpriteTemplate gKarateChopSpriteTemplate = @@ -98,7 +90,7 @@ const struct SpriteTemplate gKarateChopSpriteTemplate = .tileTag = ANIM_TAG_HANDS_AND_FEET, .paletteTag = ANIM_TAG_HANDS_AND_FEET, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = sAnims_HandOrFoot, + .anims = sAnims_HandsAndFeet, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimSlideHandOrFootToTarget, @@ -109,7 +101,7 @@ const struct SpriteTemplate gJumpKickSpriteTemplate = .tileTag = ANIM_TAG_HANDS_AND_FEET, .paletteTag = ANIM_TAG_HANDS_AND_FEET, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = sAnims_HandOrFoot, + .anims = sAnims_HandsAndFeet, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimJumpKick, @@ -120,7 +112,7 @@ const struct SpriteTemplate gFistFootSpriteTemplate = .tileTag = ANIM_TAG_HANDS_AND_FEET, .paletteTag = ANIM_TAG_HANDS_AND_FEET, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = sAnims_HandOrFoot, + .anims = sAnims_HandsAndFeet, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimBasicFistOrFoot, @@ -131,7 +123,7 @@ const struct SpriteTemplate gFistFootRandomPosSpriteTemplate = .tileTag = ANIM_TAG_HANDS_AND_FEET, .paletteTag = ANIM_TAG_HANDS_AND_FEET, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = sAnims_HandOrFoot, + .anims = sAnims_HandsAndFeet, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimFistOrFootRandomPos, @@ -142,7 +134,7 @@ const struct SpriteTemplate gCrossChopHandSpriteTemplate = .tileTag = ANIM_TAG_HANDS_AND_FEET, .paletteTag = ANIM_TAG_HANDS_AND_FEET, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = sAnims_CrossChopHand, + .anims = &sAnims_HandsAndFeet[3], .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimCrossChopHand, @@ -153,7 +145,7 @@ const struct SpriteTemplate gSlidingKickSpriteTemplate = .tileTag = ANIM_TAG_HANDS_AND_FEET, .paletteTag = ANIM_TAG_HANDS_AND_FEET, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = sAnims_SlidingKick, + .anims = &sAnims_HandsAndFeet[1], .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimSlidingKick, @@ -171,12 +163,13 @@ static const union AffineAnimCmd *const sAffineAnims_SpinningHandOrFoot[] = sAffineAnim_SpinningHandOrFoot, }; +// Blaze Kick / Meteor Mash const struct SpriteTemplate gSpinningHandOrFootSpriteTemplate = { .tileTag = ANIM_TAG_HANDS_AND_FEET, .paletteTag = ANIM_TAG_HANDS_AND_FEET, .oam = &gOamData_AffineDouble_ObjNormal_32x32, - .anims = sAnims_HandOrFoot, + .anims = sAnims_HandsAndFeet, .images = NULL, .affineAnims = sAffineAnims_SpinningHandOrFoot, .callback = AnimSpinningKickOrPunch, @@ -199,7 +192,7 @@ const struct SpriteTemplate gMegaPunchKickSpriteTemplate = .tileTag = ANIM_TAG_HANDS_AND_FEET, .paletteTag = ANIM_TAG_HANDS_AND_FEET, .oam = &gOamData_AffineDouble_ObjNormal_32x32, - .anims = sAnims_HandOrFoot, + .anims = sAnims_HandsAndFeet, .images = NULL, .affineAnims = sAffineAnims_MegaPunchKick, .callback = AnimSpinningKickOrPunch, @@ -210,7 +203,7 @@ const struct SpriteTemplate gStompFootSpriteTemplate = .tileTag = ANIM_TAG_HANDS_AND_FEET, .paletteTag = ANIM_TAG_HANDS_AND_FEET, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = sAnims_SlidingKick, + .anims = &sAnims_HandsAndFeet[1], .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimStompFoot, @@ -301,7 +294,7 @@ const struct SpriteTemplate gArmThrustHandSpriteTemplate = .tileTag = ANIM_TAG_HANDS_AND_FEET, .paletteTag = ANIM_TAG_HANDS_AND_FEET, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = sAnims_HandOrFoot, + .anims = sAnims_HandsAndFeet, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimArmThrustHit, @@ -405,13 +398,13 @@ const struct SpriteTemplate gFocusPunchFistSpriteTemplate = .tileTag = ANIM_TAG_HANDS_AND_FEET, .paletteTag = ANIM_TAG_HANDS_AND_FEET, .oam = &gOamData_AffineDouble_ObjNormal_32x32, - .anims = sAnims_HandOrFoot, + .anims = sAnims_HandsAndFeet, .images = NULL, .affineAnims = sAffineAnims_FocusPunchFist, .callback = AnimFocusPunchFist, }; -static void unc_080B08A0(struct Sprite *sprite) +static void AnimUnusedHumanoidFoot(struct Sprite *sprite) { SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]); sprite->y += gBattleAnimArgs[1]; @@ -429,7 +422,7 @@ static void AnimSlideHandOrFootToTarget(struct Sprite *sprite) } StartSpriteAnim(sprite, gBattleAnimArgs[6]); gBattleAnimArgs[6] = 0; - AnimSnoreZ(sprite); + AnimTravelDiagonally(sprite); } static void AnimJumpKick(struct Sprite *sprite) @@ -475,8 +468,8 @@ static void AnimFistOrFootRandomPos(struct Sprite *sprite) if (gBattleAnimArgs[2] < 0) gBattleAnimArgs[2] = Random() % 5; StartSpriteAnim(sprite, gBattleAnimArgs[2]); - sprite->x = GetBattlerSpriteCoord(battler, 2); - sprite->y = GetBattlerSpriteCoord(battler, 3); + sprite->x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2); + sprite->y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y_PIC_OFFSET); xMod = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_WIDTH) / 2; yMod = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_HEIGHT) / 4; x = Random() % xMod; @@ -491,19 +484,19 @@ static void AnimFistOrFootRandomPos(struct Sprite *sprite) sprite->y += y; sprite->data[0] = gBattleAnimArgs[1]; sprite->data[7] = CreateSprite(&gBasicHitSplatSpriteTemplate, sprite->x, sprite->y, sprite->subpriority + 1); - if (sprite->data[7] != 64) + if (sprite->data[7] != MAX_SPRITES) { StartSpriteAffineAnim(&gSprites[sprite->data[7]], 0); gSprites[sprite->data[7]].callback = SpriteCallbackDummy; } - sprite->callback = sub_80B0B2C; + sprite->callback = AnimFistOrFootRandomPos_Step; } -static void sub_80B0B2C(struct Sprite *sprite) +static void AnimFistOrFootRandomPos_Step(struct Sprite *sprite) { if (sprite->data[0] == 0) { - if (sprite->data[7] != 64) + if (sprite->data[7] != MAX_SPRITES) { FreeOamMatrix(gSprites[sprite->data[7]].oam.matrixNum); DestroySprite(&gSprites[sprite->data[7]]); @@ -531,10 +524,10 @@ static void AnimCrossChopHand(struct Sprite *sprite) } sprite->data[4] = sprite->y - 20; sprite->callback = StartAnimLinearTranslation; - StoreSpriteCallbackInData6(sprite, sub_80B0BD8); + StoreSpriteCallbackInData6(sprite, AnimCrossChopHand_Step); } -static void sub_80B0BD8(struct Sprite *sprite) +static void AnimCrossChopHand_Step(struct Sprite *sprite) { if (++sprite->data[5] == 11) { @@ -550,6 +543,7 @@ static void sub_80B0BD8(struct Sprite *sprite) } } +// Rolling Kick / Low Kick static void AnimSlidingKick(struct Sprite *sprite) { if (BATTLE_PARTNER(gBattleAnimAttacker) == gBattleAnimTarget && GetBattlerPosition(gBattleAnimTarget) < B_POSITION_PLAYER_RIGHT) @@ -566,10 +560,10 @@ static void AnimSlidingKick(struct Sprite *sprite) sprite->data[5] = gBattleAnimArgs[5]; sprite->data[6] = gBattleAnimArgs[4]; sprite->data[7] = 0; - sprite->callback = sub_80B0CB4; + sprite->callback = AnimSlidingKick_Step; } -static void sub_80B0CB4(struct Sprite *sprite) +static void AnimSlidingKick_Step(struct Sprite *sprite) { if (!AnimTranslateLinear(sprite)) { @@ -622,8 +616,8 @@ static void AnimStompFootStep(struct Sprite *sprite) if (--sprite->data[0] == -1) { sprite->data[0] = 6; - sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2); - sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3); + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); sprite->callback = StartAnimLinearTranslation; StoreSpriteCallbackInData6(sprite, AnimStompFootEnd); } @@ -658,17 +652,18 @@ static void AnimDizzyPunchDuck(struct Sprite *sprite) } } +// The wall that appears when Brick Break is going to shatter the target's defensive wall static void AnimBrickBreakWall(struct Sprite *sprite) { if (gBattleAnimArgs[0] == 0) { - sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0); - sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1); + sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X); + sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y); } else { - sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 0); - sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1); + sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X); + sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y); } sprite->x += gBattleAnimArgs[1]; sprite->y += gBattleAnimArgs[2]; @@ -676,10 +671,10 @@ static void AnimBrickBreakWall(struct Sprite *sprite) sprite->data[1] = gBattleAnimArgs[3]; sprite->data[2] = gBattleAnimArgs[4]; sprite->data[3] = 0; - sprite->callback = sub_80B0EF0; + sprite->callback = AnimBrickBreakWall_Step; } -static void sub_80B0EF0(struct Sprite *sprite) +static void AnimBrickBreakWall_Step(struct Sprite *sprite) { switch (sprite->data[0]) { @@ -709,17 +704,18 @@ static void sub_80B0EF0(struct Sprite *sprite) } } +// Piece of shattered defensive wall flies off. Used by Brick Break when the target has a defensive wall static void AnimBrickBreakWallShard(struct Sprite *sprite) { - if (gBattleAnimArgs[0] == 0) + if (gBattleAnimArgs[0] == ANIM_ATTACKER) { - sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0) + gBattleAnimArgs[2]; - sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + gBattleAnimArgs[3]; + sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X) + gBattleAnimArgs[2]; + sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y) + gBattleAnimArgs[3]; } else { - sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 0) + gBattleAnimArgs[2]; - sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + gBattleAnimArgs[3]; + sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X) + gBattleAnimArgs[2]; + sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + gBattleAnimArgs[3]; } sprite->oam.tileNum += gBattleAnimArgs[1] * 16; sprite->data[0] = 0; @@ -745,10 +741,10 @@ static void AnimBrickBreakWallShard(struct Sprite *sprite) DestroyAnimSprite(sprite); return; } - sprite->callback = sub_80B1050; + sprite->callback = AnimBrickBreakWallShard_Step; } -static void sub_80B1050(struct Sprite *sprite) +static void AnimBrickBreakWallShard_Step(struct Sprite *sprite) { sprite->x += sprite->data[6]; sprite->y += sprite->data[7]; @@ -760,8 +756,8 @@ static void AnimSuperpowerOrb(struct Sprite *sprite) { if (gBattleAnimArgs[0] == 0) { - sprite->x = GetBattlerSpriteCoord(gBattlerAttacker, 2); - sprite->y = GetBattlerSpriteCoord(gBattlerAttacker, 3); + sprite->x = GetBattlerSpriteCoord(gBattlerAttacker, BATTLER_COORD_X_2); + sprite->y = GetBattlerSpriteCoord(gBattlerAttacker, BATTLER_COORD_Y_PIC_OFFSET); sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker); sprite->data[7] = gBattleAnimTarget; } @@ -773,25 +769,26 @@ static void AnimSuperpowerOrb(struct Sprite *sprite) sprite->data[0] = 0; sprite->data[1] = 12; sprite->data[2] = 8; - sprite->callback = sub_80B111C; + sprite->callback = AnimSuperpowerOrb_Step; } -static void sub_80B111C(struct Sprite *sprite) +static void AnimSuperpowerOrb_Step(struct Sprite *sprite) { if (++sprite->data[0] == 180) { SetGpuReg(REG_OFFSET_BLDCNT, 0); sprite->data[0] = 16; sprite->data[1] = sprite->x; - sprite->data[2] = GetBattlerSpriteCoord(sprite->data[7], 2); + sprite->data[2] = GetBattlerSpriteCoord(sprite->data[7], BATTLER_COORD_X_2); sprite->data[3] = sprite->y; - sprite->data[4] = GetBattlerSpriteCoord(sprite->data[7], 3); + sprite->data[4] = GetBattlerSpriteCoord(sprite->data[7], BATTLER_COORD_Y_PIC_OFFSET); InitAnimLinearTranslation(sprite); StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); - sprite->callback = RunLinearTranslation_ThenceSetCBtoStoredInData6; + sprite->callback = AnimTranslateLinear_WithFollowup; } } +// Floating rock that flies off to hit the target. Used by Superpower static void AnimSuperpowerRock(struct Sprite *sprite) { sprite->x = gBattleAnimArgs[0]; @@ -800,10 +797,10 @@ static void AnimSuperpowerRock(struct Sprite *sprite) StorePointerInVars(&sprite->data[4], &sprite->data[5], (void *)(sprite->y << 8)); sprite->data[6] = gBattleAnimArgs[1]; sprite->oam.tileNum += gBattleAnimArgs[2] * 4; - sprite->callback = sub_80B11E4; + sprite->callback = AnimSuperpowerRock_Step1; } -static void sub_80B11E4(struct Sprite *sprite) +static void AnimSuperpowerRock_Step1(struct Sprite *sprite) { void *var0; @@ -821,20 +818,20 @@ static void sub_80B11E4(struct Sprite *sprite) } else { - s16 pos0 = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); - s16 pos1 = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); - s16 pos2 = GetBattlerSpriteCoord(gBattleAnimTarget, 2); - s16 pos3 = GetBattlerSpriteCoord(gBattleAnimTarget, 3); + s16 pos0 = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + s16 pos1 = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); + s16 pos2 = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + s16 pos3 = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); sprite->data[0] = pos2 - pos0; sprite->data[1] = pos3 - pos1; sprite->data[2] = sprite->x << 4; sprite->data[3] = sprite->y << 4; - sprite->callback = sub_80B12A4; + sprite->callback = AnimSuperpowerRock_Step2; } } -static void sub_80B12A4(struct Sprite *sprite) +static void AnimSuperpowerRock_Step2(struct Sprite *sprite) { u16 edgeX; @@ -851,10 +848,10 @@ static void AnimSuperpowerFireball(struct Sprite *sprite) { u8 battler; - if (gBattleAnimArgs[0] == 0) + if (gBattleAnimArgs[0] == ANIM_ATTACKER) { - sprite->x = GetBattlerSpriteCoord(gBattlerAttacker, 2); - sprite->y = GetBattlerSpriteCoord(gBattlerAttacker, 3); + sprite->x = GetBattlerSpriteCoord(gBattlerAttacker, BATTLER_COORD_X_2); + sprite->y = GetBattlerSpriteCoord(gBattlerAttacker, BATTLER_COORD_Y_PIC_OFFSET); battler = gBattleAnimTarget; sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker); } @@ -869,15 +866,15 @@ static void AnimSuperpowerFireball(struct Sprite *sprite) sprite->oam.matrixNum |= (ST_OAM_HFLIP | ST_OAM_VFLIP); sprite->data[0] = 16; sprite->data[1] = sprite->x; - sprite->data[2] = GetBattlerSpriteCoord(battler, 2); + sprite->data[2] = GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2); sprite->data[3] = sprite->y; - sprite->data[4] = GetBattlerSpriteCoord(battler, 3); + sprite->data[4] = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y_PIC_OFFSET); InitAnimLinearTranslation(sprite); StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); - sprite->callback = RunLinearTranslation_ThenceSetCBtoStoredInData6; + sprite->callback = AnimTranslateLinear_WithFollowup; } -static void sub_80B13D4(struct Sprite *sprite) +static void AnimArmThrustHit_Step(struct Sprite *sprite) { if (sprite->data[0] == sprite->data[4]) DestroyAnimSprite(sprite); @@ -888,8 +885,8 @@ static void AnimArmThrustHit(struct Sprite *sprite) { u8 turn; - sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 2); - sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 3); + sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); sprite->data[1] = gBattleAnimArgs[3]; sprite->data[2] = gBattleAnimArgs[0]; sprite->data[3] = gBattleAnimArgs[1]; @@ -905,12 +902,12 @@ static void AnimArmThrustHit(struct Sprite *sprite) StartSpriteAnim(sprite, sprite->data[1]); sprite->x2 = sprite->data[2]; sprite->y2 = sprite->data[3]; - sprite->callback = sub_80B13D4; + sprite->callback = AnimArmThrustHit_Step; } static void AnimRevengeScratch(struct Sprite *sprite) { - if (gBattleAnimArgs[2] == 0) + if (gBattleAnimArgs[2] == ANIM_ATTACKER) InitSpritePosToAnimAttacker(sprite, 0); else InitSpritePosToAnimTarget(sprite, FALSE); @@ -922,6 +919,7 @@ static void AnimRevengeScratch(struct Sprite *sprite) StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); } +// Fist shrinks toward target and shakes static void AnimFocusPunchFist(struct Sprite *sprite) { if (sprite->affineAnimEnded) diff --git a/src/fire.c b/src/battle_anim_fire.c similarity index 71% rename from src/fire.c rename to src/battle_anim_fire.c index a8f0c8503..3fd92d0f9 100644 --- a/src/fire.c +++ b/src/battle_anim_fire.c @@ -10,8 +10,8 @@ static void AnimFireSpiralInward(struct Sprite *sprite); static void AnimFireSpread(struct Sprite *sprite); static void AnimLargeFlame(struct Sprite *sprite); static void AnimFirePlume(struct Sprite *sprite); -static void sub_80ACAA8(struct Sprite *sprite); -static void sub_80ACBB0(struct Sprite *sprite); +static void AnimUnusedSmallEmber(struct Sprite *sprite); +static void AnimSunlight(struct Sprite *sprite); static void AnimEmberFlare(struct Sprite *sprite); static void AnimBurnFlame(struct Sprite *sprite); static void AnimFireRing(struct Sprite *sprite); @@ -21,22 +21,22 @@ static void AnimEruptionLaunchRock(struct Sprite *sprite); static void AnimEruptionFallingRock(struct Sprite *sprite); static void AnimWillOWispOrb(struct Sprite *sprite); static void AnimWillOWispFire(struct Sprite *sprite); -static void sub_80ACA6C(struct Sprite *sprite); -static void sub_80ACB1C(struct Sprite *sprite); +static void AnimLargeFlame_Step(struct Sprite *sprite); +static void AnimUnusedSmallEmber_Step(struct Sprite *sprite); static void AnimFireRing_Step1(struct Sprite *sprite); static void AnimFireRing_Step2(struct Sprite *sprite); static void AnimFireRing_Step3(struct Sprite *sprite); static void UpdateFireRingCircleOffset(struct Sprite *sprite); -static void sub_80ACE28(struct Sprite *sprite); -static void sub_80ACE50(struct Sprite *sprite); +static void AnimFireSpiralOutward_Step1(struct Sprite *sprite); +static void AnimFireSpiralOutward_Step2(struct Sprite *sprite); static void AnimTask_EruptionLaunchRocks_Step(u8 taskId); -static void sub_80AD1F8(u8 spriteId, u8 taskId, u8 a3); -static u16 sub_80AD374(u8 spriteId); -static void sub_80AD3C8(struct Sprite *sprite, s16 x, s16 y); -static void sub_80AD3E4(struct Sprite *sprite); -static void sub_80AD4A8(struct Sprite *sprite); -static void sub_80AD690(struct Sprite *sprite); -static void sub_80AD870(u8 taskId); +static void CreateEruptionLaunchRocks(u8 spriteId, u8 taskId, u8 a3); +static u16 GetEruptionLaunchRockInitialYPos(u8 spriteId); +static void InitEruptionLaunchRockCoordData(struct Sprite *sprite, s16 x, s16 y); +static void UpdateEruptionLaunchRockPos(struct Sprite *sprite); +static void AnimEruptionFallingRock_Step(struct Sprite *sprite); +static void AnimWillOWispOrb_Step(struct Sprite *sprite); +static void AnimTask_MoveHeatWaveTargets_Step(u8 taskId); static const union AnimCmd sAnim_FireSpiralSpread_0[] = { @@ -160,7 +160,7 @@ const struct SpriteTemplate gFirePlumeSpriteTemplate = .callback = AnimFirePlume, }; -const struct SpriteTemplate gUnknown_83E5CB8 = +static const struct SpriteTemplate sUnusedEmberFirePlumeSpriteTemplate = { .tileTag = ANIM_TAG_SMALL_EMBER, .paletteTag = ANIM_TAG_SMALL_EMBER, @@ -171,7 +171,7 @@ const struct SpriteTemplate gUnknown_83E5CB8 = .callback = AnimFirePlume, }; -static const union AnimCmd gUnknown_83E5CD0[] = +static const union AnimCmd sAnim_UnusedSmallEmber[] = { ANIMCMD_FRAME(16, 6), ANIMCMD_FRAME(32, 6), @@ -179,20 +179,20 @@ static const union AnimCmd gUnknown_83E5CD0[] = ANIMCMD_JUMP(0), }; -static const union AnimCmd *const gUnknown_83E5CE0[] = +static const union AnimCmd *const sAnims_UnusedSmallEmber[] = { - gUnknown_83E5CD0, + sAnim_UnusedSmallEmber, }; -const struct SpriteTemplate gUnknown_83E5CE4 = +static const struct SpriteTemplate sUnusedSmallEmberSpriteTemplate = { .tileTag = ANIM_TAG_SMALL_EMBER, .paletteTag = ANIM_TAG_SMALL_EMBER, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = gUnknown_83E5CE0, + .anims = sAnims_UnusedSmallEmber, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80ACAA8, + .callback = AnimUnusedSmallEmber, }; static const union AffineAnimCmd sAffineAnim_SunlightRay[] = @@ -215,7 +215,7 @@ const struct SpriteTemplate gSunlightRaySpriteTemplate = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = sAffineAnims_SunlightRay, - .callback = sub_80ACBB0, + .callback = AnimSunlight, }; static const union AnimCmd sAnim_BasicFire[] = @@ -289,22 +289,22 @@ static const union AnimCmd *const sAnims_FireBlastCross[] = sAnim_FireBlastCross, }; -static const union AffineAnimCmd gUnknown_83E5DBC[] = +static const union AffineAnimCmd sAffineAnim_Unused_0[] = { AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 1), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd gUnknown_83E5DCC[] = +static const union AffineAnimCmd sAffineAnim_Unused_1[] = { AFFINEANIMCMD_FRAME(0xA0, 0xA0, 0, 0), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd *const gUnknown_83E5DDC[] = +static const union AffineAnimCmd *const sAffineAnims_Unused[] = { - gUnknown_83E5DBC, - gUnknown_83E5DCC, + sAffineAnim_Unused_0, + sAffineAnim_Unused_1, }; const struct SpriteTemplate gFireBlastCrossSpriteTemplate = @@ -351,7 +351,7 @@ static const struct SpriteTemplate gEruptionLaunchRockSpriteTemplate = .callback = AnimEruptionLaunchRock, }; -static const s16 sEruptionLaunchRockCoords[][2] = +static const s16 sEruptionLaunchRockSpeeds[][2] = { {-2, -5}, {-1, -1}, @@ -457,6 +457,7 @@ static const s8 sShakeDirsPattern1[16] = -1, 0, 1, 0, -1, 1, 0, -1, 0, 1, 0, -1, 0, 1, 0, 1, }; +// For the first stage of Fire Punch static void AnimFireSpiralInward(struct Sprite *sprite) { sprite->data[0] = gBattleAnimArgs[0]; @@ -465,10 +466,11 @@ static void AnimFireSpiralInward(struct Sprite *sprite) sprite->data[3] = 0x1E; sprite->data[4] = 0xFE00; StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); - sprite->callback = TranslateSpriteInGrowingCircleOverDuration; + sprite->callback = TranslateSpriteInGrowingCircle; sprite->callback(sprite); } +// For the impact spread of fire sprites for moves like Blaze Kick or Fire Punch static void AnimFireSpread(struct Sprite *sprite) { SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]); @@ -498,7 +500,7 @@ static void AnimFirePlume(struct Sprite *sprite) sprite->data[1] = gBattleAnimArgs[2]; sprite->data[4] = gBattleAnimArgs[3]; sprite->data[3] = gBattleAnimArgs[5]; - sprite->callback = sub_80ACA6C; + sprite->callback = AnimLargeFlame_Step; } static void AnimLargeFlame(struct Sprite *sprite) @@ -518,10 +520,10 @@ static void AnimLargeFlame(struct Sprite *sprite) sprite->data[1] = gBattleAnimArgs[2]; sprite->data[4] = gBattleAnimArgs[3]; sprite->data[3] = gBattleAnimArgs[5]; - sprite->callback = sub_80ACA6C; + sprite->callback = AnimLargeFlame_Step; } -static void sub_80ACA6C(struct Sprite *sprite) +static void AnimLargeFlame_Step(struct Sprite *sprite) { if (++sprite->data[0] < sprite->data[4]) { @@ -532,7 +534,7 @@ static void sub_80ACA6C(struct Sprite *sprite) DestroySpriteAndMatrix(sprite); } -static void sub_80ACAA8(struct Sprite *sprite) +static void AnimUnusedSmallEmber(struct Sprite *sprite) { SetSpriteCoordsToAnimAttackerCoords(sprite); if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) @@ -551,10 +553,10 @@ static void sub_80ACAA8(struct Sprite *sprite) sprite->data[3] = gBattleAnimArgs[5]; sprite->data[4] = gBattleAnimArgs[6]; sprite->data[5] = 0; - sprite->callback = sub_80ACB1C; + sprite->callback = AnimUnusedSmallEmber_Step; } -static void sub_80ACB1C(struct Sprite *sprite) +static void AnimUnusedSmallEmber_Step(struct Sprite *sprite) { if (sprite->data[3]) { @@ -576,8 +578,8 @@ static void sub_80ACB1C(struct Sprite *sprite) } } -//sunlight -static void sub_80ACBB0(struct Sprite *sprite) +// Sunlight from Sunny Day / sunny weather +static void AnimSunlight(struct Sprite *sprite) { sprite->x = 0; sprite->y = 0; @@ -588,8 +590,6 @@ static void sub_80ACBB0(struct Sprite *sprite) StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); } -//fire 2 - // Animates the secondary effect of MOVE_EMBER, where the flames grow and slide // horizontally a bit. // arg 0: initial x pixel offset @@ -605,7 +605,7 @@ static void AnimEmberFlare(struct Sprite *sprite) && (gBattleAnimAttacker == GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT) || gBattleAnimAttacker == GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT))) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; - sprite->callback = AnimSnoreZ; + sprite->callback = AnimTravelDiagonally; sprite->callback(sprite); } @@ -613,7 +613,7 @@ static void AnimBurnFlame(struct Sprite *sprite) { gBattleAnimArgs[0] = -gBattleAnimArgs[0]; gBattleAnimArgs[2] = -gBattleAnimArgs[2]; - sprite->callback = AnimSnoreZ; + sprite->callback = AnimTravelDiagonally; } // Animates the a fire sprite in the first-half of the MOVE_FIRE_BLAST @@ -626,7 +626,7 @@ static void AnimBurnFlame(struct Sprite *sprite) //void AnimFireRing(struct Sprite *sprite) static void AnimFireRing(struct Sprite *sprite) { - InitSpritePosToAnimAttacker(sprite, 1); + InitSpritePosToAnimAttacker(sprite, TRUE); sprite->data[7] = gBattleAnimArgs[2]; sprite->data[0] = 0; sprite->callback = AnimFireRing_Step1; @@ -706,19 +706,19 @@ static void AnimFireSpiralOutward(struct Sprite *sprite) sprite->data[0] = gBattleAnimArgs[3]; sprite->invisible = TRUE; sprite->callback = WaitAnimForDuration; - StoreSpriteCallbackInData6(sprite, sub_80ACE28); + StoreSpriteCallbackInData6(sprite, AnimFireSpiralOutward_Step1); } -static void sub_80ACE28(struct Sprite *sprite) +static void AnimFireSpiralOutward_Step1(struct Sprite *sprite) { sprite->invisible = FALSE; sprite->data[0] = sprite->data[1]; sprite->data[1] = 0; - sprite->callback = sub_80ACE50; + sprite->callback = AnimFireSpiralOutward_Step2; sprite->callback(sprite); } -static void sub_80ACE50(struct Sprite *sprite) +static void AnimFireSpiralOutward_Step2(struct Sprite *sprite) { sprite->x2 = Sin(sprite->data[1], sprite->data[2] >> 8); sprite->y2 = Cos(sprite->data[1], sprite->data[2] >> 8); @@ -728,258 +728,337 @@ static void sub_80ACE50(struct Sprite *sprite) DestroyAnimSprite(sprite); } -void AnimTask_EruptionLaunchRocks(u8 taskId) // initialize animation task for Move_ERUPTION? +#define IDX_ACTIVE_SPRITES 6 // Used by the sprite callback to modify the number of active sprites + +#define tState data[0] +#define tTimer1 data[1] +#define tTimer2 data[2] +#define tTimer3 data[3] +#define tAttackerY data[4] +#define tAttackerSide data[5] +#define tActiveSprites data[IDX_ACTIVE_SPRITES] +// data[8]-data[15] used by BattleAnimHelper_SetSpriteSquashParams / BattleAnimHelper_RunSpriteSquash +#define tAttackerSpriteId data[15] + +#define sSpeedDelay data[0] +#define sLaunchStage data[1] +#define sX data[2] +#define sY data[3] +#define sSpeedX data[4] +#define sSpeedY data[5] +#define sTaskId data[6] +#define sActiveSpritesIdx data[7] + +// Animates first stage of Eruption where the attacker squishes and launches rocks away from themself +void AnimTask_EruptionLaunchRocks(u8 taskId) { struct Task *task = &gTasks[taskId]; - task->data[15] = GetAnimBattlerSpriteId(ANIM_ATTACKER); - task->data[0] = 0; - task->data[1] = 0; - task->data[2] = 0; - task->data[3] = 0; - task->data[4] = gSprites[task->data[15]].y; - task->data[5] = GetBattlerSide(gBattleAnimAttacker); - task->data[6] = 0; + task->tAttackerSpriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); + task->tState = 0; + task->tTimer1 = 0; + task->tTimer2 = 0; + task->tTimer3 = 0; + task->tAttackerY = gSprites[task->tAttackerSpriteId].y; + task->tAttackerSide = GetBattlerSide(gBattleAnimAttacker); + task->tActiveSprites = 0; PrepareBattlerSpriteForRotScale(task->data[15], ST_OAM_OBJ_NORMAL); task->func = AnimTask_EruptionLaunchRocks_Step; } -static void AnimTask_EruptionLaunchRocks_Step(u8 taskId) // animate Move_ERUPTION? +static void AnimTask_EruptionLaunchRocks_Step(u8 taskId) { struct Task *task = &gTasks[taskId]; - switch (task->data[0]) + switch (task->tState) { case 0: - BattleAnimHelper_SetSpriteSquashParams(task, task->data[15], 0x100, 0x100, 0xE0, 0x200, 0x20); - ++task->data[0]; - // fall through + BattleAnimHelper_SetSpriteSquashParams(task, task->tAttackerSpriteId, 0x100, 0x100, 0xE0, 0x200, 32); + task->tState++; case 1: - if (++task->data[1] > 1) + if (++task->tTimer1 > 1) { - task->data[1] = 0; - if (++task->data[2] & 0x1) - gSprites[task->data[15]].x2 = 3; + task->tTimer1 = 0; + + if (++task->tTimer2 & 1) + gSprites[task->tAttackerSpriteId].x2 = 3; else - gSprites[task->data[15]].x2 = -3; + gSprites[task->tAttackerSpriteId].x2 = -3; } - if (task->data[5]) + + if (task->tAttackerSide != B_SIDE_PLAYER) { - if (++task->data[3] > 4) + if (++task->tTimer3 > 4) { - task->data[3] = 0; - ++gSprites[task->data[15]].y; + task->tTimer3 = 0; + gSprites[task->tAttackerSpriteId].y++; } } + if(!BattleAnimHelper_RunSpriteSquash(task)) { - SetBattlerSpriteYOffsetFromYScale(task->data[15]); - gSprites[task->data[15]].x2 = 0; - task->data[1] = 0; - task->data[2] = 0; - task->data[3] = 0; - ++task->data[0]; + SetBattlerSpriteYOffsetFromYScale(task->tAttackerSpriteId); + gSprites[task->tAttackerSpriteId].x2 = 0; + + task->tTimer1 = 0; + task->tTimer2 = 0; + task->tTimer3 = 0; + task->tState++; } break; case 2: - if (++task->data[1] > 4) + if (++task->tTimer1 > 4) { - if (task->data[5]) - BattleAnimHelper_SetSpriteSquashParams(task, task->data[15], 0xE0, 0x200, 0x180, 0xF0, 0x6); + if (task->tAttackerSide != B_SIDE_PLAYER) + BattleAnimHelper_SetSpriteSquashParams(task, task->tAttackerSpriteId, 0xE0, 0x200, 0x180, 0xF0, 6); else - BattleAnimHelper_SetSpriteSquashParams(task, task->data[15], 0xE0, 0x200, 0x180, 0xC0, 0x6); - task->data[1] = 0; - ++task->data[0]; + BattleAnimHelper_SetSpriteSquashParams(task, task->tAttackerSpriteId, 0xE0, 0x200, 0x180, 0xC0, 6); + + task->tTimer1 = 0; + task->tState++; } break; case 3: if (!BattleAnimHelper_RunSpriteSquash(task)) { - sub_80AD1F8(task->data[15], taskId, 6); - ++task->data[0]; + CreateEruptionLaunchRocks(task->tAttackerSpriteId, taskId, IDX_ACTIVE_SPRITES); + task->tState++; } break; case 4: - if (++task->data[1] > 1) + if (++task->tTimer1 > 1) { - task->data[1] = 0; - if (++task->data[2] & 1) - gSprites[task->data[15]].y2 += 3; + task->tTimer1 = 0; + + if (++task->tTimer2 & 1) + gSprites[task->tAttackerSpriteId].y2 += 3; else - gSprites[task->data[15]].y2 -= 3; + gSprites[task->tAttackerSpriteId].y2 -= 3; } - if (++task->data[3] > 0x18) + + if (++task->tTimer3 > 24) { - if (task->data[5]) - BattleAnimHelper_SetSpriteSquashParams(task, task->data[15], 0x180, 0xF0, 0x100, 0x100, 0x8); + if (task->tAttackerSide != B_SIDE_PLAYER) + BattleAnimHelper_SetSpriteSquashParams(task, task->tAttackerSpriteId, 0x180, 0xF0, 0x100, 0x100, 8); else - BattleAnimHelper_SetSpriteSquashParams(task, task->data[15], 0x180, 0xC0, 0x100, 0x100, 0x8); - if (task->data[2] & 1) - gSprites[task->data[15]].y2 -= 3; - task->data[1] = 0; - task->data[2] = 0; - task->data[3] = 0; - ++task->data[0]; + BattleAnimHelper_SetSpriteSquashParams(task, task->tAttackerSpriteId, 0x180, 0xC0, 0x100, 0x100, 8); + + if (task->tTimer2 & 1) + gSprites[task->tAttackerSpriteId].y2 -= 3; + + task->tTimer1 = 0; + task->tTimer2 = 0; + task->tTimer3 = 0; + task->tState++; } break; case 5: - if (task->data[5]) - --gSprites[task->data[15]].y; + if (task->tAttackerSide != B_SIDE_PLAYER) + gSprites[task->tAttackerSpriteId].y--; + if (!BattleAnimHelper_RunSpriteSquash(task)) { - gSprites[task->data[15]].y = task->data[4]; - ResetSpriteRotScale(task->data[15]); - - task->data[2] = 0; - ++task->data[0]; + gSprites[task->tAttackerSpriteId].y = task->tAttackerY; + ResetSpriteRotScale(task->tAttackerSpriteId); + task->tTimer2 = 0; + task->tState++; } break; case 6: - if (!task->data[6]) + if (task->tActiveSprites == 0) DestroyAnimVisualTask(taskId); break; + default: + break; } } -static void sub_80AD1F8(u8 spriteId, u8 taskId, u8 a3) +static void CreateEruptionLaunchRocks(u8 spriteId, u8 taskId, u8 activeSpritesIdx) { u16 i, j; s8 sign; - u16 y = sub_80AD374(spriteId); + + u16 y = GetEruptionLaunchRockInitialYPos(spriteId); u16 x = gSprites[spriteId].x; - if(GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + if(!GetBattlerSide(gBattleAnimAttacker)) { - x -= 0xC; + x -= 12; sign = 1; } else { - x += 0x10; + x += 16; sign = -1; } - for (i = 0, j = 0; i <= 6; ++i) + + for (i = 0, j = 0; i <= 6; i++) { u8 spriteId = CreateSprite(&gEruptionLaunchRockSpriteTemplate, x, y, 2); - if (spriteId != 0x40) + if (spriteId != MAX_SPRITES) { gSprites[spriteId].oam.tileNum += j * 4 + 0x40; + if (++j >= 5) j = 0; - sub_80AD3C8(&gSprites[spriteId], sEruptionLaunchRockCoords[i][0] * sign, sEruptionLaunchRockCoords[i][1]); - gSprites[spriteId].data[6] = taskId; - gSprites[spriteId].data[7] = a3; - ++gTasks[taskId].data[a3]; + + InitEruptionLaunchRockCoordData(&gSprites[spriteId], sEruptionLaunchRockSpeeds[i][0] * sign, sEruptionLaunchRockSpeeds[i][1]); + gSprites[spriteId].sTaskId = taskId; + gSprites[spriteId].sActiveSpritesIdx = activeSpritesIdx; + + gTasks[taskId].data[activeSpritesIdx]++; } } } static void AnimEruptionLaunchRock(struct Sprite *sprite) { - sub_80AD3E4(sprite); + UpdateEruptionLaunchRockPos(sprite); + if (sprite->invisible) { - --gTasks[sprite->data[6]].data[sprite->data[7]]; + gTasks[sprite->sTaskId].data[sprite->sActiveSpritesIdx]--; DestroySprite(sprite); } } -static u16 sub_80AD374(u8 spriteId) +static u16 GetEruptionLaunchRockInitialYPos(u8 spriteId) { - u16 var1 = gSprites[spriteId].y + gSprites[spriteId].y2 + gSprites[spriteId].centerToCornerVecY; + s16 y = gSprites[spriteId].y + gSprites[spriteId].y2 + gSprites[spriteId].centerToCornerVecY; if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) - var1 = ((var1 << 16) + 0x4A0000) >> 16; + y += 74; else - var1 = ((var1 << 16) + 0x2C0000) >> 16; - return var1; + y += 44; + + return y; } -static void sub_80AD3C8(struct Sprite *sprite, s16 x, s16 y) +static void InitEruptionLaunchRockCoordData(struct Sprite *sprite, s16 speedX, s16 speedY) { - sprite->data[0] = 0; - sprite->data[1] = 0; - sprite->data[2] = (u16)sprite->x * 8; - sprite->data[3] = (u16)sprite->y * 8; - sprite->data[4] = x * 8; - sprite->data[5] = y * 8; + sprite->sSpeedDelay = 0; + sprite->sLaunchStage = 0; + sprite->sX = (u16)sprite->x * 8; + sprite->sY = (u16)sprite->y * 8; + sprite->sSpeedX = speedX * 8; + sprite->sSpeedY = speedY * 8; } -static void sub_80AD3E4(struct Sprite *sprite) +static void UpdateEruptionLaunchRockPos(struct Sprite *sprite) { - s32 var1; - - if (++sprite->data[0] > 2) + int extraLaunchSpeed; + if (++sprite->sSpeedDelay > 2) { - sprite->data[0] = 0; - ++sprite->data[1]; - var1 = (u16)sprite->data[1] * (u16)sprite->data[1]; - sprite->data[3] += var1; + sprite->sSpeedDelay = 0; + ++sprite->sLaunchStage; + extraLaunchSpeed = (u16)sprite->sLaunchStage * (u16)sprite->sLaunchStage; + sprite->sY += extraLaunchSpeed; } - sprite->data[2] += sprite->data[4]; - sprite->x = sprite->data[2] >> 3; - sprite->data[3] += sprite->data[5]; - sprite->y = sprite->data[3] >> 3; - if (sprite->x < -8 || sprite->x > 0xf8 || sprite->y < -8 || sprite->y > 120) + + sprite->sX += sprite->sSpeedX; + sprite->x = sprite->sX >> 3; + sprite->sY += sprite->sSpeedY; + sprite->y = sprite->sY >> 3; + + if (sprite->x < -8 || sprite->x > DISPLAY_WIDTH + 8 || sprite->y < -8 || sprite->y > 120) sprite->invisible = TRUE; } +#undef IDX_ACTIVE_SPRITES +#undef tState +#undef tTimer1 +#undef tTimer2 +#undef tTimer3 +#undef tAttackerY +#undef tAttackerSide +#undef tActiveSprites +#undef tAttackerSpriteId +#undef sSpeedDelay +#undef sLaunchStage +#undef sX +#undef sY +#undef sSpeedX +#undef sSpeedY +#undef sTaskId +#undef sActiveSpritesIdx + +#define sState data[0] +#define sBounceTimer data[1] +#define sBounceDir data[2] +#define sEndTimer data[3] +#define sFallDelay data[6] +#define sTargetY data[7] + static void AnimEruptionFallingRock(struct Sprite *sprite) { sprite->x = gBattleAnimArgs[0]; sprite->y = gBattleAnimArgs[1]; - sprite->data[0] = 0; - sprite->data[1] = 0; - sprite->data[2] = 0; - sprite->data[6] = gBattleAnimArgs[2]; - sprite->data[7] = gBattleAnimArgs[3]; + + sprite->sState = 0; + sprite->sBounceTimer = 0; + sprite->sBounceDir = 0; + sprite->sFallDelay = gBattleAnimArgs[2]; + sprite->sTargetY = gBattleAnimArgs[3]; + sprite->oam.tileNum += gBattleAnimArgs[4] * 16; - sprite->callback = sub_80AD4A8; + sprite->callback = AnimEruptionFallingRock_Step; } -static void sub_80AD4A8(struct Sprite *sprite) +static void AnimEruptionFallingRock_Step(struct Sprite *sprite) { - switch (sprite->data[0]) + switch (sprite->sState) { case 0: - if (sprite->data[6] != 0) + // Wait to begin falling + if (sprite->sFallDelay != 0) { - --sprite->data[6]; + sprite->sFallDelay--; return; } - ++sprite->data[0]; + + sprite->sState++; // fall through case 1: + // Rock is falling sprite->y += 8; - if (sprite->y >= sprite->data[7]) + if (sprite->y >= sprite->sTargetY) { - sprite->y = sprite->data[7]; - ++sprite->data[0]; + sprite->y = sprite->sTargetY; + sprite->sState++; } break; case 2: - if (++sprite->data[1] > 1) + // Bounce up and down on landing spot + if (++sprite->sBounceTimer > 1) { - sprite->data[1] = 0; - if ((++sprite->data[2] & 1) != 0) + sprite->sBounceTimer = 0; + if ((++sprite->sBounceDir & 1) != 0) sprite->y2 = -3; else sprite->y2 = 3; } - if (++sprite->data[3] > 16) + + if (++sprite->sEndTimer > 16) DestroyAnimSprite(sprite); break; } } +#undef sState +#undef sBounceTimer +#undef sBounceDir +#undef sEndTimer +#undef sFallDelay +#undef sTargetY + //wisp orb static void AnimWillOWispOrb(struct Sprite *sprite) { switch (sprite->data[0]) { case 0: - InitSpritePosToAnimAttacker(sprite, 0); + InitSpritePosToAnimAttacker(sprite, FALSE); StartSpriteAnim(sprite, gBattleAnimArgs[2]); sprite->data[7] = gBattleAnimArgs[2]; if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) @@ -1016,14 +1095,14 @@ static void AnimWillOWispOrb(struct Sprite *sprite) sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2); sprite->data[3] = sprite->y; sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3); - BattleAnim_InitLinearTranslationWithDuration(sprite); - sprite->callback = sub_80AD690; + InitAnimLinearTranslationWithSpeed(sprite); + sprite->callback = AnimWillOWispOrb_Step; } break; } } -static void sub_80AD690(struct Sprite *sprite) +static void AnimWillOWispOrb_Step(struct Sprite *sprite) { s16 initialData5, newData5; @@ -1034,7 +1113,7 @@ static void sub_80AD690(struct Sprite *sprite) sprite->data[5] = (sprite->data[5] + 4) & 0xFF; newData5 = sprite->data[5]; if ((initialData5 == 0 || initialData5 > 196) && newData5 > 0 && sprite->data[7] == 0) - PlaySE12WithPanning(SE_M_FLAME_WHEEL, gUnknown_2037F24); + PlaySE12WithPanning(SE_M_FLAME_WHEEL, gAnimCustomPanning); } else { @@ -1042,7 +1121,6 @@ static void sub_80AD690(struct Sprite *sprite) } } -//wisp fire static void AnimWillOWispFire(struct Sprite *sprite) { if (!sprite->data[0]) @@ -1083,10 +1161,10 @@ void AnimTask_MoveHeatWaveTargets(u8 taskId) task->data[13] = IsBattlerSpriteVisible(gBattleAnimTarget ^ BIT_FLANK) + 1; task->data[14] = GetAnimBattlerSpriteId(ANIM_TARGET); task->data[15] = GetAnimBattlerSpriteId(ANIM_DEF_PARTNER); - task->func = sub_80AD870; + task->func = AnimTask_MoveHeatWaveTargets_Step; } -static void sub_80AD870(u8 taskId) +static void AnimTask_MoveHeatWaveTargets_Step(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -1153,7 +1231,7 @@ static void sub_80AD870(u8 taskId) } } -// Used to add a color mask to the battle interface / HUD in Heat Wave. +// Used to add a color mask to the battle background. // arg 0: opacity // arg 1: color code void AnimTask_BlendBackground(u8 taskId) @@ -1165,29 +1243,40 @@ void AnimTask_BlendBackground(u8 taskId) DestroyAnimVisualTask(taskId); } +#define tShakeNum data[0] +#define tMaxShakes data[1] +#define tShakeOffset data[2] // Never read, gBattleAnimArgs[1] is used directly instead +#define tVertical data[3] +#define tPatternId data[4] + +// Shakes target horizontally or vertically tMaxShakes times, following a set pattern of alternations void AnimTask_ShakeTargetInPattern(u8 taskId) { - s8 unk; + s8 dir; u8 spriteId; - if (gTasks[taskId].data[0] == 0) + if (gTasks[taskId].tShakeNum == 0) { - gTasks[taskId].data[1] = gBattleAnimArgs[0]; - gTasks[taskId].data[2] = gBattleAnimArgs[1]; - gTasks[taskId].data[3] = gBattleAnimArgs[2]; - gTasks[taskId].data[4] = gBattleAnimArgs[3]; + gTasks[taskId].tMaxShakes = gBattleAnimArgs[0]; + gTasks[taskId].tShakeOffset = gBattleAnimArgs[1]; + gTasks[taskId].tVertical = gBattleAnimArgs[2]; + gTasks[taskId].tPatternId = gBattleAnimArgs[3]; } - ++gTasks[taskId].data[0]; + gTasks[taskId].tShakeNum++; + spriteId = gBattlerSpriteIds[gBattleAnimTarget]; - if (!gTasks[taskId].data[4]) - unk = sShakeDirsPattern0[gTasks[taskId].data[0] % 10]; + + if (gTasks[taskId].tPatternId == 0) + dir = sShakeDirsPattern0[gTasks[taskId].tShakeNum % 10]; else - unk = sShakeDirsPattern1[gTasks[taskId].data[0] % 10]; - if (gTasks[taskId].data[3] == 1) - gSprites[spriteId].y2 = gBattleAnimArgs[1] * unk < 0 ? -(gBattleAnimArgs[1] * unk) : gBattleAnimArgs[1] * unk; + dir = sShakeDirsPattern1[gTasks[taskId].tShakeNum % 10]; + + if (gTasks[taskId].tVertical == TRUE) + gSprites[spriteId].y2 = gBattleAnimArgs[1] * dir < 0 ? -(gBattleAnimArgs[1] * dir) : gBattleAnimArgs[1] * dir; else - gSprites[spriteId].x2 = gBattleAnimArgs[1] * unk; - if (gTasks[taskId].data[0] == gTasks[taskId].data[1]) + gSprites[spriteId].x2 = gBattleAnimArgs[1] * dir; + + if (gTasks[taskId].tShakeNum == gTasks[taskId].tMaxShakes) { gSprites[spriteId].x2 = 0; gSprites[spriteId].y2 = 0; diff --git a/src/flying.c b/src/battle_anim_flying.c similarity index 89% rename from src/flying.c rename to src/battle_anim_flying.c index b6007a679..d3daecc67 100644 --- a/src/flying.c +++ b/src/battle_anim_flying.c @@ -11,29 +11,29 @@ static void AnimAirWaveCrescent(struct Sprite *sprite); static void AnimFlyBallUp(struct Sprite *sprite); static void AnimFlyBallAttack(struct Sprite *sprite); static void AnimFallingFeather(struct Sprite *sprite); -static void sub_80B24C0(struct Sprite *sprite); -static void sub_80B2514(struct Sprite *sprite); +static void AnimUnusedBubbleThrow(struct Sprite *sprite); +static void AnimUnusedFeather(struct Sprite *sprite); static void AnimWhirlwindLine(struct Sprite *sprite); static void AnimBounceBallShrink(struct Sprite *sprite); static void AnimBounceBallLand(struct Sprite *sprite); static void AnimDiveBall(struct Sprite *sprite); static void AnimDiveWaterSplash(struct Sprite *sprite); static void AnimSprayWaterDroplet(struct Sprite *sprite); -static void sub_80B2CE4(struct Sprite *sprite); +static void AnimUnusedFlashingLight(struct Sprite *sprite); static void AnimSkyAttackBird(struct Sprite *sprite); -static void sub_80B190C(struct Sprite *sprite); -static void sub_80B198C(u8 taskId); -static void sub_80B1A9C(struct Sprite *sprite); -static void sub_80B1BF8(struct Sprite *sprite); -static void sub_80B1CC0(struct Sprite *sprite); +static void AnimEllipticalGust_Step(struct Sprite *sprite); +static void AnimTask_AnimateGustTornadoPalette_Step(u8 taskId); +static void AnimGustToTarget_Step(struct Sprite *sprite); +static void AnimFlyBallUp_Step(struct Sprite *sprite); +static void AnimFlyBallAttack_Step(struct Sprite *sprite); static void AnimFallingFeather_Step(struct Sprite *sprite); -static void sub_80B268C(struct Sprite *sprite); -static void sub_80B2820(struct Sprite *sprite); -static void sub_80B2A50(struct Sprite *sprite); -static void sub_80B2AB0(struct Sprite *sprite); -static void sub_80B2C88(struct Sprite *sprite); -static void sub_80B2CF8(struct Sprite *sprite); -static void sub_80B2E20(struct Sprite *sprite); +static void AnimUnusedFeather_Step(struct Sprite *sprite); +static void AnimWhirlwindLine_Step(struct Sprite *sprite); +static void AnimDiveBall_Step1(struct Sprite *sprite); +static void AnimDiveBall_Step2(struct Sprite *sprite); +static void AnimSprayWaterDroplet_Step(struct Sprite *sprite); +static void AnimUnusedFlashingLight_Step(struct Sprite *sprite); +static void AnimSkyAttackBird_Step(struct Sprite *sprite); const struct SpriteTemplate gEllipticalGustSpriteTemplate = { @@ -177,10 +177,9 @@ const struct SpriteTemplate gFallingFeatherSpriteTemplate = .callback = AnimFallingFeather, }; -// not used -static const u16 gUnknown_83E6C18[] = INCBIN_U16("graphics/battle_anims/unk_83E6C18.gbapal"); +static const u16 sUnusedPal[] = INCBIN_U16("graphics/battle_anims/unk_83E6C18.gbapal"); -const struct SpriteTemplate gUnknown_83E6C38 = +static const struct SpriteTemplate sUnusedBubbleThrowSpriteTemplate = { .tileTag = ANIM_TAG_SMALL_BUBBLES, .paletteTag = ANIM_TAG_SMALL_BUBBLES, @@ -188,10 +187,10 @@ const struct SpriteTemplate gUnknown_83E6C38 = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80B24C0, + .callback = AnimUnusedBubbleThrow, }; -const struct SpriteTemplate gUnknown_83E6C50 = +static const struct SpriteTemplate sUnusedFeatherSpriteTemplate = { .tileTag = ANIM_TAG_WHITE_FEATHER, .paletteTag = ANIM_TAG_WHITE_FEATHER, @@ -199,7 +198,7 @@ const struct SpriteTemplate gUnknown_83E6C50 = .anims = sAnims_FallingFeather, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80B2514, + .callback = AnimUnusedFeather, }; static const union AnimCmd sAnim_WhirlwindLines[] = @@ -301,8 +300,7 @@ const struct SpriteTemplate gDiveBallSpriteTemplate = .callback = AnimDiveBall, }; -// not used -static const union AffineAnimCmd gUnknown_83E6D58[] = +static const union AffineAnimCmd sAnim_Unused[] = { AFFINEANIMCMD_FRAME(0x100, 0x0, 0, 0), AFFINEANIMCMD_FRAME(0x0, 0x20, 0, 12), @@ -310,10 +308,9 @@ static const union AffineAnimCmd gUnknown_83E6D58[] = AFFINEANIMCMD_END, }; -// not used -static const union AffineAnimCmd *const gUnknown_83E6D80[] = +static const union AffineAnimCmd *const sAnims_Unused[] = { - gUnknown_83E6D58, + sAnim_Unused, }; const struct SpriteTemplate gDiveWaterSplashSpriteTemplate = @@ -338,7 +335,7 @@ const struct SpriteTemplate gSprayWaterDropletSpriteTemplate = .callback = AnimSprayWaterDroplet, }; -const struct SpriteTemplate gUnknown_83E6DAC = +static const struct SpriteTemplate sUnusedFlashingLightSpriteTemplate = { .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, .paletteTag = ANIM_TAG_CIRCLE_OF_LIGHT, @@ -346,7 +343,7 @@ const struct SpriteTemplate gUnknown_83E6DAC = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80B2CE4, + .callback = AnimUnusedFlashingLight, }; const struct SpriteTemplate gSkyAttackBirdSpriteTemplate = @@ -365,11 +362,11 @@ static void AnimEllipticalGust(struct Sprite *sprite) InitSpritePosToAnimTarget(sprite, FALSE); sprite->y += 20; sprite->data[1] = 191; - sprite->callback = sub_80B190C; + sprite->callback = AnimEllipticalGust_Step; sprite->callback(sprite); } -static void sub_80B190C(struct Sprite *sprite) +static void AnimEllipticalGust_Step(struct Sprite *sprite) { sprite->x2 = Sin(sprite->data[1], 32); sprite->y2 = Cos(sprite->data[1], 8); @@ -379,15 +376,16 @@ static void sub_80B190C(struct Sprite *sprite) DestroyAnimSprite(sprite); } +// Animates the palette on the gust tornado to make it look like its spinning void AnimTask_AnimateGustTornadoPalette(u8 taskId) { gTasks[taskId].data[0] = gBattleAnimArgs[1]; gTasks[taskId].data[1] = gBattleAnimArgs[0]; gTasks[taskId].data[2] = IndexOfSpritePaletteTag(ANIM_TAG_GUST); - gTasks[taskId].func = sub_80B198C; + gTasks[taskId].func = AnimTask_AnimateGustTornadoPalette_Step; } -static void sub_80B198C(u8 taskId) +static void AnimTask_AnimateGustTornadoPalette_Step(u8 taskId) { u8 data2; u16 temp; @@ -423,10 +421,10 @@ static void AnimGustToTarget(struct Sprite *sprite) sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3]; InitAnimLinearTranslation(sprite); sprite->callback = RunStoredCallbackWhenAffineAnimEnds; - StoreSpriteCallbackInData6(sprite, sub_80B1A9C); + StoreSpriteCallbackInData6(sprite, AnimGustToTarget_Step); } -static void sub_80B1A9C(struct Sprite *sprite) +static void AnimGustToTarget_Step(struct Sprite *sprite) { if (AnimTranslateLinear(sprite)) DestroyAnimSprite(sprite); @@ -472,11 +470,11 @@ static void AnimFlyBallUp(struct Sprite *sprite) InitSpritePosToAnimAttacker(sprite, TRUE); sprite->data[0] = gBattleAnimArgs[2]; sprite->data[1] = gBattleAnimArgs[3]; - sprite->callback = sub_80B1BF8; + sprite->callback = AnimFlyBallUp_Step; gSprites[GetAnimBattlerSpriteId(ANIM_ATTACKER)].invisible = TRUE; } -static void sub_80B1BF8(struct Sprite *sprite) +static void AnimFlyBallUp_Step(struct Sprite *sprite) { if (sprite->data[0] > 0) { @@ -495,7 +493,7 @@ static void AnimFlyBallAttack(struct Sprite *sprite) { if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) { - sprite->x = 272; + sprite->x = DISPLAY_WIDTH + 32; sprite->y = -32; StartSpriteAffineAnim(sprite, 1); } @@ -510,10 +508,10 @@ static void AnimFlyBallAttack(struct Sprite *sprite) sprite->data[3] = sprite->y; sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); InitAnimLinearTranslation(sprite); - sprite->callback = sub_80B1CC0; + sprite->callback = AnimFlyBallAttack_Step; } -static void sub_80B1CC0(struct Sprite *sprite) +static void AnimFlyBallAttack_Step(struct Sprite *sprite) { sprite->data[0] = 1; AnimTranslateLinear(sprite); @@ -524,8 +522,8 @@ static void sub_80B1CC0(struct Sprite *sprite) sprite->data[3] &= 0xFF; } if (sprite->x + sprite->x2 < -32 - || sprite->x + sprite->x2 > 272 - || sprite->y + sprite->y2 > 160) + || sprite->x + sprite->x2 > DISPLAY_WIDTH + 32 + || sprite->y + sprite->y2 > DISPLAY_HEIGHT) { gSprites[GetAnimBattlerSpriteId(ANIM_ATTACKER)].invisible = FALSE; DestroyAnimSprite(sprite); @@ -883,7 +881,7 @@ static void AnimFallingFeather_Step(struct Sprite *sprite) } } -static void sub_80B24C0(struct Sprite *sprite) +static void AnimUnusedBubbleThrow(struct Sprite *sprite) { sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget); sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); @@ -891,7 +889,7 @@ static void sub_80B24C0(struct Sprite *sprite) sprite->callback = TranslateAnimSpriteToTargetMonLocation; } -static void sub_80B2514(struct Sprite *sprite) +static void AnimUnusedFeather(struct Sprite *sprite) { u8 matrixNum; s16 rn, sinVal; @@ -935,10 +933,10 @@ static void sub_80B2514(struct Sprite *sprite) sprite->animNum = 1; sprite->hFlip = TRUE; } - sprite->callback = sub_80B268C; + sprite->callback = AnimUnusedFeather_Step; } -static void sub_80B268C(struct Sprite *sprite) +static void AnimUnusedFeather_Step(struct Sprite *sprite) { struct FeatherDanceData fData; struct FeatherDanceData *tData = (struct FeatherDanceData *)sprite->data; @@ -992,12 +990,12 @@ static void AnimWhirlwindLine(struct Sprite *sprite) u16 arg; u8 mult; - if (!gBattleAnimArgs[2]) + if (gBattleAnimArgs[2] == ANIM_ATTACKER) InitSpritePosToAnimAttacker(sprite, 0); else InitSpritePosToAnimTarget(sprite, FALSE); - if ((!gBattleAnimArgs[2] && GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) - || (gBattleAnimArgs[2] == 1 && GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)) + if ((gBattleAnimArgs[2] == ANIM_ATTACKER && GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + || (gBattleAnimArgs[2] == ANIM_TARGET && GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)) sprite->x += 8; SeekSpriteAnim(sprite, gBattleAnimArgs[4]); sprite->x -= 32; @@ -1007,10 +1005,10 @@ static void AnimWhirlwindLine(struct Sprite *sprite) sprite->x2 += mult * arg; sprite->data[0] = arg; sprite->data[7] = gBattleAnimArgs[3]; - sprite->callback = sub_80B2820; + sprite->callback = AnimWhirlwindLine_Step; } -static void sub_80B2820(struct Sprite *sprite) +static void AnimWhirlwindLine_Step(struct Sprite *sprite) { sprite->x2 += sprite->data[1] >> 8; if (++sprite->data[0] == 6) @@ -1064,7 +1062,7 @@ static void AnimBounceBallLand(struct Sprite *sprite) switch (sprite->data[0]) { case 0: - sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1); + sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y); sprite->y2 = -sprite->y - 32; ++sprite->data[0]; break; @@ -1089,11 +1087,11 @@ static void AnimDiveBall(struct Sprite *sprite) InitSpritePosToAnimAttacker(sprite, 1); sprite->data[0] = gBattleAnimArgs[2]; sprite->data[1] = gBattleAnimArgs[3]; - sprite->callback = sub_80B2A50; + sprite->callback = AnimDiveBall_Step1; gSprites[GetAnimBattlerSpriteId(ANIM_ATTACKER)].invisible = TRUE; } -static void sub_80B2A50(struct Sprite *sprite) +static void AnimDiveBall_Step1(struct Sprite *sprite) { if (sprite->data[0] > 0) { @@ -1108,11 +1106,11 @@ static void sub_80B2A50(struct Sprite *sprite) { sprite->invisible = TRUE; if (sprite->data[3]++ > 20) - sprite->callback = sub_80B2AB0; + sprite->callback = AnimDiveBall_Step2; } } -static void sub_80B2AB0(struct Sprite *sprite) +static void AnimDiveBall_Step2(struct Sprite *sprite) { sprite->y2 += sprite->data[2] >> 8; if (sprite->y + sprite->y2 > -32) @@ -1131,13 +1129,13 @@ static void AnimDiveWaterSplash(struct Sprite *sprite) case 0: if (!gBattleAnimArgs[0]) { - sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0); - sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1); + sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X); + sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y); } else { - sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 0); - sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1); + sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X); + sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y); } sprite->data[1] = 512; TrySetSpriteRotScale(sprite, 0, 256, sprite->data[1], 0); @@ -1166,6 +1164,7 @@ static void AnimDiveWaterSplash(struct Sprite *sprite) } } +// Launches a water droplet away from the specified battler. Used by Astonish and Dive static void AnimSprayWaterDroplet(struct Sprite *sprite) { s32 v1 = 0x1FF & Random(); @@ -1185,18 +1184,18 @@ static void AnimSprayWaterDroplet(struct Sprite *sprite) sprite->oam.matrixNum = ST_OAM_HFLIP; if (gBattleAnimArgs[1] == 0) { - sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0); - sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 32; + sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X); + sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y) + 32; } else { - sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 0); - sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + 32; + sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X); + sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + 32; } - sprite->callback = sub_80B2C88; + sprite->callback = AnimSprayWaterDroplet_Step; } -static void sub_80B2C88(struct Sprite *sprite) +static void AnimSprayWaterDroplet_Step(struct Sprite *sprite) { if (sprite->data[2] == 0) { @@ -1216,14 +1215,14 @@ static void sub_80B2C88(struct Sprite *sprite) DestroyAnimSprite(sprite); } -static void sub_80B2CE4(struct Sprite *sprite) +static void AnimUnusedFlashingLight(struct Sprite *sprite) { sprite->data[6] = 0; sprite->data[7] = 64; - sprite->callback = sub_80B2CF8; + sprite->callback = AnimUnusedFlashingLight_Step; } -static void sub_80B2CF8(struct Sprite *sprite) +static void AnimUnusedFlashingLight_Step(struct Sprite *sprite) { switch (sprite->data[0]) { @@ -1248,8 +1247,8 @@ static void AnimSkyAttackBird(struct Sprite *sprite) s16 posx = sprite->x; s16 posy = sprite->y; - sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); - sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); + sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); sprite->data[4] = sprite->x << 4; sprite->data[5] = sprite->y << 4; sprite->data[6] = ((posx - sprite->x) << 4) / 12; @@ -1257,22 +1256,22 @@ static void AnimSkyAttackBird(struct Sprite *sprite) rotation = ArcTan2Neg(posx - sprite->x, posy - sprite->y); rotation += 49152; TrySetSpriteRotScale(sprite, 1, 0x100, 0x100, rotation); - sprite->callback = sub_80B2E20; + sprite->callback = AnimSkyAttackBird_Step; } -static void sub_80B2E20(struct Sprite *sprite) +static void AnimSkyAttackBird_Step(struct Sprite *sprite) { sprite->data[4] += sprite->data[6]; sprite->data[5] += sprite->data[7]; sprite->x = sprite->data[4] >> 4; sprite->y = sprite->data[5] >> 4; - if (sprite->x > 285 || sprite->x < -45 + if (sprite->x > DISPLAY_WIDTH + 45 || sprite->x < -45 || sprite->y > 157 || sprite->y < -45) DestroySpriteAndMatrix(sprite); } -// not used -static void sub_80B2E64(u8 taskId) +// Unused +static void AnimTask_SetAttackerVisibility(u8 taskId) { if (gBattleAnimArgs[0] == 0) { diff --git a/src/ghost.c b/src/battle_anim_ghost.c similarity index 84% rename from src/ghost.c rename to src/battle_anim_ghost.c index a531cec44..d9e06b91e 100644 --- a/src/ghost.c +++ b/src/battle_anim_ghost.c @@ -9,39 +9,39 @@ #include "constants/songs.h" static void AnimConfuseRayBallBounce(struct Sprite *sprite); -static void sub_80B52D0(struct Sprite *sprite); -static void sub_80B5344(struct Sprite *sprite); -static void sub_80B53C0(struct Sprite *sprite); +static void AnimConfuseRayBallBounce_Step1(struct Sprite *sprite); +static void AnimConfuseRayBallBounce_Step2(struct Sprite *sprite); +static void UpdateConfuseRayBallBlend(struct Sprite *sprite); static void AnimConfuseRayBallSpiral(struct Sprite *sprite); -static void sub_80B5470(struct Sprite *sprite); -static void sub_80B5570(u8 taskId); -static void sub_80B55C8(u8 taskId); +static void AnimConfuseRayBallSpiral_Step(struct Sprite *sprite); +static void AnimTask_NightShadeClone_Step1(u8 taskId); +static void AnimTask_NightShadeClone_Step2(u8 taskId); static void AnimShadowBall(struct Sprite *sprite); -static void AnimShadowBallStep(struct Sprite *sprite); +static void AnimShadowBall_Step(struct Sprite *sprite); static void AnimLick(struct Sprite *sprite); -static void sub_80B5810(struct Sprite *sprite); -static void sub_80B59D4(u8 taskId); -static void sub_80B5AD4(u8 taskId); -static void sub_80B5D38(u8 taskId); -static void sub_80B5DCC(u8 taskId); +static void AnimLick_Step(struct Sprite *sprite); +static void AnimTask_NightmareClone_Step(u8 taskId); +static void AnimTask_SpiteTargetShadow_Step1(u8 taskId); +static void AnimTask_SpiteTargetShadow_Step2(u8 taskId); +static void AnimTask_SpiteTargetShadow_Step3(u8 taskId); static void AnimDestinyBondWhiteShadow(struct Sprite *sprite); -static void sub_80B5FE0(struct Sprite *sprite); -static void sub_80B623C(u8 taskId); -static void sub_80B6468(u8 taskId); -static void sub_80B65F0(u8 taskId); +static void AnimDestinyBondWhiteShadow_Step(struct Sprite *sprite); +static void AnimTask_DestinyBondWhiteShadow_Step(u8 taskId); +static void AnimTask_CurseStretchingBlackBg_Step1(u8 taskId); +static void AnimTask_CurseStretchingBlackBg_Step2(u8 taskId); static void AnimCurseNail(struct Sprite *sprite); -static void sub_80B66A8(struct Sprite *sprite); -static void sub_80B6728(struct Sprite *sprite); -static void sub_80B67A0(struct Sprite *sprite); +static void AnimCurseNail_Step1(struct Sprite *sprite); +static void AnimCurseNail_Step2(struct Sprite *sprite); +static void AnimCurseNail_End(struct Sprite *sprite); static void AnimGhostStatusSprite(struct Sprite *sprite); -static void sub_80B68A8(struct Sprite *sprite); -static void sub_80B696C(u8 taskId); +static void AnimGhostStatusSprite_End(struct Sprite *sprite); +static void AnimTask_GrudgeFlames_Step(u8 taskId); static void AnimGrudgeFlame(struct Sprite *sprite); -static void sub_80B7158(struct Sprite *sprite); -static void sub_80B6BE4(u8 taskId); -static void sub_80B6F30(u8 taskId); -static void sub_80B6FC4(u8 taskId); -static void sub_80B71B0(struct Sprite *sprite); +static void AnimMonMoveCircular(struct Sprite *sprite); +static void AnimTask_GhostGetOut_Step1(u8 taskId); +static void AnimTask_GhostGetOut_Step2(u8 taskId); +static void AnimTask_GhostGetOut_Step3(u8 taskId); +static void AnimMonMoveCircular_Step(struct Sprite *sprite); static const union AffineAnimCmd sAffineAnim_ConfuseRayBallBounce[] = { @@ -125,17 +125,15 @@ const struct SpriteTemplate gLickSpriteTemplate = .callback = AnimLick, }; -// not used -static const union AffineAnimCmd gUnknown_83E7654[] = +static const union AffineAnimCmd sAffineAnim_Unused[] = { AFFINEANIMCMD_FRAME(0x200, 0x200, 0, 0), AFFINEANIMCMD_END, }; -// not used -static const union AffineAnimCmd *const gUnknown_83E7664[] = +static const union AffineAnimCmd *const sAffineAnims_Unused[] = { - gUnknown_83E7654, + sAffineAnim_Unused, }; const struct SpriteTemplate gDestinyBondWhiteShadowSpriteTemplate = @@ -207,7 +205,8 @@ const struct SpriteTemplate gGrudgeFlameSpriteTemplate = .callback = AnimGrudgeFlame, }; -const struct SpriteTemplate gUnknown_83E76F8 = +// Unused +static const struct SpriteTemplate sMonMoveCircularSpriteTemplate = { .tileTag = 0, .paletteTag = 0, @@ -215,7 +214,7 @@ const struct SpriteTemplate gUnknown_83E76F8 = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80B7158, + .callback = AnimMonMoveCircular, }; static void AnimConfuseRayBallBounce(struct Sprite *sprite) @@ -223,24 +222,24 @@ static void AnimConfuseRayBallBounce(struct Sprite *sprite) InitSpritePosToAnimAttacker(sprite, 1); sprite->data[0] = gBattleAnimArgs[2]; sprite->data[1] = sprite->x; - sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2); + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); sprite->data[3] = sprite->y; - sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3); - BattleAnim_InitLinearTranslationWithDuration(sprite); - sprite->callback = sub_80B52D0; + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); + InitAnimLinearTranslationWithSpeed(sprite); + sprite->callback = AnimConfuseRayBallBounce_Step1; sprite->data[6] = 16; SetGpuReg(REG_OFFSET_BLDCNT, (BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL)); SetGpuReg(REG_OFFSET_BLDALPHA, sprite->data[6]); } -static void sub_80B52D0(struct Sprite *sprite) +static void AnimConfuseRayBallBounce_Step1(struct Sprite *sprite) { s16 r0, r2; - sub_80B53C0(sprite); + UpdateConfuseRayBallBlend(sprite); if (AnimTranslateLinear(sprite)) { - sprite->callback = sub_80B5344; + sprite->callback = AnimConfuseRayBallBounce_Step2; return; } sprite->x2 += Sin(sprite->data[5], 10); @@ -252,10 +251,10 @@ static void sub_80B52D0(struct Sprite *sprite) return; if (r0 <= 0) return; - PlaySE12WithPanning(SE_M_CONFUSE_RAY, gUnknown_2037F24); + PlaySE12WithPanning(SE_M_CONFUSE_RAY, gAnimCustomPanning); } -static void sub_80B5344(struct Sprite *sprite) +static void AnimConfuseRayBallBounce_Step2(struct Sprite *sprite) { s16 r2, r0; @@ -275,11 +274,11 @@ static void sub_80B5344(struct Sprite *sprite) } else { - sub_80B53C0(sprite); + UpdateConfuseRayBallBlend(sprite); } } -static void sub_80B53C0(struct Sprite *sprite) +static void UpdateConfuseRayBallBlend(struct Sprite *sprite) { s16 r0; @@ -309,11 +308,11 @@ static void sub_80B53C0(struct Sprite *sprite) static void AnimConfuseRayBallSpiral(struct Sprite *sprite) { InitSpritePosToAnimTarget(sprite, TRUE); - sprite->callback = sub_80B5470; + sprite->callback = AnimConfuseRayBallSpiral_Step; sprite->callback(sprite); } -static void sub_80B5470(struct Sprite *sprite) +static void AnimConfuseRayBallSpiral_Step(struct Sprite *sprite) { u16 temp1; @@ -332,6 +331,7 @@ static void sub_80B5470(struct Sprite *sprite) DestroyAnimSprite(sprite); } +// Creates a large transparent clone of the attacker centered on their position which shrinks to original size void AnimTask_NightShadeClone(u8 taskId) { u8 spriteId; @@ -346,10 +346,10 @@ void AnimTask_NightShadeClone(u8 taskId) gTasks[taskId].data[1] = *gBattleAnimArgs; gTasks[taskId].data[2] = 0; gTasks[taskId].data[3] = 16; - gTasks[taskId].func = sub_80B5570; + gTasks[taskId].func = AnimTask_NightShadeClone_Step1; } -static void sub_80B5570(u8 taskId) +static void AnimTask_NightShadeClone_Step1(u8 taskId) { gTasks[taskId].data[10] += 1; if (gTasks[taskId].data[10] == 3) @@ -360,11 +360,11 @@ static void sub_80B5570(u8 taskId) SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[2], gTasks[taskId].data[3])); if (gTasks[taskId].data[2] != 9) return; - gTasks[taskId].func = sub_80B55C8; + gTasks[taskId].func = AnimTask_NightShadeClone_Step2; } } -static void sub_80B55C8(u8 taskId) +static void AnimTask_NightShadeClone_Step2(u8 taskId) { u8 spriteId; @@ -398,8 +398,8 @@ static void AnimShadowBall(struct Sprite *sprite) s16 oldPosX = sprite->x; s16 oldPosY = sprite->y; - sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); - sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); + sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); sprite->data[0] = 0; sprite->data[1] = gBattleAnimArgs[0]; sprite->data[2] = gBattleAnimArgs[1]; @@ -408,10 +408,10 @@ static void AnimShadowBall(struct Sprite *sprite) sprite->data[5] = sprite->y << 4; sprite->data[6] = ((oldPosX - sprite->x) << 4) / (gBattleAnimArgs[0] << 1); sprite->data[7] = ((oldPosY - sprite->y) << 4) / (gBattleAnimArgs[0] << 1); - sprite->callback = AnimShadowBallStep; + sprite->callback = AnimShadowBall_Step; } -static void AnimShadowBallStep(struct Sprite *sprite) +static void AnimShadowBall_Step(struct Sprite *sprite) { switch (sprite->data[0]) { @@ -429,8 +429,8 @@ static void AnimShadowBallStep(struct Sprite *sprite) sprite->data[2] -= 1; if (sprite->data[2] > 0) break; - sprite->data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, 2); - sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 3); + sprite->data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); sprite->data[4] = sprite->x << 4; sprite->data[5] = sprite->y << 4; sprite->data[6] = ((sprite->data[1] - sprite->x) << 4) / sprite->data[3]; @@ -445,8 +445,8 @@ static void AnimShadowBallStep(struct Sprite *sprite) sprite->data[3] -= 1; if (sprite->data[3] > 0) break; - sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 2); - sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 3); + sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); sprite->data[0] += 1; break; case 3: @@ -458,10 +458,10 @@ static void AnimShadowBallStep(struct Sprite *sprite) static void AnimLick(struct Sprite *sprite) { InitSpritePosToAnimTarget(sprite, TRUE); - sprite->callback = sub_80B5810; + sprite->callback = AnimLick_Step; } -static void sub_80B5810(struct Sprite *sprite) +static void AnimLick_Step(struct Sprite *sprite) { bool8 r5 = FALSE; bool8 r6 = FALSE; @@ -507,12 +507,13 @@ static void sub_80B5810(struct Sprite *sprite) } } +// Creates a transparent clone of the target which drifts up and away to the side void AnimTask_NightmareClone(u8 taskId) { struct Task *task; task = &gTasks[taskId]; - task->data[0] = CloneBattlerSpriteWithBlend(1); + task->data[0] = CloneBattlerSpriteWithBlend(ANIM_TARGET); if (task->data[0] < 0) { DestroyAnimVisualTask(taskId); @@ -539,10 +540,10 @@ void AnimTask_NightmareClone(u8 taskId) gSprites[task->data[0]].data[4] = 0; StoreSpriteCallbackInData6(&gSprites[task->data[0]], SpriteCallbackDummy); gSprites[task->data[0]].callback = TranslateSpriteLinearFixedPoint; - task->func = sub_80B59D4; + task->func = AnimTask_NightmareClone_Step; } -static void sub_80B59D4(u8 taskId) +static void AnimTask_NightmareClone_Step(u8 taskId) { struct Task *task; @@ -563,7 +564,7 @@ static void sub_80B59D4(u8 taskId) break; if (task->data[1] <= 80) break; - obj_delete_but_dont_free_vram(&gSprites[task->data[0]]); + DestroySpriteWithActiveSheet(&gSprites[task->data[0]]); task->data[4] = 1; break; case 1: @@ -579,17 +580,18 @@ static void sub_80B59D4(u8 taskId) } } +// Creates a blended copy of the target that wavers in front of them void AnimTask_SpiteTargetShadow(u8 taskId) { struct Task *task; task = &gTasks[taskId]; task->data[15] = 0; - task->func = sub_80B5AD4; + task->func = AnimTask_SpiteTargetShadow_Step1; task->func(taskId); } -static void sub_80B5AD4(u8 taskId) +static void AnimTask_SpiteTargetShadow_Step1(u8 taskId) { s16 startLine; struct Task *task = &gTasks[taskId]; @@ -670,7 +672,7 @@ static void sub_80B5AD4(u8 taskId) SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG1_ON); else SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG2_ON); - task->func = sub_80B5D38; + task->func = AnimTask_SpiteTargetShadow_Step2; ++task->data[15]; break; default: @@ -679,7 +681,7 @@ static void sub_80B5AD4(u8 taskId) } } -static void sub_80B5D38(u8 taskId) +static void AnimTask_SpiteTargetShadow_Step2(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -693,12 +695,12 @@ static void sub_80B5D38(u8 taskId) if (task->data[1] == 128) { task->data[15] = 0; - task->func = sub_80B5DCC; + task->func = AnimTask_SpiteTargetShadow_Step3; task->func(taskId); } } -static void sub_80B5DCC(u8 taskId) +static void AnimTask_SpiteTargetShadow_Step3(u8 taskId) { struct Task *task = &gTasks[taskId]; u8 rank = GetBattlerSpriteBGPriorityRank(gBattleAnimTarget); @@ -718,7 +720,7 @@ static void sub_80B5DCC(u8 taskId) break; case 2: gSprites[task->data[14]].invisible = TRUE; - obj_delete_but_dont_free_vram(&gSprites[task->data[0]]); + DestroySpriteWithActiveSheet(&gSprites[task->data[0]]); FreeSpritePaletteByTag(ANIM_TAG_BENT_SPOON); SetGpuReg(REG_OFFSET_BLDCNT, 0); SetGpuReg(REG_OFFSET_BLDALPHA, 0); @@ -740,17 +742,17 @@ static void AnimDestinyBondWhiteShadow(struct Sprite *sprite) if (gBattleAnimArgs[0] == 0) { - battler1X = GetBattlerSpriteCoord(gBattleAnimAttacker, 0); - battler1Y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 28; - battler2X = GetBattlerSpriteCoord(gBattleAnimTarget, 0); - battler2Y = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + 28; + battler1X = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X); + battler1Y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y) + 28; + battler2X = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X); + battler2Y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + 28; } else { - battler1X = GetBattlerSpriteCoord(gBattleAnimTarget, 0); - battler1Y = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + 28; - battler2X = GetBattlerSpriteCoord(gBattleAnimAttacker, 0); - battler2Y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 28; + battler1X = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X); + battler1Y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + 28; + battler2X = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X); + battler2Y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y) + 28; } yDiff = battler2Y - battler1Y; sprite->data[0] = battler1X * 16; @@ -764,11 +766,11 @@ static void AnimDestinyBondWhiteShadow(struct Sprite *sprite) sprite->oam.priority = 2; sprite->x = battler1X; sprite->y = battler1Y; - sprite->callback = sub_80B5FE0; + sprite->callback = AnimDestinyBondWhiteShadow_Step; sprite->invisible = TRUE; } -static void sub_80B5FE0(struct Sprite *sprite) +static void AnimDestinyBondWhiteShadow_Step(struct Sprite *sprite) { if (sprite->data[4]) { @@ -798,11 +800,11 @@ void AnimTask_DestinyBondWhiteShadow(u8 taskId) task->data[8] = 0; task->data[9] = 16; task->data[10] = gBattleAnimArgs[0]; - baseX = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); + baseX = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); baseY = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_BOTTOM); if (!IsContest()) { - for (battler = 0; battler < 4; ++battler) + for (battler = 0; battler < MAX_BATTLERS_COUNT; ++battler) { if (battler != gBattleAnimAttacker && battler != (gBattleAnimAttacker ^ 2) @@ -811,7 +813,7 @@ void AnimTask_DestinyBondWhiteShadow(u8 taskId) spriteId = CreateSprite(&gDestinyBondWhiteShadowSpriteTemplate, baseX, baseY, 55); if (spriteId != MAX_SPRITES) { - x = GetBattlerSpriteCoord(battler, 2); + x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2); y = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_BOTTOM); gSprites[spriteId].data[0] = baseX << 4; gSprites[spriteId].data[1] = baseY << 4; @@ -820,7 +822,7 @@ void AnimTask_DestinyBondWhiteShadow(u8 taskId) gSprites[spriteId].data[4] = gBattleAnimArgs[1]; gSprites[spriteId].data[5] = x; gSprites[spriteId].data[6] = y; - gSprites[spriteId].callback = sub_80B5FE0; + gSprites[spriteId].callback = AnimDestinyBondWhiteShadow_Step; task->data[task->data[12] + 13] = spriteId; ++task->data[12]; } @@ -841,15 +843,15 @@ void AnimTask_DestinyBondWhiteShadow(u8 taskId) gSprites[spriteId].data[4] = gBattleAnimArgs[1]; gSprites[spriteId].data[5] = x; gSprites[spriteId].data[6] = y; - gSprites[spriteId].callback = sub_80B5FE0; + gSprites[spriteId].callback = AnimDestinyBondWhiteShadow_Step; task->data[13] = spriteId; task->data[12] = 1; } } - task->func = sub_80B623C; + task->func = AnimTask_DestinyBondWhiteShadow_Step; } -static void sub_80B623C(u8 taskId) +static void AnimTask_DestinyBondWhiteShadow_Step(u8 taskId) { u16 i; struct Task *task = &gTasks[taskId]; @@ -933,7 +935,7 @@ void AnimTask_CurseStretchingBlackBg(u8 taskId) SetGpuReg(REG_OFFSET_WINOUT, ((WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ) | (WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR))); SetGpuReg(REG_OFFSET_BLDCNT, (BLDCNT_TGT1_BG3 | BLDCNT_EFFECT_DARKEN)); - SetGpuReg(REG_OFFSET_BLDY, 0x10); + SetGpuReg(REG_OFFSET_BLDY, 16); if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER || IsContest()) startX = 40; else @@ -951,10 +953,10 @@ void AnimTask_CurseStretchingBlackBg(u8 taskId) gTasks[taskId].data[4] = bottomDistance; gTasks[taskId].data[5] = startX; gTasks[taskId].data[6] = startY; - gTasks[taskId].func = sub_80B6468; + gTasks[taskId].func = AnimTask_CurseStretchingBlackBg_Step1; } -static void sub_80B6468(u8 taskId) +static void AnimTask_CurseStretchingBlackBg_Step1(u8 taskId) { s16 step, leftDistance, rightDistance, topDistance, bottomDistance, startX, startY; u16 left, right, top, bottom, selectedPalettes; @@ -980,15 +982,15 @@ static void sub_80B6468(u8 taskId) right = 240; top = 0; bottom = 112; - selectedPalettes = SelectBattleAnimSpriteAndBgPalettes(1, 0, 0, 0, 0, 0, 0); + selectedPalettes = GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE); BeginNormalPaletteFade(selectedPalettes, 0, 16, 16, RGB(0, 0, 0)); - gTasks[taskId].func = sub_80B65F0; + gTasks[taskId].func = AnimTask_CurseStretchingBlackBg_Step2; } gBattle_WIN0H = WIN_RANGE(left, right); gBattle_WIN0V = WIN_RANGE(top, bottom); } -static void sub_80B65F0(u8 taskId) +static void AnimTask_CurseStretchingBlackBg_Step2(u8 taskId) { if (!gPaletteFade.active) { @@ -1023,10 +1025,10 @@ static void AnimCurseNail(struct Sprite *sprite) sprite->x += xDelta; sprite->data[1] = xDelta2; sprite->data[0] = 60; - sprite->callback = sub_80B66A8; + sprite->callback = AnimCurseNail_Step1; } -static void sub_80B66A8(struct Sprite *sprite) +static void AnimCurseNail_Step1(struct Sprite *sprite) { u16 var0; @@ -1047,7 +1049,7 @@ static void sub_80B66A8(struct Sprite *sprite) { sprite->data[0] = 30; sprite->callback = WaitAnimForDuration; - StoreSpriteCallbackInData6(sprite, sub_80B6728); + StoreSpriteCallbackInData6(sprite, AnimCurseNail_Step2); } else { @@ -1057,7 +1059,7 @@ static void sub_80B66A8(struct Sprite *sprite) } } -static void sub_80B6728(struct Sprite *sprite) +static void AnimCurseNail_Step2(struct Sprite *sprite) { if (sprite->data[0] == 0) { @@ -1079,12 +1081,12 @@ static void sub_80B6728(struct Sprite *sprite) if (sprite->data[2] == 16) { sprite->invisible = TRUE; - sprite->callback = sub_80B67A0; + sprite->callback = AnimCurseNail_End; } } } -static void sub_80B67A0(struct Sprite *sprite) +static void AnimCurseNail_End(struct Sprite *sprite) { SetGpuReg(REG_OFFSET_BLDCNT, 0); SetGpuReg(REG_OFFSET_BLDALPHA, 0); @@ -1125,12 +1127,12 @@ static void AnimGhostStatusSprite(struct Sprite *sprite) if (coeffB == 16 && coeffA == 0) { sprite->invisible = TRUE; - sprite->callback = sub_80B68A8; + sprite->callback = AnimGhostStatusSprite_End; } } } -static void sub_80B68A8(struct Sprite *sprite) +static void AnimGhostStatusSprite_End(struct Sprite *sprite) { SetGpuReg(REG_OFFSET_BLDCNT, 0); SetGpuReg(REG_OFFSET_BLDALPHA, 0); @@ -1143,7 +1145,7 @@ void AnimTask_GrudgeFlames(u8 taskId) task->data[0] = 0; task->data[1] = 16; - task->data[9] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); + task->data[9] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); task->data[10] = GetBattlerYCoordWithElevation(gBattleAnimAttacker); task->data[11] = (GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_WIDTH) / 2) + 8; task->data[7] = 0; @@ -1154,10 +1156,10 @@ void AnimTask_GrudgeFlames(u8 taskId) SetGpuReg(REG_OFFSET_BLDCNT, (BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL)); SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 0x10)); task->data[8] = 0; - task->func = sub_80B696C; + task->func = AnimTask_GrudgeFlames_Step; } -static void sub_80B696C(u8 taskId) +static void AnimTask_GrudgeFlames_Step(u8 taskId) { u16 i; u8 spriteId; @@ -1260,16 +1262,18 @@ static void AnimGrudgeFlame(struct Sprite *sprite) } } -void sub_80B6BBC(u8 taskId) +// Used by the ghost Marowak when it hasn't been revealed by the Silph Scope. +// Animates a shimmering copy of the attacker (the ghost) accompanied by the 'Scary Face' graphics +void AnimTask_GhostGetOut(u8 taskId) { struct Task *task = &gTasks[taskId]; task->data[15] = 0; - task->func = sub_80B6BE4; - sub_80B6BE4(taskId); + task->func = AnimTask_GhostGetOut_Step1; + task->func(taskId); } -static void sub_80B6BE4(u8 taskId) +static void AnimTask_GhostGetOut_Step1(u8 taskId) { s16 y; struct BattleAnimBgData animBgData; @@ -1365,14 +1369,14 @@ static void sub_80B6BE4(u8 taskId) SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG1_ON); else SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG2_ON); - task->func = sub_80B6F30; + task->func = AnimTask_GhostGetOut_Step2; task->data[15] = 0; break; } ++task->data[15]; } -static void sub_80B6F30(u8 taskId) +static void AnimTask_GhostGetOut_Step2(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -1386,12 +1390,12 @@ static void sub_80B6F30(u8 taskId) if (task->data[1] == 128) { task->data[15] = 0; - task->func = sub_80B6FC4; - sub_80B6FC4(taskId); + task->func = AnimTask_GhostGetOut_Step3; + task->func(taskId); } } -static void sub_80B6FC4(u8 taskId) +static void AnimTask_GhostGetOut_Step3(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -1447,7 +1451,7 @@ static void sub_80B6FC4(u8 taskId) ++task->data[15]; } -static void sub_80B7158(struct Sprite *sprite) +static void AnimMonMoveCircular(struct Sprite *sprite) { sprite->invisible = TRUE; sprite->data[5] = gBattlerSpriteIds[gBattleAnimAttacker]; @@ -1455,11 +1459,11 @@ static void sub_80B7158(struct Sprite *sprite) sprite->data[1] = 10; sprite->data[2] = gBattleAnimArgs[0]; sprite->data[3] = gBattleAnimArgs[1]; - sprite->callback = sub_80B71B0; + sprite->callback = AnimMonMoveCircular_Step; gSprites[sprite->data[5]].y += 8; } -static void sub_80B71B0(struct Sprite *sprite) +static void AnimMonMoveCircular_Step(struct Sprite *sprite) { if (sprite->data[3]) { diff --git a/src/ground.c b/src/battle_anim_ground.c similarity index 67% rename from src/ground.c rename to src/battle_anim_ground.c index 1ed06be1a..955071c22 100644 --- a/src/ground.c +++ b/src/battle_anim_ground.c @@ -9,22 +9,22 @@ static void AnimBonemerangProjectile(struct Sprite *sprite); static void AnimBoneHitProjectile(struct Sprite *sprite); static void AnimDirtScatter(struct Sprite *sprite); static void AnimMudSportDirt(struct Sprite *sprite); -static void AnimFissureDirtPlumeParticle(struct Sprite *sprite); +static void AnimDirtPlumeParticle(struct Sprite *sprite); static void AnimDigDirtMound(struct Sprite *sprite); -static void AnimBonemerangProjectileStep(struct Sprite *sprite); -static void AnimBonemerangProjectileEnd(struct Sprite *sprite); +static void AnimBonemerangProjectile_Step(struct Sprite *sprite); +static void AnimBonemerangProjectile_End(struct Sprite *sprite); static void AnimMudSportDirtRising(struct Sprite *sprite); static void AnimMudSportDirtFalling(struct Sprite *sprite); -static void sub_80B8ED4(u8 taskId); -static void sub_80B908C(u8 taskId); -static void sub_80B92B8(u8 useBg1, s16 y, s16 endY); -static void sub_80B912C(u8 taskId); -static void sub_80B91B0(u8 taskId); -static void AnimFissureDirtPlumeParticleStep(struct Sprite *sprite); -static void sub_80B9584(u8 taskId); -static void sub_80B967C(u8 taskId); -static void sub_80B9760(struct Task *task); -static void sub_80B98A8(u8 taskId); +static void AnimTask_DigBounceMovement(u8 taskId); +static void AnimTask_DigDisappear(u8 taskId); +static void SetDigScanlineEffect(u8 useBg1, s16 y, s16 endY); +static void AnimTask_DigSetVisibleUnderground(u8 taskId); +static void AnimTask_DigRiseUpFromHole(u8 taskId); +static void AnimDirtPlumeParticle_Step(struct Sprite *sprite); +static void AnimTask_ShakeTerrain(u8 taskId); +static void AnimTask_ShakeBattlers(u8 taskId); +static void SetBattlersXOffsetForShake(struct Task *task); +static void WaitForFissureCompletion(u8 taskId); static const union AffineAnimCmd sAffineAnim_Bonemerang[] = { @@ -122,7 +122,7 @@ const struct SpriteTemplate gDirtPlumeSpriteTemplate = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = AnimFissureDirtPlumeParticle, + .callback = AnimDirtPlumeParticle, }; const struct SpriteTemplate gDirtMoundSpriteTemplate = @@ -140,17 +140,17 @@ const struct SpriteTemplate gDirtMoundSpriteTemplate = // a boomerang. After hitting the target mon, it comes back to the user. static void AnimBonemerangProjectile(struct Sprite *sprite) { - sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); - sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); + sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); sprite->data[0] = 20; - sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2); - sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3); + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); sprite->data[5] = -40; InitAnimArcTranslation(sprite); - sprite->callback = AnimBonemerangProjectileStep; + sprite->callback = AnimBonemerangProjectile_Step; } -static void AnimBonemerangProjectileStep(struct Sprite *sprite) +static void AnimBonemerangProjectile_Step(struct Sprite *sprite) { if (TranslateAnimHorizontalArc(sprite)) { @@ -159,15 +159,15 @@ static void AnimBonemerangProjectileStep(struct Sprite *sprite) sprite->y2 = 0; sprite->x2 = 0; sprite->data[0] = 20; - sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); - sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); sprite->data[5] = 40; InitAnimArcTranslation(sprite); - sprite->callback = AnimBonemerangProjectileEnd; + sprite->callback = AnimBonemerangProjectile_End; } } -static void AnimBonemerangProjectileEnd(struct Sprite *sprite) +static void AnimBonemerangProjectile_End(struct Sprite *sprite) { if (TranslateAnimHorizontalArc(sprite)) DestroyAnimSprite(sprite); @@ -186,8 +186,8 @@ static void AnimBoneHitProjectile(struct Sprite *sprite) if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; sprite->data[0] = gBattleAnimArgs[4]; - sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2]; - sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3]; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2]; + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3]; sprite->callback = StartAnimLinearTranslation; StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); } @@ -204,8 +204,8 @@ static void AnimDirtScatter(struct Sprite *sprite) s16 xOffset, yOffset; InitSpritePosToAnimAttacker(sprite, 1); - targetXPos = GetBattlerSpriteCoord2(gBattleAnimTarget, 2); - targetYPos = GetBattlerSpriteCoord2(gBattleAnimTarget, 3); + targetXPos = GetBattlerSpriteCoord2(gBattleAnimTarget, BATTLER_COORD_X_2); + targetYPos = GetBattlerSpriteCoord2(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); xOffset = Random() & 0x1F; yOffset = Random() & 0x1F; if (xOffset > 16) @@ -229,8 +229,8 @@ static void AnimMudSportDirt(struct Sprite *sprite) ++sprite->oam.tileNum; if (gBattleAnimArgs[0] == 0) { - sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[1]; - sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[2]; + sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + gBattleAnimArgs[1]; + sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[2]; sprite->data[0] = gBattleAnimArgs[1] > 0 ? 1 : -1; sprite->callback = AnimMudSportDirtRising; } @@ -283,14 +283,14 @@ void AnimTask_DigDownMovement(u8 taskId) { struct Task *task = &gTasks[taskId]; - if (gBattleAnimArgs[0] == 0) - task->func = sub_80B8ED4; + if (gBattleAnimArgs[0] == FALSE) + task->func = AnimTask_DigBounceMovement; else - task->func = sub_80B908C; + task->func = AnimTask_DigDisappear; task->func(taskId); } -static void sub_80B8ED4(u8 taskId) +static void AnimTask_DigBounceMovement(u8 taskId) { u8 var0; struct Task *task = &gTasks[taskId]; @@ -319,7 +319,7 @@ static void sub_80B8ED4(u8 taskId) ++task->data[0]; break; case 1: - sub_80B92B8(task->data[11], task->data[14], task->data[15]); + SetDigScanlineEffect(task->data[11], task->data[14], task->data[15]); ++task->data[0]; break; case 2: @@ -358,7 +358,7 @@ static void sub_80B8ED4(u8 taskId) } } -static void sub_80B908C(u8 taskId) +static void AnimTask_DigDisappear(u8 taskId) { u8 spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); @@ -376,15 +376,15 @@ void AnimTask_DigUpMovement(u8 taskId) { struct Task *task = &gTasks[taskId]; - if (gBattleAnimArgs[0] == 0) - task->func = sub_80B912C; + if (gBattleAnimArgs[0] == FALSE) + task->func = AnimTask_DigSetVisibleUnderground; else - task->func = sub_80B91B0; + task->func = AnimTask_DigRiseUpFromHole; task->func(taskId); } -static void sub_80B912C(u8 taskId) +static void AnimTask_DigSetVisibleUnderground(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -394,7 +394,7 @@ static void sub_80B912C(u8 taskId) task->data[10] = GetAnimBattlerSpriteId(ANIM_ATTACKER); gSprites[task->data[10]].invisible = FALSE; gSprites[task->data[10]].x2 = 0; - gSprites[task->data[10]].y2 = 160 - gSprites[task->data[10]].y; + gSprites[task->data[10]].y2 = DISPLAY_HEIGHT - gSprites[task->data[10]].y; ++task->data[0]; break; case 1: @@ -402,7 +402,7 @@ static void sub_80B912C(u8 taskId) } } -static void sub_80B91B0(u8 taskId) +static void AnimTask_DigRiseUpFromHole(u8 taskId) { u8 var0; struct Task *task = &gTasks[taskId]; @@ -422,7 +422,7 @@ static void sub_80B91B0(u8 taskId) ++task->data[0]; break; case 1: - sub_80B92B8(task->data[11], 0, task->data[15]); + SetDigScanlineEffect(task->data[11], 0, task->data[15]); ++task->data[0]; break; case 2: @@ -443,7 +443,7 @@ static void sub_80B91B0(u8 taskId) } } -static void sub_80B92B8(u8 useBG1, s16 y, s16 endY) +static void SetDigScanlineEffect(u8 useBG1, s16 y, s16 endY) { s16 bgX; struct ScanlineEffectParams scanlineParams; @@ -485,7 +485,7 @@ static void sub_80B92B8(u8 useBG1, s16 y, s16 endY) // arg 3: target y offset // arg 4: wave amplitude // arg 5: duration -static void AnimFissureDirtPlumeParticle(struct Sprite *sprite) +static void AnimDirtPlumeParticle(struct Sprite *sprite) { s8 battler; s16 xOffset; @@ -500,17 +500,17 @@ static void AnimFissureDirtPlumeParticle(struct Sprite *sprite) xOffset *= -1; gBattleAnimArgs[2] *= -1; } - sprite->x = GetBattlerSpriteCoord(battler, 2) + xOffset; + sprite->x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2) + xOffset; sprite->y = GetBattlerYCoordWithElevation(battler) + 30; sprite->data[0] = gBattleAnimArgs[5]; sprite->data[2] = sprite->x + gBattleAnimArgs[2]; sprite->data[4] = sprite->y + gBattleAnimArgs[3]; sprite->data[5] = gBattleAnimArgs[4]; InitAnimArcTranslation(sprite); - sprite->callback = AnimFissureDirtPlumeParticleStep; + sprite->callback = AnimDirtPlumeParticle_Step; } -static void AnimFissureDirtPlumeParticleStep(struct Sprite *sprite) +static void AnimDirtPlumeParticle_Step(struct Sprite *sprite) { if (TranslateAnimHorizontalArc(sprite)) DestroyAnimSprite(sprite); @@ -530,7 +530,7 @@ static void AnimDigDirtMound(struct Sprite *sprite) battler = gBattleAnimAttacker; else battler = gBattleAnimTarget; - sprite->x = GetBattlerSpriteCoord(battler, 0) - 16 + (gBattleAnimArgs[1] * 32); + sprite->x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X) - 16 + (gBattleAnimArgs[1] * 32); sprite->y = GetBattlerYCoordWithElevation(battler) + 32; sprite->oam.tileNum += gBattleAnimArgs[1] * 8; StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); @@ -538,151 +538,178 @@ static void AnimDigDirtMound(struct Sprite *sprite) sprite->callback = WaitAnimForDuration; } +#define tState data[0] +#define tDelay data[1] +#define tTimer data[2] +#define tMaxTime data[3] +#define tbattlerSpriteIds(i) data[9 + (i)] +#define tNumBattlers data[13] // AnimTask_ShakeBattlers +#define tInitialX data[13] // AnimTask_ShakeTerrain +#define tHorizOffset data[14] +#define tInitHorizOffset data[15] + +// Shakes battler(s) or the battle terrain back and forth horizontally. Used by e.g. Earthquake, Eruption +// arg0: What to shake. 0-3 for any specific battler, MAX_BATTLERS_COUNT for all battlers, MAX_BATTLERS_COUNT + 1 for the terrain +// arg1: Shake intensity, used to calculate horizontal pixel offset (if 0, use move power instead) +// arg2: Length of time to shake for void AnimTask_HorizontalShake(u8 taskId) { u16 i; struct Task *task = &gTasks[taskId]; - if (gBattleAnimArgs[1]) - task->data[14] = task->data[15] = gBattleAnimArgs[1] + 3; + if (gBattleAnimArgs[1] != 0) + task->tHorizOffset = task->tInitHorizOffset = gBattleAnimArgs[1] + 3; else - task->data[14] = task->data[15] = (gAnimMovePower / 10) + 3; + task->tHorizOffset = task->tInitHorizOffset = (gAnimMovePower / 10) + 3; - task->data[3] = gBattleAnimArgs[2]; + task->tMaxTime = gBattleAnimArgs[2]; switch (gBattleAnimArgs[0]) { - case 5: - task->data[13] = gBattle_BG3_X; - task->func = sub_80B9584; + case MAX_BATTLERS_COUNT + 1: // Shake terrain + task->tInitialX = gBattle_BG3_X; + task->func = AnimTask_ShakeTerrain; break; - case 4: - task->data[13] = 0; - for (i = 0; i < MAX_BATTLERS_COUNT; ++i) + case MAX_BATTLERS_COUNT: // Shake all battlers + task->tNumBattlers = 0; + for (i = 0; i < MAX_BATTLERS_COUNT; i++) { if (IsBattlerSpriteVisible(i)) { - task->data[task->data[13] + 9] = gBattlerSpriteIds[i]; - ++task->data[13]; + task->tbattlerSpriteIds(task->tNumBattlers) = gBattlerSpriteIds[i]; + task->tNumBattlers++; } } - task->func = sub_80B967C; + task->func = AnimTask_ShakeBattlers; break; - default: - task->data[9] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); - if (task->data[9] == 0xFF) + default: // Shake specific battler + task->tbattlerSpriteIds(0) = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); + if (task->tbattlerSpriteIds(0) == SPRITE_NONE) { DestroyAnimVisualTask(taskId); } else { - task->data[13] = 1; - task->func = sub_80B967C; + task->tNumBattlers = 1; + task->func = AnimTask_ShakeBattlers; } - break; } } -static void sub_80B9584(u8 taskId) +static void AnimTask_ShakeTerrain(u8 taskId) { struct Task *task = &gTasks[taskId]; - switch (task->data[0]) + switch (task->tState) { case 0: - if (++task->data[1] > 1) + if (++task->tDelay > 1) { - task->data[1] = 0; - if ((task->data[2] & 1) == 0) - gBattle_BG3_X = task->data[13] + task->data[15]; + task->tDelay = 0; + if ((task->tTimer & 1) == 0) + gBattle_BG3_X = task->tInitialX + task->tInitHorizOffset; else - gBattle_BG3_X = task->data[13] - task->data[15]; + gBattle_BG3_X = task->tInitialX - task->tInitHorizOffset; - if (++task->data[2] == task->data[3]) + if (++task->tTimer == task->tMaxTime) { - task->data[2] = 0; - --task->data[14]; - ++task->data[0]; + task->tTimer = 0; + task->tHorizOffset--; + task->tState++; } } break; case 1: - if (++task->data[1] > 1) + if (++task->tDelay > 1) { - task->data[1] = 0; - if ((task->data[2] & 1) == 0) - gBattle_BG3_X = task->data[13] + task->data[14]; + task->tDelay = 0; + if ((task->tTimer & 1) == 0) + gBattle_BG3_X = task->tInitialX + task->tHorizOffset; else - gBattle_BG3_X = task->data[13] - task->data[14]; + gBattle_BG3_X = task->tInitialX - task->tHorizOffset; - if (++task->data[2] == 4) + if (++task->tTimer == 4) { - task->data[2] = 0; - if (--task->data[14] == 0) - ++task->data[0]; + task->tTimer = 0; + if (--task->tHorizOffset == 0) + task->tState++; } } break; case 2: - gBattle_BG3_X = task->data[13]; + gBattle_BG3_X = task->tInitialX; DestroyAnimVisualTask(taskId); break; } } -static void sub_80B967C(u8 taskId) +static void AnimTask_ShakeBattlers(u8 taskId) { u16 i; struct Task *task = &gTasks[taskId]; - switch (task->data[0]) + switch (task->tState) { case 0: - if (++task->data[1] > 1) + if (++task->tDelay > 1) { - task->data[1] = 0; - sub_80B9760(task); - if (++task->data[2] == task->data[3]) + task->tDelay = 0; + SetBattlersXOffsetForShake(task); + if (++task->tTimer == task->tMaxTime) { - task->data[2] = 0; - --task->data[14]; - ++task->data[0]; + task->tTimer = 0; + task->tHorizOffset--; + task->tState++; } } break; case 1: - if (++task->data[1] > 1) + if (++task->tDelay > 1) { - task->data[1] = 0; - sub_80B9760(task); - if (++task->data[2] == 4) + task->tDelay = 0; + SetBattlersXOffsetForShake(task); + if (++task->tTimer == 4) { - task->data[2] = 0; - if (--task->data[14] == 0) - ++task->data[0]; + task->tTimer = 0; + if (--task->tHorizOffset == 0) + task->tState++; } } break; case 2: - for (i = 0; i < task->data[13]; ++i) - gSprites[task->data[9 + i]].x2 = 0; + for (i = 0; i < task->tNumBattlers; i++) + gSprites[task->tbattlerSpriteIds(i)].x2 = 0; + DestroyAnimVisualTask(taskId); break; } } -static void sub_80B9760(struct Task *task) +static void SetBattlersXOffsetForShake(struct Task *task) { u16 i, xOffset; - if ((task->data[2] & 1) == 0) - xOffset = (task->data[14] / 2) + (task->data[14] & 1); + if ((task->tTimer & 1) == 0) + xOffset = (task->tHorizOffset / 2) + (task->tHorizOffset & 1); else - xOffset = -(task->data[14] / 2); - for (i = 0; i < task->data[13]; ++i) - gSprites[task->data[9 + i]].x2 = xOffset; + xOffset = -(task->tHorizOffset / 2); + + for (i = 0; i < task->tNumBattlers; i++) + { + gSprites[task->tbattlerSpriteIds(i)].x2 = xOffset; + } } +#undef tState +#undef tDelay +#undef tTimer +#undef tMaxTime +#undef tbattlerSpriteIds +#undef tNumBattlers +#undef tInitialX +#undef tHorizOffset +#undef tInitHorizOffset + void AnimTask_IsPowerOver99(u8 taskId) { gBattleAnimArgs[15] = gAnimMovePower > 99; @@ -696,19 +723,21 @@ void AnimTask_PositionFissureBgOnBattler(u8 taskId) if (gBattleAnimArgs[0] > 1) battler ^= BIT_FLANK; - newTask = &gTasks[CreateTask(sub_80B98A8, gBattleAnimArgs[1])]; - newTask->data[1] = (32 - GetBattlerSpriteCoord(battler, 2)) & 0x1FF; - newTask->data[2] = (64 - GetBattlerSpriteCoord(battler, 3)) & 0xFF; + newTask = &gTasks[CreateTask(WaitForFissureCompletion, gBattleAnimArgs[1])]; + newTask->data[1] = (32 - GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2)) & 0x1FF; + newTask->data[2] = (64 - GetBattlerSpriteCoord(battler, BATTLER_COORD_Y_PIC_OFFSET)) & 0xFF; gBattle_BG3_X = newTask->data[1]; gBattle_BG3_Y = newTask->data[2]; newTask->data[3] = gBattleAnimArgs[2]; DestroyAnimVisualTask(taskId); } -static void sub_80B98A8(u8 taskId) +static void WaitForFissureCompletion(u8 taskId) { struct Task *task = &gTasks[taskId]; + // Holds the BG3 offsets until gBattleAnimArgs[7] + // is set to a special terminator value. if (gBattleAnimArgs[7] == task->data[3]) { gBattle_BG3_X = 0; diff --git a/src/ice.c b/src/battle_anim_ice.c similarity index 91% rename from src/ice.c rename to src/battle_anim_ice.c index 8e09574a9..f70edfb83 100644 --- a/src/ice.c +++ b/src/battle_anim_ice.c @@ -9,21 +9,21 @@ struct HailStruct { - s32 unk0:10; - s32 unk1:10; - s32 unk2:8; + s32 x:10; + s32 y:10; + s32 bPosition:8; s32 unk3:4; }; -static void sub_80AF108(struct Sprite *sprite); -static void sub_80AF28C(struct Sprite *sprite); +static void AnimUnusedIceCrystalThrow(struct Sprite *sprite); +static void AnimUnusedIceCrystalThrow_Step(struct Sprite *sprite); static void AnimIcePunchSwirlingParticle(struct Sprite *sprite); static void AnimIceBeamParticle(struct Sprite *sprite); static void AnimIceEffectParticle(struct Sprite *sprite); static void AnimFlickerIceEffectParticle(struct Sprite *sprite); +static void AnimSwirlingSnowball(struct Sprite *sprite); static void AnimSwirlingSnowball_Step1(struct Sprite *sprite); static void AnimSwirlingSnowball_Step2(struct Sprite *sprite); -static void AnimSwirlingSnowball_Step3(struct Sprite *sprite); static void AnimSwirlingSnowball_End(struct Sprite *sprite); static void AnimMoveParticleBeyondTarget(struct Sprite *sprite); static void AnimWiggleParticleTowardsTarget(struct Sprite *sprite); @@ -39,25 +39,24 @@ static void InitIceBallAnim(struct Sprite *sprite); static void AnimThrowIceBall(struct Sprite *sprite); static void InitIceBallParticle(struct Sprite *sprite); static void AnimIceBallParticle(struct Sprite *sprite); -static void AnimTask_Haze2(u8 taskId); -static void AnimTask_OverlayFogTiles(u8 taskId); +static void AnimTask_HazeScrollingFog_Step(u8 taskId); +static void AnimTask_MistBallFog_Step(u8 taskId); static void AnimTask_Hail2(u8 taskId); static bool8 GenerateHailParticle(u8 hailStructId, u8 affineAnimNum, u8 taskId, u8 c); -static const union AnimCmd gUnknown_83E62C0[] = +static const union AnimCmd sAnim_Unused[] = { ANIMCMD_FRAME(0, 5, .hFlip = TRUE), ANIMCMD_FRAME(1, 5, .hFlip = TRUE), ANIMCMD_JUMP(0), }; -static const union AnimCmd *const gUnknown_83E62CC[] = +static const union AnimCmd *const sAnims_Unused[] = { - gUnknown_83E62C0, + sAnim_Unused, }; -// not used -static const struct SpriteTemplate gUnknown_83E62D0 = +static const struct SpriteTemplate sUnusedIceCrystalThrowSpriteTemplate = { .tileTag = ANIM_TAG_ICE_CRYSTALS, .paletteTag = ANIM_TAG_ICE_CRYSTALS, @@ -65,10 +64,10 @@ static const struct SpriteTemplate gUnknown_83E62D0 = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80AF108, + .callback = AnimUnusedIceCrystalThrow, }; -static const union AnimCmd gUnknown_83E62E8[] = +static const union AnimCmd sAnim_IceCrystalLargeChunk[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, @@ -105,10 +104,10 @@ static const union AnimCmd sAnim_SmallBubblePair[] = ANIMCMD_JUMP(0), }; -// unused -static const union AnimCmd *const gUnknown_83E631C[] = +// Unused, contains just the top left corner of the large ice crystal +static const union AnimCmd *const sAnims_IceCrystalLargeChunk[] = { - gUnknown_83E62E8, + sAnim_IceCrystalLargeChunk, }; static const union AnimCmd *const sAnims_IceCrystalLarge[] = @@ -245,7 +244,7 @@ const struct SpriteTemplate gSwirlingSnowballSpriteTemplate = .anims = sAnims_Snowball, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = AnimSwirlingSnowball_Step1, + .callback = AnimSwirlingSnowball, }; const struct SpriteTemplate gBlizzardIceCrystalSpriteTemplate = @@ -332,7 +331,7 @@ const struct SpriteTemplate gSmogCloudSpriteTemplate = .callback = InitSwirlingFogAnim, }; -static const u8 gUnknown_83E64D4[] = +static const u8 sHazeBlendAmounts[] = { 0, 1, 2, 2, 2, 2, 3, 4, 4, 4, 5, 6, 6, 6, 6, 7, 8, 8, 8, 9, }; @@ -348,7 +347,7 @@ const struct SpriteTemplate gMistBallSpriteTemplate = .callback = AnimThrowMistBall, }; -static const u8 gUnknown_83E6500[] = +static const u8 sMistBlendAmounts[] = { 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, }; @@ -366,16 +365,16 @@ const struct SpriteTemplate gPoisonGasCloudSpriteTemplate = static const struct HailStruct sHailCoordData[] = { - {100, 120, 0, 2}, - {85, 120, 0, 0}, - {242, 120, 1, 1}, - {66, 120, 2, 1}, - {182, 120, 3, 0}, - {60, 120, 0, 2}, - {214, 120, 1, 0}, - {113, 120, 0, 1}, - {210, 120, 3, 1}, - {38, 120, 2, 0}, + {.x = 100, .y = 120, .bPosition = B_POSITION_PLAYER_LEFT, .unk3 = 2}, + {.x = 85, .y = 120, .bPosition = B_POSITION_PLAYER_LEFT, .unk3 = 0}, + {.x = 242, .y = 120, .bPosition = B_POSITION_OPPONENT_LEFT, .unk3 = 1}, + {.x = 66, .y = 120, .bPosition = B_POSITION_PLAYER_RIGHT, .unk3 = 1}, + {.x = 182, .y = 120, .bPosition = B_POSITION_OPPONENT_RIGHT, .unk3 = 0}, + {.x = 60, .y = 120, .bPosition = B_POSITION_PLAYER_LEFT, .unk3 = 2}, + {.x = 214, .y = 120, .bPosition = B_POSITION_OPPONENT_LEFT, .unk3 = 0}, + {.x = 113, .y = 120, .bPosition = B_POSITION_PLAYER_LEFT, .unk3 = 1}, + {.x = 210, .y = 120, .bPosition = B_POSITION_OPPONENT_RIGHT, .unk3 = 1}, + {.x = 38, .y = 120, .bPosition = B_POSITION_PLAYER_RIGHT, .unk3 = 0}, }; static const union AffineAnimCmd sAffineAnim_HailParticle_0[] = @@ -518,8 +517,7 @@ const struct SpriteTemplate gIceBallImpactShardSpriteTemplate = .callback = InitIceBallParticle, }; -// not used -static void sub_80AF108(struct Sprite *sprite) +static void AnimUnusedIceCrystalThrow(struct Sprite *sprite) { s16 targetX, targetY, attackerX, attackerY; @@ -533,13 +531,15 @@ static void sub_80AF108(struct Sprite *sprite) sprite->data[2] = gBattleAnimArgs[2] + targetX; sprite->data[3] = gBattleAnimArgs[1] + attackerY; sprite->data[4] = gBattleAnimArgs[3] + targetY; - SetupLinearTranslationWithFixedDuration(sprite); + ConvertPosDataToTranslateLinearData(sprite); // won't match with while loop - for (; (targetX >= -32 && targetX <= 272) && (targetY >= -32 && targetY <= 192); targetX += sprite->data[1], targetY += sprite->data[2]) + for (; (targetX >= -32 && targetX <= DISPLAY_WIDTH + 32) && (targetY >= -32 && targetY <= DISPLAY_HEIGHT + 32); + targetX += sprite->data[1], targetY += sprite->data[2]) ; sprite->data[1] = -sprite->data[1]; sprite->data[2] = -sprite->data[2]; - for (; (attackerX >= -32 && attackerX <= 272) && (attackerY >= -32 && attackerY <= 192); attackerX += sprite->data[1], attackerY += sprite->data[2]) + for (; (attackerX >= -32 && attackerX <= DISPLAY_WIDTH + 32) && (attackerY >= -32 && attackerY <= DISPLAY_HEIGHT + 32); + attackerX += sprite->data[1], attackerY += sprite->data[2]) ; sprite->x = attackerX; sprite->y = attackerY; @@ -548,14 +548,13 @@ static void sub_80AF108(struct Sprite *sprite) sprite->data[2] = targetX; sprite->data[3] = attackerY; sprite->data[4] = targetY; - SetupLinearTranslationWithFixedDuration(sprite); + ConvertPosDataToTranslateLinearData(sprite); sprite->data[3] = gBattleAnimArgs[5]; sprite->data[4] = gBattleAnimArgs[6]; - sprite->callback = sub_80AF28C; + sprite->callback = AnimUnusedIceCrystalThrow_Step; } -// not used -static void sub_80AF28C(struct Sprite *sprite) +static void AnimUnusedIceCrystalThrow_Step(struct Sprite *sprite) { if (sprite->data[0] != 0) { @@ -584,7 +583,7 @@ static void AnimIcePunchSwirlingParticle(struct Sprite *sprite) sprite->data[3] = 30; sprite->data[4] = -512; StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); - sprite->callback = TranslateSpriteInGrowingCircleOverDuration; + sprite->callback = TranslateSpriteInGrowingCircle; sprite->callback(sprite); } @@ -645,7 +644,7 @@ static void AnimFlickerIceEffectParticle(struct Sprite *sprite) // arg 3: target y offset // arg 4: particle speed // arg 5: multiple targets? (boolean) -static void AnimSwirlingSnowball_Step1(struct Sprite *sprite) +static void AnimSwirlingSnowball(struct Sprite *sprite) { s32 i; s16 tempDataHolder[8]; @@ -676,8 +675,9 @@ static void AnimSwirlingSnowball_Step1(struct Sprite *sprite) { sprite->data[0] = 1; AnimFastTranslateLinear(sprite); - if ((u32)(sprite->x + sprite->x2 + 16) > 272 - || sprite->y + sprite->y2 > 160 + if (sprite->x + sprite->x2 > DISPLAY_WIDTH + 16 + || sprite->x + sprite->x2 < -16 + || sprite->y + sprite->y2 > DISPLAY_HEIGHT || sprite->y + sprite->y2 < -16) break; } @@ -686,11 +686,11 @@ static void AnimSwirlingSnowball_Step1(struct Sprite *sprite) sprite->x2 = sprite->y2 = 0; for (i = 0; i < 8; ++i) sprite->data[i] = tempDataHolder[i]; - sprite->callback = InitAndStartAnimFastLinearTranslationWithSpeed; - StoreSpriteCallbackInData6(sprite, AnimSwirlingSnowball_Step2); + sprite->callback = InitAnimFastLinearTranslationWithSpeedAndPos; + StoreSpriteCallbackInData6(sprite, AnimSwirlingSnowball_Step1); } -static void AnimSwirlingSnowball_Step2(struct Sprite *sprite) +static void AnimSwirlingSnowball_Step1(struct Sprite *sprite) { s16 tempVar; @@ -703,11 +703,11 @@ static void AnimSwirlingSnowball_Step2(struct Sprite *sprite) sprite->data[3] = Sin(sprite->data[0], tempVar); sprite->data[4] = Cos(sprite->data[0], 0xF); sprite->data[5] = 0; - sprite->callback = AnimSwirlingSnowball_Step3; + sprite->callback = AnimSwirlingSnowball_Step2; sprite->callback(sprite); } -static void AnimSwirlingSnowball_Step3(struct Sprite *sprite) +static void AnimSwirlingSnowball_Step2(struct Sprite *sprite) { s16 tempVar = GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER ? 20 : -20; @@ -780,8 +780,9 @@ static void AnimMoveParticleBeyondTarget(struct Sprite *sprite) { sprite->data[0] = 1; AnimFastTranslateLinear(sprite); - if ((u32)(sprite->x + sprite->x2 + 16) > 272 - || sprite->y + sprite->y2 > 160 + if (sprite->x + sprite->x2 > DISPLAY_WIDTH + 16 + || sprite->x + sprite->x2 < -16 + || sprite->y + sprite->y2 > DISPLAY_HEIGHT || sprite->y + sprite->y2 < -16) break; } @@ -806,8 +807,9 @@ static void AnimWiggleParticleTowardsTarget(struct Sprite *sprite) sprite->data[7] = (sprite->data[7] + sprite->data[6]) & 0xFF; if (sprite->data[0] == 1) { - if ((u32)(sprite->x + sprite->x2 + 16) > 272 - || sprite->y + sprite->y2 > 160 + if (sprite->x + sprite->x2 > DISPLAY_WIDTH + 16 + || sprite->x + sprite->x2 < -16 + || sprite->y + sprite->y2 > DISPLAY_HEIGHT || sprite->y + sprite->y2 < -16) DestroyAnimSprite(sprite); } @@ -927,7 +929,7 @@ static void AnimSwirlingFogAnim(struct Sprite *sprite) } // Fades mons to black and places foggy overlay in Haze. -void AnimTask_Haze1(u8 taskId) +void AnimTask_HazeScrollingFog(u8 taskId) { struct BattleAnimBgData animBg; @@ -947,10 +949,10 @@ void AnimTask_Haze1(u8 taskId) LoadPalette(&gDefaultWeatherSpritePalette, animBg.paletteId * 16, 32); if (IsContest()) RelocateBattleBgPal(animBg.paletteId, animBg.bgTilemap, 0, 0); - gTasks[taskId].func = AnimTask_Haze2; + gTasks[taskId].func = AnimTask_HazeScrollingFog_Step; } -static void AnimTask_Haze2(u8 taskId) +static void AnimTask_HazeScrollingFog_Step(u8 taskId) { struct BattleAnimBgData animBg; @@ -962,7 +964,7 @@ static void AnimTask_Haze2(u8 taskId) { gTasks[taskId].data[10] = 0; ++gTasks[taskId].data[9]; - gTasks[taskId].data[11] = gUnknown_83E64D4[gTasks[taskId].data[9]]; + gTasks[taskId].data[11] = sHazeBlendAmounts[gTasks[taskId].data[9]]; SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[11], 16 - gTasks[taskId].data[11])); if (gTasks[taskId].data[11] == 9) { @@ -1024,8 +1026,7 @@ static void AnimThrowMistBall(struct Sprite *sprite) sprite->callback = TranslateAnimSpriteToTargetMonLocation; } -// Displays misty background in Mist Ball. -void AnimTask_LoadMistTiles(u8 taskId) +void AnimTask_MistBallFog(u8 taskId) { struct BattleAnimBgData animBg; @@ -1046,10 +1047,10 @@ void AnimTask_LoadMistTiles(u8 taskId) if (IsContest()) RelocateBattleBgPal(animBg.paletteId, animBg.bgTilemap, 0, 0); gTasks[taskId].data[15] = -1; - gTasks[taskId].func = AnimTask_OverlayFogTiles; + gTasks[taskId].func = AnimTask_MistBallFog_Step; } -static void AnimTask_OverlayFogTiles(u8 taskId) +static void AnimTask_MistBallFog_Step(u8 taskId) { struct BattleAnimBgData animBg; @@ -1058,7 +1059,7 @@ static void AnimTask_OverlayFogTiles(u8 taskId) { case 0: gTasks[taskId].data[9] += 1; - gTasks[taskId].data[11] = gUnknown_83E6500[gTasks[taskId].data[9]]; + gTasks[taskId].data[11] = sMistBlendAmounts[gTasks[taskId].data[9]]; SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[11], 17 - gTasks[taskId].data[11])); if (gTasks[taskId].data[11] == 5) { @@ -1230,7 +1231,7 @@ static void MovePoisonGasCloud(struct Sprite *sprite) sprite->data[2] = -0x10; ++sprite->data[7]; sprite->x2 = sprite->y2 = 0; - BattleAnim_InitLinearTranslationWithDuration(sprite); + InitAnimLinearTranslationWithSpeed(sprite); } break; case 2: @@ -1249,7 +1250,7 @@ static void MovePoisonGasCloud(struct Sprite *sprite) } // Creates Hail. -void AnimTask_Hail1(u8 taskId) +void AnimTask_Hail(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -1310,7 +1311,7 @@ static bool8 GenerateHailParticle(u8 hailStructId, u8 affineAnimNum, u8 taskId, if (unk != 2) { - id = GetBattlerAtPosition(sHailCoordData[hailStructId].unk2); + id = GetBattlerAtPosition(sHailCoordData[hailStructId].bPosition); if (IsBattlerSpriteVisible(id)) { possibleBool = TRUE; @@ -1330,14 +1331,14 @@ static bool8 GenerateHailParticle(u8 hailStructId, u8 affineAnimNum, u8 taskId, } else { - battlerX = (sHailCoordData[hailStructId].unk0); - battlerY = (sHailCoordData[hailStructId].unk1); + battlerX = sHailCoordData[hailStructId].x; + battlerY = sHailCoordData[hailStructId].y; } } else { - battlerX = (sHailCoordData[hailStructId].unk0); - battlerY = (sHailCoordData[hailStructId].unk1); + battlerX = sHailCoordData[hailStructId].x; + battlerY = sHailCoordData[hailStructId].y; } spriteX = battlerX - ((battlerY + 8) / 2); id = CreateSprite(&sHailParticleSpriteTemplate, spriteX, -8, 18); diff --git a/src/battle_anim_mon_movement.c b/src/battle_anim_mon_movement.c index 2ee4697ac..a51408016 100644 --- a/src/battle_anim_mon_movement.c +++ b/src/battle_anim_mon_movement.c @@ -7,27 +7,27 @@ #undef abs #define abs(x) ((x) < 0 ? -(x) : (x)) -static void AnimTask_ShakeMonStep(u8 taskId); +static void AnimTask_ShakeMon_Step(u8 taskId); static void AnimTask_ShakeMon2Step(u8 taskId); -static void AnimTask_ShakeMonInPlaceStep(u8 taskId); -static void AnimTask_ShakeAndSinkMonStep(u8 taskId); -static void AnimTask_TranslateMonEllipticalStep(u8 taskId); +static void AnimTask_ShakeMonInPlace_Step(u8 taskId); +static void AnimTask_ShakeAndSinkMon_Step(u8 taskId); +static void AnimTask_TranslateMonElliptical_Step(u8 taskId); static void DoHorizontalLunge(struct Sprite *sprite); static void ReverseHorizontalLungeDirection(struct Sprite *sprite); static void DoVerticalDip(struct Sprite *sprite); static void ReverseVerticalDipDirection(struct Sprite *sprite); static void SlideMonToOriginalPos(struct Sprite *sprite); -static void SlideMonToOriginalPosStep(struct Sprite *sprite); +static void SlideMonToOriginalPos_Step(struct Sprite *sprite); static void SlideMonToOffset(struct Sprite *sprite); -static void sub_8099394(struct Sprite *sprite); -static void sub_809946C(struct Sprite *sprite); -static void AnimTask_WindUpLungePart1(u8 taskId); -static void AnimTask_WindUpLungePart2(u8 taskId); -static void sub_80996B8(u8 taskId); -static void AnimTask_SwayMonStep(u8 taskId); -static void AnimTask_ScaleMonAndRestoreStep(u8 taskId); -static void sub_8099B54(u8 taskId); -static void sub_8099CB8(u8 taskId); +static void SlideMonToOffsetAndBack(struct Sprite *sprite); +static void SlideMonToOffsetAndBack_End(struct Sprite *sprite); +static void AnimTask_WindUpLunge_Step1(u8 taskId); +static void AnimTask_WindUpLunge_Step2(u8 taskId); +static void AnimTask_SlideOffScreen_Step(u8 taskId); +static void AnimTask_SwayMon_Step(u8 taskId); +static void AnimTask_ScaleMonAndRestore_Step(u8 taskId); +static void AnimTask_RotateMonSpriteToSide_Step(u8 taskId); +static void AnimTask_ShakeTargetBasedOnMovePowerOrDmg_Step(u8 taskId); const struct SpriteTemplate gHorizontalLungeSpriteTemplate = { @@ -81,7 +81,7 @@ const struct SpriteTemplate gSlideMonToOffsetAndBackSpriteTemplate = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8099394, + .callback = SlideMonToOffsetAndBack, }; // Task to facilitate simple shaking of a pokemon's picture in battle. @@ -95,24 +95,24 @@ void AnimTask_ShakeMon(u8 taskId) { u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); - if (spriteId == 0xFF) - DestroyAnimVisualTask(taskId); - else + if (spriteId == SPRITE_NONE) { - gSprites[spriteId].x2 = gBattleAnimArgs[1]; - gSprites[spriteId].y2 = gBattleAnimArgs[2]; - gTasks[taskId].data[0] = spriteId; - gTasks[taskId].data[1] = gBattleAnimArgs[3]; - gTasks[taskId].data[2] = gBattleAnimArgs[4]; - gTasks[taskId].data[3] = gBattleAnimArgs[4]; - gTasks[taskId].data[4] = gBattleAnimArgs[1]; - gTasks[taskId].data[5] = gBattleAnimArgs[2]; - gTasks[taskId].func = AnimTask_ShakeMonStep; - gTasks[taskId].func(taskId); + DestroyAnimVisualTask(taskId); + return; } + gSprites[spriteId].x2 = gBattleAnimArgs[1]; + gSprites[spriteId].y2 = gBattleAnimArgs[2]; + gTasks[taskId].data[0] = spriteId; + gTasks[taskId].data[1] = gBattleAnimArgs[3]; + gTasks[taskId].data[2] = gBattleAnimArgs[4]; + gTasks[taskId].data[3] = gBattleAnimArgs[4]; + gTasks[taskId].data[4] = gBattleAnimArgs[1]; + gTasks[taskId].data[5] = gBattleAnimArgs[2]; + gTasks[taskId].func = AnimTask_ShakeMon_Step; + gTasks[taskId].func(taskId); } -static void AnimTask_ShakeMonStep(u8 taskId) +static void AnimTask_ShakeMon_Step(u8 taskId) { if (gTasks[taskId].data[3] == 0) { @@ -152,7 +152,7 @@ void AnimTask_ShakeMon2(u8 taskId) if (gBattleAnimArgs[0] < MAX_BATTLERS_COUNT) { spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); - if (spriteId == 0xFF) + if (spriteId == SPRITE_NONE) abort = TRUE; } else if (gBattleAnimArgs[0] != 8) @@ -178,21 +178,23 @@ void AnimTask_ShakeMon2(u8 taskId) } else spriteId = gBattlerSpriteIds[gBattleAnimAttacker]; + if (abort) - DestroyAnimVisualTask(taskId); - else { - gSprites[spriteId].x2 = gBattleAnimArgs[1]; - gSprites[spriteId].y2 = gBattleAnimArgs[2]; - gTasks[taskId].data[0] = spriteId; - gTasks[taskId].data[1] = gBattleAnimArgs[3]; - gTasks[taskId].data[2] = gBattleAnimArgs[4]; - gTasks[taskId].data[3] = gBattleAnimArgs[4]; - gTasks[taskId].data[4] = gBattleAnimArgs[1]; - gTasks[taskId].data[5] = gBattleAnimArgs[2]; - gTasks[taskId].func = AnimTask_ShakeMon2Step; - gTasks[taskId].func(taskId); + DestroyAnimVisualTask(taskId); + return; } + + gSprites[spriteId].x2 = gBattleAnimArgs[1]; + gSprites[spriteId].y2 = gBattleAnimArgs[2]; + gTasks[taskId].data[0] = spriteId; + gTasks[taskId].data[1] = gBattleAnimArgs[3]; + gTasks[taskId].data[2] = gBattleAnimArgs[4]; + gTasks[taskId].data[3] = gBattleAnimArgs[4]; + gTasks[taskId].data[4] = gBattleAnimArgs[1]; + gTasks[taskId].data[5] = gBattleAnimArgs[2]; + gTasks[taskId].func = AnimTask_ShakeMon2Step; + gTasks[taskId].func(taskId); } static void AnimTask_ShakeMon2Step(u8 taskId) @@ -231,25 +233,25 @@ void AnimTask_ShakeMonInPlace(u8 taskId) { u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); - if (spriteId == 0xFF) - DestroyAnimVisualTask(taskId); - else + if (spriteId == SPRITE_NONE) { - gSprites[spriteId].x2 += gBattleAnimArgs[1]; - gSprites[spriteId].y2 += gBattleAnimArgs[2]; - gTasks[taskId].data[0] = spriteId; - gTasks[taskId].data[1] = 0; - gTasks[taskId].data[2] = gBattleAnimArgs[3]; - gTasks[taskId].data[3] = 0; - gTasks[taskId].data[4] = gBattleAnimArgs[4]; - gTasks[taskId].data[5] = gBattleAnimArgs[1] * 2; - gTasks[taskId].data[6] = gBattleAnimArgs[2] * 2; - gTasks[taskId].func = AnimTask_ShakeMonInPlaceStep; - gTasks[taskId].func(taskId); + DestroyAnimVisualTask(taskId); + return; } + gSprites[spriteId].x2 += gBattleAnimArgs[1]; + gSprites[spriteId].y2 += gBattleAnimArgs[2]; + gTasks[taskId].data[0] = spriteId; + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[2] = gBattleAnimArgs[3]; + gTasks[taskId].data[3] = 0; + gTasks[taskId].data[4] = gBattleAnimArgs[4]; + gTasks[taskId].data[5] = gBattleAnimArgs[1] * 2; + gTasks[taskId].data[6] = gBattleAnimArgs[2] * 2; + gTasks[taskId].func = AnimTask_ShakeMonInPlace_Step; + gTasks[taskId].func(taskId); } -static void AnimTask_ShakeMonInPlaceStep(u8 taskId) +static void AnimTask_ShakeMonInPlace_Step(u8 taskId) { if (gTasks[taskId].data[3] == 0) { @@ -299,22 +301,22 @@ void AnimTask_ShakeAndSinkMon(u8 taskId) gTasks[taskId].data[2] = gBattleAnimArgs[2]; gTasks[taskId].data[3] = gBattleAnimArgs[3]; gTasks[taskId].data[4] = gBattleAnimArgs[4]; - gTasks[taskId].func = AnimTask_ShakeAndSinkMonStep; + gTasks[taskId].func = AnimTask_ShakeAndSinkMon_Step; gTasks[taskId].func(taskId); } -static void AnimTask_ShakeAndSinkMonStep(u8 taskId) +static void AnimTask_ShakeAndSinkMon_Step(u8 taskId) { u8 spriteId = gTasks[taskId].data[0]; - s16 data1 = gTasks[taskId].data[1]; + s16 x = gTasks[taskId].data[1]; if (gTasks[taskId].data[2] == gTasks[taskId].data[8]++) { gTasks[taskId].data[8] = 0; - if (gSprites[spriteId].x2 == data1) - data1 = -data1; - gSprites[spriteId].x2 += data1; + if (gSprites[spriteId].x2 == x) + x = -x; + gSprites[spriteId].x2 += x; } - gTasks[taskId].data[1] = data1; + gTasks[taskId].data[1] = x; gTasks[taskId].data[9] += gTasks[taskId].data[3]; gSprites[spriteId].y2 = gTasks[taskId].data[9] >> 8; if (--gTasks[taskId].data[4] == 0) @@ -342,11 +344,11 @@ void AnimTask_TranslateMonElliptical(u8 taskId) gTasks[taskId].data[2] = gBattleAnimArgs[2]; gTasks[taskId].data[3] = gBattleAnimArgs[3]; gTasks[taskId].data[4] = wavePeriod; - gTasks[taskId].func = AnimTask_TranslateMonEllipticalStep; + gTasks[taskId].func = AnimTask_TranslateMonElliptical_Step; gTasks[taskId].func(taskId); } -static void AnimTask_TranslateMonEllipticalStep(u8 taskId) +static void AnimTask_TranslateMonElliptical_Step(u8 taskId) { u8 spriteId = gTasks[taskId].data[0]; gSprites[spriteId].x2 = Sin(gTasks[taskId].data[5], gTasks[taskId].data[1]); @@ -395,14 +397,14 @@ static void DoHorizontalLunge(struct Sprite *sprite) sprite->data[3] = gBattlerSpriteIds[gBattleAnimAttacker]; sprite->data[4] = gBattleAnimArgs[0]; StoreSpriteCallbackInData6(sprite, ReverseHorizontalLungeDirection); - sprite->callback = TranslateMonSpriteLinear; + sprite->callback = TranslateSpriteLinearById; } static void ReverseHorizontalLungeDirection(struct Sprite *sprite) { sprite->data[0] = sprite->data[4]; sprite->data[1] = -sprite->data[1]; - sprite->callback = TranslateMonSpriteLinear; + sprite->callback = TranslateSpriteLinearById; StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); } @@ -422,14 +424,14 @@ static void DoVerticalDip(struct Sprite *sprite) sprite->data[3] = spriteId; sprite->data[4] = gBattleAnimArgs[0]; StoreSpriteCallbackInData6(sprite, ReverseVerticalDipDirection); - sprite->callback = TranslateMonSpriteLinear; + sprite->callback = TranslateSpriteLinearById; } static void ReverseVerticalDipDirection(struct Sprite *sprite) { sprite->data[0] = sprite->data[4]; sprite->data[2] = -sprite->data[2]; - sprite->callback = TranslateMonSpriteLinear; + sprite->callback = TranslateSpriteLinearById; StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); } @@ -462,19 +464,19 @@ static void SlideMonToOriginalPos(struct Sprite *sprite) sprite->data[1] = 0; sprite->data[7] = gBattleAnimArgs[1]; sprite->data[7] |= spriteId << 8; - sprite->callback = SlideMonToOriginalPosStep; + sprite->callback = SlideMonToOriginalPos_Step; } -static void SlideMonToOriginalPosStep(struct Sprite *sprite) +static void SlideMonToOriginalPos_Step(struct Sprite *sprite) { u8 data7 = sprite->data[7]; - struct Sprite *otherSprite = &gSprites[sprite->data[7] >> 8]; + struct Sprite *monSprite = &gSprites[sprite->data[7] >> 8]; if (sprite->data[0] == 0) { if (data7 == 1 || data7 == 0) - otherSprite->x2 = 0; + monSprite->x2 = 0; if (data7 == 2 || data7 == 0) - otherSprite->y2 = 0; + monSprite->y2 = 0; DestroyAnimSprite(sprite); } else @@ -482,8 +484,8 @@ static void SlideMonToOriginalPosStep(struct Sprite *sprite) sprite->data[0]--; sprite->data[3] += sprite->data[1]; sprite->data[4] += sprite->data[2]; - otherSprite->x2 = (sprite->data[3] >> 8) + sprite->data[5]; - otherSprite->y2 = (sprite->data[4] >> 8) + sprite->data[6]; + monSprite->x2 = (sprite->data[3] >> 8) + sprite->data[5]; + monSprite->y2 = (sprite->data[4] >> 8) + sprite->data[6]; } } @@ -498,12 +500,12 @@ static void SlideMonToOriginalPosStep(struct Sprite *sprite) static void SlideMonToOffset(struct Sprite *sprite) { u8 battlerId; - u8 spriteId; + u8 monSpriteId; if (gBattleAnimArgs[0] == 0) battlerId = gBattleAnimAttacker; else battlerId = gBattleAnimTarget; - spriteId = gBattlerSpriteIds[battlerId]; + monSpriteId = gBattlerSpriteIds[battlerId]; if (GetBattlerSide(battlerId) != B_SIDE_PLAYER) { gBattleAnimArgs[1] = -gBattleAnimArgs[1]; @@ -511,25 +513,25 @@ static void SlideMonToOffset(struct Sprite *sprite) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; } sprite->data[0] = gBattleAnimArgs[4]; - sprite->data[1] = gSprites[spriteId].x; - sprite->data[2] = gSprites[spriteId].x + gBattleAnimArgs[1]; - sprite->data[3] = gSprites[spriteId].y; - sprite->data[4] = gSprites[spriteId].y + gBattleAnimArgs[2]; + sprite->data[1] = gSprites[monSpriteId].x; + sprite->data[2] = gSprites[monSpriteId].x + gBattleAnimArgs[1]; + sprite->data[3] = gSprites[monSpriteId].y; + sprite->data[4] = gSprites[monSpriteId].y + gBattleAnimArgs[2]; InitSpriteDataForLinearTranslation(sprite); sprite->data[3] = 0; sprite->data[4] = 0; - sprite->data[5] = spriteId; + sprite->data[5] = monSpriteId; sprite->invisible = TRUE; StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); - sprite->callback = TranslateMonSpriteLinearFixedPoint; + sprite->callback = TranslateSpriteLinearByIdFixedPoint; } -static void sub_8099394(struct Sprite *sprite) +static void SlideMonToOffsetAndBack(struct Sprite *sprite) { u8 battlerId; u8 spriteId; sprite->invisible = TRUE; - if (gBattleAnimArgs[0] == 0) + if (gBattleAnimArgs[0] == ANIM_ATTACKER) battlerId = gBattleAnimAttacker; else battlerId = gBattleAnimTarget; @@ -553,11 +555,11 @@ static void sub_8099394(struct Sprite *sprite) if (gBattleAnimArgs[5] == 0) StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); else - StoreSpriteCallbackInData6(sprite, sub_809946C); - sprite->callback = TranslateMonSpriteLinearFixedPoint; + StoreSpriteCallbackInData6(sprite, SlideMonToOffsetAndBack_End); + sprite->callback = TranslateSpriteLinearByIdFixedPoint; } -static void sub_809946C(struct Sprite *sprite) +static void SlideMonToOffsetAndBack_End(struct Sprite *sprite) { gSprites[sprite->data[5]].x2 = 0; gSprites[sprite->data[5]].y2 = 0; @@ -590,10 +592,10 @@ void AnimTask_WindUpLunge(u8 taskId) gTasks[taskId].data[5] = gBattleAnimArgs[5] * 256 / gBattleAnimArgs[6]; gTasks[taskId].data[6] = gBattleAnimArgs[6]; gTasks[taskId].data[7] = wavePeriod; - gTasks[taskId].func = AnimTask_WindUpLungePart1; + gTasks[taskId].func = AnimTask_WindUpLunge_Step1; } -static void AnimTask_WindUpLungePart1(u8 taskId) +static void AnimTask_WindUpLunge_Step1(u8 taskId) { u8 spriteId = gTasks[taskId].data[0]; gTasks[taskId].data[11] += gTasks[taskId].data[1]; @@ -601,10 +603,10 @@ static void AnimTask_WindUpLungePart1(u8 taskId) gSprites[spriteId].y2 = Sin((u8)(gTasks[taskId].data[10] >> 8), gTasks[taskId].data[2]); gTasks[taskId].data[10] += gTasks[taskId].data[7]; if (--gTasks[taskId].data[3] == 0) - gTasks[taskId].func = AnimTask_WindUpLungePart2; + gTasks[taskId].func = AnimTask_WindUpLunge_Step2; } -static void AnimTask_WindUpLungePart2(u8 taskId) +static void AnimTask_WindUpLunge_Step2(u8 taskId) { u8 spriteId; @@ -620,17 +622,18 @@ static void AnimTask_WindUpLungePart2(u8 taskId) } } +// To move a mon off-screen when pushed out by Roar/Whirlwind void AnimTask_SlideOffScreen(u8 taskId) { u8 spriteId; switch (gBattleAnimArgs[0]) { - case 0: - case 1: + case ANIM_ATTACKER: + case ANIM_TARGET: spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); break; - case 2: + case ANIM_ATK_PARTNER: if (!IsBattlerSpriteVisible(gBattleAnimAttacker ^ BIT_FLANK)) { DestroyAnimVisualTask(taskId); @@ -638,7 +641,7 @@ void AnimTask_SlideOffScreen(u8 taskId) } spriteId = gBattlerSpriteIds[gBattleAnimAttacker ^ BIT_FLANK]; break; - case 3: + case ANIM_DEF_PARTNER: if (!IsBattlerSpriteVisible(gBattleAnimTarget ^ BIT_FLANK)) { DestroyAnimVisualTask(taskId); @@ -655,14 +658,14 @@ void AnimTask_SlideOffScreen(u8 taskId) gTasks[taskId].data[1] = gBattleAnimArgs[1]; else gTasks[taskId].data[1] = -gBattleAnimArgs[1]; - gTasks[taskId].func = sub_80996B8; + gTasks[taskId].func = AnimTask_SlideOffScreen_Step; } -static void sub_80996B8(u8 taskId) +static void AnimTask_SlideOffScreen_Step(u8 taskId) { u8 spriteId = gTasks[taskId].data[0]; gSprites[spriteId].x2 += gTasks[taskId].data[1]; - if (gSprites[spriteId].x2 + gSprites[spriteId].x < -0x20 || gSprites[spriteId].x2 + gSprites[spriteId].x > 0x110) + if (gSprites[spriteId].x2 + gSprites[spriteId].x < -32 || gSprites[spriteId].x2 + gSprites[spriteId].x > DISPLAY_WIDTH + 32) DestroyAnimVisualTask(taskId); } @@ -690,10 +693,10 @@ void AnimTask_SwayMon(u8 taskId) else gTasks[taskId].data[5] = gBattleAnimTarget; gTasks[taskId].data[12] = 1; - gTasks[taskId].func = AnimTask_SwayMonStep; + gTasks[taskId].func = AnimTask_SwayMon_Step; } -static void AnimTask_SwayMonStep(u8 taskId) +static void AnimTask_SwayMon_Step(u8 taskId) { u8 spriteId; u32 waveIndex; @@ -745,10 +748,10 @@ void AnimTask_ScaleMonAndRestore(u8 taskId) gTasks[taskId].data[4] = spriteId; gTasks[taskId].data[10] = 0x100; gTasks[taskId].data[11] = 0x100; - gTasks[taskId].func = AnimTask_ScaleMonAndRestoreStep; + gTasks[taskId].func = AnimTask_ScaleMonAndRestore_Step; } -static void AnimTask_ScaleMonAndRestoreStep(u8 taskId) +static void AnimTask_ScaleMonAndRestore_Step(u8 taskId) { u8 spriteId; gTasks[taskId].data[10] += gTasks[taskId].data[0]; @@ -789,7 +792,7 @@ void AnimTask_RotateMonSpriteToSide(u8 taskId) gTasks[taskId].data[7] = 1; else { - if (gBattleAnimArgs[2] == 0) + if (gBattleAnimArgs[2] == ANIM_ATTACKER) gTasks[taskId].data[7] = GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER ? 1 : 0; else gTasks[taskId].data[7] = GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER ? 1 : 0; @@ -802,16 +805,17 @@ void AnimTask_RotateMonSpriteToSide(u8 taskId) tmp = gTasks[taskId].data[4]; gTasks[taskId].data[4] = -tmp; } - gTasks[taskId].func = sub_8099B54; + gTasks[taskId].func = AnimTask_RotateMonSpriteToSide_Step; } +// Rotates mon to side and back to original position. For Peck and when a held item activates void AnimTask_RotateMonToSideAndRestore(u8 taskId) { u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[2]); PrepareBattlerSpriteForRotScale(spriteId, 0); gTasks[taskId].data[1] = 0; gTasks[taskId].data[2] = gBattleAnimArgs[0]; - if (gBattleAnimArgs[2] == 0) + if (gBattleAnimArgs[2] == ANIM_ATTACKER) { if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) gBattleAnimArgs[1] = -gBattleAnimArgs[1]; @@ -831,16 +835,15 @@ void AnimTask_RotateMonToSideAndRestore(u8 taskId) gTasks[taskId].data[7] = 1; if (gTasks[taskId].data[7] ) { - s16 tmp; - tmp = gTasks[taskId].data[3]; + s16 tmp = gTasks[taskId].data[3]; gTasks[taskId].data[3] = -tmp; tmp = gTasks[taskId].data[4]; gTasks[taskId].data[4] = -tmp; } - gTasks[taskId].func = sub_8099B54; + gTasks[taskId].func = AnimTask_RotateMonSpriteToSide_Step; } -static void sub_8099B54(u8 taskId) +static void AnimTask_RotateMonSpriteToSide_Step(u8 taskId) { gTasks[taskId].data[3] += gTasks[taskId].data[4]; SetSpriteRotScale(gTasks[taskId].data[5], 0x100, 0x100, gTasks[taskId].data[3]); @@ -895,10 +898,10 @@ void AnimTask_ShakeTargetBasedOnMovePowerOrDmg(u8 taskId) gTasks[taskId].data[0] = 0; gTasks[taskId].data[1] = gBattleAnimArgs[1]; gTasks[taskId].data[2] = gBattleAnimArgs[2]; - gTasks[taskId].func = sub_8099CB8; + gTasks[taskId].func = AnimTask_ShakeTargetBasedOnMovePowerOrDmg_Step; } -static void sub_8099CB8(u8 taskId) +static void AnimTask_ShakeTargetBasedOnMovePowerOrDmg_Step(u8 taskId) { struct Task *task = &gTasks[taskId]; if (++task->data[0] > task->data[1]) diff --git a/src/battle_anim_mons.c b/src/battle_anim_mons.c index 81536395c..0060a881b 100644 --- a/src/battle_anim_mons.c +++ b/src/battle_anim_mons.c @@ -12,31 +12,31 @@ #define IS_DOUBLE_BATTLE() (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) static u8 GetBattlerSpriteFinal_Y(u8 battlerId, u16 species, bool8 a3); -static void PlayerThrowBall_RunLinearTranslation_ThenceSetCBtoStoredInData6(struct Sprite *sprite); -static void SpriteCB_RunAnimFastLinearTranslation(struct Sprite *sprite); -static bool8 Dummy_ReturnFalse(void); +static void PlayerThrowBall_AnimTranslateLinear_WithFollowup(struct Sprite *sprite); +static void AnimFastTranslateLinearWaitEnd(struct Sprite *sprite); +static bool8 ShouldRotScaleSpeciesBeFlipped(void); static void AnimThrowProjectile_Step(struct Sprite *sprite); static void AnimTask_AlphaFadeIn_Step(u8 taskId); static void AnimTask_BlendMonInAndOutSetup(struct Task *task); -static void AnimTask_BlendMonInAndOutStep(u8 taskId); +static void AnimTask_BlendMonInAndOut_Step(u8 taskId); static u16 GetBattlerYDeltaFromSpriteId(u8 spriteId); static void AnimTask_AttackerPunchWithTrace_Step(u8 taskId); -static void PunchAnim_CreateTraceSprite(struct Task *task, u8 taskId); -static void SpriteCB_PunchTrace(struct Sprite *sprite); -static void SpriteCB_WeatherBallUp_Step(struct Sprite *sprite); +static void CreateBattlerTrace(struct Task *task, u8 taskId); +static void AnimBattlerTrace(struct Sprite *sprite); +static void AnimWeatherBallUp_Step(struct Sprite *sprite); static EWRAM_DATA union AffineAnimCmd *sAnimTaskAffineAnim = NULL; -UNUSED static EWRAM_DATA u32 gUnknown_2037F2C = 0; // not used +static EWRAM_DATA u32 sUnused = 0; -static const struct UCoords8 sBattlerCoords[][4] = +static const struct UCoords8 sBattlerCoords[][MAX_BATTLERS_COUNT] = { - { + { // Single battle { 72, 80 }, { 176, 40 }, { 48, 40 }, { 112, 80 }, }, - { + { // Double battle { 32, 80 }, { 200, 40 }, { 90, 88 }, @@ -45,36 +45,40 @@ static const struct UCoords8 sBattlerCoords[][4] = }; // One entry for each of the four Castform forms. -const struct MonCoords gCastformFrontSpriteCoords[] = +const struct MonCoords gCastformFrontSpriteCoords[NUM_CASTFORM_FORMS] = { - { .size = 0x44, .y_offset = 17 }, // NORMAL - { .size = 0x66, .y_offset = 9 }, // SUN - { .size = 0x46, .y_offset = 9 }, // RAIN - { .size = 0x86, .y_offset = 8 }, // HAIL + [CASTFORM_NORMAL] = { .size = MON_COORDS_SIZE(32, 32), .y_offset = 17 }, + [CASTFORM_FIRE] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, + [CASTFORM_WATER] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 9 }, + [CASTFORM_ICE] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, }; -static const u8 sCastformElevations[] = +static const u8 sCastformElevations[NUM_CASTFORM_FORMS] = { - 13, // NORMAL - 14, // SUN - 13, // RAIN - 13, // HAIL + [CASTFORM_NORMAL] = 13, + [CASTFORM_FIRE] = 14, + [CASTFORM_WATER] = 13, + [CASTFORM_ICE] = 13, }; // Y position of the backsprite for each of the four Castform forms. -static const u8 sCastformBackSpriteYCoords[] = +static const u8 sCastformBackSpriteYCoords[NUM_CASTFORM_FORMS] = { - 0, // NORMAL - 0, // SUN - 0, // RAIN - 0, // HAIL + [CASTFORM_NORMAL] = 0, + [CASTFORM_FIRE] = 0, + [CASTFORM_WATER] = 0, + [CASTFORM_ICE] = 0, }; -static const struct SpriteTemplate sSpriteTemplates_AdditionalForAnim[] = +// Placeholders for pokemon sprites to be created for a move animation effect (e.g. Role Play / Snatch) +#define TAG_MOVE_EFFECT_MON_1 55125 +#define TAG_MOVE_EFFECT_MON_2 55126 + +static const struct SpriteTemplate sSpriteTemplates_MoveEffectMons[] = { { - .tileTag = 55125, - .paletteTag = 55125, + .tileTag = TAG_MOVE_EFFECT_MON_1, + .paletteTag = TAG_MOVE_EFFECT_MON_1, .oam = &gOamData_AffineNormal_ObjNormal_64x64, .anims = gDummySpriteAnimTable, .images = NULL, @@ -82,8 +86,8 @@ static const struct SpriteTemplate sSpriteTemplates_AdditionalForAnim[] = .callback = SpriteCallbackDummy, }, { - .tileTag = 55126, - .paletteTag = 55126, + .tileTag = TAG_MOVE_EFFECT_MON_2, + .paletteTag = TAG_MOVE_EFFECT_MON_2, .oam = &gOamData_AffineNormal_ObjNormal_64x64, .anims = gDummySpriteAnimTable, .images = NULL, @@ -92,10 +96,10 @@ static const struct SpriteTemplate sSpriteTemplates_AdditionalForAnim[] = } }; -static const struct SpriteSheet sMoveAnimAdtlSprSheets[] = +static const struct SpriteSheet sSpriteSheets_MoveEffectMons[] = { - { gMiscBlank_Gfx, 0x800, 55125 }, - { gMiscBlank_Gfx, 0x800, 55126 }, // unused + { gMiscBlank_Gfx, MON_PIC_SIZE, TAG_MOVE_EFFECT_MON_1 }, + { gMiscBlank_Gfx, MON_PIC_SIZE, TAG_MOVE_EFFECT_MON_2 }, }; u8 GetBattlerSpriteCoord(u8 battlerId, u8 coordType) @@ -245,8 +249,8 @@ static u8 GetBattlerSpriteFinal_Y(u8 battlerId, u16 species, bool8 a3) { if (GetBattlerSide(battlerId) == B_SIDE_PLAYER) y += 8; - if (y > 104) - y = 104; + if (y > DISPLAY_HEIGHT - MON_PIC_HEIGHT + 8) + y = DISPLAY_HEIGHT - MON_PIC_HEIGHT + 8; } return y; } @@ -339,7 +343,7 @@ u8 GetAnimBattlerSpriteId(u8 animBattler) } else { - return 0xFF; + return SPRITE_NONE; } } else if (animBattler == ANIM_TARGET) @@ -351,13 +355,13 @@ u8 GetAnimBattlerSpriteId(u8 animBattler) } else { - return 0xFF; + return SPRITE_NONE; } } else if (animBattler == ANIM_ATK_PARTNER) { if (!IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimAttacker))) - return 0xFF; + return SPRITE_NONE; else return gBattlerSpriteIds[BATTLE_PARTNER(gBattleAnimAttacker)]; } @@ -366,7 +370,7 @@ u8 GetAnimBattlerSpriteId(u8 animBattler) if (IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimTarget))) return gBattlerSpriteIds[BATTLE_PARTNER(gBattleAnimTarget)]; else - return 0xFF; + return SPRITE_NONE; } } @@ -383,20 +387,40 @@ static void SetCallbackToStoredInData6(struct Sprite *sprite) sprite->callback = (SpriteCallback)callback; } +// Sprite data for TranslateSpriteInCircle/Ellipse and related +#define sCirclePos data[0] +#define sAmplitude data[1] +#define sCircleSpeed data[2] +#define sDuration data[3] + +// TranslateSpriteInGrowingCircle +#define sAmplitudeSpeed data[4] +#define sAmplitudeChange data[5] + +// TranslateSpriteInEllipse +#define sAmplitudeX sAmplitude +#define sAmplitudeY data[4] + +// TranslateSpriteInLissajousCurve +#define sCirclePosX sCirclePos +#define sCircleSpeedX sCircleSpeed +#define sCirclePosY data[4] +#define sCircleSpeedY data[5] + // x = a * sin(theta0 + dtheta * t) // y = a * cos(theta0 + dtheta * t) -void TranslateSpriteInCircleOverDuration(struct Sprite *sprite) +void TranslateSpriteInCircle(struct Sprite *sprite) { - if (sprite->data[3]) + if (sprite->sDuration) { - sprite->x2 = Sin(sprite->data[0], sprite->data[1]); - sprite->y2 = Cos(sprite->data[0], sprite->data[1]); - sprite->data[0] += sprite->data[2]; - if (sprite->data[0] >= 0x100) - sprite->data[0] -= 0x100; - else if (sprite->data[0] < 0) - sprite->data[0] += 0x100; - --sprite->data[3]; + sprite->x2 = Sin(sprite->sCirclePos, sprite->sAmplitude); + sprite->y2 = Cos(sprite->sCirclePos, sprite->sAmplitude); + sprite->sCirclePos += sprite->sCircleSpeed; + if (sprite->sCirclePos >= 0x100) + sprite->sCirclePos -= 0x100; + else if (sprite->sCirclePos < 0) + sprite->sCirclePos += 0x100; + sprite->sDuration--; } else { @@ -406,19 +430,19 @@ void TranslateSpriteInCircleOverDuration(struct Sprite *sprite) // x = (a0 + da * t) * sin(theta0 + dtheta * t) // y = (a0 + da * t) * cos(theta0 + dtheta * t) -void TranslateSpriteInGrowingCircleOverDuration(struct Sprite *sprite) +void TranslateSpriteInGrowingCircle(struct Sprite *sprite) { - if (sprite->data[3]) + if (sprite->sDuration) { - sprite->x2 = Sin(sprite->data[0], (sprite->data[5] >> 8) + sprite->data[1]); - sprite->y2 = Cos(sprite->data[0], (sprite->data[5] >> 8) + sprite->data[1]); - sprite->data[0] += sprite->data[2]; - sprite->data[5] += sprite->data[4]; - if (sprite->data[0] >= 0x100) - sprite->data[0] -= 0x100; - else if (sprite->data[0] < 0) - sprite->data[0] += 0x100; - --sprite->data[3]; + sprite->x2 = Sin(sprite->sCirclePos, (sprite->sAmplitudeChange >> 8) + sprite->sAmplitude); + sprite->y2 = Cos(sprite->sCirclePos, (sprite->sAmplitudeChange >> 8) + sprite->sAmplitude); + sprite->sCirclePos += sprite->sCircleSpeed; + sprite->sAmplitudeChange += sprite->sAmplitudeSpeed; + if (sprite->sCirclePos >= 0x100) + sprite->sCirclePos -= 0x100; + else if (sprite->sCirclePos < 0) + sprite->sCirclePos += 0x100; + sprite->sDuration--; } else { @@ -426,26 +450,30 @@ void TranslateSpriteInGrowingCircleOverDuration(struct Sprite *sprite) } } -// not used +// Unused +// Exact shape depends on arguments. Can move in a figure-8-like pattern, or circular, etc. // x = alpl * sin(alpha0 + dalpha * t) // y = ampl * cos(beta0 + dbeta * t) -static void TranslateSpriteInLissajousCurveOverDuration(struct Sprite *sprite) +static void TranslateSpriteInLissajousCurve(struct Sprite *sprite) { - if (sprite->data[3]) + if (sprite->sDuration) { - sprite->x2 = Sin(sprite->data[0], sprite->data[1]); - sprite->y2 = Cos(sprite->data[4], sprite->data[1]); - sprite->data[0] += sprite->data[2]; - sprite->data[4] += sprite->data[5]; - if (sprite->data[0] >= 0x100) - sprite->data[0] -= 0x100; - else if (sprite->data[0] < 0) - sprite->data[0] += 0x100; - if (sprite->data[4] >= 0x100) - sprite->data[4] -= 0x100; - else if (sprite->data[4] < 0) - sprite->data[4] += 0x100; - --sprite->data[3]; + sprite->x2 = Sin(sprite->sCirclePosX, sprite->sAmplitude); + sprite->y2 = Cos(sprite->sCirclePosY, sprite->sAmplitude); + sprite->sCirclePosX += sprite->sCircleSpeedX; + sprite->sCirclePosY += sprite->sCircleSpeedY; + + if (sprite->sCirclePosX >= 0x100) + sprite->sCirclePosX -= 0x100; + else if (sprite->sCirclePosX < 0) + sprite->sCirclePosX += 0x100; + + if (sprite->sCirclePosY >= 0x100) + sprite->sCirclePosY -= 0x100; + else if (sprite->sCirclePosY < 0) + sprite->sCirclePosY += 0x100; + + sprite->sDuration--; } else { @@ -455,18 +483,18 @@ static void TranslateSpriteInLissajousCurveOverDuration(struct Sprite *sprite) // x = a * sin(theta0 + dtheta * t) // y = b * cos(theta0 + dtheta * t) -void TranslateSpriteInEllipseOverDuration(struct Sprite *sprite) +void TranslateSpriteInEllipse(struct Sprite *sprite) { - if (sprite->data[3]) + if (sprite->sDuration) { - sprite->x2 = Sin(sprite->data[0], sprite->data[1]); - sprite->y2 = Cos(sprite->data[0], sprite->data[4]); - sprite->data[0] += sprite->data[2]; - if (sprite->data[0] >= 0x100) - sprite->data[0] -= 0x100; - else if (sprite->data[0] < 0) - sprite->data[0] += 0x100; - --sprite->data[3]; + sprite->x2 = Sin(sprite->sCirclePos, sprite->sAmplitudeX); + sprite->y2 = Cos(sprite->sCirclePos, sprite->sAmplitudeY); + sprite->sCirclePos += sprite->sCircleSpeed; + if (sprite->sCirclePos >= 0x100) + sprite->sCirclePos -= 0x100; + else if (sprite->sCirclePos < 0) + sprite->sCirclePos += 0x100; + sprite->sDuration--; } else { @@ -474,6 +502,19 @@ void TranslateSpriteInEllipseOverDuration(struct Sprite *sprite) } } +#undef sCirclePos +#undef sAmplitude +#undef sCircleSpeed +#undef sDuration +#undef sAmplitudeSpeed +#undef sAmplitudeChange +#undef sAmplitudeX +#undef sAmplitudeY +#undef sCirclePosX +#undef sCircleSpeedX +#undef sCirclePosY +#undef sCircleSpeedY + // Simply waits until the sprite's data[0] hits zero. // This is used to let sprite anims or affine anims to run for a designated // duration. @@ -485,34 +526,46 @@ void WaitAnimForDuration(struct Sprite *sprite) SetCallbackToStoredInData6(sprite); } -static void SetupAndStartSpriteLinearTranslation(struct Sprite *sprite) +// Sprite data for ConvertPosDataToTranslateLinearData +#define sStepsX data[0] +#define sStartX data[1] +#define sTargetX data[2] +#define sStartY data[3] +#define sTargetY data[4] + +// Sprite data for TranslateSpriteLinear +#define sMoveSteps data[0] +#define sSpeedX data[1] +#define sSpeedY data[2] + +static void AnimPosToTranslateLinear(struct Sprite *sprite) { - SetupLinearTranslationWithFixedDuration(sprite); + ConvertPosDataToTranslateLinearData(sprite); sprite->callback = TranslateSpriteLinear; sprite->callback(sprite); } -void SetupLinearTranslationWithFixedDuration(struct Sprite *sprite) +void ConvertPosDataToTranslateLinearData(struct Sprite *sprite) { s16 old; - s32 xDiff; + int xDiff; - if (sprite->data[1] > sprite->data[2]) - sprite->data[0] = -sprite->data[0]; - xDiff = sprite->data[2] - sprite->data[1]; - old = sprite->data[0]; - sprite->data[0] = abs(xDiff / sprite->data[0]); - sprite->data[2] = (sprite->data[4] - sprite->data[3]) / sprite->data[0]; - sprite->data[1] = old; + if (sprite->sStartX > sprite->sTargetX) + sprite->sStepsX = -sprite->sStepsX; + xDiff = sprite->sTargetX - sprite->sStartX; + old = sprite->sStepsX; + sprite->sMoveSteps = abs(xDiff / sprite->sStepsX); + sprite->sSpeedY = (sprite->sTargetY - sprite->sStartY) / sprite->sMoveSteps; + sprite->sSpeedX = old; } void TranslateSpriteLinear(struct Sprite *sprite) { - if (sprite->data[0] > 0) + if (sprite->sMoveSteps > 0) { - --sprite->data[0]; - sprite->x2 += sprite->data[1]; - sprite->y2 += sprite->data[2]; + sprite->sMoveSteps--; + sprite->x2 += sprite->sSpeedX; + sprite->y2 += sprite->sSpeedY; } else { @@ -554,17 +607,18 @@ static void TranslateSpriteLinearFixedPointIconFrame(struct Sprite *sprite) UpdateMonIconFrame(sprite); } -// not used -static void SetupAndStartSpriteLinearTranslationToTarget(struct Sprite *sprite) +// Unused +static void TranslateSpriteToBattleTargetPos(struct Sprite *sprite) { sprite->data[1] = sprite->x + sprite->x2; sprite->data[3] = sprite->y + sprite->y2; sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); - sprite->callback = SetupAndStartSpriteLinearTranslation; + sprite->callback = AnimPosToTranslateLinear; } -void TranslateMonSpriteLinear(struct Sprite *sprite) +// Same as TranslateSpriteLinear but takes an id to specify which sprite to move +void TranslateSpriteLinearById(struct Sprite *sprite) { if (sprite->data[0] > 0) { @@ -578,7 +632,7 @@ void TranslateMonSpriteLinear(struct Sprite *sprite) } } -void TranslateMonSpriteLinearFixedPoint(struct Sprite *sprite) +void TranslateSpriteLinearByIdFixedPoint(struct Sprite *sprite) { if (sprite->data[0] > 0) { @@ -621,20 +675,26 @@ void DestroySpriteAndMatrix(struct Sprite *sprite) DestroyAnimSprite(sprite); } -// not used +// Unused static void SetupAndStartSpriteLinearTranslationToAttacker(struct Sprite *sprite) { - sprite->data[1] = sprite->x + sprite->x2; - sprite->data[3] = sprite->y + sprite->y2; - sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); - sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); - sprite->callback = SetupAndStartSpriteLinearTranslation; + sprite->sStartX = sprite->x + sprite->x2; + sprite->sStartY = sprite->y + sprite->y2; + sprite->sTargetX = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->sTargetY = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); + sprite->callback = AnimPosToTranslateLinear; } -// not used -static void SpriteResetPaletteStructAndDestroy(struct Sprite *sprite) +#undef sStepsX +#undef sStartX +#undef sTargetX +#undef sStartY +#undef sTargetY + +// Unused +static void EndUnkPaletteAnim(struct Sprite *sprite) { - ResetPaletteStructByUid(sprite->data[5]); + PaletteStruct_ResetById(sprite->data[5]); DestroySpriteAndMatrix(sprite); } @@ -802,11 +862,14 @@ bool8 IsDoubleBattle(void) return IS_DOUBLE_BATTLE(); } +#define BG_ANIM_PAL_1 8 +#define BG_ANIM_PAL_2 9 + void GetBattleAnimBg1Data(struct BattleAnimBgData *animBgData) { animBgData->bgTiles = gBattleAnimBgTileBuffer; animBgData->bgTilemap = (u16 *)gBattleAnimBgTilemapBuffer; - animBgData->paletteId = 8; + animBgData->paletteId = BG_ANIM_PAL_1; animBgData->bgId = 1; animBgData->tilesOffset = 0x200; animBgData->unused = 0; @@ -822,7 +885,7 @@ void GetBattleAnimBgData(struct BattleAnimBgData *animBgData, u32 bgId) { animBgData->bgTiles = gBattleAnimBgTileBuffer; animBgData->bgTilemap = (u16 *)gBattleAnimBgTilemapBuffer; - animBgData->paletteId = 9; + animBgData->paletteId = BG_ANIM_PAL_2; animBgData->bgId = 2; animBgData->tilesOffset = 0x300; animBgData->unused = 0; @@ -835,14 +898,14 @@ void GetBattleAnimBgDataByPriorityRank(struct BattleAnimBgData *animBgData, u8 u animBgData->bgTilemap = (u16 *)gBattleAnimBgTilemapBuffer; if (GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker) == 1) { - animBgData->paletteId = 8; + animBgData->paletteId = BG_ANIM_PAL_1; animBgData->bgId = 1; animBgData->tilesOffset = 0x200; animBgData->unused = 0; } else { - animBgData->paletteId = 9; + animBgData->paletteId = BG_ANIM_PAL_2; animBgData->bgId = 2; animBgData->tilesOffset = 0x300; animBgData->unused = 0; @@ -881,12 +944,16 @@ void AnimLoadCompressedBgTilemap(u32 bgId, const u32 *src) u8 GetBattleBgPaletteNum(void) { + /* + if (IsContest()) + return 1; + */ return 2; } -void ToggleBg3Mode(bool8 arg0) +void ToggleBg3Mode(bool8 largeScreenSize) { - if (!arg0) + if (!largeScreenSize) { SetAnimBgAttribute(3, BG_ANIM_SCREEN_SIZE, 0); SetAnimBgAttribute(3, BG_ANIM_AREA_OVERFLOW_MODE, 1); @@ -898,7 +965,7 @@ void ToggleBg3Mode(bool8 arg0) } } -void StartSpriteLinearTranslationFromCurrentPos(struct Sprite *sprite) +void TradeMenuBouncePartySprites(struct Sprite *sprite) { sprite->data[1] = sprite->x; sprite->data[3] = sprite->y; @@ -951,7 +1018,7 @@ void StartAnimLinearTranslation(struct Sprite *sprite) sprite->sTransl_InitX = sprite->x; sprite->sTransl_InitY = sprite->y; InitAnimLinearTranslation(sprite); - sprite->callback = RunLinearTranslation_ThenceSetCBtoStoredInData6; + sprite->callback = AnimTranslateLinear_WithFollowup; sprite->callback(sprite); } @@ -960,7 +1027,7 @@ void PlayerThrowBall_StartAnimLinearTranslation(struct Sprite *sprite) sprite->sTransl_InitX = sprite->x; sprite->sTransl_InitY = sprite->y; InitAnimLinearTranslation(sprite); - sprite->callback = PlayerThrowBall_RunLinearTranslation_ThenceSetCBtoStoredInData6; + sprite->callback = PlayerThrowBall_AnimTranslateLinear_WithFollowup; sprite->callback(sprite); } @@ -991,20 +1058,20 @@ bool8 AnimTranslateLinear(struct Sprite *sprite) return FALSE; } -void RunLinearTranslation_ThenceSetCBtoStoredInData6(struct Sprite *sprite) +void AnimTranslateLinear_WithFollowup(struct Sprite *sprite) { if (AnimTranslateLinear(sprite)) SetCallbackToStoredInData6(sprite); } -static void PlayerThrowBall_RunLinearTranslation_ThenceSetCBtoStoredInData6(struct Sprite *sprite) +static void PlayerThrowBall_AnimTranslateLinear_WithFollowup(struct Sprite *sprite) { UpdatePlayerPosInThrowAnim(sprite); if (AnimTranslateLinear(sprite)) SetCallbackToStoredInData6(sprite); } -void BattleAnim_InitLinearTranslationWithDuration(struct Sprite *sprite) +void InitAnimLinearTranslationWithSpeed(struct Sprite *sprite) { s32 v1 = abs(sprite->sTransl_DestX - sprite->sTransl_InitX) << 8; @@ -1012,12 +1079,12 @@ void BattleAnim_InitLinearTranslationWithDuration(struct Sprite *sprite) InitAnimLinearTranslation(sprite); } -void BattleAnim_InitAndRunLinearTranslationWithDuration(struct Sprite *sprite) +void InitAnimLinearTranslationWithSpeedAndPos(struct Sprite *sprite) { sprite->sTransl_InitX = sprite->x; sprite->sTransl_InitY = sprite->y; - BattleAnim_InitLinearTranslationWithDuration(sprite); - sprite->callback = RunLinearTranslation_ThenceSetCBtoStoredInData6; + InitAnimLinearTranslationWithSpeed(sprite); + sprite->callback = AnimTranslateLinear_WithFollowup; sprite->callback(sprite); } @@ -1051,7 +1118,7 @@ void InitAndRunAnimFastLinearTranslation(struct Sprite *sprite) sprite->sTransl_InitX = sprite->x; sprite->sTransl_InitY = sprite->y; InitAnimFastLinearTranslation(sprite); - sprite->callback = SpriteCB_RunAnimFastLinearTranslation; + sprite->callback = AnimFastTranslateLinearWaitEnd; sprite->callback(sprite); } @@ -1081,7 +1148,7 @@ bool8 AnimFastTranslateLinear(struct Sprite *sprite) return FALSE; } -static void SpriteCB_RunAnimFastLinearTranslation(struct Sprite *sprite) +static void AnimFastTranslateLinearWaitEnd(struct Sprite *sprite) { if (AnimFastTranslateLinear(sprite)) SetCallbackToStoredInData6(sprite); @@ -1095,12 +1162,12 @@ void InitAnimFastLinearTranslationWithSpeed(struct Sprite *sprite) InitAnimFastLinearTranslation(sprite); } -void InitAndStartAnimFastLinearTranslationWithSpeed(struct Sprite *sprite) +void InitAnimFastLinearTranslationWithSpeedAndPos(struct Sprite *sprite) { sprite->data[1] = sprite->x; sprite->data[3] = sprite->y; InitAnimFastLinearTranslationWithSpeed(sprite); - sprite->callback = SpriteCB_RunAnimFastLinearTranslation; + sprite->callback = AnimFastTranslateLinearWaitEnd; sprite->callback(sprite); } @@ -1113,7 +1180,7 @@ void SetSpriteRotScale(u8 spriteId, s16 xScale, s16 yScale, u16 rotation) src.xScale = xScale; src.yScale = yScale; src.rotation = rotation; - if (Dummy_ReturnFalse()) + if (ShouldRotScaleSpeciesBeFlipped()) src.xScale = -src.xScale; i = gSprites[spriteId].oam.matrixNum; ObjAffineSet(&src, &matrix, 1, 2); @@ -1123,8 +1190,18 @@ void SetSpriteRotScale(u8 spriteId, s16 xScale, s16 yScale, u16 rotation) gOamMatrices[i].d = matrix.d; } -static bool8 Dummy_ReturnFalse(void) +// Pokémon in Contests (except Unown) should be flipped. +static bool8 ShouldRotScaleSpeciesBeFlipped(void) { + /* + if (IsContest()) + { + if (gSprites[GetAnimBattlerSpriteId(ANIM_ATTACKER)].data[2] == SPECIES_UNOWN) + return FALSE; + else + return TRUE; + } + */ return FALSE; } @@ -1178,7 +1255,7 @@ void TrySetSpriteRotScale(struct Sprite *sprite, bool8 recalcCenterVector, s16 x src.xScale = xScale; src.yScale = yScale; src.rotation = rotation; - if (Dummy_ReturnFalse()) + if (ShouldRotScaleSpeciesBeFlipped()) src.xScale = -src.xScale; i = sprite->oam.matrixNum; ObjAffineSet(&src, &matrix, 1, 2); @@ -1235,14 +1312,14 @@ void SetGreyscaleOrOriginalPalette(u16 paletteNum, bool8 restoreOriginalColor) } } -u32 SelectBattleAnimSpriteAndBgPalettes(bool8 battleBackground, bool8 attacker, bool8 target, bool8 attackerPartner, bool8 targetPartner, bool8 a6, bool8 a7) +u32 GetBattlePalettesMask(bool8 battleBackground, bool8 attacker, bool8 target, bool8 attackerPartner, bool8 targetPartner, bool8 anim1, bool8 anim2) { u32 selectedPalettes = 0; u32 shift; if (battleBackground) { - selectedPalettes = 0xe; + selectedPalettes = 0xe; // Palettes 1, 2, and 3 } if (attacker) { @@ -1270,27 +1347,25 @@ u32 SelectBattleAnimSpriteAndBgPalettes(bool8 battleBackground, bool8 attacker, selectedPalettes |= 1 << shift; } } - if (a6) - { - selectedPalettes |= 0x100; - } - if (a7) - { - selectedPalettes |= 0x200; - } + if (anim1) + selectedPalettes |= 1 << BG_ANIM_PAL_1; + + if (anim2) + selectedPalettes |= 1 << BG_ANIM_PAL_2; + return selectedPalettes; } -u32 SelectBattlerSpritePalettes(bool8 playerLeft, bool8 playerRight, bool8 foeLeft, bool8 foeRight) +u32 GetBattleMonSpritePalettesMask(bool8 playerLeft, bool8 playerRight, bool8 foeLeft, bool8 foeRight) { - u32 var = 0; + u32 selectedPalettes = 0; u32 shift; if (playerLeft) { if (IsBattlerSpriteVisible(GetBattlerAtPosition(B_POSITION_PLAYER_LEFT))) { - var |= 1 << (GetBattlerAtPosition(B_POSITION_PLAYER_LEFT) + 16); + selectedPalettes |= 1 << (GetBattlerAtPosition(B_POSITION_PLAYER_LEFT) + 16); } } if (playerRight) @@ -1298,7 +1373,7 @@ u32 SelectBattlerSpritePalettes(bool8 playerLeft, bool8 playerRight, bool8 foeLe if (IsBattlerSpriteVisible(GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT))) { shift = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT) + 16; - var |= 1 << shift; + selectedPalettes |= 1 << shift; } } if (foeLeft) @@ -1306,7 +1381,7 @@ u32 SelectBattlerSpritePalettes(bool8 playerLeft, bool8 playerRight, bool8 foeLe if (IsBattlerSpriteVisible(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT))) { shift = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT) + 16; - var |= 1 << shift; + selectedPalettes |= 1 << shift; } } if (foeRight) @@ -1314,18 +1389,18 @@ u32 SelectBattlerSpritePalettes(bool8 playerLeft, bool8 playerRight, bool8 foeLe if (IsBattlerSpriteVisible(GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT))) { shift = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT) + 16; - var |= 1 << shift; + selectedPalettes |= 1 << shift; } } - return var; + return selectedPalettes; } -u8 GetSpritePalIdxByBattler(u8 a1) +u8 GetSpritePalIdxByBattler(u8 battler) { - return a1; + return battler; } -// not used +// Unused static u8 GetSpritePalIdxByPosition(u8 position) { return GetBattlerAtPosition(position); @@ -1404,7 +1479,7 @@ static void AnimThrowProjectile_Step(struct Sprite *sprite) DestroyAnimSprite(sprite); } -void AnimSnoreZ(struct Sprite *sprite) +void AnimTravelDiagonally(struct Sprite *sprite) { bool8 r4; u8 battlerId, coordType; @@ -1444,7 +1519,7 @@ s16 CloneBattlerSpriteWithBlend(u8 animBattler) u16 i; u8 spriteId = GetAnimBattlerSpriteId(animBattler); - if (spriteId != 0xFF) + if (spriteId != SPRITE_NONE) { for (i = 0; i < MAX_SPRITES; ++i) { @@ -1460,12 +1535,13 @@ s16 CloneBattlerSpriteWithBlend(u8 animBattler) return -1; } -void obj_delete_but_dont_free_vram(struct Sprite *sprite) +void DestroySpriteWithActiveSheet(struct Sprite *sprite) { sprite->usingSheet = TRUE; DestroySprite(sprite); } +// Only used to fade Moonlight moon sprite in void AnimTask_AlphaFadeIn(u8 taskId) { s16 v1 = 0, v2 = 0; @@ -1546,10 +1622,10 @@ static void AnimTask_BlendMonInAndOutSetup(struct Task *task) task->data[5] = gBattleAnimArgs[3]; task->data[6] = 0; task->data[7] = gBattleAnimArgs[4]; - task->func = AnimTask_BlendMonInAndOutStep; + task->func = AnimTask_BlendMonInAndOut_Step; } -static void AnimTask_BlendMonInAndOutStep(u8 taskId) +static void AnimTask_BlendMonInAndOut_Step(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -1584,6 +1660,7 @@ static void AnimTask_BlendMonInAndOutStep(u8 taskId) } } +// See AnimTask_BlendMonInAndOut. Same, but ANIM_TAG_* instead of mon void AnimTask_BlendPalInAndOutByTag(u8 taskId) { u8 palette = IndexOfSpritePaletteTag(gBattleAnimArgs[0]); @@ -1684,12 +1761,12 @@ bool8 RunAffineAnimFromTaskData(struct Task *task) // matrix's scale in the y dimension. void SetBattlerSpriteYOffsetFromYScale(u8 spriteId) { - s32 var = 64 - GetBattlerYDeltaFromSpriteId(spriteId) * 2; + s32 var = MON_PIC_HEIGHT - GetBattlerYDeltaFromSpriteId(spriteId) * 2; u16 matrix = gSprites[spriteId].oam.matrixNum; - s32 var2 = (var << 8) / gOamMatrices[matrix].d; + s32 var2 = SAFE_DIV(var << 8, gOamMatrices[matrix].d); - if (var2 > 128) - var2 = 128; + if (var2 > MON_PIC_HEIGHT * 2) + var2 = MON_PIC_HEIGHT * 2; gSprites[spriteId].y2 = (var - var2) / 2; } @@ -1697,12 +1774,12 @@ void SetBattlerSpriteYOffsetFromYScale(u8 spriteId) // matrix's scale in the y dimension. void SetBattlerSpriteYOffsetFromOtherYScale(u8 spriteId, u8 otherSpriteId) { - s32 var = 64 - GetBattlerYDeltaFromSpriteId(otherSpriteId) * 2; + s32 var = MON_PIC_HEIGHT - GetBattlerYDeltaFromSpriteId(otherSpriteId) * 2; u16 matrix = gSprites[spriteId].oam.matrixNum; s32 var2 = SAFE_DIV((var << 8), gOamMatrices[matrix].d); - if (var2 > 128) - var2 = 128; + if (var2 > MON_PIC_HEIGHT * 2) + var2 = MON_PIC_HEIGHT * 2; gSprites[spriteId].y2 = (var - var2) / 2; } @@ -1737,7 +1814,7 @@ static u16 GetBattlerYDeltaFromSpriteId(u8 spriteId) } } } - return 64; + return MON_PIC_HEIGHT; } void StorePointerInVars(s16 *lo, s16 *hi, const void *ptr) @@ -1751,16 +1828,16 @@ void *LoadPointerFromVars(s16 lo, s16 hi) return (void *)((u16)lo | ((u16)hi << 16)); } -void BattleAnimHelper_SetSpriteSquashParams(struct Task *task, u8 spriteId, s16 xScale0, s16 yScale0, s16 xScale1, s16 yScale1, u16 duration) +void BattleAnimHelper_SetSpriteSquashParams(struct Task *task, u8 spriteId, s16 xScaleStart, s16 yScaleStart, s16 xScaleEnd, s16 yScaleEnd, u16 duration) { task->data[8] = duration; task->data[15] = spriteId; - task->data[9] = xScale0; - task->data[10] = yScale0; - task->data[13] = xScale1; - task->data[14] = yScale1; - task->data[11] = (xScale1 - xScale0) / duration; - task->data[12] = (yScale1 - yScale0) / duration; + task->data[9] = xScaleStart; + task->data[10] = yScaleStart; + task->data[13] = xScaleEnd; + task->data[14] = yScaleEnd; + task->data[11] = (xScaleEnd - xScaleStart) / duration; + task->data[12] = (yScaleEnd - yScaleStart) / duration; } u8 BattleAnimHelper_RunSpriteSquash(struct Task *task) @@ -1797,12 +1874,12 @@ void AnimTask_GetFrustrationPowerLevel(u8 taskId) powerLevel = 2; else powerLevel = 3; - gBattleAnimArgs[7] = powerLevel; + gBattleAnimArgs[ARG_RET_ID] = powerLevel; DestroyAnimVisualTask(taskId); } -// not used -static void SetOamPriorityOfAllVisibleBattlers(u8 priority) +// Unused +static void SetPriorityForVisibleBattlers(u8 priority) { if (IsBattlerSpriteVisible(gBattleAnimTarget)) gSprites[gBattlerSpriteIds[gBattleAnimTarget]].oam.priority = priority; @@ -1814,7 +1891,7 @@ static void SetOamPriorityOfAllVisibleBattlers(u8 priority) gSprites[gBattlerSpriteIds[BATTLE_PARTNER(gBattleAnimAttacker)]].oam.priority = priority; } -void ResetSpritePriorityOfAllVisibleBattlers(void) +void InitPrioritiesForVisibleBattlers(void) { s32 i; @@ -1864,11 +1941,12 @@ u8 GetBattlerSpriteBGPriorityRank(u8 battlerId) return 1; } +// Create pokemon sprite to be used for a move animation effect (e.g. Role Play / Snatch) u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 templateId, s16 x, s16 y, u8 subpriority, u32 personality, u32 trainerId, u32 battlerId, bool32 ignoreDeoxys) { u8 spriteId; - u16 sheet = LoadSpriteSheet(&sMoveAnimAdtlSprSheets[templateId]); - u16 palette = AllocSpritePalette(sSpriteTemplates_AdditionalForAnim[templateId].paletteTag); + u16 sheet = LoadSpriteSheet(&sSpriteSheets_MoveEffectMons[templateId]); + u16 palette = AllocSpritePalette(sSpriteTemplates_MoveEffectMons[templateId].paletteTag); if (gMonSpritesGfxPtr != NULL && gMonSpritesGfxPtr->multiUseBuffer == NULL) gMonSpritesGfxPtr->multiUseBuffer = AllocZeroed(0x2000); @@ -1907,9 +1985,9 @@ u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 templat RequestDma3Copy(gMonSpritesGfxPtr->multiUseBuffer, (void *)(OBJ_VRAM0 + (sheet * 0x20)), 0x800, 1); FREE_AND_SET_NULL(gMonSpritesGfxPtr->multiUseBuffer); if (!isBackpic) - spriteId = CreateSprite(&sSpriteTemplates_AdditionalForAnim[templateId], x, y + gMonFrontPicCoords[species].y_offset, subpriority); + spriteId = CreateSprite(&sSpriteTemplates_MoveEffectMons[templateId], x, y + gMonFrontPicCoords[species].y_offset, subpriority); else - spriteId = CreateSprite(&sSpriteTemplates_AdditionalForAnim[templateId], x, y + gMonBackPicCoords[species].y_offset, subpriority); + spriteId = CreateSprite(&sSpriteTemplates_MoveEffectMons[templateId], x, y + gMonBackPicCoords[species].y_offset, subpriority); return spriteId; } @@ -1998,17 +2076,17 @@ s16 GetBattlerSpriteCoordAttr(u8 battlerId, u8 attr) switch (attr) { case BATTLER_COORD_ATTR_HEIGHT: - return (coords->size & 0xf) * 8; + return GET_MON_COORDS_HEIGHT(coords->size); case BATTLER_COORD_ATTR_WIDTH: - return (coords->size >> 4) * 8; + return GET_MON_COORDS_WIDTH(coords->size); case BATTLER_COORD_ATTR_LEFT: - return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X_2) - ((coords->size >> 4) * 4); + return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X_2) - (GET_MON_COORDS_WIDTH(coords->size) / 2); case BATTLER_COORD_ATTR_RIGHT: - return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X_2) + ((coords->size >> 4) * 4); + return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X_2) + (GET_MON_COORDS_WIDTH(coords->size) / 2); case BATTLER_COORD_ATTR_TOP: - return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y_PIC_OFFSET) - ((coords->size & 0xf) * 4); + return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y_PIC_OFFSET) - (GET_MON_COORDS_HEIGHT(coords->size) / 2); case BATTLER_COORD_ATTR_BOTTOM: - return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y_PIC_OFFSET) + ((coords->size & 0xf) * 4); + return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y_PIC_OFFSET) + (GET_MON_COORDS_HEIGHT(coords->size) / 2); case BATTLER_COORD_ATTR_RAW_BOTTOM: ret = GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y) + 31; return ret - coords->y_offset; @@ -2049,7 +2127,7 @@ void SetAverageBattlerPositions(u8 battlerId, bool8 respectMonPicOffsets, s16 *x *y = (battlerY + partnerY) / 2; } -u8 CreateCloneOfSpriteInWindowMode(s32 battlerId, u8 spriteId, s32 species) +u8 CreateInvisibleSpriteCopy(s32 battlerId, u8 spriteId, s32 species) { u8 newSpriteId = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy); @@ -2062,7 +2140,7 @@ u8 CreateCloneOfSpriteInWindowMode(s32 battlerId, u8 spriteId, s32 species) return newSpriteId; } -void SpriteCB_AnimTranslateSpriteLinearAndFlicker(struct Sprite *sprite) +void AnimTranslateLinearAndFlicker_Flipped(struct Sprite *sprite) { SetSpriteCoordsToAnimAttackerCoords(sprite); if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) @@ -2084,7 +2162,8 @@ void SpriteCB_AnimTranslateSpriteLinearAndFlicker(struct Sprite *sprite) sprite->callback = TranslateSpriteLinearAndFlicker; } -void SpriteCB_AnimTranslateSpriteLinearAndFlicker2(struct Sprite *sprite) +// Used by three different unused battle anim sprite templates. +void AnimTranslateLinearAndFlicker(struct Sprite *sprite) { if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) { @@ -2105,7 +2184,8 @@ void SpriteCB_AnimTranslateSpriteLinearAndFlicker2(struct Sprite *sprite) sprite->callback = TranslateSpriteLinearAndFlicker; } -void SpriteCB_TrackOffsetFromAttackerAndWaitAnim(struct Sprite *sprite) +// Used by Detect/Disable +void AnimSpinningSparkle(struct Sprite *sprite) { SetSpriteCoordsToAnimAttackerCoords(sprite); if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) @@ -2117,26 +2197,43 @@ void SpriteCB_TrackOffsetFromAttackerAndWaitAnim(struct Sprite *sprite) StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); } +// Task and sprite data for AnimTask_AttackerPunchWithTrace +#define tBattlerSpriteId data[0] +#define tMoveSpeed data[1] +#define tState data[2] +#define tCounter data[3] +#define tPaletteNum data[4] +#define tNumTracesActive data[5] +#define tPriority data[6] + +#define sActiveTime data[0] +#define sTaskId data[1] +#define sSpriteId data[2] + void AnimTask_AttackerPunchWithTrace(u8 taskId) { u16 src; u16 dest; struct Task *task = &gTasks[taskId]; - task->data[0] = GetAnimBattlerSpriteId(ANIM_ATTACKER); - task->data[1] = ((GetBattlerSide(gBattleAnimAttacker)) != B_SIDE_PLAYER) ? -8 : 8; - task->data[2] = 0; - task->data[3] = 0; - gSprites[task->data[0]].x2 -= task->data[0]; - task->data[4] = AllocSpritePalette(10097); - task->data[5] = 0; - dest = (task->data[4] + 0x10) * 0x10; - src = (gSprites[task->data[0]].oam.paletteNum + 0x10) * 0x10; - task->data[6] = GetBattlerSpriteSubpriority(gBattleAnimAttacker); - if (task->data[6] == 20 || task->data[6] == 40) - task->data[6] = 2; + task->tBattlerSpriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); + task->tMoveSpeed = (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) ? -8 : 8; + task->tState = 0; + task->tCounter = 0; + gSprites[task->tBattlerSpriteId].x2 -= task->tBattlerSpriteId; + task->tPaletteNum = AllocSpritePalette(ANIM_TAG_BENT_SPOON); + task->tNumTracesActive = 0; + + dest = (task->tPaletteNum + 16) * 16; + src = (gSprites[task->tBattlerSpriteId].oam.paletteNum + 0x10) * 0x10; + + // Set trace's priority based on battler's subpriority + task->tPriority = GetBattlerSpriteSubpriority(gBattleAnimAttacker); + if (task->tPriority == 20 || task->tPriority == 40) + task->tPriority = 2; else - task->data[6] = 3; + task->tPriority = 3; + CpuCopy32(&gPlttBufferUnfaded[src], &gPlttBufferFaded[dest], 0x20); BlendPalette(dest, 16, gBattleAnimArgs[1], gBattleAnimArgs[0]); task->func = AnimTask_AttackerPunchWithTrace_Step; @@ -2145,28 +2242,30 @@ void AnimTask_AttackerPunchWithTrace(u8 taskId) static void AnimTask_AttackerPunchWithTrace_Step(u8 taskId) { struct Task *task = &gTasks[taskId]; - switch (task->data[2]) + switch (task->tState) { case 0: - PunchAnim_CreateTraceSprite(task, taskId); - gSprites[task->data[0]].x2 += task->data[1]; - if (++task->data[3] == 5) + // Move forward + CreateBattlerTrace(task, taskId); + gSprites[task->tBattlerSpriteId].x2 += task->tMoveSpeed; + if (++task->tCounter == 5) { - --task->data[3]; - ++task->data[2]; + task->tCounter--; + task->tState++; } break; case 1: - PunchAnim_CreateTraceSprite(task, taskId); - gSprites[task->data[0]].x2 -= task->data[1]; - if (--task->data[3] == 0) + // Move back (do same number of traces as before) + CreateBattlerTrace(task, taskId); + gSprites[task->tBattlerSpriteId].x2 -= task->tMoveSpeed; + if (--task->tCounter == 0) { - gSprites[task->data[0]].x2 = 0; - ++task->data[2]; + gSprites[task->tBattlerSpriteId].x2 = 0; + task->tState++; } break; case 2: - if (!task->data[5]) + if (task->tNumTracesActive == 0) { FreeSpritePaletteByTag(ANIM_TAG_BENT_SPOON); DestroyAnimVisualTask(taskId); @@ -2175,33 +2274,45 @@ static void AnimTask_AttackerPunchWithTrace_Step(u8 taskId) } } -static void PunchAnim_CreateTraceSprite(struct Task *task, u8 taskId) +static void CreateBattlerTrace(struct Task *task, u8 taskId) { s16 spriteId = CloneBattlerSpriteWithBlend(0); - if (spriteId >= 0) { - gSprites[spriteId].oam.priority = task->data[6]; - gSprites[spriteId].oam.paletteNum = task->data[4]; - gSprites[spriteId].data[0] = 8; - gSprites[spriteId].data[1] = taskId; - gSprites[spriteId].data[2] = spriteId; - gSprites[spriteId].x2 = gSprites[task->data[0]].x2; - gSprites[spriteId].callback = SpriteCB_PunchTrace; - ++task->data[5]; + gSprites[spriteId].oam.priority = task->tPriority; + gSprites[spriteId].oam.paletteNum = task->tPaletteNum; + gSprites[spriteId].sActiveTime = 8; + gSprites[spriteId].sTaskId = taskId; + gSprites[spriteId].sSpriteId = spriteId; + gSprites[spriteId].x2 = gSprites[task->tBattlerSpriteId].x2; + gSprites[spriteId].callback = AnimBattlerTrace; + task->tNumTracesActive++; } } -static void SpriteCB_PunchTrace(struct Sprite *sprite) +// Just waits until destroyed +static void AnimBattlerTrace(struct Sprite *sprite) { - if (--sprite->data[0] == 0) + if (--sprite->sActiveTime == 0) { - --gTasks[sprite->data[1]].data[5]; - obj_delete_but_dont_free_vram(sprite); + gTasks[sprite->sTaskId].tNumTracesActive--; + DestroySpriteWithActiveSheet(sprite); } } -void SpriteCB_WeatherBallUp(struct Sprite *sprite) +#undef tBattlerSpriteId +#undef tMoveSpeed +#undef tState +#undef tCounter +#undef tPaletteNum +#undef tNumTracesActive +#undef tPriority + +#undef sActiveTime +#undef sTaskId +#undef sSpriteId + +void AnimWeatherBallUp(struct Sprite *sprite) { sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); @@ -2210,10 +2321,10 @@ void SpriteCB_WeatherBallUp(struct Sprite *sprite) else sprite->data[0] = -10; sprite->data[1] = -40; - sprite->callback = SpriteCB_WeatherBallUp_Step; + sprite->callback = AnimWeatherBallUp_Step; } -static void SpriteCB_WeatherBallUp_Step(struct Sprite *sprite) +static void AnimWeatherBallUp_Step(struct Sprite *sprite) { sprite->data[2] += sprite->data[0]; sprite->data[3] += sprite->data[1]; diff --git a/src/normal.c b/src/battle_anim_normal.c similarity index 61% rename from src/normal.c rename to src/battle_anim_normal.c index 157af414a..a76ad1fa2 100644 --- a/src/normal.c +++ b/src/battle_anim_normal.c @@ -8,7 +8,7 @@ static void AnimConfusionDuck(struct Sprite *sprite); static void AnimSimplePaletteBlend(struct Sprite *sprite); static void AnimComplexPaletteBlend(struct Sprite *sprite); -static void sub_80B9B8C(struct Sprite *sprite); +static void AnimCirclingSparkle(struct Sprite *sprite); static void AnimShakeMonOrBattleTerrain(struct Sprite *sprite); static void AnimHitSplatBasic(struct Sprite *sprite); static void AnimHitSplatHandleInvert(struct Sprite *sprite); @@ -17,22 +17,22 @@ static void AnimHitSplatOnMonEdge(struct Sprite *sprite); static void AnimCrossImpact(struct Sprite *sprite); static void AnimFlashingHitSplat(struct Sprite *sprite); static void AnimHitSplatPersistent(struct Sprite *sprite); -static void AnimConfusionDuckStep(struct Sprite *sprite); -static void AnimSimplePaletteBlendStep(struct Sprite *sprite); -static void sub_80B9AD0(struct Sprite *sprite); -static void sub_80B9B5C(struct Sprite *sprite); -static void sub_80B9C2C(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount); -static void sub_80B9C7C(u8 taskId); -static void sub_80B9DA0(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount); -static void sub_80B9DF0(u8 taskId); -static void sub_80B9EA8(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount); -static void sub_80B9F04(u8 taskId); -static void sub_80B9FD8(u8 taskId); -static void sub_80BA090(u8 taskId); -static void sub_80BA3CC(void); -static void sub_80BA320(struct Sprite *sprite); -static void sub_80BA4D0(u8 taskId); -static void sub_80BA7BC(struct Sprite *sprite); +static void AnimConfusionDuck_Step(struct Sprite *sprite); +static void AnimSimplePaletteBlend_Step(struct Sprite *sprite); +static void AnimComplexPaletteBlend_Step1(struct Sprite *sprite); +static void AnimComplexPaletteBlend_Step2(struct Sprite *sprite); +static void BlendColorCycle(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount); +static void AnimTask_BlendColorCycleLoop(u8 taskId); +static void BlendColorCycleExclude(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount); +static void AnimTask_BlendColorCycleExcludeLoop(u8 taskId); +static void BlendColorCycleByTag(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount); +static void AnimTask_BlendColorCycleByTagLoop(u8 taskId); +static void AnimTask_FlashAnimTagWithColor_Step1(u8 taskId); +static void AnimTask_FlashAnimTagWithColor_Step2(u8 taskId); +static void AnimShakeMonOrBattleTerrain_UpdateCoordOffsetEnabled(void); +static void AnimShakeMonOrBattleTerrain_Step(struct Sprite *sprite); +static void AnimTask_ShakeBattleTerrain_Step(u8 taskId); +static void AnimFlashingHitSplat_Step(struct Sprite *sprite); static const union AnimCmd sAnim_ConfusionDuck_0[] = @@ -92,7 +92,7 @@ const struct SpriteTemplate gComplexPaletteBlendSpriteTemplate = .callback = AnimComplexPaletteBlend, }; -static const union AnimCmd gUnknown_83E7B54[] = +static const union AnimCmd sAnim_CirclingSparkle[] = { ANIMCMD_FRAME(0, 3), ANIMCMD_FRAME(16, 3), @@ -102,20 +102,21 @@ static const union AnimCmd gUnknown_83E7B54[] = ANIMCMD_JUMP(0), }; -static const union AnimCmd *const gUnknown_83E7B6C[] = +static const union AnimCmd *const sAnims_CirclingSparkle[] = { - gUnknown_83E7B54, + sAnim_CirclingSparkle, }; -const struct SpriteTemplate gUnknown_83E7B70 = +// Unused +static const struct SpriteTemplate sCirclingSparkleSpriteTemplate = { .tileTag = ANIM_TAG_SPARKLE_4, .paletteTag = ANIM_TAG_SPARKLE_4, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = gUnknown_83E7B6C, + .anims = sAnims_CirclingSparkle, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80B9B8C, + .callback = AnimCirclingSparkle, }; const struct SpriteTemplate gShakeMonOrTerrainSpriteTemplate = @@ -275,11 +276,11 @@ static void AnimConfusionDuck(struct Sprite *sprite) StartSpriteAnim(sprite, 1); } sprite->data[3] = gBattleAnimArgs[4]; - sprite->callback = AnimConfusionDuckStep; + sprite->callback = AnimConfusionDuck_Step; sprite->callback(sprite); } -static void AnimConfusionDuckStep(struct Sprite *sprite) +static void AnimConfusionDuck_Step(struct Sprite *sprite) { sprite->x2 = Cos(sprite->data[0], 30); sprite->y2 = Sin(sprite->data[0], 10); @@ -300,36 +301,36 @@ static void AnimConfusionDuckStep(struct Sprite *sprite) // arg 4: blend color static void AnimSimplePaletteBlend(struct Sprite *sprite) { - u32 selectedPalettes = UnpackSelectedBattleAnimPalettes(gBattleAnimArgs[0]); + u32 selectedPalettes = UnpackSelectedBattlePalettes(gBattleAnimArgs[0]); BeginNormalPaletteFade(selectedPalettes, gBattleAnimArgs[1], gBattleAnimArgs[2], gBattleAnimArgs[3], gBattleAnimArgs[4]); sprite->invisible = TRUE; - sprite->callback = AnimSimplePaletteBlendStep; + sprite->callback = AnimSimplePaletteBlend_Step; } // Unpacks a bitfield and returns a bitmask of its selected palettes. // Bits 0-6 of the selector parameter result in the following palettes being selected: -// 0: battle background palettes (BG palettes 1, 2, and 3) -// 1: gBattleAnimAttacker OBJ palette -// 2: gBattleAnimTarget OBJ palette -// 3: gBattleAnimAttacker partner OBJ palette -// 4: gBattleAnimTarget partner OBJ palette -// 5: BG palette 4 -// 6: BG palette 5 -u32 UnpackSelectedBattleAnimPalettes(s16 selector) +// 0: F_PAL_BG, battle background palettes (BG palettes 1, 2, and 3) +// 1: F_PAL_ATTACKER, gBattleAnimAttacker OBJ palette +// 2: F_PAL_TARGET, gBattleAnimTarget OBJ palette +// 3: F_PAL_ATK_PARTNER, gBattleAnimAttacker partner OBJ palette +// 4: F_PAL_DEF_PARTNER, gBattleAnimTarget partner OBJ palette +// 5: F_PAL_ANIM_1, BG palette 8 +// 6: F_PAL_ANIM_2, BG palette 9 +u32 UnpackSelectedBattlePalettes(s16 selector) { u8 battleBackground = selector & 1; u8 attacker = (selector >> 1) & 1; u8 target = (selector >> 2) & 1; u8 attackerPartner = (selector >> 3) & 1; u8 targetPartner = (selector >> 4) & 1; - u8 arg5 = (selector >> 5) & 1; - u8 arg6 = (selector >> 6) & 1; + u8 anim1 = (selector >> 5) & 1; + u8 anim2 = (selector >> 6) & 1; - return SelectBattleAnimSpriteAndBgPalettes(battleBackground, attacker, target, attackerPartner, targetPartner, arg5, arg6); + return GetBattlePalettesMask(battleBackground, attacker, target, attackerPartner, targetPartner, anim1, anim2); } -static void AnimSimplePaletteBlendStep(struct Sprite *sprite) +static void AnimSimplePaletteBlend_Step(struct Sprite *sprite) { if (!gPaletteFade.active) DestroyAnimSprite(sprite); @@ -347,13 +348,13 @@ static void AnimComplexPaletteBlend(struct Sprite *sprite) sprite->data[5] = gBattleAnimArgs[5]; sprite->data[6] = gBattleAnimArgs[6]; sprite->data[7] = gBattleAnimArgs[0]; - selectedPalettes = UnpackSelectedBattleAnimPalettes(sprite->data[7]); + selectedPalettes = UnpackSelectedBattlePalettes(sprite->data[7]); BlendPalettes(selectedPalettes, gBattleAnimArgs[4], gBattleAnimArgs[3]); sprite->invisible = TRUE; - sprite->callback = sub_80B9AD0; + sprite->callback = AnimComplexPaletteBlend_Step1; } -static void sub_80B9AD0(struct Sprite *sprite) +static void AnimComplexPaletteBlend_Step1(struct Sprite *sprite) { u32 selectedPalettes; @@ -366,10 +367,10 @@ static void sub_80B9AD0(struct Sprite *sprite) return; if (sprite->data[2] == 0) { - sprite->callback = sub_80B9B5C; + sprite->callback = AnimComplexPaletteBlend_Step2; return; } - selectedPalettes = UnpackSelectedBattleAnimPalettes(sprite->data[7]); + selectedPalettes = UnpackSelectedBattlePalettes(sprite->data[7]); if (sprite->data[1] & 0x100) BlendPalettes(selectedPalettes, sprite->data[4], sprite->data[3]); else @@ -379,19 +380,19 @@ static void sub_80B9AD0(struct Sprite *sprite) --sprite->data[2]; } -static void sub_80B9B5C(struct Sprite *sprite) +static void AnimComplexPaletteBlend_Step2(struct Sprite *sprite) { u32 selectedPalettes; if (!gPaletteFade.active) { - selectedPalettes = UnpackSelectedBattleAnimPalettes(sprite->data[7]); + selectedPalettes = UnpackSelectedBattlePalettes(sprite->data[7]); BlendPalettes(selectedPalettes, 0, 0); DestroyAnimSprite(sprite); } } -static void sub_80B9B8C(struct Sprite *sprite) +static void AnimCirclingSparkle(struct Sprite *sprite) { sprite->x += gBattleAnimArgs[0]; sprite->y += gBattleAnimArgs[1]; @@ -402,57 +403,75 @@ static void sub_80B9B8C(struct Sprite *sprite) sprite->data[4] = 112; sprite->data[5] = 0; StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); - sprite->callback = TranslateSpriteInGrowingCircleOverDuration; + sprite->callback = TranslateSpriteInGrowingCircle; sprite->callback(sprite); } -void AnimTask_CurseBlendEffect(u8 taskId) +// Task data for AnimTask_BlendColorCycle, AnimTask_BlendColorCycleExclude, and AnimTask_BlendColorCycleByTag +#define tPalSelector data[0] // AnimTask_BlendColorCycle +#define tPalTag data[0] // AnimTask_BlendColorCycleByTag +#define tDelay data[1] +#define tNumBlends data[2] +#define tInitialBlendY data[3] +#define tTargetBlendY data[4] +#define tBlendColor data[5] +#define tRestoreBlend data[8] +#define tPalSelectorHi data[9] +#define tPalSelectorLo data[10] + +// Blends mon/screen to designated color or back alternately tNumBlends times +// Many uses of this task only set a tNumBlends of 2, which has the effect of blending to a color and back once +void AnimTask_BlendColorCycle(u8 taskId) { - gTasks[taskId].data[0] = gBattleAnimArgs[0]; - gTasks[taskId].data[1] = gBattleAnimArgs[1]; - gTasks[taskId].data[2] = gBattleAnimArgs[2]; - gTasks[taskId].data[3] = gBattleAnimArgs[3]; - gTasks[taskId].data[4] = gBattleAnimArgs[4]; - gTasks[taskId].data[5] = gBattleAnimArgs[5]; - gTasks[taskId].data[8] = 0; - sub_80B9C2C(taskId, 0, gTasks[taskId].data[4]); - gTasks[taskId].func = sub_80B9C7C; + gTasks[taskId].tPalSelector = gBattleAnimArgs[0]; + gTasks[taskId].tDelay = gBattleAnimArgs[1]; + gTasks[taskId].tNumBlends = gBattleAnimArgs[2]; + gTasks[taskId].tInitialBlendY = gBattleAnimArgs[3]; + gTasks[taskId].tTargetBlendY = gBattleAnimArgs[4]; + gTasks[taskId].tBlendColor = gBattleAnimArgs[5]; + gTasks[taskId].tRestoreBlend = FALSE; + BlendColorCycle(taskId, 0, gTasks[taskId].tTargetBlendY); + gTasks[taskId].func = AnimTask_BlendColorCycleLoop; } -static void sub_80B9C2C(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount) +static void BlendColorCycle(u8 taskId, u8 startBlendAmount, u8 targetBlendAmount) { - u32 selectedPalettes = UnpackSelectedBattleAnimPalettes(gTasks[taskId].data[0]); - - BeginNormalPaletteFade(selectedPalettes, - gTasks[taskId].data[1], - initialBlendAmount, - targetBlendAmount, - gTasks[taskId].data[5]); - --gTasks[taskId].data[2]; - gTasks[taskId].data[8] ^= 1; + u32 selectedPalettes = UnpackSelectedBattlePalettes(gTasks[taskId].tPalSelector); + BeginNormalPaletteFade( + selectedPalettes, + gTasks[taskId].tDelay, + startBlendAmount, + targetBlendAmount, + gTasks[taskId].tBlendColor); + + gTasks[taskId].tNumBlends--; + gTasks[taskId].tRestoreBlend ^= 1; } -static void sub_80B9C7C(u8 taskId) +static void AnimTask_BlendColorCycleLoop(u8 taskId) { - u8 initialBlendAmount, targetBlendAmount; - + u8 startBlendAmount, targetBlendAmount; if (!gPaletteFade.active) { - if (gTasks[taskId].data[2] > 0) + if (gTasks[taskId].tNumBlends > 0) { - if (gTasks[taskId].data[8] == 0) + if (!gTasks[taskId].tRestoreBlend) { - initialBlendAmount = gTasks[taskId].data[3]; - targetBlendAmount = gTasks[taskId].data[4]; + // Blend to designated color + startBlendAmount = gTasks[taskId].tInitialBlendY; + targetBlendAmount = gTasks[taskId].tTargetBlendY; } else { - initialBlendAmount = gTasks[taskId].data[4]; - targetBlendAmount = gTasks[taskId].data[3]; + // Blend back to original color + startBlendAmount = gTasks[taskId].tTargetBlendY; + targetBlendAmount = gTasks[taskId].tInitialBlendY; } - if (gTasks[taskId].data[2] == 1) + + if (gTasks[taskId].tNumBlends == 1) targetBlendAmount = 0; - sub_80B9C2C(taskId, initialBlendAmount, targetBlendAmount); + + BlendColorCycle(taskId, startBlendAmount, targetBlendAmount); } else { @@ -461,64 +480,73 @@ static void sub_80B9C7C(u8 taskId) } } +// See AnimTask_BlendColorCycle. Same, but excludes Attacker and Target void AnimTask_BlendColorCycleExclude(u8 taskId) { - s32 battler; + int battler; u32 selectedPalettes = 0; gTasks[taskId].data[0] = gBattleAnimArgs[0]; - gTasks[taskId].data[1] = gBattleAnimArgs[1]; - gTasks[taskId].data[2] = gBattleAnimArgs[2]; - gTasks[taskId].data[3] = gBattleAnimArgs[3]; - gTasks[taskId].data[4] = gBattleAnimArgs[4]; - gTasks[taskId].data[5] = gBattleAnimArgs[5]; - gTasks[taskId].data[8] = 0; - for (battler = 0; battler < gBattlersCount; ++battler) + gTasks[taskId].tDelay = gBattleAnimArgs[1]; + gTasks[taskId].tNumBlends = gBattleAnimArgs[2]; + gTasks[taskId].tInitialBlendY = gBattleAnimArgs[3]; + gTasks[taskId].tTargetBlendY = gBattleAnimArgs[4]; + gTasks[taskId].tBlendColor = gBattleAnimArgs[5]; + gTasks[taskId].tRestoreBlend = 0; + + for (battler = 0; battler < gBattlersCount; battler++) + { if (battler != gBattleAnimAttacker && battler != gBattleAnimTarget) selectedPalettes |= 1 << (battler + 16); + } + if (gBattleAnimArgs[0] == 1) selectedPalettes |= 0xE; - gTasks[taskId].data[9] = selectedPalettes >> 16; - gTasks[taskId].data[10] = selectedPalettes & 0xFF; - sub_80B9DA0(taskId, 0, gTasks[taskId].data[4]); - gTasks[taskId].func = sub_80B9DF0; + + gTasks[taskId].tPalSelectorHi = selectedPalettes >> 16; + gTasks[taskId].tPalSelectorLo = selectedPalettes & 0xFF; + BlendColorCycleExclude(taskId, 0, gTasks[taskId].tTargetBlendY); + gTasks[taskId].func = AnimTask_BlendColorCycleExcludeLoop; } -static void sub_80B9DA0(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount) +static void BlendColorCycleExclude(u8 taskId, u8 startBlendAmount, u8 targetBlendAmount) { - u32 selectedPalettes = ((u16)gTasks[taskId].data[9] << 16) | (u16)gTasks[taskId].data[10]; - - BeginNormalPaletteFade(selectedPalettes, - gTasks[taskId].data[1], - initialBlendAmount, - targetBlendAmount, - gTasks[taskId].data[5]); - --gTasks[taskId].data[2]; - gTasks[taskId].data[8] ^= 1; + u32 selectedPalettes = ((u16)gTasks[taskId].tPalSelectorHi << 16) | (u16)gTasks[taskId].tPalSelectorLo; + BeginNormalPaletteFade( + selectedPalettes, + gTasks[taskId].tDelay, + startBlendAmount, + targetBlendAmount, + gTasks[taskId].tBlendColor); + + gTasks[taskId].tNumBlends--; + gTasks[taskId].tRestoreBlend ^= 1; } -static void sub_80B9DF0(u8 taskId) +static void AnimTask_BlendColorCycleExcludeLoop(u8 taskId) { - u8 initialBlendAmount, targetBlendAmount; - + u8 startBlendAmount, targetBlendAmount; if (!gPaletteFade.active) { - if (gTasks[taskId].data[2] > 0) + if (gTasks[taskId].tNumBlends > 0) { - if (gTasks[taskId].data[8] == 0) + if (!gTasks[taskId].tRestoreBlend) { - initialBlendAmount = gTasks[taskId].data[3]; - targetBlendAmount = gTasks[taskId].data[4]; + // Blend to designated color + startBlendAmount = gTasks[taskId].tInitialBlendY; + targetBlendAmount = gTasks[taskId].tTargetBlendY; } else { - initialBlendAmount = gTasks[taskId].data[4]; - targetBlendAmount = gTasks[taskId].data[3]; + // Blend back to original color + startBlendAmount = gTasks[taskId].tTargetBlendY; + targetBlendAmount = gTasks[taskId].tInitialBlendY; } - if (gTasks[taskId].data[2] == 1) + if (gTasks[taskId].tNumBlends == 1) targetBlendAmount = 0; - sub_80B9DA0(taskId, initialBlendAmount, targetBlendAmount); + + BlendColorCycleExclude(taskId, startBlendAmount, targetBlendAmount); } else { @@ -527,56 +555,59 @@ static void sub_80B9DF0(u8 taskId) } } +// See AnimTask_BlendColorCycle. Same, but selects palette by ANIM_TAG_* void AnimTask_BlendColorCycleByTag(u8 taskId) { - u8 paletteIndex; + gTasks[taskId].tPalTag = gBattleAnimArgs[0]; + gTasks[taskId].tDelay = gBattleAnimArgs[1]; + gTasks[taskId].tNumBlends = gBattleAnimArgs[2]; + gTasks[taskId].tInitialBlendY = gBattleAnimArgs[3]; + gTasks[taskId].tTargetBlendY = gBattleAnimArgs[4]; + gTasks[taskId].tBlendColor = gBattleAnimArgs[5]; + gTasks[taskId].tRestoreBlend = FALSE; - gTasks[taskId].data[0] = gBattleAnimArgs[0]; - gTasks[taskId].data[1] = gBattleAnimArgs[1]; - gTasks[taskId].data[2] = gBattleAnimArgs[2]; - gTasks[taskId].data[3] = gBattleAnimArgs[3]; - gTasks[taskId].data[4] = gBattleAnimArgs[4]; - gTasks[taskId].data[5] = gBattleAnimArgs[5]; - gTasks[taskId].data[8] = 0; - sub_80B9EA8(taskId, 0, gTasks[taskId].data[4]); - gTasks[taskId].func = sub_80B9F04; + BlendColorCycleByTag(taskId, 0, gTasks[taskId].tTargetBlendY); + gTasks[taskId].func = AnimTask_BlendColorCycleByTagLoop; } -static void sub_80B9EA8(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount) +static void BlendColorCycleByTag(u8 taskId, u8 startBlendAmount, u8 targetBlendAmount) { - u8 paletteIndex = IndexOfSpritePaletteTag(gTasks[taskId].data[0]); - - BeginNormalPaletteFade(1 << (paletteIndex + 16), - gTasks[taskId].data[1], - initialBlendAmount, - targetBlendAmount, - gTasks[taskId].data[5]); - --gTasks[taskId].data[2]; - gTasks[taskId].data[8] ^= 1; + u8 paletteIndex = IndexOfSpritePaletteTag(gTasks[taskId].tPalTag); + BeginNormalPaletteFade( + 1 << (paletteIndex + 16), + gTasks[taskId].tDelay, + startBlendAmount, + targetBlendAmount, + gTasks[taskId].tBlendColor); + + gTasks[taskId].tNumBlends--; + gTasks[taskId].tRestoreBlend ^= 1; } -static void sub_80B9F04(u8 taskId) +static void AnimTask_BlendColorCycleByTagLoop(u8 taskId) { - u8 initialBlendAmount, targetBlendAmount; - + u8 startBlendAmount, targetBlendAmount; if (!gPaletteFade.active) { - if (gTasks[taskId].data[2] > 0) + if (gTasks[taskId].tNumBlends > 0) { - if (gTasks[taskId].data[8] == 0) + if (!gTasks[taskId].tRestoreBlend) { - initialBlendAmount = gTasks[taskId].data[3]; - targetBlendAmount = gTasks[taskId].data[4]; + // Blend to designated color + startBlendAmount = gTasks[taskId].tInitialBlendY; + targetBlendAmount = gTasks[taskId].tTargetBlendY; } else { - initialBlendAmount = gTasks[taskId].data[4]; - targetBlendAmount = gTasks[taskId].data[3]; + // Blend back to original color + startBlendAmount = gTasks[taskId].tTargetBlendY; + targetBlendAmount = gTasks[taskId].tInitialBlendY; } - if (gTasks[taskId].data[2] == 1) + if (gTasks[taskId].tNumBlends == 1) targetBlendAmount = 0; - sub_80B9EA8(taskId, initialBlendAmount, targetBlendAmount); + + BlendColorCycleByTag(taskId, startBlendAmount, targetBlendAmount); } else { @@ -585,6 +616,18 @@ static void sub_80B9F04(u8 taskId) } } +#undef tPalSelector +#undef tPalTag +#undef tDelay +#undef tNumBlends +#undef tInitialBlendY +#undef tTargetBlendY +#undef tBlendColor +#undef tRestoreBlend +#undef tPalSelectorHi +#undef tPalSelectorLo + +// Flashes the specified anim tag with given color. Used e.g. to flash the particles red in Hyper Beam void AnimTask_FlashAnimTagWithColor(u8 taskId) { u8 paletteIndex; @@ -603,10 +646,10 @@ void AnimTask_FlashAnimTagWithColor(u8 taskId) gBattleAnimArgs[4], gBattleAnimArgs[4], gBattleAnimArgs[3]); - gTasks[taskId].func = sub_80B9FD8; + gTasks[taskId].func = AnimTask_FlashAnimTagWithColor_Step1; } -static void sub_80B9FD8(u8 taskId) +static void AnimTask_FlashAnimTagWithColor_Step1(u8 taskId) { u32 selectedPalettes; @@ -619,7 +662,7 @@ static void sub_80B9FD8(u8 taskId) return; if (gTasks[taskId].data[2] == 0) { - gTasks[taskId].func = sub_80BA090; + gTasks[taskId].func = AnimTask_FlashAnimTagWithColor_Step2; return; } selectedPalettes = 1 << (IndexOfSpritePaletteTag(gTasks[taskId].data[7]) + 16); @@ -640,7 +683,7 @@ static void sub_80B9FD8(u8 taskId) --gTasks[taskId].data[2]; } -static void sub_80BA090(u8 taskId) +static void AnimTask_FlashAnimTagWithColor_Step2(u8 taskId) { u32 selectedPalettes; @@ -659,7 +702,7 @@ void AnimTask_InvertScreenColor(u8 taskId) u8 targetBattler = gBattleAnimTarget; if (gBattleAnimArgs[0] & 0x100) - selectedPalettes = SelectBattleAnimSpriteAndBgPalettes(1, 0, 0, 0, 0, 0, 0); + selectedPalettes = GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE); if (gBattleAnimArgs[1] & 0x100) selectedPalettes |= (0x10000 << attackerBattler); if (gBattleAnimArgs[2] & 0x100) @@ -668,8 +711,16 @@ void AnimTask_InvertScreenColor(u8 taskId) DestroyAnimVisualTask(taskId); } -// not used -static void sub_80BA16C(u8 taskId) +// Unused +#define tTimer data[0] +#define tLength data[1] +#define tFlagsScenery data[2] +#define tFlagsAttacker data[3] +#define tFlagsTarget data[4] +#define tColorR data[5] +#define tColorG data[6] +#define tColorB data[7] +static void AnimTask_TintPalettes(u8 taskId) { u8 attackerBattler; u8 targetBattler; @@ -708,6 +759,15 @@ static void sub_80BA16C(u8 taskId) } } +#undef tTimer +#undef tLength +#undef tFlagsScenery +#undef tFlagsAttacker +#undef tFlagsTarget +#undef tColorR +#undef tColorG +#undef tColorB + static void AnimShakeMonOrBattleTerrain(struct Sprite *sprite) { u16 var0; @@ -737,11 +797,11 @@ static void AnimShakeMonOrBattleTerrain(struct Sprite *sprite) sprite->data[5] = gBattleAnimArgs[3]; var0 = sprite->data[5] - 2; if (var0 < 2) - sub_80BA3CC(); - sprite->callback = sub_80BA320; + AnimShakeMonOrBattleTerrain_UpdateCoordOffsetEnabled(); + sprite->callback = AnimShakeMonOrBattleTerrain_Step; } -static void sub_80BA320(struct Sprite *sprite) +static void AnimShakeMonOrBattleTerrain_Step(struct Sprite *sprite) { u8 i; u16 var0; @@ -766,58 +826,70 @@ static void sub_80BA320(struct Sprite *sprite) var0 = sprite->data[5] - 2; if (var0 < 2) for (i = 0; i < gBattlersCount; ++i) - gSprites[gBattlerSpriteIds[i]].coordOffsetEnabled = 0; + gSprites[gBattlerSpriteIds[i]].coordOffsetEnabled = FALSE; DestroyAnimSprite(sprite); } } -static void sub_80BA3CC(void) +static void AnimShakeMonOrBattleTerrain_UpdateCoordOffsetEnabled(void) { - gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].coordOffsetEnabled = 0; - gSprites[gBattlerSpriteIds[gBattleAnimTarget]].coordOffsetEnabled = 0; + gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].coordOffsetEnabled = FALSE; + gSprites[gBattlerSpriteIds[gBattleAnimTarget]].coordOffsetEnabled = FALSE; if (gBattleAnimArgs[4] == 2) { - gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].coordOffsetEnabled = 1; - gSprites[gBattlerSpriteIds[gBattleAnimTarget]].coordOffsetEnabled = 1; + gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].coordOffsetEnabled = TRUE; + gSprites[gBattlerSpriteIds[gBattleAnimTarget]].coordOffsetEnabled = TRUE; } else { if (gBattleAnimArgs[4] == 0) - gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].coordOffsetEnabled = 1; + gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].coordOffsetEnabled = TRUE; else - gSprites[gBattlerSpriteIds[gBattleAnimTarget]].coordOffsetEnabled = 1; + gSprites[gBattlerSpriteIds[gBattleAnimTarget]].coordOffsetEnabled = TRUE; } } +// Task data for AnimTask_ShakeBattleTerrain +#define tXOffset data[0] +#define tYOffset data[1] +#define tNumShakes data[2] +#define tTimer data[3] +#define tShakeDelay data[8] + +// Can shake battle terrain back and forth on the X or down and back to original pos on Y (cant shake up from orig pos) +// arg0: x offset of shake +// arg1: y offset of shake +// arg2: number of shakes +// arg3: time between shakes void AnimTask_ShakeBattleTerrain(u8 taskId) { - gTasks[taskId].data[0] = gBattleAnimArgs[0]; - gTasks[taskId].data[1] = gBattleAnimArgs[1]; - gTasks[taskId].data[2] = gBattleAnimArgs[2]; - gTasks[taskId].data[3] = gBattleAnimArgs[3]; - gTasks[taskId].data[8] = gBattleAnimArgs[3]; + gTasks[taskId].tXOffset = gBattleAnimArgs[0]; + gTasks[taskId].tYOffset = gBattleAnimArgs[1]; + gTasks[taskId].tNumShakes = gBattleAnimArgs[2]; + gTasks[taskId].tTimer = gBattleAnimArgs[3]; + gTasks[taskId].tShakeDelay = gBattleAnimArgs[3]; gBattle_BG3_X = gBattleAnimArgs[0]; gBattle_BG3_Y = gBattleAnimArgs[1]; - gTasks[taskId].func = sub_80BA4D0; + gTasks[taskId].func = AnimTask_ShakeBattleTerrain_Step; gTasks[taskId].func(taskId); } -static void sub_80BA4D0(u8 taskId) +static void AnimTask_ShakeBattleTerrain_Step(u8 taskId) { - if (gTasks[taskId].data[3] == 0) + if (gTasks[taskId].tTimer == 0) { - if (gBattle_BG3_X == gTasks[taskId].data[0]) - gBattle_BG3_X = -gTasks[taskId].data[0]; + if (gBattle_BG3_X == gTasks[taskId].tXOffset) + gBattle_BG3_X = -gTasks[taskId].tXOffset; else - gBattle_BG3_X = gTasks[taskId].data[0]; + gBattle_BG3_X = gTasks[taskId].tXOffset; - if (gBattle_BG3_Y == -gTasks[taskId].data[1]) + if (gBattle_BG3_Y == -gTasks[taskId].tYOffset) gBattle_BG3_Y = 0; else - gBattle_BG3_Y = -gTasks[taskId].data[1]; + gBattle_BG3_Y = -gTasks[taskId].tYOffset; - gTasks[taskId].data[3] = gTasks[taskId].data[8]; - if (--gTasks[taskId].data[2] == 0) + gTasks[taskId].tTimer = gTasks[taskId].tShakeDelay; + if (--gTasks[taskId].tNumShakes == 0) { gBattle_BG3_X = 0; gBattle_BG3_Y = 0; @@ -826,26 +898,33 @@ static void sub_80BA4D0(u8 taskId) } else { - --gTasks[taskId].data[3]; + gTasks[taskId].tTimer--; } } +#undef tXOffset +#undef tYOffset +#undef tNumShakes +#undef tTimer +#undef tShakeDelay + static void AnimHitSplatBasic(struct Sprite *sprite) { StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]); if (gBattleAnimArgs[2] == 0) - InitSpritePosToAnimAttacker(sprite, 1); + InitSpritePosToAnimAttacker(sprite, TRUE); else InitSpritePosToAnimTarget(sprite, TRUE); sprite->callback = RunStoredCallbackWhenAffineAnimEnds; StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); } +// Same as basic hit splat but takes a length of time to persist for (arg4) static void AnimHitSplatPersistent(struct Sprite *sprite) { StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]); if (gBattleAnimArgs[2] == 0) - InitSpritePosToAnimAttacker(sprite, 1); + InitSpritePosToAnimAttacker(sprite, TRUE); else InitSpritePosToAnimTarget(sprite, TRUE); sprite->data[0] = gBattleAnimArgs[4]; @@ -853,6 +932,8 @@ static void AnimHitSplatPersistent(struct Sprite *sprite) StoreSpriteCallbackInData6(sprite, DestroyAnimSpriteAfterTimer); } +// For paired hit splats whose position is inverted when used by the opponent on the player. +// Used by Twineedle and Spike Cannon static void AnimHitSplatHandleInvert(struct Sprite *sprite) { if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER && !IsContest()) @@ -865,8 +946,8 @@ static void AnimHitSplatRandom(struct Sprite *sprite) if (gBattleAnimArgs[1] == -1) gBattleAnimArgs[1] = Random() & 3; StartSpriteAffineAnim(sprite, gBattleAnimArgs[1]); - if (gBattleAnimArgs[0] == 0) - InitSpritePosToAnimAttacker(sprite, 0); + if (gBattleAnimArgs[0] == ANIM_ATTACKER) + InitSpritePosToAnimAttacker(sprite, FALSE); else InitSpritePosToAnimTarget(sprite, FALSE); sprite->x2 += (Random() % 48) - 24; @@ -889,8 +970,8 @@ static void AnimHitSplatOnMonEdge(struct Sprite *sprite) static void AnimCrossImpact(struct Sprite *sprite) { - if (gBattleAnimArgs[2] == 0) - InitSpritePosToAnimAttacker(sprite, 1); + if (gBattleAnimArgs[2] == ANIM_ATTACKER) + InitSpritePosToAnimAttacker(sprite, TRUE); else InitSpritePosToAnimTarget(sprite, TRUE); sprite->data[0] = gBattleAnimArgs[3]; @@ -901,14 +982,14 @@ static void AnimCrossImpact(struct Sprite *sprite) static void AnimFlashingHitSplat(struct Sprite *sprite) { StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]); - if (gBattleAnimArgs[2] == 0) - InitSpritePosToAnimAttacker(sprite, 1); + if (gBattleAnimArgs[2] == ANIM_ATTACKER) + InitSpritePosToAnimAttacker(sprite, TRUE); else InitSpritePosToAnimTarget(sprite, TRUE); - sprite->callback = sub_80BA7BC; + sprite->callback = AnimFlashingHitSplat_Step; } -static void sub_80BA7BC(struct Sprite *sprite) +static void AnimFlashingHitSplat_Step(struct Sprite *sprite) { sprite->invisible ^= 1; if (sprite->data[0]++ > 12) diff --git a/src/poison.c b/src/battle_anim_poison.c similarity index 92% rename from src/poison.c rename to src/battle_anim_poison.c index 1a617aeaf..1b1934071 100644 --- a/src/poison.c +++ b/src/battle_anim_poison.c @@ -7,10 +7,10 @@ static void AnimAcidPoisonBubble(struct Sprite *sprite); static void AnimSludgeBombHitParticle(struct Sprite *sprite); static void AnimAcidPoisonDroplet(struct Sprite *sprite); static void AnimBubbleEffect(struct Sprite *sprite); -static void sub_80B1684(struct Sprite *sprite); -static void sub_80B1728(struct Sprite *sprite); -static void sub_80B1798(struct Sprite *sprite); -static void AnimBubbleEffectStep(struct Sprite *sprite); +static void AnimSludgeProjectile_Step(struct Sprite *sprite); +static void AnimAcidPoisonBubble_Step(struct Sprite *sprite); +static void AnimSludgeBombHitParticle_Step(struct Sprite *sprite); +static void AnimBubbleEffect_Step(struct Sprite *sprite); static const union AnimCmd sAnim_ToxicBubble[] = { @@ -194,10 +194,10 @@ static void AnimSludgeProjectile(struct Sprite *sprite) sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3); sprite->data[5] = -30; InitAnimArcTranslation(sprite); - sprite->callback = sub_80B1684; + sprite->callback = AnimSludgeProjectile_Step; } -static void sub_80B1684(struct Sprite *sprite) +static void AnimSludgeProjectile_Step(struct Sprite *sprite) { if (TranslateAnimHorizontalArc(sprite)) DestroyAnimSprite(sprite); @@ -218,10 +218,10 @@ static void AnimAcidPoisonBubble(struct Sprite *sprite) sprite->data[4] = l2 + gBattleAnimArgs[5]; sprite->data[5] = -30; InitAnimArcTranslation(sprite); - sprite->callback = sub_80B1728; + sprite->callback = AnimAcidPoisonBubble_Step; } -static void sub_80B1728(struct Sprite *sprite) +static void AnimAcidPoisonBubble_Step(struct Sprite *sprite) { if (TranslateAnimHorizontalArc(sprite)) DestroyAnimSprite(sprite); @@ -237,10 +237,10 @@ static void AnimSludgeBombHitParticle(struct Sprite *sprite) InitSpriteDataForLinearTranslation(sprite); sprite->data[5] = sprite->data[1] / gBattleAnimArgs[2]; sprite->data[6] = sprite->data[2] / gBattleAnimArgs[2]; - sprite->callback = sub_80B1798; + sprite->callback = AnimSludgeBombHitParticle_Step; } -static void sub_80B1798(struct Sprite *sprite) +static void AnimSludgeBombHitParticle_Step(struct Sprite *sprite) { TranslateSpriteLinearFixedPoint(sprite); sprite->data[1] -= sprite->data[5]; @@ -284,10 +284,10 @@ static void AnimBubbleEffect(struct Sprite *sprite) sprite->x += gBattleAnimArgs[0]; sprite->y += gBattleAnimArgs[1]; } - sprite->callback = AnimBubbleEffectStep; + sprite->callback = AnimBubbleEffect_Step; } -static void AnimBubbleEffectStep(struct Sprite *sprite) +static void AnimBubbleEffect_Step(struct Sprite *sprite) { sprite->data[0] = (sprite->data[0] + 0xB) & 0xFF; sprite->x2 = Sin(sprite->data[0], 4); diff --git a/src/psychic.c b/src/battle_anim_psychic.c similarity index 90% rename from src/psychic.c rename to src/battle_anim_psychic.c index 1c31bfdca..5125001f0 100644 --- a/src/psychic.c +++ b/src/battle_anim_psychic.c @@ -12,18 +12,18 @@ static void AnimQuestionMark(struct Sprite *sprite); static void AnimRedX(struct Sprite *sprite); static void AnimSkillSwapOrb(struct Sprite *sprite); static void AnimPsychoBoost(struct Sprite *sprite); -static void sub_80B300C(struct Sprite *sprite); -static void sub_80B3044(struct Sprite *sprite); -static void sub_80B30B0(struct Sprite *sprite); -static void sub_80B3168(struct Sprite *sprite); -static void sub_80B3384(struct Sprite *sprite); -static void sub_80B33B8(struct Sprite *sprite); -static void sub_80B3454(u8 taskId); -static void sub_80B34DC(u8 taskId); -static void sub_80B3618(u8 taskId); -static void sub_80B3980(u8 taskId); -static void sub_80B3B78(u8 taskId); -static void sub_80B3D78(u8 taskId); +static void AnimDefensiveWall_Step2(struct Sprite *sprite); +static void AnimDefensiveWall_Step3(struct Sprite *sprite); +static void AnimDefensiveWall_Step4(struct Sprite *sprite); +static void AnimDefensiveWall_Step5(struct Sprite *sprite); +static void AnimQuestionMark_Step1(struct Sprite *sprite); +static void AnimQuestionMark_Step2(struct Sprite *sprite); +static void AnimTask_MeditateStretchAttacker_Step(u8 taskId); +static void AnimTask_Teleport_Step(u8 taskId); +static void AnimTask_ImprisonOrbs_Step(u8 taskId); +static void AnimTask_SkillSwap_Step(u8 taskId); +static void AnimTask_ExtrasensoryDistortion_Step(u8 taskId); +static void AnimTask_TransparentCloneGrowAndShrink_Step(u8 taskId); static const union AffineAnimCmd sAffineAnim_PsychUpSpiral[] = { @@ -415,6 +415,7 @@ const struct SpriteTemplate gPsychoBoostOrbSpriteTemplate = .callback = AnimPsychoBoost, }; +// For the rectangular wall sprite used by Reflect, Mirror Coat, etc static void AnimDefensiveWall(struct Sprite *sprite) { if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER || IsContest()) @@ -459,20 +460,22 @@ static void AnimDefensiveWall(struct Sprite *sprite) if (IsContest()) sprite->y += 9; sprite->data[0] = 256 + IndexOfSpritePaletteTag(gBattleAnimArgs[2]) * 16; - sprite->callback = sub_80B300C; - sub_80B300C(sprite); + sprite->callback = AnimDefensiveWall_Step2; + sprite->callback(sprite); } -static void sub_80B300C(struct Sprite *sprite) +// AnimDefensiveWall_Step1 is removed in FRLG from the removal of Contest handling + +static void AnimDefensiveWall_Step2(struct Sprite *sprite) { SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(sprite->data[3], 16 - sprite->data[3])); if (sprite->data[3] == 13) - sprite->callback = sub_80B3044; + sprite->callback = AnimDefensiveWall_Step3; else ++sprite->data[3]; } -static void sub_80B3044(struct Sprite *sprite) +static void AnimDefensiveWall_Step3(struct Sprite *sprite) { u16 color; u16 startOffset; @@ -487,11 +490,11 @@ static void sub_80B3044(struct Sprite *sprite) gPlttBufferFaded[startOffset + i] = gPlttBufferFaded[startOffset + i - 1]; gPlttBufferFaded[startOffset + 1] = color; if (++sprite->data[2] == 16) - sprite->callback = sub_80B30B0; + sprite->callback = AnimDefensiveWall_Step4; } } -static void sub_80B30B0(struct Sprite *sprite) +static void AnimDefensiveWall_Step4(struct Sprite *sprite) { SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(sprite->data[3], 16 - sprite->data[3])); if (--sprite->data[3] == -1) @@ -508,11 +511,11 @@ static void sub_80B30B0(struct Sprite *sprite) gSprites[gBattlerSpriteIds[battler]].invisible = FALSE; } sprite->invisible = TRUE; - sprite->callback = sub_80B3168; + sprite->callback = AnimDefensiveWall_Step5; } } -static void sub_80B3168(struct Sprite *sprite) +static void AnimDefensiveWall_Step5(struct Sprite *sprite) { if (!IsContest()) { @@ -531,13 +534,14 @@ static void sub_80B3168(struct Sprite *sprite) sprite->callback = DestroyAnimSprite; } +// Animates the sparkle that appears during Reflect or Light Screen/Mirror Coat static void AnimWallSparkle(struct Sprite *sprite) { if (sprite->data[0] == 0) { - int arg3 = gBattleAnimArgs[3]; + bool32 ignoreOffsets = gBattleAnimArgs[3]; bool8 respectMonPicOffsets = FALSE; - if (arg3 == 0) + if (!ignoreOffsets) respectMonPicOffsets = TRUE; if (!IsContest() && IsDoubleBattle()) { @@ -589,6 +593,7 @@ static void AnimBentSpoon(struct Sprite *sprite) sprite->callback = RunStoredCallbackWhenAnimEnds; } +// Used by Amnesia static void AnimQuestionMark(struct Sprite *sprite) { s16 x = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_WIDTH) / 2; @@ -600,20 +605,20 @@ static void AnimQuestionMark(struct Sprite *sprite) sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + y; if (sprite->y < 16) sprite->y = 16; - StoreSpriteCallbackInData6(sprite, sub_80B3384); + StoreSpriteCallbackInData6(sprite, AnimQuestionMark_Step1); sprite->callback = RunStoredCallbackWhenAnimEnds; } -static void sub_80B3384(struct Sprite *sprite) +static void AnimQuestionMark_Step1(struct Sprite *sprite) { sprite->oam.affineMode = ST_OAM_AFFINE_NORMAL; sprite->affineAnims = sAffineAnims_QuestionMark; sprite->data[0] = 0; InitSpriteAffineAnim(sprite); - sprite->callback = sub_80B33B8; + sprite->callback = AnimQuestionMark_Step2; } -static void sub_80B33B8(struct Sprite *sprite) +static void AnimQuestionMark_Step2(struct Sprite *sprite) { switch (sprite->data[0]) { @@ -640,10 +645,10 @@ void AnimTask_MeditateStretchAttacker(u8 taskId) task->data[0] = spriteId; PrepareAffineAnimInTaskData(task, spriteId, sAffineAnim_MeditateStretchAttacker); - task->func = sub_80B3454; + task->func = AnimTask_MeditateStretchAttacker_Step; } -static void sub_80B3454(u8 taskId) +static void AnimTask_MeditateStretchAttacker_Step(u8 taskId) { if (!RunAffineAnimFromTaskData(&gTasks[taskId])) DestroyAnimVisualTask(taskId); @@ -659,10 +664,10 @@ void AnimTask_Teleport(u8 taskId) task->data[2] = 0; task->data[3] = GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER ? 4 : 8; PrepareAffineAnimInTaskData(task, task->data[0], sAffineAnim_Teleport); - task->func = sub_80B34DC; + task->func = AnimTask_Teleport_Step; } -static void sub_80B34DC(u8 taskId) +static void AnimTask_Teleport_Step(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -682,7 +687,7 @@ static void sub_80B34DC(u8 taskId) else { gSprites[task->data[0]].invisible = TRUE; - gSprites[task->data[0]].x = 272; + gSprites[task->data[0]].x = DISPLAY_WIDTH + 32; ResetSpriteRotScale(task->data[0]); DestroyAnimVisualTask(taskId); } @@ -704,10 +709,10 @@ void AnimTask_ImprisonOrbs(u8 taskId) task->data[12] = var0 > var1 ? var0 : var1; SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND); SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 0)); - task->func = sub_80B3618; + task->func = AnimTask_ImprisonOrbs_Step; } -static void sub_80B3618(u8 taskId) +static void AnimTask_ImprisonOrbs_Step(u8 taskId) { u16 i; u8 spriteId; @@ -757,7 +762,7 @@ static void sub_80B3618(u8 taskId) if (++task->data[1] == 32) { for (i = 8; i < 13; ++i) - if (task->data[i] != 64) + if (task->data[i] != MAX_SPRITES) DestroySprite(&gSprites[task->data[i]]); ++task->data[0]; } @@ -773,7 +778,7 @@ static void sub_80B3618(u8 taskId) } } -static void sub_80B37A4(struct Sprite *sprite) +static void AnimRedX_Step(struct Sprite *sprite) { if (sprite->data[1] > sprite->data[0] - 10) sprite->invisible = sprite->data[1] & 1; @@ -790,7 +795,7 @@ static void AnimRedX(struct Sprite *sprite) sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); } sprite->data[0] = gBattleAnimArgs[1]; - sprite->callback = sub_80B37A4; + sprite->callback = AnimRedX_Step; } void AnimTask_SkillSwap(u8 taskId) @@ -799,7 +804,7 @@ void AnimTask_SkillSwap(u8 taskId) if (IsContest()) { - if (gBattleAnimArgs[0] == 1) + if (gBattleAnimArgs[0] == ANIM_TARGET) { task->data[10] = -10; task->data[11] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, BATTLER_COORD_ATTR_RIGHT) - 8; @@ -836,10 +841,10 @@ void AnimTask_SkillSwap(u8 taskId) } } task->data[1] = 6; - task->func = sub_80B3980; + task->func = AnimTask_SkillSwap_Step; } -static void sub_80B3980(u8 taskId) +static void AnimTask_SkillSwap_Step(u8 taskId) { u8 spriteId; struct Task *task = &gTasks[taskId]; @@ -881,6 +886,8 @@ static void AnimSkillSwapOrb(struct Sprite *sprite) } } +// The scanline effect that distorts the target during Extrasensory by segmenting the mon vertically and shifting the slices +// arg0: Stage. Stage 0 is a slight right distortion, 1 is a medium left distortion, and 2 is a severe right distortion void AnimTask_ExtrasensoryDistortion(u8 taskId) { s16 i; @@ -932,10 +939,10 @@ void AnimTask_ExtrasensoryDistortion(u8 taskId) scanlineParams.initState = 1; scanlineParams.unused9 = 0; ScanlineEffect_SetParams(scanlineParams); - task->func = sub_80B3B78; + task->func = AnimTask_ExtrasensoryDistortion_Step; } -static void sub_80B3B78(u8 taskId) +static void AnimTask_ExtrasensoryDistortion_Step(u8 taskId) { s16 sineIndex, i; struct Task *task = &gTasks[taskId]; @@ -969,6 +976,8 @@ static void sub_80B3B78(u8 taskId) } } +// Creates a cloned transparent sprite of the battler that grows and then shrinks back to original size. Used by Extrasensory +// arg0: battler void AnimTask_TransparentCloneGrowAndShrink(u8 taskId) { s16 spriteId; @@ -998,10 +1007,10 @@ void AnimTask_TransparentCloneGrowAndShrink(u8 taskId) task->data[13] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); task->data[14] = matrixNum; task->data[15] = spriteId; - task->func = sub_80B3D78; + task->func = AnimTask_TransparentCloneGrowAndShrink_Step; } -static void sub_80B3D78(u8 taskId) +static void AnimTask_TransparentCloneGrowAndShrink_Step(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -1024,7 +1033,7 @@ static void sub_80B3D78(u8 taskId) ++task->data[0]; break; case 2: - obj_delete_but_dont_free_vram(&gSprites[task->data[15]]); + DestroySpriteWithActiveSheet(&gSprites[task->data[15]]); ++task->data[0]; break; case 3: diff --git a/src/rock.c b/src/battle_anim_rock.c similarity index 84% rename from src/rock.c rename to src/battle_anim_rock.c index 7ec10630a..d7b8057ef 100644 --- a/src/rock.c +++ b/src/battle_anim_rock.c @@ -8,21 +8,21 @@ static void AnimFallingRock(struct Sprite *sprite); static void AnimRockFragment(struct Sprite *sprite); -static void AnimDirtParticleAcrossScreen(struct Sprite *sprite); +static void AnimFlyingSandCrescent(struct Sprite *sprite); static void AnimRaiseSprite(struct Sprite *sprite); -static void sub_80B4D00(u8 taskId); +static void AnimTask_Rollout_Step(u8 taskId); static void AnimRolloutParticle(struct Sprite *sprite); static void AnimRockTomb(struct Sprite *sprite); static void AnimRockBlastRock(struct Sprite *sprite); static void AnimRockScatter(struct Sprite *sprite); static void AnimParticleInVortex(struct Sprite *sprite); -static void sub_80B46B4(struct Sprite *sprite); -static void sub_80B47C4(struct Sprite *sprite); -static void sub_80B490C(u8 taskId); -static void sub_80B4E70(struct Task *task); -static u8 sub_80B4FB8(void); -static void sub_80B5024(struct Sprite *sprite); -static void sub_80B50F8(struct Sprite *sprite); +static void AnimFallingRock_Step(struct Sprite *sprite); +static void AnimParticleInVortex_Step(struct Sprite *sprite); +static void AnimTask_LoadSandstormBackground_Step(u8 taskId); +static void CreateRolloutDirtSprite(struct Task *task); +static u8 GetRolloutCounter(void); +static void AnimRockTomb_Step(struct Sprite *sprite); +static void AnimRockScatter_Step(struct Sprite *sprite); static const union AnimCmd sAnim_FlyingRock_0[] = { @@ -125,7 +125,7 @@ const struct SpriteTemplate gFlyingSandCrescentSpriteTemplate = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = AnimDirtParticleAcrossScreen, + .callback = AnimFlyingSandCrescent, }; static const struct Subsprite sFlyingSandSubsprites[] = @@ -133,16 +133,16 @@ static const struct Subsprite sFlyingSandSubsprites[] = { .x = -16, .y = 0, - .shape = ST_OAM_H_RECTANGLE, - .size = 2, + .shape = SPRITE_SHAPE(32x16), + .size = SPRITE_SIZE(32x16), .tileOffset = 0, .priority = 1, }, { .x = 16, .y = 0, - .shape = ST_OAM_H_RECTANGLE, - .size = 2, + .shape = SPRITE_SHAPE(32x16), + .size = SPRITE_SIZE(32x16), .tileOffset = 8, .priority = 1, }, @@ -153,37 +153,37 @@ static const struct SubspriteTable sFlyingSandSubspriteTable[] = { NELEMS(sFlyingSandSubsprites), sFlyingSandSubsprites }, }; -static const union AnimCmd sAnim_BasicRock_0[] = +static const union AnimCmd sAnim_Rock_Biggest[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_BasicRock_1[] = +static const union AnimCmd sAnim_Rock_Bigger[] = { ANIMCMD_FRAME(16, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_WeatherBallRockDown_0[] = +static const union AnimCmd sAnim_Rock_Big[] = { ANIMCMD_FRAME(32, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_WeatherBallRockDown_1[] = +static const union AnimCmd sAnim_Rock_Small[] = { ANIMCMD_FRAME(48, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_TwisterRock_0[] = +static const union AnimCmd sAnim_Rock_Smaller[] = { ANIMCMD_FRAME(64, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_TwisterRock_1[] = +static const union AnimCmd sAnim_Rock_Smallest[] = { ANIMCMD_FRAME(80, 1), ANIMCMD_END, @@ -191,20 +191,12 @@ static const union AnimCmd sAnim_TwisterRock_1[] = static const union AnimCmd *const sAnims_BasicRock[] = { - sAnim_BasicRock_0, - sAnim_BasicRock_1, -}; - -static const union AnimCmd *const sAnims_WeatherBallRockDown[] = -{ - sAnim_WeatherBallRockDown_0, - sAnim_WeatherBallRockDown_1, -}; - -static const union AnimCmd *const sAnims_TwisterRock[] = -{ - sAnim_TwisterRock_0, - sAnim_TwisterRock_1, + sAnim_Rock_Biggest, + sAnim_Rock_Bigger, + sAnim_Rock_Big, + sAnim_Rock_Small, + sAnim_Rock_Smaller, + sAnim_Rock_Smallest, }; const struct SpriteTemplate gAncientPowerRockSpriteTemplate = @@ -229,7 +221,7 @@ const struct SpriteTemplate gRolloutMudSpriteTemplate = .callback = AnimRolloutParticle, }; -const struct SpriteTemplate gUnknown_83E74F0 = +const struct SpriteTemplate gRolloutRockSpriteTemplate = { .tileTag = ANIM_TAG_ROCKS, .paletteTag = ANIM_TAG_ROCKS, @@ -296,7 +288,7 @@ const struct SpriteTemplate gTwisterRockSpriteTemplate = .tileTag = ANIM_TAG_ROCKS, .paletteTag = ANIM_TAG_ROCKS, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = sAnims_TwisterRock, + .anims = &sAnims_BasicRock[4], .images = NULL, .affineAnims = sAffineAnims_BasicRock, .callback = AnimMoveTwisterParticle, @@ -307,7 +299,7 @@ const struct SpriteTemplate gWeatherBallRockDownSpriteTemplate = .tileTag = ANIM_TAG_ROCKS, .paletteTag = ANIM_TAG_ROCKS, .oam = &gOamData_AffineNormal_ObjNormal_32x32, - .anims = sAnims_WeatherBallRockDown, + .anims = &sAnims_BasicRock[2], .images = NULL, .affineAnims = sAffineAnims_BasicRock, .callback = AnimWeatherBallDown, @@ -327,12 +319,12 @@ static void AnimFallingRock(struct Sprite *sprite) sprite->data[3] = 16; sprite->data[4] = -70; sprite->data[5] = gBattleAnimArgs[2]; - StoreSpriteCallbackInData6(sprite, sub_80B46B4); - sprite->callback = TranslateSpriteInEllipseOverDuration; + StoreSpriteCallbackInData6(sprite, AnimFallingRock_Step); + sprite->callback = TranslateSpriteInEllipse; sprite->callback(sprite); } -static void sub_80B46B4(struct Sprite *sprite) +static void AnimFallingRock_Step(struct Sprite *sprite) { sprite->x += sprite->data[5]; sprite->data[0] = 192; @@ -341,10 +333,11 @@ static void sub_80B46B4(struct Sprite *sprite) sprite->data[3] = 32; sprite->data[4] = -24; StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); - sprite->callback = TranslateSpriteInEllipseOverDuration; + sprite->callback = TranslateSpriteInEllipse; sprite->callback(sprite); } +// Animates the rock particles that are shown on the impact for Rock Blast / Rock Smash static void AnimRockFragment(struct Sprite *sprite) { StartSpriteAnim(sprite, gBattleAnimArgs[5]); @@ -366,6 +359,7 @@ static void AnimRockFragment(struct Sprite *sprite) StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); } +// Swirls particle in vortex. Used for moves like Fire Spin or Sand Tomb static void AnimParticleInVortex(struct Sprite *sprite) { if (gBattleAnimArgs[6] == 0) @@ -376,10 +370,10 @@ static void AnimParticleInVortex(struct Sprite *sprite) sprite->data[1] = gBattleAnimArgs[2]; sprite->data[2] = gBattleAnimArgs[4]; sprite->data[3] = gBattleAnimArgs[5]; - sprite->callback = sub_80B47C4; + sprite->callback = AnimParticleInVortex_Step; } -static void sub_80B47C4(struct Sprite *sprite) +static void AnimParticleInVortex_Step(struct Sprite *sprite) { sprite->data[4] += sprite->data[1]; sprite->y2 = -(sprite->data[4] >> 8); @@ -416,10 +410,10 @@ void AnimTask_LoadSandstormBackground(u8 taskId) if (gBattleAnimArgs[0] && GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) var0 = 1; gTasks[taskId].data[0] = var0; - gTasks[taskId].func = sub_80B490C; + gTasks[taskId].func = AnimTask_LoadSandstormBackground_Step; } -static void sub_80B490C(u8 taskId) +static void AnimTask_LoadSandstormBackground_Step(u8 taskId) { struct BattleAnimBgData animBg; @@ -487,7 +481,7 @@ static void sub_80B490C(u8 taskId) // arg 1: projectile speed // arg 2: y pixel drop // arg 3: ??? unknown (possibly a color bit) -static void AnimDirtParticleAcrossScreen(struct Sprite *sprite) +static void AnimFlyingSandCrescent(struct Sprite *sprite) { if (sprite->data[0] == 0) { @@ -518,7 +512,7 @@ static void AnimDirtParticleAcrossScreen(struct Sprite *sprite) sprite->data[4] &= 0xFF; if (sprite->data[5] == 0) { - if (sprite->x + sprite->x2 > 272) + if (sprite->x + sprite->x2 > DISPLAY_WIDTH + 32) { sprite->callback = DestroyAnimSprite; } @@ -550,23 +544,23 @@ static void AnimRaiseSprite(struct Sprite *sprite) void AnimTask_Rollout(u8 taskId) { u16 var0, var1, var2, var3; - u8 var4; + u8 rolloutCounter; s32 var5; s16 pan1, pan2; struct Task *task; task = &gTasks[taskId]; - var0 = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); - var1 = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 24; - var2 = GetBattlerSpriteCoord(gBattleAnimTarget, 2); - var3 = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + 24; + var0 = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + var1 = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y) + 24; + var2 = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + var3 = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + 24; if (BATTLE_PARTNER(gBattleAnimAttacker) == gBattleAnimTarget) var3 = var1; - var4 = sub_80B4FB8(); - if (var4 == 1) + rolloutCounter = GetRolloutCounter(); + if (rolloutCounter == 1) task->data[8] = 32; else - task->data[8] = 48 - (var4 * 8); + task->data[8] = 48 - (rolloutCounter * 8); task->data[0] = 0; task->data[11] = 0; task->data[9] = 0; @@ -585,12 +579,12 @@ void AnimTask_Rollout(u8 taskId) pan2 = BattleAnimAdjustPanning(SOUND_PAN_TARGET); task->data[13] = pan1; task->data[14] = (pan2 - pan1) / task->data[8]; - task->data[1] = var4; + task->data[1] = rolloutCounter; task->data[15] = GetAnimBattlerSpriteId(ANIM_ATTACKER); - task->func = sub_80B4D00; + task->func = AnimTask_Rollout_Step; } -static void sub_80B4D00(u8 taskId) +static void AnimTask_Rollout_Step(u8 taskId) { struct Task *task; @@ -634,7 +628,7 @@ static void sub_80B4D00(u8 taskId) if (++task->data[9] >= task->data[10]) { task->data[9] = 0; - sub_80B4E70(task); + CreateRolloutDirtSprite(task); task->data[13] += task->data[14]; PlaySE12WithPanning(SE_M_DIG, task->data[13]); } @@ -650,10 +644,10 @@ static void sub_80B4D00(u8 taskId) } } -static void sub_80B4E70(struct Task *task) +static void CreateRolloutDirtSprite(struct Task *task) { const struct SpriteTemplate *spriteTemplate; - s32 var0; + s32 tileOffset; u16 x, y; u8 spriteId; @@ -661,20 +655,20 @@ static void sub_80B4E70(struct Task *task) { case 1: spriteTemplate = &gRolloutMudSpriteTemplate; - var0 = 0; + tileOffset = 0; break; case 2: case 3: - spriteTemplate = &gUnknown_83E74F0; - var0 = 80; + spriteTemplate = &gRolloutRockSpriteTemplate; + tileOffset = 80; break; case 4: - spriteTemplate = &gUnknown_83E74F0; - var0 = 64; + spriteTemplate = &gRolloutRockSpriteTemplate; + tileOffset = 64; break; case 5: - spriteTemplate = &gUnknown_83E74F0; - var0 = 48; + spriteTemplate = &gRolloutRockSpriteTemplate; + tileOffset = 48; break; default: return; @@ -689,7 +683,7 @@ static void sub_80B4E70(struct Task *task) gSprites[spriteId].data[2] = ((task->data[12] * 20) + x) + (task->data[1] * 3); gSprites[spriteId].data[4] = y; gSprites[spriteId].data[5] = -16 - (task->data[1] * 2); - gSprites[spriteId].oam.tileNum += var0; + gSprites[spriteId].oam.tileNum += tileOffset; InitAnimArcTranslation(&gSprites[spriteId]); ++task->data[11]; } @@ -700,15 +694,15 @@ static void AnimRolloutParticle(struct Sprite *sprite) { if (TranslateAnimHorizontalArc(sprite)) { - u8 taskId = FindTaskIdByFunc(sub_80B4D00); + u8 taskId = FindTaskIdByFunc(AnimTask_Rollout_Step); - if (taskId != TAIL_SENTINEL) + if (taskId != TASK_NONE) --gTasks[taskId].data[11]; DestroySprite(sprite); } } -static u8 sub_80B4FB8(void) +static u8 GetRolloutCounter(void) { u8 retVal = gAnimDisableStructPtr->rolloutTimerStartValue - gAnimDisableStructPtr->rolloutTimer; u8 var0 = retVal - 1; @@ -726,11 +720,11 @@ static void AnimRockTomb(struct Sprite *sprite) sprite->data[3] -= gBattleAnimArgs[2]; sprite->data[0] = 3; sprite->data[1] = gBattleAnimArgs[3]; - sprite->callback = sub_80B5024; + sprite->callback = AnimRockTomb_Step; sprite->invisible = TRUE; } -static void sub_80B5024(struct Sprite *sprite) +static void AnimRockTomb_Step(struct Sprite *sprite) { sprite->invisible = FALSE; if (sprite->data[3] != 0) @@ -758,18 +752,18 @@ static void AnimRockBlastRock(struct Sprite *sprite) static void AnimRockScatter(struct Sprite *sprite) { - sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 0); - sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1); + sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X); + sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y); sprite->x += gBattleAnimArgs[0]; sprite->y += gBattleAnimArgs[1]; sprite->data[1] = gBattleAnimArgs[0]; sprite->data[2] = gBattleAnimArgs[1]; sprite->data[5] = gBattleAnimArgs[2]; StartSpriteAnim(sprite, gBattleAnimArgs[3]); - sprite->callback = sub_80B50F8; + sprite->callback = AnimRockScatter_Step; } -static void sub_80B50F8(struct Sprite *sprite) +static void AnimRockScatter_Step(struct Sprite *sprite) { sprite->data[0] += 8; sprite->data[3] += sprite->data[1]; @@ -783,11 +777,11 @@ static void sub_80B50F8(struct Sprite *sprite) void AnimTask_GetSeismicTossDamageLevel(u8 taskId) { if (gAnimMoveDmg < 33) - gBattleAnimArgs[7] = 0; + gBattleAnimArgs[ARG_RET_ID] = 0; if ((u32)gAnimMoveDmg - 33 < 33) - gBattleAnimArgs[7] = 1; + gBattleAnimArgs[ARG_RET_ID] = 1; if (gAnimMoveDmg > 65) - gBattleAnimArgs[7] = 2; + gBattleAnimArgs[ARG_RET_ID] = 2; DestroyAnimVisualTask(taskId); } diff --git a/src/battle_anim_smokescreen.c b/src/battle_anim_smokescreen.c new file mode 100644 index 000000000..821884baa --- /dev/null +++ b/src/battle_anim_smokescreen.c @@ -0,0 +1,197 @@ +#include "global.h" +#include "battle_gfx_sfx_util.h" +#include "decompress.h" +#include "graphics.h" +#include "util.h" + +#define TAG_SMOKESCREEN 55019 + +#define PALTAG_SHADOW 55039 +#define GFXTAG_SHADOW 55129 + +static void SpriteCB_SmokescreenImpactMain(struct Sprite *); +static void SpriteCB_SmokescreenImpact(struct Sprite *); + +static const struct CompressedSpriteSheet sSmokescreenImpactSpriteSheet = +{ + .data = gSmokescreenImpactTiles, .size = 0x180, .tag = TAG_SMOKESCREEN +}; + +static const struct CompressedSpritePalette sSmokescreenImpactSpritePalette = +{ + .data = gSmokescreenImpactPalette, .tag = TAG_SMOKESCREEN +}; + +static const struct OamData sOamData_SmokescreenImpact = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x16), + .x = 0, + .matrixNum = 0, + .size = SPRITE_SIZE(16x16), + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0 +}; + +static const union AnimCmd sAnim_SmokescreenImpact_0[] = +{ + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(4, 4), + ANIMCMD_FRAME(8, 4), + ANIMCMD_END +}; + +static const union AnimCmd sAnim_SmokescreenImpact_1[] = +{ + ANIMCMD_FRAME(0, 4, .hFlip = TRUE), + ANIMCMD_FRAME(4, 4, .hFlip = TRUE), + ANIMCMD_FRAME(8, 4, .hFlip = TRUE), + ANIMCMD_END +}; + +static const union AnimCmd sAnim_SmokescreenImpact_2[] = +{ + ANIMCMD_FRAME(0, 4, .vFlip = TRUE), + ANIMCMD_FRAME(4, 4, .vFlip = TRUE), + ANIMCMD_FRAME(8, 4, .vFlip = TRUE), + ANIMCMD_END +}; + +static const union AnimCmd sAnim_SmokescreenImpact_3[] = +{ + ANIMCMD_FRAME(0, 4, .hFlip = TRUE, .vFlip = TRUE), + ANIMCMD_FRAME(4, 4, .hFlip = TRUE, .vFlip = TRUE), + ANIMCMD_FRAME(8, 4, .hFlip = TRUE, .vFlip = TRUE), + ANIMCMD_END +}; + +static const union AnimCmd *const sAnims_SmokescreenImpact[] = +{ + sAnim_SmokescreenImpact_0, + sAnim_SmokescreenImpact_1, + sAnim_SmokescreenImpact_2, + sAnim_SmokescreenImpact_3, +}; + +static const struct SpriteTemplate sSmokescreenImpactSpriteTemplate = +{ + .tileTag = TAG_SMOKESCREEN, + .paletteTag = TAG_SMOKESCREEN, + .oam = &sOamData_SmokescreenImpact, + .anims = sAnims_SmokescreenImpact, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_SmokescreenImpact +}; + +const struct CompressedSpriteSheet gSpriteSheet_EnemyShadow = +{ + .data = gEnemyMonShadow_Gfx, .size = 0x80, .tag = GFXTAG_SHADOW +}; + +static const struct OamData sOamData_EnemyShadow = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x8), + .x = 0, + .matrixNum = 0, + .size = SPRITE_SIZE(32x8), + .tileNum = 0, + .priority = 3, + .paletteNum = 0, + .affineParam = 0 +}; + +const struct SpriteTemplate gSpriteTemplate_EnemyShadow = +{ + .tileTag = GFXTAG_SHADOW, + .paletteTag = PALTAG_SHADOW, + .oam = &sOamData_EnemyShadow, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_SetInvisible +}; + +#define sActiveSprites data[0] +#define sPersist data[1] + +#define sMainSpriteId data[0] + +u8 SmokescreenImpact(s16 x, s16 y, bool8 persist) +{ + u8 mainSpriteId; + u8 spriteId1, spriteId2, spriteId3, spriteId4; + struct Sprite *mainSprite; + + if (GetSpriteTileStartByTag(sSmokescreenImpactSpriteSheet.tag) == 0xFFFF) + { + LoadCompressedSpriteSheetUsingHeap(&sSmokescreenImpactSpriteSheet); + LoadCompressedSpritePaletteUsingHeap(&sSmokescreenImpactSpritePalette); + } + + mainSpriteId = CreateInvisibleSpriteWithCallback(SpriteCB_SmokescreenImpactMain); + mainSprite = &gSprites[mainSpriteId]; + mainSprite->sPersist = persist; + + // Top left sprite + spriteId1 = CreateSprite(&sSmokescreenImpactSpriteTemplate, x - 16, y - 16, 2); + gSprites[spriteId1].sMainSpriteId = mainSpriteId; + mainSprite->sActiveSprites++; + AnimateSprite(&gSprites[spriteId1]); + + // Top right sprite + spriteId2 = CreateSprite(&sSmokescreenImpactSpriteTemplate, x, y - 16, 2); + gSprites[spriteId2].sMainSpriteId = mainSpriteId; + mainSprite->sActiveSprites++; + StartSpriteAnim(&gSprites[spriteId2], 1); + AnimateSprite(&gSprites[spriteId2]); + + // Bottom left sprite + spriteId3 = CreateSprite(&sSmokescreenImpactSpriteTemplate, x - 16, y, 2); + gSprites[spriteId3].sMainSpriteId = mainSpriteId; + mainSprite->sActiveSprites++; + StartSpriteAnim(&gSprites[spriteId3], 2); + AnimateSprite(&gSprites[spriteId3]); + + // Bottom right sprite + spriteId4 = CreateSprite(&sSmokescreenImpactSpriteTemplate, x, y, 2); + gSprites[spriteId4].sMainSpriteId = mainSpriteId; + mainSprite->sActiveSprites++; + StartSpriteAnim(&gSprites[spriteId4], 3); + AnimateSprite(&gSprites[spriteId4]); + + return mainSpriteId; +} + +static void SpriteCB_SmokescreenImpactMain(struct Sprite *sprite) +{ + if (sprite->sActiveSprites == 0) + { + FreeSpriteTilesByTag(sSmokescreenImpactSpriteSheet.tag); + FreeSpritePaletteByTag(sSmokescreenImpactSpritePalette.tag); + if (!sprite->sPersist) + DestroySprite(sprite); + else + sprite->callback = SpriteCallbackDummy; + } +} + +static void SpriteCB_SmokescreenImpact(struct Sprite *sprite) +{ + if (sprite->animEnded) + { + gSprites[sprite->sMainSpriteId].sActiveSprites--; + DestroySprite(sprite); + } +} diff --git a/src/battle_anim_sound_tasks.c b/src/battle_anim_sound_tasks.c index b05819e70..87dc92b15 100644 --- a/src/battle_anim_sound_tasks.c +++ b/src/battle_anim_sound_tasks.c @@ -6,14 +6,21 @@ #include "constants/battle_anim.h" #include "constants/sound.h" -static void sub_80DCE78(u8 taskId); -static void sub_80DCEE4(u8 taskId); -static void sub_80DCFE8(u8 taskId); -static void sub_80DD270(u8 taskId); -static void sub_80DD390(u8 taskId); -static void sub_80DD4D4(u8 taskId); +static void SoundTask_FireBlast_Step1(u8 taskId); +static void SoundTask_FireBlast_Step2(u8 taskId); +static void SoundTask_LoopSEAdjustPanning_Step(u8 taskId); +static void SoundTask_PlayDoubleCry_Step(u8 taskId); +static void SoundTask_PlayCryWithEcho_Step(u8 taskId); +static void SoundTask_AdjustPanningVar_Step(u8 taskId); -void sub_80DCE10(u8 taskId) +// Loops the specified sound effect and pans from the +// attacker to the target. The second specified sound effect +// is played at the very end. This task is effectively +// hardcoded to the move FIRE_BLAST due to the baked-in +// durations. +// arg 0: looped sound effect +// arg 1: ending sound effect +void SoundTask_FireBlast(u8 taskId) { s8 pan1, pan2, panIncrement; @@ -26,10 +33,10 @@ void sub_80DCE10(u8 taskId) gTasks[taskId].data[3] = pan2; gTasks[taskId].data[4] = panIncrement; gTasks[taskId].data[10] = 10; - gTasks[taskId].func = sub_80DCE78; + gTasks[taskId].func = SoundTask_FireBlast_Step1; } -static void sub_80DCE78(u8 taskId) +static void SoundTask_FireBlast_Step1(u8 taskId) { s16 pan = gTasks[taskId].data[2]; s8 panIncrement = gTasks[taskId].data[4]; @@ -38,7 +45,7 @@ static void sub_80DCE78(u8 taskId) { gTasks[taskId].data[10] = 5; gTasks[taskId].data[11] = 0; - gTasks[taskId].func = sub_80DCEE4; + gTasks[taskId].func = SoundTask_FireBlast_Step2; } else { @@ -52,7 +59,7 @@ static void sub_80DCE78(u8 taskId) } } -static void sub_80DCEE4(u8 taskId) +static void SoundTask_FireBlast_Step2(u8 taskId) { if (++gTasks[taskId].data[10] == 6) { @@ -88,11 +95,11 @@ void SoundTask_LoopSEAdjustPanning(u8 taskId) gTasks[taskId].data[10] = 0; gTasks[taskId].data[11] = sourcePan; gTasks[taskId].data[12] = r9; - gTasks[taskId].func = sub_80DCFE8; - sub_80DCFE8(taskId); + gTasks[taskId].func = SoundTask_LoopSEAdjustPanning_Step; + gTasks[taskId].func(taskId); } -static void sub_80DCFE8(u8 taskId) +static void SoundTask_LoopSEAdjustPanning_Step(u8 taskId) { if (gTasks[taskId].data[12]++ == gTasks[taskId].data[6]) { @@ -131,6 +138,7 @@ void SoundTask_PlayCryHighPitch(u8 taskId) battlerId = BATTLE_PARTNER(gBattleAnimAttacker); else battlerId = BATTLE_PARTNER(gBattleAnimTarget); + // Check if battler is visible. if ((gBattleAnimArgs[0] == ANIM_TARGET || gBattleAnimArgs[0] == ANIM_DEF_PARTNER) && !IsBattlerSpriteVisible(battlerId)) @@ -182,7 +190,7 @@ void SoundTask_PlayDoubleCry(u8 taskId) PlayCry_ByMode(species, pan, CRY_MODE_GROWL_1); else // DOUBLE_CRY_ROAR PlayCry_ByMode(species, pan, CRY_MODE_ROAR_1); - gTasks[taskId].func = sub_80DD270; + gTasks[taskId].func = SoundTask_PlayDoubleCry_Step; } else { @@ -190,7 +198,7 @@ void SoundTask_PlayDoubleCry(u8 taskId) } } -static void sub_80DD270(u8 taskId) +static void SoundTask_PlayDoubleCry_Step(u8 taskId) { u16 species = gTasks[taskId].data[1]; s8 pan = gTasks[taskId].data[2]; @@ -199,7 +207,7 @@ static void sub_80DD270(u8 taskId) { ++gTasks[taskId].data[9]; } - else if (gTasks[taskId].data[0] == TAIL_SENTINEL) + else if (gTasks[taskId].data[0] == DOUBLE_CRY_GROWL) { if (!IsCryPlaying()) { @@ -207,10 +215,13 @@ static void sub_80DD270(u8 taskId) DestroyAnimVisualTask(taskId); } } - else if (!IsCryPlaying()) + else // DOUBLE_CRY_ROAR { - PlayCry_ByMode(species, pan, CRY_MODE_ROAR_2); - DestroyAnimVisualTask(taskId); + if (!IsCryPlaying()) + { + PlayCry_ByMode(species, pan, CRY_MODE_ROAR_2); + DestroyAnimVisualTask(taskId); + } } } @@ -222,19 +233,21 @@ void SoundTask_WaitForCry(u8 taskId) DestroyAnimVisualTask(taskId); } -void sub_80DD334(u8 taskId) +#define tSpecies data[1] +#define tPan data[2] +#define tState data[9] + +void SoundTask_PlayCryWithEcho(u8 taskId) { u16 species; - s8 pan; - - pan = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER); + s8 pan = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER); species = gAnimBattlerSpecies[gBattleAnimAttacker]; - gTasks[taskId].data[1] = species; - gTasks[taskId].data[2] = pan; + gTasks[taskId].tSpecies = species; + gTasks[taskId].tPan = pan; if (species != SPECIES_NONE) { PlayCry_ByMode(species, pan, CRY_MODE_ECHO_START); - gTasks[taskId].func = sub_80DD390; + gTasks[taskId].func = SoundTask_PlayCryWithEcho_Step; } else { @@ -242,23 +255,27 @@ void sub_80DD334(u8 taskId) } } -static void sub_80DD390(u8 taskId) +static void SoundTask_PlayCryWithEcho_Step(u8 taskId) { - if (gTasks[taskId].data[9] < 2) + if (gTasks[taskId].tState < 2) { - ++gTasks[taskId].data[9]; + gTasks[taskId].tState++; } else if (!IsCryPlaying()) { - u16 species = gTasks[taskId].data[1]; - s8 pan = gTasks[taskId].data[2]; + u16 species = gTasks[taskId].tSpecies; + s8 pan = gTasks[taskId].tPan; PlayCry_ByMode(species, pan, CRY_MODE_ECHO_END); DestroyAnimVisualTask(taskId); } } +#undef tSpecies +#undef tPan +#undef tState + void SoundTask_PlaySE1WithPanning(u8 taskId) { u16 songId = gBattleAnimArgs[0]; @@ -277,6 +294,8 @@ void SoundTask_PlaySE2WithPanning(u8 taskId) DestroyAnimVisualTask(taskId); } +// Adjusts panning and assigns it to gAnimCustomPanning. Doesnt play sound. +// Used by Confuse Ray and Will-O-Wisp (see uses of gAnimCustomPanning) void SoundTask_AdjustPanningVar(u8 taskId) { s8 targetPan = gBattleAnimArgs[1]; @@ -292,11 +311,11 @@ void SoundTask_AdjustPanningVar(u8 taskId) gTasks[taskId].data[5] = r9; gTasks[taskId].data[10] = 0; gTasks[taskId].data[11] = sourcePan; - gTasks[taskId].func = sub_80DD4D4; - sub_80DD4D4(taskId); + gTasks[taskId].func = SoundTask_AdjustPanningVar_Step; + gTasks[taskId].func(taskId); } -static void sub_80DD4D4(u8 taskId) +static void SoundTask_AdjustPanningVar_Step(u8 taskId) { u16 oldPan, panIncrement = gTasks[taskId].data[3]; @@ -307,7 +326,7 @@ static void sub_80DD4D4(u8 taskId) gTasks[taskId].data[11] = panIncrement + oldPan; gTasks[taskId].data[11] = KeepPanInRange(gTasks[taskId].data[11], oldPan); } - gUnknown_2037F24 = gTasks[taskId].data[11]; + gAnimCustomPanning = gTasks[taskId].data[11]; if (gTasks[taskId].data[11] == gTasks[taskId].data[2]) DestroyAnimVisualTask(taskId); } diff --git a/src/battle_anim_special.c b/src/battle_anim_special.c index 238e0b3bd..8850ebc3a 100644 --- a/src/battle_anim_special.c +++ b/src/battle_anim_special.c @@ -3,6 +3,7 @@ #include "battle.h" #include "battle_anim.h" #include "battle_main.h" +#include "battle_message.h" #include "battle_controllers.h" #include "battle_interface.h" #include "decompress.h" @@ -442,8 +443,8 @@ UNUSED void AnimTask_UnusedLevelUpHealthBox(u8 taskId) gSprites[spriteId3].callback = SpriteCallbackDummy; gSprites[spriteId4].callback = SpriteCallbackDummy; GetBattleAnimBg1Data(&animBgData); - AnimLoadCompressedBgTilemap(animBgData.bgId, gUnknown_D2EC24_Tilemap); - AnimLoadCompressedBgGfx(animBgData.bgId, gUnknown_D2EC24_Gfx, animBgData.tilesOffset); + AnimLoadCompressedBgTilemap(animBgData.bgId, gUnusedLevelupAnimationTilemap); + AnimLoadCompressedBgGfx(animBgData.bgId, gUnusedLevelupAnimationGfx, animBgData.tilesOffset); LoadCompressedPalette(gCureBubblesPal, animBgData.paletteId << 4, 32); gBattle_BG1_X = -gSprites[spriteId3].x + 32; gBattle_BG1_Y = -gSprites[spriteId3].y - 32; @@ -660,7 +661,7 @@ void AnimTask_SwitchOutBallEffect(u8 taskId) priority = gSprites[spriteId].oam.priority; subpriority = gSprites[spriteId].subpriority; gTasks[taskId].data[10] = AnimateBallOpenParticles(x, y + 32, priority, subpriority, ballId); - selectedPalettes = SelectBattleAnimSpriteAndBgPalettes(1, 0, 0, 0, 0, 0, 0); + selectedPalettes = GetBattlePalettesMask(1, 0, 0, 0, 0, 0, 0); gTasks[taskId].data[11] = LaunchBallFadeMonTask(0, gBattleAnimAttacker, selectedPalettes, ballId); gTasks[taskId].data[0]++; break; @@ -2037,7 +2038,7 @@ void AnimTask_IsAttackerBehindSubstitute(u8 taskId) DestroyAnimVisualTask(taskId); } -void AnimTask_TargetToEffectBattler(u8 taskId) +void AnimTask_SetTargetToEffectBattler(u8 taskId) { gBattleAnimTarget = gEffectBattler; DestroyAnimVisualTask(taskId); @@ -2278,7 +2279,7 @@ void AnimTask_SafariOrGhost_DecideAnimSides(u8 taskId) void AnimTask_SafariGetReaction(u8 taskId) { - if (gBattleCommunication[MULTISTRING_CHOOSER] > 2) + if (gBattleCommunication[MULTISTRING_CHOOSER] >= NUM_SAFARI_REACTIONS) gBattleAnimArgs[7] = 0; else gBattleAnimArgs[7] = gBattleCommunication[MULTISTRING_CHOOSER]; diff --git a/src/battle_anim_status_effects.c b/src/battle_anim_status_effects.c index 4abcb083a..8307d1786 100644 --- a/src/battle_anim_status_effects.c +++ b/src/battle_anim_status_effects.c @@ -9,19 +9,17 @@ #include "constants/battle_anim.h" #include "constants/pokemon.h" -// Function Declarations -static u8 sub_8078178(u8 battlerId, bool8 b); -static void sub_80782BC(u8 taskId); -static void sub_80784D8(u8 taskId); -static void sub_8078528(u8 taskId); -static void sub_80785D8(u8 taskId); -static void sub_807862C(u8 taskId); +static u8 Task_FlashingCircleImpacts(u8 battlerId, bool8 b); +static void Task_UpdateFlashingCircleImpacts(u8 taskId); +static void AnimTask_FrozenIceCube_Step1(u8 taskId); +static void AnimTask_FrozenIceCube_Step2(u8 taskId); +static void AnimTask_FrozenIceCube_Step3(u8 taskId); +static void AnimTask_FrozenIceCube_Step4(u8 taskId); static void Task_DoStatusAnimation(u8 taskId); -static void sub_807834C(struct Sprite *sprite); -static void sub_8078380(struct Sprite *sprite); +static void AnimFlashingCircleImpact(struct Sprite *sprite); +static void AnimFlashingCircleImpact_Step(struct Sprite *sprite); -// Data -static const union AnimCmd sUnknown_83BF3E0[] = +static const union AnimCmd sAnim_FlickeringOrb[] = { ANIMCMD_FRAME(0, 3), ANIMCMD_FRAME(4, 3), @@ -30,42 +28,44 @@ static const union AnimCmd sUnknown_83BF3E0[] = ANIMCMD_JUMP(0) }; -static const union AnimCmd *const sSpriteAnimTable_83BF3F4[] = +static const union AnimCmd *const sAnims_FlickeringOrb[] = { - sUnknown_83BF3E0 + sAnim_FlickeringOrb }; -const struct SpriteTemplate gSpriteTemplate_83BF3F8 = +// Unused +static const struct SpriteTemplate sFlickeringOrbSpriteTemplate = { .tileTag = ANIM_TAG_ORB, .paletteTag = ANIM_TAG_ORB, .oam = &gOamData_AffineOff_ObjNormal_16x16, - .anims = sSpriteAnimTable_83BF3F4, + .anims = sAnims_FlickeringOrb, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = SpriteCB_AnimTranslateSpriteLinearAndFlicker2, + .callback = AnimTranslateLinearAndFlicker, }; -const struct SpriteTemplate gSpriteTemplate_83BF410 = +// Unused +static const struct SpriteTemplate sFlickeringOrbFlippedSpriteTemplate = { .tileTag = ANIM_TAG_ORB, .paletteTag = ANIM_TAG_ORB, .oam = &gOamData_AffineOff_ObjNormal_16x16, - .anims = sSpriteAnimTable_83BF3F4, + .anims = sAnims_FlickeringOrb, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = SpriteCB_AnimTranslateSpriteLinearAndFlicker, + .callback = AnimTranslateLinearAndFlicker_Flipped, }; -static const union AnimCmd sUnknown_83BF428[] = +static const union AnimCmd sAnim_WeatherBallNormal[] = { ANIMCMD_FRAME(0, 3), ANIMCMD_JUMP(0) }; -static const union AnimCmd *const sSpriteAnimTable_83BF430[] = +static const union AnimCmd *const sAnims_WeatherBallNormal[] = { - sUnknown_83BF428 + sAnim_WeatherBallNormal }; const struct SpriteTemplate gWeatherBallUpSpriteTemplate = @@ -73,10 +73,10 @@ const struct SpriteTemplate gWeatherBallUpSpriteTemplate = .tileTag = ANIM_TAG_WEATHER_BALL, .paletteTag = ANIM_TAG_WEATHER_BALL, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = sSpriteAnimTable_83BF430, + .anims = sAnims_WeatherBallNormal, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = SpriteCB_WeatherBallUp, + .callback = AnimWeatherBallUp, }; const struct SpriteTemplate gWeatherBallNormalDownSpriteTemplate = @@ -84,13 +84,13 @@ const struct SpriteTemplate gWeatherBallNormalDownSpriteTemplate = .tileTag = ANIM_TAG_WEATHER_BALL, .paletteTag = ANIM_TAG_WEATHER_BALL, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = sSpriteAnimTable_83BF430, + .anims = sAnims_WeatherBallNormal, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimWeatherBallDown, }; -static const union AnimCmd sUnknown_83BF464[] = +static const union AnimCmd sAnim_SpinningSparkle[] = { ANIMCMD_FRAME(0, 3), ANIMCMD_FRAME(16, 3), @@ -100,23 +100,24 @@ static const union AnimCmd sUnknown_83BF464[] = ANIMCMD_END }; -static const union AnimCmd *const sSpriteAnimTable_83BF47C[] = +static const union AnimCmd *const sAnims_SpinningSparkle[] = { - sUnknown_83BF464 + sAnim_SpinningSparkle }; -const struct SpriteTemplate gSpriteTemplate_83BF480 = +const struct SpriteTemplate gSpinningSparkleSpriteTemplate = { .tileTag = ANIM_TAG_SPARKLE_4, .paletteTag = ANIM_TAG_SPARKLE_4, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = sSpriteAnimTable_83BF47C, + .anims = sAnims_SpinningSparkle, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = SpriteCB_TrackOffsetFromAttackerAndWaitAnim, + .callback = AnimSpinningSparkle, }; -const struct SpriteTemplate gSpriteTemplate_83BF498 = +// Unused +static const struct SpriteTemplate sFlickeringFootSpriteTemplate = { .tileTag = ANIM_TAG_MONSTER_FOOT, .paletteTag = ANIM_TAG_MONSTER_FOOT, @@ -124,95 +125,98 @@ const struct SpriteTemplate gSpriteTemplate_83BF498 = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = SpriteCB_AnimTranslateSpriteLinearAndFlicker2, + .callback = AnimTranslateLinearAndFlicker, }; -static const union AnimCmd sUnknown_83BF4B0[] = +static const union AnimCmd sAnim_FlickeringImpact_0[] = { ANIMCMD_FRAME(0, 5), ANIMCMD_JUMP(0) }; -static const union AnimCmd sUnknown_83BF4B8[] = +static const union AnimCmd sAnim_FlickeringImpact_1[] = { ANIMCMD_FRAME(0, 5), ANIMCMD_JUMP(0) }; -static const union AnimCmd sUnknown_83BF4C0[] = +static const union AnimCmd sAnim_FlickeringImpact_2[] = { ANIMCMD_FRAME(0, 5), ANIMCMD_JUMP(0) }; -static const union AnimCmd *const sSpriteAniimTable_83BF4C8[] = +static const union AnimCmd *const sAnims_FlickeringImpact[] = { - sUnknown_83BF4B0, - sUnknown_83BF4B8, - sUnknown_83BF4C0 + sAnim_FlickeringImpact_0, + sAnim_FlickeringImpact_1, + sAnim_FlickeringImpact_2 }; -const struct SpriteTemplate gSpriteTemplate_83BF4D4 = +// Unused +static const struct SpriteTemplate sFlickeringImpactSpriteTemplate = { .tileTag = ANIM_TAG_IMPACT, .paletteTag = ANIM_TAG_IMPACT, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = sSpriteAniimTable_83BF4C8, + .anims = sAnims_FlickeringImpact, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = SpriteCB_AnimTranslateSpriteLinearAndFlicker2, + .callback = AnimTranslateLinearAndFlicker, }; -static const union AnimCmd sUnknown_83BF4EC[] = +static const union AnimCmd sAnim_FlickeringShrinkOrb[] = { ANIMCMD_FRAME(0, 15), ANIMCMD_JUMP(0) }; -static const union AnimCmd *const sSpriteAnimTable_83BF4F4[] = +static const union AnimCmd *const sAnims_FlickeringShrinkOrb[] = { - sUnknown_83BF4EC + sAnim_FlickeringShrinkOrb }; -static const union AffineAnimCmd sUnknown_83BF4F8[] = +static const union AffineAnimCmd sAffineAnim_FlickeringShrinkOrb[] = { AFFINEANIMCMD_FRAME(96, 96, 0, 0), AFFINEANIMCMD_FRAME(2, 2, 0, 1), AFFINEANIMCMD_JUMP(1) }; -static const union AffineAnimCmd *const sSpriteAffineAnimTable_83BF510[] = +static const union AffineAnimCmd *const sAffineAnims_FlickeringShrinkOrb[] = { - sUnknown_83BF4F8 + sAffineAnim_FlickeringShrinkOrb }; -const struct SpriteTemplate gSpriteTemplate_83BF514 = +// Unused +static const struct SpriteTemplate sFlickeringShrinkOrbSpriteTemplate = { .tileTag = ANIM_TAG_ORB, .paletteTag = ANIM_TAG_ORB, .oam = &gOamData_AffineDouble_ObjNormal_16x16, - .anims = sSpriteAnimTable_83BF4F4, + .anims = sAnims_FlickeringShrinkOrb, .images = NULL, - .affineAnims = sSpriteAffineAnimTable_83BF510, - .callback = SpriteCB_AnimTranslateSpriteLinearAndFlicker, + .affineAnims = sAffineAnims_FlickeringShrinkOrb, + .callback = AnimTranslateLinearAndFlicker_Flipped, }; -static const u8 sUnknown_83BF52C[] = _("TASK OVER\nタスクがオ-バ-しました"); +// Presumably some debug text +static const u8 sText_TaskOver[] = _("TASK OVER\nタスクがオ-バ-しました"); -static const struct Subsprite sSubsprites_83BF544[] = +static const struct Subsprite sFrozenIceCubeSubsprites[] = { - {.x = -16, .y = -16, .shape = SPRITE_SHAPE(8x8), .size = 3, .tileOffset = 0, .priority = 2}, - {.x = -16, .y = 48, .shape = SPRITE_SHAPE(16x8), .size = 3, .tileOffset = 64, .priority = 2}, - {.x = 48, .y = -16, .shape = SPRITE_SHAPE(8x16), .size = 3, .tileOffset = 96, .priority = 2}, - {.x = 48, .y = 48, .shape = SPRITE_SHAPE(8x8), .size = 2, .tileOffset = 128, .priority = 2}, + {.x = -16, .y = -16, .shape = SPRITE_SHAPE(64x64), .size = SPRITE_SIZE(64x64), .tileOffset = 0, .priority = 2}, + {.x = -16, .y = 48, .shape = SPRITE_SHAPE(64x32), .size = SPRITE_SIZE(64x32), .tileOffset = 64, .priority = 2}, + {.x = 48, .y = -16, .shape = SPRITE_SHAPE(32x64), .size = SPRITE_SIZE(32x64), .tileOffset = 96, .priority = 2}, + {.x = 48, .y = 48, .shape = SPRITE_SHAPE(32x32), .size = SPRITE_SIZE(32x32), .tileOffset = 128, .priority = 2}, }; -static const struct SubspriteTable sUnknown_83BF554[] = +static const struct SubspriteTable sFrozenIceCubeSubspriteTable[] = { - {NELEMS(sSubsprites_83BF544), sSubsprites_83BF544}, + {NELEMS(sFrozenIceCubeSubsprites), sFrozenIceCubeSubsprites}, }; -static const struct SpriteTemplate sUnknown_83BF55C = +static const struct SpriteTemplate sFrozenIceCubeSpriteTemplate = { .tileTag = ANIM_TAG_ICE_CUBE, .paletteTag = ANIM_TAG_ICE_CUBE, @@ -223,7 +227,7 @@ static const struct SpriteTemplate sUnknown_83BF55C = .callback = SpriteCallbackDummy, }; -static const struct SpriteTemplate sUnknown_83BF574 = +static const struct SpriteTemplate sFlashingCircleImpactSpriteTemplate = { .tileTag = ANIM_TAG_CIRCLE_IMPACT, .paletteTag = ANIM_TAG_CIRCLE_IMPACT, @@ -231,14 +235,14 @@ static const struct SpriteTemplate sUnknown_83BF574 = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_807834C, + .callback = AnimFlashingCircleImpact, }; -// Functions -static u8 sub_8078178(u8 battlerId, bool8 b) +// Unused +static u8 Task_FlashingCircleImpacts(u8 battlerId, bool8 b) { u8 battlerSpriteId = gBattlerSpriteIds[battlerId]; - u8 taskId = CreateTask(sub_80782BC, 10); + u8 taskId = CreateTask(Task_UpdateFlashingCircleImpacts, 10); u8 spriteId2; u8 i; @@ -250,7 +254,7 @@ static u8 sub_8078178(u8 battlerId, bool8 b) gTasks[taskId].data[1] = RGB_RED; for (i = 0; i < 10; i++) { - spriteId2 = CreateSprite(&sUnknown_83BF574, gSprites[battlerSpriteId].x, gSprites[battlerSpriteId].y + 32, 0); + spriteId2 = CreateSprite(&sFlashingCircleImpactSpriteTemplate, gSprites[battlerSpriteId].x, gSprites[battlerSpriteId].y + 32, 0); gSprites[spriteId2].data[0] = i * 51; gSprites[spriteId2].data[1] = -256; gSprites[spriteId2].invisible = TRUE; @@ -263,7 +267,7 @@ static u8 sub_8078178(u8 battlerId, bool8 b) gTasks[taskId].data[1] = RGB_BLUE; for (i = 0; i < 10; i++) { - spriteId2 = CreateSprite(&sUnknown_83BF574, gSprites[battlerSpriteId].x, gSprites[battlerSpriteId].y - 32, 0); + spriteId2 = CreateSprite(&sFlashingCircleImpactSpriteTemplate, gSprites[battlerSpriteId].x, gSprites[battlerSpriteId].y - 32, 0); gSprites[spriteId2].data[0] = i * 51; gSprites[spriteId2].data[1] = 256; gSprites[spriteId2].invisible = TRUE; @@ -275,7 +279,7 @@ static u8 sub_8078178(u8 battlerId, bool8 b) return taskId; } -static void sub_80782BC(u8 taskId) +static void Task_UpdateFlashingCircleImpacts(u8 taskId) { if (gTasks[taskId].data[2] == 2) { @@ -308,13 +312,13 @@ static void sub_80782BC(u8 taskId) } } -static void sub_807834C(struct Sprite *sprite) +static void AnimFlashingCircleImpact(struct Sprite *sprite) { if (sprite->data[6] == 0) { sprite->invisible = FALSE; - sprite->callback = sub_8078380; - sub_8078380(sprite); + sprite->callback = AnimFlashingCircleImpact_Step; + sprite->callback(sprite); } else { @@ -322,7 +326,7 @@ static void sub_807834C(struct Sprite *sprite) } } -static void sub_8078380(struct Sprite *sprite) +static void AnimFlashingCircleImpact_Step(struct Sprite *sprite) { sprite->x2 = Cos(sprite->data[0], 32); sprite->y2 = Sin(sprite->data[0], 8); @@ -354,21 +358,21 @@ void AnimTask_FrozenIceCube(u8 taskId) SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL); SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16)); - spriteId = CreateSprite(&sUnknown_83BF55C, x, y, 4); - if (GetSpriteTileStartByTag(ANIM_TAG_ICE_CUBE) == TAG_NONE) + spriteId = CreateSprite(&sFrozenIceCubeSpriteTemplate, x, y, 4); + if (GetSpriteTileStartByTag(ANIM_TAG_ICE_CUBE) == 0xFFFF) gSprites[spriteId].invisible = TRUE; - SetSubspriteTables(&gSprites[spriteId], sUnknown_83BF554); + SetSubspriteTables(&gSprites[spriteId], sFrozenIceCubeSubspriteTable); gTasks[taskId].data[15] = spriteId; - gTasks[taskId].func = sub_80784D8; + gTasks[taskId].func = AnimTask_FrozenIceCube_Step1; } -static void sub_80784D8(u8 taskId) +static void AnimTask_FrozenIceCube_Step1(u8 taskId) { gTasks[taskId].data[1]++; if (gTasks[taskId].data[1] == 10) { - gTasks[taskId].func = sub_8078528; + gTasks[taskId].func = AnimTask_FrozenIceCube_Step2; gTasks[taskId].data[1] = 0; } else @@ -379,7 +383,7 @@ static void sub_80784D8(u8 taskId) } } -static void sub_8078528(u8 taskId) +static void AnimTask_FrozenIceCube_Step2(u8 taskId) { u8 palIndex = IndexOfSpritePaletteTag(ANIM_TAG_ICE_CUBE); @@ -405,19 +409,19 @@ static void sub_8078528(u8 taskId) if (gTasks[taskId].data[4] == 2) { gTasks[taskId].data[1] = 9; - gTasks[taskId].func = sub_80785D8; + gTasks[taskId].func = AnimTask_FrozenIceCube_Step3; } } } } } -static void sub_80785D8(u8 taskId) +static void AnimTask_FrozenIceCube_Step3(u8 taskId) { gTasks[taskId].data[1]--; if (gTasks[taskId].data[1] == -1) { - gTasks[taskId].func = sub_807862C; + gTasks[taskId].func = AnimTask_FrozenIceCube_Step4; gTasks[taskId].data[1] = 0; } else @@ -428,7 +432,7 @@ static void sub_80785D8(u8 taskId) } } -static void sub_807862C(u8 taskId) +static void AnimTask_FrozenIceCube_Step4(u8 taskId) { gTasks[taskId].data[1]++; if (gTasks[taskId].data[1] == 37) diff --git a/src/battle_anim_utility_funcs.c b/src/battle_anim_utility_funcs.c index 184d21884..d231acf08 100644 --- a/src/battle_anim_utility_funcs.c +++ b/src/battle_anim_utility_funcs.c @@ -18,22 +18,22 @@ struct AnimStatsChangeData static void StartBlendAnimSpriteColor(u8 taskId, u32 selectedPalettes); static void AnimTask_BlendSpriteColor_Step2(u8 taskId); -static void Task_WaitHardwarePaletteFade(u8 taskId); -static void Task_DoCloneBattlerSpriteWithBlend(u8 taskId); -static void Task_FinishCloneBattlerSpriteWithBlend(struct Sprite *sprite); +static void AnimTask_HardwarePaletteFade_Step(u8 taskId); +static void AnimTask_TraceMonBlended_Step(u8 taskId); +static void AnimMonTrace(struct Sprite *sprite); static void AnimTask_DrawFallingWhiteLinesOnAttacker_Step(u8 taskId); static void StatsChangeAnimation_Step1(u8 taskId); static void StatsChangeAnimation_Step2(u8 taskId); static void StatsChangeAnimation_Step3(u8 taskId); -static void sub_80BB6CC(u8 taskId); -static void sub_80BB790(u32 selectedPalettes, u16 color); -static void sub_80BB8A4(u8 taskId); -static void sub_80BBC2C(u8 taskId); -static void sub_80BC19C(u8 taskId); +static void AnimTask_Flash_Step(u8 taskId); +static void SetPalettesToColor(u32 selectedPalettes, u16 color); +static void AnimTask_UpdateSlidingBg(u8 taskId); +static void UpdateMonScrollingBgMask(u8 taskId); +static void AnimTask_WaitAndRestoreVisibility(u8 taskId); static EWRAM_DATA struct AnimStatsChangeData *sAnimStatsChangeData = NULL; -static const u16 sRgbWhite[] = { RGB(31, 31, 31) }; +static const u16 sRgbWhite[] = { RGB_WHITE }; const u8 gBattleAnimRegOffsBgCnt[] = { REG_OFFSET_BG0CNT, REG_OFFSET_BG1CNT, REG_OFFSET_BG2CNT, REG_OFFSET_BG3CNT }; const u8 gBattleIntroRegOffsBgCnt[] = { REG_OFFSET_BG0CNT, REG_OFFSET_BG1CNT, REG_OFFSET_BG2CNT, REG_OFFSET_BG3CNT }; @@ -50,11 +50,11 @@ const u8 gBattleIntroRegOffsBgCnt[] = { REG_OFFSET_BG0CNT, REG_OFFSET_BG1CNT, RE // 8: Player battler right // 9: Enemy battler left // 10: Enemy battler right -void AnimTask_BlendSelected(u8 taskId) +void AnimTask_BlendBattleAnimPal(u8 taskId) { - u32 selectedPalettes = UnpackSelectedBattleAnimPalettes(gBattleAnimArgs[0]); + u32 selectedPalettes = UnpackSelectedBattlePalettes(gBattleAnimArgs[0]); - selectedPalettes |= SelectBattlerSpritePalettes( + selectedPalettes |= GetBattleMonSpritePalettesMask( (gBattleAnimArgs[0] >> 7) & 1, (gBattleAnimArgs[0] >> 8) & 1, (gBattleAnimArgs[0] >> 9) & 1, @@ -72,26 +72,26 @@ void AnimTask_BlendSelected(u8 taskId) // 5: Blend all // 6: Neither bg nor attacker's partner // 7: Neither bg nor target's partner -void AnimTask_BlendExcept(u8 taskId) +void AnimTask_BlendBattleAnimPalExclude(u8 taskId) { u8 battler; u32 selectedPalettes; u8 animBattlers[2]; animBattlers[1] = 0xFF; - selectedPalettes = UnpackSelectedBattleAnimPalettes(1); + selectedPalettes = UnpackSelectedBattlePalettes(1); switch (gBattleAnimArgs[0]) { case 2: selectedPalettes = 0; // fall through - case 0: + case ANIM_ATTACKER: animBattlers[0] = gBattleAnimAttacker; break; case 3: selectedPalettes = 0; // fall through - case 1: + case ANIM_TARGET: animBattlers[0] = gBattleAnimTarget; break; case 4: @@ -122,7 +122,7 @@ void AnimTask_BlendExcept(u8 taskId) void AnimTask_SetCamouflageBlend(u8 taskId) { - u32 selectedPalettes = UnpackSelectedBattleAnimPalettes(gBattleAnimArgs[0]); + u32 selectedPalettes = UnpackSelectedBattlePalettes(gBattleAnimArgs[0]); switch (gBattleTerrain) { @@ -217,16 +217,17 @@ void AnimTask_HardwarePaletteFade(u8 taskId) gBattleAnimArgs[2], gBattleAnimArgs[3], gBattleAnimArgs[4]); - gTasks[taskId].func = Task_WaitHardwarePaletteFade; + gTasks[taskId].func = AnimTask_HardwarePaletteFade_Step; } -static void Task_WaitHardwarePaletteFade(u8 taskId) +static void AnimTask_HardwarePaletteFade_Step(u8 taskId) { if (!gPaletteFade.active) DestroyAnimVisualTask(taskId); } -void AnimTask_CloneBattlerSpriteWithBlend(u8 taskId) +// Used to leave blended traces of a mon, usually to imply speed as in Agility or Aerial Ace +void AnimTask_TraceMonBlended(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -236,9 +237,9 @@ void AnimTask_CloneBattlerSpriteWithBlend(u8 taskId) task->data[3] = gBattleAnimArgs[2]; task->data[4] = gBattleAnimArgs[3]; task->data[5] = 0; - task->func = Task_DoCloneBattlerSpriteWithBlend; + task->func = AnimTask_TraceMonBlended_Step; } -static void Task_DoCloneBattlerSpriteWithBlend(u8 taskId) +static void AnimTask_TraceMonBlended_Step(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -257,7 +258,7 @@ static void Task_DoCloneBattlerSpriteWithBlend(u8 taskId) gSprites[task->data[6]].data[0] = task->data[3]; gSprites[task->data[6]].data[1] = taskId; gSprites[task->data[6]].data[2] = 5; - gSprites[task->data[6]].callback = Task_FinishCloneBattlerSpriteWithBlend; + gSprites[task->data[6]].callback = AnimMonTrace; ++task->data[5]; } --task->data[4]; @@ -270,7 +271,7 @@ static void Task_DoCloneBattlerSpriteWithBlend(u8 taskId) } } -static void Task_FinishCloneBattlerSpriteWithBlend(struct Sprite *sprite) +static void AnimMonTrace(struct Sprite *sprite) { if (sprite->data[0]) { @@ -279,11 +280,12 @@ static void Task_FinishCloneBattlerSpriteWithBlend(struct Sprite *sprite) else { --gTasks[sprite->data[1]].data[sprite->data[2]]; - obj_delete_but_dont_free_vram(sprite); + DestroySpriteWithActiveSheet(sprite); } } -void AnimTask_SetUpCurseBackground(u8 taskId) +// Only used by Curse for non-Ghost mons +void AnimTask_DrawFallingWhiteLinesOnAttacker(u8 taskId) { u16 species; s32 newSpriteId; @@ -330,7 +332,7 @@ void AnimTask_SetUpCurseBackground(u8 taskId) else species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES); spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); - newSpriteId = CreateCloneOfSpriteInWindowMode(gBattleAnimAttacker, spriteId, species); + newSpriteId = CreateInvisibleSpriteCopy(gBattleAnimAttacker, spriteId, species); GetBattleAnimBg1Data(&animBgData); AnimLoadCompressedBgTilemap(animBgData.bgId, gFile_graphics_battle_anims_masks_curse_tilemap); if (IsContest()) @@ -446,11 +448,11 @@ static void StatsChangeAnimation_Step2(u8 taskId) u8 battlerSpriteId; battlerSpriteId = gBattlerSpriteIds[sAnimStatsChangeData->battler1]; - spriteId = CreateCloneOfSpriteInWindowMode(sAnimStatsChangeData->battler1, battlerSpriteId, sAnimStatsChangeData->species); + spriteId = CreateInvisibleSpriteCopy(sAnimStatsChangeData->battler1, battlerSpriteId, sAnimStatsChangeData->species); if (sAnimStatsChangeData->data[3]) { battlerSpriteId = gBattlerSpriteIds[sAnimStatsChangeData->battler2]; - newSpriteId = CreateCloneOfSpriteInWindowMode(sAnimStatsChangeData->battler2, battlerSpriteId, sAnimStatsChangeData->species); + newSpriteId = CreateInvisibleSpriteCopy(sAnimStatsChangeData->battler2, battlerSpriteId, sAnimStatsChangeData->species); } GetBattleAnimBg1Data(&animBgData); if (sAnimStatsChangeData->data[0] == 0) @@ -580,19 +582,19 @@ static void StatsChangeAnimation_Step3(u8 taskId) void AnimTask_Flash(u8 taskId) { - u32 selectedPalettes = SelectBattlerSpritePalettes(1, 1, 1, 1); + u32 selectedPalettes = GetBattleMonSpritePalettesMask(1, 1, 1, 1); - sub_80BB790(selectedPalettes, 0); + SetPalettesToColor(selectedPalettes, 0); gTasks[taskId].data[14] = selectedPalettes >> 16; - selectedPalettes = SelectBattleAnimSpriteAndBgPalettes(1, 0, 0, 0, 0, 0, 0) & 0xFFFF; - sub_80BB790(selectedPalettes, 0xFFFF); + selectedPalettes = GetBattlePalettesMask(1, 0, 0, 0, 0, 0, 0) & 0xFFFF; + SetPalettesToColor(selectedPalettes, 0xFFFF); gTasks[taskId].data[15] = selectedPalettes; gTasks[taskId].data[0] = 0; gTasks[taskId].data[1] = 0; - gTasks[taskId].func = sub_80BB6CC; + gTasks[taskId].func = AnimTask_Flash_Step; } -static void sub_80BB6CC(u8 taskId) +static void AnimTask_Flash_Step(u8 taskId) { u16 i; struct Task *task = &gTasks[taskId]; @@ -637,7 +639,7 @@ static void sub_80BB6CC(u8 taskId) } } -static void sub_80BB790(u32 selectedPalettes, u16 color) +static void SetPalettesToColor(u32 selectedPalettes, u16 color) { u16 i, curOffset, paletteOffset; @@ -665,7 +667,7 @@ void AnimTask_StartSlidingBg(u8 taskId) u8 newTaskId; ToggleBg3Mode(0); - newTaskId = CreateTask(sub_80BB8A4, 5); + newTaskId = CreateTask(AnimTask_UpdateSlidingBg, 5); if (gBattleAnimArgs[2] && GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) { gBattleAnimArgs[0] = -gBattleAnimArgs[0]; @@ -678,7 +680,7 @@ void AnimTask_StartSlidingBg(u8 taskId) DestroyAnimVisualTask(taskId); } -static void sub_80BB8A4(u8 taskId) +static void AnimTask_UpdateSlidingBg(u8 taskId) { gTasks[taskId].data[10] += gTasks[taskId].data[1]; gTasks[taskId].data[11] += gTasks[taskId].data[2]; @@ -713,6 +715,7 @@ void AnimTask_GetTargetIsAttackerPartner(u8 taskId) DestroyAnimVisualTask(taskId); } +// For hiding or subsequently revealing all other battlers void AnimTask_SetAllNonAttackersInvisiblity(u8 taskId) { u16 battler; @@ -723,7 +726,7 @@ void AnimTask_SetAllNonAttackersInvisiblity(u8 taskId) DestroyAnimVisualTask(taskId); } -void StartMonScrollingBgMask(u8 taskId, s32 unused, u16 arg2, u8 battler1, u8 arg4, u8 arg5, u8 arg6, u8 arg7, const u32 *gfx, const u32 *tilemap, const u32 *palette) +void StartMonScrollingBgMask(u8 taskId, s32 unused, u16 scrollSpeed, u8 battler1, bool8 includePartner, u8 numFadeSteps, u8 fadeStepDelay, u8 duration, const u32 *gfx, const u32 *tilemap, const u32 *palette) { u16 species; u8 spriteId, newSpriteId = 0; @@ -731,8 +734,8 @@ void StartMonScrollingBgMask(u8 taskId, s32 unused, u16 arg2, u8 battler1, u8 ar struct BattleAnimBgData animBgData; u8 battler2 = BATTLE_PARTNER(battler1); - if (IsContest() || (arg4 && !IsBattlerSpriteVisible(battler2))) - arg4 = 0; + if (IsContest() || (includePartner && !IsBattlerSpriteVisible(battler2))) + includePartner = FALSE; gBattle_WIN0H = 0; gBattle_WIN0V = 0; SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR @@ -753,9 +756,9 @@ void StartMonScrollingBgMask(u8 taskId, s32 unused, u16 arg2, u8 battler1, u8 ar species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler1]], MON_DATA_SPECIES); else species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler1]], MON_DATA_SPECIES); - spriteId = CreateCloneOfSpriteInWindowMode(battler1, gBattlerSpriteIds[battler1], species); - if (arg4) - newSpriteId = CreateCloneOfSpriteInWindowMode(battler2, gBattlerSpriteIds[battler2], species); + spriteId = CreateInvisibleSpriteCopy(battler1, gBattlerSpriteIds[battler1], species); + if (includePartner) + newSpriteId = CreateInvisibleSpriteCopy(battler2, gBattlerSpriteIds[battler2], species); GetBattleAnimBg1Data(&animBgData); AnimLoadCompressedBgTilemap(animBgData.bgId, tilemap); if (IsContest()) @@ -764,17 +767,17 @@ void StartMonScrollingBgMask(u8 taskId, s32 unused, u16 arg2, u8 battler1, u8 ar LoadCompressedPalette(palette, animBgData.paletteId * 16, 32); gBattle_BG1_X = 0; gBattle_BG1_Y = 0; - gTasks[taskId].data[1] = arg2; - gTasks[taskId].data[4] = arg5; - gTasks[taskId].data[5] = arg7; - gTasks[taskId].data[6] = arg6; + gTasks[taskId].data[1] = scrollSpeed; + gTasks[taskId].data[4] = numFadeSteps; + gTasks[taskId].data[5] = duration; + gTasks[taskId].data[6] = fadeStepDelay; gTasks[taskId].data[0] = spriteId; - gTasks[taskId].data[2] = arg4; + gTasks[taskId].data[2] = includePartner; gTasks[taskId].data[3] = newSpriteId; - gTasks[taskId].func = sub_80BBC2C; + gTasks[taskId].func = UpdateMonScrollingBgMask; } -static void sub_80BBC2C(u8 taskId) +static void UpdateMonScrollingBgMask(u8 taskId) { gTasks[taskId].data[13] += gTasks[taskId].data[1] < 0 ? -gTasks[taskId].data[1] : gTasks[taskId].data[1]; if (gTasks[taskId].data[1] < 0) @@ -856,7 +859,7 @@ void AnimTask_CopyPalUnfadedToBackup(u8 taskId) s32 paletteIndex = 0; if (gBattleAnimArgs[0] == 0) - for (selectedPalettes = SelectBattleAnimSpriteAndBgPalettes(1, 0, 0, 0, 0, 0, 0); + for (selectedPalettes = GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE); (selectedPalettes & 1) == 0; ++paletteIndex) selectedPalettes >>= 1; @@ -874,7 +877,7 @@ void AnimTask_CopyPalUnfadedFromBackup(u8 taskId) s32 paletteIndex = 0; if (gBattleAnimArgs[0] == 0) - for (selectedPalettes = SelectBattleAnimSpriteAndBgPalettes(1, 0, 0, 0, 0, 0, 0); + for (selectedPalettes = GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE); (selectedPalettes & 1) == 0; ++paletteIndex) selectedPalettes >>= 1; @@ -892,7 +895,7 @@ void AnimTask_CopyPalFadedToUnfaded(u8 taskId) s32 paletteIndex = 0; if (gBattleAnimArgs[0] == 0) - for (selectedPalettes = SelectBattleAnimSpriteAndBgPalettes(1, 0, 0, 0, 0, 0, 0); + for (selectedPalettes = GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE); (selectedPalettes & 1) == 0; ++paletteIndex) selectedPalettes >>= 1; @@ -907,9 +910,9 @@ void AnimTask_CopyPalFadedToUnfaded(u8 taskId) void AnimTask_IsContest(u8 taskId) { if (IsContest()) - gBattleAnimArgs[7] = 1; + gBattleAnimArgs[ARG_RET_ID] = TRUE; else - gBattleAnimArgs[7] = 0; + gBattleAnimArgs[ARG_RET_ID] = FALSE; DestroyAnimVisualTask(taskId); } @@ -923,9 +926,9 @@ void AnimTask_SetAnimAttackerAndTargetForEffectTgt(u8 taskId) void AnimTask_IsTargetSameSide(u8 taskId) { if (GetBattlerSide(gBattleAnimAttacker) == GetBattlerSide(gBattleAnimTarget)) - gBattleAnimArgs[7] = 1; + gBattleAnimArgs[ARG_RET_ID] = TRUE; else - gBattleAnimArgs[7] = 0; + gBattleAnimArgs[ARG_RET_ID] = FALSE; DestroyAnimVisualTask(taskId); } @@ -952,12 +955,12 @@ void AnimTask_SetAttackerInvisibleWaitForSignal(u8 taskId) { gTasks[taskId].data[0] = gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].invisible; gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].invisible = 1; - gTasks[taskId].func = sub_80BC19C; + gTasks[taskId].func = AnimTask_WaitAndRestoreVisibility; --gAnimVisualTaskCount; } } -static void sub_80BC19C(u8 taskId) +static void AnimTask_WaitAndRestoreVisibility(u8 taskId) { if (gBattleAnimArgs[7] == 0x1000) { diff --git a/src/water.c b/src/battle_anim_water.c similarity index 96% rename from src/water.c rename to src/battle_anim_water.c index 75ea6c7fa..03d65358d 100644 --- a/src/water.c +++ b/src/battle_anim_water.c @@ -12,8 +12,6 @@ #include "trig.h" #include "util.h" -#define ISO_RANDOMIZE2(val)(1103515245 * (val) + 12345) - static void AnimRainDrop(struct Sprite *); static void AnimRainDrop_Step(struct Sprite *); static void AnimWaterBubbleProjectile(struct Sprite *); @@ -55,9 +53,8 @@ static void AnimTask_WaterSport_Step(u8); static void CreateWaterSportDroplet(struct Task *); static void CreateWaterPulseRingBubbles(struct Sprite *, s32, s32); -// Both unused? Comment copied from pokeemerald -static const u8 gUnknown_83E44F4[] = INCBIN_U8("graphics/battle_anims/unk_83E44F4.4bpp"); -static const u8 gUnknown_83E4874[] = INCBIN_U8("graphics/battle_anims/unk_83E4874.bin"); +static const u8 sUnusedWater_Gfx[] = INCBIN_U8("graphics/battle_anims/unk_83E44F4.4bpp"); +static const u8 sUnusedWater[] = INCBIN_U8("graphics/battle_anims/unk_83E4874.bin"); static const union AnimCmd sAnim_RainDrop[] = { @@ -488,8 +485,8 @@ void AnimTask_CreateRaindrops(u8 taskId) gTasks[taskId].data[0]++; if (gTasks[taskId].data[0] % gTasks[taskId].data[2] == 1) { - x = Random() % 240; - y = Random() % 80; + x = Random() % DISPLAY_WIDTH; + y = Random() % (DISPLAY_HEIGHT / 2); CreateSprite(&gRainDropSpriteTemplate, x, y, 4); } if (gTasks[taskId].data[0] == gTasks[taskId].data[3]) @@ -521,23 +518,23 @@ static void AnimWaterBubbleProjectile(struct Sprite *sprite) if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) { - sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) - gBattleAnimArgs[0]; - sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[1]; + sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) - gBattleAnimArgs[0]; + sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[1]; sprite->animPaused = TRUE; } else { - sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[0]; - sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[1]; + sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + gBattleAnimArgs[0]; + sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[1]; sprite->animPaused = TRUE; } if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; sprite->data[0] = gBattleAnimArgs[6]; sprite->data[1] = sprite->x; - sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2); + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); sprite->data[3] = sprite->y; - sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3); + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); InitAnimLinearTranslation(sprite); spriteId = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy); sprite->data[5] = spriteId; @@ -599,9 +596,9 @@ static void AnimAuroraBeamRings(struct Sprite *sprite) unkArg = gBattleAnimArgs[2]; sprite->data[0] = gBattleAnimArgs[4]; sprite->data[1] = sprite->x; - sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + unkArg; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + unkArg; sprite->data[3] = sprite->y; - sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3]; + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3]; InitAnimLinearTranslation(sprite); sprite->callback = AnimAuroraBeamRings_Step; sprite->affineAnimPaused = TRUE; @@ -653,9 +650,9 @@ static void AnimToTargetInSinWave(struct Sprite *sprite) InitSpritePosToAnimAttacker(sprite, TRUE); sprite->data[0] = 30; sprite->data[1] = sprite->x; - sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2); + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); sprite->data[3] = sprite->y; - sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3); + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); InitAnimLinearTranslation(sprite); sprite->data[5] = 0xD200 / sprite->data[0]; sprite->data[7] = gBattleAnimArgs[3]; @@ -708,8 +705,8 @@ static void AnimHydroCannonCharge(struct Sprite *sprite) { u8 priority; - sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0); - sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1); + sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X); + sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y); sprite->y2 = -10; priority = GetBattlerSpriteSubpriority(gBattleAnimAttacker); if (!IsContest()) @@ -755,14 +752,14 @@ static void AnimHydroCannonBeam(struct Sprite *sprite) else animType = FALSE; if ((u8)gBattleAnimArgs[5] == 0) - coordType = 3; + coordType = BATTLER_COORD_Y_PIC_OFFSET; else coordType = 1; InitSpritePosToAnimAttacker(sprite, animType); if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; sprite->data[0] = gBattleAnimArgs[4]; - sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2]; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2]; sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, coordType) + gBattleAnimArgs[3]; sprite->callback = StartAnimLinearTranslation; StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); @@ -1173,8 +1170,8 @@ static u8 GetWaterSpoutPowerForAnim(void) static void CreateWaterSpoutLaunchDroplets(struct Task *task, u8 taskId) { s16 i; - s16 attackerCoordX = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); - s16 attackerCoordY = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); + s16 attackerCoordX = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + s16 attackerCoordY = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); s16 trigIndex = 172; u8 subpriority = GetBattlerSpriteSubpriority(gBattleAnimAttacker) - 1; s16 increment = 4 - task->data[1]; @@ -1347,8 +1344,8 @@ void AnimTask_WaterSport(u8 taskId) { struct Task *task = &gTasks[taskId]; - task->data[3] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); - task->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); + task->data[3] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + task->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); task->data[7] = (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) ? 1 : -1; if (IsContest()) task->data[7] *= -1; @@ -1520,8 +1517,8 @@ static void AnimWaterPulseRingBubble(struct Sprite *sprite) void AnimWaterPulseRing(struct Sprite *sprite) { InitSpritePosToAnimAttacker(sprite, TRUE); - sprite->data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, 2); - sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 3); + sprite->data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); sprite->data[3] = gBattleAnimArgs[2]; sprite->data[4] = gBattleAnimArgs[3]; sprite->callback = AnimWaterPulseRing_Step; diff --git a/src/battle_controller_oak_old_man.c b/src/battle_controller_oak_old_man.c index b2c8341ef..50331c3d3 100644 --- a/src/battle_controller_oak_old_man.c +++ b/src/battle_controller_oak_old_man.c @@ -15,7 +15,6 @@ #include "battle_interface.h" #include "battle_message.h" #include "reshow_battle_screen.h" -#include "battle_string_ids.h" #include "constants/songs.h" #include "constants/items.h" @@ -1662,7 +1661,7 @@ static void OakOldManHandleSuccessBallThrowAnim(void) { gBattleSpritesDataPtr->animationData->ballThrowCaseId = BALL_3_SHAKES_SUCCESS; gDoingBattleAnim = TRUE; - InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), B_ANIM_SAFARI_BALL_THROW); + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), B_ANIM_BALL_THROW_WITH_TRAINER); gBattlerControllerFuncs[gActiveBattler] = CompleteOnSpecialAnimDone; } @@ -1672,7 +1671,7 @@ static void OakOldManHandleBallThrowAnim(void) gBattleSpritesDataPtr->animationData->ballThrowCaseId = ballThrowCaseId; gDoingBattleAnim = TRUE; - InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), B_ANIM_SAFARI_BALL_THROW); + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), B_ANIM_BALL_THROW_WITH_TRAINER); gBattlerControllerFuncs[gActiveBattler] = CompleteOnSpecialAnimDone; } diff --git a/src/battle_controller_pokedude.c b/src/battle_controller_pokedude.c index 9f27cd1c3..432084b72 100644 --- a/src/battle_controller_pokedude.c +++ b/src/battle_controller_pokedude.c @@ -15,7 +15,6 @@ #include "battle_controllers.h" #include "battle_interface.h" #include "battle_message.h" -#include "battle_string_ids.h" #include "reshow_battle_screen.h" #include "teachy_tv.h" #include "constants/songs.h" diff --git a/src/battle_controller_safari.c b/src/battle_controller_safari.c index 545572416..757c531f7 100644 --- a/src/battle_controller_safari.c +++ b/src/battle_controller_safari.c @@ -376,7 +376,7 @@ static void SafariHandleSuccessBallThrowAnim(void) { gBattleSpritesDataPtr->animationData->ballThrowCaseId = BALL_3_SHAKES_SUCCESS; gDoingBattleAnim = TRUE; - InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), B_ANIM_SAFARI_BALL_THROW); + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), B_ANIM_BALL_THROW_WITH_TRAINER); gBattlerControllerFuncs[gActiveBattler] = CompleteOnSpecialAnimDone; } @@ -386,7 +386,7 @@ static void SafariHandleBallThrowAnim(void) gBattleSpritesDataPtr->animationData->ballThrowCaseId = ballThrowCaseId; gDoingBattleAnim = TRUE; - InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), B_ANIM_SAFARI_BALL_THROW); + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), B_ANIM_BALL_THROW_WITH_TRAINER); gBattlerControllerFuncs[gActiveBattler] = CompleteOnSpecialAnimDone; } diff --git a/src/battle_main.c b/src/battle_main.c index 681230482..349d5e12f 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -9,7 +9,6 @@ #include "battle_message.h" #include "battle_scripts.h" #include "battle_setup.h" -#include "battle_string_ids.h" #include "berry.h" #include "data.h" #include "decompress.h" @@ -2274,8 +2273,8 @@ static void BattleStartClearSetData(void) gLeveledUpInBattle = 0; gAbsentBattlerFlags = 0; gBattleStruct->runTries = 0; - gBattleStruct->safariGoNearCounter = 0; - gBattleStruct->safariPkblThrowCounter = 0; + gBattleStruct->safariRockThrowCounter = 0; + gBattleStruct->safariBaitThrowCounter = 0; *(&gBattleStruct->safariCatchFactor) = gBaseStats[GetMonData(&gEnemyParty[0], MON_DATA_SPECIES)].catchRate * 100 / 1275; *(&gBattleStruct->safariEscapeFactor) = gBaseStats[GetMonData(&gEnemyParty[0], MON_DATA_SPECIES)].safariZoneFleeRate * 100 / 1275; if (gBattleStruct->safariEscapeFactor <= 1) @@ -4331,32 +4330,32 @@ static void HandleAction_WatchesCarefully(void) gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber]; gBattle_BG0_X = 0; gBattle_BG0_Y = 0; - if (gBattleStruct->safariGoNearCounter != 0) + if (gBattleStruct->safariRockThrowCounter != 0) { - --gBattleStruct->safariGoNearCounter; - if (gBattleStruct->safariGoNearCounter == 0) + --gBattleStruct->safariRockThrowCounter; + if (gBattleStruct->safariRockThrowCounter == 0) { *(&gBattleStruct->safariCatchFactor) = gBaseStats[GetMonData(gEnemyParty, MON_DATA_SPECIES)].catchRate * 100 / 1275; - gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_MON_WATCHING; } else { - gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_MON_ANGRY; } } else { - if (gBattleStruct->safariPkblThrowCounter != 0) + if (gBattleStruct->safariBaitThrowCounter != 0) { - --gBattleStruct->safariPkblThrowCounter; - if (gBattleStruct->safariPkblThrowCounter == 0) - gBattleCommunication[MULTISTRING_CHOOSER] = 0; + --gBattleStruct->safariBaitThrowCounter; + if (gBattleStruct->safariBaitThrowCounter == 0) + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_MON_WATCHING; else - gBattleCommunication[5] = 2; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_MON_EATING; } else { - gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_MON_WATCHING; } } gBattlescriptCurrInstr = gBattlescriptsForSafariActions[0]; @@ -4379,10 +4378,10 @@ static void HandleAction_ThrowBait(void) gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber]; gBattle_BG0_X = 0; gBattle_BG0_Y = 0; - gBattleStruct->safariPkblThrowCounter += Random() % 5 + 2; - if (gBattleStruct->safariPkblThrowCounter > 6) - gBattleStruct->safariPkblThrowCounter = 6; - gBattleStruct->safariGoNearCounter = 0; + gBattleStruct->safariBaitThrowCounter += Random() % 5 + 2; + if (gBattleStruct->safariBaitThrowCounter > 6) + gBattleStruct->safariBaitThrowCounter = 6; + gBattleStruct->safariRockThrowCounter = 0; gBattleStruct->safariCatchFactor >>= 1; if (gBattleStruct->safariCatchFactor <= 2) gBattleStruct->safariCatchFactor = 3; @@ -4395,10 +4394,10 @@ static void HandleAction_ThrowRock(void) gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber]; gBattle_BG0_X = 0; gBattle_BG0_Y = 0; - gBattleStruct->safariGoNearCounter += Random() % 5 + 2; - if (gBattleStruct->safariGoNearCounter > 6) - gBattleStruct->safariGoNearCounter = 6; - gBattleStruct->safariPkblThrowCounter = 0; + gBattleStruct->safariRockThrowCounter += Random() % 5 + 2; + if (gBattleStruct->safariRockThrowCounter > 6) + gBattleStruct->safariRockThrowCounter = 6; + gBattleStruct->safariBaitThrowCounter = 0; gBattleStruct->safariCatchFactor <<= 1; if (gBattleStruct->safariCatchFactor > 20) gBattleStruct->safariCatchFactor = 20; diff --git a/src/battle_message.c b/src/battle_message.c index cf332fece..43ebc8444 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -1,6 +1,5 @@ #include "global.h" #include "gflib.h" -#include "battle_string_ids.h" #include "battle.h" #include "battle_anim.h" #include "strings.h" @@ -1186,7 +1185,7 @@ const u16 gInobedientStringIds[] = [B_MSG_PRETEND_NOT_NOTICE] = STRINGID_PKMNPRETENDNOTNOTICE }; -const u16 gSafariPokeblockResultStringIds[] = +const u16 gSafariReactionStringIds[NUM_SAFARI_REACTIONS] = { [B_MSG_MON_WATCHING] = STRINGID_PKMNWATCHINGCAREFULLY, [B_MSG_MON_ANGRY] = STRINGID_PKMNANGRY, diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 272c900bb..5642fa8a6 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -23,7 +23,6 @@ #include "battle_anim.h" #include "battle_ai_script_commands.h" #include "battle_scripts.h" -#include "battle_string_ids.h" #include "reshow_battle_screen.h" #include "battle_controllers.h" #include "battle_interface.h" diff --git a/src/battle_util.c b/src/battle_util.c index bad9457a2..be2422ff7 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -15,7 +15,6 @@ #include "battle_message.h" #include "constants/battle_anim.h" #include "battle_controllers.h" -#include "battle_string_ids.h" #include "battle_ai_script_commands.h" #include "constants/battle.h" #include "constants/moves.h" diff --git a/src/data/battle_anim.h b/src/data/battle_anim.h new file mode 100644 index 000000000..ec8dc3de7 --- /dev/null +++ b/src/data/battle_anim.h @@ -0,0 +1,1625 @@ +const struct OamData gOamData_AffineOff_ObjNormal_8x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x8), + .x = 0, + .size = SPRITE_SIZE(8x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + + +const struct OamData gOamData_AffineOff_ObjNormal_16x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x16), + .x = 0, + .size = SPRITE_SIZE(16x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjNormal_32x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x32), + .x = 0, + .size = SPRITE_SIZE(32x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjNormal_64x64 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(64x64), + .x = 0, + .size = SPRITE_SIZE(64x64), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjNormal_16x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x8), + .x = 0, + .size = SPRITE_SIZE(16x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjNormal_32x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x8), + .x = 0, + .size = SPRITE_SIZE(32x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjNormal_32x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x16), + .x = 0, + .size = SPRITE_SIZE(32x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjNormal_64x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(64x32), + .x = 0, + .size = SPRITE_SIZE(64x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjNormal_8x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x16), + .x = 0, + .size = SPRITE_SIZE(8x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjNormal_8x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x32), + .x = 0, + .size = SPRITE_SIZE(8x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjNormal_16x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x32), + .x = 0, + .size = SPRITE_SIZE(16x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjNormal_32x64 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x64), + .x = 0, + .size = SPRITE_SIZE(32x64), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjNormal_8x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x8), + .x = 0, + .size = SPRITE_SIZE(8x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjNormal_16x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x16), + .x = 0, + .size = SPRITE_SIZE(16x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjNormal_32x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x32), + .x = 0, + .size = SPRITE_SIZE(32x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjNormal_64x64 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(64x64), + .x = 0, + .size = SPRITE_SIZE(64x64), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjNormal_16x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x8), + .x = 0, + .size = SPRITE_SIZE(16x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjNormal_32x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x8), + .x = 0, + .size = SPRITE_SIZE(32x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjNormal_32x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x16), + .x = 0, + .size = SPRITE_SIZE(32x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjNormal_64x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(64x32), + .x = 0, + .size = SPRITE_SIZE(64x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjNormal_8x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x16), + .x = 0, + .size = SPRITE_SIZE(8x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjNormal_8x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x32), + .x = 0, + .size = SPRITE_SIZE(8x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjNormal_16x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x32), + .x = 0, + .size = SPRITE_SIZE(16x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjNormal_32x64 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x64), + .x = 0, + .size = SPRITE_SIZE(32x64), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjNormal_8x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x8), + .x = 0, + .size = SPRITE_SIZE(8x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjNormal_16x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x16), + .x = 0, + .size = SPRITE_SIZE(16x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjNormal_32x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x32), + .x = 0, + .size = SPRITE_SIZE(32x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjNormal_64x64 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(64x64), + .x = 0, + .size = SPRITE_SIZE(64x64), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjNormal_16x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x8), + .x = 0, + .size = SPRITE_SIZE(16x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjNormal_32x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x8), + .x = 0, + .size = SPRITE_SIZE(32x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjNormal_32x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x16), + .x = 0, + .size = SPRITE_SIZE(32x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjNormal_64x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(64x32), + .x = 0, + .size = SPRITE_SIZE(64x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjNormal_8x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x16), + .x = 0, + .size = SPRITE_SIZE(8x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjNormal_8x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x32), + .x = 0, + .size = SPRITE_SIZE(8x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjNormal_16x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x32), + .x = 0, + .size = SPRITE_SIZE(16x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjNormal_32x64 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x64), + .x = 0, + .size = SPRITE_SIZE(32x64), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjBlend_8x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x8), + .x = 0, + .size = SPRITE_SIZE(8x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjBlend_16x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x16), + .x = 0, + .size = SPRITE_SIZE(16x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjBlend_32x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x32), + .x = 0, + .size = SPRITE_SIZE(32x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjBlend_64x64 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(64x64), + .x = 0, + .size = SPRITE_SIZE(64x64), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjBlend_16x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x8), + .x = 0, + .size = SPRITE_SIZE(16x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjBlend_32x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x8), + .x = 0, + .size = SPRITE_SIZE(32x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjBlend_32x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x16), + .x = 0, + .size = SPRITE_SIZE(32x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjBlend_64x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(64x32), + .x = 0, + .size = SPRITE_SIZE(64x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjBlend_8x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x16), + .x = 0, + .size = SPRITE_SIZE(8x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjBlend_8x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x32), + .x = 0, + .size = SPRITE_SIZE(8x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjBlend_16x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x32), + .x = 0, + .size = SPRITE_SIZE(16x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjBlend_32x64 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x64), + .x = 0, + .size = SPRITE_SIZE(32x64), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjBlend_8x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x8), + .x = 0, + .size = SPRITE_SIZE(8x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjBlend_16x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x16), + .x = 0, + .size = SPRITE_SIZE(16x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjBlend_32x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x32), + .x = 0, + .size = SPRITE_SIZE(32x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjBlend_64x64 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(64x64), + .x = 0, + .size = SPRITE_SIZE(64x64), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjBlend_16x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x8), + .x = 0, + .size = SPRITE_SIZE(16x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjBlend_32x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x8), + .x = 0, + .size = SPRITE_SIZE(32x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjBlend_32x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x16), + .x = 0, + .size = SPRITE_SIZE(32x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjBlend_64x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(64x32), + .x = 0, + .size = SPRITE_SIZE(64x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjBlend_8x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x16), + .x = 0, + .size = SPRITE_SIZE(8x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjBlend_8x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x32), + .x = 0, + .size = SPRITE_SIZE(8x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjBlend_16x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x32), + .x = 0, + .size = SPRITE_SIZE(16x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjBlend_32x64 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x64), + .x = 0, + .size = SPRITE_SIZE(32x64), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjBlend_8x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x8), + .x = 0, + .size = SPRITE_SIZE(8x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjBlend_16x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x16), + .x = 0, + .size = SPRITE_SIZE(16x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjBlend_32x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x32), + .x = 0, + .size = SPRITE_SIZE(32x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjBlend_64x64 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(64x64), + .x = 0, + .size = SPRITE_SIZE(64x64), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjBlend_16x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x8), + .x = 0, + .size = SPRITE_SIZE(16x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjBlend_32x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x8), + .x = 0, + .size = SPRITE_SIZE(32x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjBlend_32x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x16), + .x = 0, + .size = SPRITE_SIZE(32x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjBlend_64x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(64x32), + .x = 0, + .size = SPRITE_SIZE(64x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjBlend_8x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x16), + .x = 0, + .size = SPRITE_SIZE(8x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjBlend_8x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x32), + .x = 0, + .size = SPRITE_SIZE(8x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjBlend_16x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x32), + .x = 0, + .size = SPRITE_SIZE(16x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjBlend_32x64 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x64), + .x = 0, + .size = SPRITE_SIZE(32x64), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct CompressedSpriteSheet gBattleAnimPicTable[] = +{ + {gBattleAnimSpriteGfx_Bone, 0x0200, ANIM_TAG_BONE}, + {gBattleAnimSpriteGfx_Spark, 0x0300, ANIM_TAG_SPARK}, + {gBattleAnimSpriteGfx_Pencil, 0x0200, ANIM_TAG_PENCIL}, + {gBattleAnimSpriteGfx_AirWave, 0x0100, ANIM_TAG_AIR_WAVE}, + {gBattleAnimSpriteGfx_Orb, 0x0200, ANIM_TAG_ORB}, + {gBattleAnimSpriteGfx_Sword, 0x0400, ANIM_TAG_SWORD}, + {gBattleAnimSpriteGfx_Seed, 0x0180, ANIM_TAG_SEED}, + {gBattleAnimSpriteGfx_Explosion6, 0x0800, ANIM_TAG_EXPLOSION_6}, + {gBattleAnimSpriteGfx_PinkOrb, 0x0020, ANIM_TAG_PINK_ORB}, + {gBattleAnimSpriteGfx_Gust, 0x0400, ANIM_TAG_GUST}, + {gBattleAnimSpriteGfx_IceCube, 0x1200, ANIM_TAG_ICE_CUBE}, + {gBattleAnimSpriteGfx_Spark2, 0x0180, ANIM_TAG_SPARK_2}, + {gBattleAnimSpriteGfx_Orange, 0x0080, ANIM_TAG_ORANGE}, + {gBattleAnimSpriteGfx_YellowBall, 0x0080, ANIM_TAG_YELLOW_BALL}, + {gBattleAnimSpriteGfx_LockOn, 0x0280, ANIM_TAG_LOCK_ON}, + {gBattleAnimSpriteGfx_TiedBag, 0x0080, ANIM_TAG_TIED_BAG}, + {gBattleAnimSpriteGfx_BlackSmoke, 0x0100, ANIM_TAG_BLACK_SMOKE}, + {gBattleAnimSpriteGfx_BlackBall, 0x0020, ANIM_TAG_BLACK_BALL}, + {gBattleAnimSpriteGfx_Conversion, 0x0080, ANIM_TAG_CONVERSION}, + {gBattleAnimSpriteGfx_Glass, 0x0400, ANIM_TAG_GLASS}, + {gBattleAnimSpriteGfx_HornHit, 0x0200, ANIM_TAG_HORN_HIT}, + {gBattleAnimSpriteGfx_Hit, 0x0A00, ANIM_TAG_HIT}, + {gBattleAnimSpriteGfx_Hit, 0x0A00, ANIM_TAG_HIT_2}, + {gBattleAnimSpriteGfx_BlueShards, 0x0380, ANIM_TAG_BLUE_SHARDS}, + {gBattleAnimSpriteGfx_ClosingEye, 0x0300, ANIM_TAG_CLOSING_EYE}, + {gBattleAnimSpriteGfx_WavingHand, 0x0A00, ANIM_TAG_WAVING_HAND}, + {gBattleAnimSpriteGfx_HitDuplicate, 0x0A00, ANIM_TAG_HIT_DUPLICATE}, + {gBattleAnimSpriteGfx_Leer, 0x0A00, ANIM_TAG_LEER}, + {gBattleAnimSpriteGfx_BlueBurst, 0x0A00, ANIM_TAG_BLUE_BURST}, + {gBattleAnimSpriteGfx_SmallEmber, 0x0A00, ANIM_TAG_SMALL_EMBER}, + {gBattleAnimSpriteGfx_GraySmoke, 0x0A00, ANIM_TAG_GRAY_SMOKE}, + {gBattleAnimSpriteGfx_BlueStar, 0x0E00, ANIM_TAG_BLUE_STAR}, + {gBattleAnimSpriteGfx_BubbleBurst, 0x0380, ANIM_TAG_BUBBLE_BURST}, + {gBattleAnimSpriteGfx_Fire, 0x1000, ANIM_TAG_FIRE}, + {gBattleAnimSpriteGfx_SpinningFire, 0x0800, ANIM_TAG_SPINNING_FIRE}, + {gBattleAnimSpriteGfx_FirePlume, 0x0A00, ANIM_TAG_FIRE_PLUME}, + {gBattleAnimSpriteGfx_Lightning2, 0x0800, ANIM_TAG_LIGHTNING_2}, + {gBattleAnimSpriteGfx_Lightning, 0x0A00, ANIM_TAG_LIGHTNING}, + {gBattleAnimSpriteGfx_ClawSlash2, 0x0A00, ANIM_TAG_CLAW_SLASH_2}, + {gBattleAnimSpriteGfx_ClawSlash, 0x0A00, ANIM_TAG_CLAW_SLASH}, + {gBattleAnimSpriteGfx_Scratch3, 0x0A00, ANIM_TAG_SCRATCH_3}, + {gBattleAnimSpriteGfx_Scratch2, 0x0A00, ANIM_TAG_SCRATCH_2}, + {gBattleAnimSpriteGfx_BubbleBurst2, 0x0A00, ANIM_TAG_BUBBLE_BURST_2}, + {gBattleAnimSpriteGfx_IceChunk, 0x0A00, ANIM_TAG_ICE_CHUNK}, + {gBattleAnimSpriteGfx_Glass2, 0x0A00, ANIM_TAG_GLASS_2}, + {gBattleAnimSpriteGfx_PinkHeart2, 0x0A00, ANIM_TAG_PINK_HEART_2}, + {gBattleAnimSpriteGfx_SapDrip, 0x1000, ANIM_TAG_SAP_DRIP}, + {gBattleAnimSpriteGfx_SapDrip, 0x1000, ANIM_TAG_SAP_DRIP_2}, + {gBattleAnimSpriteGfx_Sparkle1, 0x1000, ANIM_TAG_SPARKLE_1}, + {gBattleAnimSpriteGfx_Sparkle1, 0x1000, ANIM_TAG_SPARKLE_2}, + {gBattleAnimSpriteGfx_HumanoidFoot, 0x0200, ANIM_TAG_HUMANOID_FOOT}, + {gBattleAnimSpriteGfx_MonsterFoot, 0x0200, ANIM_TAG_MONSTER_FOOT}, + {gBattleAnimSpriteGfx_HumanoidHand, 0x0200, ANIM_TAG_HUMANOID_HAND}, + {gBattleAnimSpriteGfx_NoiseLine, 0x0800, ANIM_TAG_NOISE_LINE}, + {gBattleAnimSpriteGfx_YellowUnk, 0x0080, ANIM_TAG_YELLOW_UNK}, + {gBattleAnimSpriteGfx_RedFist, 0x0200, ANIM_TAG_RED_FIST}, + {gBattleAnimSpriteGfx_SlamHit, 0x1000, ANIM_TAG_SLAM_HIT}, + {gBattleAnimSpriteGfx_Ring, 0x0180, ANIM_TAG_RING}, + {gBattleAnimSpriteGfx_Rocks, 0x0C00, ANIM_TAG_ROCKS}, + {gBattleAnimSpriteGfx_Z, 0x0100, ANIM_TAG_Z}, + {gBattleAnimSpriteGfx_YellowUnk2, 0x0040, ANIM_TAG_YELLOW_UNK_2}, + {gBattleAnimSpriteGfx_AirSlash, 0x0180, ANIM_TAG_AIR_SLASH}, + {gBattleAnimSpriteGfx_SpinningGreenOrbs, 0x0800, ANIM_TAG_SPINNING_GREEN_ORBS}, + {gBattleAnimSpriteGfx_Leaf, 0x0480, ANIM_TAG_LEAF}, + {gBattleAnimSpriteGfx_Finger, 0x0200, ANIM_TAG_FINGER}, + {gBattleAnimSpriteGfx_PoisonPowder, 0x0200, ANIM_TAG_POISON_POWDER}, + {gBattleAnimSpriteGfx_BrownTriangle, 0x0100, ANIM_TAG_BROWN_TRIANGLE}, + {gBattleAnimSpriteGfx_PoisonPowder, 0x0200, ANIM_TAG_SLEEP_POWDER}, + {gBattleAnimSpriteGfx_PoisonPowder, 0x0200, ANIM_TAG_STUN_SPORE}, + {gBattleAnimSpriteGfx_PoisonPowder, 0x0200, ANIM_TAG_POWDER}, + {gBattleAnimSpriteGfx_Sparkle3, 0x0200, ANIM_TAG_SPARKLE_3}, + {gBattleAnimSpriteGfx_Sparkle4, 0x0A00, ANIM_TAG_SPARKLE_4}, + {gBattleAnimSpriteGfx_MusicNotes, 0x0300, ANIM_TAG_MUSIC_NOTES}, + {gBattleAnimSpriteGfx_Duck, 0x0180, ANIM_TAG_DUCK}, + {gBattleAnimSpriteGfx_MudSand, 0x00A0, ANIM_TAG_MUD_SAND}, + {gBattleAnimSpriteGfx_Alert, 0x0700, ANIM_TAG_ALERT}, + {gBattleAnimSpriteGfx_BlueFlames, 0x0400, ANIM_TAG_BLUE_FLAMES}, + {gBattleAnimSpriteGfx_BlueFlames2, 0x0200, ANIM_TAG_BLUE_FLAMES_2}, + {gBattleAnimSpriteGfx_Shock4, 0x0300, ANIM_TAG_SHOCK_4}, + {gBattleAnimSpriteGfx_Shock, 0x0C00, ANIM_TAG_SHOCK}, + {gBattleAnimSpriteGfx_Bell2, 0x0A00, ANIM_TAG_BELL_2}, + {gBattleAnimSpriteGfx_PinkGlove, 0x0080, ANIM_TAG_PINK_GLOVE}, + {gBattleAnimSpriteGfx_BlueLines, 0x0040, ANIM_TAG_BLUE_LINES}, + {gBattleAnimSpriteGfx_Impact3, 0x0E00, ANIM_TAG_IMPACT_3}, + {gBattleAnimSpriteGfx_Impact2, 0x0E00, ANIM_TAG_IMPACT_2}, + {gBattleAnimSpriteGfx_Reticle, 0x0280, ANIM_TAG_RETICLE}, + {gBattleAnimSpriteGfx_Breath, 0x0200, ANIM_TAG_BREATH}, + {gBattleAnimSpriteGfx_Anger, 0x0080, ANIM_TAG_ANGER}, + {gBattleAnimSpriteGfx_Snowball, 0x00C0, ANIM_TAG_SNOWBALL}, + {gBattleAnimSpriteGfx_Vine, 0x0A00, ANIM_TAG_VINE}, + {gBattleAnimSpriteGfx_Sword2, 0x0200, ANIM_TAG_SWORD_2}, + {gBattleAnimSpriteGfx_Clapping, 0x0180, ANIM_TAG_CLAPPING}, + {gBattleAnimSpriteGfx_RedTube, 0x0080, ANIM_TAG_RED_TUBE}, + {gBattleAnimSpriteGfx_Amnesia, 0x1000, ANIM_TAG_AMNESIA}, + {gBattleAnimSpriteGfx_String2, 0x0A00, ANIM_TAG_STRING_2}, + {gBattleAnimSpriteGfx_Pencil2, 0x0180, ANIM_TAG_PENCIL_2}, + {gBattleAnimSpriteGfx_Petal, 0x0380, ANIM_TAG_PETAL}, + {gBattleAnimSpriteGfx_BentSpoon, 0x0C00, ANIM_TAG_BENT_SPOON}, + {gBattleAnimSpriteGfx_Web, 0x0200, ANIM_TAG_WEB}, + {gBattleAnimSpriteGfx_MilkBottle, 0x0200, ANIM_TAG_MILK_BOTTLE}, + {gBattleAnimSpriteGfx_Coin, 0x0200, ANIM_TAG_COIN}, + {gBattleAnimSpriteGfx_CrackedEgg, 0x0200, ANIM_TAG_CRACKED_EGG}, + {gBattleAnimSpriteGfx_HatchedEgg, 0x0400, ANIM_TAG_HATCHED_EGG}, + {gBattleAnimSpriteGfx_FreshEgg, 0x0080, ANIM_TAG_FRESH_EGG}, + {gBattleAnimSpriteGfx_Fangs, 0x0400, ANIM_TAG_FANGS}, + {gBattleAnimSpriteGfx_Explosion2, 0x0c00, ANIM_TAG_EXPLOSION_2}, + {gBattleAnimSpriteGfx_Explosion3, 0x0200, ANIM_TAG_EXPLOSION_3}, + {gBattleAnimSpriteGfx_WaterDroplet, 0x1000, ANIM_TAG_WATER_DROPLET}, + {gBattleAnimSpriteGfx_WaterDroplet2, 0x0a00, ANIM_TAG_WATER_DROPLET_2}, + {gBattleAnimSpriteGfx_Seed2, 0x0020, ANIM_TAG_SEED_2}, + {gBattleAnimSpriteGfx_Sprout, 0x0e00, ANIM_TAG_SPROUT}, + {gBattleAnimSpriteGfx_RedWand, 0x0080, ANIM_TAG_RED_WAND}, + {gBattleAnimSpriteGfx_PurpleGreenUnk, 0x0a00, ANIM_TAG_PURPLE_GREEN_UNK}, + {gBattleAnimSpriteGfx_WaterColumn, 0x0400, ANIM_TAG_WATER_COLUMN}, + {gBattleAnimSpriteGfx_MudUnk, 0x0200, ANIM_TAG_MUD_UNK}, + {gBattleAnimSpriteGfx_RainDrops, 0x0700, ANIM_TAG_RAIN_DROPS}, + {gBattleAnimSpriteGfx_FurySwipes, 0x0800, ANIM_TAG_FURY_SWIPES}, + {gBattleAnimSpriteGfx_Vine2, 0x0a00, ANIM_TAG_VINE_2}, + {gBattleAnimSpriteGfx_Teeth, 0x0600, ANIM_TAG_TEETH}, + {gBattleAnimSpriteGfx_Bone2, 0x0800, ANIM_TAG_BONE_2}, + {gBattleAnimSpriteGfx_WhiteBag, 0x0200, ANIM_TAG_WHITE_BAG}, + {gBattleAnimSpriteGfx_Unknown, 0x0040, ANIM_TAG_UNKNOWN}, + {gBattleAnimSpriteGfx_PurpleCoral, 0x0180, ANIM_TAG_PURPLE_CORAL}, + {gBattleAnimSpriteGfx_PurpleDroplet, 0x0600, ANIM_TAG_PURPLE_DROPLET}, + {gBattleAnimSpriteGfx_Shock2, 0x0600, ANIM_TAG_SHOCK_2}, + {gBattleAnimSpriteGfx_ClosingEye2, 0x0200, ANIM_TAG_CLOSING_EYE_2}, + {gBattleAnimSpriteGfx_MetalBall, 0x0080, ANIM_TAG_METAL_BALL}, + {gBattleAnimSpriteGfx_MonsterDoll, 0x0200, ANIM_TAG_MONSTER_DOLL}, + {gBattleAnimSpriteGfx_Whirlwind, 0x0800, ANIM_TAG_WHIRLWIND}, + {gBattleAnimSpriteGfx_Whirlwind2, 0x0080, ANIM_TAG_WHIRLWIND_2}, + {gBattleAnimSpriteGfx_Explosion4, 0x0a00, ANIM_TAG_EXPLOSION_4}, + {gBattleAnimSpriteGfx_Explosion5, 0x0280, ANIM_TAG_EXPLOSION_5}, + {gBattleAnimSpriteGfx_Tongue, 0x0280, ANIM_TAG_TONGUE}, + {gBattleAnimSpriteGfx_Smoke, 0x0100, ANIM_TAG_SMOKE}, + {gBattleAnimSpriteGfx_Smoke2, 0x0200, ANIM_TAG_SMOKE_2}, + {gBattleAnimSpriteGfx_Impact, 0x0200, ANIM_TAG_IMPACT}, + {gBattleAnimSpriteGfx_CircleImpact, 0x0020, ANIM_TAG_CIRCLE_IMPACT}, + {gBattleAnimSpriteGfx_Scratch, 0x0a00, ANIM_TAG_SCRATCH}, + {gBattleAnimSpriteGfx_Cut, 0x0800, ANIM_TAG_CUT}, + {gBattleAnimSpriteGfx_SharpTeeth, 0x0800, ANIM_TAG_SHARP_TEETH}, + {gBattleAnimSpriteGfx_RainbowRings, 0x00c0, ANIM_TAG_RAINBOW_RINGS}, + {gBattleAnimSpriteGfx_IceCrystals, 0x01c0, ANIM_TAG_ICE_CRYSTALS}, + {gBattleAnimSpriteGfx_IceSpikes, 0x0100, ANIM_TAG_ICE_SPIKES}, + {gBattleAnimSpriteGfx_HandsAndFeet, 0x0800, ANIM_TAG_HANDS_AND_FEET}, + {gBattleAnimSpriteGfx_MistCloud, 0x0200, ANIM_TAG_MIST_CLOUD}, + {gBattleAnimSpriteGfx_Clamp, 0x0800, ANIM_TAG_CLAMP}, + {gBattleAnimSpriteGfx_Bubble, 0x0180, ANIM_TAG_BUBBLE}, + {gBattleAnimSpriteGfx_Orbs, 0x0180, ANIM_TAG_ORBS}, + {gBattleAnimSpriteGfx_WaterImpact, 0x0200, ANIM_TAG_WATER_IMPACT}, + {gBattleAnimSpriteGfx_WaterOrb, 0x0200, ANIM_TAG_WATER_ORB}, + {gBattleAnimSpriteGfx_PoisonBubble, 0x0180, ANIM_TAG_POISON_BUBBLE}, + {gBattleAnimSpriteGfx_ToxicBubble, 0x0400, ANIM_TAG_TOXIC_BUBBLE}, + {gBattleAnimSpriteGfx_Spikes, 0x0080, ANIM_TAG_SPIKES}, + {gBattleAnimSpriteGfx_HornHit2, 0x0100, ANIM_TAG_HORN_HIT_2}, + {gBattleAnimSpriteGfx_AirWave2, 0x0100, ANIM_TAG_AIR_WAVE_2}, + {gBattleAnimSpriteGfx_SmallBubbles, 0x0140, ANIM_TAG_SMALL_BUBBLES}, + {gBattleAnimSpriteGfx_RoundShadow, 0x0800, ANIM_TAG_ROUND_SHADOW}, + {gBattleAnimSpriteGfx_Sunlight, 0x0200, ANIM_TAG_SUNLIGHT}, + {gBattleAnimSpriteGfx_Spore, 0x0100, ANIM_TAG_SPORE}, + {gBattleAnimSpriteGfx_Flower, 0x00a0, ANIM_TAG_FLOWER}, + {gBattleAnimSpriteGfx_RazorLeaf, 0x0100, ANIM_TAG_RAZOR_LEAF}, + {gBattleAnimSpriteGfx_Needle, 0x0080, ANIM_TAG_NEEDLE}, + {gBattleAnimSpriteGfx_WhirlwindLines, 0x0300, ANIM_TAG_WHIRLWIND_LINES}, + {gBattleAnimSpriteGfx_GoldRing, 0x0100, ANIM_TAG_GOLD_RING}, + {gBattleAnimSpriteGfx_GoldRing, 0x0100, ANIM_TAG_PURPLE_RING}, + {gBattleAnimSpriteGfx_GoldRing, 0x0100, ANIM_TAG_BLUE_RING}, + {gBattleAnimSpriteGfx_GreenLightWall, 0x0800, ANIM_TAG_GREEN_LIGHT_WALL}, + {gBattleAnimSpriteGfx_GreenLightWall, 0x0800, ANIM_TAG_BLUE_LIGHT_WALL}, + {gBattleAnimSpriteGfx_GreenLightWall, 0x0800, ANIM_TAG_RED_LIGHT_WALL}, + {gBattleAnimSpriteGfx_GreenLightWall, 0x0800, ANIM_TAG_GRAY_LIGHT_WALL}, + {gBattleAnimSpriteGfx_GreenLightWall, 0x0800, ANIM_TAG_ORANGE_LIGHT_WALL}, + {gBattleAnimSpriteGfx_BlackBall2, 0x0080, ANIM_TAG_BLACK_BALL_2}, + {gBattleAnimSpriteGfx_MistCloud, 0x0200, ANIM_TAG_PURPLE_GAS_CLOUD}, + {gBattleAnimSpriteGfx_SparkH, 0x0200, ANIM_TAG_SPARK_H}, + {gBattleAnimSpriteGfx_YellowStar, 0x0200, ANIM_TAG_YELLOW_STAR}, + {gBattleAnimSpriteGfx_LargeFreshEgg, 0x0080, ANIM_TAG_LARGE_FRESH_EGG}, + {gBattleAnimSpriteGfx_ShadowBall, 0x0200, ANIM_TAG_SHADOW_BALL}, + {gBattleAnimSpriteGfx_Lick, 0x0500, ANIM_TAG_LICK}, + {gBattleAnimSpriteGfx_VoidLines, 0x0800, ANIM_TAG_VOID_LINES}, + {gBattleAnimSpriteGfx_String, 0x0400, ANIM_TAG_STRING}, + {gBattleAnimSpriteGfx_WebThread, 0x0020, ANIM_TAG_WEB_THREAD}, + {gBattleAnimSpriteGfx_SpiderWeb, 0x0800, ANIM_TAG_SPIDER_WEB}, + {gBattleAnimSpriteGfx_Lightbulb, 0x0100, ANIM_TAG_LIGHTBULB}, + {gBattleAnimSpriteGfx_Slash, 0x0800, ANIM_TAG_SLASH}, + {gBattleAnimSpriteGfx_FocusEnergy, 0x0400, ANIM_TAG_FOCUS_ENERGY}, + {gBattleAnimSpriteGfx_SphereToCube, 0x0a00, ANIM_TAG_SPHERE_TO_CUBE}, + {gBattleAnimSpriteGfx_Tendrils, 0x1000, ANIM_TAG_TENDRILS}, + {gBattleAnimSpriteGfx_Eye, 0x0800, ANIM_TAG_EYE}, + {gBattleAnimSpriteGfx_WhiteShadow, 0x0400, ANIM_TAG_WHITE_SHADOW}, + {gBattleAnimSpriteGfx_TealAlert, 0x0200, ANIM_TAG_TEAL_ALERT}, + {gBattleAnimSpriteGfx_OpeningEye, 0x0800, ANIM_TAG_OPENING_EYE}, + {gBattleAnimSpriteGfx_RoundWhiteHalo, 0x0800, ANIM_TAG_ROUND_WHITE_HALO}, + {gBattleAnimSpriteGfx_FangAttack, 0x0800, ANIM_TAG_FANG_ATTACK}, + {gBattleAnimSpriteGfx_PurpleHandOutline, 0x0200, ANIM_TAG_PURPLE_HAND_OUTLINE}, + {gBattleAnimSpriteGfx_Moon, 0x0800, ANIM_TAG_MOON}, + {gBattleAnimSpriteGfx_GreenSparkle, 0x0200, ANIM_TAG_GREEN_SPARKLE}, + {gBattleAnimSpriteGfx_Spiral, 0x0800, ANIM_TAG_SPIRAL}, + {gBattleAnimSpriteGfx_SnoreZ, 0x0200, ANIM_TAG_SNORE_Z}, + {gBattleAnimSpriteGfx_Explosion, 0x0800, ANIM_TAG_EXPLOSION}, + {gBattleAnimSpriteGfx_Nail, 0x0400, ANIM_TAG_NAIL}, + {gBattleAnimSpriteGfx_GhostlySpirit, 0x0200, ANIM_TAG_GHOSTLY_SPIRIT}, + {gBattleAnimSpriteGfx_WarmRock, 0x0a80, ANIM_TAG_WARM_ROCK}, + {gBattleAnimSpriteGfx_BreakingEgg, 0x0600, ANIM_TAG_BREAKING_EGG}, + {gBattleAnimSpriteGfx_ThinRing, 0x0800, ANIM_TAG_THIN_RING}, + {gBattleAnimSpriteGfx_PunchImpact, 0x0200, ANIM_TAG_PUNCH_IMPACT}, + {gBattleAnimSpriteGfx_Bell, 0x0600, ANIM_TAG_BELL}, + {gBattleAnimSpriteGfx_MusicNotes2, 0x0800, ANIM_TAG_MUSIC_NOTES_2}, + {gBattleAnimSpriteGfx_SpeedDust, 0x0180, ANIM_TAG_SPEED_DUST}, + {gBattleAnimSpriteGfx_TornMetal, 0x0800, ANIM_TAG_TORN_METAL}, + {gBattleAnimSpriteGfx_ThoughtBubble, 0x0800, ANIM_TAG_THOUGHT_BUBBLE}, + {gBattleAnimSpriteGfx_MagentaHeart, 0x0080, ANIM_TAG_MAGENTA_HEART}, + {gBattleAnimSpriteGfx_ElectricOrbs, 0x0080, ANIM_TAG_ELECTRIC_ORBS}, + {gBattleAnimSpriteGfx_CircleOfLight, 0x0800, ANIM_TAG_CIRCLE_OF_LIGHT}, + {gBattleAnimSpriteGfx_Electricity, 0x0800, ANIM_TAG_ELECTRICITY}, + {gBattleAnimSpriteGfx_Finger2, 0x0600, ANIM_TAG_FINGER_2}, + {gBattleAnimSpriteGfx_MovementWaves, 0x0600, ANIM_TAG_MOVEMENT_WAVES}, + {gBattleAnimSpriteGfx_MagentaHeart, 0x0080, ANIM_TAG_RED_HEART}, + {gBattleAnimSpriteGfx_RedOrb, 0x0080, ANIM_TAG_RED_ORB}, + {gBattleAnimSpriteGfx_EyeSparkle, 0x0180, ANIM_TAG_EYE_SPARKLE}, + {gBattleAnimSpriteGfx_MagentaHeart, 0x0080, ANIM_TAG_PINK_HEART}, + {gBattleAnimSpriteGfx_Angel, 0x0200, ANIM_TAG_ANGEL}, + {gBattleAnimSpriteGfx_Devil, 0x0400, ANIM_TAG_DEVIL}, + {gBattleAnimSpriteGfx_Swipe, 0x0a00, ANIM_TAG_SWIPE}, + {gBattleAnimSpriteGfx_Roots, 0x0800, ANIM_TAG_ROOTS}, + {gBattleAnimSpriteGfx_ItemBag, 0x0200, ANIM_TAG_ITEM_BAG}, + {gBattleAnimSpriteGfx_JaggedMusicNote, 0x0400, ANIM_TAG_JAGGED_MUSIC_NOTE}, + {gBattleAnimSpriteGfx_Pokeball, 0x0080, ANIM_TAG_POKEBALL}, + {gBattleAnimSpriteGfx_Spotlight, 0x0800, ANIM_TAG_SPOTLIGHT}, + {gBattleAnimSpriteGfx_LetterZ, 0x0200, ANIM_TAG_LETTER_Z}, + {gBattleAnimSpriteGfx_RapidSpin, 0x0300, ANIM_TAG_RAPID_SPIN}, + {gBattleAnimSpriteGfx_TriAttackTriangle, 0x0800, ANIM_TAG_TRI_ATTACK_TRIANGLE}, + {gBattleAnimSpriteGfx_WispOrb, 0x0380, ANIM_TAG_WISP_ORB}, + {gBattleAnimSpriteGfx_WispFire, 0x0800, ANIM_TAG_WISP_FIRE}, + {gBattleAnimSpriteGfx_GoldStars, 0x00c0, ANIM_TAG_GOLD_STARS}, + {gBattleAnimSpriteGfx_EclipsingOrb, 0x0800, ANIM_TAG_ECLIPSING_ORB}, + {gBattleAnimSpriteGfx_GrayOrb, 0x0060, ANIM_TAG_GRAY_ORB}, + {gBattleAnimSpriteGfx_GrayOrb, 0x0060, ANIM_TAG_BLUE_ORB}, + {gBattleAnimSpriteGfx_GrayOrb, 0x0060, ANIM_TAG_RED_ORB_2}, + {gBattleAnimSpriteGfx_PinkPetal, 0x0080, ANIM_TAG_PINK_PETAL}, + {gBattleAnimSpriteGfx_PainSplit, 0x0180, ANIM_TAG_PAIN_SPLIT}, + {gBattleAnimSpriteGfx_Confetti, 0x0180, ANIM_TAG_CONFETTI}, + {gBattleAnimSpriteGfx_GreenStar, 0x0200, ANIM_TAG_GREEN_STAR}, + {gBattleAnimSpriteGfx_PinkCloud, 0x0200, ANIM_TAG_PINK_CLOUD}, + {gBattleAnimSpriteGfx_SweatDrop, 0x0020, ANIM_TAG_SWEAT_DROP}, + {gBattleAnimSpriteGfx_GuardRing, 0x0400, ANIM_TAG_GUARD_RING}, + {gBattleAnimSpriteGfx_PurpleScratch, 0x0600, ANIM_TAG_PURPLE_SCRATCH}, + {gBattleAnimSpriteGfx_PurpleSwipe, 0x1000, ANIM_TAG_PURPLE_SWIPE}, + {gBattleAnimSpriteGfx_TagHand, 0x0400, ANIM_TAG_TAG_HAND}, + {gBattleAnimSpriteGfx_SmallRedEye, 0x0020, ANIM_TAG_SMALL_RED_EYE}, + {gBattleAnimSpriteGfx_HollowOrb, 0x0080, ANIM_TAG_HOLLOW_ORB}, + {gBattleAnimSpriteGfx_XSign, 0x0800, ANIM_TAG_X_SIGN}, + {gBattleAnimSpriteGfx_BluegreenOrb, 0x0080, ANIM_TAG_BLUEGREEN_ORB}, + {gBattleAnimSpriteGfx_PawPrint, 0x0200, ANIM_TAG_PAW_PRINT}, + {gBattleAnimSpriteGfx_PurpleFlame, 0x0400, ANIM_TAG_PURPLE_FLAME}, + {gBattleAnimSpriteGfx_RedBall, 0x0200, ANIM_TAG_RED_BALL}, + {gBattleAnimSpriteGfx_SmellingsaltEffect, 0x0200, ANIM_TAG_SMELLINGSALT_EFFECT}, + {gBattleAnimSpriteGfx_Meteor, 0x0800, ANIM_TAG_METEOR}, + {gBattleAnimSpriteGfx_FlatRock, 0x0280, ANIM_TAG_FLAT_ROCK}, + {gBattleAnimSpriteGfx_MagnifyingGlass, 0x0200, ANIM_TAG_MAGNIFYING_GLASS}, + {gBattleAnimSpriteGfx_WaterOrb, 0x0200, ANIM_TAG_BROWN_ORB}, + {gBattleAnimSpriteGfx_MetalSoundWaves, 0x0400, ANIM_TAG_METAL_SOUND_WAVES}, + {gBattleAnimSpriteGfx_FlyingDirt, 0x0200, ANIM_TAG_FLYING_DIRT}, + {gBattleAnimSpriteGfx_IcicleSpear, 0x0200, ANIM_TAG_ICICLE_SPEAR}, + {gBattleAnimSpriteGfx_Hail, 0x0080, ANIM_TAG_HAIL}, + {gBattleAnimSpriteGfx_GlowyRedOrb, 0x0020, ANIM_TAG_GLOWY_RED_ORB}, + {gBattleAnimSpriteGfx_GlowyRedOrb, 0x0020, ANIM_TAG_GLOWY_GREEN_ORB}, + {gBattleAnimSpriteGfx_GreenSpike, 0x0080, ANIM_TAG_GREEN_SPIKE}, + {gBattleAnimSpriteGfx_CircleOfLight, 0x0800, ANIM_TAG_WHITE_CIRCLE_OF_LIGHT}, + {gBattleAnimSpriteGfx_GlowyRedOrb, 0x0020, ANIM_TAG_GLOWY_BLUE_ORB}, + {gBattleAnimSpriteGfx_SafariBait, 0x0080, ANIM_TAG_SAFARI_BAIT}, + {gBattleAnimSpriteGfx_WhiteFeather, 0x0400, ANIM_TAG_WHITE_FEATHER}, + {gBattleAnimSpriteGfx_Sparkle6, 0x0080, ANIM_TAG_SPARKLE_6}, + {gBattleAnimSpriteGfx_Splash, 0x0800, ANIM_TAG_SPLASH}, + {gBattleAnimSpriteGfx_SweatBead, 0x0020, ANIM_TAG_SWEAT_BEAD}, + {gBattleAnimSpriteGfx_Gem1, 0x0800, ANIM_TAG_GEM_1}, + {gBattleAnimSpriteGfx_Gem2, 0x0800, ANIM_TAG_GEM_2}, + {gBattleAnimSpriteGfx_Gem3, 0x0800, ANIM_TAG_GEM_3}, + {gBattleAnimSpriteGfx_SlamHit2, 0x1000, ANIM_TAG_SLAM_HIT_2}, + {gBattleAnimSpriteGfx_Recycle, 0x0800, ANIM_TAG_RECYCLE}, + {gBattleAnimSpriteGfx_RedParticles, 0x00a0, ANIM_TAG_RED_PARTICLES}, + {gBattleAnimSpriteGfx_Protect, 0x0800, ANIM_TAG_PROTECT}, + {gBattleAnimSpriteGfx_DirtMound, 0x0200, ANIM_TAG_DIRT_MOUND}, + {gBattleAnimSpriteGfx_Shock3, 0x0600, ANIM_TAG_SHOCK_3}, + {gBattleAnimSpriteGfx_WeatherBall, 0x0200, ANIM_TAG_WEATHER_BALL}, + {gBattleAnimSpriteGfx_Bird, 0x0800, ANIM_TAG_BIRD}, + {gBattleAnimSpriteGfx_CrossImpact, 0x0200, ANIM_TAG_CROSS_IMPACT}, + {gBattleAnimSpriteGfx_Slash, 0x0800, ANIM_TAG_SLASH_2}, + {gBattleAnimSpriteGfx_SlamHit, 0x1000, ANIM_TAG_WHIP_HIT}, + {gBattleAnimSpriteGfx_GoldRing, 0x0100, ANIM_TAG_BLUE_RING_2}, +}; + +const struct CompressedSpritePalette gBattleAnimPaletteTable[] = +{ + {gBattleAnimSpritePal_Bone, ANIM_TAG_BONE}, + {gBattleAnimSpritePal_Spark, ANIM_TAG_SPARK}, + {gBattleAnimSpritePal_Pencil, ANIM_TAG_PENCIL}, + {gBattleAnimSpritePal_AirWave, ANIM_TAG_AIR_WAVE}, + {gBattleAnimSpritePal_Orb, ANIM_TAG_ORB}, + {gBattleAnimSpritePal_Sword, ANIM_TAG_SWORD}, + {gBattleAnimSpritePal_Seed, ANIM_TAG_SEED}, + {gBattleAnimSpritePal_Explosion6, ANIM_TAG_EXPLOSION_6}, + {gBattleAnimSpritePal_PinkOrb, ANIM_TAG_PINK_ORB}, + {gBattleAnimSpritePal_Gust, ANIM_TAG_GUST}, + {gBattleAnimSpritePal_IceCube, ANIM_TAG_ICE_CUBE}, + {gBattleAnimSpritePal_Spark2, ANIM_TAG_SPARK_2}, + {gBattleAnimSpritePal_Orange, ANIM_TAG_ORANGE}, + {gBattleAnimSpritePal_YellowBall, ANIM_TAG_YELLOW_BALL}, + {gBattleAnimSpritePal_LockOn, ANIM_TAG_LOCK_ON}, + {gBattleAnimSpritePal_TiedBag, ANIM_TAG_TIED_BAG}, + {gBattleAnimSpritePal_BlackSmoke, ANIM_TAG_BLACK_SMOKE}, + {gBattleAnimSpritePal_BlackSmoke, ANIM_TAG_BLACK_BALL}, + {gBattleAnimSpritePal_Conversion, ANIM_TAG_CONVERSION}, + {gBattleAnimSpritePal_Glass, ANIM_TAG_GLASS}, + {gBattleAnimSpritePal_HornHit, ANIM_TAG_HORN_HIT}, + {gBattleAnimSpritePal_Hit, ANIM_TAG_HIT}, + {gBattleAnimSpritePal_Hit2, ANIM_TAG_HIT_2}, + {gBattleAnimSpritePal_BlueShards, ANIM_TAG_BLUE_SHARDS}, + {gBattleAnimSpritePal_ClosingEye, ANIM_TAG_CLOSING_EYE}, + {gBattleAnimSpritePal_WavingHand, ANIM_TAG_WAVING_HAND}, + {gBattleAnimSpritePal_HitDuplicate, ANIM_TAG_HIT_DUPLICATE}, + {gBattleAnimSpritePal_Leer, ANIM_TAG_LEER}, + {gBattleAnimSpritePal_BlueBurst, ANIM_TAG_BLUE_BURST}, + {gBattleAnimSpritePal_SmallEmber, ANIM_TAG_SMALL_EMBER}, + {gBattleAnimSpritePal_GraySmoke, ANIM_TAG_GRAY_SMOKE}, + {gBattleAnimSpritePal_BlueStar, ANIM_TAG_BLUE_STAR}, + {gBattleAnimSpritePal_BubbleBurst, ANIM_TAG_BUBBLE_BURST}, + {gBattleAnimSpritePal_Fire, ANIM_TAG_FIRE}, + {gBattleAnimSpritePal_Fire, ANIM_TAG_SPINNING_FIRE}, + {gBattleAnimSpritePal_Fire, ANIM_TAG_FIRE_PLUME}, + {gBattleAnimSpritePal_Lightning2, ANIM_TAG_LIGHTNING_2}, + {gBattleAnimSpritePal_Lightning2, ANIM_TAG_LIGHTNING}, + {gBattleAnimSpritePal_ClawSlash2, ANIM_TAG_CLAW_SLASH_2}, + {gBattleAnimSpritePal_ClawSlash, ANIM_TAG_CLAW_SLASH}, + {gBattleAnimSpritePal_ClawSlash2, ANIM_TAG_SCRATCH_3}, + {gBattleAnimSpritePal_ClawSlash2, ANIM_TAG_SCRATCH_2}, + {gBattleAnimSpritePal_BubbleBurst2, ANIM_TAG_BUBBLE_BURST_2}, + {gBattleAnimSpritePal_IceChunk, ANIM_TAG_ICE_CHUNK}, + {gBattleAnimSpritePal_Glass2, ANIM_TAG_GLASS_2}, + {gBattleAnimSpritePal_PinkHeart2, ANIM_TAG_PINK_HEART_2}, + {gBattleAnimSpritePal_SapDrip, ANIM_TAG_SAP_DRIP}, + {gBattleAnimSpritePal_SapDrip2, ANIM_TAG_SAP_DRIP}, + {gBattleAnimSpritePal_Sparkle1, ANIM_TAG_SPARKLE_1}, + {gBattleAnimSpritePal_Sparkle2, ANIM_TAG_SPARKLE_2}, + {gBattleAnimSpritePal_HumanoidFoot, ANIM_TAG_HUMANOID_FOOT}, + {gBattleAnimSpritePal_HumanoidFoot, ANIM_TAG_MONSTER_FOOT}, + {gBattleAnimSpritePal_HumanoidFoot, ANIM_TAG_HUMANOID_HAND}, + {gBattleAnimSpritePal_HitDuplicate, ANIM_TAG_NOISE_LINE}, + {gBattleAnimSpritePal_YellowUnk, ANIM_TAG_YELLOW_UNK}, + {gBattleAnimSpritePal_HumanoidFoot, ANIM_TAG_RED_FIST}, + {gBattleAnimSpritePal_SlamHit, ANIM_TAG_SLAM_HIT}, + {gBattleAnimSpritePal_Ring, ANIM_TAG_RING}, + {gBattleAnimSpritePal_Rocks, ANIM_TAG_ROCKS}, + {gBattleAnimSpritePal_Z, ANIM_TAG_Z}, + {gBattleAnimSpritePal_YellowUnk2, ANIM_TAG_YELLOW_UNK_2}, + {gBattleAnimSpritePal_AirSlash, ANIM_TAG_AIR_SLASH}, + {gBattleAnimSpritePal_SpinningGreenOrbs, ANIM_TAG_SPINNING_GREEN_ORBS}, + {gBattleAnimSpritePal_Leaf, ANIM_TAG_LEAF}, + {gBattleAnimSpritePal_Finger, ANIM_TAG_FINGER}, + {gBattleAnimSpritePal_PoisonPowder, ANIM_TAG_POISON_POWDER}, + {gBattleAnimSpritePal_BrownTriangle, ANIM_TAG_BROWN_TRIANGLE}, + {gBattleAnimSpritePal_SleepPowder, ANIM_TAG_SLEEP_POWDER}, + {gBattleAnimSpritePal_StunSpore, ANIM_TAG_STUN_SPORE}, + {gBattleAnimSpritePal_PoisonPowder, ANIM_TAG_POWDER}, + {gBattleAnimSpritePal_Sparkle3, ANIM_TAG_SPARKLE_3}, + {gBattleAnimSpritePal_Sparkle3, ANIM_TAG_SPARKLE_4}, + {gBattleAnimSpritePal_MusicNotes, ANIM_TAG_MUSIC_NOTES}, + {gBattleAnimSpritePal_Duck, ANIM_TAG_DUCK}, + {gBattleAnimSpritePal_MudSand, ANIM_TAG_MUD_SAND}, + {gBattleAnimSpritePal_Alert, ANIM_TAG_ALERT}, + {gBattleAnimSpritePal_BlueFlames, ANIM_TAG_BLUE_FLAMES}, + {gBattleAnimSpritePal_BlueFlames, ANIM_TAG_BLUE_FLAMES_2}, + {gBattleAnimSpritePal_Shock4, ANIM_TAG_SHOCK_4}, + {gBattleAnimSpritePal_Shock4, ANIM_TAG_SHOCK}, + {gBattleAnimSpritePal_Bell2, ANIM_TAG_BELL_2}, + {gBattleAnimSpritePal_PinkGlove, ANIM_TAG_PINK_GLOVE}, + {gBattleAnimSpritePal_BlueLines, ANIM_TAG_BLUE_LINES}, + {gBattleAnimSpritePal_Impact3, ANIM_TAG_IMPACT_3}, + {gBattleAnimSpritePal_Impact2, ANIM_TAG_IMPACT_2}, + {gBattleAnimSpritePal_Reticle, ANIM_TAG_RETICLE}, + {gBattleAnimSpritePal_Breath, ANIM_TAG_BREATH}, + {gBattleAnimSpritePal_Anger, ANIM_TAG_ANGER}, + {gBattleAnimSpritePal_Snowball, ANIM_TAG_SNOWBALL}, + {gBattleAnimSpritePal_Vine, ANIM_TAG_VINE}, + {gBattleAnimSpritePal_Sword2, ANIM_TAG_SWORD_2}, + {gBattleAnimSpritePal_Clapping, ANIM_TAG_CLAPPING}, + {gBattleAnimSpritePal_RedTube, ANIM_TAG_RED_TUBE}, + {gBattleAnimSpritePal_Amnesia, ANIM_TAG_AMNESIA}, + {gBattleAnimSpritePal_String2, ANIM_TAG_STRING_2}, + {gBattleAnimSpritePal_Pencil2, ANIM_TAG_PENCIL_2}, + {gBattleAnimSpritePal_Petal, ANIM_TAG_PETAL}, + {gBattleAnimSpritePal_BentSpoon, ANIM_TAG_BENT_SPOON}, + {gBattleAnimSpritePal_String2, ANIM_TAG_WEB}, + {gBattleAnimSpritePal_MilkBottle, ANIM_TAG_MILK_BOTTLE}, + {gBattleAnimSpritePal_Coin, ANIM_TAG_COIN}, + {gBattleAnimSpritePal_CrackedEgg, ANIM_TAG_CRACKED_EGG}, + {gBattleAnimSpritePal_CrackedEgg, ANIM_TAG_HATCHED_EGG}, + {gBattleAnimSpritePal_FreshEgg, ANIM_TAG_FRESH_EGG}, + {gBattleAnimSpritePal_Fangs, ANIM_TAG_FANGS}, + {gBattleAnimSpritePal_Explosion2, ANIM_TAG_EXPLOSION_2}, + {gBattleAnimSpritePal_Explosion2, ANIM_TAG_EXPLOSION_3}, + {gBattleAnimSpritePal_WaterDroplet, ANIM_TAG_WATER_DROPLET}, + {gBattleAnimSpritePal_WaterDroplet, ANIM_TAG_WATER_DROPLET_2}, + {gBattleAnimSpritePal_Seed2, ANIM_TAG_SEED_2}, + {gBattleAnimSpritePal_Seed2, ANIM_TAG_SPROUT}, + {gBattleAnimSpritePal_RedWand, ANIM_TAG_RED_WAND}, + {gBattleAnimSpritePal_PurpleGreenUnk, ANIM_TAG_PURPLE_GREEN_UNK}, + {gBattleAnimSpritePal_WaterColumn, ANIM_TAG_WATER_COLUMN}, + {gBattleAnimSpritePal_MudUnk, ANIM_TAG_MUD_UNK}, + {gBattleAnimSpritePal_RainDrops, ANIM_TAG_RAIN_DROPS}, + {gBattleAnimSpritePal_FurySwipes, ANIM_TAG_FURY_SWIPES}, + {gBattleAnimSpritePal_Vine2, ANIM_TAG_VINE_2}, + {gBattleAnimSpritePal_Teeth, ANIM_TAG_TEETH}, + {gBattleAnimSpritePal_Bone2, ANIM_TAG_BONE_2}, + {gBattleAnimSpritePal_WhiteBag, ANIM_TAG_WHITE_BAG}, + {gBattleAnimSpritePal_Unknown, ANIM_TAG_UNKNOWN}, + {gBattleAnimSpritePal_PurpleCoral, ANIM_TAG_PURPLE_CORAL}, + {gBattleAnimSpritePal_PurpleCoral, ANIM_TAG_PURPLE_DROPLET}, + {gBattleAnimSpritePal_Shock2, ANIM_TAG_SHOCK_2}, + {gBattleAnimSpritePal_ClosingEye2, ANIM_TAG_CLOSING_EYE_2}, + {gBattleAnimSpritePal_MetalBall, ANIM_TAG_METAL_BALL}, + {gBattleAnimSpritePal_MonsterDoll, ANIM_TAG_MONSTER_DOLL}, + {gBattleAnimSpritePal_Whirlwind, ANIM_TAG_WHIRLWIND}, + {gBattleAnimSpritePal_Whirlwind, ANIM_TAG_WHIRLWIND_2}, + {gBattleAnimSpritePal_Explosion4, ANIM_TAG_EXPLOSION_4}, + {gBattleAnimSpritePal_Explosion4, ANIM_TAG_EXPLOSION_5}, + {gBattleAnimSpritePal_Tongue, ANIM_TAG_TONGUE}, + {gBattleAnimSpritePal_Smoke, ANIM_TAG_SMOKE}, + {gBattleAnimSpritePal_Smoke, ANIM_TAG_SMOKE_2}, + {gBattleAnimSpritePal_Impact, ANIM_TAG_IMPACT}, + {gBattleAnimSpritePal_CircleImpact, ANIM_TAG_CIRCLE_IMPACT}, + {gBattleAnimSpritePal_Impact, ANIM_TAG_SCRATCH}, + {gBattleAnimSpritePal_Impact, ANIM_TAG_CUT}, + {gBattleAnimSpritePal_SharpTeeth, ANIM_TAG_SHARP_TEETH}, + {gBattleAnimSpritePal_RainbowRings, ANIM_TAG_RAINBOW_RINGS}, + {gBattleAnimSpritePal_IceCrystals, ANIM_TAG_ICE_CRYSTALS}, + {gBattleAnimSpritePal_IceCrystals, ANIM_TAG_ICE_SPIKES}, + {gBattleAnimSpritePal_HandsAndFeet, ANIM_TAG_HANDS_AND_FEET}, + {gBattleAnimSpritePal_MistCloud, ANIM_TAG_MIST_CLOUD}, + {gBattleAnimSpritePal_SharpTeeth, ANIM_TAG_CLAMP}, + {gBattleAnimSpritePal_RainDrops, ANIM_TAG_BUBBLE}, + {gBattleAnimSpritePal_Orbs, ANIM_TAG_ORBS}, + {gBattleAnimSpritePal_WaterImpact, ANIM_TAG_WATER_IMPACT}, + {gBattleAnimSpritePal_WaterImpact, ANIM_TAG_WATER_ORB}, + {gBattleAnimSpritePal_PoisonBubble, ANIM_TAG_POISON_BUBBLE}, + {gBattleAnimSpritePal_PoisonBubble, ANIM_TAG_TOXIC_BUBBLE}, + {gBattleAnimSpritePal_Spikes, ANIM_TAG_SPIKES}, + {gBattleAnimSpritePal_HornHit2, ANIM_TAG_HORN_HIT_2}, + {gBattleAnimSpritePal_AirWave2, ANIM_TAG_AIR_WAVE_2}, + {gBattleAnimSpritePal_SmallBubbles, ANIM_TAG_SMALL_BUBBLES}, + {gBattleAnimSpritePal_RoundShadow, ANIM_TAG_ROUND_SHADOW}, + {gBattleAnimSpritePal_Sunlight, ANIM_TAG_SUNLIGHT}, + {gBattleAnimSpritePal_Spore, ANIM_TAG_SPORE}, + {gBattleAnimSpritePal_Flower, ANIM_TAG_FLOWER}, + {gBattleAnimSpritePal_RazorLeaf, ANIM_TAG_RAZOR_LEAF}, + {gBattleAnimSpritePal_Needle, ANIM_TAG_NEEDLE}, + {gBattleAnimSpritePal_WhirlwindLines, ANIM_TAG_WHIRLWIND_LINES}, + {gBattleAnimSpritePal_GoldRing, ANIM_TAG_GOLD_RING}, + {gBattleAnimSpritePal_PurpleRing, ANIM_TAG_PURPLE_RING}, + {gBattleAnimSpritePal_BlueRing, ANIM_TAG_BLUE_RING}, + {gBattleAnimSpritePal_GreenLightWall, ANIM_TAG_GREEN_LIGHT_WALL}, + {gBattleAnimSpritePal_BlueLightWall, ANIM_TAG_BLUE_LIGHT_WALL}, + {gBattleAnimSpritePal_RedLightWall, ANIM_TAG_RED_LIGHT_WALL}, + {gBattleAnimSpritePal_GrayLightWall, ANIM_TAG_GRAY_LIGHT_WALL}, + {gBattleAnimSpritePal_OrangeLightWall, ANIM_TAG_ORANGE_LIGHT_WALL}, + {gBattleAnimSpritePal_BlackBall2, ANIM_TAG_BLACK_BALL_2}, + {gBattleAnimSpritePal_PurpleGasCloud, ANIM_TAG_PURPLE_GAS_CLOUD}, + {gBattleAnimSpritePal_Spark, ANIM_TAG_SPARK_H}, + {gBattleAnimSpritePal_YellowStar, ANIM_TAG_YELLOW_STAR}, + {gBattleAnimSpritePal_LargeFreshEgg, ANIM_TAG_LARGE_FRESH_EGG}, + {gBattleAnimSpritePal_ShadowBall, ANIM_TAG_SHADOW_BALL}, + {gBattleAnimSpritePal_Lick, ANIM_TAG_LICK}, + {gBattleAnimSpritePal_VoidLines, ANIM_TAG_VOID_LINES}, + {gBattleAnimSpritePal_String, ANIM_TAG_STRING}, + {gBattleAnimSpritePal_String, ANIM_TAG_WEB_THREAD}, + {gBattleAnimSpritePal_String, ANIM_TAG_SPIDER_WEB}, + {gBattleAnimSpritePal_Lightbulb, ANIM_TAG_LIGHTBULB}, + {gBattleAnimSpritePal_Slash, ANIM_TAG_SLASH}, + {gBattleAnimSpritePal_FocusEnergy, ANIM_TAG_FOCUS_ENERGY}, + {gBattleAnimSpritePal_SphereToCube, ANIM_TAG_SPHERE_TO_CUBE}, + {gBattleAnimSpritePal_Tendrils, ANIM_TAG_TENDRILS}, + {gBattleAnimSpritePal_Eye, ANIM_TAG_EYE}, + {gBattleAnimSpritePal_WhiteShadow, ANIM_TAG_WHITE_SHADOW}, + {gBattleAnimSpritePal_TealAlert, ANIM_TAG_TEAL_ALERT}, + {gBattleAnimSpritePal_OpeningEye, ANIM_TAG_OPENING_EYE}, + {gBattleAnimSpritePal_RoundWhiteHalo, ANIM_TAG_ROUND_WHITE_HALO}, + {gBattleAnimSpritePal_FangAttack, ANIM_TAG_FANG_ATTACK}, + {gBattleAnimSpritePal_PurpleHandOutline, ANIM_TAG_PURPLE_HAND_OUTLINE}, + {gBattleAnimSpritePal_Moon, ANIM_TAG_MOON}, + {gBattleAnimSpritePal_GreenSparkle, ANIM_TAG_GREEN_SPARKLE}, + {gBattleAnimSpritePal_Spiral, ANIM_TAG_SPIRAL}, + {gBattleAnimSpritePal_SnoreZ, ANIM_TAG_SNORE_Z}, + {gBattleAnimSpritePal_Explosion, ANIM_TAG_EXPLOSION}, + {gBattleAnimSpritePal_Nail, ANIM_TAG_NAIL}, + {gBattleAnimSpritePal_GhostlySpirit, ANIM_TAG_GHOSTLY_SPIRIT}, + {gBattleAnimSpritePal_WarmRock, ANIM_TAG_WARM_ROCK}, + {gBattleAnimSpritePal_BreakingEgg, ANIM_TAG_BREAKING_EGG}, + {gBattleAnimSpritePal_ThinRing, ANIM_TAG_THIN_RING}, + {gBattleAnimSpritePal_PunchImpact, ANIM_TAG_PUNCH_IMPACT}, + {gBattleAnimSpritePal_Bell, ANIM_TAG_BELL}, + {gBattleAnimSpritePal_MusicNotes2, ANIM_TAG_MUSIC_NOTES_2}, + {gBattleAnimSpritePal_SpeedDust, ANIM_TAG_SPEED_DUST}, + {gBattleAnimSpritePal_BlueLightWall, ANIM_TAG_TORN_METAL}, + {gBattleAnimSpritePal_ThoughtBubble, ANIM_TAG_THOUGHT_BUBBLE}, + {gBattleAnimSpritePal_MagentaHeart, ANIM_TAG_MAGENTA_HEART}, + {gBattleAnimSpritePal_ElectricOrbs, ANIM_TAG_ELECTRIC_ORBS}, + {gBattleAnimSpritePal_ElectricOrbs, ANIM_TAG_CIRCLE_OF_LIGHT}, + {gBattleAnimSpritePal_ElectricOrbs, ANIM_TAG_ELECTRICITY}, + {gBattleAnimSpritePal_Finger, ANIM_TAG_FINGER_2}, + {gBattleAnimSpritePal_MovementWaves, ANIM_TAG_MOVEMENT_WAVES}, + {gBattleAnimSpritePal_RedHeart, ANIM_TAG_RED_HEART}, + {gBattleAnimSpritePal_RedOrb, ANIM_TAG_RED_ORB}, + {gBattleAnimSpritePal_EyeSparkle, ANIM_TAG_EYE_SPARKLE}, + {gBattleAnimSpritePal_PinkHeart, ANIM_TAG_PINK_HEART}, + {gBattleAnimSpritePal_Angel, ANIM_TAG_ANGEL}, + {gBattleAnimSpritePal_Devil, ANIM_TAG_DEVIL}, + {gBattleAnimSpritePal_Swipe, ANIM_TAG_SWIPE}, + {gBattleAnimSpritePal_Roots, ANIM_TAG_ROOTS}, + {gBattleAnimSpritePal_ItemBag, ANIM_TAG_ITEM_BAG}, + {gBattleAnimSpritePal_JaggedMusicNote, ANIM_TAG_JAGGED_MUSIC_NOTE}, + {gBattleAnimSpritePal_Pokeball, ANIM_TAG_POKEBALL}, + {gBattleAnimSpritePal_Pokeball, ANIM_TAG_SPOTLIGHT}, + {gBattleAnimSpritePal_LetterZ, ANIM_TAG_LETTER_Z}, + {gBattleAnimSpritePal_RapidSpin, ANIM_TAG_RAPID_SPIN}, + {gBattleAnimSpritePal_TriAttackTriangle, ANIM_TAG_TRI_ATTACK_TRIANGLE}, + {gBattleAnimSpritePal_WispOrb, ANIM_TAG_WISP_ORB}, + {gBattleAnimSpritePal_WispOrb, ANIM_TAG_WISP_FIRE}, + {gBattleAnimSpritePal_GoldStars, ANIM_TAG_GOLD_STARS}, + {gBattleAnimSpritePal_EclipsingOrb, ANIM_TAG_ECLIPSING_ORB}, + {gBattleAnimSpritePal_GrayOrb, ANIM_TAG_GRAY_ORB}, + {gBattleAnimSpritePal_BlueOrb, ANIM_TAG_BLUE_ORB}, + {gBattleAnimSpritePal_RedOrb2, ANIM_TAG_RED_ORB_2}, + {gBattleAnimSpritePal_PinkPetal, ANIM_TAG_PINK_PETAL}, + {gBattleAnimSpritePal_PainSplit, ANIM_TAG_PAIN_SPLIT}, + {gBattleAnimSpritePal_Confetti, ANIM_TAG_CONFETTI}, + {gBattleAnimSpritePal_GreenStar, ANIM_TAG_GREEN_STAR}, + {gBattleAnimSpritePal_PinkCloud, ANIM_TAG_PINK_CLOUD}, + {gBattleAnimSpritePal_SweatDrop, ANIM_TAG_SWEAT_DROP}, + {gBattleAnimSpritePal_GuardRing, ANIM_TAG_GUARD_RING}, + {gBattleAnimSpritePal_PurpleScratch, ANIM_TAG_PURPLE_SCRATCH}, + {gBattleAnimSpritePal_PurpleScratch, ANIM_TAG_PURPLE_SWIPE}, + {gBattleAnimSpritePal_Finger, ANIM_TAG_TAG_HAND}, + {gBattleAnimSpritePal_SmallRedEye, ANIM_TAG_SMALL_RED_EYE}, + {gBattleAnimSpritePal_HollowOrb, ANIM_TAG_HOLLOW_ORB}, + {gBattleAnimSpritePal_HollowOrb, ANIM_TAG_X_SIGN}, + {gBattleAnimSpritePal_BluegreenOrb, ANIM_TAG_BLUEGREEN_ORB}, + {gBattleAnimSpritePal_PawPrint, ANIM_TAG_PAW_PRINT}, + {gBattleAnimSpritePal_PurpleFlame, ANIM_TAG_PURPLE_FLAME}, + {gBattleAnimSpritePal_RedBall, ANIM_TAG_RED_BALL}, + {gBattleAnimSpritePal_SmellingsaltEffect, ANIM_TAG_SMELLINGSALT_EFFECT}, + {gBattleAnimSpritePal_Meteor, ANIM_TAG_METEOR}, + {gBattleAnimSpritePal_FlatRock, ANIM_TAG_FLAT_ROCK}, + {gBattleAnimSpritePal_MagnifyingGlass, ANIM_TAG_MAGNIFYING_GLASS}, + {gBattleAnimSpritePal_BrownOrb, ANIM_TAG_BROWN_ORB}, + {gBattleAnimSpritePal_MetalSoundWaves, ANIM_TAG_METAL_SOUND_WAVES}, + {gBattleAnimSpritePal_FlyingDirt, ANIM_TAG_FLYING_DIRT}, + {gBattleAnimSpritePal_IcicleSpear, ANIM_TAG_ICICLE_SPEAR}, + {gBattleAnimSpritePal_Hail, ANIM_TAG_HAIL}, + {gBattleAnimSpritePal_GlowyRedOrb, ANIM_TAG_GLOWY_RED_ORB}, + {gBattleAnimSpritePal_GlowyGreenOrb, ANIM_TAG_GLOWY_GREEN_ORB}, + {gBattleAnimSpritePal_GreenSpike, ANIM_TAG_GREEN_SPIKE}, + {gBattleAnimSpritePal_WhiteCircleOfLight, ANIM_TAG_WHITE_CIRCLE_OF_LIGHT}, + {gBattleAnimSpritePal_GlowyBlueOrb, ANIM_TAG_GLOWY_BLUE_ORB}, + {gBattleAnimSpritePal_SafariBait, ANIM_TAG_SAFARI_BAIT}, + {gBattleAnimSpritePal_WhiteFeather, ANIM_TAG_WHITE_FEATHER}, + {gBattleAnimSpritePal_Sparkle6, ANIM_TAG_SPARKLE_6}, + {gBattleAnimSpritePal_Splash, ANIM_TAG_SPLASH}, + {gBattleAnimSpritePal_Splash, ANIM_TAG_SWEAT_BEAD}, + {gBattleAnimSpritePal_Gem1, ANIM_TAG_GEM_1}, + {gBattleAnimSpritePal_Gem1, ANIM_TAG_GEM_2}, + {gBattleAnimSpritePal_Gem1, ANIM_TAG_GEM_3}, + {gBattleAnimSpritePal_SlamHit2, ANIM_TAG_SLAM_HIT_2}, + {gBattleAnimSpritePal_Recycle, ANIM_TAG_RECYCLE}, + {gBattleAnimSpritePal_RedParticles, ANIM_TAG_RED_PARTICLES}, + {gBattleAnimSpritePal_Protect, ANIM_TAG_PROTECT}, + {gBattleAnimSpritePal_DirtMound, ANIM_TAG_DIRT_MOUND}, + {gBattleAnimSpritePal_Shock3, ANIM_TAG_SHOCK_3}, + {gBattleAnimSpritePal_WeatherBall, ANIM_TAG_WEATHER_BALL}, + {gBattleAnimSpritePal_Bird, ANIM_TAG_BIRD}, + {gBattleAnimSpritePal_CrossImpact, ANIM_TAG_CROSS_IMPACT}, + {gBattleAnimSpritePal_Slash2, ANIM_TAG_SLASH_2}, + {gBattleAnimSpritePal_WhipHit, ANIM_TAG_WHIP_HIT}, + {gBattleAnimSpritePal_BlueRing2, ANIM_TAG_BLUE_RING_2}, +}; + +const struct BattleAnimBackground gBattleAnimBackgroundTable[] = +{ + [BG_NONE] = {gBattleAnimBgImage_Dark, gBattleAnimBgPalette_Dark, gBattleAnimBgTilemap_Dark}, + [BG_DARK] = {gBattleAnimBgImage_Dark, gBattleAnimBgPalette_Dark, gBattleAnimBgTilemap_Dark}, + [BG_GHOST] = {gBattleAnimBgImage_Ghost, gBattleAnimBgPalette_Ghost, gBattleAnimBgTilemap_Ghost}, + [BG_PSYCHIC] = {gBattleAnimBgImage_Psychic, gBattleAnimBgPalette_Psychic, gBattleAnimBgTilemap_Psychic}, + [BG_IMPACT_OPPONENT] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_Impact, gBattleAnimBgTilemap_ImpactOpponent}, + [BG_IMPACT_PLAYER] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_Impact, gBattleAnimBgTilemap_ImpactPlayer}, + [BG_IMPACT_CONTESTS] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_Impact, gBattleAnimBgTilemap_ImpactContests}, + [BG_DRILL] = {gBattleAnimBgImage_Drill, gBattleAnimBgPalette_Drill, gBattleAnimBgTilemap_Drill}, + [BG_DRILL_CONTESTS] = {gBattleAnimBgImage_Drill, gBattleAnimBgPalette_Drill, gBattleAnimBgTilemap_DrillContests}, + [BG_HIGHSPEED_OPPONENT] = {gBattleAnimBgImage_Highspeed, gBattleAnimBgPalette_Highspeed, gBattleAnimBgTilemap_HighspeedOpponent}, + [BG_HIGHSPEED_PLAYER] = {gBattleAnimBgImage_Highspeed, gBattleAnimBgPalette_Highspeed, gBattleAnimBgTilemap_HighspeedPlayer}, + [BG_THUNDER] = {gBattleAnimBgImage_Thunder, gBattleAnimBgPalette_Thunder, gBattleAnimBgTilemap_Thunder}, + [BG_GUILLOTINE_OPPONENT] = {gBattleAnimBgImage_Guillotine, gBattleAnimBgPalette_Guillotine, gBattleAnimBgTilemap_GuillotineOpponent}, + [BG_GUILLOTINE_PLAYER] = {gBattleAnimBgImage_Guillotine, gBattleAnimBgPalette_Guillotine, gBattleAnimBgTilemap_GuillotinePlayer}, + [BG_GUILLOTINE_CONTESTS] = {gBattleAnimBgImage_Guillotine, gBattleAnimBgPalette_Guillotine, gBattleAnimBgTilemap_GuillotineContests}, + [BG_ICE] = {gBattleAnimBgImage_Ice, gBattleAnimBgPalette_Ice, gBattleAnimBgTilemap_Ice}, + [BG_COSMIC] = {gBattleAnimBgImage_Cosmic, gBattleAnimBgPalette_Cosmic, gBattleAnimBgTilemap_Cosmic}, + [BG_IN_AIR] = {gBattleAnimBgImage_InAir, gBattleAnimBgPalette_InAir, gBattleAnimBgTilemap_InAir}, + [BG_SKY] = {gBattleAnimBgImage_Drill, gBattleAnimBgPalette_Sky, gBattleAnimBgTilemap_Drill}, + [BG_SKY_CONTESTS] = {gBattleAnimBgImage_Drill, gBattleAnimBgPalette_Sky, gBattleAnimBgTilemap_DrillContests}, + [BG_AURORA] = {gBattleAnimBgImage_Aurora, gBattleAnimBgPalette_Aurora, gBattleAnimBgTilemap_Aurora}, + [BG_FISSURE] = {gBattleAnimBgImage_Fissure, gBattleAnimBgPalette_Fissure, gBattleAnimBgTilemap_Fissure}, + [BG_BUG_OPPONENT] = {gBattleAnimBgImage_Highspeed, gBattleAnimBgPalette_Bug, gBattleAnimBgTilemap_HighspeedOpponent}, + [BG_BUG_PLAYER] = {gBattleAnimBgImage_Highspeed, gBattleAnimBgPalette_Bug, gBattleAnimBgTilemap_HighspeedPlayer}, + [BG_SOLAR_BEAM_OPPONENT] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_SolarBeam, gBattleAnimBgTilemap_ImpactOpponent}, + [BG_SOLAR_BEAM_PLAYER] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_SolarBeam, gBattleAnimBgTilemap_ImpactPlayer}, + [BG_SOLAR_BEAM_CONTESTS] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_SolarBeam, gBattleAnimBgTilemap_ImpactContests}, +}; diff --git a/src/evolution_scene.c b/src/evolution_scene.c index 8ab93a353..4b2a0fc70 100644 --- a/src/evolution_scene.c +++ b/src/evolution_scene.c @@ -22,7 +22,6 @@ #include "task.h" #include "text_window.h" #include "trig.h" -#include "battle_string_ids.h" #include "constants/moves.h" #include "constants/songs.h" #include "constants/pokemon.h" diff --git a/src/graphics.c b/src/graphics.c index ce702daf4..cf3f6bd37 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -779,8 +779,8 @@ const u32 gBattleAnimSpriteGfx_Roots[] = INCBIN_U32("graphics/battle_anims/sprit const u32 gBattleAnimSpritePal_ItemBag[] = INCBIN_U32("graphics/battle_anims/sprites/item_bag.gbapal.lz"); const u32 gBattleAnimSpriteGfx_ItemBag[] = INCBIN_U32("graphics/battle_anims/sprites/item_bag.4bpp.lz"); -const u32 gBattleAnimSpritePal_TriForceTriangle[] = INCBIN_U32("graphics/battle_anims/sprites/tri_attack_triangle.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_TriForceTriangle[] = INCBIN_U32("graphics/battle_anims/sprites/tri_attack_triangle.4bpp.lz"); +const u32 gBattleAnimSpritePal_TriAttackTriangle[] = INCBIN_U32("graphics/battle_anims/sprites/tri_attack_triangle.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_TriAttackTriangle[] = INCBIN_U32("graphics/battle_anims/sprites/tri_attack_triangle.4bpp.lz"); const u32 gBattleAnimSpritePal_LetterZ[] = INCBIN_U32("graphics/battle_anims/sprites/letter_z.gbapal.lz"); const u32 gBattleAnimSpriteGfx_LetterZ[] = INCBIN_U32("graphics/battle_anims/sprites/letter_z.4bpp.lz"); @@ -915,8 +915,8 @@ const u32 gBattleAnimSpriteGfx_TagHand[] = INCBIN_U32("graphics/battle_anims/spr const u32 gBattleAnimSpriteGfx_NoiseLine[] = INCBIN_U32("graphics/battle_anims/sprites/noise_line.4bpp.lz"); -const u32 gUnknown_D2EC24_Gfx[] = INCBIN_U32("graphics/battle_anims/masks/unknown_D2EC24.4bpp.lz"); -const u32 gUnknown_D2EC24_Tilemap[] = INCBIN_U32("graphics/battle_anims/masks/unknown_D2EC24.bin.lz"); +const u32 gUnusedLevelupAnimationGfx[] = INCBIN_U32("graphics/battle_anims/masks/unknown_D2EC24.4bpp.lz"); +const u32 gUnusedLevelupAnimationTilemap[] = INCBIN_U32("graphics/battle_anims/masks/unknown_D2EC24.bin.lz"); const u32 gBattleAnimSpriteGfx_SmallRedEye[] = INCBIN_U32("graphics/battle_anims/sprites/small_red_eye.4bpp.lz"); const u32 gBattleAnimSpritePal_SmallRedEye[] = INCBIN_U32("graphics/battle_anims/sprites/small_red_eye.gbapal.lz"); @@ -1021,7 +1021,7 @@ const u32 gBattleAnimSpritePal_Protect[] = INCBIN_U32("graphics/battle_anims/spr const u32 gBattleAnimBgPalette_MuddyWater[] = INCBIN_U32("graphics/battle_anims/backgrounds/water_muddy.gbapal.lz"); -const u32 gFile_graphics_battle_interface_enemy_mon_shadow_sheet[] = INCBIN_U32("graphics/battle_interface/enemy_mon_shadow.4bpp.lz"); +const u32 gEnemyMonShadow_Gfx[] = INCBIN_U32("graphics/battle_interface/enemy_mon_shadow.4bpp.lz"); const u32 gFile_graphics_battle_interface_ball_status_bar_sheet[] = INCBIN_U32("graphics/battle_interface/ball_status_bar.4bpp.lz"); diff --git a/src/palette.c b/src/palette.c index 014199a7a..ebb64bb55 100644 --- a/src/palette.c +++ b/src/palette.c @@ -319,7 +319,7 @@ static void sub_80709B4(struct PaletteStruct *a1) return; if (val > 2) return; - ResetPaletteStructByUid(a1->base->uid); + PaletteStruct_ResetById(a1->base->uid); } } else @@ -328,7 +328,7 @@ static void sub_80709B4(struct PaletteStruct *a1) } } -void ResetPaletteStructByUid(u16 a1) +void PaletteStruct_ResetById(u16 a1) { u8 paletteNum = GetPaletteNumByUid(a1); if (paletteNum != 16) diff --git a/src/smokescreen.c b/src/smokescreen.c deleted file mode 100644 index c1d30a347..000000000 --- a/src/smokescreen.c +++ /dev/null @@ -1,73 +0,0 @@ -#include "global.h" -#include "decompress.h" -#include "util.h" - -static void SmokescreenImpact_Callback(struct Sprite *sprite); - -extern const struct CompressedSpriteSheet gSmokescreenImpactSpriteSheet; -extern const struct CompressedSpritePalette gSmokescreenImpactSpritePalette; -extern const struct SpriteTemplate gSmokescreenImpactSpriteTemplate; - -u8 SmokescreenImpact(s16 x, s16 y, u8 a3) -{ - u8 mainSpriteId; - u8 spriteId1, spriteId2, spriteId3, spriteId4; - struct Sprite *mainSprite; - - if (GetSpriteTileStartByTag(gSmokescreenImpactSpriteSheet.tag) == 0xFFFF) - { - LoadCompressedSpriteSheetUsingHeap(&gSmokescreenImpactSpriteSheet); - LoadCompressedSpritePaletteUsingHeap(&gSmokescreenImpactSpritePalette); - } - - mainSpriteId = CreateInvisibleSpriteWithCallback(SmokescreenImpact_Callback); - mainSprite = &gSprites[mainSpriteId]; - mainSprite->data[1] = a3; - - spriteId1 = CreateSprite(&gSmokescreenImpactSpriteTemplate, x - 16, y - 16, 2); - gSprites[spriteId1].data[0] = mainSpriteId; - mainSprite->data[0]++; - AnimateSprite(&gSprites[spriteId1]); - - spriteId2 = CreateSprite(&gSmokescreenImpactSpriteTemplate, x, y - 16, 2); - gSprites[spriteId2].data[0] = mainSpriteId; - mainSprite->data[0]++; - StartSpriteAnim(&gSprites[spriteId2], 1); - AnimateSprite(&gSprites[spriteId2]); - - spriteId3 = CreateSprite(&gSmokescreenImpactSpriteTemplate, x - 16, y, 2); - gSprites[spriteId3].data[0] = mainSpriteId; - mainSprite->data[0]++; - StartSpriteAnim(&gSprites[spriteId3], 2); - AnimateSprite(&gSprites[spriteId3]); - - spriteId4 = CreateSprite(&gSmokescreenImpactSpriteTemplate, x, y, 2); - gSprites[spriteId4].data[0] = mainSpriteId; - mainSprite->data[0]++; - StartSpriteAnim(&gSprites[spriteId4], 3); - AnimateSprite(&gSprites[spriteId4]); - - return mainSpriteId; -} - -static void SmokescreenImpact_Callback(struct Sprite *sprite) -{ - if (!sprite->data[0]) - { - FreeSpriteTilesByTag(gSmokescreenImpactSpriteSheet.tag); - FreeSpritePaletteByTag(gSmokescreenImpactSpritePalette.tag); - if (!sprite->data[1]) - DestroySprite(sprite); - else - sprite->callback = SpriteCallbackDummy; - } -} - -void SpriteCB_DestroySprite(struct Sprite *sprite) -{ - if (sprite->animEnded) - { - gSprites[sprite->data[0]].data[0]--; - DestroySprite(sprite); - } -} diff --git a/src/trade.c b/src/trade.c index 392a23061..c5a580b1b 100644 --- a/src/trade.c +++ b/src/trade.c @@ -2140,7 +2140,7 @@ static void HandleRedrawTradeMenuOnSide(u8 side) gSprites[sTradeMenuResourcesPtr->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]].data[4] = (sTradeMonSpriteCoords[whichParty * PARTY_SIZE][1] * 8) - 12; StoreSpriteCallbackInData6(&gSprites[sTradeMenuResourcesPtr->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]], SpriteCB_MonIcon); sTradeMenuResourcesPtr->menuRedrawState[side]++; - StartSpriteLinearTranslationFromCurrentPos(&gSprites[sTradeMenuResourcesPtr->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]]); + TradeMenuBouncePartySprites(&gSprites[sTradeMenuResourcesPtr->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]]); CopyToBgTilemapBufferRect_ChangePalette(1, sTradePartyBoxTilemap, side * 15, 0, 15, 17, 0); CopyBgTilemapBufferToVram(1); CopyBgTilemapBufferToVram(0); diff --git a/sym_ewram.txt b/sym_ewram.txt index 719497748..a3766873e 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -55,7 +55,7 @@ .include "src/safari_zone.o" .include "src/item_use.o" .include "src/battle_anim_effects_1.o" - .include "src/dragon.o" + .include "src/battle_anim_dragon.o" .include "src/battle_anim_utility_funcs.o" .include "src/battle_intro.o" .include "src/easy_chat.o"