diff options
| -rw-r--r-- | sql/updates/3951_world_spell_proc_event.sql | 3 | ||||
| -rw-r--r-- | sql/world_spell_full.sql | 1 | ||||
| -rw-r--r-- | src/game/Unit.cpp | 78 |
3 files changed, 47 insertions, 35 deletions
diff --git a/sql/updates/3951_world_spell_proc_event.sql b/sql/updates/3951_world_spell_proc_event.sql new file mode 100644 index 00000000000..d2f6a2c7993 --- /dev/null +++ b/sql/updates/3951_world_spell_proc_event.sql @@ -0,0 +1,3 @@ +DELETE FROM `spell_proc_event` WHERE `entry` IN (53646); +INSERT INTO `spell_proc_event` (`entry`, `SchoolMask`, `SpellFamilyName`, `SpellFamilyMask0`, `SpellFamilyMask1`, `SpellFamilyMask2`, `procFlags`, `procEx`, `ppmRate`, `CustomChance`, `Cooldown`) VALUES +(53646, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0, 0, 0); -- Demonic Pact
\ No newline at end of file diff --git a/sql/world_spell_full.sql b/sql/world_spell_full.sql index 3635237091b..e0b88fcd5cd 100644 --- a/sql/world_spell_full.sql +++ b/sql/world_spell_full.sql @@ -1392,6 +1392,7 @@ INSERT INTO `spell_proc_event` (`entry`, `SchoolMask`, `SpellFamilyName`, `Spell (53569, 0x00, 10, 0x00200000, 0x00010000, 0x00000000, 0x00000000, 0x00000002, 0, 0, 0), -- Infusion of Light (Rank 1) (53576, 0x00, 10, 0x00200000, 0x00010000, 0x00000000, 0x00000000, 0x00000002, 0, 0, 0), -- Infusion of Light (Rank 2) (53601, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0, 0, 6), -- Sacred Shield (Rank 1) +(53646, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0, 0, 0); -- Demonic Pact (53671, 0x00, 10, 0x00800000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0, 0, 0), -- Judgements of the Pure (Rank 1) (53672, 0x00, 10, 0x00200000, 0x00010000, 0x00000000, 0x00000000, 0x00000002, 0, 0, 0), -- Infusion of Light (53673, 0x00, 10, 0x00800000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0, 0, 0), -- Judgements of the Pure (Rank 2) diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index ab63bb42a0d..69baf10ef68 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -7420,41 +7420,6 @@ bool Unit::HandleProcTriggerSpell(Unit *pVictim, uint32 damage, AuraEffect* trig break; } } - else - { - switch (auraSpellInfo->SpellFamilyName) - { - case SPELLFAMILY_WARRIOR: - // Sword and Board - if (trigger_spell_id == 50227) - // remove cooldown of Shield Slam - if (GetTypeId()==TYPEID_PLAYER) - ((Player*)this)->RemoveCategoryCooldown(1209); - break; - case SPELLFAMILY_MAGE: - if (trigger_spell_id == 22959) - { - // Glyph of Improved Scorch - if (AuraEffect * aurEff = GetDummyAura(56371)) - { - for (int32 count = aurEff->GetAmount();count>0;count--) - CastSpell(pVictim, 22959, true); - return true; - } - } - break; - case SPELLFAMILY_DEATHKNIGHT: - // Glyph of Death Grip - if (trigger_spell_id == 58628) - { - // remove cooldown of Death Grip - if (GetTypeId()==TYPEID_PLAYER) - ((Player*)this)->RemoveCategoryCooldown(82); - return true; - } - break; - } - } // All ok. Check current trigger spell SpellEntry const* triggerEntry = sSpellStore.LookupEntry(trigger_spell_id); @@ -7589,6 +7554,17 @@ bool Unit::HandleProcTriggerSpell(Unit *pVictim, uint32 damage, AuraEffect* trig // Need add combopoint AFTER finish movie (or they dropped in finish phase) break; } + case 22959: + { + // Glyph of Improved Scorch + if (AuraEffect * aurEff = GetDummyAura(56371)) + { + for (int32 count = aurEff->GetAmount();count>0;count--) + CastSpell(pVictim, 22959, true); + return true; + } + break; + } // Bloodthirst (($m/100)% of max health) case 23880: { @@ -7608,6 +7584,30 @@ bool Unit::HandleProcTriggerSpell(Unit *pVictim, uint32 damage, AuraEffect* trig return false; break; } + // Demonic Pact + case 48090: + { + // Get talent aura from owner + if (GetTypeId() == TYPEID_UNIT && ((Creature*)this)->isPet()) + if (Unit * owner = GetOwner()) + { + if (AuraEffect * aurEff = owner->GetDummyAura(SPELLFAMILY_WARLOCK, 3220)) + { + basepoints0 = aurEff->GetAmount(); + CastCustomSpell(this,trigger_spell_id,&basepoints0,&basepoints0,NULL,true,castItem,triggeredByAura); + return true; + } + } + break; + } + // Sword and Board + case 50227: + { + // remove cooldown of Shield Slam + if (GetTypeId()==TYPEID_PLAYER) + ((Player*)this)->RemoveCategoryCooldown(1209); + break; + } // Brain Freeze case 57761: { @@ -7661,6 +7661,14 @@ bool Unit::HandleProcTriggerSpell(Unit *pVictim, uint32 damage, AuraEffect* trig return false; break; } + // Glyph of Death Grip + case 58628: + { + // remove cooldown of Death Grip + if (GetTypeId()==TYPEID_PLAYER) + ((Player*)this)->RemoveCategoryCooldown(82); + return true; + } } if( cooldown && GetTypeId()==TYPEID_PLAYER && ((Player*)this)->HasSpellCooldown(trigger_spell_id)) |
