Separates FRB and FRZ animations (#7611)

This commit is contained in:
grintoul 2025-08-28 18:07:08 +01:00 committed by GitHub
parent 04622b202f
commit a2e1835993
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 28 additions and 12 deletions

View File

@ -31084,6 +31084,17 @@ gBattleAnimStatus_Nightmare::
clearmonbg ANIM_DEF_PARTNER
end
gBattleAnimStatus_Frostbite::
playsewithpan SE_M_ICY_WIND, 0
loadspritegfx ANIM_TAG_ICE_CRYSTALS
monbg ANIM_DEF_PARTNER
splitbgprio ANIM_TARGET
call IceCrystalEffectShort
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_TARGET, 5, 7, 0, RGB(0, 20, 31)
waitforvisualfinish
clearmonbg ANIM_DEF_PARTNER
end
gBattleAnimGeneral_StatsChange::
createvisualtask AnimTask_StatsChange, 5
waitforvisualfinish

View File

@ -948,6 +948,7 @@ extern const u8 gBattleAnimStatus_Paralysis[];
extern const u8 gBattleAnimStatus_Freeze[];
extern const u8 gBattleAnimStatus_Curse[];
extern const u8 gBattleAnimStatus_Nightmare[];
extern const u8 gBattleAnimStatus_Frostbite[];
// general animations
extern const u8 gBattleAnimGeneral_StatsChange[];

View File

@ -616,8 +616,9 @@
#define B_ANIM_STATUS_FRZ 6
#define B_ANIM_STATUS_CURSED 7
#define B_ANIM_STATUS_NIGHTMARE 8
#define B_ANIM_STATUS_FRB 9
#define NUM_B_ANIMS_STATUS 9
#define NUM_B_ANIMS_STATUS 10
// Tasks with return values often assign them to gBattleAnimArgs[7].
#define ARG_RET_ID 7

View File

@ -195,6 +195,7 @@ static const u8* const sBattleAnims_StatusConditions[NUM_B_ANIMS_STATUS] =
[B_ANIM_STATUS_FRZ] = gBattleAnimStatus_Freeze,
[B_ANIM_STATUS_CURSED] = gBattleAnimStatus_Curse,
[B_ANIM_STATUS_NIGHTMARE] = gBattleAnimStatus_Nightmare,
[B_ANIM_STATUS_FRB] = gBattleAnimStatus_Frostbite,
};
static const u8* const sBattleAnims_General[NUM_B_ANIMS_GENERAL] =

View File

@ -464,8 +464,10 @@ void InitAndLaunchChosenStatusAnimation(u32 battler, bool32 isVolatile, u32 stat
gBattleSpritesDataPtr->healthBoxesData[battler].statusAnimActive = 1;
if (!isVolatile)
{
if (status == STATUS1_FREEZE || status == STATUS1_FROSTBITE)
if (status == STATUS1_FREEZE)
LaunchStatusAnimation(battler, B_ANIM_STATUS_FRZ);
else if (status == STATUS1_FROSTBITE)
LaunchStatusAnimation(battler, B_ANIM_STATUS_FRB);
else if (status == STATUS1_POISON || status & STATUS1_TOXIC_POISON)
LaunchStatusAnimation(battler, B_ANIM_STATUS_PSN);
else if (status == STATUS1_BURN)

View File

@ -87,7 +87,7 @@ SINGLE_BATTLE_TEST("Aspear and Lum Berries cure freeze or frostbite")
TURN { MOVE(player, MOVE_ICE_PUNCH); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_ICE_PUNCH, player);
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_FRZ, opponent);
ANIMATION(ANIM_TYPE_STATUS, (B_USE_FROSTBITE ? B_ANIM_STATUS_FRB : B_ANIM_STATUS_FRZ), opponent);
FREEZE_OR_FROSTBURN_STATUS(opponent, TRUE);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent);
FREEZE_OR_FROSTBURN_STATUS(opponent, FALSE);

View File

