diff options
author | ariel- <ariel-@users.noreply.github.com> | 2018-03-16 12:18:38 -0300 |
---|---|---|
committer | ariel- <ariel-@users.noreply.github.com> | 2018-03-16 12:28:22 -0300 |
commit | a35d0a5f56c224ea081cdd5e16eb7bd181e70ab0 (patch) | |
tree | ecb89c5d91c428355396b715c56cad626f36cc63 | |
parent | 29c1119352e995c50879b64740c05da30410f3d7 (diff) |
Core/Entities: completely remove 60% melee miss cap as there is no proof of its existence
- Auras modifying hit chance should have full effect now
Ref issue #21629
-rw-r--r-- | src/server/game/Entities/Unit/StatSystem.cpp | 6 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 6 | ||||
-rw-r--r-- | src/server/game/Spells/Auras/SpellAuraEffects.cpp | 23 | ||||
-rw-r--r-- | src/server/game/Spells/Auras/SpellAuraEffects.h | 1 |
4 files changed, 5 insertions, 31 deletions
diff --git a/src/server/game/Entities/Unit/StatSystem.cpp b/src/server/game/Entities/Unit/StatSystem.cpp index b9e82ee9802..e9570f0eb47 100644 --- a/src/server/game/Entities/Unit/StatSystem.cpp +++ b/src/server/game/Entities/Unit/StatSystem.cpp @@ -850,14 +850,12 @@ void Player::UpdateArmorPenetration(int32 amount) void Player::UpdateMeleeHitChances() { - m_modMeleeHitChance = (float)GetTotalAuraModifier(SPELL_AURA_MOD_HIT_CHANCE); - m_modMeleeHitChance += GetRatingBonusValue(CR_HIT_MELEE); + m_modMeleeHitChance = GetRatingBonusValue(CR_HIT_MELEE); } void Player::UpdateRangedHitChances() { - m_modRangedHitChance = (float)GetTotalAuraModifier(SPELL_AURA_MOD_HIT_CHANCE); - m_modRangedHitChance += GetRatingBonusValue(CR_HIT_RANGED); + m_modRangedHitChance = GetRatingBonusValue(CR_HIT_RANGED); } void Player::UpdateSpellHitChances() diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 01f9dcea6c2..c83c967da5b 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -11969,10 +11969,8 @@ float Unit::MeleeSpellMissChance(Unit const* victim, WeaponAttackType attType, i else missChance -= m_modMeleeHitChance; - // Limit miss chance to 60% - missChance = std::min(missChance, 60.f); - - // miss chance from SPELL_AURA_MOD_ATTACKER_xxx_HIT_CHANCE can exceed 60% miss cap (eg aura 50240) + // miss chance from auras after calculating skill based miss + missChance -= GetTotalAuraModifier(SPELL_AURA_MOD_HIT_CHANCE); if (attType == RANGED_ATTACK) missChance -= victim->GetTotalAuraModifier(SPELL_AURA_MOD_ATTACKER_RANGED_HIT_CHANCE); else diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index a77c128e2de..811eee0d063 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -114,7 +114,7 @@ pAuraEffectHandler AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleAuraModBlockPercent, // 51 SPELL_AURA_MOD_BLOCK_PERCENT &AuraEffect::HandleAuraModWeaponCritPercent, // 52 SPELL_AURA_MOD_WEAPON_CRIT_PERCENT &AuraEffect::HandleNoImmediateEffect, // 53 SPELL_AURA_PERIODIC_LEECH implemented in AuraEffect::PeriodicTick - &AuraEffect::HandleModHitChance, // 54 SPELL_AURA_MOD_HIT_CHANCE + &AuraEffect::HandleNoImmediateEffect, // 54 SPELL_AURA_MOD_HIT_CHANCE implemented in Unit::MeleeSpellMissChance &AuraEffect::HandleModSpellHitChance, // 55 SPELL_AURA_MOD_SPELL_HIT_CHANCE &AuraEffect::HandleAuraTransform, // 56 SPELL_AURA_TRANSFORM &AuraEffect::HandleModSpellCritChance, // 57 SPELL_AURA_MOD_SPELL_CRIT_CHANCE @@ -3806,27 +3806,6 @@ void AuraEffect::HandleAuraModWeaponCritPercent(AuraApplication const* aurApp, u target->UpdateAllWeaponDependentCritAuras(); } -void AuraEffect::HandleModHitChance(AuraApplication const* aurApp, uint8 mode, bool /*apply*/) const -{ - if (!(mode & (AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK | AURA_EFFECT_HANDLE_STAT))) - return; - - Unit* target = aurApp->GetTarget(); - - // handle stack rules - if (target->GetTypeId() == TYPEID_PLAYER) - { - target->ToPlayer()->UpdateMeleeHitChances(); - target->ToPlayer()->UpdateRangedHitChances(); - } - else - { - float value = target->GetTotalAuraModifier(SPELL_AURA_MOD_HIT_CHANCE); - target->m_modMeleeHitChance = value; - target->m_modRangedHitChance = value; - } -} - void AuraEffect::HandleModSpellHitChance(AuraApplication const* aurApp, uint8 mode, bool apply) const { if (!(mode & (AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK | AURA_EFFECT_HANDLE_STAT))) diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.h b/src/server/game/Spells/Auras/SpellAuraEffects.h index b83d15148c5..d53c9813aa4 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.h +++ b/src/server/game/Spells/Auras/SpellAuraEffects.h @@ -239,7 +239,6 @@ class TC_GAME_API AuraEffect void HandleAuraModBlockPercent(AuraApplication const* aurApp, uint8 mode, bool apply) const; void HandleAuraModRegenInterrupt(AuraApplication const* aurApp, uint8 mode, bool apply) const; void HandleAuraModWeaponCritPercent(AuraApplication const* aurApp, uint8 mode, bool apply) const; - void HandleModHitChance(AuraApplication const* aurApp, uint8 mode, bool apply) const; void HandleModSpellHitChance(AuraApplication const* aurApp, uint8 mode, bool apply) const; void HandleModSpellCritChance(AuraApplication const* aurApp, uint8 mode, bool apply) const; void HandleModSpellCritChanceShool(AuraApplication const* aurApp, uint8 mode, bool apply) const; |