From 828e12bee6d39dc478728480e57e8b60cc29cf0d Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Sat, 20 Dec 2025 11:47:46 -0300 Subject: [PATCH] `B_SPORT_DMG_REDUCTION` config tests (#8593) --- include/constants/generational_changes.h | 2 +- src/battle_util.c | 4 ++-- test/battle/move_effect/mud_sport.c | 16 +++++++++++++--- test/battle/move_effect/water_sport.c | 16 +++++++++++++--- 4 files changed, 29 insertions(+), 9 deletions(-) diff --git a/include/constants/generational_changes.h b/include/constants/generational_changes.h index 2fae8ee886..8cabad41ea 100644 --- a/include/constants/generational_changes.h +++ b/include/constants/generational_changes.h @@ -32,7 +32,7 @@ F(HIDDEN_POWER_DMG, hiddenPowerDmg, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \ F(ROUGH_SKIN_DMG, roughSkinDmg, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \ F(KNOCK_OFF_DMG, knockOffDmg, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \ - F(SPORT_DMG_REDUCTION, sportDmgReduction, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \ + F(SPORT_DMG_REDUCTION, sportDmgReduction, (u32, GEN_COUNT - 1)) \ F(EXPLOSION_DEFENSE, explosionDefense, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \ F(PARENTAL_BOND_DMG, parentalBondDmg, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \ F(MULTIPLE_TARGETS_DMG, multipleTargetsDmg, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \ diff --git a/src/battle_util.c b/src/battle_util.c index 11a5ef583c..ff6a991e1f 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -7335,9 +7335,9 @@ static inline u32 CalcMoveBasePowerAfterModifiers(struct DamageContext *ctx) if (IsBattlerTerrainAffected(battlerAtk, ctx->abilityAtk, ctx->holdEffectAtk, STATUS_FIELD_PSYCHIC_TERRAIN) && moveType == TYPE_PSYCHIC) modifier = uq4_12_multiply(modifier, (B_TERRAIN_TYPE_BOOST >= GEN_8 ? UQ_4_12(1.3) : UQ_4_12(1.5))); if (IsFieldMudSportAffected(ctx->moveType)) - modifier = uq4_12_multiply(modifier, UQ_4_12(B_SPORT_DMG_REDUCTION >= GEN_5 ? 0.33 : 0.5)); + modifier = uq4_12_multiply(modifier, UQ_4_12(GetConfig(CONFIG_SPORT_DMG_REDUCTION) >= GEN_5 ? 0.33 : 0.5)); if (IsFieldWaterSportAffected(ctx->moveType)) - modifier = uq4_12_multiply(modifier, UQ_4_12(B_SPORT_DMG_REDUCTION >= GEN_5 ? 0.33 : 0.5)); + modifier = uq4_12_multiply(modifier, UQ_4_12(GetConfig(CONFIG_SPORT_DMG_REDUCTION) >= GEN_5 ? 0.33 : 0.5)); // attacker's abilities switch (ctx->abilityAtk) diff --git a/test/battle/move_effect/mud_sport.c b/test/battle/move_effect/mud_sport.c index ff483699b4..31e0ea18ff 100644 --- a/test/battle/move_effect/mud_sport.c +++ b/test/battle/move_effect/mud_sport.c @@ -3,11 +3,15 @@ TO_DO_BATTLE_TEST("TODO: Write Mud Sport (Move Effect) test titles") -SINGLE_BATTLE_TEST("Mud Sport reduces the damage of Electric Type moves by 67% (Gen5+)") +SINGLE_BATTLE_TEST("Mud Sport reduces the damage of Electric Type moves by 50% (Gen3-4) or 67% (Gen5+)") { + u32 config; s16 playerDmg[2]; s16 opponentDmg[2]; + PARAMETRIZE { config = GEN_4; } + PARAMETRIZE { config = GEN_5; } GIVEN { + WITH_CONFIG(CONFIG_SPORT_DMG_REDUCTION, config); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { @@ -28,7 +32,13 @@ SINGLE_BATTLE_TEST("Mud Sport reduces the damage of Electric Type moves by 67% ( HP_BAR(player, captureDamage: &playerDmg[1]); } THEN { - EXPECT_MUL_EQ(opponentDmg[0], Q_4_12(0.33), opponentDmg[1]); - EXPECT_MUL_EQ(playerDmg[0], Q_4_12(0.33), playerDmg[1]); + if (config >= GEN_5) { + EXPECT_MUL_EQ(opponentDmg[0], Q_4_12(0.33), opponentDmg[1]); + EXPECT_MUL_EQ(playerDmg[0], Q_4_12(0.33), playerDmg[1]); + } + else { + EXPECT_MUL_EQ(opponentDmg[0], Q_4_12(0.5), opponentDmg[1]); + EXPECT_MUL_EQ(playerDmg[0], Q_4_12(0.5), playerDmg[1]); + } } } diff --git a/test/battle/move_effect/water_sport.c b/test/battle/move_effect/water_sport.c index cf4ec929c3..5cf52ed1c2 100644 --- a/test/battle/move_effect/water_sport.c +++ b/test/battle/move_effect/water_sport.c @@ -3,11 +3,15 @@ TO_DO_BATTLE_TEST("TODO: Write Water Sport (Move Effect) test titles") -SINGLE_BATTLE_TEST("Water Sport reduces the damage of Fire Type moves by 67% (Gen5+)") +SINGLE_BATTLE_TEST("Water Sport reduces the damage of Fire Type moves by 50% (Gen3-4) or 67% (Gen5+)") { + u32 config; s16 playerDmg[2]; s16 opponentDmg[2]; + PARAMETRIZE { config = GEN_4; } + PARAMETRIZE { config = GEN_5; } GIVEN { + WITH_CONFIG(CONFIG_SPORT_DMG_REDUCTION, config); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { @@ -28,7 +32,13 @@ SINGLE_BATTLE_TEST("Water Sport reduces the damage of Fire Type moves by 67% (Ge HP_BAR(player, captureDamage: &playerDmg[1]); } THEN { - EXPECT_MUL_EQ(opponentDmg[0], Q_4_12(0.33), opponentDmg[1]); - EXPECT_MUL_EQ(playerDmg[0], Q_4_12(0.33), playerDmg[1]); + if (config >= GEN_5) { + EXPECT_MUL_EQ(opponentDmg[0], Q_4_12(0.33), opponentDmg[1]); + EXPECT_MUL_EQ(playerDmg[0], Q_4_12(0.33), playerDmg[1]); + } + else { + EXPECT_MUL_EQ(opponentDmg[0], Q_4_12(0.5), opponentDmg[1]); + EXPECT_MUL_EQ(playerDmg[0], Q_4_12(0.5), playerDmg[1]); + } } }