aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShocker <shocker@freakz.ro>2011-11-26 22:22:11 +0200
committerShocker <shocker@freakz.ro>2011-11-26 22:22:11 +0200
commit784a2fa29ab025ce4cf36b3ff57b2892d525375d (patch)
tree07c54ac65b49e39abd7905b6c8ffee712f13c202 /src
parent96df0d27e50231a702c78ec8e8de8cbc1d420d98 (diff)
Core/Spells: Implement SPELL_AURA_MOD_BYPASS_ARMOR_FOR_CASTER
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/Entities/Unit/Unit.cpp8
-rwxr-xr-xsrc/server/game/Spells/Auras/SpellAuraDefines.h2
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