1. Дано:
ГО1: entry=29784, type=8.
ГО2: entry=31442, type=6.
При приближении к ГО2 на игрока должен происходить каст 7353.
На чистом ядре каста 7353 не происходит.
Точнее эффекта от каста нет, в логе пусто, хотя телодвижения в ядре делаются.
В текущем варианте не работает (чистое ядро):
Код:
void GameObject::Use(Unit* user)
...
// FIXME: when GO casting will be implemented trap must cast spell to target
if (goInfo->trap.spellId)
caster->CastSpell(user, goInfo->trap.spellId, true, NULL, NULL, GetObjectGuid());
Если заменить каст на:
Код:
caster->CastSpell(user, goInfo->trap.spellId, true, NULL, NULL, user->GetObjectGuid());
Тут возникают вопросы: зачем передается гуид в последнем параметре, если каст всегда идет от имени юнита, и нужны ли тут последние 3 параметра вообще?
2. Меняю кусок выше, чтобы каст 7353 засчитывался.
Спелл 818 должен спавнить 2 го:
ГО1: entry=29784, type=8.
ГО2: entry=31442, type=6.
На чистом ядре в мире появляются оба го, но каста 7353 не происходит.
Если в void GameObject::SummonLinkedTrapIfAny() после GetMap()->Add(linkedGO); добавить строку linkedGO->Use(GetOwner()); (проверку на существование владельца не делал, т.к. это тест), то каст спелла 818 отрабатывает, как полагается.
Вопросы: правильно использовать ловушку при добавлении в мир или го, который эту ловушку спавнит?
3. После каста 818 отменяем баф, отходим от ГО2 и подходим к нему снова, но эффекта 0.
Вопросы: ГО2 должен активироваться всегда, как только юнит попадает в радиус действия, или это должен делать ГО1 (в данном случае спеллфокус)?
Если ГО1, то в данном случае как другие игроки получат баф, если игрока-кастера с навыком кулинарии нет рядом?