mirror of
https://github.com/mangosfour/server.git
synced 2025-12-13 13:37:05 +00:00
[8454] Implement aura SPELL_AURA_MOD_TARGET_ARMOR_PCT.
This fix work stance 2457, talent 12284/13709 and ranks, partly talent 61154 and ranks. Signed-off-by: VladimirMangos <vladimir@getmangos.com>
This commit is contained in:
parent
2e09244e57
commit
ab9b738e54
3 changed files with 12 additions and 6 deletions
|
|
@ -330,7 +330,7 @@ pAuraHandler AuraHandler[TOTAL_AURAS]=
|
||||||
&Aura::HandleNoImmediateEffect, //277 SPELL_AURA_MOD_MAX_AFFECTED_TARGETS Use SpellClassMask for spell select
|
&Aura::HandleNoImmediateEffect, //277 SPELL_AURA_MOD_MAX_AFFECTED_TARGETS Use SpellClassMask for spell select
|
||||||
&Aura::HandleNULL, //278 SPELL_AURA_MOD_DISARM_RANGED disarm ranged weapon
|
&Aura::HandleNULL, //278 SPELL_AURA_MOD_DISARM_RANGED disarm ranged weapon
|
||||||
&Aura::HandleNULL, //279 visual effects? 58836 and 57507
|
&Aura::HandleNULL, //279 visual effects? 58836 and 57507
|
||||||
&Aura::HandleNULL, //280 SPELL_AURA_MOD_TARGET_ARMOR_PCT
|
&Aura::HandleNoImmediateEffect, //280 SPELL_AURA_MOD_TARGET_ARMOR_PCT implemented in Unit::CalcArmorReducedDamage
|
||||||
&Aura::HandleNULL, //281 SPELL_AURA_MOD_HONOR_GAIN
|
&Aura::HandleNULL, //281 SPELL_AURA_MOD_HONOR_GAIN
|
||||||
&Aura::HandleAuraIncreaseBaseHealthPercent, //282 SPELL_AURA_INCREASE_BASE_HEALTH_PERCENT
|
&Aura::HandleAuraIncreaseBaseHealthPercent, //282 SPELL_AURA_INCREASE_BASE_HEALTH_PERCENT
|
||||||
&Aura::HandleNoImmediateEffect, //283 SPELL_AURA_MOD_HEALING_RECEIVED implemented in Unit::SpellHealingBonus
|
&Aura::HandleNoImmediateEffect, //283 SPELL_AURA_MOD_HEALING_RECEIVED implemented in Unit::SpellHealingBonus
|
||||||
|
|
|
||||||
|
|
@ -1565,6 +1565,7 @@ uint32 Unit::CalcArmorReducedDamage(Unit* pVictim, const uint32 damage)
|
||||||
{
|
{
|
||||||
uint32 newdamage = 0;
|
uint32 newdamage = 0;
|
||||||
float armor = pVictim->GetArmor();
|
float armor = pVictim->GetArmor();
|
||||||
|
|
||||||
// Ignore enemy armor by SPELL_AURA_MOD_TARGET_RESISTANCE aura
|
// Ignore enemy armor by SPELL_AURA_MOD_TARGET_RESISTANCE aura
|
||||||
armor += GetTotalAuraModifierByMiscMask(SPELL_AURA_MOD_TARGET_RESISTANCE, SPELL_SCHOOL_MASK_NORMAL);
|
armor += GetTotalAuraModifierByMiscMask(SPELL_AURA_MOD_TARGET_RESISTANCE, SPELL_SCHOOL_MASK_NORMAL);
|
||||||
|
|
||||||
|
|
@ -1572,19 +1573,24 @@ uint32 Unit::CalcArmorReducedDamage(Unit* pVictim, const uint32 damage)
|
||||||
if (GetTypeId()==TYPEID_PLAYER)
|
if (GetTypeId()==TYPEID_PLAYER)
|
||||||
armor *= 1.0f - ((Player*)this)->GetRatingBonusValue(CR_ARMOR_PENETRATION) / 100.0f;
|
armor *= 1.0f - ((Player*)this)->GetRatingBonusValue(CR_ARMOR_PENETRATION) / 100.0f;
|
||||||
|
|
||||||
if (armor < 0.0f) armor=0.0f;
|
// Ignore enemy armor by SPELL_AURA_MOD_TARGET_ARMOR_PCT
|
||||||
|
armor *= 1.0f - GetTotalAuraModifier(SPELL_AURA_MOD_TARGET_ARMOR_PCT) / 100.0f;
|
||||||
|
|
||||||
|
if (armor < 0.0f)
|
||||||
|
armor = 0.0f;
|
||||||
|
|
||||||
float levelModifier = getLevel();
|
float levelModifier = getLevel();
|
||||||
if ( levelModifier > 59 )
|
if (levelModifier > 59)
|
||||||
levelModifier = levelModifier + (4.5f * (levelModifier-59));
|
levelModifier = levelModifier + (4.5f * (levelModifier-59));
|
||||||
|
|
||||||
float tmpvalue = 0.1f * armor / (8.5f * levelModifier + 40);
|
float tmpvalue = 0.1f * armor / (8.5f * levelModifier + 40);
|
||||||
tmpvalue = tmpvalue/(1.0f + tmpvalue);
|
tmpvalue = tmpvalue/(1.0f + tmpvalue);
|
||||||
|
|
||||||
if(tmpvalue < 0.0f)
|
if (tmpvalue < 0.0f)
|
||||||
tmpvalue = 0.0f;
|
tmpvalue = 0.0f;
|
||||||
if(tmpvalue > 0.75f)
|
if (tmpvalue > 0.75f)
|
||||||
tmpvalue = 0.75f;
|
tmpvalue = 0.75f;
|
||||||
|
|
||||||
newdamage = uint32(damage - (damage * tmpvalue));
|
newdamage = uint32(damage - (damage * tmpvalue));
|
||||||
|
|
||||||
return (newdamage > 1) ? newdamage : 1;
|
return (newdamage > 1) ? newdamage : 1;
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#ifndef __REVISION_NR_H__
|
#ifndef __REVISION_NR_H__
|
||||||
#define __REVISION_NR_H__
|
#define __REVISION_NR_H__
|
||||||
#define REVISION_NR "8453"
|
#define REVISION_NR "8454"
|
||||||
#endif // __REVISION_NR_H__
|
#endif // __REVISION_NR_H__
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue