From f2fddf4ee1e722236f202881dddcd77e781a654c Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Sat, 28 Oct 2023 00:14:45 +0200 Subject: [PATCH] Syrup Bomb move and special speed drop anim, Credits to Dat.H A (#3474) --- data/battle_anim_scripts.s | 109 +++++++++++++- data/battle_scripts_1.s | 5 +- .../battle_anims/sprites/syrup_bomb_blob.png | Bin 0 -> 11263 bytes .../battle_anims/sprites/syrup_bomb_shell.png | Bin 0 -> 12958 bytes .../battle_anims/sprites/syrup_bomb_splat.png | Bin 0 -> 5896 bytes graphics/battle_anims/sprites/syrup_red.pal | 19 +++ .../battle_anims/sprites/syrup_yellow.pal | 19 +++ include/battle.h | 1 + include/constants/battle_anim.h | 8 +- include/graphics.h | 5 + src/battle_anim_new.c | 19 +++ src/battle_anim_poison.c | 141 ++++++++++++++++++ src/data/battle_anim.h | 12 ++ src/graphics.c | 6 + test/battle/move_effect/syrup_bomb.c | 25 ++-- 15 files changed, 354 insertions(+), 15 deletions(-) create mode 100644 graphics/battle_anims/sprites/syrup_bomb_blob.png create mode 100644 graphics/battle_anims/sprites/syrup_bomb_shell.png create mode 100644 graphics/battle_anims/sprites/syrup_bomb_splat.png create mode 100644 graphics/battle_anims/sprites/syrup_red.pal create mode 100644 graphics/battle_anims/sprites/syrup_yellow.pal diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index 07c1970153..4943e887f2 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -1009,6 +1009,7 @@ gBattleAnims_General:: .4byte General_SaltCureDamage @ B_ANIM_SALT_CURE_DAMAGE .4byte General_DynamaxGrowth @ B_ANIM_DYNAMAX_GROWTH .4byte General_SetWeather @ B_ANIM_MAX_SET_WEATHER + .4byte General_SyrupBombSpeedDrop @ B_ANIM_SYRUP_BOMB_SPEED_DROP .align 2 gBattleAnims_Special:: @@ -16524,6 +16525,113 @@ Move_DOUBLE_SHOCK:: blendoff end +Move_SYRUP_BOMB:: + createvisualtask AnimTask_SyrupBomb, 0x5 + jumpargeq 0x0, FALSE, Move_SYRUP_BOMB_RED + jumpargeq 0x0, TRUE, Move_SYRUP_BOMB_YELLOW + +@ Credits to Dat.H A +Move_SYRUP_BOMB_RED: + loadspritegfx ANIM_TAG_SYRUP_BLOB_RED + loadspritegfx ANIM_TAG_SYRUP_SPLAT_RED + loadspritegfx ANIM_TAG_SYRUP_SHELL_RED + call SyrupBombProjectileRed + call SyrupBombProjectileRed + call SyrupBombProjectileRed + call SyrupBombProjectileRed + call SyrupBombProjectileRed + call SyrupBombProjectileRed + call SyrupBombProjectileRed + call SyrupBombProjectileRed + call SyrupBombProjectileRed + call SyrupBombProjectileRed + createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 3, 0, 15, 1 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 1, 2, 0, 12, RGB(20, 3, 3) + createsprite gSyrupBombRedHitParticleSpriteTemplate, ANIM_TARGET, 2, 42, 27, 20 + createsprite gSyrupBombRedHitParticleSpriteTemplate, ANIM_TARGET, 2, -27, 44, 20 + createsprite gSyrupBombRedHitParticleSpriteTemplate, ANIM_TARGET, 2, 39, -28, 20 + createsprite gSyrupBombRedHitParticleSpriteTemplate, ANIM_TARGET, 2, -42, -42, 20 + playsewithpan SE_M_DIG, SOUND_PAN_TARGET + delay 5 + createsprite gSyrupBombRedShellSpriteTemplate, ANIM_TARGET, 1, ANIM_TARGET, 100 + createsprite gSyrupBombRedHitParticleSpriteTemplate, ANIM_TARGET, 2, 0, 40, 20 + createsprite gSyrupBombRedHitParticleSpriteTemplate, ANIM_TARGET, 2, -8, -44, 20 + createsprite gSyrupBombRedHitParticleSpriteTemplate, ANIM_TARGET, 2, -46, -28, 20 + createsprite gSyrupBombRedHitParticleSpriteTemplate, ANIM_TARGET, 2, 46, 9, 20 + playsewithpan SE_M_DIG, SOUND_PAN_TARGET + delay 5 + waitsound + waitforvisualfinish + end +SyrupBombProjectileRed: + playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER + createsprite gSyrupRedProjectileSpriteTemplate, ANIM_TARGET, 2, 20, 0, 40, 0 + delay 3 + return + +Move_SYRUP_BOMB_YELLOW: + loadspritegfx ANIM_TAG_SYRUP_BLOB_YELLOW + loadspritegfx ANIM_TAG_SYRUP_SPLAT_YELLOW + loadspritegfx ANIM_TAG_SYRUP_SHELL_YELLOW + call SyrupBombProjectileYellow + call SyrupBombProjectileYellow + call SyrupBombProjectileYellow + call SyrupBombProjectileYellow + call SyrupBombProjectileYellow + call SyrupBombProjectileYellow + call SyrupBombProjectileYellow + call SyrupBombProjectileYellow + call SyrupBombProjectileYellow + call SyrupBombProjectileYellow + createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 3, 0, 15, 1 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 1, 2, 0, 12, RGB(23, 13, 1) + createsprite gSyrupBombYellowHitParticleSpriteTemplate, ANIM_TARGET, 2, 42, 27, 20 + createsprite gSyrupBombYellowHitParticleSpriteTemplate, ANIM_TARGET, 2, -27, 44, 20 + createsprite gSyrupBombYellowHitParticleSpriteTemplate, ANIM_TARGET, 2, 39, -28, 20 + createsprite gSyrupBombYellowHitParticleSpriteTemplate, ANIM_TARGET, 2, -42, -42, 20 + playsewithpan SE_M_DIG, SOUND_PAN_TARGET + delay 5 + createsprite gSyrupBombYellowShellSpriteTemplate, ANIM_TARGET, 1, ANIM_TARGET, 100 + createsprite gSyrupBombYellowHitParticleSpriteTemplate, ANIM_TARGET, 2, 0, 40, 20 + createsprite gSyrupBombYellowHitParticleSpriteTemplate, ANIM_TARGET, 2, -8, -44, 20 + createsprite gSyrupBombYellowHitParticleSpriteTemplate, ANIM_TARGET, 2, -46, -28, 20 + createsprite gSyrupBombYellowHitParticleSpriteTemplate, ANIM_TARGET, 2, 46, 9, 20 + playsewithpan SE_M_DIG, SOUND_PAN_TARGET + delay 5 + waitsound + waitforvisualfinish + end +SyrupBombProjectileYellow: + playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER + createsprite gSyrupYellowProjectileSpriteTemplate, ANIM_TARGET, 2, 20, 0, 40, 0 + delay 3 + return + +General_SyrupBombSpeedDrop:: + createvisualtask AnimTask_StickySyrup, 0x5 + jumpargeq 0x0, FALSE, SyrupBombSpeedDropRed + jumpargeq 0x0, TRUE, SyrupBombSpeedDropYellow + +SyrupBombSpeedDropRed: + loadspritegfx ANIM_TAG_SYRUP_BLOB_RED + loadspritegfx ANIM_TAG_SYRUP_SHELL_RED + loopsewithpan SE_M_TOXIC, SOUND_PAN_TARGET, 13, 6 + createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 3, 0, 15, 1 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 1, 2, 0, 12, RGB(20, 3, 3) + createsprite gSyrupBombRedShellBSpriteTemplate, ANIM_TARGET, 1, ANIM_TARGET, 60 + waitforvisualfinish + end + +SyrupBombSpeedDropYellow: + loadspritegfx ANIM_TAG_SYRUP_BLOB_YELLOW + loadspritegfx ANIM_TAG_SYRUP_SHELL_YELLOW + loopsewithpan SE_M_TOXIC, SOUND_PAN_TARGET, 13, 6 + createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 3, 0, 15, 1 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 1, 2, 0, 12, RGB(23, 13, 1) + createsprite gSyrupBombYellowShellBSpriteTemplate, ANIM_TARGET, 1, ANIM_TARGET, 60 + waitforvisualfinish + end + Move_TERA_BLAST:: Move_AXE_KICK:: Move_LAST_RESPECTS:: @@ -16572,7 +16680,6 @@ Move_PSYBLADE:: Move_HYDRO_STEAM:: Move_BLOOD_MOON:: Move_MATCHA_GOTCHA:: -Move_SYRUP_BOMB:: Move_IVY_CUDGEL:: end @to do diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 01688c0dce..5cc9bdf419 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -454,7 +454,8 @@ BattleScript_SyrupBombActivates:: return BattleScript_SyrupBombEndTurn:: - playstatchangeanimation BS_ATTACKER, BIT_SPEED, STAT_CHANGE_NEGATIVE + flushtextbox + playanimation BS_ATTACKER, B_ANIM_SYRUP_BOMB_SPEED_DROP setstatchanger STAT_SPEED, 1, TRUE statbuffchange STAT_CHANGE_ALLOW_PTR | STAT_CHANGE_NOT_PROTECT_AFFECTED, BattleScript_SyrupBombTurnDmgEnd printfromtable gStatDownStringIds @@ -7344,7 +7345,7 @@ BattleScript_StealthRockFree:: printstring STRINGID_PKMNBLEWAWAYSTEALTHROCK waitmessage B_WAIT_TIME_LONG return - + BattleScript_SteelsurgeFree:: printstring STRINGID_PKMNBLEWAWAYSHARPSTEEL waitmessage B_WAIT_TIME_LONG diff --git a/graphics/battle_anims/sprites/syrup_bomb_blob.png b/graphics/battle_anims/sprites/syrup_bomb_blob.png new file mode 100644 index 0000000000000000000000000000000000000000..b04b3617561eb91d7d949fb2bd6740b4b262708d GIT binary patch literal 11263 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 literal 0 HcmV?d00001 diff --git a/graphics/battle_anims/sprites/syrup_bomb_shell.png b/graphics/battle_anims/sprites/syrup_bomb_shell.png new file mode 100644 index 0000000000000000000000000000000000000000..de592c54e6d6f0127efe635e7aec188c2ac091de GIT binary patch literal 12958 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 CsDfz# literal 0 HcmV?d00001 diff --git a/graphics/battle_anims/sprites/syrup_bomb_splat.png b/graphics/battle_anims/sprites/syrup_bomb_splat.png new file mode 100644 index 0000000000000000000000000000000000000000..ac873086a01a3ab3f7b0b01e230a879e76e248d3 GIT binary patch literal 5896 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 literal 0 HcmV?d00001 diff --git a/graphics/battle_anims/sprites/syrup_red.pal b/graphics/battle_anims/sprites/syrup_red.pal new file mode 100644 index 0000000000..2224ce0c84 --- /dev/null +++ b/graphics/battle_anims/sprites/syrup_red.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +30 255 0 +242 242 242 +255 194 173 +255 129 110 +224 51 38 +161 24 26 +110 30 36 +13 2 4 +200 224 240 +200 224 240 +200 224 240 +200 224 240 +200 224 240 +200 224 240 +200 224 240 +200 224 240 diff --git a/graphics/battle_anims/sprites/syrup_yellow.pal b/graphics/battle_anims/sprites/syrup_yellow.pal new file mode 100644 index 0000000000..ff5ac37331 --- /dev/null +++ b/graphics/battle_anims/sprites/syrup_yellow.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +30 255 0 +242 242 242 +255 255 168 +255 235 82 +255 192 0 +185 104 4 +107 59 19 +13 2 4 +200 224 240 +200 224 240 +200 224 240 +200 224 240 +200 224 240 +200 224 240 +200 224 240 +200 224 240 diff --git a/include/battle.h b/include/battle.h index cd314eb728..7fa841e835 100644 --- a/include/battle.h +++ b/include/battle.h @@ -106,6 +106,7 @@ struct DisableStruct u8 stickyWebDone:1; u8 stealthRockDone:1; u8 syrupBombTimer; + u8 syrupBombIsShiny:1; u8 steelSurgeDone:1; }; diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h index 54eeb5b055..0a01eb2996 100644 --- a/include/constants/battle_anim.h +++ b/include/constants/battle_anim.h @@ -399,7 +399,12 @@ #define ANIM_TAG_TEAPOT (ANIM_SPRITES_START + 385) #define ANIM_TAG_WOOD_HAMMER_HAMMER (ANIM_SPRITES_START + 386) #define ANIM_TAG_SNOWFLAKES (ANIM_SPRITES_START + 387) - +#define ANIM_TAG_SYRUP_BLOB_RED (ANIM_SPRITES_START + 388) +#define ANIM_TAG_SYRUP_SHELL_RED (ANIM_SPRITES_START + 389) +#define ANIM_TAG_SYRUP_BLOB_YELLOW (ANIM_SPRITES_START + 390) +#define ANIM_TAG_SYRUP_SHELL_YELLOW (ANIM_SPRITES_START + 391) +#define ANIM_TAG_SYRUP_SPLAT_RED (ANIM_SPRITES_START + 392) +#define ANIM_TAG_SYRUP_SPLAT_YELLOW (ANIM_SPRITES_START + 393) // battlers #define ANIM_ATTACKER 0 @@ -553,6 +558,7 @@ #define B_ANIM_SALT_CURE_DAMAGE 38 #define B_ANIM_DYNAMAX_GROWTH 39 #define B_ANIM_MAX_SET_WEATHER 40 +#define B_ANIM_SYRUP_BOMB_SPEED_DROP 41 // special animations table (gBattleAnims_Special) #define B_ANIM_LVL_UP 0 diff --git a/include/graphics.h b/include/graphics.h index f2ff391a95..1dc34717cb 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -10349,6 +10349,11 @@ extern const u32 gBattleAnimSpriteGfx_WoodHammerHammer[]; extern const u32 gBattleAnimSpritePal_WoodHammerHammer[]; extern const u32 gBattleAnimSpriteGfx_Snowflakes[]; extern const u32 gBattleAnimSpritePal_Snowflakes[]; +extern const u32 gBattleAnimSpriteGfx_SyrupBlob[]; +extern const u32 gBattleAnimSpriteGfx_SyrupShell[]; +extern const u32 gBattleAnimSpriteGfx_SyrupSplat[]; +extern const u32 gBattleAnimSpritePal_SyrupRed[]; +extern const u32 gBattleAnimSpritePal_SyrupYellow[]; extern const u32 gBattleAnimBgImage_Dark[]; extern const u32 gBattleAnimBgImage_Ghost[]; diff --git a/src/battle_anim_new.c b/src/battle_anim_new.c index f150afb799..0c99d2a434 100644 --- a/src/battle_anim_new.c +++ b/src/battle_anim_new.c @@ -9148,3 +9148,22 @@ void AnimTask_GetWeatherToSet(u8 taskId) } DestroyAnimVisualTask(taskId); } + +void AnimTask_SyrupBomb(u8 taskId) +{ + struct Pokemon *party = GetBattlerParty(gBattleAnimAttacker); + u32 isShiny = IsMonShiny(&party[gBattlerPartyIndexes[gBattleAnimAttacker]]); + + gDisableStructs[gBattleAnimTarget].syrupBombIsShiny = isShiny; + gBattleAnimArgs[0] = isShiny; + DestroyAnimVisualTask(taskId); +} + +void AnimTask_StickySyrup(u8 taskId) +{ + if (gDisableStructs[gBattleAnimTarget].syrupBombIsShiny) + gBattleAnimArgs[0] = TRUE; + else + gBattleAnimArgs[0] = FALSE; + DestroyAnimVisualTask(taskId); +} diff --git a/src/battle_anim_poison.c b/src/battle_anim_poison.c index 8905f5c475..0ed4e43090 100644 --- a/src/battle_anim_poison.c +++ b/src/battle_anim_poison.c @@ -14,6 +14,7 @@ static void AnimSuckerPunch(struct Sprite *sprite); static void AnimGunkShotParticlesStep(struct Sprite *sprite); static void AnimGunkShotParticles(struct Sprite *sprite); static void AnimGunkShotImpact(struct Sprite *sprite); +static void AnimAnimSyrupBomb(struct Sprite *); static const union AnimCmd sAnim_ToxicBubble[] = { @@ -305,6 +306,123 @@ const struct SpriteTemplate gGunkShotImpactSpriteTemplate = .callback = AnimGunkShotImpact, }; +static const union AnimCmd sAnim_SyrupCoat[] = +{ + ANIMCMD_FRAME(128, 10), + ANIMCMD_FRAME(64, 5), + ANIMCMD_FRAME(0, 45), + ANIMCMD_FRAME(64, 15), + ANIMCMD_FRAME(128, 15), + ANIMCMD_FRAME(192, 20), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_SyrupStick[] = +{ + ANIMCMD_FRAME(192, 5), + ANIMCMD_FRAME(128, 35), + ANIMCMD_FRAME(192, 20), + ANIMCMD_END, +}; + +static const union AnimCmd *const sAnims_SyrupCoat[] = +{ + sAnim_SyrupCoat, +}; + +static const union AnimCmd *const sAnims_SyrupStick[] = +{ + sAnim_SyrupStick, +}; + +const struct SpriteTemplate gSyrupRedProjectileSpriteTemplate = +{ + .tileTag = ANIM_TAG_SYRUP_BLOB_RED, + .paletteTag = ANIM_TAG_SYRUP_BLOB_RED, + .oam = &gOamData_AffineDouble_ObjNormal_16x16, + .anims = gAnims_PoisonProjectile, + .images = NULL, + .affineAnims = gAffineAnims_PoisonProjectile, + .callback = AnimSludgeProjectile, +}; + +const struct SpriteTemplate gSyrupYellowProjectileSpriteTemplate = +{ + .tileTag = ANIM_TAG_SYRUP_BLOB_YELLOW, + .paletteTag = ANIM_TAG_SYRUP_BLOB_YELLOW, + .oam = &gOamData_AffineDouble_ObjNormal_16x16, + .anims = gAnims_PoisonProjectile, + .images = NULL, + .affineAnims = gAffineAnims_PoisonProjectile, + .callback = AnimSludgeProjectile, +}; + +const struct SpriteTemplate gSyrupBombRedHitParticleSpriteTemplate = +{ + .tileTag = ANIM_TAG_SYRUP_SPLAT_RED, + .paletteTag = ANIM_TAG_SYRUP_BLOB_RED, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, + .anims = gAnims_PoisonProjectile, + .images = NULL, + .affineAnims = sAffineAnims_SludgeBombHit, + .callback = AnimSludgeBombHitParticle, +}; + +const struct SpriteTemplate gSyrupBombYellowHitParticleSpriteTemplate = +{ + .tileTag = ANIM_TAG_SYRUP_SPLAT_YELLOW, + .paletteTag = ANIM_TAG_SYRUP_BLOB_YELLOW, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, + .anims = gAnims_PoisonProjectile, + .images = NULL, + .affineAnims = sAffineAnims_SludgeBombHit, + .callback = AnimSludgeBombHitParticle, +}; + +const struct SpriteTemplate gSyrupBombRedShellSpriteTemplate = +{ + .tileTag = ANIM_TAG_SYRUP_SHELL_RED, + .paletteTag = ANIM_TAG_SYRUP_BLOB_RED, + .oam = &gOamData_AffineOff_ObjNormal_64x64, + .anims = sAnims_SyrupCoat, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimAnimSyrupBomb, +}; + +const struct SpriteTemplate gSyrupBombYellowShellSpriteTemplate = +{ + .tileTag = ANIM_TAG_SYRUP_SHELL_YELLOW, + .paletteTag = ANIM_TAG_SYRUP_BLOB_YELLOW, + .oam = &gOamData_AffineOff_ObjNormal_64x64, + .anims = sAnims_SyrupCoat, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimAnimSyrupBomb, +}; + +const struct SpriteTemplate gSyrupBombRedShellBSpriteTemplate = +{ + .tileTag = ANIM_TAG_SYRUP_SHELL_RED, + .paletteTag = ANIM_TAG_SYRUP_BLOB_RED, + .oam = &gOamData_AffineOff_ObjNormal_64x64, + .anims = sAnims_SyrupStick, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimAnimSyrupBomb, +}; + +const struct SpriteTemplate gSyrupBombYellowShellBSpriteTemplate = +{ + .tileTag = ANIM_TAG_SYRUP_SHELL_YELLOW, + .paletteTag = ANIM_TAG_SYRUP_BLOB_YELLOW, + .oam = &gOamData_AffineOff_ObjNormal_64x64, + .anims = sAnims_SyrupStick, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimAnimSyrupBomb, +}; + static void AnimGunkShotImpact(struct Sprite *sprite) { StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]); @@ -534,3 +652,26 @@ static void AnimBubbleEffect_Step(struct Sprite *sprite) if (sprite->affineAnimEnded) DestroyAnimSprite(sprite); } + +static void AnimSyrupBomb_Step(struct Sprite *sprite) +{ + if (sprite->data[1] > sprite->data[0] - 10) + sprite->invisible = sprite->data[1] & 1; + + if (sprite->data[1] == sprite->data[0]) + DestroyAnimSprite(sprite); + + sprite->data[1]++; +} + +static void AnimAnimSyrupBomb(struct Sprite *sprite) +{ + if (gBattleAnimArgs[0] == ANIM_TARGET) + { + sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + 2; + } + + sprite->data[0] = gBattleAnimArgs[1]; + sprite->callback = AnimSyrupBomb_Step; +} diff --git a/src/data/battle_anim.h b/src/data/battle_anim.h index d342ccbae5..880b98efce 100644 --- a/src/data/battle_anim.h +++ b/src/data/battle_anim.h @@ -1449,6 +1449,12 @@ const struct CompressedSpriteSheet gBattleAnimPicTable[] = {gBattleAnimSpriteGfx_Teapot, 0x1800, ANIM_TAG_TEAPOT}, {gBattleAnimSpriteGfx_WoodHammerHammer, 0x800, ANIM_TAG_WOOD_HAMMER_HAMMER}, {gBattleAnimSpriteGfx_Snowflakes, 0x0700, ANIM_TAG_SNOWFLAKES}, + {gBattleAnimSpriteGfx_SyrupBlob, 0x400, ANIM_TAG_SYRUP_BLOB_RED}, + {gBattleAnimSpriteGfx_SyrupShell, 0x2000, ANIM_TAG_SYRUP_SHELL_RED}, + {gBattleAnimSpriteGfx_SyrupBlob, 0x400, ANIM_TAG_SYRUP_BLOB_YELLOW}, + {gBattleAnimSpriteGfx_SyrupShell, 0x2000, ANIM_TAG_SYRUP_SHELL_YELLOW}, + {gBattleAnimSpriteGfx_SyrupSplat, 0x400, ANIM_TAG_SYRUP_SPLAT_RED}, + {gBattleAnimSpriteGfx_SyrupSplat, 0x400, ANIM_TAG_SYRUP_SPLAT_YELLOW}, }; const struct CompressedSpritePalette gBattleAnimPaletteTable[] = @@ -1898,6 +1904,12 @@ const struct CompressedSpritePalette gBattleAnimPaletteTable[] = {gBattleAnimSpritePal_Teapot, ANIM_TAG_TEAPOT}, {gBattleAnimSpritePal_WoodHammerHammer, ANIM_TAG_WOOD_HAMMER_HAMMER}, {gBattleAnimSpritePal_RainDrops, ANIM_TAG_SNOWFLAKES}, + {gBattleAnimSpritePal_SyrupRed, ANIM_TAG_SYRUP_BLOB_RED}, + {gBattleAnimSpritePal_SyrupRed, ANIM_TAG_SYRUP_SHELL_RED}, + {gBattleAnimSpritePal_SyrupYellow, ANIM_TAG_SYRUP_BLOB_YELLOW}, + {gBattleAnimSpritePal_SyrupYellow, ANIM_TAG_SYRUP_SHELL_YELLOW}, + {gBattleAnimSpritePal_SyrupRed, ANIM_TAG_SYRUP_SPLAT_RED}, + {gBattleAnimSpritePal_SyrupYellow, ANIM_TAG_SYRUP_SPLAT_YELLOW}, }; const struct BattleAnimBackground gBattleAnimBackgroundTable[] = diff --git a/src/graphics.c b/src/graphics.c index d152d081c0..45c066ad26 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -451,6 +451,12 @@ const u32 gBattleAnimSpritePal_WoodHammerHammer[] = INCBIN_U32("graphics/battle_ const u32 gBattleAnimSpriteGfx_Snowflakes[] = INCBIN_U32("graphics/battle_anims/sprites/snowflakes.4bpp.lz"); const u32 gBattleAnimSpritePal_Snowflakes[] = INCBIN_U32("graphics/battle_anims/sprites/snowflakes.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_SyrupBlob[] = INCBIN_U32("graphics/battle_anims/sprites/syrup_bomb_blob.4bpp.lz"); +const u32 gBattleAnimSpriteGfx_SyrupShell[] = INCBIN_U32("graphics/battle_anims/sprites/syrup_bomb_shell.4bpp.lz"); +const u32 gBattleAnimSpriteGfx_SyrupSplat[] = INCBIN_U32("graphics/battle_anims/sprites/syrup_bomb_splat.4bpp.lz"); +const u32 gBattleAnimSpritePal_SyrupRed[] = INCBIN_U32("graphics/battle_anims/sprites/syrup_red.gbapal.lz"); +const u32 gBattleAnimSpritePal_SyrupYellow[] = INCBIN_U32("graphics/battle_anims/sprites/syrup_yellow.gbapal.lz"); + // old battle interface data, unused const u32 gOldBattleInterfaceGfx[] = INCBIN_U32("graphics/unused/obi1.4bpp.lz"); diff --git a/test/battle/move_effect/syrup_bomb.c b/test/battle/move_effect/syrup_bomb.c index 10e2c40de1..f286049e1a 100644 --- a/test/battle/move_effect/syrup_bomb.c +++ b/test/battle/move_effect/syrup_bomb.c @@ -16,14 +16,14 @@ SINGLE_BATTLE_TEST("Syrup Bomb covers the foe in sticky syrup for 3 turns") ANIMATION(ANIM_TYPE_MOVE, MOVE_SYRUP_BOMB, player); HP_BAR(opponent); MESSAGE("Foe Wobbuffet got covered in sticky syrup!"); - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SYRUP_BOMB_SPEED_DROP, opponent); MESSAGE("Foe Wobbuffet's Speed fell!"); - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SYRUP_BOMB_SPEED_DROP, opponent); MESSAGE("Foe Wobbuffet's Speed fell!"); - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SYRUP_BOMB_SPEED_DROP, opponent); MESSAGE("Foe Wobbuffet's Speed fell!"); NONE_OF { - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SYRUP_BOMB_SPEED_DROP, opponent); MESSAGE("Foe Wobbuffet's Speed fell!"); } } @@ -41,7 +41,7 @@ SINGLE_BATTLE_TEST("Sticky Syrup isn't applied again if the target is already co ANIMATION(ANIM_TYPE_MOVE, MOVE_SYRUP_BOMB, player); HP_BAR(opponent); MESSAGE("Foe Wobbuffet got covered in sticky syrup!"); - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SYRUP_BOMB_SPEED_DROP, opponent); MESSAGE("Foe Wobbuffet's Speed fell!"); ANIMATION(ANIM_TYPE_MOVE, MOVE_SYRUP_BOMB, player); HP_BAR(opponent); @@ -89,9 +89,9 @@ SINGLE_BATTLE_TEST("Sticky Syrup speed reduction is prevented by Clear Body, Whi { MESSAGE("Foe Beldum got covered in sticky syrup!"); ABILITY_POPUP(opponent, ABILITY_CLEAR_BODY); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SYRUP_BOMB_SPEED_DROP, opponent); MESSAGE("Foe Beldum's Clear Body prevents stat loss!"); NONE_OF { - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); MESSAGE("Foe Beldum's Speed fell!"); } } @@ -99,9 +99,9 @@ SINGLE_BATTLE_TEST("Sticky Syrup speed reduction is prevented by Clear Body, Whi { MESSAGE("Foe Torkoal got covered in sticky syrup!"); ABILITY_POPUP(opponent, ABILITY_WHITE_SMOKE); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SYRUP_BOMB_SPEED_DROP, opponent); MESSAGE("Foe Torkoal's White Smoke prevents stat loss!"); NONE_OF { - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); MESSAGE("Foe Torkoal's Speed fell!"); } } @@ -109,9 +109,9 @@ SINGLE_BATTLE_TEST("Sticky Syrup speed reduction is prevented by Clear Body, Whi { MESSAGE("Foe Solgaleo got covered in sticky syrup!"); ABILITY_POPUP(opponent, ABILITY_FULL_METAL_BODY); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SYRUP_BOMB_SPEED_DROP, opponent); MESSAGE("Foe Solgaleo's Full Metal Body prevents stat loss!"); NONE_OF { - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); MESSAGE("Foe Solgaleo's Speed fell!"); } } @@ -131,7 +131,7 @@ SINGLE_BATTLE_TEST("Sticky Syrup speed reduction is prevented by Clear Amulet") MESSAGE("Foe Wobbuffet got covered in sticky syrup!"); MESSAGE("Foe Wobbuffet's Clear Amulet prevents its stats from being lowered!"); NONE_OF { - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SYRUP_BOMB_SPEED_DROP, opponent); MESSAGE("Foe Wobbuffet's Speed fell!"); } } @@ -150,13 +150,16 @@ SINGLE_BATTLE_TEST("Sticky syrup will not decrease speed further then minus six" TURN { MOVE(player, MOVE_SYRUP_BOMB); } TURN {} } SCENE { - for (j = 0; j < 3; j++) { ANIMATION(ANIM_TYPE_MOVE, MOVE_SCARY_FACE, player); } + for (j = 0; j < 3; j++) { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCARY_FACE, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + } ANIMATION(ANIM_TYPE_MOVE, MOVE_SYRUP_BOMB, player); HP_BAR(opponent); MESSAGE("Foe Wobbuffet got covered in sticky syrup!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SYRUP_BOMB_SPEED_DROP, opponent); MESSAGE("Foe Wobbuffet's Speed won't go lower!"); NONE_OF { - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); MESSAGE("Foe Wobbuffet's Speed fell!"); } }