diff --git a/utils/mods/legacy_combat.lua b/utils/mods/legacy_combat.lua index 6ca047961..d212cc8aa 100644 --- a/utils/mods/legacy_combat.lua +++ b/utils/mods/legacy_combat.lua @@ -69,15 +69,25 @@ function MeleeMitigation(e) end eq.debug( - string.format("[%s] ClientAttack] Damage Table [%i] WeaponDMG [%i]", + string.format("[%s] [ClientAttack] Damage Table [%i] WeaponDMG [%i]", e.self:GetCleanName(), GetDamageTable(e.other, e.hit.skill), e.hit.base_damage ) ); - e.hit.damage_done = 2 * e.hit.base_damage * GetDamageTable(e.self, e.hit.skill) / 100; - e.hit = DoMeleeMitigation(e.self, e.other, e.hit, e.opts); + e.hit.damage_done = 2 * e.hit.base_damage * GetDamageTable(e.other, e.hit.skill) / 100; + + eq.debug( + string.format("[%s] [ClientAttack] DamageDone [%i] BaseDamage [%i] HitSkill [%i]", + e.self:GetCleanName(), + e.hit.damage_done, + e.hit.base_damage, + e.hit.skill + ) + ); + + e.hit = DoMeleeMitigation(e.self, e.other, e.hit, e.opts); return e; end @@ -451,6 +461,19 @@ function GetCriticalChanceBonus(self, skill) critical_chance = critical_chance + spellbonuses:CriticalHitChance(skill); critical_chance = critical_chance + aabonuses:CriticalHitChance(skill); + eq.debug( + string.format("[%s] [Mob::GetCriticalChanceBonus] Bonuses | Item [%i] Spell [%i] AA [%i] | 2nd Item [%i] Spell [%i] AA [%i] Final Chance [%i]", + e.self:GetCleanName(), + itembonuses:CriticalHitChance(Skill.HIGHEST_SKILL + 1), + spellbonuses:CriticalHitChance(Skill.HIGHEST_SKILL + 1), + aabonuses:CriticalHitChance(Skill.HIGHEST_SKILL + 1), + itembonuses:CriticalHitChance(skill), + spellbonuses:CriticalHitChance(skill), + aabonuses:CriticalHitChance(skill), + critical_chance + ) + ); + return critical_chance; end diff --git a/zone/attack.cpp b/zone/attack.cpp index 5967e5ebf..d4e5ee9da 100644 --- a/zone/attack.cpp +++ b/zone/attack.cpp @@ -554,6 +554,14 @@ void Mob::MeleeMitigation(Mob *attacker, int32 &damage, int32 minhit, ExtraAttac float monkweight = RuleI(Combat, MonkACBonusWeight); monkweight = mod_monk_weight(monkweight, attacker); + Log.Out( + Logs::General, + Logs::Combat, + "[%s] [Mob::MeleeMitigation] Soft Cap [%.2f]", + GetCleanName(), + softcap + ); + if (IsClient()) { armor = CastToClient()->GetRawACNoShield(shield_ac); weight = (CastToClient()->CalcCurrentWeight() / 10.0); @@ -1190,6 +1198,16 @@ bool Client::Attack(Mob* other, int Hand, bool bRiposte, bool IsStrikethrough, b int max_hit = (2*weapon_damage*GetDamageTable(skillinuse)) / 100; + Log.Out( + Logs::General, + Logs::Combat, + "[%s] [ClientAttack] DamageDone [%i] BaseDamage [%i] HitSkill [%i]", + GetCleanName(), + max_hit, + weapon_damage, + skillinuse + ); + if(GetLevel() < 10 && max_hit > RuleI(Combat, HitCapPre10)) max_hit = (RuleI(Combat, HitCapPre10)); else if(GetLevel() < 20 && max_hit > RuleI(Combat, HitCapPre20)) diff --git a/zone/mob.cpp b/zone/mob.cpp index 662e226d0..b91a298ea 100644 --- a/zone/mob.cpp +++ b/zone/mob.cpp @@ -4653,11 +4653,30 @@ int16 Mob::GetCriticalChanceBonus(uint16 skill) int critical_chance = 0; // All skills + Skill specific - critical_chance += itembonuses.CriticalHitChance[EQEmu::skills::HIGHEST_SKILL + 1] + spellbonuses.CriticalHitChance[EQEmu::skills::HIGHEST_SKILL + 1] + aabonuses.CriticalHitChance[EQEmu::skills::HIGHEST_SKILL + 1] + - itembonuses.CriticalHitChance[skill] + spellbonuses.CriticalHitChance[skill] + aabonuses.CriticalHitChance[skill]; + critical_chance += itembonuses.CriticalHitChance[EQEmu::skills::HIGHEST_SKILL + 1] + + spellbonuses.CriticalHitChance[EQEmu::skills::HIGHEST_SKILL + 1] + + aabonuses.CriticalHitChance[EQEmu::skills::HIGHEST_SKILL + 1] + + itembonuses.CriticalHitChance[skill] + + spellbonuses.CriticalHitChance[skill] + + aabonuses.CriticalHitChance[skill]; - if(critical_chance < -100) + Log.Out( + Logs::General, + Logs::Combat, + "[%s] [Mob::GetCriticalChanceBonus] Bonuses | Item [%i] Spell [%i] AA [%i] | 2nd Item [%i] Spell [%i] AA [%i] Final Chance [%i]", + GetCleanName(), + itembonuses.CriticalHitChance[EQEmu::skills::HIGHEST_SKILL + 1], + spellbonuses.CriticalHitChance[EQEmu::skills::HIGHEST_SKILL + 1], + aabonuses.CriticalHitChance[EQEmu::skills::HIGHEST_SKILL + 1], + itembonuses.CriticalHitChance[skill], + spellbonuses.CriticalHitChance[skill], + aabonuses.CriticalHitChance[skill], + critical_chance + ); + + if (critical_chance < -100) { critical_chance = -100; + } return critical_chance; }