diff options
Diffstat (limited to 'src')
-rwxr-xr-x | src/server/game/Entities/Unit/Unit.cpp | 6 | ||||
-rwxr-xr-x | src/server/game/Spells/SpellEffects.cpp | 37 |
2 files changed, 40 insertions, 3 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index f90997e9fe2..895d83631c0 100755 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -5509,6 +5509,12 @@ bool Unit::HandleDummyAuraProc(Unit* victim, uint32 damage, AuraEffect* triggere victim->RemoveAurasWithMechanic(1<<MECHANIC_STUN, AURA_REMOVE_BY_ENEMY_SPELL); return true; } + // Glyph of Scourge Strike + case 58642: + { + triggered_spell_id = 69961; // Glyph of Scourge Strike + break; + } // Glyph of Life Tap case 63320: { diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 5bf5f827399..47d187f6505 100755 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -4337,21 +4337,52 @@ void Spell::EffectScriptEffect(SpellEffIndex effIndex) // Glyph of Backstab case 63975: { + // search our Rupture aura on target if (AuraEffect const* aurEff = unitTarget->GetAuraEffect(SPELL_AURA_PERIODIC_DAMAGE, SPELLFAMILY_ROGUE, 0x00100000, 0, 0, m_caster->GetGUID())) { uint32 countMin = aurEff->GetBase()->GetMaxDuration(); - uint32 countMax = 12000; + uint32 countMax = 12000; // this can be wrong, duration should be based on combo-points countMax += m_caster->HasAura(56801) ? 4000 : 0; if (countMin < countMax) { - aurEff->GetBase()->SetDuration(uint32(aurEff->GetBase()->GetDuration()+3000)); - aurEff->GetBase()->SetMaxDuration(countMin+2000); + aurEff->GetBase()->SetDuration(uint32(aurEff->GetBase()->GetDuration() + 3000)); + aurEff->GetBase()->SetMaxDuration(countMin + 2000); } } return; } + // Glyph of Scourge Strike + case 69961: + { + Unit::AuraEffectList const &mPeriodic = unitTarget->GetAuraEffectsByType(SPELL_AURA_PERIODIC_DAMAGE); + for (Unit::AuraEffectList::const_iterator i = mPeriodic.begin(); i != mPeriodic.end(); ++i) + { + AuraEffect const* aurEff = *i; + SpellEntry const* spellInfo = aurEff->GetSpellProto(); + // search our Blood Plague and Frost Fever on target + if (spellInfo->SpellFamilyName == SPELLFAMILY_DEATHKNIGHT && spellInfo->SpellFamilyFlags[2] & 0x2 && + aurEff->GetCasterGUID() == m_caster->GetGUID()) + { + uint32 countMin = aurEff->GetBase()->GetMaxDuration(); + uint32 countMax = GetSpellMaxDuration(spellInfo); + + // this Glyph + countMax += 9000; + // talent Epidemic + if (AuraEffect const* epidemic = m_caster->GetAuraEffect(SPELL_AURA_ADD_FLAT_MODIFIER, SPELLFAMILY_DEATHKNIGHT, 234, EFFECT_0)) + countMax += epidemic->GetAmount(); + + if (countMin < countMax) + { + aurEff->GetBase()->SetDuration(aurEff->GetBase()->GetDuration() + 3000); + aurEff->GetBase()->SetMaxDuration(countMin + 3000); + } + } + } + return; + } case 45204: // Clone Me! m_caster->CastSpell(unitTarget, damage, true); break; |