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();
}
Есть один визуальный недочет: если у игрока нет ингредиентов, то он будет делать вид, что кастует спелл, хотя на самом деле ничего происходить не будет.
Для устранения этого недочета нужно проверять, может ли игрок кастовать спелл, но решения пока не нашел.
Как я понимаю, нельзя проверить возможность каста спелла игроком.