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

Есть спелл 40958, который триггерит 40962.
Последний спелл требует реагенты, но при касте они не забираются.
Каст 40958 осуществляется госсипом у го.

Написал патч на спелл 40962:
Код:
diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp
index c566fd1..caca0e6 100644
--- a/src/game/SpellEffects.cpp
+++ b/src/game/SpellEffects.cpp
@@ -1288,6 +1288,22 @@ void Spell::EffectDummy(SpellEffectIndex eff_idx)
                     DoCreateItem(eff_idx, newitemid);
                     return;
                 }
+                case 40962:                                 // Blade's Edge Terrace Demon Boss Summon Branch
+                {
+                    if (!unitTarget || unitTarget->GetTypeId() != TYPEID_PLAYER)
+                        return;
+
+                    uint32 spell_id = 0;
+                    switch (urand(1,4))
+                    {
+                        case 1: spell_id = 40957; break;    // Blade's Edge Terrace Demon Boss Summon 1
+                        case 2: spell_id = 40959; break;    // Blade's Edge Terrace Demon Boss Summon 2
+                        case 3: spell_id = 40960; break;    // Blade's Edge Terrace Demon Boss Summon 3
+                        case 4: spell_id = 40961; break;    // Blade's Edge Terrace Demon Boss Summon 4
+                    }
+                    unitTarget->CastSpell(unitTarget, spell_id, true, NULL, NULL, unitTarget->GetObjectGuid(), m_spellInfo);
+                    return;
+                }
                 case 42287:                                 // Salvage Wreckage
                 {
                     if (m_caster->GetTypeId() != TYPEID_PLAYER)
Сначала использовал m_caster, т.к. по словам НФ это предпочтительнее, если таргет=кастер.
Потом сделал, как в коммите https://github.com/mangos/mangos/com...0122e399ea5d4a

В итоге реагенты так и остались в инвентаре.

Каким образом триггерный спелл 40962 может забрать реагенты у кастера?
virusav вне форума   Ответить с цитированием