aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/base/world_database.sql2
-rw-r--r--sql/updates/world/2011_07_21_00_world_spell_proc_event.sql3
-rwxr-xr-xsrc/server/game/Entities/Unit/Unit.cpp6
-rwxr-xr-xsrc/server/game/Spells/SpellEffects.cpp37
4 files changed, 44 insertions, 4 deletions
diff --git a/sql/base/world_database.sql b/sql/base/world_database.sql
index 1f3af29dc02..a920284caf4 100644
--- a/sql/base/world_database.sql
+++ b/sql/base/world_database.sql
@@ -19202,7 +19202,7 @@ INSERT INTO `spell_proc_event` (`entry`,`SchoolMask`,`SpellFamilyName`,`SpellFam
( 58442, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0, 0, 15), -- Airy Pale Ale
( 58444, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0, 0, 5), -- Worg Tooth Oatmeal Stout
( 58626, 0x00, 15, 0x02000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0, 0, 0), -- Glyph of Death Grip
-( 58642, 0x00, 15, 0x00000000, 0x08000000, 0x00000000, 0x00000000, 0x00000000, 0, 0, 0), -- Glyph of Scourge Strike
+( 58642, 0x00, 15, 0x00000000, 0x08000000, 0x00000000, 0x00000010, 0x00000000, 0, 0, 0), -- Glyph of Scourge Strike
( 58644, 0x00, 15, 0x00000000, 0x00000004, 0x00000000, 0x00000000, 0x00000000, 0, 0, 0), -- Glyph of Frost Strike
( 58647, 0x00, 15, 0x00000000, 0x00000004, 0x00000000, 0x00000000, 0x00000000, 0, 0, 0), -- Glyph of Frost Strike
( 58676, 0x00, 15, 0x00000000, 0x00000008, 0x00000000, 0x00000000, 0x00000000, 0, 0, 0), -- Glyph of Vampiric Blood
diff --git a/sql/updates/world/2011_07_21_00_world_spell_proc_event.sql b/sql/updates/world/2011_07_21_00_world_spell_proc_event.sql
new file mode 100644
index 00000000000..8cfcdd5e6cb
--- /dev/null
+++ b/sql/updates/world/2011_07_21_00_world_spell_proc_event.sql
@@ -0,0 +1,3 @@
+DELETE FROM `spell_proc_event` WHERE `entry` = 58642;
+INSERT INTO `spell_proc_event` VALUES
+(58642, 0x00, 15, 0x00000000, 0x08000000, 0x00000000, 0x00000010, 0x00000000, 0, 0, 0);
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;