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

http://ru.wowhead.com/quest=11379
Тема на форуме СД2:
http://www.scriptdev2.com/project.php?issueid=1157
Код:
Index: scripts/world/item_scripts.cpp
===================================================================
--- scripts/world/item_scripts.cpp	(revision 1863)
+++ scripts/world/item_scripts.cpp	(working copy)
@@ -25,6 +25,8 @@
 item_arcane_charges                 Prevent use if player is not flying (cannot cast while on ground)
 item_flying_machine(i34060,i34061)  Engineering crafted flying machines
 item_gor_dreks_ointment(i30175)     Protecting Our Own(q10488)
+item_petrov_cluster_bombs
+item_cooking_pot                    Quest Super Hot Stew[11379]
 EndContentData */
 
 #include "precompiled.h"
@@ -127,6 +129,32 @@
     return false;
 }
 
+/*#####
+# item_cooking_pot
+#####*/
+
+enum
+{
+    SPELL_DEMON_BROILED_SURPRISE    = 43723,
+    NPC_ABYSSAL_FLAMEBRINGER        = 19973
+};
+
+bool ItemUse_item_cooking_pot(Player* pPlayer, Item* pItem, const SpellCastTargets &pTargets)
+{
+    std::list<Creature*> lAbyssalFlamebringerList;
+    GetCreatureListWithEntryInGrid(lAbyssalFlamebringerList, pPlayer, NPC_ABYSSAL_FLAMEBRINGER, 10.0f);
+    for (std::list<Creature*>::iterator itr = lAbyssalFlamebringerList.begin(); itr != lAbyssalFlamebringerList.end(); ++itr)
+    {
+        if ((*itr)->IsCorpse())
+            if (const SpellEntry* pSpellInfo = GetSpellStore()->LookupEntry(SPELL_DEMON_BROILED_SURPRISE))
+            {
+                pPlayer->CastSpell(pPlayer, pSpellInfo->CalculateSimpleValue(EFFECT_INDEX_0), false);
+                return true;
+            }
+    }
+    return false;
+}
+
 void AddSC_item_scripts()
 {
     Script *newscript;
@@ -150,4 +178,9 @@
     newscript->Name = "item_petrov_cluster_bombs";
     newscript->pItemUse = &ItemUse_item_petrov_cluster_bombs;
     newscript->RegisterSelf();
+
+    newscript = new Script;
+    newscript->Name = "item_cooking_pot";
+    newscript->pItemUse = &ItemUse_item_cooking_pot;
+    newscript->RegisterSelf();
 }
Есть один визуальный недочет: если у игрока нет ингредиентов, то он будет делать вид, что кастует спелл, хотя на самом деле ничего происходить не будет.

Для устранения этого недочета нужно проверять, может ли игрок кастовать спелл, но решения пока не нашел.
Как я понимаю, нельзя проверить возможность каста спелла игроком.
virusav вне форума   Ответить с цитированием