[8428] Implement proper amount absorbed damage for spell 62600.

Other change jus move code under "if(apply) else"
This commit is contained in:
VladimirMangos 2009-08-27 14:50:51 +04:00
parent beae3fe00f
commit a3207da3d9
2 changed files with 105 additions and 95 deletions

View file

@ -5981,8 +5981,10 @@ void Aura::HandleSchoolAbsorb(bool apply, bool Real)
if(!caster) if(!caster)
return; return;
if (apply)
{
// prevent double apply bonuses // prevent double apply bonuses
if(apply && (m_target->GetTypeId()!=TYPEID_PLAYER || !((Player*)m_target)->GetSession()->PlayerLoading())) if (m_target->GetTypeId()!=TYPEID_PLAYER || !((Player*)m_target)->GetSession()->PlayerLoading())
{ {
float DoneActualBenefit = 0.0f; float DoneActualBenefit = 0.0f;
switch(m_spellProto->SpellFamilyName) switch(m_spellProto->SpellFamilyName)
@ -6009,6 +6011,11 @@ void Aura::HandleSchoolAbsorb(bool apply, bool Real)
//+30% from +spell bonus //+30% from +spell bonus
DoneActualBenefit = caster->SpellBaseDamageBonus(GetSpellSchoolMask(m_spellProto)) * 0.30f; DoneActualBenefit = caster->SpellBaseDamageBonus(GetSpellSchoolMask(m_spellProto)) * 0.30f;
break; break;
case SPELLFAMILY_DRUID:
// Savage Defense (amount store original percent of attack power applied)
if (m_spellProto->SpellIconID == 50) // only spell with this aura fit
m_modifier.m_amount = int32(m_modifier.m_amount * m_target->GetTotalAttackPowerValue(BASE_ATTACK) / 100);
break;
default: default:
break; break;
} }
@ -6017,9 +6024,11 @@ void Aura::HandleSchoolAbsorb(bool apply, bool Real)
m_modifier.m_amount += (int32)DoneActualBenefit; m_modifier.m_amount += (int32)DoneActualBenefit;
} }
}
else
{
// Ice Barrier (remove effect from Shattered Barrier) // Ice Barrier (remove effect from Shattered Barrier)
if(!apply && m_spellProto->SpellIconID == 32 && m_spellProto->SpellFamilyName == SPELLFAMILY_MAGE) if (m_spellProto->SpellIconID == 32 && m_spellProto->SpellFamilyName == SPELLFAMILY_MAGE)
{ {
if (!((m_removeMode == AURA_REMOVE_BY_DEFAULT && !m_modifier.m_amount) || m_removeMode == AURA_REMOVE_BY_DISPEL)) if (!((m_removeMode == AURA_REMOVE_BY_DEFAULT && !m_modifier.m_amount) || m_removeMode == AURA_REMOVE_BY_DISPEL))
return; return;
@ -6035,7 +6044,7 @@ void Aura::HandleSchoolAbsorb(bool apply, bool Real)
} }
} }
if (!apply && caster && if (caster &&
// Power Word: Shield // Power Word: Shield
m_spellProto->SpellFamilyName == SPELLFAMILY_PRIEST && m_spellProto->Mechanic == MECHANIC_SHIELD && m_spellProto->SpellFamilyName == SPELLFAMILY_PRIEST && m_spellProto->Mechanic == MECHANIC_SHIELD &&
(m_spellProto->SpellFamilyFlags & UI64LIT(0x0000000000000001)) && (m_spellProto->SpellFamilyFlags & UI64LIT(0x0000000000000001)) &&
@ -6098,6 +6107,7 @@ void Aura::HandleSchoolAbsorb(bool apply, bool Real)
} }
} }
} }
}
} }
void Aura::PeriodicTick() void Aura::PeriodicTick()

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 "8427" #define REVISION_NR "8428"
#endif // __REVISION_NR_H__ #endif // __REVISION_NR_H__