diff options
-rw-r--r-- | sql/updates/world/2014_07_03_01_world_spell_proc_event.sql | 7 | ||||
-rw-r--r-- | src/server/game/Spells/Spell.cpp | 14 | ||||
-rw-r--r-- | src/server/game/Spells/SpellEffects.cpp | 8 |
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) |