aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQAston <none@none>2009-03-15 02:06:59 +0100
committerQAston <none@none>2009-03-15 02:06:59 +0100
commit8b96182b1cb8d79c63fc0a30377cea9a480b418c (patch)
tree6f99250311fc69efe695a1c7af88e1ed4b7a0307
parent47b39981a1693ba931743c0ac1d4e092ec62a2d8 (diff)
*Fix Shattered Barrier
--HG-- branch : trunk
-rw-r--r--sql/updates/1857_world.sql7
-rw-r--r--sql/updates/1910_world.sql11
-rw-r--r--sql/updates/CMakeLists.txt2
-rw-r--r--src/game/SpellAuras.cpp13
-rw-r--r--src/game/SpellMgr.h5
-rw-r--r--src/game/Unit.cpp13
6 files changed, 36 insertions, 15 deletions
diff --git a/sql/updates/1857_world.sql b/sql/updates/1857_world.sql
deleted file mode 100644
index e17b0774596..00000000000
--- a/sql/updates/1857_world.sql
+++ /dev/null
@@ -1,7 +0,0 @@
-DELETE FROM `spell_proc_event` WHERE `entry` IN (47571, 47572, 53754, 53759);
--- Psychic Horror
-INSERT INTO `spell_proc_event` VALUES (47571, 0x00, 6, 65536, 0x00000000, 0x00000000, 0x00000000, 0x0002000, 0.000000, 0.000000, 0);
-INSERT INTO `spell_proc_event` VALUES (47572, 0x00, 6, 59981, 0x00000000, 0x00000000, 0x00000000, 0x0002000, 0.000000, 0.000000, 0);
--- Improved Fear
-INSERT INTO `spell_proc_event` VALUES (53754, 0x00, 5, 0x00000000, 1024, 0x00000000, 0x00000000, 0x0002000, 0.000000, 0.000000, 0);
-INSERT INTO `spell_proc_event` VALUES (53759, 0x00, 5, 0x00000000, 1024, 0x00000000, 0x00000000, 0x0002000, 0.000000, 0.000000, 0); \ No newline at end of file
diff --git a/sql/updates/1910_world.sql b/sql/updates/1910_world.sql
new file mode 100644
index 00000000000..940c152bdd5
--- /dev/null
+++ b/sql/updates/1910_world.sql
@@ -0,0 +1,11 @@
+-- Shattered Barrier
+-- Psychic Horror
+-- Improved Fear
+DELETE FROM `spell_proc_event` WHERE `entry` IN (44745, 54787, 47571, 47572, 53754, 53759);
+INSERT INTO `spell_proc_event` VALUES
+(44745, 0x00, 3, 0x00000000, 0x00000001, 0x00000000, 0x00008000, 0x0006000, 0.000000, 0.000000, 0),
+(54787, 0x00, 3, 0x00000000, 0x00000001, 0x00000000, 0x00008000, 0x0006000, 0.000000, 0.000000, 0),
+(47571, 0x00, 6, 65536, 0x00000000, 0x00000000, 0x00000000, 0x0006000, 0.000000, 0.000000, 0),
+(47572, 0x00, 6, 59981, 0x00000000, 0x00000000, 0x00000000, 0x0006000, 0.000000, 0.000000, 0),
+(53754, 0x00, 5, 0x00000000, 1024, 0x00000000, 0x00000000, 0x0006000, 0.000000, 0.000000, 0),
+(53759, 0x00, 5, 0x00000000, 1024, 0x00000000, 0x00000000, 0x0006000, 0.000000, 0.000000, 0); \ No newline at end of file
diff --git a/sql/updates/CMakeLists.txt b/sql/updates/CMakeLists.txt
index a7f648271f8..cabb11663c7 100644
--- a/sql/updates/CMakeLists.txt
+++ b/sql/updates/CMakeLists.txt
@@ -78,7 +78,6 @@ INSTALL(FILES
1814_world.sql
1825_world.sql
1828_world.sql
-1857_world.sql
1877_mangos_7439_01_world_trinity_string.sql
1881_world.sql
1884_world.sql
@@ -86,4 +85,5 @@ INSTALL(FILES
1895_world.sql
1905_world.sql
1906_world.sql
+1910_world.sql
DESTINATION share/trinity/sql/updates) \ No newline at end of file
diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp
index 767cc512561..b4bedebbfe9 100644
--- a/src/game/SpellAuras.cpp
+++ b/src/game/SpellAuras.cpp
@@ -1043,7 +1043,13 @@ void Aura::_RemoveAura()
ProcCaster = PROC_FLAG_SUCCESSFUL_NEGATIVE_SPELL_HIT;
ProcVictim = PROC_FLAG_TAKEN_NEGATIVE_SPELL_HIT;
}
- caster->ProcDamageAndSpell(m_target,ProcCaster, ProcVictim, PROC_EX_AURA_REMOVE, 0, BASE_ATTACK, m_spellProto);
+ uint32 procEx=0;
+ if (m_removeMode == AURA_REMOVE_BY_DISPEL)
+ procEx = PROC_EX_AURA_REMOVE_DISPEL;
+ else if (m_removeMode == AURA_REMOVE_BY_DEFAULT)
+ procEx = PROC_EX_AURA_REMOVE_EXPIRE;
+
+ caster->ProcDamageAndSpell(m_target,ProcCaster, ProcVictim, procEx, m_modifier.m_amount, BASE_ATTACK, m_spellProto);
}
}
}
@@ -2051,9 +2057,10 @@ void Aura::HandleAuraDummy(bool apply, bool Real)
// Living Bomb
if (m_spellProto->SpellFamilyFlags[1] & 0x20000)
{
- if(!m_target || !caster || !(m_removeMode == AURA_REMOVE_BY_DISPEL || m_removeMode == AURA_REMOVE_BY_DEFAULT))
+ if(!m_target || !(m_removeMode == AURA_REMOVE_BY_DISPEL || m_removeMode == AURA_REMOVE_BY_DEFAULT))
return;
- caster->CastSpell(m_target, GetModifier()->m_amount, true, NULL, NULL, GetCasterGUID());
+ Unit* target=NULL;
+ m_target->CastSpell(m_target, GetModifier()->m_amount, true, NULL, NULL, GetCasterGUID());
return;
}
break;
diff --git a/src/game/SpellMgr.h b/src/game/SpellMgr.h
index 45e88abe4de..f0bebd5718a 100644
--- a/src/game/SpellMgr.h
+++ b/src/game/SpellMgr.h
@@ -603,9 +603,8 @@ enum ProcFlagsEx
PROC_EX_ABSORB = 0x0000400,
PROC_EX_REFLECT = 0x0000800,
PROC_EX_INTERRUPT = 0x0001000, // Melee hit result can be Interrupt (not used)
- PROC_EX_AURA_REMOVE = 0x0002000,
- PROC_EX_RESERVED2 = 0x0004000,
- PROC_EX_RESERVED3 = 0x0008000,
+ PROC_EX_AURA_REMOVE_DISPEL = 0x0002000,
+ PROC_EX_AURA_REMOVE_EXPIRE = 0x0004000,
PROC_EX_EX_TRIGGER_ALWAYS = 0x0010000, // If set trigger always ( no matter another flags) used for drop charges
PROC_EX_EX_ONE_TIME_TRIGGER = 0x0020000 // If set trigger always but only one time (not used)
};
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
index aa4ff05828a..d1cf3a14027 100644
--- a/src/game/Unit.cpp
+++ b/src/game/Unit.cpp
@@ -2181,7 +2181,7 @@ void Unit::CalcAbsorbResist(Unit *pVictim,SpellSchoolMask schoolMask, DamageEffe
{
if ((*i)->GetModifier()->m_amount<=0)
{
- pVictim->RemoveAurasDueToSpell((*i)->GetId());
+ pVictim->RemoveAurasByCasterSpell((*i)->GetId(), (*i)->GetCasterGUID());
i = vSchoolAbsorb.begin();
}
else
@@ -5376,6 +5376,17 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, Aura* triggeredByAu
triggered_spell_id = 29077;
break;
}
+ // Shattered Barrier
+ if (dummySpell->SpellIconID == 2945)
+ {
+ // only on dispel/remove aura by sestroy
+ if (procEx & PROC_EX_AURA_REMOVE_EXPIRE && damage)
+ return false;
+ target = NULL;
+ triggered_spell_id = 55080;
+ CastSpell(target, triggered_spell_id, true);
+ return true;
+ }
// Hot Streak
if (dummySpell->SpellIconID == 2999)
{