From fe66019bc5ce829feb0f9bb23ba818aecce1adc6 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Wed, 19 Dec 2018 16:36:55 -0600 Subject: [PATCH 1/5] Fix ROOST healing effect graphical bug --- data/battle_anim_scripts.s | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index cc73938d8..73f357dc7 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -692,26 +692,26 @@ gBattleAnims_Special:: Move_ROOST: loadspritegfx ANIM_TAG_WHITE_FEATHER loadspritegfx ANIM_TAG_BLUE_STAR - monbg ANIM_DEF_PARTNER + monbg ANIM_ATTACKER monbgprio_29 playsewithpan SE_W080, SOUND_PAN_TARGET delay 0 - createsprite gUnknown_08596388, ANIM_TARGET, 0, 0, -16, 64, 2, 104, 11304, 32, 1 + createsprite gUnknown_08596388, ANIM_ATTACKER, 0, 0, -16, 64, 2, 104, 11304, 32, 1 delay 6 - createsprite gUnknown_08596388, ANIM_TARGET, 0, 0, -16, 32, 2, 104, 11304, 32, 1 - createsprite gUnknown_08596388, ANIM_TARGET, 0, 0, -16, 0, 2, 104, 11304, 32, 1 + createsprite gUnknown_08596388, ANIM_ATTACKER, 0, 0, -16, 32, 2, 104, 11304, 32, 1 + createsprite gUnknown_08596388, ANIM_ATTACKER, 0, 0, -16, 0, 2, 104, 11304, 32, 1 delay 6 - createsprite gUnknown_08596388, ANIM_TARGET, 0, 0, -16, 224, 2, 104, 11304, 32, 1 - createsprite gUnknown_08596388, ANIM_TARGET, 0, 0, -16, 128, 2, 104, 11304, 32, 1 + createsprite gUnknown_08596388, ANIM_ATTACKER, 0, 0, -16, 224, 2, 104, 11304, 32, 1 + createsprite gUnknown_08596388, ANIM_ATTACKER, 0, 0, -16, 128, 2, 104, 11304, 32, 1 delay 6 - createsprite gUnknown_08596388, ANIM_TARGET, 0, 0, -16, 192, 2, 104, 11304, 32, 1 - createsprite gUnknown_08596388, ANIM_TARGET, 0, 0, -16, 160, 2, 104, 11304, 32, 1 + createsprite gUnknown_08596388, ANIM_ATTACKER, 0, 0, -16, 192, 2, 104, 11304, 32, 1 + createsprite gUnknown_08596388, ANIM_ATTACKER, 0, 0, -16, 160, 2, 104, 11304, 32, 1 delay 6 - createsprite gUnknown_08596388, ANIM_TARGET, 0, 0, -16, 96, 2, 104, 11304, 32, 1 + createsprite gUnknown_08596388, ANIM_ATTACKER, 0, 0, -16, 96, 2, 104, 11304, 32, 1 waitforvisualfinish + clearmonbg ANIM_ATTACKER call HealingEffect waitforvisualfinish - clearmonbg ANIM_DEF_PARTNER end Move_GRAVITY: From 0369780db946fcf5553f40770c7b1b76731d0ec0 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Thu, 20 Dec 2018 10:18:17 -0600 Subject: [PATCH 2/5] Add Rock Polish animation --- data/battle_anim_scripts.s | 62 ++++++++ graphics/battle_anims/sprites/289.png | Bin 0 -> 256 bytes include/battle_anim.h | 96 ++++++++----- include/constants/battle_anim.h | 1 + include/graphics.h | 2 + ld_script.txt | 1 + src/battle_anim.c | 2 + src/effects_1.c | 196 ++++++++++++++++++++++++++ src/graphics.c | 4 + 9 files changed, 330 insertions(+), 34 deletions(-) create mode 100755 graphics/battle_anims/sprites/289.png diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index 73f357dc7..fad691e39 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -1344,6 +1344,68 @@ Move_AURA_SPHERE: end Move_ROCK_POLISH: + loadspritegfx ANIM_TAG_WHITE_STREAK + loadspritegfx ANIM_TAG_SPARKLE_3 + setalpha 12, 8 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 1, 3, 0, 12, RGB_BLACK + waitforvisualfinish + createsprite gRockPolishStreakSpriteTemplate, ANIM_ATTACKER, 2, -10, 3 + delay 1 + createsprite gRockPolishStreakSpriteTemplate, ANIM_ATTACKER, 2, 24, -19 + delay 1 + createsprite gRockPolishStreakSpriteTemplate, ANIM_ATTACKER, 2, -28, -15 + delay 2 + createsprite gRockPolishStreakSpriteTemplate, ANIM_ATTACKER, 2, -6, -30 + delay 1 + createsprite gRockPolishStreakSpriteTemplate, ANIM_ATTACKER, 2, -20, 6 + delay 1 + createsprite gRockPolishStreakSpriteTemplate, ANIM_ATTACKER, 2, 28, 2 + delay 2 + createsprite gRockPolishStreakSpriteTemplate, ANIM_ATTACKER, 2, -14, -25 + delay 1 + createsprite gRockPolishStreakSpriteTemplate, ANIM_ATTACKER, 2, 9, -2 + delay 2 + createsprite gRockPolishStreakSpriteTemplate, ANIM_ATTACKER, 2, -1, 0 + delay 1 + createsprite gRockPolishStreakSpriteTemplate, ANIM_ATTACKER, 2, 21, 4 + delay 2 + createsprite gRockPolishStreakSpriteTemplate, ANIM_ATTACKER, 2, 28, 20 + delay 2 + createsprite gRockPolishStreakSpriteTemplate, ANIM_ATTACKER, 2, -7, 24 + delay 2 + createsprite gRockPolishStreakSpriteTemplate, ANIM_ATTACKER, 2, -11, 1 + delay 2 + createsprite gRockPolishStreakSpriteTemplate, ANIM_ATTACKER, 2, 12, -18 + delay 2 + createsprite gRockPolishStreakSpriteTemplate, ANIM_ATTACKER, 2, -21, -14 + delay 1 + createsprite gRockPolishStreakSpriteTemplate, ANIM_ATTACKER, 2, -29, 7 + delay 2 + createsprite gRockPolishStreakSpriteTemplate, ANIM_ATTACKER, 2, 15, 28 + delay 1 + createsprite gRockPolishStreakSpriteTemplate, ANIM_ATTACKER, 2, -21, -16 + delay 2 + waitforvisualfinish + createsprite gRockPolishSparkleSpriteTemplate, ANIM_ATTACKER, 2, -20, 9 + createsprite gRockPolishSparkleSpriteTemplate, ANIM_ATTACKER, 2, -10, -15 + createsprite gRockPolishSparkleSpriteTemplate, ANIM_ATTACKER, 2, 1, 17 + delay 1 + createsprite gRockPolishSparkleSpriteTemplate, ANIM_ATTACKER, 2, -23, -16 + createsprite gRockPolishSparkleSpriteTemplate, ANIM_ATTACKER, 2, 10, -6 + delay 1 + createsprite gRockPolishSparkleSpriteTemplate, ANIM_ATTACKER, 2, -16, -7 + delay 1 + createsprite gRockPolishSparkleSpriteTemplate, ANIM_ATTACKER, 2, 22, -7 + delay 1 + createsprite gRockPolishSparkleSpriteTemplate, ANIM_ATTACKER, 2, -19, 11 + delay 1 + createsprite gRockPolishSparkleSpriteTemplate, ANIM_ATTACKER, 2, 12, 12 + delay 1 + createsprite gRockPolishSparkleSpriteTemplate, ANIM_ATTACKER, 2, 0, -17 + waitforvisualfinish + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 1, 3, 12, 0, RGB_BLACK + waitforvisualfinish + blendoff end Move_POISON_JAB: diff --git a/graphics/battle_anims/sprites/289.png b/graphics/battle_anims/sprites/289.png new file mode 100755 index 0000000000000000000000000000000000000000..7328ff1512be4b3b973f22bbdcba10081bd8dda2 GIT binary patch literal 256 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv_7YEDSN2CdBK)dKyJcSA0}6?k zxJHx&=ckpFCl;kLxcj&OjZr8|EmAPnGbwCc@(`$mqolyk9VlZAWHWd*XvzaAmUKs7 zM+SzC{oH>NS%G|m0G|-o{|pTO|NlRF^y-u;TR>_F0qwmZQ-Eq1lf2zs7&=&GJ%Ah) zPZ!6KiaE&%3#1Z)M1mH~%S^F$65wIGq3P9Bu)stk#&MlDLk}CXVOxA>C&&U%S3j3^ HP6callback = sub_80A67D8; +} + +// Places a blue sparkle that plays its default animation. +// arg 0: initial x pixel offset +// arg 1: initial y pixel offset +void AnimRockPolishSparkle(struct Sprite *sprite) +{ + InitAnimSpritePos(sprite, TRUE); + StoreSpriteCallbackInData6(sprite, move_anim_8074EE0); + sprite->callback = sub_80A67D8; +} diff --git a/src/graphics.c b/src/graphics.c index b2de074bc..bad142bad 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -564,6 +564,10 @@ const u32 gBattleAnimSpriteSheet_163[] = INCBIN_U32("graphics/battle_anims/sprit const u32 gBattleAnimSpritePalette_163[] = INCBIN_U32("graphics/battle_anims/sprites/163.gbapal.lz"); const u32 gBattleAnimSpritePalette_288[] = INCBIN_U32("graphics/battle_anims/sprites/288.gbapal.lz"); + +const u32 gBattleAnimSpriteSheet_289[] = INCBIN_U32("graphics/battle_anims/sprites/289.4bpp.lz"); +const u32 gBattleAnimSpritePalette_289[] = INCBIN_U32("graphics/battle_anims/sprites/289.gbapal.lz"); + const u32 gBattleAnimSpritePalette_164[] = INCBIN_U32("graphics/battle_anims/sprites/164.gbapal.lz"); const u32 gBattleAnimSpritePalette_165[] = INCBIN_U32("graphics/battle_anims/sprites/165.gbapal.lz"); From ecda59a40619e178d79d67f5570caecbe7c56344 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Thu, 20 Dec 2018 11:58:21 -0600 Subject: [PATCH 3/5] Add Poison Jab animation --- data/battle_anim_scripts.s | 49 ++++++++++++++++++++++++++ graphics/battle_anims/sprites/290.png | Bin 0 -> 282 bytes include/constants/battle_anim.h | 1 + include/graphics.h | 2 ++ src/battle_anim.c | 2 ++ src/effects_1.c | 35 ++++++++++++++++++ src/graphics.c | 3 ++ 7 files changed, 92 insertions(+) create mode 100755 graphics/battle_anims/sprites/290.png diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index fad691e39..dac93b467 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -1386,6 +1386,7 @@ Move_ROCK_POLISH: createsprite gRockPolishStreakSpriteTemplate, ANIM_ATTACKER, 2, -21, -16 delay 2 waitforvisualfinish + playsewithpan SE_W213, SOUND_PAN_ATTACKER createsprite gRockPolishSparkleSpriteTemplate, ANIM_ATTACKER, 2, -20, 9 createsprite gRockPolishSparkleSpriteTemplate, ANIM_ATTACKER, 2, -10, -15 createsprite gRockPolishSparkleSpriteTemplate, ANIM_ATTACKER, 2, 1, 17 @@ -1409,6 +1410,54 @@ Move_ROCK_POLISH: end Move_POISON_JAB: + loadspritegfx ANIM_TAG_PURPLE_JAB + loadspritegfx ANIM_TAG_IMPACT + setalpha 12, 8 + createsprite gPoisonJabProjectileSpriteTemplate, ANIM_TARGET, 2, 3, -31, 10 + delay 2 + createsprite gPoisonJabProjectileSpriteTemplate, ANIM_TARGET, 2, -18, -25, 10 + delay 2 + createsprite gPoisonJabProjectileSpriteTemplate, ANIM_TARGET, 2, 27, 17, 10 + delay 2 + createsprite gPoisonJabProjectileSpriteTemplate, ANIM_TARGET, 2, -26, 18, 10 + delay 2 + createsprite gPoisonJabProjectileSpriteTemplate, ANIM_TARGET, 2, 10, 30, 10 + delay 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -7, 4, 1, 3 + playsewithpan SE_W004, SOUND_PAN_TARGET + createsprite gPoisonJabProjectileSpriteTemplate, ANIM_TARGET, 2, -17, -27, 10 + delay 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -4, -6, 1, 3 + playsewithpan SE_W004, SOUND_PAN_TARGET + createsprite gPoisonJabProjectileSpriteTemplate, ANIM_TARGET, 2, 2, 31, 10 + createvisualtask AnimTask_SwayMon, 5, 0, 3, 0x2000, 6, ANIM_TARGET + createvisualtask AnimTask_BlendMonInAndOut, 5, ANIM_TARGET, RGB(16, 0, 16), 12, 0, 1 + delay 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 6, 4, 1, 3 + playsewithpan SE_W004, SOUND_PAN_TARGET + createsprite gPoisonJabProjectileSpriteTemplate, ANIM_TARGET, 2, 15, -27, 10 + delay 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -6, 8, 1, 3 + playsewithpan SE_W004, SOUND_PAN_TARGET + createsprite gPoisonJabProjectileSpriteTemplate, ANIM_TARGET, 2, -31, -2, 10 + delay 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 12, 6, 1, 3 + playsewithpan SE_W004, SOUND_PAN_TARGET + createsprite gPoisonJabProjectileSpriteTemplate, ANIM_TARGET, 2, -26, -18, 10 + delay 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -6, -8, 1, 3 + playsewithpan SE_W004, SOUND_PAN_TARGET + delay 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 8, 1, 3 + playsewithpan SE_W004, SOUND_PAN_TARGET + delay 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -8, 0, 1, 3 + playsewithpan SE_W004, SOUND_PAN_TARGET + delay 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -7, -5, 1, 3 + playsewithpan SE_W004, SOUND_PAN_TARGET + waitforvisualfinish + blendoff end Move_DARK_PULSE: diff --git a/graphics/battle_anims/sprites/290.png b/graphics/battle_anims/sprites/290.png new file mode 100755 index 0000000000000000000000000000000000000000..2c15153b9387bad96eced0fee7988640ff00efdc GIT binary patch literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Et!VDx^^%Amx6nlxMuPgf_9uYxxfpFKbWk4bE z64!{5;QX|b^2DN426rD9pfL(%sYMFLdM1UfOCAE1aFi7IxdUa4fouk^22FV&#ggvm z>&U>cv7h@-A}f$@5a1Kyx@1cCYK9MW4Da{gM1&m4F?k)@+tg;?J zj-98AV@SoEmdKI;Vst08c4J0{{R3 literal 0 HcmV?d00001 diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h index 2f7dde697..dea8eca1b 100644 --- a/include/constants/battle_anim.h +++ b/include/constants/battle_anim.h @@ -297,6 +297,7 @@ #define ANIM_TAG_WHIP_HIT (ANIM_SPRITES_START + 287) #define ANIM_TAG_BLUE_RING_2 (ANIM_SPRITES_START + 288) #define ANIM_TAG_WHITE_STREAK (ANIM_SPRITES_START + 289) +#define ANIM_TAG_PURPLE_JAB (ANIM_SPRITES_START + 290) // battlers #define ANIM_ATTACKER 0 diff --git a/include/graphics.h b/include/graphics.h index 18394edea..758879494 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -4374,6 +4374,7 @@ extern const u32 gBattleAnimSpriteSheet_283[]; extern const u32 gBattleAnimSpriteSheet_284[]; extern const u32 gBattleAnimSpriteSheet_285[]; extern const u32 gBattleAnimSpriteSheet_289[]; +extern const u32 gBattleAnimSpriteSheet_290[]; extern const u32 gBattleAnimSpritePalette_000[]; extern const u32 gBattleAnimSpritePalette_001[]; @@ -4650,6 +4651,7 @@ extern const u32 gBattleAnimSpritePalette_286[]; extern const u32 gBattleAnimSpritePalette_287[]; extern const u32 gBattleAnimSpritePalette_288[]; extern const u32 gBattleAnimSpritePalette_289[]; +extern const u32 gBattleAnimSpritePalette_290[]; extern const u32 gBattleAnimBackgroundImage_00[]; extern const u32 gBattleAnimBackgroundImage_02[]; diff --git a/src/battle_anim.c b/src/battle_anim.c index 0e6eb0f2a..40e214afd 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -1058,6 +1058,7 @@ const struct CompressedSpriteSheet gBattleAnimPicTable[] = {gBattleAnimSpriteSheet_056, 0x1000, ANIM_TAG_WHIP_HIT}, {gBattleAnimSpriteSheet_163, 0x0100, ANIM_TAG_BLUE_RING_2}, {gBattleAnimSpriteSheet_289, 0x1000, ANIM_TAG_WHITE_STREAK}, + {gBattleAnimSpriteSheet_290, 0x800, ANIM_TAG_PURPLE_JAB}, }; @@ -1353,6 +1354,7 @@ const struct CompressedSpritePalette gBattleAnimPaletteTable[] = {gBattleAnimSpritePalette_287, ANIM_TAG_WHIP_HIT}, {gBattleAnimSpritePalette_288, ANIM_TAG_BLUE_RING_2}, {gBattleAnimSpritePalette_289, ANIM_TAG_WHITE_STREAK}, + {gBattleAnimSpritePalette_290, ANIM_TAG_PURPLE_JAB}, }; const struct BattleAnimBackground gBattleAnimBackgroundTable[] = diff --git a/src/effects_1.c b/src/effects_1.c index 7b0946ed6..fc29fe6a2 100644 --- a/src/effects_1.c +++ b/src/effects_1.c @@ -2107,6 +2107,7 @@ const struct SpriteTemplate gPowerOrbs_Float = void AnimRockPolishStreak(struct Sprite *); void AnimRockPolishSparkle(struct Sprite *); +void AnimPoisonJabProjectile(struct Sprite *); const union AnimCmd gRockPolishStreak_AnimCmd[] = { @@ -2298,3 +2299,37 @@ void AnimRockPolishSparkle(struct Sprite *sprite) StoreSpriteCallbackInData6(sprite, move_anim_8074EE0); sprite->callback = sub_80A67D8; } + +const struct SpriteTemplate gPoisonJabProjectileSpriteTemplate = +{ + .tileTag = ANIM_TAG_PURPLE_JAB, + .paletteTag = ANIM_TAG_PURPLE_JAB, + .oam = &gUnknown_08524B14, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimPoisonJabProjectile, +}; + +// Moves a projectile towards the center of the target mon. The sprite is rotated to look +// like it's traveling along that path. +// arg 0: initial x pixel offset +// arg 1: initial y pixel offset +// arg 2: duration +void AnimPoisonJabProjectile(struct Sprite *sprite) +{ + s16 targetXPos; + s16 targetYPos; + u16 rotation; + + sub_80A6980(sprite, TRUE); + targetXPos = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + targetYPos = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_3); + rotation = ArcTan2Neg(targetXPos - sprite->pos1.x, targetYPos - sprite->pos1.y); + sub_80A73E0(sprite, FALSE, 0x100, 0x100, rotation); + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[2] = targetXPos; + sprite->data[4] = targetYPos; + sprite->callback = StartAnimLinearTranslation; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); +} diff --git a/src/graphics.c b/src/graphics.c index bad142bad..a90a809cb 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -568,6 +568,9 @@ const u32 gBattleAnimSpritePalette_288[] = INCBIN_U32("graphics/battle_anims/spr const u32 gBattleAnimSpriteSheet_289[] = INCBIN_U32("graphics/battle_anims/sprites/289.4bpp.lz"); const u32 gBattleAnimSpritePalette_289[] = INCBIN_U32("graphics/battle_anims/sprites/289.gbapal.lz"); +const u32 gBattleAnimSpriteSheet_290[] = INCBIN_U32("graphics/battle_anims/sprites/290.4bpp.lz"); +const u32 gBattleAnimSpritePalette_290[] = INCBIN_U32("graphics/battle_anims/sprites/290.gbapal.lz"); + const u32 gBattleAnimSpritePalette_164[] = INCBIN_U32("graphics/battle_anims/sprites/164.gbapal.lz"); const u32 gBattleAnimSpritePalette_165[] = INCBIN_U32("graphics/battle_anims/sprites/165.gbapal.lz"); From 4aecea2ce84c649444120eb816ae3238734e0536 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Thu, 20 Dec 2018 12:46:08 -0600 Subject: [PATCH 4/5] Add Night Slash animation --- data/battle_anim_scripts.s | 17 ++++++++ src/effects_1.c | 79 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 96 insertions(+) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index dac93b467..912676a1a 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -1464,6 +1464,23 @@ Move_DARK_PULSE: end Move_NIGHT_SLASH: + loadspritegfx ANIM_TAG_SLASH + createvisualtask AnimTask_BlendNightSlash, 2, ANIM_TARGET, 2, 0, 8, 1 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 1, 3, 0, 12, RGB_BLACK + waitforvisualfinish + createsprite gNightSlashLeftSpriteTemplate, ANIM_TARGET, 2, 1, -8, 0 + playsewithpan SE_W013, SOUND_PAN_TARGET + delay 4 + createsprite gNightSlashLeftSpriteTemplate, ANIM_TARGET, 2, 1, 8, 0 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 8, 1 + delay 40 + createsprite gNightSlashRightSpriteTemplate, ANIM_TARGET, 2, 1, -8, 0 + createsprite gNightSlashRightSpriteTemplate, ANIM_TARGET, 2, 1, 8, 0 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 18, 1 + playsewithpan SE_W013, SOUND_PAN_TARGET + waitforvisualfinish + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 1, 3, 12, 0, RGB_BLACK + waitforvisualfinish end Move_AQUA_TAIL: diff --git a/src/effects_1.c b/src/effects_1.c index fc29fe6a2..0cabed63e 100644 --- a/src/effects_1.c +++ b/src/effects_1.c @@ -2104,10 +2104,12 @@ const struct SpriteTemplate gPowerOrbs_Float = }; #include "random.h" +#include "util.h" void AnimRockPolishStreak(struct Sprite *); void AnimRockPolishSparkle(struct Sprite *); void AnimPoisonJabProjectile(struct Sprite *); +void AnimNightSlash(struct Sprite *); const union AnimCmd gRockPolishStreak_AnimCmd[] = { @@ -2333,3 +2335,80 @@ void AnimPoisonJabProjectile(struct Sprite *sprite) sprite->callback = StartAnimLinearTranslation; StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); } + +const union AnimCmd gNightSlashLeftAnimCmd0[] = +{ + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(16, 4), + ANIMCMD_FRAME(32, 4), + ANIMCMD_FRAME(48, 4), + ANIMCMD_END, +}; + +const union AnimCmd gNightSlashLeftAnimCmd1[] = +{ + ANIMCMD_FRAME(48, 4), + ANIMCMD_END, +}; + +const union AnimCmd *const gNightSlashLeftAnimTable[] = +{ + gNightSlashLeftAnimCmd0, + gNightSlashLeftAnimCmd1, +}; + +const struct SpriteTemplate gNightSlashLeftSpriteTemplate = +{ + .tileTag = ANIM_TAG_SLASH, + .paletteTag = ANIM_TAG_SLASH, + .oam = &gUnknown_08524914, + .anims = gNightSlashLeftAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimNightSlash, +}; + +const union AnimCmd gNightSlashRightAnimCmd0[] = +{ + ANIMCMD_FRAME(0, 4, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_FRAME(16, 4, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_FRAME(32, 4, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_FRAME(48, 4, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_END, +}; + +const union AnimCmd gNightSlashRightAnimCmd1[] = +{ + ANIMCMD_FRAME(48, 4, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_END, +}; + +const union AnimCmd *const gNightSlashRightAnimTable[] = +{ + gNightSlashRightAnimCmd0, + gNightSlashRightAnimCmd1, +}; + +const struct SpriteTemplate gNightSlashRightSpriteTemplate = +{ + .tileTag = ANIM_TAG_SLASH, + .paletteTag = ANIM_TAG_SLASH, + .oam = &gUnknown_08524914, + .anims = gNightSlashRightAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimNightSlash, +}; + +void AnimTask_BlendNightSlash(u8 taskId) +{ + int paletteOffset = IndexOfSpritePaletteTag(ANIM_TAG_SLASH) * 16 + 256; + BlendPalette(paletteOffset, 16, 6, RGB_RED); + DestroyAnimVisualTask(taskId); +} + +void AnimNightSlash(struct Sprite *sprite) +{ + sprite->callback = sub_8101F40; + sprite->callback(sprite); +} From efd7013f62af8a64114738bad6c5fc5683f8f27d Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Thu, 20 Dec 2018 14:58:13 -0600 Subject: [PATCH 5/5] Add poison bubble effect to Poison Jab --- data/battle_anim_scripts.s | 3 +++ 1 file changed, 3 insertions(+) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index 912676a1a..8ae7a1968 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -1412,6 +1412,7 @@ Move_ROCK_POLISH: Move_POISON_JAB: loadspritegfx ANIM_TAG_PURPLE_JAB loadspritegfx ANIM_TAG_IMPACT + loadspritegfx ANIM_TAG_POISON_BUBBLE setalpha 12, 8 createsprite gPoisonJabProjectileSpriteTemplate, ANIM_TARGET, 2, 3, -31, 10 delay 2 @@ -1457,6 +1458,8 @@ Move_POISON_JAB: createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -7, -5, 1, 3 playsewithpan SE_W004, SOUND_PAN_TARGET waitforvisualfinish + call PoisonBubblesEffect + waitforvisualfinish blendoff end