aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjoschiwald <joschiwald.trinity@gmail.com>2014-07-03 22:32:41 +0200
committerjoschiwald <joschiwald.trinity@gmail.com>2014-07-03 22:32:41 +0200
commit7b74a725c89cca383acab8a002c162fc7ff1e0ac (patch)
treea7f0d360ab8b737625660896d1db3ffc07ba680e
parent37f7cc4615163ae9a4800af211a9423774bf8223 (diff)
Core/Spells: fixed Deep Freeze after 2a3546ca36468b81d673bdb27315006144af3165
Closes #12424
-rw-r--r--sql/updates/world/2014_07_03_01_world_spell_proc_event.sql7
-rw-r--r--src/server/game/Spells/Spell.cpp14
-rw-r--r--src/server/game/Spells/SpellEffects.cpp8
3 files changed, 10 insertions, 19 deletions
diff --git a/sql/updates/world/2014_07_03_01_world_spell_proc_event.sql b/sql/updates/world/2014_07_03_01_world_spell_proc_event.sql
new file mode 100644
index 00000000000..3ae38f82698
--- /dev/null
+++ b/sql/updates/world/2014_07_03_01_world_spell_proc_event.sql
@@ -0,0 +1,7 @@
+DELETE FROM `spell_linked_spell` WHERE `spell_effect`=71757;
+
+DELETE FROM `spell_proc_event` WHERE `entry`=71761;
+INSERT INTO `spell_proc_event` (`entry`,`SchoolMask`,`SpellFamilyName`,`SpellFamilyMask0`,`SpellFamilyMask1`,`SpellFamilyMask2`,`procFlags`,`procEx`,`ppmRate`,`CustomChance`,`Cooldown`) VALUES
+(71761, 0, 3, 0, 0x100000, 0, 0, 0x100, 0, 0, 0); -- Deep Freeze
+
+UPDATE `spell_proc_event` SET `procEx`=`procEx`|0x100 WHERE `entry`=74396;
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index 814ae4d24c1..0e0443cc675 100644
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -2265,7 +2265,7 @@ void Spell::DoAllEffectOnTarget(TargetInfo* target)
m_spellAura = NULL; // Set aura to null for every target-make sure that pointer is not used for unit without aura applied
//Spells with this flag cannot trigger if effect is cast on self
- bool canEffectTrigger = !(m_spellInfo->AttributesEx3 & SPELL_ATTR3_CANT_TRIGGER_PROC) && unitTarget->CanProc() && CanExecuteTriggersOnHit(mask);
+ bool canEffectTrigger = !(m_spellInfo->AttributesEx3 & SPELL_ATTR3_CANT_TRIGGER_PROC) && unitTarget->CanProc() && (CanExecuteTriggersOnHit(mask) || missInfo == SPELL_MISS_IMMUNE || missInfo == SPELL_MISS_IMMUNE2);
Unit* spellHitTarget = NULL;
if (missInfo == SPELL_MISS_NONE) // In case spell hit target, do all effect on that target
@@ -2311,15 +2311,8 @@ void Spell::DoAllEffectOnTarget(TargetInfo* target)
if (m_damage > 0)
positive = false;
else if (!m_healing)
- {
- for (uint8 i = 0; i< MAX_SPELL_EFFECTS; ++i)
- // If at least one effect negative spell is negative hit
- if (mask & (1<<i) && !m_spellInfo->IsPositiveEffect(i))
- {
- positive = false;
- break;
- }
- }
+ positive = m_spellInfo->IsPositive();
+
switch (m_spellInfo->DmgClass)
{
case SPELL_DAMAGE_CLASS_MAGIC:
@@ -2397,7 +2390,6 @@ void Spell::DoAllEffectOnTarget(TargetInfo* target)
caster->ToPlayer()->CastItemCombatSpell(unitTarget, m_attackType, procVictim, procEx);
}
-
m_damage = damageInfo.damage;
caster->DealSpellDamage(&damageInfo, true);
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index 606851bf8f1..0a5d265cbfa 100644
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -654,14 +654,6 @@ void Spell::EffectSchoolDMG(SpellEffIndex effIndex)
}
break;
}
- case SPELLFAMILY_MAGE:
- {
- // Deep Freeze should deal damage to permanently stun-immune targets.
- if (m_spellInfo->Id == 71757)
- if (unitTarget->GetTypeId() != TYPEID_UNIT || !(unitTarget->IsImmunedToSpellEffect(sSpellMgr->GetSpellInfo(44572), 0)))
- return;
- break;
- }
}
if (m_originalCaster && damage > 0 && apply_direct_bonus)