@ -20,7 +20,7 @@ SINGLE_BATTLE_TEST("Powder Snow inflicts freeze")
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_POWDER_SNOW, player);
HP_BAR(opponent);
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_FRZ, opponent);
ANIMATION(ANIM_TYPE_STATUS, (B_USE_FROSTBITE ? B_ANIM_STATUS_FRB : B_ANIM_STATUS_FRZ), opponent);
FREEZE_OR_FROSTBURN_STATUS(opponent, TRUE);
}
}
@ -85,11 +85,11 @@ SINGLE_BATTLE_TEST("Freezing Glare shouldn't freeze Psychic-types")
ANIMATION(ANIM_TYPE_MOVE, MOVE_FREEZING_GLARE, player);
HP_BAR(opponent);
#if B_STATUS_TYPE_IMMUNITY > GEN_1
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_FRZ, opponent);
ANIMATION(ANIM_TYPE_STATUS, (B_USE_FROSTBITE ? B_ANIM_STATUS_FRB : B_ANIM_STATUS_FRZ), opponent);
FREEZE_OR_FROSTBURN_STATUS(opponent, TRUE);
#else
NONE_OF {
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_FRZ, opponent);
ANIMATION(ANIM_TYPE_STATUS, (B_USE_FROSTBITE ? B_ANIM_STATUS_FRB : B_ANIM_STATUS_FRZ), opponent);
FREEZE_OR_FROSTBURN_STATUS(opponent, TRUE);
}
#endif

View File

@ -15,7 +15,7 @@ SINGLE_BATTLE_TEST("Tri Attack can inflict paralysis, burn or freeze")
u8 statusAnim;
PARAMETRIZE { statusAnim = B_ANIM_STATUS_PRZ; }
PARAMETRIZE { statusAnim = B_ANIM_STATUS_BRN; }
PARAMETRIZE { statusAnim = B_ANIM_STATUS_FRZ; }
PARAMETRIZE { statusAnim = (B_USE_FROSTBITE ? B_ANIM_STATUS_FRB : B_ANIM_STATUS_FRZ); }
PASSES_RANDOMLY(1, 3, RNG_TRI_ATTACK);
GIVEN {
PLAYER(SPECIES_WOBBUFFET);
@ -29,7 +29,7 @@ SINGLE_BATTLE_TEST("Tri Attack can inflict paralysis, burn or freeze")
ANIMATION(ANIM_TYPE_STATUS, statusAnim, opponent);
if (statusAnim == B_ANIM_STATUS_BRN) {
STATUS_ICON(opponent, burn: TRUE);
} else if (statusAnim == B_ANIM_STATUS_FRZ) {
} else if (statusAnim == (B_USE_FROSTBITE ? B_ANIM_STATUS_FRB : B_ANIM_STATUS_FRZ)) {
FREEZE_OR_FROSTBURN_STATUS(opponent, TRUE);
} else if (statusAnim == B_ANIM_STATUS_PRZ) {
STATUS_ICON(opponent, paralysis: TRUE);

View File

@ -32,7 +32,7 @@ SINGLE_BATTLE_TEST("Thunder, Ice and Fire Fang inflict status 10% of the time")
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, opponent);
STATUS_ICON(opponent, paralysis: TRUE);
} if (move == MOVE_ICE_FANG) {
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_FRZ, opponent);
ANIMATION(ANIM_TYPE_STATUS, (B_USE_FROSTBITE ? B_ANIM_STATUS_FRB : B_ANIM_STATUS_FRZ), opponent);
FREEZE_OR_FROSTBURN_STATUS(opponent, TRUE);
} if (move == MOVE_FIRE_FANG) {
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_BRN, opponent);

View File

@ -34,7 +34,7 @@ SINGLE_BATTLE_TEST("Frostbite deals 1/16th (Gen7+) or 1/8th damage to affected P
TURN {}
} SCENE {
MESSAGE("The opposing Wobbuffet was hurt by its frostbite!");
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_FRZ, opponent);
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_FRB, opponent);
HP_BAR(opponent, captureDamage: &frostbiteDamage);
} THEN { EXPECT_EQ(frostbiteDamage, opponent->maxHP / ((B_BURN_DAMAGE >= GEN_7) ? 16 : 8)); }
}
@ -86,11 +86,11 @@ SINGLE_BATTLE_TEST("Frostbite is healed when the user uses a thawing move")
HP_BAR(opponent);
if (move == MOVE_EMBER) {
MESSAGE("Wobbuffet was hurt by its frostbite!");
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_FRZ, player);
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_FRB, player);
} else {
NONE_OF {
MESSAGE("Wobbuffet was hurt by its frostbite!");
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_FRZ, player);
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_FRB, player);
}
}
}