From 914a481308f2d647c10b45d17728571725252e74 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Thu, 18 Dec 2025 20:53:35 -0300 Subject: [PATCH] `B_BURN_DAMAGE` config tests (#8574) --- include/constants/generational_changes.h | 2 +- src/battle_ai_switch_items.c | 4 ++-- src/battle_end_turn.c | 4 ++-- test/battle/status1/burn.c | 9 ++++++--- test/battle/status1/frostbite.c | 11 ++++++++--- 5 files changed, 19 insertions(+), 11 deletions(-) diff --git a/include/constants/generational_changes.h b/include/constants/generational_changes.h index 4a9cc47dc0..34a7c14f75 100644 --- a/include/constants/generational_changes.h +++ b/include/constants/generational_changes.h @@ -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 */ \ diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index 1c327879cd..31f903c8c9 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -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; diff --git a/src/battle_end_turn.c b/src/battle_end_turn.c index ca4c46fa11..ef5539ebbf 100644 --- a/src/battle_end_turn.c +++ b/src/battle_end_turn.c @@ -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; } diff --git a/test/battle/status1/burn.c b/test/battle/status1/burn.c index 8ec9d05835..33eae7bd85 100644 --- a/test/battle/status1/burn.c +++ b/test/battle/status1/burn.c @@ -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); } } diff --git a/test/battle/status1/frostbite.c b/test/battle/status1/frostbite.c index e221a0eae3..9ae86a8738 100644 --- a/test/battle/status1/frostbite.c +++ b/test/battle/status1/frostbite.c @@ -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")