diff options
-rw-r--r-- | sql/updates/2520_world.sql | 5 | ||||
-rw-r--r-- | src/game/Spell.cpp | 12 | ||||
-rw-r--r-- | src/game/SpellAuras.cpp | 15 | ||||
-rw-r--r-- | src/game/Unit.cpp | 2 |
4 files changed, 26 insertions, 8 deletions
diff --git a/sql/updates/2520_world.sql b/sql/updates/2520_world.sql new file mode 100644 index 00000000000..dfd7d97c292 --- /dev/null +++ b/sql/updates/2520_world.sql @@ -0,0 +1,5 @@ +-- Sudden Death +DELETE FROM `spell_proc_event` WHERE `entry` IN (29723, 29725, 29724); +INSERT INTO `spell_proc_event` VALUES (29723, 0x00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0.000000, 0.000000, 0); +INSERT INTO `spell_proc_event` VALUES (29725, 0x00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0.000000, 0.000000, 0); +INSERT INTO `spell_proc_event` VALUES (29724, 0x00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0.000000, 0.000000, 0); diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index 4bb55ceee04..9fc6dbffcc7 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -4001,8 +4001,18 @@ SpellCastResult Spell::CheckCast(bool strict) { if(m_spellInfo->SpellIconID == 1648) // Execute { - if(!m_targets.getUnitTarget() || m_targets.getUnitTarget()->GetHealth() > m_targets.getUnitTarget()->GetMaxHealth()*0.2) + if(!m_targets.getUnitTarget()) return SPELL_FAILED_BAD_TARGETS; + if (m_targets.getUnitTarget()->GetHealth() > m_targets.getUnitTarget()->GetMaxHealth()*0.2) + { + bool found = false; + Unit::AuraEffectList const& stateAuras = m_caster->GetAurasByType(SPELL_AURA_ABILITY_IGNORE_AURASTATE); + for(Unit::AuraEffectList::const_iterator j = stateAuras.begin();j != stateAuras.end(); ++j) + if((*j)->isAffectedOnSpell(m_spellInfo)) + found=true; + if (!found) + return SPELL_FAILED_BAD_TARGETS; + } } else if (m_spellInfo->Id == 51582) // Rocket Boots Engaged { diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index 0cf001ccf80..93176a83470 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -944,12 +944,15 @@ void Aura::_AddAura() // passive auras (except totem auras) do not get placed in the slots // area auras with SPELL_AURA_NONE are not shown on target - if((m_spellProto->Attributes & 0x80 && GetTalentSpellPos(GetId())) || !m_isPassive || (caster && caster->GetTypeId() == TYPEID_UNIT && ((Creature*)caster)->isTotem()) - && (!IsAreaAura() - || m_target!=caster || - (m_spellProto->Effect[0]!=SPELL_EFFECT_APPLY_AREA_AURA_ENEMY - && m_spellProto->Effect[1]!=SPELL_EFFECT_APPLY_AREA_AURA_ENEMY - && m_spellProto->Effect[2]!=SPELL_EFFECT_APPLY_AREA_AURA_ENEMY))) + if((m_spellProto->Attributes & 0x80 && GetTalentSpellPos(GetId())) + || !m_isPassive + || (caster && caster->GetTypeId() == TYPEID_UNIT && ((Creature*)caster)->isTotem()) + || (IsAuraType(SPELL_AURA_ABILITY_IGNORE_AURASTATE)) + && (!IsAreaAura() + || m_target!=caster || + (m_spellProto->Effect[0]!=SPELL_EFFECT_APPLY_AREA_AURA_ENEMY + && m_spellProto->Effect[1]!=SPELL_EFFECT_APPLY_AREA_AURA_ENEMY + && m_spellProto->Effect[2]!=SPELL_EFFECT_APPLY_AREA_AURA_ENEMY))) { // Try find slot for aura uint8 slot = MAX_AURAS; diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 5594793337c..3efbaa32752 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -5414,7 +5414,7 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, AuraEffect* trigger if (!target) return false; triggered_spell_id = 54181; - basepoints0 = damage * triggerAmount / 100; + basepoints0 = damage * 15 / 100; break; } switch(dummySpell->Id) |