Syrup Bomb move and special speed drop anim, Credits to Dat.H A (#3474)

This commit is contained in:
Alex 2023-10-28 00:14:45 +02:00 committed by GitHub
parent 9d2be9f3a6
commit f2fddf4ee1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
15 changed files with 354 additions and 15 deletions

View file

@ -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

View file

@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

View file

@ -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

View file

@ -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

View file

@ -106,6 +106,7 @@ struct DisableStruct
u8 stickyWebDone:1;
u8 stealthRockDone:1;
u8 syrupBombTimer;
u8 syrupBombIsShiny:1;
u8 steelSurgeDone:1;
};

View file

@ -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

View file

@ -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[];

View file

@ -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);
}

View file

@ -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;
}

View file

@ -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[] =

View file

@ -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");

View file

@ -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!");
}
}