diff options
-rw-r--r-- | sql/base/world_database.sql | 2 | ||||
-rw-r--r-- | sql/updates/world/2011_07_21_00_world_spell_proc_event.sql | 3 | ||||
-rwxr-xr-x | src/server/game/Entities/Unit/Unit.cpp | 6 | ||||
-rwxr-xr-x | src/server/game/Spells/SpellEffects.cpp | 37 |
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; |