aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/4031_world_spell_proc_event.sql8
-rw-r--r--sql/world_spell_full.sql3
-rw-r--r--src/game/SpellAuras.cpp4
-rw-r--r--src/game/Unit.cpp21
4 files changed, 36 insertions, 0 deletions
diff --git a/sql/updates/4031_world_spell_proc_event.sql b/sql/updates/4031_world_spell_proc_event.sql
new file mode 100644
index 00000000000..d426dc437cb
--- /dev/null
+++ b/sql/updates/4031_world_spell_proc_event.sql
@@ -0,0 +1,8 @@
+DELETE FROM `spell_proc_event` WHERE `entry` IN (50880, 50884, 50885, 50886, 50887, 55610);
+INSERT INTO `spell_proc_event` (`entry`, `SchoolMask`, `SpellFamilyName`, `SpellFamilyMask0`, `SpellFamilyMask1`, `SpellFamilyMask2`, `procFlags`, `procEx`, `ppmRate`, `CustomChance`, `Cooldown`) VALUES
+( 50880, 0x00, 15, 0x00000000, 0x04000000, 0x00000000, 0x00000000, 0x00000000, 0, 0, 0), -- Icy Talons
+( 50884, 0x00, 15, 0x00000000, 0x04000000, 0x00000000, 0x00000000, 0x00000000, 0, 0, 0), -- Icy Talons
+( 50885, 0x00, 15, 0x00000000, 0x04000000, 0x00000000, 0x00000000, 0x00000000, 0, 0, 0), -- Icy Talons
+( 50886, 0x00, 15, 0x00000000, 0x04000000, 0x00000000, 0x00000000, 0x00000000, 0, 0, 0), -- Icy Talons
+( 50887, 0x00, 15, 0x00000000, 0x04000000, 0x00000000, 0x00000000, 0x00000000, 0, 0, 0), -- Icy Talons
+( 55610, 0x00, 15, 0x00000000, 0x04000000, 0x00000000, 0x00000000, 0x00000000, 0, 0, 0); -- Improved Icy Talons
diff --git a/sql/world_spell_full.sql b/sql/world_spell_full.sql
index 87fd476365e..9929146d0e9 100644
--- a/sql/world_spell_full.sql
+++ b/sql/world_spell_full.sql
@@ -1243,6 +1243,9 @@ INSERT INTO `spell_proc_event` (`entry`, `SchoolMask`, `SpellFamilyName`, `Spell
( 51667, 0x00, 8, 0x00020000, 0x00000008, 0x00000000, 0x00000000, 0x00000000, 0, 0, 0), -- Cut to the Chase (Rank 3)
( 51668, 0x00, 8, 0x00020000, 0x00000008, 0x00000000, 0x00000000, 0x00000000, 0, 0, 0), -- Cut to the Chase (Rank 4)
( 51669, 0x00, 8, 0x00020000, 0x00000008, 0x00000000, 0x00000000, 0x00000000, 0, 0, 0), -- Cut to the Chase (Rank 5)
+( 51698, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0, 0, 1), -- Honor Among Thieves
+( 51700, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0, 0, 1), -- Honor Among Thieves
+( 51701, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0, 0, 1), -- Honor Among Thieves
( 51672, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000010, 0, 0, 1), -- Unfair Advantage (Rank 1)
( 51674, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000010, 0, 0, 1), -- Unfair Advantage (Rank 2)
( 51679, 0x00, 8, 0x00000001, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0, 0, 0), -- Throwing Specialization (Rank 2)
diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp
index 53a865380d8..471209e8f77 100644
--- a/src/game/SpellAuras.cpp
+++ b/src/game/SpellAuras.cpp
@@ -2478,6 +2478,10 @@ void AuraEffect::HandleAuraDummy(bool apply, bool Real, bool changeAmount)
if(m_target->GetTypeId()==TYPEID_PLAYER)
((Player*)m_target)->RemoveAmmo(); // not use ammo and not allow use
return;
+ case 52916: // Honor Among Thieves
+ if (Unit * target = ObjectAccessor::GetUnit(*m_target, m_target->GetUInt64Value(UNIT_FIELD_TARGET)))
+ m_target->CastSpell(target, 51699, true);
+ return;
}
// Earth Shield
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
index ebeac678c8c..dd1307e7ef4 100644
--- a/src/game/Unit.cpp
+++ b/src/game/Unit.cpp
@@ -7679,6 +7679,27 @@ bool Unit::HandleProcTriggerSpell(Unit *pVictim, uint32 damage, AuraEffect* trig
// dummy basepoints or other customs
switch(trigger_spell_id)
{
+ // Auras which should proc on area aura source (caster in this case):
+ // Turn the Tables
+ case 52914:
+ case 52915:
+ case 52910:
+ // Honor Among Thieves
+ case 52916:
+ {
+ target = triggeredByAura->GetParentAura()->GetCaster();
+ if(!target)
+ return false;
+
+ if( cooldown && GetTypeId()==TYPEID_PLAYER && ((Player*)target)->HasSpellCooldown(trigger_spell_id))
+ return false;
+
+ target->CastSpell(target,trigger_spell_id,true,castItem,triggeredByAura);
+
+ if( cooldown && GetTypeId()==TYPEID_PLAYER )
+ ((Player*)this)->AddSpellCooldown(trigger_spell_id,0,time(NULL) + cooldown);
+ return true;
+ }
// Cast positive spell on enemy target
case 7099: // Curse of Mending
case 39647: // Curse of Mending