mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-23 18:36:31 +01:00
Scripting: Quest: Troll Patrol: The Alchemist's Apprentice
This commit is contained in:
@@ -2,23 +2,23 @@
|
||||
DELETE FROM `creature_text` WHERE `entry`=28205;
|
||||
INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
|
||||
-- Events 1,2,3
|
||||
(28205,0,0,'Quickly, get me some...',42,0,100,1,0,0,'Alchemist Finklestein'),
|
||||
(28205,0,1,'I think it needs...',42,0,100,1,0,0,'Alchemist Finklestein'),
|
||||
(28205,0,2,'Find me some...',42,0,100,1,0,0,'Alchemist Finklestein'),
|
||||
(28205,0,3,'It simply must have some...',42,0,100,1,0,0,'Alchemist Finklestein'),
|
||||
(28205,0,4,'We need some...',42,0,100,1,0,0,'Alchemist Finklestein'),
|
||||
(28205,0,5,'It simply must have some...',42,0,100,1,0,0,'Alchemist Finklestein'),
|
||||
(28205,0,0,'Quickly, get me some...',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,0,1,'I think it needs...',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,0,2,'Find me some...',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,0,3,'It simply must have some...',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,0,4,'We need some...',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,0,5,'It simply must have some...',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
-- Event 4
|
||||
(28205,1,0,'I think it''s time for...',42,0,100,1,0,0,'Alchemist Finklestein'),
|
||||
(28205,1,1,'Next, we''ll need...',42,0,100,1,0,0,'Alchemist Finklestein'),
|
||||
(28205,1,2,'Tastes like it needs more....',42,0,100,1,0,0,'Alchemist Finklestein'),
|
||||
(28205,1,3,'Alright, now find me some...',42,0,100,1,0,0,'Alchemist Finklestein'),
|
||||
(28205,1,0,'I think it''s time for...',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,1,1,'Next, we''ll need...',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,1,2,'Tastes like it needs more....',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,1,3,'Alright, now find me some...',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
-- Event 5
|
||||
(28205,2,0,'Coming along nicely, but still needs...',42,0,100,1,0,0,'Alchemist Finklestein'),
|
||||
(28205,2,1,'Before it thickens, we must add...',42,0,100,1,0,0,'Alchemist Finklestein'),
|
||||
(28205,2,0,'Coming along nicely, but still needs...',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,2,1,'Before it thickens, we must add...',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
-- Event 6
|
||||
(28205,3,0,'Before it boils over, I need...',42,0,100,1,0,0,'Alchemist Finklestein'),
|
||||
(28205,3,1,'It''s thickening! Quickly, get some...',42,0,100,1,0,0,'Alchemist Finklestein'),
|
||||
(28205,3,0,'Before it boils over, I need...',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,3,1,'It''s thickening! Quickly, get some...',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
-- Fail
|
||||
(28205,4,0,'You''re too late. I must start again from the beginning....',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,4,1,'No! The serum is ruined!',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
@@ -38,10 +38,9 @@ INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`pr
|
||||
(28205,17,0,'Prismatic Mojo!',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,18,0,'Raptor Claw!',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,19,0,'Amberseed!',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,20,0,'Burning Ice!',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,21,0,'Shrunken Dragon''s Claw!',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,22,0,'Chilled Serpent Mucus!',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,23,0,'Crystallized Hogsnot!',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,24,0,'Crushed Basilisk Crystals!',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,25,0,'Trollbane!',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,26,0,'Frozen Spider Ichor!',42,0,100,0,0,0,'Alchemist Finklestein');
|
||||
(28205,20,0,'Shrunken Dragon''s Claw!',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,21,0,'Chilled Serpent Mucus!',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,22,0,'Crystallized Hogsnot!',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,23,0,'Crushed Basilisk Crystals!',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,24,0,'Trollbane!',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,25,0,'Frozen Spider Ichor!',42,0,100,0,0,0,'Alchemist Finklestein');
|
||||
|
||||
86
sql/updates/world/2013_06_17_02_world_misc.sql
Normal file
86
sql/updates/world/2013_06_17_02_world_misc.sql
Normal file
@@ -0,0 +1,86 @@
|
||||
-- Add option conditions for Alchemist Finklestein
|
||||
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (15) AND `SourceGroup` IN (9668) AND `SourceEntry` IN (0) AND `ConditionValue1` IN (51216);
|
||||
INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
|
||||
(15,9668,0,1,1,51216,0,0,1,0,'','Alchemist Finklestein - Show gossip option only if player does not have aura 51216');
|
||||
|
||||
UPDATE `creature_template` SET `AIName`= '',`ScriptName`= 'npc_alchemist_finklestein' WHERE `entry`=28205;
|
||||
UPDATE `gameobject_template` SET `ScriptName`= 'go_finklesteins_cauldron' WHERE `entry`=190498;
|
||||
|
||||
DELETE FROM `spell_script_names` WHERE `spell_id` IN (51134,51105,51107,51015,51154,51157,51046,51018,51055,51057,
|
||||
51059,51062,51064,51067,51069,51072,51077,51079,51081,51083,51085,51087,51091,51093,51095,51097,51100,51102);
|
||||
INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
|
||||
(51134,'spell_random_ingredient_easy'),
|
||||
(51105,'spell_random_ingredient_medium'),
|
||||
(51107,'spell_random_ingredient_hard'),
|
||||
(51015,'spell_random_ingredient_aura'),
|
||||
(51154,'spell_random_ingredient_aura'),
|
||||
(51157,'spell_random_ingredient_aura'),
|
||||
(51046,'spell_pot_check'),
|
||||
(51018,'spell_fetch_ingredient_aura'),
|
||||
(51055,'spell_fetch_ingredient_aura'),
|
||||
(51057,'spell_fetch_ingredient_aura'),
|
||||
(51059,'spell_fetch_ingredient_aura'),
|
||||
(51062,'spell_fetch_ingredient_aura'),
|
||||
(51064,'spell_fetch_ingredient_aura'),
|
||||
(51067,'spell_fetch_ingredient_aura'),
|
||||
(51069,'spell_fetch_ingredient_aura'),
|
||||
(51072,'spell_fetch_ingredient_aura'),
|
||||
(51077,'spell_fetch_ingredient_aura'),
|
||||
(51079,'spell_fetch_ingredient_aura'),
|
||||
(51081,'spell_fetch_ingredient_aura'),
|
||||
(51083,'spell_fetch_ingredient_aura'),
|
||||
(51085,'spell_fetch_ingredient_aura'),
|
||||
(51087,'spell_fetch_ingredient_aura'),
|
||||
(51091,'spell_fetch_ingredient_aura'),
|
||||
(51093,'spell_fetch_ingredient_aura'),
|
||||
(51095,'spell_fetch_ingredient_aura'),
|
||||
(51097,'spell_fetch_ingredient_aura'),
|
||||
(51100,'spell_fetch_ingredient_aura'),
|
||||
(51102,'spell_fetch_ingredient_aura');
|
||||
|
||||
-- Add texts for Alchemist Finklestein
|
||||
DELETE FROM `creature_text` WHERE `entry`=28205;
|
||||
INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
|
||||
-- Events 1,2,3
|
||||
(28205,0,0,'Quickly, get me some...',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,0,1,'I think it needs...',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,0,2,'Find me some...',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,0,3,'It simply must have some...',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,0,4,'We need some...',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,0,5,'It simply must have some...',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
-- Event 4
|
||||
(28205,1,0,'I think it''s time for...',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,1,1,'Next, we''ll need...',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,1,2,'Tastes like it needs more....',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,1,3,'Alright, now find me some...',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
-- Event 5
|
||||
(28205,2,0,'Coming along nicely, but still needs...',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,2,1,'Before it thickens, we must add...',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
-- Event 6
|
||||
(28205,3,0,'Before it boils over, I need...',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,3,1,'It''s thickening! Quickly, get some...',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
-- Fail
|
||||
(28205,4,0,'You''re too late. I must start again from the beginning....',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,4,1,'No! The serum is ruined!',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
-- Item request
|
||||
(28205,5,0,'Knotroot!',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,6,0,'Pickled Eagle Egg!',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,7,0,'Speckled Guano!',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,8,0,'Withered Batwing!',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,9,0,'Seasoned Slider Cider!',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,10,0,'Pulverized Gargoyle Teeth!',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,11,0,'Muddy Mire Maggot!',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,12,0,'Spiky Spider Egg!',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,13,0,'Hairy Herring Head!',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,14,0,'Putrid Pirate Perspiration!',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,15,0,'Icecrown Bottled Water!',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,16,0,'Wasp''s Wings!',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,17,0,'Prismatic Mojo!',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,18,0,'Raptor Claw!',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,19,0,'Amberseed!',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,20,0,'Shrunken Dragon''s Claw!',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,21,0,'Chilled Serpent Mucus!',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,22,0,'Crystallized Hogsnot!',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,23,0,'Crushed Basilisk Crystals!',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,24,0,'Trollbane!',42,0,100,0,0,0,'Alchemist Finklestein'),
|
||||
(28205,25,0,'Frozen Spider Ichor!',42,0,100,0,0,0,'Alchemist Finklestein');
|
||||
@@ -21,12 +21,15 @@
|
||||
#include "ScriptedEscortAI.h"
|
||||
#include "Player.h"
|
||||
#include "SpellInfo.h"
|
||||
#include "SpellScript.h"
|
||||
#include "SpellAuras.h"
|
||||
#include "SpellAuraEffects.h"
|
||||
|
||||
/*####
|
||||
## npc_drakuru_shackles
|
||||
####*/
|
||||
|
||||
enum eDrakuruShackles
|
||||
enum DrakuruShackles
|
||||
{
|
||||
SPELL_LEFT_CHAIN = 59951,
|
||||
SPELL_RIGHT_CHAIN = 59952,
|
||||
@@ -34,7 +37,7 @@ enum eDrakuruShackles
|
||||
SPELL_FREE_RAGECLAW = 55223,
|
||||
|
||||
NPC_RAGECLAW = 29686,
|
||||
QUEST_TROLLS_IS_GONE_CRAZY = 12861,
|
||||
QUEST_TROLLS_IS_GONE_CRAZY = 12861
|
||||
};
|
||||
|
||||
class npc_drakuru_shackles : public CreatureScript
|
||||
@@ -115,7 +118,7 @@ public:
|
||||
## npc_captured_rageclaw
|
||||
####*/
|
||||
|
||||
enum eRageclaw
|
||||
enum Rageclaw
|
||||
{
|
||||
SPELL_UNSHACKLED = 55085,
|
||||
SPELL_KNEEL = 39656
|
||||
@@ -1385,7 +1388,7 @@ public:
|
||||
## go_scourge_enclosure
|
||||
######*/
|
||||
|
||||
enum eScourgeEnclosure
|
||||
enum ScourgeEnclosure
|
||||
{
|
||||
QUEST_OUR_ONLY_HOPE = 12916,
|
||||
NPC_GYMER_DUMMY = 29928 //from quest template
|
||||
@@ -1413,6 +1416,686 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
/*######
|
||||
## Quest: Troll Patrol: The Alchemist's Apprentice
|
||||
######*/
|
||||
|
||||
enum Finklestein
|
||||
{
|
||||
// Creatre
|
||||
NPC_FINKLESTEIN = 28205,
|
||||
// Quest
|
||||
QUEST_THE_ALCHEMIST_APPRENTICE_DAILY = 12541,
|
||||
// Spells
|
||||
SPELL_ALCHEMIST_APPRENTICE_INVISBUFF = 51216,
|
||||
SPELL_RANDOM_INGREDIENT_EASY_AURA = 51015,
|
||||
SPELL_RANDOM_INGREDIENT_MEDIUM_AURA = 51154,
|
||||
SPELL_RANDOM_INGREDIENT_HARD_AURA = 51157,
|
||||
SPELL_RANDOM_INGREDIENT_EASY = 51134,
|
||||
SPELL_RANDOM_INGREDIENT_MEDIUM = 51105,
|
||||
SPELL_RANDOM_INGREDIENT_HARD = 51107,
|
||||
SPELL_NEXT_INGREDIENT = 51049,
|
||||
SPELL_POT_CHECK = 51046,
|
||||
SPELL_THROW_INGREDIENT = 51025,
|
||||
SPELL_KILL_CREDIT = 51111,
|
||||
// Spell Fetch Easy
|
||||
SPELL_FETCH_KNOTROOT = 51018,
|
||||
SPELL_FETCH_PICKLED_EAGLE_EGG = 51055,
|
||||
SPELL_FETCH_SPECKLED_GUANO = 51057,
|
||||
SPELL_FETCH_WITHERED_BATWING = 51059,
|
||||
SPELL_FETCH_SEASONED_SLIDER_CIDER = 51062,
|
||||
SPELL_FETCH_PULVERIZED_GARGOYLE_TEETH = 51064,
|
||||
SPELL_FETCH_MUDDY_MIRE_MAGGOT = 51067,
|
||||
SPELL_FETCH_SPIKY_SPIDER_EGG = 51069,
|
||||
SPELL_FETCH_HAIRY_HERRING_HEAD = 51072,
|
||||
SPELL_FETCH_PUTRID_PIRATE_PERSPIRATION = 51077,
|
||||
SPELL_FETCH_ICECROWN_BOTTLED_WATER = 51079,
|
||||
// Spell Have Easy
|
||||
SPELL_HAVE_KNOTROOT = 51047,
|
||||
SPELL_HAVE_PICKLED_EAGLE_EGG = 51056,
|
||||
SPELL_HAVE_SPECKLED_GUANO = 51058,
|
||||
SPELL_HAVE_WITHERED_BATWING = 51060,
|
||||
SPELL_HAVE_SEASONED_SLIDER_CIDER = 51063,
|
||||
SPELL_HAVE_PULVERIZED_GARGOYLE_TEETH = 51065,
|
||||
SPELL_HAVE_MUDDY_MIRE_MAGGOT = 51068,
|
||||
SPELL_HAVE_SPIKY_SPIDER_EGG = 51070,
|
||||
SPELL_HAVE_HAIRY_HERRING_HEAD = 51075,
|
||||
SPELL_HAVE_PUTRID_PIRATE_PERSPIRATION = 51078,
|
||||
SPELL_HAVE_ICECROWN_BOTTLED_WATER = 51080,
|
||||
// Spell Fetch Medium
|
||||
SPELL_FETCH_WASPS_WINGS = 51081,
|
||||
SPELL_FETCH_PRISMATIC_MOJO = 51083,
|
||||
SPELL_FETCH_RAPTOR_CLAW = 51085,
|
||||
SPELL_FETCH_AMBERSEED = 51087,
|
||||
SPELL_FETCH_SHRUNKEN_DRAGONS_CLAW = 51091,
|
||||
// Spell Have Medium
|
||||
SPELL_HAVE_WASPS_WINGS = 51082,
|
||||
SPELL_HAVE_PRISMATIC_MOJO = 51084,
|
||||
SPELL_HAVE_RAPTOR_CLAW = 51086,
|
||||
SPELL_HAVE_AMBERSEED = 51088,
|
||||
SPELL_HAVE_SHRUNKEN_DRAGONS_CLAW = 51092,
|
||||
// Spell Fetch Hard
|
||||
SPELL_FETCH_CHILLED_SERPENT_MUCUS = 51093,
|
||||
SPELL_FETCH_CRYSTALLIZED_HOGSNOT = 51095,
|
||||
SPELL_FETCH_CRUSHED_BASILISK_CRYSTALS = 51097,
|
||||
SPELL_FETCH_TROLLBANE = 51100,
|
||||
SPELL_FETCH_FROZEN_SPIDER_ICHOR = 51102,
|
||||
// Spell Have Hard
|
||||
SPELL_HAVE_CHILLED_SERPENT_MUCUS = 51094,
|
||||
SPELL_HAVE_CRYSTALLIZED_HOGSNOT = 51096,
|
||||
SPELL_HAVE_CRUSHED_BASILISK_CRYSTALS = 51098,
|
||||
SPELL_HAVE_TROLLBANE = 51101,
|
||||
SPELL_HAVE_FROZEN_SPIDER_ICHOR = 51104,
|
||||
// Text
|
||||
SAY_EASY_123 = 0,
|
||||
SAY_MEDIUM_4 = 1,
|
||||
SAY_MEDIUM_5 = 2,
|
||||
SAY_HARD_6 = 3,
|
||||
SAY_RUINED = 4,
|
||||
// Text Easy
|
||||
SAY_KNOTROOT = 5,
|
||||
SAY_PICKLED_EAGLE_EGG = 6,
|
||||
SAY_SPECKLED_GUANO = 7,
|
||||
SAY_WITHERED_BATWING = 8,
|
||||
SAY_SEASONED_SLIDER_CIDER = 9,
|
||||
SAY_PULVERIZED_GARGOYLE_TEETH = 10,
|
||||
SAY_MUDDY_MIRE_MAGGOT = 11,
|
||||
SAY_SPIKY_SPIDER_EGG = 12,
|
||||
SAY_HAIRY_HERRING_HEAD = 13,
|
||||
SAY_PUTRID_PIRATE_PERSPIRATION = 14,
|
||||
SAY_ICECROWN_BOTTLED_WATER = 15,
|
||||
// Text Medium
|
||||
SAY_WASPS_WINGS = 16,
|
||||
SAY_PRISMATIC_MOJO = 17,
|
||||
SAY_RAPTOR_CLAW = 18,
|
||||
SAY_AMBERSEED = 19,
|
||||
SAY_SHRUNKEN_DRAGONS_CLAW = 20,
|
||||
// Text Hard
|
||||
SAY_CHILLED_SERPENT_MUCUS = 21,
|
||||
SAY_CRYSTALLIZED_HOGSNOT = 22,
|
||||
SAY_CRUSHED_BASILISK_CRYSTALS = 23,
|
||||
SAY_TROLLBANE = 24,
|
||||
SAY_FROZEN_SPIDER_ICHOR = 25
|
||||
};
|
||||
|
||||
enum FinklesteinEvents
|
||||
{
|
||||
EVENT_TURN_TO_POT = 1,
|
||||
EVENT_TURN_BACK = 2,
|
||||
EVENT_EASY_123 = 3,
|
||||
EVENT_MEDIUM_4 = 4,
|
||||
EVENT_MEDIUM_5 = 5,
|
||||
EVENT_HARD_6 = 6
|
||||
};
|
||||
|
||||
class npc_alchemist_finklestein : public CreatureScript
|
||||
{
|
||||
public:
|
||||
npc_alchemist_finklestein() : CreatureScript("npc_alchemist_finklestein") { }
|
||||
|
||||
struct npc_alchemist_finklesteinAI : public ScriptedAI
|
||||
{
|
||||
npc_alchemist_finklesteinAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
|
||||
void Reset()
|
||||
{
|
||||
_events.ScheduleEvent(EVENT_TURN_TO_POT, urand(15000, 26000));
|
||||
}
|
||||
|
||||
void SetData(uint32 Type, uint32 Data)
|
||||
{
|
||||
if (Type == 1 && Data == 1)
|
||||
switch (_getingredienttry)
|
||||
{
|
||||
case 2:
|
||||
case 3:
|
||||
_events.ScheduleEvent(EVENT_EASY_123, 100);
|
||||
break;
|
||||
case 4:
|
||||
_events.ScheduleEvent(EVENT_MEDIUM_4, 100);
|
||||
break;
|
||||
case 5:
|
||||
_events.ScheduleEvent(EVENT_MEDIUM_5, 100);
|
||||
break;
|
||||
case 6:
|
||||
_events.ScheduleEvent(EVENT_HARD_6, 100);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff)
|
||||
{
|
||||
_events.Update(diff);
|
||||
|
||||
while (uint32 eventId = _events.ExecuteEvent())
|
||||
{
|
||||
switch (eventId)
|
||||
{
|
||||
case EVENT_TURN_TO_POT:
|
||||
me->SetFacingTo(6.230825f);
|
||||
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_USE_STANDING_NO_SHEATHE);
|
||||
_events.ScheduleEvent(EVENT_TURN_BACK, 11000);
|
||||
break;
|
||||
case EVENT_TURN_BACK:
|
||||
me->SetFacingTo(4.886922f);
|
||||
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_NONE);
|
||||
_events.ScheduleEvent(EVENT_TURN_TO_POT, urand(25000, 41000));
|
||||
break;
|
||||
case EVENT_EASY_123:
|
||||
if (Player* player = Unit::GetPlayer(*me, _playerGUID))
|
||||
{
|
||||
Talk(SAY_EASY_123, _playerGUID);
|
||||
DoCast(player, SPELL_RANDOM_INGREDIENT_EASY_AURA);
|
||||
++_getingredienttry;
|
||||
}
|
||||
break;
|
||||
case EVENT_MEDIUM_4:
|
||||
if (Player* player = Unit::GetPlayer(*me, _playerGUID))
|
||||
{
|
||||
Talk(SAY_MEDIUM_4, _playerGUID);
|
||||
DoCast(player, SPELL_RANDOM_INGREDIENT_MEDIUM_AURA);
|
||||
++_getingredienttry;
|
||||
}
|
||||
break;
|
||||
case EVENT_MEDIUM_5:
|
||||
if (Player* player = Unit::GetPlayer(*me, _playerGUID))
|
||||
{
|
||||
Talk(SAY_MEDIUM_5, _playerGUID);
|
||||
DoCast(player, SPELL_RANDOM_INGREDIENT_MEDIUM_AURA);
|
||||
++_getingredienttry;
|
||||
}
|
||||
break;
|
||||
case EVENT_HARD_6:
|
||||
if (Player* player = Unit::GetPlayer(*me, _playerGUID))
|
||||
{
|
||||
Talk(SAY_HARD_6, _playerGUID);
|
||||
DoCast(player, SPELL_RANDOM_INGREDIENT_HARD_AURA);
|
||||
++_getingredienttry;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sGossipSelect(Player* player, uint32 /*sender*/, uint32 /*action*/)
|
||||
{
|
||||
player->CLOSE_GOSSIP_MENU();
|
||||
DoCast(player, SPELL_ALCHEMIST_APPRENTICE_INVISBUFF);
|
||||
_playerGUID = player->GetGUID();
|
||||
_getingredienttry = 1;
|
||||
_events.ScheduleEvent(EVENT_EASY_123, 100);
|
||||
}
|
||||
|
||||
private:
|
||||
EventMap _events;
|
||||
uint64 _playerGUID;
|
||||
uint8 _getingredienttry;
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const
|
||||
{
|
||||
return new npc_alchemist_finklesteinAI(creature);
|
||||
}
|
||||
};
|
||||
|
||||
class go_finklesteins_cauldron : public GameObjectScript
|
||||
{
|
||||
public:
|
||||
go_finklesteins_cauldron() : GameObjectScript("go_finklesteins_cauldron") { }
|
||||
|
||||
bool OnGossipHello(Player* player, GameObject* go)
|
||||
{
|
||||
player->CastSpell(player, SPELL_POT_CHECK);
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
/*#####
|
||||
# spell_random_ingredient_aura
|
||||
#####*/
|
||||
|
||||
class spell_random_ingredient_aura : public SpellScriptLoader
|
||||
{
|
||||
public: spell_random_ingredient_aura() : SpellScriptLoader("spell_random_ingredient_aura") { }
|
||||
|
||||
class spell_random_ingredient_aura_AuraScript : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_random_ingredient_aura_AuraScript);
|
||||
|
||||
bool Validate(SpellInfo const* /*spellEntry*/)
|
||||
{
|
||||
if (!sSpellMgr->GetSpellInfo(SPELL_RANDOM_INGREDIENT_EASY) || !sSpellMgr->GetSpellInfo(SPELL_RANDOM_INGREDIENT_MEDIUM) || !sSpellMgr->GetSpellInfo(SPELL_RANDOM_INGREDIENT_HARD))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
void PeriodicTick(AuraEffect const* aurEff)
|
||||
{
|
||||
switch (GetSpellInfo()->Id)
|
||||
{
|
||||
case SPELL_RANDOM_INGREDIENT_EASY_AURA:
|
||||
GetTarget()->CastSpell(GetTarget(), SPELL_RANDOM_INGREDIENT_EASY);
|
||||
break;
|
||||
case SPELL_RANDOM_INGREDIENT_MEDIUM_AURA:
|
||||
GetTarget()->CastSpell(GetTarget(), SPELL_RANDOM_INGREDIENT_MEDIUM);
|
||||
break;
|
||||
case SPELL_RANDOM_INGREDIENT_HARD_AURA:
|
||||
GetTarget()->CastSpell(GetTarget(), SPELL_RANDOM_INGREDIENT_HARD);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void Register()
|
||||
{
|
||||
OnEffectPeriodic += AuraEffectPeriodicFn(spell_random_ingredient_aura_AuraScript::PeriodicTick, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
AuraScript* GetAuraScript() const
|
||||
{
|
||||
return new spell_random_ingredient_aura_AuraScript();
|
||||
}
|
||||
};
|
||||
|
||||
/*#####
|
||||
# spell_random_ingredient_easy
|
||||
#####*/
|
||||
|
||||
class spell_random_ingredient_easy : public SpellScriptLoader
|
||||
{
|
||||
public: spell_random_ingredient_easy() : SpellScriptLoader("spell_random_ingredient_easy") { }
|
||||
|
||||
class spell_random_ingredient_easy_SpellScript : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_random_ingredient_easy_SpellScript);
|
||||
|
||||
bool Validate(SpellInfo const* /*spellEntry*/)
|
||||
{
|
||||
if (!sSpellMgr->GetSpellInfo(SPELL_FETCH_KNOTROOT) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_PICKLED_EAGLE_EGG) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_SPECKLED_GUANO) ||
|
||||
!sSpellMgr->GetSpellInfo(SPELL_FETCH_WITHERED_BATWING) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_SEASONED_SLIDER_CIDER) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_PULVERIZED_GARGOYLE_TEETH) ||
|
||||
!sSpellMgr->GetSpellInfo(SPELL_FETCH_MUDDY_MIRE_MAGGOT) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_SPIKY_SPIDER_EGG) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_HAIRY_HERRING_HEAD) ||
|
||||
!sSpellMgr->GetSpellInfo(SPELL_FETCH_PUTRID_PIRATE_PERSPIRATION) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_ICECROWN_BOTTLED_WATER))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
void HandleScriptEffect(SpellEffIndex /* effIndex */)
|
||||
{
|
||||
if (Player* player = GetHitPlayer())
|
||||
{
|
||||
uint8 spelltocast = urand(1, 11);
|
||||
|
||||
Creature* finklestein = GetClosestCreatureWithEntry(player, NPC_FINKLESTEIN, 25.0f);
|
||||
|
||||
if (!finklestein)
|
||||
return;
|
||||
|
||||
switch (spelltocast)
|
||||
{
|
||||
case 1:
|
||||
finklestein->CastSpell(player, SPELL_FETCH_KNOTROOT, true, NULL);
|
||||
finklestein->AI()->Talk(SAY_KNOTROOT, player->GetGUID());
|
||||
break;
|
||||
case 2:
|
||||
finklestein->CastSpell(player, SPELL_FETCH_PICKLED_EAGLE_EGG, true, NULL);
|
||||
finklestein->AI()->Talk(SAY_PICKLED_EAGLE_EGG, player->GetGUID());
|
||||
break;
|
||||
case 3:
|
||||
finklestein->CastSpell(player, SPELL_FETCH_SPECKLED_GUANO, true, NULL);
|
||||
finklestein->AI()->Talk(SAY_SPECKLED_GUANO, player->GetGUID());
|
||||
break;
|
||||
case 4:
|
||||
finklestein->CastSpell(player, SPELL_FETCH_WITHERED_BATWING, true, NULL);
|
||||
finklestein->AI()->Talk(SAY_WITHERED_BATWING, player->GetGUID());
|
||||
break;
|
||||
case 5:
|
||||
finklestein->CastSpell(player, SPELL_FETCH_SEASONED_SLIDER_CIDER, true, NULL);
|
||||
finklestein->AI()->Talk(SAY_SEASONED_SLIDER_CIDER, player->GetGUID());
|
||||
break;
|
||||
case 6:
|
||||
finklestein->CastSpell(player, SPELL_FETCH_PULVERIZED_GARGOYLE_TEETH, true, NULL);
|
||||
finklestein->AI()->Talk(SAY_PULVERIZED_GARGOYLE_TEETH, player->GetGUID());
|
||||
break;
|
||||
case 7:
|
||||
finklestein->CastSpell(player, SPELL_FETCH_MUDDY_MIRE_MAGGOT, true, NULL);
|
||||
finklestein->AI()->Talk(SAY_MUDDY_MIRE_MAGGOT, player->GetGUID());
|
||||
break;
|
||||
case 8:
|
||||
finklestein->CastSpell(player, SPELL_FETCH_SPIKY_SPIDER_EGG, true, NULL);
|
||||
finklestein->AI()->Talk(SAY_SPIKY_SPIDER_EGG, player->GetGUID());
|
||||
break;
|
||||
case 9:
|
||||
finklestein->CastSpell(player, SPELL_FETCH_HAIRY_HERRING_HEAD, true, NULL);
|
||||
finklestein->AI()->Talk(SAY_HAIRY_HERRING_HEAD, player->GetGUID());
|
||||
break;
|
||||
case 10:
|
||||
finklestein->CastSpell(player, SPELL_FETCH_PUTRID_PIRATE_PERSPIRATION, true, NULL);
|
||||
finklestein->AI()->Talk(SAY_PUTRID_PIRATE_PERSPIRATION, player->GetGUID());
|
||||
break;
|
||||
case 11:
|
||||
finklestein->CastSpell(player, SPELL_FETCH_ICECROWN_BOTTLED_WATER, true, NULL);
|
||||
finklestein->AI()->Talk(SAY_ICECROWN_BOTTLED_WATER, player->GetGUID());
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Register()
|
||||
{
|
||||
OnEffectHitTarget += SpellEffectFn(spell_random_ingredient_easy_SpellScript::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
|
||||
}
|
||||
};
|
||||
|
||||
SpellScript* GetSpellScript() const
|
||||
{
|
||||
return new spell_random_ingredient_easy_SpellScript();
|
||||
}
|
||||
};
|
||||
|
||||
/*#####
|
||||
# spell_random_ingredient_medium
|
||||
#####*/
|
||||
|
||||
class spell_random_ingredient_medium : public SpellScriptLoader
|
||||
{
|
||||
public: spell_random_ingredient_medium() : SpellScriptLoader("spell_random_ingredient_medium") { }
|
||||
|
||||
class spell_random_ingredient_medium_SpellScript : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_random_ingredient_medium_SpellScript);
|
||||
|
||||
bool Validate(SpellInfo const* /*spellEntry*/)
|
||||
{
|
||||
if (!sSpellMgr->GetSpellInfo(SPELL_FETCH_WASPS_WINGS) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_PRISMATIC_MOJO) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_RAPTOR_CLAW) ||
|
||||
!sSpellMgr->GetSpellInfo(SPELL_FETCH_AMBERSEED) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_SHRUNKEN_DRAGONS_CLAW))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
void HandleScriptEffect(SpellEffIndex /* effIndex */)
|
||||
{
|
||||
if (Player* player = GetHitPlayer())
|
||||
{
|
||||
uint8 spelltocast = urand(1, 5);
|
||||
|
||||
Creature* finklestein = GetClosestCreatureWithEntry(player, NPC_FINKLESTEIN, 25.0f);
|
||||
|
||||
if (!finklestein)
|
||||
return;
|
||||
|
||||
switch (spelltocast)
|
||||
{
|
||||
case 1:
|
||||
finklestein->CastSpell(player, SPELL_FETCH_WASPS_WINGS, true, NULL);
|
||||
finklestein->AI()->Talk(SAY_WASPS_WINGS, player->GetGUID());
|
||||
break;
|
||||
case 2:
|
||||
finklestein->CastSpell(player, SPELL_FETCH_PRISMATIC_MOJO, true, NULL);
|
||||
finklestein->AI()->Talk(SAY_PRISMATIC_MOJO, player->GetGUID());
|
||||
break;
|
||||
case 3:
|
||||
finklestein->CastSpell(player, SPELL_FETCH_RAPTOR_CLAW, true, NULL);
|
||||
finklestein->AI()->Talk(SAY_RAPTOR_CLAW, player->GetGUID());
|
||||
break;
|
||||
case 4:
|
||||
finklestein->CastSpell(player, SPELL_FETCH_AMBERSEED, true, NULL);
|
||||
finklestein->AI()->Talk(SAY_AMBERSEED, player->GetGUID());
|
||||
break;
|
||||
case 5:
|
||||
finklestein->CastSpell(player, SPELL_FETCH_SHRUNKEN_DRAGONS_CLAW, true, NULL);
|
||||
finklestein->AI()->Talk(SAY_SHRUNKEN_DRAGONS_CLAW, player->GetGUID());
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Register()
|
||||
{
|
||||
OnEffectHitTarget += SpellEffectFn(spell_random_ingredient_medium_SpellScript::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
|
||||
}
|
||||
};
|
||||
|
||||
SpellScript* GetSpellScript() const
|
||||
{
|
||||
return new spell_random_ingredient_medium_SpellScript();
|
||||
}
|
||||
};
|
||||
|
||||
/*#####
|
||||
# spell_random_ingredient_hard
|
||||
#####*/
|
||||
|
||||
class spell_random_ingredient_hard : public SpellScriptLoader
|
||||
{
|
||||
public: spell_random_ingredient_hard() : SpellScriptLoader("spell_random_ingredient_hard") { }
|
||||
|
||||
class spell_random_ingredient_hard_SpellScript : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_random_ingredient_hard_SpellScript);
|
||||
|
||||
bool Validate(SpellInfo const* /*spellEntry*/)
|
||||
{
|
||||
if (!sSpellMgr->GetSpellInfo(SPELL_FETCH_CHILLED_SERPENT_MUCUS) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_CRYSTALLIZED_HOGSNOT) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_CRUSHED_BASILISK_CRYSTALS) ||
|
||||
!sSpellMgr->GetSpellInfo(SPELL_FETCH_TROLLBANE) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_FROZEN_SPIDER_ICHOR))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
void HandleScriptEffect(SpellEffIndex /* effIndex */)
|
||||
{
|
||||
if (Player* player = GetHitPlayer())
|
||||
{
|
||||
uint8 spelltocast = urand(1, 5);
|
||||
|
||||
Creature* finklestein = GetClosestCreatureWithEntry(player, NPC_FINKLESTEIN, 25.0f);
|
||||
|
||||
if (!finklestein)
|
||||
return;
|
||||
|
||||
switch (spelltocast)
|
||||
{
|
||||
case 1:
|
||||
finklestein->CastSpell(player, SPELL_FETCH_CHILLED_SERPENT_MUCUS, true, NULL);
|
||||
finklestein->AI()->Talk(SAY_CHILLED_SERPENT_MUCUS, player->GetGUID());
|
||||
break;
|
||||
case 2:
|
||||
finklestein->CastSpell(player, SPELL_FETCH_CRYSTALLIZED_HOGSNOT, true, NULL);
|
||||
finklestein->AI()->Talk(SAY_CRYSTALLIZED_HOGSNOT, player->GetGUID());
|
||||
break;
|
||||
case 3:
|
||||
finklestein->CastSpell(player, SPELL_FETCH_CRUSHED_BASILISK_CRYSTALS, true, NULL);
|
||||
finklestein->AI()->Talk(SAY_CRUSHED_BASILISK_CRYSTALS, player->GetGUID());
|
||||
break;
|
||||
case 4:
|
||||
finklestein->CastSpell(player, SPELL_FETCH_TROLLBANE, true, NULL);
|
||||
finklestein->AI()->Talk(SAY_TROLLBANE, player->GetGUID());
|
||||
break;
|
||||
case 5:
|
||||
finklestein->CastSpell(player, SPELL_FETCH_FROZEN_SPIDER_ICHOR, true, NULL);
|
||||
finklestein->AI()->Talk(SAY_FROZEN_SPIDER_ICHOR, player->GetGUID());
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Register()
|
||||
{
|
||||
OnEffectHitTarget += SpellEffectFn(spell_random_ingredient_hard_SpellScript::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
|
||||
}
|
||||
};
|
||||
|
||||
SpellScript* GetSpellScript() const
|
||||
{
|
||||
return new spell_random_ingredient_hard_SpellScript();
|
||||
}
|
||||
};
|
||||
|
||||
/*#####
|
||||
# spell_pot_check
|
||||
#####*/
|
||||
|
||||
uint32 const FetchSpells[21] [4] =
|
||||
{
|
||||
// { Fetch spell, Have spell, Item, Text }
|
||||
{ 51018, 51047, 38338, 6 }, // Knotroot
|
||||
{ 51055, 51056, 38341, 7 }, // Pickled Eagle Egg
|
||||
{ 51057, 51058, 38337, 8 }, // Speckled Guano
|
||||
{ 51059, 51060, 38339, 9 }, // Withered Batwing
|
||||
{ 51062, 51063, 38381, 10 }, // Seasoned Slider Cider
|
||||
{ 51064, 51065, 38384, 11 }, // Pulverized Gargoyle Teeth
|
||||
{ 51067, 51068, 38386, 12 }, // Muddy Mire Maggot
|
||||
{ 51069, 51070, 38393, 13 }, // Spiky Spider Egg
|
||||
{ 51072, 51075, 38396, 14 }, // Hairy Herring Head
|
||||
{ 51077, 51078, 38397, 15 }, // Putrid Pirate Perspiration
|
||||
{ 51079, 51080, 38398, 16 }, // Icecrown Bottled Water
|
||||
{ 51081, 51082, 38369, 17 }, // Wasp's Wings
|
||||
{ 51083, 51084, 38343, 18 }, // Prismatic Mojo
|
||||
{ 51085, 51086, 38370, 19 }, // Raptor Claw
|
||||
{ 51087, 51088, 38340, 20 }, // Amberseed
|
||||
{ 51091, 51092, 38344, 21 }, // Shrunken Dragon's Claw
|
||||
{ 51093, 51094, 38346, 22 }, // Chilled Serpent Mucus
|
||||
{ 51095, 51096, 38336, 23 }, // Crystallized Hogsnot
|
||||
{ 51097, 51098, 38379, 24 }, // Crushed Basilisk Crystals
|
||||
{ 51100, 51101, 38342, 25 }, // Trollbane
|
||||
{ 51102, 51104, 38345, 26 } // Frozen Spider Ichor
|
||||
};
|
||||
|
||||
class spell_pot_check : public SpellScriptLoader
|
||||
{
|
||||
public: spell_pot_check() : SpellScriptLoader("spell_pot_check") { }
|
||||
|
||||
class spell_pot_check_SpellScript : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_pot_check_SpellScript);
|
||||
|
||||
bool Validate(SpellInfo const* /*spellEntry*/)
|
||||
{
|
||||
if (!sSpellMgr->GetSpellInfo(SPELL_FETCH_KNOTROOT) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_PICKLED_EAGLE_EGG) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_SPECKLED_GUANO) ||
|
||||
!sSpellMgr->GetSpellInfo(SPELL_FETCH_WITHERED_BATWING) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_SEASONED_SLIDER_CIDER) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_PULVERIZED_GARGOYLE_TEETH) ||
|
||||
!sSpellMgr->GetSpellInfo(SPELL_FETCH_MUDDY_MIRE_MAGGOT) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_SPIKY_SPIDER_EGG) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_HAIRY_HERRING_HEAD) ||
|
||||
!sSpellMgr->GetSpellInfo(SPELL_FETCH_PUTRID_PIRATE_PERSPIRATION) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_ICECROWN_BOTTLED_WATER) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_WASPS_WINGS) ||
|
||||
!sSpellMgr->GetSpellInfo(SPELL_FETCH_PRISMATIC_MOJO) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_RAPTOR_CLAW) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_AMBERSEED) ||
|
||||
!sSpellMgr->GetSpellInfo(SPELL_FETCH_SHRUNKEN_DRAGONS_CLAW) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_CHILLED_SERPENT_MUCUS) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_CRYSTALLIZED_HOGSNOT) ||
|
||||
!sSpellMgr->GetSpellInfo(SPELL_FETCH_CRUSHED_BASILISK_CRYSTALS) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_TROLLBANE) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_FROZEN_SPIDER_ICHOR) ||
|
||||
!sSpellMgr->GetSpellInfo(SPELL_HAVE_KNOTROOT) || !sSpellMgr->GetSpellInfo(SPELL_HAVE_PICKLED_EAGLE_EGG) || !sSpellMgr->GetSpellInfo(SPELL_HAVE_SPECKLED_GUANO) ||
|
||||
!sSpellMgr->GetSpellInfo(SPELL_HAVE_WITHERED_BATWING) || !sSpellMgr->GetSpellInfo(SPELL_HAVE_SEASONED_SLIDER_CIDER) || !sSpellMgr->GetSpellInfo(SPELL_HAVE_PULVERIZED_GARGOYLE_TEETH) ||
|
||||
!sSpellMgr->GetSpellInfo(SPELL_HAVE_MUDDY_MIRE_MAGGOT) || !sSpellMgr->GetSpellInfo(SPELL_HAVE_SPIKY_SPIDER_EGG) || !sSpellMgr->GetSpellInfo(SPELL_HAVE_HAIRY_HERRING_HEAD) ||
|
||||
!sSpellMgr->GetSpellInfo(SPELL_HAVE_PUTRID_PIRATE_PERSPIRATION) || !sSpellMgr->GetSpellInfo(SPELL_HAVE_ICECROWN_BOTTLED_WATER) || !sSpellMgr->GetSpellInfo(SPELL_HAVE_WASPS_WINGS) ||
|
||||
!sSpellMgr->GetSpellInfo(SPELL_HAVE_PRISMATIC_MOJO) || !sSpellMgr->GetSpellInfo(SPELL_HAVE_RAPTOR_CLAW) || !sSpellMgr->GetSpellInfo(SPELL_HAVE_AMBERSEED) ||
|
||||
!sSpellMgr->GetSpellInfo(SPELL_HAVE_SHRUNKEN_DRAGONS_CLAW) || !sSpellMgr->GetSpellInfo(SPELL_HAVE_CHILLED_SERPENT_MUCUS) || !sSpellMgr->GetSpellInfo(SPELL_HAVE_CRYSTALLIZED_HOGSNOT) ||
|
||||
!sSpellMgr->GetSpellInfo(SPELL_HAVE_CRUSHED_BASILISK_CRYSTALS) || !sSpellMgr->GetSpellInfo(SPELL_HAVE_TROLLBANE) || !sSpellMgr->GetSpellInfo(SPELL_HAVE_FROZEN_SPIDER_ICHOR))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
void HandleScriptEffect(SpellEffIndex /* effIndex */)
|
||||
{
|
||||
if (Player* player = GetHitPlayer())
|
||||
{
|
||||
for (uint8 i = 0; i < 21; ++i)
|
||||
{
|
||||
if(player->HasAura(FetchSpells[i] [0]))
|
||||
{
|
||||
player->CastSpell(player, SPELL_THROW_INGREDIENT);
|
||||
player->RemoveAura(FetchSpells[i] [0]);
|
||||
if(player->HasAura(FetchSpells[i] [1]))
|
||||
{
|
||||
player->RemoveAura(FetchSpells[i] [1]);
|
||||
player->DestroyItemCount(FetchSpells[i] [2], 1, true);
|
||||
if (i < 15)
|
||||
{
|
||||
if (Creature* finklestein = GetClosestCreatureWithEntry(player, NPC_FINKLESTEIN, 25.0f))
|
||||
finklestein->AI()->SetData(1, 1);
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (player->GetQuestStatus(QUEST_THE_ALCHEMIST_APPRENTICE_DAILY) == QUEST_STATUS_INCOMPLETE)
|
||||
{
|
||||
player->RemoveAura(SPELL_ALCHEMIST_APPRENTICE_INVISBUFF);
|
||||
player->CastSpell(player, SPELL_KILL_CREDIT);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
RemoveItems(player);
|
||||
player->RemoveAura(SPELL_ALCHEMIST_APPRENTICE_INVISBUFF);
|
||||
if (Creature* finklestein = GetClosestCreatureWithEntry(player, NPC_FINKLESTEIN, 25.0f))
|
||||
finklestein->AI()->Talk(SAY_RUINED, player->GetGUID());
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void RemoveItems(Player* player)
|
||||
{
|
||||
for (uint8 i = 0; i < 21; ++i)
|
||||
if (player->HasItemCount(FetchSpells[i] [2], 1, true))
|
||||
player->DestroyItemCount(FetchSpells[i] [2], 1, true);
|
||||
}
|
||||
|
||||
void Register()
|
||||
{
|
||||
OnEffectHitTarget += SpellEffectFn(spell_pot_check_SpellScript::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
|
||||
}
|
||||
};
|
||||
|
||||
SpellScript* GetSpellScript() const
|
||||
{
|
||||
return new spell_pot_check_SpellScript();
|
||||
}
|
||||
};
|
||||
|
||||
/*#####
|
||||
# spell_fetch_ingredient_aura
|
||||
#####*/
|
||||
|
||||
class spell_fetch_ingredient_aura : public SpellScriptLoader
|
||||
{
|
||||
public: spell_fetch_ingredient_aura() : SpellScriptLoader("spell_fetch_ingredient_aura") { }
|
||||
|
||||
class spell_fetch_ingredient_aura_AuraScript : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_fetch_ingredient_aura_AuraScript);
|
||||
|
||||
void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
|
||||
{
|
||||
if (GetTargetApplication()->GetRemoveMode() == AURA_REMOVE_BY_EXPIRE)
|
||||
if (Unit* target = GetTarget())
|
||||
if (GetTargetApplication()->GetRemoveMode() == AURA_REMOVE_BY_EXPIRE)
|
||||
if (target->HasAura(SPELL_ALCHEMIST_APPRENTICE_INVISBUFF))
|
||||
if (Creature* finklestein = GetClosestCreatureWithEntry(target, NPC_FINKLESTEIN, 100.0f))
|
||||
{
|
||||
target->RemoveAura(SPELL_ALCHEMIST_APPRENTICE_INVISBUFF);
|
||||
finklestein->AI()->Talk(SAY_RUINED, target->GetGUID());
|
||||
}
|
||||
}
|
||||
|
||||
void Register()
|
||||
{
|
||||
OnEffectRemove += AuraEffectRemoveFn(spell_fetch_ingredient_aura_AuraScript::OnRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
|
||||
}
|
||||
};
|
||||
|
||||
AuraScript* GetAuraScript() const
|
||||
{
|
||||
return new spell_fetch_ingredient_aura_AuraScript();
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_zuldrak()
|
||||
{
|
||||
new npc_drakuru_shackles;
|
||||
@@ -1428,4 +2111,12 @@ void AddSC_zuldrak()
|
||||
new npc_elemental_lord;
|
||||
new npc_fiend_elemental;
|
||||
new go_scourge_enclosure;
|
||||
new npc_alchemist_finklestein;
|
||||
new go_finklesteins_cauldron;
|
||||
new spell_random_ingredient_aura;
|
||||
new spell_random_ingredient_easy;
|
||||
new spell_random_ingredient_medium;
|
||||
new spell_random_ingredient_hard;
|
||||
new spell_pot_check;
|
||||
new spell_fetch_ingredient_aura;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user