aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMachiavelli <machiavelli.trinity@gmail.com>2011-08-19 12:19:01 +0200
committerMachiavelli <machiavelli.trinity@gmail.com>2011-08-19 12:27:03 +0200
commit3c9c1a9b69e80a198540e64a6da4d47d62323deb (patch)
tree491281f84a2cbc37d181b7f7f35653c6d58ccf86 /src
parent868c1c53f2358ce0efd2d1947f9f9b6d6373e885 (diff)
Core/Spells: Rename SPELL_ATTR6_ONLY_CAST_WHILE_POSSESSED to SPELL_ATTR6_CAST_BY_CHARMER and assign m_caster in Spell::Spell instead of m_originalCaster
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/Miscellaneous/SharedDefines.h2
-rwxr-xr-xsrc/server/game/Spells/Spell.cpp7
2 files changed, 5 insertions, 4 deletions
diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h
index 714606a633a..0ffae2ac9dc 100755
--- a/src/server/game/Miscellaneous/SharedDefines.h
+++ b/src/server/game/Miscellaneous/SharedDefines.h
@@ -497,7 +497,7 @@ enum SpellAttr6
SPELL_ATTR6_UNK15 = 0x00008000, // 15 not set in 3.0.3
SPELL_ATTR6_UNK16 = 0x00010000, // 16
SPELL_ATTR6_UNK17 = 0x00020000, // 17
- SPELL_ATTR6_ONLY_CAST_WHILE_POSSESSED = 0x00040000, // 18 client won't allow to cast these spells when unit is not possessed && charmer of caster will be original caster
+ SPELL_ATTR6_CAST_BY_CHARMER = 0x00040000, // 18 client won't allow to cast these spells when unit is not possessed && charmer of caster will be original caster
SPELL_ATTR6_UNK19 = 0x00080000, // 19
SPELL_ATTR6_UNK20 = 0x00100000, // 20
SPELL_ATTR6_CLIENT_UI_TARGET_EFFECTS = 0x00200000, // 21 it's only client-side attribute
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index da16669367b..e86b3851b11 100755
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -496,10 +496,11 @@ m_caster(caster), m_spellValue(new SpellValue(m_spellInfo))
if (Item* pItem = m_caster->ToPlayer()->GetWeaponForAttack(RANGED_ATTACK))
m_spellSchoolMask = SpellSchoolMask(1 << pItem->GetTemplate()->Damage[0].DamageType);
+ if (info->AttributesEx6 & SPELL_ATTR6_CAST_BY_CHARMER)
+ const_cast<Unit*>(m_caster) = caster->GetCharmerOrOwner();
+
if (originalCasterGUID)
m_originalCasterGUID = originalCasterGUID;
- else if (info->AttributesEx6 & SPELL_ATTR6_ONLY_CAST_WHILE_POSSESSED)
- m_originalCasterGUID = m_caster->GetCharmerOrOwnerGUID();
else
m_originalCasterGUID = m_caster->GetGUID();
@@ -4747,7 +4748,7 @@ SpellCastResult Spell::CheckCast(bool strict)
}
//! Client checks this already
- if (m_spellInfo->AttributesEx6 & SPELL_ATTR6_ONLY_CAST_WHILE_POSSESSED && !m_caster->GetCharmerOrOwnerGUID())
+ if (m_spellInfo->AttributesEx6 & SPELL_ATTR6_CAST_BY_CHARMER && !m_caster->GetCharmerOrOwnerGUID())
return SPELL_FAILED_DONT_REPORT;
Unit* target = m_targets.GetUnitTarget();