aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/2520_world.sql5
-rw-r--r--src/game/Spell.cpp12
-rw-r--r--src/game/SpellAuras.cpp15
-rw-r--r--src/game/Unit.cpp2
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)