aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/1559_world.sql13
-rw-r--r--src/game/Spell.cpp22
-rw-r--r--src/game/Unit.cpp3
3 files changed, 30 insertions, 8 deletions
diff --git a/sql/updates/1559_world.sql b/sql/updates/1559_world.sql
new file mode 100644
index 00000000000..eea06da956d
--- /dev/null
+++ b/sql/updates/1559_world.sql
@@ -0,0 +1,13 @@
+INSERT INTO `spell_linked_spell` (`spell_trigger`, `spell_effect`, `type`, `comment`) VALUES
+(48077, 48075, 0, 'Holy Nova (rank8)'),
+(48078, 48076, 0, 'Holy Nova (rank9)'),
+(47585, 60069, 0, 'Dispersion (transform/regen)');
+
+DELETE FROM `spell_proc_event` WHERE `entry` IN (47549);
+INSERT INTO `spell_proc_event` VALUES (47549, 0x00, 6, 0x00000000, 0x00000200, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0);
+DELETE FROM `spell_proc_event` WHERE `entry` IN (47551);
+INSERT INTO `spell_proc_event` VALUES (47551, 0x00, 6, 0x00000000, 0x00000200, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0);
+DELETE FROM `spell_proc_event` WHERE `entry` IN (47552);
+INSERT INTO `spell_proc_event` VALUES (47552, 0x00, 6, 0x00000000, 0x00000200, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0);
+
+
diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp
index aa04784fb97..9d9fdc70305 100644
--- a/src/game/Spell.cpp
+++ b/src/game/Spell.cpp
@@ -1127,7 +1127,20 @@ void Spell::DoSpellHitOnUnit(Unit *unit, const uint32 effectMask)
// Apply additional spell effects to target
if (m_preCastSpell)
- m_caster->CastSpell(unit,m_preCastSpell, true, m_CastItem);
+ {
+ // Special spell id
+ // TODO: Handle all of special spells in one place?
+ if(m_preCastSpell==61988)
+ {
+ //Cast forbearance
+ m_caster->CastSpell(unit,25771, true, m_CastItem);
+ // Cast Avenging Wrath Marker
+ m_caster->CastSpell(unit,61987, true, m_CastItem);
+ }
+ else
+ m_caster->CastSpell(unit,m_preCastSpell, true, m_CastItem);
+ }
+
for(uint32 effectNumber=0;effectNumber<3;effectNumber++)
{
@@ -2179,13 +2192,6 @@ void Spell::cast(bool skipCheck)
m_preCastSpell = 23230; // Blood Fury - Healing Reduction
break;
}
-
- case SPELLFAMILY_PRIEST:
- {
- if (m_spellInfo->Id == 47585) // Dispersion (transform)
- m_preCastSpell = 60069; // Dispersion (mana regen)
- break;
- }
}
// traded items have trade slot instead of guid in m_itemTargetGUID
// set to real guid to be sent later to the client
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
index 92bf97e9e02..ce22eca1854 100644
--- a/src/game/Unit.cpp
+++ b/src/game/Unit.cpp
@@ -4332,6 +4332,9 @@ Aura* Unit::GetAura(AuraType type, uint32 family, uint32 familyFlag1, uint32 fam
bool Unit::HasAura(uint32 spellId) const
{
+ //Special case for non existing spell
+ if (spellId==61988)
+ return HasAura(61987) || HasAura(25771);
for (int i = 0; i < 3 ; ++i)
{
AuraMap::const_iterator iter = m_Auras.find(spellEffectPair(spellId, i));