diff options
author | Shauren <shauren.trinity@gmail.com> | 2024-07-03 00:08:40 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2024-07-03 00:08:40 +0200 |
commit | af39104798d78f0cf8f51dc36e7302f1f4e69b7b (patch) | |
tree | dd2849d54f9c222029e2075d6af13997ed073015 | |
parent | 09cdfbfba2fb629578680578bc7818b8c672a298 (diff) |
Core/Spells: Implemented SPELL_ATTR9_FORCE_CORPSE_TARGET
-rw-r--r-- | src/server/game/Miscellaneous/SharedDefines.h | 2 | ||||
-rw-r--r-- | src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp | 6 | ||||
-rw-r--r-- | src/server/game/Spells/Spell.cpp | 2 |
3 files changed, 5 insertions, 5 deletions
diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index 718cbf63e24..fda10c6ae7b 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -786,7 +786,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 133026d02c1..f283edcc1ca 100644 --- a/src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp +++ b/src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp @@ -1462,7 +1462,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", "" }; @@ -1506,7 +1506,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; @@ -1547,7 +1547,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 5b6d62d1f3f..ad802f400d4 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -2775,7 +2775,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) |