aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/Entities/Unit/Unit.cpp6
-rwxr-xr-xsrc/server/game/Spells/SpellEffects.cpp37
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;