B_BURN_DAMAGE config tests (#8574)

This commit is contained in:
Eduardo Quezada 2025-12-18 20:53:35 -03:00 committed by GitHub
parent dc5ed3a85b
commit 914a481308
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 19 additions and 11 deletions

View File

@ -24,7 +24,7 @@
F(MAX_LEVEL_EV_GAINS, maxLevelEvGains, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(RECALCULATE_STATS, recalculateStats, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
/* Damage settings */ \
F(BURN_DAMAGE, burnDamage, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(BURN_DAMAGE, burnDamage, (u32, GEN_COUNT - 1)) \
F(BURN_FACADE_DMG, burnFacadeDmg, (u32, GEN_COUNT - 1)) \
F(BINDING_DAMAGE, bindingDamage, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(PSYWAVE_DMG, psywaveDmg, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \

View File

@ -1757,7 +1757,7 @@ static u32 GetSwitchinStatusDamage(u32 battler)
{
if (status & STATUS1_BURN)
{
if (B_BURN_DAMAGE >= GEN_7)
if (GetConfig(CONFIG_BURN_DAMAGE) >= GEN_7)
statusDamage = maxHP / 16;
else
statusDamage = maxHP / 8;
@ -1768,7 +1768,7 @@ static u32 GetSwitchinStatusDamage(u32 battler)
}
else if (status & STATUS1_FROSTBITE)
{
if (B_BURN_DAMAGE >= GEN_7)
if (GetConfig(CONFIG_BURN_DAMAGE) >= GEN_7)
statusDamage = maxHP / 16;
else
statusDamage = maxHP / 8;

View File

@ -531,7 +531,7 @@ static bool32 HandleEndTurnBurn(u32 battler)
&& IsBattlerAlive(battler)
&& !IsAbilityAndRecord(battler, ability, ABILITY_MAGIC_GUARD))
{
s32 burnDamage = GetNonDynamaxMaxHP(battler) / (B_BURN_DAMAGE >= GEN_7 ? 16 : 8);
s32 burnDamage = GetNonDynamaxMaxHP(battler) / (GetConfig(CONFIG_BURN_DAMAGE) >= GEN_7 ? 16 : 8);
if (ability == ABILITY_HEATPROOF)
{
if (burnDamage > (burnDamage / 2) + 1) // Record ability if the burn takes less damage than it normally would.
@ -556,7 +556,7 @@ static bool32 HandleEndTurnFrostbite(u32 battler)
&& IsBattlerAlive(battler)
&& !IsAbilityAndRecord(battler, GetBattlerAbility(battler), ABILITY_MAGIC_GUARD))
{
SetPassiveDamageAmount(battler, GetNonDynamaxMaxHP(battler) / (B_BURN_DAMAGE >= GEN_7 ? 16 : 8));
SetPassiveDamageAmount(battler, GetNonDynamaxMaxHP(battler) / (GetConfig(CONFIG_BURN_DAMAGE) >= GEN_7 ? 16 : 8));
BattleScriptExecute(BattleScript_FrostbiteTurnDmg);
effect = TRUE;
}

View File

@ -7,10 +7,13 @@ ASSUMPTIONS
ASSUME(GetMoveNonVolatileStatus(MOVE_WILL_O_WISP) == MOVE_EFFECT_BURN);
}
SINGLE_BATTLE_TEST("Burn deals 1/16th (Gen7+) or 1/8th damage per turn")
SINGLE_BATTLE_TEST("Burn deals 1/8th damage (Gen1-6) or 1/16th (Gen7+) per turn")
{
u32 j;
u32 j, config, value;
PARAMETRIZE { config = GEN_7; value = 16; }
PARAMETRIZE { config = GEN_6; value = 8; }
GIVEN {
WITH_CONFIG(CONFIG_BURN_DAMAGE, config);
PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_BURN); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
@ -19,7 +22,7 @@ SINGLE_BATTLE_TEST("Burn deals 1/16th (Gen7+) or 1/8th damage per turn")
} SCENE {
s32 maxHP = GetMonData(&PLAYER_PARTY[0], MON_DATA_MAX_HP);
for (j = 0; j < 4; j++)
HP_BAR(player, damage: maxHP / ((B_BURN_DAMAGE >= GEN_7) ? 16 : 8));
HP_BAR(player, damage: maxHP / value);
}
}

View File

@ -23,11 +23,14 @@ SINGLE_BATTLE_TEST("Frostbite reduces the special attack by 50 percent")
} THEN { EXPECT_EQ(reducedDamage * 2, normaleDamage); }
}
SINGLE_BATTLE_TEST("Frostbite deals 1/16th (Gen7+) or 1/8th damage to affected Pokémon")
SINGLE_BATTLE_TEST("Frostbite deals 1/8th damage (Gen1-6) or 1/16th (Gen7+) per turn")
{
s16 frostbiteDamage;
u32 config, value;
PARAMETRIZE { config = GEN_7; value = 16; }
PARAMETRIZE { config = GEN_6; value = 8; }
GIVEN {
WITH_CONFIG(CONFIG_BURN_DAMAGE, config);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET) { Status1(STATUS1_FROSTBITE); }
} WHEN {
@ -36,7 +39,9 @@ SINGLE_BATTLE_TEST("Frostbite deals 1/16th (Gen7+) or 1/8th damage to affected P
MESSAGE("The opposing Wobbuffet was hurt by its frostbite!");
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)); }
} THEN {
EXPECT_EQ(frostbiteDamage, opponent->maxHP / value);
}
}
SINGLE_BATTLE_TEST("Frostbite is healed if hit with a thawing move")