PDA

Просмотр полной версии : [patch/dev][spell=57388]Корм для зверька


virusav
14.01.2012, 15:10
При касте 57388 спелла на нпц последний становится дружелюбным и следует за игроком, если тот не на маунте.

У спелла 57388 есть 2 эффекта:
Aura Id 177 (SPELL_AURA_AOE_CHARM)
Aura Id 25 (SPELL_AURA_MOD_PACIFY)

По сниффу 430:
Entry: 49728
UNIT_FIELD_CHARMEDBY = (Player, Counter: ...)
UNIT_FIELD_FACTIONTEMPLATE = 2203
UNIT_FIELD_FLAGS = 131080

В ядре для SPELL_AURA_MOD_PACIFY:
void Aura::HandleAuraModPacify(bool apply, bool /*Real*/)
{
if (apply)
GetTarget()->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PACIFIED);
else
GetTarget()->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PACIFIED);
}
Флаги 131080 = UNIT_FLAG_PACIFIED (131072) + UNIT_FLAG_PVP_ATTACKABLE (8)

Для SPELL_AURA_AOE_CHARM обработки не нашел.
В теории этот эффект должен делать нпц спутником игрока с учетом маунта.

Для написания патча нужны ответы на вопросы:
1. В эффекте SPELL_AURA_MOD_PACIFY должна быть смена фракции нпц на 2203, есть у кого-нибудь сниффы с этим эффектом?
2. Какой функцией лучше сделать из нпц спутника, но с учетом нахождения игрока на маунте?
3. Есть ли подобные реализации для каких-либо других эффектов?

rsa
14.01.2012, 15:36
аура 177 названа неправильно, это никакой не АОЕ чарм, а обычный пассив-чарм, который распространяется на все цели согласно таргетлисту. будут цели и радиус (как в 33384) - будет АОЕ. на мангосе не реализована, требует работы вроде сделанной для поддержки мультипетов.
если кто будет делать, то в базепойнтах там сидит вероятность срабатывания.
смена фракции штатно входит в обработку чарма, пихать ее в 25 ауру незачем.

virusav
14.01.2012, 17:40
Насчет шанса в BasePoints не согласен.
В комментариях по данному спеллу нет ни единого упоминания об этом.

В BasePoints встречаются значения 1, 30, 70, 99, 100, 999, 9999 ...

Если взять для примера спелл http://ru.wowhead.com/spell=46427, то в нем BasePoints=70 - это максимальный уровень врагов, которых можно подчинить.
У спелла http://ru.wowhead.com/spell=33384 вообще значение 1.

Похоже, что надо создать обработчик и описывать каждый спелл отдельно.

Также интересует, как попроще реализовать приручение.