aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Miscellaneous/SharedDefines.h2
-rw-r--r--src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp6
-rw-r--r--src/server/game/Spells/Spell.cpp2
3 files changed, 5 insertions, 5 deletions
diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h
index 848e4bfd193..5c825b408fe 100644
--- a/src/server/game/Miscellaneous/SharedDefines.h
+++ b/src/server/game/Miscellaneous/SharedDefines.h
@@ -789,7 +789,7 @@ enum SpellAttr9 : uint32
SPELL_ATTR9_IGNORE_CASTER_HEALING_MODIFIERS = 0x01000000, // TITLE Ignore Caster Healing Modifiers
SPELL_ATTR9_DONT_CONSUME_CHARGE_IF_ITEM_DELETED = 0x02000000, /*NYI - some sort of bugfix attribute to prevent double item deletion?*/ // TITLE (Programmer Only) Don't consume charge if item deleted
SPELL_ATTR9_ITEM_PASSIVE_ON_CLIENT = 0x04000000, // TITLE Item Passive On Client
- SPELL_ATTR9_UNK27 = 0x08000000, // TITLE Unknown attribute 27@Attr9
+ SPELL_ATTR9_FORCE_CORPSE_TARGET = 0x08000000, // TITLE Force Corpse Target DESCRIPTION Causes the spell to continue executing effects on the target even if one of them kills it
SPELL_ATTR9_UNK28 = 0x10000000, // TITLE Unknown attribute 28@Attr9
SPELL_ATTR9_UNK29 = 0x20000000, // TITLE Unknown attribute 29@Attr9
SPELL_ATTR9_UNK30 = 0x40000000, // TITLE Unknown attribute 30@Attr9
diff --git a/src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp b/src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp
index af68dd3c400..22ae7d05ca0 100644
--- a/src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp
+++ b/src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp
@@ -1465,7 +1465,7 @@ TC_API_EXPORT EnumText EnumUtils<SpellAttr9>::ToString(SpellAttr9 value)
case SPELL_ATTR9_IGNORE_CASTER_HEALING_MODIFIERS: return { "SPELL_ATTR9_IGNORE_CASTER_HEALING_MODIFIERS", "Ignore Caster Healing Modifiers", "" };
case SPELL_ATTR9_DONT_CONSUME_CHARGE_IF_ITEM_DELETED: return { "SPELL_ATTR9_DONT_CONSUME_CHARGE_IF_ITEM_DELETED", "(Programmer Only) Don't consume charge if item deleted", "" };
case SPELL_ATTR9_ITEM_PASSIVE_ON_CLIENT: return { "SPELL_ATTR9_ITEM_PASSIVE_ON_CLIENT", "Item Passive On Client", "" };
- case SPELL_ATTR9_UNK27: return { "SPELL_ATTR9_UNK27", "Unknown attribute 27@Attr9", "" };
+ case SPELL_ATTR9_FORCE_CORPSE_TARGET: return { "SPELL_ATTR9_FORCE_CORPSE_TARGET", "Force Corpse Target", "Causes the spell to continue executing effects on the target even if one of them kills it" };
case SPELL_ATTR9_UNK28: return { "SPELL_ATTR9_UNK28", "Unknown attribute 28@Attr9", "" };
case SPELL_ATTR9_UNK29: return { "SPELL_ATTR9_UNK29", "Unknown attribute 29@Attr9", "" };
case SPELL_ATTR9_UNK30: return { "SPELL_ATTR9_UNK30", "Unknown attribute 30@Attr9", "" };
@@ -1509,7 +1509,7 @@ TC_API_EXPORT SpellAttr9 EnumUtils<SpellAttr9>::FromIndex(size_t index)
case 24: return SPELL_ATTR9_IGNORE_CASTER_HEALING_MODIFIERS;
case 25: return SPELL_ATTR9_DONT_CONSUME_CHARGE_IF_ITEM_DELETED;
case 26: return SPELL_ATTR9_ITEM_PASSIVE_ON_CLIENT;
- case 27: return SPELL_ATTR9_UNK27;
+ case 27: return SPELL_ATTR9_FORCE_CORPSE_TARGET;
case 28: return SPELL_ATTR9_UNK28;
case 29: return SPELL_ATTR9_UNK29;
case 30: return SPELL_ATTR9_UNK30;
@@ -1550,7 +1550,7 @@ TC_API_EXPORT size_t EnumUtils<SpellAttr9>::ToIndex(SpellAttr9 value)
case SPELL_ATTR9_IGNORE_CASTER_HEALING_MODIFIERS: return 24;
case SPELL_ATTR9_DONT_CONSUME_CHARGE_IF_ITEM_DELETED: return 25;
case SPELL_ATTR9_ITEM_PASSIVE_ON_CLIENT: return 26;
- case SPELL_ATTR9_UNK27: return 27;
+ case SPELL_ATTR9_FORCE_CORPSE_TARGET: return 27;
case SPELL_ATTR9_UNK28: return 28;
case SPELL_ATTR9_UNK29: return 29;
case SPELL_ATTR9_UNK30: return 30;
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index 3f58f6ffb71..7e957b98db9 100644
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -2772,7 +2772,7 @@ void Spell::TargetInfo::DoTargetSpellHit(Spell* spell, SpellEffectInfo const& sp
spell->m_damage = Damage;
spell->m_healing = Healing;
- if (unit->IsAlive() != IsAlive)
+ if (unit->IsAlive() != IsAlive && !spell->m_spellInfo->HasAttribute(SPELL_ATTR9_FORCE_CORPSE_TARGET))
return;
if (!spell->m_spellInfo->HasAttribute(SPELL_ATTR8_IGNORE_SANCTUARY) && spell->getState() == SPELL_STATE_DELAYED && !spell->IsPositive() && (GameTime::GetGameTimeMS() - TimeDelay) <= unit->m_lastSanctuaryTime)