aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/game/SpellAuras.cpp5
-rw-r--r--src/game/Unit.cpp30
2 files changed, 30 insertions, 5 deletions
diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp
index 8cd7ca66226..de7ecaa8962 100644
--- a/src/game/SpellAuras.cpp
+++ b/src/game/SpellAuras.cpp
@@ -396,11 +396,6 @@ m_auraSlot(MAX_AURAS), m_auraLevel(1), m_procCharges(0), m_stackAmount(1), m_upd
if(!m_permanent && modOwner)
{
- // Glyph of Thorns
- if (m_target == caster && m_spellProto->SpellFamilyName==SPELLFAMILY_DRUID && m_spellProto->SpellFamilyFlags[0] & 0x100)
- if (AuraEffect * aurEff = m_target->GetAuraEffect(57862, 0))
- m_maxduration += aurEff->GetAmount() * MINUTE * IN_MILISECONDS;
-
modOwner->ApplySpellMod(GetId(), SPELLMOD_DURATION, m_maxduration);
// Get zero duration aura after - need set m_maxduration > 0 for apply/remove aura work
if (m_maxduration<=0)
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
index 21474dfb94a..364fa8a741f 100644
--- a/src/game/Unit.cpp
+++ b/src/game/Unit.cpp
@@ -11772,6 +11772,36 @@ int32 Unit::ModSpellDuration(SpellEntry const* spellProto, Unit const* target, i
}
//else positive mods here, there are no currently
//when there will be, change GetTotalAuraModifierByMiscValue to GetTotalPositiveAuraModifierByMiscValue
+
+ // Glyphs which increase duration of selfcasted buffs
+ if (target == this)
+ {
+ switch(spellProto->SpellFamilyName)
+ {
+ case SPELLFAMILY_DRUID:
+ if (spellProto->SpellFamilyFlags[0] & 0x100)
+ {
+ // Glyph of Thorns
+ if (AuraEffect * aurEff = GetAuraEffect(57862, 0))
+ duration += aurEff->GetAmount() * MINUTE * IN_MILISECONDS;
+ }
+ break;
+ case SPELLFAMILY_PALADIN:
+ if (spellProto->SpellFamilyFlags[0] & 0x00000002)
+ {
+ // Glyph of Blessing of Might
+ if (AuraEffect * aurEff = GetAuraEffect(57958, 0))
+ duration += aurEff->GetAmount() * MINUTE * IN_MILISECONDS;
+ }
+ else if (spellProto->SpellFamilyFlags[0] & 0x00010000)
+ {
+ // Glyph of Blessing of Wisdom
+ if (AuraEffect * aurEff = GetAuraEffect(57979, 0))
+ duration += aurEff->GetAmount() * MINUTE * IN_MILISECONDS;
+ }
+ break;
+ }
+ }
return duration>0 ? duration : 0;
}