diff options
| author | Shocker <shocker@freakz.ro> | 2011-11-26 22:22:11 +0200 |
|---|---|---|
| committer | Shocker <shocker@freakz.ro> | 2011-11-26 22:22:11 +0200 |
| commit | 784a2fa29ab025ce4cf36b3ff57b2892d525375d (patch) | |
| tree | 07c54ac65b49e39abd7905b6c8ffee712f13c202 /src | |
| parent | 96df0d27e50231a702c78ec8e8de8cbc1d420d98 (diff) | |
Core/Spells: Implement SPELL_AURA_MOD_BYPASS_ARMOR_FOR_CASTER
Diffstat (limited to 'src')
| -rwxr-xr-x | src/server/game/Entities/Unit/Unit.cpp | 8 | ||||
| -rwxr-xr-x | src/server/game/Spells/Auras/SpellAuraDefines.h | 2 |
2 files changed, 9 insertions, 1 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 87834d27f34..777a3a47f44 100755 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -1490,6 +1490,14 @@ 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; + 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)); + // Ignore enemy armor by SPELL_AURA_MOD_TARGET_RESISTANCE aura armor += GetTotalAuraModifierByMiscMask(SPELL_AURA_MOD_TARGET_RESISTANCE, SPELL_SCHOOL_MASK_NORMAL); diff --git a/src/server/game/Spells/Auras/SpellAuraDefines.h b/src/server/game/Spells/Auras/SpellAuraDefines.h index 4717c9c2819..34c1f5f201d 100755 --- a/src/server/game/Spells/Auras/SpellAuraDefines.h +++ b/src/server/game/Spells/Auras/SpellAuraDefines.h @@ -404,7 +404,7 @@ enum AuraType SPELL_AURA_MOD_TIME_BETWEEN_ATTACKS = 342, // (attack speed) NYI SPELL_AURA_343 = 343, SPELL_AURA_MOD_AUTOATTACK_DAMAGE = 344, // (white damage) NYI - SPELL_AURA_MOD_BYPASS_ARMOR_FOR_CASTER = 345, // NYI + SPELL_AURA_BYPASS_ARMOR_FOR_CASTER = 345, SPELL_AURA_PROGRESS_BAR = 346, // NYI SPELL_AURA_MOD_SPELL_COOLDOWN_BY_HASTE = 347, // NYI SPELL_AURA_DEPOSIT_BONUS_MONEY_IN_GUILD_BANK_ON_LOOT = 348, // NYI |
