aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/FULL/world_spell_full.sql5
-rw-r--r--sql/updates/5321_world_spell_proc_event.sql5
-rw-r--r--src/game/SpellEffects.cpp55
-rw-r--r--src/game/Unit.cpp18
4 files changed, 82 insertions, 1 deletions
diff --git a/sql/FULL/world_spell_full.sql b/sql/FULL/world_spell_full.sql
index a99ffdd2c98..926adab93f2 100644
--- a/sql/FULL/world_spell_full.sql
+++ b/sql/FULL/world_spell_full.sql
@@ -1531,7 +1531,10 @@ INSERT INTO `spell_proc_event` (`entry`, `SchoolMask`, `SpellFamilyName`, `Spell
( 50034, 0x00, 15, 0x00000010, 0x00020000, 0x00000000, 0x00000000, 0x00000000, 0, 0, 0), -- Death Rune Mastery
( 63373, 0x00, 11, 0x80000000, 0x00000000, 0x00000000, 0x00010000, 0x00000000, 0, 0, 0), -- Frozen Power (Rank 1)
( 63374, 0x00, 11, 0x80000000, 0x00000000, 0x00000000, 0x00010000, 0x00000000, 0, 0, 0), -- Frozen Power (Rank 2)
-( 54821, 0x00, 7, 0x00001000, 0x00000000, 0x00000000, 0x00000010, 0x00000000, 0, 0, 0); -- Glyph of Rake
+( 54821, 0x00, 7, 0x00001000, 0x00000000, 0x00000000, 0x00000010, 0x00000000, 0, 0, 0), -- Glyph of Rake
+( 54815, 0x00, 7, 0x00008000, 0x00000000, 0x00000000, 0x00000010, 0x00000000, 0, 0, 0), -- Glyph of Shred
+( 54845, 0x00, 7, 0x00000004, 0x00000000, 0x00000000, 0x00010000, 0x00000000, 0, 0, 0), -- Glyph of Starfire
+( 56800, 0x00, 8, 0x00800004, 0x00000000, 0x00000000, 0x00000010, 0x00000000, 0, 0, 0); -- Glyph of Backstab
-- --------
-- ENCHANT PROC
diff --git a/sql/updates/5321_world_spell_proc_event.sql b/sql/updates/5321_world_spell_proc_event.sql
new file mode 100644
index 00000000000..7403b781685
--- /dev/null
+++ b/sql/updates/5321_world_spell_proc_event.sql
@@ -0,0 +1,5 @@
+DELETE FROM `spell_proc_event` WHERE `entry` IN (54815,54845,56800);
+INSERT INTO `spell_proc_event` VALUES
+( 54815, 0x00, 7, 0x00008000, 0x00000000, 0x00000000, 0x00000010, 0x00000000, 0, 0, 0), -- Glyph of Shred
+( 54845, 0x00, 7, 0x00000004, 0x00000000, 0x00000000, 0x00010000, 0x00000000, 0, 0, 0), -- Glyph of Starfire
+( 56800, 0x00, 8, 0x00800004, 0x00000000, 0x00000000, 0x00000010, 0x00000000, 0, 0, 0); -- Glyph of Backstab
diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp
index 41ef6094855..9645ff7118c 100644
--- a/src/game/SpellEffects.cpp
+++ b/src/game/SpellEffects.cpp
@@ -4714,6 +4714,61 @@ void Spell::EffectScriptEffect(uint32 effIndex)
{
switch(m_spellInfo->Id)
{
+ // Glyph of Starfire
+ case 54846:
+ {
+ if (AuraEffect const * aurEff = unitTarget->GetAura(SPELL_AURA_PERIODIC_DAMAGE,SPELLFAMILY_DRUID,0x00000002,0,0,m_caster->GetGUID()))
+ {
+ uint32 countMin = aurEff->GetParentAura()->GetAuraMaxDuration();
+ uint32 countMax = 18000;
+ countMax += m_caster->HasAura(38414) ? 3000 : 0;
+ countMax += m_caster->HasAura(57865) ? 3000 : 0;
+
+ if (countMin < countMax)
+ {
+ aurEff->GetParentAura()->SetAuraDuration(uint32(aurEff->GetParentAura()->GetAuraDuration()+3000));
+ aurEff->GetParentAura()->SetAuraMaxDuration(countMin+3000);
+ }
+ }
+ return;
+ }
+ // Glyph of Shred
+ case 63974:
+ {
+ if (AuraEffect const * aurEff = unitTarget->GetAura(SPELL_AURA_PERIODIC_DAMAGE,SPELLFAMILY_DRUID,0x00800000,0,0,m_caster->GetGUID()))
+ {
+ uint32 countMin = aurEff->GetParentAura()->GetAuraMaxDuration();
+ uint32 countMax = 20000;
+ countMax += m_caster->HasAura(54818) ? 4000 : 0;
+ countMax += m_caster->HasAura(60141) ? 4000 : 0;
+
+ if (countMin < countMax)
+ {
+ aurEff->GetParentAura()->SetAuraDuration(uint32(aurEff->GetParentAura()->GetAuraDuration()+3000));
+ aurEff->GetParentAura()->SetAuraMaxDuration(countMin+2000);
+ }
+
+ }
+ return;
+ }
+ // Glyph of Backstab
+ case 63975:
+ {
+ if (AuraEffect const * aurEff = unitTarget->GetAura(SPELL_AURA_PERIODIC_DAMAGE,SPELLFAMILY_ROGUE,0x00100000,0,0,m_caster->GetGUID()))
+ {
+ uint32 countMin = aurEff->GetParentAura()->GetAuraMaxDuration();
+ uint32 countMax = 12000;
+ countMax += m_caster->HasAura(56801) ? 4000 : 0;
+
+ if (countMin < countMax)
+ {
+ aurEff->GetParentAura()->SetAuraDuration(uint32(aurEff->GetParentAura()->GetAuraDuration()+3000));
+ aurEff->GetParentAura()->SetAuraMaxDuration(countMin+2000);
+ }
+
+ }
+ return;
+ }
// Dispelling Analysis
case 37028:
{
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
index be24edb329f..263e2b8037c 100644
--- a/src/game/Unit.cpp
+++ b/src/game/Unit.cpp
@@ -5800,6 +5800,18 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, AuraEffect* trigger
{
switch(dummySpell->Id)
{
+ // Glyph of Starfire
+ case 54845:
+ {
+ triggered_spell_id = 54846;
+ break;
+ }
+ // Glyph of Shred
+ case 54815:
+ {
+ triggered_spell_id = 63974;
+ break;
+ }
// Glyph of Rake
case 54821:
{
@@ -5975,6 +5987,12 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, AuraEffect* trigger
{
switch(dummySpell->Id)
{
+ // Glyph of Backstab
+ case 56800:
+ {
+ triggered_spell_id = 63975;
+ break;
+ }
// Deadly Throw Interrupt
case 32748:
{