From c18b5966bf35a1667979963b93dd58413ccc3b95 Mon Sep 17 00:00:00 2001 From: Evan Date: Sun, 3 May 2020 22:09:03 -0600 Subject: [PATCH] undo some revert(?) --- data/battle_anim_scripts.s | 365 +++++++++++++++++- .../battle_anims/backgrounds/dark_void.bin | Bin 0 -> 1236 bytes .../battle_anims/backgrounds/dark_void.pal | 19 + .../battle_anims/backgrounds/dark_void.png | Bin 0 -> 7041 bytes .../backgrounds/spacial_rend_opponent.bin | Bin 0 -> 1000 bytes .../backgrounds/spacial_rend_opponent.pal | 19 + .../backgrounds/spacial_rend_opponent.png | Bin 0 -> 5861 bytes .../backgrounds/spacial_rend_player.bin | Bin 0 -> 996 bytes .../backgrounds/spacial_rend_player.pal | 19 + .../backgrounds/spacial_rend_player.png | Bin 0 -> 6948 bytes .../sprites/flash_cannon_ball.png | Bin 0 -> 257 bytes graphics/battle_anims/sprites/punishment.png | Bin 0 -> 470 bytes graphics/battle_anims/sprites/quick_guard.png | Bin 0 -> 205 bytes graphics/battle_anims/sprites/water_gun.png | Bin 0 -> 214 bytes include/battle_anim.h | 2 + include/constants/battle_anim.h | 7 + include/graphics.h | 17 + src/battle_anim.c | 11 + src/battle_anim_effects_1.c | 69 ++++ src/battle_anim_effects_2.c | 23 +- src/battle_anim_electric.c | 48 +++ src/battle_anim_fire.c | 22 ++ src/battle_anim_ghost.c | 11 + src/battle_anim_ice.c | 11 + src/battle_anim_rock.c | 37 ++ src/graphics.c | 24 ++ 26 files changed, 701 insertions(+), 3 deletions(-) create mode 100644 graphics/battle_anims/backgrounds/dark_void.bin create mode 100644 graphics/battle_anims/backgrounds/dark_void.pal create mode 100644 graphics/battle_anims/backgrounds/dark_void.png create mode 100644 graphics/battle_anims/backgrounds/spacial_rend_opponent.bin create mode 100644 graphics/battle_anims/backgrounds/spacial_rend_opponent.pal create mode 100644 graphics/battle_anims/backgrounds/spacial_rend_opponent.png create mode 100644 graphics/battle_anims/backgrounds/spacial_rend_player.bin create mode 100644 graphics/battle_anims/backgrounds/spacial_rend_player.pal create mode 100644 graphics/battle_anims/backgrounds/spacial_rend_player.png create mode 100644 graphics/battle_anims/sprites/flash_cannon_ball.png create mode 100644 graphics/battle_anims/sprites/punishment.png create mode 100644 graphics/battle_anims/sprites/quick_guard.png create mode 100644 graphics/battle_anims/sprites/water_gun.png diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index 6af4c3752b..6d3e9880fe 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -2841,6 +2841,40 @@ Move_MIRROR_SHOT: end Move_FLASH_CANNON: + loadspritegfx ANIM_TAG_HANDS_AND_FEET + loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT + loadspritegfx ANIM_TAG_ELECTRIC_ORBS + loadspritegfx ANIM_TAG_GUST + loadspritegfx ANIM_TAG_FLASH_CANNON_BALL + monbg ANIM_ATTACKER + setalpha 13, 8 + createvisualtask AnimTask_ElectricChargingParticles, 2, 0, 60, 2, 12 + playsewithpan 0xce, SOUND_PAN_ATTACKER + delay 30 + playsewithpan 0xce, SOUND_PAN_ATTACKER + delay 30 + playsewithpan 0xce, SOUND_PAN_ATTACKER + createsprite gFlashCannonGrayChargeTemplate, ANIM_ATTACKER, 2, 0 + delay 25 + playsewithpan 0xce, SOUND_PAN_ATTACKER + delay 20 + playsewithpan 0xce, SOUND_PAN_ATTACKER + delay 15 + playsewithpan 0xce, SOUND_PAN_ATTACKER + delay 10 + delay 6 + loopsewithpan 0xce, SOUND_PAN_ATTACKER, 6, 5 + waitforvisualfinish + playsewithpan 0xA7, SOUND_PAN_ATTACKER + createsprite gFlashCannonBallMovementTemplate, ANIM_TARGET, 2, 0, 0, 0x15 + clearmonbg ANIM_ATTACKER + waitforvisualfinish + playsewithpan 0xB9, 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 + waitforvisualfinish + clearmonbg ANIM_TARGET end Move_ROCK_CLIMB: @@ -3441,10 +3475,140 @@ Move_GRASS_KNOT: end Move_CHATTER: + loadspritegfx ANIM_TAG_JAGGED_MUSIC_NOTE + loadspritegfx ANIM_TAG_THIN_RING + loadspritegfx ANIM_TAG_MUSIC_NOTES + monbg ANIM_DEF_PARTNER + createvisualtask AnimTask_UproarDistortion, 2, 0 + createsprite gUproarRingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0, 0x1f, 8 + createvisualtask SoundTask_PlayDoubleCry, 2, ANIM_ATTACKER, 0xff + createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, 0x1d, -12, 0 + createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, -12, 0xffe3, 1 + delay 16 + createvisualtask AnimTask_UproarDistortion, 2, 0 + createsprite gUproarRingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0, 0x1f, 8 + createvisualtask SoundTask_PlayDoubleCry, 2, ANIM_ATTACKER, 0xff + createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, 12, 0xffe3, 1 + createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, 0xffe3, -12, 0 + delay 16 + createvisualtask AnimTask_UproarDistortion, 2, 0 + createsprite gUproarRingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0, 0x1f, 8 + createvisualtask SoundTask_PlayDoubleCry, 2, ANIM_ATTACKER, 0xff + createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, 0x18, 0xffe8, 1 + createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, 0xffe8, 0xffe8, 0 + waitforvisualfinish + loadspritegfx ANIM_TAG_ICE_CRYSTALS @FreezingCrystalsSingleBattle particles + createsprite gChatterSingNotesTemplate, ANIM_TARGET, 2, -10, -10, 0 + delay 4 + createsprite gChatterSingNotesTemplate, ANIM_TARGET, 2, 10, 20, 0 + delay 4 + createsprite gChatterSingNotesTemplate, ANIM_TARGET, 2, 0xfffb, 10, 0 + delay 4 + createsprite gChatterSingNotesTemplate, ANIM_TARGET, 2, 0x11, -12, 0 + delay 4 + createsprite gChatterSingNotesTemplate, ANIM_TARGET, 2, 0xfff1, 15, 0 + delay 4 + createsprite gChatterSingNotesTemplate, ANIM_TARGET, 2, 0, 0, 0 + delay 4 + createsprite gChatterSingNotesTemplate, ANIM_TARGET, 2, 20, 2, 0 + clearmonbg ANIM_DEF_PARTNER end Move_JUDGMENT: + loadspritegfx ANIM_TAG_HANDS_AND_FEET + loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT + loadspritegfx ANIM_TAG_GREEN_SPIKE + loadspritegfx ANIM_TAG_GUST + loadspritegfx ANIM_TAG_ORBS + loadspritegfx ANIM_TAG_ELECTRICITY + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_GUST, 0, 14, 14, 0 + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_HANDS_AND_FEET, 0, 10, 10, 0 + monbg ANIM_TARGET + createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 1, 0, 15, 32767 + waitforvisualfinish + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 83, 1 + createsprite gJudgmentBlackChargeTemplate, ANIM_TARGET, 1, 1, ANIM_TARGET + playsewithpan 0xb1, SOUND_PAN_TARGET + call JudgmentInwardSpikes + delay 5 + call JudgmentInwardSpikes2 + delay 5 + call JudgmentInwardSpikes + delay 5 + call JudgmentInwardSpikes2 + delay 5 + call JudgmentInwardSpikes + delay 5 + call JudgmentInwardSpikes2 + delay 5 + call JudgmentInwardSpikes2 + delay 0x2F + call JudgmentOutwardSpikes + delay 5 + call JudgmentOutwardSpikes2 + delay 5 + call JudgmentOutwardSpikes + delay 5 + call JudgmentOutwardSpikes2 + delay 5 + call JudgmentOutwardSpikes + delay 5 + call JudgmentOutwardSpikes2 + delay 5 + call JudgmentOutwardSpikes + delay 5 + call JudgmentOutwardSpikes2 + delay 5 + call JudgmentOutwardSpikes + delay 5 + call JudgmentOutwardSpikes2 + waitforvisualfinish + createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 1, 15, 0, 32767 + waitforvisualfinish + clearmonbg ANIM_TARGET end +JudgmentOutwardSpikes: + createsprite gJudgmentGrayOutwardSpikesTemplate, ANIM_TARGET, 2, 1, 1, 0, 0xFF90, 16 @up + createsprite gJudgmentGrayOutwardSpikesTemplate, ANIM_TARGET, 2, 1, 1, 95, 0xFF9D, 16 @upper right + createsprite gJudgmentGrayOutwardSpikesTemplate, ANIM_TARGET, 2, 1, 1, 0x73, 0, 16 @right + createsprite gJudgmentGrayOutwardSpikesTemplate, ANIM_TARGET, 2, 1, 1, 0x4F, 0x37, 16 @lower right + createsprite gJudgmentGrayOutwardSpikesTemplate, ANIM_TARGET, 2, 1, 1, 0, 0x53, 16 @down + 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 + return +JudgmentOutwardSpikes2: + createsprite gJudgmentGrayOutwardSpikesTemplate, ANIM_TARGET, 2, 1, 1, 0x2D, 0xFF9D, 16 @between up and upper right + createsprite gJudgmentGrayOutwardSpikesTemplate, ANIM_TARGET, 2, 1, 1, 0xDF, 0xFF9D, 16 @between right and upper right + createsprite gJudgmentGrayOutwardSpikesTemplate, ANIM_TARGET, 2, 1, 1, 0x9F, 0x37, 16 @between right and lower right + createsprite gJudgmentGrayOutwardSpikesTemplate, ANIM_TARGET, 2, 1, 1, 0x1F, 0x37, 16 @between lower right and down + createsprite gJudgmentGrayOutwardSpikesTemplate, ANIM_TARGET, 2, 1, 1, 0xFFE0, 0x43, 16 @between lower left and down + 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 + return +JudgmentInwardSpikes: + createsprite gJudgmentGrayInwardOrbsTemplate, ANIM_TARGET, 2, 1, 0, 0, 0xFF90, 16 @up + createsprite gJudgmentGrayInwardOrbsTemplate, ANIM_TARGET, 2, 1, 0, 95, 0xFF9D, 16 @upper right + createsprite gJudgmentGrayInwardOrbsTemplate, ANIM_TARGET, 2, 1, 0, 0x73, 0, 16 @right + createsprite gJudgmentGrayInwardOrbsTemplate, ANIM_TARGET, 2, 1, 0, 0x4F, 0x37, 16 @lower right + createsprite gJudgmentGrayInwardOrbsTemplate, ANIM_TARGET, 2, 1, 0, 0, 0x53, 16 @down + createsprite gJudgmentGrayInwardOrbsTemplate, ANIM_TARGET, 2, 1, 0, 0xFFB0, 0x43, 16 @lower left + createsprite gJudgmentGrayInwardOrbsTemplate, ANIM_TARGET, 2, 1, 0, 0xFF60, 0, 16 @left + createsprite gJudgmentGrayInwardOrbsTemplate, ANIM_TARGET, 2, 1, 0, 0xFFAA, 0xFF94, 16 @upper left + return +JudgmentInwardSpikes2: + createsprite gJudgmentGrayInwardOrbsTemplate, ANIM_TARGET, 2, 1, 0, 0x2D, 0xFF9D, 16 @between up and upper right + createsprite gJudgmentGrayInwardOrbsTemplate, ANIM_TARGET, 2, 1, 0, 0xDF, 0xFF9D, 16 @between right and upper right + createsprite gJudgmentGrayInwardOrbsTemplate, ANIM_TARGET, 2, 1, 0, 0x9F, 0x37, 16 @between right and lower right + createsprite gJudgmentGrayInwardOrbsTemplate, ANIM_TARGET, 2, 1, 0, 0x1F, 0x37, 16 @between lower right and down + createsprite gJudgmentGrayInwardOrbsTemplate, ANIM_TARGET, 2, 1, 0, 0xFFE0, 0x43, 16 @between lower left and down + createsprite gJudgmentGrayInwardOrbsTemplate, ANIM_TARGET, 2, 1, 0, 0xFF60, 0x43, 16 @between left and lower left + createsprite gJudgmentGrayInwardOrbsTemplate, ANIM_TARGET, 2, 1, 0, 0xFF2A, 0xFFAA, 16 @between left and upper left + createsprite gJudgmentGrayInwardOrbsTemplate, ANIM_TARGET, 2, 1, 0, 0xFFDA, 0xFF94, 16 @between up and upper left + return Move_BUG_BITE: loadspritegfx ANIM_TAG_ROCKS @@ -3764,11 +3928,80 @@ Move_DOUBLE_HIT: end Move_ROAR_OF_TIME: + loadspritegfx ANIM_TAG_ORBS + loadspritegfx ANIM_TAG_EXPLOSION + loadspritegfx ANIM_TAG_WATER_GUN + createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 1, 0, 16, 0 + delay 0x20 + monbg ANIM_ATK_PARTNER + setalpha 0xc, 0x8 + loopsewithpan 133, SOUND_PAN_ATTACKER 13 3 + call RecoverAbsorbEffect + waitforvisualfinish + clearmonbg ANIM_ATK_PARTNER + blendoff + createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 1, 16, 0, 0 + waitforvisualfinish + createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 1, 0, 16, -1 + createvisualtask SoundTask_PlayDoubleCry, 2, ANIM_ATTACKER, 0xff + delay 0x20 + createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 10, 0, 20, 1 + playsewithpan 170, SOUND_PAN_TARGET + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 1 + delay 6 + playsewithpan 170, SOUND_PAN_TARGET + createsprite gRoarOfTimeBombTemplate, ANIM_ATTACKER, 3, 0x18, 0xffe8, 1, 1 + delay 6 + playsewithpan 170, SOUND_PAN_TARGET + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0xfff0, 16, 1, 1 + delay 6 + playsewithpan 170, SOUND_PAN_TARGET + createsprite gRoarOfTimeBombTemplate, ANIM_ATTACKER, 3, 0xffe8, -12, 1, 1 + delay 6 + playsewithpan 170, SOUND_PAN_TARGET + createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 16, 16, 1, 1 + delay 6 + playsewithpan 170, SOUND_PAN_TARGET + createsprite gRoarOfTimeBombTemplate, ANIM_ATTACKER, 3, 0xffe8, 0x18, 1, 1 + waitforvisualfinish + createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 1, 16, 0, -1 + waitforvisualfinish end - + Move_SPECIAL_REND: + loadspritegfx ANIM_TAG_PUNISHMENT_BLADES + loadspritegfx ANIM_TAG_PINK_HEART_2 @ANIM_TAG_BERRY_EATEN + monbg ANIM_ATK_PARTNER + setalpha 12, 8 + createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 1, 0, 16, 0 + loopsewithpan 133, SOUND_PAN_ATTACKER 13 2 + createsprite gSpacialRendBladesTemplate, ANIM_ATTACKER, 3, 0, 0, 0x38, 0 + delay 2 + createsprite gSpacialRendBladesTemplate, ANIM_ATTACKER, 3, 0, 0, 0x38, 4 + delay 2 + createsprite gSpacialRendBladesTemplate, ANIM_ATTACKER, 3, 0, 0, 0x38, 8 + delay 2 + createsprite gSpacialRendBladesTemplate, ANIM_ATTACKER, 3, 0, 0, 0x38, 12 + 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 + 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 + createsprite gSpacialRendBladesTemplate2, ANIM_TARGET, 1, 5, 0, 10, 0xff40, 0xff90, 0x28 + createsprite gSpacialRendBladesTemplate2, ANIM_TARGET, 1, 5, 0, 10, 0xa0, 0x30, 0x28 + createsprite gSpacialRendBladesTemplate2, ANIM_TARGET, 1, 5, 0, 10, 0xff20, 0xffe0, 0x28 + createsprite gSpacialRendBladesTemplate2, ANIM_TARGET, 1, 5, 0, 10, 0x70, 0xff80, 0x28 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 15, 1 + waitforvisualfinish + restorebg + waitbgfadein + createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 1, 0, 0, 0 + clearmonbg ANIM_ATK_PARTNER + blendoff end - + Move_LUNAR_DANCE: loadspritegfx ANIM_TAG_MOON loadspritegfx ANIM_TAG_GREEN_SPARKLE @@ -3811,6 +4044,28 @@ Move_LUNAR_DANCE: end Move_CRUSH_GRIP: + loadspritegfx ANIM_TAG_EXPLOSION + loadspritegfx ANIM_TAG_ACCUPRESSURE + loadspritegfx ANIM_TAG_PURPLE_HAND_OUTLINE + setalpha 15, 0 + createsprite gCrushGripHandTemplate, ANIM_TARGET, 2, 16, 0, 0, 0, 25, 0x101 + waitforvisualfinish + createvisualtask AnimTask_CompressTargetHorizontally, 2 + createsprite gCrushGripExplosionTemplate, ANIM_TARGET, 0, 0, 0, 1, 1 + delay 3 + playsewithpan 0xab, SOUND_PAN_ATTACKER + createsprite gCrushGripExplosionTemplate, ANIM_TARGET, 0, 0x18, 0xffe8, 1, 1 + delay 3 + playsewithpan 0xab, SOUND_PAN_ATTACKER + createsprite gCrushGripExplosionTemplate, ANIM_TARGET, 0, 0xfff0, 16, 1, 1 + delay 3 + playsewithpan 0xab, SOUND_PAN_ATTACKER + createsprite gCrushGripExplosionTemplate, ANIM_TARGET, 0, 0xffe8, -12, 1, 1 + delay 3 + playsewithpan 0xab, SOUND_PAN_ATTACKER + createsprite gCrushGripExplosionTemplate, ANIM_TARGET, 0, 16, 16, 1, 1 + waitforvisualfinish + blendoff end Move_MAGMA_STORM: @@ -3839,9 +4094,115 @@ Move_MAGMA_STORM: end Move_DARK_VOID: + loadspritegfx ANIM_TAG_WHITE_SHADOW @Destiny Bond + loadspritegfx ANIM_TAG_QUICK_GUARD_HAND @Black Colour + loadspritegfx ANIM_TAG_SPARKLE_2 @Healing Stars + loadspritegfx ANIM_TAG_POISON_BUBBLE @Poison + fadetobg BG_DARK_VOID + waitbgfadeout + createvisualtask AnimTask_StartSlidingBg, 5, 0, 0xFFA0, 1, 0xffff + waitbgfadein + createvisualtask AnimTask_DestinyBondWhiteShadow, 5, 0, 0x30 + loopsewithpan 0xBD, 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 + delay 0x40 + invisible ANIM_TARGET + invisible ANIM_DEF_PARTNER + createsprite gDarkVoidPurpleStarsTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 0, 0x20, 0x3c + waitforvisualfinish + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, 16 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_DEF_PARTNER, 0, 16 + delay 0x20 + call UnsetPsychicBg + visible ANIM_TARGET + visible ANIM_DEF_PARTNER end Move_SEED_FLARE: + loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT @charge animation + loadspritegfx ANIM_TAG_LEAF @green color + loadspritegfx ANIM_TAG_RAZOR_LEAF @green color 2 + loadspritegfx ANIM_TAG_ORBS @charging circles + loadspritegfx ANIM_TAG_FLYING_DIRT @heat wave animation + monbg ANIM_ATTACKER + setalpha 14, 8 + createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 1, 0, 12, 32767 + waitforvisualfinish + playsewithpan 133, SOUND_PAN_ATTACKER + createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, 0x28, 0x28, 16 + delay 2 + createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, 0xffd8, 0xffd8, 16 + delay 2 + createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, 0, 0x28, 16 + delay 2 + createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, 0, 0xffd8, 16 + delay 2 + createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, 0x28, -20, 16 + delay 2 + createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, 0x28, 20, 16 + delay 2 + createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, 0xffd8, -20, 16 + delay 2 + createsprite gSeedFlareGreenChargeTemplate, ANIM_ATTACKER 2, 0 + createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, 0xffd8, 20, 16 + delay 2 + createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, -20, 30, 16 + delay 2 + createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, 20, 0xffe2, 16 + delay 2 + createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, -20, 0xffe2, 16 + delay 2 + createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, 20, 30, 16 + delay 2 + createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, 0xffd8, 0, 16 + delay 2 + createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, 0x28, 0, 16 + delay 2 + createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, 0x28, 0x28, 16 + delay 2 + createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, 0xffd8, 0xffd8, 16 + delay 2 + createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, 0, 0x28, 16 + delay 2 + createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, 0, 0xffd8, 16 + delay 2 + createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, 0x28, -20, 16 + delay 2 + createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, 0x28, 20, 16 + delay 2 + createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, 0xffd8, -20, 16 + delay 30 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 0x28, 1 + createsprite gSeedFlareGreenWavesTemplate, ANIM_ATTACKER, 0x28, 10, 0x900, 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 + 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 + 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 + delay 8 + createsprite gSeedFlareGreenWavesTemplate, ANIM_ATTACKER, 0x28, 0, 0xb00, 0x60, 1 + delay 10 + createsprite gSeedFlareGreenWavesTemplate, ANIM_ATTACKER, 0x28, 0x3c, 0xa00, 0x60, 1 + waitforvisualfinish + createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 1, 12, 0, 32767 + waitforvisualfinish + clearmonbg ANIM_ATTACKER + blendoff end Move_OMINOUS_WIND: diff --git a/graphics/battle_anims/backgrounds/dark_void.bin b/graphics/battle_anims/backgrounds/dark_void.bin new file mode 100644 index 0000000000000000000000000000000000000000..922b72bc74d7f5c773331b1af537d54c2e939038 GIT binary patch literal 1236 zcmb`DQ*a�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 literal 0 HcmV?d00001 diff --git a/graphics/battle_anims/backgrounds/spacial_rend_opponent.bin b/graphics/battle_anims/backgrounds/spacial_rend_opponent.bin new file mode 100644 index 0000000000000000000000000000000000000000..e6227db9c9d8e449155452362f88ca325272b8be GIT binary patch literal 1000 zcmWO4heODD0LJ0BK~$(v*`Js1k5E#Ptz=X7UPYnoO&K|E@9hR|@4a#R+}?NG-h1D1 zd!Kv$h9_lvoD@SWam1qrG$esWs4}igIv^;Jn|_(1tCA=g&j-mQu=4Stt$T7>_0}k&$5%@spXtR2`g# zrZa(x9Q(^|iqJ->IIgQiN8Jx*k zoQ=-mT+ZWsbO9H#i;K|3T*9U7Mtj)H-moWVcesqpxdL6uu5cAsqieX9>$o1>z>VC* z&FB_x!y5cUV{3-|K?50df_4^#gLkD|vo$m2YLp5!T> z<{9)X&+$Ajpci?GmwAPlS2@ICUQ>(?heP3Y-av2i7H{(odYAWjpAXQ7e8k6mf(_lp`Fa=x8_+^dmpJV=I+jR&i`wp)cPLIbx%3Z`7UrTxwi}5$9?5~?(YE} zC=c>r7r9s-;t~(_P(>xtFc0?#d89{qU^H4DpE+*w|J|!S#?ouv?;2$HbmPUq+@J@?P34` literal 0 HcmV?d00001 diff --git a/graphics/battle_anims/backgrounds/spacial_rend_opponent.pal b/graphics/battle_anims/backgrounds/spacial_rend_opponent.pal new file mode 100644 index 0000000000..7f1f61789b --- /dev/null +++ b/graphics/battle_anims/backgrounds/spacial_rend_opponent.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 0 0 +222 156 230 +222 180 246 +213 123 205 +213 189 246 +205 115 205 +213 164 230 +213 131 213 +222 197 255 +222 189 255 +213 139 222 +213 172 238 +213 106 197 +222 131 213 +213 115 205 +205 106 197 diff --git a/graphics/battle_anims/backgrounds/spacial_rend_opponent.png b/graphics/battle_anims/backgrounds/spacial_rend_opponent.png new file mode 100644 index 0000000000000000000000000000000000000000..637b9cf5a93f05f59639b81ff9a52ca6009dc9a0 GIT binary patch literal 5861 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 vbRUphQp*g@dHO5200000NkvXXu0mjfv_DB9 literal 0 HcmV?d00001 diff --git a/graphics/battle_anims/backgrounds/spacial_rend_player.bin b/graphics/battle_anims/backgrounds/spacial_rend_player.bin new file mode 100644 index 0000000000000000000000000000000000000000..cae5112e003a1b2d5924c329d59bd2231481a186 GIT binary patch literal 996 zcmWO41!ENi7>3bz$>>XO+v?$fOooC@X43W@LoYBP~)RB~+U_)TJJ(PXii~K#gcj6PluC zG^YjGD2JA`qBUwmTiO94+C|%F6KWl;qGjZSOnW*IC`m^;(V6rvbfudLyQ3cTq!+zW zA9CqS9?GYHe)J0!M1JH&-%xJ!iQds44PYRJ3_^n$LJ>pJForXNkt9YjT5F0aL8Xjg zEaT94CNLq!hsMR&7!#$Tk|>UeOhRQ$W(rf$G^R6ynIvX0Ticp52hF9Nc~qeJR8mDX zTEK#+j;c^)%#Vtg7b=g1EaEV9I7e_KN1>xRhGRJn9nT4z$VupA7PEw zRk1QwgqFv$SQ<-0i{lhda4R=uFPyY|bJ5T+ZYClwlX3wXEYp)}xEqz(zKq zO|daH#KmZRT*A6o8@iOsxST7{m0ZQuT!XIVIx}OJlkcZI2Ji? zJ9fph>KU7^dTSdG5gSd_Q$^X z1bxb9e9jl>OTOZ3zCqve9pCc<`jMabnP1Sa{KoJ6f&SzGfAKf^hkvQzAUedMI2bh{ zImM|?vkpYMGn{GFa+Yhmj#bz7T;C0x)zAqy+TO^G0058#0{{R3eVcu=0000mP)t-s{{R5h zoaWxN_SJjM)xGxBgVoJ*&DEsl-o^jbi{9S7|JAJS)oR7nbIsnI=FMuw#EaV9000`V zNklp4ba0m_Z2Bhjwibd>{eomRrTt;`|dsW-1|zBBpi&fOl26KEaAb&vGn*E_VMjw ze`OzckABNOU%zH^{w;32lZ(e5(=cYV>&whNjDE+ftfuQ{OsWGKOT%={@Jy!Jok(Ju z-RNEUj(xnkwaPxfeaEqiS8%hdsQG?JqasH8LIdF~?)a=L>{US4J|-qHQ%~9TvzZv1 zT;1wq*B{1;?4PC=ox)Ar``A(fIT|zA4n@AmKv0Z34Z1^QezQ>WRD?(9t3 zcoM|9#%;^tw6;4PO+0oLfM=Qpt_Z-0SZsO{W0y01j487-zhgeHoi;2V zXLncQ)Aupp26y<^^iW{kG!u1%$pOy4ZWx$miKqY+0XEF}EA0Bs%s`rb);I94tiNEl zF<_+c7F`Cs1zUba1{R0S)|+*VMVnhs>)#*TH`W}h+h?w@e<=q3$bN9_ zr;OXY?QU*U+<(Tog)ig2?&0?GeHUYV%8i%sW_Q|@Jrd2qA2z*82Tfo^%v6vu@7S}` z>~2o^n*E){PqQx0m+x94ev>}V-^b4{bF+H+{rZ!w0Vy*8qqh&>F`4K+?a54~+12S8 z@Z0j`*j;Y_D*q@fn3~e)!8_bh>WN~cDSxEO@~e1>C6k$pZH5wzVd^do!Ny8Y8$SLXyI~j8H*6Yp zEPk6@d6hek)h3=>NfY0tAK@8^g{;SXaGG5$#=72Pzb$tCioHYG@QnYGUGuG`ulZ=y zQiawz-VgWwQam?zlTrRiudH?(1ZQ)%J;xp+wwmux?DJgLAK7&qfNwje*m$5D$w5fE zAp4wc)iZhAyDWZ6im;p!uWlOqa+J+?iW}ED$Cd`#Cb{Ax@7aH0<1+xB^POVGR4*nV zAB~AMkHFL4FloAuXUwcFo9TUcg>`Xe1g7SJKou;uR%8lLH@yB#jU_uW|VIucW*Ld%eZa0 zjkx_CNb(TgiuEETc93WIH+ub3L-@%U zRg~M!pp5rheVa>LpYGv-|FI5t&HV+f>pcSwdQ5qi#-ni4F(_mPaar1kxCUm*+HATB zc$F9WfUt+h3tGMKTwz~9sJ~{v<$N`5%oISDRsg2J>T%SS*2f+*Lj+1~%?bv(fb-n) z_5})U_4s_oEo8XM(C^rFUhwhzH{kL#TP#4bGdh%Xfhrol2R(^VCU_}$R0q5YK*ero z4$1`BRcE}CrZU9eGoCrc`|O4SuZ%<9$Z_;9aa(>s6<~a+E~*0XYIn2hOyY6J{$-Ot zLgiij{?num2+o`jWp#Y&Cg}li=vkUzQ=e%gz`4S7c4@u7+z~28dsV`{0*i%$Op%ho zmn1b<ℑ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 literal 0 HcmV?d00001 diff --git a/graphics/battle_anims/sprites/quick_guard.png b/graphics/battle_anims/sprites/quick_guard.png new file mode 100644 index 0000000000000000000000000000000000000000..71d343eeb5a8f93b0a50cd832de74728bb9c2b6e GIT binary patch literal 205 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvg8-ip*Z=?jYiepLC@4rsNC*fB zluka#CnN!s#07E|XG#I(B0OCjLn`KMz39l*V8G*YF{fyMj+%MKyZRQbgA&V{xPFz_ zE@>5-=%Z-c+FttM0|Un|9u5vD literal 0 HcmV?d00001 diff --git a/graphics/battle_anims/sprites/water_gun.png b/graphics/battle_anims/sprites/water_gun.png new file mode 100644 index 0000000000000000000000000000000000000000..4f30b2133dcca00deb0874af741c321f3ec21d59 GIT binary patch literal 214 zcmeAS@N?(olHy`uVBq!ia0vp^0zhoQ!VDx|6+TY^aRPioT>mQ?N^ae1cqPk_P= zZc)xy?vy3WFAFAku!R^lM`UMId~}`AXl`Y7fURjwfQZAk5)lDbhP)CbyHbT!Z9vNy NJYD@<);T3K0RXhmR=@xN literal 0 HcmV?d00001 diff --git a/include/battle_anim.h b/include/battle_anim.h index 70f65123b2..5189c82112 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -224,9 +224,11 @@ void AnimMoveTwisterParticle(struct Sprite* sprite); void AnimParticleBurst(struct Sprite *); void AnimPowerAbsorptionOrb(struct Sprite* sprite); void AnimNeedleArmSpike(struct Sprite *); +void AnimTask_CompressTargetHorizontally(u8 taskId); extern const union AnimCmd *const gRazorLeafParticleAnimTable[]; extern const union AnimCmd *const gPowerAbsorptionOrbAnimTable[]; extern const union AffineAnimCmd *const gPowerAbsorptionOrbAffineAnimTable[]; +extern const union AnimCmd *const gMusicNotesAnimTable[]; // battle_anim_water.c void AnimWaterPulseRing(struct Sprite *sprite); diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h index f9598c6658..c80d90b1ef 100644 --- a/include/constants/battle_anim.h +++ b/include/constants/battle_anim.h @@ -321,6 +321,10 @@ #define ANIM_TAG_STEALTH_ROCK (ANIM_SPRITES_START + 311) #define ANIM_TAG_POISON_JAB (ANIM_SPRITES_START + 312) #define ANIM_TAG_GREEN_POISON_BUBBLE (ANIM_SPRITES_START + 313) +#define ANIM_TAG_FLASH_CANNON_BALL (ANIM_SPRITES_START + 314) +#define ANIM_TAG_WATER_GUN (ANIM_SPRITES_START + 315) +#define ANIM_TAG_PUNISHMENT_BLADES (ANIM_SPRITES_START + 316) +#define ANIM_TAG_QUICK_GUARD_HAND (ANIM_SPRITES_START + 317) // battlers #define ANIM_ATTACKER 0 @@ -376,6 +380,9 @@ #define BG_GIGA_IMPACT_CONTEST 30 #define BG_TRICK_ROOM 31 #define BG_ROCK_WRECKER 32 +#define BG_SPACIAL_REND_ON_OPPONENT 33 +#define BG_SPACIAL_REND_ON_PLAYER 34 +#define BG_DARK_VOID 35 // table ids for general animations #define B_ANIM_CASTFORM_CHANGE 0x0 diff --git a/include/graphics.h b/include/graphics.h index 5a5c984daf..cf83e88c94 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -4754,6 +4754,14 @@ extern const u32 gBattleAnimSpriteGfx_MegaParticles[]; extern const u32 gBattleAnimSpritePal_MegaParticles[]; extern const u32 gBattleAnimSpriteGfx_MegaSymbol[]; extern const u32 gBattleAnimSpritePal_MegaSymbol[]; +extern const u32 gBattleAnimSpriteGfx_FlashCannonBall[]; +extern const u32 gBattleAnimSpritePal_FlashCannonBall[]; +extern const u32 gBattleAnimSpriteGfx_WaterGun[]; +extern const u32 gBattleAnimSpritePal_WaterGun[]; +extern const u32 gBattleAnimSpriteGfx_Punishment[]; +extern const u32 gBattleAnimSpritePal_Punishment[]; +extern const u32 gBattleAnimSpriteGfx_QuickGuard[]; +extern const u32 gBattleAnimSpritePal_QuickGuard[]; extern const u32 gBattleAnimBgImage_Dark[]; extern const u32 gBattleAnimBgImage_Ghost[]; @@ -4770,6 +4778,15 @@ extern const u32 gBattleAnimBgImage_Aurora[]; extern const u32 gBattleAnimBgImage_Fissure[]; extern const u32 gBattleAnimBgImage_TrickRoom[]; extern const u32 gBattleAnimBgImage_RockWrecker[]; +extern const u32 gBattleAnimBgImage_SpacialRendOpponent[]; +extern const u32 gBattleAnimBgPalette_SpacialRendOpponent[]; +extern const u32 gBattleAnimBgTilemap_SpacialRendOpponent[]; +extern const u32 gBattleAnimBgImage_SpacialRendPlayer[]; +extern const u32 gBattleAnimBgPalette_SpacialRendPlayer[]; +extern const u32 gBattleAnimBgTilemap_SpacialRendPlayer[]; +extern const u32 gBattleAnimBgImage_DarkVoid[]; +extern const u32 gBattleAnimBgPalette_DarkVoid[]; +extern const u32 gBattleAnimBgTilemap_DarkVoid[]; extern const u32 gBattleAnimBgPalette_Dark[]; extern const u32 gBattleAnimBgPalette_Ghost[]; extern const u32 gBattleAnimBgPalette_Psychic[]; diff --git a/src/battle_anim.c b/src/battle_anim.c index c89f582e62..b763b9980c 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -1439,6 +1439,10 @@ const struct CompressedSpriteSheet gBattleAnimPicTable[] = {gBattleAnimSpriteGfx_StealthRock, 0x0080, ANIM_TAG_STEALTH_ROCK}, {gBattleAnimSpriteGfx_PoisonJab, 0x0080, ANIM_TAG_POISON_JAB}, {gBattleAnimSpriteGfx_PoisonBubble, 0x0180, ANIM_TAG_GREEN_POISON_BUBBLE}, + {gBattleAnimSpriteGfx_FlashCannonBall, 0x200, ANIM_TAG_FLASH_CANNON_BALL}, + {gBattleAnimSpriteGfx_WaterGun, 0x180, ANIM_TAG_WATER_GUN}, + {gBattleAnimSpriteGfx_Punishment, 0xa00, ANIM_TAG_PUNISHMENT_BLADES}, + {gBattleAnimSpriteGfx_QuickGuard, 0x200, ANIM_TAG_QUICK_GUARD_HAND}, }; const struct CompressedSpritePalette gBattleAnimPaletteTable[] = @@ -1757,6 +1761,10 @@ const struct CompressedSpritePalette gBattleAnimPaletteTable[] = {gBattleAnimSpritePal_StealthRock, ANIM_TAG_STEALTH_ROCK}, {gBattleAnimSpritePal_PoisonJab, ANIM_TAG_POISON_JAB}, {gBattleAnimSpritePal_Vine, ANIM_TAG_GREEN_POISON_BUBBLE}, + {gBattleAnimSpritePal_FlashCannonBall, ANIM_TAG_FLASH_CANNON_BALL}, + {gBattleAnimSpritePal_WaterGun, ANIM_TAG_WATER_GUN}, + {gBattleAnimSpritePal_Punishment, ANIM_TAG_PUNISHMENT_BLADES}, + {gBattleAnimSpritePal_QuickGuard, ANIM_TAG_QUICK_GUARD_HAND}, }; const struct BattleAnimBackground gBattleAnimBackgroundTable[] = @@ -1794,6 +1802,9 @@ const struct BattleAnimBackground gBattleAnimBackgroundTable[] = [BG_GIGA_IMPACT_CONTEST] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_GigaImpact, gBattleAnimBgTilemap_ImpactContests}, [BG_TRICK_ROOM] = {gBattleAnimBgImage_TrickRoom, gBattleAnimBgPalette_TrickRoom, gBattleAnimBgTilemap_TrickRoom}, [BG_ROCK_WRECKER] = {gBattleAnimBgImage_RockWrecker, gBattleAnimBgPalette_RockWrecker, gBattleAnimBgTilemap_RockWrecker}, + [BG_SPACIAL_REND_ON_OPPONENT] = {gBattleAnimBgImage_SpacialRendOpponent, gBattleAnimBgPalette_SpacialRendOpponent, gBattleAnimBgTilemap_SpacialRendOpponent}, + [BG_SPACIAL_REND_ON_PLAYER] = {gBattleAnimBgImage_SpacialRendPlayer, gBattleAnimBgPalette_SpacialRendPlayer, gBattleAnimBgTilemap_SpacialRendPlayer}, + [BG_DARK_VOID] = {gBattleAnimBgImage_DarkVoid, gBattleAnimBgPalette_DarkVoid, gBattleAnimBgTilemap_DarkVoid}, }; static void (* const sScriptCmdTable[])(void) = diff --git a/src/battle_anim_effects_1.c b/src/battle_anim_effects_1.c index 07ac5bf570..66a5272c77 100644 --- a/src/battle_anim_effects_1.c +++ b/src/battle_anim_effects_1.c @@ -2837,6 +2837,51 @@ const struct SpriteTemplate gWoodHammerSmallSpriteTemplate = .callback = AnimWoodHammerSmall, }; +const struct SpriteTemplate gJudgmentGrayOutwardSpikesTemplate = +{ + .tileTag = ANIM_TAG_GREEN_SPIKE, + .paletteTag = ANIM_TAG_GUST, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimNeedleArmSpike +}; + +const struct SpriteTemplate gJudgmentGrayInwardOrbsTemplate = +{ + .tileTag = ANIM_TAG_ORBS, + .paletteTag = ANIM_TAG_HANDS_AND_FEET, + .oam = &gOamData_AffineNormal_ObjBlend_16x16, + .anims = gPowerAbsorptionOrbAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimNeedleArmSpike +}; + +const struct SpriteTemplate gDarkVoidPurpleStarsTemplate = +{ + .tileTag = ANIM_TAG_SPARKLE_2, + .paletteTag = ANIM_TAG_POISON_BUBBLE, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gGrantingStarsAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimGrantingStars +}; + +const struct SpriteTemplate gSeedFlareGreenCirclesTemplate = +{ + .tileTag = ANIM_TAG_ORBS, + .paletteTag = ANIM_TAG_RAZOR_LEAF, + .oam = &gOamData_AffineNormal_ObjBlend_16x16, + .anims = gPowerAbsorptionOrbAnimTable, + .images = NULL, + .affineAnims = gPowerAbsorptionOrbAffineAnimTable, + .callback = AnimPowerAbsorptionOrb +}; + +// functions static void AnimGrassKnot(struct Sprite *sprite) { if (BATTLE_PARTNER(gBattleAnimAttacker) == gBattleAnimTarget && GetBattlerPosition(gBattleAnimTarget) < B_POSITION_PLAYER_RIGHT) @@ -6687,3 +6732,27 @@ static void AnimNightSlash(struct Sprite *sprite) sprite->callback = AnimSlashSlice; sprite->callback(sprite); } + +static const union AffineAnimCmd sCompressTargetHorizontallyAffineAnimCmds[] = +{ + AFFINEANIMCMD_FRAME(64, 0, 0, 16), //Compress + AFFINEANIMCMD_FRAME(0, 0, 0, 64), + AFFINEANIMCMD_FRAME(-64, 0, 0, 16), + AFFINEANIMCMD_END, +}; + +static void AnimTask_CompressTargetStep(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + + if (!RunAffineAnimFromTaskData(task)) + DestroyAnimVisualTask(taskId); +} + +void AnimTask_CompressTargetHorizontally(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + u8 spriteId = GetAnimBattlerSpriteId(ANIM_TARGET); + PrepareAffineAnimInTaskData(task, spriteId, sCompressTargetHorizontallyAffineAnimCmds); + task->func = AnimTask_CompressTargetStep; +} diff --git a/src/battle_anim_effects_2.c b/src/battle_anim_effects_2.c index e6ac7ffb27..a8b54d41df 100755 --- a/src/battle_anim_effects_2.c +++ b/src/battle_anim_effects_2.c @@ -1232,7 +1232,6 @@ const union AffineAnimCmd *const gPerishSongMusicNoteAffineAnimTable[] = gPerishSongMusicNoteAffineAnimCmds3, }; -extern const union AnimCmd *const gMusicNotesAnimTable[]; const struct SpriteTemplate gPerishSongMusicNoteSpriteTemplate = { .tileTag = ANIM_TAG_MUSIC_NOTES_2, @@ -1284,6 +1283,28 @@ const struct SpriteTemplate gGuardRingSpriteTemplate = .callback = AnimGuardRing, }; +const struct SpriteTemplate gCrushGripExplosionTemplate = +{ + .tileTag = ANIM_TAG_EXPLOSION, + .paletteTag = ANIM_TAG_EXPLOSION, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gExplosionAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSpriteOnMonPos +}; + +const struct SpriteTemplate gRoarOfTimeBombTemplate = +{ + .tileTag = ANIM_TAG_EXPLOSION, + .paletteTag = ANIM_TAG_WATER_GUN, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gExplosionAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSpriteOnMonPos +}; + static void sub_8103448(struct Sprite *sprite) { SetSpriteCoordsToAnimAttackerCoords(sprite); diff --git a/src/battle_anim_electric.c b/src/battle_anim_electric.c index eca10f2b49..b49427bc79 100644 --- a/src/battle_anim_electric.c +++ b/src/battle_anim_electric.c @@ -456,6 +456,54 @@ const struct SpriteTemplate gShockWaveProgressingBoltSpriteTemplate = .callback = AnimShockWaveProgressingBolt, }; +const struct SpriteTemplate gFlashCannonGrayChargeTemplate = +{ + .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, + .paletteTag = ANIM_TAG_HANDS_AND_FEET, + .oam = &gOamData_AffineNormal_ObjBlend_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = sAffineAnims_GrowingElectricOrb, + .callback = AnimGrowingChargeOrb +}; + +static const union AffineAnimCmd sSpriteAffineAnim_JudgmentBall[] = +{ + AFFINEANIMCMD_FRAME(16, 16, 0, 0), + AFFINEANIMCMD_FRAME(8, 8, 0, 15), //Half size + AFFINEANIMCMD_FRAME(0, 0, 0, 120), //Delay + AFFINEANIMCMD_FRAME(24, 24, 0, 5), //Normal size + AFFINEANIMCMD_FRAME(0, 0, 0, 10), //Delay + AFFINEANIMCMD_FRAME(-16, -16, 0, 15), //Revert to 1 px + AFFINEANIMCMD_END, +}; +static const union AffineAnimCmd* const sSpriteAffineAnimTable_JudgmentBall[] = +{ + sSpriteAffineAnim_JudgmentBall, +}; +const struct SpriteTemplate gJudgmentBlackChargeTemplate = +{ + .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, + .paletteTag = ANIM_TAG_HANDS_AND_FEET, + .oam = &gOamData_AffineNormal_ObjBlend_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = sSpriteAffineAnimTable_JudgmentBall, + .callback = AnimGrowingChargeOrb +}; + +const struct SpriteTemplate gSeedFlareGreenChargeTemplate = +{ + .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, + .paletteTag = ANIM_TAG_LEAF, + .oam = &gOamData_AffineNormal_ObjBlend_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = sAffineAnims_GrowingElectricOrb, + .callback = AnimGrowingChargeOrb +}; + +// functions static void AnimLightning(struct Sprite *sprite) { if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) diff --git a/src/battle_anim_fire.c b/src/battle_anim_fire.c index dbb21fe6cb..606f498d4c 100644 --- a/src/battle_anim_fire.c +++ b/src/battle_anim_fire.c @@ -510,6 +510,28 @@ const struct SpriteTemplate gLavaPlumeSpriteTemplate = .callback = AnimLavaPlumeOrbitScatter, }; +const struct SpriteTemplate gSpacialRendBladesTemplate = +{ + .tileTag = ANIM_TAG_PUNISHMENT_BLADES, + .paletteTag = ANIM_TAG_PINK_HEART_2, //ANIM_TAG_BERRY_EATEN, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gAnims_BasicFire, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimFireSpiralOutward +}; + +const struct SpriteTemplate gSpacialRendBladesTemplate2 = +{ + .tileTag = ANIM_TAG_PUNISHMENT_BLADES, + .paletteTag = ANIM_TAG_PINK_HEART_2, //ANIM_TAG_BERRY_EATEN, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = sAnims_FireSpiralSpread, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimFireSpread +}; + static void AnimLavaPlumeOrbitScatter(struct Sprite *sprite) { sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); diff --git a/src/battle_anim_ghost.c b/src/battle_anim_ghost.c index 4671edbd48..273fdf38a4 100644 --- a/src/battle_anim_ghost.c +++ b/src/battle_anim_ghost.c @@ -249,6 +249,17 @@ const struct SpriteTemplate gUnknown_08596E48 = .callback = sub_8112F60, }; +const struct SpriteTemplate gFlashCannonBallMovementTemplate = +{ + .tileTag = ANIM_TAG_FLASH_CANNON_BALL, + .paletteTag = ANIM_TAG_FLASH_CANNON_BALL, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = sAffineAnims_ShadowBall, + .callback = AnimShadowBall +}; + static void AnimConfuseRayBallBounce(struct Sprite *sprite) { InitSpritePosToAnimAttacker(sprite, 1); diff --git a/src/battle_anim_ice.c b/src/battle_anim_ice.c index 7a6f1352d9..ea46092d9a 100644 --- a/src/battle_anim_ice.c +++ b/src/battle_anim_ice.c @@ -561,6 +561,17 @@ const struct SpriteTemplate gAvalancheSpriteTemplate = .callback = AvalancheAnim_Step, }; +const struct SpriteTemplate gChatterSingNotesTemplate = +{ + .tileTag = ANIM_TAG_MUSIC_NOTES, + .paletteTag = ANIM_TAG_MUSIC_NOTES, + .oam = &gOamData_AffineDouble_ObjNormal_16x16, + .anims = gMusicNotesAnimTable, + .images = NULL, + .affineAnims = sAffineAnims_IceCrystalHit, + .callback = AnimIceEffectParticle +}; + static void AvalancheAnim_Step(struct Sprite *sprite) { if (gBattleAnimArgs[3] != 0) diff --git a/src/battle_anim_rock.c b/src/battle_anim_rock.c index 7b4b448ace..22f9f2f8e6 100644 --- a/src/battle_anim_rock.c +++ b/src/battle_anim_rock.c @@ -327,6 +327,43 @@ const struct SpriteTemplate gStealthRockSpriteTemplate = .callback = AnimStealthRock, }; +static const union AffineAnimCmd sSpriteAffineAnim_CrushGripHandEnemyAttack[] = +{ + AFFINEANIMCMD_FRAME(0, 0, 96, 1), //180 degree turn + AFFINEANIMCMD_END +}; +static const union AffineAnimCmd sSpriteAffineAnim_DoNothing[] = +{ + AFFINEANIMCMD_FRAME(0, 0, 0, 1), //Do nothing + AFFINEANIMCMD_END +}; +static const union AffineAnimCmd* const sSpriteAffineAnimTable_CrushGripHand[] = +{ + sSpriteAffineAnim_DoNothing, + sSpriteAffineAnim_CrushGripHandEnemyAttack, +}; +const struct SpriteTemplate gCrushGripHandTemplate = +{ + .tileTag = ANIM_TAG_PURPLE_HAND_OUTLINE, + .paletteTag = ANIM_TAG_ACCUPRESSURE, + .oam = &gOamData_AffineNormal_ObjNormal_32x32, + .anims = sAnims_BasicRock, + .images = NULL, + .affineAnims = sSpriteAffineAnimTable_CrushGripHand, + .callback = AnimRockBlastRock +}; + +const struct SpriteTemplate gSeedFlareGreenWavesTemplate = +{ + .tileTag = ANIM_TAG_FLYING_DIRT, + .paletteTag = ANIM_TAG_LEAF, + .oam = &gOamData_AffineOff_ObjNormal_32x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimFlyingSandCrescent +}; + static void AnimStealthRock(struct Sprite *sprite) { u16 x; diff --git a/src/graphics.c b/src/graphics.c index 5df0bd9b1a..97250b963d 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -41,6 +41,18 @@ const u32 gBattleAnimSpritePal_MegaParticles[] = INCBIN_U32("graphics/battle_ani const u32 gBattleAnimSpriteGfx_MegaSymbol[] = INCBIN_U32("graphics/battle_anims/sprites/mega_symbol.4bpp.lz"); const u32 gBattleAnimSpritePal_MegaSymbol[] = INCBIN_U32("graphics/battle_anims/sprites/mega_symbol.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_FlashCannonBall[] = INCBIN_U32("graphics/battle_anims/sprites/flash_cannon_ball.4bpp.lz"); +const u32 gBattleAnimSpritePal_FlashCannonBall[] = INCBIN_U32("graphics/battle_anims/sprites/flash_cannon_ball.gbapal.lz"); + +const u32 gBattleAnimSpriteGfx_WaterGun[] = INCBIN_U32("graphics/battle_anims/sprites/water_gun.4bpp.lz"); +const u32 gBattleAnimSpritePal_WaterGun[] = INCBIN_U32("graphics/battle_anims/sprites/water_gun.gbapal.lz"); + +const u32 gBattleAnimSpriteGfx_Punishment[] = INCBIN_U32("graphics/battle_anims/sprites/punishment.4bpp.lz"); +const u32 gBattleAnimSpritePal_Punishment[] = INCBIN_U32("graphics/battle_anims/sprites/punishment.gbapal.lz"); + +const u32 gBattleAnimSpriteGfx_QuickGuard[] = INCBIN_U32("graphics/battle_anims/sprites/quick_guard.4bpp.lz"); +const u32 gBattleAnimSpritePal_QuickGuard[] = INCBIN_U32("graphics/battle_anims/sprites/quick_guard.gbapal.lz"); + // Battle anims const u32 gBattleAnimSpriteGfx_Bubble[] = INCBIN_U32("graphics/battle_anims/sprites/bubble.4bpp.lz"); const u32 gBattleAnimSpriteGfx_Bone[] = INCBIN_U32("graphics/battle_anims/sprites/bone.4bpp.lz"); @@ -1151,6 +1163,18 @@ const u32 gBattleAnimBgImage_RockWrecker[] = INCBIN_U32("graphics/battle_anims/b const u32 gBattleAnimBgPalette_RockWrecker[] = INCBIN_U32("graphics/battle_anims/backgrounds/rock_wrecker.gbapal.lz"); const u32 gBattleAnimBgTilemap_RockWrecker[] = INCBIN_U32("graphics/battle_anims/backgrounds/rock_wrecker_map.bin.lz"); +const u32 gBattleAnimBgImage_SpacialRendOpponent[] = INCBIN_U32("graphics/battle_anims/backgrounds/spacial_rend_opponent.4bpp.lz"); +const u32 gBattleAnimBgPalette_SpacialRendOpponent[] = INCBIN_U32("graphics/battle_anims/backgrounds/spacial_rend_opponent.gbapal.lz"); +const u32 gBattleAnimBgTilemap_SpacialRendOpponent[] = INCBIN_U32("graphics/battle_anims/backgrounds/spacial_rend_opponent.bin"); + +const u32 gBattleAnimBgImage_SpacialRendPlayer[] = INCBIN_U32("graphics/battle_anims/backgrounds/spacial_rend_player.4bpp.lz"); +const u32 gBattleAnimBgPalette_SpacialRendPlayer[] = INCBIN_U32("graphics/battle_anims/backgrounds/spacial_rend_player.gbapal.lz"); +const u32 gBattleAnimBgTilemap_SpacialRendPlayer[] = INCBIN_U32("graphics/battle_anims/backgrounds/spacial_rend_player.bin"); + +const u32 gBattleAnimBgImage_DarkVoid[] = INCBIN_U32("graphics/battle_anims/backgrounds/dark_void.4bpp.lz"); +const u32 gBattleAnimBgPalette_DarkVoid[] = INCBIN_U32("graphics/battle_anims/backgrounds/dark_void.gbapal.lz"); +const u32 gBattleAnimBgTilemap_DarkVoid[] = INCBIN_U32("graphics/battle_anims/backgrounds/dark_void.bin"); + const u32 gUnknown_E6BC04[] = INCBIN_U32("graphics/unknown/unknown_E6BC04.bin.lz"); const u32 sBlenderCenterGfx[] = INCBIN_U32("graphics/berry_blender/center.8bpp.lz");