virusav
11.05.2010, 15:07
При использовании итема с данным спеллом получаем сообщение об ошибке, не проходим условие:
Spell.cpp
case SPELL_AURA_MOD_CHARM:
...
if(m_targets.getUnitTarget() == m_caster)
return SPELL_FAILED_BAD_TARGETS;
Для данного спелла можно добавить запись в `spell_script_target`, цель находится и добавляется:
Spell.cpp
AddUnitTarget(creatureScriptTarget, SpellEffectIndex(j));
Как я понимаю, изначально игрок добавляется в список целей:
SpellHandler.cpp
SpellCastTargets targets;
recvPacket >> targets.ReadForCaster(pUser);
targets.Update(pUser);
Если исключить добавление игрока в список целей для таких спеллов, то получаем сообщение об ошибке:
Spell.cpp
case SPELL_AURA_MOD_CHARM:
...
if(!m_targets.getUnitTarget())
return SPELL_FAILED_BAD_IMPLICIT_TARGETS;
Не встречал спеллов, которые были бы с привязкой, и чтобы их можно было кастовать на игрока.
Может, для спеллов, для которых цели можно занести в `spell_script_target`, исключать игрока в качестве цели?
Spell.cpp
case SPELL_AURA_MOD_CHARM:
...
if(m_targets.getUnitTarget() == m_caster)
return SPELL_FAILED_BAD_TARGETS;
Для данного спелла можно добавить запись в `spell_script_target`, цель находится и добавляется:
Spell.cpp
AddUnitTarget(creatureScriptTarget, SpellEffectIndex(j));
Как я понимаю, изначально игрок добавляется в список целей:
SpellHandler.cpp
SpellCastTargets targets;
recvPacket >> targets.ReadForCaster(pUser);
targets.Update(pUser);
Если исключить добавление игрока в список целей для таких спеллов, то получаем сообщение об ошибке:
Spell.cpp
case SPELL_AURA_MOD_CHARM:
...
if(!m_targets.getUnitTarget())
return SPELL_FAILED_BAD_IMPLICIT_TARGETS;
Не встречал спеллов, которые были бы с привязкой, и чтобы их можно было кастовать на игрока.
Может, для спеллов, для которых цели можно занести в `spell_script_target`, исключать игрока в качестве цели?