From 6c20a49dc602592319bb836061fd1ca4d7980320 Mon Sep 17 00:00:00 2001 From: Evan Date: Mon, 25 May 2020 00:37:32 -0600 Subject: [PATCH] animations for all moves --- asm/macros/battle_anim_script.inc | 40 + data/battle_anim_scripts.s | 8378 ++++++++++++++++++++++++++++- include/battle_anim.h | 179 + include/constants/battle_anim.h | 28 + include/constants/moves.h | 41 +- ld_script.txt | 2 + src/battle_anim.c | 8 +- src/battle_anim_bug.c | 12 +- src/battle_anim_dark.c | 17 +- src/battle_anim_dragon.c | 32 +- src/battle_anim_effects_1.c | 70 +- src/battle_anim_effects_2.c | 18 +- src/battle_anim_effects_3.c | 12 +- src/battle_anim_electric.c | 85 +- src/battle_anim_fight.c | 56 +- src/battle_anim_fire.c | 10 +- src/battle_anim_flying.c | 20 +- src/battle_anim_ghost.c | 37 +- src/battle_anim_ground.c | 13 +- src/battle_anim_ice.c | 42 +- src/battle_anim_new.c | 5058 +++++++++++++++++ src/battle_anim_normal.c | 34 +- src/battle_anim_poison.c | 19 +- src/battle_anim_psychic.c | 7 +- src/battle_anim_rock.c | 29 +- src/battle_anim_water.c | 34 +- src/battle_gfx_sfx_util.c | 2 +- 27 files changed, 13829 insertions(+), 454 deletions(-) create mode 100644 src/battle_anim_new.c diff --git a/asm/macros/battle_anim_script.inc b/asm/macros/battle_anim_script.inc index 994e84ccd6..c54845e005 100644 --- a/asm/macros/battle_anim_script.inc +++ b/asm/macros/battle_anim_script.inc @@ -288,3 +288,43 @@ createvisualtask AnimTask_IsDoubleBattle, 0 jumprettrue \ptr .endm + +@ keep CFRU macros cause I'm lazy. todo: update to createsprite and createvisualtask, respectively +.macro launchtemplate launchtemplatePtr launchtemplatePriority launchtemplateArgsNo launchtemplatearg0 launchtemplatearg1 launchtemplatearg2 launchtemplatearg3 launchtemplatearg4 launchtemplatearg5 launchtemplatearg6 launchtemplatearg7 launchtemplatearg8 + .byte 0x2 + .word \launchtemplatePtr + .byte \launchtemplatePriority + .byte \launchtemplateArgsNo + .hword \launchtemplatearg0 + .hword \launchtemplatearg1 + .hword \launchtemplatearg2 + .hword \launchtemplatearg3 + .hword \launchtemplatearg4 + .hword \launchtemplatearg5 + .hword \launchtemplatearg6 + .hword \launchtemplatearg7 + .hword \launchtemplatearg8 + .endm + +.macro launchtask launchtaskPtr launchtaskPriority launchtaskArgsNo launchtaskarg0 launchtaskarg1 launchtaskarg2 launchtaskarg3 launchtaskarg4 launchtaskarg5 launchtaskarg6 launchtaskarg7 launchtaskarg8 + .byte 0x3 + .word \launchtaskPtr + .byte \launchtaskPriority + .byte \launchtaskArgsNo + .hword \launchtaskarg0 + .hword \launchtaskarg1 + .hword \launchtaskarg2 + .hword \launchtaskarg3 + .hword \launchtaskarg4 + .hword \launchtaskarg5 + .hword \launchtaskarg6 + .hword \launchtaskarg7 + .hword \launchtaskarg8 + .endm + +.macro setblends setblends_value +.byte 0xC +.hword \setblends_value +.endm + + diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index 9c591e95c2..56e7bf0db1 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -637,6 +637,98 @@ gBattleAnims_Moves:: .4byte Move_PRECIPICE_BLADES .4byte Move_DRAGON_ASCENT .4byte Move_HYPERSPACE_FURY +@@@@@@@@@@@@ GEN 7 @@@@@@@@@@@@ + .4byte Move_SHORE_UP + .4byte Move_FIRST_IMPRESSION + .4byte Move_BANEFUL_BUNKER + .4byte Move_SPIRIT_SHACKLE + .4byte Move_DARKEST_LARIAT + .4byte Move_SPARKLING_ARIA + .4byte Move_ICE_HAMMER + .4byte Move_FLORAL_HEALING + .4byte Move_HIGH_HORSEPOWER + .4byte Move_STRENGTH_SAP + .4byte Move_SOLAR_BLADE + .4byte Move_LEAFAGE + .4byte Move_SPOTLIGHT + .4byte Move_TOXIC_THREAD + .4byte Move_LASER_FOCUS + .4byte Move_GEAR_UP + .4byte Move_THROAT_CHOP + .4byte Move_POLLEN_PUFF + .4byte Move_ANCHOR_SHOT + .4byte Move_PSYCHIC_TERRAIN + .4byte Move_LUNGE + .4byte Move_FIRE_LASH + .4byte Move_POWER_TRIP + .4byte Move_BURN_UP + .4byte Move_SPEED_SWAP + .4byte Move_SMART_STRIKE + .4byte Move_PURIFY + .4byte Move_REVELATION_DANCE + .4byte Move_CORE_ENFORCER + .4byte Move_TROP_KICK + .4byte Move_INSTRUCT + .4byte Move_BEAK_BLAST + .4byte Move_CLANGING_SCALES + .4byte Move_DRAGON_HAMMER + .4byte Move_BRUTAL_SWING + .4byte Move_AURORA_VEIL + .4byte Move_SHELL_TRAP + .4byte Move_FLEUR_CANNON + .4byte Move_PSYCHIC_FANGS + .4byte Move_STOMPING_TANTRUM + .4byte Move_SHADOW_BONE + .4byte Move_ACCELEROCK + .4byte Move_LIQUIDATION + .4byte Move_PRISMATIC_LASER + .4byte Move_SPECTRAL_THIEF + .4byte Move_SUNSTEEL_STRIKE + .4byte Move_MOONGEIST_BEAM + .4byte Move_TEARFUL_LOOK + .4byte Move_ZING_ZAP + .4byte Move_NATURES_MADNESS + .4byte Move_MULTI_ATTACK + .4byte Move_MIND_BLOWN + .4byte Move_PLASMA_FISTS + .4byte Move_PHOTON_GEYSER + .4byte Move_DOUBLE_IRON_BASH +@@@@@@@@@@@@ GEN 8 @@@@@@@@@@@@ + .4byte Move_DYNAMAX_CANNON + .4byte Move_SNIPE_SHOT + .4byte Move_JAW_LOCK + .4byte Move_STUFF_CHEEKS + .4byte Move_NO_RETREAT + .4byte Move_TAR_SHOT + .4byte Move_MAGIC_POWDER + .4byte Move_DRAGON_DARTS + .4byte Move_TEA_TIME + .4byte Move_OCTOLOCK + .4byte Move_BOLT_BEAK + .4byte Move_FISHIOUS_REND + .4byte Move_COURT_CHANGE + .4byte Move_CLANGOROUS_SOUL + .4byte Move_BODY_PRESS + .4byte Move_DECORATE + .4byte Move_DRUM_BEATING + .4byte Move_SNAP_TRAP + .4byte Move_PYRO_BALL + .4byte Move_BEHEMOTH_BLADE + .4byte Move_BEHEMOTH_BASH + .4byte Move_AURA_WHEEL + .4byte Move_BREAKING_SWIPE + .4byte Move_BRANCH_POKE + .4byte Move_OVERDRIVE + .4byte Move_APPLE_ACID + .4byte Move_GRAV_APPLE + .4byte Move_SPIRIT_BREAK + .4byte Move_STRANGE_STEAM + .4byte Move_LIFE_DEW + .4byte Move_OBSTRUCT + .4byte Move_FALSE_SURRENDER + .4byte Move_METEOR_ASSAULT + .4byte Move_ETERNA_BEAM + .4byte Move_STEEL_BEAM .4byte Move_COUNT @ cannot be reached, because last move is Psycho Boost .align 2 @@ -2845,27 +2937,27 @@ Move_FLASH_CANNON: monbg ANIM_ATTACKER setalpha 13, 8 createvisualtask AnimTask_ElectricChargingParticles, 2, 0, 60, 2, 12 - playsewithpan 0xce, SOUND_PAN_ATTACKER + playsewithpan SE_W268, SOUND_PAN_ATTACKER delay 30 - playsewithpan 0xce, SOUND_PAN_ATTACKER + playsewithpan SE_W268, SOUND_PAN_ATTACKER delay 30 - playsewithpan 0xce, SOUND_PAN_ATTACKER + playsewithpan SE_W268, SOUND_PAN_ATTACKER createsprite gFlashCannonGrayChargeTemplate, ANIM_ATTACKER, 2, 0 delay 25 - playsewithpan 0xce, SOUND_PAN_ATTACKER + playsewithpan SE_W268, SOUND_PAN_ATTACKER delay 20 - playsewithpan 0xce, SOUND_PAN_ATTACKER + playsewithpan SE_W268, SOUND_PAN_ATTACKER delay 15 - playsewithpan 0xce, SOUND_PAN_ATTACKER + playsewithpan SE_W268, SOUND_PAN_ATTACKER delay 10 delay 6 - loopsewithpan 0xce, SOUND_PAN_ATTACKER, 6, 5 + loopsewithpan SE_W268, SOUND_PAN_ATTACKER, 6, 5 waitforvisualfinish - playsewithpan 0xA7, SOUND_PAN_ATTACKER + playsewithpan SE_W006, SOUND_PAN_ATTACKER createsprite gFlashCannonBallMovementTemplate, ANIM_TARGET, 2, 0, 0, 0x15 clearmonbg ANIM_ATTACKER waitforvisualfinish - playsewithpan 0xB9, SOUND_PAN_ATTACKER + playsewithpan SE_W043, SOUND_PAN_ATTACKER createvisualtask AnimTask_Flash, 2 createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 1, 16, 0, 0x1f createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 15, 1 @@ -2927,17 +3019,20 @@ Move_DEFOG: blendoff end -Move_TRICK_ROOM: - fadetobg BG_TRICK_ROOM - waitbgfadein - call GrowthEffect - waitforvisualfinish - delay 32 - blendoff - clearmonbg ANIM_DEF_PARTNER - restorebg - waitbgfadein +Move_TRICK_ROOM:: + call InitRoomAnimation + fadetobg BG_TRICK_ROOM + waitbgfadein + delay 0x40 + restorebg + waitbgfadein + blendoff end +InitRoomAnimation: + setalpha 8, 8 + playsewithpan SE_W048, SOUND_PAN_TARGET + launchtask AnimTask_ScaleMonAndRestore 5 5 0xfffa 0xfffa 15, 1 1 + return Move_DRACO_METEOR: loadspritegfx ANIM_TAG_WARM_ROCK @@ -3524,7 +3619,7 @@ Move_JUDGMENT: waitforvisualfinish createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 83, 1 createsprite gJudgmentBlackChargeTemplate, ANIM_TARGET, 1, 1, ANIM_TARGET - playsewithpan 0xb1, SOUND_PAN_TARGET + playsewithpan SE_W048, SOUND_PAN_TARGET call JudgmentInwardSpikes delay 5 call JudgmentInwardSpikes2 @@ -3572,7 +3667,7 @@ JudgmentOutwardSpikes: createsprite gJudgmentGrayOutwardSpikesTemplate, ANIM_TARGET, 2, 1, 1, 0xFFB0, 0x43, 16 @lower left createsprite gJudgmentGrayOutwardSpikesTemplate, ANIM_TARGET, 2, 1, 1, 0xFF60, 0, 16 @left createsprite gJudgmentGrayOutwardSpikesTemplate, ANIM_TARGET, 2, 1, 1, 0xFFAA, 0xFF94, 16 @upper left - playsewithpan 0xA1, SOUND_PAN_ATTACKER + playsewithpan SE_W054, SOUND_PAN_ATTACKER return JudgmentOutwardSpikes2: createsprite gJudgmentGrayOutwardSpikesTemplate, ANIM_TARGET, 2, 1, 1, 0x2D, 0xFF9D, 16 @between up and upper right @@ -3583,7 +3678,7 @@ JudgmentOutwardSpikes2: createsprite gJudgmentGrayOutwardSpikesTemplate, ANIM_TARGET, 2, 1, 1, 0xFF60, 0x43, 16 @between left and lower left createsprite gJudgmentGrayOutwardSpikesTemplate, ANIM_TARGET, 2, 1, 1, 0xFF2A, 0xFFAA, 16 @between left and upper left createsprite gJudgmentGrayOutwardSpikesTemplate, ANIM_TARGET, 2, 1, 1, 0xFFDA, 0xFF94, 16 @between up and upper left - playsewithpan 0xA1, SOUND_PAN_ATTACKER + playsewithpan SE_W054, SOUND_PAN_ATTACKER return JudgmentInwardSpikes: createsprite gJudgmentGrayInwardOrbsTemplate, ANIM_TARGET, 2, 1, 0, 0, 0xFF90, 16 @up @@ -3981,7 +4076,7 @@ Move_SPECIAL_REND: waitforvisualfinish fadetobgfromset BG_SPACIAL_REND_ON_OPPONENT BG_SPACIAL_REND_ON_PLAYER BG_SPACIAL_REND_ON_OPPONENT waitbgfadein - loopsewithpan 0x81, SOUND_PAN_TARGET, 3, 5 + loopsewithpan SE_W013, SOUND_PAN_TARGET, 3, 5 createsprite gSpacialRendBladesTemplate2, ANIM_TARGET, 1, 0, 10, SOUND_PAN_ATTACKER, 0xb0, 0x28 createsprite gSpacialRendBladesTemplate2, ANIM_TARGET, 1, 5, 0, 10, 0xff40, 0xf0, 0x28 createsprite gSpacialRendBladesTemplate2, ANIM_TARGET, 1, 5, 0, 10, SOUND_PAN_ATTACKER, 0xff60, 0x28 @@ -4049,16 +4144,16 @@ Move_CRUSH_GRIP: createvisualtask AnimTask_CompressTargetHorizontally, 2 createsprite gCrushGripExplosionTemplate, ANIM_TARGET, 0, 0, 0, 1, 1 delay 3 - playsewithpan 0xab, SOUND_PAN_ATTACKER + playsewithpan SE_W153, SOUND_PAN_ATTACKER createsprite gCrushGripExplosionTemplate, ANIM_TARGET, 0, 0x18, 0xffe8, 1, 1 delay 3 - playsewithpan 0xab, SOUND_PAN_ATTACKER + playsewithpan SE_W153, SOUND_PAN_ATTACKER createsprite gCrushGripExplosionTemplate, ANIM_TARGET, 0, 0xfff0, 16, 1, 1 delay 3 - playsewithpan 0xab, SOUND_PAN_ATTACKER + playsewithpan SE_W153, SOUND_PAN_ATTACKER createsprite gCrushGripExplosionTemplate, ANIM_TARGET, 0, 0xffe8, -12, 1, 1 delay 3 - playsewithpan 0xab, SOUND_PAN_ATTACKER + playsewithpan SE_W153, SOUND_PAN_ATTACKER createsprite gCrushGripExplosionTemplate, ANIM_TARGET, 0, 16, 16, 1, 1 waitforvisualfinish blendoff @@ -4099,7 +4194,7 @@ Move_DARK_VOID: createvisualtask AnimTask_StartSlidingBg, 5, 0, 0xFFA0, 1, 0xffff waitbgfadein createvisualtask AnimTask_DestinyBondWhiteShadow, 5, 0, 0x30 - loopsewithpan 0xBD, SOUND_PAN_ATTACKER, 5, 2 + loopsewithpan SE_W109, SOUND_PAN_ATTACKER, 5, 2 delay 0x30 createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0xfd00, 0x15, 0, 0x70 @Last is speed createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_DEF_PARTNER, 0xfd00, 0x15, 0, 0x70 @Last is speed @@ -4175,21 +4270,21 @@ Move_SEED_FLARE: createsprite gRazorLeafCutterSpriteTemplate, ANIM_TARGET, 3, 20, -10, 20, 0, 0x16, 20, 1 createsprite gRazorLeafCutterSpriteTemplate, ANIM_TARGET, 3, 20, -10, 20, 0, 0x16, -20, 1 delay 2 - playsewithpan 0x81, SOUND_PAN_TARGET + playsewithpan SE_W013, SOUND_PAN_TARGET createsprite gSeedFlareGreenWavesTemplate, ANIM_ATTACKER, 0x28, 0x5a, 0x800, 0x60, 1 delay 8 createsprite gSeedFlareGreenWavesTemplate, ANIM_ATTACKER, 0x28, 0x32, 0xa00, 0x60, 1 createsprite gRazorLeafCutterSpriteTemplate, ANIM_TARGET, 3, 20, -10, 20, 0, 0x16, 20, 1 createsprite gRazorLeafCutterSpriteTemplate, ANIM_TARGET, 3, 20, -10, 20, 0, 0x16, -20, 1 delay 2 - playsewithpan 0x81, SOUND_PAN_TARGET + playsewithpan SE_W013, SOUND_PAN_TARGET createsprite gSeedFlareGreenWavesTemplate, ANIM_ATTACKER, 0x28, 20, 0x900, 0x60, 1 delay 8 createsprite gSeedFlareGreenWavesTemplate, ANIM_ATTACKER, 0x28, 0x46, 0x7c0, 0x60, 1 createsprite gRazorLeafCutterSpriteTemplate, ANIM_TARGET, 3, 20, -10, 20, 0, 0x16, 20, 1 createsprite gRazorLeafCutterSpriteTemplate, ANIM_TARGET, 3, 20, -10, 20, 0, 0x16, -20, 1 delay 2 - playsewithpan 0x81, SOUND_PAN_TARGET + playsewithpan SE_W013, SOUND_PAN_TARGET delay 8 createsprite gSeedFlareGreenWavesTemplate, ANIM_ATTACKER, 0x28, 0, 0xb00, 0x60, 1 delay 10 @@ -4334,17 +4429,119 @@ HoneClawsAnim: delay 10 return + Move_WIDE_GUARD: + loadspritegfx ANIM_TAG_ICE_SPIKES @motion from icy wind + loadspritegfx ANIM_TAG_PINK_PETAL @pink color + loadspritegfx ANIM_TAG_SMALL_EMBER @yellow color + loadspritegfx ANIM_TAG_ROCKS @brown color + loadspritegfx ANIM_TAG_CONVERSION @conversion + loadspritegfx ANIM_TAG_WATER_ORB @blue color + monbg ANIM_ATTACKER + setalpha 12, 8 + createvisualtask AnimTask_RockMonBackAndForth, 0x5, 0x0, 0x3, 0x0 + waitplaysewithpan SE_W060B, SOUND_PAN_ATTACKER, 0x10 + createsprite gWideGuardBlueConversionTemplate, ANIM_ATTACKER, 0x2, 0xffe8, 0xffe8 + delay 3 + createsprite gWideGuardBlueConversionTemplate, ANIM_ATTACKER, 0x2, 0xfff8, 0xffe8 + delay 3 + createsprite gWideGuardBlueConversionTemplate, ANIM_ATTACKER, 0x2, 0x8, 0xffe8 + delay 3 + createsprite gWideGuardBlueConversionTemplate, ANIM_ATTACKER, 0x2, 0x18, 0xffe8 + delay 3 + createsprite gWideGuardBlueConversionTemplate, ANIM_ATTACKER, 0x2, 0xffe8, 0xfff8 + delay 3 + createsprite gWideGuardBlueConversionTemplate, ANIM_ATTACKER, 0x2, 0xfff8, 0xfff8 + delay 3 + createsprite gWideGuardBlueConversionTemplate, ANIM_ATTACKER, 0x2, 0x8, 0xfff8 + delay 3 + createsprite gWideGuardBlueConversionTemplate, ANIM_ATTACKER, 0x2, 0x18, 0xfff8 + delay 3 + createsprite gWideGuardBlueConversionTemplate, ANIM_ATTACKER, 0x2, 0xffe8, 0x8 + delay 3 + createsprite gWideGuardBlueConversionTemplate, ANIM_ATTACKER, 0x2, 0xfff8, 0x8 + delay 3 + createsprite gWideGuardBlueConversionTemplate, ANIM_ATTACKER, 0x2, 0x8, 0x8 + delay 3 + createsprite gWideGuardBlueConversionTemplate, ANIM_ATTACKER, 0x2, 0x18, 0x8 + delay 3 + createsprite gWideGuardBlueConversionTemplate, ANIM_ATTACKER, 0x2, 0xffe8, 0x18 + delay 3 + createsprite gWideGuardBlueConversionTemplate, ANIM_ATTACKER, 0x2, 0xfff8, 0x18 + delay 3 + createsprite gWideGuardBlueConversionTemplate, ANIM_ATTACKER, 0x2, 0x8, 0x18 + delay 3 + createsprite gWideGuardBlueConversionTemplate, ANIM_ATTACKER, 0x2, 0x18, 0x18 + delay 0x14 + playsewithpan SE_W202, SOUND_PAN_TARGET + createvisualtask AnimTask_ConversionAlphaBlend, 5 + waitforvisualfinish + clearmonbg ANIM_ATTACKER + blendoff end + -Move_GUARD_SPLIT: +Move_GUARD_SPLIT:: + loadspritegfx ANIM_TAG_BLUEGREEN_ORB + createsprite AnimTask_BlendBattleAnimPal, ANIM_ATTACKER, 10, PAL_BG, 0x1, 0x0, 0xC, 0x0 + loopsewithpan SE_W199, SOUND_PAN_ATTACKER, 0x18, 0x3 + call GuardSplitLaunch + call GuardSplitLaunch + call GuardSplitLaunch + call GuardSplitLaunch + call GuardSplitLaunch + call GuardSplitLaunch + call GuardSplitLaunch + call GuardSplitLaunch + call GuardSplitLaunch + call GuardSplitLaunch + waitforvisualfinish + createsprite AnimTask_BlendBattleAnimPal, ANIM_ATTACKER 10, PAL_BG, 0x1, 0xC, 0x0, 0x0 + waitforvisualfinish end - -Move_POWER_SPLIT: +GuardSplitLaunch: + createsprite gGuardSwapOrbs1Template, ANIM_TARGET, 2, 0xfff4, 0x0 + createsprite gGuardSwapOrbs2Template, ANIM_TARGET, 0, 0x0, 0x0, 0x0, 0x0, 0x1E, 0x0 + delay 0x5 + return + + +Move_POWER_SPLIT:: + loadspritegfx ANIM_TAG_RED_HEART + loadspritegfx ANIM_TAG_BLUEGREEN_ORB + createvisualtask AnimTask_BlendBattleAnimPal, 10, PAL_BG, 0x1, 0x0, 0xC, 0x0 + loopsewithpan SE_W199, SOUND_PAN_ATTACKER, 0x18, 0x3 + call PowerSplitLaunch + call PowerSplitLaunch + call PowerSplitLaunch + call PowerSplitLaunch + call PowerSplitLaunch + call PowerSplitLaunch + call PowerSplitLaunch + call PowerSplitLaunch + call PowerSplitLaunch + call PowerSplitLaunch + waitforvisualfinish + createvisualtask AnimTask_BlendBattleAnimPal, 10, PAL_BG, 0x1, 0xC, 0x0, 0x0 + waitforvisualfinish end - -Move_WONDER_ROOM: +PowerSplitLaunch: + createsprite gPowerSplitOrbs1Template, ANIM_TARGET, 2, 0xfff4, 0x0 + createsprite gPowerSplitOrbs2Template, ANIM_TARGET, 0, 0x0, 0x0, 0x0, 0x0, 0x1E, 0x0 + delay 5 + return + + +Move_WONDER_ROOM:: + call InitRoomAnimation + fadetobg BG_WONDER_ROOM + waitbgfadein + delay 0x40 + restorebg + waitbgfadein + blendoff end + Move_PSYSHOCK: monbg ANIM_TARGET @@ -4388,20 +4585,100 @@ Move_VENOSHOCK: delay 15 end + Move_AUTOTOMIZE: + loadspritegfx ANIM_TAG_METAL_BITS @Metal Bits + setalpha 12, 8 + monbg SIDE_ATTACKER + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 0x2, 0x0, 0x18, 0x6, 0x4, 0x4 + createvisualtask AnimTask_TraceMonBlended 0x2, 0x0, 0x4, 0x7, 0xa + playsewithpan SE_ELEBETA, SOUND_PAN_ATTACKER + createsprite gAutotomizeMetalShardsTemplate, ANIM_ATTACKER, 0x2, 0x0, 0x0 + createsprite gAutotomizeMetalShardsTemplate, ANIM_ATTACKER, 0x2, 0x0, 0x1 + delay 0xc + createsprite gAutotomizeMetalShardsTemplate, ANIM_ATTACKER, 0x2, 0x0, 0x2 + createsprite gAutotomizeMetalShardsTemplate, ANIM_ATTACKER, 0x2, 0x0, 0x3 + delay 0xc + createsprite gAutotomizeMetalShardsTemplate, ANIM_ATTACKER, 0x2, 0x0, 0x0 + createsprite gAutotomizeMetalShardsTemplate, ANIM_ATTACKER, 0x2, 0x0, 0x1 + delay 0xc + createsprite gAutotomizeMetalShardsTemplate, ANIM_ATTACKER, 0x2, 0x0, 0x2 + createsprite gAutotomizeMetalShardsTemplate, ANIM_ATTACKER, 0x2, 0x0, 0x3 + delay 0x18 + waitforvisualfinish + stopsound + clearmonbg SIDE_ATTACKER + blendoff end - -Move_RAGE_POWDER: + + +Move_RAGE_POWDER:: + loadspritegfx ANIM_TAG_SPORE @Powder + loadspritegfx ANIM_TAG_HEART_STAMP @Red Colour + monbg SIDE_TARGET + monbgprio_28 ANIM_TARGET + loopsewithpan SE_W077, SOUND_PAN_TARGET, 0x12, 0xa + call RagePowderSprinkle + call RagePowderSprinkle + call RagePowderSprinkle + createvisualtask AnimTask_BlendColorCycle, ANIM_ATTACKER, 0x2, PAL_ATK, 0x2, 0x2, 0x0, 0xb, 0x1f + waitforvisualfinish + clearmonbg SIDE_TARGET end - -Move_TELEKINESIS: +RagePowderSprinkle: + createsprite gRagePowderRedPowderTemplate, ANIM_ATTACKER, 0x2, 0x0, 0xffec, 0x55, 0x50, 0x0 + delay 0xc + createsprite gRagePowderRedPowderTemplate, ANIM_ATTACKER, 0x2, 0x0, 0xfff6, 0xaa, 0x50, 0x0 + delay 0xc + createsprite gRagePowderRedPowderTemplate, ANIM_ATTACKER, 0x2, 0x0, 0xfff1, 0x0, 0x50, 0x0 + delay 0xc + return + + +Move_TELEKINESIS:: + loadspritegfx ANIM_TAG_SPARKLE_4 @detect + createvisualtask AnimTask_BlendBattleAnimPal, 10, PAL_BG, 0x1, 0x0, 0x9, 0x0 + waitforvisualfinish + createvisualtask AnimTask_BlendBattleAnimPal, 10, PAL_ATK, 0x1, 0x0, 0x9, 0x7fff + delay 0x12 + playsewithpan SE_W197, SOUND_PAN_ATTACKER + createsprite gSpinningSparkleSpriteTemplate, ANIM_ATTACKER, 0xd, 0x14, 0xffec + waitforvisualfinish + loopsewithpan SE_W048, SOUND_PAN_TARGET, 0xa, 0x3 + createvisualtask AnimTask_SwayMon, 0x5, 0x1, 0x18, 0xD0, 0x1, ANIM_TARGET + waitforvisualfinish + delay 0xA + createvisualtask AnimTask_BlendBattleAnimPal, 10, PAL_BG, 0x1, 0x9, 0x0, 0x0 + createvisualtask AnimTask_BlendBattleAnimPal, 10, PAL_ATK, 0x2, 0x9, 0x0, 0x7fff + waitforvisualfinish end - -Move_MAGIC_ROOM: - end - -Move_SMACK_DOWN: + + +Move_MAGIC_ROOM:: + call InitRoomAnimation + fadetobg BG_MAGIC_ROOM + waitbgfadein + delay 0x40 + restorebg + waitbgfadein + blendoff end + + +Move_SMACK_DOWN:: + loadspritegfx ANIM_TAG_BLACK_BALL + loadspritegfx ANIM_TAG_IMPACT + loadspritegfx ANIM_TAG_ROCKS + playsewithpan SE_W104, SOUND_PAN_ATTACKER + createsprite gRockBlastRockSpriteTemplate, ANIM_TARGET, 2, 0x14, 0x0, 0x0, 0x0, 0x15, 0xffe7 + waitforvisualfinish + createvisualtask AnimTask_SmokescreenImpact, 0x8, 0x400, 0x1902 + fadetobg BG_IN_AIR + waitbgfadeout + createvisualtask AnimTask_StartSlidingBg, 5, 0x0, 0x0, 0x0, 0xffff + createvisualtask AnimTask_SeismicTossBgAccelerateDownAtEnd, 3 + goto SeismicTossWeak + Move_STORM_THROW: call StormThorwAnim @@ -4456,7 +4733,11 @@ Move_FLAME_BURST: end Move_SLUDGE_WAVE: + panse_1B SE_W250, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0 + createvisualtask AnimTask_CreateSurfWave, 0x2, SURF_PALETTE_SLUDGE_WAVE + waitforvisualfinish end + Move_QUIVER_DANCE: loadspritegfx ANIM_TAG_HOLLOW_ORB @@ -4512,10 +4793,73 @@ Move_HEAVY_SLAM: end Move_SYCHRONOISE: + loadspritegfx ANIM_TAG_THIN_RING @hypervoice ring + loadspritegfx ANIM_TAG_SPARK_2 @yellow color + loadspritegfx ANIM_TAG_WATER_ORB @blue color + loadspritegfx ANIM_TAG_POISON_BUBBLE @violet color + loadspritegfx ANIM_TAG_SMALL_EMBER @flame wheel particle + loadspritegfx ANIM_TAG_AIR_WAVE_2 @aero particles + monbg SIDE_TARGET + monbgprio_2A 0x1 + createvisualtask AnimTask_BlendBattleAnimPal, 10, PAL_BG, 0x1, 0x0, 0xC, 0x0 @Darken + waitforvisualfinish + panse_1B SE_W103, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0 + createsprite gSynchronoiseVioletRingTemplate, ANIM_ATTACKER, 0x0, 0x2d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1 + delay 0x1 + createsprite gSynchronoiseBlueRingTemplate, ANIM_ATTACKER, 0x0, 0x2d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1 + delay 0x1 + createsprite gSynchronoiseYellowRingTemplate, ANIM_ATTACKER, 0x0, 0x2d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1 + delay 0x25 + panse_1B SE_W103, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0 + createsprite gSynchronoiseBlueRingTemplate, ANIM_ATTACKER, 0x0, 0x2d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1 + delay 0x1 + createsprite gSynchronoiseVioletRingTemplate, ANIM_ATTACKER, 0x0, 0x2d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1 + delay 0x1 + createsprite gSynchronoiseYellowRingTemplate, ANIM_ATTACKER, 0x0, 0x2d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1 + waitforvisualfinish + loopsewithpan SE_W013, SOUND_PAN_TARGET, 0x3, 0x5 + createsprite gSynchronoiseAeroWheelTemplate, ANIM_TARGET, 1, 0x0, 0xffef, SOUND_PAN_ATTACKER, 0xb0, 0x28 + createsprite gSynchronoiseAeroWheelTemplate, ANIM_TARGET, 1, 0x0, 0xffef, 0xff40, 0xf0, 0x28 + createsprite gSynchronoiseAeroWheelTemplate, ANIM_TARGET, 1, 0x0, 0xffef, SOUND_PAN_ATTACKER, 0xff60, 0x28 + createsprite gSynchronoiseAeroWheelTemplate, ANIM_TARGET, 1, 0x0, 0xffef, 0xff40, 0xff90, 0x28 + createsprite gSynchronoiseAeroWheelTemplate, ANIM_TARGET, 1, 0x0, 0xffef, 0xa0, 0x30, 0x28 + createsprite gSynchronoiseAeroWheelTemplate, ANIM_TARGET, 1, 0x0, 0xffef, 0xff20, 0xffe0, 0x28 + createsprite gSynchronoiseAeroWheelTemplate, ANIM_TARGET, 1, 0x0, 0xffef, 0x70, 0xff80, 0x28 + waitforvisualfinish + createvisualtask AnimTask_BlendBattleAnimPal, 10, PAL_BG, 0x1, 0xC, 0x0, 0x0 @Darken + waitforvisualfinish + clearmonbg SIDE_TARGET end + Move_ELECTRO_BALL: + loadspritegfx ANIM_TAG_SPARK_2 @yelow + loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT @charge + monbg 0x0 + setalpha 12, 8 + playsewithpan SE_W268, SOUND_PAN_ATTACKER + launchtemplate gGrowingChargeOrbSpriteTemplate 0x2 0x1 0x0 + delay 0x19 + playsewithpan SE_W268, SOUND_PAN_ATTACKER + delay 0x14 + playsewithpan SE_W268, SOUND_PAN_ATTACKER + delay 0xF + playsewithpan SE_W268, SOUND_PAN_ATTACKER + delay 0xA + delay 0x6 + loopsewithpan SE_W268, 0xC, 0x6, 0x5 + waitforvisualfinish + loadspritegfx ANIM_TAG_FLASH_CANNON_BALL @ball + launchtemplate gElectroBallCannonBallTemplate, ANIM_TARGET, 2, 0x10, 0x10, 0x8 + waitforvisualfinish + playsewithpan SE_W028, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon2, 0x2, 0x1, 0x4, 0x0, 0x8, 0x1 + call ElectricityEffect + waitforvisualfinish + clearmonbg 0x0 + blendoff end + Move_SOAK: loadspritegfx ANIM_TAG_SMALL_BUBBLES @@ -4553,10 +4897,58 @@ Move_SOAK: end Move_FLAME_CHARGE: + loadspritegfx ANIM_TAG_SMALL_EMBER + loadspritegfx ANIM_TAG_IMPACT + monbg ANIM_TARGET + loopsewithpan SE_W172, SOUND_PAN_ATTACKER, 0x20, 0x6 + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 0x2, 0x0, 0xc, 0x6, 0x6, 0x3 + call FlameChargeSwirl + delay 0x9 + call FlameChargeSwirl + delay 0x9 + call FlameChargeSwirl + delay 0x9 + call FlameChargeSwirl + delay 0x9 + call FlameChargeSwirl + waitforvisualfinish + launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_ATTACKER 0x18 0x0 0x0 0x5 + delay 0x3 + playsewithpan SE_W025B, SOUND_PAN_TARGET + launchtemplate gBasicHitSplatSpriteTemplate 0x3 0x4 0x0 0x0 0x1 0x0 + createvisualtask AnimTask_ShakeMon, 0x2, 0x1, 0x6, 0x0, 0x8, 0x1 + call FireSpreadEffect + playsewithpan SE_W007, SOUND_PAN_ATTACKER + waitforvisualfinish + delay 0x8 + launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_ATTACKER 0x0 0x7 + waitforvisualfinish + clearmonbg ANIM_TARGET end +FlameChargeSwirl: + launchtemplate gFlameChargeEmberTemplate 0x2 0x4 0x0 0xffe8 0x8 0x8c + return + Move_COIL: + loadspritegfx ANIM_TAG_TENDRILS + loopsewithpan SE_W010, SOUND_PAN_TARGET, 0x6, 0x4 + launchtemplate gConstrictBindingSpriteTemplate 0x84, 0x4, 0x0 0x10 0x0 0x2 + delay 0x7 + launchtemplate gConstrictBindingSpriteTemplate 0x83 0x4 0x0 0x0 0x0 0x2 + launchtemplate gConstrictBindingSpriteTemplate 0x82, 0x4, 0x0 0x8 0x1 0x2 + delay 0x7 + launchtemplate gConstrictBindingSpriteTemplate 0x83 0x4 0x0 0xfff8 0x1 0x2 + delay 0x8 + launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x3 0x0 0x6 0x1 + delay 0x14 + launchtask AnimTask_ShakeMon2 0x83 0x5 0x1 0x4 0x0 0x5 0x1 + launchtask AnimTask_StretchTargetUp 0x3 0x0 + playsewithpan SE_W020, SOUND_PAN_TARGET + setarg 0x7 0xffff + waitforvisualfinish end + Move_LOW_SWEEP: loadspritegfx ANIM_TAG_HANDS_AND_FEET @@ -4597,17 +4989,108 @@ Move_ACID_SPRAY: end Move_FOUL_PLAY: + loadspritegfx ANIM_TAG_POISON_BUBBLE + loadspritegfx ANIM_TAG_THIN_RING + loadspritegfx ANIM_TAG_IMPACT + loadspritegfx ANIM_TAG_HANDS_AND_FEET @Black colour + monbg ANIM_TARGET + setalpha 12, 8 + launchtemplate gHorizontalLungeSpriteTemplate 0x2 0x2 0x4 0x4 + delay 0x6 + launchtemplate gFoulPlayImpactTemplate 0x2 0x4 0x0 0x0 0x1 0x1 + launchtask AnimTask_ShakeMon 0x2 0x5 0x1 0x3 0x0 0x6 0x1 + playsewithpan SE_W233 SOUND_PAN_TARGET + launchtask AnimTask_BlendBattleAnimPal, 0xa, 0x5, (PAL_BG | PAL_ALL_BANKS), 0x3, 0xa, 0x0, 0x0 + launchtemplate gFoulPlayRingTemplate 0x3 0x4 0x0 0x0 0x100 0x0 + delay 0x8 + playsewithpan SE_W004, SOUND_PAN_TARGET + launchtask AnimTask_BlendBattleAnimPal, 0xa, 0x5, (PAL_BG | PAL_ALL_BANKS), 0x3, 0xa, 0x0, 0x0 + launchtemplate gFoulPlayRingTemplate 0x3 0x4 0x0 0x0 0x100 0x0 + waitforvisualfinish + clearmonbg ANIM_TARGET + blendoff end + Move_SIMPLE_BEAM: + loadspritegfx ANIM_TAG_GOLD_RING @psybeam + loadspritegfx ANIM_TAG_ROCKS @brown color + loadspritegfx ANIM_TAG_PINK_PETAL @pink color + loadspritegfx ANIM_TAG_THIN_RING @ring + setalpha 8, 8 + monbg ANIM_TARGET + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0xC 0x0 + waitforvisualfinish + playsewithpan SE_W062, SOUND_PAN_ATTACKER + call SimpleBeamsRegular + call SimpleBeamsRegular + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_DEF 0x2 0x0 0x9 0x7FFF + launchtask AnimTask_SwayMon 0x5 0x5 0x0 0x6 0x800 0x4 ANIM_TARGET + call SimpleBeamWithRings + call SimpleBeamWithRings + call SimpleBeamWithRings + call SimpleBeamWithRings + call SimpleBeamWithRings + launchtemplate gSimpleBeamBrownRingTemplate 0x3 0x6 0x0 0x0 0x1 0x0 0x1F 0x8 + delay 0x2 + launchtemplate gSimpleBeamPinkRingTemplate 0x3 0x6 0x0 0x0 0x1 0x0 0x1F 0x8 + delay 0x2 + stopsound + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_DEF 0x2 0x9 0x0 0x7FFF + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0xC 0x0 0x0 + waitforvisualfinish + clearmonbg ANIM_TARGET + blendoff end +SimpleBeamsRegular: + launchtemplate gSimpleBeamBrownTemplate 0x82 0x6 0x10 0x0 0x0 0x0 0xd 0x0 + delay 0x2 + launchtemplate gSimpleBeamPinkTemplate 0x82 0x6 0x10 0x0 0x0 0x0 0xd 0x0 + delay 0x2 + return +SimpleBeamWithRings: + launchtemplate gSimpleBeamBrownTemplate 0x82 0x6 0x10 0x0 0x0 0x0 0xd 0x0 + launchtemplate gSimpleBeamBrownRingTemplate 0x3 0x6 0x0 0x0 0x1 0x0 0x1F 0x8 + delay 0x2 + launchtemplate gSimpleBeamPinkTemplate 0x82 0x6 0x10 0x0 0x0 0x0 0xd 0x0 + launchtemplate gSimpleBeamPinkRingTemplate 0x3 0x6 0x0 0x0 0x1 0x0 0x1F 0x8 + delay 0x2 + return + Move_ENTRAINMENT: + createvisualtask AnimTask_TeeterDanceMovement, 5 + playsewithpan SE_W298, SOUND_PAN_ATTACKER + delay 0x18 + playsewithpan SE_W298, SOUND_PAN_ATTACKER + delay 0x18 + playsewithpan SE_W298, SOUND_PAN_ATTACKER + delay 0x18 + playsewithpan SE_W298, SOUND_PAN_ATTACKER + delay 0x18 + playsewithpan SE_W298, SOUND_PAN_ATTACKER + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x3 0x0 0x1f 0x1 + waitforvisualfinish end + Move_AFTER_YOU: + loadspritegfx ANIM_TAG_ANGER @rage + loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT @green color + launchtask AnimTask_SwayMon 0x5 0x5 0x1 0xF 0x600 0x2 ANIM_ATTACKER + delay 0x1 + launchtemplate gAfterYouGreenRageTemplate 0x2 0x3 0x0 0xffec 0xffe0 + launchtemplate gAfterYouGreenRageTemplate 0x2 0x3 0x0 0xfffb 0xffe5 + playsewithpan SE_W207B, SOUND_PAN_ATTACKER + delay 0x14 + launchtemplate gAfterYouGreenRageTemplate 0x2 0x3 0x0 0x14 0xffe0 + launchtemplate gAfterYouGreenRageTemplate 0x2 0x3 0x0 0x23 0xffe5 + playsewithpan SE_W207B, SOUND_PAN_ATTACKER + waitforvisualfinish end + Move_ROUND: loadspritegfx ANIM_TAG_MUSIC_NOTES createvisualtask AnimTask_MusicNotesRainbowBlend, 2 @@ -4631,9 +5114,41 @@ Move_ROUND: end Move_ECHOED_VOICE: + loadspritegfx ANIM_TAG_METAL_SOUND_WAVES + monbg SIDE_TARGET + monbgprio_2A 0x1 + launchtask AnimTask_ShakeMon2 0x2 0x5 0x0 0x2 0x0 0x8 0x1 + call MetalSoundPlayNote + call MetalSoundPlayNote + call MetalSoundPlayNote + call MetalSoundPlayNote + waitforvisualfinish + clearmonbg SIDE_TARGET + delay 0x0 + waitforvisualfinish end +MetalSoundPlayNote: + panse_1B SE_W253, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 2, 0 + launchtemplate gMetalSoundSpriteTemplate 0x82 0x6 0x10 0x0 0x0 0x0 0x1e 0x0 + delay 0x2 + return Move_CHIP_AWAY: + loadspritegfx ANIM_TAG_IMPACT + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_ATK 0x2 0x0 0x9 0x7FFF + waitforvisualfinish + monbg SIDE_ATTACKER + setalpha 12, 8 + launchtask AnimTask_TranslateMonEllipticalRespectSide 0x2 0x5 0x0 0x18 0x6 0x1 0x5 + delay 0x4 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x5 0x0 0x6 0x1 + launchtemplate gBasicHitSplatSpriteTemplate 0x84, 0x4, 0x0 0x0 0x1 0x1 + playsewithpan SE_W233B SOUND_PAN_TARGET + waitforvisualfinish + clearmonbg SIDE_ATTACKER + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_ATK 0x2 0x9 0x0 0x7FFF + waitforvisualfinish + blendoff end Move_CLEAR_SMOG: @@ -4695,10 +5210,39 @@ Move_STORED_POWER: end Move_QUICK_GUARD: + loadspritegfx ANIM_TAG_QUICK_GUARD_HAND @hand + loadspritegfx ANIM_TAG_SPARKLE_4 @sparkles + setalpha 12, 8 + launchtask AnimTask_BlendColorCycle 0x2 0x6 PAL_ATK 0x0 0x2 0x0 0xa 0x7FFF + delay 0x10 + monbg ANIM_ATTACKER + launchtemplate gQuickGuardArmImpactTemplate 0x83 0x5 0xE 0x0 0x8 0x0 0x0 + launchtemplate gQuickGuardArmImpactTemplate 0x83 0x5 0xfff2 0x0 0x8 0x0 0x0 + delay 0x1 + launchtemplate gQuickGuardArmImpactTemplate 0x83 0x5 0xE 0x0 0x8 0x0 0x0 + launchtemplate gQuickGuardArmImpactTemplate 0x83 0x5 0xfff2 0x0 0x8 0x0 0x0 + delay 0x1 + launchtemplate gQuickGuardArmImpactTemplate 0x83 0x5 0xE 0x0 0x8 0x0 0x0 + launchtemplate gQuickGuardArmImpactTemplate 0x83 0x5 0xfff2 0x0 0x8 0x0 0x0 + waitforvisualfinish + playsewithpan SE_W197, SOUND_PAN_ATTACKER + launchtemplate gSpinningSparkleSpriteTemplate 0xd 0x2 0x0 0xffe3 @up + launchtemplate gSpinningSparkleSpriteTemplate 0xd 0x2 0x16 0xffec @upper right + launchtemplate gSpinningSparkleSpriteTemplate 0xd 0x2 0x1D 0x0 @right + launchtemplate gSpinningSparkleSpriteTemplate 0xd 0x2 0xffe9 0xffec @upper left + launchtemplate gSpinningSparkleSpriteTemplate 0xd 0x2 0xffe2 0x0 @left + launchtemplate gSpinningSparkleSpriteTemplate 0xd 0x2 0x0 0x1c @down + launchtemplate gSpinningSparkleSpriteTemplate 0xd 0x2 0x16 0x13 @lower left + launchtemplate gSpinningSparkleSpriteTemplate 0xd 0x2 0xffea 0x13 @lower right + waitforvisualfinish + blendoff + clearmonbg ANIM_ATTACKER end + Move_ALLY_SWITCH: end + Move_SCALD: loadspritegfx ANIM_TAG_WATER_ORB @@ -4781,16 +5325,97 @@ Move_HEAL_PULSE: end Move_HEX: + loadspritegfx ANIM_TAG_PURPLE_FLAME + loadspritegfx ANIM_TAG_GHOSTLY_SPIRIT + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x0 0x0 0x10 0x4C4A @;Deep purple + waitforvisualfinish + monbg ANIM_TARGET + monbgprio_29 + playsewithpan SE_W060, SOUND_PAN_ATTACKER + waitbgfadein + launchtask AnimTask_PurpleFlamesOnTarget 0x3 0x0 + launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_TARGET 0x2 0x0 0x25 0x1 + playsewithpan SE_W171, SOUND_PAN_TARGET + delay 0x20 + launchtask AnimTask_BlendColorCycle 0x2 0x6 PAL_DEF 0x2 0x2 0x0 0xc 0x4C4A @;Deep purple + launchtemplate gCurseGhostSpriteTemplate 0x84, 0x0 + waitforvisualfinish + clearmonbg ANIM_TARGET + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x0 0x10 0x0 0x4C4A @;Deep purple + waitforvisualfinish end Move_SKY_DROP: + loadspritegfx ANIM_TAG_ROUND_SHADOW + loadspritegfx ANIM_TAG_IMPACT + choosetwoturnanim SkyDropSetup SkyDropUnleash + end +SkyDropSetup: + invisible ANIM_ATTACKER + loadspritegfx ANIM_TAG_SMALL_BUBBLES @mist ball + loadspritegfx ANIM_TAG_WHITE_FEATHER + loadspritegfx ANIM_TAG_ROUND_SHADOW @fly + delay 0x0 + playsewithpan SE_W081, SOUND_PAN_ATTACKER + launchtemplate gSkyDropFlyBallTemplate 0x80 0x6 0x0 0x0 0x0 0x0 0x1e 0x0 + waitforvisualfinish + invisible ANIM_TARGET + playsewithpan SE_W019, SOUND_PAN_ATTACKER + launchtemplate gSkyDropTargetFlyingTemplate 0x2 0x4 0x0 0x0 0xd 0x150 + end +SkyDropUnleash: + visible ANIM_TARGET + monbg SIDE_TARGET + setalpha 12, 8 + playsewithpan SE_W207, SOUND_PAN_TARGET + launchtemplate gBounceBallLandSpriteTemplate 0x83 0x0 + delay 0x7 + playsewithpan SE_W025B, SOUND_PAN_TARGET + launchtemplate gBasicHitSplatSpriteTemplate 0x82, 0x4, 0x0 0x0 0x1 0x0 + launchtask AnimTask_ShakeMon 0x5 0x5 0x1 0x0 0x5 0xb 0x1 + waitforvisualfinish + clearmonbg SIDE_TARGET + blendoff end Move_SHIFT_GEAR: + loadspritegfx ANIM_TAG_GEAR @Gear + monbg ANIM_ATTACKER + playsewithpan SE_ESUKA, SOUND_PAN_ATTACKER + launchtemplate gShiftGearGearsTemplate 0x2 0x5 ANIM_ATTACKER 0xFFF3 0x8 0x65 0xa + launchtemplate gShiftGearGearsTemplate 0x2 0x5 ANIM_ATTACKER 0xE 0xFFF8 0x65 0xa + waitforvisualfinish + clearmonbg ANIM_ATTACKER end + Move_CIRCLE_THROW: + loadspritegfx ANIM_TAG_IMPACT + loadspritegfx ANIM_TAG_THIN_RING + loadspritegfx ANIM_TAG_ICE_CHUNK + monbg SIDE_TARGET + setalpha 12, 8 + playsewithpan SE_W233, SOUND_PAN_ATTACKER + launchtask AnimTask_TranslateMonEllipticalRespectSide 0x2 0x5 0x0 0xc 0x4 0x1 0x2 + waitforvisualfinish + launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_ATTACKER 0x14 0x0 0x0 0x4 + delay 0x2 + launchtemplate gBasicHitSplatSpriteTemplate 0x3 0x4 0x0 0x0 0x1 0x1 + launchtemplate gCircleThrowRingTemplate 0x3 0x4 0x0 0x0 0x100 0x0 + playsewithpan SE_W233B, SOUND_PAN_TARGET + delay 0x1 + launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_TARGET 0xffe8 0x0 0x0 0x4 + launchtemplate gCircleThrowRingTemplate 0x3 0x4 0x0 0x0 0x100 0x0 + waitforvisualfinish + delay 0x3 + launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_ATTACKER 0x0 0x7 + delay 0xb + launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_TARGET 0x0 0xa + waitforvisualfinish + clearmonbg SIDE_TARGET + blendoff end + Move_INCINERATE: loadspritegfx ANIM_TAG_SMALL_EMBER @@ -4833,6 +5458,20 @@ Move_INCINERATE: end Move_QUASH: + loadspritegfx ANIM_TAG_ASSURANCE_HAND @hand + fadetobg BG_DARK + waitbgfadein + setalpha 12, 8 + playsewithpan SE_W003, SOUND_PAN_TARGET + launchtemplate gQuashArmHitTemplate 0x83, 0x3 0x0 0xffe0 0xf + delay 0x13 + playsewithpan SE_W107, SOUND_PAN_ATTACKER + launchtask AnimTask_SquishTarget 0x2 0x0 + waitforvisualfinish + clearmonbg ANIM_TARGET + blendoff + restorebg + waitbgfadein end Move_ACROBATICS: @@ -4855,17 +5494,105 @@ Move_ACROBATICS: end Move_REFLECT_TYPE: + loadspritegfx ANIM_TAG_GUARD_RING @ring around user + loadspritegfx ANIM_TAG_ICE_CHUNK @blue green color + loadspritegfx ANIM_TAG_PURPLE_FLAME @violet color + loadspritegfx ANIM_TAG_PINK_PETAL @pink color + monbg ANIM_TARGET + setalpha 8, 8 + playsewithpan SE_W081B, SOUND_PAN_TARGET + launchtemplate gReflectTypeBlueStringTemplate 0x82 0x2 0x0 0xa + delay 0x4 + launchtemplate gReflectTypeVioletStringTemplate 0x82 0x2 0x0 0xfffe + delay 0x4 + launchtemplate gReflectTypeWhiteStringTemplate 0x82 0x2 0x0 0x16 + waitforvisualfinish + clearmonbg ANIM_TARGET + delay 0x1F + monbg ANIM_ATTACKER + playsewithpan SE_W208, SOUND_PAN_ATTACKER + launchtemplate gReflectTypeWhiteRingTemplate 0x2 0x0 + delay 0x1 + launchtemplate gReflectTypePinkRingTemplate 0x2 0x0 + delay 0x1 + launchtemplate gReflectTypeVioletRingTemplate 0x2 0x0 + delay 0x1 + launchtemplate gReflectTypeBlueRingTemplate 0x2 0x0 + delay 0x1 + launchtemplate gReflectTypeWhiteRingTemplate 0x2 0x0 + delay 0x1 + launchtemplate gReflectTypePinkRingTemplate 0x2 0x0 + delay 0x1 + launchtemplate gReflectTypeVioletRingTemplate 0x2 0x0 + delay 0x1 + launchtemplate gReflectTypeBlueRingTemplate 0x2 0x0 + waitforvisualfinish + clearmonbg ANIM_ATTACKER + blendoff end + Move_RETALITATE: + loadspritegfx ANIM_TAG_CUT @Cut + monbg SIDE_TARGET + setalpha 9, 8 + launchtask AnimTask_AttackerPunchWithTrace 0x2 0x2 0x7128 0xa + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0x10 0x0 + waitforvisualfinish + playsewithpan SE_W015, SOUND_PAN_TARGET + launchtemplate gGuillotineSpriteTemplate 0x2 0x1 0x0 + launchtemplate gGuillotineSpriteTemplate 0x2 0x1 0x1 + delay 0x38 + playsewithpan SE_W003, SOUND_PAN_TARGET + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x10 0x10 0x43D + waitforvisualfinish + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0 0x3 0xf 0x1 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x10 0x0 0x043D + waitforvisualfinish + clearmonbg SIDE_TARGET + blendoff end + Move_FINAL_GAMBIT: + loadspritegfx ANIM_TAG_PINK_CLOUD @yawn animation + loadspritegfx ANIM_TAG_WATER_IMPACT @blue colour + loadspritegfx ANIM_TAG_EXPLOSION @explosion animation + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0xC 0x0 @Darken + waitforvisualfinish + launchtask AnimTask_ShakeMon2 0x2 0x5 0x0 0x1 0x0 0xa 0x1 + launchtask AnimTask_BlendColorCycle 0x2 0x6 PAL_ATK 0x0 0x2 0x0 0x8 0x7fff + waitforvisualfinish + playsewithpan SE_W028, SOUND_PAN_ATTACKER + launchtemplate gFinalGambitBlueYawnTemplate 0x2 0x3 0x0 0x0 0x25 + delay 0x4 + waitforvisualfinish + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x3 0x0 0xf 0x1 + launchtask AnimTask_ScaleMonAndRestore 0x5 0x5 0xfffc 0xfffc 0xf 0x1 0x1 + waitforvisualfinish + monbg ANIM_TARGET + delay 0x1 + playsewithpan SE_W153, SOUND_PAN_ATTACKER + launchtemplate gFinalGambitExplosionTemplate 0x3 0x4 0x0 0x0 0x1 0x1 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0 0x3 0xf 0x1 + waitforvisualfinish + clearmonbg ANIM_TARGET + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0xC 0x0 0x0 + waitforvisualfinish end + Move_BESTOW: + monbg ANIM_TARGET + monbgprio_28 ANIM_TARGET + panse_1B SE_W118, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0 + launchtask AnimTask_CreateBestowItem 0x2 0x6 0x14 0x0 0x0 0x0 0x28 0xffe7 + waitforvisualfinish + unloadspritegfx ANIM_TAG_ITEM_BAG @;The generated item sprite uses this tag + clearmonbg ANIM_TARGET end + Move_INFERNO: loadspritegfx ANIM_TAG_SMALL_EMBER call SetImpactBackground @@ -5272,16 +5999,108 @@ VoltSwitchAgainstPartner: goto VoltSwitchContinue Move_STRUGGLE_BUG: + loadspritegfx ANIM_TAG_MOVEMENT_WAVES + loadspritegfx ANIM_TAG_IMPACT + monbg ANIM_TARGET + setalpha 12, 8 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_ATK 0x2 0x0 0x9 0x0a1f + waitforvisualfinish + launchtask AnimTask_FlailMovement 0x2 0x1 0x0 + launchtemplate gMovementWavesSpriteTemplate 0x2 0x3 0x0 0x0 0x2 + launchtemplate gMovementWavesSpriteTemplate 0x2 0x3 0x0 0x1 0x2 + loopsewithpan SE_W029, SOUND_PAN_ATTACKER, 0x8, 0x2 + waitforvisualfinish + launchtemplate gRandomPosHitSplatSpriteTemplate 0x83 0x2 0x1 0x3 + launchtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg 0x2 0x5 0x0 0x1 0x1e 0x1 0x0 + playsewithpan SE_W025B, SOUND_PAN_TARGET + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_ATK 0x2 0x9 0x0 0x0a1f + waitforvisualfinish + clearmonbg ANIM_TARGET + blendoff end + Move_BULLDOZE: - end + launchtask AnimTask_Splash 0x2 0x2 0x0 0x3 + delay 0x8 + goto Move_EARTHQUAKE + Move_FROST_BREATH: + loadspritegfx ANIM_TAG_ICE_CHUNK + loadspritegfx ANIM_TAG_SMALL_EMBER + loadspritegfx ANIM_TAG_FIRE_PLUME + fadetobg BG_ICE + waitbgfadeout + launchtask AnimTask_StartSlidingBg 0x5 0x4 0x300 0x0 0x0 0xffff + waitbgfadein + playsewithpan SE_W082, SOUND_PAN_ATTACKER + launchtask AnimTask_ShakeMon 0x5 0x5 0x0 0x0 0x2 0x28 0x1 + waitforvisualfinish + launchtemplate gSlideMonToOffsetSpriteTemplate 0x82 0x5 0x0 0xf 0x0 0x0 0x4 + waitforvisualfinish + launchtemplate gFrostBreathBlueBreathTemplate 0x82 0x5 0x1e 0xf 0x0 0xa 0xa + waitforvisualfinish + loopsewithpan SE_W196, SOUND_PAN_TARGET, 0xb, 0x3 + launchtask AnimTask_ShakeMon 0x5 0x5 0x1 0x0 0x3 0x19 0x1 + launchtemplate gFrostBreathBlueRageTemplate 0xc2 0x3 0x1 0x5 0x0 + delay 0x1 + launchtemplate gFrostBreathBlueRageTemplate 0xc2 0x3 0x1 0xfff6 0xfff1 + delay 0x1 + launchtemplate gFrostBreathBlueRageTemplate 0x82, 0x3, 0x1 0x0 0x19 + delay 0x1 + launchtemplate gFrostBreathBlueRageTemplate 0xc2 0x3 0x1 0xf 0x5 + delay 0x1 + launchtemplate gFrostBreathBlueRageTemplate 0xc2 0x3 0x1 0xffe7 0x0 + delay 0x1 + launchtemplate gFrostBreathBlueRageTemplate 0x82, 0x3, 0x1 0x1e 0x1e + delay 0x1 + launchtemplate gFrostBreathBlueRageTemplate 0x82, 0x3, 0x1 0xffe5 0x19 + delay 0x1 + launchtemplate gFrostBreathBlueRageTemplate 0xc2 0x3 0x1 0x0 0x8 + waitforvisualfinish + launchtemplate gSlideMonToOriginalPosSpriteTemplate 0xc2 0x3 0x0 0x0 0x4 + waitforvisualfinish + call UnsetPsychicBg end + Move_DRAGON_TAIL: + loadspritegfx ANIM_TAG_ROCKS + loadspritegfx ANIM_TAG_SLAM_HIT + loadspritegfx ANIM_TAG_IMPACT + monbg ANIM_TARGET + createvisualtask AnimTask_BlendParticle, 0x5, ANIM_TAG_SLAM_HIT, 0x2, 0xD, 0xD, 0x5CAE + waitforvisualfinish + setalpha 12, 8 + playsewithpan SE_W004, SOUND_PAN_ATTACKER + launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_ATTACKER 0x14 0x3 0x0 0x4 + delay 0x1 + launchtemplate gSlamHitSpriteTemplate 0x2 0x2 0x0 0x0 + delay 0x3 + playsewithpan SE_W025B, SOUND_PAN_TARGET + launchtemplate gBasicHitSplatSpriteTemplate 0x3 0x4 0x0 0x0 0x1 0x1 + launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_TARGET 0xfff4 0xa 0x0 0x3 + launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_ATTACKER 0x0 0x5 + call TailWhackDown + delay 0x3 + launchtask AnimTask_ShakeMonInPlace 0x2 0x5 0x1 0x0 0x3 0x6 0x1 + waitforvisualfinish + delay 0x5 + launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_TARGET 0x0 0x6 + waitforvisualfinish + clearmonbg ANIM_TARGET + blendoff end +TailWhackDown: + launchtemplate gBasicHitSplatSpriteTemplate 0x83 4 0xfff6 0xfff8 1 1 + playsewithpan SE_W070, SOUND_PAN_TARGET + launchtemplate gRockScatterSpriteTemplate, 0x82, 4, -12, 0x1b, 2, 3 + launchtemplate gRockScatterSpriteTemplate, 0x82, 4, 8, 28, 3, 4 + launchtemplate gRockScatterSpriteTemplate, 0x82, 4, -4, 30, 2, 3 + launchtemplate gRockScatterSpriteTemplate, 0x82, 4, 12, 25, 4, 4 + return + Move_WORK_UP: loadspritegfx ANIM_TAG_FOCUS_ENERGY @@ -5344,31 +6163,249 @@ Move_ELECTROWEB_Wait: end Move_WILD_CHARGE: + loadspritegfx ANIM_TAG_SPARK_2 + loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT + loadspritegfx ANIM_TAG_IMPACT + monbg ANIM_TARGET + setalpha 12, 8 + playsewithpan SE_W268, SOUND_PAN_ATTACKER + launchtemplate gGrowingShockWaveOrbSpriteTemplate 0x2 0x0 @electric circle + delay 0x1e + waitforvisualfinish + loopsewithpan SE_W231, SOUND_PAN_ATTACKER, 0x1c, 0x2 + call ScreenFlash + waitforvisualfinish + call ScreenFlash + waitforvisualfinish + playsewithpan SE_W036, SOUND_PAN_ATTACKER + launchtemplate gVerticalDipSpriteTemplate 0x2 0x3 0x6 0x1 0x0 + waitforvisualfinish + delay 0xb + launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_ATTACKER 0x1a 0x0 0x0 0x5 + delay 0x6 + launchtemplate gBasicHitSplatSpriteTemplate 0x4 0x4 0xfff6 0x0 0x1 0x0 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0 0x3 0x10 0x1 + playsewithpan SE_W025B, SOUND_PAN_TARGET + call ElectricityEffect + waitforvisualfinish + launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_ATTACKER 0x0 0x5 + waitforvisualfinish + clearmonbg ANIM_TARGET + blendoff end +ScreenFlash: + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0xC 0x0 0x07FE + return Move_DRILL_RUN: + loadspritegfx ANIM_TAG_IMPACT + loadspritegfx ANIM_TAG_HORN_HIT + setalpha 12, 8 + fadetobg BG_FISSURE + waitbgfadeout + launchtask AnimTask_PositionFissureBgOnBattler 0x5 0x3 0x1 0x5 0xffff + launchtemplate gBowMonSpriteTemplate 0x2 0x1 0x0 + playsewithpan SE_W029, SOUND_PAN_ATTACKER + waitforvisualfinish + delay 0x2 + launchtemplate gBowMonSpriteTemplate 0x2 0x1 0x1 + launchtemplate gHealingBlueStarSpriteTemplate 0x84 0x3 0x0 0x0 0xc + waitforvisualfinish + playse 0x14 + launchtask AnimTask_ShakeMonInPlace 0x2 0x5 0x0 0x2 0x0 0x28 0x1 + launchtask AnimTask_ShakeMonInPlace 0x2 0x5 0x1 0xa 0x0 0x28 0x1 + launchtemplate gFlashingHitSplatSpriteTemplate 0x83 0x4 0x0 0x0 0x1 0x3 + playsewithpan SE_W030, SOUND_PAN_TARGET + delay 0x4 + launchtemplate gFlashingHitSplatSpriteTemplate 0x83 0x4 0x0 0x2 0x1 0x3 + playsewithpan SE_W030, SOUND_PAN_TARGET + delay 0x4 + launchtemplate gFlashingHitSplatSpriteTemplate 0x83 0x4 0xfffc 0x3 0x1 0x3 + playsewithpan SE_W030, SOUND_PAN_TARGET + delay 0x4 + launchtemplate gFlashingHitSplatSpriteTemplate 0x83 0x4 0xfff8 0xfffb 0x1 0x3 + playsewithpan SE_W030, SOUND_PAN_TARGET + delay 0x4 + launchtemplate gFlashingHitSplatSpriteTemplate 0x83 0x4 0x4 0xfff4 0x1 0x3 + playsewithpan SE_W030, SOUND_PAN_TARGET + delay 0x4 + launchtemplate gFlashingHitSplatSpriteTemplate 0x83 0x4 0x10 0x0 0x1 0x3 + playsewithpan SE_W030, SOUND_PAN_TARGET + delay 0x4 + launchtemplate gFlashingHitSplatSpriteTemplate 0x83 0x4 0x5 0x12 0x1 0x3 + playsewithpan SE_W030, SOUND_PAN_TARGET + delay 0x4 + launchtemplate gFlashingHitSplatSpriteTemplate 0x83 0x4 0xffef 0xc 0x1 0x2 + playsewithpan SE_W030, SOUND_PAN_TARGET + delay 0x4 + launchtemplate gFlashingHitSplatSpriteTemplate 0x83 0x4 0xffeb 0xfff1 0x1 0x2 + playsewithpan SE_W030, SOUND_PAN_TARGET + delay 0x4 + launchtemplate gFlashingHitSplatSpriteTemplate 0x83 0x4 0x8 0xffe5 0x1 0x2 + playsewithpan SE_W030, SOUND_PAN_TARGET + delay 0x4 + launchtemplate gFlashingHitSplatSpriteTemplate 0x83 0x4 0x20 0x0 0x1 0x2 + playsewithpan SE_W030, SOUND_PAN_TARGET + delay 0x4 + launchtemplate gBowMonSpriteTemplate 0x2 0x1 0x2 + waitforvisualfinish + call UnsetPsychicBg end + Move_DUAL_CHOP: + loadspritegfx ANIM_TAG_HANDS_AND_FEET @hand + loadspritegfx ANIM_TAG_IMPACT @hit + loadspritegfx ANIM_TAG_POISON_BUBBLE @purple + monbg SIDE_TARGET + monbgprio_28 ANIM_TARGET + setalpha 12, 8 + playsewithpan SE_W026, SOUND_PAN_ATTACKER + launchtemplate gHorizontalLungeSpriteTemplate 0x2 0x2 0x4 0x4 + delay 0x6 + launchtask AnimTask_ShakeMon 0x2 0x5 0x1 0x5 0x0 0x6 0x1 + launchtemplate gKarateChopSpriteTemplate 0x2 0x8 0xffe0 0x0 0x0 0x0 0xa 0x1 0x3 0x0 @left + launchtemplate gKarateChopSpriteTemplate 0x2 0x8 0x0515 0x0 0x0 0x0 0xa 0x1 0x3 0x0 @right + waitforvisualfinish + playsewithpan SE_W004, SOUND_PAN_TARGET + launchtemplate gDualChopImpactTemplate 0x3 0x4 0x0 0x0 0x1 0x2 + launchtask AnimTask_ShakeMon 0x5 0x5 0x1 0x4 0x0 0x6 0x1 + waitforvisualfinish + clearmonbg SIDE_TARGET + blendoff end + Move_HEART_STAMP: + loadspritegfx ANIM_TAG_HEART_STAMP + monbg ANIM_TARGET + loopsewithpan SE_W204, SOUND_PAN_ATTACKER, 0xc, 0x3 + launchtemplate gHeartStampSpinningHeartTemplate, 0x80, 0x4 0x0 0x0 0x1 0x1e + delay 0x1E + clearmonbg ANIM_TARGET + playsewithpan SE_W003, SOUND_PAN_TARGET + launchtask AnimTask_ShakeMon2 0x83 0x5 0x1 0x4 0x0 0x5 0x1 + launchtask AnimTask_StretchTargetUp 0x3 0x0 + waitforvisualfinish end + Move_HORN_LEECH: + loadspritegfx ANIM_TAG_HORN_LEECH @Horn + loadspritegfx ANIM_TAG_IMPACT @hit + loadspritegfx ANIM_TAG_ORBS + loadspritegfx ANIM_TAG_BLUE_STAR + playsewithpan SE_W029, SOUND_PAN_ATTACKER + launchtemplate gHornLeechHornTemplate 0x82, 0x3, 0x0 0x0 0x25 + waitforvisualfinish + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x5 0x0 0x6 0x1 + launchtemplate gFlashingHitSplatSpriteTemplate 0x83 0x4 0x0 0x0 0x1 0x1 + playsewithpan SE_W030, SOUND_PAN_TARGET + call GigaDrainAbsorbEffect + waitforvisualfinish + call HealingEffect + waitforvisualfinish end + Move_SACRED_SWORD: + loadspritegfx ANIM_TAG_CUT @Cut + loadspritegfx ANIM_TAG_SWORD @Sword + loadspritegfx ANIM_TAG_HYDRO_PUMP @Blue Colour + loadspritegfx ANIM_TAG_PUNISHMENT_BLADES @Punishment Blade + monbg ANIM_ATTACKER + setalpha 12, 8 + playsewithpan SE_W014, SOUND_PAN_ATTACKER + launchtemplate gSwordsDanceBladeSpriteTemplate 0x2 0x2 0x0 0x0 + delay 0x16 + launchtask AnimTask_FlashAnimTagWithColor 0x2 0x7 0x2715 0x2 0x2 0x7ff2 0x10 0x0 0x0 + waitforvisualfinish + clearmonbg ANIM_ATTACKER + delay 0x1 + monbg ANIM_TARGET + playsewithpan SE_W013, SOUND_PAN_TARGET + launchtemplate gSacredSwordBladesTemplate 0x81 0x5 0x0 0xa 0x0 0xFF00 0xA + launchtemplate gSacredSwordCutTemplate 0x2 0x3 0x28 0xffe0 0x0 + delay 0x5 + launchtask AnimTask_ShakeMon 0x2 0x5 0x1 0x0 0x3 0xa 0x1 + waitforvisualfinish + clearmonbg ANIM_TARGET + blendoff + waitforvisualfinish end + Move_RAZOR_SHELL: + loadspritegfx ANIM_TAG_RAZOR_SHELL + loadspritegfx ANIM_TAG_CUT + monbg ANIM_TARGET + launchtemplate gRazorShellTemplate 0x2 0x5 ANIM_TARGET 0x0 0x0 25 0 + playsewithpan SE_W015, SOUND_PAN_TARGET + launchtemplate gCuttingSliceSpriteTemplate 0x1 0x3 0x28 0xffe0 0x0 + delay 0x5 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0 0x3 0xa 0x1 + waitforvisualfinish + clearmonbg ANIM_TARGET + waitforvisualfinish end + Move_HEAT_CRASH: + loadspritegfx ANIM_TAG_IMPACT + loadspritegfx ANIM_TAG_WARM_ROCK + loadspritegfx ANIM_TAG_ROCKS + monbg ANIM_TARGET + setalpha 12, 8 + playsewithpan SE_SEIKAI, SOUND_PAN_TARGET + launchtemplate gHeatCrashEruptionRockTemplate 0x3 0x3 0x0 0xffe0 0xf + delay 0x13 + launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0x0 0xfff8 0x1 0x1 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0 0x4 0x9 0x1 + playsewithpan SE_W025B, SOUND_PAN_TARGET + delay 0x5 + launchtemplate gBasicHitSplatSpriteTemplate 0x83 0x4 0xa 0xfff8 0x1 0x1 + playsewithpan SE_W088, SOUND_PAN_TARGET + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0 0x3 0x5 0x1 + launchtemplate gRockScatterSpriteTemplate 0x82, 0x4, 0xfff4 0x20 0x3 0x4 + launchtemplate gRockScatterSpriteTemplate 0x82, 0x4, 0x8 0x1f 0x2 0x2 + launchtemplate gRockScatterSpriteTemplate 0x82, 0x4, 0xfffc 0x1c 0x2 0x3 + launchtemplate gRockScatterSpriteTemplate 0x82, 0x4, 0xc 0x1e 0x4 0x3 + clearmonbg ANIM_TARGET + blendoff end + Move_LEAF_TORNADO: + loadspritegfx ANIM_TAG_GUST @Gust + loadspritegfx ANIM_TAG_LEAF @Leaves + monbg SIDE_TARGET + monbgprio_28 ANIM_TARGET + playsewithpan SE_W016, SOUND_PAN_TARGET + launchtask AnimTask_ShakeMon 0x5 0x5 0x1 0x0 0x2 0x2f 0x1 + launchtemplate gEllipticalGustSpriteTemplate 0x2 0x2 0x0 0xfff0 + launchtask AnimTask_AnimateGustTornadoPalette 0x5 0x2 0x1 0x46 + call LeafTornadoVortex + call LeafTornadoVortex + call LeafTornadoVortex + waitforvisualfinish + stopsound + clearmonbg ANIM_TARGET end +LeafTornadoVortex: + launchtemplate gLeafTornadoVortexTemplate 0x82 0x7 0x0 0x1c 0x210 0x1e 0xd 0x32 0x1 + delay 0x2 + launchtemplate gLeafTornadoVortexTemplate 0x82 0x7 0x0 0x20 0x1e0 0x14 0x10 0xffd2 0x1 + delay 0x2 + launchtemplate gLeafTornadoVortexTemplate 0x82 0x7 0x0 0x21 0x240 0x14 0x8 0x2a 0x1 + delay 0x2 + launchtemplate gLeafTornadoVortexTemplate 0x82 0x7 0x0 0x1f 0x190 0x19 0xb 0xffd6 0x1 + delay 0x2 + launchtemplate gLeafTornadoVortexTemplate 0x82 0x7 0x0 0x1c 0x200 0x19 0x10 0x2e 0x1 + delay 0x2 + launchtemplate gLeafTornadoVortexTemplate 0x82 0x7 0x0 0x21 0x1d0 0x1e 0xf 0xffce 0x1 + delay 0x2 + return + Move_STEAMROLLER: loadspritegfx ANIM_TAG_IMPACT @@ -5397,10 +6434,74 @@ Move_STEAMROLLER: end Move_COTTON_GUARD: + loadspritegfx ANIM_TAG_SPORE + monbg SIDE_ATTACKER + setalpha 12, 8 + loopsewithpan SE_W077, SOUND_PAN_TARGET 0x12 0x6 + call CreateCottonSpores + call CottonSporesSpiralInward + call CottonSporesSpiralInward + call CottonSporesSpiralInward + waitforvisualfinish + clearmonbg SIDE_ATTACKER + blendoff end +CottonSporesSpiralInward: + launchtemplate gCottonGuardSporeTemplate 0x2 0x3 0x28 0xfff6 0xd + delay 0x3 + launchtemplate gCottonGuardSporeTemplate 0x2 0x3 0xffdd 0xfff6 0xd + delay 0x3 + launchtemplate gCottonGuardSporeTemplate 0x2 0x3 0xf 0xffd8 0xd + delay 0x3 + launchtemplate gCottonGuardSporeTemplate 0x2 0x3 0xfff6 0xffe0 0xd + delay 0x3 + launchtemplate gCottonGuardSporeTemplate 0x2 0x3 0x19 0xffec 0xd + delay 0x3 + launchtemplate gCottonGuardSporeTemplate 0x2 0x3 0xffd8 0xffec 0xd + delay 0x3 + launchtemplate gCottonGuardSporeTemplate 0x2 0x3 0x5 0xffd8 0xd + delay 0x3 + return + Move_NIGHT_DAZE: + loadspritegfx ANIM_TAG_THIN_RING @uproar + loadspritegfx ANIM_TAG_PURPLE_FLAME @dark violet color + loadspritegfx ANIM_TAG_RED_ORB @circles + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0xC 0x0 + waitforvisualfinish + playsewithpan SE_TAMA, SOUND_PAN_ATTACKER + launchtemplate gNightDazeVioletRingsTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1F 0x8 + launchtemplate gNightDazeVioletCirclesTemplate 0x82 0x1 0x0 + launchtemplate gNightDazeVioletCirclesTemplate 0x82 0x1 0x20 + launchtemplate gNightDazeVioletCirclesTemplate 0x82 0x1 0x40 + launchtemplate gNightDazeVioletCirclesTemplate 0x82 0x1 0x60 + launchtemplate gNightDazeVioletCirclesTemplate 0x82 0x1 0x80 + launchtemplate gNightDazeVioletCirclesTemplate 0x82 0x1 0xa0 + launchtemplate gNightDazeVioletCirclesTemplate 0x82 0x1 SOUND_PAN_ATTACKER + launchtemplate gNightDazeVioletCirclesTemplate 0x82 0x1 0xe0 + delay 0x1 + launchtemplate gNightDazeVioletRingsTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1F 0x8 + delay 0x1 + launchtemplate gNightDazeVioletRingsTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1F 0x8 + delay 0xF + launchtemplate gNightDazeVioletRingsTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1F 0x8 + delay 0x1 + launchtemplate gNightDazeVioletRingsTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1F 0x8 + delay 0x1 + launchtemplate gNightDazeVioletRingsTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1F 0x8 + waitforvisualfinish + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x3 0x0 0x1f 0x1 + launchtask AnimTask_BlendBattleAnimPal 0xA 0x5 PAL_DEF 0x2 0x0 0x9 0x2002 + delay 0x6 + playsewithpan SE_W048, SOUND_PAN_ATTACKER + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xA 0x5 PAL_DEF 0x2 0x9 0x0 0x2002 + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0xC 0x0 0x0 + waitforvisualfinish end + Move_PSYSTRIKE: monbg ANIM_TARGET @@ -5420,73 +6521,1448 @@ Move_PSYSTRIKE: end Move_TAIL_SLAP: + loadspritegfx ANIM_TAG_IMPACT @Hit + loadspritegfx ANIM_TAG_AIR_WAVE_2 @Aeroblast + loadspritegfx ANIM_TAG_PUNISHMENT_BLADES @Punishment Blades + monbg ANIM_TARGET + setalpha 12, 8 + choosetwoturnanim TailSlapRight TailSlapLeft +TailSlapContinue: + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x3 0x0 0x6 0x1 + playsewithpan SE_W003, SOUND_PAN_TARGET + waitforvisualfinish + clearmonbg ANIM_TARGET + blendoff end +TailSlapRight: + launchtemplate gTailSlapTemplate 0x2 0x4 0xfff8 0x0 0x1 0x0 + goto TailSlapContinue +TailSlapLeft: + launchtemplate gTailSlapTemplate 0x2 0x4 0x8 0x0 0x1 0x0 + goto TailSlapContinue + Move_HURRICANE: + loadspritegfx ANIM_TAG_GUST + monbg SIDE_TARGET + monbgprio_28 ANIM_TARGET + setalpha 12, 8 + fadetobg BG_HIGH_SPEED + waitbgfadeout + launchtask AnimTask_StartSlidingBg 0x5 0x4 0x1000 0x0 0x1 0xffff + waitbgfadein + playsewithpan SE_W016, SOUND_PAN_TARGET + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0 0x3 0x40 0x1 + call HurricaneGust + delay 0xA + call HurricaneGust + delay 0xA + call HurricaneGust + delay 0xA + call HurricaneGust + delay 0xA + call HurricaneGust + delay 0xA + call HurricaneGust + waitforvisualfinish + stopsound + clearmonbg SIDE_TARGET + blendoff + call UnsetPsychicBg end +HurricaneGust: + launchtemplate gPoisonBubbleSpriteTemplate 0x82, 2 0 0xfff0 + launchtask AnimTask_AnimateGustTornadoPalette 5 2 1 0x46 + return + Move_HEAD_CHARGE: + loadspritegfx ANIM_TAG_IMPACT + fadetobgfromset BG_GIGA_IMPACT_OPPONENT, BG_GIGA_IMPACT_PLAYER, BG_GIGA_IMPACT_OPPONENT + waitbgfadein + launchtemplate gBowMonSpriteTemplate 0x2 0x1 0x0 + playsewithpan SE_W029, SOUND_PAN_ATTACKER + waitforvisualfinish + delay 0x2 + launchtemplate gBowMonSpriteTemplate 0x2 0x1 0x1 + waitforvisualfinish + launchtask AnimTask_ShakeMon 0x2 0x5 0x0 0x2 0x0 0x4 0x1 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x5 0x0 0x6 0x1 + launchtemplate gBowMonSpriteTemplate 0x2 0x1 0x2 + launchtemplate gFlashingHitSplatSpriteTemplate 0x83 0x4 0x0 0x0 0x1 0x1 + playsewithpan SE_W233B, SOUND_PAN_TARGET + waitforvisualfinish + restorebg + waitbgfadeout end + Move_GEAR_GRIND: + loadspritegfx ANIM_TAG_IMPACT + loadspritegfx ANIM_TAG_GEAR @Gear + monbg ANIM_TARGET + setalpha 12, 8 + playsewithpan SE_ESUKA, SOUND_PAN_ATTACKER + launchtemplate gGearGrindTemplate 0x2 0x6 0xffe0 0xffe0 0x0 0x333 0x333 0xa + launchtemplate gGearGrindTemplate 0x2 0x6 0x20 0x20 0x0 0xfccd 0xfccd 0xa + delay 0xa + launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0xfff8 0x0 0x1 0x1 + launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_TARGET 0x0 0x7 0x5 0x2 + waitforvisualfinish + launchtemplate gGearGrindTemplate 0x2 0x6 0x20 0xffe0 0x0 0xfccd 0x333 0xa + launchtemplate gGearGrindTemplate 0x2 0x6 0xffe0 0x20 0x0 0x333 0xfccd 0xa + delay 0xa + launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0x8 0x0 0x1 0x1 + launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_TARGET 0x0 0x8 0x4 0x2 + waitforvisualfinish + stopsound + clearmonbg ANIM_TARGET + blendoff end + Move_SEARING_SHOT: + loadspritegfx ANIM_TAG_SPARK_2 @yellow color + loadspritegfx ANIM_TAG_JAGGED_MUSIC_NOTE @red color + loadspritegfx ANIM_TAG_ELECTRIC_ORBS @charge + loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT @charge + loadspritegfx ANIM_TAG_WARM_ROCK @eruption + createvisualtask AnimTask_BlendParticle, 0x5, ANIM_TAG_ELECTRIC_ORBS, 0x0, 0xC, 0xC, 0x0E3E @Orange + createvisualtask AnimTask_BlendParticle, 0x5, ANIM_TAG_WARM_ROCK, 0x0, 0xB, 0xB, 0x01BE @Orange + monbg ANIM_ATTACKER + setalpha 8, 8 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0x10 0x0 + waitforvisualfinish + launchtask AnimTask_ElectricChargingParticles 0x2 0x4 0x0 0x3c 0x2 0xc + launchtask AnimTask_BlendBattleAnimPal 0xA 0x5 PAL_ATK 0x2 0x0 0x9 0x1F + playsewithpan SE_W268, SOUND_PAN_ATTACKER + delay 0x1e + playsewithpan SE_W268, SOUND_PAN_ATTACKER + delay 0x1e + playsewithpan SE_W268, SOUND_PAN_ATTACKER + launchtemplate gSearingShotRedChargeTemplate 0x2 0x1 0x0 + delay 0x19 + playsewithpan SE_W268, SOUND_PAN_ATTACKER + delay 0x14 + playsewithpan SE_W268, SOUND_PAN_ATTACKER + delay 0xf + playsewithpan SE_W268, SOUND_PAN_ATTACKER + waitforvisualfinish + playsewithpan SE_W172B, SOUND_PAN_ATTACKER + launchtemplate gSearingShotEruptionRockTemplate 0x2 0x5 0x1 0x0 0x1e 0x19 0xffec + launchtemplate gSearingShotEruptionRockTemplate 0x2 0x5 0x1 0x20 0x1e 0x19 0xffec + launchtemplate gSearingShotEruptionRockTemplate 0x2 0x5 0x1 0x40 0x1e 0x19 0xffec + delay 0x2 + launchtemplate gSearingShotEruptionRockTemplate 0x2 0x5 0x1 0x60 0x1e 0x19 0xffec + launchtemplate gSearingShotEruptionRockTemplate 0x2 0x5 0x1 0x80 0x1e 0x19 0xffec + delay 0x2 + launchtemplate gSearingShotEruptionRockTemplate 0x42 0x5 0x1 0xa0 0x1e 0x19 0xffec + launchtemplate gSearingShotEruptionRockTemplate 0x42 0x5 0x1 SOUND_PAN_ATTACKER 0x1e 0x19 0xffec + delay 0x2 + launchtemplate gSearingShotEruptionRockTemplate 0x42 0x5 0x1 0xe0 0x1e 0x19 0xffec + delay 0xF + playsewithpan SE_W172B, SOUND_PAN_ATTACKER + launchtemplate gSearingShotEruptionRockTemplate 0x2 0x5 0x1 0x0 0x1e 0x19 0x0 + delay 0x2 + launchtemplate gSearingShotEruptionRockTemplate 0x2 0x5 0x1 0x20 0x1e 0x19 0x0 + launchtemplate gSearingShotEruptionRockTemplate 0x2 0x5 0x1 0x40 0x1e 0x19 0x0 + launchtemplate gSearingShotEruptionRockTemplate 0x2 0x5 0x1 0x60 0x1e 0x19 0x0 + delay 0x2 + launchtemplate gSearingShotEruptionRockTemplate 0x2 0x5 0x1 0x80 0x1e 0x19 0x0 + delay 0x2 + launchtemplate gSearingShotEruptionRockTemplate 0x42 0x5 0x1 0xa0 0x1e 0x19 0x0 + launchtemplate gSearingShotEruptionRockTemplate 0x42 0x5 0x1 SOUND_PAN_ATTACKER 0x1e 0x19 0x0 + delay 0x2 + launchtemplate gSearingShotEruptionRockTemplate 0x42 0x5 0x1 0xe0 0x1e 0x19 0x0 + delay 0x15 + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xA 0x5 PAL_ATK 0x2 0x9 0x0 0x1F + clearmonbg ANIM_ATTACKER + fadetobg BG_FIRE + waitbgfadeout + launchtask AnimTask_StartSlidingBg 0x5 0x4 0xA00 0x0 0x1 0xffff + waitbgfadein + delay 0x1E + monbg SIDE_ATTACKER + launchtask AnimTask_BlendBattleAnimPal 0xA 0x5 PAL_ATK_PARTNER | PAL_DEF | PAL_DEF_PARTNER 0x2 0x0 0x9 0x1F + playsewithpan SE_W153, SOUND_PAN_ATTACKER + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x3 0x0 0x1B 0x1 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_DEF_PARTNER 0x3 0x0 0x1B 0x1 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_ATK_PARTNER 0x3 0x0 0x1B 0x1 + playsewithpan SE_W007, SOUND_PAN_TARGET + launchtemplate gSearingShotEruptionImpactTemplate 0x83 0x5, -5, -5, 0x1 0x1E ANIM_TARGET + launchtemplate gSearingShotEruptionImpactTemplate 0x83 0x5, 5, 10, 0x1 0x1E ANIM_TARGET + launchtemplate gSearingShotEruptionImpactTemplate 0x83 0x5, -5, -5, 0x1 0x1E ANIM_DEF_PARTNER + launchtemplate gSearingShotEruptionImpactTemplate 0x83 0x5, 5, 10, 0x1 0x1E ANIM_DEF_PARTNER + launchtemplate gSearingShotEruptionImpactTemplate 0x83 0x5, -5, -5, 0x1 0x1E ANIM_ATK_PARTNER + launchtemplate gSearingShotEruptionImpactTemplate 0x83 0x5, 5, 10, 0x1 0x1E ANIM_ATK_PARTNER + delay 0x1E + playsewithpan SE_W153, SOUND_PAN_ATTACKER + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xA 0x5 PAL_ATK_PARTNER | PAL_DEF | PAL_DEF_PARTNER 0x2 0x9 0x0 0x1F + delay 0x1E + call UnsetPsychicBg + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0x0 0x0 + clearmonbg SIDE_ATTACKER + blendoff end + Move_TECHNO_BLAST: + launchtask AnimTask_TechnoBlast 0x5 0x0 + jumpargeq 0x0, 10, TechnoBlastFire + jumpargeq 0x0, 11, TechnoBlastWater + jumpargeq 0x0, 13, TechnoBlastElectric + jumpargeq 0x0, 15, TechnoBlastIce +TechnoBlastNormal: + loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT @charge animation + loadspritegfx ANIM_TAG_ORBS @circles + loadspritegfx ANIM_TAG_AIR_WAVE_2 @white/gray color + loadspritegfx ANIM_TAG_BLACK_BALL_2 @blast + loadspritegfx ANIM_TAG_SPARK_2 @blast particles + loadspritegfx ANIM_TAG_GRAY_SMOKE @dispersal + monbg ANIM_ATTACKER + setblends 0x80E + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0xC 0x0 + waitforvisualfinish + loopsewithpan SE_W025, SOUND_PAN_ATTACKER, 0xE, 0x8 + launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0x28 0x28 0x10 + delay 0x2 + launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0xffd8 0xffd8 0x10 + delay 0x2 + launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0x0 0x28 0x10 + delay 0x2 + launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0x0 0xffd8 0x10 + delay 0x2 + launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0x28 0xffec 0x10 + delay 0x2 + launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0x28 0x14 0x10 + delay 0x2 + launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0xffd8 0xffec 0x10 + delay 0x2 + launchtemplate gTechnoBlastWhiteChargeTemplate 0x2 0x1 0x0 + call TechnoBlastWhiteCircles + call TechnoBlastWhiteCircles + launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0x28 0x28 0x10 + delay 0x2 + launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0xffd8 0xffd8 0x10 + delay 0x2 + launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0x0 0x28 0x10 + delay 0x2 + launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0x0 0xffd8 0x10 + delay 0x2 + launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0x28 0xffec 0x10 + delay 0x2 + launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0x28 0x14 0x10 + delay 0x2 + launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0xffd8 0xffec 0x10 + delay 0x2 + waitforvisualfinish + playsewithpan SE_W268, SOUND_PAN_ATTACKER + launchtemplate gTechnoBlastWhiteBlastTemplate 0x83 0x6 0xa 0x0 0x0 0x0 0x1e 0x0 + launchtemplate gTechnoBlastWhiteSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x0 0x28 0x0 + launchtemplate gTechnoBlastWhiteSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x40 0x28 0x1 + launchtemplate gTechnoBlastWhiteSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x80 0x28 0x0 + launchtemplate gTechnoBlastWhiteSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e SOUND_PAN_ATTACKER 0x28 0x2 + launchtemplate gTechnoBlastWhiteSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0x20 0x28 0x0 + launchtemplate gTechnoBlastWhiteSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0x60 0x28 0x1 + launchtemplate gTechnoBlastWhiteSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0xa0 0x28 0x0 + launchtemplate gTechnoBlastWhiteSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0xe0 0x28 0x2 + waitforvisualfinish + playsewithpan SE_W052, SOUND_PAN_ATTACKER + launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x4 0x0 0x5 0x1 + launchtemplate gTechnoBlastWhiteSmokeTemplate 0x82, 0x4, 0x8 0x8 0x1 0x0 + delay 0x2 + launchtemplate gTechnoBlastWhiteSmokeTemplate 0x82, 0x4, 0xfff8 0xfff8 0x1 0x0 + delay 0x2 + launchtemplate gTechnoBlastWhiteSmokeTemplate 0x82, 0x4, 0x8 0xfff8 0x1 0x0 + delay 0x2 + launchtemplate gTechnoBlastWhiteSmokeTemplate 0x82, 0x4, 0xfff8 0x8 0x1 0x0 + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0xC 0x0 0x0 + waitforvisualfinish + blendoff + clearmonbg ANIM_ATTACKER end +TechnoBlastWhiteCircles: + launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0xffd8 0x14 0x10 + delay 0x2 + launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0xffec 0x1e 0x10 + delay 0x2 + launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0x14 0xffe2 0x10 + delay 0x2 + launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0xffec 0xffe2 0x10 + delay 0x2 + launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0x14 0x1e 0x10 + delay 0x2 + launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0xffd8 0x0 0x10 + delay 0x2 + launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0x28 0x0 0x10 + delay 0x2 + launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0x28 0x28 0x10 + delay 0x2 + launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0xffd8 0xffd8 0x10 + delay 0x2 + launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0x0 0x28 0x10 + delay 0x2 + launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0x0 0xffd8 0x10 + delay 0x2 + launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0x28 0xffec 0x10 + delay 0x2 + launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0x28 0x14 0x10 + delay 0x2 + launchtemplate gTechnoBlastWhiteCircleTemplate 0x2 0x3 0xffd8 0xffec 0x10 + delay 0x2 + return + +TechnoBlastElectric: + loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT @charge animation + loadspritegfx ANIM_TAG_ORBS @circles + loadspritegfx ANIM_TAG_BLACK_BALL_2 @blast + loadspritegfx ANIM_TAG_SPARK_2 @blast particles + loadspritegfx ANIM_TAG_GRAY_SMOKE @dispersal + monbg ANIM_ATTACKER + setblends 0x80E + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0xC 0x0 + waitforvisualfinish + loopsewithpan SE_W025, SOUND_PAN_ATTACKER, 0xE, 0x8 + launchtemplate gGrowingChargeOrbSpriteTemplate 0x2 0x1 0x0 + call TechnoBlastCharging1 + delay 0xF + call TechnoBlastCharging2 + delay 0xF + call TechnoBlastCharging1 + delay 0xF + call TechnoBlastCharging2 + delay 0xF + call TechnoBlastCharging1 + delay 0xF + call TechnoBlastCharging2 + delay 0xF + call TechnoBlastCharging1 + delay 0xF + call TechnoBlastCharging2 + delay 0xF + waitforvisualfinish + playsewithpan SE_W268, SOUND_PAN_ATTACKER + launchtemplate gTechnoBlastYellowBlastTemplate 0x83 0x6 0xa 0x0 0x0 0x0 0x1e 0x0 + launchtemplate gTechnoBlastYellowSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x0 0x28 0x0 + launchtemplate gTechnoBlastYellowSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x40 0x28 0x1 + launchtemplate gTechnoBlastYellowSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x80 0x28 0x0 + launchtemplate gTechnoBlastYellowSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e SOUND_PAN_ATTACKER 0x28 0x2 + launchtemplate gTechnoBlastYellowSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0x20 0x28 0x0 + launchtemplate gTechnoBlastYellowSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0x60 0x28 0x1 + launchtemplate gTechnoBlastYellowSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0xa0 0x28 0x0 + launchtemplate gTechnoBlastYellowSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0xe0 0x28 0x2 + waitforvisualfinish + playsewithpan SE_W052, SOUND_PAN_ATTACKER + launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x4 0x0 0x5 0x1 + launchtemplate gTechnoBlastYellowSmokeTemplate 0x82, 0x4, 0x8 0x8 0x1 0x0 + launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0x5 0x0 0x5 0x0 + launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0xfffb 0xa 0x5 0x1 + delay 0x2 + launchtemplate gTechnoBlastYellowSmokeTemplate 0x82, 0x4, 0xfff8 0xfff8 0x1 0x0 + launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0xf 0x14 0x5 0x2 + launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0xfff1 0xfff6 0x5 0x0 + delay 0x2 + launchtemplate gTechnoBlastYellowSmokeTemplate 0x82, 0x4, 0x8 0xfff8 0x1 0x0 + launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0x19 0x0 0x5 0x1 + launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0xfff8 0x8 0x5 0x2 + delay 0x2 + launchtemplate gTechnoBlastYellowSmokeTemplate 0x82, 0x4, 0xfff8 0x8 0x1 0x0 + launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0x2 0xfff8 0x5 0x0 + launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0xffec 0xf 0x5 0x1 + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0xC 0x0 0x0 + waitforvisualfinish + blendoff + clearmonbg ANIM_ATTACKER + end +TechnoBlastCharging1: + playsewithpan SE_W085B, SOUND_PAN_ATTACKER + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x20 0x18 0xbe 0xc 0x0 0x1 0x0 + delay 0x0 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x50 0x18 0x16 0xc 0x0 0x1 0x0 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x9c 0x18 0x79 0xd 0x0 0x1 0x1 + return +TechnoBlastCharging2: + playsewithpan SE_W085B, SOUND_PAN_ATTACKER + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x64 0x18 0x3c 0xa 0x0 0x1 0x0 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0xaa 0x18 0x2a 0xb 0x0 0x1 0x1 + delay 0x0 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0xee 0x18 0xa5 0xa 0x0 0x1 0x1 + return + +TechnoBlastWater: + loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT @charge animation + loadspritegfx ANIM_TAG_WATER_ORB @blue color + loadspritegfx ANIM_TAG_BLACK_BALL_2 @blast + loadspritegfx ANIM_TAG_SPARK_2 @blast particles + loadspritegfx ANIM_TAG_GRAY_SMOKE @dispersal + loadspritegfx ANIM_TAG_BUBBLE @bubbles + monbg ANIM_ATTACKER + setblends 0x80E + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0xC 0x1 + waitforvisualfinish + launchtemplate gTechnoBlastBlueChargeTemplate 0x2 0x1 0x0 + playsewithpan SE_W152, SOUND_PAN_ATTACKER + launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0xa 0xa 0x19 0x0 + delay 0x4 + playsewithpan SE_W152, SOUND_PAN_ATTACKER + launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0xfff1 0x0 0x19 0x0 + delay 0x4 + playsewithpan SE_W152, SOUND_PAN_ATTACKER + launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0x14 0xa 0x19 0x0 + delay 0x4 + playsewithpan SE_W152, SOUND_PAN_ATTACKER + launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0x0 0xfff6 0x19 0x0 + delay 0x4 + playsewithpan SE_W152, SOUND_PAN_ATTACKER + launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0xfff6 0xf 0x19 0x0 + delay 0x4 + playsewithpan SE_W152, SOUND_PAN_ATTACKER + launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0x19 0x14 0x19 0x0 + delay 0x4 + playsewithpan SE_W152, SOUND_PAN_ATTACKER + launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0xffec 0x14 0x19 0x0 + delay 0x4 + playsewithpan SE_W152, SOUND_PAN_ATTACKER + launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0xc 0x0 0x19 0x0 + delay 0x4 + playsewithpan SE_W152, SOUND_PAN_ATTACKER + launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0xa 0xa 0x19 0x0 + delay 0x4 + playsewithpan SE_W152, SOUND_PAN_ATTACKER + launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0xfff1 0x0 0x19 0x0 + delay 0x4 + playsewithpan SE_W152, SOUND_PAN_ATTACKER + launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0x14 0xa 0x19 0x0 + delay 0x4 + playsewithpan SE_W152, SOUND_PAN_ATTACKER + launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0x0 0xfff6 0x19 0x0 + delay 0x4 + playsewithpan SE_W152, SOUND_PAN_ATTACKER + launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0xfff6 0xf 0x19 0x0 + delay 0x4 + playsewithpan SE_W152, SOUND_PAN_ATTACKER + launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0x19 0x14 0x19 0x0 + delay 0x4 + playsewithpan SE_W152, SOUND_PAN_ATTACKER + launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0xffec 0x14 0x19 0x0 + delay 0x4 + playsewithpan SE_W152, SOUND_PAN_ATTACKER + launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0xc 0x0 0x19 0x0 + delay 0x4 + playsewithpan SE_W152, SOUND_PAN_ATTACKER + playsewithpan SE_W152, SOUND_PAN_ATTACKER + launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0xa 0xa 0x19 0x0 + delay 0x4 + playsewithpan SE_W152, SOUND_PAN_ATTACKER + launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0xfff1 0x0 0x19 0x0 + delay 0x4 + playsewithpan SE_W152, SOUND_PAN_ATTACKER + launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0x14 0xa 0x19 0x0 + delay 0x4 + playsewithpan SE_W152, SOUND_PAN_ATTACKER + launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0x0 0xfff6 0x19 0x0 + delay 0x4 + playsewithpan SE_W152, SOUND_PAN_ATTACKER + launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0xfff6 0xf 0x19 0x0 + delay 0x4 + playsewithpan SE_W152, SOUND_PAN_ATTACKER + launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0x19 0x14 0x19 0x0 + delay 0x4 + playsewithpan SE_W152, SOUND_PAN_ATTACKER + launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0xffec 0x14 0x19 0x0 + delay 0x4 + playsewithpan SE_W152, SOUND_PAN_ATTACKER + launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0xc 0x0 0x19 0x0 + waitforvisualfinish + playsewithpan SE_W268, SOUND_PAN_ATTACKER + launchtemplate gTechnoBlastBlueBlastTemplate 0x83 0x6 0xa 0x0 0x0 0x0 0x1e 0x0 + launchtemplate gTechnoBlastBlueSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x0 0x28 0x0 + launchtemplate gTechnoBlastBlueSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x40 0x28 0x1 + launchtemplate gTechnoBlastBlueSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x80 0x28 0x0 + launchtemplate gTechnoBlastBlueSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e SOUND_PAN_ATTACKER 0x28 0x2 + launchtemplate gTechnoBlastBlueSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0x20 0x28 0x0 + launchtemplate gTechnoBlastBlueSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0x60 0x28 0x1 + launchtemplate gTechnoBlastBlueSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0xa0 0x28 0x0 + launchtemplate gTechnoBlastBlueSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0xe0 0x28 0x2 + waitforvisualfinish + playsewithpan SE_W052, SOUND_PAN_ATTACKER + launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x4 0x0 0x5 0x1 + launchtemplate gTechnoBlastBlueSmokeTemplate 0x82, 0x4, 0x8 0x8 0x1 0x0 + launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0xa 0xa 0x19 0x1 + launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0xfff1 0x0 0x19 0x1 + delay 0x2 + launchtemplate gTechnoBlastBlueSmokeTemplate 0x82, 0x4, 0xfff8 0xfff8 0x1 0x0 + launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0x14 0xa 0x19 0x1 + launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0x0 0xfff6 0x19 0x1 + delay 0x2 + launchtemplate gTechnoBlastBlueSmokeTemplate 0x82, 0x4, 0x8 0xfff8 0x1 0x0 + launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0xfff6 0xf 0x19 0x1 + launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0x19 0x14 0x19 0x1 + delay 0x2 + launchtemplate gTechnoBlastBlueSmokeTemplate 0x82, 0x4, 0xfff8 0x8 0x1 0x0 + launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0xffec 0x14 0x19 0x1 + launchtemplate gTechnoBlastBlueBubbleTemplate 0x2 0x4 0xc 0x0 0x19 0x1 + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0xC 0x0 0x0 + waitforvisualfinish + blendoff + clearmonbg ANIM_ATTACKER + end + +TechnoBlastFire: + loadspritegfx ANIM_TAG_JAGGED_MUSIC_NOTE @red color + loadspritegfx ANIM_TAG_SMALL_RED_EYE @another red color + loadspritegfx ANIM_TAG_SMALL_EMBER @fire + loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT @charge animation + loadspritegfx ANIM_TAG_BLACK_BALL_2 @blast + loadspritegfx ANIM_TAG_SPARK_2 @blast particles + loadspritegfx ANIM_TAG_GRAY_SMOKE @dispersal + monbg ANIM_ATTACKER + setblends 0x80E + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0xC 0x0 + waitforvisualfinish + launchtemplate gTechnoBlastRedChargeTemplate 0x2 0x1 0x0 + delay 0x5 + call TechnoBlastFireSpiral + call TechnoBlastFireSpiral + call TechnoBlastFireSpiral + waitforvisualfinish + playsewithpan SE_W268, SOUND_PAN_ATTACKER + launchtemplate gTechnoBlastRedBlastTemplate 0x83 0x6 0xa 0x0 0x0 0x0 0x1e 0x0 + launchtemplate gTechnoBlastRedSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x0 0x28 0x0 + launchtemplate gTechnoBlastRedSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x40 0x28 0x1 + launchtemplate gTechnoBlastRedSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x80 0x28 0x0 + launchtemplate gTechnoBlastRedSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e SOUND_PAN_ATTACKER 0x28 0x2 + launchtemplate gTechnoBlastRedSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0x20 0x28 0x0 + launchtemplate gTechnoBlastRedSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0x60 0x28 0x1 + launchtemplate gTechnoBlastRedSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0xa0 0x28 0x0 + launchtemplate gTechnoBlastRedSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0xe0 0x28 0x2 + waitforvisualfinish + playsewithpan SE_W052, SOUND_PAN_ATTACKER + launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x4 0x0 0x5 0x1 + launchtemplate gTechnoBlastRedSmokeTemplate 0x82, 0x4, 0x8 0x8 0x1 0x0 + launchtemplate gFireSpreadSpriteTemplate 0x81 0x5 0x0 0xa SOUND_PAN_ATTACKER 0xb0 0x28 + launchtemplate gFireSpreadSpriteTemplate 0x81 0x5 0x0 0xa 0xff40 0xf0 0x28 + launchtemplate gFireSpreadSpriteTemplate 0x81 0x5 0x0 0xa SOUND_PAN_ATTACKER 0xff60 0x28 + launchtemplate gFireSpreadSpriteTemplate 0x81 0x5 0x0 0xa 0xff40 0xff90 0x28 + launchtemplate gFireSpreadSpriteTemplate 0x81 0x5 0x0 0xa 0xa0 0x30 0x28 + launchtemplate gFireSpreadSpriteTemplate 0x81 0x5 0x0 0xa 0xff20 0xffe0 0x28 + launchtemplate gFireSpreadSpriteTemplate 0x81 0x5 0x0 0xa 0x70 0xff80 0x28 + delay 0x2 + launchtemplate gTechnoBlastRedSmokeTemplate 0x82, 0x4, 0xfff8 0xfff8 0x1 0x0 + delay 0x2 + launchtemplate gTechnoBlastRedSmokeTemplate 0x82, 0x4, 0x8 0xfff8 0x1 0x0 + delay 0x2 + launchtemplate gTechnoBlastRedSmokeTemplate 0x82, 0x4, 0xfff8 0x8 0x1 0x0 + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0xC 0x0 0x0 + waitforvisualfinish + blendoff + clearmonbg ANIM_ATTACKER + end +TechnoBlastFireSpiral: + launchtemplate gFireSpiralOutwardSpriteTemplate 0x3 0x4 0x0 0x0 0x38 0x0 + playsewithpan SE_W172, SOUND_PAN_ATTACKER + delay 0x2 + launchtemplate gFireSpiralOutwardSpriteTemplate 0x3 0x4 0x0 0x0 0x38 0x4 + playsewithpan SE_W172, SOUND_PAN_ATTACKER + delay 0x2 + launchtemplate gFireSpiralOutwardSpriteTemplate 0x3 0x4 0x0 0x0 0x38 0x8 + playsewithpan SE_W172, SOUND_PAN_ATTACKER + delay 0x2 + launchtemplate gFireSpiralOutwardSpriteTemplate 0x3 0x4 0x0 0x0 0x38 0xc + playsewithpan SE_W172, SOUND_PAN_ATTACKER + delay 0x2 + launchtemplate gFireSpiralOutwardSpriteTemplate 0x3 0x4 0x0 0x0 0x38 0x10 + playsewithpan SE_W172, SOUND_PAN_ATTACKER + delay 0x2 + launchtemplate gFireSpiralOutwardSpriteTemplate 0x3 0x4 0x0 0x0 0x38 0x14 + playsewithpan SE_W172, SOUND_PAN_ATTACKER + delay 0x2 + launchtemplate gFireSpiralOutwardSpriteTemplate 0x3 0x4 0x0 0x0 0x38 0x18 + playsewithpan SE_W172, SOUND_PAN_ATTACKER + delay 0x2 + return + +TechnoBlastIce: + loadspritegfx ANIM_TAG_ICE_CRYSTALS @ice + loadspritegfx ANIM_TAG_ICE_CHUNK @ice color + loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT @charge animation + loadspritegfx ANIM_TAG_BLACK_BALL_2 @blast + loadspritegfx ANIM_TAG_SPARK_2 @blast particles + loadspritegfx ANIM_TAG_GRAY_SMOKE @dispersal + monbg ANIM_ATTACKER + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0xC 0x0 + waitforvisualfinish + launchtemplate gTechnoBlastIceChargeTemplate 0x2 0x1 0x0 + delay 0x5 + call TechnoBlastIceChargeParticles + call TechnoBlastIceChargeParticles + call TechnoBlastIceChargeParticles + launchtemplate gTechnoBlastIceCrystalsTemplate 0x2 0x4 0xfff6 0xfff6 0x0 0x2 + playsewithpan SE_W196, SOUND_PAN_TARGET + delay 0x4 + launchtemplate gTechnoBlastIceCrystalsTemplate 0x2 0x4 0xa 0x14 0x0 0x2 + playsewithpan SE_W196, SOUND_PAN_TARGET + delay 0x4 + launchtemplate gTechnoBlastIceCrystalsTemplate 0x2 0x4 0xfffb 0xa 0x0 0x2 + playsewithpan SE_W196, SOUND_PAN_TARGET + delay 0x4 + launchtemplate gTechnoBlastIceCrystalsTemplate 0x2 0x4 0x11 0xfff4 0x0 0x2 + playsewithpan SE_W196, SOUND_PAN_TARGET + waitforvisualfinish + playsewithpan SE_W268, SOUND_PAN_ATTACKER + launchtemplate gTechnoBlastIceBlastTemplate 0x83 0x6 0xa 0x0 0x0 0x0 0x1e 0x0 + launchtemplate gTechnoBlastIceSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x0 0x28 0x0 + launchtemplate gTechnoBlastIceSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x40 0x28 0x1 + launchtemplate gTechnoBlastIceSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x80 0x28 0x0 + launchtemplate gTechnoBlastIceSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e SOUND_PAN_ATTACKER 0x28 0x2 + launchtemplate gTechnoBlastIceSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0x20 0x28 0x0 + launchtemplate gTechnoBlastIceSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0x60 0x28 0x1 + launchtemplate gTechnoBlastIceSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0xa0 0x28 0x0 + launchtemplate gTechnoBlastIceSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0xe0 0x28 0x2 + waitforvisualfinish + playsewithpan SE_W052, SOUND_PAN_ATTACKER + launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x4 0x0 0x5 0x1 + launchtemplate gTechnoBlastIceSmokeTemplate 0x82, 0x4, 0x8 0x8 0x1 0x0 + launchtemplate gIceCrystalHitLargeSpriteTemplate 0x82, 0x3, 0xfff6 0xfff6 0x0 + delay 0x2 + launchtemplate gTechnoBlastIceSmokeTemplate 0x82, 0x4, 0xfff8 0xfff8 0x1 0x0 + launchtemplate gIceCrystalHitSmallSpriteTemplate 0x82, 0x3, 0xa 0x14 0x0 + launchtemplate gIceCrystalHitLargeSpriteTemplate 0x82, 0x3, 0xfffb 0xa 0x0 + delay 0x2 + launchtemplate gTechnoBlastIceSmokeTemplate 0x82, 0x4, 0x8 0xfff8 0x1 0x0 + launchtemplate gIceCrystalHitSmallSpriteTemplate 0x82, 0x3, 0x11 0xfff4 0x0 + launchtemplate gIceCrystalHitSmallSpriteTemplate 0x82, 0x3, 0xfff1 0xf 0x0 + delay 0x2 + launchtemplate gTechnoBlastIceSmokeTemplate 0x82, 0x4, 0xfff8 0x8 0x1 0x0 + launchtemplate gIceCrystalHitSmallSpriteTemplate 0x82, 0x3, 0x0 0x0 0x0 + launchtemplate gIceCrystalHitLargeSpriteTemplate 0x82, 0x3, 0x14 0x2 0x0 + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0xC 0x0 0x0 + waitforvisualfinish + clearmonbg ANIM_ATTACKER + end +TechnoBlastIceChargeParticles: + launchtemplate gTechnoBlastIceCrystalsTemplate 0x2 0x4 0xfff6 0xfff6 0x0 0x2 + playsewithpan SE_W196, SOUND_PAN_TARGET + delay 0x4 + launchtemplate gTechnoBlastIceCrystalsTemplate 0x2 0x4 0xa 0x14 0x0 0x2 + playsewithpan SE_W196, SOUND_PAN_TARGET + delay 0x4 + launchtemplate gTechnoBlastIceCrystalsTemplate 0x2 0x4 0xfffb 0xa 0x0 0x2 + playsewithpan SE_W196, SOUND_PAN_TARGET + delay 0x4 + launchtemplate gTechnoBlastIceCrystalsTemplate 0x2 0x4 0x11 0xfff4 0x0 0x2 + playsewithpan SE_W196, SOUND_PAN_TARGET + delay 0x4 + launchtemplate gTechnoBlastIceCrystalsTemplate 0x2 0x4 0xfff1 0xf 0x0 0x2 + playsewithpan SE_W196, SOUND_PAN_TARGET + delay 0x4 + launchtemplate gTechnoBlastIceCrystalsTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + playsewithpan SE_W196, SOUND_PAN_TARGET + delay 0x4 + launchtemplate gTechnoBlastIceCrystalsTemplate 0x2 0x4 0x14 0x2 0x0 0x2 + playsewithpan SE_W196, SOUND_PAN_TARGET + delay 0x4 + return + Move_RELIC_SONG: + loadspritegfx ANIM_TAG_JAGGED_MUSIC_NOTE + loadspritegfx ANIM_TAG_THIN_RING + loadspritegfx ANIM_TAG_MUSIC_NOTES + loadspritegfx ANIM_TAG_IMPACT + monbg SIDE_TARGET + launchtask AnimTask_MusicNotesRainbowBlend 0x2 0x0 + waitforvisualfinish + panse_1B 0x1DF, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0 @ ??? + launchtask AnimTask_UproarDistortion 0x2 0x1 0x0 + launchtemplate gUproarRingSpriteTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1f 0x8 + launchtemplate gJaggedMusicNoteSpriteTemplate 0x2 0x4 0x0 0x1d 0xfff4 0x0 + launchtemplate gJaggedMusicNoteSpriteTemplate 0x2 0x4 0x0 0xfff4 0xffe3 0x1 + launchtemplate gWavyMusicNotesSpriteTemplate 0x82, 0x3, 0x7 0x0 0xc + delay 0x5 + launchtemplate gWavyMusicNotesSpriteTemplate 0x82, 0x3, 0x6 0x1 0xc + delay 0x5 + launchtask AnimTask_UproarDistortion 0x2 0x1 0x0 + launchtemplate gUproarRingSpriteTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1f 0x8 + launchtemplate gJaggedMusicNoteSpriteTemplate 0x2 0x4 0x0 0xc 0xffe3 0x1 + launchtemplate gJaggedMusicNoteSpriteTemplate 0x2 0x4 0x0 0xffe3 0xfff4 0x0 + launchtemplate gWavyMusicNotesSpriteTemplate 0x82, 0x3, 0x1 0x2 0xc + delay 0x5 + launchtemplate gWavyMusicNotesSpriteTemplate 0x82, 0x3, 0x2 0x3 0xc + delay 0x5 + launchtask AnimTask_UproarDistortion 0x2 0x1 0x0 + launchtemplate gUproarRingSpriteTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1f 0x8 + launchtemplate gJaggedMusicNoteSpriteTemplate 0x2 0x4 0x0 0x18 0xffe8 0x1 + launchtemplate gJaggedMusicNoteSpriteTemplate 0x2 0x4 0x0 0xffe8 0xffe8 0x0 + launchtemplate gWavyMusicNotesSpriteTemplate 0x82, 0x3, 0x3 0x0 0xc + delay 0x5 + launchtemplate gWavyMusicNotesSpriteTemplate 0x82, 0x3, 0x2 0x1 0xc + delay 0x5 + launchtask AnimTask_UproarDistortion 0x2 0x1 0x0 + launchtemplate gUproarRingSpriteTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1f 0x8 + launchtemplate gJaggedMusicNoteSpriteTemplate 0x2 0x4 0x0 0x1d 0xfff4 0x0 + launchtemplate gJaggedMusicNoteSpriteTemplate 0x2 0x4 0x0 0xfff4 0xffe3 0x1 + launchtemplate gWavyMusicNotesSpriteTemplate 0x82, 0x3, 0x5 0x2 0xc + delay 0x5 + launchtemplate gWavyMusicNotesSpriteTemplate 0x82, 0x3, 0x6 0x3 0xc + delay 0x5 + launchtask AnimTask_UproarDistortion 0x2 0x1 0x0 + launchtemplate gUproarRingSpriteTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1f 0x8 + launchtemplate gJaggedMusicNoteSpriteTemplate 0x2 0x4 0x0 0xc 0xffe3 0x1 + launchtemplate gJaggedMusicNoteSpriteTemplate 0x2 0x4 0x0 0xffe3 0xfff4 0x0 + launchtemplate gWavyMusicNotesSpriteTemplate 0x82, 0x3, 0x2 0x0 0xc + delay 0x5 + launchtemplate gWavyMusicNotesSpriteTemplate 0x82, 0x3, 0x2 0x1 0xc + delay 0x5 + launchtask AnimTask_UproarDistortion 0x2 0x1 0x0 + launchtemplate gUproarRingSpriteTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1f 0x8 + launchtemplate gJaggedMusicNoteSpriteTemplate 0x2 0x4 0x0 0x18 0xffe8 0x1 + launchtemplate gJaggedMusicNoteSpriteTemplate 0x2 0x4 0x0 0xffe8 0xffe8 0x0 + launchtemplate gWavyMusicNotesSpriteTemplate 0x82, 0x3, 0x1 0x2 0xc + delay 0x5 + launchtemplate gWavyMusicNotesSpriteTemplate 0x82, 0x3, 0x5 0x3 0xc + delay 0x5 + launchtask AnimTask_UproarDistortion 0x2 0x1 0x0 + launchtemplate gUproarRingSpriteTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1f 0x8 + launchtemplate gJaggedMusicNoteSpriteTemplate 0x2 0x4 0x0 0x1d 0xfff4 0x0 + launchtemplate gJaggedMusicNoteSpriteTemplate 0x2 0x4 0x0 0xfff4 0xffe3 0x1 + waitforvisualfinish + launchtemplate gBasicHitSplatSpriteTemplate 0x83 0x4 0xffe0 0xfff0 0x1 0x3 + playsewithpan SE_W004, SOUND_PAN_TARGET + launchtask AnimTask_ShakeMonInPlace 0x2 0x5 0x1 0x3 0x0 0xc 0x1 + launchtask AnimTask_ShakeMonInPlace 0x2 0x5 0x3 0x3 0x0 0xc 0x1 + delay 0x5 + launchtemplate gRandomPosHitSplatSpriteTemplate 0x83 0x2 0x1 0x3 + playsewithpan SE_W004, SOUND_PAN_TARGET + delay 0x5 + launchtemplate gRandomPosHitSplatSpriteTemplate 0x83 0x2 0x1 0x3 + playsewithpan SE_W004, SOUND_PAN_TARGET + delay 0x5 + launchtemplate gBasicHitSplatSpriteTemplate 0x83 0x4 0x20 0x14 0x1 0x3 + playsewithpan SE_W004, SOUND_PAN_TARGET + waitforvisualfinish + clearmonbg SIDE_TARGET + launchtask AnimTask_MusicNotesClearRainbowBlend 0x2 0x0 + waitforvisualfinish end + Move_SECRET_SWORD: + loadspritegfx ANIM_TAG_CUT @Cut + loadspritegfx ANIM_TAG_SWORD @Sword + loadspritegfx ANIM_TAG_HYDRO_PUMP @Blue Colour + loadspritegfx ANIM_TAG_PUNISHMENT_BLADES @Punishment Blade + monbg ANIM_ATTACKER + setalpha 12, 8 + playsewithpan SE_W014, SOUND_PAN_ATTACKER + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x0 0x0 0x10 0x0 + launchtemplate gSwordsDanceBladeSpriteTemplate 0x2 0x2 0x0 0x0 + delay 0x16 + launchtask AnimTask_FlashAnimTagWithColor 0x2 0x7 0x2715 0x2 0x2 0x7ff2 0x10 0x0 0x0 + waitforvisualfinish + clearmonbg ANIM_ATTACKER + delay 0x1 + monbg ANIM_TARGET + playsewithpan SE_W013, SOUND_PAN_TARGET + launchtemplate gSecretSwordBladesTemplate 0x81 0x5 0x0 0xa 0x0 0xFF00 0xA + launchtemplate gCuttingSliceSpriteTemplate 0x2 0x3 0x28 0xffe0 0x0 + delay 0x5 + launchtask AnimTask_ShakeMon 0x2 0x5 0x1 0x0 0x3 0xa 0x1 + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x0 0x10 0x0 0x0 + waitforvisualfinish + clearmonbg ANIM_TARGET + blendoff + waitforvisualfinish end + Move_GLACIATE: + loadspritegfx ANIM_TAG_ICE_CRYSTALS @ice + loadspritegfx ANIM_TAG_BLACK_SMOKE @smoke + loadspritegfx ANIM_TAG_ICE_CHUNK @White Colour + monbg SIDE_TARGET + setalpha 12, 8 + fadetobg BG_ICE + waitbgfadeout + playsewithpan SE_W028, SOUND_PAN_TARGET + launchtemplate gGlaciateSmokeTemplate 0x84 0x5 0x0 0xfff4 0x68 0x0 0x4b + launchtemplate gGlaciateSmokeTemplate 0x84 0x5 0x0 0xfff4 0x48 0x1 0x4b + launchtemplate gGlaciateSmokeTemplate 0x84 0x5 0x0 0xfffa 0x38 0x1 0x4b + launchtemplate gGlaciateSmokeTemplate 0x84 0x5 0x0 0xfffa 0x58 0x0 0x4b + launchtemplate gGlaciateSmokeTemplate 0x84 0x5 0x0 0x0 0x38 0x0 0x4b + launchtemplate gGlaciateSmokeTemplate 0x84 0x5 0x0 0x0 0x58 0x1 0x4b + launchtemplate gGlaciateSmokeTemplate 0x84 0x5 0x0 0x6 0x48 0x0 0x4b + launchtemplate gGlaciateSmokeTemplate 0x84 0x5 0x0 0x6 0x68 0x1 0x4b + launchtemplate gGlaciateSmokeTemplate 0x84 0x5 0x0 0xc 0x48 0x0 0x4b + launchtemplate gGlaciateSmokeTemplate 0x84 0x5 0x0 0xc 0x38 0x1 0x4b + launchtemplate gGlaciateSmokeTemplate 0x84 0x5 0x0 0x12 0x50 0x0 0x4b + launchtemplate gGlaciateSmokeTemplate 0x84 0x5 0x0 0x12 0x48 0x1 0x4b + waitforvisualfinish + createsprite AnimTask_BlendBattleAnimPal, ANIM_ATTACKER, 0xA, (PAL_DEF | PAL_DEF_PARTNER), 0x2, 0x0, 0xA, 0x7FFF + call IceCrystalEffectLong + createsprite AnimTask_BlendBattleAnimPal, ANIM_ATTACKER, 0xA, (PAL_DEF | PAL_DEF_PARTNER), 0x2, 0xA, 0x0, 0x7FFF + waitforvisualfinish + blendoff + clearmonbg SIDE_TARGET + call UnsetPsychicBg end + -Move_BOLT_STRIKE: +Move_BOLT_STRIKE:: + loadspritegfx ANIM_TAG_SPARK_2 @Electricity + loadspritegfx ANIM_TAG_IMPACT @Hit + loadspritegfx ANIM_TAG_ELECTRIC_ORBS @Electric Balls + loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT @Electric Circle + monbg ANIM_ATTACKER + setalpha 12, 8 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0x10 0x0 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_ATK 0x2 0x0 0x9 0x07FE + launchtask AnimTask_ElectricChargingParticles 0x2 0x4 0x0 0x40 0x0 0x2 + playsewithpan SE_W268, SOUND_PAN_ATTACKER + delay 0xc + launchtemplate gGrowingShockWaveOrbSpriteTemplate 0x2 0x0 + waitforvisualfinish + clearmonbg ANIM_ATTACKER + playsewithpan SE_W207, SOUND_PAN_ATTACKER + waitplaysewithpan SE_W207, SOUND_PAN_ATTACKER, 0x8 + launchtask AnimTask_TranslateMonEllipticalRespectSide 0x2 0x5 0x0 0x12 0x6 0x2 0x4 + delay 0xA + fadetobg BG_BOLT_STRIKE + waitbgfadeout + waitforvisualfinish + monbg ANIM_TARGET + launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_ATTACKER 0x1a 0x0 0x0 0x5 + delay 0x6 + launchtemplate gBasicHitSplatSpriteTemplate 0x4 0x4 0xfff6 0x0 0x1 0x0 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_DEF 0x2 0x0 0x9 0x07FE + launchtask AnimTask_ShakeMon2 0x2 0x5 ANIM_TARGET 0x2 0x0 0x20 0x1 + playsewithpan SE_W161B, SOUND_PAN_TARGET + call ElectricityEffect + launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_ATTACKER 0x0 0x5 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_ATK 0x2 0x9 0x0 0x07FE + playsewithpan SE_W161B, SOUND_PAN_TARGET + call ElectricityEffect + waitforvisualfinish + clearmonbg ANIM_TARGET + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_DEF 0x2 0x9 0x0 0x07FE + call UnsetPsychicBg + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0x0 0x0 + blendoff + waitforvisualfinish end + + +Move_BLUE_FLARE:: + loadspritegfx ANIM_TAG_SMALL_EMBER @Fire + loadspritegfx ANIM_TAG_METAL_BITS @Blue Flare Colour + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x0 0x0 0x10 0x0 + loopsewithpan SE_W172, SOUND_PAN_ATTACKER, 0x7, 0x9 + launchtemplate gBlueFlareFlameJabTemplate 0x82 0x5 0x1 0x0 0x0 0xffe0 0x10 + delay 0x2 + launchtemplate gBlueFlareFlameJabTemplate 0x82 0x5 0x1 0x0 0x16 0xffea 0x10 + delay 0x2 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 0x4 0x1 0x0 0x9 0x1F + launchtemplate gBlueFlareFlameJabTemplate 0x82 0x5 0x1 0x0 0x1e 0x0 0x10 + delay 0x2 + launchtemplate gBlueFlareFlameJabTemplate 0x82 0x5 0x1 0x0 0x14 0x14 0x10 + delay 0x2 + launchtemplate gBlueFlareFlameJabTemplate 0x82 0x5 0x1 0x0 0x0 0x1c 0x10 + delay 0x2 + launchtemplate gBlueFlareFlameJabTemplate 0x82 0x5 0x1 0x0 0xffed 0x13 0x10 + delay 0x2 + launchtemplate gBlueFlareFlameJabTemplate 0x82 0x5 0x1 0x0 0xffe5 0x0 0x10 + delay 0x2 + launchtemplate gBlueFlareFlameJabTemplate 0x82 0x5 0x1 0x0 0xffee 0xffee 0x10 + delay 0x2 + launchtemplate gBlueFlareFlameJabTemplate 0x82 0x5 0x1 0x0 0x0 0xffe7 0x10 + delay 0x2 + launchtemplate gBlueFlareFlameJabTemplate 0x82 0x5 0x1 0x0 0x11 0xffef 0x10 + delay 0x2 + launchtemplate gBlueFlareFlameJabTemplate 0x82 0x5 0x1 0x0 0x17 0x0 0x10 + delay 0x2 + launchtemplate gBlueFlareFlameJabTemplate 0x82 0x5 0x1 0x0 0x10 0x10 0x10 + waitforvisualfinish + playsewithpan SE_W221B, SOUND_PAN_TARGET + call BlueFlareFireSpin + call BlueFlareFireSpin + call BlueFlareFireSpin + fadetobg BG_FIRE_2 + waitbgfadeout + launchtask AnimTask_StartSlidingBg 0x5 0x4 0x1000 0x0 0x0 0xFFFF + waitbgfadein + playsewithpan SE_W172, SOUND_PAN_ATTACKER + call BlueFlareFlameSpreadEffect + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x0 0x0 0x0 0x0 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 0x4 0x1 0x9 0x0 0x1f + call UnsetPsychicBg + waitforvisualfinish + end +BlueFlareFireSpin: + launchtemplate gBlueFlareFlameSwirlTemplate 0x82 0x7 0x0 0x1c 0x210 0x1e 0xd 0x32 0x1 + delay 0x2 + launchtemplate gBlueFlareFlameSwirlTemplate 0x82 0x7 0x0 0x20 0x1e0 0x14 0x10 0xffd2 0x1 + delay 0x2 + launchtemplate gBlueFlareFlameSwirlTemplate 0x82 0x7 0x0 0x21 0x240 0x14 0x8 0x2a 0x1 + delay 0x2 + launchtemplate gBlueFlareFlameSwirlTemplate 0x82 0x7 0x0 0x1f 0x190 0x19 0xb 0xffd6 0x1 + delay 0x2 + launchtemplate gBlueFlareFlameSwirlTemplate 0x82 0x7 0x0 0x1c 0x200 0x19 0x10 0x2e 0x1 + delay 0x2 + launchtemplate gBlueFlareFlameSwirlTemplate 0x82 0x7 0x0 0x21 0x1d0 0x1e 0xf 0xffce 0x1 + delay 0x2 + return +BlueFlareFlameSpreadEffect: + launchtemplate gBlueFlareBurnTemplate 0x81 0x5 0x0 0xa SOUND_PAN_ATTACKER 0xb0 0x28 + launchtemplate gBlueFlareBurnTemplate 0x81 0x5 0x0 0xa 0xff40 0xf0 0x28 + launchtemplate gBlueFlareBurnTemplate 0x81 0x5 0x0 0xa SOUND_PAN_ATTACKER 0xff60 0x28 + launchtemplate gBlueFlareBurnTemplate 0x81 0x5 0x0 0xa 0xff40 0xff90 0x28 + launchtemplate gBlueFlareBurnTemplate 0x81 0x5 0x0 0xa 0xa0 0x30 0x28 + launchtemplate gBlueFlareBurnTemplate 0x81 0x5 0x0 0xa 0xff20 0xffe0 0x28 + launchtemplate gBlueFlareBurnTemplate 0x81 0x5 0x0 0xa 0x70 0xff80 0x28 + return + + +Move_FIERY_DANCE:: + loadspritegfx ANIM_TAG_SMALL_EMBER + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0xc 0x14be + waitforvisualfinish + playsewithpan SE_W221B, SOUND_PAN_TARGET + launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_TARGET 0x0 0x2 0x40 0x1 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_DEF 0x1 0x0 0x9 0x1f + call FireSpinEffect + call FireSpinEffect + call FireSpinEffect + playsewithpan SE_W221B, SOUND_PAN_TARGET + call FireSpinEffect + call FireSpinEffect + call FireSpinEffect + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_DEF 0x1 0x9 0x0 0x1f + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0xc 0x0 0x14be + waitforvisualfinish + end + -Move_BLUE_FLARE: +Move_FREEZE_SHOCK:: + loadspritegfx ANIM_TAG_SPARK + loadspritegfx ANIM_TAG_SPARK_2 + loadspritegfx ANIM_TAG_ICE_CHUNK @Ice Ball + loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT @Electric Circle + choosetwoturnanim FreezeShockCharge FreezeShockAttack +FreezeShockCharge: + launchtask AnimTask_HorizontalShake 0x5 0x3 0x0 0x2 0x10 + playsewithpan SE_W085B, SOUND_PAN_TARGET + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_ATK 0x1 0x0 0xf 0x7fff + launchtemplate gFreezeShockCircleTemplate 0x2 0x0 @electric circle + delay 0x14 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_ATK 0x1 0xf 0x0 0x7fff + waitforvisualfinish end +FreezeShockAttack: + loopsewithpan SE_W196, SOUND_PAN_TARGET, 0x5, 0x5 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0x10 0x0 + monbg ANIM_TARGET + waitforvisualfinish + playsewithpan SE_W086, SOUND_PAN_ATTACKER + launchtemplate gFreezeShockIceBallTemplate 0x83 0x6 0xa 0x0 0x0 0x0 0x1e 0x0 + launchtemplate gZapCannonSparkSpriteTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x0 0x28 0x0 + launchtemplate gZapCannonSparkSpriteTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x40 0x28 0x1 + launchtemplate gZapCannonSparkSpriteTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x80 0x28 0x0 + launchtemplate gZapCannonSparkSpriteTemplate 0x84 0x7 0xa 0x0 0x10 0x1e SOUND_PAN_ATTACKER 0x28 0x2 + launchtemplate gZapCannonSparkSpriteTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0x20 0x28 0x0 + launchtemplate gZapCannonSparkSpriteTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0x60 0x28 0x1 + launchtemplate gZapCannonSparkSpriteTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0xa0 0x28 0x0 + launchtemplate gZapCannonSparkSpriteTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0xe0 0x28 0x2 + waitforvisualfinish + launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x4 0x0 0x5 0x1 + delay 0xf + waitplaysewithpan SE_W085B, SOUND_PAN_TARGET, 0x13 + call ElectricityEffect + waitforvisualfinish + clearmonbg ANIM_TARGET + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x10 0x0 0x0 + waitforvisualfinish + end + + +Move_ICE_BURN:: + loadspritegfx ANIM_TAG_BLACK_SMOKE @smoke + loadspritegfx ANIM_TAG_ICE_CHUNK @white color + loadspritegfx ANIM_TAG_ICE_CRYSTALS @ice + loadspritegfx ANIM_TAG_SMALL_EMBER + choosetwoturnanim IceBurnCharge, IceBurnUnleash + waitforvisualfinish + end +IceBurnCharge: + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0xC 0x0 + waitforvisualfinish + loopsewithpan SE_W196, SOUND_PAN_TARGET, 0x4, 0x3 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_ATK 0x1 0x8 0x0 0x0 + launchtask AnimTask_HorizontalShake 0x5 0x3 0x0 0x2 0x10 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_ATK 0x1 0x0 0xf 0x7fff + delay 0x14 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_ATK 0x1 0xf 0x0 0x7fff + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0xC 0x0 0x0 + waitforvisualfinish + end +IceBurnUnleash: + monbg ANIM_TARGET + fadetobg BG_ICE + waitbgfadeout + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_DEF 0x2 0x0 0x9 0x7fff + launchtemplate gIceCrystalHitLargeSpriteTemplate 0x82, 0x3, 0xfff6 0xfff6 0x0 + playsewithpan SE_W196, SOUND_PAN_TARGET + launchtemplate gIceBurnSmokeTemplate 0x84 0x5 0x0 0xfff4 0x68 0x0 0x4b + launchtemplate gIceBurnSmokeTemplate 0x84 0x5 0x0 0xfff4 0x48 0x1 0x4b + launchtemplate gIceBurnSmokeTemplate 0x84 0x5 0x0 0xfffa 0x38 0x1 0x4b + launchtemplate gIceBurnSmokeTemplate 0x84 0x5 0x0 0xfffa 0x58 0x0 0x4b + launchtemplate gIceBurnSmokeTemplate 0x84 0x5 0x0 0x0 0x38 0x0 0x4b + launchtemplate gIceBurnSmokeTemplate 0x84 0x5 0x0 0x0 0x58 0x1 0x4b + launchtemplate gIceBurnSmokeTemplate 0x84 0x5 0x0 0x6 0x48 0x0 0x4b + launchtemplate gIceBurnSmokeTemplate 0x84 0x5 0x0 0x6 0x68 0x1 0x4b + launchtemplate gIceBurnSmokeTemplate 0x84 0x5 0x0 0xc 0x48 0x0 0x4b + launchtemplate gIceBurnSmokeTemplate 0x84 0x5 0x0 0xc 0x38 0x1 0x4b + launchtemplate gIceBurnSmokeTemplate 0x84 0x5 0x0 0x12 0x50 0x0 0x4b + launchtemplate gIceBurnSmokeTemplate 0x84 0x5 0x0 0x12 0x48 0x1 0x4b + call FireSpreadEffect + playsewithpan SE_W007, SOUND_PAN_TARGET + delay 0x4 + launchtemplate gIceCrystalHitSmallSpriteTemplate 0x82, 0x3, 0xa 0x14 0x0 + playsewithpan SE_W196, SOUND_PAN_TARGET + delay 0x4 + launchtemplate gIceCrystalHitLargeSpriteTemplate 0x82, 0x3, 0xfffb 0xa 0x0 + playsewithpan SE_W196, SOUND_PAN_TARGET + delay 0x4 + launchtemplate gIceCrystalHitSmallSpriteTemplate 0x82, 0x3, 0x11 0xfff4 0x0 + playsewithpan SE_W196, SOUND_PAN_TARGET + delay 0x4 + launchtemplate gIceCrystalHitSmallSpriteTemplate 0x82, 0x3, 0xfff1 0xf 0x0 + playsewithpan SE_W196, SOUND_PAN_TARGET + delay 0x4 + launchtemplate gIceCrystalHitSmallSpriteTemplate 0x82, 0x3, 0x0 0x0 0x0 + playsewithpan SE_W196, SOUND_PAN_TARGET + delay 0x4 + launchtemplate gIceCrystalHitLargeSpriteTemplate 0x82, 0x3, 0x14 0x2 0x0 + playsewithpan SE_W196, SOUND_PAN_TARGET + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_DEF 0x2 0x9 0x0 0x7fff + waitforvisualfinish + restorebg + clearmonbg ANIM_TARGET + end + + +Move_SNARL:: + loadspritegfx ANIM_TAG_JAGGED_MUSIC_NOTE + loadspritegfx ANIM_TAG_THIN_RING + loadspritegfx ANIM_TAG_IMPACT + monbg SIDE_TARGET + fadetobg BG_DARK + waitbgfadeout + launchtask AnimTask_UproarDistortion 0x2 0x1 0x0 + launchtemplate gUproarRingSpriteTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1f 0x8 + playsewithpan SE_W253, SOUND_PAN_ATTACKER + launchtemplate gJaggedMusicNoteSpriteTemplate 0x2 0x4 0x0 0x1d 0xfff4 0x0 + launchtemplate gJaggedMusicNoteSpriteTemplate 0x2 0x4 0x0 0xfff4 0xffe3 0x1 + delay 0x10 + launchtask AnimTask_UproarDistortion 0x2 0x1 0x0 + launchtemplate gUproarRingSpriteTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1f 0x8 + playsewithpan SE_W253, SOUND_PAN_ATTACKER + launchtemplate gJaggedMusicNoteSpriteTemplate 0x2 0x4 0x0 0xc 0xffe3 0x1 + launchtemplate gJaggedMusicNoteSpriteTemplate 0x2 0x4 0x0 0xffe3 0xfff4 0x0 + delay 0x10 + launchtask AnimTask_UproarDistortion 0x2 0x1 0x0 + launchtemplate gUproarRingSpriteTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1f 0x8 + playsewithpan SE_W253, SOUND_PAN_ATTACKER + launchtemplate gJaggedMusicNoteSpriteTemplate 0x2 0x4 0x0 0x18 0xffe8 0x1 + launchtemplate gJaggedMusicNoteSpriteTemplate 0x2 0x4 0x0 0xffe8 0xffe8 0x0 + waitforvisualfinish + launchtemplate gBasicHitSplatSpriteTemplate 0x83 0x4 0xffe0 0xfff0 0x1 0x3 + playsewithpan SE_W004, SOUND_PAN_TARGET + launchtask AnimTask_ShakeMonInPlace 0x2 0x5 0x1 0x3 0x0 0xc 0x1 + launchtask AnimTask_ShakeMonInPlace 0x2 0x5 0x3 0x3 0x0 0xc 0x1 + delay 0x4 + launchtemplate gRandomPosHitSplatSpriteTemplate 0x83 0x2 0x1 0x3 + playsewithpan SE_W004, SOUND_PAN_TARGET + delay 0x4 + launchtemplate gRandomPosHitSplatSpriteTemplate 0x83 0x2 0x1 0x3 + playsewithpan SE_W004, SOUND_PAN_TARGET + delay 0x4 + launchtemplate gBasicHitSplatSpriteTemplate 0x83 0x4 0x20 0x14 0x1 0x3 + playsewithpan SE_W004, SOUND_PAN_TARGET + waitforvisualfinish + call UnsetPsychicBg + clearmonbg SIDE_TARGET + blendoff + end + -Move_FIERY_DANCE: +Move_ICICLE_CRASH:: + loadspritegfx ANIM_TAG_ICICLE_SPEAR @Icicle + fadetobg BG_ICE + waitbgfadein + monbg SIDE_TARGET + launchtemplate gIcicleCrashSpearTemplate 0x82, 0x4, 0xfffb 0x0 0xfffb 0x0 + playsewithpan SE_W196, SOUND_PAN_TARGET + delay 0x2 + launchtemplate gIcicleCrashSpearTemplate 0x82, 0x4, 0x5 0x0 0x6 0x1 + playsewithpan SE_W196, SOUND_PAN_TARGET + delay 0x2 + launchtemplate gIcicleCrashSpearTemplate 0x82, 0x4, 0x13 0x0 0xa 0x01 + playsewithpan SE_W196, SOUND_PAN_TARGET + delay 0x2 + launchtemplate gIcicleCrashSpearTemplate 0x82, 0x4, 0xffe9 0x0 0xfff6 0x1 + playsewithpan SE_W196, SOUND_PAN_TARGET + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0 0x5 0x32 0x1 + delay 0x2 + call LaunchIcicleCrashSpear + call LaunchIcicleCrashSpear + waitforvisualfinish + clearmonbg SIDE_TARGET + restorebg + waitbgfadeout end +LaunchIcicleCrashSpear: + launchtemplate gIcicleCrashSpearTemplate 0x82, 0x4, 0xffec 0x0 0xfff6 0x0 + playsewithpan SE_W196, SOUND_PAN_TARGET + delay 0x2 + launchtemplate gIcicleCrashSpearTemplate 0x82, 0x4, 0x1c 0x0 0xa 0x0 + playsewithpan SE_W196, SOUND_PAN_TARGET + delay 0x2 + launchtemplate gIcicleCrashSpearTemplate 0x82, 0x4, 0xfff6 0x0 0xfffb 0x0 + playsewithpan SE_W196, SOUND_PAN_TARGET + delay 0x2 + launchtemplate gIcicleCrashSpearTemplate 0x82, 0x4, 0xa 0x0 0x6 0x0 + playsewithpan SE_W196, SOUND_PAN_TARGET + delay 0x2 + launchtemplate gIcicleCrashSpearTemplate 0x82, 0x4, 0x18 0x0 0xa 0x0 + playsewithpan SE_W196, SOUND_PAN_TARGET + delay 0x2 + launchtemplate gIcicleCrashSpearTemplate 0x82, 0x4, 0xffe0 0x0 0xfff6 0x0 + playsewithpan SE_W196, SOUND_PAN_TARGET + delay 0x2 + launchtemplate gIcicleCrashSpearTemplate 0x82, 0x4, 0xffec 0x0 0xfff6 0x0 + playsewithpan SE_W196, SOUND_PAN_TARGET + delay 0x2 + launchtemplate gIcicleCrashSpearTemplate 0x82, 0x4, 0x1e 0x0 0xa 0x0 + playsewithpan SE_W196, SOUND_PAN_TARGET + delay 0x2 + return + + +Move_V_CREATE:: + loadspritegfx ANIM_TAG_SMALL_EMBER @fire blast flame + loadspritegfx ANIM_TAG_THIN_RING @calm mind animation + loadspritegfx ANIM_TAG_JAGGED_MUSIC_NOTE @red color + loadspritegfx ANIM_TAG_ECLIPSING_ORB @defense curl animation + monbg SIDE_ATTACKER + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0xC 0x0 @Darken + launchtemplate gVCreateRedOrbTemplate 0x2 0x4 0x0 0x11 0x0 0x1 + playsewithpan SE_W025, SOUND_PAN_ATTACKER + delay 0x2 + launchtemplate gVCreateRedRingTemplate 0x28 0x4 0x0 0x0 0x0 0x0 + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_ATK 0x2 0x0 0x9 0x1f + playsewithpan SE_W172B, SOUND_PAN_TARGET + call VCreateFlames + call VCreateFlames + call VCreateFlames + call VCreateFlames + call VCreateFlames + call VCreateFlames + call VCreateFlames + call VCreateFlames + call VCreateFlames + call VCreateFlames + waitforvisualfinish + unloadspritegfx ANIM_TAG_SMALL_EMBER + unloadspritegfx ANIM_TAG_THIN_RING + unloadspritegfx ANIM_TAG_JAGGED_MUSIC_NOTE + unloadspritegfx ANIM_TAG_ECLIPSING_ORB + loadspritegfx ANIM_TAG_EXPLOSION @explosion animation + loadspritegfx ANIM_TAG_CLAW_SLASH @dragon claw animation + clearmonbg SIDE_ATTACKER + fadetobg BG_FIRE @Mr. DS Fire + waitbgfadeout + launchtask AnimTask_StartSlidingBg 0x5 0x4 0xA00 0x0 0x1 0xffff + waitbgfadein + playsewithpan SE_W036, SOUND_PAN_ATTACKER + launchtask AnimTask_WindUpLunge 0x5 0x7 0x0 0xffe8 0x8 0x17 0xa 0x28 0xa + delay 0x23 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0 0x5 0x32 0x1 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_DEF 0x2 0x0 0x9 0x1f + playsewithpan SE_W153, SOUND_PAN_ATTACKER + launchtemplate gExplosionSpriteTemplate 0x3 0x4 0x0 0x0 0x1 0x1 + delay 0x6 + playsewithpan SE_W153, SOUND_PAN_ATTACKER + launchtemplate gExplosionSpriteTemplate 0x3 0x4 0x18 0xffe8 0x1 0x1 + delay 0x6 + playsewithpan SE_W153, SOUND_PAN_ATTACKER + launchtemplate gExplosionSpriteTemplate 0x3 0x4 0xfff0 0x10 0x1 0x1 + delay 0x6 + playsewithpan SE_W153, SOUND_PAN_ATTACKER + launchtemplate gExplosionSpriteTemplate 0x3 0x4 0xffe8 0xfff4 0x1 0x1 + delay 0x6 + playsewithpan SE_W153, SOUND_PAN_ATTACKER + launchtemplate gExplosionSpriteTemplate 0x3 0x4 0x10 0x10 0x1 0x1 + waitforvisualfinish + launchtemplate gHorizontalLungeSpriteTemplate 0x2 0x2 0x4 0x4 + launchtemplate gClawSlashSpriteTemplate 0x82, 0x3, 0xfff6 0xfff6 0x0 + launchtemplate gClawSlashSpriteTemplate 0x82, 0x3, 0xa 0xfff6 0x1 + waitforvisualfinish + launchtask AnimTask_ShakeMonInPlace 0x2 0x5 0x1 0x4 0x0 0xc 0x1 + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_ATK 0x2 0x9 0x0 0x1f + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_DEF 0x2 0x9 0x0 0x1f + delay 0x2 + launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_ATTACKER 0x0 0x5 + waitforvisualfinish + clearmonbg SIDE_TARGET + call UnsetPsychicBg + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0x0 0xffff + waitforvisualfinish + end +VCreateFlames: + launchtemplate gVCreateFlameTemplate 0x82 0x5 0x0 0x1 0x16 0xFFEA 0x10 @upperright + launchtemplate gVCreateFlameTemplate 0x82 0x5 0x0 0x1 0xFFEE 0xFFEE 0x10 @upperleft + delay 0x3 + return + + + +Move_FUSION_FLARE:: + loadspritegfx ANIM_TAG_FOCUS_ENERGY @focus energy + loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT @ball + loadspritegfx ANIM_TAG_VERTICAL_HEX @ball palette + loadspritegfx ANIM_TAG_JAGGED_MUSIC_NOTE @flame palette + loadspritegfx ANIM_TAG_SMALL_BUBBLES @particles + loadspritegfx ANIM_TAG_THIN_RING @ring + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_SMALL_BUBBLES, 0x0, 0xD, 0xD, 0x015B @Reddish Orange + monbg ANIM_TARGET + setalpha 12, 8 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0xC 0x0 + waitforvisualfinish + playsewithpan SE_W025, SOUND_PAN_ATTACKER + call FusionFlareBuff + delay 0x8 + launchtask AnimTask_BlendColorCycle 0x2 0x6 PAL_ATK 0x2 0x2 0x0 0xb 0x1F + launchtask AnimTask_ShakeMon2 0x2 0x5 0x0 0x1 0x0 0x20 0x1 + launchtemplate gVerticalDipSpriteTemplate 0x2 0x3 0x8 0x1 0x0 + delay 0x8 + playsewithpan SE_W207, SOUND_PAN_ATTACKER + launchtemplate gFusionFlareRedBallUpTemplate 0x2 0x0 + delay 0x20 + launchtemplate gFusionFlareRedBallTemplate 0x3 0x3 0x0 0xffA0 0x2F + launchtemplate gFusionFlareRedBubblesTemplate 0x42 0x7 0x64 0x64 0x8 0x1 0x14 0x28 0x0 + launchtemplate gFusionFlareRedBubblesTemplate 0x42 0x7 0x14 0x64 0x10 0x2 0xa 0x23 0x1 + launchtemplate gFusionFlareRedBubblesTemplate 0x42 0x7 0xc8 0x50 0x8 0x1 0x28 0x14 0x0 + launchtemplate gFusionFlareRedBubblesTemplate 0x42 0x7 0x50 0x3c 0xa 0x3 0x14 0x32 0x0 + launchtemplate gFusionFlareRedBubblesTemplate 0x42 0x7 0x8c 0x64 0x10 0x1 0x14 0x1e 0x1 + delay 0x29 + launchtask AnimTask_BlendColorCycle 0x2 0x6 PAL_DEF 0x2 0x2 0x0 0xb 0x1F + delay 0x5 + launchtemplate gFusionFlareRedRingTemplate 0x3 0x6 0x1 0x1 0x1 0x1 0x1F 0x8 + launchtemplate gFusionFlareRedBubblesTemplate 0x42 0x7 0x64 0x64 0x8 0x1 0x14 0x28 0x0 + launchtemplate gFusionFlareRedBubblesTemplate 0x42 0x7 0x14 0x64 0x10 0x2 0xa 0x23 0x1 + launchtemplate gFusionFlareRedBubblesTemplate 0x42 0x7 0xc8 0x50 0x8 0x1 0x28 0x14 0x0 + launchtemplate gFusionFlareRedBubblesTemplate 0x42 0x7 0x50 0x3c 0xa 0x3 0x14 0x32 0x0 + launchtemplate gFusionFlareRedBubblesTemplate 0x42 0x7 0x8c 0x64 0x10 0x1 0x14 0x1e 0x1 + launchtask AnimTask_HorizontalShake 0x5 0x3 0x1 0x2 0x10 + delay 0x5 + playsewithpan SE_W153, SOUND_PAN_ATTACKER + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0xC 0x0 0x0 + waitforvisualfinish + clearmonbg ANIM_TARGET + blendoff + end +FusionFlareBuff: + launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xffe8 0x1a 0x2 + delay 0x4 + launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xe 0x1c 0x1 + delay 0x4 + launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xfffb 0xa 0x2 + delay 0x4 + launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0x1c 0x1a 0x3 + delay 0x4 + launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xfff4 0x0 0x1 + return + -Move_FREEZE_SHOCK: +Move_FUSION_BOLT:: + loadspritegfx ANIM_TAG_SPARK + loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT + loadspritegfx ANIM_TAG_ELECTRICITY + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_SPARK, 0x0, 0xC, 0xC, 0x7960 @Blue Electricity + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_CIRCLE_OF_LIGHT, 0x0, 0xC, 0xC, 0x7960 @Blue Electricity + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_ELECTRICITY, 0x0, 0xC, 0xC, 0x7960 @Blue Electricity + createvisualtask AnimTask_BlendBattleAnimPal, 10, PAL_BG, 0x0, 0x0, 0xE, 0x0 + waitforvisualfinish + launchtemplate gVoltTackleOrbSlideSpriteTemplate 0x1 0x0 + playsewithpan SE_W268, SOUND_PAN_ATTACKER + invisible ANIM_ATTACKER + waitforvisualfinish + delay 0x8 + launchtask AnimTask_VoltTackleBolt 0x5 0x1 0x0 + playsewithpan SE_W085, SOUND_PAN_ATTACKER + waitforvisualfinish + launchtask AnimTask_VoltTackleBolt 0x5 0x1 0x1 + playsewithpan SE_W085, SOUND_PAN_TARGET + waitforvisualfinish + launchtask AnimTask_VoltTackleBolt 0x5 0x1 0x2 + playsewithpan SE_W085, SOUND_PAN_ATTACKER + waitforvisualfinish + launchtask AnimTask_VoltTackleBolt 0x5 0x1 0x3 + playsewithpan SE_W085, SOUND_PAN_TARGET + waitforvisualfinish + launchtemplate gFusionBoltBallTemplate 0x82 0x1 0x10 + playsewithpan SE_W085, SOUND_PAN_ATTACKER + delay 0x8 + launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0xa 0x0 0x12 0x1 + playsewithpan SE_W120, SOUND_PAN_TARGET + launchtemplate gElectricPuffSpriteTemplate 0x2 0x3 0x1 0x10 0x10 + delay 0x2 + launchtemplate gElectricPuffSpriteTemplate 0x2 0x3 0x1 0xfff0 0xfff0 + delay 0x8 + launchtask AnimTask_VoltTackleAttackerReappear 0x5 0x0 + waitforvisualfinish + launchtask AnimTask_ShakeMon2 0x2 0x5 0x0 0x3 0x0 0x9 0x1 + playsewithpan SE_W085B, SOUND_PAN_ATTACKER + launchtemplate gElectricPuffSpriteTemplate 0x2 0x3 0x0 0x10 0x10 + delay 0x2 + launchtemplate gElectricPuffSpriteTemplate 0x2 0x3 0x0 0xfff0 0xfff0 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x0 0xE 0x0 0x0 + waitforvisualfinish end - -Move_ICE_BURN: + + +@@@@@@@@@@@@@@@@@@@@@@@ GEN 6 @@@@@@@@@@@@@@@@@@@@@@@ +Move_FLYING_PRESS:: + loadspritegfx ANIM_TAG_ROUND_SHADOW @fly/bounce + loadspritegfx ANIM_TAG_GRAY_SMOKE @smoke + setblends 0xF + playsewithpan SE_W019, SOUND_PAN_ATTACKER + launchtemplate gFlyBallUpSpriteTemplate 0x2 0x4 0x0 0x0 0xd 0x150 + waitforvisualfinish + delay 0xF + playsewithpan SE_W207, SOUND_PAN_TARGET + launchtemplate gBounceBallLandSpriteTemplate 0x83 0x0 + delay 0x2 + launchtask AnimTask_SquishTarget 0x2 0x0 + delay 0x5 + playsewithpan SE_W025B, SOUND_PAN_TARGET + launchtemplate gOctazookaSmokeSpriteTemplate 0x80 0x4 0x8 0x8 0x1 0x0 + delay 0x2 + launchtemplate gOctazookaSmokeSpriteTemplate 0x80 0x4 0xfff8 0xfff8 0x1 0x0 + delay 0x2 + launchtemplate gOctazookaSmokeSpriteTemplate 0x80 0x4 0x8 0xfff8 0x1 0x0 + delay 0x2 + launchtemplate gOctazookaSmokeSpriteTemplate 0x80 0x4 0xfff8 0x8 0x1 0x0 + delay 0x2 + launchtemplate gOctazookaSmokeSpriteTemplate 0x80 0x4 0x8 0x8 0x1 0x0 + delay 0x2 + launchtemplate gOctazookaSmokeSpriteTemplate 0x80 0x4 0xfff8 0xfff8 0x1 0x0 + delay 0x2 + launchtemplate gOctazookaSmokeSpriteTemplate 0x80 0x4 0x8 0xfff8 0x1 0x0 + delay 0x2 + launchtemplate gOctazookaSmokeSpriteTemplate 0x80 0x4 0xfff8 0x8 0x1 0x0 + waitforvisualfinish + blendoff end - -Move_SNARL: + + +Move_MAT_BLOCK:: + loadspritegfx ANIM_TAG_CONVERSION + loadspritegfx ANIM_TAG_GREEN_LIGHT_WALL @green color + monbg SIDE_ATTACKER + monbgprio_28 ANIM_ATTACKER + setblends 0x10 + delay 0x0 + playsewithpan SE_W129, SOUND_PAN_ATTACKER + launchtemplate gMatBlockGreenConversionTemplate 0x2 0x2 0xfff8 0x18 + launchtemplate gMatBlockGreenConversionTemplate 0x2 0x2 0x8 0x18 + delay 0x3 + playsewithpan SE_W129, SOUND_PAN_ATTACKER + launchtemplate gMatBlockGreenConversionTemplate 0x2 0x2 0xfff8 0x8 + launchtemplate gMatBlockGreenConversionTemplate 0x2 0x2 0x8 0x8 + delay 0x3 + playsewithpan SE_W129, SOUND_PAN_ATTACKER + launchtemplate gMatBlockGreenConversionTemplate 0x2 0x2 0xfff8 0xfff8 + launchtemplate gMatBlockGreenConversionTemplate 0x2 0x2 0x8 0xfff8 + delay 0x3 + playsewithpan SE_W129, SOUND_PAN_ATTACKER + launchtemplate gMatBlockGreenConversionTemplate 0x2 0x2 0xfff8 0xffe8 + launchtemplate gMatBlockGreenConversionTemplate 0x2 0x2 0x8 0xffe8 + delay 0x14 + launchtask AnimTask_ConversionAlphaBlend 0x5 0x0 + waitforvisualfinish + delay 0x1 + clearmonbg SIDE_ATTACKER + blendoff end - -Move_ICICLE_CRASH: + + +Move_BELCH:: + loadspritegfx ANIM_TAG_BERRY_NORMAL + loadspritegfx ANIM_TAG_EXPLOSION @Explosion + monbg ANIM_TARGET + monbgprio_28 ANIM_TARGET + setalpha 12, 8 + playsewithpan SE_SEIKAI, SOUND_PAN_ATTACKER + launchtemplate gBelchBerryTemplate 0x2 0x6 0x14 0xfff8 0xfff8 0xfff8 0x14 0xffe0 + delay 0x13 + launchtask AnimTask_ShakeMonInPlace 0x2 0x5 0x1 0xa 0x0 0x14 0x1 + playsewithpan SE_W120, SOUND_PAN_TARGET + launchtemplate gExplosionSpriteTemplate 0x3 0x4 0x0 0x0 0x1 0x1 + delay 0x6 + playsewithpan SE_W120, SOUND_PAN_TARGET + launchtemplate gExplosionSpriteTemplate 0x3 0x4 0x18 0xffe8 0x1 0x1 + delay 0x6 + playsewithpan SE_W120, SOUND_PAN_TARGET + launchtemplate gExplosionSpriteTemplate 0x3 0x4 0xfff0 0x10 0x1 0x1 + delay 0x6 + playsewithpan SE_W120, SOUND_PAN_TARGET + launchtemplate gExplosionSpriteTemplate 0x3 0x4 0xffe8 0xfff4 0x1 0x1 + delay 0x6 + playsewithpan SE_W120, SOUND_PAN_TARGET + launchtemplate gExplosionSpriteTemplate 0x3 0x4 0x10 0x10 0x1 0x1 + delay 0x6 + playsewithpan SE_W120, SOUND_PAN_TARGET + launchtemplate gExplosionSpriteTemplate 0x3 0x4 0xffe8 0x18 0x1 0x1 + waitforvisualfinish + clearmonbg ANIM_TARGET + blendoff end - -Move_V_CREATE: - end - -Move_FUSION_FLARE: - end - -Move_FUSION_BOLT: - end - -Move_FLYING_PRESS: - end - -Move_MAT_BLOCK: - end - -Move_BELCH: - end - -Move_ROTOTILLER: + + +Move_ROTOTILLER:: + loadspritegfx ANIM_TAG_MUD_SAND + loadspritegfx ANIM_TAG_DIRT_MOUND + loadspritegfx ANIM_TAG_GREEN_SPARKLE + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0x10 0x112C + waitforvisualfinish + launchtemplate gDirtMoundSpriteTemplate 0x1 0x3 0x0 0x0 0xb4 + launchtemplate gDirtMoundSpriteTemplate 0x1 0x3 0x0 0x1 0xb4 + launchtask AnimTask_TranslateMonEllipticalRespectSide 0x2 0x5 0x0 0x6 0x4 0x2 0x4 + call DigThrowDirt + call DigThrowDirt + launchtask AnimTask_TranslateMonEllipticalRespectSide 0x2 0x5 0x0 0x6 0x4 0x2 0x4 + call DigThrowDirt + call DigThrowDirt + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x10 0x0 0x112C + waitforvisualfinish end + Move_STICKY_WEB: loadspritegfx ANIM_TAG_SPIDER_WEB @@ -5641,16 +8117,141 @@ ParabolicChargeDouble: goto ParabolicChargeHeal; Move_FORESTS_CURSE: + loadspritegfx ANIM_TAG_ROOTS @frenzy plant + loadspritegfx ANIM_TAG_GHOSTLY_SPIRIT @curse + monbg ANIM_ATTACKER + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0x10 0x0 + waitforvisualfinish + playsewithpan SE_W010, SOUND_PAN_ATTACKER + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_DEF 0x2 0x0 0x8 0x02E3 + launchtemplate gForestsCurseIngrainTemplate 0x42 0x7 0x64 0x64 0x8 0x1 0x14 0x28 0x0 + launchtemplate gForestsCurseIngrainTemplate 0x42 0x7 0x14 0x64 0x10 0x2 0xa 0x23 0x1 + launchtemplate gForestsCurseIngrainTemplate 0x42 0x7 0xc8 0x50 0x8 0x1 0x28 0x14 0x0 + launchtemplate gForestsCurseIngrainTemplate 0x42 0x7 0x50 0x3c 0xa 0x3 0x14 0x32 0x0 + launchtemplate gForestsCurseIngrainTemplate 0x42 0x7 0x8c 0x64 0x10 0x1 0x14 0x1e 0x1 + waitforvisualfinish + playsewithpan SE_W010, SOUND_PAN_ATTACKER + launchtemplate gForestsCurseIngrainTemplate 0x42 0x7 0x64 0x64 0x8 0x1 0x14 0x28 0x0 + launchtemplate gForestsCurseIngrainTemplate 0x42 0x7 0x14 0x64 0x10 0x2 0xa 0x23 0x1 + launchtemplate gForestsCurseIngrainTemplate 0x42 0x7 0xc8 0x50 0x8 0x1 0x28 0x14 0x0 + launchtemplate gForestsCurseIngrainTemplate 0x42 0x7 0x50 0x3c 0xa 0x3 0x14 0x32 0x0 + launchtemplate gForestsCurseIngrainTemplate 0x42 0x7 0x8c 0x64 0x10 0x1 0x14 0x1e 0x1 + waitforvisualfinish + playsewithpan SE_W010, SOUND_PAN_ATTACKER + launchtemplate gForestsCurseIngrainTemplate 0x42 0x7 0x64 0x64 0x8 0x1 0x14 0x28 0x0 + launchtemplate gForestsCurseIngrainTemplate 0x42 0x7 0x14 0x64 0x10 0x2 0xa 0x23 0x1 + launchtemplate gForestsCurseIngrainTemplate 0x42 0x7 0xc8 0x50 0x8 0x1 0x28 0x14 0x0 + launchtemplate gForestsCurseIngrainTemplate 0x42 0x7 0x50 0x3c 0xa 0x3 0x14 0x32 0x0 + launchtemplate gForestsCurseIngrainTemplate 0x42 0x7 0x8c 0x64 0x10 0x1 0x14 0x1e 0x1 + waitforvisualfinish + launchtemplate gCurseGhostSpriteTemplate 0x82 0x0 + launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x2 0x0 0xe 0x1 + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_DEF 0x2 0x8 0x0 0x02E3 + delay 0x3 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x10 0x0 0x0 + waitforvisualfinish + clearmonbg ANIM_ATTACKER end - -Move_PETAL_BLIZZARD: + + +Move_PETAL_BLIZZARD:: + loadspritegfx ANIM_TAG_LEAF + loadspritegfx ANIM_TAG_IMPACT + loadspritegfx ANIM_TAG_FLOWER + monbg 0x3 + monbgprio_28 0x1 + playsewithpan SE_W239, SOUND_PAN_TARGET + createsprite gTwisterLeafSpriteTemplate, ANIM_TARGET, 2, 120, 70, 5, 70, 30 + delay 0x1 + createsprite gTwisterLeafSpriteTemplate, ANIM_TARGET, 2, 0x73, 0x37, 0x6, 0x3c, 0x19 + delay 0x1 + createsprite gTwisterLeafSpriteTemplate, ANIM_TARGET, 2, 0x73, 0x3c, 0x7, 0x3c, 0x1e + launchtemplate gPetalBlizzardTwister1Template 0x82 0x5 0x73 0x37 0xA 0x3c 0x1e + delay 0x3 + launchtemplate gPetalBlizzardTwister1Template 0x82 0x5 0x64 0x32 0x4 0x32 0x1A + delay 0x1 + launchtemplate gPetalBlizzardTwister1Template 0x82 0x5 0x69 0x19 0x8 0x3c 0x14 + delay 0x1 + launchtemplate gPetalBlizzardTwister1Template 0x82 0x5 0x73 0x28 0xA 0x30 0x1E + delay 0x3 + launchtemplate gPetalBlizzardTwister1Template 0x82 0x5 0x78 0x1E 0x6 0x2d 0x19 + createsprite gTwisterLeafSpriteTemplate, ANIM_TARGET, 2, 0x73, 0x23, 0xA, 0x3c, 0x1e + delay 0x3 + launchtemplate gPetalBlizzardTwister2Template 0x82 0x5 0x69 0x14 0x8 0x28 0x0 + delay 0x3 + createsprite gTwisterLeafSpriteTemplate, ANIM_TARGET, 2, 0x14, 0xff, 0xf, 0x20, 0x0 + createsprite gTwisterLeafSpriteTemplate, ANIM_TARGET, 2, 0x6e, 0xA, 0x8, 0x20, 0x14 + waitforvisualfinish + launchtemplate gBasicHitSplatSpriteTemplate 0x83 0x4 0xffe0 0xfff0 0x1 0x3 + playsewithpan SE_W004, SOUND_PAN_TARGET + launchtask AnimTask_ShakeMonInPlace 0x2 0x5 ANIM_TARGET 0x3 0x0 0xC 0x1 + launchtask AnimTask_ShakeMonInPlace 0x2 0x5 ANIM_DEF_PARTNER 0x3 0x0 0xC 0x1 + launchtask AnimTask_ShakeMonInPlace 0x2 0x5 ANIM_ATK_PARTNER 0x3 0x0 0xC 0x1 + delay 0x4 + launchtemplate gRandomPosHitSplatSpriteTemplate 0x83 0x2 0x1 0x3 + playsewithpan SE_W004, SOUND_PAN_TARGET + delay 0x4 + launchtemplate gRandomPosHitSplatSpriteTemplate 0x83 0x2 0x1 0x3 + playsewithpan SE_W004, SOUND_PAN_TARGET + delay 0x4 + launchtemplate gBasicHitSplatSpriteTemplate 0x83 0x4 0x20 0x14 0x1 0x3 + playsewithpan SE_W004, SOUND_PAN_TARGET + waitforvisualfinish + clearmonbg 0x3 + blendoff end - -Move_FREEZE_DRY: + + +Move_FREEZE_DRY:: + monbg SIDE_TARGET + loadspritegfx ANIM_TAG_ICE_CRYSTALS + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0x7 0x0 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_DEF 0x2 0x0 0x9 0x7f4c + delay 0x14 + playsewithpan SE_W081, SOUND_PAN_TARGET + launchtemplate gIceCrystalSpiralInwardSmall 0x2 0x1 0x0 + launchtemplate gIceCrystalSpiralInwardSmall 0x2 0x1 0x40 + launchtemplate gIceCrystalSpiralInwardSmall 0x2 0x1 0x80 + launchtemplate gIceCrystalSpiralInwardSmall 0x2 0x1 SOUND_PAN_ATTACKER + delay 0x5 + launchtemplate gIceCrystalSpiralInwardLarge 0x2 0x1 0x20 + launchtemplate gIceCrystalSpiralInwardLarge 0x2 0x1 0x60 + launchtemplate gIceCrystalSpiralInwardLarge 0x2 0x1 0xa0 + launchtemplate gIceCrystalSpiralInwardLarge 0x2 0x1 0xe0 + waitforvisualfinish + call IceCrystalEffectShort + delay 0x5 + playsewithpan SE_W172, 0x0 + loadspritegfx ANIM_TAG_ICE_CUBE + monbgprio_28 ANIM_TARGET + launchtask AnimTask_FrozenIceCube 0x2 0x0 + waitplaysewithpan SE_RG_CARD1 SOUND_PAN_TARGET 0x11 + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_DEF 0x2 0x9 0x0 0x7f4c + clearmonbg SIDE_TARGET + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x0 0x7 0x0 0x0 + waitforvisualfinish + blendoff end - -Move_DISARMING_VOICE: + + +Move_DISARMING_VOICE:: + loadspritegfx ANIM_TAG_NOISE_LINE + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0x8 0x6e7d + waitforvisualfinish + launchtask SoundTask_PlayDoubleCry 0x2 0x2 0x0 0xff + call RoarEffect + delay 0xA + launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x1 0x0 0x1A 0x1 + launchtask AnimTask_ShakeMon2 0x2 0x5 0x3 0x1 0x0 0x1A 0x1 + waitforvisualfinish + launchtask SoundTask_WaitForCry 0x5 0x0 + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x8 0x0 0x6e7d + waitforvisualfinish end + Move_PARTING_SHOT: loadspritegfx ANIM_TAG_NOISE_LINE @@ -5717,26 +8318,305 @@ Move_DRAINING_KISS: waitforvisualfinish end -Move_CRAFTY_SHIELD: +Move_CRAFTY_SHIELD:: + loadspritegfx ANIM_TAG_CRAFTY_SHIELD + monbg SIDE_ATTACKER + monbgprio_28 ANIM_ATTACKER + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0x5 0x4DBF + setblends 0x10 + delay 0x0 + playsewithpan SE_W129, SOUND_PAN_ATTACKER + launchtemplate gCraftyShieldPinkConversionTemplate 0x2 0x2 0xffe8 0xffe8 + delay 0x3 + launchtemplate gCraftyShieldPinkConversionTemplate 0x2 0x2 0xfff8 0xffe8 + delay 0x3 + launchtemplate gCraftyShieldPinkConversionTemplate 0x2 0x2 0x8 0xffe8 + delay 0x3 + launchtemplate gCraftyShieldPinkConversionTemplate 0x2 0x2 0x18 0xffe8 + delay 0x3 + playsewithpan SE_W129, SOUND_PAN_ATTACKER + launchtemplate gCraftyShieldPinkConversionTemplate 0x2 0x2 0xffe8 0xfff8 + delay 0x3 + launchtemplate gCraftyShieldPinkConversionTemplate 0x2 0x2 0xfff8 0xfff8 + delay 0x3 + launchtemplate gCraftyShieldPinkConversionTemplate 0x2 0x2 0x8 0xfff8 + delay 0x3 + launchtemplate gCraftyShieldPinkConversionTemplate 0x2 0x2 0x18 0xfff8 + delay 0x3 + playsewithpan SE_W129, SOUND_PAN_ATTACKER + launchtemplate gCraftyShieldPinkConversionTemplate 0x2 0x2 0xffe8 0x8 + delay 0x3 + launchtemplate gCraftyShieldPinkConversionTemplate 0x2 0x2 0xfff8 0x8 + delay 0x3 + launchtemplate gCraftyShieldPinkConversionTemplate 0x2 0x2 0x8 0x8 + delay 0x3 + launchtemplate gCraftyShieldPinkConversionTemplate 0x2 0x2 0x18 0x8 + delay 0x3 + playsewithpan SE_W129, SOUND_PAN_ATTACKER + launchtemplate gCraftyShieldPinkConversionTemplate 0x2 0x2 0xffe8 0x18 + delay 0x3 + launchtemplate gCraftyShieldPinkConversionTemplate 0x2 0x2 0xfff8 0x18 + delay 0x3 + launchtemplate gCraftyShieldPinkConversionTemplate 0x2 0x2 0x8 0x18 + delay 0x3 + launchtemplate gCraftyShieldPinkConversionTemplate 0x2 0x2 0x18 0x18 + delay 0x14 + playsewithpan SE_W112, SOUND_PAN_ATTACKER + launchtask AnimTask_FlashAnimTagWithColor 0x2 0x7 0x2722 0x1 0x1 0x37ff 0xc 0x0 0x0 + delay 0x6 + launchtask AnimTask_ConversionAlphaBlend 0x5 0x0 + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x5 0x0 0x4DBF + waitforvisualfinish + delay 0x1 + clearmonbg SIDE_ATTACKER + blendoff + end + + +Move_FLOWER_SHIELD:: + loadspritegfx ANIM_TAG_FLOWER + loadspritegfx ANIM_TAG_IMPACT + setalpha 12, 8 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0x8 0x6e7d + waitforvisualfinish + playsewithpan SE_W080, SOUND_PAN_ATTACKER + launchtemplate gPetalDanceBigFlowerSpriteTemplate 0x2 0x4 0x0 0xffe8 0x8 0x8c + launchtemplate gPetalDanceSmallFlowerSpriteTemplate 0x2 0x4 0x10 0xffe8 0x8 0x64 + launchtemplate gPetalDanceSmallFlowerSpriteTemplate 0x2 0x4 0xfff0 0xffe8 0x8 0x64 + delay 0xf + launchtemplate gPetalDanceBigFlowerSpriteTemplate 0x2 0x4 0x0 0xffe8 0x8 0x8c + launchtemplate gPetalDanceSmallFlowerSpriteTemplate 0x2 0x4 0x20 0xffe8 0x8 0x64 + launchtemplate gPetalDanceSmallFlowerSpriteTemplate 0x2 0x4 0xffe0 0xffe8 0x8 0x64 + delay 0xf + launchtemplate gPetalDanceBigFlowerSpriteTemplate 0x2 0x4 0x0 0xffe8 0x8 0x8c + launchtemplate gPetalDanceSmallFlowerSpriteTemplate 0x2 0x4 0x18 0xffe8 0x8 0x64 + launchtemplate gPetalDanceSmallFlowerSpriteTemplate 0x2 0x4 0xffe8 0xffe8 0x8 0x64 + delay 0x1e + launchtemplate gPetalDanceSmallFlowerSpriteTemplate 0x2 0x4 0x10 0xffe8 0x0 0x64 + launchtemplate gPetalDanceSmallFlowerSpriteTemplate 0x2 0x4 0xfff0 0xffe8 0x0 0x64 + delay 0x1e + launchtemplate gPetalDanceSmallFlowerSpriteTemplate 0x2 0x4 0x14 0xfff0 0xe 0x50 + launchtemplate gPetalDanceSmallFlowerSpriteTemplate 0x2 0x4 0xffec 0xfff2 0x10 0x50 + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x8 0x0 0x6e7d + waitforvisualfinish + blendoff + end + + +Move_GRASSY_TERRAIN:: + loadspritegfx ANIM_TAG_ORBS @Recover Ball + loadspritegfx ANIM_TAG_GREEN_SPARKLE @Green Star + playsewithpan SE_W036, SOUND_PAN_ATTACKER + launchtemplate gGrassyTerrainOrbsTemplate 0x2 0x2 0x1a 0x0 + launchtemplate gGrassyTerrainOrbsTemplate 0x2 0x2 0x1a 0x2a + launchtemplate gGrassyTerrainOrbsTemplate 0x2 0x2 0x1a 0x54 + launchtemplate gGrassyTerrainOrbsTemplate 0x2 0x2 0x1a 0x7e + launchtemplate gGrassyTerrainOrbsTemplate 0x2 0x2 0x1a 0xa8 + launchtemplate gGrassyTerrainOrbsTemplate 0x2 0x2 0x1a 0xd2 + delay 0x34 + setarg 0x7 0xffff + playsewithpan SE_W215, SOUND_PAN_ATTACKER + launchtask AnimTask_ScaleMonAndRestore 0x5 0x5 0xfff9 0xfff9 0xb 0x0 0x0 + launchtemplate gGrassyTerrainStarTemplate 0x82 0x1 0x0 + launchtemplate gGrassyTerrainStarTemplate 0x82 0x1 0x20 + launchtemplate gGrassyTerrainStarTemplate 0x82 0x1 0x40 + launchtemplate gGrassyTerrainStarTemplate 0x82 0x1 0x60 + launchtemplate gGrassyTerrainStarTemplate 0x82 0x1 0x80 + launchtemplate gGrassyTerrainStarTemplate 0x82 0x1 0xa0 + launchtemplate gGrassyTerrainStarTemplate 0x82 0x1 SOUND_PAN_ATTACKER + launchtemplate gGrassyTerrainStarTemplate 0x82 0x1 0xe0 + waitforvisualfinish + restorebg + waitbgfadein + panse_26 SE_W080, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x1, 0x0 + waitsound end -Move_FLOWER_SHIELD: +Move_MISTY_TERRAIN:: + loadspritegfx ANIM_TAG_ORBS @Recover Ball + loadspritegfx ANIM_TAG_GREEN_SPARKLE @Green Star + loadspritegfx ANIM_TAG_WATER_GUN @Light Blue Colour + playsewithpan SE_W215, SOUND_PAN_ATTACKER + launchtemplate gMistyTerrainOrbsTemplate 0x2 0x2 0x1a 0x0 + launchtemplate gMistyTerrainOrbsTemplate 0x2 0x2 0x1a 0x2a + launchtemplate gMistyTerrainOrbsTemplate 0x2 0x2 0x1a 0x54 + launchtemplate gMistyTerrainOrbsTemplate 0x2 0x2 0x1a 0x7e + launchtemplate gMistyTerrainOrbsTemplate 0x2 0x2 0x1a 0xa8 + launchtemplate gMistyTerrainOrbsTemplate 0x2 0x2 0x1a 0xd2 + delay 0x34 + setarg 0x7 0xffff + playsewithpan SE_W213, SOUND_PAN_ATTACKER + launchtask AnimTask_ScaleMonAndRestore 0x5 0x5 0xfff9 0xfff9 0xb 0x0 0x0 + launchtemplate gMistyTerrainStarTemplate 0x82 0x1 0x0 + launchtemplate gMistyTerrainStarTemplate 0x82 0x1 0x20 + launchtemplate gMistyTerrainStarTemplate 0x82 0x1 0x40 + launchtemplate gMistyTerrainStarTemplate 0x82 0x1 0x60 + launchtemplate gMistyTerrainStarTemplate 0x82 0x1 0x80 + launchtemplate gMistyTerrainStarTemplate 0x82 0x1 0xa0 + launchtemplate gMistyTerrainStarTemplate 0x82 0x1 SOUND_PAN_ATTACKER + launchtemplate gMistyTerrainStarTemplate 0x82 0x1 0xe0 + waitforvisualfinish + restorebg + waitbgfadein + playsewithpan SE_W322, SOUND_PAN_ATTACKER + delay 0x40 end + + +Move_ELECTRIFY:: + loadspritegfx ANIM_TAG_GUARD_RING @ring around user + loadspritegfx ANIM_TAG_SPARK_2 @yellow color + loadspritegfx ANIM_TAG_SMALL_EMBER @yellow color + loadspritegfx ANIM_TAG_SPARK @electric travel + loadspritegfx ANIM_TAG_THIN_RING @ring + monbg ANIM_ATTACKER + loopsewithpan SE_W085B, SOUND_PAN_TARGET 0xa 0x4 + launchtemplate gElectrifyRingTemplate 0x2 0x0 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x20 0x18 0xbe 0xc 0x0 0x1 0x0 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x50 0x18 0x16 0xc 0x0 0x1 0x0 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x9c 0x18 0x79 0xd 0x0 0x1 0x1 + delay 0x4 + launchtemplate gElectrifyRingTemplate 0x2 0x0 + delay 0x4 + launchtemplate gElectrifyRingTemplate 0x2 0x0 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x64 0x18 0x3c 0xa 0x0 0x1 0x0 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0xaa 0x18 0x2a 0xb 0x0 0x1 0x1 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0xee 0x18 0xa5 0xa 0x0 0x1 0x1 + waitforvisualfinish + playsewithpan SE_W086, SOUND_PAN_ATTACKER + launchtemplate gZapCannonSparkSpriteTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x0 0x28 0x0 + launchtemplate gZapCannonSparkSpriteTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x40 0x28 0x1 + launchtemplate gZapCannonSparkSpriteTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x80 0x28 0x0 + launchtemplate gZapCannonSparkSpriteTemplate 0x84 0x7 0xa 0x0 0x10 0x1e SOUND_PAN_ATTACKER 0x28 0x2 + launchtemplate gZapCannonSparkSpriteTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0x20 0x28 0x0 + launchtemplate gZapCannonSparkSpriteTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0x60 0x28 0x1 + launchtemplate gZapCannonSparkSpriteTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0xa0 0x28 0x0 + launchtemplate gZapCannonSparkSpriteTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0xe0 0x28 0x2 + delay 0xA + launchtask AnimTask_BlendBattleAnimPal 0xA 0x5 PAL_DEF 0x2 0x0 0xB 0x039B + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0x3 0x039B + delay 0x4 + clearmonbg ANIM_ATTACKER + delay 0x1 + monbg SIDE_TARGET + playsewithpan SE_W085B, SOUND_PAN_TARGET + launchtemplate gElectrifyYellowRingTemplate 0x3 0x6 0x0 0x0 0x1 0x0 0x1f 0x8 + launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_TARGET 0x4 0x0 0x6 0x1 + launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0x5 0x0 0x5 0x0 + delay 0x1 + launchtemplate gElectrifyYellowRingTemplate 0x3 0x6 0x0 0x0 0x1 0x0 0x1f 0x8 + delay 0x1 + launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0xfffb 0xa 0x5 0x1 + launchtemplate gElectrifyYellowRingTemplate 0x3 0x6 0x0 0x0 0x1 0x0 0x1f 0x8 + delay 0x1 + launchtemplate gElectrifyYellowRingTemplate 0x3 0x6 0x0 0x0 0x1 0x0 0x1f 0x8 + delay 0x1 + launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0xf 0x14 0x5 0x2 + launchtemplate gElectrifyYellowRingTemplate 0x3 0x6 0x0 0x0 0x1 0x0 0x1f 0x8 + delay 0x2 + launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0xfff1 0xfff6 0x5 0x0 + delay 0x2 + launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0x19 0x0 0x5 0x1 + delay 0x2 + launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0xfff8 0x8 0x5 0x2 + delay 0x2 + launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0x2 0xfff8 0x5 0x0 + delay 0x2 + launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0xffec 0xf 0x5 0x1 + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xA 0x5 PAL_DEF 0x2 0xB 0x0 0x039B + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x3 0x0 0x039B + waitforvisualfinish + clearmonbg SIDE_TARGET + end + -Move_GRASSY_TERRAIN: +Move_PLAY_ROUGH:: + loadspritegfx ANIM_TAG_IMPACT + loadspritegfx ANIM_TAG_PINK_HEART + loadspritegfx ANIM_TAG_DUCK + monbg 0x3 + setalpha 12, 8 + playsewithpan SE_W152, SOUND_PAN_ATTACKER + waitplaysewithpan SE_W053, SOUND_PAN_TARGET, 0xa + waitplaysewithpan SE_W152, SOUND_PAN_ATTACKER, 0x14 + waitplaysewithpan SE_W053, SOUND_PAN_TARGET, 0x1e + waitplaysewithpan SE_W152, SOUND_PAN_ATTACKER, 0x28 + waitplaysewithpan SE_W053, SOUND_PAN_TARGET, 0x32 + waitplaysewithpan SE_W152, SOUND_PAN_ATTACKER, 0x3c + waitplaysewithpan SE_W053, SOUND_PAN_TARGET, 0x46 + waitplaysewithpan SE_W152, SOUND_PAN_ATTACKER, 0x50 + waitplaysewithpan SE_W053, SOUND_PAN_TARGET, 0x5a + launchtask AnimTask_TranslateMonElliptical 0x2 0x5 0x0 0xffee 0x6 0x6 0x4 + launchtask AnimTask_TranslateMonElliptical 0x2 0x5 0x1 0x12 0x6 0x6 0x4 + launchtemplate gPinkHeartSpriteTemplate 0x83 0x2 0xff00 0xffd6 + launchtemplate gPinkHeartSpriteTemplate 0x83 0x2 0x80 0xfff2 + launchtemplate gPinkHeartSpriteTemplate 0x83 0x2 0x1a0 0xffda + launchtemplate gPinkHeartSpriteTemplate 0x83 0x2 0xff80 0xffea + delay 0x0 + call SubmissionHit + playsewithpan SE_W053, SOUND_PAN_TARGET + launchtemplate gDizzyPunchDuckSpriteTemplate 0x83 0x4 0x10 0x8 0xa0 0xffe0 + launchtemplate gDizzyPunchDuckSpriteTemplate 0x83 0x4 0x10 0x8 0xff00 0xffd8 + launchtemplate gDizzyPunchDuckSpriteTemplate 0x83 0x4 0x10 0x8 0x80 0xfff0 + launchtemplate gDizzyPunchDuckSpriteTemplate 0x83 0x4 0x10 0x8 0x1a0 0xffda + launchtemplate gDizzyPunchDuckSpriteTemplate 0x83 0x4 0x10 0x8 0xff80 0xffea + launchtemplate gDizzyPunchDuckSpriteTemplate 0x83 0x4 0x10 0x8 0xfe80 0xffe1 + delay 0x0 + call SubmissionHit + playsewithpan SE_W291, SOUND_PAN_TARGET + launchtemplate gPinkHeartSpriteTemplate 0x83 0x2 0xff00 0xffd6 + launchtemplate gPinkHeartSpriteTemplate 0x83 0x2 0x80 0xfff2 + launchtemplate gPinkHeartSpriteTemplate 0x83 0x2 0x1a0 0xffda + launchtemplate gPinkHeartSpriteTemplate 0x83 0x2 0xff80 0xffea + delay 0x0 + playsewithpan SE_W053, SOUND_PAN_TARGET + launchtemplate gDizzyPunchDuckSpriteTemplate 0x83 0x4 0x10 0x8 0xa0 0xffe0 + launchtemplate gDizzyPunchDuckSpriteTemplate 0x83 0x4 0x10 0x8 0xff00 0xffd8 + launchtemplate gDizzyPunchDuckSpriteTemplate 0x83 0x4 0x10 0x8 0x80 0xfff0 + launchtemplate gDizzyPunchDuckSpriteTemplate 0x83 0x4 0x10 0x8 0x1a0 0xffda + launchtemplate gDizzyPunchDuckSpriteTemplate 0x83 0x4 0x10 0x8 0xff80 0xffea + launchtemplate gDizzyPunchDuckSpriteTemplate 0x83 0x4 0x10 0x8 0xfe80 0xffe1 + delay 0x0 + call SubmissionHit + waitforvisualfinish + delay 0xD + stopsound + clearmonbg 0x3 + blendoff + waitforvisualfinish end - -Move_MISTY_TERRAIN: - end - -Move_ELECTRIFY: - end - -Move_PLAY_ROUGH: - end - -Move_FAIRY_WIND: + + +Move_FAIRY_WIND:: + loadspritegfx ANIM_TAG_PINK_CLOUD + monbg SIDE_TARGET + setalpha 12, 8 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0x8 0x6e7d + waitforvisualfinish + playsewithpan SE_W016, SOUND_PAN_TARGET + launchtemplate gFairyWindCloudTemplate 0x83 0x7 0x14 0xfff6 0x14 0x0 0x16 0x14 0x1 + delay 0x5 + launchtemplate gFairyWindCloudTemplate 0x83 0x7 0x14 0xfff6 0x14 0x5 0x16 0xffee 0x1 + delay 0x5 + launchtemplate gFairyWindCloudTemplate 0x83 0x7 0x14 0xfff6 0x14 0xfff6 0x16 0xf 0x1 + launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x2 0x0 0x12 0x1 + delay 0x5 + launchtemplate gFairyWindCloudTemplate 0x83 0x7 0x14 0xfff6 0x14 0x0 0x16 0xffec 0x1 + delay 0x5 + launchtemplate gFairyWindCloudTemplate 0x83 0x7 0x14 0xfff6 0x14 0x0 0x16 0xc 0x1 + delay 0x5 + waitforvisualfinish + stopsound + playsewithpan SE_W016B, SOUND_PAN_TARGET + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x8 0x0 0x6e7d + waitforvisualfinish + clearmonbg SIDE_TARGET + blendoff end + Move_MOONBLAST: loadspritegfx ANIM_TAG_SMALL_BUBBLES @@ -5791,78 +8671,857 @@ Move_BOOMBURST: waitforvisualfinish end -Move_FAIRY_LOCK: +Move_FAIRY_LOCK:: + loadspritegfx ANIM_TAG_CHAIN_LINK @Chain Colour + loadspritegfx ANIM_TAG_FAIRY_LOCK_CHAINS @Fairy Lock Chain + setalpha 8, 8 + monbg SIDE_ATTACKER + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0x8 0x6B1F + waitforvisualfinish + loopsewithpan SE_W010, SOUND_PAN_TARGET, 0x6, 0x4 + launchtask AnimTask_VoltTackleBolt 0x5 0x1 0x7 + launchtask AnimTask_VoltTackleBolt 0x5 0x1 0x33 + launchtask AnimTask_VoltTackleBolt 0x5 0x1 0x2 + waitforvisualfinish + launchtask AnimTask_VoltTackleBolt 0x5 0x1 0x32 + launchtask AnimTask_VoltTackleBolt 0x5 0x1 0x6 + launchtask AnimTask_VoltTackleBolt 0x5 0x1 0x35 + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x8 0x0 0x6B1F + waitforvisualfinish + clearmonbg SIDE_ATTACKER + blendoff end + -Move_KINGS_SHIELD: +Move_KINGS_SHIELD:: + loadspritegfx ANIM_TAG_PROTECT @protect + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_PROTECT, 0x0, 0xC, 0xC, 0x318C @Gray goto Move_PROTECT - -Move_PLAY_NICE: + + +Move_PLAY_NICE:: + loadspritegfx ANIM_TAG_RED_HEART + loopsewithpan SE_W201, SOUND_PAN_ATTACKER, 0xc, 0x3 + launchtask AnimTask_SwayMon 0x5 0x5 0x0 0xc 0x1000 0x4 0x0 + delay 0xF + launchtemplate gRedHeartProjectileSpriteTemplate 0x83 0x2 0x14 0xfff8 end -Move_CONFIDE: +Move_CONFIDE:: + loadspritegfx ANIM_TAG_CONFIDE @Confide Bubble + launchtask AnimTask_Splash 0x2 0x2 ANIM_ATTACKER 0x3 + launchtemplate gConfideBubbleTemplate 0xb 0x2 0x0 0x64 + playsewithpan SE_W118, SOUND_PAN_ATTACKER + waitforvisualfinish + end + + +Move_DIAMOND_STORM:: + loadspritegfx ANIM_TAG_IMPACT + loadspritegfx ANIM_TAG_ICE_CRYSTALS + monbg SIDE_TARGET + monbgprio_28 ANIM_TARGET + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0xF 0x1888 + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_ICE_CRYSTALS, 0, 0xD, 0xD, 0x7DDE @Pink + waitforvisualfinish + panse_1B SE_W059, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0 + launchtemplate gDiamondStormSwirlingIceTemplate 0x28 0x6 0x0 0xfff6 0x0 0xfff6 0x48 0x1 + launchtemplate gDiamondStormBlizzardTemplate 0x28 0x8 0x0 0x0 0x0 0x0 0x50 0x0 0x0 0x1 + delay 0x3 + launchtemplate gDiamondStormSwirlingIceTemplate 0x28 0x6 0x0 0xfff1 0x0 0xfff1 0x48 0x1 + launchtemplate gDiamondStormBlizzardTemplate 0x28 0x8 0x0 0xfff6 0x0 0xfff6 0x50 0x0 0x0 0x1 + delay 0x3 + launchtemplate gDiamondStormSwirlingIceTemplate 0x28 0x6 0x0 0xfffb 0x0 0xfffb 0x48 0x1 + launchtemplate gDiamondStormBlizzardTemplate 0x28 0x8 0x0 0xa 0x0 0xa 0x50 0x0 0x0 0x1 + delay 0x3 + launchtemplate gDiamondStormSwirlingIceTemplate 0x28 0x6 0x0 0xfff6 0x0 0xfff6 0x48 0x1 + launchtemplate gDiamondStormBlizzardTemplate 0x28 0x8 0x0 0xffec 0x0 0xffec 0x50 0x0 0x0 0x1 + delay 0x3 + launchtemplate gDiamondStormSwirlingIceTemplate 0x28 0x6 0x0 0xffec 0x0 0xffec 0x48 0x1 + launchtemplate gDiamondStormBlizzardTemplate 0x28 0x8 0x0 0xf 0x0 0xf 0x50 0x0 0x0 0x1 + delay 0x3 + launchtemplate gDiamondStormSwirlingIceTemplate 0x28 0x6 0x0 0xfff1 0x0 0xfff1 0x48 0x1 + launchtemplate gDiamondStormBlizzardTemplate 0x28 0x8 0x0 0xffec 0x0 0xffec 0x50 0x0 0x0 0x1 + delay 0x3 + launchtemplate gDiamondStormSwirlingIceTemplate 0x28 0x6 0x0 0xffe7 0x0 0xffe7 0x48 0x1 + launchtemplate gDiamondStormBlizzardTemplate 0x28 0x8 0x0 0x14 0x0 0x14 0x50 0x0 0x0 0x1 + delay 0x3 + playsewithpan SE_W239, SOUND_PAN_TARGET + launchtemplate gDiamondStormDiamondsTemplate 0x82 0x5 0x78 0x46 0x5 0x46 0x1e + delay 0x1 + launchtemplate gDiamondStormDiamondsTemplate 0x82 0x5 0x73 0x37 0x6 0x3c 0x19 + delay 0x1 + launchtemplate gDiamondStormDiamondsTemplate 0x82 0x5 0x73 0x3c 0x7 0x3c 0x1e + launchtemplate gDiamondStormDiamondsTemplate 0x82 0x5 0x73 0x37 0xa 0x3c 0x1e + delay 0x3 + launchtemplate gDiamondStormDiamondsTemplate 0x82 0x5 0x64 0x32 0x4 0x32 0x1a + delay 0x1 + launchtemplate gDiamondStormDiamondsTemplate 0x82 0x5 0x69 0x19 0x8 0x3c 0x14 + delay 0x1 + launchtemplate gDiamondStormDiamondsTemplate 0x82 0x5 0x73 0x28 0xa 0x30 0x1e + delay 0x3 + launchtemplate gDiamondStormDiamondsTemplate 0x82 0x5 0x78 0x1e 0x6 0x2d 0x19 + launchtemplate gDiamondStormDiamondsTemplate 0x82 0x5 0x73 0x23 0xa 0x3c 0x1e + delay 0x3 + launchtemplate gDiamondStormDiamondsTemplate 0x82 0x5 0x69 0x14 0x8 0x28 0x0 + delay 0x3 + launchtemplate gDiamondStormDiamondsTemplate 0x82 0x5 0x14 0xff 0xf 0x20 0x0 + launchtemplate gDiamondStormDiamondsTemplate 0x82 0x5 0x6e 0xa 0x8 0x20 0x14 + waitforvisualfinish + @this is the buffet part + launchtemplate gBasicHitSplatSpriteTemplate 0x83 0x4 0xffe0 0xfff0 0x1 0x3 + playsewithpan SE_W196, SOUND_PAN_TARGET + launchtask AnimTask_ShakeMonInPlace 0x2 0x5 0x1 0x3 0x0 0xc 0x1 + launchtask AnimTask_ShakeMonInPlace 0x2 0x5 0x3 0x3 0x0 0xc 0x1 + delay 0x4 + launchtemplate gRandomPosHitSplatSpriteTemplate 0x83 0x2 0x1 0x3 + playsewithpan SE_W196, SOUND_PAN_TARGET + delay 0x4 + launchtemplate gRandomPosHitSplatSpriteTemplate 0x83 0x2 0x1 0x3 + playsewithpan SE_W196, SOUND_PAN_TARGET + delay 0x4 + launchtemplate gBasicHitSplatSpriteTemplate 0x83 0x4 0x20 0x14 0x1 0x3 + playsewithpan SE_W196, SOUND_PAN_TARGET + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0xF 0x0 0x1888 + waitforvisualfinish + clearmonbg SIDE_TARGET + blendoff + end + + +Move_STEAM_ERUPTION:: + loadspritegfx ANIM_TAG_STEAM_ERUPTION @Steam Eruption Particle + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0x7 0x043D + delay 0x20 + monbg SIDE_TARGET + monbgprio_28 ANIM_TARGET + panse_1B SE_W056, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0 + call SteamEruptionBreath + call SteamEruptionBreath + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_DEF 0x1 0x0 0x9 0x1f + call SteamEruptionBreath + delay 0x2 + launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x2 0x0 0x15 0x1 + call SteamEruptionBreath + call SteamEruptionBreath + call SteamEruptionBreath + call SteamEruptionBreath + call SteamEruptionBreath + call SteamEruptionBreath + call SteamEruptionBreath + call SteamEruptionBreath + call SteamEruptionBreath + call SteamEruptionBreath + call SteamEruptionBreath + call SteamEruptionBreath + call SteamEruptionBreath + call SteamEruptionBreath + call SteamEruptionBreath + call SteamEruptionBreath + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_DEF 0x1 0x9 0x0 0x1f + waitforvisualfinish + clearmonbg SIDE_TARGET + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x7 0x0 0x043D + waitforvisualfinish + end +SteamEruptionBreath: + launchtemplate gSteamEruptionBreathTemplate 0x82 0x5 0x0 0x5 0x0 0x5 0x14 + delay 0x1 + return + + +Move_HYPERSPACE_HOLE:: + loadspritegfx ANIM_TAG_IMPACT @Hits + loadspritegfx ANIM_TAG_WHITE_SHADOW @Destiny Bond + loadspritegfx ANIM_TAG_QUICK_GUARD_HAND @Black Colour + loadspritegfx ANIM_TAG_POISON_BUBBLE @Poison Colour + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0x10 0x7FFF + waitforvisualfinish + playsewithpan SE_W185, SOUND_PAN_ATTACKER + invisible ANIM_ATTACKER + delay 0x1 + visible ANIM_ATTACKER + delay 0x1 + invisible ANIM_ATTACKER + delay 0x1 + visible ANIM_ATTACKER + delay 0x1 + invisible ANIM_ATTACKER + waitsound + launchtask AnimTask_DestinyBondWhiteShadow 0x5 0x2 0x0 0x30 + delay 0x17 + launchtask AnimTask_IsTargetSameSide 0x2 0x0 + launchtask AnimTask_SnatchOpposingMonMove 0x2 0x0 + delay 0x19 + visible ANIM_ATTACKER + invisible ANIM_ATTACKER + delay 0x5 + launchtemplate gHyperspaceHoleImpactTemplate 0x82, 0x3, 0xfff6 0xfff6 0x0 + call HyperspaceHoleMovement + launchtemplate gHyperspaceHoleImpactTemplate 0x82, 0x3, 0xa 0x14 0x0 + call HyperspaceHoleMovement + launchtemplate gHyperspaceHoleImpactTemplate 0x82, 0x3, 0xfffb 0xa 0x0 + call HyperspaceHoleMovement + launchtemplate gHyperspaceHoleImpactTemplate 0x82, 0x3, 0x11 0xfff4 0x0 + call HyperspaceHoleMovement + waitforvisualfinish + visible ANIM_ATTACKER + delay 0x1 + invisible ANIM_ATTACKER + delay 0x1 + visible ANIM_ATTACKER + delay 0x1 + invisible ANIM_ATTACKER + delay 0x1 + visible ANIM_ATTACKER + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x10 0x0 0x7FFF + waitforvisualfinish + end +HyperspaceHoleMovement: + playsewithpan SE_W003, SOUND_PAN_TARGET + launchtask AnimTask_ShakeMon2 0x2 0x5 ANIM_TARGET 0x3 0x0 0xf 0x1 + delay 0x4 + return + + +Move_WATER_SHURIKEN:: + loadspritegfx ANIM_TAG_WATER_ORB @blue color + loadspritegfx ANIM_TAG_YELLOW_STAR @swift + loadspritegfx ANIM_TAG_BLUE_RING_2 @rings + loadspritegfx ANIM_TAG_SMALL_BUBBLES @bubbles + loadspritegfx ANIM_TAG_IMPACT @hydro pump hit + monbg SIDE_TARGET + monbgprio_28 ANIM_TARGET + createsoundtask SoundTask_LoopSEAdjustPanning, 0x7, 0x87, 0xffc0, SOUND_PAN_TARGET, 0x5, 0x5, 0x0, 0x5 + launchtemplate gWaterShurikenStarTemplate 0x82, 0x3, 0x0 0x0 0x27 + delay 0x8 + launchtemplate gWaterShurikenRingTemplate 0x82, 0x4, 0x0 0x0 0x28 0xf + delay 0x5 + launchtemplate gWaterShurikenRingTemplate 0x82, 0x4, 0x0 0x0 0x28 0xf + delay 0x5 + launchtemplate gWaterShurikenRingTemplate 0x82, 0x4, 0x0 0x0 0x28 0xf + delay 0xC + playsewithpan SE_W028, SOUND_PAN_TARGET + launchtemplate gWaterShurikenImpactTemplate 0x2 0x4 0x0 0x0 0x1 0x2 + waitforvisualfinish + clearmonbg SIDE_TARGET end -Move_DIAMOND_STORM: +Move_MYSTICAL_FIRE:: + call SetPsychicBackground + loadspritegfx ANIM_TAG_FIRE + setalpha 8, 8 + playse 0xb1 + launchtask AnimTask_ShakeMon2 0x2 0x5 0x0 0x1 0x0 0xa 0x1 + launchtask AnimTask_BlendColorCycle 0x2 0x6 0x2 0x0 0x2 0x0 0x8 0x7fff + waitforvisualfinish + waitsound + blendoff + launchtemplate gLargeFlameScatterSpriteTemplate 0x82 0x6 0x0 0x0 0x1e 0x1e 0xffff 0x0 + delay 0x1 + launchtemplate gLargeFlameScatterSpriteTemplate 0x82 0x6 0x0 0x0 0x1e 0x1e 0x0 0x1 + delay 0x1 + launchtemplate gLargeFlameScatterSpriteTemplate 0x82 0x6 0x0 0x0 0x1e 0x1e 0xffff 0xffff + delay 0x1 + launchtemplate gLargeFlameScatterSpriteTemplate 0x82 0x6 0x0 0x0 0x1e 0x1e 0x2 0x1 + delay 0x1 + launchtemplate gLargeFlameScatterSpriteTemplate 0x82 0x6 0x0 0x0 0x1e 0x1e 0x1 0xffff + delay 0x1 + launchtemplate gLargeFlameScatterSpriteTemplate 0x82 0x6 0x0 0x0 0x1e 0x1e 0xffff 0x1 + delay 0x1 + launchtemplate gLargeFlameScatterSpriteTemplate 0x82 0x6 0x0 0x0 0x1e 0x1e 0x1 0xfffe + delay 0x1 + launchtemplate gLargeFlameScatterSpriteTemplate 0x82 0x6 0x0 0x0 0x1e 0x1e 0x3 0x1 + playse 0x8c + waitforvisualfinish + call UnsetPsychicBg end - -Move_STEAM_ERUPTION: + + +Move_SPIKY_SHIELD:: + loadspritegfx ANIM_TAG_PROTECT + loadspritegfx ANIM_TAG_GREEN_SPIKE + monbg SIDE_ATTACKER + monbgprio_28 ANIM_ATTACKER + waitplaysewithpan SE_W115, SOUND_PAN_ATTACKER, 0x10 + launchtemplate gProtectSpriteTemplate 0x2 0x3 0x18 0x0 0x5a + delay 0xF + launchtemplate gNeedleArmSpikeSpriteTemplate 0x82 0x5 0x0 0x1 0x0 0xFFE0 0x10 + delay 0x2 + launchtemplate gNeedleArmSpikeSpriteTemplate 0x82 0x5 0x0 0x1 0x16 0xFFEA 0x10 + delay 0x2 + launchtemplate gNeedleArmSpikeSpriteTemplate 0x82 0x5 0x0 0x1 0x1E 0x0 0x10 + delay 0x2 + launchtemplate gNeedleArmSpikeSpriteTemplate 0x82 0x5 0x0 0x1 0x14 0x14 0x10 + delay 0x2 + launchtemplate gNeedleArmSpikeSpriteTemplate 0x82 0x5 0x0 0x1 0x0 0x1C 0x10 + delay 0x2 + launchtemplate gNeedleArmSpikeSpriteTemplate 0x82 0x5 0x0 0x1 0xFFED 0x13 0x10 + delay 0x2 + launchtemplate gNeedleArmSpikeSpriteTemplate 0x82 0x5 0x0 0x1 0xFFE5 0x0 0x10 + delay 0x2 + launchtemplate gNeedleArmSpikeSpriteTemplate 0x82 0x5 0x0 0x1 0xFFEE 0xFFEE 0x10 + delay 0x2 + launchtemplate gNeedleArmSpikeSpriteTemplate 0x82 0x5 0x0 0x1 0x0 0xFFE7 0x10 + delay 0x2 + launchtemplate gNeedleArmSpikeSpriteTemplate 0x82 0x5 0x0 0x1 0x11 0xFFEF 0x10 + delay 0x2 + launchtemplate gNeedleArmSpikeSpriteTemplate 0x82 0x5 0x0 0x1 0x17 0x0 0x10 + delay 0x2 + launchtemplate gNeedleArmSpikeSpriteTemplate 0x82 0x5 0x0 0x1 0x10 0x10 0x10 + waitforvisualfinish + clearmonbg SIDE_ATTACKER end - -Move_HYPERSPACE_HOLE: + + +Move_AROMATIC_MIST:: + loadspritegfx ANIM_TAG_PINK_PETAL + playsewithpan SE_W230, SOUND_PAN_ATTACKER + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0x8 0x6E7D + launchtemplate gSweetScentPetalSpriteTemplate 0x2 0x3 0x64 0x0 0x64 + delay 0x19 + setpan 0x0 + call SweetScentEffect + launchtemplate gSweetScentPetalSpriteTemplate 0x2 0x2 0x37 0x0 + setpan SOUND_PAN_TARGET + createvisualtask AnimTask_BlendColorCycle, 2, (PAL_DEF | PAL_DEF_PARTNER), 1, 5, 5, 13, 0x56bf + call SweetScentEffect + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x8 0x0 0x6E7D + waitforvisualfinish end - -Move_WATER_SHURIKEN: + + +Move_EERIE_IMPULSE:: + loadspritegfx ANIM_TAG_THIN_RING @hypervoice circle + loadspritegfx ANIM_TAG_SPARK @electric particles + loadspritegfx ANIM_TAG_SPARK_2 @electric particles + loadspritegfx ANIM_TAG_BLUE_STAR @heal particles + loadspritegfx ANIM_TAG_SPARK_H @lighter yellow particle + loadspritegfx ANIM_TAG_GOLD_RING @psybeam ring + monbg SIDE_TARGET + waitplaysewithpan SE_W085B, SOUND_PAN_TARGET 0x13 + delay 0x4 + launchtemplate gEerieImpulseRingTemplate 0x0 0x7 0x2d 0x0 0x0 0x0 0x0 0x0 0x1 + delay 0xB + launchtemplate gZapCannonSparkSpriteTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x0 0x28 0x0 + launchtemplate gZapCannonSparkSpriteTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x40 0x28 0x1 + launchtemplate gZapCannonSparkSpriteTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x80 0x28 0x0 + launchtemplate gZapCannonSparkSpriteTemplate 0x84 0x7 0xa 0x0 0x10 0x1e SOUND_PAN_ATTACKER 0x28 0x2 + launchtemplate gZapCannonSparkSpriteTemplate 0x84 0x7 0xa 0x0 0x20 0x1e 0x0 0x28 0x0 + launchtemplate gZapCannonSparkSpriteTemplate 0x84 0x7 0xa 0x0 0x20 0x1e 0x40 0x28 0x1 + launchtemplate gZapCannonSparkSpriteTemplate 0x84 0x7 0xa 0x0 0x20 0x1e 0x80 0x28 0x0 + launchtemplate gZapCannonSparkSpriteTemplate 0x84 0x7 0xa 0x0 0x20 0x1e SOUND_PAN_ATTACKER 0x28 0x2 + launchtemplate gZapCannonSparkSpriteTemplate 0x84 0x7 0xa 0x0 0x30 0x1e 0x20 0x28 0x0 + launchtemplate gZapCannonSparkSpriteTemplate 0x84 0x7 0xa 0x0 0x30 0x1e 0x60 0x28 0x1 + launchtemplate gZapCannonSparkSpriteTemplate 0x84 0x7 0xa 0x0 0x30 0x1e 0xa0 0x28 0x0 + launchtemplate gZapCannonSparkSpriteTemplate 0x84 0x7 0xa 0x0 0x30 0x1e 0xe0 0x28 0x2 + waitforvisualfinish + playsewithpan SE_W085B, SOUND_PAN_ATTACKER + launchtemplate gEerieImpulseImpactTemplate 0x2 0x6 0x0 0xfffb 0x1 0x0 0x20 0x10 + launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0x5 0x0 0x5 0x0 + launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0xfffb 0xa 0x5 0x1 + delay 0x7 + launchtemplate gEerieImpulseImpactTemplate 0x2 0x6 0xfff1 0xa 0x1 0x0 0x20 0x10 + launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0xf 0x14 0x5 0x2 + launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0xfff1 0xfff6 0x5 0x0 + delay 0x7 + launchtemplate gEerieImpulseImpactTemplate 0x2 0x6 0xfff1 0xfff1 0x1 0x0 0x20 0x10 + launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0x19 0x0 0x5 0x1 + launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0xfff8 0x8 0x5 0x2 + delay 0x7 + launchtemplate gEerieImpulseImpactTemplate 0x2 0x6 0xa 0xfffb 0x1 0x0 0x20 0x10 + launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0x2 0xfff8 0x5 0x0 + launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0xffec 0xf 0x5 0x1 + waitforvisualfinish + clearmonbg SIDE_TARGET end - -Move_MYSTICAL_FIRE: + + +Move_VENOM_DRENCH:: + loadspritegfx ANIM_TAG_POISON_BUBBLE + monbg SIDE_TARGET + launchtemplate gVenomDrenchAcidTemplate 0x82, 0x4, 0xfffb 0x1 0xfffb 0x0 + playsewithpan SE_W145C, SOUND_PAN_TARGET + delay 0x2 + launchtemplate gVenomDrenchAcidTemplate 0x82, 0x4, 0x5 0x0 0x6 0x0 + playsewithpan SE_W145C, SOUND_PAN_TARGET + delay 0x2 + launchtemplate gVenomDrenchAcidTemplate 0x82, 0x4, 0x13 0x1 0xa 0x0 + playsewithpan SE_W145C, SOUND_PAN_TARGET + delay 0x2 + launchtemplate gVenomDrenchAcidTemplate 0x82, 0x4, 0xffe9 0x2 0xfff6 0x0 + playsewithpan SE_W145C, SOUND_PAN_TARGET + delay 0x2 + call AcidDrench + call AcidDrench + waitforvisualfinish + clearmonbg SIDE_TARGET end - -Move_SPIKY_SHIELD: +AcidDrench: + launchtemplate gVenomDrenchAcidTemplate 0x82, 0x4, 0xffec 0x0 0xfff6 0x0 + playsewithpan SE_W145C, SOUND_PAN_TARGET + delay 0x2 + launchtemplate gVenomDrenchAcidTemplate 0x82, 0x4, 0x1c 0x1 0xa 0x0 + playsewithpan SE_W145C, SOUND_PAN_TARGET + delay 0x2 + launchtemplate gVenomDrenchAcidTemplate 0x82, 0x4, 0xfff6 0x1 0xfffb 0x0 + playsewithpan SE_W145C, SOUND_PAN_TARGET + delay 0x2 + launchtemplate gVenomDrenchAcidTemplate 0x82, 0x4, 0xa 0x0 0x6 0x0 + playsewithpan SE_W145C, SOUND_PAN_TARGET + delay 0x2 + launchtemplate gVenomDrenchAcidTemplate 0x82, 0x4, 0x18 0x1 0xa 0x0 + playsewithpan SE_W145C, SOUND_PAN_TARGET + delay 0x2 + launchtemplate gVenomDrenchAcidTemplate 0x82, 0x4, 0xffe0 0x2 0xfff6 0x0 + playsewithpan SE_W145C, SOUND_PAN_TARGET + delay 0x2 + launchtemplate gVenomDrenchAcidTemplate 0x82, 0x4, 0xffec 0x0 0xfff6 0x0 + playsewithpan SE_W145C, SOUND_PAN_TARGET + delay 0x2 + launchtemplate gVenomDrenchAcidTemplate 0x82, 0x4, 0x1e 0x2 0xa 0x0 + playsewithpan SE_W145C, SOUND_PAN_TARGET + delay 0x2 + return + + +Move_POWDER:: + loadspritegfx ANIM_TAG_HANDS_AND_FEET @black color + loadspritegfx ANIM_TAG_SPORE @powder + monbg SIDE_TARGET + monbgprio_28 ANIM_TARGET + loopsewithpan SE_W077, SOUND_PAN_TARGET, 0x12, 0xa + call POWDER_SPORE + call POWDER_SPORE + call POWDER_SPORE + waitforvisualfinish + clearmonbg SIDE_TARGET end - -Move_AROMATIC_MIST: +POWDER_SPORE: + launchtemplate gPowderBlackSporeTemplate 0x2 0x5 0x0 0xffec 0x55 0x50 0x0 + delay 0xc + launchtemplate gPowderBlackSporeTemplate 0x2 0x5 0x0 0xfff6 0xaa 0x50 0x0 + delay 0xc + launchtemplate gPowderBlackSporeTemplate 0x2 0x5 0x0 0xfff1 0x0 0x50 0x0 + delay 0xc + return + + +Move_GEOMANCY:: + loadspritegfx ANIM_TAG_ZYGARDE_HEXES @Hex + loadspritegfx ANIM_TAG_GUARD_RING @safeguard + loadspritegfx ANIM_TAG_PAW_PRINT @yellow color + loadspritegfx ANIM_TAG_WHIP_HIT @green color + loadspritegfx ANIM_TAG_SWEAT_BEAD @blue color + loadspritegfx ANIM_TAG_SMALL_EMBER @dragon claw buff / red color + monbg SIDE_ATTACKER + setalpha 8, 8 + choosetwoturnanim GeomancyChargeUp GeomancyUnleash +GeomancyChargeUp: + loadspritegfx ANIM_TAG_FOCUS_ENERGY @endure buff effect + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0xC 0x0 + waitforvisualfinish + playsewithpan SE_W322, SOUND_PAN_ATTACKER + launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_ATTACKER 0x0 0x2 0x5f 0x1 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_ATK 0x2 0x0 0x5 0x1F + call GeomancyRingBuff + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_ATK 0x2 0x0 0x5 0x2C0 + call GeomancyRingBuff + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_ATK 0x2 0x0 0x5 0x7C60 + call GeomancyRingBuff + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x8 0x0 0x0 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_ATK 0x2 0x5 0x0 0x7C60 + waitforvisualfinish + blendoff + clearmonbg SIDE_ATTACKER end - -Move_EERIE_IMPULSE: +GeomancyRingBuff: + launchtemplate gGeomancyRedCellVortexTemplate 0x2 0x7 0x0 0x1c 0x210 0x1e 0xd 0x32 0x0 + launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xffe8 0x1a 0x2 + launchtemplate gGeomancyRingTemplate 0x2 0x0 + delay 0x1 + launchtemplate gGeomancyRingTemplate 0x2 0x0 + delay 0x1 + launchtemplate gGeomancyGreenCellVortexTemplate 0x2 0x7 0x0 0x20 0x1e0 0x14 0x10 0xffd2 0x0 + launchtemplate gGeomancyRingTemplate 0x2 0x0 + delay 0x1 + launchtemplate gGeomancyRingTemplate 0x2 0x0 + delay 0x1 + launchtemplate gGeomancyBlueCellVortexTemplate 0x2 0x7 0x0 0x21 0x240 0x14 0x8 0x2a 0x0 + launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xe 0x1c 0x1 + delay 0x2 + launchtemplate gGeomancyRedCellVortexTemplate 0x2 0x7 0x0 0x1f 0x190 0x19 0xb 0xffd6 0x0 + delay 0x2 + launchtemplate gGeomancyGreenCellVortexTemplate 0x2 0x7 0x0 0x1c 0x200 0x19 0x10 0x2e 0x0 + launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xfffb 0xa 0x2 + launchtemplate gGeomancyRingTemplate 0x2 0x0 + delay 0x1 + launchtemplate gGeomancyRingTemplate 0x2 0x0 + delay 0x1 + launchtemplate gGeomancyBlueCellVortexTemplate 0x2 0x7 0x0 0x21 0x1d0 0x1e 0xf 0xffce 0x0 + launchtemplate gGeomancyRingTemplate 0x2 0x0 + delay 0x1 + launchtemplate gGeomancyRingTemplate 0x2 0x0 + delay 0x1 + launchtemplate gGeomancyRedCellVortexTemplate 0x2 0x7 0x0 0x1c 0x210 0x1e 0xd 0x32 0x0 + launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0x1c 0x1a 0x3 + delay 0x2 + launchtemplate gGeomancyGreenCellVortexTemplate 0x2 0x7 0x0 0x20 0x1e0 0x14 0x10 0xffd2 0x0 + delay 0x2 + launchtemplate gGeomancyBlueCellVortexTemplate 0x2 0x7 0x0 0x21 0x240 0x14 0x8 0x2a 0x0 + launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xfff4 0x0 0x1 + launchtemplate gGeomancyRingTemplate 0x2 0x0 + delay 0x1 + launchtemplate gGeomancyRingTemplate 0x2 0x0 + delay 0x1 + launchtemplate gGeomancyRedCellVortexTemplate 0x2 0x7 0x0 0x1f 0x190 0x19 0xb 0xffd6 0x0 + launchtemplate gGeomancyRingTemplate 0x2 0x0 + delay 0x1 + launchtemplate gGeomancyRingTemplate 0x2 0x0 + delay 0x1 + launchtemplate gGeomancyGreenCellVortexTemplate 0x2 0x7 0x0 0x1c 0x200 0x19 0x10 0x2e 0x0 + delay 0x2 + return +GeomancyUnleash: + loadspritegfx ANIM_TAG_FIRE_PLUME @dragon rage + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0x10 0x24CF + playsewithpan SE_W208, SOUND_PAN_ATTACKER + launchtemplate gGeomancyRingTemplate 0x2 0x0 + delay 0x1 + launchtemplate gGeomancyRingTemplate 0x2 0x0 + delay 0x1 + launchtemplate gGeomancyRingTemplate 0x2 0x0 + delay 0x1 + launchtemplate gGeomancyRingTemplate 0x2 0x0 + delay 0x1 + launchtemplate gGeomancyRingTemplate 0x2 0x0 + delay 0x1 + launchtemplate gGeomancyRingTemplate 0x2 0x0 + waitforvisualfinish + playsewithpan SE_W082, SOUND_PAN_ATTACKER + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x10 0x10 0x4D01 + launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_ATTACKER 0x0 0x2 0x25 0x1 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_ATK 0x2 0x0 0x5 0x1F + launchtemplate gGeomancyRedCellRaiseTemplate 0x2 0x5 0x14 0x20 0xffd0 0x32 0x1 + launchtemplate gGeomancyGreenCellRaiseTemplate 0x2 0x5 0x0 0x20 0xffda 0x19 0x1 + launchtemplate gGeomancyBlueCellRaiseTemplate 0x2 0x5 0x20 0x20 0xffe4 0x28 0x1 + launchtemplate gGeomancyRedCellRaiseTemplate 0x2 0x5 0xffec 0x20 0xffd0 0x32 0x1 + launchtemplate gGeomancyGreenCellRaiseTemplate 0x2 0x5 0x14 0x20 0xffe4 0x3c 0x1 + launchtemplate gGeomancyBlueCellRaiseTemplate 0x2 0x5 0x0 0x20 0xffe4 0x1e 0x1 + call GeomancyRageBuff + call GeomancyRageBuff + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x10 0x0 0x4D01 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_ATK 0x2 0x5 0x0 0x1F + waitforvisualfinish + blendoff + clearmonbg SIDE_ATTACKER end - -Move_VENOM_DRENCH: +GeomancyRageBuff: + launchtemplate gGeomancyYellowRageTemplate 0xc2 0x3 0x0 0x5 0x0 + delay 0x1 + launchtemplate gGeomancyYellowRageTemplate 0xc2 0x3 0x0 0xfff6 0xfff1 + delay 0x1 + launchtemplate gGeomancyYellowRageTemplate 0x82, 0x3, 0x0 0x0 0x19 + delay 0x1 + launchtemplate gGeomancyYellowRageTemplate 0xc2 0x3 0x0 0xf 0x5 + delay 0x1 + launchtemplate gGeomancyYellowRageTemplate 0xc2 0x3 0x0 0xffe7 0x0 + delay 0x1 + launchtemplate gGeomancyYellowRageTemplate 0x82, 0x3, 0x0 0x1e 0x1e + delay 0x1 + launchtemplate gGeomancyYellowRageTemplate 0x82, 0x3, 0x0 0xffe5 0x19 + delay 0x1 + launchtemplate gGeomancyYellowRageTemplate 0xc2 0x3 0x0 0x0 0x8 + delay 0x1 + return + + +Move_MAGNETIC_FLUX:: + loadspritegfx ANIM_TAG_THIN_RING @uproar + loadspritegfx ANIM_TAG_SPARK_2 @ElectricityEffect + loadspritegfx ANIM_TAG_SMALL_EMBER @yellow color + createvisualtask AnimTask_BlendBattleAnimPal 10, (PAL_DEF | PAL_ATK), 2, 0, 9, 0x243B + createvisualtask AnimTask_BlendBattleAnimPal 10, (PAL_DEF | PAL_ATK_PARTNER), 2, 0, 9, 0x243B + loopsewithpan SE_W161, SOUND_PAN_ATTACKER, 0x12, 0x3 + launchtask AnimTask_DefenseCurlDeformMon 0x5 0x0 + call MagneticFluxSparks1 + delay 0xA + call MagneticFluxSparks2 + delay 0xA + call MagneticFluxSparks1 + delay 0xA + launchtemplate gMagneticFluxUproarTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1f 0x8 + call MagneticFluxSparks2 + waitforvisualfinish + createvisualtask AnimTask_BlendBattleAnimPal 10, (PAL_DEF | PAL_ATK), 2, 9, 0, 0x243B + createvisualtask AnimTask_BlendBattleAnimPal 10, (PAL_DEF | PAL_ATK_PARTNER), 2, 9, 0, 0x243B + waitforvisualfinish end - -Move_POWDER: +MagneticFluxSparks1: + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x20 0x18 0xbe 0xc 0x0 0x1 0x0 + delay 0x0 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x50 0x18 0x16 0xc 0x0 0x1 0x0 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x9c 0x18 0x79 0xd 0x0 0x1 0x1 + return +MagneticFluxSparks2: + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x64 0x18 0x3c 0xa 0x0 0x1 0x0 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0xaa 0x18 0x2a 0xb 0x0 0x1 0x1 + delay 0x0 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0xee 0x18 0xa5 0xa 0x0 0x1 0x1 + return + + +Move_HAPPY_HOUR:: + loadspritegfx ANIM_TAG_COIN + monbg ANIM_ATTACKER + loopsewithpan SE_W006, SOUND_PAN_TARGET, 0x8, 10 + launchtemplate gHappyHourCoinShowerTemplate 0x82, 0x4, 0xfffb 0x0 0xfffb 0x1 + delay 0x2 + launchtemplate gHappyHourCoinShowerTemplate 0x82, 0x4, 0x5 0x0 0x6 0x1 + delay 0x2 + launchtemplate gHappyHourCoinShowerTemplate 0x82, 0x4, 0x13 0x0 0xa 0x1 + delay 0x2 + launchtemplate gHappyHourCoinShowerTemplate 0x82, 0x4, 0xffe9 0x0 0xfff6 0x1 + delay 0x2 + call CoinShower + call CoinShower + waitforvisualfinish + clearmonbg ANIM_ATTACKER end - -Move_GEOMANCY: +CoinShower: + launchtemplate gHappyHourCoinShowerTemplate 0x82, 0x4, 0xffec 0x0 0xfff6 0x1 + delay 0x2 + launchtemplate gHappyHourCoinShowerTemplate 0x82, 0x4, 0x1c 0x0 0xa 0x1 + delay 0x2 + launchtemplate gHappyHourCoinShowerTemplate 0x82, 0x4, 0xfff6 0x0 0xfffb 0x1 + delay 0x2 + launchtemplate gHappyHourCoinShowerTemplate 0x82, 0x4, 0xa 0x0 0x6 0x1 + delay 0x2 + launchtemplate gHappyHourCoinShowerTemplate 0x82, 0x4, 0x18 0x0 0xa 0x1 + delay 0x2 + launchtemplate gHappyHourCoinShowerTemplate 0x82, 0x4, 0xffe0 0x0 0xfff6 0x1 + delay 0x2 + launchtemplate gHappyHourCoinShowerTemplate 0x82, 0x4, 0xffec 0x0 0xfff6 0x1 + delay 0x2 + launchtemplate gHappyHourCoinShowerTemplate 0x82, 0x4, 0x1e 0x0 0xa 0x1 + delay 0x2 + return + + +Move_ELECTRIC_TERRAIN:: + loadspritegfx ANIM_TAG_ELECTRIC_ORBS + playsewithpan SE_W268, SOUND_PAN_ATTACKER + launchtemplate gElectricTerrainOrbsTemplate 0x2 0x2 0x1a 0x0 + launchtemplate gElectricTerrainOrbsTemplate 0x2 0x2 0x1a 0x2a + launchtemplate gElectricTerrainOrbsTemplate 0x2 0x2 0x1a 0x54 + launchtemplate gElectricTerrainOrbsTemplate 0x2 0x2 0x1a 0x7e + launchtemplate gElectricTerrainOrbsTemplate 0x2 0x2 0x1a 0xa8 + launchtemplate gElectricTerrainOrbsTemplate 0x2 0x2 0x1a 0xd2 + delay 0x34 + setarg 0x7 0xffff + playsewithpan SE_W213, SOUND_PAN_ATTACKER + launchtask AnimTask_ScaleMonAndRestore 0x5 0x5 0xfff9 0xfff9 0xb 0x0 0x0 + launchtemplate gElectricTerrainFlyingBallTemplate 0x82 0x1 0x0 + launchtemplate gElectricTerrainFlyingBallTemplate 0x82 0x1 0x20 + launchtemplate gElectricTerrainFlyingBallTemplate 0x82 0x1 0x40 + launchtemplate gElectricTerrainFlyingBallTemplate 0x82 0x1 0x60 + launchtemplate gElectricTerrainFlyingBallTemplate 0x82 0x1 0x80 + launchtemplate gElectricTerrainFlyingBallTemplate 0x82 0x1 0xa0 + launchtemplate gElectricTerrainFlyingBallTemplate 0x82 0x1 SOUND_PAN_ATTACKER + launchtemplate gElectricTerrainFlyingBallTemplate 0x82 0x1 0xe0 + waitforvisualfinish + restorebg + waitbgfadein + playsewithpan SE_W085B, SOUND_PAN_TARGET + delay 0x40 + playsewithpan SE_W085B, SOUND_PAN_TARGET + delay 0x40 end - -Move_HAPPY_HOUR: + + +Move_DAZZLING_GLEAM:: + loadspritegfx ANIM_TAG_SPARKLE_2 + loadspritegfx ANIM_TAG_BLUE_STAR + launchtemplate gSimplePaletteBlendSpriteTemplate 0x2 0x5 0x1 0x2 0x0 0xd 0x7fff + playsewithpan SE_W239, SOUND_PAN_ATTACKER + @call 0x081D56B3 -> middle of GrantingStarsEffect + createsprite gGrantingStarsSpriteTemplate, ANIM_ATTACKER, 2, 12, -5, 0, 0, 32, 60 + delay 8 + waitforvisualfinish + launchtask AnimTask_BlendColorCycle 0x2 0x6 0x2 0x0 0x3 0x0 0x10 0x7fff + delay 0x4 + playsewithpan SE_W202, SOUND_PAN_ATTACKER + waitforvisualfinish + launchtemplate gSimplePaletteBlendSpriteTemplate 0x2 0x5 0x1 0x0 0xd 0x0 0x7fff + waitforvisualfinish + clearmonbg 0x0 + blendoff end - -Move_ELECTRIC_TERRAIN: + + +Move_CELEBRATE:: + loadspritegfx ANIM_TAG_ITEM_BAG + launchtemplate gCelebrateBagTemplate 0x2 0x1 0x0 + playsewithpan SE_W039, SOUND_PAN_ATTACKER + delay 0x12 + playsewithpan SE_W213, SOUND_PAN_ATTACKER + delay 0x47 + loopsewithpan SE_W039, SOUND_PAN_ATTACKER 0x16 0x3 end - -Move_DAZZLING_GLEAM: + + +Move_HOLD_HANDS:: + loadspritegfx ANIM_TAG_TAG_HAND @hand + loadspritegfx ANIM_TAG_MAGENTA_HEART @charm + loadspritegfx ANIM_TAG_VERTICAL_HEX @red + playsewithpan SE_W080, SOUND_PAN_ATTACKER + launchtask AnimTask_TranslateMonEllipticalRespectSide 0x2 0x5 0x0 0xc 0x6 0x6 0x3 + launchtemplate gHoldHandsHeartTemplate 0x2 0x4 0x0 0xffe8 0x8 0x8c + delay 0x8 + launchtemplate gHoldHandsHeartTemplate 0x2 0x4 0x0 0xffe8 0x8 0x8c + delay 0x8 + launchtemplate gHoldHandsHeartTemplate 0x2 0x4 0x0 0xffe8 0x8 0x8c + delay 0x8 + launchtemplate gHoldHandsHeartTemplate 0x2 0x4 0x0 0xffe8 0x8 0x8c + delay 0x8 + launchtemplate gHoldHandsHeartTemplate 0x2 0x4 0x0 0xffe8 0x8 0x8c + delay 0x8 + launchtemplate gHoldHandsHeartTemplate 0x2 0x4 0x0 0xffe8 0x8 0x8c + delay 0x8 + launchtemplate gHoldHandsHeartTemplate 0x2 0x4 0x0 0xffe8 0x8 0x8c + delay 0x8 + launchtemplate gHoldHandsHeartTemplate 0x2 0x4 0x0 0xffe8 0x8 0x8c + delay 0x8 + launchtemplate gHoldHandsHeartTemplate 0x2 0x4 0x0 0xffe8 0x8 0x8c + delay 0x8 + launchtemplate gHoldHandsHeartTemplate 0x2 0x4 0x0 0xffe8 0x8 0x8c + waitforvisualfinish + launchtask AnimTask_HelpingHandAttackerMovement 0x5 0x0 + launchtemplate gHelpingHandClapSpriteTemplate 0x28 0x1 0x0 + launchtemplate gHelpingHandClapSpriteTemplate 0x28 0x1 0x1 + delay 0x13 + playsewithpan SE_W227, 0x0 + launchtask AnimTask_ShakeMon2 0x2 0x5 0x2 0x2 0x0 0x5 0x1 + delay 0xe + playsewithpan SE_W227, 0x0 + launchtask AnimTask_ShakeMon2 0x2 0x5 0x2 0x2 0x0 0x5 0x1 + delay 0x14 + playsewithpan SE_W227, 0x0 + launchtask AnimTask_ShakeMon2 0x2 0x5 0x2 0x3 0x0 0xa 0x1 + launchtask AnimTask_BlendMonInAndOut 0x2 0x5 0x2 0x3ff 0xc 0x1 0x1 end - -Move_CELEBRATE: + + +Move_BABY_DOLL_EYES:: + loadspritegfx ANIM_TAG_LEER + loadspritegfx ANIM_TAG_PINK_CLOUD + loadspritegfx ANIM_TAG_OPENING_EYE @eye + setalpha 8, 8 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x0 0x0 0xA 0x7FFF + waitforvisualfinish + launchtemplate gOpeningEyeSpriteTemplate 0x5 0x4 0x0 0x0 0x1 0x0 + delay 0x20 + playsewithpan SE_W043, SOUND_PAN_ATTACKER + launchtask AnimTask_ScaleMonAndRestore 0x5 0x5 0xfffb 0xfffb 0xa 0x0 0x1 + waitforvisualfinish + delay 0xa + launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x1 0x0 0x9 0x1 + launchtask AnimTask_ShakeMon2 0x2 0x5 0x3 0x1 0x0 0x9 0x1 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x0 0xA 0x0 0x7FFF + waitforvisualfinish + blendoff end - -Move_HOLD_HANDS: + + +Move_NUZZLE:: + loadspritegfx ANIM_TAG_MAGENTA_HEART + loadspritegfx ANIM_TAG_ITEM_BAG + loadspritegfx ANIM_TAG_SPARK_2 + loadspritegfx ANIM_TAG_IMPACT + launchtask AnimTask_RockMonBackAndForth 0x5 0x3 0x0 0x2 0x0 + launchtemplate gMagentaHeartSpriteTemplate 0x3 0x2 0x0 0x14 + playsewithpan SE_W204, SOUND_PAN_ATTACKER + delay 0xf + launchtemplate gMagentaHeartSpriteTemplate 0x3 0x2 0xffec 0x14 + playsewithpan SE_W204, SOUND_PAN_ATTACKER + delay 0xf + launchtemplate gMagentaHeartSpriteTemplate 0x3 0x2 0x14 0x14 + playsewithpan SE_W204, SOUND_PAN_ATTACKER + waitforvisualfinish + playsewithpan SE_W085B, SOUND_PAN_TARGET + launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0x0 0x0 0x1 0x2 + call ElectricityEffectNoSound + waitforvisualfinish end - -Move_BABY_DOLL_EYES: + + +Move_HOLD_BACK:: + loadspritegfx ANIM_TAG_PAW_PRINT @ yellow/brown + loadspritegfx ANIM_TAG_IMPACT @ hit + loadspritegfx ANIM_TAG_PURPLE_SWIPE @ swipe + loadspritegfx ANIM_TAG_THIN_RING @ ring + loadspritegfx ANIM_TAG_DUCK @ dizzy punch + loadspritegfx ANIM_TAG_PAIN_SPLIT @ pain split + monbg ANIM_TARGET + setalpha 12, 8 + playsewithpan SE_W207, SOUND_PAN_TARGET + launchtemplate gHoldBackSwipeTemplate 0x82, 0x3, 0x0 0x0 0x1 + waitforvisualfinish + launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x3 0x0 0xa 0x1 + launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0x0 0x0 0x1 0x2 + launchtemplate gHoldBackRingTemplate 0x3 0x4 0x0 0x0 0x100 0x0 + launchtemplate gHoldBackStarsTemplate 0x83 0x4 0xfff0 0xfff8 0xa0 0xffe0 + launchtemplate gHoldBackStarsTemplate 0x83 0x4 0xfff0 0xfff8 0xff00 0xffd8 + launchtemplate gHoldBackStarsTemplate 0x83 0x4 0xfff0 0xfff8 0x80 0xfff0 + launchtemplate gHoldBackStarsTemplate 0x83 0x4 0xfff0 0xfff8 0x1a0 0xffda + launchtemplate gHoldBackStarsTemplate 0x83 0x4 0xfff0 0xfff8 0xff80 0xffea + launchtemplate gHoldBackStarsTemplate 0x83 0x4 0xfff0 0xfff8 0xfe80 0xffe1 + playsewithpan SE_W025B, SOUND_PAN_TARGET + waitforvisualfinish + clearmonbg ANIM_TARGET + blendoff end - -Move_NUZZLE: + + +Move_INFESTATION:: + loadspritegfx ANIM_TAG_HANDS_AND_FEET @black color + loadspritegfx ANIM_TAG_SMALL_BUBBLES @circle particles + monbg SIDE_TARGET + monbgprio_28 ANIM_TARGET + createvisualtask AnimTask_BlendBattleAnimPal, 10, PAL_DEF, 0x2, 0x0, 0x9, 0x7320 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x3 0x0 0x4f 0x1 + loopsewithpan SE_W268, SOUND_PAN_ATTACKER, 0x0, 0x4F + call InfestationVortex + call InfestationVortex + call InfestationVortex + call InfestationVortex + call InfestationVortex + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xA 0x5 PAL_DEF 0x2 0x9 0x0 0x7320 + waitforvisualfinish + clearmonbg SIDE_TARGET end - -Move_HOLD_BACK: - end - -Move_INFESTATION: - end - +InfestationVortex: + launchtemplate gInfestationBubbleTemplate 0x82 0x7 0x0 0x1c 0x210 0x1e 0xd 0x32 0x1 + delay 0x1 + launchtemplate gInfestationBubbleTemplate 0x82 0x7 0x0 0x20 0x1e0 0x14 0x10 0xffd2 0x1 + delay 0x1 + launchtemplate gInfestationBubbleTemplate 0x82 0x7 0x0 0x21 0x240 0x14 0x8 0x2a 0x1 + delay 0x1 + launchtemplate gInfestationBubbleTemplate 0x82 0x7 0x0 0x1f 0x190 0x19 0xb 0xffd6 0x1 + delay 0x1 + launchtemplate gInfestationBubbleTemplate 0x82 0x7 0x0 0x1c 0x200 0x19 0x10 0x2e 0x1 + delay 0x1 + launchtemplate gInfestationBubbleTemplate 0x82 0x7 0x0 0x21 0x1d0 0x1e 0xf 0xffce 0x1 + delay 0x1 + return + + Move_POWER_UP_PUNCH: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET @@ -5880,33 +9539,4420 @@ Move_POWER_UP_PUNCH: blendoff end -Move_OBLIVION_WING: +Move_OBLIVION_WING:: + loadspritegfx ANIM_TAG_HYDRO_PUMP + loadspritegfx ANIM_TAG_ROUND_SHADOW + loadspritegfx ANIM_TAG_BLUE_STAR + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_HYDRO_PUMP, 0x0, 0xC, 0xC, 0x289F @Pinkish Red + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_ROUND_SHADOW, 0x0, 0xD, 0xD, 0x289F @Pinkish Red + playsewithpan SE_W019, SOUND_PAN_ATTACKER + launchtemplate gFlyBallUpSpriteTemplate 0x2 0x4 0x0 0x0 0xd 0x150 + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0xE 0x0 @Black + waitforvisualfinish + createsoundtask SoundTask_LoopSEAdjustPanning, 0x7, 0xf0, 0xffc0, SOUND_PAN_TARGET, 0x1, 0xf, 0x0, 0x5 + call OblivionWingBeam + call OblivionWingBeam + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0 0x3 40 0x1 + launchtask AnimTask_BlendColorCycle 0x2 0x6 PAL_DEF 0x2 0x4 0x0 0xc 0x289F @Pinkish Red + call OblivionWingBeam + call OblivionWingBeam + call OblivionWingBeam + call OblivionWingBeam + call OblivionWingBeam + call OblivionWingBeam + call OblivionWingBeam + call OblivionWingBeam + call OblivionWingBeam + call OblivionWingBeam + delay 15 + visible ANIM_ATTACKER + call HealingEffect + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0xE 0x0 0x0 @From black + waitforvisualfinish end - -Move_THOUSAND_ARROWS: +OblivionWingBeam: + launchtemplate gOblivionWingBeamTemplate 0x82, 0x6, 0, -90, 0, 20, 0x15 0x0 + delay 0x2 + launchtemplate gOblivionWingBeamTemplate 0x82, 0x6, 0, -90, 0, 20, 0x15 0x0 + delay 0x2 + return + + +Move_THOUSAND_ARROWS:: + loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT @charge animation + loadspritegfx ANIM_TAG_ELECTRICITY @charge animation + loadspritegfx ANIM_TAG_LEAF @green color + loadspritegfx ANIM_TAG_RAZOR_LEAF @green color 2 + loadspritegfx ANIM_TAG_ZYGARDE_HEXES @hexagon + loadspritegfx ANIM_TAG_VERTICAL_HEX @arrow + loadspritegfx ANIM_TAG_NEEDLE @sting + monbg ANIM_ATTACKER + setblends 0x80e + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0xC 0x0 + waitforvisualfinish + launchtemplate gThousandArrowsGreenChargeTemplate 0x2 0x1 0x0 + playsewithpan SE_W268, SOUND_PAN_ATTACKER + delay 0x18 + playsewithpan SE_W268, SOUND_PAN_ATTACKER + delay 0x18 + call ThousandArrowsHexes + call ThousandArrowsHexes + call ThousandArrowsHexes + call ThousandArrowsHexes + call ThousandArrowsHexes + call ThousandArrowsHexes + call ThousandArrowsHexes + launchtemplate gThousandArrowsGreenDischargeTemplate 0x2 0x3 0x0 0x10 0x10 + delay 0x2 + launchtemplate gThousandArrowsGreenDischargeTemplate 0x2 0x3 0x0 0xfff0 0xfff0 + playsewithpan SE_W085B, SOUND_PAN_ATTACKER + waitforvisualfinish + delay 0x30 + launchtask AnimTask_HorizontalShake 0x5 0x3 0x5 0xa 0x32 + launchtask AnimTask_HorizontalShake 0x5 0x3 0x4 0xa 0x32 + call ThousandArrowsDown + call ThousandArrowsDown + call ThousandArrowsDown + call ThousandArrowsDown + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0xC 0x0 0xffff + waitforvisualfinish + clearmonbg ANIM_ATTACKER + blendoff end - -Move_THOUSAND_WAVES: +ThousandArrowsHexes: + launchtemplate gThousandArrowsGreenHexTemplate 0x82, 0x3, 0x0 0xfffc 0xfff0 + playsewithpan SE_W091, SOUND_PAN_ATTACKER + delay 0x2 + launchtemplate gThousandArrowsGreenHexTemplate 0x82, 0x3, 0x0 0x100D 0xfff0 + playsewithpan SE_W091, SOUND_PAN_ATTACKER + delay 0x2 + launchtemplate gThousandArrowsGreenHexTemplate 0x82, 0x3, 0x0 0x4 0xfff4 + playsewithpan SE_W091, SOUND_PAN_ATTACKER + delay 0x2 + launchtemplate gThousandArrowsGreenHexTemplate 0x82, 0x3, 0x0 0xfff0 0xfff0 + playsewithpan SE_W091, SOUND_PAN_ATTACKER + delay 0x2 + return +ThousandArrowsDown: + launchtemplate gThousandArrowsGreenArrowTemplate 0x82, 0x3, 0x1 0xdc 0x3c + playsewithpan SE_W091, SOUND_PAN_ATTACKER + delay 0x2 + launchtemplate gThousandArrowsGreenArrowTemplate 0x82, 0x3, 0x1 0x3c 0x64 + playsewithpan SE_W091, SOUND_PAN_ATTACKER + delay 0x2 + launchtemplate gThousandArrowsGreenArrowTemplate 0x82, 0x3, 0x1 0x8c 0x37 + playsewithpan SE_W091, SOUND_PAN_ATTACKER + delay 0x2 + launchtemplate gThousandArrowsGreenArrowTemplate 0x82, 0x3, 0x1 0xb4 0x32 + playsewithpan SE_W091, SOUND_PAN_ATTACKER + delay 0x2 + launchtemplate gThousandArrowsGreenArrowTemplate 0x82, 0x3, 0x1 0x14 0x5a + playsewithpan SE_W091, SOUND_PAN_ATTACKER + delay 0x2 + launchtemplate gThousandArrowsGreenArrowTemplate 0x82, 0x3, 0x1 0x5a 0x5a + playsewithpan SE_W091, SOUND_PAN_ATTACKER + delay 0x2 + launchtemplate gThousandArrowsGreenArrowTemplate 0x82, 0x3, 0x1 0xa0 0x3c + playsewithpan SE_W091, SOUND_PAN_ATTACKER + delay 0x2 + launchtemplate gThousandArrowsGreenArrowTemplate 0x82, 0x3, 0x1 0x1e 0x5a + playsewithpan SE_W091, SOUND_PAN_ATTACKER + delay 0x2 + launchtemplate gThousandArrowsGreenArrowTemplate 0x82, 0x3, 0x1 0x78 0x3c + playsewithpan SE_W091, SOUND_PAN_ATTACKER + delay 0x2 + launchtemplate gThousandArrowsGreenArrowTemplate 0x82, 0x3, 0x1 0xc8 0x28 + playsewithpan SE_W091, SOUND_PAN_ATTACKER + return + + +Move_THOUSAND_WAVES:: + loadspritegfx ANIM_TAG_ZYGARDE_HEXES @Hex + loadspritegfx ANIM_TAG_FLYING_DIRT @heat wave animation + loadspritegfx ANIM_TAG_LEAF @green color + loadspritegfx ANIM_TAG_IMPACT @pound hits + monbg SIDE_ATTACKER + setalpha 8, 8 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0xC 0x0 + waitforvisualfinish + playsewithpan SE_W025, SOUND_PAN_ATTACKER + launchtemplate gThousandWavesGreenWheelTemplate 0x2 0x1 0x0 + launchtemplate gThousandWavesGreenWheelTemplate 0x2 0x1 0x2b + launchtemplate gThousandWavesGreenWheelTemplate 0x2 0x1 0x55 + launchtemplate gThousandWavesGreenWheelTemplate 0x2 0x1 0x80 + launchtemplate gThousandWavesGreenWheelTemplate 0x2 0x1 0xaa + launchtemplate gThousandWavesGreenWheelTemplate 0x2 0x1 0xd5 + waitforvisualfinish + clearmonbg SIDE_ATTACKER @I placed this one here, because it ruins the teleport animation + loopsewithpan SE_W004, SOUND_PAN_TARGET, 0x3, 0x15 + call ThousandWavesRecover + launchtemplate gThousandWavesGreenRecoverTemplate 0x2 0x3 0x28 0xfff6 0xd + delay 0x3 + launchtemplate gThousandWavesGreenRecoverTemplate 0x2 0x3 0xffdd 0x8 0xd + delay 0x3 + launchtemplate gThousandWavesGreenRecoverTemplate 0x2 0x3 0xffdd 0xfff6 0xd + delay 0x3 + launchtemplate gThousandWavesGreenRecoverTemplate 0x2 0x3 0x28 0x8 0xd + delay 0x3 + launchtemplate gThousandWavesGreenRecoverTemplate 0x2 0x3 0xf 0xffd8 0xd + delay 0x3 + launchtemplate gThousandWavesGreenRecoverTemplate 0x2 0x3 0xfff6 0xffe0 0xd + delay 0x3 + launchtemplate gThousandWavesGreenRecoverTemplate 0x2 0x3 0x5 0x27 0xd + delay 0x3 + launchtemplate gThousandWavesGreenRecoverTemplate 0x2 0x3 0x19 0xffec 0xd + delay 0x3 + launchtemplate gThousandWavesGreenRecoverTemplate 0x2 0x3 0xffd8 0xffec 0xd + delay 0x3 + launchtask AnimTask_AttackerStretchAndDisappear 0x2 0x0 + playsewithpan SE_W100, SOUND_PAN_ATTACKER + launchtemplate gThousandWavesGreenRecoverTemplate 0x2 0x3 0x5 0xffd8 0xd + waitforvisualfinish + panse_1B SE_W063B, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0 + delay 0x4 + launchtask AnimTask_MoveHeatWaveTargets 0x5 0x0 + delay 0xc + monbg SIDE_TARGET + monbgprio_28 ANIM_TARGET + launchtemplate gThousandWavesGreenWaveTemplate 0x28 0x4 0xa 0x900 0x60 0x1 + delay 0x2 + launchtemplate gThousandWavesGreenWaveTemplate 0x28 0x4 0x5a 0x800 0x60 0x1 + delay 0x2 + launchtemplate gThousandWavesGreenWaveTemplate 0x28 0x4 0x32 0xa00 0x60 0x1 + delay 0x2 + launchtemplate gThousandWavesGreenWaveTemplate 0x28 0x4 0x14 0x900 0x60 0x1 + delay 0x2 + call ThousandWavesRotatingImpact + call ThousandWavesRotatingImpact + waitforvisualfinish + launchtask AnimTask_ExtremeSpeedMonReappear 0x2 0x0 + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0xC 0x0 0xffff + waitforvisualfinish + blendoff + clearmonbg SIDE_TARGET end - -Move_LANDS_WRATH: +ThousandWavesRecover: + launchtemplate gThousandWavesGreenRecoverTemplate 0x2 0x3 0x28 0x28 0x10 + delay 0x2 + launchtemplate gThousandWavesGreenRecoverTemplate 0x2 0x3 0xffd8 0xffd8 0x10 + delay 0x2 + launchtemplate gThousandWavesGreenRecoverTemplate 0x2 0x3 0x0 0x28 0x10 + delay 0x2 + launchtemplate gThousandWavesGreenRecoverTemplate 0x2 0x3 0x0 0xffd8 0x10 + delay 0x2 + launchtemplate gThousandWavesGreenRecoverTemplate 0x2 0x3 0x28 0xffec 0x10 + delay 0x2 + launchtemplate gThousandWavesGreenRecoverTemplate 0x2 0x3 0x28 0x14 0x10 + delay 0x2 + launchtemplate gThousandWavesGreenRecoverTemplate 0x2 0x3 0xffd8 0xffec 0x10 + delay 0x2 + launchtemplate gThousandWavesGreenRecoverTemplate 0x2 0x3 0xffd8 0x14 0x10 + delay 0x2 + launchtemplate gThousandWavesGreenRecoverTemplate 0x2 0x3 0xffec 0x1e 0x10 + delay 0x2 + launchtemplate gThousandWavesGreenRecoverTemplate 0x2 0x3 0x14 0xffe2 0x10 + delay 0x2 + launchtemplate gThousandWavesGreenRecoverTemplate 0x2 0x3 0xffec 0xffe2 0x10 + delay 0x2 + launchtemplate gThousandWavesGreenRecoverTemplate 0x2 0x3 0x14 0x1e 0x10 + delay 0x2 + launchtemplate gThousandWavesGreenRecoverTemplate 0x2 0x3 0xffd8 0x0 0x10 + delay 0x2 + launchtemplate gThousandWavesGreenRecoverTemplate 0x2 0x3 0x28 0x0 0x10 + delay 0x2 + return +ThousandWavesRotatingImpact: + launchtemplate gThousandWavesRotatingImpactTemplate 0x82 0x7 0x23 0x1c 0x180 0x32 0x8 0x32 0x1 @1 + launchtemplate gThousandWavesGreenWaveTemplate 0x28 0x4 0x46 0x7c0 0x60 0x1 + delay 0x2 + playsewithpan SE_W004, SOUND_PAN_TARGET + launchtemplate gThousandWavesPoundImpactTemplate 0x82, 0x4, 0x1 0x0 0x0 0x3 + launchtemplate gThousandWavesRotatingImpactTemplate 0x82 0x7 0x23 0x20 0xf0 0x28 0xb 0xffd2 0x1 @2 + launchtemplate gThousandWavesGreenWaveTemplate 0x28 0x4 0x0 0xb00 0x60 0x1 + delay 0x2 + playsewithpan SE_W004, SOUND_PAN_TARGET + launchtemplate gThousandWavesPoundImpactTemplate 0x82, 0x4, 0x1 0x5 0xfff4 0x3 + launchtemplate gThousandWavesRotatingImpactTemplate 0x82 0x7 0x23 0x21 0x1a0 0x28 0x4 0x2a 0x1 @3 + launchtemplate gThousandWavesGreenWaveTemplate 0x28 0x4 0x3c 0xa00 0x60 0x1 + delay 0x2 + playsewithpan SE_W004, SOUND_PAN_TARGET + launchtemplate gThousandWavesPoundImpactTemplate 0x82, 0x4, 0x1 0xfffa 0x9 0x3 + launchtemplate gThousandWavesRotatingImpactTemplate 0x82 0x7 0x23 0x1f 0x120 0x2d 0x6 0xffd6 0x1 @4 + launchtemplate gThousandWavesGreenWaveTemplate 0x28 0x4 0xa 0x900 0x60 0x1 + delay 0x2 + playsewithpan SE_W004, SOUND_PAN_TARGET + launchtemplate gThousandWavesPoundImpactTemplate 0x82, 0x4, 0x1 0xfffa 0xfff4 0x3 + launchtemplate gThousandWavesRotatingImpactTemplate 0x82 0x7 0x23 0x1c 0x1c0 0x2d 0xb 0x2e 0x1 @5 + launchtemplate gThousandWavesGreenWaveTemplate 0x28 0x4 0x5a 0x800 0x60 0x1 + delay 0x2 + playsewithpan SE_W004, SOUND_PAN_TARGET + launchtemplate gThousandWavesPoundImpactTemplate 0x82, 0x4, 0x1 0x5 0x9 0x3 + launchtemplate gThousandWavesRotatingImpactTemplate 0x82 0x7 0x23 0x21 0x1d0 0x32 0xa 0xffce 0x1 @6 + launchtemplate gThousandWavesGreenWaveTemplate 0x28 0x4 0x32 0xa00 0x60 0x1 + delay 0x2 + playsewithpan SE_W004, SOUND_PAN_TARGET + launchtemplate gThousandWavesPoundImpactTemplate 0x82, 0x4, 0x1 0xfffa 0x0 0x3 + return + + +Move_LANDS_WRATH:: + loadspritegfx ANIM_TAG_WATER_ORB @whirl motion + loadspritegfx ANIM_TAG_SPARK_2 @yellow color + monbg ANIM_ATTACKER + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0xE 0x0 + waitforvisualfinish + call LandsWrathVortex + call LandsWrathVortex + call LandsWrathVortex + call LandsWrathVortex + waitforvisualfinish + fadetobg BG_FISSURE + waitbgfadeout + playsewithpan SE_W089, 0x0 + launchtask AnimTask_HorizontalShake 0x5 0x3 0x5 0xa 0x32 + launchtask AnimTask_HorizontalShake 0x5 0x3 0x4 0xa 0x32 + launchtask AnimTask_PositionFissureBgOnBattler 0x5 0x3 0x1 0x5 0xffff + waitbgfadein + waitforvisualfinish + call UnsetPsychicBg + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0x0 0x0 + clearmonbg ANIM_ATTACKER end - -Move_LIGHT_OF_RUIN: +LandsWrathVortex: + playsewithpan SE_W221B SOUND_PAN_TARGET + launchtemplate gLandsWrathVortexTemplate 0x82 0x7 0x0 0x1c 0x180 0x32 0x8 0x32 0x0 + delay 0x2 + launchtemplate gLandsWrathVortexTemplate 0x82 0x7 0x0 0x20 0xf0 0x28 0xb 0xffd2 0x0 + delay 0x2 + launchtemplate gLandsWrathVortexTemplate 0x82 0x7 0x0 0x21 0x1a0 0x28 0x4 0x2a 0x0 + delay 0x2 + launchtemplate gLandsWrathVortexTemplate 0x82 0x7 0x0 0x1f 0x120 0x2d 0x6 0xffd6 0x0 + delay 0x2 + launchtemplate gLandsWrathVortexTemplate 0x82 0x7 0x0 0x1c 0x1c0 0x2d 0xb 0x2e 0x0 + delay 0x2 + launchtemplate gLandsWrathVortexTemplate 0x82 0x7 0x0 0x21 0x1d0 0x32 0xa 0xffce 0x0 + delay 0x2 + return + + +Move_LIGHT_OF_RUIN:: + loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT @charge + loadspritegfx ANIM_TAG_ELECTRIC_ORBS @launchtask particles + loadspritegfx ANIM_TAG_ORBS @beam particles + loadspritegfx ANIM_TAG_ELECTRICITY @discharge + loadspritegfx ANIM_TAG_PINK_PETAL @pink color + loadspritegfx ANIM_TAG_EXPLOSION @explosion + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_ELECTRIC_ORBS, 0, 0xC, 0xC, 0x6DDE @Pink + waitforvisualfinish + launchtask AnimTask_ElectricChargingParticles 0x2 0x4 0x0 0x14 0x0 0x2 + panse_1B SE_W076, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0xF 0x6B1F + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_ATTACKER 0x0 0x4 0x32 0x1 + createvisualtask AnimTask_FlashAnimTagWithColor, 2, ANIM_TAG_ORBS, 1, 12, 0x1f, 0x10, 0, 0 + call LightOfRuinBeam + call LightOfRuinBeam + call LightOfRuinBeam + call LightOfRuinBeam + call LightOfRuinBeam + launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x4 0x0 0x32 0x1 + call LightOfRuinBeam + call LightOfRuinBeam + call LightOfRuinBeam + call LightOfRuinBeam + call LightOfRuinBeam + call LightOfRuinBeam + call LightOfRuinBeam + call LightOfRuinBeam + call LightOfRuinBeam + call LightOfRuinBeam + call LightOfRuinBeam + call LightOfRuinBeam + call LightOfRuinBeam + call LightOfRuinBeam + call LightOfRuinBeam + call LightOfRuinBeam + call LightOfRuinBeam + call LightOfRuinBeam + call LightOfRuinBeam + call LightOfRuinBeam + call LightOfRuinBeam + delay 0x20 + playsewithpan SE_W153, SOUND_PAN_ATTACKER + launchtemplate gLightOfRuinPinkDischargeTemplate 0x2 0x3 0x1 0x10 0x10 + delay 0x2 + launchtemplate gLightOfRuinPinkDischargeTemplate 0x2 0x3 0x1 0xfff0 0xfff0 + delay 0x5 + launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_TARGET 0x0 0x5 0xb 0x1 + launchtemplate gLightOfRuinPinkExplosionTemplate 0x3 0x4 0x0 0x0 0x1 0x1 + delay 0x10 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x10 0x0 0x7FFF + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_ALL_BANKS 0x1 0x0 0x0 0x0 + waitforvisualfinish end - -Move_ORIGIN_PULSE: - end - -Move_PRECIPICE_BLADES: - end - -Move_DRAGON_ASCENT: - end - -Move_HYPERSPACE_FURY: +LightOfRuinBeam: + launchtemplate gLightOfRuinPinkOrbsTemplate 0x82 0x0 + launchtemplate gLightOfRuinPinkOrbsTemplate 0x82 0x0 + delay 0x1 + return + + +Move_ORIGIN_PULSE:: + loadspritegfx ANIM_TAG_THIN_RING @uproar + loadspritegfx ANIM_TAG_WATER_ORB @blue color + loadspritegfx ANIM_TAG_ORBS @circles + loadspritegfx ANIM_TAG_GREEN_SPIKE @inward + loadspritegfx ANIM_TAG_IMPACT @hits + setalpha 8, 8 + fadetobg BG_WATER + waitbgfadeout + launchtask AnimTask_StartSlidingBg 0x5 0x4 0x400 0x0 0x1 0xffff + waitbgfadein + launchtemplate gOriginPulseRingTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1F 0x8 + playsewithpan SE_W025, SOUND_PAN_ATTACKER + delay 0x10 + launchtemplate gOriginPulseRingTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1F 0x8 + delay 0x10 + launchtemplate gOriginPulseRingTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1F 0x8 + playsewithpan SE_OP_BASYU, SOUND_PAN_ATTACKER + waitforvisualfinish + launchtemplate gOriginPulseOrbTemplate 0x2 0x1 0x0 + launchtemplate gOriginPulseOrbTemplate 0x2 0x1 0x2b + launchtemplate gOriginPulseOrbTemplate 0x2 0x1 0x55 + launchtemplate gOriginPulseOrbTemplate 0x2 0x1 0x80 + launchtemplate gOriginPulseOrbTemplate 0x2 0x1 0xaa + launchtemplate gOriginPulseOrbTemplate 0x2 0x1 0xd5 + delay 0x35 + launchtemplate gOriginPulseRingTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1F 0x8 + delay 0x10 + launchtemplate gOriginPulseRingTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1F 0x8 + waitforvisualfinish + delay 0x2F + launchtemplate gOriginPulseOrbInwardTemplate 0x82 0x5 0x1 0x0 0x0 0xFF90 0x10 @up + launchtemplate gOriginPulseOrbInwardTemplate 0x82 0x5 0x1 0x0 0x5F 0xFF9D 0x10 @upper right + launchtemplate gOriginPulseOrbInwardTemplate 0x82 0x5 0x1 0x0 0x73 0x0 0x10 @right + launchtemplate gOriginPulseOrbInwardTemplate 0x82 0x5 0x1 0x0 0x4F 0x37 0x10 @lower right + launchtemplate gOriginPulseOrbInwardTemplate 0x82 0x5 0x1 0x0 0x0 0x53 0x10 @down + launchtemplate gOriginPulseOrbInwardTemplate 0x82 0x5 0x1 0x0 0xFFB0 0x43 0x10 @lower left + launchtemplate gOriginPulseOrbInwardTemplate 0x82 0x5 0x1 0x0 0xFF60 0x0 0x10 @left + launchtemplate gOriginPulseOrbInwardTemplate 0x82 0x5 0x1 0x0 0xFFAA 0xFF94 0x10 @upper left + delay 0x5 + launchtemplate gOriginPulseOrbInwardTemplate 0x82 0x5 0x1 0x0 0x2D 0xFF9D 0x10 @between up and upper right + launchtemplate gOriginPulseOrbInwardTemplate 0x82 0x5 0x1 0x0 0xDF 0xFF9D 0x10 @between right and upper right + launchtemplate gOriginPulseOrbInwardTemplate 0x82 0x5 0x1 0x0 0x9F 0x37 0x10 @between right and lower right + launchtemplate gOriginPulseOrbInwardTemplate 0x82 0x5 0x1 0x0 0x1F 0x37 0x10 @between lower right and down + launchtemplate gOriginPulseOrbInwardTemplate 0x82 0x5 0x1 0x0 0xFFE0 0x43 0x10 @between lower left and down + launchtemplate gOriginPulseOrbInwardTemplate 0x82 0x5 0x1 0x0 0xFF60 0x43 0x10 @between left and lower left + launchtemplate gOriginPulseOrbInwardTemplate 0x82 0x5 0x1 0x0 0xFF2A 0xFFAA 0x10 @between left and upper left + launchtemplate gOriginPulseOrbInwardTemplate 0x82 0x5 0x1 0x0 0xFFDA 0xFF94 0x10 @between up and upper left + waitforvisualfinish + monbg SIDE_TARGET + launchtemplate gOriginPulseBasicSplatTemplate 0x83 0x4 0xffb0 0xfff0 0x1 0x1 + stopsound + playsewithpan SE_W056, SOUND_PAN_ATTACKER + delay 0x5 + launchtemplate gOriginPulseBlueImpactTemplate 0x83 0x2 0x1 0x1 + delay 0x5 + launchtemplate gOriginPulseBasicSplatTemplate 0x83 0x4 0x0 0x0 0x1 0x1 + delay 0x5 + launchtemplate gOriginPulseBlueImpactTemplate 0x83 0x2 0x1 0x1 + delay 0x5 + launchtemplate gOriginPulseBasicSplatTemplate 0x83 0x4 0xffc0 0x14 0x1 0x1 + delay 0x5 + launchtemplate gOriginPulseBlueImpactTemplate 0x83 0x2 0x1 0x1 + delay 0x5 + launchtemplate gOriginPulseBasicSplatTemplate 0x83 0x4 0xffe0 0x5 0x1 0x1 + waitsound + call UnsetPsychicBg + clearmonbg SIDE_TARGET + blendoff end + +Move_PRECIPICE_BLADES:: + loadspritegfx ANIM_TAG_LARGE_SPIKE + loadspritegfx ANIM_TAG_FIRE_PLUME + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_LARGE_SPIKE, 0, 10, 10, 0x159F @Blood orange + monbg SIDE_TARGET + monbgprio_28 ANIM_TARGET + setalpha 12, 8 + fadetobg 0x15 + waitbgfadeout + launchtask AnimTask_PositionFissureBgOnBattler 0x5 0x3 0x1 0x5 0xffff + launchtask AnimTask_HorizontalShake 0x5 0x3 0x5 0xa 0x5 + launchtask AnimTask_HorizontalShake 0x5 0x3 0x4 0xa 0x5 + playsewithpan SE_W089, 0x0 + launchtask AnimTask_IsTargetPlayerSide 0x2 0x0 + jumpargeq 0x7, ANIM_TARGET, PrecipiceBladesOpponent +PrecipiceBladesPlayer: + launchtemplate gPrecipiceBladesSpikeTemplate 3, 0x5, ANIM_ATTACKER, -45, 5, 145 0x0 + delay 10 + launchtemplate gPrecipiceBladesSpikeTemplate 3, 0x5, ANIM_ATTACKER, 10, 7, 135 0x0 + delay 10 + launchtemplate gPrecipiceBladesSpikeTemplate 4, 0x5, ANIM_ATTACKER, -30, 15, 125 0x0 + delay 5 + launchtemplate gPrecipiceBladesSpikeTemplate 5, 0x5, ANIM_ATTACKER, -10, 17, 120 0x0 +PrecipiceBladesContinue: + delay 0x10 + launchtemplate gPrecipiceBladesPlumeTemplate 0x82, 0x3, -15, 18, ANIM_TARGET + launchtemplate gPrecipiceBladesPlumeTemplate 0x82, 0x3, -15, 18, ANIM_DEF_PARTNER + delay 0x20 + launchtemplate gPrecipiceBladesPlumeTemplate 0x82, 0x3, 15, 18, ANIM_TARGET + launchtemplate gPrecipiceBladesPlumeTemplate 0x82, 0x3, 15, 18, ANIM_DEF_PARTNER + delay 0x20 + stopsound + playsewithpan SE_W070, SOUND_PAN_TARGET + launchtemplate gPrecipiceBladesLargeSpikeTemplate 0x82, 0x5, ANIM_TARGET, 0, -25, 40, 0x0 + launchtemplate gPrecipiceBladesLargeSpikeTemplate 0x82, 0x5, ANIM_DEF_PARTNER, 0, -25, 40, 0x0 + delay 0x6 + launchtemplate gSlideMonToOffsetSpriteTemplate 0x82, 0x5, ANIM_TARGET, -20 0 0x6 0x1 + launchtemplate gSlideMonToOffsetSpriteTemplate 0x82, 0x5, ANIM_DEF_PARTNER, -20 0 0x6 0x1 + delay 0x22 + launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x82, 0x3 ANIM_TARGET 0x0 0x6 + launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x82, 0x3 ANIM_DEF_PARTNER 0x0 0x6 + waitforvisualfinish + call UnsetPsychicBg + clearmonbg SIDE_TARGET + blendoff + end +PrecipiceBladesOpponent: + launchtemplate gPrecipiceBladesSpikeTemplate 0x43, 0x5, ANIM_ATTACKER, 35, -5, 145 0x0 + delay 10 + launchtemplate gPrecipiceBladesSpikeTemplate 0x43, 0x5, ANIM_ATTACKER, -20, -7, 135 0x0 + delay 10 + launchtemplate gPrecipiceBladesSpikeTemplate 0x44, 0x5, ANIM_ATTACKER, 20, -15, 125 0x0 + delay 5 + launchtemplate gPrecipiceBladesSpikeTemplate 0x45, 0x5, ANIM_ATTACKER, 0, -17, 120 0x0 + goto PrecipiceBladesContinue + + +Move_DRAGON_ASCENT:: + loadspritegfx ANIM_TAG_DRAGON_ASCENT + loadspritegfx ANIM_TAG_IMPACT + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_IMPACT, 0, 11, 11, RGB(16, 31, 16) + fadetobg BG_COSMIC + waitbgfadeout + launchtask AnimTask_StartSlidingBg, 0x2 0x4, 0, 128, 0, -1 + waitbgfadein + playsewithpan SE_W019, SOUND_PAN_ATTACKER + invisible ANIM_ATTACKER + launchtemplate gDragonAscentFlyUpTemplate 0x2 0x7 0x0 0x0 0x400 0x24 0x15 0x1 ANIM_ATTACKER + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal, 0xa 0x5, (PAL_ATK | PAL_BG | PAL_BG_4 | PAL_BG_5), 4, 0, 14, RGB(21, 31, 27) + playsewithpan SE_W025, SOUND_PAN_ATTACKER + waitforvisualfinish + playsewithpan SE_W197, SOUND_PAN_ATTACKER + launchtask AnimTask_StartSlidingBg, 0x5 0x4, -7304, -784, 1, -1 + delay 2 + launchtask AnimTask_BlendBattleAnimPal, 0xa 0x5, (PAL_ATK | PAL_BG | PAL_BG_4 | PAL_BG_5), 0, 14, 0, RGB(21, 31, 27) + waitforvisualfinish + delay 1 + monbg SIDE_TARGET + setalpha 12, 8 + playsewithpan SE_W104, SOUND_PAN_ATTACKER + launchtemplate gDragonAscentDrakeTemplate, 2, 0x1 5 + delay 1 + playsewithpan SE_W025B, SOUND_PAN_TARGET + launchtemplate gBasicHitSplatSpriteTemplate, 0x84, 0x4, -10, 0, 1, 0 + launchtemplate gSlideMonToOffsetSpriteTemplate, 2, 0x5, 0x1, -32, 0, 0, 3 + launchtask AnimTask_ShakeMonInPlace, 0x2 0x5, ANIM_TARGET, 6, 0, 12, 1 + launchtask AnimTask_BlendBattleAnimPal, 0xa 0x5, (PAL_ATK | PAL_BG | PAL_BG_4 | PAL_BG_5), 2, 16, 0, RGB(26, 31, 0) + waitforvisualfinish + delay 3 + launchtemplate gSlideMonToOriginalPosSpriteTemplate, 2, 0x3, 1, 0, 7 + waitforvisualfinish + blendoff + clearmonbg SIDE_TARGET + call UnsetPsychicBg + end + + +Move_HYPERSPACE_FURY:: + loadspritegfx ANIM_TAG_HOOPA_HAND @Hoopa Hand + loadspritegfx ANIM_TAG_HOOPA_RING @Hoopa Ring + loadspritegfx ANIM_TAG_IMPACT + loadspritegfx ANIM_TAG_POISON_BUBBLE + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0xA 0x0 + waitforvisualfinish + playsewithpan SE_W171, SOUND_PAN_ATTACKER + launchtemplate gHyperspaceFuryRingTemplate 0x3 0x4 0x0 0x0 0x38 0x0 + delay 0x5 + launchtemplate gHyperspaceFuryRingTemplate 0x3 0x4 0x0 0x0 0x38 0x4 + delay 0x5 + launchtemplate gHyperspaceFuryRingTemplate 0x3 0x4 0x0 0x0 0x38 0x8 + delay 0x5 + launchtemplate gHyperspaceFuryRingTemplate 0x3 0x4 0x0 0x0 0x38 0xc + delay 0x5 + launchtemplate gHyperspaceFuryRingTemplate 0x3 0x4 0x0 0x0 0x38 0x10 + delay 0x15 + invisible ANIM_ATTACKER + waitforvisualfinish + fadetobg BG_HYPERSPACE_FURY + waitbgfadeout + launchtask AnimTask_SetPsychicBackground 0x5 0x0 + waitbgfadein + loopsewithpan SE_W003, SOUND_PAN_TARGET, 0x2, 0x10 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0 0x3 0x20 0x1 + launchtemplate gHyperspaceFuryHandTemplate 0x82 0x5 0x1 0x0 0x0 0xffe0 0x10 + call HyperspaceFuryRandomImpact + delay 0x2 + launchtemplate gHyperspaceFuryHandTemplate 0x82 0x5 0x1 0x0 0x16 0xffea 0x10 + call HyperspaceFuryRandomImpact + delay 0x2 + launchtemplate gHyperspaceFuryHandTemplate 0x82 0x5 0x1 0x0 0x1e 0x0 0x10 + call HyperspaceFuryRandomImpact + delay 0x2 + launchtask AnimTask_IsTargetSameSide 0x2 0x0 + launchtask AnimTask_SnatchOpposingMonMove 0x2 0x0 + launchtemplate gHyperspaceFuryHandTemplate 0x82 0x5 0x1 0x0 0x14 0x14 0x10 + call HyperspaceFuryRandomImpact + delay 0x2 + launchtemplate gHyperspaceFuryHandTemplate 0x82 0x5 0x1 0x0 0x0 0x1c 0x10 + call HyperspaceFuryRandomImpact + delay 0x2 + launchtemplate gHyperspaceFuryHandTemplate 0x82 0x5 0x1 0x0 0xffed 0x13 0x10 + call HyperspaceFuryRandomImpact + delay 0x2 + launchtemplate gHyperspaceFuryHandTemplate 0x82 0x5 0x1 0x0 0xffe5 0x0 0x10 + call HyperspaceFuryRandomImpact + delay 0x2 + launchtemplate gHyperspaceFuryHandTemplate 0x82 0x5 0x1 0x0 0xffee 0xffee 0x10 + call HyperspaceFuryRandomImpact + delay 0x2 + launchtemplate gHyperspaceFuryHandTemplate 0x82 0x5 0x1 0x0 0x0 0xffe7 0x10 + call HyperspaceFuryRandomImpact + delay 0x2 + launchtemplate gHyperspaceFuryHandTemplate 0x82 0x5 0x1 0x0 0x11 0xffef 0x10 + call HyperspaceFuryRandomImpact + delay 0x2 + launchtemplate gHyperspaceFuryHandTemplate 0x82 0x5 0x1 0x0 0x17 0x0 0x10 + call HyperspaceFuryRandomImpact + delay 0x2 + launchtemplate gHyperspaceFuryHandTemplate 0x82 0x5 0x1 0x0 0x10 0x10 0x10 + call HyperspaceFuryRandomImpact + delay 0x7 + launchtask SoundTask_PlayDoubleCry 0x2 0x2 ANIM_ATTACKER 0xff + visible ANIM_ATTACKER + launchtask AnimTask_ShakeMon2 0x2 0x5 ANIM_TARGET 0x0 0x3 0x20 0x1 + playsewithpan SE_W007, SOUND_PAN_TARGET + invisible ANIM_ATTACKER + call UnsetPsychicBg + waitforvisualfinish + visible ANIM_ATTACKER + delay 0x1 + invisible ANIM_ATTACKER + delay 0x1 + visible ANIM_ATTACKER + delay 0x1 + invisible ANIM_ATTACKER + delay 0x1 + visible ANIM_ATTACKER + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0x0 0x0 + end +HyperspaceFuryRandomImpact: + launchtemplate gHyperspaceFuryImpactTemplate 0x83 0x2 0x1 0x1 + return + + +@@@@@@@@@@@@@@@@@@@@@@@ GEN 7 @@@@@@@@@@@@@@@@@@@@@@@ +Move_SHORE_UP:: + loadspritegfx ANIM_TAG_FLYING_DIRT @sandstorm + loadspritegfx ANIM_TAG_BLUE_STAR @heal2 + playsewithpan SE_W201, 0x0 + launchtask AnimTask_LoadSandstormBackground 0x5 0x1 0x0 + delay 0x10 + launchtemplate gFlyingSandCrescentSpriteTemplate 0x28 0x4 0xa 0x900 0x60 0x0 + delay 0xa + launchtemplate gFlyingSandCrescentSpriteTemplate 0x28 0x4 0x5a 0x800 0x60 0x0 + delay 0xa + launchtemplate gFlyingSandCrescentSpriteTemplate 0x28 0x4 0x32 0xa00 0x60 0x0 + delay 0xa + launchtemplate gFlyingSandCrescentSpriteTemplate 0x28 0x4 0x14 0x900 0x60 0x0 + delay 0xa + launchtemplate gFlyingSandCrescentSpriteTemplate 0x28 0x4 0x46 0x7c0 0x60 0x0 + delay 0xa + launchtemplate gFlyingSandCrescentSpriteTemplate 0x28 0x4 0x0 0xb00 0x60 0x0 + delay 0xa + launchtemplate gFlyingSandCrescentSpriteTemplate 0x28 0x4 0x3c 0xa00 0x60 0x0 + call HealingEffect + waitforvisualfinish + end + + +Move_FIRST_IMPRESSION:: + loadspritegfx ANIM_TAG_SWEAT_BEAD @astonish + loadspritegfx ANIM_TAG_IMPACT @pound hit + loadspritegfx ANIM_TAG_RAZOR_LEAF @green + launchtemplate gSprayWaterDropletSpriteTemplate 0x85 0x2 0x0 0x1 + playsewithpan SE_W166, SOUND_PAN_TARGET + launchtemplate gSprayWaterDropletSpriteTemplate 0x85 0x2 0x1 0x1 + launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x4 0x0 0x5 0x1 + launchtask AnimTask_StretchTargetUp 0x3 0x0 + waitforvisualfinish + delay 0x19 + launchtemplate gHorizontalLungeSpriteTemplate 0x2 0x2 0x4 0x6 + waitforvisualfinish + monbg ANIM_TARGET @This is placed here on purpose (to not ruin astonishs animation) + delay 0x1 + launchtemplate gFirstImpressionPoundTemplate 0x4 0x4 0xfff6 0x0 0x1 0x0 + loopsewithpan SE_W025B, SOUND_PAN_TARGET 0xA 0x2 + delay 0x1 + launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_TARGET 0xffe4 0x0 0x0 0x3 + waitforvisualfinish + launchtask AnimTask_ShakeMonInPlace 0x2 0x5 0x1 0x4 0x0 0xc 0x1 + waitforvisualfinish + delay 0xa + launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_ATTACKER 0x0 0x6 + delay 0x5 + launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_TARGET 0x0 0x6 + waitforvisualfinish + clearmonbg ANIM_TARGET + end + + +Move_BANEFUL_BUNKER:: + loadspritegfx ANIM_TAG_PROTECT @protect + loadspritegfx ANIM_TAG_POISON_BUBBLE @poison + monbg SIDE_ATTACKER + monbgprio_28 ANIM_ATTACKER + waitplaysewithpan SE_W115, SOUND_PAN_ATTACKER 0x10 + launchtemplate gProtectSpriteTemplate 0x2 0x3 0x18 0x0 0x5a + launchtemplate gBanefulBunkerPoisonBubbleTemplate 0x2 0x4 0xa 0xa 0x19 0x0 + delay 0x4 + launchtemplate gBanefulBunkerPoisonBubbleTemplate 0x2 0x4 0xfff1 0x0 0x19 0x0 + delay 0x4 + launchtemplate gBanefulBunkerPoisonBubbleTemplate 0x2 0x4 0x14 0xa 0x19 0x0 + delay 0x4 + launchtemplate gBanefulBunkerPoisonBubbleTemplate 0x2 0x4 0x0 0xfff6 0x19 0x0 + delay 0x4 + launchtemplate gBanefulBunkerPoisonBubbleTemplate 0x2 0x4 0xfff6 0xf 0x19 0x0 + delay 0x4 + launchtemplate gBanefulBunkerPoisonBubbleTemplate 0x2 0x4 0x19 0x14 0x19 0x0 + delay 0x4 + launchtemplate gBanefulBunkerPoisonBubbleTemplate 0x2 0x4 0xffec 0x14 0x19 0x0 + delay 0x4 + launchtemplate gBanefulBunkerPoisonBubbleTemplate 0x2 0x4 0xc 0x0 0x19 0x0 + waitforvisualfinish + clearmonbg SIDE_ATTACKER + end + + +Move_SPIRIT_SHACKLE:: + loadspritegfx ANIM_TAG_SPIRIT_ARROW @Arrow + loadspritegfx ANIM_TAG_CHAIN_LINK @Chain + monbg SIDE_TARGET + monbgprio_28 ANIM_TARGET + setalpha 12, 8 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0x10 0x0 + waitforvisualfinish + playsewithpan SE_W013B, SOUND_PAN_ATTACKER + launchtemplate gSpiritShackleArrowTemplate 0x82 0x5 0x10 0x0 0x0 0x0 0xf + delay 0x8 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x3 0x0 0xa 0x1 + waitforvisualfinish + loopsewithpan SE_REAPOKE, SOUND_PAN_ATTACKER, 0x1c, 0x2 + launchtemplate gSpiritShackleChainTemplate 0x82 0x2 0xfff0 0xfff0 + delay 0x4 + launchtemplate gSpiritShackleChainTemplate 0x82 0x2 0xfff0 0x0 + delay 0x4 + launchtemplate gSpiritShackleChainTemplate 0x82 0x2 0xfff0 0x10 + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x10 0x0 0x0 + waitforvisualfinish + clearmonbg SIDE_TARGET + blendoff + end + + +Move_DARKEST_LARIAT:: + fadetobg BG_DARK + waitbgfadeout + launchtask AnimTask_StartSlidingBg 0x5 0x4 0x0 0x0 0x0 0xffff + waitbgfadein + loadspritegfx ANIM_TAG_IMPACT @hit + loadspritegfx ANIM_TAG_POISON_BUBBLE @purple color + monbg SIDE_TARGET + setalpha 12, 8 + playsewithpan SE_W104, SOUND_PAN_ATTACKER + waitplaysewithpan SE_W004, SOUND_PAN_TARGET, 0xa + waitplaysewithpan SE_W104, SOUND_PAN_ATTACKER, 0x14 + waitplaysewithpan SE_W004, SOUND_PAN_TARGET, 0x1e + waitplaysewithpan SE_W104, SOUND_PAN_ATTACKER, 0x28 + waitplaysewithpan SE_W004, SOUND_PAN_TARGET, 0x32 + waitplaysewithpan SE_W104, SOUND_PAN_ATTACKER, 0x3c + waitplaysewithpan SE_W004, SOUND_PAN_TARGET, 0x46 + waitplaysewithpan SE_W104, SOUND_PAN_ATTACKER, 0x50 + waitplaysewithpan SE_W004, SOUND_PAN_TARGET, 0x5a + launchtask AnimTask_TranslateMonElliptical 0x2 0x5 0x0 0xffee 0x6 0x6 0x4 + launchtask AnimTask_TranslateMonElliptical 0x2 0x5 0x1 0x12 0x6 0x6 0x4 + call DarkestLariatImpact + call DarkestLariatImpact + call DarkestLariatImpact + waitforvisualfinish + clearmonbg SIDE_TARGET + blendoff + call UnsetPsychicBg + end +DarkestLariatImpact: + launchtemplate gDarkestLariatImpactTemplate 0x3 0x4 0x0 0xfff4 0x1 0x1 + delay 0x8 + launchtemplate gDarkestLariatImpactTemplate 0x3 0x4 0xfff4 0x8 0x1 0x1 + delay 0x8 + launchtemplate gDarkestLariatImpactTemplate 0x3 0x4 0xc 0x0 0x1 0x1 + delay 0x8 + return + + +Move_SPARKLING_ARIA:: + loadspritegfx ANIM_TAG_WATER_ORB @blue color + loadspritegfx ANIM_TAG_BUBBLE @circles + loadspritegfx ANIM_TAG_HYDRO_PUMP @hydro pump + monbg ANIM_ATTACKER + setblends 0x80E + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0xE 0x0 + waitforvisualfinish + launchtemplate gSparklingAriaBlueChargeTemplate 0x2 0x1 0x0 + call SparklingAriaCharge + call SparklingAriaCharge + call SparklingAriaCharge + waitforvisualfinish + delay 0x1E + playsewithpan SE_W056, SOUND_PAN_ATTACKER + call SparklingAriaRain + call SparklingAriaRain + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0xE 0x0 0x0 + waitforvisualfinish + clearmonbg ANIM_ATTACKER + blendoff + end +SparklingAriaRain: + launchtemplate gSparklingAriaRainTemplate 0x82, 0x3, 0x1 0xdc 0x3c + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x3 0x0 0x6 0x1 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_DEF_PARTNER 0x3 0x0 0x6 0x1 + delay 0x2 + launchtemplate gSparklingAriaBubbleRainTemplate 0x82, 0x3, 0x1 0x3c 0x64 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x3 0x0 0x6 0x1 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_DEF_PARTNER 0x3 0x0 0x6 0x1 + delay 0x2 + launchtemplate gSparklingAriaRainTemplate 0x82, 0x3, 0x1 0x8c 0x37 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x3 0x0 0x6 0x1 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_DEF_PARTNER 0x3 0x0 0x6 0x1 + delay 0x2 + launchtemplate gSparklingAriaRainTemplate 0x82, 0x3, 0x1 0xb4 0x32 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x3 0x0 0x6 0x1 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_DEF_PARTNER 0x3 0x0 0x6 0x1 + delay 0x2 + launchtemplate gSparklingAriaRainTemplate 0x82, 0x3, 0x1 0x14 0x5a + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x3 0x0 0x6 0x1 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_DEF_PARTNER 0x3 0x0 0x6 0x1 + delay 0x2 + launchtemplate gSparklingAriaBubbleRainTemplate 0x82, 0x3, 0x1 0x5a 0x5a + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x3 0x0 0x6 0x1 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_DEF_PARTNER 0x3 0x0 0x6 0x1 + delay 0x2 + launchtemplate gSparklingAriaRainTemplate 0x82, 0x3, 0x1 0xa0 0x3c + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x3 0x0 0x6 0x1 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_DEF_PARTNER 0x3 0x0 0x6 0x1 + delay 0x2 + launchtemplate gSparklingAriaRainTemplate 0x82, 0x3, 0x1 0x1e 0x5a + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x3 0x0 0x6 0x1 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_DEF_PARTNER 0x3 0x0 0x6 0x1 + delay 0x2 + launchtemplate gSparklingAriaRainTemplate 0x82, 0x3, 0x1 0x78 0x3c + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x3 0x0 0x6 0x1 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_DEF_PARTNER 0x3 0x0 0x6 0x1 + delay 0x2 + launchtemplate gSparklingAriaBubbleRainTemplate 0x82, 0x3, 0x1 0xc8 0x28 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x3 0x0 0x6 0x1 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_DEF_PARTNER 0x3 0x0 0x6 0x1 + delay 0x2 + return +SparklingAriaCharge: + playsewithpan SE_W152, SOUND_PAN_ATTACKER + launchtemplate gSparklingAriaBubblesTemplate 0x2 0x4 0xa 0xa 0x19 0x0 + delay 0x4 + playsewithpan SE_W152, SOUND_PAN_ATTACKER + launchtemplate gSparklingAriaBubblesTemplate 0x2 0x4 0xfff1 0x0 0x19 0x0 + delay 0x4 + playsewithpan SE_W152, SOUND_PAN_ATTACKER + launchtemplate gSparklingAriaBubblesTemplate 0x2 0x4 0x14 0xa 0x19 0x0 + delay 0x4 + playsewithpan SE_W152, SOUND_PAN_ATTACKER + launchtemplate gSparklingAriaBubblesTemplate 0x2 0x4 0x0 0xfff6 0x19 0x0 + delay 0x4 + playsewithpan SE_W152, SOUND_PAN_ATTACKER + launchtemplate gSparklingAriaBubblesTemplate 0x2 0x4 0xfff6 0xf 0x19 0x0 + delay 0x4 + playsewithpan SE_W152, SOUND_PAN_ATTACKER + launchtemplate gSparklingAriaBubblesTemplate 0x2 0x4 0x19 0x14 0x19 0x0 + delay 0x4 + playsewithpan SE_W152, SOUND_PAN_ATTACKER + launchtemplate gSparklingAriaBubblesTemplate 0x2 0x4 0xffec 0x14 0x19 0x0 + delay 0x4 + playsewithpan SE_W152, SOUND_PAN_ATTACKER + launchtemplate gSparklingAriaBubblesTemplate 0x2 0x4 0xc 0x0 0x19 0x0 + delay 0x4 + return + + +Move_ICE_HAMMER:: + loadspritegfx ANIM_TAG_HORSESHOE_SIDE_FIST @punch + loadspritegfx ANIM_TAG_ICE_CRYSTALS @ice + loadspritegfx ANIM_TAG_ECLIPSING_ORB @gray color + loadspritegfx ANIM_TAG_BLACK_SMOKE @smoke + setalpha 12, 8 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0xC 0x0 + waitforvisualfinish + playsewithpan SE_W104, SOUND_PAN_TARGET + launchtemplate gIceHammerPunchStompTemplate 0x83, 0x3 0x0 0xffe0 0xf + delay 0x13 + playsewithpan SE_W025B, SOUND_PAN_TARGET + launchtask AnimTask_SquishTarget 0x2 0x0 + launchtemplate gIceHammerSmokesTemplate 0x84, 0x5 0x0 0xfff4 0x68 0x0 0x4b + launchtemplate gIceHammerSmokesTemplate 0x84, 0x5 0x0 0xfff4 0x48 0x1 0x4b + launchtemplate gIceHammerSmokesTemplate 0x84, 0x5 0x0 0xfffa 0x38 0x1 0x4b + launchtemplate gIceHammerSmokesTemplate 0x84, 0x5 0x0 0xfffa 0x58 0x0 0x4b + launchtemplate gIceHammerSmokesTemplate 0x84, 0x5 0x0 0x0 0x38 0x0 0x4b + launchtemplate gIceHammerSmokesTemplate 0x84, 0x5 0x0 0x0 0x58 0x1 0x4b + launchtemplate gIceHammerSmokesTemplate 0x84, 0x5 0x0 0x6 0x48 0x0 0x4b + launchtemplate gIceHammerSmokesTemplate 0x84, 0x5 0x0 0x6 0x68 0x1 0x4b + launchtemplate gIceHammerSmokesTemplate 0x84, 0x5 0x0 0xc 0x48 0x0 0x4b + launchtemplate gIceHammerSmokesTemplate 0x84, 0x5 0x0 0xc 0x38 0x1 0x4b + launchtemplate gIceHammerSmokesTemplate 0x84, 0x5 0x0 0x12 0x50 0x0 0x4b + launchtemplate gIceHammerSmokesTemplate 0x84, 0x5 0x0 0x12 0x48 0x1 0x4b + call IceCrystalEffectShort + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0xC 0x0 0x0 + waitforvisualfinish + blendoff + end + + +Move_FLORAL_HEALING:: + loadspritegfx ANIM_TAG_SPARKLE_2 @heal + loadspritegfx ANIM_TAG_FLOWER @flowers + loadspritegfx ANIM_TAG_LEAF @leaves + loadspritegfx ANIM_TAG_ORBS @circles + loadspritegfx ANIM_TAG_PINK_PETAL @pink particles + monbg ANIM_ATTACKER + monbg ANIM_TARGET + playsewithpan SE_W197, SOUND_PAN_ATTACKER + call CIRCLES_LEAVES + call CIRCLES_LEAVES + waitforvisualfinish + panse_1B SE_W004, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0 + playsewithpan SE_W239, 0x0 + launchtemplate gSweetScentPetalSpriteTemplate 0x2 0x3 0x46 0x1 0x40 + delay 0x2 + launchtemplate gFloralHealingWindLeavesTemplate 0x2 0x3 0x3c 0x0 0x40 + delay 0x2 + launchtemplate gSweetScentPetalSpriteTemplate 0x2 0x3 0x50 0x1 0x40 + delay 0x2 + launchtemplate gFloralHealingWindLeavesTemplate 0x2 0x3 0x3a 0x0 0x78 + delay 0x2 + launchtemplate gSweetScentPetalSpriteTemplate 0x2 0x3 0x64 0x0 0x78 + delay 0x2 + launchtemplate gFloralHealingWindLeavesTemplate 0x2 0x3 0x5a 0x0 0x40 + delay 0x2 + launchtemplate gSweetScentPetalSpriteTemplate 0x2 0x3 0x30 0x0 0x40 @2 + delay 0x2 + launchtemplate gFloralHealingWindLeavesTemplate 0x2 0x3 0x5f 0x1 0x50 + delay 0x2 + launchtemplate gSweetScentPetalSpriteTemplate 0x2 0x3 0x64 0x0 0x78 + delay 0x2 + launchtemplate gFloralHealingWindLeavesTemplate 0x2 0x3 0x4b 0x1 0x40 + delay 0x2 + launchtemplate gSweetScentPetalSpriteTemplate 0x2 0x3 0x55 0x0 0x78 + delay 0x2 + loopsewithpan SE_W077, SOUND_PAN_TARGET, 0x12, 0xa + call FloralHealingSpores + call FloralHealingSpores + call FloralHealingSpores + waitforvisualfinish + playsewithpan SE_W071B, SOUND_PAN_ATTACKER + launchtemplate gGrantingStarsSpriteTemplate 0x10 0x7 0xfff1 0x0 0x1 0x0 0x20 0x3c 0x1 + delay 0x8 + launchtemplate gGrantingStarsSpriteTemplate 0x10 0x7 0xc 0xfffb 0x1 0x0 0x20 0x3c 0x1 + waitforvisualfinish + clearmonbg ANIM_TARGET + clearmonbg ANIM_ATTACKER + end +FloralHealingSpores: + launchtemplate gFloralHealingFlowerTemplate 0x2 0x5 0x0 0xffec 0x55 0x50 0x0 + launchtemplate gSweetScentPetalSpriteTemplate 0x2 0x3 0x46 0x1 0x40 + delay 0x2 + launchtemplate gFloralHealingWindLeavesTemplate 0x2 0x3 0x3c 0x0 0x40 + delay 0x2 + launchtemplate gSweetScentPetalSpriteTemplate 0x2 0x3 0x50 0x1 0x40 + delay 0x2 + launchtemplate gFloralHealingWindLeavesTemplate 0x2 0x3 0x3a 0x0 0x78 + delay 0x2 + launchtemplate gSweetScentPetalSpriteTemplate 0x2 0x3 0x64 0x0 0x78 + delay 0x2 + launchtemplate gFloralHealingWindLeavesTemplate 0x2 0x3 0x5a 0x0 0x40 + delay 0x3 + launchtemplate gFloralHealingFlowerTemplate 0x2 0x5 0x0 0xfff6 0xaa 0x50 0x0 + launchtemplate gSweetScentPetalSpriteTemplate 0x2 0x3 0x30 0x0 0x40 + delay 0x2 + launchtemplate gFloralHealingWindLeavesTemplate 0x2 0x3 0x5f 0x1 0x50 + delay 0x2 + launchtemplate gSweetScentPetalSpriteTemplate 0x2 0x3 0x64 0x0 0x78 + delay 0x2 + launchtemplate gFloralHealingWindLeavesTemplate 0x2 0x3 0x4b 0x1 0x40 + delay 0x2 + launchtemplate gSweetScentPetalSpriteTemplate 0x2 0x3 0x55 0x0 0x78 + delay 0x2 + launchtemplate gFloralHealingWindLeavesTemplate 0x2 0x3 0x46 0x1 0x40 + delay 0x3 + launchtemplate gFloralHealingFlowerTemplate 0x2 0x5 0x0 0xfff1 0x0 0x50 0x0 + launchtemplate gFloralHealingWindLeavesTemplate 0x2 0x3 0x3c 0x0 0x40 + delay 0x2 + launchtemplate gSweetScentPetalSpriteTemplate 0x2 0x3 0x50 0x1 0x40 + delay 0x2 + launchtemplate gFloralHealingWindLeavesTemplate 0x2 0x3 0x3a 0x0 0x78 + delay 0x2 + launchtemplate gSweetScentPetalSpriteTemplate 0x2 0x3 0x64 0x0 0x78 + delay 0x2 + launchtemplate gFloralHealingWindLeavesTemplate 0x2 0x3 0x5a 0x0 0x40 + delay 0x2 + launchtemplate gSweetScentPetalSpriteTemplate 0x2 0x3 0x30 0x0 0x40 + delay 0x3 + return +CIRCLES_LEAVES: + launchtemplate gFloralHealingOrbsTemplate 0x82 0x7 0x0 0x1c 0x180 0x32 0x8 0x32 0x0 + delay 0x2 + launchtemplate gFloralHealingLeavesTemplate 0x82 0x7 0x0 0x20 0xf0 0x28 0xb 0xffd2 0x0 + delay 0x2 + launchtemplate gFloralHealingOrbsTemplate 0x82 0x7 0x0 0x21 0x1a0 0x28 0x4 0x2a 0x0 + delay 0x2 + launchtemplate gFloralHealingLeavesTemplate 0x82 0x7 0x0 0x1f 0x120 0x2d 0x6 0xffd6 0x0 + delay 0x2 + launchtemplate gFloralHealingOrbsTemplate 0x82 0x7 0x0 0x1c 0x1c0 0x2d 0xb 0x2e 0x0 + delay 0x2 + launchtemplate gFloralHealingLeavesTemplate 0x82 0x7 0x0 0x21 0x1d0 0x32 0xa 0xffce 0x0 + delay 0x2 + return + + +Move_HIGH_HORSEPOWER:: + loadspritegfx ANIM_TAG_IMPACT @hit + loadspritegfx ANIM_TAG_HORSESHOE_SIDE_FIST @horseshoe + monbg ANIM_TARGET + delay 0x2 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x0 0x0 0x10 0x0 + setalpha 12, 8 + playsewithpan SE_W025, SOUND_PAN_TARGET + launchtemplate gHighHorsepowerHorseshoeTemplate 0x3 0x4 0x0 0x0 0x1 0x32 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_DEF 0x2 0x0 0x7 0x7fff + delay 0x32 + playsewithpan SE_W025B, SOUND_PAN_TARGET + call SetImpactBackground + launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0x0 0x0 0x1 0x0 + launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x4 0x0 0x16 0x1 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_DEF 0x2 0x0 0x0 0x7fff + launchtemplate gComplexPaletteBlendSpriteTemplate 0x2 0x7 0x1f 0x3 0x1 0x0 0x8 0x0 0x0 + waitforvisualfinish + clearmonbg ANIM_TARGET + blendoff + delay 0x2 + restorebg + waitbgfadein + end + + +Move_STRENGTH_SAP:: + loadspritegfx ANIM_TAG_GRAY_SMOKE @smoke + loadspritegfx ANIM_TAG_TEAL_ALERT @inward + loadspritegfx ANIM_TAG_RED_HEART @heart color + loadspritegfx ANIM_TAG_PINK_PETAL @pink color + loadspritegfx ANIM_TAG_ORBS @absorb + loadspritegfx ANIM_TAG_SPARKLE_2 @stars + monbg SIDE_TARGET + playsewithpan SE_W120, SOUND_PAN_TARGET + launchtemplate gStrengthSapRedSmokeTemplate 0x82, 0x4, 0x8 0x3 0x1 0x0 + launchtemplate gStrengthSapRedInwardTemplate 0x4 0x3 0x46 0x0 0x6 + launchtemplate gStrengthSapRedInwardTemplate 0x4 0x3 0x28 0x28 0x6 + launchtemplate gStrengthSapRedInwardTemplate 0x4 0x3 0xa 0xffc4 0x6 + launchtemplate gStrengthSapRedInwardTemplate 0x4 0x3 0xffce 0xffd8 0x6 + launchtemplate gStrengthSapRedInwardTemplate 0x4 0x3 0xffd8 0x28 0x6 + launchtemplate gStrengthSapRedInwardTemplate 0x4 0x3 0x32 0xffce 0x6 + delay 0x2 + launchtemplate gStrengthSapRedSmokeTemplate 0x82, 0x4, 0xfff8 0xfff8 0x1 0x0 + launchtemplate gStrengthSapRedInwardTemplate 0x4 0x3 0x32 0xffe2 0x6 + launchtemplate gStrengthSapRedInwardTemplate 0x4 0x3 0x3c 0xa 0x6 + launchtemplate gStrengthSapRedInwardTemplate 0x4 0x3 0x0 0x3c 0x6 + launchtemplate gStrengthSapRedInwardTemplate 0x4 0x3 0x0 0xffd8 0x6 + launchtemplate gStrengthSapRedInwardTemplate 0x4 0x3 0xffc4 0x14 0x6 + launchtemplate gStrengthSapRedInwardTemplate 0x4 0x3 0xffc4 0xffe2 0x6 + delay 0x2 + launchtemplate gStrengthSapRedSmokeTemplate 0x82, 0x4, 0x8 0xfff8 0x1 0x0 + launchtemplate gStrengthSapRedInwardTemplate 0x4 0x3 0xffce 0x32 0x6 + launchtemplate gStrengthSapRedInwardTemplate 0x4 0x3 0xffc4 0x14 0x6 + launchtemplate gStrengthSapRedInwardTemplate 0x4 0x3 0xffd8 0xffd8 0x6 + launchtemplate gStrengthSapRedInwardTemplate 0x4 0x3 0x14 0xffc4 0x6 + launchtemplate gStrengthSapRedInwardTemplate 0x4 0x3 0x32 0xffce 0x6 + launchtemplate gStrengthSapRedInwardTemplate 0x4 0x3 0x23 0x28 0x6 + delay 0x2 + launchtemplate gStrengthSapRedSmokeTemplate 0x82, 0x4, 0xfff8 0x8 0x1 0x0 + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0x3 0x07FD + delay 0x5 + playsewithpan SE_W152, SOUND_PAN_TARGET + launchtemplate gStrengthSapAbsorbTemplate 0x3 0x4 0x0 0x5 0x8 0x1a + delay 0x4 + playsewithpan SE_W152, SOUND_PAN_TARGET + launchtemplate gStrengthSapAbsorbTemplate 0x3 0x4 0xa 0xfffb 0xfff8 0x1a + delay 0x4 + playsewithpan SE_W152, SOUND_PAN_TARGET + launchtemplate gStrengthSapAbsorbTemplate 0x3 0x4 0xfffb 0xf 0x10 0x21 + delay 0x4 + playsewithpan SE_W152, SOUND_PAN_TARGET + launchtemplate gStrengthSapAbsorbTemplate 0x3 0x4 0x0 0xfff1 0xfff0 0x24 + delay 0x4 + playsewithpan SE_W152, SOUND_PAN_TARGET + launchtemplate gStrengthSapAbsorbTemplate 0x3 0x4 0x0 0x5 0x8 0x1a + delay 0x4 + playsewithpan SE_W152, SOUND_PAN_TARGET + launchtemplate gStrengthSapAbsorbTemplate 0x3 0x4 0xa 0xfffb 0xfff8 0x1a + delay 0x4 + playsewithpan SE_W152, SOUND_PAN_TARGET + launchtemplate gStrengthSapAbsorbTemplate 0x3 0x4 0xfff6 0x14 0x14 0x27 + delay 0x4 + playsewithpan SE_W152, SOUND_PAN_TARGET + launchtemplate gStrengthSapAbsorbTemplate 0x3 0x4 0x5 0xffee 0xffec 0x23 + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x3 0x0 0x07FD + loopsewithpan SE_W215, SOUND_PAN_ATTACKER, 0x10, 0x3 + call GrantingStarsEffect + waitforvisualfinish + clearmonbg SIDE_TARGET + end + + +Move_SOLAR_BLADE:: + loadspritegfx ANIM_TAG_ORBS + choosetwoturnanim SolarBeamSetUp SolarBladeUnleash +SolarBladeUnleash: + loadspritegfx ANIM_TAG_SWORD @swords dance + loadspritegfx ANIM_TAG_CLAW_SLASH @blade hit + loadspritegfx ANIM_TAG_SPARK_2 @yellow color + loadspritegfx ANIM_TAG_SUNLIGHT @sun rays + monbg ANIM_ATTACKER + setblends 0x30d + createvisualtask AnimTask_BlendBattleAnimPal 10, (PAL_BG | PAL_ALL_BANKS), 1, 0, 6, 0x7fff + waitforvisualfinish + playsewithpan SE_W014, SOUND_PAN_ATTACKER + launchtask AnimTask_TranslateMonEllipticalRespectSide 0x2 0x5 0x0 0x10 0x6 0x1 0x4 + launchtemplate gSwordsDanceBladeSpriteTemplate 0x2 0x2 0x0 0x0 + call SolarBladeSunRays + call SolarBladeSunRays + call SolarBladeSunRays + call SolarBladeSunRays + launchtask AnimTask_FlashAnimTagWithColor 0x2 0x7 0x2715 0x2 0x2 0x7ff2 0x10 0x0 0x0 + waitforvisualfinish + call SetSolarbeamBg + playsewithpan SE_W013, SOUND_PAN_TARGET + launchtemplate gSolarBladeImpactTemplate 0x82, 0x3, 0x0 0x0 0x1 + delay 0x2 + launchtask AnimTask_ShakeMon2 0x2 0x5 ANIM_TARGET 0x2 0x0 0xC 0x1 + waitforvisualfinish + createvisualtask AnimTask_BlendBattleAnimPal 10, (PAL_BG | PAL_ALL_BANKS), 1, 6, 0, 0x7fff + waitforvisualfinish + call UnsetPsychicBg + clearmonbg ANIM_ATTACKER + blendoff + end +SolarBladeSunRays: + launchtemplate gSunlightRaySpriteTemplate 0x28 0x0 + delay 0x6 + return + + +Move_LEAFAGE:: + loadspritegfx ANIM_TAG_RAZOR_LEAF @leaf + loadspritegfx ANIM_TAG_IMPACT @hit + monbg SIDE_TARGET + playsewithpan SE_W013B, SOUND_PAN_ATTACKER + launchtemplate gRazorLeafCutterSpriteTemplate 0x83 0x7 0x14 0xfff6 0x14 0x0 0x16 0x14 0x1 + launchtemplate gRazorLeafCutterSpriteTemplate 0x83 0x7 0x14 0xfff6 0x14 0x0 0x16 0xffec 0x1 + launchtemplate gRazorLeafCutterSpriteTemplate 0x83 0x7 0x14 0xfff6 0x14 0x0 0x16 0x0 0x1 + delay 0x14 + playsewithpan SE_W013, SOUND_PAN_TARGET + launchtemplate gLeafageImpactTemplate 0x2 0x4 0x0 0x0 0x1 0x2 + waitforvisualfinish + clearmonbg SIDE_TARGET + end + + +Move_SPOTLIGHT:: + loadspritegfx ANIM_TAG_SPOTLIGHT + loadspritegfx ANIM_TAG_TAG_HAND + launchtask AnimTask_CreateSpotlight 0x2 0x0 + launchtask AnimTask_HardwarePaletteFade 0x2 0x5 0xf8 0x3 0x0 0xa 0x0 + waitforvisualfinish + playsewithpan SE_C_PASI, SOUND_PAN_ATTACKER + launchtemplate gSpotlightSpriteTemplate 0x82 0x2 0x0 0xfff8 + delay 0x40 + launchtask AnimTask_HardwarePaletteFade 0x2 0x5 0xf8 0x3 0xa 0x0 0x1 + waitforvisualfinish + launchtask AnimTask_RemoveSpotlight 0x2 0x0 + end + + +Move_TOXIC_THREAD:: + loadspritegfx ANIM_TAG_STRING + loadspritegfx ANIM_TAG_WEB_THREAD + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_STRING, 0, 0xA, 0xA, 0x6038 @Purple + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_WEB_THREAD, 0x0, 0xA, 0xA, 0x6038 @Purple + monbg SIDE_TARGET + delay 0x0 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0x9 0x0 + waitforvisualfinish + loopsewithpan SE_W081, SOUND_PAN_ATTACKER, 0x9, 0x6 + call SpiderWebThread + call SpiderWebThread + call SpiderWebThread + call SpiderWebThread + call SpiderWebThread + call SpiderWebThread + call SpiderWebThread + call SpiderWebThread + call SpiderWebThread + call SpiderWebThread + call SpiderWebThread + call SpiderWebThread + call SpiderWebThread + call SpiderWebThread + call SpiderWebThread + call SpiderWebThread + call SpiderWebThread + call SpiderWebThread + waitforvisualfinish + playsewithpan SE_W081B, SOUND_PAN_TARGET + launchtemplate gToxicThreadString 0x82 0x2 0x0 0xa + delay 0x4 + launchtemplate gToxicThreadString 0x82 0x2 0x0 0xfffe + delay 0x4 + launchtemplate gToxicThreadString 0x82 0x2 0x0 0x16 + waitforvisualfinish + clearmonbg SIDE_TARGET + delay 0x1 + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x9 0x0 0x0 + end + + +Move_LASER_FOCUS:: + loadspritegfx ANIM_TAG_EYE_SPARKLE @red + loadspritegfx ANIM_TAG_OPENING_EYE @eyes + loadspritegfx ANIM_TAG_LEER @leer + monbg ANIM_ATTACKER + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0xC 0x0 + waitforvisualfinish + launchtemplate gLaserFocusRedEyesTemplate 0x5 0x4 0x0 0x0 0x0 0x0 + waitforvisualfinish + playsewithpan SE_W043, SOUND_PAN_ATTACKER + launchtemplate gLeerSpriteTemplate 0x2 0x2 0x18 0xfff4 + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0xC 0x0 0x0 + waitforvisualfinish + clearmonbg ANIM_ATTACKER + end + + +Move_GEAR_UP:: + loadspritegfx ANIM_TAG_GEAR + loadspritegfx ANIM_TAG_SPARK_2 @sparks + launchtask AnimTask_BlendBattleAnimPal 0xA 0x5 PAL_ATK 0x2 0x0 0x9 0x039B + launchtemplate gGearUpGearsTemplate 0x2 0x4 0x0 0xffe8 0x8 0x8c + playsewithpan SE_TAMAKORO_E, SOUND_PAN_ATTACKER + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x20 0x18 0xbe 0xc 0x0 0x1 0x0 + delay 0x0 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x50 0x18 0x16 0xc 0x0 0x1 0x0 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x9c 0x18 0x79 0xd 0x0 0x1 0x1 + delay 0xF + playsewithpan SE_TAMAKORO_E, SOUND_PAN_ATTACKER + launchtemplate gGearUpGearsTemplate 0x2 0x4 0x0 0xffe8 0x8 0x8c + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x64 0x18 0x3c 0xa 0x0 0x1 0x0 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0xaa 0x18 0x2a 0xb 0x0 0x1 0x1 + delay 0x0 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0xee 0x18 0xa5 0xa 0x0 0x1 0x1 + delay 0xF + playsewithpan SE_TAMAKORO_E, SOUND_PAN_ATTACKER + launchtemplate gGearUpGearsTemplate 0x2 0x4 0x0 0xffe8 0x8 0x8c + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x20 0x18 0xbe 0xc 0x0 0x1 0x0 + delay 0x0 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x50 0x18 0x16 0xc 0x0 0x1 0x0 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x9c 0x18 0x79 0xd 0x0 0x1 0x1 + delay 0xF + playsewithpan SE_TAMAKORO_E, SOUND_PAN_ATTACKER + call GearUpSparks + call GearUpSparks + call GearUpSparks + playsewithpan SE_TAMAKORO_E, SOUND_PAN_ATTACKER + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x20 0x18 0xbe 0xc 0x0 0x1 0x0 + delay 0x0 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x50 0x18 0x16 0xc 0x0 0x1 0x0 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x9c 0x18 0x79 0xd 0x0 0x1 0x1 + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xA 0x5 PAL_ATK 0x2 0x9 0x0 0x039B + waitforvisualfinish + end +GearUpSparks: + playsewithpan SE_TAMAKORO_E, SOUND_PAN_ATTACKER + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x20 0x18 0xbe 0xc 0x0 0x1 0x0 + delay 0x0 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x50 0x18 0x16 0xc 0x0 0x1 0x0 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x9c 0x18 0x79 0xd 0x0 0x1 0x1 + delay 0xF + playsewithpan SE_TAMAKORO_E, SOUND_PAN_ATTACKER + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x64 0x18 0x3c 0xa 0x0 0x1 0x0 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0xaa 0x18 0x2a 0xb 0x0 0x1 0x1 + delay 0x0 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0xee 0x18 0xa5 0xa 0x0 0x1 0x1 + delay 0xF + return + + +Move_THROAT_CHOP:: + loadspritegfx ANIM_TAG_HANDS_AND_FEET @karate chop + loadspritegfx ANIM_TAG_IMPACT @hit + loadspritegfx ANIM_TAG_SMALL_RED_EYE @red color + monbg SIDE_TARGET + monbgprio_28 ANIM_TARGET + setalpha 12, 8 + playsewithpan SE_W104, SOUND_PAN_TARGET + launchtemplate gKarateChopSpriteTemplate 0x2 0x8 0xfff0 0x0 0x0 0x0 0xa 0x1 0x3 0x0 + waitforvisualfinish + launchtask AnimTask_InvertScreenColor 0x2 0x3 0x101 0x101 0x101 + launchtemplate gThroatChopRedImpactTemplate 0x3 0x4 0x0 0x0 0x1 0x2 + delay 0x3 + launchtemplate gThroatChopRedImpactTemplate 0x3 0x4 0x0 0x0 0x1 0x2 + delay 0x3 + launchtemplate gThroatChopRedImpactTemplate 0x3 0x4 0x0 0x0 0x1 0x2 + delay 0x3 + launchtemplate gThroatChopRedImpactTemplate 0x3 0x4 0x0 0x0 0x1 0x2 + delay 0x3 + launchtemplate gThroatChopRedImpactTemplate 0x3 0x4 0x0 0x0 0x1 0x2 + delay 0x3 + launchtemplate gThroatChopRedImpactTemplate 0x3 0x4 0x0 0x0 0x1 0x2 + delay 0x3 + launchtemplate gThroatChopRedImpactTemplate 0x3 0x4 0x0 0x0 0x1 0x2 + delay 0x3 + launchtemplate gThroatChopRedImpactTemplate 0x3 0x4 0x0 0x0 0x1 0x2 + playsewithpan SE_W003, SOUND_PAN_TARGET + launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_TARGET 0x4 0x0 0x6 0x1 + waitforvisualfinish + launchtask AnimTask_InvertScreenColor 0x2 0x3 0x101 0x101 0x101 + waitforvisualfinish + clearmonbg SIDE_TARGET + blendoff + end + + +Move_POLLEN_PUFF:: + launchtask AnimTask_IsTargetPartner 0x5 0x0 + jumpargeq 0x0, 0x1, PollenPuffAlly +PollenPuffOpponent: + loadspritegfx ANIM_TAG_SPARKLE_2 @stars + loadspritegfx ANIM_TAG_PINK_PETAL @pink color + loadspritegfx ANIM_TAG_BLACK_BALL_2 @circle launch + loadspritegfx ANIM_TAG_SMALL_EMBER @yellow color + loadspritegfx ANIM_TAG_SPORE @ball + loadspritegfx ANIM_TAG_FLAT_ROCK @brown color + loadspritegfx ANIM_TAG_ORBS @hit + monbg ANIM_ATTACKER + setalpha 12, 8 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0x8 0x0 + waitforvisualfinish + launchtask AnimTask_RockMonBackAndForth 0x5 0x3 0x0 0x2 0x0 + launchtemplate gPollenPuffPinkStarTemplate 0x2 0x4 0xa 0xa 0x19 0x0 + playsewithpan SE_W234, SOUND_PAN_ATTACKER + delay 0xD + launchtemplate gPollenPuffPinkStarTemplate 0x2 0x4 0xfff1 0x0 0x19 0x0 + playsewithpan SE_W234, SOUND_PAN_ATTACKER + delay 0xD + launchtemplate gPollenPuffPinkStarTemplate 0x2 0x4 0xa 0xa 0x19 0x0 + playsewithpan SE_W234, SOUND_PAN_ATTACKER + delay 0xD + launchtemplate gPollenPuffPinkStarTemplate 0x2 0x4 0xfff1 0x0 0x19 0x0 + playsewithpan SE_W234, SOUND_PAN_ATTACKER + clearmonbg ANIM_ATTACKER + waitforvisualfinish + stopsound + monbg ANIM_TARGET + launchtemplate gPollenPuffPinkSparkleTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0xA0 0x28 0x0 + launchtemplate gPollenPuffPinkSparkleTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x110 0x28 0x0 + launchtemplate gPollenPuffPinkSparkleTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0xB0 0x28 0x0 + launchtemplate gPollenPuffPinkSparkleTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0x100 0x28 0x0 + launchtemplate gPollenPuffYellowSparkleTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x90 0x28 0x0 + launchtemplate gPollenPuffYellowSparkleTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x110 0x28 0x0 + launchtemplate gPollenPuffYellowSparkleTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0xB0 0x28 0x0 + launchtemplate gPollenPuffYellowSparkleTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0x100 0x28 0x0 + delay 0x1 + playsewithpan SE_W028, SOUND_PAN_TARGET + launchtemplate gPollenPuffSporeTemplate 0x82 0x6 0xa 0x0 0x0 0x0 0x19 0xffe0 + waitforvisualfinish + playsewithpan SE_W153, SOUND_PAN_ATTACKER + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + launchtemplate gPollenPuffImpactTemplates 0x82 0x5 0x1 0x1 0x0 0xFFE0 0x10 @up + launchtemplate gPollenPuffImpactTemplates 0x82 0x5 0x1 0x1 0xFFEE 0xFFEE 0x10 @upperleft + launchtemplate gPollenPuffImpactTemplates 0x82 0x5 0x1 0x1 0x0 0x1C 0x10 @down + delay 0x4 + launchtemplate gPollenPuffImpactTemplates 0x82 0x5 0x1 0x1 0xFFE5 0x0 0x10 @left + launchtemplate gPollenPuffImpactTemplates 0x82 0x5 0x1 0x1 0x14 0x14 0x10 @lowerright + launchtemplate gPollenPuffImpactTemplates 0x82 0x5 0x1 0x1 0xFFED 0x13 0x10 @lowerleft + delay 0x4 + launchtemplate gPollenPuffImpactTemplates 0x82 0x5 0x1 0x1 0x1E 0x0 0x10 @right + launchtemplate gPollenPuffImpactTemplates 0x82 0x5 0x1 0x1 0x16 0xFFEA 0x10 @upperright + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x8 0x0 0x0 + waitforvisualfinish + clearmonbg ANIM_TARGET + blendoff + end +PollenPuffAlly: + loadspritegfx ANIM_TAG_SPARKLE_2 @stars + loadspritegfx ANIM_TAG_PINK_PETAL @pink color + loadspritegfx ANIM_TAG_BLACK_BALL_2 @circle launch + loadspritegfx ANIM_TAG_SMALL_EMBER @yellow color + loadspritegfx ANIM_TAG_SPORE @ball + monbg ANIM_ATTACKER + setalpha 12, 8 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0x8 0x0 + waitforvisualfinish + launchtask AnimTask_RockMonBackAndForth 0x5 0x3 0x0 0x2 0x0 + launchtemplate gPollenPuffPinkStarTemplate 0x2 0x4 0xa 0xa 0x19 0x0 + playsewithpan SE_W234, SOUND_PAN_ATTACKER + delay 0xD + launchtemplate gPollenPuffPinkStarTemplate 0x2 0x4 0xfff1 0x0 0x19 0x0 + playsewithpan SE_W234, SOUND_PAN_ATTACKER + delay 0xD + launchtemplate gPollenPuffPinkStarTemplate 0x2 0x4 0xa 0xa 0x19 0x0 + playsewithpan SE_W234, SOUND_PAN_ATTACKER + delay 0xD + launchtemplate gPollenPuffPinkStarTemplate 0x2 0x4 0xfff1 0x0 0x19 0x0 + playsewithpan SE_W071B, SOUND_PAN_ATTACKER + clearmonbg ANIM_ATTACKER + waitforvisualfinish + stopsound + playsewithpan SE_W028, SOUND_PAN_ATTACKER + monbg ANIM_TARGET + launchtemplate gPollenPuffPinkSparkleTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0xa0 0x28 0x0 + launchtemplate gPollenPuffPinkSparkleTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x120 0x28 0x0 + launchtemplate gPollenPuffPinkSparkleTemplate 0x84 0x7 0xa 0x0 0x8 0x1e SOUND_PAN_ATTACKER 0x28 0x0 + launchtemplate gPollenPuffPinkSparkleTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0x110 0x28 0x0 + launchtemplate gPollenPuffYellowSparkleTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0xa0 0x28 0x0 + launchtemplate gPollenPuffYellowSparkleTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x120 0x28 0x0 + launchtemplate gPollenPuffYellowSparkleTemplate 0x84 0x7 0xa 0x0 0x8 0x1e SOUND_PAN_ATTACKER 0x28 0x0 + launchtemplate gPollenPuffYellowSparkleTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0x110 0x28 0x0 + delay 0x1 + launchtemplate gPollenPuffSporeTemplate 0x82 0x6 0xa 0x0 0x0 0x0 0x19 0xffe0 + waitforvisualfinish + unloadspritegfx ANIM_TAG_SPARKLE_2 @stars + loadspritegfx ANIM_TAG_BLUE_STAR @heal + playsewithpan SE_W071B, SOUND_PAN_ATTACKER + launchtemplate gPollenPuffHealTemplate 0x2 0x4 0x0 0xfffb 0x1 0x0 + delay 0x7 + launchtemplate gPollenPuffHealTemplate 0x2 0x4 0xfff1 0xa 0x1 0x0 + delay 0x7 + launchtemplate gPollenPuffHealTemplate 0x2 0x4 0xfff1 0xfff1 0x1 0x0 + delay 0x7 + launchtemplate gPollenPuffHealTemplate 0x2 0x4 0xa 0xfffb 0x1 0x0 + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x8 0x1 0x0 + waitforvisualfinish + clearmonbg ANIM_TARGET + blendoff + end + + +Move_ANCHOR_SHOT:: + loadspritegfx ANIM_TAG_CHAIN_LINK + loadspritegfx ANIM_TAG_ANCHOR + playsewithpan SE_RU_HYUU SOUND_PAN_TARGET + monbg ANIM_TARGET + launchtemplate gAnchorShotAngledAnchorTemplate 0x2 0x3 0x0 0x0 0x35 + waitforvisualfinish + launchtemplate gAnchorShotAnchorTemplate 0x3 0x3 0x0 0xffe0 0xf + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0 0x3 0xf 0x1 + delay 0x25 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0 0x3 0xf 0x1 + waitforvisualfinish + loopsewithpan SE_REAPOKE, SOUND_PAN_ATTACKER 0x1c 0x2 + launchtemplate gAnchorShotChainTemplate 0x82 0x2 0xfff0 0xfff0 + delay 0x4 + launchtemplate gAnchorShotChainTemplate 0x82 0x2 0xfff0 0x0 + delay 0x4 + launchtemplate gAnchorShotChainTemplate 0x82 0x2 0xfff0 0x10 + waitforvisualfinish + clearmonbg ANIM_TARGET + end + + +Move_PSYCHIC_TERRAIN:: + loadspritegfx ANIM_TAG_ORBS @Recover Ball + loadspritegfx ANIM_TAG_GREEN_SPARKLE @Green Star + loadspritegfx ANIM_TAG_POISON_BUBBLE @Purple Colour + playsewithpan SE_W215, SOUND_PAN_ATTACKER + launchtemplate gPsychicTerrainOrbsTemplate 0x2 0x2 0x1a 0x0 + launchtemplate gPsychicTerrainOrbsTemplate 0x2 0x2 0x1a 0x2a + launchtemplate gPsychicTerrainOrbsTemplate 0x2 0x2 0x1a 0x54 + launchtemplate gPsychicTerrainOrbsTemplate 0x2 0x2 0x1a 0x7e + launchtemplate gPsychicTerrainOrbsTemplate 0x2 0x2 0x1a 0xa8 + launchtemplate gPsychicTerrainOrbsTemplate 0x2 0x2 0x1a 0xd2 + delay 0x34 + setarg 0x7 0xffff + playsewithpan SE_W213, SOUND_PAN_ATTACKER + launchtask AnimTask_ScaleMonAndRestore 0x5 0x5 0xfff9 0xfff9 0xb 0x0 0x0 + launchtemplate gPsychicTerrainStarTemplate 0x82 0x1 0x0 + launchtemplate gPsychicTerrainStarTemplate 0x82 0x1 0x20 + launchtemplate gPsychicTerrainStarTemplate 0x82 0x1 0x40 + launchtemplate gPsychicTerrainStarTemplate 0x82 0x1 0x60 + launchtemplate gPsychicTerrainStarTemplate 0x82 0x1 0x80 + launchtemplate gPsychicTerrainStarTemplate 0x82 0x1 0xa0 + launchtemplate gPsychicTerrainStarTemplate 0x82 0x1 SOUND_PAN_ATTACKER + launchtemplate gPsychicTerrainStarTemplate 0x82 0x1 0xe0 + waitforvisualfinish + restorebg + waitbgfadein + loopsewithpan SE_W048, SOUND_PAN_TARGET, 0xa, 0x3 + waitsound + end + + +Move_LUNGE:: + loadspritegfx ANIM_TAG_IMPACT @hit + loadspritegfx ANIM_TAG_TEAL_ALERT @hit particles + loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT @psycho boost charge + loadspritegfx ANIM_TAG_LEAF @green + loadspritegfx ANIM_TAG_RAZOR_LEAF @green + loadspritegfx ANIM_TAG_SMALL_BUBBLES @ball + monbg SIDE_ATTACKER + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_ATTACKER 0x3 0x0 0xf0 0x0 + loopsewithpan SE_W060B, SOUND_PAN_ATTACKER, 0xe, 0xa + launchtemplate gLungeGreenChargeTemplate 0x2 0x0 + delay 0x6e + delay 0x3e + playsewithpan SE_W100, SOUND_PAN_ATTACKER + delay 0x15 + clearmonbg SIDE_ATTACKER + invisible ANIM_ATTACKER + waitforvisualfinish + playsewithpan SE_W039, SOUND_PAN_ATTACKER + launchtemplate gLungeGreenBubbleTemplate 0x82 0x6 0xa 0x0 0x0 0x0 0x19 0xffe0 + delay 0xF + monbg SIDE_TARGET + delay 0x1 + launchtemplate gTealAlertSpriteTemplate 0x4 0x3 0x46 0x0 0x6 + launchtemplate gTealAlertSpriteTemplate 0x4 0x3 0x28 0x28 0x6 + launchtemplate gTealAlertSpriteTemplate 0x4 0x3 0xa 0xffc4 0x6 + launchtemplate gTealAlertSpriteTemplate 0x4 0x3 0xffce 0xffd8 0x6 + launchtemplate gTealAlertSpriteTemplate 0x4 0x3 0xffd8 0x28 0x6 + launchtemplate gTealAlertSpriteTemplate 0x4 0x3 0x32 0xffce 0x6 + launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_TARGET 0x0 0x5 0xb 0x1 + delay 0x2 + launchtemplate gTealAlertSpriteTemplate 0x4 0x3 0x32 0xffe2 0x6 + launchtemplate gTealAlertSpriteTemplate 0x4 0x3 0x3c 0xa 0x6 + launchtemplate gTealAlertSpriteTemplate 0x4 0x3 0x0 0x3c 0x6 + launchtemplate gTealAlertSpriteTemplate 0x4 0x3 0x0 0xffd8 0x6 + launchtemplate gTealAlertSpriteTemplate 0x4 0x3 0xffc4 0x14 0x6 + launchtemplate gTealAlertSpriteTemplate 0x4 0x3 0xffc4 0xffe2 0x6 + delay 0x2 + launchtemplate gTealAlertSpriteTemplate 0x4 0x3 0xffce 0x32 0x6 + launchtemplate gTealAlertSpriteTemplate 0x4 0x3 0xffc4 0x14 0x6 + launchtemplate gTealAlertSpriteTemplate 0x4 0x3 0xffd8 0xffd8 0x6 + launchtemplate gTealAlertSpriteTemplate 0x4 0x3 0x14 0xffc4 0x6 + launchtemplate gTealAlertSpriteTemplate 0x4 0x3 0x32 0xffce 0x6 + launchtemplate gTealAlertSpriteTemplate 0x4 0x3 0x23 0x28 0x6 + waitforvisualfinish + playsewithpan SE_W003, SOUND_PAN_TARGET + launchtemplate gLungeGreenImpactTemplate 0x2 0x4 0x0 0x0 0x1 0x2 + waitforvisualfinish + visible ANIM_ATTACKER + clearmonbg SIDE_TARGET + end + + +Move_FIRE_LASH:: + loadspritegfx ANIM_TAG_SMALL_EMBER + monbg SIDE_TARGET + monbgprio_2A ANIM_TARGET + launchtemplate gFireSpiralOutwardSpriteTemplate 0x3 0x4 0x0 0x0 0x38 0x0 + playsewithpan SE_W172, SOUND_PAN_ATTACKER + delay 0x2 + launchtemplate gFireSpiralOutwardSpriteTemplate 0x3 0x4 0x0 0x0 0x38 0x4 + playsewithpan SE_W172, SOUND_PAN_ATTACKER + delay 0x2 + launchtemplate gFireSpiralOutwardSpriteTemplate 0x3 0x4 0x0 0x0 0x38 0x8 + playsewithpan SE_W172, SOUND_PAN_ATTACKER + delay 0x2 + launchtemplate gFireSpiralOutwardSpriteTemplate 0x3 0x4 0x0 0x0 0x38 0xc + playsewithpan SE_W172, SOUND_PAN_ATTACKER + delay 0x2 + launchtemplate gFireSpiralOutwardSpriteTemplate 0x3 0x4 0x0 0x0 0x38 0x10 + playsewithpan SE_W172, SOUND_PAN_ATTACKER + delay 0x2 + launchtemplate gFireSpiralOutwardSpriteTemplate 0x3 0x4 0x0 0x0 0x38 0x14 + playsewithpan SE_W172, SOUND_PAN_ATTACKER + delay 0x2 + launchtemplate gFireSpiralOutwardSpriteTemplate 0x3 0x4 0x0 0x0 0x38 0x18 + playsewithpan SE_W172, SOUND_PAN_ATTACKER + waitforvisualfinish + launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_ATTACKER 0x18 0x0 0x0 0x6 + delay 0x4 + launchtask AnimTask_ShakeMon 0x2 0x5 0x1 0x5 0x0 0x8 0x1 + launchtask AnimTask_BlendMonInAndOut 0x3 0x5 0x1 0x1f 0xc 0x1 0x1 + playsewithpan SE_W172B, SOUND_PAN_TARGET + loadspritegfx ANIM_TAG_SLASH + launchtemplate gSlashSliceSpriteTemplate 0x82, 0x3, 0x1 0xfff8 0x0 + playsewithpan SE_W013, SOUND_PAN_TARGET + delay 0x4 + launchtemplate gSlashSliceSpriteTemplate 0x82, 0x3, 0x1 0x8 0x0 + launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x4 0x0 0x12 0x1 + playsewithpan SE_W013, SOUND_PAN_TARGET + delay 0x7 + launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_ATTACKER 0x0 0x9 + waitforvisualfinish + clearmonbg SIDE_TARGET + end + + +Move_POWER_TRIP:: + loadspritegfx ANIM_TAG_FOCUS_ENERGY @focus energy + loadspritegfx ANIM_TAG_HANDS_AND_FEET @black color + loadspritegfx ANIM_TAG_PURPLE_FLAME @dark violet color + loadspritegfx ANIM_TAG_IMPACT @hit + monbg SIDE_TARGET + playsewithpan SE_W082, SOUND_PAN_ATTACKER + call PowerTripBuffUp + delay 0x8 + launchtask AnimTask_BlendColorCycle 0x2 0x6 PAL_ATK 0x2 0x2 0x0 0xb 0x0 + launchtask AnimTask_ShakeMon2 0x2 0x5 0x0 0x1 0x0 0x20 0x1 + call PowerTripBuffUp + delay 0x8 + call PowerTripBuffUp + waitforvisualfinish + playsewithpan SE_W003, SOUND_PAN_TARGET + launchtemplate gPowerTripImpactTemplate 0x2 0x4 0xFFF5 0xA 0x1 0x2 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + delay 0x5 + playsewithpan SE_W003, SOUND_PAN_TARGET + launchtemplate gPowerTripImpactTemplate 0x2 0x4 0x0 0xFFF5 0x1 0x2 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + delay 0x5 + playsewithpan SE_W003, SOUND_PAN_TARGET + launchtemplate gPowerTripImpactTemplate 0x2 0x4 0xA 0x0 0x1 0x2 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + waitforvisualfinish + clearmonbg SIDE_TARGET + end +PowerTripBuffUp: + launchtemplate gPowerTripFocusEnergyTemplate 0x2 0x4 0x0 0xffe8 0x1a 0x2 + delay 0x4 + launchtemplate gPowerTripFocusEnergyTemplate 0x2 0x4 0x0 0xe 0x1c 0x1 + delay 0x4 + launchtemplate gPowerTripFocusEnergyTemplate 0x2 0x4 0x0 0xfffb 0xa 0x2 + delay 0x4 + launchtemplate gPowerTripFocusEnergyTemplate 0x2 0x4 0x0 0x1c 0x1a 0x3 + delay 0x4 + launchtemplate gPowerTripFocusEnergyTemplate 0x2 0x4 0x0 0xfff4 0x0 0x1 + return + + +Move_BURN_UP:: + loadspritegfx ANIM_TAG_THIN_RING @ring + loadspritegfx ANIM_TAG_SMALL_RED_EYE @red color + loadspritegfx ANIM_TAG_PINK_CLOUD @yawn + loadspritegfx ANIM_TAG_SMALL_EMBER @fire + monbg SIDE_TARGET + setblends 0x120C + fadetobg BG_FIRE + waitbgfadeout + launchtask AnimTask_StartSlidingBg 0x5 0x4 0xA00 0x0 0x1 0xffff + waitbgfadein + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0x5 0x1c + waitforvisualfinish + launchtask AnimTask_AllocBackupPalBuffer 0x5 0x0 + waitforvisualfinish + launchtask AnimTask_CopyPalUnfadedToBackup 0x5 0x2 0x0 0x1 + delay 0x1 + launchtask AnimTask_CopyPalFadedToUnfaded 0x5 0x1 0x0 + delay 0x1 + loopsewithpan SE_W036, SOUND_PAN_ATTACKER 0x9 0x2 + launchtask AnimTask_CopyPalUnfadedToBackup 0x5 0x2 0x1 0x0 + delay 0x1 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_ATK 0x1 0x0 0xd 0x1c + launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_ATTACKER 0x2 0x0 0xf 0x1 + waitforvisualfinish + delay 0x1E + launchtemplate gUproarRingSpriteTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1f 0x8 + waitforvisualfinish + playsewithpan SE_W172, SOUND_PAN_ATTACKER + launchtemplate gBurnUpRedYawnTemplate 0x80, 0x6 0x0 0x0 0x0 0x0 0x1e 0x0 + delay 0x1 + launchtask AnimTask_CopyPalFadedToUnfaded 0x5 0x1 0x1 + delay 0x1 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_ATK 0x0 0x0 0xd 0x4a52 + launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_ATTACKER 0x3 0x0 0xf 0x1 + delay 0xF + launchtask AnimTask_BlendBattleAnimPal 0xA 0x5 PAL_DEF 0x2 0x0 0xC 0x1C + delay 0x1 + launchtask AnimTask_CopyPalUnfadedFromBackup 0x5 0x2 0x0 0x1 + delay 0x1 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x5 0x0 0x1c + delay 0x1 + launchtask AnimTask_CopyPalUnfadedFromBackup 0x5 0x2 0x1 0x0 + delay 0x1 + playsewithpan SE_W172B, SOUND_PAN_TARGET + launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_TARGET 0x2 0x0 0xf 0x1 + call FireSpreadEffect + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_ATK 0x0 0xd 0x0 0x4a52 + delay 0x1 + launchtask AnimTask_FreeBackupPalBuffer 0x5 0x0 + delay 0x1 + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xA 0x5 PAL_DEF 0x2 0xC 0x0 0x1C + waitforvisualfinish + call UnsetPsychicBg + clearmonbg SIDE_TARGET + blendoff + end + + +Move_SPEED_SWAP:: + loadspritegfx ANIM_TAG_THIN_RING @ring + loadspritegfx ANIM_TAG_ICE_CHUNK @blue green + loadspritegfx ANIM_TAG_ORBS @circle + monbg ANIM_TARGET + panse_1B SE_W107, SOUND_PAN_TARGET, SOUND_PAN_ATTACKER, 0xfd, 0x0 + delay 0xf + launchtemplate gSpeedSwapCircleTemplate 0x82 0x2 0xfff4 0x18 + delay 0x5 + launchtemplate gSpeedSwapRingTemplate 0x28 0x4 0x0 0x0 0x1 0x0 + launchtemplate gSpeedSwapOrbTemplate 0x82 0x5 0x1 0x0 0x0 0xFFE0 0x10 + launchtemplate gSpeedSwapOrbTemplate 0x82 0x5 0x1 0x0 0x16 0xFFEA 0x10 + launchtemplate gSpeedSwapOrbTemplate 0x82 0x5 0x1 0x0 0x1E 0x0 0x10 + launchtemplate gSpeedSwapOrbTemplate 0x82 0x5 0x1 0x0 0x14 0x14 0x10 + launchtemplate gSpeedSwapOrbTemplate 0x82 0x5 0x1 0x0 0x0 0x1C 0x10 + launchtemplate gSpeedSwapOrbTemplate 0x82 0x5 0x1 0x0 0xFFED 0x13 0x10 + launchtemplate gSpeedSwapOrbTemplate 0x82 0x5 0x1 0x0 0xFFE5 0x0 0x10 + launchtemplate gSpeedSwapOrbTemplate 0x82 0x5 0x1 0x0 0xFFEE 0xFFEE 0x10 + waitforvisualfinish + panse_1B SE_W107, SOUND_PAN_TARGET, SOUND_PAN_ATTACKER, 0xfd, 0x0 + launchtemplate gSpeedSwapOrbMissileTemplate 0x80 0x6 0x0 0x0 0x0 0x0 0x1e 0x0 + launchtemplate gSpeedSwapRingTemplate 0x28 0x4 0x0 0x0 0x0 0x0 + launchtemplate gSpeedSwapOrbTemplate 0x82 0x5 0x0 0x0 0x0 0xFFE0 0x10 + launchtemplate gSpeedSwapOrbTemplate 0x82 0x5 0x0 0x0 0x16 0xFFEA 0x10 + launchtemplate gSpeedSwapOrbTemplate 0x82 0x5 0x0 0x0 0x1E 0x0 0x10 + launchtemplate gSpeedSwapOrbTemplate 0x82 0x5 0x0 0x0 0x14 0x14 0x10 + launchtemplate gSpeedSwapOrbTemplate 0x82 0x5 0x0 0x0 0x0 0x1C 0x10 + launchtemplate gSpeedSwapOrbTemplate 0x82 0x5 0x0 0x0 0xFFED 0x13 0x10 + launchtemplate gSpeedSwapOrbTemplate 0x82 0x5 0x0 0x0 0xFFE5 0x0 0x10 + launchtemplate gSpeedSwapOrbTemplate 0x82 0x5 0x0 0x0 0xFFEE 0xFFEE 0x10 + waitforvisualfinish + clearmonbg ANIM_TARGET + end + + +Move_SMART_STRIKE:: + loadspritegfx ANIM_TAG_POWER_GEM @gem + loadspritegfx ANIM_TAG_AIR_WAVE @sonicboom + loadspritegfx ANIM_TAG_IMPACT @hit + loadspritegfx ANIM_TAG_FLASH_CANNON_BALL @ball + loadspritegfx ANIM_TAG_LOCK_ON + launchtemplate gLockOnTargetSpriteTemplate 0x28 0x0 + launchtemplate gLockOnMoveTargetSpriteTemplate 0x28 0x1 0x1 + launchtemplate gLockOnMoveTargetSpriteTemplate 0x28 0x1 0x2 + launchtemplate gLockOnMoveTargetSpriteTemplate 0x28 0x1 0x3 + launchtemplate gLockOnMoveTargetSpriteTemplate 0x28 0x1 0x4 + delay 0x78 + setarg 0x7 0xffff + waitforvisualfinish + monbg SIDE_TARGET + monbgprio_28 ANIM_TARGET + setalpha 12, 8 + call SonicBoomProjectile + launchtask AnimTask_ShakeMon 0x2 0x5 0x1 0x3 0x0 0xa 0x1 + loadspritegfx ANIM_TAG_FLASH_CANNON_BALL + launchtemplate gSmartStrikeImpactTemplate 0x84 0x5 0x0 0x0 0x8 0x1 0x0 + playsewithpan SE_W233B, SOUND_PAN_TARGET + launchtemplate gSmartStrikeGemTemplate 0x82 0x5 0x1 0x1 0x0 0xffe8 0xa + launchtemplate gSmartStrikeGemTemplate 0x82 0x5 0x1 0x1 0x11 0xffef 0xa + launchtemplate gSmartStrikeGemTemplate 0x82 0x5 0x1 0x1 0x18 0x0 0xa + launchtemplate gSmartStrikeGemTemplate 0x82 0x5 0x1 0x1 0x11 0x11 0xa + launchtemplate gSmartStrikeGemTemplate 0x82 0x5 0x1 0x1 0x0 0x18 0xa + launchtemplate gSmartStrikeGemTemplate 0x82 0x5 0x1 0x1 0xffef 0x11 0xa + launchtemplate gSmartStrikeGemTemplate 0x82 0x5 0x1 0x1 0xffe8 0x0 0xa + launchtemplate gSmartStrikeGemTemplate 0x82 0x5 0x1 0x1 0xffef 0xffef 0xa + waitforvisualfinish + clearmonbg SIDE_TARGET + blendoff + waitforvisualfinish + clearmonbg ANIM_ATTACKER + blendoff + waitforvisualfinish + end + + +Move_PURIFY:: + loadspritegfx ANIM_TAG_FLASH_CANNON_BALL @Ball + loadspritegfx ANIM_TAG_BLACK_SMOKE @smoke + loadspritegfx ANIM_TAG_ICE_CHUNK @White Colour + monbg ANIM_TARGET + monbgprio_28 ANIM_TARGET + setalpha 12, 8 + playsewithpan SE_W104, SOUND_PAN_ATTACKER + launchtemplate gPurifyWhiteBallTemplate 0x2 0x6 0x14 0xfff8 0xfff8 0xfff8 0x14 0xffe0 + delay 0x13 + playsewithpan SE_W028, SOUND_PAN_TARGET + launchtemplate gPurifySmokeTemplate 0x84 0x5 0x0 0xfff4 0x68 0x0 0x4b + launchtemplate gPurifySmokeTemplate 0x84 0x5 0x0 0xfff4 0x48 0x1 0x4b + launchtemplate gPurifySmokeTemplate 0x84 0x5 0x0 0xfffa 0x38 0x1 0x4b + launchtemplate gPurifySmokeTemplate 0x84 0x5 0x0 0xfffa 0x58 0x0 0x4b + launchtemplate gPurifySmokeTemplate 0x84 0x5 0x0 0x0 0x38 0x0 0x4b + launchtemplate gPurifySmokeTemplate 0x84 0x5 0x0 0x0 0x58 0x1 0x4b + launchtemplate gPurifySmokeTemplate 0x84 0x5 0x0 0x6 0x48 0x0 0x4b + launchtemplate gPurifySmokeTemplate 0x84 0x5 0x0 0x6 0x68 0x1 0x4b + launchtemplate gPurifySmokeTemplate 0x84 0x5 0x0 0xc 0x48 0x0 0x4b + launchtemplate gPurifySmokeTemplate 0x84 0x5 0x0 0xc 0x38 0x1 0x4b + launchtemplate gPurifySmokeTemplate 0x84 0x5 0x0 0x12 0x50 0x0 0x4b + launchtemplate gPurifySmokeTemplate 0x84 0x5 0x0 0x12 0x48 0x1 0x4b + waitforvisualfinish + clearmonbg ANIM_TARGET + blendoff + end + + +Move_REVELATION_DANCE:: + loadspritegfx ANIM_TAG_ORBS @circles + loadspritegfx ANIM_TAG_FLOWER @particles + loadspritegfx ANIM_TAG_JAGGED_MUSIC_NOTE @another yellow + loadspritegfx ANIM_TAG_AIR_WAVE @sonicboom + loadspritegfx ANIM_TAG_THIN_RING @ring + monbg ANIM_TARGET + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0xF 0x0 + waitforvisualfinish + playsewithpan SE_W080, SOUND_PAN_ATTACKER + launchtask AnimTask_RockMonBackAndForth 0x5 0x3 0x0 0x2 0x0 + launchtemplate gRevelationDanceYellowOrbsTemplate 0x2 0x4 0x0 0xffe8 0x8 0x8c + launchtemplate gRevelationDanceYellowFlowerTemplate 0x2 0x4 0x10 0xffe8 0x8 0x64 + launchtemplate gRevelationDanceYellowFlowerTemplate 0x2 0x4 0xfff0 0xffe8 0x8 0x64 + delay 0xf + launchtemplate gRevelationDanceYellowOrbsTemplate 0x2 0x4 0x0 0xffe8 0x8 0x8c + launchtemplate gRevelationDanceYellowFlowerTemplate 0x2 0x4 0x20 0xffe8 0x8 0x64 + launchtemplate gRevelationDanceYellowFlowerTemplate 0x2 0x4 0xffe0 0xffe8 0x8 0x64 + delay 0xf + launchtemplate gRevelationDanceYellowOrbsTemplate 0x2 0x4 0x0 0xffe8 0x8 0x8c + launchtemplate gRevelationDanceYellowFlowerTemplate 0x2 0x4 0x18 0xffe8 0x8 0x64 + launchtemplate gRevelationDanceYellowFlowerTemplate 0x2 0x4 0xffe8 0xffe8 0x8 0x64 + delay 0x1e + launchtemplate gRevelationDanceYellowFlowerTemplate 0x2 0x4 0x10 0xffe8 0x0 0x64 + launchtemplate gRevelationDanceYellowFlowerTemplate 0x2 0x4 0xfff0 0xffe8 0x0 0x64 + delay 0x1e + launchtask AnimTask_RockMonBackAndForth 0x5 0x3 0x0 0x2 0x0 + launchtemplate gRevelationDanceYellowFlowerTemplate 0x2 0x4 0x14 0xfff0 0xe 0x50 + launchtemplate gRevelationDanceYellowFlowerTemplate 0x2 0x4 0xffec 0xfff2 0x10 0x50 + waitforvisualfinish + unloadspritegfx ANIM_TAG_FLOWER @particles + loadspritegfx ANIM_TAG_IMPACT @hit + loadspritegfx ANIM_TAG_SMALL_EMBER @light yellow + playsewithpan SE_W013B, SOUND_PAN_ATTACKER + launchtemplate gRevelationDanceYellowAirWaveTemplate 0x82 0x5 0x10 0x0 0x0 0x0 0xf + waitforvisualfinish + playsewithpan SE_W003, SOUND_PAN_TARGET + launchtemplate gRevelationDanceYellowImpactTemplate 0x2 0x4 0x0 0x0 0x1 0x2 + launchtemplate gRevelationDanceYellowRingTemplate 0x3 0x6 0x0 0x0 0x1 0x0 0x1f 0x8 + launchtemplate gRevelationDanceYellowDispersalTemplate 0x81 0x5 0x0 0xa SOUND_PAN_ATTACKER 0xb0 0x28 + launchtemplate gRevelationDanceYellowDispersalTemplate 0x81 0x5 0x0 0xa 0xff40 0xf0 0x28 + launchtemplate gRevelationDanceYellowDispersalTemplate 0x81 0x5 0x0 0xa SOUND_PAN_ATTACKER 0xff60 0x28 + launchtemplate gRevelationDanceYellowDispersalTemplate 0x81 0x5 0x0 0xa 0xff40 0xff90 0x28 + launchtemplate gRevelationDanceYellowDispersalTemplate 0x81 0x5 0x0 0xa 0xa0 0x30 0x28 + launchtemplate gRevelationDanceYellowDispersalTemplate 0x81 0x5 0x0 0xa 0xff20 0xffe0 0x28 + launchtemplate gRevelationDanceYellowDispersalTemplate 0x81 0x5 0x0 0xa 0x70 0xff80 0x28 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0xF 0x0 0x0 + waitforvisualfinish + clearmonbg ANIM_TARGET + end + + +Move_CORE_ENFORCER:: + loadspritegfx ANIM_TAG_SPARK_2 @yellow color + loadspritegfx ANIM_TAG_LEAF @green color + loadspritegfx ANIM_TAG_RAZOR_LEAF @another green color + loadspritegfx ANIM_TAG_WATER_ORB @blue color + loadspritegfx ANIM_TAG_THIN_RING @rings + loadspritegfx ANIM_TAG_SHOCK_3 @circle from thunderbolt + monbg ANIM_ATTACKER + setalpha 12, 8 + fadetobg BG_COSMIC + waitbgfadeout + launchtask AnimTask_StartSlidingBg 0x5 0x4 0x0 0xFC00 0x1 0xffff + waitbgfadein + loopsewithpan SE_W025, SOUND_PAN_ATTACKER 0xd 0xA + launchtemplate gCoreEnforcerCircleChargeTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + launchtemplate gCoreEnforcerBlueRingTemplate 0x28 0x4 0x0 0x0 0x0 0x0 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x20 0x18 0xbe 0xc 0x0 0x1 0x0 + delay 0x0 + launchtemplate gCoreEnforcerBlueSparkTemplate 0x0 0x7 0x50 0x18 0x16 0xc 0x0 0x1 0x0 + launchtemplate gCoreEnforcerGreenChargeTemplate 0x0 0x7 0x9c 0x18 0x79 0xd 0x0 0x1 0x1 + delay 0x5 + launchtemplate gCoreEnforcerGreenChargeTemplate 0x0 0x7 0x64 0x18 0x3c 0xa 0x0 0x1 0x0 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0xaa 0x18 0x2a 0xb 0x0 0x1 0x1 + delay 0x0 + launchtemplate gCoreEnforcerBlueSparkTemplate 0x0 0x7 0xee 0x18 0xa5 0xa 0x0 0x1 0x1 + delay 0x5 + launchtemplate gCoreEnforcerBlueSparkTemplate 0x0 0x7 0x20 0x18 0xbe 0xc 0x0 0x1 0x0 + delay 0x0 + launchtemplate gCoreEnforcerGreenChargeTemplate 0x0 0x7 0x50 0x18 0x16 0xc 0x0 0x1 0x0 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x9c 0x18 0x79 0xd 0x0 0x1 0x1 + waitforvisualfinish + launchtemplate gCoreEnforcerCircleChargeTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x64 0x18 0x3c 0xa 0x0 0x1 0x0 + launchtemplate gCoreEnforcerBlueSparkTemplate 0x0 0x7 0xaa 0x18 0x2a 0xb 0x0 0x1 0x1 + delay 0x0 + launchtemplate gCoreEnforcerGreenChargeTemplate 0x0 0x7 0xee 0x18 0xa5 0xa 0x0 0x1 0x1 + delay 0x5 + launchtemplate gCoreEnforcerGreenChargeTemplate 0x0 0x7 0x20 0x18 0xbe 0xc 0x0 0x1 0x0 + delay 0x0 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x50 0x18 0x16 0xc 0x0 0x1 0x0 + launchtemplate gCoreEnforcerBlueSparkTemplate 0x0 0x7 0x9c 0x18 0x79 0xd 0x0 0x1 0x1 + delay 0x5 + launchtemplate gCoreEnforcerBlueSparkTemplate 0x0 0x7 0x64 0x18 0x3c 0xa 0x0 0x1 0x0 + launchtemplate gCoreEnforcerGreenChargeTemplate 0x0 0x7 0xaa 0x18 0x2a 0xb 0x0 0x1 0x1 + delay 0x0 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0xee 0x18 0xa5 0xa 0x0 0x1 0x1 + waitforvisualfinish + launchtemplate gCoreEnforcerCircleChargeTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + launchtemplate gCoreEnforcerYellowRingTemplate 0x28 0x4 0x0 0x0 0x0 0x0 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x20 0x18 0xbe 0xc 0x0 0x1 0x0 + delay 0x0 + launchtemplate gCoreEnforcerBlueSparkTemplate 0x0 0x7 0x50 0x18 0x16 0xc 0x0 0x1 0x0 + launchtemplate gCoreEnforcerGreenChargeTemplate 0x0 0x7 0x9c 0x18 0x79 0xd 0x0 0x1 0x1 + delay 0x5 + launchtemplate gCoreEnforcerGreenChargeTemplate 0x0 0x7 0x64 0x18 0x3c 0xa 0x0 0x1 0x0 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0xaa 0x18 0x2a 0xb 0x0 0x1 0x1 + delay 0x0 + launchtemplate gCoreEnforcerBlueSparkTemplate 0x0 0x7 0xee 0x18 0xa5 0xa 0x0 0x1 0x1 + delay 0x5 + launchtemplate gCoreEnforcerBlueSparkTemplate 0x0 0x7 0x20 0x18 0xbe 0xc 0x0 0x1 0x0 + delay 0x0 + launchtemplate gCoreEnforcerGreenChargeTemplate 0x0 0x7 0x50 0x18 0x16 0xc 0x0 0x1 0x0 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x9c 0x18 0x79 0xd 0x0 0x1 0x1 + waitforvisualfinish + launchtemplate gCoreEnforcerCircleChargeTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x64 0x18 0x3c 0xa 0x0 0x1 0x0 + launchtemplate gCoreEnforcerBlueSparkTemplate 0x0 0x7 0xaa 0x18 0x2a 0xb 0x0 0x1 0x1 + delay 0x0 + launchtemplate gCoreEnforcerGreenChargeTemplate 0x0 0x7 0xee 0x18 0xa5 0xa 0x0 0x1 0x1 + delay 0x5 + launchtemplate gCoreEnforcerGreenChargeTemplate 0x0 0x7 0x20 0x18 0xbe 0xc 0x0 0x1 0x0 + delay 0x0 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x50 0x18 0x16 0xc 0x0 0x1 0x0 + launchtemplate gCoreEnforcerBlueSparkTemplate 0x0 0x7 0x9c 0x18 0x79 0xd 0x0 0x1 0x1 + delay 0x5 + launchtemplate gCoreEnforcerBlueSparkTemplate 0x0 0x7 0x64 0x18 0x3c 0xa 0x0 0x1 0x0 + launchtemplate gCoreEnforcerGreenChargeTemplate 0x0 0x7 0xaa 0x18 0x2a 0xb 0x0 0x1 0x1 + delay 0x0 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0xee 0x18 0xa5 0xa 0x0 0x1 0x1 + waitforvisualfinish + launchtemplate gCoreEnforcerCircleChargeTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + launchtemplate gCoreEnforcerGreenRingTemplate 0x28 0x4 0x0 0x0 0x0 0x0 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x20 0x18 0xbe 0xc 0x0 0x1 0x0 + delay 0x0 + launchtemplate gCoreEnforcerBlueSparkTemplate 0x0 0x7 0x50 0x18 0x16 0xc 0x0 0x1 0x0 + launchtemplate gCoreEnforcerGreenChargeTemplate 0x0 0x7 0x9c 0x18 0x79 0xd 0x0 0x1 0x1 + delay 0x5 + launchtemplate gCoreEnforcerGreenChargeTemplate 0x0 0x7 0x64 0x18 0x3c 0xa 0x0 0x1 0x0 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0xaa 0x18 0x2a 0xb 0x0 0x1 0x1 + delay 0x0 + launchtemplate gCoreEnforcerBlueSparkTemplate 0x0 0x7 0xee 0x18 0xa5 0xa 0x0 0x1 0x1 + delay 0x5 + launchtemplate gCoreEnforcerBlueSparkTemplate 0x0 0x7 0x20 0x18 0xbe 0xc 0x0 0x1 0x0 + delay 0x0 + launchtemplate gCoreEnforcerGreenChargeTemplate 0x0 0x7 0x50 0x18 0x16 0xc 0x0 0x1 0x0 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x9c 0x18 0x79 0xd 0x0 0x1 0x1 + waitforvisualfinish + launchtemplate gCoreEnforcerCircleChargeTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x64 0x18 0x3c 0xa 0x0 0x1 0x0 + launchtemplate gCoreEnforcerBlueSparkTemplate 0x0 0x7 0xaa 0x18 0x2a 0xb 0x0 0x1 0x1 + delay 0x0 + launchtemplate gCoreEnforcerGreenChargeTemplate 0x0 0x7 0xee 0x18 0xa5 0xa 0x0 0x1 0x1 + delay 0x5 + launchtemplate gCoreEnforcerGreenChargeTemplate 0x0 0x7 0x20 0x18 0xbe 0xc 0x0 0x1 0x0 + delay 0x0 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x50 0x18 0x16 0xc 0x0 0x1 0x0 + launchtemplate gCoreEnforcerBlueSparkTemplate 0x0 0x7 0x9c 0x18 0x79 0xd 0x0 0x1 0x1 + delay 0x5 + launchtemplate gCoreEnforcerBlueSparkTemplate 0x0 0x7 0x64 0x18 0x3c 0xa 0x0 0x1 0x0 + launchtemplate gCoreEnforcerGreenChargeTemplate 0x0 0x7 0xaa 0x18 0x2a 0xb 0x0 0x1 0x1 + delay 0x0 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0xee 0x18 0xa5 0xa 0x0 0x1 0x1 + delay 0x5 + launchtemplate gCoreEnforcerCircleChargeTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + waitforvisualfinish + unloadspritegfx ANIM_TAG_SPARK_2 @yellow color + unloadspritegfx ANIM_TAG_LEAF @green color + unloadspritegfx ANIM_TAG_RAZOR_LEAF @another green color + unloadspritegfx ANIM_TAG_WATER_ORB @blue color + unloadspritegfx ANIM_TAG_THIN_RING @rings + unloadspritegfx ANIM_TAG_SHOCK_3 @circle from thunderbolt + loadspritegfx ANIM_TAG_IMPACT + loadspritegfx ANIM_TAG_ORBS @charging particles + loadspritegfx ANIM_TAG_SNORE_Z + loadspritegfx ANIM_TAG_EXPLOSION + clearmonbg ANIM_ATTACKER + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_IMPACT, 0, 0xD, 0xD, 0x079F @Yellow + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_ORBS, 0, 0xA, 0xA, 0x7501 @Royal Blue + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_SNORE_Z, 0, 0xA, 0xA, 0x0688 @Green + delay 0x10 + monbg ANIM_TARGET + launchtask AnimTask_CreateSmallSolarbeamOrbs 0x5 0x0 + panse_1B SE_W076, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0 + launchtask AnimTask_ShakeMon2 0x5 0x5 ANIM_TARGET 0x2 0x0 0x41 0x1 + launchtask AnimTask_ShakeMon2 0x5 0x5 ANIM_DEF_PARTNER 0x2 0x0 0x41 0x1 + launchtemplate gCoreEnforcerBeamTemplate 0x83 0x4 0xf 0x0 0x14 0x0 + launchtemplate gCoreEnforcerImpactTemplate 0x83 0x4 0xfff5 0xffe2 0x1 0x3 + delay 0x1 + launchtemplate gCoreEnforcerImpactTemplate 0x83 0x4 0xfffa 0xffe2 0x1 0x3 + delay 0x1 + launchtemplate gCoreEnforcerImpactTemplate 0x83 0x4 0xffff 0xffe2 0x1 0x3 + delay 0x1 + launchtemplate gCoreEnforcerImpactTemplate 0x83 0x4 0x5 0xffe2 0x1 0x3 + delay 0x1 + launchtemplate gCoreEnforcerBeamTemplate 0x83 0x4 0xf 0x0 0x14 0x1 + launchtemplate gCoreEnforcerImpactTemplate 0x83 0x4 0xA 0xffe2 0x1 0x3 + delay 0x1 + launchtemplate gCoreEnforcerImpactTemplate 0x83 0x4 0xF 0xffe2 0x1 0x3 + delay 0x1 + launchtemplate gCoreEnforcerImpactTemplate 0x83 0x4 0x14 0xffe2 0x1 0x3 + delay 0x1 + launchtemplate gCoreEnforcerImpactTemplate 0x83 0x4 0xF 0xffe7 0x1 0x3 + delay 0x1 + launchtemplate gCoreEnforcerBeamTemplate 0x83 0x4 0xf 0x0 0x14 0x2 + launchtemplate gCoreEnforcerImpactTemplate 0x83 0x4 0xC 0xffea 0x1 0x3 + delay 0x1 + launchtemplate gCoreEnforcerImpactTemplate 0x83 0x4 0x9 0xffed 0x1 0x3 + delay 0x1 + launchtemplate gCoreEnforcerImpactTemplate 0x83 0x4 0x6 0xfff0 0x1 0x3 + delay 0x1 + launchtemplate gCoreEnforcerImpactTemplate 0x83 0x4 0x3 0xfff3 0x1 0x3 + delay 0x1 + launchtemplate gCoreEnforcerBeamTemplate 0x83 0x4 0xf 0x0 0x14 0x3 + launchtemplate gCoreEnforcerImpactTemplate 0x83 0x4 0x0 0xfff6 0x1 0x3 + delay 0x1 + launchtemplate gCoreEnforcerImpactTemplate 0x83 0x4 0xfffc 0xfff9 0x1 0x3 + delay 0x1 + launchtemplate gCoreEnforcerImpactTemplate 0x83 0x4 0xfff9 0xfffc 0x1 0x3 + delay 0x1 + launchtemplate gCoreEnforcerImpactTemplate 0x83 0x4 0xfff6 0xffff 0x1 0x3 + delay 0x1 + launchtemplate gCoreEnforcerBeamTemplate 0x83 0x4 0xf 0x0 0x14 0x4 + launchtemplate gCoreEnforcerImpactTemplate 0x83 0x4 0xfff3 0x3 0x1 0x3 + delay 0x1 + launchtemplate gCoreEnforcerImpactTemplate 0x83 0x4 0xfff8 0x3 0x1 0x3 + delay 0x1 + launchtemplate gCoreEnforcerImpactTemplate 0x83 0x4 0xfffd 0x3 0x1 0x3 + delay 0x1 + launchtemplate gCoreEnforcerImpactTemplate 0x83 0x4 0x2 0x3 0x1 0x3 + delay 0x1 + launchtemplate gCoreEnforcerBeamTemplate 0x83 0x4 0xf 0x0 0x14 0x5 + launchtemplate gCoreEnforcerImpactTemplate 0x83 0x4 0x7 0x3 0x1 0x3 + delay 0x1 + launchtemplate gCoreEnforcerImpactTemplate 0x83 0x4 0xC 0x3 0x1 0x3 + delay 0x1 + launchtemplate gCoreEnforcerImpactTemplate 0x83 0x4 0x11 0x3 0x1 0x3 + delay 0x1 + launchtemplate gCoreEnforcerImpactTemplate 0x83 0x4 0x16 0x3 0x1 0x3 + delay 0x1 + launchtemplate gCoreEnforcerBeamTemplate 0x83 0x4 0xf 0x0 0x14 0x6 + delay 0x7 + launchtemplate gCoreEnforcerSnoreTemplate 0x2 0x2 0x0 0x0 + launchtask AnimTask_ShakeMon2 0x2 0x5 ANIM_TARGET 0x2 0x0 0x1e 0x1 + launchtask AnimTask_ShakeMon2 0x2 0x5 ANIM_DEF_PARTNER 0x2 0x0 0x1e 0x1 + launchtask AnimTask_ShakeMon2 0x2 0x5 ANIM_ATK_PARTNER 0x2 0x0 0x1e 0x1 + playsewithpan SE_W120, SOUND_PAN_TARGET + launchtemplate gCoreEnforcerExplosionTemplate 0x3 0x4 0x0 0x0 ANIM_TARGET 0x1 + delay 0x6 + playsewithpan SE_W120, SOUND_PAN_TARGET + launchtemplate gCoreEnforcerExplosionTemplate 0x3 0x4 0x18 0xffe8 ANIM_TARGET 0x1 + delay 0x6 + playsewithpan SE_W120, SOUND_PAN_TARGET + launchtemplate gCoreEnforcerExplosionTemplate 0x3 0x4 0xfff0 0x10 ANIM_TARGET 0x1 + delay 0x6 + playsewithpan SE_W120, SOUND_PAN_TARGET + launchtemplate gCoreEnforcerExplosionTemplate 0x3 0x4 0xffe8 0xfff4 ANIM_TARGET 0x1 + delay 0x6 + playsewithpan SE_W120, SOUND_PAN_TARGET + launchtemplate gCoreEnforcerExplosionTemplate 0x3 0x4 0x10 0x10 ANIM_TARGET 0x1 + delay 0x6 + playsewithpan SE_W120, SOUND_PAN_TARGET + launchtemplate gCoreEnforcerExplosionTemplate 0x3 0x4 0xffe8 0x18 ANIM_TARGET 0x1 + waitforvisualfinish + call UnsetPsychicBg + clearmonbg ANIM_TARGET + blendoff + end + + +Move_TROP_KICK:: + loadspritegfx ANIM_TAG_HANDS_AND_FEET @kick + loadspritegfx ANIM_TAG_LEAF @leaves + loadspritegfx ANIM_TAG_FLOWER @flowers + monbg SIDE_TARGET + launchtemplate gTropKickGreenFootTemplate 0x2 0x8 0xfff0 0x8 0x0 0x0 0xa 0x1 0x1 0x1 + launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_TARGET 0x4 0x0 0x6 0x1 + playsewithpan SE_W233B, SOUND_PAN_TARGET + delay 0xA + playsewithpan SE_W234, SOUND_PAN_ATTACKER + launchtemplate gTropKickLeavesTemplate 0x81 0x5 0x0 0xa SOUND_PAN_ATTACKER 0xb0 0x28 + launchtemplate gTropKickLeavesTemplate 0x81 0x5 0x0 0xa 0xff40 0xf0 0x28 + launchtemplate gTropKickFlowerTemplate 0x81 0x5 0x0 0xa SOUND_PAN_ATTACKER 0xff60 0x28 + launchtemplate gTropKickFlowerTemplate 0x81 0x5 0x0 0xa 0xff40 0xff90 0x28 + launchtemplate gTropKickFlowerTemplate 0x81 0x5 0x0 0xa 0xa0 0x30 0x28 + launchtemplate gTropKickLeavesTemplate 0x81 0x5 0x0 0xa 0xff20 0xffe0 0x28 + launchtemplate gTropKickLeavesTemplate 0x81 0x5 0x0 0xa 0x70 0xff80 0x28 + waitforvisualfinish + clearmonbg SIDE_TARGET + end + + +Move_INSTRUCT:: + loadspritegfx ANIM_TAG_FINGER @finger + loadspritegfx ANIM_TAG_SPOTLIGHT @spotlight + setalpha 12, 8 + launchtemplate gMetronomeFingerSpriteTemplate 0xc 0x1 0x0 + delay 0x18 + loopsewithpan SE_W039, SOUND_PAN_ATTACKER, 0x16, 0x3 + waitforvisualfinish + launchtask AnimTask_HardwarePaletteFade 0x2 0x5 0xf8 0x3 0x0 0xa 0x0 + waitforvisualfinish + launchtemplate gSpotlightSpriteTemplate 0x82 0x2 0x0 0xfff8 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_DEF 0x2 0x0 0x8 0x7DB9 + delay 0x4 + monbg ANIM_TARGET + launchtask AnimTask_BlendMonInAndOut 0x5 0x5 0x0 0x37b 0xc 0x1 0x1 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x3 0x0 0x29 0x1 + playsewithpan SE_W020, SOUND_PAN_TARGET + delay 0x1A + launchtask AnimTask_BlendMonInAndOut 0x5 0x5 0x0 0x37b 0xc 0x1 0x1 + playsewithpan SE_W020, SOUND_PAN_TARGET + delay 0x1A + launchtask AnimTask_BlendMonInAndOut 0x5 0x5 0x0 0x37b 0xc 0x1 0x1 + playsewithpan SE_W020, SOUND_PAN_TARGET + delay 0x1D + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_DEF 0x2 0x8 0x0 0x7DB9 + waitforvisualfinish + clearmonbg ANIM_TARGET + blendoff + end + + +Move_BEAK_BLAST:: + loadspritegfx ANIM_TAG_SMALL_EMBER @Fire + playsewithpan SE_W082, SOUND_PAN_ATTACKER + delay 0x3 + launchtask AnimTask_BlendColorCycle 0x2 0x6 PAL_ATK 0x2 0x2 0x0 0xb 0x1f + launchtemplate gFireSpiralOutwardSpriteTemplate 0x3 0x4 0x0 0x0 0x38 0x0 + waitforvisualfinish + end +BeakBlastUnleash: + loadspritegfx ANIM_TAG_IMPACT + launchtask AnimTask_BlendBattleAnimPal 0xA 0x5 PAL_ATK 0x2 0x0 0x9 0x1F + waitforvisualfinish + launchtemplate gBowMonSpriteTemplate 0x2 0x1 0x0 + playsewithpan SE_W029, SOUND_PAN_ATTACKER + waitforvisualfinish + delay 0x2 + launchtemplate gBowMonSpriteTemplate 0x2 0x1 0x1 + delay 0x2 + loopsewithpan SE_W030, SOUND_PAN_TARGET 0x4 0x8 + launchtask AnimTask_DrillPeckHitSplats 0x5 0x0 + launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x4 0x0 0x12 0x1 + waitforvisualfinish + launchtemplate gBowMonSpriteTemplate 0x2 0x1 0x2 + waitforvisualfinish + launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_ATTACKER 0x0 0x6 + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xA 0x5 PAL_ATK 0x2 0x9 0x0 0x1F + waitforvisualfinish + end + + +Move_CLANGING_SCALES:: + loadspritegfx ANIM_TAG_METAL_SOUND_WAVES @metal sound + loadspritegfx ANIM_TAG_POISON_BUBBLE @purple color + monbg SIDE_TARGET + monbgprio_2A 0x1 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0xC 0x2002 + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_METAL_SOUND_WAVES, 0, 10, 10, 0x642D + waitforvisualfinish + launchtask AnimTask_ShakeMon2 0x2 0x5 0x0 0x2 0x0 0x8 0x1 + call ClangingScalesMetalSound + call ClangingScalesMetalSound + call ClangingScalesMetalSound + call ClangingScalesMetalSound + delay 0x5 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0 0x3 0xf 0x1 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_DEF_PARTNER 0x0 0x3 0xf 0x1 + waitforvisualfinish + clearmonbg SIDE_TARGET + delay 0x0 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0xC 0x0 0x2002 + waitforvisualfinish + end +ClangingScalesMetalSound: + panse_1B SE_W103, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0 + launchtemplate gClangingScalesPurpleMetalSoundTemplate 0x82 0x7 0x10 0x0 0x0 0x0 0x1e 0x0 ANIM_TARGET + launchtemplate gClangingScalesPurpleMetalSoundTemplate 0x82 0x7 0x10 0x0 0x0 0x0 0x1e 0x0 ANIM_DEF_PARTNER + delay 0x2 + return + + +Move_DRAGON_HAMMER:: + loadspritegfx ANIM_TAG_ROUND_SHADOW + loadspritegfx ANIM_TAG_GRAY_SMOKE + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_ROUND_SHADOW, 0, 12, 12, 0x7D7F @Pinkish purple + fadetobg BG_COSMIC + waitbgfadeout + launchtask AnimTask_StartSlidingBg 0x5 0x4 0x0, -500, 0x0 0xffff + waitbgfadein + setblends 0xF + launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_ATTACKER 0x1a 0x0 0x0 0x5 + delay 0x6 + playsewithpan SE_W207, SOUND_PAN_TARGET + launchtemplate gBounceBallLandSpriteTemplate 0x83 0x0 + delay 0x2 + launchtask AnimTask_SquishTarget 0x2 0x0 + delay 0x5 + playsewithpan SE_W025B, SOUND_PAN_TARGET + launchtemplate gOctazookaSmokeSpriteTemplate 0x84 0x8 0x8 0x1 0x0 + delay 0x2 + launchtemplate gOctazookaSmokeSpriteTemplate 0x80 4 0xfff8 0xfff8 0x1 0x0 + delay 0x2 + launchtemplate gOctazookaSmokeSpriteTemplate 0x80 4 0x8 0xfff8 0x1 0x0 + delay 0x2 + launchtemplate gOctazookaSmokeSpriteTemplate 0x80 4 0xfff8 0x8 0x1 0x0 + delay 0x2 + launchtemplate gOctazookaSmokeSpriteTemplate 0x80 4 0x8 0x8 0x1 0x0 + delay 0x2 + launchtemplate gOctazookaSmokeSpriteTemplate 0x80 4 0xfff8 0xfff8 0x1 0x0 + delay 0x2 + launchtemplate gOctazookaSmokeSpriteTemplate 0x80 4 0x8 0xfff8 0x1 0x0 + delay 0x2 + launchtemplate gOctazookaSmokeSpriteTemplate 0x80 4 0xfff8 0x8 0x1 0x0 + delay 51 + launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_ATTACKER 0x0 0x5 + waitforvisualfinish + call UnsetPsychicBg + blendoff + end + + +Move_BRUTAL_SWING:: + loadspritegfx ANIM_TAG_IMPACT @hits + loadspritegfx ANIM_TAG_HANDS_AND_FEET @black color + monbg ANIM_TARGET + setalpha 12, 8 + fadetobg BG_DARK + waitbgfadeout + playsewithpan SE_W036, SOUND_PAN_ATTACKER + launchtemplate gVerticalDipSpriteTemplate 0x2 0x3 0x6 0x1 0x0 + waitforvisualfinish + delay 0xb + launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_ATTACKER 0x1a 0x0 0x0 0x5 + delay 0x6 + launchtemplate gBrutalSwingBasicImpactTemplate 0x83 0x4 0xffe0 0xfff0 0x1 0x1 + playsewithpan SE_W004, SOUND_PAN_TARGET + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0 0x3 0x15 0x1 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_DEF_PARTNER 0x0 0x3 0x15 0x1 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_ATK_PARTNER 0x0 0x3 0x15 0x1 + delay 0x4 + launchtemplate gBrutalSwingRandomImpactTemplate 0x83 0x2 0x1 0x1 + playsewithpan SE_W004, SOUND_PAN_TARGET + delay 0x4 + launchtemplate gBrutalSwingRandomImpactTemplate 0x83 0x2 0x1 0x1 + playsewithpan SE_W004, SOUND_PAN_TARGET + delay 0x4 + launchtemplate gBrutalSwingBasicImpactTemplate 0x83 0x4 0x20 0x14 0x1 0x1 + playsewithpan SE_W004, SOUND_PAN_TARGET + waitsound + launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_ATTACKER 0x0 0x6 + waitforvisualfinish + restorebg + blendoff + clearmonbg ANIM_TARGET + end + + +Move_AURORA_VEIL:: + loadspritegfx ANIM_TAG_GUARD_RING + fadetobg BG_AURORA + waitbgfadeout + launchtask AnimTask_StartSlidingBg 0x5 0x4 0x400 0x0 0x0 0xffff + waitbgfadein + monbg SIDE_ATTACKER + setalpha 8, 8 + playsewithpan SE_W208, SOUND_PAN_ATTACKER + launchtemplate gAuroraVeilRingTemplate 0x2 0x0 + delay 0x4 + launchtemplate gAuroraVeilRingTemplate 0x2 0x0 + delay 0x4 + launchtemplate gAuroraVeilRingTemplate 0x2 0x0 + waitforvisualfinish + playsewithpan SE_REAPOKE, SOUND_PAN_ATTACKER + launchtask AnimTask_BlendColorCycle 0x2 0x6 0xa 0x0 0x2 0x0 0xa 0x7fff + waitforvisualfinish + call UnsetPsychicBg + waitforvisualfinish + clearmonbg SIDE_ATTACKER + blendoff + end + + +Move_SHELL_TRAP:: +ShellTrapChargeUp: + loadspritegfx ANIM_TAG_SMALL_EMBER + loadspritegfx ANIM_TAG_IMPACT + monbg ANIM_TARGET + setalpha 12, 8 + call FireSpreadEffect + delay 0x4 + playsewithpan SE_W007, SOUND_PAN_TARGET + delay 0x15 + launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0x0 0x0 0x1 0x2 + launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0x0 0xA 0x1 0x2 + launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0xA 0x0 0x1 0x2 + launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0xA 0xA 0x1 0x2 + waitforvisualfinish + clearmonbg ANIM_TARGET + blendoff + end +ShellTrapUnleash: + loadspritegfx ANIM_TAG_IMPACT @pound + loadspritegfx ANIM_TAG_SMALL_RED_EYE @red + loadspritegfx ANIM_TAG_SMALL_EMBER @fire + loadspritegfx ANIM_TAG_ICE_CRYSTALS @fire launches + loadspritegfx ANIM_TAG_JAGGED_MUSIC_NOTE @red + monbg ANIM_TARGET + waitplaysewithpan SE_W115, SOUND_PAN_ATTACKER, 0x10 + delay 0x6 + launchtemplate gShellTrapYellowImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + delay 0x5 + launchtemplate gShellTrapYellowImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + delay 0x5 + launchtemplate gShellTrapYellowImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + delay 0x5 + launchtemplate gShellTrapYellowImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + delay 0x5 + launchtemplate gShellTrapYellowImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + delay 0x5 + launchtemplate gShellTrapYellowImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + delay 0x5 + launchtemplate gShellTrapYellowImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + delay 0x5 + launchtemplate gShellTrapYellowImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + delay 0x5 + launchtemplate gShellTrapYellowImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + delay 0x5 + launchtemplate gShellTrapRedImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + delay 0x5 + launchtemplate gShellTrapRedImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + delay 0x5 + launchtemplate gShellTrapRedImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + delay 0x5 + launchtemplate gFireSpiralOutwardSpriteTemplate 0x3 0x4 0x0 0x0 0x38 0x0 + launchtemplate gShellTrapRedImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + playsewithpan SE_W172, SOUND_PAN_ATTACKER + delay 0x2 + launchtemplate gFireSpiralOutwardSpriteTemplate 0x3 0x4 0x0 0x0 0x38 0x4 + launchtemplate gShellTrapRedImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + playsewithpan SE_W172, SOUND_PAN_ATTACKER + delay 0x2 + launchtemplate gFireSpiralOutwardSpriteTemplate 0x3 0x4 0x0 0x0 0x38 0x8 + launchtemplate gShellTrapRedImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + playsewithpan SE_W172, SOUND_PAN_ATTACKER + delay 0x2 + launchtemplate gFireSpiralOutwardSpriteTemplate 0x3 0x4 0x0 0x0 0x38 0xc + launchtemplate gShellTrapRedImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + playsewithpan SE_W172, SOUND_PAN_ATTACKER + delay 0x2 + launchtemplate gFireSpiralOutwardSpriteTemplate 0x3 0x4 0x0 0x0 0x38 0x10 + launchtemplate gShellTrapRedImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + playsewithpan SE_W172, SOUND_PAN_ATTACKER + delay 0x2 + launchtemplate gFireSpiralOutwardSpriteTemplate 0x3 0x4 0x0 0x0 0x38 0x14 + launchtemplate gShellTrapRedImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + playsewithpan SE_W172, SOUND_PAN_ATTACKER + delay 0x2 + launchtemplate gFireSpiralOutwardSpriteTemplate 0x3 0x4 0x0 0x0 0x38 0x18 + launchtemplate gShellTrapRedImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + playsewithpan SE_W172, SOUND_PAN_ATTACKER + launchtemplate gShellTrapRedImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + delay 0x5 + launchtemplate gShellTrapRedImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + delay 0x5 + launchtemplate gShellTrapRedImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + delay 0x5 + launchtemplate gShellTrapRedImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + delay 0x5 + launchtemplate gShellTrapRedImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + delay 0x5 + launchtemplate gShellTrapRedImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + delay 0x5 + launchtemplate gShellTrapRedImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + delay 0x5 + launchtemplate gShellTrapRedImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + delay 0x5 + launchtemplate gShellTrapRedImpactTemplate 0x2 0x4 0x0 0x0 0x0 0x2 + delay 0x5 + waitforvisualfinish + call ShellTrapFireLaunch1 + launchtemplate gShellTrapFireHitsTemplate 0x28 0x8 0x0 0x0 0x0 0x0 0x38 0x4 0x4 0x1 + delay 0x3 + launchtemplate gShellTrapFireHitsTemplate 0x28 0x8 0x0 0xfff6 0x0 0xfff6 0x38 0x4 0x4 0x1 + delay 0x3 + launchtemplate gShellTrapFireHitsTemplate 0x28 0x8 0x0 0xa 0x0 0xa 0x38 0xfffc 0x3 0x1 + delay 0x3 + launchtemplate gShellTrapFireHitsTemplate 0x28 0x8 0x0 0xffec 0x0 0xffec 0x38 0xfffc 0x5 0x1 + delay 0x3 + call ShellTrapFireLaunch2 + playsewithpan SE_W172, SOUND_PAN_ATTACKER + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + delay 0x3 + playsewithpan SE_W172, SOUND_PAN_ATTACKER + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + delay 0x3 + playsewithpan SE_W172, SOUND_PAN_ATTACKER + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + delay 0x3 + playsewithpan SE_W172, SOUND_PAN_ATTACKER + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + delay 0x3 + playsewithpan SE_W172, SOUND_PAN_ATTACKER + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + delay 0x3 + playsewithpan SE_W172, SOUND_PAN_ATTACKER + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + delay 0x3 + playsewithpan SE_W172, SOUND_PAN_ATTACKER + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + delay 0x3 + playsewithpan SE_W172, SOUND_PAN_ATTACKER + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + delay 0x3 + playsewithpan SE_W172, SOUND_PAN_ATTACKER + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + delay 0x3 + playsewithpan SE_W172, SOUND_PAN_ATTACKER + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + delay 0x3 + playsewithpan SE_W172, SOUND_PAN_ATTACKER + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + delay 0x3 + playsewithpan SE_W172, SOUND_PAN_ATTACKER + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + delay 0x3 + waitforvisualfinish + clearmonbg ANIM_TARGET + end +ShellTrapFireLaunch1: + launchtemplate gShellTrapFireHitsTemplate 0x28 0x8 0x0 0x0 0x0 0x0 0x38 0x4 0x4 0x1 + delay 0x3 + launchtemplate gShellTrapFireHitsTemplate 0x28 0x8 0x0 0xfff6 0x0 0xfff6 0x38 0x4 0x4 0x1 + delay 0x3 + launchtemplate gShellTrapFireHitsTemplate 0x28 0x8 0x0 0xa 0x0 0xa 0x38 0xfffc 0x3 0x1 + delay 0x3 + launchtemplate gShellTrapFireHitsTemplate 0x28 0x8 0x0 0xffec 0x0 0xffec 0x38 0xfffc 0x5 0x1 + delay 0x3 + launchtemplate gShellTrapFireHitsTemplate 0x28 0x8 0x0 0xf 0x0 0xf 0x38 0x4 0x4 0x1 + delay 0x3 + launchtemplate gShellTrapFireHitsTemplate 0x28 0x8 0x0 0xffec 0x0 0xffec 0x38 0x4 0x4 0x1 + delay 0x3 + launchtemplate gShellTrapFireHitsTemplate 0x28 0x8 0x0 0x14 0x0 0x14 0x38 0x4 0x4 0x1 + delay 0x3 + return +ShellTrapFireLaunch2: + launchtemplate gShellTrapFireHitsTemplate 0x28 0x8 0x0 0x0 0x0 0x0 0x38 0x4 0x4 0x1 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + playsewithpan SE_W172, SOUND_PAN_ATTACKER + delay 0x3 + launchtemplate gShellTrapFireHitsTemplate 0x28 0x8 0x0 0xfff6 0x0 0xfff6 0x38 0x4 0x4 0x1 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + playsewithpan SE_W172, SOUND_PAN_ATTACKER + delay 0x3 + launchtemplate gShellTrapFireHitsTemplate 0x28 0x8 0x0 0xa 0x0 0xa 0x38 0xfffc 0x3 0x1 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + playsewithpan SE_W172, SOUND_PAN_ATTACKER + delay 0x3 + launchtemplate gShellTrapFireHitsTemplate 0x28 0x8 0x0 0xffec 0x0 0xffec 0x38 0xfffc 0x5 0x1 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + playsewithpan SE_W172, SOUND_PAN_ATTACKER + delay 0x3 + launchtemplate gShellTrapFireHitsTemplate 0x28 0x8 0x0 0xf 0x0 0xf 0x38 0x4 0x4 0x1 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + playsewithpan SE_W172, SOUND_PAN_ATTACKER + delay 0x3 + launchtemplate gShellTrapFireHitsTemplate 0x28 0x8 0x0 0xffec 0x0 0xffec 0x38 0x4 0x4 0x1 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + playsewithpan SE_W172, SOUND_PAN_ATTACKER + delay 0x3 + launchtemplate gShellTrapFireHitsTemplate 0x28 0x8 0x0 0x14 0x0 0x14 0x38 0x4 0x4 0x1 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + playsewithpan SE_W172, SOUND_PAN_ATTACKER + delay 0x3 + return + + +Move_FLEUR_CANNON:: + loadspritegfx ANIM_TAG_ORBS @beam particles + loadspritegfx ANIM_TAG_ELECTRICITY @discharge + loadspritegfx ANIM_TAG_PINK_PETAL @pink color + loadspritegfx ANIM_TAG_PINK_HEART @pink color + setalpha 12, 8 + monbg ANIM_TARGET + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0xF 0x7440 + waitforvisualfinish + panse_1B SE_W076, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_ATTACKER 0x0 0x4 0x32 0x1 + createvisualtask AnimTask_FlashAnimTagWithColor, 2, ANIM_TAG_ORBS, 1, 12, 0x1f, 16, 0, 0 + call FleurCannonBeam + call FleurCannonBeam + call FleurCannonBeam + launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x4 0x0 0x32 0x1 + call FleurCannonBeam + call FleurCannonBeam + call FleurCannonBeam + call FleurCannonBeam + call FleurCannonBeam + call FleurCannonBeam + call FleurCannonBeam + call FleurCannonBeam + call FleurCannonBeam + call FleurCannonBeam + call FleurCannonBeam + call FleurCannonBeam + call FleurCannonBeam + call FleurCannonBeam + call FleurCannonBeam + call FleurCannonBeam + call FleurCannonBeam + call FleurCannonBeam + delay 0x20 + launchtemplate gFleurCannonDischargeTemplate 0x2 0x3 0x1 0x10 0x10 + delay 0x2 + launchtemplate gFleurCannonDischargeTemplate 0x2 0x3 0x1 0xfff0 0xfff0 + delay 0x5 + launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_TARGET 0x0 0x5 0xb 0x1 + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x10 0x0 0x7440 + waitforvisualfinish + clearmonbg ANIM_TARGET + blendoff + end +FleurCannonBeam: + launchtemplate gFleurCannonOrbTemplate 0x82 0x0 + launchtemplate gFleurCannonOrbTemplate 0x82 0x0 + delay 0x1 + launchtemplate gFleurCannonOrbTemplate 0x82 0x0 + launchtemplate gFleurCannonOrbTemplate 0x82 0x0 + delay 0x1 + return + + +Move_PSYCHIC_FANGS:: + loadspritegfx ANIM_TAG_SHARP_TEETH @Teeth + loadspritegfx ANIM_TAG_IMPACT @Hit + loadspritegfx ANIM_TAG_BLUE_LIGHT_WALL @Screen + loadspritegfx ANIM_TAG_TORN_METAL @Broken Screen + monbg ANIM_TARGET + call SetPsychicBackground + setalpha 12, 8 + choosetwoturnanim PsychicFangsRegular PsychicFangsDestroyWall +PsychicFangsRegular: + playsewithpan SE_W044, SOUND_PAN_TARGET + launchtemplate gSharpTeethSpriteTemplate 0x2 0x6 0xffe0 0xffe0 0x1 0x333 0x333 0xa + launchtemplate gSharpTeethSpriteTemplate 0x2 0x6 0x20 0x20 0x5 0xfccd 0xfccd 0xa + delay 0xa + launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0xfff8 0x0 0x1 0x1 + launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_TARGET 0x0 0x7 0x5 0x2 + delay 0x10 + playsewithpan SE_W044, SOUND_PAN_TARGET + launchtemplate gSharpTeethSpriteTemplate 0x2 0x6 0x20 0xffe0 0x7 0xfccd 0x333 0xa + launchtemplate gSharpTeethSpriteTemplate 0x2 0x6 0xffe0 0x20 0x3 0x333 0xfccd 0xa + delay 0xa + launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0x8 0x0 0x1 0x1 + launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_TARGET 0x0 0x8 0x4 0x2 +PsychicFangsEnd: + playsewithpan SE_W048, SOUND_PAN_TARGET + waitforvisualfinish + clearmonbg ANIM_TARGET + blendoff + call UnsetPsychicBg + end +PsychicFangsDestroyWall: + launchtemplate gBrickBreakWallSpriteTemplate 0x3 0x5 0x1 0x0 0x0 0x21 0xa + playsewithpan SE_W044, SOUND_PAN_TARGET + launchtemplate gSharpTeethSpriteTemplate 0x2 0x6 0xffe0 0xffe0 0x1 0x333 0x333 0xa + launchtemplate gSharpTeethSpriteTemplate 0x2 0x6 0x20 0x20 0x5 0xfccd 0xfccd 0xa + delay 0xa + launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0xfff8 0x0 0x1 0x1 + launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_TARGET 0x0 0x7 0x5 0x2 + delay 0x10 + playsewithpan SE_W044, SOUND_PAN_TARGET + launchtemplate gSharpTeethSpriteTemplate 0x2 0x6 0x20 0xffe0 0x7 0xfccd 0x333 0xa + launchtemplate gSharpTeethSpriteTemplate 0x2 0x6 0xffe0 0x20 0x3 0x333 0xfccd 0xa + delay 0xa + launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0x8 0x0 0x1 0x1 + launchtemplate gBrickBreakWallShardSpriteTemplate 0x2 0x4 0x1 0x0 0xfff8 0xfff4 + launchtemplate gBrickBreakWallShardSpriteTemplate 0x2 0x4 0x1 0x1 0x8 0xfff4 + launchtemplate gBrickBreakWallShardSpriteTemplate 0x2 0x4 0x1 0x2 0xfff8 0xc + launchtemplate gBrickBreakWallShardSpriteTemplate 0x2 0x4 0x1 0x3 0x8 0xc + playsewithpan SE_W280, SOUND_PAN_TARGET + launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_TARGET 0x0 0x8 0x4 0x2 + delay 0x10 + goto PsychicFangsEnd + + +Move_STOMPING_TANTRUM:: + loadspritegfx ANIM_TAG_ROCKS @rock colour + loadspritegfx ANIM_TAG_SMALL_ROCK @small rock + loadspritegfx ANIM_TAG_IMPACT @pound hit + loadspritegfx ANIM_TAG_SMALL_EMBER @hit color + monbg ANIM_TARGET + launchtask AnimTask_Splash 0x2 0x2 ANIM_ATTACKER 0x3 + delay 0x5 + launchtask AnimTask_HorizontalShake 0x5 0x3 0x5 0xa 0x5 + launchtask AnimTask_HorizontalShake 0x5 0x3 0x4 0xa 0x5 + launchtemplate gStompingTantrumRockTemplate 0x2 0x2 0x0 0x0 + launchtemplate gStompingTantrumRockTemplate 0x2 0x2 0x0 0x1 + launchtemplate gStompingTantrumRockTemplate 0x2 0x2 0x0 0x2 + launchtemplate gStompingTantrumRockTemplate 0x2 0x2 0x0 0x3 + call StompingTantrumImpact + playsewithpan SE_W088, SOUND_PAN_TARGET + delay 0x25 + launchtemplate gStompingTantrumRockTemplate 0x2 0x2 0x0 0x0 + launchtemplate gStompingTantrumRockTemplate 0x2 0x2 0x0 0x1 + launchtemplate gStompingTantrumRockTemplate 0x2 0x2 0x0 0x2 + launchtemplate gStompingTantrumRockTemplate 0x2 0x2 0x0 0x3 + call StompingTantrumImpact + playsewithpan SE_W088, SOUND_PAN_TARGET + delay 0x25 + launchtemplate gStompingTantrumRockTemplate 0x2 0x2 0x0 0x0 + launchtemplate gStompingTantrumRockTemplate 0x2 0x2 0x0 0x1 + launchtemplate gStompingTantrumRockTemplate 0x2 0x2 0x0 0x2 + launchtemplate gStompingTantrumRockTemplate 0x2 0x2 0x0 0x3 + call StompingTantrumImpact + playsewithpan SE_W088, SOUND_PAN_TARGET + waitforvisualfinish + clearmonbg ANIM_TARGET + end +StompingTantrumImpact: + launchtemplate gRandomPosHitSplatSpriteTemplate 0x83 0x2 0x1 0x1 + return + + +Move_SHADOW_BONE:: + loadspritegfx ANIM_TAG_BONE + loadspritegfx ANIM_TAG_IMPACT + fadetobg BG_NIGHTMARE + waitbgfadein + monbg SIDE_TARGET + monbgprio_28 ANIM_TARGET + setalpha 12, 8 + playsewithpan SE_W155, SOUND_PAN_TARGET + launchtemplate gSpinningBoneSpriteTemplate 0x2 0x5 0xffd6 0xffe7 0x0 0x0 0xf + delay 0xc + launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0x0 0x0 0x1 0x1 + launchtask AnimTask_ShakeMon 0x5 0x5 0x1 0x0 0x5 0x5 0x1 + launchtemplate gComplexPaletteBlendSpriteTemplate 0x2 0x7 0x7 0x5 0x1 0x0 0xa 0x0 0x0 + playsewithpan SE_W233B, SOUND_PAN_TARGET + waitforvisualfinish + launchtask AnimTask_NightmareClone 0x2 0x0 + launchtask AnimTask_ShakeMon 0x2 0x5 0x1 0x3 0x0 0x28 0x1 + playsewithpan SE_W171, SOUND_PAN_TARGET + waitforvisualfinish + restorebg + waitbgfadein + clearmonbg 0x3 + blendoff + end + + +Move_ACCELEROCK:: + loadspritegfx ANIM_TAG_ROCKS + loadspritegfx ANIM_TAG_IMPACT + monbg SIDE_ATTACKER + setalpha 12, 8 + launchtask AnimTask_TranslateMonEllipticalRespectSide 0x2 0x5 0x0 0x18 0x6 0x1 0x5 + launchtask AnimTask_TraceMonBlended 0x2 0x4 0x0 0x4 0x7 0x3 + playsewithpan SE_W026, SOUND_PAN_ATTACKER + delay 0x4 + launchtask AnimTask_ShakeMon 0x2 0x5 0x1 0x5 0x0 0x6 0x1 + launchtemplate gBasicHitSplatSpriteTemplate 0x84, 0x4, 0x0 0x0 0x1 0x1 + playsewithpan SE_W233B, SOUND_PAN_TARGET + launchtemplate gHorizontalLungeSpriteTemplate 0x2 0x5 0x1 0x3 0x0 0x5 0x1 + launchtemplate gRockFragmentSpriteTemplate 0x82 0x6 0x5 0x0 0xffec 0x18 0xe 0x1 + launchtemplate gRockFragmentSpriteTemplate 0x82 0x6 0x0 0x5 0x14 0xffe8 0xe 0x2 + launchtemplate gRockFragmentSpriteTemplate 0x82 0x6 0xfffb 0x0 0xffec 0xffe8 0xe 0x2 + launchtemplate gHorizontalLungeSpriteTemplate 0x2 0x5 0x1 0x3 0x0 0x5 0x1 + waitforvisualfinish + clearmonbg SIDE_ATTACKER + blendoff + waitforvisualfinish + end + + +Move_LIQUIDATION:: + loadspritegfx ANIM_TAG_WATER_IMPACT + loadspritegfx ANIM_TAG_SMALL_BUBBLES + loadspritegfx ANIM_TAG_ICE_CRYSTALS + loadspritegfx ANIM_TAG_IMPACT + monbg ANIM_TARGET + setalpha 12, 8 + launchtemplate gHorizontalLungeSpriteTemplate 0x2 0x2 0x4 0x4 + delay 0x6 + launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0x0 0x0 0x1 0x1 + launchtask AnimTask_ShakeMon 0x2 0x5 0x1 0x3 0x0 0x6 0x1 + playsewithpan SE_W104, SOUND_PAN_TARGET + waitforvisualfinish + call RisingWaterHitEffect + waitforvisualfinish + clearmonbg SIDE_TARGET + blendoff + end + + +Move_PRISMATIC_LASER:: + loadspritegfx ANIM_TAG_ICE_CHUNK @blue green color + loadspritegfx ANIM_TAG_SPARK_H @yellow color + loadspritegfx ANIM_TAG_JAGGED_MUSIC_NOTE @red color + loadspritegfx ANIM_TAG_RAZOR_LEAF @green color + loadspritegfx ANIM_TAG_POISON_BUBBLE @violet color + loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT @charge animation + loadspritegfx ANIM_TAG_TEAL_ALERT @straight lines + loadspritegfx ANIM_TAG_GREEN_SPIKE @needle arm animation + loadspritegfx ANIM_TAG_NEEDLE @sting + monbg ANIM_ATTACKER + setblends 0x80E + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0x10 0x0 + playsewithpan SE_ELEBETA, SOUND_PAN_ATTACKER + launchtemplate gPrismaticLaserChargeTemplate 0x2 0x1 0x0 + call PrismaticLaserInwardSpikes + playsewithpan SE_ELEBETA, SOUND_PAN_ATTACKER + call PrismaticLaserInwardSpikes + playsewithpan SE_ELEBETA, SOUND_PAN_ATTACKER + call PrismaticLaserInwardSpikes + playsewithpan SE_ELEBETA, SOUND_PAN_ATTACKER + call PrismaticLaserInwardSpikes + playsewithpan SE_ELEBETA, SOUND_PAN_ATTACKER + delay 0x1E + call PrismaticLaserOutwardSpikes + delay 0x5 + call PrismaticLaserOutwardSpikes2 + delay 0x5 + call PrismaticLaserOutwardSpikes + delay 0x5 + call PrismaticLaserOutwardSpikes2 + delay 0x5 + call PrismaticLaserOutwardSpikes + waitforvisualfinish + unloadspritegfx ANIM_TAG_TEAL_ALERT + unloadspritegfx ANIM_TAG_GREEN_SPIKE + unloadspritegfx ANIM_TAG_ICE_CHUNK + unloadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT + delay 0x1E + launchtask AnimTask_HorizontalShake 0x5 0x3 0x5 0xa 0x32 + launchtask AnimTask_HorizontalShake 0x5 0x3 0x4 0xa 0x32 + playsewithpan SE_W076, SOUND_PAN_ATTACKER + call PrismaticLaserRain + call PrismaticLaserRain + call PrismaticLaserRain + call PrismaticLaserRain + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x10 0x0 0x0 + waitforvisualfinish + clearmonbg ANIM_ATTACKER + blendoff + end +PrismaticLaserOutwardSpikes: + launchtemplate gPrismaticLaserRedOutwardTemplate 0x82 0x5 0x0 0x1 0x0 0xFF90 0x10 @up + launchtemplate gPrismaticLaserGreenOutwardTemplate 0x82 0x5 0x0 0x1 0x5F 0xFF9D 0x10 @upper right + launchtemplate gPrismaticLaserYellowOutwardTemplate 0x82 0x5 0x0 0x1 0x73 0x0 0x10 @right + launchtemplate gPrismaticLaserVioletOutwardTemplate 0x82 0x5 0x0 0x1 0x4F 0x37 0x10 @lower right + launchtemplate gPrismaticLaserRedOutwardTemplate 0x82 0x5 0x0 0x1 0x0 0x53 0x10 @down + launchtemplate gPrismaticLaserGreenOutwardTemplate 0x82 0x5 0x0 0x1 0xFFB0 0x43 0x10 @lower left + launchtemplate gPrismaticLaserYellowOutwardTemplate 0x82 0x5 0x0 0x1 0xFF60 0x0 0x10 @left + launchtemplate gPrismaticLaserVioletOutwardTemplate 0x82 0x5 0x0 0x1 0xFFAA 0xFF94 0x10 @upper left + playsewithpan SE_W054, SOUND_PAN_ATTACKER + return +PrismaticLaserOutwardSpikes2: + launchtemplate gPrismaticLaserVioletOutwardTemplate 0x82 0x5 0x0 0x1 0xFFE0 0x43 0x10 @between lower left and down + launchtemplate gPrismaticLaserYellowOutwardTemplate 0x82 0x5 0x0 0x1 0x1F 0x37 0x10 @between lower right and down + launchtemplate gPrismaticLaserYellowOutwardTemplate 0x82 0x5 0x0 0x1 0xFFDA 0xFF94 0x10 @between up and upper left + launchtemplate gPrismaticLaserRedOutwardTemplate 0x82 0x5 0x0 0x1 0xFF60 0x43 0x10 @between left and lower left + launchtemplate gPrismaticLaserGreenOutwardTemplate 0x82 0x5 0x0 0x1 0xFF2A 0xFFAA 0x10 @between left and upper left + launchtemplate gPrismaticLaserVioletOutwardTemplate 0x82 0x5 0x0 0x1 0x2D 0xFF9D 0x10 @between up and upper right + launchtemplate gPrismaticLaserRedOutwardTemplate 0x82 0x5 0x0 0x1 0xDF 0xFF9D 0x10 @between right and upper right + launchtemplate gPrismaticLaserGreenOutwardTemplate 0x82 0x5 0x0 0x1 0x9F 0x37 0x10 @between right and lower right + playsewithpan SE_W054, SOUND_PAN_ATTACKER + return +PrismaticLaserInwardSpikes: + launchtemplate gPrismaticLaserRedInwardTemplate 0x82 0x5 0x0 0x0 0x0 0xFF90 0x10 @up + launchtemplate gPrismaticLaserVioletInwardTemplate 0x82 0x5 0x0 0x0 0xFFE0 0x43 0x10 @between lower left and down + delay 0x1 + launchtemplate gPrismaticLaserGreenInwardTemplate 0x82 0x5 0x0 0x0 0x5F 0xFF9D 0x10 @upper right + launchtemplate gPrismaticLaserYellowInwardTemplate 0x82 0x5 0x0 0x0 0x1F 0x37 0x10 @between lower right and down + launchtemplate gPrismaticLaserYellowInwardTemplate 0x82 0x5 0x0 0x0 0xFFDA 0xFF94 0x10 @between up and upper left + delay 0x1 + launchtemplate gPrismaticLaserYellowInwardTemplate 0x82 0x5 0x0 0x0 0x73 0x0 0x10 @right + launchtemplate gPrismaticLaserRedInwardTemplate 0x82 0x5 0x0 0x0 0xFF60 0x43 0x10 @between left and lower left + delay 0x1 + launchtemplate gPrismaticLaserVioletInwardTemplate 0x82 0x5 0x0 0x0 0x4F 0x37 0x10 @lower right + launchtemplate gPrismaticLaserGreenInwardTemplate 0x82 0x5 0x0 0x0 0xFF2A 0xFFAA 0x10 @between left and upper left + delay 0x1 + launchtemplate gPrismaticLaserRedInwardTemplate 0x82 0x5 0x0 0x0 0x0 0x53 0x10 @down + launchtemplate gPrismaticLaserVioletInwardTemplate 0x82 0x5 0x0 0x0 0x2D 0xFF9D 0x10 @between up and upper right + delay 0x1 + launchtemplate gPrismaticLaserGreenInwardTemplate 0x82 0x5 0x0 0x0 0xFFB0 0x43 0x10 @lower left + launchtemplate gPrismaticLaserRedInwardTemplate 0x82 0x5 0x0 0x0 0xDF 0xFF9D 0x10 @between right and upper right + delay 0x1 + launchtemplate gPrismaticLaserYellowInwardTemplate 0x82 0x5 0x0 0x0 0xFF60 0x0 0x10 @left + launchtemplate gPrismaticLaserGreenInwardTemplate 0x82 0x5 0x0 0x0 0x9F 0x37 0x10 @between right and lower right + delay 0x1 + launchtemplate gPrismaticLaserVioletInwardTemplate 0x82 0x5 0x0 0x0 0xFFAA 0xFF94 0x10 @upper left + delay 0x1 + return +PrismaticLaserRain: + launchtemplate gPrismaticLaserYellowRainTemplate 0x82, 0x4, 35, 0x3c, 4, ANIM_TARGET + delay 0x2 + launchtemplate gPrismaticLaserGreenRainTemplate 0x82, 0x4, -30, 0x44, 4, ANIM_TARGET + delay 0x2 + launchtemplate gPrismaticLaserRedRainTemplate 0x82, 0x4, 27, 0x37, 4, ANIM_TARGET + delay 0x2 + launchtemplate gPrismaticLaserVioletRainTemplate 0x82, 0x4, -20, 0x32, 4, ANIM_TARGET + delay 0x2 + launchtemplate gPrismaticLaserYellowRainTemplate 0x82, 0x4, 33, 0x3a, 4, ANIM_TARGET + delay 0x2 + launchtemplate gPrismaticLaserGreenRainTemplate 0x82, 0x4, -12, 0x3a, 4, ANIM_TARGET + delay 0x2 + launchtemplate gPrismaticLaserRedRainTemplate 0x82, 0x4, 19, 0x3c, 4, ANIM_TARGET + delay 0x2 + launchtemplate gPrismaticLaserVioletRainTemplate 0x82, 0x4, -38, 0x3a, 4, ANIM_TARGET + delay 0x2 + launchtemplate gPrismaticLaserYellowRainTemplate 0x82, 0x4, 5, 0x3c, 4, ANIM_TARGET + delay 0x2 + launchtemplate gPrismaticLaserGreenRainTemplate 0x82, 0x4, -23, 0x28, 4, ANIM_TARGET + return + + +Move_SPECTRAL_THIEF:: + choosetwoturnanim SpectralThiefSteal SpectralThiefUnleash +SpectralThiefUnleash: + loadspritegfx ANIM_TAG_HANDS_AND_FEET @Black Colour + loadspritegfx ANIM_TAG_QUICK_GUARD_HAND @Black Colour + loadspritegfx ANIM_TAG_GRAY_SMOKE @smoke + loadspritegfx ANIM_TAG_WHITE_SHADOW @destiny bond + loadspritegfx ANIM_TAG_IMPACT @hits + loadspritegfx ANIM_TAG_POISON_BUBBLE + fadetobg BG_GHOST + waitbgfadein + delay 0x5 + playsewithpan SE_W120, SOUND_PAN_TARGET + launchtemplate gSpectralThiefBlackSmokeTemplate 0x82, 0x4, 0x8 0x8 0x0 0x0 + invisible 0x0 + delay 0x2 + launchtemplate gSpectralThiefBlackSmokeTemplate 0x82, 0x4, 0xfff8 0xfff8 0x0 0x0 + delay 0x2 + launchtemplate gSpectralThiefBlackSmokeTemplate 0x82, 0x4, 0x8 0xfff8 0x0 0x0 + delay 0x2 + launchtemplate gSpectralThiefBlackSmokeTemplate 0x82, 0x4, 0xfff8 0x8 0x0 0x0 + delay 0x2 + launchtemplate gSpectralThiefBlackSmokeTemplate 0x82, 0x4, 0x8 0x8 0x0 0x0 + delay 0x2 + launchtemplate gSpectralThiefBlackSmokeTemplate 0x82, 0x4, 0xfff8 0xfff8 0x0 0x0 + delay 0x2 + launchtemplate gSpectralThiefBlackSmokeTemplate 0x82, 0x4, 0x8 0xfff8 0x0 0x0 + delay 0x2 + launchtemplate gSpectralThiefBlackSmokeTemplate 0x82, 0x4, 0xfff8 0x8 0x0 0x0 + waitforvisualfinish + playsewithpan SE_W060, SOUND_PAN_ATTACKER + waitforvisualfinish + launchtask AnimTask_DestinyBondWhiteShadow 0x5 0x2 0x0 0x30 + delay 0x30 + launchtask AnimTask_ShakeMonInPlace 0x2 0x5 0x0 0x2 0x0 0x18 0x1 + launchtask AnimTask_BlendBattleAnimPalExclude 0x2 0x5 0x6 0x1 0x0 0xc 0x77bd + delay 0x18 + launchtask AnimTask_BlendBattleAnimPalExclude 0x2 0x5 0x6 0x1 0xc 0x0 0x77bd + waitforvisualfinish + setblends 0x1000 + delay 0x1 + monbg_22 ANIM_TARGET + launchtask AnimTask_MoveTargetMementoShadow 0x5 0x0 + playsewithpan SE_W060, SOUND_PAN_TARGET + waitforvisualfinish + clearmonbg_23 ANIM_TARGET + delay 0x1 + blendoff + delay 0x1 + setalpha 12, 8 + monbg ANIM_TARGET + delay 0x1 + launchtemplate gSpectralThiefThiefImpactTemplate 0x82, 0x3, 0xfff6 0xfff6 0x0 + playsewithpan SE_W003, SOUND_PAN_TARGET + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + delay 0x4 + launchtemplate gSpectralThiefThiefImpactTemplate 0x82, 0x3, 0xa 0x14 0x0 + playsewithpan SE_W003, SOUND_PAN_TARGET + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + delay 0x4 + launchtemplate gSpectralThiefThiefImpactTemplate 0x82, 0x3, 0xfffb 0xa 0x0 + playsewithpan SE_W003, SOUND_PAN_TARGET + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + delay 0x4 + launchtemplate gSpectralThiefThiefImpactTemplate 0x82, 0x3, 0x11 0xfff4 0x0 + playsewithpan SE_W003, SOUND_PAN_TARGET + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + delay 0x4 + launchtemplate gSpectralThiefThiefImpactTemplate 0x82, 0x3, 0xfff1 0xf 0x0 + playsewithpan SE_W003, SOUND_PAN_TARGET + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + delay 0x4 + launchtemplate gSpectralThiefThiefImpactTemplate 0x82, 0x3, 0x0 0x0 0x0 + playsewithpan SE_W003, SOUND_PAN_TARGET + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + delay 0x4 + launchtemplate gSpectralThiefThiefImpactTemplate 0x82, 0x3, 0x14 0x2 0x0 + playsewithpan SE_W003, SOUND_PAN_TARGET + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + waitforvisualfinish + visible 0x0 + delay 0x2 + restorebg + waitbgfadein + clearmonbg ANIM_TARGET + blendoff + end +SpectralThiefSteal: + loadspritegfx ANIM_TAG_HANDS_AND_FEET @black color + loadspritegfx ANIM_TAG_ORBS @mimic + loadspritegfx ANIM_TAG_FOCUS_ENERGY @focus energy + setblends 0x50b + monbgprio_29 + panse_1B SE_W107, SOUND_PAN_TARGET, SOUND_PAN_ATTACKER, 0xfd, 0x0 + delay 0xf + launchtemplate gSpectralThiefBlackOrbsTemplate 0x82 0x2 0xfff4 0x18 + delay 0xB + setarg 0x7 0xffff + waitforvisualfinish + playsewithpan SE_W082, SOUND_PAN_ATTACKER + call SpectralThiefBuffUp + delay 0x8 + launchtask AnimTask_ShakeMon2 0x2 0x5 0x0 0x1 0x0 0x20 0x1 + call SpectralThiefBuffUp + delay 0x8 + call SpectralThiefBuffUp + waitforvisualfinish + blendoff + end +SpectralThiefBuffUp: + launchtemplate gSpectralThiefBlackBuffTemplate 0x2 0x4 0x0 0xffe8 0x1a 0x2 + delay 0x4 + launchtemplate gSpectralThiefBlackBuffTemplate 0x2 0x4 0x0 0xe 0x1c 0x1 + delay 0x4 + launchtemplate gSpectralThiefBlackBuffTemplate 0x2 0x4 0x0 0xfffb 0xa 0x2 + delay 0x4 + launchtemplate gSpectralThiefBlackBuffTemplate 0x2 0x4 0x0 0x1c 0x1a 0x3 + delay 0x4 + launchtemplate gSpectralThiefBlackBuffTemplate 0x2 0x4 0x0 0xfff4 0x0 0x1 + return + + +Move_SUNSTEEL_STRIKE:: + loadspritegfx ANIM_TAG_ROUND_SHADOW @fly + loadspritegfx ANIM_TAG_AIR_WAVE_2 @black color + loadspritegfx ANIM_TAG_ROCKS @rock colour + loadspritegfx ANIM_TAG_SMALL_ROCK @small rock + monbg ANIM_TARGET + setalpha 12, 8 + playsewithpan SE_W104, SOUND_PAN_TARGET + launchtemplate gSunsteelStrikeBlackFlyBallTemplate 0x2 0x4 0x0 0x0 0xd 0x150 + launchtask AnimTask_HorizontalShake 0x5 0x3 0x4 0x1 0x1A + delay 0x18 + launchtemplate gSunsteelStrikeRocksTemplate 0x2 0x2 0x0 0x0 @The rock particles mess up the fly animation + launchtemplate gSunsteelStrikeRocksTemplate 0x2 0x2 0x0 0x1 + launchtemplate gSunsteelStrikeRocksTemplate 0x2 0x2 0x0 0x2 + launchtemplate gSunsteelStrikeRocksTemplate 0x2 0x2 0x0 0x3 + waitforvisualfinish + unloadspritegfx ANIM_TAG_ROUND_SHADOW @fly + unloadspritegfx ANIM_TAG_AIR_WAVE_2 @black color + loadspritegfx ANIM_TAG_METEOR @superpower + loadspritegfx ANIM_TAG_GOLD_RING @beam + loadspritegfx ANIM_TAG_SMALL_RED_EYE @red color + loadspritegfx ANIM_TAG_IMPACT @hit + playsewithpan SE_TAMA, SOUND_PAN_ATTACKER + createvisualtask AnimTask_BlendBattleAnimPal, 10, (PAL_BG | PAL_ATK), 3, 0, 15, 0 + waitforvisualfinish + call SunsteelStrikeBeam + call SunsteelStrikeBeam + call SunsteelStrikeBeam + call SunsteelStrikeBeam + call SunsteelStrikeBeam + call SunsteelStrikeBeam + call SunsteelStrikeBeam + call SunsteelStrikeBeam + call SunsteelStrikeBeam + call SunsteelStrikeBeam + stopsound + playsewithpan SE_W025B, SOUND_PAN_TARGET + launchtemplate gSunsteelStrikeSuperpowerTemplate 0x82 0x1 0x14 + delay 0x14 + launchtemplate gSunsteelStrikeRedImpactTemplate 0x2 0x4 0x0 0x0 0x1 0x0 + launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_TARGET 0x6 0x0 0x8 0x1 + waitforvisualfinish + unloadspritegfx ANIM_TAG_METEOR @superpower + unloadspritegfx ANIM_TAG_GOLD_RING @beam + unloadspritegfx ANIM_TAG_SMALL_RED_EYE @red color + unloadspritegfx ANIM_TAG_IMPACT @hit + loadspritegfx ANIM_TAG_SMALL_EMBER @FireSpreadEffect + call FireSpreadEffect + delay 0x4 + playsewithpan SE_W007, SOUND_PAN_TARGET + waitforvisualfinish + visible ANIM_ATTACKER + createvisualtask AnimTask_BlendBattleAnimPal, 10, (PAL_BG | PAL_ATK), 3, 15, 0, 0 + waitforvisualfinish + blendoff + clearmonbg ANIM_TARGET + end +SunsteelStrikeBeam: + launchtemplate gSunsteelStrikeYellowBeamTemplate 0x82 0x1 0x14 + delay 0x1 + launchtemplate gSunsteelStrikeRedBeamTemplate 0x82 0x1 0x14 + delay 0x1 + return + + +Move_MOONGEIST_BEAM:: + loadspritegfx ANIM_TAG_MOON + loadspritegfx ANIM_TAG_ELECTRIC_ORBS + loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT + loadspritegfx ANIM_TAG_ORBS @hyper beam + loadspritegfx ANIM_TAG_WATER_GUN @water gun colour + loadspritegfx ANIM_TAG_ASSURANCE_HAND @purple colour + setalpha 8, 8 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0x10 0x0 + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_ELECTRIC_ORBS, 0, 15, 15, 0x7FFF @White + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_CIRCLE_OF_LIGHT, 0, 15, 15, 0x7FFC @Light Blue + waitforvisualfinish + playsewithpan SE_W025, SOUND_PAN_TARGET + launchtemplate gMoonSpriteTemplate 0x80 0x2 0x20 0x15 + launchtask AnimTask_AlphaFadeIn 0x3 0x5 0x0 0x10 0x10 0x0 0x1 + call MoongeistBeamCharge + call MoongeistBeamCharge + call MoongeistBeamCharge + call MoongeistBeamCharge + launchtemplate gGrowingChargeOrbSpriteTemplate 0x2 0x1 0x0 @;Charge circle + call MoongeistBeamCharge + delay 0x20 + createsoundtask SoundTask_LoopSEAdjustPanning, 0x7, 0xCC, 0xffc0, SOUND_PAN_TARGET, 0x1, 0xf, 0x0, 0x5 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_ATTACKER 0x0 0x4 0x32 0x1 + createvisualtask AnimTask_FlashAnimTagWithColor, 2, ANIM_TAG_ORBS, 1, 12, 0x1f, 0x10, 0, 0 + call MoongeistBeamOrbs + call MoongeistBeamOrbs + call MoongeistBeamOrbs + call MoongeistBeamOrbs + call MoongeistBeamOrbs + launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x4 0x0 0x32 0x1 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_DEF 0x2 0x0 0xb 0x6739 + call MoongeistBeamOrbs + call MoongeistBeamOrbs + call MoongeistBeamOrbs + call MoongeistBeamOrbs + call MoongeistBeamOrbs + call MoongeistBeamOrbs + call MoongeistBeamOrbs + call MoongeistBeamOrbs + call MoongeistBeamOrbs + call MoongeistBeamOrbs + call MoongeistBeamOrbs + call MoongeistBeamOrbs + call MoongeistBeamOrbs + call MoongeistBeamOrbs + call MoongeistBeamOrbs + call MoongeistBeamOrbs + call MoongeistBeamOrbs + call MoongeistBeamOrbs + call MoongeistBeamOrbs + call MoongeistBeamOrbs + call MoongeistBeamOrbs + call MoongeistBeamOrbs + call MoongeistBeamOrbs + call MoongeistBeamOrbs + call MoongeistBeamOrbs + call MoongeistBeamOrbs + call MoongeistBeamOrbs + call MoongeistBeamOrbs + call MoongeistBeamOrbs + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_DEF 0x2 0xb 0x0 0x6739 + delay 0x1A + stopsound + launchtask AnimTask_MoonlightEndFade 0x2 0x0 + end +MoongeistBeamCharge: + launchtemplate gMoongeistBeamChargeTemplate 0, 0x6, 40, 0, 0, 0, 30, 10 @From right + launchtemplate gMoongeistBeamChargeTemplate 0, 0x6, -40, 0, 0, 0, 30, -10 @From left + launchtemplate gMoongeistBeamChargeTemplate 0, 0x6, -25, -40, 0, 0, 30, -20 @From top left + launchtemplate gMoongeistBeamChargeTemplate 0, 0x6, 25, -40, 0, 0, 30, 20 @From top right + launchtemplate gMoongeistBeamChargeTemplate 0, 0x6, 25, 20, 0, 0, 30, 20 @From bottom right + launchtemplate gMoongeistBeamChargeTemplate 0, 0x6, -25, 40, 0, 0, 30, -20 @From bottom left + delay 0x5 + return +MoongeistBeamOrbs: + launchtemplate gMoongeistBeamBlueOrbsTemplate 0x82 0x0 + launchtemplate gMoongeistBeamPurpleOrbsTemplate 0x82 0x0 + delay 0x1 + return + + +Move_TEARFUL_LOOK:: + loadspritegfx ANIM_TAG_SMALL_BUBBLES @tears + loadspritegfx ANIM_TAG_OPENING_EYE @eye + monbg SIDE_TARGET + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0x5 0x7DE0 + waitforvisualfinish + playsewithpan SE_W109, SOUND_PAN_TARGET + launchtemplate gOpeningEyeSpriteTemplate 0x5 0x4 0x0 0x0 0x1 0x0 + delay 0x35 + loopsewithpan SE_W039, SOUND_PAN_ATTACKER, 0xC, 0x2 + delay 0x8 + launchtemplate gTearDropSpriteTemplate 0x2 0x2 0x1 0x0 + launchtemplate gTearDropSpriteTemplate 0x2 0x2 0x1 0x1 + launchtemplate gTearDropSpriteTemplate 0x2 0x2 0x1 0x2 + launchtemplate gTearDropSpriteTemplate 0x2 0x2 0x1 0x3 + delay 0x8 + launchtemplate gTearDropSpriteTemplate 0x2 0x2 0x1 0x0 + launchtemplate gTearDropSpriteTemplate 0x2 0x2 0x1 0x1 + launchtemplate gTearDropSpriteTemplate 0x2 0x2 0x1 0x2 + launchtemplate gTearDropSpriteTemplate 0x2 0x2 0x1 0x3 + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x5 0x0 0x7DE0 + waitforvisualfinish + clearmonbg SIDE_TARGET + end + + +Move_ZING_ZAP:: + loadspritegfx ANIM_TAG_SPARK_2 @sparks + loadspritegfx ANIM_TAG_YELLOW_BALL @ball + loadspritegfx ANIM_TAG_THIN_RING @ring + loadspritegfx ANIM_TAG_SPARK_H @yellow color + loadspritegfx ANIM_TAG_SMALL_EMBER @yellow color + monbg ANIM_TARGET + call ZingZapSparks1 + launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_ATTACKER 0x4 0x0 0x6 0x1 + delay 0xA + call ZingZapSparks2 + launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_ATTACKER 0x4 0x0 0x6 0x1 + delay 0xA + call ZingZapSparks1 + launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_ATTACKER 0x4 0x0 0x6 0x1 + delay 0xA + call ZingZapSparks2 + launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_ATTACKER 0x4 0x0 0x6 0x1 + delay 0xA + launchtask AnimTask_TranslateMonEllipticalRespectSide 0x2 0x5 0x0 0x18 0x6 0x1 0x5 + delay 0x4 + call ZingZapSparks1 + invisible 0x0 + launchtemplate gZingZapYellowBallTemplate 0x82, 0x3, 0x0 0x0 0xF + delay 0xA + call ZingZapSparks2 + delay 0x5 + stopsound + playsewithpan SE_W026, SOUND_PAN_ATTACKER + waitforvisualfinish + launchtemplate gZingZapRingTemplate 0x3 0x6 0x0 0x0 0x1 0x0 0x1f 0x8 + launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_TARGET 0x4 0x0 0x6 0x1 + call ElectricityEffect + visible 0x0 + waitforvisualfinish + clearmonbg ANIM_TARGET + end +ZingZapSparks1: + playsewithpan SE_W085B, SOUND_PAN_ATTACKER + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x20 0x18 0xbe 0xc 0x0 0x1 0x0 + delay 0x0 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x50 0x18 0x16 0xc 0x0 0x1 0x0 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x9c 0x18 0x79 0xd 0x0 0x1 0x1 + return +ZingZapSparks2: + playsewithpan SE_W085B, SOUND_PAN_ATTACKER + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x64 0x18 0x3c 0xa 0x0 0x1 0x0 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0xaa 0x18 0x2a 0xb 0x0 0x1 0x1 + delay 0x0 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0xee 0x18 0xa5 0xa 0x0 0x1 0x1 + return + + +Move_NATURES_MADNESS:: + loadspritegfx ANIM_TAG_ICE_CRYSTALS @small circles + loadspritegfx ANIM_TAG_THIN_RING @ring + loadspritegfx ANIM_TAG_SPARKLE_2 @stars + loadspritegfx ANIM_TAG_PINK_PETAL @pink + loadspritegfx ANIM_TAG_ICE_CHUNK @blue green + loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT @charge + loadspritegfx ANIM_TAG_TEAL_ALERT @charge particles + loadspritegfx ANIM_TAG_ECLIPSING_ORB @blue green + monbg ANIM_ATTACKER + setblends 0x80E + delay 0x1 + loopsewithpan SE_W215, SOUND_PAN_ATTACKER, 0x10, 0x3 + launchtemplate gNaturesMadnessPinkStarsTemplate 0x2 0x4 0xa 0xa 0x19 0x0 + launchtemplate gNaturesMadnessCrystalsTemplate 0x2 0x4 0xa 0xa 0x19 0x0 + delay 0x4 + launchtemplate gNaturesMadnessPinkRingTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1F 0x8 + launchtemplate gNaturesMadnessPinkStarsTemplate 0x2 0x4 0xfff1 0x0 0x19 0x0 + launchtemplate gNaturesMadnessCrystalsTemplate 0x2 0x4 0xfff1 0x0 0x19 0x0 + delay 0x4 + launchtemplate gNaturesMadnessPinkStarsTemplate 0x2 0x4 0x14 0xa 0x19 0x0 + launchtemplate gNaturesMadnessCrystalsTemplate 0x2 0x4 0x14 0xa 0x19 0x0 + delay 0x4 + launchtemplate gNaturesMadnessPinkRingTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1F 0x8 + launchtemplate gNaturesMadnessPinkStarsTemplate 0x2 0x4 0x0 0xfff6 0x19 0x0 + launchtemplate gNaturesMadnessCrystalsTemplate 0x2 0x4 0x0 0xfff6 0x19 0x0 + delay 0x4 + launchtemplate gNaturesMadnessPinkStarsTemplate 0x2 0x4 0xfff6 0xf 0x19 0x0 + launchtemplate gNaturesMadnessCrystalsTemplate 0x2 0x4 0xfff6 0xf 0x19 0x0 + delay 0x4 + launchtemplate gNaturesMadnessPinkRingTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1F 0x8 + launchtemplate gNaturesMadnessPinkStarsTemplate 0x2 0x4 0x19 0x14 0x19 0x0 + launchtemplate gNaturesMadnessCrystalsTemplate 0x2 0x4 0x19 0x14 0x19 0x0 + delay 0x4 + launchtemplate gNaturesMadnessPinkStarsTemplate 0x2 0x4 0xffec 0x14 0x19 0x0 + launchtemplate gNaturesMadnessCrystalsTemplate 0x2 0x4 0xffec 0x14 0x19 0x0 + delay 0x4 + launchtemplate gNaturesMadnessPinkRingTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1F 0x8 + launchtemplate gNaturesMadnessPinkStarsTemplate 0x2 0x4 0xc 0x0 0x19 0x0 + launchtemplate gNaturesMadnessCrystalsTemplate 0x2 0x4 0xc 0x0 0x19 0x0 + clearmonbg ANIM_ATTACKER + delay 0x1 + monbg ANIM_TARGET + waitforvisualfinish + launchtemplate gNaturesMadnessGrayRingTemplate 0x28 0x4 0x0 0x0 0x1 0x0 + playsewithpan SE_W215, SOUND_PAN_ATTACKER + delay 0xe + launchtemplate gNaturesMadnessGrayRingTemplate 0x28 0x4 0x0 0x0 0x1 0x0 + playsewithpan SE_W215, SOUND_PAN_ATTACKER + delay 0xe + launchtemplate gNaturesMadnessGrayRingTemplate 0x28 0x4 0x0 0x0 0x1 0x0 + playsewithpan SE_W215, SOUND_PAN_ATTACKER + waitforvisualfinish + playsewithpan SE_W153, SOUND_PAN_ATTACKER + launchtemplate gNaturesMadnessPinkRingTemplate 0x3 0x6 0x0 0x0 0x1 0x0 0x1F 0x8 + launchtemplate gNaturesMadnessPinkStarsTemplate 0x2 0x4 0xa 0xa 0x19 0x1 + launchtemplate gNaturesMadnessPinkStarsTemplate 0x2 0x4 0xfff1 0x0 0x19 0x1 + launchtemplate gNaturesMadnessPinkStarsTemplate 0x2 0x4 0x14 0xa 0x19 0x1 + launchtemplate gNaturesMadnessPinkStarsTemplate 0x2 0x4 0x0 0xfff6 0x19 0x1 + launchtemplate gNaturesMadnessPinkStarsTemplate 0x2 0x4 0xfff6 0xf 0x19 0x1 + launchtemplate gNaturesMadnessPinkStarsTemplate 0x2 0x4 0x19 0x14 0x19 0x1 + launchtemplate gNaturesMadnessPinkStarsTemplate 0x2 0x4 0xffec 0x14 0x19 0x1 + launchtemplate gNaturesMadnessPinkStarsTemplate 0x2 0x4 0xc 0x0 0x19 0x1 + launchtemplate gNaturesMadnessCrystalsTemplate 0x2 0x4 0xa 0xa 0x19 0x1 + launchtemplate gNaturesMadnessCrystalsTemplate 0x2 0x4 0xfff1 0x0 0x19 0x1 + launchtemplate gNaturesMadnessCrystalsTemplate 0x2 0x4 0x14 0xa 0x19 0x1 + launchtemplate gNaturesMadnessCrystalsTemplate 0x2 0x4 0x0 0xfff6 0x19 0x1 + launchtemplate gNaturesMadnessCrystalsTemplate 0x2 0x4 0xfff6 0xf 0x19 0x1 + launchtemplate gNaturesMadnessCrystalsTemplate 0x2 0x4 0x19 0x14 0x19 0x1 + launchtemplate gNaturesMadnessCrystalsTemplate 0x2 0x4 0xffec 0x14 0x19 0x1 + launchtemplate gNaturesMadnessCrystalsTemplate 0x2 0x4 0xc 0x0 0x19 0x1 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + delay 0x5 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + delay 0x5 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0003 0x0000 0x0006 0x0001 + waitforvisualfinish + clearmonbg ANIM_TARGET + blendoff + end + + +Move_MULTI_ATTACK:: + loadspritegfx ANIM_TAG_FOCUS_ENERGY @focus energy + loadspritegfx ANIM_TAG_CUT @cut + monbg ANIM_TARGET + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0xC 0x0 + waitforvisualfinish + playsewithpan SE_W082, SOUND_PAN_ATTACKER + call MultiAttackBuff + delay 0x8 + launchtask AnimTask_BlendColorCycle 0x2 0x6 PAL_ATK 0x2 0x2 0x0 0xb 0x7fff + launchtask AnimTask_ShakeMon2 0x2 0x5 0x0 0x1 0x0 0x20 0x1 + call MultiAttackBuff + delay 0x8 + call MultiAttackBuff + waitforvisualfinish + delay 0xF + playsewithpan SE_W013, SOUND_PAN_TARGET + launchtemplate gCuttingSliceSpriteTemplate 0x2 0x3 0x28 0xffe0 0x0 + launchtemplate gCuttingSliceSpriteTemplate 0x2 0x3 0x28 0xffd0 0x0 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0 0x3 0xf 0x1 + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0xC 0x0 0x0 + waitforvisualfinish + clearmonbg ANIM_TARGET + end +MultiAttackBuff: + launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xffe8 0x1a 0x2 + delay 0x4 + launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xe 0x1c 0x1 + delay 0x4 + launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xfffb 0xa 0x2 + delay 0x4 + launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0x1c 0x1a 0x3 + delay 0x4 + launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xfff4 0x0 0x1 + return + + +Move_MIND_BLOWN:: + loadspritegfx ANIM_TAG_PINK_HEART @pink color + loadspritegfx ANIM_TAG_SMALL_BUBBLES @blue color + loadspritegfx ANIM_TAG_BLACEPHALON_HEAD @head + loadspritegfx ANIM_TAG_ORBS @circles + loadspritegfx ANIM_TAG_IMPACT @hit + monbg ANIM_TARGET + setalpha 12, 8 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0xC 0x0 + waitforvisualfinish + playsewithpan SE_RU_HYUU, SOUND_PAN_TARGET + launchtemplate gMindBlownHeadTemplate 0x82, 0x3, 0x0 0x0 0x25 + waitforvisualfinish + launchtask AnimTask_ShakeMon2 0x2 0x5 ANIM_TARGET 0x2 0x0 0xf 0x1 + launchtask AnimTask_ShakeMon2 0x2 0x5 ANIM_DEF_PARTNER 0x2 0x0 0xf 0x1 + launchtask AnimTask_ShakeMon2 0x2 0x5 ANIM_ATK_PARTNER 0x2 0x0 0xf 0x1 + delay 0x1 + playsewithpan SE_W153, SOUND_PAN_ATTACKER + launchtemplate gMindBlownBlueImpactTemplate 0x83 0x2 0x1 0x0 + launchtemplate gMindBlownPinkImpactTemplate 0x83 0x2 0x1 0x0 + call MindBlownBlueOrbs + delay 0x1 + call MindBlownPinkOrbs + delay 0x1 + call MindBlownBlueOrbs + delay 0x1 + call MindBlownPinkOrbs + delay 0x1 + call MindBlownBlueOrbs + delay 0x1 + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0xC 0x0 0x0 + waitforvisualfinish + blendoff + clearmonbg ANIM_TARGET + end +MindBlownBlueOrbs: + launchtemplate gMindBlownBlueOrbsTemplate 0x82 0x5 0x1 0x1 0x0 0xFF90 0x8 @up + launchtemplate gMindBlownBlueOrbsTemplate 0x82 0x5 0x1 0x1 0x5F 0xFF9D 0x8 @upper right + launchtemplate gMindBlownBlueOrbsTemplate 0x82 0x5 0x1 0x1 0x73 0x0 0x8 @right + launchtemplate gMindBlownBlueOrbsTemplate 0x82 0x5 0x1 0x1 0x4F 0x37 0x8 @lower right + launchtemplate gMindBlownBlueOrbsTemplate 0x82 0x5 0x1 0x1 0x0 0x53 0x8 @down + launchtemplate gMindBlownBlueOrbsTemplate 0x82 0x5 0x1 0x1 0xFFB0 0x43 0x8 @lower left + launchtemplate gMindBlownBlueOrbsTemplate 0x82 0x5 0x1 0x1 0xFF60 0x0 0x8 @left + launchtemplate gMindBlownBlueOrbsTemplate 0x82 0x5 0x1 0x1 0xFFAA 0xFF94 0x8 @upper left + return +MindBlownPinkOrbs: + launchtemplate gMindBlownPinkOrbsTemplate 0x82 0x5 0x1 0x1 0x2D 0xFF9D 0x8 @between up and upper right + launchtemplate gMindBlownPinkOrbsTemplate 0x82 0x5 0x1 0x1 0xDF 0xFF9D 0x8 @between right and upper right + launchtemplate gMindBlownPinkOrbsTemplate 0x82 0x5 0x1 0x1 0x9F 0x37 0x8 @between right and lower right + launchtemplate gMindBlownPinkOrbsTemplate 0x82 0x5 0x1 0x1 0x1F 0x37 0x8 @between lower right and down + launchtemplate gMindBlownPinkOrbsTemplate 0x82 0x5 0x1 0x1 0xFFE0 0x43 0x8 @between lower left and down + launchtemplate gMindBlownPinkOrbsTemplate 0x82 0x5 0x1 0x1 0xFF60 0x43 0x8 @between left and lower left + launchtemplate gMindBlownPinkOrbsTemplate 0x82 0x5 0x1 0x1 0xFF2A 0xFFAA 0x8 @between left and upper left + launchtemplate gMindBlownPinkOrbsTemplate 0x82 0x5 0x1 0x1 0xFFDA 0xFF94 0x8 @between up and upper left + return + + +Move_PLASMA_FISTS:: + loadspritegfx ANIM_TAG_SHOCK_3 @charge + loadspritegfx ANIM_TAG_SPARK_2 @ElectricityEffect + loadspritegfx ANIM_TAG_SPARK @shock wave + loadspritegfx ANIM_TAG_IMPACT @thunder punch + loadspritegfx ANIM_TAG_HANDS_AND_FEET @thunder punch + loadspritegfx ANIM_TAG_LIGHTNING @thunder punch + monbg ANIM_ATTACKER + setalpha 12, 8 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0x10 0x0 + waitforvisualfinish + launchtemplate gPlasmaFistsChargeTemplate 0x2 0x1 0x0 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_ATTACKER 0x0 0x3 0x5c 0x1 + call PlasmaFistSpark1 + delay 0xA + call PlasmaFistSpark2 + delay 0xA + call PlasmaFistSpark1 + delay 0xA + call PlasmaFistSpark2 + delay 0xA + call PlasmaFistSpark1 + delay 0xA + call PlasmaFistSpark2 + delay 0xA + call PlasmaFistSpark1 + delay 0xA + call PlasmaFistSpark2 + delay 0xA + call PlasmaFistSpark1 + delay 0xA + call PlasmaFistSpark2 + delay 0xA + call PlasmaFistSpark1 + delay 0xA + call PlasmaFistSpark2 + waitforvisualfinish + clearmonbg ANIM_ATTACKER + launchtask AnimTask_ShockWaveProgressingBolt 0x5 0x0 + waitforvisualfinish + monbg ANIM_TARGET + call PlasmaFistsImpact + waitforvisualfinish + call PlasmaFistsImpact + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0xC 0x0 0x0 + waitforvisualfinish + clearmonbg ANIM_TARGET + blendoff + end +PlasmaFistSpark1: + playsewithpan SE_W268, SOUND_PAN_ATTACKER + launchtask AnimTask_BlendColorCycle 0x2 0x6 PAL_ATK 0x0 0x2 0x0 0xb 0x5bff + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x20 0x18 0xbe 0xc 0x0 0x1 0x0 + delay 0x0 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x50 0x18 0x16 0xc 0x0 0x1 0x0 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x9c 0x18 0x79 0xd 0x0 0x1 0x1 + return +PlasmaFistSpark2: + playsewithpan SE_W268, SOUND_PAN_ATTACKER + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x64 0x18 0x3c 0xa 0x0 0x1 0x0 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0xaa 0x18 0x2a 0xb 0x0 0x1 0x1 + delay 0x0 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0xee 0x18 0xa5 0xa 0x0 0x1 0x1 + return +PlasmaFistsImpact: + playsewithpan SE_W004, SOUND_PAN_TARGET + launchtemplate gFistFootSpriteTemplate 0x84 0x5 0x0 0x0 0x8 0x1 0x0 + launchtemplate gBasicHitSplatSpriteTemplate 0x83 0x4 0x0 0x0 0x1 0x1 + delay 0x1 + launchtask AnimTask_InvertScreenColor 0x2 0x3 0x101 0x101 0x101 + delay 0x1 + launchtemplate gLightningSpriteTemplate 0x82 0x2 0x0 0xffd0 + delay 0x1 + launchtemplate gLightningSpriteTemplate 0x2 0x2 0x0 0xfff0 + delay 0x1 + launchtemplate gLightningSpriteTemplate 0x2 0x2 0x0 0x10 + delay 0x1 + playsewithpan SE_W161B, SOUND_PAN_TARGET + launchtask AnimTask_InvertScreenColor 0x2 0x3 0x101 0x101 0x101 + delay 0x2 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0 0x3 0xf 0x1 + launchtemplate gBasicHitSplatSpriteTemplate 0x3 0x4 0x0 0x0 0x1 0x2 + return + + +Move_PHOTON_GEYSER:: + loadspritegfx ANIM_TAG_SHOCK_3 @charge + loadspritegfx ANIM_TAG_SPARK_2 @ElectricityEffect + loadspritegfx ANIM_TAG_SMALL_RED_EYE @red color + loadspritegfx ANIM_TAG_THIN_RING @calm mind + loadspritegfx ANIM_TAG_SMALL_EMBER @yellow color + loadspritegfx ANIM_TAG_ORBS @recover + monbg ANIM_ATTACKER + setalpha 12, 8 + launchtemplate gPhotonGeyserChargeTemplate 0x2 0x1 0x0 + call PhotonGeyserSparks1 + launchtemplate gPowerAbsorptionOrbSpriteTemplate 0x2 0x3 0xffd8 0xffd8 0x10 + launchtemplate gPowerAbsorptionOrbSpriteTemplate 0x2 0x3 0x0 0x28 0x10 + delay 0xA + call PhotonGeyserSparks2 + delay 0xA + call PhotonGeyserSparks1 + delay 0xA + call PhotonGeyserSparks2 + delay 0xA + call PhotonGeyserSparks1 + launchtemplate gPowerAbsorptionOrbSpriteTemplate 0x2 0x3 0x0 0xffd8 0x10 + launchtemplate gPowerAbsorptionOrbSpriteTemplate 0x2 0x3 0x28 0x14 0x10 + delay 0xA + call PhotonGeyserSparks2 + delay 0xA + call PhotonGeyserSparks1 + delay 0xA + call PhotonGeyserSparks2 + delay 0xA + call PhotonGeyserSparks1 + launchtemplate gPowerAbsorptionOrbSpriteTemplate 0x2 0x3 0xffd8 0x0 0x10 + launchtemplate gPowerAbsorptionOrbSpriteTemplate 0x2 0x3 0x28 0x0 0x10 + delay 0xA + call PhotonGeyserSparks2 + delay 0xA + call PhotonGeyserSparks1 + delay 0xA + call PhotonGeyserSparks2 + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0xF 0x0 + clearmonbg ANIM_ATTACKER + playsewithpan SE_W086, SOUND_PAN_ATTACKER + unloadspritegfx ANIM_TAG_ORBS @recover + unloadspritegfx ANIM_TAG_SHOCK_3 @charge + loadspritegfx ANIM_TAG_YELLOW_BALL @confuse ray (for zap cannon) + loadspritegfx ANIM_TAG_BLACK_BALL_2 @zap cannon + loadspritegfx ANIM_TAG_AIR_WAVE_2 @white/gray color + launchtemplate gPhotonGeyserWhiteRingTemplate 0x3 0x6 0x0 0x0 0x0 0x0 0x1f 0x8 + launchtemplate gPhotonGeyserZapBallTemplate 0x83 0x6 0xa 0x0 0x0 0x0 0x1e 0x0 + launchtemplate gPhotonGeyserZapCannonSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x0 0x28 0x0 + launchtemplate gPhotonGeyserZapCannonSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x40 0x28 0x1 + launchtemplate gPhotonGeyserZapCannonSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x80 0x28 0x0 + launchtemplate gPhotonGeyserZapCannonSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e SOUND_PAN_ATTACKER 0x28 0x2 + launchtemplate gPhotonGeyserZapCannonSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0x20 0x28 0x0 + launchtemplate gPhotonGeyserZapCannonSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0x60 0x28 0x1 + launchtemplate gPhotonGeyserZapCannonSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0xa0 0x28 0x0 + launchtemplate gPhotonGeyserZapCannonSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0xe0 0x28 0x2 + waitforvisualfinish + monbg ANIM_TARGET + launchtemplate gPhotonGeyserYellowRingTemplate 0x3 0x6 0x0 0x0 0x1 0x0 0x1f 0x8 + launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x4 0x0 0x5 0x1 + playsewithpan SE_W153, SOUND_PAN_ATTACKER + unloadspritegfx ANIM_TAG_YELLOW_BALL @confuse ray (for zap cannon) + unloadspritegfx ANIM_TAG_BLACK_BALL_2 @zap cannon + unloadspritegfx ANIM_TAG_AIR_WAVE_2 @white/gray color + @Shoot beam to the sky + loadspritegfx ANIM_TAG_STRAIGHT_BEAM + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_DEF 0x6 0x0 0x10 0x43FF @Light yellow + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x4 0x0 0x60 0x1 + panse_1B SE_W076, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0 + call PhotonGeyserBeam + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_DEF 0x1 0x10 0x0 0x43FF @Light yellow + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0xF 0x0 0x0 + waitforvisualfinish + clearmonbg ANIM_TARGET + blendoff + end +PhotonGeyserSparks1: + playsewithpan SE_W268, SOUND_PAN_ATTACKER + launchtemplate gThinRingShrinkingSpriteTemplate 0x28 0x4 0x0 0x0 0x0 0x0 + launchtemplate gPhotonGeyserSparkTemplate 0x0 0x7 0x20 0x18 0xbe 0xc 0x0 0x1 0x0 + delay 0x0 + launchtemplate gPhotonGeyserSparkTemplate 0x0 0x7 0x50 0x18 0x16 0xc 0x0 0x1 0x0 + launchtemplate gPhotonGeyserSparkTemplate 0x0 0x7 0x9c 0x18 0x79 0xd 0x0 0x1 0x1 + return +PhotonGeyserSparks2: + playsewithpan SE_W268, SOUND_PAN_ATTACKER + launchtemplate gPhotonGeyserSparkTemplate 0x0 0x7 0x64 0x18 0x3c 0xa 0x0 0x1 0x0 + launchtemplate gPhotonGeyserSparkTemplate 0x0 0x7 0xaa 0x18 0x2a 0xb 0x0 0x1 0x1 + delay 0x0 + launchtemplate gPhotonGeyserSparkTemplate 0x0 0x7 0xee 0x18 0xa5 0xa 0x0 0x1 0x1 + return +PhotonGeyserBeam: + launchtemplate gPhotonGeyserBeam 0x83, 0x6, 0, 19, ANIM_TARGET, 180, 2, 6 + delay 0x1 + launchtemplate gPhotonGeyserBeam 0x83, 0x6, 0, 3, ANIM_TARGET, 180, 2, 5 + delay 0x1 + launchtemplate gPhotonGeyserBeam 0x83, 0x6, 0, -13, ANIM_TARGET, 180, 2, 4 + delay 0x1 + launchtemplate gPhotonGeyserBeam 0x83, 0x6, 0, -29, ANIM_TARGET, 180, 2, 3 + delay 0x1 + launchtemplate gPhotonGeyserBeam 0x83, 0x6, 0, -45, ANIM_TARGET, 180, 2, 2 + delay 0x1 + launchtemplate gPhotonGeyserBeam 0x83, 0x6, 0, -61, ANIM_TARGET, 180, 2, 1 + delay 0x1 + launchtemplate gPhotonGeyserBeam 0x83, 0x6, 0, -77, ANIM_TARGET, 180, 2, 0 + return + + +Move_DOUBLE_IRON_BASH:: + loadspritegfx ANIM_TAG_GUST + loadspritegfx ANIM_TAG_IMPACT + loopsewithpan SE_W231, SOUND_PAN_ATTACKER, 0x1c, 0x2 + launchtask AnimTask_MetallicShine 0x5 0x3 0x0 0x0 0x0 + waitforvisualfinish + monbg SIDE_TARGET + monbgprio_28 ANIM_TARGET + setalpha 12, 8 + loopsewithpan SE_W017, SOUND_PAN_ATTACKER, 0x14, 0x2 + launchtask AnimTask_TranslateMonElliptical 0x2 0x5 0x0 0xc 0x4 0x1 0x4 + launchtask AnimTask_AnimateGustTornadoPalette 0x5 0x2 0x1 0x46 + launchtemplate gGustToTargetSpriteTemplate 0x2 0x5 0xffe7 0x0 0x0 0x0 0x0 @wing attack + launchtemplate gGustToTargetSpriteTemplate 0x2 0x5 0x19 0x0 0x0 0x0 0x0 @wing attack + delay 0x18 + launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_ATTACKER 0x18 0x0 0x0 0x9 + delay 0x11 + launchtemplate gBasicHitSplatSpriteTemplate 0x84, 0x4, 0x0 0x0 0x1 0x1 + launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_TARGET 0xffe0 0x0 0x0 0x3 + waitforvisualfinish + playsewithpan SE_W013, SOUND_PAN_TARGET + waitforvisualfinish + launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_ATTACKER 0x0 0xb + waitforvisualfinish + delay 0x3 + launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_TARGET 0x0 0x7 + clearmonbg SIDE_TARGET + blendoff + end + +@@@@@@@@@@@@@@@@@@@@@@@ GEN 8 @@@@@@@@@@@@@@@@@@@@@@@ +Move_DYNAMAX_CANNON:: + goto Move_HYPER_BEAM + + +Move_SNIPE_SHOT:: + loadspritegfx ANIM_TAG_IMPACT_2 + loadspritegfx ANIM_TAG_LEER + launchtask AnimTask_BlendBattleAnimPal 10 5 PAL_BG 0 0 16, 0 @;Black + waitforvisualfinish + launchtemplate gLeerSpriteTemplate 0x82, 2 0x18 -12 + playsewithpan SE_W197, SOUND_PAN_ATTACKER + waitforvisualfinish + delay 0x20 + playsewithpan SE_W202, SOUND_PAN_TARGET + launchtemplate gSnipeShotBallTemplate 0x82, 3, 0 0 16, + waitforvisualfinish + launchtask AnimTask_ShakeMon2 2 5 1 4 0 8, 1 + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 10 5 PAL_BG 0 16, 0 0 @;Black + waitforvisualfinish + end + + +Move_JAW_LOCK:: + loadspritegfx ANIM_TAG_SHARP_TEETH + loadspritegfx ANIM_TAG_IMPACT + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_SHARP_TEETH, 0, 10, 10, 0x0B1D @Light orange + monbg ANIM_TARGET + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x0 0x7 0x0 @Black + waitforvisualfinish + playsewithpan SE_W044, SOUND_PAN_TARGET + launchtemplate gJawLockTeethTemplate 0x2 0x7 0xffe0 0xffe0 0x1 0x333 0x333 0xa 15 + launchtemplate gJawLockTeethTemplate 0x2 0x7 0x20 0x20 0x5 0xfccd 0xfccd 0xa 15 + delay 0xa + launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0xfff8 0x0 0x1 0x1 + launchtask AnimTask_ShakeMon 0x5 0x5 ANIM_TARGET 0x0 0x7 0xA 0x2 + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x7 0x0 0x0 @;Black + waitforvisualfinish + clearmonbg ANIM_TARGET + delay 0x1 + end + + +Move_STUFF_CHEEKS:: + loadspritegfx ANIM_TAG_BERRY_NORMAL + loadspritegfx ANIM_TAG_SHARP_TEETH + loadspritegfx ANIM_TAG_THIN_RING + loadspritegfx ANIM_TAG_SPARKLE_2 + playsewithpan SE_W118, 0xc0 + launchtemplate gFloatingBerryTemplate 1 0x1 0x0 + delay 0x45 + launchtask AnimTask_IsTargetPlayerSide 0x2 0x0 + jumpargeq 0x7 0x1 BERRYEAT_ON_PLAYER +BerryEatingOpponent: + call BiteOpponent + delay 0x10 + call BiteOpponent + delay 0xA + goto POST_BERRY_EAT +BERRYEAT_ON_PLAYER: + call BitePlayer + delay 0x10 + call BitePlayer + delay 0xA +POST_BERRY_EAT: + playsewithpan SE_REAPOKE, 0xc0 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 0x2 0x3 0x7 0x0 0x67f1 + launchtemplate gThinRingExpandingSpriteTemplate 3 0x4 0x0 0x0 0x0 0x0 + waitforvisualfinish + end +BitePlayer: + playsewithpan SE_W044, 0x3f + launchtemplate gSharpTeethSpriteTemplate 2 0x6 0x27 0xffD0 0x0 0x0 0x333 0xa + launchtemplate gSharpTeethSpriteTemplate 2 0x6 0x27 0x10 0x4 0x0 0xfccd 0xa + return +BiteOpponent: + playsewithpan SE_W044, 0x3f + launchtemplate gSharpTeethSpriteTemplate 2 0x6 0xffDF 0xffD0 0x0 0x0 0x333 0xa + launchtemplate gSharpTeethSpriteTemplate 2 0x6 0xffDF 0x10 0x4 0x0 0xfccd 0xa + return + + +Move_NO_RETREAT:: + loadspritegfx ANIM_TAG_SMALL_EMBER + loopsewithpan SE_W172, SOUND_PAN_ATTACKER 0x7 0x12 + launchtemplate gNoRetreatFlameTemplate 2, 0x5 ANIM_ATTACKER, 20, 10, 0xA0, 0 + launchtemplate gNoRetreatFlameTemplate 2, 0x5 ANIM_ATTACKER, -20, 10, 0xA0, 0 + launchtask AnimTask_TeeterDanceMovement 0x5 0x0 + waitforvisualfinish + end + + +Move_TAR_SHOT:: + loadspritegfx ANIM_TAG_POISON_BUBBLE + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_POISON_BUBBLE, 0, 15, 15, 0 @Black + monbg ANIM_TARGET + launchtemplate gAppleAcidLaunchTemplate 0x82, 0x6 0x14 0x0 0x28 0x1 0x0 0x0 + playsewithpan SE_W145C, SOUND_PAN_ATTACKER + delay 0x5 + launchtemplate gAppleAcidLaunchTemplate 0x82, 0x6 0x14 0x0 0x28 0x1 0xffe8 0x0 + playsewithpan SE_W145C, SOUND_PAN_ATTACKER + delay 0xf + launchtask AnimTask_ShakeMon2 0x5 0x5 ANIM_TARGET 0x2 0x0 0xa 0x1 + launchtask AnimTask_BlendColorCycle 0x2 0x6 PAL_DEF 0x2 0x2 0x0 0x10 0x0 @;Black + launchtemplate gAppleAcidDripTemplate 0x82, 0x5 0xffe6 0xffe8 0x0 0xf 0x37 + playsewithpan SE_W145, SOUND_PAN_TARGET + delay 0xa + launchtemplate gAppleAcidDripTemplate 0x82, 0x5 0xf 0xffe5 0x0 0xC 0x32 + playsewithpan SE_W145, SOUND_PAN_TARGET + delay 0xa + launchtemplate gAppleAcidDripTemplate 0x82, 0x5 0xfff1 0xffef 0x0 0xa 0x2d + playsewithpan SE_W145 SOUND_PAN_TARGET + waitforvisualfinish + clearmonbg ANIM_TARGET + end + + +Move_MAGIC_POWDER:: + loadspritegfx ANIM_TAG_POISON_POWDER + loadspritegfx ANIM_TAG_WATER_GUN + loopsewithpan SE_W234, SOUND_PAN_ATTACKER 0xE 0x8 + launchtemplate gPoisonPowderParticleSpriteTemplate 0x82 0x6 0xffe2 0xffea 0x75 0x50 0x5 0x1 + launchtemplate gMagicPowderBluePowderTemplate 0x82 0x6 0xa 0xffea 0x75 0x50 0xfffb 0x1 + launchtemplate gPoisonPowderParticleSpriteTemplate 0x82 0x6 0xffe7 0xffea 0x75 0x70 0x5 0x3 + delay 0xf + launchtemplate gMagicPowderBluePowderTemplate 0x82 0x6 0xfffb 0xffea 0x75 0x50 0xfffb 0x1 + launchtemplate gPoisonPowderParticleSpriteTemplate 0x82 0x6 0x5 0xffea 0x75 0x60 0x5 0x1 + launchtemplate gMagicPowderBluePowderTemplate 0x82 0x6 0x0 0xffea 0x75 0x45 0xfffb 0x1 + launchtemplate gPoisonPowderParticleSpriteTemplate 0x82 0x6 0xfff1 0xffea 0x75 0x70 0x5 0x2 + delay 0x1e + launchtemplate gMagicPowderBluePowderTemplate 0x82 0x6 0xfff1 0xffea 0x75 0x70 0x5 0x2 + launchtemplate gPoisonPowderParticleSpriteTemplate 0x82 0x6 0xf 0xffea 0x75 0x50 0xfffb 0x1 + launchtemplate gMagicPowderBluePowderTemplate 0x82 0x6 0xfff6 0xffea 0x75 0x60 0x7 0x2 + launchtemplate gPoisonPowderParticleSpriteTemplate 0x82 0x6 0xfffb 0xffea 0x75 0x5a 0xfff8 0x0 + delay 0x14 + launchtemplate gMagicPowderBluePowderTemplate 0x82 0x6 0xfff6 0xffea 0x75 0x50 0xfffb 0x1 + launchtemplate gPoisonPowderParticleSpriteTemplate 0x82 0x6 0x0 0xffea 0x75 0x59 0x5 0x2 + launchtemplate gMagicPowderBluePowderTemplate 0x82 0x6 0x14 0xffea 0x75 0x70 0xfff8 0x2 + launchtemplate gPoisonPowderParticleSpriteTemplate 0x82 0x6 0x5 0xffea 0x75 0x50 0x5 0x1 + waitforvisualfinish + playsewithpan SE_W048, SOUND_PAN_TARGET + launchtask AnimTask_ScaleMonAndRestore 0x5 0x5 0xfffa 0xfffa 0xf 0x1 0x1 + waitforvisualfinish + end + + +Move_DRAGON_DARTS:: + loadspritegfx ANIM_TAG_DREEPY + loadspritegfx ANIM_TAG_EXPLOSION + playsewithpan SE_RU_HYUU, SOUND_PAN_ATTACKER + launchtemplate gDreepyMissileTemplate 0x82, 0x3, 0x0 0x0 0x19 + delay 0x19 + playsewithpan SE_W120, SOUND_PAN_TARGET + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x3 0x0 0x10 0x1 + launchtemplate gExplosionSpriteTemplate, 0x83, 0x4 0x0 0x0 0x1 0x1 + waitforvisualfinish + end + + +Move_TEA_TIME:: + goto Move_MILK_DRINK + + +Move_OCTOLOCK:: + loadspritegfx ANIM_TAG_TENDRILS + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_TENDRILS, 0, 12, 12, 0x3D98 @Pinkish Red + loopsewithpan SE_W010, SOUND_PAN_TARGET 0x6 0x4 + launchtemplate gConstrictBindingSpriteTemplate 0x84, 0x4, 0x0 0x10 0x0 0x2 + delay 0x7 + launchtemplate gConstrictBindingSpriteTemplate 0x83 0x4 0x0 0x0 0x0 0x2 + launchtemplate gConstrictBindingSpriteTemplate 0x82, 0x4, 0x0 0x8 0x1 0x2 + delay 0x7 + launchtemplate gConstrictBindingSpriteTemplate 0x83 0x4 0x0 0xfff8 0x1 0x2 + delay 0x8 + launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x3 0x0 0x6 0x1 + delay 0x14 + launchtask AnimTask_BlendColorCycle 0x2 0x6 PAL_DEF 0x2 0x2 0x0 0x8 0x1f + playsewithpan SE_W020, SOUND_PAN_TARGET + setarg 0x7 0xffff + waitforvisualfinish + end + + +Move_BOLT_BEAK:: + loadspritegfx ANIM_TAG_HORN_HIT + loadspritegfx ANIM_TAG_IMPACT + loadspritegfx ANIM_TAG_SPARK_2 + loadspritegfx ANIM_TAG_ELECTRICITY + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_ELECTRICITY, 0, 12, 12, 0x76E1 @Blue Electricity + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_HORN_HIT, 0, 12, 12, 0x079D @Yellow + call BoltBeakSparks + waitforvisualfinish + launchtask AnimTask_BlendColorCycle 0x2 0x6 0x3 0xffe1 0x1 0x0 0x0 0x5bff + launchtemplate gHorizontalLungeSpriteTemplate 0x2 0x2 0x4 0x4 + delay 0x4 + launchtemplate gHealingBlueStarSpriteTemplate 0x84 0x3 0x8 0x8 0xa + waitforvisualfinish + launchtemplate gFlashingHitSplatSpriteTemplate 0x83 0x4 0x0 0x0 0x1 0x1 + playsewithpan SE_W030, SOUND_PAN_TARGET + launchtask AnimTask_ShakeMon 0x2 0x5 0x1 0x3 0x0 0x6 0x1 + waitforvisualfinish + launchtask AnimTask_BlendColorCycle 0x2 0x6 0x4 0xffe1 0x2 0x0 0x6 0x5bff + call ElectricityEffect + waitforvisualfinish + end +BoltBeakSparks: + playsewithpan SE_W085B, SOUND_PAN_ATTACKER + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x20 0x18 0xbe 0xc 0x0 0x1 0x0 + delay 0x0 + launchtemplate gBoltBeakBlueSparkTemplate 0x0 0x7 0x50 0x18 0x16 0xc 0x0 0x1 0x0 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0x9c 0x18 0x79 0xd 0x0 0x1 0x1 + delay 0x0 + launchtask AnimTask_BlendColorCycle 0x2 0x6 0x3 0xffe1 0x1 0x0 0x0 0x5bff + delay 0xa + launchtask AnimTask_BlendColorCycle 0x2 0x6 0x3 0xffe1 0x1 0x5 0x5 0x5bff + playsewithpan SE_W085B, SOUND_PAN_ATTACKER + launchtemplate gBoltBeakBlueSparkTemplate 0x0 0x7 0x64 0x18 0x3c 0xa 0x0 0x1 0x0 + launchtemplate gSparkElectricitySpriteTemplate 0x0 0x7 0xaa 0x18 0x2a 0xb 0x0 0x1 0x1 + delay 0x0 + launchtemplate gBoltBeakBlueSparkTemplate 0x0 0x7 0xee 0x18 0xa5 0xa 0x0 0x1 0x1 + delay 0x0 + launchtask AnimTask_BlendColorCycle 0x2 0x6 0x3 0xffe1 0x1 0x0 0x0 0x76E1 + delay 0x14 + launchtask AnimTask_BlendColorCycle 0x2 0x6 0x3 0xffe1 0x1 0x4 0x4 0x76E1 + playsewithpan SE_W085B, SOUND_PAN_ATTACKER + launchtemplate gSparkElectricityFlashingSpriteTemplate 0x4 0x8 0x0 0x0 0x20 0xc 0x0 0x14 0x0 0x0 + launchtemplate gBoltBeakBlueFlashingSparkTemplate 0x4 0x8 0x0 0x0 0x20 0xc 0x40 0x14 0x1 0x0 + launchtemplate gSparkElectricityFlashingSpriteTemplate 0x4 0x8 0x0 0x0 0x20 0xc 0x80 0x14 0x0 0x0 + launchtemplate gBoltBeakBlueFlashingSparkTemplate 0x4 0x8 0x0 0x0 0x20 0xc SOUND_PAN_ATTACKER 0x14 0x2 0x0 + launchtemplate gSparkElectricityFlashingSpriteTemplate 0x4 0x8 0x0 0x0 0x10 0xc 0x20 0x14 0x0 0x0 + launchtemplate gBoltBeakBlueFlashingSparkTemplate 0x4 0x8 0x0 0x0 0x10 0xc 0x60 0x14 0x1 0x0 + launchtemplate gSparkElectricityFlashingSpriteTemplate 0x4 0x8 0x0 0x0 0x10 0xc 0xa0 0x14 0x0 0x0 + launchtemplate gBoltBeakBlueFlashingSparkTemplate 0x4 0x8 0x0 0x0 0x10 0xc 0xe0 0x14 0x2 0x0 + delay 0x4 + return + + +Move_FISHIOUS_REND:: + loadspritegfx ANIM_TAG_SHARP_TEETH @Teeth + loadspritegfx ANIM_TAG_SMALL_BUBBLES + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_SHARP_TEETH, 0, 10, 10, 0x726A @Blue Teeth + playsewithpan SE_W127, SOUND_PAN_TARGET + launchtemplate gFishiousRendTeethTemplate, 0x80, 0x2, 50, 4 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x4 0x0 0xC 0x2 + call FishousRendBubbles + waitforvisualfinish + end +FishousRendBubbles: + launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0xF 0x0 + launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0xF 0x0 + delay 0x2 + launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0xA 0x0 + launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0xA 0x0 + delay 0x2 + launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0x5 0x0 + launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0x5 0x0 + delay 0x2 + launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0x0 0x0 + launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0x0 0x0 + delay 0x2 + launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0xfffb 0x0 + launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0xfffb 0x0 + delay 0x2 + launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0xfff6 0x0 + launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0xfff6 0x0 + delay 0x2 + launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0xfff1 0x0 + launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0xfff1 0x0 + delay 0x2 + launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0xffec 0x0 + launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0xffec 0x0 + delay 0x2 + launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0xfff1 0x0 + launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0xfff1 0x0 + delay 0x2 + launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0xfff6 0x0 + launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0xfff6 0x0 + delay 0x2 + launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0xfffb 0x0 + launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0xfffb 0x0 + delay 0x2 + launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0x0 0x0 + launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0x0 0x0 + delay 0x2 + launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0x5 0x0 + launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0x5 0x0 + delay 0x2 + launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0xA 0x0 + launchtemplate gSmallDriftingBubblesSpriteTemplate 0x4 0x2 0xA 0x0 + return + + +Move_COURT_CHANGE:: + goto Move_TRICK_ROOM + + +Move_CLANGOROUS_SOUL:: + loadspritegfx ANIM_TAG_FOCUS_ENERGY @focus energy + loadspritegfx ANIM_TAG_WATER_ORB @blue + loadspritegfx ANIM_TAG_POISON_BUBBLE @purple + loadspritegfx ANIM_TAG_AIR_WAVE_2 @white/grey + loadspritegfx ANIM_TAG_SPARKLE_2 @stars + launchtask AnimTask_RockMonBackAndForth 0x5 0x3 0x0 0x2 0x0 + call ClangorousSoulStarBuffEffect + call ClangorousSoulStarBuffEffect + call ClangorousSoulStarBuffEffect + waitforvisualfinish + loadspritegfx ANIM_TAG_VERTICAL_HEX @red + loadspritegfx ANIM_TAG_HORSESHOE_SIDE_FIST @fist + createsprite gClangorousSoulRedFistTemplate, ANIM_ATTACKER, 2, 0xfff0, 0, 0, 0, 10, ANIM_ATTACKER, RIGHT_FIST, 1 + createsprite gClangorousSoulRedFistTemplate, ANIM_ATTACKER, 2, 0x10, 0, 0, 0, 10, ANIM_ATTACKER, LEFT_FIST, 1 + playsewithpan SE_W233B, SOUND_PAN_TARGET + waitforvisualfinish + loadspritegfx ANIM_TAG_THIN_RING @ring + playsewithpan SE_REAPOKE, SOUND_PAN_ATTACKER + launchtemplate gClangorousSoulRedRingTemplate 0x3 0x4 0x0 0x0 0x0 0x0 + waitforvisualfinish + end +ClangorousSoulStarBuffEffect: + playsewithpan SE_W082, SOUND_PAN_ATTACKER + launchtemplate gClangorousSoulBlueBuffTemplate 0x2 0x4 0x0 0xffe8 0x1a 0x2 + delay 0x4 + launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xe 0x1c 0x1 + delay 0x4 + launchtemplate gClangorousSoulPurpleBuffTemplate 0x2 0x4 0x0 0xfffb 0xa 0x2 + launchtemplate gGrantingStarsSpriteTemplate 0x2 0x6 0xfff1 0x0 0x0 0x0 0x20 0x3c + delay 0x4 + launchtemplate gClangorousSoulWhiteBuffTemplate 0x2 0x4 0x0 0x1c 0x1a 0x3 + delay 0x4 + launchtemplate gGrantingStarsSpriteTemplate 0x2 0x6 0xc 0xfffb 0x0 0x0 0x20 0x3c + return + + +Move_BODY_PRESS:: + loadspritegfx ANIM_TAG_ROUND_SHADOW @fly and bounce animation + loadspritegfx ANIM_TAG_GRAY_SMOKE @smoke + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_ROUND_SHADOW, 0, 0xD, 0xD, 0x1E5D @Orange + playsewithpan SE_W036, SOUND_PAN_ATTACKER + launchtemplate gVerticalDipSpriteTemplate 0x2 0x3 0x6 0x1 0x0 + delay 0x7 + launchtemplate gFlyBallUpSpriteTemplate 0x2 0x4 0x0 0x0 0xd 0x150 @Fly up + waitforvisualfinish + delay 0x2F + launchtemplate gBounceBallLandSpriteTemplate 0x83 0x0 @Bounce down + delay 0x2 + playsewithpan SE_W107, SOUND_PAN_ATTACKER + launchtask AnimTask_SquishTarget 0x2 0x0 + waitforvisualfinish + end + + +Move_DECORATE:: + end @to do: + + +Move_DRUM_BEATING:: + loadspritegfx ANIM_TAG_MUSIC_NOTES + loadspritegfx ANIM_TAG_PURPLE_HAND_OUTLINE + loadspritegfx ANIM_TAG_ROOTS + loadspritegfx ANIM_TAG_IMPACT + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_MUSIC_NOTES, 0, 0xD, 0xD, 0x03AC @Green + monbg ANIM_TARGET + monbgprio_28 ANIM_TARGET + setalpha 12, 8 + call BellyDrumRight + launchtemplate gSlowFlyingMusicNotesSpriteTemplate 0x2 0x4 0x0 0x0 0x0 0x0 + playsewithpan SE_W187, SOUND_PAN_ATTACKER + delay 0xf + call BellyDrumLeft + launchtemplate gSlowFlyingMusicNotesSpriteTemplate 0x2 0x4 0x1 0x1 0x1 0x0 + playsewithpan SE_W187, SOUND_PAN_ATTACKER + delay 0xf + call BellyDrumRight + launchtemplate gSlowFlyingMusicNotesSpriteTemplate 0x2 0x4 0x0 0x3 0x3 0x80 + playsewithpan SE_W187, SOUND_PAN_ATTACKER + delay 0x7 + call BellyDrumLeft + launchtemplate gSlowFlyingMusicNotesSpriteTemplate 0x2 0x4 0x1 0x2 0x0 0x80 + playsewithpan SE_W187, SOUND_PAN_ATTACKER + delay 0x7 + call BellyDrumRight + launchtemplate gSlowFlyingMusicNotesSpriteTemplate 0x2 0x4 0x0 0x1 0x1 0x0 + playsewithpan SE_W187, SOUND_PAN_ATTACKER + delay 0x7 + call BellyDrumLeft + launchtemplate gSlowFlyingMusicNotesSpriteTemplate 0x2 0x4 0x1 0x0 0x3 0x0 + playsewithpan SE_W187, SOUND_PAN_ATTACKER + launchtemplate gFrenzyPlantRootSpriteTemplate 0x2 0x6 0x55 0x10 0x6 0x0 0x3 0x50 + playsewithpan SE_W010, SOUND_PAN_TARGET + delay 0x5 + launchtemplate gFrenzyPlantRootSpriteTemplate 0x2 0x6 0x55 0xfff0 0xfffa 0x0 0x2 0x4b + playsewithpan SE_W010, SOUND_PAN_TARGET + delay 0x5 + launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0xfff6 0xfff6 0x1 0x3 + playsewithpan SE_W003, SOUND_PAN_TARGET + launchtask AnimTask_ShakeMon 0x3 0x5 ANIM_TARGET 0x8 0x0 0x14 0x1 + delay 0x3 + launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0xa 0x8 0x1 0x3 + playsewithpan SE_W003, SOUND_PAN_TARGET + delay 0x3 + launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0xa 0xfffd 0x1 0x2 + playsewithpan SE_W003, SOUND_PAN_TARGET + delay 0x3 + launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0xfffd 0x1 0x1 0x2 + playsewithpan SE_W003, SOUND_PAN_TARGET + delay 0x2 + launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0xfff6 0x1 0x1 0x1 + playsewithpan SE_W003, SOUND_PAN_TARGET + delay 0x2 + launchtemplate gBasicHitSplatSpriteTemplate 0x2 0x4 0x0 0xa 0x1 0x1 + playsewithpan SE_W003, SOUND_PAN_TARGET + waitforvisualfinish + clearmonbg ANIM_TARGET + blendoff + end + + +Move_SNAP_TRAP:: + end @ to do: + + +Move_PYRO_BALL:: + loadspritegfx ANIM_TAG_FLAT_ROCK + loadspritegfx ANIM_TAG_SMALL_EMBER + playsewithpan SE_DANSA, SOUND_PAN_ATTACKER @;Hop + launchtemplate gPyroBallRockTemplate, 2, 0x3, 0, 0, 0 + delay 0x19 + playsewithpan SE_DANSA, SOUND_PAN_ATTACKER @;Hop + delay 0x19 + playsewithpan SE_W172, SOUND_PAN_TARGET + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x3 0x0 0x7 0x043D + launchtemplate gPyroBallBurningRockTemplate, 2, 0x3, 0, 0, 0 + delay 0x19 + playsewithpan SE_W172, SOUND_PAN_TARGET + delay 0x19 + playsewithpan SE_W172, SOUND_PAN_TARGET + launchtemplate gPyroBallFlamesUpTemplate, 2, 0x3, 0, 0, 1 + delay 0x19 + playsewithpan SE_W172B, SOUND_PAN_TARGET + launchtemplate gPyroBallEmberBallTemplate, 2, 0x6, 0, 10, 0, 5, 20, -20 + waitforvisualfinish + launchtask AnimTask_BlendColorCycle 0x2 0x6 PAL_DEF 0x2 0x2 0x0 0xc 0x1f + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0 0x3 0xf 0x1 + call FireSpreadEffect + delay 0x20 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0x7 0x0 0x043D + waitforvisualfinish + end + + +Move_BEHEMOTH_BLADE:: + goto Move_SACRED_SWORD + + +Move_BEHEMOTH_BASH:: + goto Move_SUNSTEEL_STRIKE + + +Move_AURA_WHEEL:: + loadspritegfx ANIM_TAG_IMPACT + loadspritegfx ANIM_TAG_SPARK + loadspritegfx ANIM_TAG_SPARK_2 + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_SPARK, 0x0, 0xC, 0xC, 0x303B @Pinkish-Red Electricity + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_SPARK_2, 0x0, 0xC, 0xC, 0x76E1 @Blue Electricity + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_IMPACT, 0x0, 0xA, 0xA, 0x303B @Pinkish-Red + setalpha 12, 8 + monbg SIDE_TARGET + monbgprio_2A 0x1 + launchtemplate gAuraWheelBlueElectricityTemplate 3, 0x4 0x0 0x0 0x38 0x0 + playsewithpan SE_W085B, SOUND_PAN_ATTACKER + delay 0x2 + launchtemplate gAuraWheelRedElectricityTemplate 3, 0x4 0x0 0x0 0x38 0x4 + playsewithpan SE_W085B, SOUND_PAN_ATTACKER + delay 0x2 + launchtemplate gAuraWheelBlueElectricityTemplate 3, 0x4 0x0 0x0 0x38 0x8 + playsewithpan SE_W085B, SOUND_PAN_ATTACKER + delay 0x2 + launchtemplate gAuraWheelRedElectricityTemplate 3, 0x4 0x0 0x0 0x38 0xc + playsewithpan SE_W085B, SOUND_PAN_ATTACKER + delay 0x2 + launchtemplate gAuraWheelBlueElectricityTemplate 3, 0x4 0x0 0x0 0x38 0x10 + playsewithpan SE_W085B, SOUND_PAN_ATTACKER + delay 0x2 + launchtemplate gAuraWheelRedElectricityTemplate 3, 0x4 0x0 0x0 0x38 0x14 + playsewithpan SE_W085B, SOUND_PAN_ATTACKER + delay 0x2 + launchtemplate gAuraWheelBlueElectricityTemplate 3, 0x4 0x0 0x0 0x38 0x18 + playsewithpan SE_W085B, SOUND_PAN_ATTACKER + waitforvisualfinish + launchtemplate gSlideMonToOffsetSpriteTemplate 2, 0x5 0x0 0x18 0x0 0x0 0x6 + delay 0x4 + playsewithpan SE_W161B, SOUND_PAN_TARGET + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x5 0x0 0x17 0x1 + launchtemplate gBasicHitSplatSpriteTemplate 0x4 0x4 0xfff6 0x0 0x1 0x0 + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_SPARK_2, 2, 12, 0, 0x76E1 @Revert blue Electricity + launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84, 0x8 0x0 0x0 0x30 0x2c 0x0 0x28 0x0 0x8003 + launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84, 0x8 0x0 0x0 0x30 0x2c 0x40 0x28 0x1 0x8003 + launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84, 0x8 0x0 0x0 0x30 0x2c 0x80 0x28 0x0 0x8003 + launchtemplate gSparkElectricityFlashingSpriteTemplate 0x84, 0x8 0x0 0x0 0x30 0x2c 0xc0 0x28 0x2 0x8003 + delay 0x7 + launchtemplate gSlideMonToOriginalPosSpriteTemplate 2, 0x3 0x0 0x0 0x9 + waitforvisualfinish + clearmonbg SIDE_TARGET + blendoff + end + + +Move_BREAKING_SWIPE:: + loadspritegfx ANIM_TAG_IMPACT @hits + loadspritegfx ANIM_TAG_SPARK_2 + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_IMPACT, 0, 12, 12, 0x001F @Red + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_SPARK_2, 0, 12, 12, 0x001F @Red + monbg ANIM_TARGET + setalpha 12, 8 + launchtemplate gBasicHitSplatSpriteTemplate 0x83 0x4 0xffe0 0xfff0 0x1 0x1 + launchtemplate gBreakingSwipeCenteredElectricity 0x82, 0x4, 0x5 0x0 0x5 0x0 + playsewithpan SE_W004, SOUND_PAN_TARGET + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0 0x3 0x15 0x1 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_DEF_PARTNER 0x0 0x3 0x15 0x1 + delay 0x4 + launchtemplate gRandomPosHitSplatSpriteTemplate 0x83 0x2 0x1 0x1 + launchtemplate gBreakingSwipeCenteredElectricity 0x82, 0x4, 0xfff1 0xfff6 0x5 0x0 + playsewithpan SE_W004, SOUND_PAN_TARGET + delay 0x4 + launchtemplate gRandomPosHitSplatSpriteTemplate 0x83 0x2 0x1 0x1 + launchtemplate gBreakingSwipeCenteredElectricity 0x82, 0x4, 0xfff8 0x8 0x5 0x2 + playsewithpan SE_W004, SOUND_PAN_TARGET + delay 0x4 + launchtemplate gBasicHitSplatSpriteTemplate 0x83 0x4 0x20 0x14 0x1 0x1 + launchtemplate gBreakingSwipeCenteredElectricity 0x82, 0x4, 0xffec 0xf 0x5 0x1 + playsewithpan SE_W004, SOUND_PAN_TARGET + waitsound + waitforvisualfinish + blendoff + clearmonbg ANIM_TARGET + end + + +Move_BRANCH_POKE:: + loadspritegfx ANIM_TAG_BRANCH + loadspritegfx ANIM_TAG_IMPACT + playsewithpan SE_W029, SOUND_PAN_ATTACKER + launchtemplate gBranchPokeBranchTemplate, 0x82, 0x3 0x0 0x0 0x25 + waitforvisualfinish + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x5 0x0 0x6 0x1 + launchtemplate gFlashingHitSplatSpriteTemplate, 0x83, 0x4 0x0 0x0 0x1 0x1 + playsewithpan SE_W030, SOUND_PAN_TARGET + waitforvisualfinish + end + + +Move_OVERDRIVE:: + loadspritegfx ANIM_TAG_THIN_RING + loadspritegfx ANIM_TAG_SPARK_2 + loadspritegfx ANIM_TAG_ELECTRICITY + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_ELECTRICITY, 0, 12, 12, 0x76E1 @Blue Electricity + call BoltBeakSparks + waitforvisualfinish + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_THIN_RING, 0, 12, 12, 0x17BF @Yellow Electricity + call OverdriveRings + delay 0x8 + call OverdriveRings + delay 0x10 + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_THIN_RING, 0, 0, 12, 0x76E1 @Blue Electricity + waitforvisualfinish + end +OverdriveRings: + playsewithpan SE_W085, SOUND_PAN_TARGET + launchtemplate gSimplePaletteBlendSpriteTemplate 0x2 0x5 0x1f 0x3 0x8 0x0 0x3ff + launchtask AnimTask_ScaleMonAndRestore 0x5 0x5 0xfffb 0xfffb 0x5 0x0 0x0 + launchtemplate gHyperVoiceRingSpriteTemplate 0x0 0x7 0x2d 0x0 0x0 0x0 0x0 0x0 0x1 + launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x1 0x0 0x6 0x1 + launchtask AnimTask_ShakeMon2 0x2 0x5 0x3 0x1 0x0 0x6 0x1 + launchtask AnimTask_ShakeBattleTerrain 0x2 0x4 0x1 0x0 0x6 0x1 + launchtask SoundTask_WaitForCry 0x5 0x0 + return + + +Move_APPLE_ACID:: + loadspritegfx ANIM_TAG_APPLE + loadspritegfx ANIM_TAG_POISON_BUBBLE + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_POISON_BUBBLE, 0, 12, 12, 0x061D @Orange + playsewithpan SE_W118, SOUND_PAN_ATTACKER + launchtemplate gAppleAcidFloatingAppleTemplate 0xc 0x1 0x0 + delay 0x30 + monbg ANIM_TARGET + launchtemplate gAppleAcidLaunchTemplate 0x82, 0x6 0x14 0x0 0x28 0x1 0x0 0x0 + playsewithpan SE_W145C, SOUND_PAN_ATTACKER + delay 0x5 + launchtemplate gAppleAcidLaunchTemplate 0x82, 0x6 0x14 0x0 0x28 0x1 0x18 0x0 + playsewithpan SE_W145C, SOUND_PAN_ATTACKER + delay 0x5 + launchtemplate gAppleAcidLaunchTemplate 0x82, 0x6 0x14 0x0 0x28 0x1 0xffe8 0x0 + playsewithpan SE_W145C, SOUND_PAN_ATTACKER + delay 0xf + launchtask AnimTask_ShakeMon2 0x5 0x5 ANIM_TARGET 0x2 0x0 0xa 0x1 + launchtemplate gAppleAcidDripTemplate 0x82, 0x5 0x0 0xffea 0x0 0xf 0x37 + playsewithpan SE_W145, SOUND_PAN_TARGET + delay 0xa + launchtemplate gAppleAcidDripTemplate 0x82, 0x5 0xffe6 0xffe8 0x0 0xf 0x37 + playsewithpan SE_W145, SOUND_PAN_TARGET + delay 0xa + launchtemplate gAppleAcidDripTemplate 0x82, 0x5 0xf 0xffe5 0x0 0xf 0x32 + playsewithpan SE_W145, SOUND_PAN_TARGET + delay 0xa + launchtemplate gAppleAcidDripTemplate 0x82, 0x5 0xfff1 0xffef 0x0 0xa 0x2d + playsewithpan SE_W145, SOUND_PAN_TARGET + delay 0xa + launchtemplate gAppleAcidDripTemplate 0x82, 0x5 0x1b 0xffea 0x0 0xf 0x32 + playsewithpan SE_W145, SOUND_PAN_TARGET + waitforvisualfinish + clearmonbg ANIM_TARGET + end + + +Move_GRAV_APPLE:: + loadspritegfx ANIM_TAG_APPLE + fadetobg BG_IN_AIR + waitbgfadeout + launchtask AnimTask_StartSlidingBg 0x5 0x4 0x0 0xf800 0x0 0xffff + waitbgfadein + call SmallAppleShower + call SmallAppleShower + launchtemplate gGravAppleLargeApple, 0x82, 0x4, 0x0, 0x3c, 4, ANIM_TARGET + delay 0x7 + playsewithpan SE_W070, SOUND_PAN_TARGET + launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_TARGET 0 0x15 0x0 0x4 + delay 0x30 + launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_TARGET 0x0 0x10 + waitforvisualfinish + call UnsetPsychicBg + end +SmallAppleShower: + launchtemplate gGravAppleSmallApple, 0x82, 0x4, 35, 0x3c, 4, ANIM_TARGET + playsewithpan SE_RU_HYUU, SOUND_PAN_ATTACKER @;Falling sound + delay 0x2 + launchtemplate gGravAppleSmallApple, 0x82, 0x4, -30, 0x44, 4, ANIM_TARGET + playsewithpan SE_RU_HYUU, SOUND_PAN_ATTACKER @;Falling sound + delay 0x2 + launchtemplate gGravAppleSmallApple, 0x82, 0x4, 27, 0x37, 4, ANIM_TARGET + playsewithpan SE_RU_HYUU, SOUND_PAN_ATTACKER @;Falling sound + delay 0x2 + launchtemplate gGravAppleSmallApple, 0x82, 0x4, -20, 0x32, 4, ANIM_TARGET + playsewithpan SE_RU_HYUU, SOUND_PAN_ATTACKER @;Falling sound + delay 0x2 + launchtemplate gGravAppleSmallApple, 0x82, 0x4, 33, 0x3a, 4, ANIM_TARGET + playsewithpan SE_RU_HYUU, SOUND_PAN_ATTACKER @;Falling sound + delay 0x2 + launchtemplate gGravAppleSmallApple, 0x82, 0x4, -12, 0x3a, 4, ANIM_TARGET + playsewithpan SE_RU_HYUU, SOUND_PAN_ATTACKER @;Falling sound + delay 0x2 + launchtemplate gGravAppleSmallApple, 0x82, 0x4, 19, 0x3c, 4, ANIM_TARGET + playsewithpan SE_RU_HYUU, SOUND_PAN_ATTACKER @;Falling sound + delay 0x2 + launchtemplate gGravAppleSmallApple, 0x82, 0x4, -38, 0x3a, 4, ANIM_TARGET + playsewithpan SE_RU_HYUU, SOUND_PAN_ATTACKER @;Falling sound + delay 0x2 + launchtemplate gGravAppleSmallApple, 0x82, 0x4, 5, 0x3c, 4, ANIM_TARGET + playsewithpan SE_RU_HYUU, SOUND_PAN_ATTACKER @;Falling sound + delay 0x2 + launchtemplate gGravAppleSmallApple, 0x82, 0x4, -23, 0x28, 4, ANIM_TARGET + playsewithpan SE_RU_HYUU, SOUND_PAN_ATTACKER @;Falling sound + delay 0x2 + return + + +Move_SPIRIT_BREAK:: + goto Move_PSYCHIC + + +Move_STRANGE_STEAM:: + loadspritegfx ANIM_TAG_PINK_CLOUD + loadspritegfx ANIM_TAG_FINGER + loadspritegfx ANIM_TAG_WATER_GUN @blue colour + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_FINGER, 0, 10, 10, 0x4798 @Green + monbg SIDE_TARGET + monbgprio_28 ANIM_TARGET + loopsewithpan SE_W172, SOUND_PAN_ATTACKER, 0x4, 0xA + call StrangeSteamCloud + call StrangeSteamCloud + call StrangeSteamCloud + launchtask AnimTask_ShakeMon2 0x2 0x5 ANIM_TARGET 0x2 0x0 0x2A 0x1 + call StrangeSteamCloud + call StrangeSteamCloud + call StrangeSteamCloud + call StrangeSteamCloud + call StrangeSteamCloud + call StrangeSteamCloud + call StrangeSteamCloud + call StrangeSteamCloud + waitforvisualfinish + clearmonbg SIDE_TARGET + end +StrangeSteamCloud: + launchtemplate gStrangeSteamPinkCloudTemplate 0x82 0x5 0xf 0xf 0x14 0x0 0x0 + launchtemplate gStrangeSteamGreenCloudTemplate 0x82 0x5 0xf 0xf 0x14 0xa 0x5 + launchtemplate gStrangeSteamPinkCloudTemplate 0x82 0x5 0xf 0xf 0x14 0xfff6 0xfffb + launchtemplate gStrangeSteamGreenCloudTemplate 0x82 0x5 0xf 0xf 0x14 0x14 0xa + launchtemplate gStrangeSteamBlueCloudTemplate 0x82 0x5 0xf 0xf 0x14 0xffec 0xfff6 + delay 0x2 + return + + +Move_LIFE_DEW:: + loadspritegfx ANIM_TAG_WATER_DROPLET + loadspritegfx ANIM_TAG_BLUE_STAR + monbg SIDE_ATTACKER + launchtemplate gLifeDewDropletTemplate, 2, 0x3, 0, 0, ANIM_ATTACKER + launchtemplate gLifeDewDropletTemplate, 2, 0x3, 0, 0, ANIM_ATK_PARTNER + delay 0x15 + playsewithpan SE_W145, SOUND_PAN_ATTACKER + waitforvisualfinish + playsewithpan SE_W071B, SOUND_PAN_ATTACKER + launchtemplate gLifeDewSpecialOrbsTemplate, 2, 0x4, 0, -5, ANIM_ATTACKER, FALSE + launchtemplate gLifeDewSpecialOrbsTemplate, 2, 0x4, 0, -5, ANIM_ATK_PARTNER, FALSE + delay 0x7 + launchtemplate gLifeDewSpecialOrbsTemplate, 2, 0x4, -15, 10, ANIM_ATTACKER, FALSE + launchtemplate gLifeDewSpecialOrbsTemplate, 2, 0x4, -15, 10, ANIM_ATK_PARTNER, FALSE + delay 0x7 + launchtemplate gLifeDewSpecialOrbsTemplate, 2, 0x4, -15, -15, ANIM_ATTACKER, FALSE + launchtemplate gLifeDewSpecialOrbsTemplate, 2, 0x4, -15, -15, ANIM_ATK_PARTNER, FALSE + delay 0x7 + launchtemplate gLifeDewSpecialOrbsTemplate, 2, 0x4, 10, -5, ANIM_ATTACKER, FALSE + launchtemplate gLifeDewSpecialOrbsTemplate, 2, 0x4, 10, -5, ANIM_ATK_PARTNER, FALSE + delay 0x7 + waitforvisualfinish + clearmonbg SIDE_ATTACKER + end + + +Move_OBSTRUCT:: + loadspritegfx ANIM_TAG_NOISE_LINE @growl + loadspritegfx ANIM_TAG_PROTECT + loadspritegfx ANIM_TAG_OBSTRUCT_CROSS + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_NOISE_LINE, 0, 10, 10, 0 @Black + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_PROTECT, 0, 10, 10, 0 @Black + launchtask SoundTask_PlayDoubleCry 0x2 0x2 ANIM_ATTACKER 0xff + call RoarEffect + waitforvisualfinish + delay 0x10 + monbg SIDE_ATTACKER + monbgprio_28 ANIM_ATTACKER + waitplaysewithpan SE_W115, SOUND_PAN_ATTACKER, 0x10 + launchtemplate gProtectSpriteTemplate, 2, 0x3 0x18 0x0 0x5a @;Protect + waitforvisualfinish + launchtemplate gObstructCrossTemplate, 2, 0x4 0x0 0x0 0x1 0x24 + playsewithpan SE_W043, SOUND_PAN_TARGET + waitforvisualfinish + clearmonbg SIDE_ATTACKER + end + + +Move_FALSE_SURRENDER:: + goto Move_FEINT + + +Move_METEOR_ASSAULT:: + loadspritegfx ANIM_TAG_ELECTRIC_ORBS + loadspritegfx ANIM_TAG_METEOR + loadspritegfx ANIM_TAG_EXPLOSION + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_ELECTRIC_ORBS, 0, 12, 12, 0x0B1D @Light orange + createvisualtask AnimTask_BlendBattleAnimPal, 10, PAL_ATK, 1, 0, 9, 0x0B1D @Light orange + launchtask AnimTask_ElectricChargingParticles 0x2 0x4 0x0 0x30 0x0 0x4 + playsewithpan SE_W268, SOUND_PAN_ATTACKER + waitforvisualfinish + invisible ANIM_ATTACKER + launchtemplate gGrowingSuperpowerTemplate, 0x83, 0x1 0x0 + playsewithpan SE_W207, SOUND_PAN_ATTACKER + delay 0xF + createvisualtask AnimTask_BlendBattleAnimPal, 10, (PAL_ATK | PAL_BG), 1, 0x10, 0x10, 0x7FFF @Screen flash white + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x0 0x5 0x20 0x1 + call BasicExplosion + call BasicExplosion + waitforvisualfinish + visible ANIM_ATTACKER + createvisualtask AnimTask_BlendBattleAnimPal, 10, (PAL_ATK | PAL_BG), 1, 0x10, 0, 0x7FFF @Screen revert from white + waitforvisualfinish + end +BasicExplosion: + playsewithpan SE_W120, SOUND_PAN_TARGET + launchtemplate gExplosionSpriteTemplate, 0x83, 0x4 0x0 0x0 0x1 0x1 + delay 0x3 + playsewithpan SE_W120, SOUND_PAN_TARGET + launchtemplate gExplosionSpriteTemplate, 0x83, 0x4 0x18 0xffe8 0x1 0x1 + delay 0x3 + playsewithpan SE_W120, SOUND_PAN_TARGET + launchtemplate gExplosionSpriteTemplate, 0x83, 0x4 0xfff0 0x10 0x1 0x1 + delay 0x3 + playsewithpan SE_W120, SOUND_PAN_TARGET + launchtemplate gExplosionSpriteTemplate, 0x83, 0x4 0xffe8 0xfff4 0x1 0x1 + delay 0x3 + playsewithpan SE_W120, SOUND_PAN_TARGET + launchtemplate gExplosionSpriteTemplate, 0x83, 0x4 0x10 0x10 0x1 0x1 + return + + +Move_ETERNA_BEAM:: + goto Move_HYPER_BEAM + + +Move_STEEL_BEAM:: + loadspritegfx ANIM_TAG_ELECTRIC_ORBS + loadspritegfx ANIM_TAG_GUST + loadspritegfx ANIM_TAG_SPIKES + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x0 0x0 0x10 0x6B59 @To gray + launchtask AnimTask_ElectricChargingParticles 0x2 0x4 0x0 0x14 0x0 0x2 + playsewithpan SE_W268, SOUND_PAN_ATTACKER + delay 0x14 + loopsewithpan SE_W231, SOUND_PAN_ATTACKER, 0x9, 15 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_ATTACKER 0x0 0x4 72 0x1 + call SteelBeamShards + call SteelBeamShards + launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_TARGET, -30, 0x0 TRUE 145 + call SteelBeamShards + call SteelBeamShards + call SteelBeamShards + call SteelBeamShards + call SteelBeamShards + call SteelBeamShards + call SteelBeamShards + call SteelBeamShards + call SteelBeamShards + call SteelBeamShards + call SteelBeamShards + call SteelBeamShards + call SteelBeamShards + call SteelBeamShards + call SteelBeamShards + call SteelBeamShards + waitforvisualfinish + launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_TARGET 0x0 0x6 + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 PAL_BG 0x1 0xE 0x0 0x6B59 @From gray + waitforvisualfinish + end +SteelBeamShards: + launchtemplate gSteelBeamSpikeShardTemplate 0x80, 0x5 0xf 0xf 0x14 0x0 0x0 + launchtemplate gSteelBeamSpikeShardTemplate 0x80, 0x5 0xf 0xf 0x14 0xa 0x5 + launchtemplate gSteelBeamSpikeShardTemplate 0x80, 0x5 0xf 0xf 0x14 0xfff6 0xfffb + delay 0x2 + launchtemplate gSteelBeamSpikeShardTemplate 0x80, 0x5 0xf 0xf 0x14 0x14 0xa + launchtemplate gSteelBeamSpikeShardTemplate 0x80, 0x5 0xf 0xf 0x14 0xffec 0xfff6 + delay 0x2 + +@@@@@@@@@@@@@@@@@@@@@@@ GEN 1-3 @@@@@@@@@@@@@@@@@@@@@@@ Move_NONE: Move_MIRROR_MOVE: Move_POUND: @@ -9044,7 +17090,6 @@ Move_FOLLOW_ME: loopsewithpan SE_W039, SOUND_PAN_ATTACKER, 22, 3 end -Move_MAGNETIC_FLUX: Move_CHARGE: loadspritegfx ANIM_TAG_ELECTRIC_ORBS loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT @@ -11768,7 +19813,7 @@ Move_CRABHAMMER: end Move_SURF: - createvisualtask AnimTask_CreateSurfWave, 2, FALSE + createvisualtask AnimTask_CreateSurfWave, 2, SURF_PALETTE_SURF delay 24 panse_1B SE_W057, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0 waitforvisualfinish @@ -14065,7 +22110,7 @@ ArmThrustLeft: Move_MUDDY_WATER: panse_1B SE_W250, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0 - createvisualtask AnimTask_CreateSurfWave, 2, TRUE + createvisualtask AnimTask_CreateSurfWave, 2, SURF_PALETTE_MUDDY_WATER waitforvisualfinish end @@ -15609,6 +23654,7 @@ WaterBubblesEffectLong: ElectricityEffect: playsewithpan SE_W085B, SOUND_PAN_TARGET +ElectricityEffectNoSound: createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 5, 0, 5, 0 delay 2 createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, -5, 10, 5, 1 diff --git a/include/battle_anim.h b/include/battle_anim.h index 5189c82112..ce85a7163f 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -50,6 +50,7 @@ extern u8 gBattleAnimAttacker; extern u8 gBattleAnimTarget; extern u16 gAnimBattlerSpecies[MAX_BATTLERS_COUNT]; extern u8 gAnimCustomPanning; +extern u16 gAnimMoveIndex; void ClearBattleAnimationVars(void); void DoMoveAnim(u16 move); @@ -207,6 +208,10 @@ void LaunchStatusAnimation(u8 battlerId, u8 statusAnimId); // battle_anim_ground.c void AnimTask_HorizontalShake(u8 taskId); +void AnimMudSportDirt(struct Sprite *sprite); +void AnimDirtScatter(struct Sprite *sprite); +void AnimMudSportDirtRising(struct Sprite *sprite); +extern const union AffineAnimCmd *const gAffineAnims_SpinningBone[]; // battle_anim_special.c void sub_8172EF0(u8 battler, struct Pokemon *mon); @@ -225,29 +230,110 @@ void AnimParticleBurst(struct Sprite *); void AnimPowerAbsorptionOrb(struct Sprite* sprite); void AnimNeedleArmSpike(struct Sprite *); void AnimTask_CompressTargetHorizontally(u8 taskId); +void AnimSporeParticle(struct Sprite* sprite); +void AnimAbsorptionOrb(struct Sprite* sprite); +void AnimPetalDanceSmallFlower(struct Sprite* sprite); +void AnimPetalDanceBigFlower(struct Sprite* sprite); +void AnimEndureEnergy(struct Sprite* sprite); +void AnimMimicOrb(struct Sprite* sprite); +void AnimSolarbeamBigOrb(struct Sprite* sprite); +void AnimHyperBeamOrb(struct Sprite* sprite); +void AnimNeedleArmSpike_Step(struct Sprite* sprite); +void AnimMovePowderParticle(struct Sprite* sprite); +void AnimMetronomeFinger(struct Sprite* sprite); +void AnimConversion(struct Sprite* sprite); +void AnimCuttingSlice(struct Sprite* sprite); +void AnimThoughtBubble(struct Sprite* sprite); +void AnimTranslateLinearSingleSineWave(struct Sprite* sprite); +void AnimGrantingStars(struct Sprite* sprite); +void AnimFollowMeFinger(struct Sprite* sprite); extern const union AnimCmd *const gRazorLeafParticleAnimTable[]; extern const union AnimCmd *const gPowerAbsorptionOrbAnimTable[]; extern const union AffineAnimCmd *const gPowerAbsorptionOrbAffineAnimTable[]; extern const union AnimCmd *const gMusicNotesAnimTable[]; +extern const union AffineAnimCmd *const gMimicOrbAffineAnimTable[]; +extern const union AnimCmd *const gSolarbeamBigOrbAnimTable[]; +extern const union AnimCmd *const gPowderParticlesAnimTable[]; +extern const union AffineAnimCmd *const gMetronomeFingerAffineAnimTable[]; +extern const union AnimCmd *const gPetalDanceBigFlowerAnimTable[]; +extern const union AnimCmd *const gOctazookaAnimTable[]; +extern const union AffineAnimCmd *const gAbsorptionOrbAffineAnimTable[]; +extern const union AnimCmd *const gGrantingStarsAnimTable[]; +extern const union AnimCmd *const gSporeParticleAnimTable[]; +extern const union AnimCmd *const gHealingBlueStarAnimTable[]; +extern const union AnimCmd *const gMoonlightSparkleAnimTable[]; +extern const union AnimCmd *const gEndureEnergyAnimTable[]; +extern const union AnimCmd *const gPetalDanceSmallFlowerAnimTable[]; +extern const union AnimCmd *const gConversionAnimTable[]; +extern const union AffineAnimCmd *const gConversionAffineAnimTable[]; +extern const union AnimCmd *const gCuttingSliceAnimTable[]; +extern const union AnimCmd *const gScratchAnimTable[]; +extern const union AnimCmd *const gIngrainRootAnimTable[]; +extern const union AffineAnimCmd *const gSwiftStarAffineAnimTable[]; +extern const union AnimCmd *const gMetronomeThroughtBubbleAnimTable[]; + +// battle_anim_effects_2.c +void AnimUproarRing(struct Sprite *sprite); +void AnimSonicBoomProjectile(struct Sprite *sprite); +void AnimOrbitFast(struct Sprite *sprite); +void AnimOrbitScatter(struct Sprite *sprite); +void AnimAngerMark(struct Sprite *sprite); +void AnimHyperVoiceRing(struct Sprite *sprite); +extern const union AffineAnimCmd *const gThinRingShrinkingAffineAnimTable[]; +extern const union AffineAnimCmd *const gThinRingExpandingAffineAnimTable[]; +extern const union AnimCmd *const gExplosionAnimTable[]; +extern const union AffineAnimCmd *const gGuardRingAffineAnimTable[]; +extern const union AffineAnimCmd *const gAngerMarkAffineAnimTable[]; +extern const union AffineAnimCmd *const gWaterPulseRingAffineAnimTable[]; +extern const union AffineAnimCmd *const gHyperVoiceRingAffineAnimTable[]; +extern const union AnimCmd *const gCoinAnimTable[]; +extern const union AffineAnimCmd *const gHiddenPowerOrbAffineAnimTable[]; + +// battle_anim_effects_3.c +void AnimBlackSmoke(struct Sprite *sprite); +void AnimSweetScentPetal(struct Sprite *sprite); +void AnimTealAlert(struct Sprite *sprite); +void AnimBlockX(struct Sprite *sprite); +extern const union AnimCmd *const gOpeningEyeAnimTable[]; +extern const union AnimCmd *const gEclipsingOrbAnimTable[]; // battle_anim_water.c void AnimWaterPulseRing(struct Sprite *sprite); +void AnimSmallBubblePair(struct Sprite *sprite); +void AnimWaterPulseBubble(struct Sprite *sprite); +extern const union AnimCmd *const gAnims_WaterBubbleProjectile[]; +extern const union AnimCmd *const gAnims_FlamethrowerFlame[]; +extern const union AnimCmd *const gAnims_WaterPulseBubble[]; // battle_anim_flying.c void DestroyAnimSpriteAfterTimer(struct Sprite *sprite); void sub_810E2C8(struct Sprite *sprite); void AnimAirWaveCrescent(struct Sprite *sprite); +void AnimFlyBallUp(struct Sprite *sprite); +void AnimFlyBallAttack(struct Sprite *sprite); +void AnimFlyBallAttack_Step(struct Sprite *sprite); +void AnimFlyBallUp_Step(struct Sprite *sprite); extern const union AnimCmd *const gAffineAnims_AirWaveCrescent[]; +extern const union AffineAnimCmd *const gAffineAnims_FlyBallUp[]; +extern const union AffineAnimCmd *const gAffineAnims_FlyBallAttack[]; // battle_anim_poison.c void AnimSludgeBombHitParticle(struct Sprite *); +void AnimAcidPoisonBubble_Step(struct Sprite *sprite); extern const union AffineAnimCmd *const gAffineAnims_PoisonProjectile[]; +extern const union AnimCmd *const gAnims_PoisonProjectile[]; +extern const union AnimCmd *const gAnims_AcidPoisonDroplet[]; // battle_anim_ghost.c void AnimGhostStatusSprite(struct Sprite *sprite); +void AnimShadowBall(struct Sprite *sprite); +void AnimTask_GrudgeFlames_Step(u8 taskId); +extern const union AffineAnimCmd *const gAffineAnims_ShadowBall[]; // battle_anim_psychic.c +extern const union AffineAnimCmd *const gAffineAnims_PsychoBoostOrb[]; extern const union AffineAnimCmd *const gAffineAnims_LusterPurgeCircle[]; +void AnimPsychoBoost(struct Sprite *sprite); // battle_anim_smokescreen.c u8 SmokescreenImpact(s16 x, s16 y, u8 a3); @@ -315,4 +401,97 @@ extern const union AnimCmd *const gAnims_SmallBubblePair[]; extern const union AnimCmd *const gAnims_WaterBubble[]; extern const union AffineAnimCmd *const gAffineAnims_Bite[]; +// battle_anim_normal.c +extern const union AffineAnimCmd *const gAffineAnims_HitSplat[]; +void AnimHitSplatBasic(struct Sprite *sprite); +void AnimFlashingHitSplat(struct Sprite *sprite); +void AnimFlashingHitSplat_Step(struct Sprite *sprite); +void AnimHitSplatRandom(struct Sprite *sprite); +void AnimCrossImpact(struct Sprite *sprite); +void AnimHitSplatOnMonEdge(struct Sprite *sprite); + +// battle_anim_electric.c +void AnimThunderWave(struct Sprite *sprite); +void AnimGrowingChargeOrb(struct Sprite *sprite); +void AnimZapCannonSpark(struct Sprite *sprite); +void AnimSparkElectricity(struct Sprite *sprite); +void AnimElectricPuff(struct Sprite *sprite); +void AnimSparkElectricityFlashing(struct Sprite *sprite); +void AnimGrowingShockWaveOrb(struct Sprite *sprite); +extern const union AffineAnimCmd *const gAffineAnims_GrowingElectricOrb[]; +extern const union AffineAnimCmd *const gAffineAnims_FlashingSpark[]; +extern const union AnimCmd *const gAnims_ThunderboltOrb[]; +extern const union AnimCmd *const gAnims_ElectricPuff[]; +extern const union AnimCmd *const gAnims_ElectricChargingParticles[]; + +// battle_anim_fight.c +void AnimStompFoot(struct Sprite *sprite); +void AnimSpinningKickOrPunch(struct Sprite *sprite); +void AnimBrickBreakWall_Step(struct Sprite *sprite); +void AnimJumpKick(struct Sprite *sprite); +void AnimBasicFistOrFoot(struct Sprite *sprite); +void AnimSpinningKickOrPunchFinish(struct Sprite *sprite); +void AnimRevengeScratch(struct Sprite *sprite); +void AnimDizzyPunchDuck(struct Sprite *sprite); +extern const union AnimCmd *const gAnims_HandOrFoot[]; +extern const union AffineAnimCmd *const gAffineAnims_MegaPunchKick[]; +extern const union AffineAnimCmd *const gAffineAnims_SpinningHandOrFoot[]; +extern const union AnimCmd *const gAnims_RevengeBigScratch[]; + +// battle_anim_rock.c +extern const union AffineAnimCmd *const gAffineAnims_Whirlpool[]; +extern const union AffineAnimCmd *const gAffineAnims_BasicRock[]; +void AnimParticleInVortex(struct Sprite *sprite); +void AnimFallingRock(struct Sprite *sprite); +void AnimRaiseSprite(struct Sprite *sprite); +void AnimFallingRock_Step(struct Sprite *sprite); +void AnimFlyingSandCrescent(struct Sprite *sprite); + +// battle_anim_dark.c +void AnimClawSlash(struct Sprite *sprite); +void AnimTearDrop(struct Sprite *sprite); +void AnimBite(struct Sprite *sprite); +extern const union AnimCmd *const gAnims_ClawSlash[]; +extern const union AffineAnimCmd *const gAffineAnims_TearDrop[]; + +// battle_anim_bug.c +void AnimStringWrap_Step(struct Sprite *sprite); +void AnimMissileArc(struct Sprite *sprite); +void AnimSpiderWeb(struct Sprite *sprite); +void AnimMissileArc_Step(struct Sprite *sprite); + +// battle_anim_ice.c +void AnimThrowMistBall(struct Sprite *sprite); +void AnimMoveParticleBeyondTarget(struct Sprite *sprite); +void AnimIceEffectParticle(struct Sprite *sprite); +void AnimSwirlingSnowball_Step1(struct Sprite *sprite); +extern const union AnimCmd *const gAnims_Snowball[]; +extern const union AffineAnimCmd *const gAffineAnims_IceCrystalHit[]; +extern const union AnimCmd *const gAnims_IceCrystalLarge[]; +extern const union AnimCmd *const gAnims_IceBallChunk[]; +extern const union AnimCmd *const gAnims_BlizzardIceCrystal[]; + +// battle_anim_fire.c +void AnimFireSpread(struct Sprite *sprite); +void AnimFireSpiralOutward(struct Sprite *sprite); +extern const union AnimCmd *const gAnims_FireBlastCross[]; + +// battle_anim_dragon.c +extern const union AnimCmd *const gAnims_DragonBreathFire[]; +extern const union AnimCmd *const gAnims_DragonRageFirePlume[]; +extern const union AffineAnimCmd *const gAffineAnims_DragonRageFire[]; +extern const union AnimCmd *const gAnims_DragonRageFire[]; +extern const union AffineAnimCmd *const gAffineAnims_DragonBreathFire[]; +void AnimDragonRageFirePlume(struct Sprite *sprite); +void AnimDragonFireToTarget(struct Sprite *sprite); +void AnimDragonDanceOrb(struct Sprite *sprite); +void AnimOverheatFlame(struct Sprite *sprite); + +// battle_anim_new.c +bool8 IsMoveAnimDarkVoid(void); +bool8 IsMoveAnimFlashCannonOrSteelBeam(void); +bool8 IsMoveAnimCoreEnforcer(void); +bool8 IsMoveAnimAnchorShot(void); +void CoreEnforcerLoadBeamTarget(struct Sprite* sprite); + #endif // GUARD_BATTLE_ANIM_H diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h index 0883fafe93..1a4c385047 100644 --- a/include/constants/battle_anim.h +++ b/include/constants/battle_anim.h @@ -398,6 +398,10 @@ #define ANIM_ATK_PARTNER 2 #define ANIM_DEF_PARTNER 3 +//sides +#define SIDE_ATTACKER 2 +#define SIDE_TARGET 3 + // stereo panning constants [0-255] // // 0 @@ -592,5 +596,29 @@ #define BACK_ANIM_FADE_GREEN_WITH_SHAKE 0x18 #define BACK_ANIM_FADE_BLUE_WITH_SHAKE 0x19 +// mon pal blend +#define PAL_BG 0x1 +#define PAL_ATK 0x2 +#define PAL_DEF 0x4 +#define PAL_ATK_PARTNER 0x8 +#define PAL_DEF_PARTNER 0x10 +#define PAL_ALL 0x1f +#define PAL_BG_4 0x20 +#define PAL_BG_5 0x40 +#define PAL_ALL_BANKS 0x780 +#define PAL_PLAYER1 0x80 +#define PAL_PLAYER2 0x100 +#define PAL_OPPONENT1 0x200 +#define PAL_OPPONENT2 0x400 + +// horseshoe/fist frames +#define RIGHT_FIST 0 +#define LEFT_FIST 2 + +// surf wave palettes +#define SURF_PALETTE_SURF 0 +#define SURF_PALETTE_MUDDY_WATER 1 +#define SURF_PALETTE_SLUDGE_WAVE 2 + #endif // GUARD_CONSTANTS_BATTLE_ANIM_H diff --git a/include/constants/moves.h b/include/constants/moves.h index f425bbeddc..167d4a10b8 100644 --- a/include/constants/moves.h +++ b/include/constants/moves.h @@ -697,6 +697,45 @@ #define MOVES_COUNT_GEN7 677 -#define MOVES_COUNT MOVES_COUNT_GEN7 +// Gen 8 moves. +#define MOVE_DYNAMAX_CANNON (MOVES_COUNT_GEN7 + 0) +#define MOVE_SNIPE_SHOT (MOVES_COUNT_GEN7 + 1) +#define MOVE_JAW_LOCK (MOVES_COUNT_GEN7 + 2) +#define MOVE_STUFF_CHEEKS (MOVES_COUNT_GEN7 + 3) +#define MOVE_NO_RETREAT (MOVES_COUNT_GEN7 + 4) +#define MOVE_TAR_SHOT (MOVES_COUNT_GEN7 + 5) +#define MOVE_MAGIC_POWDER (MOVES_COUNT_GEN7 + 6) +#define MOVE_DRAGON_DARTS (MOVES_COUNT_GEN7 + 7) +#define MOVE_TEA_TIME (MOVES_COUNT_GEN7 + 8) +#define MOVE_OCTOLOCK (MOVES_COUNT_GEN7 + 9) +#define MOVE_BOLT_BEAK (MOVES_COUNT_GEN7 + 10) +#define MOVE_FISHIOUS_REND (MOVES_COUNT_GEN7 + 11) +#define MOVE_COURT_CHANGE (MOVES_COUNT_GEN7 + 12) +#define MOVE_CLANGOROUS_SOUL (MOVES_COUNT_GEN7 + 13) +#define MOVE_BODY_PRESS (MOVES_COUNT_GEN7 + 14) +#define MOVE_DECORATE (MOVES_COUNT_GEN7 + 15) +#define MOVE_DRUM_BEATING (MOVES_COUNT_GEN7 + 16) +#define MOVE_SNAP_TRAP (MOVES_COUNT_GEN7 + 17) +#define MOVE_PYRO_BALL (MOVES_COUNT_GEN7 + 18) +#define MOVE_BEHEMOTH_BLADE (MOVES_COUNT_GEN7 + 19) +#define MOVE_BEHEMOTH_BASH (MOVES_COUNT_GEN7 + 20) +#define MOVE_AURA_WHEEL (MOVES_COUNT_GEN7 + 21) +#define MOVE_BREAKING_SWIPE (MOVES_COUNT_GEN7 + 22) +#define MOVE_BRANCH_POKE (MOVES_COUNT_GEN7 + 23) +#define MOVE_OVERDRIVE (MOVES_COUNT_GEN7 + 24) +#define MOVE_APPLE_ACID (MOVES_COUNT_GEN7 + 25) +#define MOVE_GRAV_APPLE (MOVES_COUNT_GEN7 + 26) +#define MOVE_SPIRIT_BREAK (MOVES_COUNT_GEN7 + 27) +#define MOVE_STRANGE_STEAM (MOVES_COUNT_GEN7 + 28) +#define MOVE_LIFE_DEW (MOVES_COUNT_GEN7 + 29) +#define MOVE_OBSTRUCT (MOVES_COUNT_GEN7 + 30) +#define MOVE_FALSE_SURRENDER (MOVES_COUNT_GEN7 + 31) +#define MOVE_METEOR_ASSAULT (MOVES_COUNT_GEN7 + 32) +#define MOVE_ETERNA_BEAM (MOVES_COUNT_GEN7 + 33) +#define MOVE_STEEL_BEAM (MOVES_COUNT_GEN7 + 34) + +#define MOVES_COUNT_GEN8 (MOVES_COUNT_GEN7 + 35) + +#define MOVES_COUNT MOVES_COUNT_GEN8 #endif // GUARD_CONSTANTS_MOVES_H diff --git a/ld_script.txt b/ld_script.txt index 2762e22540..454d9c4a07 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -197,6 +197,7 @@ SECTIONS { src/battle_anim_ground.o(.text); src/battle_anim_normal.o(.text); src/battle_anim_utility_funcs.o(.text); + src/battle_anim_new.o(.text); src/battle_intro.o(.text); src/bike.o(.text); src/easy_chat.o(.text); @@ -570,6 +571,7 @@ SECTIONS { src/battle_anim_ground.o(.rodata); src/battle_anim_normal.o(.rodata); src/battle_anim_utility_funcs.o(.rodata); + src/battle_anim_new.o(.rodata); src/battle_intro.o(.rodata); src/bike.o(.rodata); src/easy_chat.o(.rodata); diff --git a/src/battle_anim.c b/src/battle_anim.c index 6dee835bee..7ac81cac62 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -108,7 +108,7 @@ 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; // Set but unused. +EWRAM_DATA u16 gAnimMoveIndex = 0; // Set but unused. EWRAM_DATA u8 gBattleAnimAttacker = 0; EWRAM_DATA u8 gBattleAnimTarget = 0; EWRAM_DATA u16 gAnimBattlerSpecies[MAX_BATTLERS_COUNT] = {0}; @@ -2175,7 +2175,7 @@ void ClearBattleAnimationVars(void) sMonAnimTaskIdArray[1] = 0xFF; gAnimMoveTurn = 0; sAnimBackgroundFadeState = 0; - sAnimMoveIndex = 0; + gAnimMoveIndex = 0; gBattleAnimAttacker = 0; gBattleAnimTarget = 0; gAnimCustomPanning = 0; @@ -2211,9 +2211,9 @@ void LaunchBattleAnimation(const u8 *const animsTable[], u16 tableId, bool8 isMo } if (!isMoveAnim) - sAnimMoveIndex = 0; + gAnimMoveIndex = 0; else - sAnimMoveIndex = tableId; + gAnimMoveIndex = tableId; for (i = 0; i < ANIM_ARGS_COUNT; i++) gBattleAnimArgs[i] = 0; diff --git a/src/battle_anim_bug.c b/src/battle_anim_bug.c index 010ddf625d..33d6616a60 100644 --- a/src/battle_anim_bug.c +++ b/src/battle_anim_bug.c @@ -9,13 +9,9 @@ static void AnimLeechLifeNeedle(struct Sprite *); static void AnimTranslateWebThread(struct Sprite *); static void AnimTranslateWebThread_Step(struct Sprite *); static void AnimStringWrap(struct Sprite *); -static void AnimStringWrap_Step(struct Sprite *); -static void AnimSpiderWeb(struct Sprite *); static void AnimSpiderWeb_Step(struct Sprite *); static void AnimSpiderWeb_End(struct Sprite *); static void AnimTranslateStinger(struct Sprite *); -static void AnimMissileArc(struct Sprite *); -static void AnimMissileArc_Step(struct Sprite *); static void AnimTailGlowOrb(struct Sprite *); static const union AffineAnimCmd sAffineAnim_MegahornHorn_0[] = @@ -307,7 +303,7 @@ static void AnimStringWrap(struct Sprite *sprite) sprite->callback = AnimStringWrap_Step; } -static void AnimStringWrap_Step(struct Sprite *sprite) +void AnimStringWrap_Step(struct Sprite *sprite) { if (++sprite->data[0] == 3) { @@ -324,7 +320,7 @@ static void AnimStringWrap_Step(struct Sprite *sprite) // arg0: x // arg1: y // arg2: targets both -static void AnimSpiderWeb(struct Sprite *sprite) +void AnimSpiderWeb(struct Sprite *sprite) { SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND); SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 0)); @@ -432,7 +428,7 @@ static void AnimTranslateStinger(struct Sprite *sprite) // arg 3: target y pixel offset // arg 4: duration // arg 5: wave amplitude -static void AnimMissileArc(struct Sprite *sprite) +void AnimMissileArc(struct Sprite *sprite) { InitSpritePosToAnimAttacker(sprite, 1); @@ -449,7 +445,7 @@ static void AnimMissileArc(struct Sprite *sprite) sprite->invisible = TRUE; } -static void AnimMissileArc_Step(struct Sprite *sprite) +void AnimMissileArc_Step(struct Sprite *sprite) { sprite->invisible = FALSE; diff --git a/src/battle_anim_dark.c b/src/battle_anim_dark.c index cd7ac09b72..b203004e1d 100644 --- a/src/battle_anim_dark.c +++ b/src/battle_anim_dark.c @@ -10,9 +10,6 @@ #include "constants/rgb.h" static void sub_81138D4(struct Sprite *); -static void AnimBite(struct Sprite *); -static void AnimTearDrop(struct Sprite *); -static void AnimClawSlash(struct Sprite *); static void AnimTask_AttackerFadeToInvisible_Step(u8); static void AnimTask_AttackerFadeFromInvisible_Step(u8); static void sub_8113950(struct Sprite *); @@ -134,7 +131,7 @@ static const union AffineAnimCmd sAffineAnim_TearDrop_1[] = AFFINEANIMCMD_END, }; -static const union AffineAnimCmd *const sAffineAnims_TearDrop[] = +const union AffineAnimCmd *const gAffineAnims_TearDrop[] = { sAffineAnim_TearDrop_0, sAffineAnim_TearDrop_1, @@ -147,7 +144,7 @@ const struct SpriteTemplate gTearDropSpriteTemplate = .oam = &gOamData_AffineNormal_ObjNormal_16x16, .anims = gDummySpriteAnimTable, .images = NULL, - .affineAnims = sAffineAnims_TearDrop, + .affineAnims = gAffineAnims_TearDrop, .callback = AnimTearDrop, }; @@ -171,7 +168,7 @@ static const union AnimCmd sAnim_ClawSlash_1[] = ANIMCMD_END, }; -static const union AnimCmd *const sAnims_ClawSlash[] = +const union AnimCmd *const gAnims_ClawSlash[] = { sAnim_ClawSlash_0, sAnim_ClawSlash_1, @@ -182,7 +179,7 @@ const struct SpriteTemplate gClawSlashSpriteTemplate = .tileTag = ANIM_TAG_CLAW_SLASH, .paletteTag = ANIM_TAG_CLAW_SLASH, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = sAnims_ClawSlash, + .anims = gAnims_ClawSlash, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimClawSlash, @@ -397,7 +394,7 @@ static void sub_8113950(struct Sprite *sprite) } // Move sprite inward for Bite/Crunch and Clamp -static void AnimBite(struct Sprite *sprite) +void AnimBite(struct Sprite *sprite) { sprite->pos1.x += gBattleAnimArgs[0]; sprite->pos1.y += gBattleAnimArgs[1]; @@ -429,7 +426,7 @@ static void AnimBite_Step2(struct Sprite *sprite) } // Launches a tear drop away from the battler. Used by Fake Tears -static void AnimTearDrop(struct Sprite *sprite) +void AnimTearDrop(struct Sprite *sprite) { u8 battler; s8 xOffset; @@ -883,7 +880,7 @@ void sub_8114470(u8 taskId) } // Animates a deep slash from a claw. Used by Metal Claw, Dragon Claw, and Crush Claw -static void AnimClawSlash(struct Sprite *sprite) +void AnimClawSlash(struct Sprite *sprite) { sprite->pos1.x += gBattleAnimArgs[0]; sprite->pos1.y += gBattleAnimArgs[1]; diff --git a/src/battle_anim_dragon.c b/src/battle_anim_dragon.c index 172ad4b28c..406902d71d 100644 --- a/src/battle_anim_dragon.c +++ b/src/battle_anim_dragon.c @@ -6,11 +6,7 @@ #include "constants/rgb.h" static void AnimOutrageFlame(struct Sprite *); -static void AnimDragonRageFirePlume(struct Sprite *); -static void AnimDragonFireToTarget(struct Sprite *); -static void AnimDragonDanceOrb(struct Sprite *); static void AnimDragonDanceOrb_Step(struct Sprite *); -static void AnimOverheatFlame(struct Sprite *); static void AnimOverheatFlame_Step(struct Sprite *); static void AnimTask_DragonDanceWaver_Step(u8); static void sub_8113574(struct Task *); @@ -62,7 +58,7 @@ static const union AnimCmd sAnim_DragonBreathFire_1[] = ANIMCMD_JUMP(0), }; -static const union AnimCmd *const sAnims_DragonBreathFire[] = +const union AnimCmd *const gAnims_DragonBreathFire[] = { sAnim_DragonBreathFire_0, sAnim_DragonBreathFire_1, @@ -82,7 +78,7 @@ static const union AffineAnimCmd sAffineAnim_DragonBreathFire_1[] = AFFINEANIMCMD_END, }; -static const union AffineAnimCmd *const sAffineAnims_DragonBreathFire[] = +const union AffineAnimCmd *const gAffineAnims_DragonBreathFire[] = { sAffineAnim_DragonBreathFire_0, sAffineAnim_DragonBreathFire_1, @@ -93,9 +89,9 @@ const struct SpriteTemplate gDragonBreathFireSpriteTemplate = .tileTag = ANIM_TAG_SMALL_EMBER, .paletteTag = ANIM_TAG_SMALL_EMBER, .oam = &gOamData_AffineDouble_ObjNormal_32x32, - .anims = sAnims_DragonBreathFire, + .anims = gAnims_DragonBreathFire, .images = NULL, - .affineAnims = sAffineAnims_DragonBreathFire, + .affineAnims = gAffineAnims_DragonBreathFire, .callback = AnimDragonFireToTarget, }; @@ -109,7 +105,7 @@ static const union AnimCmd sAnim_DragonRageFirePlume[] = ANIMCMD_END, }; -static const union AnimCmd *const sAnims_DragonRageFirePlume[] = +const union AnimCmd *const gAnims_DragonRageFirePlume[] = { sAnim_DragonRageFirePlume, }; @@ -119,7 +115,7 @@ const struct SpriteTemplate gDragonRageFirePlumeSpriteTemplate = .tileTag = ANIM_TAG_FIRE_PLUME, .paletteTag = ANIM_TAG_FIRE_PLUME, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = sAnims_DragonRageFirePlume, + .anims = gAnims_DragonRageFirePlume, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimDragonRageFirePlume, @@ -133,7 +129,7 @@ static const union AnimCmd sAnim_DragonRageFire[] = ANIMCMD_JUMP(0), }; -static const union AnimCmd *const sAnims_DragonRageFire[] = +const union AnimCmd *const gAnims_DragonRageFire[] = { sAnim_DragonRageFire, sAnim_DragonRageFire, @@ -151,7 +147,7 @@ static const union AffineAnimCmd sAffineAnim_DragonRageFire_1[] = AFFINEANIMCMD_END, }; -static const union AffineAnimCmd *const sAffineAnims_DragonRageFire[] = +const union AffineAnimCmd *const gAffineAnims_DragonRageFire[] = { sAffineAnim_DragonRageFire_0, sAffineAnim_DragonRageFire_1, @@ -162,9 +158,9 @@ const struct SpriteTemplate gDragonRageFireSpitSpriteTemplate = .tileTag = ANIM_TAG_SMALL_EMBER, .paletteTag = ANIM_TAG_SMALL_EMBER, .oam = &gOamData_AffineDouble_ObjNormal_32x32, - .anims = sAnims_DragonRageFire, + .anims = gAnims_DragonRageFire, .images = NULL, - .affineAnims = sAffineAnims_DragonRageFire, + .affineAnims = gAffineAnims_DragonRageFire, .callback = AnimDragonFireToTarget, }; @@ -371,7 +367,7 @@ static void sub_8113100(struct Sprite *sprite) StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); } -static void AnimDragonRageFirePlume(struct Sprite *sprite) +void AnimDragonRageFirePlume(struct Sprite *sprite) { if (gBattleAnimArgs[0] == 0) { @@ -391,7 +387,7 @@ static void AnimDragonRageFirePlume(struct Sprite *sprite) } // For Dragon Breath and Dragon Rage -static void AnimDragonFireToTarget(struct Sprite *sprite) +void AnimDragonFireToTarget(struct Sprite *sprite) { if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) StartSpriteAffineAnim(sprite, 1); @@ -399,7 +395,7 @@ static void AnimDragonFireToTarget(struct Sprite *sprite) sub_8113100(sprite); } -static void AnimDragonDanceOrb(struct Sprite *sprite) +void AnimDragonDanceOrb(struct Sprite *sprite) { u16 r5; u16 r0; @@ -546,7 +542,7 @@ static void sub_8113574(struct Task *task) task->data[5] = (task->data[5] + 9) & 0xFF; } -static void AnimOverheatFlame(struct Sprite *sprite) +void AnimOverheatFlame(struct Sprite *sprite) { int r6 = (gBattleAnimArgs[2] * 3) / 5; int i; diff --git a/src/battle_anim_effects_1.c b/src/battle_anim_effects_1.c index df9be5738a..d3b2642314 100644 --- a/src/battle_anim_effects_1.c +++ b/src/battle_anim_effects_1.c @@ -18,20 +18,13 @@ EWRAM_DATA s16 gUnknown_0203A0F8[4] = {0}; -static void AnimMovePowderParticle(struct Sprite *); static void AnimMovePowderParticle_Step(struct Sprite *); -static void AnimSolarbeamBigOrb(struct Sprite *); static void AnimSolarbeamSmallOrb(struct Sprite *); static void AnimSolarbeamSmallOrb_Step(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 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 *); @@ -39,12 +32,10 @@ static void AnimRazorLeafParticle_Step2(struct Sprite *); static void AnimLeechSeed(struct Sprite *); static void AnimLeechSeed_Step(struct Sprite *); static void AnimLeechSeedSprouts(struct Sprite *); -static void AnimTranslateLinearSingleSineWave(struct Sprite *); static void AnimTranslateLinearSingleSineWave_Step(struct Sprite *); static void AnimConstrictBinding(struct Sprite *); static void AnimConstrictBinding_Step1(struct Sprite *); static void AnimConstrictBinding_Step2(struct Sprite *); -static void AnimMimicOrb(struct Sprite *); static void AnimIngrainRoot(struct Sprite *); static void AnimFrenzyPlantRoot(struct Sprite *); static void AnimRootFlickerOut(struct Sprite *); @@ -62,11 +53,9 @@ static void AnimTrickBag_Step2(struct Sprite *); static void AnimTrickBag_Step3(struct Sprite *); static void AnimFlyingParticle(struct Sprite *); static void AnimFlyingParticle_Step(struct Sprite *); -static void AnimNeedleArmSpike_Step(struct Sprite *); static void sub_81009F8(struct Sprite *); static void AnimWhipHit(struct Sprite *); static void sub_8100A94(struct Sprite *); -static void AnimCuttingSlice(struct Sprite *); static void AnimAirCutterSlice(struct Sprite *); static void AnimSlice_Step(struct Sprite *); static void sub_8100E1C(struct Sprite *); @@ -76,7 +65,6 @@ 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 AnimGrantingStars(struct Sprite *); static void AnimSparkingStars(struct Sprite *); static void sub_8101440(struct Sprite *); static void sub_81014A0(struct Sprite *); @@ -105,11 +93,9 @@ 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 *); @@ -127,11 +113,8 @@ static void AnimFlyingMusicNotes_Step(struct Sprite *); static void AnimBellyDrumHand(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 *); @@ -2975,7 +2958,7 @@ static void AnimWoodHammerSmall(struct Sprite *sprite) // arg 3: vertical movement speed (sub-pixel value) // arg 4: wave amplitude // arg 5: wave speed -static void AnimMovePowderParticle(struct Sprite* sprite) +void AnimMovePowderParticle(struct Sprite* sprite) { sprite->pos1.x += gBattleAnimArgs[0]; sprite->pos1.y += gBattleAnimArgs[1]; @@ -3030,7 +3013,7 @@ void AnimPowerAbsorptionOrb(struct Sprite* sprite) // arg 1: initial y pixel offset // arg 2: duration // arg 3: sprite anim number -static void AnimSolarbeamBigOrb(struct Sprite* sprite) +void AnimSolarbeamBigOrb(struct Sprite* sprite) { InitSpritePosToAnimAttacker(sprite, TRUE); StartSpriteAnim(sprite, gBattleAnimArgs[3]); @@ -3050,11 +3033,20 @@ static void AnimSolarbeamBigOrb(struct Sprite* sprite) static void AnimSolarbeamSmallOrb(struct Sprite* sprite) { InitSpritePosToAnimAttacker(sprite, TRUE); - sprite->data[0] = gBattleAnimArgs[2]; - sprite->data[1] = sprite->pos1.x; - sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); - sprite->data[3] = sprite->pos1.y; - sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); + + if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && IsMoveAnimCoreEnforcer()) + { + CoreEnforcerLoadBeamTarget(sprite); + } + else + { + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); + } + InitAnimLinearTranslation(sprite); sprite->data[5] = gBattleAnimArgs[3]; sprite->callback = AnimSolarbeamSmallOrb_Step; @@ -3105,7 +3097,7 @@ void AnimTask_CreateSmallSolarbeamOrbs(u8 taskId) // arg 1: initial y pixel offset // arg 2: wave amplitude // arg 3: wave period (lower means faster wave) -static void AnimAbsorptionOrb(struct Sprite* sprite) +void AnimAbsorptionOrb(struct Sprite* sprite) { InitSpritePosToAnimTarget(sprite, TRUE); sprite->data[0] = gBattleAnimArgs[3]; @@ -3124,7 +3116,7 @@ static void AnimAbsorptionOrb_Step(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. -static void AnimHyperBeamOrb(struct Sprite* sprite) +void AnimHyperBeamOrb(struct Sprite* sprite) { u16 speed; u16 animNum = Random2(); @@ -3515,7 +3507,7 @@ static void AnimLeechSeedSprouts(struct Sprite* sprite) // arg 2: initial wave offset // arg 3: duration // arg 4: blend (0 = off, 1 = on) -static void AnimSporeParticle(struct Sprite* sprite) +void AnimSporeParticle(struct Sprite* sprite) { InitSpritePosToAnimTarget(sprite, TRUE); StartSpriteAnim(sprite, gBattleAnimArgs[4]); @@ -3577,7 +3569,7 @@ void AnimTask_SporeDoubleBattle(u8 taskId) // arg 1: initial y pixel offset // arg 2: target y pixel offset // arg 3: duration -static void AnimPetalDanceBigFlower(struct Sprite* sprite) +void AnimPetalDanceBigFlower(struct Sprite* sprite) { InitSpritePosToAnimAttacker(sprite, FALSE); sprite->data[0] = gBattleAnimArgs[3]; @@ -3615,7 +3607,7 @@ static void AnimPetalDanceBigFlower_Step(struct Sprite* sprite) // arg 1: initial y pixel offset // arg 2: target y pixel offset // arg 3: duration -static void AnimPetalDanceSmallFlower(struct Sprite* sprite) +void AnimPetalDanceSmallFlower(struct Sprite* sprite) { InitSpritePosToAnimAttacker(sprite, TRUE); sprite->data[0] = gBattleAnimArgs[3]; @@ -3713,7 +3705,7 @@ static void AnimRazorLeafParticle_Step2(struct Sprite* sprite) // arg 4: translation duration // arg 5: wave amplitude // arg 6: target between double battle opponents (boolean) -static void AnimTranslateLinearSingleSineWave(struct Sprite* sprite) +void AnimTranslateLinearSingleSineWave(struct Sprite* sprite) { InitSpritePosToAnimAttacker(sprite, TRUE); if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) @@ -3944,7 +3936,7 @@ static void AnimTask_DuplicateAndShrinkToPos_Step2(u8 taskId) // Moves an orb from the target mon to the attacking mon. // arg 0: initial x pixel offset // arg 1: initial y pixel offset -static void AnimMimicOrb(struct Sprite* sprite) +void AnimMimicOrb(struct Sprite* sprite) { switch (sprite->data[0]) { @@ -4795,7 +4787,7 @@ void AnimNeedleArmSpike(struct Sprite* sprite) } } -static void AnimNeedleArmSpike_Step(struct Sprite* sprite) +void AnimNeedleArmSpike_Step(struct Sprite* sprite) { if (sprite->data[0]) { @@ -4862,7 +4854,7 @@ static void sub_8100A94(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 -static void AnimCuttingSlice(struct Sprite* sprite) +void AnimCuttingSlice(struct Sprite* sprite) { sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0); sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1); @@ -5198,7 +5190,7 @@ static void AnimMilkBottle_Step2(struct Sprite* sprite, int unk1, int unk2) sprite->data[3] = 0; } -static void AnimGrantingStars(struct Sprite* sprite) +void AnimGrantingStars(struct Sprite* sprite) { if (!gBattleAnimArgs[2]) SetSpriteCoordsToAnimAttackerCoords(sprite); @@ -5847,7 +5839,7 @@ static void AnimFalseSwipeSlice_Step3(struct Sprite* sprite) } } -static void AnimEndureEnergy(struct Sprite* sprite) +void AnimEndureEnergy(struct Sprite* sprite) { if (gBattleAnimArgs[0] == 0) { @@ -5915,7 +5907,7 @@ static void AnimSharpenSphere_Step(struct Sprite* sprite) DestroyAnimSprite(sprite); } -static void AnimConversion(struct Sprite* sprite) +void AnimConversion(struct Sprite* sprite) { if (sprite->data[0] == 0) { @@ -6538,7 +6530,7 @@ void SetSpriteNextToMonHead(u8 battler, struct Sprite* sprite) sprite->pos1.y = GetBattlerSpriteCoord(battler, 3) - (s16)GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_HEIGHT) / 4; } -static void AnimThoughtBubble(struct Sprite* sprite) +void AnimThoughtBubble(struct Sprite* sprite) { u8 a; u8 battler; @@ -6566,7 +6558,7 @@ static void AnimThoughtBubble_Step(struct Sprite* sprite) } } -static void AnimMetronomeFinger(struct Sprite* sprite) +void AnimMetronomeFinger(struct Sprite* sprite) { u8 battler; if (gBattleAnimArgs[0] == 0) @@ -6590,7 +6582,7 @@ static void AnimMetronomeFinger_Step(struct Sprite* sprite) } } -static void AnimFollowMeFinger(struct Sprite* sprite) +void AnimFollowMeFinger(struct Sprite* sprite) { u8 battler; if (gBattleAnimArgs[0] == 0) diff --git a/src/battle_anim_effects_2.c b/src/battle_anim_effects_2.c index a8b54d41df..6fd10da8cd 100755 --- a/src/battle_anim_effects_2.c +++ b/src/battle_anim_effects_2.c @@ -26,7 +26,6 @@ static void sub_8103680(struct Sprite *); static void AnimKinesisZapEnergy(struct Sprite *); static void AnimSwordsDanceBlade(struct Sprite *); static void AnimSwordsDanceBlade_Step(struct Sprite *); -static void AnimSonicBoomProjectile(struct Sprite *); static void AnimAirWaveProjectile(struct Sprite *); static void AnimAirWaveProjectile_Step1(struct Sprite *sprite); static void AnimAirWaveProjectile_Step2(struct Sprite *sprite); @@ -46,12 +45,9 @@ static void AnimGuillotinePincer_Step1(struct Sprite *); static void AnimGuillotinePincer_Step2(struct Sprite *); static void AnimGuillotinePincer_Step3(struct Sprite *); static void AnimBreathPuff(struct Sprite *); -static void AnimAngerMark(struct Sprite *); static void AnimPencil(struct Sprite *); static void AnimPencil_Step(struct Sprite *); static void AnimBlendThinRing(struct Sprite *); -static void AnimHyperVoiceRing(struct Sprite *); -static void AnimUproarRing(struct Sprite *); static void AnimSoftBoiledEgg(struct Sprite *); static void AnimSoftBoiledEgg_Step1(struct Sprite *); static void AnimSoftBoiledEgg_Step2(struct Sprite *); @@ -67,9 +63,7 @@ static void AnimRedHeartProjectile(struct Sprite *); static void AnimRedHeartProjectile_Step(struct Sprite *); static void AnimRedHeartRising(struct Sprite *); static void AnimRedHeartRising_Step(struct Sprite *); -static void AnimOrbitFast(struct Sprite *); static void AnimOrbitFast_Step(struct Sprite *); -static void AnimOrbitScatter(struct Sprite *); static void AnimOrbitScatter_Step(struct Sprite *); static void AnimSpitUpOrb(struct Sprite *); static void AnimSpitUpOrb_Step(struct Sprite *sprite); @@ -1523,7 +1517,7 @@ static void AnimSwordsDanceBlade_Step(struct Sprite *sprite) // arg 2: target x pixel offset // arg 3: target y pixel offset // arg 4: duration -static void AnimSonicBoomProjectile(struct Sprite *sprite) +void AnimSonicBoomProjectile(struct Sprite *sprite) { s16 targetXPos; s16 targetYPos; @@ -2311,7 +2305,7 @@ static void AnimBreathPuff(struct Sprite *sprite) // arg 0: target mon (0 = attacker, 1 = target) // arg 1: x pixel offset // arg 2: y pixel offset -static void AnimAngerMark(struct Sprite *sprite) +void AnimAngerMark(struct Sprite *sprite) { u8 battler; if (!gBattleAnimArgs[0]) @@ -2621,7 +2615,7 @@ void sub_8105284(struct Sprite *sprite) } } -static void AnimHyperVoiceRing(struct Sprite *sprite) +void AnimHyperVoiceRing(struct Sprite *sprite) { u16 r9 = 0; u16 r6 = 0; @@ -2706,7 +2700,7 @@ static void AnimHyperVoiceRing(struct Sprite *sprite) sprite->callback(sprite); } -static void AnimUproarRing(struct Sprite *sprite) +void AnimUproarRing(struct Sprite *sprite) { u8 index = IndexOfSpritePaletteTag(ANIM_TAG_THIN_RING); if (index != 0xFF) @@ -3443,7 +3437,7 @@ static void AnimTask_ScaryFace_Step(u8 taskId) // Used by MOVE_HIDDEN_POWER // arg 0: duration // arg 1: initial wave offset -static void AnimOrbitFast(struct Sprite *sprite) +void AnimOrbitFast(struct Sprite *sprite) { sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); @@ -3494,7 +3488,7 @@ static void AnimOrbitFast_Step(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 -static void AnimOrbitScatter(struct Sprite *sprite) +void AnimOrbitScatter(struct Sprite *sprite) { sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); diff --git a/src/battle_anim_effects_3.c b/src/battle_anim_effects_3.c index 7791aac101..731432d96f 100755 --- a/src/battle_anim_effects_3.c +++ b/src/battle_anim_effects_3.c @@ -26,12 +26,10 @@ extern const struct SpriteTemplate gThoughtBubbleSpriteTemplate; -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 AnimTealAlert(struct Sprite *); static void AnimMeanLookEye(struct Sprite *); static void AnimMeanLookEye_Step1(struct Sprite *); static void AnimMeanLookEye_Step2(struct Sprite *); @@ -63,7 +61,6 @@ static void AnimGreenStar_Step1(struct Sprite *); static void AnimGreenStar_Step2(struct Sprite *); static void AnimGreenStar_Callback(struct Sprite *); static void AnimWeakFrustrationAngerMark(struct Sprite *); -static void AnimSweetScentPetal(struct Sprite *); static void AnimSweetScentPetal_Step(struct Sprite *); static void AnimPainSplitProjectile(struct Sprite *); static void AnimFlatterConfetti(struct Sprite *); @@ -90,7 +87,6 @@ static void AnimForesightMagnifyingGlass(struct Sprite *); static void AnimForesightMagnifyingGlass_Step(struct Sprite *); static void AnimMeteorMashStar(struct Sprite *); static void AnimMeteorMashStar_Step(struct Sprite *sprite); -static void AnimBlockX(struct Sprite *); static void AnimBlockX_Step(struct Sprite *); static void sub_815FE80(struct Sprite *); static void AnimKnockOffStrike(struct Sprite *); @@ -1224,7 +1220,7 @@ const struct SpriteTemplate gMegaSymbolSpriteTemplate = .callback = AnimGhostStatusSprite, }; -static void AnimBlackSmoke(struct Sprite *sprite) +void AnimBlackSmoke(struct Sprite *sprite) { sprite->pos1.x += gBattleAnimArgs[0]; sprite->pos1.y += gBattleAnimArgs[1]; @@ -1289,7 +1285,7 @@ static void AnimWhiteHalo_Step2(struct Sprite *sprite) DestroyAnimSprite(sprite); } -static void AnimTealAlert(struct Sprite *sprite) +void AnimTealAlert(struct Sprite *sprite) { u16 rotation; u8 x = GetBattlerSpriteCoord(gBattleAnimTarget, 2); @@ -2843,7 +2839,7 @@ static void AnimTask_RockMonBackAndForth_Step(u8 taskId) // arg 0: initial y pixel offset // arg 1: sprite anim num // arg 2: unused -static void AnimSweetScentPetal(struct Sprite *sprite) +void AnimSweetScentPetal(struct Sprite *sprite) { if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) { @@ -4855,7 +4851,7 @@ static void AnimTask_MonToSubstituteDoll(u8 taskId) // Moves down an X that flickers and disappears. // No args. -static void AnimBlockX(struct Sprite *sprite) +void AnimBlockX(struct Sprite *sprite) { s16 y; diff --git a/src/battle_anim_electric.c b/src/battle_anim_electric.c index b49427bc79..c0f489fd8f 100644 --- a/src/battle_anim_electric.c +++ b/src/battle_anim_electric.c @@ -10,28 +10,21 @@ static void AnimLightning_Step(struct Sprite *); static void sub_810A214(struct Sprite *); static void sub_810A258(struct Sprite *); static void sub_810A274(struct Sprite *); -static void AnimSparkElectricity(struct Sprite *); -static void AnimZapCannonSpark(struct Sprite *); static void AnimZapCannonSpark_Step(struct Sprite *); static void AnimThunderboltOrb(struct Sprite *); static void AnimThunderboltOrb_Step(struct Sprite *); -static void AnimSparkElectricityFlashing(struct Sprite *); static void AnimSparkElectricityFlashing_Step(struct Sprite *); static void AnimElectricity(struct Sprite *); static void AnimTask_ElectricBolt_Step(u8 taskId); static void AnimElectricBoltSegment(struct Sprite *); -static void AnimThunderWave(struct Sprite *); static void AnimThunderWave_Step(struct Sprite *); static void AnimTask_ElectricChargingParticles_Step(u8 taskId); static void AnimElectricChargingParticles(struct Sprite *); static void AnimElectricChargingParticles_Step(struct Sprite *); -static void AnimGrowingChargeOrb(struct Sprite *); -static void AnimElectricPuff(struct Sprite *); static void AnimVoltTackleOrbSlide(struct Sprite *); static void AnimVoltTackleOrbSlide_Step(struct Sprite *); static bool8 sub_810B154(struct Task *task, u8 taskId); static void AnimVoltTackleBolt(struct Sprite *); -static void AnimGrowingShockWaveOrb(struct Sprite *); static bool8 sub_810B430(struct Task *task, u8 taskId); static void AnimShockWaveProgressingBolt(struct Sprite *); static bool8 sub_810B614(struct Task *task, u8 taskId); @@ -144,7 +137,7 @@ static const union AffineAnimCmd sAffineAnim_FlashingSpark[] = AFFINEANIMCMD_JUMP(0), }; -static const union AffineAnimCmd *const sAffineAnims_FlashingSpark[] = +const union AffineAnimCmd *const gAffineAnims_FlashingSpark[] = { sAffineAnim_FlashingSpark, }; @@ -156,7 +149,7 @@ const struct SpriteTemplate gZapCannonSparkSpriteTemplate = .oam = &gOamData_AffineNormal_ObjNormal_16x16, .anims = gDummySpriteAnimTable, .images = NULL, - .affineAnims = sAffineAnims_FlashingSpark, + .affineAnims = gAffineAnims_FlashingSpark, .callback = AnimZapCannonSpark, }; @@ -168,7 +161,7 @@ static const union AnimCmd sAnim_ThunderboltOrb[] = ANIMCMD_JUMP(0), }; -static const union AnimCmd *const sAnims_ThunderboltOrb[] = +const union AnimCmd *const gAnims_ThunderboltOrb[] = { sAnim_ThunderboltOrb, }; @@ -191,7 +184,7 @@ const struct SpriteTemplate gThunderboltOrbSpriteTemplate = .tileTag = ANIM_TAG_SHOCK_3, .paletteTag = ANIM_TAG_SHOCK_3, .oam = &gOamData_AffineNormal_ObjNormal_32x32, - .anims = sAnims_ThunderboltOrb, + .anims = gAnims_ThunderboltOrb, .images = NULL, .affineAnims = sAffineAnims_ThunderboltOrb, .callback = AnimThunderboltOrb, @@ -204,7 +197,7 @@ const struct SpriteTemplate gSparkElectricityFlashingSpriteTemplate = .oam = &gOamData_AffineNormal_ObjNormal_16x16, .anims = gDummySpriteAnimTable, .images = NULL, - .affineAnims = sAffineAnims_FlashingSpark, + .affineAnims = gAffineAnims_FlashingSpark, .callback = AnimSparkElectricityFlashing, }; @@ -241,6 +234,17 @@ const struct SpriteTemplate gThunderWaveSpriteTemplate = .callback = AnimThunderWave, }; +const struct SpriteTemplate gAnchorShotChainTemplate = +{ + .tileTag = ANIM_TAG_CHAIN_LINK, + .paletteTag = ANIM_TAG_CHAIN_LINK, + .oam = &gOamData_AffineOff_ObjNormal_32x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimThunderWave +}; + static const s8 sElectricChargingParticleCoordOffsets[][2] = { { 58, -60}, @@ -279,7 +283,7 @@ static const union AnimCmd sAnim_ElectricChargingParticles_1[] = ANIMCMD_END, }; -static const union AnimCmd *const sAnims_ElectricChargingParticles[] = +const union AnimCmd *const gAnims_ElectricChargingParticles[] = { sAnim_ElectricChargingParticles_0, sAnim_ElectricChargingParticles_1, @@ -290,12 +294,23 @@ const struct SpriteTemplate gElectricChargingParticlesSpriteTemplate = .tileTag = ANIM_TAG_ELECTRIC_ORBS, .paletteTag = ANIM_TAG_ELECTRIC_ORBS, .oam = &gOamData_AffineOff_ObjNormal_8x8, - .anims = sAnims_ElectricChargingParticles, + .anims = gAnims_ElectricChargingParticles, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCallbackDummy, }; +const struct SpriteTemplate gLightOfRuinGrayChargeTemplate = +{ + .tileTag = ANIM_TAG_ELECTRIC_ORBS, + .paletteTag = ANIM_TAG_GUST, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = gAnims_ElectricChargingParticles, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy +}; + static const union AffineAnimCmd sAffineAnim_GrowingElectricOrb_0[] = { AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0), @@ -326,7 +341,7 @@ static const union AffineAnimCmd sAffineAnim_GrowingElectricOrb_2[] = AFFINEANIMCMD_END, }; -static const union AffineAnimCmd *const sAffineAnims_GrowingElectricOrb[] = +const union AffineAnimCmd *const gAffineAnims_GrowingElectricOrb[] = { sAffineAnim_GrowingElectricOrb_0, sAffineAnim_GrowingElectricOrb_1, @@ -340,7 +355,7 @@ const struct SpriteTemplate gGrowingChargeOrbSpriteTemplate = .oam = &gOamData_AffineNormal_ObjBlend_64x64, .anims = gDummySpriteAnimTable, .images = NULL, - .affineAnims = sAffineAnims_GrowingElectricOrb, + .affineAnims = gAffineAnims_GrowingElectricOrb, .callback = AnimGrowingChargeOrb, }; @@ -353,7 +368,7 @@ static const union AnimCmd sAnim_ElectricPuff[] = ANIMCMD_END, }; -static const union AnimCmd *const sAnims_ElectricPuff[] = +const union AnimCmd *const gAnims_ElectricPuff[] = { sAnim_ElectricPuff, }; @@ -363,7 +378,7 @@ const struct SpriteTemplate gElectricPuffSpriteTemplate = .tileTag = ANIM_TAG_ELECTRICITY, .paletteTag = ANIM_TAG_ELECTRICITY, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = sAnims_ElectricPuff, + .anims = gAnims_ElectricPuff, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimElectricPuff, @@ -376,7 +391,7 @@ const struct SpriteTemplate gVoltTackleOrbSlideSpriteTemplate = .oam = &gOamData_AffineNormal_ObjBlend_64x64, .anims = gDummySpriteAnimTable, .images = NULL, - .affineAnims = sAffineAnims_GrowingElectricOrb, + .affineAnims = gAffineAnims_GrowingElectricOrb, .callback = AnimVoltTackleOrbSlide, }; @@ -441,7 +456,7 @@ const struct SpriteTemplate gGrowingShockWaveOrbSpriteTemplate = .oam = &gOamData_AffineNormal_ObjBlend_64x64, .anims = gDummySpriteAnimTable, .images = NULL, - .affineAnims = sAffineAnims_GrowingElectricOrb, + .affineAnims = gAffineAnims_GrowingElectricOrb, .callback = AnimGrowingShockWaveOrb, }; @@ -463,7 +478,7 @@ const struct SpriteTemplate gFlashCannonGrayChargeTemplate = .oam = &gOamData_AffineNormal_ObjBlend_64x64, .anims = gDummySpriteAnimTable, .images = NULL, - .affineAnims = sAffineAnims_GrowingElectricOrb, + .affineAnims = gAffineAnims_GrowingElectricOrb, .callback = AnimGrowingChargeOrb }; @@ -499,7 +514,7 @@ const struct SpriteTemplate gSeedFlareGreenChargeTemplate = .oam = &gOamData_AffineNormal_ObjBlend_64x64, .anims = gDummySpriteAnimTable, .images = NULL, - .affineAnims = sAffineAnims_GrowingElectricOrb, + .affineAnims = gAffineAnims_GrowingElectricOrb, .callback = AnimGrowingChargeOrb }; @@ -560,7 +575,7 @@ static void sub_810A274(struct Sprite *sprite) sprite->callback = TranslateSpriteInCircleOverDuration; } -static void AnimSparkElectricity(struct Sprite *sprite) +void AnimSparkElectricity(struct Sprite *sprite) { u8 battler; u32 matrixNum; @@ -617,7 +632,7 @@ static void AnimSparkElectricity(struct Sprite *sprite) sprite->callback = DestroyAnimSpriteAfterTimer; } -static void AnimZapCannonSpark(struct Sprite *sprite) +void AnimZapCannonSpark(struct Sprite *sprite) { InitSpritePosToAnimAttacker(sprite, 1); sprite->data[0] = gBattleAnimArgs[3]; @@ -672,7 +687,7 @@ static void AnimThunderboltOrb(struct Sprite *sprite) sprite->callback = AnimThunderboltOrb_Step; } -static void AnimSparkElectricityFlashing(struct Sprite *sprite) +void AnimSparkElectricityFlashing(struct Sprite *sprite) { u8 battler; @@ -822,13 +837,17 @@ static void AnimElectricBoltSegment(struct Sprite *sprite) } // The horizontal bands of electricity used in Thunder Wave -static void AnimThunderWave(struct Sprite *sprite) +void AnimThunderWave(struct Sprite *sprite) { u8 spriteId; sprite->pos1.x += gBattleAnimArgs[0]; sprite->pos1.y += gBattleAnimArgs[1]; - spriteId = CreateSprite(&gThunderWaveSpriteTemplate, sprite->pos1.x + 32, sprite->pos1.y, sprite->subpriority); + if (IsMoveAnimAnchorShot()) + spriteId = CreateSprite(&gAnchorShotChainTemplate, sprite->pos1.x + 32, sprite->pos1.y, sprite->subpriority); + else + spriteId = CreateSprite(&gThunderWaveSpriteTemplate, sprite->pos1.x + 32, sprite->pos1.y, sprite->subpriority); + gSprites[spriteId].oam.tileNum += 8; gAnimVisualTaskCount++; gSprites[spriteId].callback = AnimThunderWave_Step; @@ -884,7 +903,11 @@ static void AnimTask_ElectricChargingParticles_Step(u8 taskId) { u8 spriteId; task->data[12] = 0; - spriteId = CreateSprite(&gElectricChargingParticlesSpriteTemplate, task->data[14], task->data[15], 2); + if (IsMoveAnimFlashCannonOrSteelBeam()) + spriteId = CreateSprite(&gLightOfRuinGrayChargeTemplate, task->data[14], task->data[15], 2); + else + spriteId = CreateSprite(&gElectricChargingParticlesSpriteTemplate, task->data[14], task->data[15], 2); + if (spriteId != MAX_SPRITES) { struct Sprite *sprite = &gSprites[spriteId]; @@ -936,7 +959,7 @@ static void AnimElectricChargingParticles(struct Sprite *sprite) sprite->callback = AnimElectricChargingParticles_Step; } -static void AnimGrowingChargeOrb(struct Sprite *sprite) +void AnimGrowingChargeOrb(struct Sprite *sprite) { if (gBattleAnimArgs[0] == ANIM_ATTACKER) { @@ -954,7 +977,7 @@ static void AnimGrowingChargeOrb(struct Sprite *sprite) } // The quick electric burst at the end of Charge / during the Volt Tackle hit -static void AnimElectricPuff(struct Sprite *sprite) +void AnimElectricPuff(struct Sprite *sprite) { if (gBattleAnimArgs[0] == ANIM_ATTACKER) { @@ -1174,7 +1197,7 @@ static void AnimVoltTackleBolt(struct Sprite *sprite) } } -static void AnimGrowingShockWaveOrb(struct Sprite *sprite) +void AnimGrowingShockWaveOrb(struct Sprite *sprite) { switch (sprite->data[0]) { diff --git a/src/battle_anim_fight.c b/src/battle_anim_fight.c index fc692f164a..477a15b6d9 100644 --- a/src/battle_anim_fight.c +++ b/src/battle_anim_fight.c @@ -8,21 +8,15 @@ static void unc_080B08A0(struct Sprite *); static void AnimSlideHandOrFootToTarget(struct Sprite *); -static void AnimJumpKick(struct Sprite *); -static void AnimBasicFistOrFoot(struct Sprite *); static void AnimFistOrFootRandomPos(struct Sprite *); static void AnimFistOrFootRandomPos_Step(struct Sprite *); static void AnimCrossChopHand(struct Sprite *); static void AnimCrossChopHand_Step(struct Sprite *); static void AnimSlidingKick(struct Sprite *); static void AnimSlidingKick_Step(struct Sprite *); -static void AnimSpinningKickOrPunch(struct Sprite *); -static void AnimStompFoot(struct Sprite *); static void AnimStompFoot_Step(struct Sprite *); static void AnimStompFoot_End(struct Sprite *); -static void AnimDizzyPunchDuck(struct Sprite *); static void AnimBrickBreakWall(struct Sprite *); -static void AnimBrickBreakWall_Step(struct Sprite *); static void AnimBrickBreakWallShard(struct Sprite *); static void AnimBrickBreakWallShard_Step(struct Sprite *); static void AnimSuperpowerOrb(struct Sprite *); @@ -33,9 +27,7 @@ static void AnimSuperpowerRock_Step2(struct Sprite *); static void AnimSuperpowerFireball(struct Sprite *); static void AnimArmThrustHit(struct Sprite *); static void AnimArmThrustHit_Step(struct Sprite *sprite); -static void AnimRevengeScratch(struct Sprite *); static void AnimFocusPunchFist(struct Sprite *); -static void AnimSpinningKickOrPunchFinish(struct Sprite *); static void AnimForcePalm(struct Sprite *sprite); extern struct SpriteTemplate gBasicHitSplatSpriteTemplate; @@ -82,7 +74,7 @@ static const union AnimCmd sAnim_CrossChopHand_1[] = ANIMCMD_END, }; -static const union AnimCmd *const sAnims_HandOrFoot[] = +const union AnimCmd *const gAnims_HandOrFoot[] = { sAnim_HandOrFoot, }; @@ -104,7 +96,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 = gAnims_HandOrFoot, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimSlideHandOrFootToTarget, @@ -115,7 +107,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 = gAnims_HandOrFoot, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimJumpKick, @@ -126,7 +118,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 = gAnims_HandOrFoot, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimBasicFistOrFoot, @@ -137,7 +129,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 = gAnims_HandOrFoot, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimFistOrFootRandomPos, @@ -172,7 +164,7 @@ static const union AffineAnimCmd sAffineAnim_SpinningHandOrFoot[] = AFFINEANIMCMD_JUMP(1), }; -static const union AffineAnimCmd *const sAffineAnims_SpinningHandOrFoot[] = +const union AffineAnimCmd *const gAffineAnims_SpinningHandOrFoot[] = { sAffineAnim_SpinningHandOrFoot, }; @@ -183,9 +175,9 @@ 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 = gAnims_HandOrFoot, .images = NULL, - .affineAnims = sAffineAnims_SpinningHandOrFoot, + .affineAnims = gAffineAnims_SpinningHandOrFoot, .callback = AnimSpinningKickOrPunch, }; @@ -196,7 +188,7 @@ static const union AffineAnimCmd sAffineAnim_MegaPunchKick[] = AFFINEANIMCMD_JUMP(1), }; -static const union AffineAnimCmd *const sAffineAnims_MegaPunchKick[] = +const union AffineAnimCmd *const gAffineAnims_MegaPunchKick[] = { sAffineAnim_MegaPunchKick, }; @@ -206,9 +198,9 @@ 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 = gAnims_HandOrFoot, .images = NULL, - .affineAnims = sAffineAnims_MegaPunchKick, + .affineAnims = gAffineAnims_MegaPunchKick, .callback = AnimSpinningKickOrPunch, }; @@ -308,7 +300,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 = gAnims_HandOrFoot, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimArmThrustHit, @@ -377,7 +369,7 @@ static const union AnimCmd sAnim_RevengeBigScratch_2[] = ANIMCMD_END, }; -static const union AnimCmd *const sAnims_RevengeBigScratch[] = +const union AnimCmd *const gAnims_RevengeBigScratch[] = { sAnim_RevengeBigScratch_0, sAnim_RevengeBigScratch_1, @@ -389,7 +381,7 @@ const struct SpriteTemplate gRevengeBigScratchSpriteTemplate = .tileTag = ANIM_TAG_PURPLE_SWIPE, .paletteTag = ANIM_TAG_PURPLE_SWIPE, .oam = &gOamData_AffineOff_ObjNormal_64x64, - .anims = sAnims_RevengeBigScratch, + .anims = gAnims_RevengeBigScratch, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimRevengeScratch, @@ -412,7 +404,7 @@ 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 = gAnims_HandOrFoot, .images = NULL, .affineAnims = sAffineAnims_FocusPunchFist, .callback = AnimFocusPunchFist, @@ -423,7 +415,7 @@ const struct SpriteTemplate gPalmSpriteTemplate = .tileTag = ANIM_TAG_PURPLE_HAND_OUTLINE, .paletteTag = ANIM_TAG_PURPLE_HAND_OUTLINE, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = sAnims_HandOrFoot, + .anims = gAnims_HandOrFoot, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimBasicFistOrFoot, @@ -520,7 +512,7 @@ static void AnimSlideHandOrFootToTarget(struct Sprite *sprite) AnimTravelDiagonally(sprite); } -static void AnimJumpKick(struct Sprite *sprite) +void AnimJumpKick(struct Sprite *sprite) { if (IsContest()) { @@ -538,7 +530,7 @@ static void AnimJumpKick(struct Sprite *sprite) // arg 2: duration // arg 3: ? (todo: related to initial pixel offsets) // arg 4: anim num -static void AnimBasicFistOrFoot(struct Sprite *sprite) +void AnimBasicFistOrFoot(struct Sprite *sprite) { StartSpriteAnim(sprite, gBattleAnimArgs[4]); @@ -698,7 +690,7 @@ static void AnimSlidingKick_Step(struct Sprite *sprite) // arg 1: initial y pixel offset // arg 2: anim num // arg 3: spin duration -static void AnimSpinningKickOrPunch(struct Sprite *sprite) +void AnimSpinningKickOrPunch(struct Sprite *sprite) { InitSpritePosToAnimTarget(sprite, TRUE); StartSpriteAnim(sprite, gBattleAnimArgs[2]); @@ -708,7 +700,7 @@ static void AnimSpinningKickOrPunch(struct Sprite *sprite) StoreSpriteCallbackInData6(sprite, AnimSpinningKickOrPunchFinish); } -static void AnimSpinningKickOrPunchFinish(struct Sprite *sprite) +void AnimSpinningKickOrPunchFinish(struct Sprite *sprite) { StartSpriteAffineAnim(sprite, 0); sprite->affineAnimPaused = 1; @@ -722,7 +714,7 @@ static void AnimSpinningKickOrPunchFinish(struct Sprite *sprite) // arg 0: initial x pixel offset // arg 1: initial y pixel offset // arg 2: initial wait duration -static void AnimStompFoot(struct Sprite *sprite) +void AnimStompFoot(struct Sprite *sprite) { InitSpritePosToAnimTarget(sprite, TRUE); sprite->data[0] = gBattleAnimArgs[2]; @@ -751,7 +743,7 @@ static void AnimStompFoot_End(struct Sprite *sprite) StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); } -static void AnimDizzyPunchDuck(struct Sprite *sprite) +void AnimDizzyPunchDuck(struct Sprite *sprite) { if (sprite->data[0] == 0) { @@ -799,7 +791,7 @@ static void AnimBrickBreakWall(struct Sprite *sprite) sprite->callback = AnimBrickBreakWall_Step; } -static void AnimBrickBreakWall_Step(struct Sprite *sprite) +void AnimBrickBreakWall_Step(struct Sprite *sprite) { switch (sprite->data[0]) { @@ -1050,7 +1042,7 @@ static void AnimArmThrustHit(struct Sprite *sprite) sprite->callback = AnimArmThrustHit_Step; } -static void AnimRevengeScratch(struct Sprite *sprite) +void AnimRevengeScratch(struct Sprite *sprite) { if (gBattleAnimArgs[2] == ANIM_ATTACKER) InitSpritePosToAnimAttacker(sprite, 0); diff --git a/src/battle_anim_fire.c b/src/battle_anim_fire.c index 606f498d4c..1d240d0045 100644 --- a/src/battle_anim_fire.c +++ b/src/battle_anim_fire.c @@ -8,7 +8,6 @@ #include "trig.h" static void AnimFireSpiralInward(struct Sprite *); -static void AnimFireSpread(struct Sprite *); static void AnimFirePlume(struct Sprite *); static void AnimLargeFlame(struct Sprite *); static void sub_8109028(struct Sprite *); @@ -23,7 +22,6 @@ static void AnimFireRing_Step2(struct Sprite *); static void AnimFireRing_Step3(struct Sprite *); static void UpdateFireRingCircleOffset(struct Sprite *); static void AnimFireCross(struct Sprite *); -static void AnimFireSpiralOutward(struct Sprite *); static void AnimFireSpiralOutward_Step1(struct Sprite *); static void AnimFireSpiralOutward_Step2(struct Sprite *); static void AnimTask_EruptionLaunchRocks_Step(u8 taskId); @@ -313,7 +311,7 @@ static const union AnimCmd sAnim_FireBlastCross[] = ANIMCMD_JUMP(0), }; -static const union AnimCmd *const sAnims_FireBlastCross[] = +const union AnimCmd *const gAnims_FireBlastCross[] = { sAnim_FireBlastCross, }; @@ -342,7 +340,7 @@ const struct SpriteTemplate gFireBlastCrossSpriteTemplate = .tileTag = ANIM_TAG_SMALL_EMBER, .paletteTag = ANIM_TAG_SMALL_EMBER, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = sAnims_FireBlastCross, + .anims = gAnims_FireBlastCross, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimFireCross, @@ -565,7 +563,7 @@ static void AnimFireSpiralInward(struct Sprite *sprite) } // For the impact spread of fire sprites for moves like Blaze Kick or Fire Punch -static void AnimFireSpread(struct Sprite *sprite) +void AnimFireSpread(struct Sprite *sprite) { SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]); @@ -824,7 +822,7 @@ static void AnimFireCross(struct Sprite *sprite) sprite->callback = TranslateSpriteLinear; } -static void AnimFireSpiralOutward(struct Sprite *sprite) +void AnimFireSpiralOutward(struct Sprite *sprite) { InitSpritePosToAnimAttacker(sprite, 1); diff --git a/src/battle_anim_flying.c b/src/battle_anim_flying.c index 29043b9371..cc64bf60c2 100644 --- a/src/battle_anim_flying.c +++ b/src/battle_anim_flying.c @@ -12,10 +12,6 @@ static void AnimEllipticalGust(struct Sprite *); static void AnimEllipticalGust_Step(struct Sprite *); static void AnimGustToTarget(struct Sprite *); static void AnimGustToTarget_Step(struct Sprite *); -static void AnimFlyBallUp(struct Sprite *); -static void AnimFlyBallUp_Step(struct Sprite *); -static void AnimFlyBallAttack(struct Sprite *); -static void AnimFlyBallAttack_Step(struct Sprite *); static void AnimFallingFeather(struct Sprite *); static void sub_810E520(struct Sprite *); static void sub_810EB40(struct Sprite *); @@ -104,7 +100,7 @@ static const union AffineAnimCmd sAffineAnim_FlyBallUp[] = AFFINEANIMCMD_END, }; -static const union AffineAnimCmd *const sAffineAnims_FlyBallUp[] = +const union AffineAnimCmd *const gAffineAnims_FlyBallUp[] = { sAffineAnim_FlyBallUp, }; @@ -121,7 +117,7 @@ static const union AffineAnimCmd sAffineAnim_FlyBallAttack_1[] = AFFINEANIMCMD_END, }; -static const union AffineAnimCmd *const sAffineAnims_FlyBallAttack[] = +const union AffineAnimCmd *const gAffineAnims_FlyBallAttack[] = { sAffineAnim_FlyBallAttack_0, sAffineAnim_FlyBallAttack_1, @@ -134,7 +130,7 @@ const struct SpriteTemplate gFlyBallUpSpriteTemplate = .oam = &gOamData_AffineDouble_ObjNormal_64x64, .anims = gDummySpriteAnimTable, .images = NULL, - .affineAnims = sAffineAnims_FlyBallUp, + .affineAnims = gAffineAnims_FlyBallUp, .callback = AnimFlyBallUp, }; @@ -145,7 +141,7 @@ const struct SpriteTemplate gFlyBallAttackSpriteTemplate = .oam = &gOamData_AffineNormal_ObjNormal_64x64, .anims = gDummySpriteAnimTable, .images = NULL, - .affineAnims = sAffineAnims_FlyBallAttack, + .affineAnims = gAffineAnims_FlyBallAttack, .callback = AnimFlyBallAttack, }; @@ -464,7 +460,7 @@ void AnimAirWaveCrescent(struct Sprite *sprite) SeekSpriteAnim(sprite, gBattleAnimArgs[5]); } -static void AnimFlyBallUp(struct Sprite *sprite) +void AnimFlyBallUp(struct Sprite *sprite) { InitSpritePosToAnimAttacker(sprite, TRUE); sprite->data[0] = gBattleAnimArgs[2]; @@ -473,7 +469,7 @@ static void AnimFlyBallUp(struct Sprite *sprite) gSprites[GetAnimBattlerSpriteId(ANIM_ATTACKER)].invisible = TRUE; } -static void AnimFlyBallUp_Step(struct Sprite *sprite) +void AnimFlyBallUp_Step(struct Sprite *sprite) { if (sprite->data[0] > 0) { @@ -489,7 +485,7 @@ static void AnimFlyBallUp_Step(struct Sprite *sprite) DestroyAnimSprite(sprite); } -static void AnimFlyBallAttack(struct Sprite *sprite) +void AnimFlyBallAttack(struct Sprite *sprite) { if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) { @@ -514,7 +510,7 @@ static void AnimFlyBallAttack(struct Sprite *sprite) sprite->callback = AnimFlyBallAttack_Step; } -static void AnimFlyBallAttack_Step(struct Sprite *sprite) +void AnimFlyBallAttack_Step(struct Sprite *sprite) { sprite->data[0] = 1; AnimTranslateLinear(sprite); diff --git a/src/battle_anim_ghost.c b/src/battle_anim_ghost.c index 273fdf38a4..cfae013275 100644 --- a/src/battle_anim_ghost.c +++ b/src/battle_anim_ghost.c @@ -18,7 +18,6 @@ static void AnimConfuseRayBallSpiral(struct Sprite *); static void AnimConfuseRayBallSpiral_Step(struct Sprite *); static void AnimTask_NightShadeClone_Step1(u8 taskId); static void AnimTask_NightShadeClone_Step2(u8 taskId); -static void AnimShadowBall(struct Sprite *); static void AnimShadowBall_Step(struct Sprite *); static void AnimLick(struct Sprite *); static void AnimLick_Step(struct Sprite *); @@ -36,7 +35,6 @@ static void AnimCurseNail_Step1(struct Sprite *); static void AnimCurseNail_Step2(struct Sprite *); static void AnimCurseNail_End(struct Sprite *); static void AnimGhostStatusSprite_Step(struct Sprite *); -static void AnimTask_GrudgeFlames_Step(u8 taskId); static void AnimGrudgeFlame(struct Sprite *); static void sub_8112F60(struct Sprite *); static void sub_8112FB8(struct Sprite *); @@ -81,7 +79,7 @@ static const union AffineAnimCmd sAffineAnim_ShadowBall[] = AFFINEANIMCMD_JUMP(0), }; -static const union AffineAnimCmd *const sAffineAnims_ShadowBall[] = +const union AffineAnimCmd *const gAffineAnims_ShadowBall[] = { sAffineAnim_ShadowBall, }; @@ -93,7 +91,7 @@ const struct SpriteTemplate gShadowBallSpriteTemplate = .oam = &gOamData_AffineNormal_ObjNormal_32x32, .anims = gDummySpriteAnimTable, .images = NULL, - .affineAnims = sAffineAnims_ShadowBall, + .affineAnims = gAffineAnims_ShadowBall, .callback = AnimShadowBall, }; @@ -104,7 +102,7 @@ const struct SpriteTemplate gEnergyBallSpriteTemplate = .oam = &gOamData_AffineNormal_ObjNormal_32x32, .anims = gDummySpriteAnimTable, .images = NULL, - .affineAnims = sAffineAnims_ShadowBall, + .affineAnims = gAffineAnims_ShadowBall, .callback = AnimShadowBall, }; @@ -179,6 +177,17 @@ const struct SpriteTemplate gDestinyBondWhiteShadowSpriteTemplate = .callback = AnimDestinyBondWhiteShadow, }; +const struct SpriteTemplate gDarkVoidBlackHoleTemplate = +{ + .tileTag = ANIM_TAG_WHITE_SHADOW, + .paletteTag = ANIM_TAG_QUICK_GUARD_HAND, + .oam = &gOamData_AffineOff_ObjBlend_64x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimDestinyBondWhiteShadow +}; + const struct SpriteTemplate gCurseNailSpriteTemplate = { .tileTag = ANIM_TAG_NAIL, @@ -256,7 +265,7 @@ const struct SpriteTemplate gFlashCannonBallMovementTemplate = .oam = &gOamData_AffineNormal_ObjNormal_32x32, .anims = gDummySpriteAnimTable, .images = NULL, - .affineAnims = sAffineAnims_ShadowBall, + .affineAnims = gAffineAnims_ShadowBall, .callback = AnimShadowBall }; @@ -443,7 +452,7 @@ static void AnimTask_NightShadeClone_Step2(u8 taskId) // arg 0: duration step 1 (attacker -> center) // arg 1: duration step 2 (spin center) // arg 2: duration step 3 (center -> target) -static void AnimShadowBall(struct Sprite *sprite) +void AnimShadowBall(struct Sprite *sprite) { s16 oldPosX = sprite->pos1.x; s16 oldPosY = sprite->pos1.y; @@ -865,7 +874,11 @@ void AnimTask_DestinyBondWhiteShadow(u8 taskId) && battler != (gBattleAnimAttacker ^ 2) && IsBattlerSpriteVisible(battler)) { - spriteId = CreateSprite(&gDestinyBondWhiteShadowSpriteTemplate, baseX, baseY, 55); + if (IsMoveAnimDarkVoid()) + spriteId = CreateSprite(&gDarkVoidBlackHoleTemplate, baseX, baseY, 55); //dark void + else + spriteId = CreateSprite(&gDestinyBondWhiteShadowSpriteTemplate, baseX, baseY, 55); //destiny bond + if (spriteId != MAX_SPRITES) { x = GetBattlerSpriteCoord(battler, 2); @@ -887,7 +900,11 @@ void AnimTask_DestinyBondWhiteShadow(u8 taskId) } else { - spriteId = CreateSprite(&gDestinyBondWhiteShadowSpriteTemplate, baseX, baseY, 55); + if (IsMoveAnimDarkVoid()) + spriteId = CreateSprite(&gDarkVoidBlackHoleTemplate, baseX, baseY, 55); //dark void + else + spriteId = CreateSprite(&gDestinyBondWhiteShadowSpriteTemplate, baseX, baseY, 55); //destiny bond + if (spriteId != MAX_SPRITES) { x = 48; @@ -1237,7 +1254,7 @@ void AnimTask_GrudgeFlames(u8 taskId) task->func = AnimTask_GrudgeFlames_Step; } -static void AnimTask_GrudgeFlames_Step(u8 taskId) +void AnimTask_GrudgeFlames_Step(u8 taskId) { u16 i; u8 spriteId; diff --git a/src/battle_anim_ground.c b/src/battle_anim_ground.c index 937ba37d91..8c1442fd4c 100644 --- a/src/battle_anim_ground.c +++ b/src/battle_anim_ground.c @@ -8,14 +8,11 @@ static void AnimBonemerangProjectile(struct Sprite *); static void AnimBoneHitProjectile(struct Sprite *); -static void AnimDirtScatter(struct Sprite *); -static void AnimMudSportDirt(struct Sprite *); static void AnimDirtPlumeParticle(struct Sprite *); static void AnimDirtPlumeParticle_Step(struct Sprite *); static void AnimDigDirtMound(struct Sprite *); static void AnimBonemerangProjectile_Step(struct Sprite *); static void AnimBonemerangProjectile_End(struct Sprite *); -static void AnimMudSportDirtRising(struct Sprite *); static void AnimMudSportDirtFalling(struct Sprite *); static void AnimTask_DigBounceMovement(u8); static void AnimTask_DigEndBounceMovementSetInvisible(u8); @@ -44,7 +41,7 @@ static const union AffineAnimCmd *const sAffineAnims_Bonemerang[] = sAffineAnim_Bonemerang, }; -static const union AffineAnimCmd *const sAffineAnims_SpinningBone[] = +const union AffineAnimCmd *const gAffineAnims_SpinningBone[] = { sAffineAnim_SpinningBone, }; @@ -67,7 +64,7 @@ const struct SpriteTemplate gSpinningBoneSpriteTemplate = .oam = &gOamData_AffineNormal_ObjNormal_32x32, .anims = gDummySpriteAnimTable, .images = NULL, - .affineAnims = sAffineAnims_SpinningBone, + .affineAnims = gAffineAnims_SpinningBone, .callback = AnimBoneHitProjectile, }; @@ -222,7 +219,7 @@ static void AnimBoneHitProjectile(struct Sprite *sprite) // arg 2: duration // arg 3: target x pixel offset // arg 4: target y pixel offset -static void AnimDirtScatter(struct Sprite *sprite) +void AnimDirtScatter(struct Sprite *sprite) { u8 targetXPos, targetYPos; s16 xOffset, yOffset; @@ -251,7 +248,7 @@ static void AnimDirtScatter(struct Sprite *sprite) // arg 0: 0 = dirt is rising into the air, 1 = dirt is falling down // arg 1: initial x pixel offset // arg 2: initial y pixel offset -static void AnimMudSportDirt(struct Sprite *sprite) +void AnimMudSportDirt(struct Sprite *sprite) { sprite->oam.tileNum++; if (gBattleAnimArgs[0] == 0) @@ -270,7 +267,7 @@ static void AnimMudSportDirt(struct Sprite *sprite) } } -static void AnimMudSportDirtRising(struct Sprite *sprite) +void AnimMudSportDirtRising(struct Sprite *sprite) { if (++sprite->data[1] > 1) { diff --git a/src/battle_anim_ice.c b/src/battle_anim_ice.c index ea46092d9a..c3aa2680b0 100644 --- a/src/battle_anim_ice.c +++ b/src/battle_anim_ice.c @@ -24,18 +24,14 @@ static void sub_810B6C4(struct Sprite *); static void sub_810B848(struct Sprite *); static void AnimIcePunchSwirlingParticle(struct Sprite *); static void AnimIceBeamParticle(struct Sprite *); -static void AnimIceEffectParticle(struct Sprite *); static void AnimFlickerIceEffectParticle(struct Sprite *); static void AnimSwirlingSnowball(struct Sprite *); -static void AnimSwirlingSnowball_Step1(struct Sprite *); static void AnimSwirlingSnowball_Step2(struct Sprite *); static void AnimSwirlingSnowball_End(struct Sprite *); -static void AnimMoveParticleBeyondTarget(struct Sprite *); static void AnimWiggleParticleTowardsTarget(struct Sprite *); static void AnimWaveFromCenterOfTarget(struct Sprite *); static void InitSwirlingFogAnim(struct Sprite *); static void AnimSwirlingFogAnim(struct Sprite *); -static void AnimThrowMistBall(struct Sprite *); static void InitPoisonGasCloudAnim(struct Sprite *); static void MovePoisonGasCloud(struct Sprite *); static void AnimHailBegin(struct Sprite *); @@ -118,7 +114,7 @@ static const union AnimCmd *const gUnknown_08595AA4[] = gUnknown_08595A70, }; -static const union AnimCmd *const sAnims_IceCrystalLarge[] = +const union AnimCmd *const gAnims_IceCrystalLarge[] = { sAnim_IceCrystalLarge, }; @@ -128,12 +124,12 @@ static const union AnimCmd *const sAnims_IceCrystalSmall[] = sAnim_IceCrystalSmall, }; -static const union AnimCmd *const sAnims_Snowball[] = +const union AnimCmd *const gAnims_Snowball[] = { sAnim_Snowball, }; -static const union AnimCmd *const sAnims_BlizzardIceCrystal[] = +const union AnimCmd *const gAnims_BlizzardIceCrystal[] = { sAnim_BlizzardIceCrystal, }; @@ -159,7 +155,7 @@ const struct SpriteTemplate gIceCrystalSpiralInwardLarge = .tileTag = ANIM_TAG_ICE_CRYSTALS, .paletteTag = ANIM_TAG_ICE_CRYSTALS, .oam = &gOamData_AffineDouble_ObjBlend_8x16, - .anims = sAnims_IceCrystalLarge, + .anims = gAnims_IceCrystalLarge, .images = NULL, .affineAnims = sAffineAnims_IceCrystalSpiralInwardLarge, .callback = AnimIcePunchSwirlingParticle, @@ -192,7 +188,7 @@ const struct SpriteTemplate gIceBeamInnerCrystalSpriteTemplate = .tileTag = ANIM_TAG_ICE_CRYSTALS, .paletteTag = ANIM_TAG_ICE_CRYSTALS, .oam = &gOamData_AffineNormal_ObjBlend_8x16, - .anims = sAnims_IceCrystalLarge, + .anims = gAnims_IceCrystalLarge, .images = NULL, .affineAnims = sAffineAnims_IceBeamInnerCrystal, .callback = AnimIceBeamParticle, @@ -217,7 +213,7 @@ static const union AffineAnimCmd sAffineAnim_IceCrystalHit[] = AFFINEANIMCMD_END, }; -static const union AffineAnimCmd *const sAffineAnims_IceCrystalHit[] = +const union AffineAnimCmd *const gAffineAnims_IceCrystalHit[] = { sAffineAnim_IceCrystalHit, }; @@ -227,9 +223,9 @@ const struct SpriteTemplate gIceCrystalHitLargeSpriteTemplate = .tileTag = ANIM_TAG_ICE_CRYSTALS, .paletteTag = ANIM_TAG_ICE_CRYSTALS, .oam = &gOamData_AffineNormal_ObjBlend_8x16, - .anims = sAnims_IceCrystalLarge, + .anims = gAnims_IceCrystalLarge, .images = NULL, - .affineAnims = sAffineAnims_IceCrystalHit, + .affineAnims = gAffineAnims_IceCrystalHit, .callback = AnimIceEffectParticle, }; @@ -240,7 +236,7 @@ const struct SpriteTemplate gIceCrystalHitSmallSpriteTemplate = .oam = &gOamData_AffineNormal_ObjBlend_8x8, .anims = sAnims_IceCrystalSmall, .images = NULL, - .affineAnims = sAffineAnims_IceCrystalHit, + .affineAnims = gAffineAnims_IceCrystalHit, .callback = AnimIceEffectParticle, }; @@ -249,7 +245,7 @@ const struct SpriteTemplate gSwirlingSnowballSpriteTemplate = .tileTag = ANIM_TAG_ICE_CRYSTALS, .paletteTag = ANIM_TAG_ICE_CRYSTALS, .oam = &gOamData_AffineOff_ObjNormal_8x8, - .anims = sAnims_Snowball, + .anims = gAnims_Snowball, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimSwirlingSnowball, @@ -260,7 +256,7 @@ const struct SpriteTemplate gBlizzardIceCrystalSpriteTemplate = .tileTag = ANIM_TAG_ICE_CRYSTALS, .paletteTag = ANIM_TAG_ICE_CRYSTALS, .oam = &gOamData_AffineOff_ObjNormal_16x16, - .anims = sAnims_BlizzardIceCrystal, + .anims = gAnims_BlizzardIceCrystal, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimMoveParticleBeyondTarget, @@ -271,7 +267,7 @@ const struct SpriteTemplate gPowderSnowSnowballSpriteTemplate = .tileTag = ANIM_TAG_ICE_CRYSTALS, .paletteTag = ANIM_TAG_ICE_CRYSTALS, .oam = &gOamData_AffineOff_ObjNormal_8x8, - .anims = sAnims_Snowball, + .anims = gAnims_Snowball, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimMoveParticleBeyondTarget, @@ -458,7 +454,7 @@ static const union AnimCmd sAnim_IceBallChunk_1[] = ANIMCMD_END, }; -static const union AnimCmd *const sAnims_IceBallChunk[] = +const union AnimCmd *const gAnims_IceBallChunk[] = { sAnim_IceBallChunk_0, sAnim_IceBallChunk_1, @@ -508,7 +504,7 @@ const struct SpriteTemplate gIceBallChunkSpriteTemplate = .tileTag = ANIM_TAG_ICE_CHUNK, .paletteTag = ANIM_TAG_ICE_CHUNK, .oam = &gOamData_AffineDouble_ObjNormal_32x32, - .anims = sAnims_IceBallChunk, + .anims = gAnims_IceBallChunk, .images = NULL, .affineAnims = sAffineAnims_IceBallChunk, .callback = InitIceBallAnim, @@ -568,7 +564,7 @@ const struct SpriteTemplate gChatterSingNotesTemplate = .oam = &gOamData_AffineDouble_ObjNormal_16x16, .anims = gMusicNotesAnimTable, .images = NULL, - .affineAnims = sAffineAnims_IceCrystalHit, + .affineAnims = gAffineAnims_IceCrystalHit, .callback = AnimIceEffectParticle }; @@ -710,7 +706,7 @@ static void AnimIceBeamParticle(struct Sprite *sprite) // arg 0: target x offset // arg 1: target y offset // arg 2: ??? unknown boolean -static void AnimIceEffectParticle(struct Sprite *sprite) +void AnimIceEffectParticle(struct Sprite *sprite) { if (gBattleAnimArgs[2] == 0) { @@ -801,7 +797,7 @@ static void AnimSwirlingSnowball(struct Sprite *sprite) StoreSpriteCallbackInData6(sprite, AnimSwirlingSnowball_Step1); } -static void AnimSwirlingSnowball_Step1(struct Sprite *sprite) +void AnimSwirlingSnowball_Step1(struct Sprite *sprite) { s16 tempVar; @@ -865,7 +861,7 @@ static void AnimSwirlingSnowball_End(struct Sprite *sprite) // arg 5: wave amplitude // arg 6: wave frequency // arg 7: multiple targets? (boolean) -static void AnimMoveParticleBeyondTarget(struct Sprite *sprite) +void AnimMoveParticleBeyondTarget(struct Sprite *sprite) { int i; s16 tempDataHolder[8]; @@ -1167,7 +1163,7 @@ static void AnimTask_Haze2(u8 taskId) // arg 3: target y offset // arg 4: duration // arg 5: ??? unknown (seems to vibrate target mon somehow) -static void AnimThrowMistBall(struct Sprite *sprite) +void AnimThrowMistBall(struct Sprite *sprite) { sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); diff --git a/src/battle_anim_new.c b/src/battle_anim_new.c new file mode 100644 index 0000000000..da741a94c8 --- /dev/null +++ b/src/battle_anim_new.c @@ -0,0 +1,5058 @@ +#include "global.h" +#include "battle_anim.h" +#include "item_menu_icons.h" +#include "sprite.h" +#include "random.h" +#include "gpu_regs.h" +#include "item.h" +#include "item_icon.h" +#include "sound.h" +#include "menu.h" +#include "malloc.h" +#include "util.h" +#include "graphics.h" +#include "battle_scripts.h" +#include "battle_controllers.h" +#include "constants/moves.h" + +// defines +#define PARTNER(battler) (battler ^ BIT_FLANK) + +//// function declarations +static void SpriteCB_SpriteToCentreOfSide(struct Sprite* sprite); +static void SpriteCB_SpriteOnMonForDuration(struct Sprite *sprite); +static void SpriteCB_ToxicThreadWrap(struct Sprite *sprite); +static void SpriteCB_GrowingSuperpower(struct Sprite *sprite); +static void SpriteCB_CentredSpiderWeb(struct Sprite* sprite); +static void SpriteCB_CoreEnforcerHits(struct Sprite* sprite); +static void SpriteCB_CoreEnforcerBeam(struct Sprite* sprite); +static void SpriteCB_TranslateAnimSpriteToTargetMonLocationDoubles(struct Sprite* sprite); +static void SpriteCB_FallingObject(struct Sprite *sprite); +static void SpriteCB_FallingObjectStep(struct Sprite *sprite); +static void SpriteCB_SunsteelStrikeRings(struct Sprite* sprite); +static void SpriteCB_MoongeistCharge(struct Sprite *sprite); +static void SpriteCB_MindBlownBall(struct Sprite *sprite); +static void AnimMindBlownBallStep(struct Sprite *sprite); +static void SpriteCB_MindBlownExplosion(struct Sprite* sprite); +static void SpriteCB_RandomCentredHits(struct Sprite* sprite); +static void SpriteCB_LockingJaw(struct Sprite *sprite); +static void SpriteCB_LockingJawStep(struct Sprite *sprite); +static void SpriteCB_LockingJawFinish(struct Sprite *sprite); +static void SpriteCB_LeftRightSlice(struct Sprite *sprite); +static void SpriteCB_LeftRightSliceStep1(struct Sprite *sprite); +static void SpriteCB_LeftRightSliceStep0(struct Sprite *sprite); +static void SpriteCB_PyroBallRockBounce(struct Sprite* sprite); +static void SpriteCB_PyroBallLaunch(struct Sprite* sprite); +static void SpriteCB_AcidLaunchSingleTarget(struct Sprite *sprite); +static void SpriteCB_AcidDripSingleTarget(struct Sprite *sprite); +static void SpriteCB_WaterDroplet(struct Sprite *sprite); +static void SpriteCB_WaterDropletDrip(struct Sprite *sprite); +static void SpriteCB_WaterDropletDrop(struct Sprite *sprite); +static void SpriteCB_AnimSpriteOnSelectedMonPos(struct Sprite *sprite); +static void SpriteCB_SurroundingRing(struct Sprite *sprite); +static void SpriteCB_PhotonGeyserBeam(struct Sprite* sprite); +static void SpriteCB_BeamUpStep(struct Sprite* sprite); +static void SpriteCB_CentredElectricity(struct Sprite* sprite); +static void AnimSkyDropBallUp(struct Sprite *sprite); +static void SpriteCB_SearingShotRock(struct Sprite* sprite); +static void AnimHappyHourCoinShower(struct Sprite *sprite); +static void SpriteCB_Geyser(struct Sprite* sprite); + +//////// const data +//// general +static const union AffineAnimCmd sSquishTargetAffineAnimCmds[] = +{ + AFFINEANIMCMD_FRAME(0, 64, 0, 16), //Flatten + AFFINEANIMCMD_FRAME(0, 0, 0, 64), + AFFINEANIMCMD_FRAME(0, -64, 0, 16), + AFFINEANIMCMD_END, +}; + +//// GEN 5 +//wide guard +const struct SpriteTemplate gWideGuardBlueConversionTemplate = +{ + .tileTag = ANIM_TAG_CONVERSION, + .paletteTag = ANIM_TAG_WATER_ORB, + .oam = &gOamData_AffineDouble_ObjBlend_8x8, + .anims = gConversionAnimTable, + .images = NULL, + .affineAnims = gConversionAffineAnimTable, + .callback = AnimConversion +}; + +//guard split +const struct SpriteTemplate gGuardSwapOrbs1Template = +{ + .tileTag = ANIM_TAG_BLUEGREEN_ORB, + .paletteTag = ANIM_TAG_BLUEGREEN_ORB, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_HitSplat, + .callback = AnimMimicOrb +}; + +const struct SpriteTemplate gGuardSwapOrbs2Template = +{ + .tileTag = ANIM_TAG_BLUEGREEN_ORB, + .paletteTag = ANIM_TAG_BLUEGREEN_ORB, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_HitSplat, + .callback = AnimMissileArc +}; + +// power split +const struct SpriteTemplate gPowerSplitOrbs1Template = +{ + .tileTag = ANIM_TAG_BLUEGREEN_ORB, + .paletteTag = ANIM_TAG_RED_HEART, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_HitSplat, + .callback = AnimMimicOrb +}; + +const struct SpriteTemplate gPowerSplitOrbs2Template = +{ + .tileTag = ANIM_TAG_BLUEGREEN_ORB, + .paletteTag = ANIM_TAG_RED_HEART, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_HitSplat, + .callback = AnimMissileArc +}; + +// automotize +const struct SpriteTemplate gAutotomizeMetalShardsTemplate = +{ + .tileTag = ANIM_TAG_METAL_BITS, + .paletteTag = ANIM_TAG_METAL_BITS, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_TearDrop, + .callback = AnimTearDrop +}; + +//rage powder +const struct SpriteTemplate gRagePowderRedPowderTemplate = +{ + .tileTag = ANIM_TAG_SPORE, + .paletteTag = ANIM_TAG_HEART_STAMP, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gSporeParticleAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSporeParticle +}; + +//flame charge +const struct SpriteTemplate gFlameChargeEmberTemplate = +{ + .tileTag = ANIM_TAG_SMALL_EMBER, + .paletteTag = ANIM_TAG_SMALL_EMBER, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gAnims_FlamethrowerFlame, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimPetalDanceBigFlower +}; + +//final gambit +const struct SpriteTemplate gFinalGambitBlueYawnTemplate = +{ + .tileTag = ANIM_TAG_PINK_CLOUD, + .paletteTag = ANIM_TAG_WATER_IMPACT, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_ShadowBall, + .callback = AnimShadowBall +}; + +const struct SpriteTemplate gFinalGambitExplosionTemplate = +{ + .tileTag = ANIM_TAG_EXPLOSION, + .paletteTag = ANIM_TAG_WATER_IMPACT, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gExplosionAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSpriteOnMonPos +}; + +//synchronoise +const struct SpriteTemplate gSynchronoiseVioletRingTemplate = +{ + .tileTag = ANIM_TAG_THIN_RING, + .paletteTag = ANIM_TAG_POISON_BUBBLE, + .oam = &gOamData_AffineDouble_ObjBlend_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gHyperVoiceRingAffineAnimTable, + .callback = AnimHyperVoiceRing +}; + +const struct SpriteTemplate gSynchronoiseYellowRingTemplate = +{ + .tileTag = ANIM_TAG_THIN_RING, + .paletteTag = ANIM_TAG_SPARK_2, + .oam = &gOamData_AffineDouble_ObjBlend_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gHyperVoiceRingAffineAnimTable, + .callback = AnimHyperVoiceRing +}; + +const struct SpriteTemplate gSynchronoiseBlueRingTemplate = +{ + .tileTag = ANIM_TAG_THIN_RING, + .paletteTag = ANIM_TAG_WATER_ORB, + .oam = &gOamData_AffineDouble_ObjBlend_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gHyperVoiceRingAffineAnimTable, + .callback = AnimHyperVoiceRing +}; + +const struct SpriteTemplate gSynchronoiseAeroWheelTemplate = +{ + .tileTag = ANIM_TAG_AIR_WAVE_2, + .paletteTag = ANIM_TAG_AIR_WAVE_2, + .oam = &gOamData_AffineOff_ObjNormal_32x16, + .anims = gAffineAnims_AirWaveCrescent, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimFireSpread +}; + +//electro ball +const struct SpriteTemplate gElectroBallCannonBallTemplate = +{ + .tileTag = ANIM_TAG_FLASH_CANNON_BALL, + .paletteTag = ANIM_TAG_CIRCLE_OF_LIGHT, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_ShadowBall, + .callback = AnimShadowBall +}; + +//foul play +const struct SpriteTemplate gFoulPlayImpactTemplate = +{ + .tileTag = ANIM_TAG_IMPACT, + .paletteTag = ANIM_TAG_HANDS_AND_FEET, + .oam = &gOamData_AffineNormal_ObjBlend_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_HitSplat, + .callback = AnimHitSplatBasic +}; + +const struct SpriteTemplate gFoulPlayRingTemplate = +{ + .tileTag = ANIM_TAG_THIN_RING, + .paletteTag = ANIM_TAG_POISON_BUBBLE, + .oam = &gOamData_AffineDouble_ObjNormal_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gThinRingExpandingAffineAnimTable, + .callback = AnimSpriteOnMonPos +}; + +//simple beam +const struct SpriteTemplate gSimpleBeamBrownTemplate = +{ + .tileTag = ANIM_TAG_GOLD_RING, + .paletteTag = ANIM_TAG_ROCKS, + .oam = &gOamData_AffineOff_ObjNormal_16x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = TranslateAnimSpriteToTargetMonLocation +}; + +const struct SpriteTemplate gSimpleBeamPinkTemplate = +{ + .tileTag = ANIM_TAG_GOLD_RING, + .paletteTag = ANIM_TAG_PINK_PETAL, + .oam = &gOamData_AffineOff_ObjNormal_16x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = TranslateAnimSpriteToTargetMonLocation +}; + +const struct SpriteTemplate gSimpleBeamBrownRingTemplate = +{ + .tileTag = ANIM_TAG_THIN_RING, + .paletteTag = ANIM_TAG_ROCKS, + .oam = &gOamData_AffineDouble_ObjBlend_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gThinRingExpandingAffineAnimTable, + .callback = AnimUproarRing +}; + +const struct SpriteTemplate gSimpleBeamPinkRingTemplate = +{ + .tileTag = ANIM_TAG_THIN_RING, + .paletteTag = ANIM_TAG_PINK_PETAL, + .oam = &gOamData_AffineDouble_ObjBlend_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gThinRingExpandingAffineAnimTable, + .callback = AnimUproarRing +}; + +// after you +const struct SpriteTemplate gAfterYouGreenRageTemplate = +{ + .tileTag = ANIM_TAG_ANGER, + .paletteTag = ANIM_TAG_CIRCLE_OF_LIGHT, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAngerMarkAffineAnimTable, + .callback = AnimAngerMark +}; + +//quick guard +const struct SpriteTemplate gQuickGuardArmImpactTemplate = +{ + .tileTag = ANIM_TAG_QUICK_GUARD_HAND, + .paletteTag = ANIM_TAG_QUICK_GUARD_HAND, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gAnims_HandOrFoot, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimBasicFistOrFoot +}; + +//sky drop +static const union AffineAnimCmd sSkyDropFlyBallAffineAnimCmd_0[] = +{ + AFFINEANIMCMD_FRAME(0xa0, 0x100, 0x50, 0x0), //.hword 0xa0, 0x100, 0x50, 0x0, + AFFINEANIMCMD_END +}; +static const union AffineAnimCmd *const sSkyDropFlyBallAffineAnimCmds[] = +{ + sSkyDropFlyBallAffineAnimCmd_0 +}; +const struct SpriteTemplate gSkyDropFlyBallTemplate = +{ + .tileTag = ANIM_TAG_ROUND_SHADOW, + .paletteTag = ANIM_TAG_ROUND_SHADOW, + .oam = &gOamData_AffineDouble_ObjNormal_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = sSkyDropFlyBallAffineAnimCmds, + .callback = AnimThrowMistBall +}; + +const struct SpriteTemplate gSkyDropTargetFlyingTemplate = +{ + .tileTag = ANIM_TAG_ROUND_SHADOW, + .paletteTag = ANIM_TAG_ROUND_SHADOW, + .oam = &gOamData_AffineDouble_ObjNormal_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_FlyBallUp, + .callback = AnimSkyDropBallUp +}; + +//shift gear +const struct SpriteTemplate gShiftGearGearsTemplate = +{ + .tileTag = ANIM_TAG_GEAR, + .paletteTag = ANIM_TAG_GEAR, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_SpinningBone, + .callback = SpriteCB_SpriteOnMonForDuration +}; + +//circle throw +const struct SpriteTemplate gCircleThrowRingTemplate = +{ + .tileTag = ANIM_TAG_THIN_RING, + .paletteTag = ANIM_TAG_ICE_CHUNK, + .oam = &gOamData_AffineDouble_ObjNormal_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gThinRingExpandingAffineAnimTable, + .callback = AnimSpriteOnMonPos +}; + +//quash +const struct SpriteTemplate gQuashArmHitTemplate = +{ + .tileTag = ANIM_TAG_ASSURANCE_HAND, + .paletteTag = ANIM_TAG_ASSURANCE_HAND, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gAnims_HandOrFoot, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimStompFoot +}; + +//reflect type +const struct SpriteTemplate gReflectTypeBlueStringTemplate = +{ + .tileTag = ANIM_TAG_GUARD_RING, + .paletteTag = ANIM_TAG_ICE_CHUNK, + .oam = &gOamData_AffineOff_ObjBlend_64x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_ToxicThreadWrap +}; + +const struct SpriteTemplate gReflectTypeVioletStringTemplate = +{ + .tileTag = ANIM_TAG_GUARD_RING, + .paletteTag = ANIM_TAG_PURPLE_FLAME, + .oam = &gOamData_AffineOff_ObjBlend_64x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_ToxicThreadWrap +}; + +const struct SpriteTemplate gReflectTypeWhiteStringTemplate = +{ + .tileTag = ANIM_TAG_GUARD_RING, + .paletteTag = ANIM_TAG_GUARD_RING, + .oam = &gOamData_AffineOff_ObjBlend_64x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_ToxicThreadWrap +}; + +const struct SpriteTemplate gReflectTypeWhiteRingTemplate = +{ + .tileTag = ANIM_TAG_GUARD_RING, + .paletteTag = ANIM_TAG_GUARD_RING, + .oam = &gOamData_AffineDouble_ObjBlend_64x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gGuardRingAffineAnimTable, + .callback = SpriteCB_SurroundingRing +}; + +const struct SpriteTemplate gReflectTypePinkRingTemplate = +{ + .tileTag = ANIM_TAG_GUARD_RING, + .paletteTag = ANIM_TAG_PINK_PETAL, + .oam = &gOamData_AffineDouble_ObjBlend_64x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gGuardRingAffineAnimTable, + .callback = SpriteCB_SurroundingRing +}; + +const struct SpriteTemplate gReflectTypeVioletRingTemplate = +{ + .tileTag = ANIM_TAG_GUARD_RING, + .paletteTag = ANIM_TAG_PURPLE_FLAME, + .oam = &gOamData_AffineDouble_ObjBlend_64x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gGuardRingAffineAnimTable, + .callback = SpriteCB_SurroundingRing +}; + +const struct SpriteTemplate gReflectTypeBlueRingTemplate = +{ + .tileTag = ANIM_TAG_GUARD_RING, + .paletteTag = ANIM_TAG_ICE_CHUNK, + .oam = &gOamData_AffineDouble_ObjBlend_64x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gGuardRingAffineAnimTable, + .callback = SpriteCB_SurroundingRing +}; + +//frost breath +const struct SpriteTemplate gFrostBreathBlueRageTemplate = +{ + .tileTag = ANIM_TAG_FIRE_PLUME, + .paletteTag = ANIM_TAG_ICE_CHUNK, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gAnims_DragonRageFirePlume, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimDragonRageFirePlume +}; + +const struct SpriteTemplate gFrostBreathBlueBreathTemplate = +{ + .tileTag = ANIM_TAG_SMALL_EMBER, + .paletteTag = ANIM_TAG_ICE_CHUNK, + .oam = &gOamData_AffineDouble_ObjNormal_32x32, + .anims = gAnims_DragonRageFire, + .images = NULL, + .affineAnims = gAffineAnims_DragonRageFire, + .callback = AnimDragonFireToTarget +}; + +//heart stamp +const struct SpriteTemplate gHeartStampSpinningHeartTemplate = +{ + .tileTag = ANIM_TAG_HEART_STAMP, + .paletteTag = ANIM_TAG_HEART_STAMP, + .oam = &gOamData_AffineDouble_ObjNormal_32x32, + .anims = gAnims_HandOrFoot, + .images = NULL, + .affineAnims = gAffineAnims_SpinningHandOrFoot, + .callback = AnimSpinningKickOrPunch +}; + +//horn leech +const struct SpriteTemplate gHornLeechHornTemplate = +{ + .tileTag = ANIM_TAG_HORN_LEECH, + .paletteTag = ANIM_TAG_HORN_LEECH, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimShadowBall +}; + +//dual chop +const struct SpriteTemplate gDualChopImpactTemplate = +{ + .tileTag = ANIM_TAG_IMPACT, + .paletteTag = ANIM_TAG_POISON_BUBBLE, + .oam = &gOamData_AffineNormal_ObjBlend_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_HitSplat, + .callback = AnimHitSplatBasic +}; + +//sacred sword +const struct SpriteTemplate gSacredSwordBladesTemplate = +{ + .tileTag = ANIM_TAG_PUNISHMENT_BLADES, + .paletteTag = ANIM_TAG_HYDRO_PUMP, + .oam = &gOamData_AffineDouble_ObjNormal_32x32, + .anims = gAnims_DragonBreathFire, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimFireSpread +}; + +const struct SpriteTemplate gSacredSwordCutTemplate = +{ + .tileTag = ANIM_TAG_CUT, + .paletteTag = ANIM_TAG_HYDRO_PUMP, + .oam = &gOamData_AffineOff_ObjBlend_32x32, + .anims = gCuttingSliceAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimCuttingSlice +}; + +//razor shell +const struct SpriteTemplate gRazorShellTemplate = +{ + .tileTag = ANIM_TAG_RAZOR_SHELL, + .paletteTag = ANIM_TAG_RAZOR_SHELL, + .oam = &gOamData_AffineNormal_ObjBlend_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_ShadowBall, + .callback = SpriteCB_SpriteOnMonForDuration +}; + +//heat crash +const struct SpriteTemplate gHeatCrashEruptionRockTemplate = +{ + .tileTag = ANIM_TAG_WARM_ROCK, + .paletteTag = ANIM_TAG_WARM_ROCK, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimStompFoot +}; + +//leaf tornado +const struct SpriteTemplate gLeafTornadoVortexTemplate = +{ + .tileTag = ANIM_TAG_LEAF, + .paletteTag = ANIM_TAG_LEAF, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gRazorLeafParticleAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimParticleInVortex +}; + +//cotton guard +const struct SpriteTemplate gCottonGuardSporeTemplate = +{ + .tileTag = ANIM_TAG_SPORE, + .paletteTag = ANIM_TAG_SPORE, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gSporeParticleAnimTable, + .images = NULL, + .affineAnims = gPowerAbsorptionOrbAffineAnimTable, + .callback = AnimPowerAbsorptionOrb +}; + +//night daze +const struct SpriteTemplate gNightDazeVioletRingsTemplate = +{ + .tileTag = ANIM_TAG_THIN_RING, + .paletteTag = ANIM_TAG_PURPLE_FLAME, + .oam = &gOamData_AffineDouble_ObjBlend_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gThinRingExpandingAffineAnimTable, + .callback = AnimUproarRing +}; + +const struct SpriteTemplate gNightDazeVioletCirclesTemplate = +{ + .tileTag = ANIM_TAG_RED_ORB, + .paletteTag = ANIM_TAG_PURPLE_FLAME, + .oam = &gOamData_AffineDouble_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gHiddenPowerOrbAffineAnimTable, + .callback = AnimOrbitScatter +}; + +//tail slap +const struct SpriteTemplate gTailSlapTemplate = +{ + .tileTag = ANIM_TAG_PUNISHMENT_BLADES, + .paletteTag = ANIM_TAG_AIR_WAVE_2, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, + .anims = gScratchAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSpriteOnMonPos +}; + +//gear grind +const struct SpriteTemplate gGearGrindTemplate = +{ + .tileTag = ANIM_TAG_GEAR, + .paletteTag = ANIM_TAG_GEAR, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_ShadowBall, + .callback = AnimBite +}; + +//searing shot +const struct SpriteTemplate gSearingShotRedChargeTemplate = +{ + .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, + .paletteTag = ANIM_TAG_JAGGED_MUSIC_NOTE, + .oam = &gOamData_AffineNormal_ObjBlend_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_GrowingElectricOrb, + .callback = AnimGrowingChargeOrb +}; + +const struct SpriteTemplate gSearingShotEruptionRockTemplate = +{ + .tileTag = ANIM_TAG_WARM_ROCK, + .paletteTag = ANIM_TAG_WARM_ROCK, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimOverheatFlame +}; + +static const union AffineAnimCmd sSpriteAffineAnim_SearingShotRock[] = +{ + AFFINEANIMCMD_FRAME(8, 8, 9, 15), + AFFINEANIMCMD_FRAME(-8, -8, 9, 15), + AFFINEANIMCMD_END, +}; +static const union AffineAnimCmd* const sSpriteAffineAnimTable_SearingShotRock[] = +{ + sSpriteAffineAnim_SearingShotRock, +}; +const struct SpriteTemplate gSearingShotEruptionImpactTemplate = +{ + .tileTag = ANIM_TAG_WARM_ROCK, + .paletteTag = ANIM_TAG_WARM_ROCK, + .oam = &gOamData_AffineDouble_ObjNormal_32x32, + .anims = gAnims_HandOrFoot, + .images = NULL, + .affineAnims = sSpriteAffineAnimTable_SearingShotRock, + .callback = SpriteCB_SearingShotRock +}; + +//techno blast +const struct SpriteTemplate gTechnoBlastWhiteChargeTemplate = +{ + .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, + .paletteTag = ANIM_TAG_AIR_WAVE_2, + .oam = &gOamData_AffineNormal_ObjBlend_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_GrowingElectricOrb, + .callback = AnimGrowingChargeOrb +}; +const struct SpriteTemplate gTechnoBlastWhiteCircleTemplate = +{ + .tileTag = ANIM_TAG_ORBS, + .paletteTag = ANIM_TAG_AIR_WAVE_2, + .oam = &gOamData_AffineNormal_ObjBlend_16x16, + .anims = gPowerAbsorptionOrbAnimTable, + .images = NULL, + .affineAnims = gPowerAbsorptionOrbAffineAnimTable, + .callback = AnimPowerAbsorptionOrb +}; +const struct SpriteTemplate gTechnoBlastWhiteBlastTemplate = +{ + .tileTag = ANIM_TAG_BLACK_BALL_2, + .paletteTag = ANIM_TAG_AIR_WAVE_2, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = TranslateAnimSpriteToTargetMonLocation +}; +const struct SpriteTemplate gTechnoBlastWhiteSparkTemplate = +{ + .tileTag = ANIM_TAG_SPARK_2, + .paletteTag = ANIM_TAG_AIR_WAVE_2, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_FlashingSpark, + .callback = AnimZapCannonSpark +}; +const struct SpriteTemplate gTechnoBlastWhiteSmokeTemplate = +{ + .tileTag = ANIM_TAG_GRAY_SMOKE, + .paletteTag = ANIM_TAG_AIR_WAVE_2, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gOctazookaAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSpriteOnMonPos +}; + +const struct SpriteTemplate gTechnoBlastYellowBlastTemplate = +{ + .tileTag = ANIM_TAG_BLACK_BALL_2, + .paletteTag = ANIM_TAG_CIRCLE_OF_LIGHT, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = TranslateAnimSpriteToTargetMonLocation +}; +const struct SpriteTemplate gTechnoBlastYellowSparkTemplate = +{ + .tileTag = ANIM_TAG_SPARK_2, + .paletteTag = ANIM_TAG_CIRCLE_OF_LIGHT, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_FlashingSpark, + .callback = AnimZapCannonSpark +}; +const struct SpriteTemplate gTechnoBlastYellowSmokeTemplate = +{ + .tileTag = ANIM_TAG_GRAY_SMOKE, + .paletteTag = ANIM_TAG_CIRCLE_OF_LIGHT, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gOctazookaAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSpriteOnMonPos +}; + +const struct SpriteTemplate gTechnoBlastBlueChargeTemplate = +{ + .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, + .paletteTag = ANIM_TAG_WATER_ORB, + .oam = &gOamData_AffineNormal_ObjBlend_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_GrowingElectricOrb, + .callback = AnimGrowingChargeOrb +}; +const struct SpriteTemplate gTechnoBlastBlueBubbleTemplate = +{ + .tileTag = ANIM_TAG_BUBBLE, + .paletteTag = ANIM_TAG_BUBBLE, + .oam = &gOamData_AffineNormal_ObjBlend_16x16, + .anims = gAnims_WaterBubbleProjectile, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSmallBubblePair +}; +const struct SpriteTemplate gTechnoBlastBlueBlastTemplate = +{ + .tileTag = ANIM_TAG_BLACK_BALL_2, + .paletteTag = ANIM_TAG_WATER_ORB, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = TranslateAnimSpriteToTargetMonLocation +}; +const struct SpriteTemplate gTechnoBlastBlueSparkTemplate = +{ + .tileTag = ANIM_TAG_SPARK_2, + .paletteTag = ANIM_TAG_WATER_ORB, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_FlashingSpark, + .callback = AnimZapCannonSpark +}; +const struct SpriteTemplate gTechnoBlastBlueSmokeTemplate = +{ + .tileTag = ANIM_TAG_GRAY_SMOKE, + .paletteTag = ANIM_TAG_WATER_ORB, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gOctazookaAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSpriteOnMonPos +}; + +const struct SpriteTemplate gTechnoBlastRedChargeTemplate = +{ + .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, + .paletteTag = ANIM_TAG_SMALL_RED_EYE, + .oam = &gOamData_AffineNormal_ObjBlend_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_GrowingElectricOrb, + .callback = AnimGrowingChargeOrb +}; +const struct SpriteTemplate gTechnoBlastRedBlastTemplate = +{ + .tileTag = ANIM_TAG_BLACK_BALL_2, + .paletteTag = ANIM_TAG_SMALL_RED_EYE, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = TranslateAnimSpriteToTargetMonLocation +}; +const struct SpriteTemplate gTechnoBlastRedSparkTemplate = +{ + .tileTag = ANIM_TAG_SPARK_2, + .paletteTag = ANIM_TAG_JAGGED_MUSIC_NOTE, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_FlashingSpark, + .callback = AnimZapCannonSpark +}; +const struct SpriteTemplate gTechnoBlastRedSmokeTemplate = +{ + .tileTag = ANIM_TAG_GRAY_SMOKE, + .paletteTag = ANIM_TAG_JAGGED_MUSIC_NOTE, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gOctazookaAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSpriteOnMonPos +}; + +const struct SpriteTemplate gTechnoBlastIceChargeTemplate = +{ + .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, + .paletteTag = ANIM_TAG_ICE_CHUNK, + .oam = &gOamData_AffineNormal_ObjBlend_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_GrowingElectricOrb, + .callback = AnimGrowingChargeOrb +}; +const struct SpriteTemplate gTechnoBlastIceBlastTemplate = +{ + .tileTag = ANIM_TAG_BLACK_BALL_2, + .paletteTag = ANIM_TAG_ICE_CHUNK, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = TranslateAnimSpriteToTargetMonLocation +}; +const struct SpriteTemplate gTechnoBlastIceSparkTemplate = +{ + .tileTag = ANIM_TAG_SPARK_2, + .paletteTag = ANIM_TAG_ICE_CHUNK, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_FlashingSpark, + .callback = AnimZapCannonSpark +}; +const struct SpriteTemplate gTechnoBlastIceSmokeTemplate = +{ + .tileTag = ANIM_TAG_GRAY_SMOKE, + .paletteTag = ANIM_TAG_ICE_CHUNK, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gOctazookaAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSpriteOnMonPos +}; +const struct SpriteTemplate gTechnoBlastIceCrystalsTemplate = +{ + .tileTag = ANIM_TAG_ICE_CRYSTALS, + .paletteTag = ANIM_TAG_ICE_CRYSTALS, + .oam = &gOamData_AffineNormal_ObjBlend_8x16, + .anims = gAnims_IceCrystalLarge, + .images = NULL, + .affineAnims = gAffineAnims_HitSplat, + .callback = AnimHitSplatBasic +}; + +//secret sword +const struct SpriteTemplate gSecretSwordBladesTemplate = +{ + .tileTag = ANIM_TAG_PUNISHMENT_BLADES, + .paletteTag = ANIM_TAG_HYDRO_PUMP, + .oam = &gOamData_AffineDouble_ObjNormal_32x32, + .anims = gAnims_DragonBreathFire, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimFireSpread +}; + +//glaciate +const struct SpriteTemplate gGlaciateSmokeTemplate = +{ + .tileTag = ANIM_TAG_BLACK_SMOKE, + .paletteTag = ANIM_TAG_ICE_CHUNK, + .oam = &gOamData_AffineOff_ObjNormal_32x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimBlackSmoke +}; + +//blue flare +const struct SpriteTemplate gBlueFlareFlameJabTemplate = +{ + .tileTag = ANIM_TAG_SMALL_EMBER, + .paletteTag = ANIM_TAG_METAL_BITS, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gAnims_FlamethrowerFlame, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimNeedleArmSpike +}; + +const struct SpriteTemplate gBlueFlareFlameSwirlTemplate = +{ + .tileTag = ANIM_TAG_SMALL_EMBER, + .paletteTag = ANIM_TAG_METAL_BITS, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gAnims_FlamethrowerFlame, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimParticleInVortex +}; + +const struct SpriteTemplate gBlueFlareBurnTemplate = +{ + .tileTag = ANIM_TAG_SMALL_EMBER, + .paletteTag = ANIM_TAG_METAL_BITS, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gAnims_FlamethrowerFlame, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimFireSpread +}; + +//freeze shock +const struct SpriteTemplate gFreezeShockCircleTemplate = +{ + .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, + .paletteTag = ANIM_TAG_CIRCLE_OF_LIGHT, + .oam = &gOamData_AffineNormal_ObjBlend_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_GrowingElectricOrb, + .callback = AnimGrowingShockWaveOrb +}; + +const struct SpriteTemplate gFreezeShockIceBallTemplate = +{ + .tileTag = ANIM_TAG_ICE_CHUNK, + .paletteTag = ANIM_TAG_ICE_CHUNK, + .oam = &gOamData_AffineDouble_ObjNormal_32x32, + .anims = gAnims_IceBallChunk, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = TranslateAnimSpriteToTargetMonLocation +}; + +//ice burn +const struct SpriteTemplate gIceBurnSmokeTemplate = +{ + .tileTag = ANIM_TAG_BLACK_SMOKE, + .paletteTag = ANIM_TAG_ICE_CHUNK, + .oam = &gOamData_AffineOff_ObjNormal_32x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimBlackSmoke +}; + +//icicle crash +static const union AffineAnimCmd sSpriteAffineAnim_IcicleCrash[] = +{ + AFFINEANIMCMD_FRAME(0, 0, 128, 1), //180 degree turn + AFFINEANIMCMD_END +}; +static const union AffineAnimCmd* const sSpriteAffineAnimTable_IcicleCrash[] = +{ + sSpriteAffineAnim_IcicleCrash, +}; +const struct SpriteTemplate gIcicleCrashSpearTemplate = +{ + .tileTag = ANIM_TAG_ICICLE_SPEAR, + .paletteTag = ANIM_TAG_ICICLE_SPEAR, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = sSpriteAffineAnimTable_IcicleCrash, + .callback = AnimFallingRock +}; + +//v create +const struct SpriteTemplate gVCreateFlameTemplate = +{ + .tileTag = ANIM_TAG_SMALL_EMBER, + .paletteTag = ANIM_TAG_SMALL_EMBER, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gAnims_FireBlastCross, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimNeedleArmSpike +}; + +const struct SpriteTemplate gVCreateRedRingTemplate = +{ + .tileTag = ANIM_TAG_THIN_RING, + .paletteTag = ANIM_TAG_JAGGED_MUSIC_NOTE, + .oam = &gOamData_AffineDouble_ObjBlend_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gThinRingShrinkingAffineAnimTable, + .callback = AnimSpriteOnMonPos +}; + +const struct SpriteTemplate gVCreateRedOrbTemplate = +{ + .tileTag = ANIM_TAG_ECLIPSING_ORB, + .paletteTag = ANIM_TAG_JAGGED_MUSIC_NOTE, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gEclipsingOrbAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSpriteOnMonPos +}; + +//fusion flare +const struct SpriteTemplate gFusionFlareRedBallUpTemplate = +{ + .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, + .paletteTag = ANIM_TAG_VERTICAL_HEX, + .oam = &gOamData_AffineNormal_ObjBlend_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimWeatherBallUp +}; + +const struct SpriteTemplate gFusionFlareRedBallTemplate = +{ + .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, + .paletteTag = ANIM_TAG_VERTICAL_HEX, + .oam = &gOamData_AffineNormal_ObjBlend_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimStompFoot +}; + +const struct SpriteTemplate gFusionFlareRedBubblesTemplate = +{ + .tileTag = ANIM_TAG_SMALL_BUBBLES, + .paletteTag = ANIM_TAG_SMALL_BUBBLES, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = gAnims_WaterPulseBubble, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimWaterPulseBubble +}; + +const struct SpriteTemplate gFusionFlareRedRingTemplate = +{ + .tileTag = ANIM_TAG_THIN_RING, + .paletteTag = ANIM_TAG_JAGGED_MUSIC_NOTE, + .oam = &gOamData_AffineDouble_ObjBlend_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gThinRingExpandingAffineAnimTable, + .callback = AnimUproarRing +}; + +//fusion bolt +static const union AffineAnimCmd sSpriteAffineAnim_DrakeStrikePlayer[] = +{ + AFFINEANIMCMD_FRAME(0, 0, 0xb9, 1), //.hword 0,0,0x01b9 + AFFINEANIMCMD_END, //.hword 0,0x7fff,0,0,0 +}; +static const union AffineAnimCmd sSpriteAffineAnim_DrakeStrikeOpponent[] = +{ + AFFINEANIMCMD_FRAME(0, 0, 0x50, 1), //.hword 0,0,0x0150,0, + AFFINEANIMCMD_END, //.hword 0x7fff,0,0,0 +}; +static const union AffineAnimCmd* const sAffineAnimCmdTable_DrakeStriking[] = //devestating drake, fusion bolt +{ + sSpriteAffineAnim_DrakeStrikePlayer, + sSpriteAffineAnim_DrakeStrikeOpponent, +}; +const struct SpriteTemplate gFusionBoltBallTemplate = +{ + .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, + .paletteTag = ANIM_TAG_CIRCLE_OF_LIGHT, + .oam = &gOamData_AffineNormal_ObjNormal_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = sAffineAnimCmdTable_DrakeStriking, + .callback = AnimFlyBallAttack +}; + +//// GEN 6 +//mat block +const struct SpriteTemplate gMatBlockGreenConversionTemplate = +{ + .tileTag = ANIM_TAG_CONVERSION, + .paletteTag = ANIM_TAG_GREEN_LIGHT_WALL, + .oam = &gOamData_AffineDouble_ObjBlend_8x8, + .anims = gConversionAnimTable, + .images = NULL, + .affineAnims = gConversionAffineAnimTable, + .callback = AnimConversion +}; + +//belch +static const union AnimCmd sAnimCmdBerryEaten[] = +{ + ANIMCMD_FRAME(16, 3), + ANIMCMD_END, +}; +static const union AnimCmd *const sAnimCmdFramesBerryEaten[] = +{ + sAnimCmdBerryEaten, +}; +const struct SpriteTemplate gBelchBerryTemplate = +{ + .tileTag = ANIM_TAG_BERRY_NORMAL, + .paletteTag = ANIM_TAG_BERRY_NORMAL, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, + .anims = sAnimCmdFramesBerryEaten, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimMissileArc +}; + +//forest's curse +const struct SpriteTemplate gForestsCurseIngrainTemplate = +{ + .tileTag = ANIM_TAG_ROOTS, + .paletteTag = ANIM_TAG_ROOTS, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gIngrainRootAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimWaterPulseBubble +}; + +//petal blizzard +/* +PB_TEMPLATE_1: .hword 0x0,0xa,0xfffe,0x0 + 00 00 00 0A FE FF 00 00 +*/ +static const union AnimCmd sAnimCmd_PetalBlizzard1_0[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_JUMP(0), +}; +static const union AnimCmd *const sAnimCmdTable_PetalBlizzard1[] = +{ + sAnimCmd_PetalBlizzard1_0, +}; +const struct SpriteTemplate gPetalBlizzardTwister1Template = +{ + .tileTag = ANIM_TAG_FLOWER, + .paletteTag = ANIM_TAG_FLOWER, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = sAnimCmdTable_PetalBlizzard1, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimMoveTwisterParticle +}; +static const u16 sPetalBlizzardFlowerOam[] = {0x0, 0x2000,0x0800,0x0}; //todo: convert to oam data +static const union AnimCmd sAnimCmd_PetalBlizzard2_0[] = +{ + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(4, 0), + ANIMCMD_END, +}; +static const union AnimCmd *const sAnimCmdTable_PetalBlizzard2[] = +{ + sAnimCmd_PetalBlizzard2_0, +}; +const struct SpriteTemplate gPetalBlizzardTwister2Template = +{ + .tileTag = ANIM_TAG_FLOWER, + .paletteTag = ANIM_TAG_FLOWER, + .oam = (const struct OamData *) &sPetalBlizzardFlowerOam, + .anims = sAnimCmdTable_PetalBlizzard2, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimMoveTwisterParticle +}; + +//crafty shield +const struct SpriteTemplate gCraftyShieldPinkConversionTemplate = +{ + .tileTag = ANIM_TAG_CRAFTY_SHIELD, + .paletteTag = ANIM_TAG_CRAFTY_SHIELD, + .oam = &gOamData_AffineDouble_ObjBlend_8x8, + .anims = gConversionAnimTable, + .images = NULL, + .affineAnims = gConversionAffineAnimTable, + .callback = AnimConversion +}; + +//grassy terrain +const struct SpriteTemplate gGrassyTerrainOrbsTemplate = +{ + .tileTag = ANIM_TAG_ORBS, + .paletteTag = ANIM_TAG_ORBS, + .oam = &gOamData_AffineNormal_ObjBlend_16x16, + .anims = gPowerAbsorptionOrbAnimTable, + .images = NULL, + .affineAnims = gPowerAbsorptionOrbAffineAnimTable, + .callback = AnimOrbitFast +}; + +const struct SpriteTemplate gGrassyTerrainStarTemplate = +{ + .tileTag = ANIM_TAG_GREEN_SPARKLE, + .paletteTag = ANIM_TAG_GREEN_SPARKLE, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gMoonlightSparkleAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimOrbitScatter +}; + +//misty terrain +const struct SpriteTemplate gMistyTerrainOrbsTemplate = +{ + .tileTag = ANIM_TAG_ORBS, + .paletteTag = ANIM_TAG_WATER_GUN, + .oam = &gOamData_AffineNormal_ObjBlend_16x16, + .anims = gPowerAbsorptionOrbAnimTable, + .images = NULL, + .affineAnims = gPowerAbsorptionOrbAffineAnimTable, + .callback = AnimOrbitFast +}; + +const struct SpriteTemplate gMistyTerrainStarTemplate = +{ + .tileTag = ANIM_TAG_GREEN_SPARKLE, + .paletteTag = ANIM_TAG_WATER_GUN, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gMoonlightSparkleAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimOrbitScatter +}; + +//electrify +const struct SpriteTemplate gElectrifyRingTemplate = +{ + .tileTag = ANIM_TAG_GUARD_RING, + .paletteTag = ANIM_TAG_SPARK_2, + .oam = &gOamData_AffineDouble_ObjBlend_64x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gGuardRingAffineAnimTable, + .callback = SpriteCB_SurroundingRing +}; + +const struct SpriteTemplate gElectrifyYellowRingTemplate = +{ + .tileTag = ANIM_TAG_THIN_RING, + .paletteTag = ANIM_TAG_SMALL_EMBER, + .oam = &gOamData_AffineDouble_ObjBlend_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gThinRingExpandingAffineAnimTable, + .callback = AnimUproarRing +}; + +//fairy wind +const struct SpriteTemplate gFairyWindCloudTemplate = +{ + .tileTag = ANIM_TAG_PINK_CLOUD, + .paletteTag = ANIM_TAG_PINK_CLOUD, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gSwiftStarAffineAnimTable, + .callback = AnimTranslateLinearSingleSineWave +}; + +//confide +const struct SpriteTemplate gConfideBubbleTemplate = +{ + .tileTag = ANIM_TAG_CONFIDE, + .paletteTag = ANIM_TAG_CONFIDE, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gMetronomeThroughtBubbleAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimThoughtBubble +}; + +//diamond storm +const struct SpriteTemplate gDiamondStormSwirlingIceTemplate = +{ + .tileTag = ANIM_TAG_ICE_CRYSTALS, + .paletteTag = ANIM_TAG_ICE_CRYSTALS, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = gAnims_Snowball, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSwirlingSnowball_Step1 +}; + +const struct SpriteTemplate gDiamondStormBlizzardTemplate = +{ + .tileTag = ANIM_TAG_ICE_CRYSTALS, + .paletteTag = ANIM_TAG_ICE_CRYSTALS, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gAnims_BlizzardIceCrystal, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimMoveParticleBeyondTarget +}; + +const struct SpriteTemplate gDiamondStormDiamondsTemplate = +{ + .tileTag = ANIM_TAG_ICE_CRYSTALS, + .paletteTag = ANIM_TAG_ICE_CRYSTALS, + .oam = &gOamData_AffineNormal_ObjBlend_8x16, + .anims = gAnims_IceCrystalLarge, + .images = NULL, + .affineAnims = gAffineAnims_BasicRock, + .callback = AnimMoveTwisterParticle +}; + +//steam eruption +const struct SpriteTemplate gSteamEruptionBreathTemplate = +{ + .tileTag = ANIM_TAG_STEAM_ERUPTION, + .paletteTag = ANIM_TAG_STEAM_ERUPTION, + .oam = &gOamData_AffineDouble_ObjNormal_32x32, + .anims = gAnims_DragonBreathFire, + .images = NULL, + .affineAnims = gAffineAnims_DragonBreathFire, + .callback = AnimDragonFireToTarget +}; + +//hyperspace hole +const struct SpriteTemplate gHyperspaceHoleImpactTemplate = +{ + .tileTag = ANIM_TAG_IMPACT, + .paletteTag = ANIM_TAG_POISON_BUBBLE, + .oam = &gOamData_AffineNormal_ObjBlend_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_IceCrystalHit, + .callback = AnimIceEffectParticle +}; + +//water shuriken +const struct SpriteTemplate gWaterShurikenStarTemplate = +{ + .tileTag = ANIM_TAG_YELLOW_STAR, + .paletteTag = ANIM_TAG_WATER_ORB, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_ShadowBall, + .callback = AnimShadowBall +}; + +const struct SpriteTemplate gWaterShurikenRingTemplate = +{ + .tileTag = ANIM_TAG_BLUE_RING_2, + .paletteTag = ANIM_TAG_WATER_ORB, + .oam = &gOamData_AffineDouble_ObjNormal_16x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gWaterPulseRingAffineAnimTable, + .callback = AnimWaterPulseRing +}; + +const struct SpriteTemplate gWaterShurikenImpactTemplate = +{ + .tileTag = ANIM_TAG_IMPACT, + .paletteTag = ANIM_TAG_WATER_ORB, + .oam = &gOamData_AffineNormal_ObjBlend_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_HitSplat, + .callback = AnimHitSplatBasic +}; + +//eerie impulse +const struct SpriteTemplate gEerieImpulseRingTemplate = +{ + .tileTag = ANIM_TAG_THIN_RING, + .paletteTag = ANIM_TAG_SPARK_2, + .oam = &gOamData_AffineDouble_ObjBlend_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gHyperVoiceRingAffineAnimTable, + .callback = AnimHyperVoiceRing +}; + +const struct SpriteTemplate gEerieImpulseImpactTemplate = +{ + .tileTag = ANIM_TAG_GOLD_RING, + .paletteTag = ANIM_TAG_SPARK_H, + .oam = &gOamData_AffineOff_ObjNormal_16x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimGrantingStars +}; + +//venom drench +const struct SpriteTemplate gVenomDrenchAcidTemplate = +{ + .tileTag = ANIM_TAG_POISON_BUBBLE, + .paletteTag = ANIM_TAG_POISON_BUBBLE, + .oam = &gOamData_AffineDouble_ObjNormal_16x16, + .anims = gAnims_PoisonProjectile, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimFallingRock +}; + +//powder +const struct SpriteTemplate gPowderBlackSporeTemplate = +{ + .tileTag = ANIM_TAG_SPORE, + .paletteTag = ANIM_TAG_HANDS_AND_FEET, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gSporeParticleAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSporeParticle +}; + +//geomancy +const struct SpriteTemplate gGeomancyRingTemplate = +{ + .tileTag = ANIM_TAG_GUARD_RING, + .paletteTag = ANIM_TAG_GUARD_RING, + .oam = &gOamData_AffineDouble_ObjBlend_64x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gGuardRingAffineAnimTable, + .callback = SpriteCB_SurroundingRing +}; + +const struct SpriteTemplate gGeomancyYellowRageTemplate = +{ + .tileTag = ANIM_TAG_FIRE_PLUME, + .paletteTag = ANIM_TAG_PAW_PRINT, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gAnims_DragonRageFirePlume, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimDragonRageFirePlume +}; + +const struct SpriteTemplate gGeomancyRedCellVortexTemplate = +{ + .tileTag = ANIM_TAG_ZYGARDE_HEXES, + .paletteTag = ANIM_TAG_SMALL_EMBER, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gRazorLeafParticleAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimParticleInVortex +}; + +const struct SpriteTemplate gGeomancyGreenCellVortexTemplate = +{ + .tileTag = ANIM_TAG_ZYGARDE_HEXES, + .paletteTag = ANIM_TAG_WHIP_HIT, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gRazorLeafParticleAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimParticleInVortex +}; + +const struct SpriteTemplate gGeomancyBlueCellVortexTemplate = +{ + .tileTag = ANIM_TAG_ZYGARDE_HEXES, + .paletteTag = ANIM_TAG_SWEAT_BEAD, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gRazorLeafParticleAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimParticleInVortex +}; + +const struct SpriteTemplate gGeomancyRedCellRaiseTemplate = +{ + .tileTag = ANIM_TAG_ZYGARDE_HEXES, + .paletteTag = ANIM_TAG_SMALL_EMBER, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gRazorLeafParticleAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimRaiseSprite +}; + +const struct SpriteTemplate gGeomancyGreenCellRaiseTemplate = +{ + .tileTag = ANIM_TAG_ZYGARDE_HEXES, + .paletteTag = ANIM_TAG_WHIP_HIT, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gRazorLeafParticleAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimRaiseSprite +}; + +const struct SpriteTemplate gGeomancyBlueCellRaiseTemplate = +{ + .tileTag = ANIM_TAG_ZYGARDE_HEXES, + .paletteTag = ANIM_TAG_SWEAT_BEAD, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gRazorLeafParticleAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimRaiseSprite +}; + +//magnetic flux +const struct SpriteTemplate gMagneticFluxUproarTemplate = +{ + .tileTag = ANIM_TAG_THIN_RING, + .paletteTag = ANIM_TAG_SMALL_EMBER, + .oam = &gOamData_AffineDouble_ObjBlend_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gThinRingExpandingAffineAnimTable, + .callback = AnimUproarRing +}; + +//happy hour +const struct SpriteTemplate gHappyHourCoinShowerTemplate = +{ + .tileTag = ANIM_TAG_COIN, + .paletteTag = ANIM_TAG_COIN, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, + .anims = gCoinAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimHappyHourCoinShower +}; + +//electric terrain +const struct SpriteTemplate gElectricTerrainOrbsTemplate = +{ + .tileTag = ANIM_TAG_ELECTRIC_ORBS, + .paletteTag = ANIM_TAG_ELECTRIC_ORBS, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = gAnims_ElectricChargingParticles, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimOrbitFast +}; + +const struct SpriteTemplate gElectricTerrainFlyingBallTemplate = +{ + .tileTag = ANIM_TAG_ELECTRIC_ORBS, + .paletteTag = ANIM_TAG_ELECTRIC_ORBS, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = gAnims_ElectricChargingParticles, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimOrbitScatter +}; + +//celebrate +const struct SpriteTemplate gCelebrateBagTemplate = +{ + .tileTag = ANIM_TAG_ITEM_BAG, + .paletteTag = ANIM_TAG_ITEM_BAG, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gMetronomeFingerAffineAnimTable, + .callback = AnimFollowMeFinger +}; + +//hold hands +const struct SpriteTemplate gHoldHandsHeartTemplate = +{ + .tileTag = ANIM_TAG_MAGENTA_HEART, + .paletteTag = ANIM_TAG_VERTICAL_HEX, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimPetalDanceBigFlower +}; + +//hold back +const struct SpriteTemplate gHoldBackSwipeTemplate = +{ + .tileTag = ANIM_TAG_PURPLE_SWIPE, + .paletteTag = ANIM_TAG_PAW_PRINT, + .oam = &gOamData_AffineOff_ObjNormal_64x64, + .anims = gAnims_RevengeBigScratch, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimRevengeScratch +}; + +const struct SpriteTemplate gHoldBackRingTemplate = +{ + .tileTag = ANIM_TAG_THIN_RING, + .paletteTag = ANIM_TAG_PAW_PRINT, + .oam = &gOamData_AffineDouble_ObjNormal_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gThinRingExpandingAffineAnimTable, + .callback = AnimSpriteOnMonPos +}; + +const struct SpriteTemplate gHoldBackStarsTemplate = +{ + .tileTag = ANIM_TAG_PAIN_SPLIT, + .paletteTag = ANIM_TAG_DUCK, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimDizzyPunchDuck +}; + +//infestation +const struct SpriteTemplate gInfestationBubbleTemplate = +{ + .tileTag = ANIM_TAG_SMALL_BUBBLES, + .paletteTag = ANIM_TAG_HANDS_AND_FEET, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = gAnims_WaterPulseBubble, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimParticleInVortex +}; + +//oblivion wing +static const union AffineAnimCmd sSpriteAffineAnim_GrowingRing[] = +{ + AFFINEANIMCMD_FRAME(8, 8, 0, 16), //Double in size + AFFINEANIMCMD_END, +}; +static const union AffineAnimCmd* const sSpriteAffineAnimTable_GrowingRing[] = +{ + sSpriteAffineAnim_GrowingRing, +}; +const struct SpriteTemplate gOblivionWingBeamTemplate = +{ + .tileTag = ANIM_TAG_HYDRO_PUMP, + .paletteTag = ANIM_TAG_HYDRO_PUMP, + .oam = &gOamData_AffineDouble_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = sSpriteAffineAnimTable_GrowingRing, + .callback = TranslateAnimSpriteToTargetMonLocation +}; + +//thousand arrows +const struct SpriteTemplate gThousandArrowsGreenChargeTemplate = +{ + .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, + .paletteTag = ANIM_TAG_LEAF, + .oam = &gOamData_AffineNormal_ObjBlend_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_GrowingElectricOrb, + .callback = AnimGrowingChargeOrb +}; + +const struct SpriteTemplate gThousandArrowsGreenHexTemplate = +{ + .tileTag = ANIM_TAG_VERTICAL_HEX, + .paletteTag = ANIM_TAG_ZYGARDE_HEXES, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gRazorLeafParticleAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_Geyser +}; + +const struct SpriteTemplate gThousandArrowsGreenArrowTemplate = +{ + .tileTag = ANIM_TAG_NEEDLE, + .paletteTag = ANIM_TAG_LEAF, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimMudSportDirt +}; + +const struct SpriteTemplate gThousandArrowsGreenDischargeTemplate = +{ + .tileTag = ANIM_TAG_ELECTRICITY, + .paletteTag = ANIM_TAG_RAZOR_LEAF, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gAnims_ElectricPuff, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimElectricPuff +}; + +//thousand waves +const struct SpriteTemplate gThousandWavesGreenWaveTemplate = +{ + .tileTag = ANIM_TAG_FLYING_DIRT, + .paletteTag = ANIM_TAG_LEAF, + .oam = &gOamData_AffineOff_ObjNormal_32x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimFlyingSandCrescent +}; + +const struct SpriteTemplate gThousandWavesGreenRecoverTemplate = +{ + .tileTag = ANIM_TAG_ZYGARDE_HEXES, + .paletteTag = ANIM_TAG_ZYGARDE_HEXES, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gRazorLeafParticleAnimTable, + .images = NULL, + .affineAnims = gPowerAbsorptionOrbAffineAnimTable, + .callback = AnimPowerAbsorptionOrb +}; + +const struct SpriteTemplate gThousandWavesGreenWheelTemplate = +{ + .tileTag = ANIM_TAG_ZYGARDE_HEXES, + .paletteTag = ANIM_TAG_ZYGARDE_HEXES, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gRazorLeafParticleAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimDragonDanceOrb +}; + +const struct SpriteTemplate gThousandWavesRotatingImpactTemplate = +{ + .tileTag = ANIM_TAG_ZYGARDE_HEXES, + .paletteTag = ANIM_TAG_ZYGARDE_HEXES, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gRazorLeafParticleAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_Whirlpool, + .callback = AnimParticleInVortex +}; + +const struct SpriteTemplate gThousandWavesPoundImpactTemplate = +{ + .tileTag = ANIM_TAG_IMPACT, + .paletteTag = ANIM_TAG_LEAF, + .oam = &gOamData_AffineNormal_ObjBlend_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_HitSplat, + .callback = AnimHitSplatOnMonEdge +}; + +//lands wrath +const struct SpriteTemplate gLandsWrathVortexTemplate = +{ + .tileTag = ANIM_TAG_WATER_ORB, + .paletteTag = ANIM_TAG_SPARK_2, + .oam = &gOamData_AffineNormal_ObjBlend_16x16, + .anims = gAnims_WaterMudOrb, + .images = NULL, + .affineAnims = gAffineAnims_Whirlpool, + .callback = AnimParticleInVortex +}; + +//light of ruin +const struct SpriteTemplate gLightOfRuinPinkOrbsTemplate = +{ + .tileTag = ANIM_TAG_ORBS, + .paletteTag = ANIM_TAG_PINK_PETAL, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = gSolarbeamBigOrbAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimHyperBeamOrb +}; +const struct SpriteTemplate gLightOfRuinPinkDischargeTemplate = +{ + .tileTag = ANIM_TAG_ELECTRICITY, + .paletteTag = ANIM_TAG_PINK_PETAL, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gAnims_ElectricPuff, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimElectricPuff +}; + +const struct SpriteTemplate gLightOfRuinPinkExplosionTemplate = +{ + .tileTag = ANIM_TAG_EXPLOSION, + .paletteTag = ANIM_TAG_PINK_PETAL, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gExplosionAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSpriteOnMonPos +}; + +//origin pulse +const struct SpriteTemplate gOriginPulseRingTemplate = +{ + .tileTag = ANIM_TAG_THIN_RING, + .paletteTag = ANIM_TAG_WATER_ORB, + .oam = &gOamData_AffineDouble_ObjBlend_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gThinRingExpandingAffineAnimTable, + .callback = AnimUproarRing +}; + +const struct SpriteTemplate gOriginPulseOrbTemplate = +{ + .tileTag = ANIM_TAG_ORBS, + .paletteTag = ANIM_TAG_WATER_ORB, + .oam = &gOamData_AffineNormal_ObjBlend_16x16, + .anims = gPowerAbsorptionOrbAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimDragonDanceOrb +}; + +const struct SpriteTemplate gOriginPulseOrbInwardTemplate = +{ + .tileTag = ANIM_TAG_ORBS, + .paletteTag = ANIM_TAG_WATER_ORB, + .oam = &gOamData_AffineNormal_ObjBlend_16x16, + .anims = gPowerAbsorptionOrbAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimNeedleArmSpike +}; + +const struct SpriteTemplate gOriginPulseBlueImpactTemplate = +{ + .tileTag = ANIM_TAG_IMPACT, + .paletteTag = ANIM_TAG_WATER_ORB, + .oam = &gOamData_AffineNormal_ObjBlend_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_HitSplat, + .callback = AnimHitSplatRandom +}; + +const struct SpriteTemplate gOriginPulseBasicSplatTemplate = +{ + .tileTag = ANIM_TAG_IMPACT, + .paletteTag = ANIM_TAG_WATER_ORB, + .oam = &gOamData_AffineNormal_ObjBlend_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_HitSplat, + .callback = AnimHitSplatBasic +}; + +//precipice blades +static const union AnimCmd sAnimCmdLargeSpike[] = +{ + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(32, 3), + ANIMCMD_FRAME(64, 3), + ANIMCMD_FRAME(96, 3), + ANIMCMD_END, +}; +static const union AnimCmd *const sAnimCmdTable_LargeSpike[] = +{ + sAnimCmdLargeSpike, +}; +const struct SpriteTemplate gPrecipiceBladesSpikeTemplate = +{ + .tileTag = ANIM_TAG_LARGE_SPIKE, + .paletteTag = ANIM_TAG_LARGE_SPIKE, + .oam = &gOamData_AffineOff_ObjNormal_32x64, + .anims = sAnimCmdTable_LargeSpike, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_SpriteOnMonForDuration +}; + +static const union AffineAnimCmd sSpriteAffineAnim_LargeHailRock[] = +{ + AFFINEANIMCMD_FRAME(256, 256, 0, 1), //Double sprite size + AFFINEANIMCMD_END, +}; +static const union AffineAnimCmd* const sSpriteAffineAnimTable_LargeHailRock[] = +{ + sSpriteAffineAnim_LargeHailRock, +}; +const struct SpriteTemplate gPrecipiceBladesLargeSpikeTemplate = +{ + .tileTag = ANIM_TAG_LARGE_SPIKE, + .paletteTag = ANIM_TAG_LARGE_SPIKE, + .oam = &gOamData_AffineDouble_ObjNormal_32x64, + .anims = sAnimCmdTable_LargeSpike, + .images = NULL, + .affineAnims = sSpriteAffineAnimTable_LargeHailRock, + .callback = SpriteCB_SpriteOnMonForDuration +}; + +const struct SpriteTemplate gPrecipiceBladesPlumeTemplate = +{ + .tileTag = ANIM_TAG_FIRE_PLUME, + .paletteTag = ANIM_TAG_FIRE_PLUME, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gAnims_DragonRageFirePlume, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_AnimSpriteOnSelectedMonPos +}; + +//dragon ascent +static const union AffineAnimCmd sAffineAnimCmd_Drake[] = +{ + AFFINEANIMCMD_FRAME(0, 0, 0, 1), //drake faces up + AFFINEANIMCMD_END, +}; +static const union AffineAnimCmd* const sAffineAnimCmdTable_DrakeFaceNorth[] = +{ + sAffineAnimCmd_Drake, + sAffineAnimCmd_Drake, +}; +const struct SpriteTemplate gDragonAscentFlyUpTemplate = +{ + .tileTag = ANIM_TAG_DRAGON_ASCENT, + .paletteTag = ANIM_TAG_DRAGON_ASCENT, + .oam = &gOamData_AffineNormal_ObjNormal_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = sAffineAnimCmdTable_DrakeFaceNorth, + .callback = AnimParticleInVortex +}; + +const struct SpriteTemplate gDragonAscentDrakeTemplate = +{ + .tileTag = ANIM_TAG_DRAGON_ASCENT, + .paletteTag = ANIM_TAG_DRAGON_ASCENT, + .oam = &gOamData_AffineNormal_ObjNormal_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = sAffineAnimCmdTable_DrakeStriking, + .callback = AnimFlyBallAttack +}; + +//hyperspace fury +const struct SpriteTemplate gHyperspaceFuryRingTemplate = +{ + .tileTag = ANIM_TAG_HOOPA_RING, + .paletteTag = ANIM_TAG_HOOPA_RING, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_ShadowBall, + .callback = AnimFireSpiralOutward +}; + +const struct SpriteTemplate gHyperspaceFuryHandTemplate = +{ + .tileTag = ANIM_TAG_HOOPA_HAND, + .paletteTag = ANIM_TAG_HOOPA_HAND, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimNeedleArmSpike +}; + +const struct SpriteTemplate gHyperspaceFuryImpactTemplate = +{ + .tileTag = ANIM_TAG_IMPACT, + .paletteTag = ANIM_TAG_POISON_BUBBLE, + .oam = &gOamData_AffineNormal_ObjBlend_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_HitSplat, + .callback = AnimHitSplatRandom +}; + +//// GEN 7 +//first impression +const struct SpriteTemplate gFirstImpressionPoundTemplate = +{ + .tileTag = ANIM_TAG_IMPACT, + .paletteTag = ANIM_TAG_RAZOR_LEAF, + .oam = &gOamData_AffineNormal_ObjBlend_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_HitSplat, + .callback = AnimHitSplatBasic +}; + +//baneful bunker +const struct SpriteTemplate gBanefulBunkerPoisonBubbleTemplate = +{ + .tileTag = ANIM_TAG_POISON_BUBBLE, + .paletteTag = ANIM_TAG_POISON_BUBBLE, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, + .anims = gAnims_PoisonProjectile, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSmallBubblePair +}; + +//spirit shackle +const struct SpriteTemplate gSpiritShackleArrowTemplate = +{ + .tileTag = ANIM_TAG_SPIRIT_ARROW, + .paletteTag = ANIM_TAG_SPIRIT_ARROW, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSonicBoomProjectile +}; + +const struct SpriteTemplate gSpiritShackleChainTemplate = +{ + .tileTag = ANIM_TAG_CHAIN_LINK, + .paletteTag = ANIM_TAG_CHAIN_LINK, + .oam = &gOamData_AffineOff_ObjNormal_32x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimThunderWave +}; + +//darkest lariat +const struct SpriteTemplate gDarkestLariatImpactTemplate = +{ + .tileTag = ANIM_TAG_IMPACT, + .paletteTag = ANIM_TAG_POISON_BUBBLE, + .oam = &gOamData_AffineNormal_ObjBlend_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_HitSplat, + .callback = AnimHitSplatBasic +}; + +//sparklig aria +const struct SpriteTemplate gSparklingAriaBlueChargeTemplate = +{ + .tileTag = ANIM_TAG_WATER_ORB, + .paletteTag = ANIM_TAG_WATER_ORB, + .oam = &gOamData_AffineDouble_ObjBlend_16x16, + .anims = gAnims_WaterMudOrb, + .images = NULL, + .affineAnims = gAffineAnims_GrowingElectricOrb, + .callback = AnimGrowingChargeOrb +}; + +const struct SpriteTemplate gSparklingAriaRainTemplate = +{ + .tileTag = ANIM_TAG_HYDRO_PUMP, + .paletteTag = ANIM_TAG_HYDRO_PUMP, + .oam = &gOamData_AffineOff_ObjBlend_16x16, + .anims = gAnims_WaterBubbleProjectile, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimMudSportDirt +}; + +const struct SpriteTemplate gSparklingAriaBubbleRainTemplate = +{ + .tileTag = ANIM_TAG_BUBBLE, + .paletteTag = ANIM_TAG_BUBBLE, + .oam = &gOamData_AffineOff_ObjBlend_16x16, + .anims = gAnims_WaterBubbleProjectile, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimMudSportDirt +}; + +const struct SpriteTemplate gSparklingAriaBubblesTemplate = +{ + .tileTag = ANIM_TAG_BUBBLE, + .paletteTag = ANIM_TAG_BUBBLE, + .oam = &gOamData_AffineOff_ObjBlend_16x16, + .anims = gAnims_WaterBubbleProjectile, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSmallBubblePair +}; + +//ice hammer +const struct SpriteTemplate gIceHammerPunchStompTemplate = +{ + .tileTag = ANIM_TAG_HORSESHOE_SIDE_FIST, + .paletteTag = ANIM_TAG_HORSESHOE_SIDE_FIST, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gAnims_HandOrFoot, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimStompFoot +}; + +const struct SpriteTemplate gIceHammerSmokesTemplate = +{ + .tileTag = ANIM_TAG_BLACK_SMOKE, + .paletteTag = ANIM_TAG_ECLIPSING_ORB, + .oam = &gOamData_AffineOff_ObjNormal_32x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimBlackSmoke +}; + +//floral healing +const struct SpriteTemplate gFloralHealingFlowerTemplate = +{ + .tileTag = ANIM_TAG_FLOWER, + .paletteTag = ANIM_TAG_FLOWER, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gPetalDanceBigFlowerAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSporeParticle +}; + +const struct SpriteTemplate gFloralHealingOrbsTemplate = +{ + .tileTag = ANIM_TAG_ORBS, + .paletteTag = ANIM_TAG_ORBS, + .oam = &gOamData_AffineNormal_ObjBlend_16x16, + .anims = gPowerAbsorptionOrbAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_Whirlpool, + .callback = AnimParticleInVortex +}; + +const struct SpriteTemplate gFloralHealingLeavesTemplate = +{ + .tileTag = ANIM_TAG_LEAF, + .paletteTag = ANIM_TAG_LEAF, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gRazorLeafParticleAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_Whirlpool, + .callback = AnimParticleInVortex +}; + +const struct SpriteTemplate gFloralHealingWindLeavesTemplate = +{ + .tileTag = ANIM_TAG_LEAF, + .paletteTag = ANIM_TAG_LEAF, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gRazorLeafParticleAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSweetScentPetal +}; + +//high horsepower +const struct SpriteTemplate gHighHorsepowerHorseshoeTemplate = +{ + .tileTag = ANIM_TAG_HORSESHOE_SIDE_FIST, + .paletteTag = ANIM_TAG_HORSESHOE_SIDE_FIST, + .oam = &gOamData_AffineDouble_ObjNormal_32x32, + .anims = gAnims_HandOrFoot, + .images = NULL, + .affineAnims = gAffineAnims_MegaPunchKick, + .callback = AnimSpinningKickOrPunch +}; + +//strength sap +const struct SpriteTemplate gStrengthSapRedSmokeTemplate = +{ + .tileTag = ANIM_TAG_GRAY_SMOKE, + .paletteTag = ANIM_TAG_RED_HEART, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gOctazookaAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSpriteOnMonPos +}; + +const struct SpriteTemplate gStrengthSapRedInwardTemplate = +{ + .tileTag = ANIM_TAG_TEAL_ALERT, + .paletteTag = ANIM_TAG_RED_HEART, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimTealAlert +}; + +const struct SpriteTemplate gStrengthSapAbsorbTemplate = +{ + .tileTag = ANIM_TAG_ORBS, + .paletteTag = ANIM_TAG_PINK_PETAL, + .oam = &gOamData_AffineNormal_ObjBlend_16x16, + .anims = gPowerAbsorptionOrbAnimTable, + .images = NULL, + .affineAnims = gAbsorptionOrbAffineAnimTable, + .callback = AnimAbsorptionOrb +}; + +//solar blade +const struct SpriteTemplate gSolarBladeImpactTemplate = +{ + .tileTag = ANIM_TAG_CLAW_SLASH, + .paletteTag = ANIM_TAG_SPARK_2, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gAnims_ClawSlash, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimClawSlash +}; + +//leafage +const struct SpriteTemplate gLeafageImpactTemplate = +{ + .tileTag = ANIM_TAG_IMPACT, + .paletteTag = ANIM_TAG_RAZOR_LEAF, + .oam = &gOamData_AffineNormal_ObjBlend_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_HitSplat, + .callback = AnimHitSplatBasic +}; + +//toxic thread +const struct SpriteTemplate gToxicThreadString = +{ + .tileTag = ANIM_TAG_STRING, + .paletteTag = ANIM_TAG_STRING, + .oam = &gOamData_AffineOff_ObjNormal_64x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_ToxicThreadWrap +}; + +//laser focus +const struct SpriteTemplate gLaserFocusRedEyesTemplate = +{ + .tileTag = ANIM_TAG_OPENING_EYE, + .paletteTag = ANIM_TAG_EYE_SPARKLE, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gOpeningEyeAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSpriteOnMonPos +}; + +//gear up +const struct SpriteTemplate gGearUpGearsTemplate = +{ + .tileTag = ANIM_TAG_GEAR, + .paletteTag = ANIM_TAG_GEAR, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimPetalDanceBigFlower +}; + +//throat chop +const struct SpriteTemplate gThroatChopRedImpactTemplate = +{ + .tileTag = ANIM_TAG_IMPACT, + .paletteTag = ANIM_TAG_SMALL_RED_EYE, + .oam = &gOamData_AffineNormal_ObjBlend_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_HitSplat, + .callback = AnimHitSplatBasic +}; + +//pollen puff +const struct SpriteTemplate gPollenPuffPinkStarTemplate = +{ + .tileTag = ANIM_TAG_SPARKLE_2, + .paletteTag = ANIM_TAG_PINK_PETAL, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gGrantingStarsAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSmallBubblePair +}; + +const struct SpriteTemplate gPollenPuffPinkSparkleTemplate = +{ + .tileTag = ANIM_TAG_SPARKLE_2, + .paletteTag = ANIM_TAG_PINK_PETAL, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gGrantingStarsAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_FlashingSpark, + .callback = AnimZapCannonSpark +}; + +const struct SpriteTemplate gPollenPuffYellowSparkleTemplate = +{ + .tileTag = ANIM_TAG_SPARKLE_2, + .paletteTag = ANIM_TAG_SMALL_EMBER, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gGrantingStarsAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_FlashingSpark, + .callback = AnimZapCannonSpark +}; + +const struct SpriteTemplate gPollenPuffSporeTemplate = +{ + .tileTag = ANIM_TAG_SPORE, + .paletteTag = ANIM_TAG_SPORE, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gSporeParticleAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimThrowProjectile +}; + +const struct SpriteTemplate gPollenPuffImpactTemplates = +{ + .tileTag = ANIM_TAG_ORBS, + .paletteTag = ANIM_TAG_FLAT_ROCK, + .oam = &gOamData_AffineNormal_ObjBlend_16x16, + .anims = gPowerAbsorptionOrbAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimNeedleArmSpike +}; + +const struct SpriteTemplate gPollenPuffHealTemplate = +{ + .tileTag = ANIM_TAG_BLUE_STAR, + .paletteTag = ANIM_TAG_PINK_PETAL, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gHealingBlueStarAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSpriteOnMonPos +}; + +//anchor shot +const struct SpriteTemplate gAnchorShotAnchorTemplate = +{ + .tileTag = ANIM_TAG_ANCHOR, + .paletteTag = ANIM_TAG_CHAIN_LINK, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimBlockX +}; + +const struct SpriteTemplate gAnchorShotAngledAnchorTemplate = +{ + .tileTag = ANIM_TAG_ANCHOR, + .paletteTag = ANIM_TAG_CHAIN_LINK, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_ShadowBall, + .callback = AnimShadowBall +}; + +//psychic terrain +const struct SpriteTemplate gPsychicTerrainOrbsTemplate = +{ + .tileTag = ANIM_TAG_ORBS, + .paletteTag = ANIM_TAG_POISON_BUBBLE, + .oam = &gOamData_AffineNormal_ObjBlend_16x16, + .anims = gPowerAbsorptionOrbAnimTable, + .images = NULL, + .affineAnims = gPowerAbsorptionOrbAffineAnimTable, + .callback = AnimOrbitFast +}; + +const struct SpriteTemplate gPsychicTerrainStarTemplate = +{ + .tileTag = ANIM_TAG_GREEN_SPARKLE, + .paletteTag = ANIM_TAG_POISON_BUBBLE, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gMoonlightSparkleAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimOrbitScatter +}; + +//lunge +const struct SpriteTemplate gLungeGreenChargeTemplate = +{ + .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, + .paletteTag = ANIM_TAG_LEAF, + .oam = &gOamData_AffineDouble_ObjBlend_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_PsychoBoostOrb, + .callback = AnimPsychoBoost +}; + +const struct SpriteTemplate gLungeGreenBubbleTemplate = +{ + .tileTag = ANIM_TAG_SMALL_BUBBLES, + .paletteTag = ANIM_TAG_RAZOR_LEAF, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimThrowProjectile +}; + +const struct SpriteTemplate gLungeGreenImpactTemplate = +{ + .tileTag = ANIM_TAG_IMPACT, + .paletteTag = ANIM_TAG_RAZOR_LEAF, + .oam = &gOamData_AffineNormal_ObjBlend_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_HitSplat, + .callback = AnimHitSplatBasic +}; + +//power trip +const struct SpriteTemplate gPowerTripFocusEnergyTemplate = +{ + .tileTag = ANIM_TAG_FOCUS_ENERGY, + .paletteTag = ANIM_TAG_HANDS_AND_FEET, + .oam = &gOamData_AffineOff_ObjNormal_16x32, + .anims = gEndureEnergyAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimEndureEnergy +}; + +const struct SpriteTemplate gPowerTripImpactTemplate = +{ + .tileTag = ANIM_TAG_IMPACT, + .paletteTag = ANIM_TAG_PURPLE_FLAME, + .oam = &gOamData_AffineNormal_ObjBlend_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_HitSplat, + .callback = AnimHitSplatBasic +}; + +//burn up +const struct SpriteTemplate gBurnUpRedYawnTemplate = +{ + .tileTag = ANIM_TAG_PINK_CLOUD, + .paletteTag = ANIM_TAG_SMALL_RED_EYE, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimThrowMistBall +}; + +//speed swap +const struct SpriteTemplate gSpeedSwapRingTemplate = +{ + .tileTag = ANIM_TAG_THIN_RING, + .paletteTag = ANIM_TAG_ICE_CHUNK, + .oam = &gOamData_AffineDouble_ObjBlend_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gThinRingShrinkingAffineAnimTable, + .callback = AnimSpriteOnMonPos +}; + +const struct SpriteTemplate gSpeedSwapCircleTemplate = +{ + .tileTag = ANIM_TAG_ORBS, + .paletteTag = ANIM_TAG_ICE_CHUNK, + .oam = &gOamData_AffineDouble_ObjNormal_16x16, + .anims = gPowerAbsorptionOrbAnimTable, + .images = NULL, + .affineAnims = gMimicOrbAffineAnimTable, + .callback = AnimMimicOrb +}; + +const struct SpriteTemplate gSpeedSwapOrbMissileTemplate = +{ + .tileTag = ANIM_TAG_ORBS, + .paletteTag = ANIM_TAG_ICE_CHUNK, + .oam = &gOamData_AffineDouble_ObjNormal_16x16, + .anims = gPowerAbsorptionOrbAnimTable, + .images = NULL, + .affineAnims = gMimicOrbAffineAnimTable, + .callback = AnimMissileArc +}; + +const struct SpriteTemplate gSpeedSwapOrbTemplate = +{ + .tileTag = ANIM_TAG_ORBS, + .paletteTag = ANIM_TAG_ICE_CHUNK, + .oam = &gOamData_AffineOff_ObjBlend_16x16, + .anims = gPowerAbsorptionOrbAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimNeedleArmSpike +}; + +//smart strike +const struct SpriteTemplate gSmartStrikeGemTemplate = +{ + .tileTag = ANIM_TAG_POWER_GEM, + .paletteTag = ANIM_TAG_POWER_GEM, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimNeedleArmSpike +}; + +const struct SpriteTemplate gSmartStrikeImpactTemplate = +{ + .tileTag = ANIM_TAG_IMPACT, + .paletteTag = ANIM_TAG_FLASH_CANNON_BALL, + .oam = &gOamData_AffineNormal_ObjBlend_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_HitSplat, + .callback = AnimHitSplatBasic +}; + +//purify +const struct SpriteTemplate gPurifyWhiteBallTemplate = +{ + .tileTag = ANIM_TAG_FLASH_CANNON_BALL, + .paletteTag = ANIM_TAG_FLASH_CANNON_BALL, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimMissileArc +}; + +const struct SpriteTemplate gPurifySmokeTemplate = +{ + .tileTag = ANIM_TAG_BLACK_SMOKE, + .paletteTag = ANIM_TAG_ICE_CHUNK, + .oam = &gOamData_AffineOff_ObjNormal_32x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimBlackSmoke +}; + +//revelation dance +const struct SpriteTemplate gRevelationDanceYellowOrbsTemplate = +{ + .tileTag = ANIM_TAG_ORBS, + .paletteTag = ANIM_TAG_ORBS, + .oam = &gOamData_AffineNormal_ObjBlend_16x16, + .anims = gPowerAbsorptionOrbAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimPetalDanceBigFlower +}; + +const struct SpriteTemplate gRevelationDanceYellowFlowerTemplate = +{ + .tileTag = ANIM_TAG_FLOWER, + .paletteTag = ANIM_TAG_JAGGED_MUSIC_NOTE, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = gPetalDanceSmallFlowerAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimPetalDanceSmallFlower +}; + +const struct SpriteTemplate gRevelationDanceYellowAirWaveTemplate = +{ + .tileTag = ANIM_TAG_AIR_WAVE, + .paletteTag = ANIM_TAG_JAGGED_MUSIC_NOTE, + .oam = &gOamData_AffineDouble_ObjBlend_32x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSonicBoomProjectile +}; + +const struct SpriteTemplate gRevelationDanceYellowImpactTemplate = +{ + .tileTag = ANIM_TAG_IMPACT, + .paletteTag = ANIM_TAG_SMALL_EMBER, + .oam = &gOamData_AffineNormal_ObjBlend_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_HitSplat, + .callback = AnimHitSplatBasic +}; + +const struct SpriteTemplate gRevelationDanceYellowRingTemplate = +{ + .tileTag = ANIM_TAG_THIN_RING, + .paletteTag = ANIM_TAG_SMALL_EMBER, + .oam = &gOamData_AffineDouble_ObjBlend_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gThinRingExpandingAffineAnimTable, + .callback = AnimUproarRing +}; + +const struct SpriteTemplate gRevelationDanceYellowDispersalTemplate = +{ + .tileTag = ANIM_TAG_ORBS, + .paletteTag = ANIM_TAG_ORBS, + .oam = &gOamData_AffineNormal_ObjBlend_16x16, + .anims = gPowerAbsorptionOrbAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimFireSpread +}; + +//core enforcer +const struct SpriteTemplate gCoreEnforcerBlueRingTemplate = +{ + .tileTag = ANIM_TAG_THIN_RING, + .paletteTag = ANIM_TAG_WATER_ORB, + .oam = &gOamData_AffineDouble_ObjBlend_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gThinRingShrinkingAffineAnimTable, + .callback = AnimSpriteOnMonPos +}; + +const struct SpriteTemplate gCoreEnforcerYellowRingTemplate = +{ + .tileTag = ANIM_TAG_THIN_RING, + .paletteTag = ANIM_TAG_SPARK_2, + .oam = &gOamData_AffineDouble_ObjBlend_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gThinRingShrinkingAffineAnimTable, + .callback = AnimSpriteOnMonPos +}; + +const struct SpriteTemplate gCoreEnforcerGreenRingTemplate = +{ + .tileTag = ANIM_TAG_THIN_RING, + .paletteTag = ANIM_TAG_LEAF, + .oam = &gOamData_AffineDouble_ObjBlend_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gThinRingShrinkingAffineAnimTable, + .callback = AnimSpriteOnMonPos +}; + +const struct SpriteTemplate gCoreEnforcerCircleChargeTemplate = +{ + .tileTag = ANIM_TAG_SHOCK_3, + .paletteTag = ANIM_TAG_SHOCK_3, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, + .anims = gAnims_ThunderboltOrb, + .images = NULL, + .affineAnims = gAffineAnims_HitSplat, + .callback = AnimFlashingHitSplat +}; + +const struct SpriteTemplate gCoreEnforcerBlueSparkTemplate = +{ + .tileTag = ANIM_TAG_SPARK_2, + .paletteTag = ANIM_TAG_WATER_ORB, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSparkElectricity +}; + +const struct SpriteTemplate gCoreEnforcerGreenChargeTemplate = +{ + .tileTag = ANIM_TAG_SPARK_2, + .paletteTag = ANIM_TAG_LEAF, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSparkElectricity +}; + +const struct SpriteTemplate gCoreEnforcerSnoreTemplate = +{ + .tileTag = ANIM_TAG_SNORE_Z, + .paletteTag = ANIM_TAG_SNORE_Z, + .oam = &gOamData_AffineOff_ObjBlend_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_CentredSpiderWeb +}; + +const struct SpriteTemplate gCoreEnforcerImpactTemplate = +{ + .tileTag = ANIM_TAG_IMPACT, + .paletteTag = ANIM_TAG_IMPACT, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_HitSplat, + .callback = SpriteCB_CoreEnforcerHits +}; + +const struct SpriteTemplate gCoreEnforcerBeamTemplate = +{ + .tileTag = ANIM_TAG_ORBS, + .paletteTag = ANIM_TAG_ORBS, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = gSolarbeamBigOrbAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_CoreEnforcerBeam +}; + +const struct SpriteTemplate gCoreEnforcerExplosionTemplate = +{ + .tileTag = ANIM_TAG_EXPLOSION, + .paletteTag = ANIM_TAG_EXPLOSION, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gExplosionAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_SpriteToCentreOfSide +}; + +//trop kick +const struct SpriteTemplate gTropKickGreenFootTemplate = +{ + .tileTag = ANIM_TAG_HANDS_AND_FEET, + .paletteTag = ANIM_TAG_HANDS_AND_FEET, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gAnims_HandOrFoot, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimJumpKick +}; + +const struct SpriteTemplate gTropKickFlowerTemplate = +{ + .tileTag = ANIM_TAG_FLOWER, + .paletteTag = ANIM_TAG_FLOWER, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gPetalDanceBigFlowerAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimFireSpread +}; + +const struct SpriteTemplate gTropKickLeavesTemplate = +{ + .tileTag = ANIM_TAG_LEAF, + .paletteTag = ANIM_TAG_LEAF, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gRazorLeafParticleAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimFireSpread +}; + +//clanging scales +const struct SpriteTemplate gClangingScalesPurpleMetalSoundTemplate = +{ + .tileTag = ANIM_TAG_METAL_SOUND_WAVES, + .paletteTag = ANIM_TAG_METAL_SOUND_WAVES, + .oam = &gOamData_AffineDouble_ObjNormal_32x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gGrowingRingAffineAnimTable, + .callback = SpriteCB_TranslateAnimSpriteToTargetMonLocationDoubles +}; + +//brutal swing +const struct SpriteTemplate gBrutalSwingRandomImpactTemplate = +{ + .tileTag = ANIM_TAG_IMPACT, + .paletteTag = ANIM_TAG_HANDS_AND_FEET, + .oam = &gOamData_AffineNormal_ObjBlend_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_HitSplat, + .callback = AnimHitSplatRandom +}; + +const struct SpriteTemplate gBrutalSwingBasicImpactTemplate = +{ + .tileTag = ANIM_TAG_IMPACT, + .paletteTag = ANIM_TAG_HANDS_AND_FEET, + .oam = &gOamData_AffineNormal_ObjBlend_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_HitSplat, + .callback = AnimHitSplatBasic +}; + +//aurora veil +const struct SpriteTemplate gAuroraVeilRingTemplate = +{ + .tileTag = ANIM_TAG_GUARD_RING, + .paletteTag = ANIM_TAG_GUARD_RING, + .oam = &gOamData_AffineDouble_ObjBlend_64x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gGuardRingAffineAnimTable, + .callback = SpriteCB_SurroundingRing +}; + +//shell trap +const struct SpriteTemplate gShellTrapYellowImpactTemplate = +{ + .tileTag = ANIM_TAG_IMPACT, + .paletteTag = ANIM_TAG_SMALL_EMBER, + .oam = &gOamData_AffineNormal_ObjBlend_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_HitSplat, + .callback = AnimHitSplatBasic +}; + +const struct SpriteTemplate gShellTrapRedImpactTemplate = +{ + .tileTag = ANIM_TAG_IMPACT, + .paletteTag = ANIM_TAG_SMALL_RED_EYE, + .oam = &gOamData_AffineNormal_ObjBlend_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_HitSplat, + .callback = AnimHitSplatBasic +}; + +const struct SpriteTemplate gShellTrapFireHitsTemplate = +{ + .tileTag = ANIM_TAG_ICE_CRYSTALS, + .paletteTag = ANIM_TAG_SMALL_EMBER, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = gAnims_Snowball, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimMoveParticleBeyondTarget +}; + +//fleur cannon +const struct SpriteTemplate gFleurCannonOrbTemplate = +{ + .tileTag = ANIM_TAG_ORBS, + .paletteTag = ANIM_TAG_PINK_PETAL, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = gSolarbeamBigOrbAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimHyperBeamOrb +}; + +const struct SpriteTemplate gFleurCannonDischargeTemplate = +{ + .tileTag = ANIM_TAG_ELECTRICITY, + .paletteTag = ANIM_TAG_PINK_PETAL, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gAnims_ElectricPuff, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimElectricPuff +}; + +//stomping tantrum +const struct SpriteTemplate gStompingTantrumRockTemplate = +{ + .tileTag = ANIM_TAG_SMALL_ROCK, + .paletteTag = ANIM_TAG_ROCKS, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_TearDrop, + .callback = AnimTearDrop +}; + +//prismatic laser +const struct SpriteTemplate gPrismaticLaserChargeTemplate = +{ + .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, + .paletteTag = ANIM_TAG_ICE_CHUNK, + .oam = &gOamData_AffineNormal_ObjBlend_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_GrowingElectricOrb, + .callback = AnimGrowingChargeOrb +}; + +const struct SpriteTemplate gPrismaticLaserYellowOutwardTemplate = +{ + .tileTag = ANIM_TAG_GREEN_SPIKE, + .paletteTag = ANIM_TAG_SPARK_H, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimNeedleArmSpike +}; + +const struct SpriteTemplate gPrismaticLaserGreenOutwardTemplate = +{ + .tileTag = ANIM_TAG_GREEN_SPIKE, + .paletteTag = ANIM_TAG_RAZOR_LEAF, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimNeedleArmSpike +}; + +const struct SpriteTemplate gPrismaticLaserRedOutwardTemplate = +{ + .tileTag = ANIM_TAG_GREEN_SPIKE, + .paletteTag = ANIM_TAG_JAGGED_MUSIC_NOTE, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimNeedleArmSpike +}; + +const struct SpriteTemplate gPrismaticLaserVioletOutwardTemplate = +{ + .tileTag = ANIM_TAG_GREEN_SPIKE, + .paletteTag = ANIM_TAG_POISON_BUBBLE, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimNeedleArmSpike +}; + +const struct SpriteTemplate gPrismaticLaserYellowInwardTemplate = +{ + .tileTag = ANIM_TAG_TEAL_ALERT, + .paletteTag = ANIM_TAG_SPARK_H, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimNeedleArmSpike +}; + +const struct SpriteTemplate gPrismaticLaserGreenInwardTemplate = +{ + .tileTag = ANIM_TAG_TEAL_ALERT, + .paletteTag = ANIM_TAG_RAZOR_LEAF, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimNeedleArmSpike +}; + +const struct SpriteTemplate gPrismaticLaserRedInwardTemplate = +{ + .tileTag = ANIM_TAG_TEAL_ALERT, + .paletteTag = ANIM_TAG_JAGGED_MUSIC_NOTE, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimNeedleArmSpike +}; + +const struct SpriteTemplate gPrismaticLaserVioletInwardTemplate = +{ + .tileTag = ANIM_TAG_TEAL_ALERT, + .paletteTag = ANIM_TAG_POISON_BUBBLE, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimNeedleArmSpike +}; + +const struct SpriteTemplate gPrismaticLaserYellowRainTemplate = +{ + .tileTag = ANIM_TAG_NEEDLE, + .paletteTag = ANIM_TAG_SPARK_H, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_FallingObject +}; + +const struct SpriteTemplate gPrismaticLaserGreenRainTemplate = +{ + .tileTag = ANIM_TAG_NEEDLE, + .paletteTag = ANIM_TAG_RAZOR_LEAF, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_FallingObject +}; + +const struct SpriteTemplate gPrismaticLaserRedRainTemplate = +{ + .tileTag = ANIM_TAG_NEEDLE, + .paletteTag = ANIM_TAG_JAGGED_MUSIC_NOTE, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_FallingObject +}; + +const struct SpriteTemplate gPrismaticLaserVioletRainTemplate = +{ + .tileTag = ANIM_TAG_NEEDLE, + .paletteTag = ANIM_TAG_POISON_BUBBLE, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_FallingObject +}; + +//spectral thief +const struct SpriteTemplate gSpectralThiefBlackSmokeTemplate = +{ + .tileTag = ANIM_TAG_GRAY_SMOKE, + .paletteTag = ANIM_TAG_HANDS_AND_FEET, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gOctazookaAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSpriteOnMonPos +}; + +const struct SpriteTemplate gSpectralThiefThiefImpactTemplate = +{ + .tileTag = ANIM_TAG_IMPACT, + .paletteTag = ANIM_TAG_HANDS_AND_FEET, + .oam = &gOamData_AffineNormal_ObjBlend_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_IceCrystalHit, + .callback = AnimIceEffectParticle +}; + +const struct SpriteTemplate gSpectralThiefBlackOrbsTemplate = +{ + .tileTag = ANIM_TAG_ORBS, + .paletteTag = ANIM_TAG_HANDS_AND_FEET, + .oam = &gOamData_AffineDouble_ObjNormal_16x16, + .anims = gPowerAbsorptionOrbAnimTable, + .images = NULL, + .affineAnims = gMimicOrbAffineAnimTable, + .callback = AnimMimicOrb +}; + +const struct SpriteTemplate gSpectralThiefBlackBuffTemplate = +{ + .tileTag = ANIM_TAG_FOCUS_ENERGY, + .paletteTag = ANIM_TAG_HANDS_AND_FEET, + .oam = &gOamData_AffineOff_ObjNormal_16x32, + .anims = gEndureEnergyAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimEndureEnergy +}; + +//sunsteeel strike +const struct SpriteTemplate gSunsteelStrikeBlackFlyBallTemplate = +{ + .tileTag = ANIM_TAG_ROUND_SHADOW, + .paletteTag = ANIM_TAG_AIR_WAVE_2, + .oam = &gOamData_AffineDouble_ObjNormal_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_FlyBallUp, + .callback = AnimFlyBallUp +}; + +static const struct OamData sSunsteelStrikeBlastOAM = +{ + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_NORMAL, + .shape = SPRITE_SHAPE(64x64), + .size = SPRITE_SIZE(64x64), + .priority = 1, //Above sprites +}; +static const union AffineAnimCmd sSpriteAffineAnim_SunsteelStrikeBlastEnemySide[] = +{ + AFFINEANIMCMD_FRAME(0, 0, -64, 1), //90 degree turn + AFFINEANIMCMD_FRAME(0, 0, 0, 7), //Pause + AFFINEANIMCMD_FRAME(16, 16, 0, 15), //Double in size + AFFINEANIMCMD_END +}; +static const union AffineAnimCmd sSpriteAffineAnim_SunsteelStrikeBlastPlayerSide[] = +{ + AFFINEANIMCMD_FRAME(0, 0, 128, 1), //180 degree turn + AFFINEANIMCMD_FRAME(0, 0, 0, 7), //Pause + AFFINEANIMCMD_FRAME(16, 16, 0, 15), //Double in size + AFFINEANIMCMD_END +}; +static const union AffineAnimCmd* const sSpriteAffineAnimTable_SunsteelStrikeBlast[] = +{ + sSpriteAffineAnim_SunsteelStrikeBlastEnemySide, + sSpriteAffineAnim_SunsteelStrikeBlastPlayerSide, +}; +const struct SpriteTemplate gSunsteelStrikeSuperpowerTemplate = +{ + .tileTag = ANIM_TAG_METEOR, + .paletteTag = ANIM_TAG_METEOR, + .oam = &sSunsteelStrikeBlastOAM, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = sSpriteAffineAnimTable_SunsteelStrikeBlast, + .callback = AnimFlyBallAttack +}; + +const struct SpriteTemplate gSunsteelStrikeRedBeamTemplate = +{ + .tileTag = ANIM_TAG_GOLD_RING, + .paletteTag = ANIM_TAG_SMALL_RED_EYE, + .oam = &gOamData_AffineOff_ObjNormal_16x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_FlyBallAttack, + .callback = SpriteCB_SunsteelStrikeRings +}; + +const struct SpriteTemplate gSunsteelStrikeYellowBeamTemplate = +{ + .tileTag = ANIM_TAG_GOLD_RING, + .paletteTag = ANIM_TAG_GOLD_RING, + .oam = &gOamData_AffineOff_ObjNormal_16x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_FlyBallAttack, + .callback = SpriteCB_SunsteelStrikeRings +}; + +const struct SpriteTemplate gSunsteelStrikeRedImpactTemplate = +{ + .tileTag = ANIM_TAG_IMPACT, + .paletteTag = ANIM_TAG_SMALL_RED_EYE, + .oam = &gOamData_AffineNormal_ObjBlend_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_HitSplat, + .callback = AnimHitSplatBasic +}; + +const struct SpriteTemplate gSunsteelStrikeRocksTemplate = +{ + .tileTag = ANIM_TAG_SMALL_ROCK, + .paletteTag = ANIM_TAG_ROCKS, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_TearDrop, + .callback = AnimTearDrop +}; + +//moongeist beam +const struct SpriteTemplate gMoongeistBeamBlueOrbsTemplate = +{ + .tileTag = ANIM_TAG_ORBS, + .paletteTag = ANIM_TAG_WATER_GUN, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = gSolarbeamBigOrbAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimHyperBeamOrb +}; + +const struct SpriteTemplate gMoongeistBeamPurpleOrbsTemplate = +{ + .tileTag = ANIM_TAG_ORBS, + .paletteTag = ANIM_TAG_ASSURANCE_HAND, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = gSolarbeamBigOrbAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimHyperBeamOrb +}; + +const struct SpriteTemplate gMoongeistBeamChargeTemplate = +{ + .tileTag = ANIM_TAG_ELECTRIC_ORBS, + .paletteTag = ANIM_TAG_ELECTRIC_ORBS, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = gAnims_ElectricChargingParticles, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_MoongeistCharge +}; + +//zing zap +const struct SpriteTemplate gZingZapYellowBallTemplate = +{ + .tileTag = ANIM_TAG_YELLOW_BALL, + .paletteTag = ANIM_TAG_SPARK_H, + .oam = &gOamData_AffineDouble_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_ShadowBall, + .callback = AnimShadowBall +}; + +const struct SpriteTemplate gZingZapRingTemplate = +{ + .tileTag = ANIM_TAG_THIN_RING, + .paletteTag = ANIM_TAG_SMALL_EMBER, + .oam = &gOamData_AffineDouble_ObjBlend_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gThinRingExpandingAffineAnimTable, + .callback = AnimUproarRing +}; + +//nature's madness +const struct SpriteTemplate gNaturesMadnessPinkStarsTemplate = +{ + .tileTag = ANIM_TAG_SPARKLE_2, + .paletteTag = ANIM_TAG_PINK_PETAL, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gGrantingStarsAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSmallBubblePair +}; + +const struct SpriteTemplate gNaturesMadnessCrystalsTemplate = +{ + .tileTag = ANIM_TAG_ICE_CRYSTALS, + .paletteTag = ANIM_TAG_ICE_CHUNK, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = gAnims_SmallBubblePair, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSmallBubblePair +}; + +const struct SpriteTemplate gNaturesMadnessPinkRingTemplate = +{ + .tileTag = ANIM_TAG_THIN_RING, + .paletteTag = ANIM_TAG_PINK_PETAL, + .oam = &gOamData_AffineDouble_ObjBlend_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gThinRingExpandingAffineAnimTable, + .callback = AnimUproarRing +}; + +const struct SpriteTemplate gNaturesMadnessGrayRingTemplate = +{ + .tileTag = ANIM_TAG_THIN_RING, + .paletteTag = ANIM_TAG_ECLIPSING_ORB, + .oam = &gOamData_AffineDouble_ObjBlend_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gThinRingShrinkingAffineAnimTable, + .callback = AnimSpriteOnMonPos +}; + +//mind blown +const struct SpriteTemplate gMindBlownHeadTemplate = +{ + .tileTag = ANIM_TAG_BLACEPHALON_HEAD, + .paletteTag = ANIM_TAG_BLACEPHALON_HEAD, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_ShadowBall, + .callback = SpriteCB_MindBlownBall +}; + +const struct SpriteTemplate gMindBlownBlueOrbsTemplate = +{ + .tileTag = ANIM_TAG_ORBS, + .paletteTag = ANIM_TAG_SMALL_BUBBLES, + .oam = &gOamData_AffineNormal_ObjBlend_16x16, + .anims = gPowerAbsorptionOrbAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_MindBlownExplosion +}; + +const struct SpriteTemplate gMindBlownPinkOrbsTemplate = +{ + .tileTag = ANIM_TAG_ORBS, + .paletteTag = ANIM_TAG_PINK_HEART, + .oam = &gOamData_AffineNormal_ObjBlend_16x16, + .anims = gPowerAbsorptionOrbAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_MindBlownExplosion +}; + +const struct SpriteTemplate gMindBlownBlueImpactTemplate = +{ + .tileTag = ANIM_TAG_IMPACT, + .paletteTag = ANIM_TAG_SMALL_BUBBLES, + .oam = &gOamData_AffineNormal_ObjBlend_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_HitSplat, + .callback = SpriteCB_RandomCentredHits +}; + +const struct SpriteTemplate gMindBlownPinkImpactTemplate = +{ + .tileTag = ANIM_TAG_IMPACT, + .paletteTag = ANIM_TAG_PINK_HEART, + .oam = &gOamData_AffineNormal_ObjBlend_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_HitSplat, + .callback = SpriteCB_RandomCentredHits +}; + +//plasma fists +const struct SpriteTemplate gPlasmaFistsChargeTemplate = +{ + .tileTag = ANIM_TAG_SHOCK_3, + .paletteTag = ANIM_TAG_SHOCK_3, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, + .anims = gAnims_ThunderboltOrb, + .images = NULL, + .affineAnims = gAffineAnims_GrowingElectricOrb, + .callback = AnimGrowingChargeOrb +}; + +//photon geyser +static const union AnimCmd sAnimCmdPhotonGeyserBeam1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END +}; +static const union AnimCmd sAnimCmdSmiteBeam[] = +{ + ANIMCMD_FRAME(4, 1), + ANIMCMD_END +}; +static const union AnimCmd sAnimCmdPhotonGeyserBeam2[] = +{ + ANIMCMD_FRAME(8, 1), + ANIMCMD_END +}; +static const union AnimCmd *const sAnimCmdTable_PhotonGeyserBeam[] = +{ + sAnimCmdPhotonGeyserBeam1, + sAnimCmdSmiteBeam, + sAnimCmdPhotonGeyserBeam2, +}; +static const union AffineAnimCmd sSpriteAffineAnim_DoNothing[] = +{ + AFFINEANIMCMD_FRAME(0, 0, 0, 1), //Do nothing + AFFINEANIMCMD_END +}; +static const union AffineAnimCmd sSpriteAffineAnim_PhotonGeyserBeam[] = +{ + AFFINEANIMCMD_FRAME(0, 0, 0, 16), //Delay + AFFINEANIMCMD_FRAME(64, 64, 0, 4), //Double in size + //Pulsate + AFFINEANIMCMD_FRAME(-128, -128, 0, 1), + AFFINEANIMCMD_FRAME(128, 128, 0, 1), + AFFINEANIMCMD_JUMP(2), +}; +static const union AffineAnimCmd* const sSpriteAffineAnimTable_PhotonGeyserBeam[] = +{ + sSpriteAffineAnim_DoNothing, + sSpriteAffineAnim_PhotonGeyserBeam, +}; +const struct SpriteTemplate gPhotonGeyserBeam = +{ + .tileTag = ANIM_TAG_STRAIGHT_BEAM, + .paletteTag = ANIM_TAG_STRAIGHT_BEAM, + .oam = &gOamData_AffineDouble_ObjNormal_16x16, + .anims = sAnimCmdTable_PhotonGeyserBeam, + .images = NULL, + .affineAnims = sSpriteAffineAnimTable_PhotonGeyserBeam, + .callback = SpriteCB_PhotonGeyserBeam +}; + +const struct SpriteTemplate gPhotonGeyserChargeTemplate = +{ + .tileTag = ANIM_TAG_SHOCK_3, + .paletteTag = ANIM_TAG_SMALL_RED_EYE, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, + .anims = gAnims_ThunderboltOrb, + .images = NULL, + .affineAnims = gAffineAnims_GrowingElectricOrb, + .callback = AnimGrowingChargeOrb +}; + +const struct SpriteTemplate gPhotonGeyserSparkTemplate = +{ + .tileTag = ANIM_TAG_SPARK_2, + .paletteTag = ANIM_TAG_SMALL_RED_EYE, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSparkElectricity +}; + +const struct SpriteTemplate gPhotonGeyserZapCannonSparkTemplate = +{ + .tileTag = ANIM_TAG_SPARK_2, + .paletteTag = ANIM_TAG_SMALL_RED_EYE, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_FlashingSpark, + .callback = AnimZapCannonSpark +}; + +const struct SpriteTemplate gPhotonGeyserWhiteRingTemplate = +{ + .tileTag = ANIM_TAG_THIN_RING, + .paletteTag = ANIM_TAG_AIR_WAVE_2, + .oam = &gOamData_AffineDouble_ObjBlend_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gThinRingExpandingAffineAnimTable, + .callback = AnimUproarRing +}; + +const struct SpriteTemplate gPhotonGeyserYellowRingTemplate = +{ + .tileTag = ANIM_TAG_THIN_RING, + .paletteTag = ANIM_TAG_SMALL_EMBER, + .oam = &gOamData_AffineDouble_ObjBlend_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gThinRingExpandingAffineAnimTable, + .callback = AnimUproarRing +}; + +const struct SpriteTemplate gPhotonGeyserZapBallTemplate = +{ + .tileTag = ANIM_TAG_YELLOW_BALL, + .paletteTag = ANIM_TAG_YELLOW_BALL, + .oam = &gOamData_AffineDouble_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = TranslateAnimSpriteToTargetMonLocation +}; + + +//// GEN 8 +//snipe shot +static const union AffineAnimCmd sSpriteAffineAnim_LargeSpikePointedLeft[] = +{ + AFFINEANIMCMD_FRAME(0, 0, 32, 1), //45 degree turn + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd sSpriteAffineAnim_LargeSpikePointedRight[] = +{ + AFFINEANIMCMD_FRAME(0, 0, -32, 1), //45 degree turn + AFFINEANIMCMD_END +}; +static const union AffineAnimCmd* const sSpriteAffineAnimTable_LargeSpike[] = +{ + sSpriteAffineAnim_LargeSpikePointedLeft, + sSpriteAffineAnim_LargeSpikePointedRight, +}; + +static const union AffineAnimCmd* const sSpriteAffineAnimTable_SnipeShot[] = +{ + sSpriteAffineAnim_LargeSpikePointedRight, +}; +static const union AnimCmd sAnimCmdSnipeShot[] = +{ + ANIMCMD_FRAME(64, 4), + ANIMCMD_FRAME(48, 4), + ANIMCMD_FRAME(32, 4), + ANIMCMD_FRAME(16, 4), + ANIMCMD_FRAME(0, 4), + ANIMCMD_END, +}; +static const union AnimCmd *const sAnimCmdTable_SnipeShot[] = +{ + sAnimCmdSnipeShot, +}; +const struct SpriteTemplate gSnipeShotBallTemplate = //used in aura sphere +{ + .tileTag = ANIM_TAG_IMPACT_2, + .paletteTag = ANIM_TAG_IMPACT_2, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, + .anims = sAnimCmdTable_SnipeShot, + .images = NULL, + .affineAnims = sSpriteAffineAnimTable_SnipeShot, + .callback = AnimShadowBall +}; + +//jaw lock +const struct SpriteTemplate gJawLockTeethTemplate = +{ + .tileTag = ANIM_TAG_SHARP_TEETH, + .paletteTag = ANIM_TAG_SHARP_TEETH, + .oam = &gOamData_AffineNormal_ObjBlend_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_Bite, + .callback = SpriteCB_LockingJaw +}; + +//stuff cheeks +static const union AnimCmd sAnimCmdBerryChomp[] = +{ + ANIMCMD_FRAME(0, 0x30), + ANIMCMD_FRAME(0, 0x25), + ANIMCMD_FRAME(16, 3), + ANIMCMD_END, +}; +static const union AnimCmd *const sAnimCmdTable_BerryChomp[] = +{ + sAnimCmdBerryChomp, +}; +const struct SpriteTemplate gFloatingBerryTemplate = +{ + .tileTag = ANIM_TAG_BERRY_NORMAL, + .paletteTag = ANIM_TAG_BERRY_NORMAL, + .oam = &gOamData_AffineDouble_ObjNormal_32x32, + .anims = sAnimCmdTable_BerryChomp, + .images = NULL, + .affineAnims = gMetronomeFingerAffineAnimTable, + .callback = AnimMetronomeFinger +}; + +//no retreat +static const struct OamData sPyroBallFlamesOAM = +{ + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .shape = SPRITE_SHAPE(32x32), + .size = SPRITE_SIZE(32x32), + .priority = 1, //Above sprites +}; +const struct SpriteTemplate gNoRetreatFlameTemplate = +{ + .tileTag = ANIM_TAG_SMALL_EMBER, + .paletteTag = ANIM_TAG_SMALL_EMBER, + .oam = &sPyroBallFlamesOAM, + .anims = gAnims_DragonBreathFire, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_SpriteOnMonForDuration +}; + +//magic powder +const struct SpriteTemplate gMagicPowderBluePowderTemplate = +{ + .tileTag = ANIM_TAG_POISON_POWDER, + .paletteTag = ANIM_TAG_WATER_GUN, + .oam = &gOamData_AffineOff_ObjNormal_8x16, + .anims = gPowderParticlesAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimMovePowderParticle +}; + +//dreepy missile +const struct SpriteTemplate gDreepyMissileTemplate = +{ + .tileTag = ANIM_TAG_DREEPY, + .paletteTag = ANIM_TAG_DREEPY, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimShadowBall +}; + +//bolt beak +const struct SpriteTemplate gBoltBeakBlueSparkTemplate = +{ + .tileTag = ANIM_TAG_SPARK_2, + .paletteTag = ANIM_TAG_ELECTRICITY, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSparkElectricity +}; + +const struct SpriteTemplate gBoltBeakBlueFlashingSparkTemplate = +{ + .tileTag = ANIM_TAG_SPARK_2, + .paletteTag = ANIM_TAG_ELECTRICITY, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_FlashingSpark, + .callback = AnimSparkElectricityFlashing +}; + +//fishious rend +static const struct OamData sFishiousRendTeethOam = +{ + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .shape = SPRITE_SHAPE(64x64), + .size = SPRITE_SIZE(64x64), + .priority = 1, //Above sprites +}; +const struct SpriteTemplate gFishiousRendTeethTemplate = +{ + .tileTag = ANIM_TAG_SHARP_TEETH, + .paletteTag = ANIM_TAG_SHARP_TEETH, + .oam = &sFishiousRendTeethOam, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_LeftRightSlice +}; + +//clangorous soul +const struct SpriteTemplate gClangorousSoulBlueBuffTemplate = +{ + .tileTag = ANIM_TAG_FOCUS_ENERGY, + .paletteTag = ANIM_TAG_WATER_ORB, + .oam = &gOamData_AffineOff_ObjNormal_16x32, + .anims = gEndureEnergyAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimEndureEnergy +}; + +const struct SpriteTemplate gClangorousSoulPurpleBuffTemplate = +{ + .tileTag = ANIM_TAG_FOCUS_ENERGY, + .paletteTag = ANIM_TAG_POISON_BUBBLE, + .oam = &gOamData_AffineOff_ObjNormal_16x32, + .anims = gEndureEnergyAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimEndureEnergy +}; + +const struct SpriteTemplate gClangorousSoulWhiteBuffTemplate = +{ + .tileTag = ANIM_TAG_FOCUS_ENERGY, + .paletteTag = ANIM_TAG_AIR_WAVE_2, + .oam = &gOamData_AffineOff_ObjNormal_16x32, + .anims = gEndureEnergyAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimEndureEnergy +}; + +const struct SpriteTemplate gClangorousSoulRedFistTemplate = +{ + .tileTag = ANIM_TAG_HORSESHOE_SIDE_FIST, + .paletteTag = ANIM_TAG_VERTICAL_HEX, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gAnims_HandOrFoot, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimJumpKick +}; + +const struct SpriteTemplate gClangorousSoulRedRingTemplate = +{ + .tileTag = ANIM_TAG_THIN_RING, + .paletteTag = ANIM_TAG_VERTICAL_HEX, + .oam = &gOamData_AffineDouble_ObjNormal_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gThinRingExpandingAffineAnimTable, + .callback = AnimSpriteOnMonPos +}; + +//pyro ball +static const struct OamData sPyroBallRockOAM = +{ + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .shape = SPRITE_SHAPE(16x16), + .size = SPRITE_SIZE(16x16), + .priority = 1, //Above sprites +}; +const struct SpriteTemplate gPyroBallRockTemplate = +{ + .tileTag = ANIM_TAG_FLAT_ROCK, + .paletteTag = ANIM_TAG_FLAT_ROCK, + .oam = &sPyroBallRockOAM, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_PyroBallRockBounce +}; + +const struct SpriteTemplate gPyroBallBurningRockTemplate = +{ + .tileTag = ANIM_TAG_SMALL_EMBER, + .paletteTag = ANIM_TAG_SMALL_EMBER, + .oam = &sPyroBallFlamesOAM, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_PyroBallRockBounce +}; + +const struct SpriteTemplate gPyroBallFlamesUpTemplate = +{ + .tileTag = ANIM_TAG_SMALL_EMBER, + .paletteTag = ANIM_TAG_SMALL_EMBER, + .oam = &sPyroBallFlamesOAM, + .anims = gAnims_DragonBreathFire, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_PyroBallRockBounce +}; + +const struct SpriteTemplate gPyroBallEmberBallTemplate = +{ + .tileTag = ANIM_TAG_SMALL_EMBER, + .paletteTag = ANIM_TAG_SMALL_EMBER, + .oam = &sPyroBallFlamesOAM, + .anims = gAnims_DragonBreathFire, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_PyroBallLaunch +}; + +//aura wheel +const struct SpriteTemplate gAuraWheelBlueElectricityTemplate = +{ + .tileTag = ANIM_TAG_SPARK_2, + .paletteTag = ANIM_TAG_SPARK_2, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_ShadowBall, + .callback = AnimFireSpiralOutward +}; + +const struct SpriteTemplate gAuraWheelRedElectricityTemplate = +{ + .tileTag = ANIM_TAG_SPARK_2, + .paletteTag = ANIM_TAG_SPARK, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_ShadowBall, + .callback = AnimFireSpiralOutward +}; + +//breaking swipe +const struct SpriteTemplate gBreakingSwipeCenteredElectricity = +{ + .tileTag = ANIM_TAG_SPARK_2, + .paletteTag = ANIM_TAG_SPARK_2, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_CentredElectricity +}; + +//branch poke +const struct SpriteTemplate gBranchPokeBranchTemplate = +{ + .tileTag = ANIM_TAG_BRANCH, + .paletteTag = ANIM_TAG_BRANCH, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimShadowBall +}; + +//apple acid +const struct SpriteTemplate gAppleAcidFloatingAppleTemplate = +{ + .tileTag = ANIM_TAG_APPLE, + .paletteTag = ANIM_TAG_APPLE, + .oam = &gOamData_AffineDouble_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gMetronomeFingerAffineAnimTable, + .callback = AnimMetronomeFinger +}; + +const struct SpriteTemplate gAppleAcidLaunchTemplate = +{ + .tileTag = ANIM_TAG_POISON_BUBBLE, + .paletteTag = ANIM_TAG_POISON_BUBBLE, + .oam = &gOamData_AffineDouble_ObjNormal_16x16, + .anims = gAnims_PoisonProjectile, + .images = NULL, + .affineAnims = gAffineAnims_PoisonProjectile, + .callback = SpriteCB_AcidLaunchSingleTarget +}; + +const struct SpriteTemplate gAppleAcidDripTemplate = +{ + .tileTag = ANIM_TAG_POISON_BUBBLE, + .paletteTag = ANIM_TAG_POISON_BUBBLE, + .oam = &gOamData_AffineDouble_ObjNormal_16x16, + .anims = gAnims_AcidPoisonDroplet, + .images = NULL, + .affineAnims = gAffineAnims_Droplet, + .callback = SpriteCB_AcidDripSingleTarget +}; + +//grav apple +static const struct OamData sAppleOAM = +{ + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_NORMAL, + .shape = SPRITE_SHAPE(32x32), + .size = SPRITE_SIZE(32x32), + .priority = 1, //Above sprites +}; +const struct SpriteTemplate gGravAppleSmallApple = +{ + .tileTag = ANIM_TAG_APPLE, + .paletteTag = ANIM_TAG_APPLE, + .oam = &sAppleOAM, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_FallingObject +}; + +static const union AffineAnimCmd sSpriteAffineAnim_ScaledApple[] = +{ + AFFINEANIMCMD_FRAME(64, 64, 0, 10), //Quadruple in size + AFFINEANIMCMD_END +}; +static const union AffineAnimCmd* const sSpriteAffineAnimTable_ScaledApple[] = +{ + sSpriteAffineAnim_ScaledApple, +}; +const struct SpriteTemplate gGravAppleLargeApple = +{ + .tileTag = ANIM_TAG_APPLE, + .paletteTag = ANIM_TAG_APPLE, + .oam = &sAppleOAM, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = sSpriteAffineAnimTable_ScaledApple, + .callback = SpriteCB_FallingObject +}; + +//strange steam +const struct SpriteTemplate gStrangeSteamPinkCloudTemplate = +{ + .tileTag = ANIM_TAG_PINK_CLOUD, + .paletteTag = ANIM_TAG_PINK_CLOUD, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_ShadowBall, + .callback = AnimDirtScatter +}; + +const struct SpriteTemplate gStrangeSteamGreenCloudTemplate = +{ + .tileTag = ANIM_TAG_PINK_CLOUD, + .paletteTag = ANIM_TAG_FINGER, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_ShadowBall, + .callback = AnimDirtScatter +}; + +const struct SpriteTemplate gStrangeSteamBlueCloudTemplate = +{ + .tileTag = ANIM_TAG_PINK_CLOUD, + .paletteTag = ANIM_TAG_WATER_GUN, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_ShadowBall, + .callback = AnimDirtScatter +}; + +//life dew +static const union AnimCmd sAnimCmdWaterDropletDrip[] = +{ + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(16, 3), + ANIMCMD_FRAME(32, 3), + ANIMCMD_FRAME(48, 3), + ANIMCMD_END, +}; +static const union AnimCmd sAnimCmdWaterDropletSplash[] = +{ + ANIMCMD_FRAME(64, 3), + ANIMCMD_FRAME(80, 3), + ANIMCMD_FRAME(96, 3), + ANIMCMD_FRAME(112, 10), + ANIMCMD_END, +}; +static const union AnimCmd *const sAnimCmdWaterDroplet[] = +{ + sAnimCmdWaterDropletDrip, + sAnimCmdWaterDropletSplash, +}; +const struct SpriteTemplate gLifeDewDropletTemplate = +{ + .tileTag = ANIM_TAG_WATER_DROPLET, + .paletteTag = ANIM_TAG_WATER_DROPLET, + .oam = &sAppleOAM, + .anims = sAnimCmdWaterDroplet, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_WaterDroplet +}; + +const struct SpriteTemplate gLifeDewSpecialOrbsTemplate = +{ + .tileTag = ANIM_TAG_BLUE_STAR, + .paletteTag = ANIM_TAG_BLUE_STAR, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gHealingBlueStarAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_AnimSpriteOnSelectedMonPos +}; + +//obstruct +const struct SpriteTemplate gObstructCrossTemplate = +{ + .tileTag = ANIM_TAG_OBSTRUCT_CROSS, + .paletteTag = ANIM_TAG_OBSTRUCT_CROSS, + .oam = &gOamData_AffineOff_ObjBlend_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimCrossImpact +}; + +//meteor assault +static const struct OamData sGrowingSuperpowerOAM = +{ + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_NORMAL, + .shape = SPRITE_SHAPE(64x64), + .size = SPRITE_SIZE(64x64), + .priority = 2, +}; +static const union AffineAnimCmd sSpriteAffineAnim_GrowingSuperpowerEnemyAttack[] = +{ + AFFINEANIMCMD_FRAME(0, 0, 128, 1), //180 degree turn + AFFINEANIMCMD_FRAME(0, 0, 0, 2), //Pause + AFFINEANIMCMD_FRAME(16, 16, 0, 15), //Double in size + AFFINEANIMCMD_END +}; +static const union AffineAnimCmd sSpriteAffineAnim_GrowingSuperpowerPlayerAttack[] = +{ + AFFINEANIMCMD_FRAME(0, 0, 0, 2), //Pause + AFFINEANIMCMD_FRAME(16, 16, 0, 15), //Double in size + AFFINEANIMCMD_END +}; +static const union AffineAnimCmd* const sSpriteAffineAnimTable_GrowingSuperpower[] = +{ + sSpriteAffineAnim_GrowingSuperpowerPlayerAttack, + sSpriteAffineAnim_GrowingSuperpowerEnemyAttack, +}; +const struct SpriteTemplate gGrowingSuperpowerTemplate = //used in breakneck blitz +{ + .tileTag = ANIM_TAG_METEOR, + .paletteTag = ANIM_TAG_METEOR, + .oam = &sGrowingSuperpowerOAM, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = sSpriteAffineAnimTable_GrowingSuperpower, + .callback = SpriteCB_GrowingSuperpower +}; + +//steel beam +const struct SpriteTemplate gSteelBeamSpikeShardTemplate = +{ + .tileTag = ANIM_TAG_SPIKES, + .paletteTag = ANIM_TAG_SPIKES, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_ShadowBall, + .callback = AnimDirtScatter +}; + +//// functions +//general +static u8 LoadBattleAnimTarget(u8 arg) +{ + u8 battler; + + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + switch (gBattleAnimArgs[arg]) + { + case 0: + battler = gBattleAnimAttacker; + break; + default: + battler = gBattleAnimTarget; + break; + case 2: + battler = PARTNER(gBattleAnimAttacker); + break; + case 3: + battler = PARTNER(gBattleAnimTarget); + break; + } + } + else + { + if (gBattleAnimArgs[arg] == 0) + battler = gBattleAnimAttacker; + else + battler = gBattleAnimTarget; + } + + return battler; +} + +static u8 GetProperCentredCoord(u8 bank, u8 coordType) +{ + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + return (GetBattlerSpriteCoord2(bank, coordType) + GetBattlerSpriteCoord2(PARTNER(bank), coordType)) / 2; + + return GetBattlerSpriteCoord(bank, coordType); +} + +static void InitSpritePosToGivenTarget(struct Sprite* sprite, u8 target) +{ + sprite->pos1.x = GetBattlerSpriteCoord2(target, BATTLER_COORD_X); + sprite->pos1.y = GetBattlerSpriteCoord2(target, BATTLER_COORD_Y); + + SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]); + sprite->pos2.y = gBattleAnimArgs[1]; +} + +static void InitSpritePosToAnimTargetsCentre(struct Sprite *sprite, bool8 respectMonPicOffsets) +{ + if (!respectMonPicOffsets) + { + sprite->pos1.x = (GetBattlerSpriteCoord2(gBattleAnimTarget, BATTLER_COORD_X) + + GetBattlerSpriteCoord2(PARTNER(gBattleAnimTarget), BATTLER_COORD_X)) / 2; + sprite->pos1.y = (GetBattlerSpriteCoord2(gBattleAnimTarget, BATTLER_COORD_Y) + + GetBattlerSpriteCoord2(PARTNER(gBattleAnimTarget), BATTLER_COORD_Y)) / 2; + } + + SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]); + sprite->pos1.y += gBattleAnimArgs[1]; +} + +static void InitSpritePosToAnimAttackersCentre(struct Sprite *sprite, bool8 respectMonPicOffsets) +{ + if (!respectMonPicOffsets) + { + sprite->pos1.x = (GetBattlerSpriteCoord2(gBattleAnimAttacker, BATTLER_COORD_X) + + GetBattlerSpriteCoord2(PARTNER(gBattleAnimAttacker), BATTLER_COORD_X)) / 2; + sprite->pos1.y = (GetBattlerSpriteCoord2(gBattleAnimAttacker, BATTLER_COORD_Y) + + GetBattlerSpriteCoord2(PARTNER(gBattleAnimAttacker), BATTLER_COORD_Y)) / 2; + } + else + { + sprite->pos1.x = (GetBattlerSpriteCoord2(gBattleAnimAttacker, BATTLER_COORD_X_2) + + GetBattlerSpriteCoord2(PARTNER(gBattleAnimAttacker), BATTLER_COORD_X_2)) / 2; + sprite->pos1.y = (GetBattlerSpriteCoord2(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) + + GetBattlerSpriteCoord2(PARTNER(gBattleAnimAttacker), BATTLER_COORD_Y_PIC_OFFSET)) / 2; + } + + SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]); + sprite->pos1.y += gBattleAnimArgs[1]; +} + +//sprite callbacks +static void SpriteCB_SpriteToCentreOfSide(struct Sprite* sprite) +{ + bool8 var; + + if (!sprite->data[0]) + { + if (!gBattleAnimArgs[3]) + var = TRUE; + else + var = FALSE; + + if (gBattleAnimArgs[2] == 0) //Attacker + { + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + InitSpritePosToAnimAttackersCentre(sprite, var); + else + InitSpritePosToAnimAttacker(sprite, var); + } + else + { + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + InitSpritePosToAnimTargetsCentre(sprite, var); + else + InitSpritePosToAnimTarget(sprite, var); + } + + sprite->data[0]++; + } + else if (sprite->animEnded || sprite->affineAnimEnded) + { + DestroySpriteAndMatrix(sprite); + } +} + +static void SpriteCB_SpriteOnMonForDuration(struct Sprite *sprite) +{ + u8 target = LoadBattleAnimTarget(0); + + if (!IsBattlerSpriteVisible(target)) + { + DestroyAnimSprite(sprite); + } + else + { + sprite->pos1.x = GetBattlerSpriteCoord(target, 0); + sprite->pos1.y = GetBattlerSpriteCoord(target, 1); + sprite->pos1.x += gBattleAnimArgs[1]; + sprite->pos1.y += gBattleAnimArgs[2]; + sprite->data[0] = 0; + sprite->data[1] = gBattleAnimArgs[3]; + sprite->data[2] = gBattleAnimArgs[4]; + sprite->data[3] = 0; + sprite->callback = AnimBrickBreakWall_Step; + } +} + +static void SpriteCB_ToxicThreadWrap(struct Sprite *sprite) +{ + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + sprite->pos1.x -= gBattleAnimArgs[0]; + else + sprite->pos1.x += gBattleAnimArgs[0]; + + sprite->pos1.y += gBattleAnimArgs[1]; + if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + sprite->pos1.y += 8; + + sprite->callback = AnimStringWrap_Step; +} + + +static void SpriteCB_GrowingSuperpower(struct Sprite *sprite) +{ + u8 battler; + + if (gBattleAnimArgs[0] == 0) + { + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); + battler = gBattleAnimTarget; + sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker); + } + else + { + battler = gBattleAnimAttacker; + sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget); + } + + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT) + StartSpriteAffineAnim(sprite, 1); + + sprite->data[0] = 16; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = GetBattlerSpriteCoord(battler, 2); + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = GetBattlerSpriteCoord(battler, 3); + + InitAnimLinearTranslation(sprite); + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); + sprite->callback = sub_80A6F98; +} + +static void SpriteCB_CentredSpiderWeb(struct Sprite* sprite) +{ + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + InitSpritePosToAnimTargetsCentre(sprite, FALSE); + else + InitSpritePosToAnimTarget(sprite, FALSE); + + sprite->callback = AnimSpiderWeb; +} + +static void SpriteCB_CoreEnforcerHits(struct Sprite* sprite) +{ + StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]); + + if (gBattleAnimArgs[2] == 0) + { + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + InitSpritePosToAnimAttackersCentre(sprite, FALSE); + else + InitSpritePosToAnimAttacker(sprite, FALSE); + } + else + { + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + InitSpritePosToAnimTargetsCentre(sprite, FALSE); + else + InitSpritePosToAnimTarget(sprite, FALSE); + } + + sprite->pos1.y += 20; + sprite->callback = AnimFlashingHitSplat_Step; +} + +static void SpriteCB_CoreEnforcerBeam(struct Sprite* sprite) +{ + if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) + { + AnimSolarbeamBigOrb(sprite); + } + else + { + InitSpritePosToAnimAttacker(sprite, TRUE); + StartSpriteAnim(sprite, gBattleAnimArgs[3]); + + sprite->data[0] = gBattleAnimArgs[2]; + + sprite->data[2] = (GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + + GetBattlerSpriteCoord(PARTNER(gBattleAnimTarget), BATTLER_COORD_X_2)) / 2; + + + sprite->data[4] = (GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + + GetBattlerSpriteCoord(PARTNER(gBattleAnimTarget), BATTLER_COORD_Y_PIC_OFFSET)) / 2; + + sprite->callback = StartAnimLinearTranslation; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); + } +} + +static void SpriteCB_TranslateAnimSpriteToTargetMonLocationDoubles(struct Sprite* sprite) +{ + bool8 v1; + u8 target; + u8 coordType; + + if (!(gBattleAnimArgs[5] & 0xff00)) + v1 = TRUE; + else + v1 = FALSE; + + if (!(gBattleAnimArgs[5] & 0xff)) + coordType = BATTLER_COORD_Y_PIC_OFFSET; + else + coordType = BATTLER_COORD_Y; + + InitSpritePosToAnimAttacker(sprite, v1); + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + + target = LoadBattleAnimTarget(6); + + if (!IsBattlerSpriteVisible(target)) + DestroyAnimSprite(sprite); + else + { + sprite->data[0] = gBattleAnimArgs[4]; + sprite->data[2] = GetBattlerSpriteCoord(target, BATTLER_COORD_X_2) + gBattleAnimArgs[2]; + sprite->data[4] = GetBattlerSpriteCoord(target, coordType) + gBattleAnimArgs[3]; + sprite->callback = StartAnimLinearTranslation; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); + } +} + +//Causes an object to fall from the sky. +//arg 0: initial x pixel offset +//arg 1: initial y pixel offset +//arg 2: speed +//arg 3: anim bank +static void SpriteCB_FallingObject(struct Sprite *sprite) +{ + u8 target = LoadBattleAnimTarget(3); + + if (!IsBattlerSpriteVisible(target)) + DestroyAnimSprite(sprite); + else + { + sprite->pos1.x = GetBattlerSpriteCoord2(target, BATTLER_COORD_X); + sprite->pos1.y = GetBattlerSpriteCoord2(target, BATTLER_COORD_Y); + + sprite->pos2.x = gBattleAnimArgs[0]; + sprite->pos1.y = gBattleAnimArgs[1]; + sprite->pos2.y = -gBattleAnimArgs[1]; + + if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + { + sprite->pos1.y += 45; + sprite->pos2.y -= 45; + } + + sprite->data[3] = gBattleAnimArgs[2]; //Speed + sprite->callback = SpriteCB_FallingObjectStep; + } +} +static void SpriteCB_FallingObjectStep(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + sprite->pos2.y += sprite->data[3]; + if (sprite->pos2.y >= 0) + { + sprite->pos2.y = 0; + sprite->data[0]++; + } + break; + case 1: + if (++sprite->data[1] > 0) + { + sprite->data[1] = 0; + sprite->invisible ^= 1; + if (++sprite->data[2] == 10) + DestroySpriteAndMatrix(sprite); + } + break; + } +} + +static void SpriteCB_SunsteelStrikeRings(struct Sprite* sprite) +{ + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + { + sprite->pos1.x = 272; + sprite->pos1.y = -32; + } + else + { + sprite->pos1.x = -32; + sprite->pos1.y = -32; + } + + sprite->data[0] = gBattleAnimArgs[0]; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); + + InitAnimLinearTranslation(sprite); + sprite->callback = AnimFlyBallAttack_Step; +} + +//arg 0: initial x pixel offset +//arg 1: initial y pixel offset +//arg 2: target x pixel offset +//arg 3: target y pixel offset +//arg 4: duration +//arg 5: wave amplitude +static void SpriteCB_MoongeistCharge(struct Sprite *sprite) +{ + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + gBattleAnimArgs[0]; + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[1]; + + sprite->data[0] = gBattleAnimArgs[4]; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + gBattleAnimArgs[2]; //Target X + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3]; //Target Y + sprite->data[5] = gBattleAnimArgs[5]; + + InitAnimArcTranslation(sprite); + sprite->callback = AnimMissileArc_Step; +} + +//Spins a sprite towards the target, pausing in the middle. +//Used in Mind Blown. +//arg 0: duration step 1 (attacker -> center) +//arg 1: duration step 2 (spin center) +//arg 2: duration step 3 (center -> target) +static void SpriteCB_MindBlownBall(struct Sprite *sprite) +{ + s16 oldPosX = sprite->pos1.x; + s16 oldPosY = sprite->pos1.y; + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); + sprite->data[0] = 0; + sprite->data[1] = gBattleAnimArgs[0]; + sprite->data[2] = gBattleAnimArgs[1]; + sprite->data[3] = gBattleAnimArgs[2]; + sprite->data[4] = sprite->pos1.x << 4; + sprite->data[5] = sprite->pos1.y << 4; + sprite->data[6] = ((oldPosX - sprite->pos1.x) << 4) / (gBattleAnimArgs[0] << 1); + sprite->data[7] = ((oldPosY - sprite->pos1.y) << 4) / (gBattleAnimArgs[0] << 1); + sprite->callback = AnimMindBlownBallStep; +} +static void AnimMindBlownBallStep(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + sprite->data[4] += sprite->data[6]; + sprite->data[5] += sprite->data[7]; + sprite->pos1.x = sprite->data[4] >> 4; + sprite->pos1.y = sprite->data[5] >> 4; + sprite->data[1] -= 1; + if (sprite->data[1] > 0) + break; + sprite->data[0] += 1; + break; + case 1: + sprite->data[2] -= 1; + if (sprite->data[2] > 0) + break; + + sprite->data[1] = GetProperCentredCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + sprite->data[2] = GetProperCentredCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); + sprite->data[4] = sprite->pos1.x << 4; + sprite->data[5] = sprite->pos1.y << 4; + sprite->data[6] = ((sprite->data[1] - sprite->pos1.x) << 4) / sprite->data[3]; + sprite->data[7] = ((sprite->data[2] - sprite->pos1.y) << 4) / sprite->data[3]; + sprite->data[0] += 1; + break; + case 2: + sprite->data[4] += sprite->data[6]; + sprite->data[5] += sprite->data[7]; + sprite->pos1.x = sprite->data[4] >> 4; + sprite->pos1.y = sprite->data[5] >> 4; + sprite->data[3] -= 1; + if (sprite->data[3] > 0) + break; + sprite->pos1.x = GetProperCentredCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + sprite->pos1.y = GetProperCentredCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); + sprite->data[0] += 1; + break; + case 3: + DestroySpriteAndMatrix(sprite); + break; + } +} + +static void SpriteCB_MindBlownExplosion(struct Sprite* sprite) +{ + u8 a; + u8 b; + u16 x; + u16 y; + + if (gBattleAnimArgs[4] == 0) + { + DestroyAnimSprite(sprite); + } + else + { + a = GetProperCentredCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + b = GetProperCentredCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); + + sprite->data[0] = gBattleAnimArgs[4]; + if (gBattleAnimArgs[1] == 0) + { + sprite->pos1.x = gBattleAnimArgs[2] + a; + sprite->pos1.y = gBattleAnimArgs[3] + b; + sprite->data[5] = a; + sprite->data[6] = b; + } + else + { + sprite->pos1.x = a; + sprite->pos1.y = b; + sprite->data[5] = gBattleAnimArgs[2] + a; + sprite->data[6] = gBattleAnimArgs[3] + b; + } + + x = sprite->pos1.x; + sprite->data[1] = x * 16; + y = sprite->pos1.y; + sprite->data[2] = y * 16; + sprite->data[3] = (sprite->data[5] - sprite->pos1.x) * 16 / gBattleAnimArgs[4]; + sprite->data[4] = (sprite->data[6] - sprite->pos1.y) * 16 / gBattleAnimArgs[4]; + + sprite->callback = AnimNeedleArmSpike_Step; + } +} + +static void SpriteCB_RandomCentredHits(struct Sprite* sprite) +{ + if (gBattleAnimArgs[1] == -1) + gBattleAnimArgs[1] = Random() & 3; + + StartSpriteAffineAnim(sprite, gBattleAnimArgs[1]); + + if (gBattleAnimArgs[0] == 0) + { + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + InitSpritePosToAnimAttackersCentre(sprite, FALSE); + else + InitSpritePosToAnimAttacker(sprite, FALSE); + } + else + { + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + InitSpritePosToAnimTargetsCentre(sprite, FALSE); + else + InitSpritePosToAnimTarget(sprite, FALSE); + } + + sprite->pos2.x += (Random() % 48) - 24; + sprite->pos2.y += (Random() % 24) - 12; + + StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); + sprite->callback = RunStoredCallbackWhenAffineAnimEnds; +} + +//Creates a jaw that bites down and locks on the target. +//args: Idk same as bite and crunch +//arg 6: Time to hold bite for. +static void SpriteCB_LockingJaw(struct Sprite *sprite) +{ + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + StartSpriteAffineAnim(sprite, gBattleAnimArgs[2]); + sprite->data[0] = gBattleAnimArgs[3]; + sprite->data[1] = gBattleAnimArgs[4]; + sprite->data[2] = gBattleAnimArgs[5]; + sprite->data[6] = -gBattleAnimArgs[6]; + sprite->callback = SpriteCB_LockingJawStep; +} +static void SpriteCB_LockingJawStep(struct Sprite *sprite) +{ + sprite->data[4] += sprite->data[0]; + sprite->data[5] += sprite->data[1]; + sprite->pos2.x = sprite->data[4] >> 8; + sprite->pos2.y = sprite->data[5] >> 8; + if (++sprite->data[3] == sprite->data[2]) + sprite->callback = SpriteCB_LockingJawFinish; +} +static void SpriteCB_LockingJawFinish(struct Sprite *sprite) +{ + if (--sprite->data[3] <= sprite->data[6]) + DestroySpriteAndMatrix(sprite); +} + +//Creates a sprite that moves left then right along the target. +//arg 0: Slice distance +//arg 1: Speed +static void SpriteCB_LeftRightSlice(struct Sprite *sprite) +{ + sprite->pos2.x = gBattleAnimArgs[0]; + sprite->data[0] = -gBattleAnimArgs[0]; //Slice distance + sprite->data[1] = gBattleAnimArgs[1]; //Slice speed + sprite->callback = SpriteCB_LeftRightSliceStep0; +} +static void SpriteCB_LeftRightSliceStep1(struct Sprite *sprite) +{ + sprite->pos2.x += sprite->data[1]; + if (sprite->pos2.x >= sprite->data[0]) + DestroyAnimSprite(sprite); +} +static void SpriteCB_LeftRightSliceStep0(struct Sprite *sprite) +{ + sprite->pos2.x -= sprite->data[1]; + if (sprite->pos2.x <= sprite->data[0]) + { + sprite->data[0] = -sprite->data[0]; + sprite->callback = SpriteCB_LeftRightSliceStep1; + } +} + +//Creates a rock that bounces between the attacker's feet. +//arg 0: initial x pixel offset +//arg 1: initial y pixel offset +//arg 2: Ignore horizontal motion if TRUE. Only bounce once. +#define sVerticalTime sprite->data[0] +#define sHorizontalTime sprite->data[1] +#define sMovingBackHorizontally sprite->data[2] +static void SpriteCB_PyroBallRockBounceStep(struct Sprite* sprite) +{ + s8 initialVerticalVelocity; + s8 initialHorizontalVelocity; + + if (sprite->pos2.y > 0) //Rock returned back down + { + if (gBattleAnimArgs[2] || sMovingBackHorizontally) //Finished moving from left to right + DestroyAnimSprite(sprite); + else + { + sVerticalTime = 0; + sMovingBackHorizontally = TRUE; + } + } + + initialVerticalVelocity = -6; + initialHorizontalVelocity = -1; //Starts by moving right to left + + //vi = -6 + //g = 0.25 (gravity not negative b/c go up to go closer to 0) + //h = vi*t + 0.5g*t^2 + //t = sVerticalTime + sprite->pos2.y = (initialVerticalVelocity * sVerticalTime + (1 * sVerticalTime * sVerticalTime) / 4); + + //x = vi*t + //vi = sprite->data[2] + //t = sHorizontalTime + if (!gBattleAnimArgs[2]) + sprite->pos2.x = (initialHorizontalVelocity * sHorizontalTime); + + sVerticalTime++; + + if (sMovingBackHorizontally) + sHorizontalTime--; //Move left to right + else + sHorizontalTime++; //Move right to left +} + +static void InitSpritePositionForPyroBall(struct Sprite* sprite) +{ + InitSpritePosToAnimAttacker(sprite, 0); + sprite->pos1.y += 20; //Move closer to attacker's feet + + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + sprite->pos1.y += 20; //Move below the text box + +} + +static void SpriteCB_PyroBallRockBounce(struct Sprite* sprite) +{ + InitSpritePositionForPyroBall(sprite); + sprite->callback = SpriteCB_PyroBallRockBounceStep; +} +#undef sVerticalTime +#undef sHorizontalTime +#undef sMovingBackHorizontally + +//Launches a projectile from the attacker's feet at the target. +//arg 0: initial x pixel offset +//arg 1: initial y pixel offset +//arg 2: target x pixel offset +//arg 3: target y pixel offset +//arg 4: duration +//arg 5: wave amplitude +static void SpriteCB_PyroBallLaunch(struct Sprite* sprite) +{ + InitSpritePositionForPyroBall(sprite); + + if (GetBattlerSide(gBattleAnimAttacker)) + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + + sprite->data[0] = gBattleAnimArgs[4]; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2]; //Target X + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3]; //Target Y + sprite->data[5] = gBattleAnimArgs[5]; + InitAnimArcTranslation(sprite); + + sprite->callback = AnimMissileArc_Step; +} + +//Throws acid at a single target. +static void SpriteCB_AcidLaunchSingleTarget(struct Sprite *sprite) +{ + s16 l1, l2; + + if (!gBattleAnimArgs[3]) + StartSpriteAnim(sprite, 2); + + InitSpritePosToAnimTarget(sprite, TRUE); + l1 = sprite->pos1.x; l2 = sprite->pos1.y; + InitSpritePosToAnimAttacker(sprite, TRUE); + if (GetBattlerSide(gBattleAnimAttacker)) + gBattleAnimArgs[4] = -gBattleAnimArgs[4]; + + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[2] = l1 + gBattleAnimArgs[4]; + sprite->data[4] = l2 + gBattleAnimArgs[5]; + sprite->data[5] = -30; + InitAnimArcTranslation(sprite); + sprite->callback = AnimAcidPoisonBubble_Step; +} + +//Causes acid to drip down a single target. +static void SpriteCB_AcidDripSingleTarget(struct Sprite *sprite) +{ + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + gBattleAnimArgs[0] = -gBattleAnimArgs[0]; + + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + + sprite->data[0] = gBattleAnimArgs[4]; + sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2]; + sprite->data[4] = sprite->pos1.y + sprite->data[0]; + + sprite->callback = StartAnimLinearTranslation; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); +} + +//Causes an object to fall from the sky. +//arg 0: initial x pixel offset +//arg 1: initial y pixel offset +//arg 2: anim bank +static void SpriteCB_WaterDroplet(struct Sprite *sprite) +{ + u8 target = LoadBattleAnimTarget(2); + + if (!IsBattlerSpriteVisible(target)) + DestroyAnimSprite(sprite); + else + { + InitSpritePosToGivenTarget(sprite, target); + sprite->data[1] = sprite->pos1.y; //Target's y coord + + sprite->pos2.x = gBattleAnimArgs[0]; + sprite->pos2.y = 0; + + //Put droplet at the top of the screen + sprite->pos1.y = 15; + + sprite->callback = SpriteCB_WaterDropletDrip; + } +} +static void SpriteCB_WaterDropletDrip(struct Sprite *sprite) +{ + sprite->data[0] = 12; + StartSpriteAnim(sprite, 0); + sprite->callback = WaitAnimForDuration; + StoreSpriteCallbackInData6(sprite, SpriteCB_WaterDropletDrop); +} +static void SpriteCB_WaterDropletDrop(struct Sprite *sprite) +{ + sprite->pos2.y += 4; + if (sprite->pos2.y >= sprite->data[1]) + { + sprite->data[0] = 19; + StartSpriteAnim(sprite, 1); + sprite->callback = WaitAnimForDuration; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); + } +} + +static void SpriteCB_AnimSpriteOnSelectedMonPos(struct Sprite *sprite) +{ + if (!sprite->data[0]) + { + u8 target = LoadBattleAnimTarget(2); + + if (!IsBattlerSpriteVisible(target)) + DestroyAnimSprite(sprite); + else + { + InitSpritePosToGivenTarget(sprite, target); + sprite->data[0]++; + } + } + else if (sprite->animEnded || sprite->affineAnimEnded) + { + DestroySpriteAndMatrix(sprite); + } +} + +static void SpriteCB_SurroundingRing(struct Sprite *sprite) +{ + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 40; + + sprite->data[0] = 13; + sprite->data[2] = sprite->pos1.x; + sprite->data[4] = sprite->pos1.y - 72; + + sprite->callback = StartAnimLinearTranslation; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); +} + +//Imitates launching a beam of light towards the sky +//arg 0: initial x pixel offset +//arg 1: initial y pixel offset +//arg 2: bank +//arg 3: duration +//arg 4: Anim num +//arg 5: affine anim start delay +static void SpriteCB_PhotonGeyserBeam(struct Sprite* sprite) +{ + u8 target = LoadBattleAnimTarget(2); + + if (!IsBattlerSpriteVisible(target)) + DestroyAnimSprite(sprite); + else + { + InitSpritePosToGivenTarget(sprite, target); + StartSpriteAnim(sprite, gBattleAnimArgs[4]); + sprite->data[0] = gBattleAnimArgs[3]; + sprite->data[1] = gBattleAnimArgs[5]; + sprite->callback = SpriteCB_BeamUpStep; + } +} +//Animates the beam of light +static void SpriteCB_BeamUpStep(struct Sprite* sprite) +{ + if (sprite->data[1]-- == 0) + StartSpriteAffineAnim(sprite, 1); + + if (sprite->data[0]-- <= 0) + DestroySpriteAndMatrix(sprite); +} + +static void SpriteCB_CentredElectricity(struct Sprite* sprite) +{ + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + InitSpritePosToAnimTargetsCentre(sprite, FALSE); + else + InitSpritePosToAnimTarget(sprite, FALSE); + + sprite->oam.tileNum += gBattleAnimArgs[3] * 4; + + if (gBattleAnimArgs[3] == 1) + sprite->oam.matrixNum = 8; + else if (gBattleAnimArgs[3] == 2) + sprite->oam.matrixNum = 16; + + sprite->data[0] = gBattleAnimArgs[2]; + sprite->callback = WaitAnimForDuration; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); +} + +static void AnimSkyDropBallUp(struct Sprite *sprite) +{ + InitSpritePosToAnimTarget(sprite, TRUE); + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[1] = gBattleAnimArgs[3]; + sprite->callback = AnimFlyBallUp_Step; + gSprites[GetAnimBattlerSpriteId(ANIM_ATTACKER)].invisible = TRUE; +} + +static void SpriteCB_SearingShotRock(struct Sprite* sprite) +{ + u8 target = LoadBattleAnimTarget(4); + + if (!IsBattlerSpriteVisible(target)) + { + DestroyAnimSprite(sprite); + } + else + { + InitSpritePosToGivenTarget(sprite, target); + StartSpriteAnim(sprite, gBattleAnimArgs[2]); + sprite->data[0] = gBattleAnimArgs[3]; + sprite->callback = WaitAnimForDuration; + StoreSpriteCallbackInData6(sprite, AnimSpinningKickOrPunchFinish); + } +} + +static void AnimHappyHourCoinShower(struct Sprite *sprite) +{ + if (gBattleAnimArgs[3] != 0) + SetAverageBattlerPositions(gBattleAnimAttacker, 0, &sprite->pos1.x, &sprite->pos1.y); //coin shower on attacker + + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += 14; + StartSpriteAnim(sprite, gBattleAnimArgs[1]); + AnimateSprite(sprite); + sprite->data[0] = 0; + sprite->data[1] = 0; + sprite->data[2] = 4; + sprite->data[3] = 16; + sprite->data[4] = -70; + sprite->data[5] = gBattleAnimArgs[2]; + StoreSpriteCallbackInData6(sprite, AnimFallingRock_Step); + sprite->callback = TranslateSpriteInEllipseOverDuration; + sprite->callback(sprite); +} + +//Launches an object upwards like they were being shot from a geyser +//arg 0: null +//arg 1: initial x pixel offset +//arg 2: initial y pixel offset +static void SpriteCB_Geyser(struct Sprite* sprite) +{ + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[1]; + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[2]; + + sprite->data[0] = gBattleAnimArgs[1] > 0 ? 1 : -1; + sprite->callback = AnimMudSportDirtRising; +} + +// Anim Task Functions +static void AnimTask_WaitAffineAnim(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + + if (!RunAffineAnimFromTaskData(task)) + DestroyAnimVisualTask(taskId); +} + +void AnimTask_SquishTarget(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + u8 spriteId = GetAnimBattlerSpriteId(ANIM_TARGET); + + PrepareAffineAnimInTaskData(task, spriteId, sSquishTargetAffineAnimCmds); + task->func = AnimTask_WaitAffineAnim; +} + +void AnimTask_IsTargetPartner(u8 taskId) +{ + if (gBattleAnimTarget == PARTNER(gBattleAnimAttacker)) + gBattleAnimArgs[0] = 1; + else + gBattleAnimArgs[0] = 0; + + DestroyAnimVisualTask(taskId); +} + +void AnimTask_AllBanksInvisible(u8 taskId) +{ + int i; + u8 spriteId; + + for (i = 0; i < gBattlersCount; ++i) + { + spriteId = gBattlerSpriteIds[i]; + if (spriteId != 0xFF) + gSprites[spriteId].invisible = TRUE; + } + + DestroyAnimVisualTask(taskId); +} + +void AnimTask_AllBanksVisible(u8 taskId) +{ + int i; + u8 spriteId; + + for (i = 0; i < gBattlersCount; ++i) + { + spriteId = gBattlerSpriteIds[i]; + if (spriteId != 0xFF) + gSprites[spriteId].invisible = FALSE; + } + + DestroyAnimVisualTask(taskId); +} + +void CoreEnforcerLoadBeamTarget(struct Sprite* sprite) +{ + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = (GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + + GetBattlerSpriteCoord(PARTNER(gBattleAnimTarget), BATTLER_COORD_X_2)) / 2; + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = (GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + + GetBattlerSpriteCoord(PARTNER(gBattleAnimTarget), BATTLER_COORD_Y_PIC_OFFSET)) / 2; +} + +void AnimTask_CreateBestowItem(u8 taskId) +{ + u8 iconSpriteId = AddItemIconSprite(ANIM_TAG_ITEM_BAG, ANIM_TAG_ITEM_BAG, gLastUsedItem); + + if (iconSpriteId != MAX_SPRITES) + { + gSprites[iconSpriteId].oam.priority = 2; + gSprites[iconSpriteId].callback = AnimThrowProjectile; + ++gAnimVisualTaskCount; + } + DestroyAnimVisualTask(taskId); +} + +//Creates purple flames that surround the target. +//No args. +void AnimTask_PurpleFlamesOnTarget(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + task->data[0] = 0; + task->data[1] = 16; + task->data[9] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + task->data[10] = GetBattlerYCoordWithElevation(gBattleAnimTarget); + task->data[11] = (GetBattlerSpriteCoordAttr(gBattleAnimTarget, BATTLER_COORD_ATTR_WIDTH) / 2) + 8; + task->data[7] = 0; + task->data[5] = GetBattlerSpriteBGPriority(gBattleAnimTarget); + task->data[6] = GetBattlerSpriteSubpriority(gBattleAnimTarget) - 2; + task->data[3] = 0; + task->data[4] = 16; + SetGpuReg(REG_OFFSET_BLDCNT, (BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL)); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 0x10)); + task->data[8] = 0; + task->func = AnimTask_GrudgeFlames_Step; +} + +void AnimTask_TechnoBlast(u8 taskId) +{ + //gBattleAnimArgs[0] = gItems[GetBattlerPartyData(gBattleAnimAttacker).item].holdEffectParam; + gBattleAnimArgs[0] = ItemId_GetHoldEffectParam(gBattleMons[gBattleAnimAttacker].item); + DestroyAnimVisualTask(taskId); +} + +// move checks +bool8 IsMoveAnimDarkVoid(void) +{ + return gAnimMoveIndex == MOVE_DARK_VOID; +} + +bool8 IsMoveAnimFlashCannonOrSteelBeam(void) +{ + return gAnimMoveIndex == MOVE_FLASH_CANNON || gAnimMoveIndex == MOVE_STEEL_BEAM; +} + +bool8 IsMoveAnimCoreEnforcer(void) +{ + return gAnimMoveIndex == MOVE_CORE_ENFORCER; +} + +bool8 IsMoveAnimAnchorShot(void) +{ + return gAnimMoveIndex == MOVE_ANCHOR_SHOT; +} + diff --git a/src/battle_anim_normal.c b/src/battle_anim_normal.c index f1ad164cea..fefa405627 100644 --- a/src/battle_anim_normal.c +++ b/src/battle_anim_normal.c @@ -16,14 +16,8 @@ static void sub_81159B4(struct Sprite *); static void AnimShakeMonOrBattleTerrain(struct Sprite *); static void AnimShakeMonOrBattleTerrain_Step(struct Sprite *); static void AnimShakeMonOrBattleTerrain_UpdateCoordOffsetEnabled(void); -static void AnimHitSplatBasic(struct Sprite *); static void AnimHitSplatPersistent(struct Sprite *); static void AnimHitSplatHandleInvert(struct Sprite *); -static void AnimHitSplatRandom(struct Sprite *); -static void AnimHitSplatOnMonEdge(struct Sprite *); -static void AnimCrossImpact(struct Sprite *); -static void AnimFlashingHitSplat(struct Sprite *); -static void AnimFlashingHitSplat_Step(struct Sprite *); static void AnimConfusionDuck_Step(struct Sprite *); static void BlendColorCycle(u8, u8, u8); static void AnimTask_BlendColorCycleLoop(u8); @@ -215,7 +209,7 @@ static const union AffineAnimCmd sAffineAnim_HitSplat_3[] = AFFINEANIMCMD_END, }; -static const union AffineAnimCmd *const sAffineAnims_HitSplat[] = +const union AffineAnimCmd *const gAffineAnims_HitSplat[] = { sAffineAnim_HitSplat_0, sAffineAnim_HitSplat_1, @@ -230,7 +224,7 @@ const struct SpriteTemplate gBasicHitSplatSpriteTemplate = .oam = &gOamData_AffineNormal_ObjBlend_32x32, .anims = gDummySpriteAnimTable, .images = NULL, - .affineAnims = sAffineAnims_HitSplat, + .affineAnims = gAffineAnims_HitSplat, .callback = AnimHitSplatBasic, }; @@ -241,7 +235,7 @@ const struct SpriteTemplate gHandleInvertHitSplatSpriteTemplate = .oam = &gOamData_AffineNormal_ObjBlend_32x32, .anims = gDummySpriteAnimTable, .images = NULL, - .affineAnims = sAffineAnims_HitSplat, + .affineAnims = gAffineAnims_HitSplat, .callback = AnimHitSplatHandleInvert, }; @@ -252,7 +246,7 @@ const struct SpriteTemplate gWaterHitSplatSpriteTemplate = .oam = &gOamData_AffineNormal_ObjBlend_32x32, .anims = gDummySpriteAnimTable, .images = NULL, - .affineAnims = sAffineAnims_HitSplat, + .affineAnims = gAffineAnims_HitSplat, .callback = AnimHitSplatBasic, }; @@ -263,7 +257,7 @@ const struct SpriteTemplate gRandomPosHitSplatSpriteTemplate = .oam = &gOamData_AffineNormal_ObjBlend_32x32, .anims = gDummySpriteAnimTable, .images = NULL, - .affineAnims = sAffineAnims_HitSplat, + .affineAnims = gAffineAnims_HitSplat, .callback = AnimHitSplatRandom, }; @@ -274,7 +268,7 @@ const struct SpriteTemplate gMonEdgeHitSplatSpriteTemplate = .oam = &gOamData_AffineNormal_ObjBlend_32x32, .anims = gDummySpriteAnimTable, .images = NULL, - .affineAnims = sAffineAnims_HitSplat, + .affineAnims = gAffineAnims_HitSplat, .callback = AnimHitSplatOnMonEdge, }; @@ -296,7 +290,7 @@ const struct SpriteTemplate gFlashingHitSplatSpriteTemplate = .oam = &gOamData_AffineNormal_ObjNormal_32x32, .anims = gDummySpriteAnimTable, .images = NULL, - .affineAnims = sAffineAnims_HitSplat, + .affineAnims = gAffineAnims_HitSplat, .callback = AnimFlashingHitSplat, }; @@ -307,7 +301,7 @@ const struct SpriteTemplate gPersistHitSplatSpriteTemplate = .oam = &gOamData_AffineNormal_ObjBlend_32x32, .anims = gDummySpriteAnimTable, .images = NULL, - .affineAnims = sAffineAnims_HitSplat, + .affineAnims = gAffineAnims_HitSplat, .callback = AnimHitSplatPersistent, }; @@ -1015,7 +1009,7 @@ static void AnimTask_ShakeBattleTerrain_Step(u8 taskId) #undef tTimer #undef tShakeDelay -static void AnimHitSplatBasic(struct Sprite *sprite) +void AnimHitSplatBasic(struct Sprite *sprite) { StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]); if (gBattleAnimArgs[2] == ANIM_ATTACKER) @@ -1051,7 +1045,7 @@ static void AnimHitSplatHandleInvert(struct Sprite *sprite) AnimHitSplatBasic(sprite); } -static void AnimHitSplatRandom(struct Sprite *sprite) +void AnimHitSplatRandom(struct Sprite *sprite) { if (gBattleAnimArgs[1] == -1) gBattleAnimArgs[1] = Random2() & 3; @@ -1069,7 +1063,7 @@ static void AnimHitSplatRandom(struct Sprite *sprite) sprite->callback = RunStoredCallbackWhenAffineAnimEnds; } -static void AnimHitSplatOnMonEdge(struct Sprite *sprite) +void AnimHitSplatOnMonEdge(struct Sprite *sprite) { sprite->data[0] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); sprite->pos1.x = gSprites[sprite->data[0]].pos1.x + gSprites[sprite->data[0]].pos2.x; @@ -1081,7 +1075,7 @@ static void AnimHitSplatOnMonEdge(struct Sprite *sprite) sprite->callback = RunStoredCallbackWhenAffineAnimEnds; } -static void AnimCrossImpact(struct Sprite *sprite) +void AnimCrossImpact(struct Sprite *sprite) { if (gBattleAnimArgs[2] == ANIM_ATTACKER) InitSpritePosToAnimAttacker(sprite, 1); @@ -1093,7 +1087,7 @@ static void AnimCrossImpact(struct Sprite *sprite) sprite->callback = WaitAnimForDuration; } -static void AnimFlashingHitSplat(struct Sprite *sprite) +void AnimFlashingHitSplat(struct Sprite *sprite) { StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]); if (gBattleAnimArgs[2] == ANIM_ATTACKER) @@ -1104,7 +1098,7 @@ static void AnimFlashingHitSplat(struct Sprite *sprite) sprite->callback = AnimFlashingHitSplat_Step; } -static void AnimFlashingHitSplat_Step(struct Sprite *sprite) +void AnimFlashingHitSplat_Step(struct Sprite *sprite) { sprite->invisible ^= 1; if (sprite->data[0]++ > 12) diff --git a/src/battle_anim_poison.c b/src/battle_anim_poison.c index cda06738ed..0972c9bff2 100644 --- a/src/battle_anim_poison.c +++ b/src/battle_anim_poison.c @@ -6,7 +6,6 @@ static void AnimSludgeProjectile(struct Sprite *); static void AnimSludgeProjectile_Step(struct Sprite *); static void AnimAcidPoisonBubble(struct Sprite *); -static void AnimAcidPoisonBubble_Step(struct Sprite *); static void AnimSludgeBombHitParticle_Step(struct Sprite *); static void AnimAcidPoisonDroplet(struct Sprite *); static void AnimBubbleEffect(struct Sprite *); @@ -60,12 +59,12 @@ static const union AnimCmd sAnim_SludgeBombHit[] = ANIMCMD_END, }; -static const union AnimCmd *const sAnims_PoisonProjectile[] = +const union AnimCmd *const gAnims_PoisonProjectile[] = { sAnim_PoisonProjectile, }; -static const union AnimCmd *const sAnims_AcidPoisonDroplet[] = +const union AnimCmd *const gAnims_AcidPoisonDroplet[] = { sAnim_AcidPoisonDroplet, }; @@ -104,7 +103,7 @@ const struct SpriteTemplate gSludgeProjectileSpriteTemplate = .tileTag = ANIM_TAG_POISON_BUBBLE, .paletteTag = ANIM_TAG_POISON_BUBBLE, .oam = &gOamData_AffineDouble_ObjNormal_16x16, - .anims = sAnims_PoisonProjectile, + .anims = gAnims_PoisonProjectile, .images = NULL, .affineAnims = gAffineAnims_PoisonProjectile, .callback = AnimSludgeProjectile, @@ -115,7 +114,7 @@ const struct SpriteTemplate gAcidPoisonBubbleSpriteTemplate = .tileTag = ANIM_TAG_POISON_BUBBLE, .paletteTag = ANIM_TAG_POISON_BUBBLE, .oam = &gOamData_AffineDouble_ObjNormal_16x16, - .anims = sAnims_PoisonProjectile, + .anims = gAnims_PoisonProjectile, .images = NULL, .affineAnims = gAffineAnims_PoisonProjectile, .callback = AnimAcidPoisonBubble, @@ -149,7 +148,7 @@ const struct SpriteTemplate gAcidPoisonDropletSpriteTemplate = .tileTag = ANIM_TAG_POISON_BUBBLE, .paletteTag = ANIM_TAG_POISON_BUBBLE, .oam = &gOamData_AffineDouble_ObjNormal_16x16, - .anims = sAnims_AcidPoisonDroplet, + .anims = gAnims_AcidPoisonDroplet, .images = NULL, .affineAnims = gAffineAnims_Droplet, .callback = AnimAcidPoisonDroplet, @@ -172,7 +171,7 @@ const struct SpriteTemplate gPoisonBubbleSpriteTemplate = .tileTag = ANIM_TAG_POISON_BUBBLE, .paletteTag = ANIM_TAG_POISON_BUBBLE, .oam = &gOamData_AffineNormal_ObjNormal_16x16, - .anims = sAnims_PoisonProjectile, + .anims = gAnims_PoisonProjectile, .images = NULL, .affineAnims = sAffineAnims_Bubble, .callback = AnimBubbleEffect, @@ -194,7 +193,7 @@ const struct SpriteTemplate gGreenPoisonDrip = .tileTag = ANIM_TAG_GREEN_POISON_BUBBLE, .paletteTag = ANIM_TAG_GREEN_POISON_BUBBLE, .oam = &gOamData_AffineDouble_ObjNormal_16x16, - .anims = sAnims_AcidPoisonDroplet, + .anims = gAnims_AcidPoisonDroplet, .images = NULL, .affineAnims = gAffineAnims_Droplet, .callback = AnimAcidPoisonDroplet, @@ -205,7 +204,7 @@ const struct SpriteTemplate gGreenPoisonBubble = .tileTag = ANIM_TAG_GREEN_POISON_BUBBLE, .paletteTag = ANIM_TAG_GREEN_POISON_BUBBLE, .oam = &gOamData_AffineDouble_ObjNormal_16x16, - .anims = sAnims_PoisonProjectile, + .anims = gAnims_PoisonProjectile, .images = NULL, .affineAnims = gAffineAnims_PoisonProjectile, .callback = AnimAcidPoisonBubble, @@ -445,7 +444,7 @@ static void AnimAcidPoisonBubble(struct Sprite *sprite) sprite->callback = AnimAcidPoisonBubble_Step; } -static void AnimAcidPoisonBubble_Step(struct Sprite *sprite) +void AnimAcidPoisonBubble_Step(struct Sprite *sprite) { if (TranslateAnimHorizontalArc(sprite)) DestroyAnimSprite(sprite); diff --git a/src/battle_anim_psychic.c b/src/battle_anim_psychic.c index 47023d437e..07756de451 100644 --- a/src/battle_anim_psychic.c +++ b/src/battle_anim_psychic.c @@ -21,7 +21,6 @@ static void AnimQuestionMark_Step1(struct Sprite *); static void AnimQuestionMark_Step2(struct Sprite *); static void AnimRedX(struct Sprite *); static void AnimSkillSwapOrb(struct Sprite *); -static void AnimPsychoBoost(struct Sprite *); static void AnimTask_MeditateStretchAttacker_Step(u8); static void AnimTask_Teleport_Step(u8); static void AnimTask_ImprisonOrbs_Step(u8); @@ -404,7 +403,7 @@ static const union AffineAnimCmd sAffineAnim_PsychoBoostOrb_1[] = AFFINEANIMCMD_END, }; -static const union AffineAnimCmd *const sAffineAnims_PsychoBoostOrb[] = +const union AffineAnimCmd *const gAffineAnims_PsychoBoostOrb[] = { sAffineAnim_PsychoBoostOrb_0, sAffineAnim_PsychoBoostOrb_1, @@ -417,7 +416,7 @@ const struct SpriteTemplate gPsychoBoostOrbSpriteTemplate = .oam = &gOamData_AffineDouble_ObjBlend_64x64, .anims = gDummySpriteAnimTable, .images = NULL, - .affineAnims = sAffineAnims_PsychoBoostOrb, + .affineAnims = gAffineAnims_PsychoBoostOrb, .callback = AnimPsychoBoost, }; @@ -1236,7 +1235,7 @@ static void AnimTask_TransparentCloneGrowAndShrink_Step(u8 taskId) } } -static void AnimPsychoBoost(struct Sprite *sprite) +void AnimPsychoBoost(struct Sprite *sprite) { switch (sprite->data[0]) { diff --git a/src/battle_anim_rock.c b/src/battle_anim_rock.c index 22f9f2f8e6..7edef58e85 100644 --- a/src/battle_anim_rock.c +++ b/src/battle_anim_rock.c @@ -9,11 +9,7 @@ #include "constants/rgb.h" #include "constants/songs.h" -static void AnimFallingRock(struct Sprite *); -static void AnimFallingRock_Step(struct Sprite *); static void AnimRockFragment(struct Sprite *); -static void AnimFlyingSandCrescent(struct Sprite *); -static void AnimRaiseSprite(struct Sprite *); static void AnimTask_Rollout_Step(u8 taskId); static void AnimRolloutParticle(struct Sprite *); static void AnimRockTomb(struct Sprite *); @@ -21,7 +17,6 @@ static void AnimRockTomb_Step(struct Sprite *sprite); static void AnimRockBlastRock(struct Sprite *); static void AnimRockScatter(struct Sprite *); static void AnimRockScatter_Step(struct Sprite *sprite); -static void AnimParticleInVortex(struct Sprite *); static void AnimParticleInVortex_Step(struct Sprite *sprite); static void AnimTask_LoadSandstormBackground_Step(u8 taskId); static void sub_8111214(struct Task *task); @@ -96,7 +91,7 @@ static const union AffineAnimCmd sAffineAnim_Whirlpool[] = AFFINEANIMCMD_JUMP(1), }; -static const union AffineAnimCmd *const sAffineAnims_Whirlpool[] = +const union AffineAnimCmd *const gAffineAnims_Whirlpool[] = { sAffineAnim_Whirlpool, }; @@ -108,7 +103,7 @@ const struct SpriteTemplate gWhirlpoolSpriteTemplate = .oam = &gOamData_AffineNormal_ObjBlend_16x16, .anims = gAnims_WaterMudOrb, .images = NULL, - .affineAnims = sAffineAnims_Whirlpool, + .affineAnims = gAffineAnims_Whirlpool, .callback = AnimParticleInVortex, }; @@ -255,7 +250,7 @@ static const union AffineAnimCmd sAffineAnim_BasicRock_1[] = AFFINEANIMCMD_JUMP(0), }; -static const union AffineAnimCmd *const sAffineAnims_BasicRock[] = +const union AffineAnimCmd *const gAffineAnims_BasicRock[] = { sAffineAnim_BasicRock_0, sAffineAnim_BasicRock_1, @@ -268,7 +263,7 @@ const struct SpriteTemplate gRockBlastRockSpriteTemplate = .oam = &gOamData_AffineNormal_ObjNormal_32x32, .anims = sAnims_BasicRock, .images = NULL, - .affineAnims = sAffineAnims_BasicRock, + .affineAnims = gAffineAnims_BasicRock, .callback = AnimRockBlastRock, }; @@ -279,7 +274,7 @@ const struct SpriteTemplate gRockScatterSpriteTemplate = .oam = &gOamData_AffineNormal_ObjNormal_32x32, .anims = sAnims_BasicRock, .images = NULL, - .affineAnims = sAffineAnims_BasicRock, + .affineAnims = gAffineAnims_BasicRock, .callback = AnimRockScatter, }; @@ -290,7 +285,7 @@ const struct SpriteTemplate gTwisterRockSpriteTemplate = .oam = &gOamData_AffineOff_ObjNormal_32x32, .anims = sAnims_TwisterRock, .images = NULL, - .affineAnims = sAffineAnims_BasicRock, + .affineAnims = gAffineAnims_BasicRock, .callback = AnimMoveTwisterParticle, }; @@ -301,7 +296,7 @@ const struct SpriteTemplate gWeatherBallRockDownSpriteTemplate = .oam = &gOamData_AffineNormal_ObjNormal_32x32, .anims = sAnims_WeatherBallRockDown, .images = NULL, - .affineAnims = sAffineAnims_BasicRock, + .affineAnims = gAffineAnims_BasicRock, .callback = AnimWeatherBallDown, }; @@ -404,7 +399,7 @@ static void AnimStealthRockStep2(struct Sprite *sprite) DestroyAnimSprite(sprite); } -static void AnimFallingRock(struct Sprite *sprite) +void AnimFallingRock(struct Sprite *sprite) { if (gBattleAnimArgs[3] != 0) SetAverageBattlerPositions(gBattleAnimTarget, 0, &sprite->pos1.x, &sprite->pos1.y); @@ -427,7 +422,7 @@ static void AnimFallingRock(struct Sprite *sprite) sprite->callback(sprite); } -static void AnimFallingRock_Step(struct Sprite *sprite) +void AnimFallingRock_Step(struct Sprite *sprite) { sprite->pos1.x += sprite->data[5]; @@ -470,7 +465,7 @@ static void AnimRockFragment(struct Sprite *sprite) } // Swirls particle in vortex. Used for moves like Fire Spin or Sand Tomb -static void AnimParticleInVortex(struct Sprite *sprite) +void AnimParticleInVortex(struct Sprite *sprite) { if (gBattleAnimArgs[6] == ANIM_ATTACKER) InitSpritePosToAnimAttacker(sprite, 0); @@ -600,7 +595,7 @@ static void AnimTask_LoadSandstormBackground_Step(u8 taskId) // arg 1: projectile speed // arg 2: y pixel drop // arg 3: ??? unknown (possibly a color bit) -static void AnimFlyingSandCrescent(struct Sprite *sprite) +void AnimFlyingSandCrescent(struct Sprite *sprite) { if (sprite->data[0] == 0) { @@ -651,7 +646,7 @@ static void AnimFlyingSandCrescent(struct Sprite *sprite) // arg 2: terminal y offset // arg 3: duration // arg 4: sprite size [1,5] -static void AnimRaiseSprite(struct Sprite *sprite) +void AnimRaiseSprite(struct Sprite *sprite) { StartSpriteAnim(sprite, gBattleAnimArgs[4]); InitSpritePosToAnimAttacker(sprite, 0); diff --git a/src/battle_anim_water.c b/src/battle_anim_water.c index e975a8fe0b..0e9bfe214f 100644 --- a/src/battle_anim_water.c +++ b/src/battle_anim_water.c @@ -29,7 +29,6 @@ static void AnimHydroCannonCharge(struct Sprite *); static void AnimHydroCannonCharge_Step(struct Sprite *); static void AnimHydroCannonBeam(struct Sprite *); static void AnimWaterGunDroplet(struct Sprite *); -static void AnimSmallBubblePair(struct Sprite *); static void AnimSmallBubblePair_Step(struct Sprite *); static void AnimSmallDriftingBubbles(struct Sprite *); static void AnimSmallDriftingBubbles_Step(struct Sprite *); @@ -38,7 +37,6 @@ static void AnimWaterSpoutRain(struct Sprite *); static void AnimWaterSpoutRainHit(struct Sprite *); static void AnimWaterSportDroplet(struct Sprite *); static void AnimWaterSportDroplet_Step(struct Sprite *); -static void AnimWaterPulseBubble(struct Sprite *); static void AnimWaterPulseBubble_Step(struct Sprite *); static void AnimWaterPulseRingBubble(struct Sprite *); static void AnimWaterPulseRing_Step(struct Sprite *); @@ -111,7 +109,7 @@ static const union AnimCmd sAnim_WaterBubbleProjectile[] = ANIMCMD_END, }; -static const union AnimCmd *const sAnims_WaterBubbleProjectile[] = +const union AnimCmd *const gAnims_WaterBubbleProjectile[] = { sAnim_WaterBubbleProjectile, }; @@ -121,7 +119,7 @@ const struct SpriteTemplate gWaterBubbleProjectileSpriteTemplate = .tileTag = ANIM_TAG_BUBBLE, .paletteTag = ANIM_TAG_BUBBLE, .oam = &gOamData_AffineNormal_ObjBlend_16x16, - .anims = sAnims_WaterBubbleProjectile, + .anims = gAnims_WaterBubbleProjectile, .images = NULL, .affineAnims = sAffineAnims_WaterBubbleProjectile, .callback = AnimWaterBubbleProjectile, @@ -245,7 +243,7 @@ static const union AnimCmd sAnim_FlamethrowerFlame[] = ANIMCMD_JUMP(0), }; -static const union AnimCmd *const sAnims_FlamethrowerFlame[] = +const union AnimCmd *const gAnims_FlamethrowerFlame[] = { sAnim_FlamethrowerFlame, }; @@ -255,7 +253,7 @@ const struct SpriteTemplate gFlamethrowerFlameSpriteTemplate = .tileTag = ANIM_TAG_SMALL_EMBER, .paletteTag = ANIM_TAG_SMALL_EMBER, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = sAnims_FlamethrowerFlame, + .anims = gAnims_FlamethrowerFlame, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimToTargetInSinWave, @@ -266,7 +264,7 @@ const struct SpriteTemplate gFirePledgeSpriteTemplate = .tileTag = ANIM_TAG_SMALL_EMBER, .paletteTag = ANIM_TAG_SMALL_EMBER, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = sAnims_FlamethrowerFlame, + .anims = gAnims_FlamethrowerFlame, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimFlyUpTarget, @@ -425,7 +423,7 @@ static const union AnimCmd sAnim_WeatherBallWaterDown[] = ANIMCMD_END, }; -static const union AnimCmd *const sAnims_WaterPulseBubble[] = +const union AnimCmd *const gAnims_WaterPulseBubble[] = { sAnim_WaterPulseBubble_0, sAnim_WaterPulseBubble_1, @@ -473,7 +471,7 @@ const struct SpriteTemplate gWaterPulseBubbleSpriteTemplate = .tileTag = ANIM_TAG_SMALL_BUBBLES, .paletteTag = ANIM_TAG_SMALL_BUBBLES, .oam = &gOamData_AffineOff_ObjNormal_8x8, - .anims = sAnims_WaterPulseBubble, + .anims = gAnims_WaterPulseBubble, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimWaterPulseBubble, @@ -484,7 +482,7 @@ const struct SpriteTemplate gWaterPulseRingBubbleSpriteTemplate = .tileTag = ANIM_TAG_SMALL_BUBBLES, .paletteTag = ANIM_TAG_SMALL_BUBBLES, .oam = &gOamData_AffineNormal_ObjNormal_8x8, - .anims = sAnims_WaterPulseBubble, + .anims = gAnims_WaterPulseBubble, .images = NULL, .affineAnims = sAffineAnims_WaterPulseRingBubble, .callback = AnimWaterPulseRingBubble, @@ -1033,7 +1031,7 @@ static void AnimWaterGunDroplet(struct Sprite *sprite) StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); } -static void AnimSmallBubblePair(struct Sprite *sprite) +void AnimSmallBubblePair(struct Sprite *sprite) { if (gBattleAnimArgs[3] != ANIM_ATTACKER) InitSpritePosToAnimTarget(sprite, TRUE); @@ -1077,10 +1075,18 @@ void AnimTask_CreateSurfWave(u8 taskId) AnimLoadCompressedBgTilemapHandleContest(&animBg, gBattleAnimBgTilemap_SurfContest, 1); } AnimLoadCompressedBgGfx(animBg.bgId, gBattleAnimBgImage_Surf, animBg.tilesOffset); - if (gBattleAnimArgs[0] == 0) + switch (gBattleAnimArgs[0]) + { + case SURF_PALETTE_SURF: + default: LoadCompressedPalette(gBattleAnimBgPalette_Surf, animBg.paletteId * 16, 32); - else + break; + case SURF_PALETTE_MUDDY_WATER: LoadCompressedPalette(gBattleAnimBackgroundImageMuddyWater_Pal, animBg.paletteId * 16, 32); + case SURF_PALETTE_SLUDGE_WAVE: + LoadCompressedPalette(gBattleAnimBgPalette_SludgeWave, animBg.paletteId * 16, 32); + } + taskId2 = CreateTask(AnimTask_SurfWaveScanlineEffect, gTasks[taskId].priority + 1); gTasks[taskId].data[15] = taskId2; gTasks[taskId2].data[0] = 0; @@ -2125,7 +2131,7 @@ static void AnimWaterSportDroplet_Step(struct Sprite *sprite) } } -static void AnimWaterPulseBubble(struct Sprite *sprite) +void AnimWaterPulseBubble(struct Sprite *sprite) { sprite->pos1.x = gBattleAnimArgs[0]; sprite->pos1.y = gBattleAnimArgs[1]; diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c index a7422ea179..24366d9de2 100644 --- a/src/battle_gfx_sfx_util.c +++ b/src/battle_gfx_sfx_util.c @@ -481,7 +481,7 @@ static void Task_ClearBitWhenSpecialAnimDone(u8 taskId) // Great function to include newly added moves that don't have animation yet. bool8 IsMoveWithoutAnimation(u16 moveId, u8 animationTurn) { - if (moveId >= (MOVES_COUNT_GEN6 - 1)) + if (moveId >= (MOVES_COUNT - 1)) return TRUE; else return FALSE;