diff options
-rw-r--r-- | sql/FULL/world_spell_full.sql | 5 | ||||
-rw-r--r-- | sql/updates/5321_world_spell_proc_event.sql | 5 | ||||
-rw-r--r-- | src/game/SpellEffects.cpp | 55 | ||||
-rw-r--r-- | src/game/Unit.cpp | 18 |
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: { |