*Fix Obliterate disease bonus.

--HG--
branch : trunk
This commit is contained in:
QAston
2009-06-13 17:28:38 +02:00
parent 8c4861b40f
commit 2617dc1b2f
3 changed files with 20 additions and 4 deletions
+7
View File
@@ -4309,6 +4309,13 @@ void Spell::SpellDamageWeaponDmg(uint32 i)
} }
break; break;
} }
case SPELLFAMILY_DEATHKNIGHT:
{
// Obliterate (12.5% more damage per disease)
if (m_spellInfo->SpellFamilyFlags[1] & 0x20000)
totalDamagePercentMod *= (float(CalculateDamage(2, unitTarget) * unitTarget->GetDiseasesByCaster(m_caster->GetGUID(), true) / 2) + 100.0f) / 100.f;
break;
}
} }
bool normalized = false; bool normalized = false;
+12 -3
View File
@@ -4428,7 +4428,7 @@ AuraEffect* Unit::GetAura(AuraType type, uint32 family, uint32 familyFlag1, uint
return NULL; return NULL;
} }
uint32 Unit::GetDiseasesByCaster(uint64 casterGUID) const uint32 Unit::GetDiseasesByCaster(uint64 casterGUID, bool remove)
{ {
static const AuraType diseaseAuraTypes[] = static const AuraType diseaseAuraTypes[] =
{ {
@@ -4440,13 +4440,22 @@ uint32 Unit::GetDiseasesByCaster(uint64 casterGUID) const
uint32 diseases=0; uint32 diseases=0;
for(AuraType const* itr = &diseaseAuraTypes[0]; itr && itr[0] != SPELL_AURA_NONE; ++itr) for(AuraType const* itr = &diseaseAuraTypes[0]; itr && itr[0] != SPELL_AURA_NONE; ++itr)
{ {
Unit::AuraEffectList const& auras = GetAurasByType(*itr); for(AuraEffectList::iterator i = m_modAuras[*itr].begin();i != m_modAuras[*itr].end(); )
for(AuraEffectList::const_iterator i = auras.begin();i != auras.end(); ++i)
{ {
// Get auras with disease dispel type by caster // Get auras with disease dispel type by caster
if ((*i)->GetSpellProto()->Dispel == DISPEL_DISEASE if ((*i)->GetSpellProto()->Dispel == DISPEL_DISEASE
&& (*i)->GetCasterGUID()==casterGUID) && (*i)->GetCasterGUID()==casterGUID)
{
++diseases; ++diseases;
if (remove)
{
RemoveAura((*i)->GetId(), (*i)->GetCasterGUID());
i = m_modAuras[*itr].begin();
continue;
}
}
++i;
} }
} }
return diseases; return diseases;
+1 -1
View File
@@ -1570,7 +1570,7 @@ class TRINITY_DLL_SPEC Unit : public WorldObject
bool HasAuraTypeWithMiscvalue(AuraType auratype, uint32 miscvalue) const; bool HasAuraTypeWithMiscvalue(AuraType auratype, uint32 miscvalue) const;
AuraEffect* GetDummyAura(uint32 spell_id) const; AuraEffect* GetDummyAura(uint32 spell_id) const;
AuraEffect* GetDummyAura(SpellFamilyNames name, uint32 iconId) const; AuraEffect* GetDummyAura(SpellFamilyNames name, uint32 iconId) const;
uint32 GetDiseasesByCaster(uint64 casterGUID) const; uint32 GetDiseasesByCaster(uint64 casterGUID, bool remove = false);
uint32 GetDoTsByCaster(uint64 casterGUID) const; uint32 GetDoTsByCaster(uint64 casterGUID) const;
int32 GetTotalAuraModifier(AuraType auratype) const; int32 GetTotalAuraModifier(AuraType auratype) const;