[11495] Implement damage taken reduce part of spell 20911, 25899.

This commit is contained in:
VladimirMangos 2011-05-16 20:45:28 +04:00
parent 575584ad9b
commit 6237c115a5
3 changed files with 28 additions and 11 deletions

View file

@ -2767,6 +2767,7 @@ void Spell::EffectDummy(SpellEffectIndex eff_idx)
} }
case 31231: // Cheat Death case 31231: // Cheat Death
{ {
// Cheating Death
m_caster->CastSpell(m_caster, 45182, true); m_caster->CastSpell(m_caster, 45182, true);
return; return;
} }

View file

@ -6529,15 +6529,28 @@ uint32 Unit::SpellDamageBonusTaken(Unit *pCaster, SpellEntry const *spellProto,
TakenTotalMod *= GetTotalAuraMultiplierByMiscMask(SPELL_AURA_MOD_DAMAGE_PERCENT_TAKEN, schoolMask); TakenTotalMod *= GetTotalAuraMultiplierByMiscMask(SPELL_AURA_MOD_DAMAGE_PERCENT_TAKEN, schoolMask);
// .. taken pct: dummy auras // .. taken pct: dummy auras
if (GetTypeId() == TYPEID_PLAYER) AuraList const& mDummyAuras = GetAurasByType(SPELL_AURA_DUMMY);
for(AuraList::const_iterator i = mDummyAuras.begin(); i != mDummyAuras.end(); ++i)
{ {
//Cheat Death switch((*i)->GetId())
if (Aura *dummy = GetDummyAura(45182))
{ {
float mod = -((Player*)this)->GetRatingBonusValue(CR_CRIT_TAKEN_SPELL)*2*4; case 45182: // Cheating Death
if (mod < float(dummy->GetModifier()->m_amount)) if((*i)->GetModifier()->m_miscvalue & SPELL_SCHOOL_MASK_NORMAL)
mod = float(dummy->GetModifier()->m_amount); {
TakenTotalMod *= (mod+100.0f)/100.0f; if(GetTypeId() != TYPEID_PLAYER)
continue;
float mod = ((Player*)this)->GetRatingBonusValue(CR_CRIT_TAKEN_MELEE)*(-8.0f);
if (mod < float((*i)->GetModifier()->m_amount))
mod = float((*i)->GetModifier()->m_amount);
TakenTotalMod *= (mod + 100.0f) / 100.0f;
}
break;
case 20911: // Blessing of Sanctuary
case 25899: // Greater Blessing of Sanctuary
TakenTotalMod *= ((*i)->GetModifier()->m_amount + 100.0f) / 100.0f;
break;
} }
} }
@ -7501,10 +7514,9 @@ uint32 Unit::MeleeDamageBonusTaken(Unit *pCaster, uint32 pdamage,WeaponAttackTyp
AuraList const& mDummyAuras = GetAurasByType(SPELL_AURA_DUMMY); AuraList const& mDummyAuras = GetAurasByType(SPELL_AURA_DUMMY);
for(AuraList::const_iterator i = mDummyAuras.begin(); i != mDummyAuras.end(); ++i) for(AuraList::const_iterator i = mDummyAuras.begin(); i != mDummyAuras.end(); ++i)
{ {
switch((*i)->GetSpellProto()->SpellIconID) switch((*i)->GetId())
{ {
//Cheat Death case 45182: // Cheating Death
case 2109:
if((*i)->GetModifier()->m_miscvalue & SPELL_SCHOOL_MASK_NORMAL) if((*i)->GetModifier()->m_miscvalue & SPELL_SCHOOL_MASK_NORMAL)
{ {
if(GetTypeId() != TYPEID_PLAYER) if(GetTypeId() != TYPEID_PLAYER)
@ -7517,6 +7529,10 @@ uint32 Unit::MeleeDamageBonusTaken(Unit *pCaster, uint32 pdamage,WeaponAttackTyp
TakenPercent *= (mod + 100.0f) / 100.0f; TakenPercent *= (mod + 100.0f) / 100.0f;
} }
break; break;
case 20911: // Blessing of Sanctuary
case 25899: // Greater Blessing of Sanctuary
TakenPercent *= ((*i)->GetModifier()->m_amount + 100.0f) / 100.0f;
break;
} }
} }

View file

@ -1,4 +1,4 @@
#ifndef __REVISION_NR_H__ #ifndef __REVISION_NR_H__
#define __REVISION_NR_H__ #define __REVISION_NR_H__
#define REVISION_NR "11494" #define REVISION_NR "11495"
#endif // __REVISION_NR_H__ #endif // __REVISION_NR_H__