mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Core/SpellScripts: allow to modify target destination of all target type
This commit is contained in:
@@ -979,14 +979,22 @@ void Spell::SelectImplicitChannelTargets(SpellEffIndex effIndex, SpellImplicitTa
|
||||
{
|
||||
CallScriptObjectTargetSelectHandlers(target, effIndex, targetType);
|
||||
if (target)
|
||||
m_targets.SetDst(*target);
|
||||
{
|
||||
SpellDestination dest(*target);
|
||||
CallScriptDestinationTargetSelectHandlers(dest, effIndex, targetType);
|
||||
m_targets.SetDst(dest);
|
||||
}
|
||||
}
|
||||
else
|
||||
TC_LOG_DEBUG("spells", "SPELL: cannot find channel spell destination for spell ID %u, effect %u", m_spellInfo->Id, effIndex);
|
||||
break;
|
||||
case TARGET_DEST_CHANNEL_CASTER:
|
||||
m_targets.SetDst(*channeledSpell->GetCaster());
|
||||
{
|
||||
SpellDestination dest(*channeledSpell->GetCaster());
|
||||
CallScriptDestinationTargetSelectHandlers(dest, effIndex, targetType);
|
||||
m_targets.SetDst(dest);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
ASSERT(false && "Spell::SelectImplicitChannelTargets: received not implemented target type");
|
||||
break;
|
||||
@@ -1042,7 +1050,11 @@ void Spell::SelectImplicitNearbyTargets(SpellEffIndex effIndex, SpellImplicitTar
|
||||
if (m_spellInfo->RequiresSpellFocus)
|
||||
{
|
||||
if (focusObject)
|
||||
m_targets.SetDst(*focusObject);
|
||||
{
|
||||
SpellDestination dest(*focusObject);
|
||||
CallScriptDestinationTargetSelectHandlers(dest, effIndex, targetType);
|
||||
m_targets.SetDst(dest);
|
||||
}
|
||||
return;
|
||||
}
|
||||
break;
|
||||
@@ -1068,7 +1080,6 @@ void Spell::SelectImplicitNearbyTargets(SpellEffIndex effIndex, SpellImplicitTar
|
||||
switch (targetType.GetObjectType())
|
||||
{
|
||||
case TARGET_OBJECT_TYPE_UNIT:
|
||||
{
|
||||
if (Unit* unit = target->ToUnit())
|
||||
AddUnitTarget(unit, effMask, true, false);
|
||||
else
|
||||
@@ -1077,7 +1088,6 @@ void Spell::SelectImplicitNearbyTargets(SpellEffIndex effIndex, SpellImplicitTar
|
||||
return;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case TARGET_OBJECT_TYPE_GOBJ:
|
||||
if (GameObject* gobjTarget = target->ToGameObject())
|
||||
AddGOTarget(gobjTarget, effMask);
|
||||
@@ -1088,8 +1098,12 @@ void Spell::SelectImplicitNearbyTargets(SpellEffIndex effIndex, SpellImplicitTar
|
||||
}
|
||||
break;
|
||||
case TARGET_OBJECT_TYPE_DEST:
|
||||
m_targets.SetDst(*target);
|
||||
{
|
||||
SpellDestination dest(*target);
|
||||
CallScriptDestinationTargetSelectHandlers(dest, effIndex, targetType);
|
||||
m_targets.SetDst(dest);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
ASSERT(false && "Spell::SelectImplicitNearbyTargets: received not implemented target object type");
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user