fix: include base skill damage in FlyingKick, Kick, RoundKick, and Bash

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<int>(ac_bonus + skill_bonus).

Fixes #5035
This commit is contained in:
Roy Love 2026-04-10 20:45:43 -05:00
parent ba2ca5eada
commit d5b7c014b3
2 changed files with 9 additions and 9 deletions

View File

@ -5175,7 +5175,7 @@ int Bot::GetBaseSkillDamage(EQ::skills::SkillType skill, Mob *target)
ac_bonus = inst->GetItemArmorClass(true) / 25.0f; ac_bonus = inst->GetItemArmorClass(true) / 25.0f;
if (ac_bonus > skill_bonus) if (ac_bonus > skill_bonus)
ac_bonus = skill_bonus; ac_bonus = skill_bonus;
return static_cast<int>(ac_bonus + skill_bonus); return base + static_cast<int>(ac_bonus + skill_bonus);
} }
case EQ::skills::SkillKick: { case EQ::skills::SkillKick: {
float skill_bonus = skill_level / 10.0f; 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; ac_bonus = inst->GetItemArmorClass(true) / 25.0f;
if (ac_bonus > skill_bonus) if (ac_bonus > skill_bonus)
ac_bonus = skill_bonus; ac_bonus = skill_bonus;
return static_cast<int>(ac_bonus + skill_bonus); return base + static_cast<int>(ac_bonus + skill_bonus);
} }
case EQ::skills::SkillBash: { case EQ::skills::SkillBash: {
float skill_bonus = skill_level / 10.0f; 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; ac_bonus = inst->GetItemArmorClass(true) / 25.0f;
if (ac_bonus > skill_bonus) if (ac_bonus > skill_bonus)
ac_bonus = skill_bonus; ac_bonus = skill_bonus;
return static_cast<int>(ac_bonus + skill_bonus); return base + static_cast<int>(ac_bonus + skill_bonus);
} }
case EQ::skills::SkillBackstab: { case EQ::skills::SkillBackstab: {
float skill_bonus = static_cast<float>(skill_level) * 0.02f; float skill_bonus = static_cast<float>(skill_level) * 0.02f;

View File

@ -102,10 +102,10 @@ int Mob::GetBaseSkillDamage(EQ::skills::SkillType skill, Mob *target)
} }
if (RuleB(Character, ItemExtraSkillDamageCalcAsPercent) && GetSkillDmgAmt(skill) > 0) { if (RuleB(Character, ItemExtraSkillDamageCalcAsPercent) && GetSkillDmgAmt(skill) > 0) {
return static_cast<int>(ac_bonus + skill_bonus) * std::abs(GetSkillDmgAmt(skill) / 100); return (base + static_cast<int>(ac_bonus + skill_bonus)) * std::abs(GetSkillDmgAmt(skill) / 100);
} }
return static_cast<int>(ac_bonus + skill_bonus); return base + static_cast<int>(ac_bonus + skill_bonus);
} }
case EQ::skills::SkillKick: case EQ::skills::SkillKick:
case EQ::skills::SkillRoundKick: { case EQ::skills::SkillRoundKick: {
@ -128,10 +128,10 @@ int Mob::GetBaseSkillDamage(EQ::skills::SkillType skill, Mob *target)
} }
if (RuleB(Character, ItemExtraSkillDamageCalcAsPercent) && GetSkillDmgAmt(skill) > 0) { if (RuleB(Character, ItemExtraSkillDamageCalcAsPercent) && GetSkillDmgAmt(skill) > 0) {
return static_cast<int>(ac_bonus + skill_bonus) * std::abs(GetSkillDmgAmt(skill) / 100); return (base + static_cast<int>(ac_bonus + skill_bonus)) * std::abs(GetSkillDmgAmt(skill) / 100);
} }
return static_cast<int>(ac_bonus + skill_bonus); return base + static_cast<int>(ac_bonus + skill_bonus);
} }
case EQ::skills::SkillBash: { case EQ::skills::SkillBash: {
float skill_bonus = skill_level / 10.0f; 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) { if (RuleB(Character, ItemExtraSkillDamageCalcAsPercent) && GetSkillDmgAmt(skill) > 0) {
return static_cast<int>(ac_bonus + skill_bonus) * std::abs(GetSkillDmgAmt(skill) / 100); return (base + static_cast<int>(ac_bonus + skill_bonus)) * std::abs(GetSkillDmgAmt(skill) / 100);
} }
return static_cast<int>(ac_bonus + skill_bonus); return base + static_cast<int>(ac_bonus + skill_bonus);
} }
case EQ::skills::SkillBackstab: { case EQ::skills::SkillBackstab: {
float skill_bonus = static_cast<float>(skill_level) * 0.02f; float skill_bonus = static_cast<float>(skill_level) * 0.02f;