aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/game/SharedDefines.h2
-rw-r--r--src/game/SpellAuras.cpp11
-rw-r--r--src/game/SpellEffects.cpp31
3 files changed, 32 insertions, 12 deletions
diff --git a/src/game/SharedDefines.h b/src/game/SharedDefines.h
index 748e81e89e0..b4e9940e0b7 100644
--- a/src/game/SharedDefines.h
+++ b/src/game/SharedDefines.h
@@ -908,7 +908,7 @@ enum AuraState
//AURA_STATE_UNKNOWN11 = 11, // t|
AURA_STATE_FAERIE_FIRE = 12, // c t|
AURA_STATE_HEALTHLESS_35_PERCENT = 13, // C T |
- AURA_STATE_IMMOLATE = 14, // T |
+ AURA_STATE_CONFLAGRATE = 14, // T |
AURA_STATE_SWIFTMEND = 15, // T |
AURA_STATE_DEADLY_POISON = 16, // T |
AURA_STATE_ENRAGE = 17, // C |
diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp
index e027632328d..5f9a3d6eeae 100644
--- a/src/game/SpellAuras.cpp
+++ b/src/game/SpellAuras.cpp
@@ -1203,10 +1203,13 @@ void Aura::_AddAura()
if (IsSealSpell(m_spellProto))
SetAuraState(AURA_STATE_JUDGEMENT);
- // Conflagrate aura state on Immolate or Shadowflame
- if (m_spellProto->SpellFamilyName == SPELLFAMILY_WARLOCK && (m_spellProto->SpellFamilyFlags[0] & 4
- || m_spellProto->SpellFamilyFlags[2] & 2))
- SetAuraState(AURA_STATE_IMMOLATE);
+ // Conflagrate aura state on Immolate and Shadowflame
+ if (m_spellProto->SpellFamilyName == SPELLFAMILY_WARLOCK &&
+ // Immolate
+ ((m_spellProto->SpellFamilyFlags[0] & 4) ||
+ // Shadowflame
+ (m_spellProto->SpellFamilyFlags[2] & 2)))
+ SetAuraState(AURA_STATE_CONFLAGRATE);
// Faerie Fire (druid versions)
if (m_spellProto->SpellFamilyName == SPELLFAMILY_DRUID && m_spellProto->SpellFamilyFlags[0] & 0x400)
diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp
index 67e1c88c7ef..f60d04a7ff2 100644
--- a/src/game/SpellEffects.cpp
+++ b/src/game/SpellEffects.cpp
@@ -444,19 +444,36 @@ void Spell::SpellDamageSchoolDmg(uint32 effect_idx)
// Incinerate Rank 1 & 2
if((m_spellInfo->SpellFamilyFlags[1] & 0x000040) && m_spellInfo->SpellIconID==2128)
{
- // Incinerate does more dmg (dmg*0.25) if the target is Immolated.
- if(unitTarget->HasAuraState(AURA_STATE_IMMOLATE, m_spellInfo, m_caster))
- damage += int32(damage*0.25f);
+ // Incinerate does more dmg (dmg*0.25) if the target have Immolate debuff.
+ // Check aura state for speed but aura state set not only for Immolate spell
+ if(unitTarget->HasAuraState(AURA_STATE_CONFLAGRATE, m_spellInfo, m_caster))
+ {
+ Unit::AuraEffectList const& RejorRegr = unitTarget->GetAurasByType(SPELL_AURA_PERIODIC_DAMAGE);
+ for(Unit::AuraEffectList::const_iterator i = RejorRegr.begin(); i != RejorRegr.end(); ++i)
+ {
+ // Immolate
+ if((*i)->GetSpellProto()->SpellFamilyName == SPELLFAMILY_WARLOCK &&
+ ((*i)->GetSpellProto()->SpellFamilyFlags[0] & 0x4))
+ {
+ damage += damage/4;
+ break;
+ }
+ }
+ }
}
- // Conflagrate - consumes immolate or shadowflame
- else if (m_spellInfo->TargetAuraState == AURA_STATE_IMMOLATE)
+ // Conflagrate - consumes Immolate or Shadowflame
+ else if (m_spellInfo->TargetAuraState == AURA_STATE_CONFLAGRATE)
{
// for caster applied auras only
Unit::AuraEffectList const &mPeriodic = unitTarget->GetAurasByType(SPELL_AURA_PERIODIC_DAMAGE);
for(Unit::AuraEffectList::const_iterator i = mPeriodic.begin(); i != mPeriodic.end(); ++i)
{
- if( (*i)->GetSpellProto()->SpellFamilyName == SPELLFAMILY_WARLOCK && ((*i)->GetSpellProto()->SpellFamilyFlags[0] & 4 || (*i)->GetSpellProto()->SpellFamilyFlags[2] & 2) &&
- (*i)->GetCasterGUID()==m_caster->GetGUID() )
+ if ((*i)->GetSpellProto()->SpellFamilyName == SPELLFAMILY_WARLOCK &&
+ (*i)->GetCasterGUID()==m_caster->GetGUID() &&
+ // Immolate
+ ((*i)->GetSpellProto()->SpellFamilyFlags[0] & 4 ||
+ // Shadowflame
+ (*i)->GetSpellProto()->SpellFamilyFlags[2] & 2))
{
uint32 pdamage = (*i)->GetAmount() > 0 ? (*i)->GetAmount() : 0;
pdamage = m_caster->SpellDamageBonus(unitTarget, (*i)->GetSpellProto(), pdamage, DOT, (*i)->GetParentAura()->GetStackAmount());