Показать сообщение отдельно
Старый 28.06.2011, 20:54   #15
virusav
Администратор
 
Аватар для virusav
 
Регистрация: 19.02.2010
Сообщений: 492
Сказал(а) спасибо: 55
Поблагодарили 341 раз(а) в 154 сообщениях
virusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человек
Отправить сообщение для virusav с помощью ICQ
По умолчанию

Все-таки остался открытым вопрос о том, что триггерный спелл кастует таргет, а не кастер.
Код:
unitTarget->CastSpell(unitTarget, spellInfo, true, NULL, NULL, m_originalCasterGUID, m_spellInfo);
Из-за этого не работают спеллы с:
Код:
Attributes: 0x20000000 (SPELL_ATTR_UNAFFECTED_BY_INVULNERABILITY)
TargetAuraState = 13 (AURA_STATE_HEALTHLESS_35_PERCENT)

47679 Blood Draw
47702 Unholy Union
47722 Frost Draw
50251 Blood Draw
Для примера возьмем спелл 47722:
Код:
Effect 0: Id 6 (SPELL_EFFECT_APPLY_AURA)
BasePoints = 1
Targets (25, 0) (TARGET_DUELVSPLAYER, NO_TARGET)
Aura Id 23 (SPELL_AURA_PERIODIC_TRIGGER_SPELL), value = 1, misc = 0 (0), miscB = 0, periodic = 8000
   Trigger spell (47724) Frost Draw. Chance = 101
Сейчас его кастует игрок с помощью итема на нпц, который в итоге кастует триггерный спелл 47724:
Код:
Effect 0: Id 77 (SPELL_EFFECT_SCRIPT_EFFECT)
BasePoints = 50239
Targets (1, 0) (TARGET_SELF, NO_TARGET)

Effect 1: Id 1 (SPELL_EFFECT_INSTAKILL)
BasePoints = 1
Targets (25, 0) (TARGET_DUELVSPLAYER, NO_TARGET)
У 47724 эффект каста спелла 50239, который создает итем, но т.к. кастер нпц, а таргет TARGET_SELF, то игрок ничего не получает.

Если бы триггерные спеллы кастовал не таргет, а кастер, то: игрок кастует 47722, он же кастует 47724 и он же кастует 50239, поэтому получает итем.

Посмотрел выборочно другие спеллы с кастом триггерных спеллов на случай смены кастера, чтобы ничего не поломалось, но проблем не нашел.

Чем чревата замена
Код:
unitTarget->CastSpell(unitTarget, spellInfo, true, NULL, NULL, m_originalCasterGUID, m_spellInfo);
на
Код:
кастер->CastSpell(unitTarget, spellInfo, true, NULL, NULL, m_originalCasterGUID, m_spellInfo);
?
virusav вне форума   Ответить с цитированием