From d5b7c014b37248ab5ea2fe502edcce8f5f3e0f22 Mon Sep 17 00:00:00 2001 From: Roy Love Date: Fri, 10 Apr 2026 20:45:43 -0500 Subject: [PATCH] fix: include base skill damage in FlyingKick, Kick, RoundKick, and Bash MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit GetBaseSkillDamage() fetches each skill's configured base damage via EQ::skills::GetBaseDamage() (which reads the corresponding Combat rule) into `base` at line 35, but FlyingKick, Kick, RoundKick, and Bash all return only (ac_bonus + skill_bonus), discarding `base` entirely. The rules KickBaseDamage, RoundKickBaseDamage, FlyingKickBaseDamage, and BashBaseDamage were effectively dead configuration. For Kick and RoundKick, `base` was incremented at skill levels 75 and 175 before being discarded — clear evidence the return was missing it. The working cases (DragonPunch, EagleStrike, TigerClaw, Frenzy) all correctly return `base`. This applies the same pattern to the four affected skills: return base + static_cast(ac_bonus + skill_bonus). Fixes #5035 --- zone/bot.cpp | 6 +++--- zone/special_attacks.cpp | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/zone/bot.cpp b/zone/bot.cpp index 8c3f668a4..00662389c 100644 --- a/zone/bot.cpp +++ b/zone/bot.cpp @@ -5175,7 +5175,7 @@ int Bot::GetBaseSkillDamage(EQ::skills::SkillType skill, Mob *target) ac_bonus = inst->GetItemArmorClass(true) / 25.0f; if (ac_bonus > skill_bonus) ac_bonus = skill_bonus; - return static_cast(ac_bonus + skill_bonus); + return base + static_cast(ac_bonus + skill_bonus); } case EQ::skills::SkillKick: { float skill_bonus = skill_level / 10.0f; @@ -5185,7 +5185,7 @@ int Bot::GetBaseSkillDamage(EQ::skills::SkillType skill, Mob *target) ac_bonus = inst->GetItemArmorClass(true) / 25.0f; if (ac_bonus > skill_bonus) ac_bonus = skill_bonus; - return static_cast(ac_bonus + skill_bonus); + return base + static_cast(ac_bonus + skill_bonus); } case EQ::skills::SkillBash: { float skill_bonus = skill_level / 10.0f; @@ -5199,7 +5199,7 @@ int Bot::GetBaseSkillDamage(EQ::skills::SkillType skill, Mob *target) ac_bonus = inst->GetItemArmorClass(true) / 25.0f; if (ac_bonus > skill_bonus) ac_bonus = skill_bonus; - return static_cast(ac_bonus + skill_bonus); + return base + static_cast(ac_bonus + skill_bonus); } case EQ::skills::SkillBackstab: { float skill_bonus = static_cast(skill_level) * 0.02f; diff --git a/zone/special_attacks.cpp b/zone/special_attacks.cpp index 6c367101c..466ab7d58 100644 --- a/zone/special_attacks.cpp +++ b/zone/special_attacks.cpp @@ -102,10 +102,10 @@ int Mob::GetBaseSkillDamage(EQ::skills::SkillType skill, Mob *target) } if (RuleB(Character, ItemExtraSkillDamageCalcAsPercent) && GetSkillDmgAmt(skill) > 0) { - return static_cast(ac_bonus + skill_bonus) * std::abs(GetSkillDmgAmt(skill) / 100); + return (base + static_cast(ac_bonus + skill_bonus)) * std::abs(GetSkillDmgAmt(skill) / 100); } - return static_cast(ac_bonus + skill_bonus); + return base + static_cast(ac_bonus + skill_bonus); } case EQ::skills::SkillKick: case EQ::skills::SkillRoundKick: { @@ -128,10 +128,10 @@ int Mob::GetBaseSkillDamage(EQ::skills::SkillType skill, Mob *target) } if (RuleB(Character, ItemExtraSkillDamageCalcAsPercent) && GetSkillDmgAmt(skill) > 0) { - return static_cast(ac_bonus + skill_bonus) * std::abs(GetSkillDmgAmt(skill) / 100); + return (base + static_cast(ac_bonus + skill_bonus)) * std::abs(GetSkillDmgAmt(skill) / 100); } - return static_cast(ac_bonus + skill_bonus); + return base + static_cast(ac_bonus + skill_bonus); } case EQ::skills::SkillBash: { float skill_bonus = skill_level / 10.0f; @@ -160,10 +160,10 @@ int Mob::GetBaseSkillDamage(EQ::skills::SkillType skill, Mob *target) } if (RuleB(Character, ItemExtraSkillDamageCalcAsPercent) && GetSkillDmgAmt(skill) > 0) { - return static_cast(ac_bonus + skill_bonus) * std::abs(GetSkillDmgAmt(skill) / 100); + return (base + static_cast(ac_bonus + skill_bonus)) * std::abs(GetSkillDmgAmt(skill) / 100); } - return static_cast(ac_bonus + skill_bonus); + return base + static_cast(ac_bonus + skill_bonus); } case EQ::skills::SkillBackstab: { float skill_bonus = static_cast(skill_level) * 0.02f;