diff options
| author | Shocker <shocker@freakz.ro> | 2011-11-26 23:27:02 +0200 | 
|---|---|---|
| committer | Shocker <shocker@freakz.ro> | 2011-11-26 23:27:02 +0200 | 
| commit | d1135f00c6879fe4fd9aaad1aa3d0221c33838ea (patch) | |
| tree | 0fe623ffde838e6f1e607f6a49bc081d038fc499 /src | |
| parent | d26b7210fb13efef51b108defbef77942dae7ed0 (diff) | |
Core/Spells: Implement SPELL_AURA_MOD_CRIT_CHANCE_FOR_CASTER
Correct variable names / comments for SPELL_AURA_BYPASS_ARMOR_FOR_CASTER
Diffstat (limited to 'src')
| -rwxr-xr-x | src/server/game/Entities/Unit/Unit.cpp | 13 | ||||
| -rwxr-xr-x | src/server/game/Spells/Auras/SpellAuraDefines.h | 2 | 
2 files changed, 10 insertions, 5 deletions
| diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index a97343f204e..b4f444f587c 100755 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -1490,13 +1490,13 @@ uint32 Unit::CalcArmorReducedDamage(Unit* victim, const uint32 damage, SpellInfo      uint32 newdamage = 0;      float armor = float(victim->GetArmor()); -    // bypass enemy armor effectiveness by SPELL_AURA_BYPASS_ARMOR_FOR_CASTER -    int32 auraEffectivenessReduction = 0; +    // bypass enemy armor by SPELL_AURA_BYPASS_ARMOR_FOR_CASTER +    int32 armorBypassPct = 0;      AuraEffectList const & reductionAuras = victim->GetAuraEffectsByType(SPELL_AURA_BYPASS_ARMOR_FOR_CASTER);      for (AuraEffectList::const_iterator i = reductionAuras.begin(); i != reductionAuras.end(); ++i)          if ((*i)->GetCasterGUID() == GetGUID()) -            auraEffectivenessReduction += (*i)->GetAmount(); -    armor = CalculatePctN(armor, 100 - std::min(auraEffectivenessReduction, 100)); +            armorBypassPct += (*i)->GetAmount(); +    armor = CalculatePctN(armor, 100 - std::min(armorBypassPct, 100));      // Ignore enemy armor by SPELL_AURA_MOD_TARGET_RESISTANCE aura      armor += GetTotalAuraModifierByMiscMask(SPELL_AURA_MOD_TARGET_RESISTANCE, SPELL_SCHOOL_MASK_NORMAL); @@ -11025,6 +11025,11 @@ bool Unit::isSpellCrit(Unit* victim, SpellInfo const* spellProto, SpellSchoolMas      if (Player* modOwner = GetSpellModOwner())          modOwner->ApplySpellMod(spellProto->Id, SPELLMOD_CRITICAL_CHANCE, crit_chance); +    AuraEffectList const& critAuras = victim->GetAuraEffectsByType(SPELL_AURA_MOD_CRIT_CHANCE_FOR_CASTER); +    for (AuraEffectList::const_iterator i = critAuras.begin(); i != critAuras.end(); ++i) +        if ((*i)->GetCasterGUID() == GetGUID() && (*i)->IsAffectedOnSpell(spellProto)) +            crit_chance += (*i)->GetAmount(); +      crit_chance = crit_chance > 0.0f ? crit_chance : 0.0f;      if (roll_chance_f(crit_chance))          return true; diff --git a/src/server/game/Spells/Auras/SpellAuraDefines.h b/src/server/game/Spells/Auras/SpellAuraDefines.h index 43c0f5d5ac2..822f5f886e5 100755 --- a/src/server/game/Spells/Auras/SpellAuraDefines.h +++ b/src/server/game/Spells/Auras/SpellAuraDefines.h @@ -367,7 +367,7 @@ enum AuraType      SPELL_AURA_MOD_MINIMUM_SPEED                            = 305,      SPELL_AURA_306                                          = 306,      SPELL_AURA_HEAL_ABSORB_TEST                             = 307, -    SPELL_AURA_MOD_CRIT_CHANCE_FOR_CASTER                   = 308,  // NYI +    SPELL_AURA_MOD_CRIT_CHANCE_FOR_CASTER                   = 308,      SPELL_AURA_309                                          = 309,      SPELL_AURA_MOD_CREATURE_AOE_DAMAGE_AVOIDANCE            = 310,      SPELL_AURA_311                                          = 311, | 
