mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-21 01:37:37 +01:00
* Correctly calculate spell resist after spell hit check
--HG-- branch : trunk
This commit is contained in:
@@ -2791,9 +2791,6 @@ SpellMissInfo Unit::MagicSpellHitResult(Unit *pVictim, SpellEntry const *spell)
|
||||
// Apply mod
|
||||
modHitChance-=resist_chance;
|
||||
|
||||
// Chance resist debuff
|
||||
modHitChance-=pVictim->GetTotalAuraModifierByMiscValue(SPELL_AURA_MOD_DEBUFF_RESISTANCE, int32(spell->Dispel));
|
||||
|
||||
int32 HitChance = modHitChance * 100;
|
||||
// Increase hit chance from attacker SPELL_AURA_MOD_SPELL_HIT_CHANCE and attacker ratings
|
||||
HitChance += int32(m_modSpellHitChance*100.0f);
|
||||
@@ -2812,6 +2809,29 @@ SpellMissInfo Unit::MagicSpellHitResult(Unit *pVictim, SpellEntry const *spell)
|
||||
if (rand < tmp)
|
||||
return SPELL_MISS_MISS;
|
||||
|
||||
tmp = 0;
|
||||
// Chance resist mechanic (select max value from every mechanic spell effect)
|
||||
int32 resist_mech = 0;
|
||||
// Get effects mechanic and chance
|
||||
for(uint8 eff = 0; eff < MAX_SPELL_EFFECTS; ++eff)
|
||||
{
|
||||
int32 effect_mech = GetEffectMechanic(spell, eff);
|
||||
if (effect_mech)
|
||||
{
|
||||
int32 temp = pVictim->GetTotalAuraModifierByMiscValue(SPELL_AURA_MOD_MECHANIC_RESISTANCE, effect_mech);
|
||||
if (resist_mech < temp*100)
|
||||
resist_mech = temp*100;
|
||||
}
|
||||
}
|
||||
|
||||
// Chance resist debuff
|
||||
tmp -= pVictim->GetTotalAuraModifierByMiscValue(SPELL_AURA_MOD_DEBUFF_RESISTANCE, int32(spell->Dispel));
|
||||
|
||||
// Roll chance
|
||||
tmp += resist_mech;
|
||||
if (rand < tmp)
|
||||
return SPELL_MISS_RESIST;
|
||||
|
||||
// cast by caster in front of victim
|
||||
if (pVictim->HasInArc(M_PI,this) || pVictim->HasAuraType(SPELL_AURA_IGNORE_HIT_DIRECTION))
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user