mirror of
https://github.com/araxiaonline/TrinityCore2.git
synced 2026-06-17 05:19:40 -04:00
*Fix glyphs increasing duration of buff when it's selfcasted.
--HG-- branch : trunk
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user