aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/2012_10_20_00_world_childrens_week.sql573
-rwxr-xr-xsrc/server/game/Scripting/ScriptLoader.cpp2
-rw-r--r--src/server/scripts/CMakeLists.txt1
-rw-r--r--src/server/scripts/Events/CMakeLists.txt17
-rw-r--r--src/server/scripts/Events/childrens_week.cpp1049
-rw-r--r--src/server/scripts/Events/event.cpp25
-rw-r--r--src/server/scripts/Northrend/sholazar_basin.cpp109
-rw-r--r--src/server/scripts/World/areatrigger_scripts.cpp81
8 files changed, 1772 insertions, 85 deletions
diff --git a/sql/updates/world/2012_10_20_00_world_childrens_week.sql b/sql/updates/world/2012_10_20_00_world_childrens_week.sql
new file mode 100644
index 00000000000..55c874036c5
--- /dev/null
+++ b/sql/updates/world/2012_10_20_00_world_childrens_week.sql
@@ -0,0 +1,573 @@
+-- Orphan Matron Aria
+UPDATE `creature_template` SET `AIName`='SmartAI',`ScriptName`='' WHERE `entry`=34365;
+
+DELETE FROM `smart_scripts` WHERE `entryorguid`=34365 AND `source_type`=0;
+INSERT INTO `smart_scripts`(`entryorguid`,`id`,`link`,`event_type`,`event_param1`,`event_param2`,`action_type`,`action_param1`,`target_type`,`comment`) VALUES
+(34365,1,4,62,10502,1,33,34365,7,'Orphan Matron Aria - On gossip select - Give quest credit'),
+(34365,2,4,62,10502,2,11,65359,7,'Orphan Matron Aria - On gossip select - Create oracle orphan whistle'),
+(34365,3,4,62,10502,3,11,65360,7,'Orphan Matron Aria - On gossip select - Create wolvar orphan whistle'),
+(34365,4,0,61,0,0,72,0,7,'Orphan Matron Aria - On gossip select - Close gossip');
+
+DELETE FROM `gossip_menu_option` WHERE `menu_id`=10502;
+INSERT INTO `gossip_menu_option`(`menu_id`,`id`,`option_icon`,`option_text`,`option_id`,`npc_option_npcflag`) VALUES
+(10502,1,0,'Tell me about the orphans.',1,1),
+(10502,2,0,'I need a new Oracle Orphan Whistle.',1,1),
+(10502,3,0,'I need a new Wolvar Orphan Whistle.',1,1);
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=10502;
+INSERT INTO `conditions`(`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`NegativeCondition`,`Comment`) VALUES
+(15,10502,1,1,12,10,0,0,'Childrens Week must be active'),
+(15,10502,1,1,1,58818,0,0,'Needs aura 58818'),
+(15,10502,1,1,9,13927,0,0,'Quest 13927 must be active'),
+(15,10502,1,2,12,10,0,0,'Childrens Week must be active'),
+(15,10502,1,2,1,58818,0,0,'Needs aura 58818'),
+(15,10502,1,2,9,13926,0,0,'Quest 13926 must be active'),
+(15,10502,2,0,12,10,0,0,'Childrens Week must be active'),
+(15,10502,2,0,8,13926,0,0,'Quest 13926 must be rewarded'),
+(15,10502,2,0,2,46397,1,1,'Must not have item 46397'),
+(15,10502,3,0,12,10,0,0,'Childrens Week must be active'),
+(15,10502,3,0,8,13927,0,0,'Quest 13926 must be rewarded'),
+(15,10502,3,0,2,46396,1,1,'Must not have item 46397');
+
+-- Orphan Matron Battlewail
+UPDATE `creature_template` SET `AIName`='SmartAI',`ScriptName`='' WHERE `entry`=14451;
+
+DELETE FROM `smart_scripts` WHERE `entryorguid`=14451 AND `source_type`=0;
+INSERT INTO `smart_scripts`(`entryorguid`,`id`,`link`,`event_type`,`event_param1`,`event_param2`,`action_type`,`action_param1`,`target_type`,`comment`) VALUES
+(14451,1,2,62,5848,1,11,23125,7,'Orphan Matron Battlewail - On gossip select - Create orc orphan whistle'),
+(14451,2,0,61,0,0,72,0,7,'Orphan Matron Battlewail - On gossip select - Close gossip');
+
+DELETE FROM `gossip_menu_option` WHERE `menu_id`=5848;
+INSERT INTO `gossip_menu_option`(`menu_id`,`id`,`option_icon`,`option_text`,`option_id`,`npc_option_npcflag`) VALUES
+(5848,1,0,'I need a new Orc Orphan Whistle.',1,1);
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=5848;
+INSERT INTO `conditions`(`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`NegativeCondition`,`Comment`) VALUES
+(15,5848,1,0,12,10,0,0,'Childrens Week must be active'),
+(15,5848,1,0,8,172,0,0,'Quest 172 must be rewarded'),
+(15,5848,1,0,2,18597,1,1,'Must not have item 18597');
+
+-- Orphan Matron Mercy
+UPDATE `creature_template` SET `AIName`='SmartAI',`ScriptName`='' WHERE `entry`=22819;
+
+DELETE FROM `smart_scripts` WHERE `entryorguid`=22819 AND `source_type`=0;
+INSERT INTO `smart_scripts`(`entryorguid`,`id`,`link`,`event_type`,`event_param1`,`event_param2`,`action_type`,`action_param1`,`target_type`,`comment`) VALUES
+(22819,1,3,62,8568,1,11,39512,7,'Orphan Matron Mercy - On gossip select - Create blood elf orphan whistle'),
+(22819,2,3,62,8568,2,11,39513,7,'Orphan Matron Mercy - On gossip select - Create draenei orphan whistle'),
+(22819,3,0,61,0,0,72,0,7,'Orphan Matron Mercy - On gossip select - Close gossip');
+
+DELETE FROM `gossip_menu_option` WHERE `menu_id`=8568;
+INSERT INTO `gossip_menu_option`(`menu_id`,`id`,`option_icon`,`option_text`,`option_id`,`npc_option_npcflag`) VALUES
+(8568,1,0,'I need a new Blood Elf Orphan Whistle.',1,1),
+(8568,2,0,'I need a new Draenei Orphan Whistle.',1,1);
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=8568;
+INSERT INTO `conditions`(`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`NegativeCondition`,`Comment`) VALUES
+(15,8568,1,0,12,10,0,0,'Childrens Week must be active'),
+(15,8568,1,0,8,10942,0,0,'Quest 10942 must be rewarded'),
+(15,8568,1,0,2,31880,1,1,'Must not have item 31880'),
+(15,8568,2,0,12,10,0,0,'Childrens Week must be active'),
+(15,8568,2,0,8,10943,0,0,'Quest 10943 must be rewarded'),
+(15,8568,2,0,2,31881,1,1,'Must not have item 31881');
+
+-- Orphan Matron Nightingale
+UPDATE `creature_template` SET `AIName`='SmartAI',`ScriptName`='' WHERE `entry`=14450;
+
+DELETE FROM `smart_scripts` WHERE `entryorguid`=14450 AND `source_type`=0;
+INSERT INTO `smart_scripts`(`entryorguid`,`id`,`link`,`event_type`,`event_param1`,`event_param2`,`action_type`,`action_param1`,`target_type`,`comment`) VALUES
+(14450,1,2,62,5849,1,11,23124,7,'Orphan Matron Nightingale - On gossip select - Create human orphan whistle'),
+(14450,2,0,61,0,0,72,0,7,'Orphan Matron Nightingale - On gossip select - Close gossip');
+
+DELETE FROM `gossip_menu_option` WHERE `menu_id`=5849;
+INSERT INTO `gossip_menu_option`(`menu_id`,`id`,`option_icon`,`option_text`,`option_id`,`npc_option_npcflag`) VALUES
+(5849,1,0,'I need a new Human Orphan Whistle.',1,1);
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=5849;
+INSERT INTO `conditions`(`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`NegativeCondition`,`Comment`) VALUES
+(15,5849,1,0,12,10,0,0,'Childrens Week must be active'),
+(15,5849,1,0,8,1468,0,0,'Quest 1468 must be rewarded'),
+(15,5849,1,0,2,18598,1,1,'Must not have item 18598');
+
+-- Oracle Orphan
+SET @TEXT_ORACLE_ORPHAN_1 = 1;
+SET @TEXT_ORACLE_ORPHAN_2 = 2;
+SET @TEXT_ORACLE_ORPHAN_3 = 3;
+SET @TEXT_ORACLE_ORPHAN_4 = 4;
+SET @TEXT_ORACLE_ORPHAN_5 = 5;
+SET @TEXT_ORACLE_ORPHAN_6 = 6;
+SET @TEXT_ORACLE_ORPHAN_7 = 7;
+SET @TEXT_ORACLE_ORPHAN_8 = 8;
+SET @TEXT_ORACLE_ORPHAN_9 = 9;
+SET @TEXT_ORACLE_ORPHAN_10 = 10;
+SET @TEXT_ORACLE_ORPHAN_11 = 11;
+SET @TEXT_ORACLE_ORPHAN_12 = 12;
+SET @TEXT_ORACLE_ORPHAN_13 = 13;
+SET @TEXT_ORACLE_ORPHAN_14 = 14;
+
+UPDATE `creature_template` SET `AIName`='SmartAI',`ScriptName`='' WHERE `entry`=33533;
+
+DELETE FROM `smart_scripts` WHERE `entryorguid`=33533 AND `source_type`=0;
+INSERT INTO `smart_scripts`(`entryorguid`,`event_type`,`event_param1`,`action_type`,`action_param1`,`target_type`,`comment`) VALUES
+(33533,8,65357,33,36209,7,'Oracle Orphan - On spellhit - Give quest credit');
+
+DELETE FROM `creature_text` WHERE `entry`=33533;
+INSERT INTO `creature_text`(`entry`,`groupid`,`text`,`type`,`emote`) VALUE
+(33533,@TEXT_ORACLE_ORPHAN_1,"Look!",12,0),
+(33533,@TEXT_ORACLE_ORPHAN_2,"We can dance too!",12,0),
+(33533,@TEXT_ORACLE_ORPHAN_3,"We made a new friend!",12,0),
+(33533,@TEXT_ORACLE_ORPHAN_4,"We here! Only, if this is world tree, how come it broke when they tried to put whole world in?",12,0),
+(33533,@TEXT_ORACLE_ORPHAN_5,"Look! Is that us? We think it's us. A bit older, maybe?",12,0),
+(33533,@TEXT_ORACLE_ORPHAN_6,"Looks like we blessed by Great Ones! Shrines give magic, make us high-oracle someday? Maybe?",12,0),
+(33533,@TEXT_ORACLE_ORPHAN_7,"Wow! A real Great One? We don't even think Soo-say has met a real Great One!",12,0),
+(33533,@TEXT_ORACLE_ORPHAN_8,"Um, hello, Mr. Great One. We are honored to meet you.",12,0),
+(33533,@TEXT_ORACLE_ORPHAN_9,"Maybe you're asleep, Mr. Great One? We stand. Must be hard working being Great One, collecting all the shinies we leave for you.",12,0),
+(33533,@TEXT_ORACLE_ORPHAN_10,"We brought you a gift, Great One. Maybe you see it when you wake up. Maybe you remember we came to see you, oki?",12,0),
+(33533,@TEXT_ORACLE_ORPHAN_11,"So that's the queen of the dragons? Hmm... we thought she'd be bigger. Yes, we did.",12,0),
+(33533,@TEXT_ORACLE_ORPHAN_12,"How come she doesn't look like the other dragons? could she turn into a big ol' dragon if she wanted to?",12,0),
+(33533,@TEXT_ORACLE_ORPHAN_13,"Um... Your Majesty, would you turn into a dragon for us?",12,0),
+(33533,@TEXT_ORACLE_ORPHAN_14,"Oki... How about now?",12,0);
+
+DELETE FROM `creature_questrelation` WHERE `id`=33533;
+
+DELETE FROM `game_event_creature_quest` WHERE `id`=33533;
+INSERT INTO `game_event_creature_quest`(`eventEntry`,`id`,`quest`) VALUES
+(10,33533,13929),
+(10,33533,13933),
+(10,33533,13950),
+(10,33533,13954),
+(10,33533,13956),
+(10,33533,13937),
+(10,33533,13959);
+
+DELETE FROM `creature_involvedrelation` WHERE `id`=33533;
+INSERT INTO `creature_involvedrelation`(`id`,`quest`) VALUES
+(33533,13929),
+(33533,13933),
+(33533,13950),
+(33533,13954),
+(33533,13956),
+(33533,13937),
+(33533,13926);
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (19,20) AND `SourceEntry` IN (13954,13956,13937);
+INSERT INTO `conditions`(`SourceTypeOrReferenceId`,`SourceEntry`,`ConditionTypeOrReference`,`ConditionValue1`,`comment`) VALUES
+(19,13954,8,13929,'Accept quest 13954 - Quest 13929 needs to be rewarded'),
+(19,13954,8,13933,'Accept quest 13954 - Quest 13933 needs to be rewarded'),
+(19,13954,8,13950,'Accept quest 13954 - Quest 13950 needs to be rewarded'),
+(19,13956,8,13929,'Accept quest 13956 - Quest 13929 needs to be rewarded'),
+(19,13956,8,13933,'Accept quest 13956 - Quest 13933 needs to be rewarded'),
+(19,13956,8,13950,'Accept quest 13956 - Quest 13950 needs to be rewarded'),
+(19,13937,8,13956,'Accept quest 13937 - Quest 13956 needs to be rewarded'),
+(20,13954,8,13929,'Show quest mark 13954 - Quest 13929 needs to be rewarded'),
+(20,13954,8,13933,'Show quest mark 13954 - Quest 13933 needs to be rewarded'),
+(20,13954,8,13950,'Show quest mark 13954 - Quest 13950 needs to be rewarded'),
+(20,13956,8,13929,'Show quest mark 13956 - Quest 13929 needs to be rewarded'),
+(20,13956,8,13933,'Show quest mark 13956 - Quest 13933 needs to be rewarded'),
+(20,13956,8,13950,'Show quest mark 13956 - Quest 13950 needs to be rewarded'),
+(20,13937,8,13956,'Show quest mark 13937 - Quest 13956 needs to be rewarded');
+
+-- Wolvar Orphan
+SET @TEXT_WOLVAR_ORPHAN_1 = 1;
+SET @TEXT_WOLVAR_ORPHAN_2 = 2;
+SET @TEXT_WOLVAR_ORPHAN_3 = 3;
+SET @TEXT_WOLVAR_ORPHAN_4 = 4;
+SET @TEXT_WOLVAR_ORPHAN_5 = 5;
+SET @TEXT_WOLVAR_ORPHAN_6 = 6;
+SET @TEXT_WOLVAR_ORPHAN_7 = 7;
+SET @TEXT_WOLVAR_ORPHAN_8 = 8;
+SET @TEXT_WOLVAR_ORPHAN_9 = 9;
+SET @TEXT_WOLVAR_ORPHAN_10 = 10;
+SET @TEXT_WOLVAR_ORPHAN_11 = 11;
+SET @TEXT_WOLVAR_ORPHAN_12 = 12;
+SET @TEXT_WOLVAR_ORPHAN_13 = 13;
+
+UPDATE `creature_template` SET `AIName`='SmartAI',`ScriptName`='' WHERE `entry`=33532;
+
+DELETE FROM `smart_scripts` WHERE `entryorguid`=33532 AND `source_type`=0;
+INSERT INTO `smart_scripts`(`entryorguid`,`event_type`,`event_param1`,`action_type`,`action_param1`,`target_type`,`comment`) VALUES
+(33532,8,65357,33,36209,7,'Wolvar Orphan - On spellhit - Give quest credit');
+
+DELETE FROM `creature_text` WHERE `entry`=33532;
+INSERT INTO `creature_text`(`entry`,`groupid`,`text`,`type`,`emote`) VALUE
+(33532,@TEXT_WOLVAR_ORPHAN_1,"Look!",12,0),
+(33532,@TEXT_WOLVAR_ORPHAN_2,"Got you back!",12,0),
+(33532,@TEXT_WOLVAR_ORPHAN_3,"Good snowball fight!",12,0),
+(33532,@TEXT_WOLVAR_ORPHAN_4,"Look! That must be Kekek as a mighty warrior! See? What Kekek tell you?",12,0),
+(33532,@TEXT_WOLVAR_ORPHAN_5,"Hmm... that Kekek very old. Must be elder, leader of Frenzyheart. This good. Kekek have good future as warrior and leader. Kekek very happy you bring him here. Orphan-lady never do that for Kekek.",12,0),
+(33532,@TEXT_WOLVAR_ORPHAN_6,"Wow. At last, Kekek get to meet Hemet Nesingwary!",12,0),
+(33532,@TEXT_WOLVAR_ORPHAN_7,"Even Frenzyheart know all about you after you come to Sholazar. Maybe you teach Kekek your tricks?",12,0),
+(33532,@TEXT_WOLVAR_ORPHAN_8,"Not sure how reading helps. Kekek can't read anyway, but if Hemet Nesingwary say, Kekek try.",12,0),
+(33532,@TEXT_WOLVAR_ORPHAN_9,"Maybe give up and throw book at animals, but try.",12,0),
+(33532,@TEXT_WOLVAR_ORPHAN_10,"You think maybe one day, Kekek lead Frenzyheart home, like bear-men fight to get tree-city back? Kekek want own home, not city with purple men, not jungle with big-tongues.",12,0),
+(33532,@TEXT_WOLVAR_ORPHAN_11,"Kekek thought we go see dragon queen. This just some elf-lady with funny horns.",12,0),
+(33532,@TEXT_WOLVAR_ORPHAN_12,"But why? Dragons big and powerful. Elf-lady weak. Kekek want to see dragon queen's real form.",12,0),
+(33532,@TEXT_WOLVAR_ORPHAN_13,"Oh! Now Kekek understand. Not want to be crushed by big dragon-lady. Maybe come back sometime when not so crowded. Nice to meet you, dragon-lady.",12,0);
+
+DELETE FROM `game_event_creature_quest` WHERE `id`=33532;
+INSERT INTO `game_event_creature_quest`(`eventEntry`,`id`,`quest`) VALUES
+(10,33532,13938),
+(10,33532,13960),
+(10,33532,13930),
+(10,33532,13951),
+(10,33532,13934),
+(10,33532,13955),
+(10,33532,13957);
+
+DELETE FROM `creature_involvedrelation` WHERE `id`=33532;
+INSERT INTO `creature_involvedrelation`(`id`,`quest`) VALUES
+(33532,13938),
+(33532,13930),
+(33532,13927),
+(33532,13951),
+(33532,13934),
+(33532,13955),
+(33532,13957);
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (19,20) AND `SourceEntry` IN (13955,13957,13938);
+INSERT INTO `conditions`(`SourceTypeOrReferenceId`,`SourceEntry`,`ConditionTypeOrReference`,`ConditionValue1`,`comment`) VALUES
+(19,13955,8,13930,'Accept quest 13955 - Quest 13930 needs to be rewarded'),
+(19,13955,8,13934,'Accept quest 13955 - Quest 13934 needs to be rewarded'),
+(19,13955,8,13951,'Accept quest 13955 - Quest 13951 needs to be rewarded'),
+(19,13957,8,13930,'Accept quest 13957 - Quest 13930 needs to be rewarded'),
+(19,13957,8,13934,'Accept quest 13957 - Quest 13934 needs to be rewarded'),
+(19,13957,8,13951,'Accept quest 13957 - Quest 13951 needs to be rewarded'),
+(19,13938,8,13957,'Accept quest 13938 - Quest 13957 needs to be rewarded'),
+(20,13955,8,13930,'Show quest mark 13955 - Quest 13930 needs to be rewarded'),
+(20,13955,8,13934,'Show quest mark 13955 - Quest 13934 needs to be rewarded'),
+(20,13955,8,13951,'Show quest mark 13955 - Quest 13951 needs to be rewarded'),
+(20,13957,8,13930,'Show quest mark 13957 - Quest 13930 needs to be rewarded'),
+(20,13957,8,13934,'Show quest mark 13957 - Quest 13934 needs to be rewarded'),
+(20,13957,8,13951,'Show quest mark 13957 - Quest 13951 needs to be rewarded'),
+(20,13938,8,13957,'Show quest mark 13938 - Quest 13957 needs to be rewarded');
+
+-- Blood Elf Orphan
+UPDATE `quest_template` SET `SpecialFlags`=`SpecialFlags`|2 WHERE `Id` IN (10945,10953,10951,10963);
+
+DELETE FROM `game_event_creature_quest` WHERE `id`=22817;
+INSERT INTO `game_event_creature_quest`(`eventEntry`,`id`,`quest`) VALUES
+(10,22817,10945),
+(10,22817,10953),
+(10,22817,10951),
+(10,22817,10963),
+(10,22817,11975),
+(10,22817,10967);
+
+DELETE FROM `creature_involvedrelation` WHERE `id`=22817;
+INSERT INTO `creature_involvedrelation`(`id`,`quest`) VALUES
+(22817,10942),
+(22817,10951),
+(22817,11975),
+(22817,10963);
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (19,20) AND `SourceEntry` IN (11975,10963,10967);
+INSERT INTO `conditions`(`SourceTypeOrReferenceId`,`SourceEntry`,`ConditionTypeOrReference`,`ConditionValue1`,`comment`) VALUES
+(19,11975,8,10945,'Accept quest 11975 - Quest 10945 needs to be rewarded'),
+(19,11975,8,10953,'Accept quest 11975 - Quest 10953 needs to be rewarded'),
+(19,11975,8,10951,'Accept quest 11975 - Quest 10951 needs to be rewarded'),
+(19,10963,8,10945,'Accept quest 10963 - Quest 10945 needs to be rewarded'),
+(19,10963,8,10953,'Accept quest 10963 - Quest 10953 needs to be rewarded'),
+(19,10963,8,10951,'Accept quest 10963 - Quest 10951 needs to be rewarded'),
+(19,10967,8,10963,'Accept quest 10967 - Quest 10963 needs to be rewarded'),
+(20,11975,8,10945,'Show quest mark 11975 - Quest 10945 needs to be rewarded'),
+(20,11975,8,10953,'Show quest mark 11975 - Quest 10953 needs to be rewarded'),
+(20,11975,8,10951,'Show quest mark 11975 - Quest 10951 needs to be rewarded'),
+(20,10963,8,10945,'Show quest mark 10963 - Quest 10945 needs to be rewarded'),
+(20,10963,8,10953,'Show quest mark 10963 - Quest 10953 needs to be rewarded'),
+(20,10963,8,10951,'Show quest mark 10963 - Quest 10951 needs to be rewarded'),
+(20,10967,8,10963,'Show quest mark 10967 - Quest 10963 needs to be rewarded');
+
+-- Draenei Orphan
+UPDATE `quest_template` SET `SpecialFlags`=`SpecialFlags`|2 WHERE `Id` IN (10956,10968,10950,10952,10954,10962);
+
+DELETE FROM `game_event_creature_quest` WHERE `id`=22818;
+INSERT INTO `game_event_creature_quest`(`eventEntry`,`id`,`quest`) VALUES
+(10,22818,10952),
+(10,22818,10950),
+(10,22818,10966),
+(10,22818,10954),
+(10,22818,10956),
+(10,22818,10962);
+
+DELETE FROM `creature_involvedrelation` WHERE `id`=22818;
+INSERT INTO `creature_involvedrelation`(`id`,`quest`) VALUES
+(22818,10950),
+(22818,10952),
+(22818,10943),
+(22818,10962);
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (19,20) AND `SourceEntry` IN (10956,10962,10966);
+INSERT INTO `conditions`(`SourceTypeOrReferenceId`,`SourceEntry`,`ConditionTypeOrReference`,`ConditionValue1`,`comment`) VALUES
+(19,10956,8,10950,'Accept quest 10956 - Quest 10950 needs to be rewarded'),
+(19,10956,8,10954,'Accept quest 10956 - Quest 10954 needs to be rewarded'),
+(19,10956,8,10952,'Accept quest 10956 - Quest 10952 needs to be rewarded'),
+(19,10962,8,10950,'Accept quest 10962 - Quest 10950 needs to be rewarded'),
+(19,10962,8,10954,'Accept quest 10962 - Quest 10954 needs to be rewarded'),
+(19,10962,8,10952,'Accept quest 10962 - Quest 10952 needs to be rewarded'),
+(19,10966,8,10962,'Accept quest 10966 - Quest 10962 needs to be rewarded'),
+(20,10956,8,10950,'Show quest mark 10956 - Quest 10950 needs to be rewarded'),
+(20,10956,8,10954,'Show quest mark 10956 - Quest 10954 needs to be rewarded'),
+(20,10956,8,10952,'Show quest mark 10956 - Quest 10952 needs to be rewarded'),
+(20,10962,8,10950,'Show quest mark 10962 - Quest 10950 needs to be rewarded'),
+(20,10962,8,10954,'Show quest mark 10962 - Quest 10954 needs to be rewarded'),
+(20,10962,8,10952,'Show quest mark 10962 - Quest 10952 needs to be rewarded'),
+(20,10966,8,10962,'Show quest mark 10966 - Quest 10962 needs to be rewarded');
+
+-- Human Orphan
+DELETE FROM `creature_questrelation` WHERE `id`=14305;
+
+DELETE FROM `game_event_creature_quest` WHERE `id`=14305;
+INSERT INTO `game_event_creature_quest`(`eventEntry`,`id`,`quest`) VALUES
+(10,14305,171),
+(10,14305,558),
+(10,14305,1687),
+(10,14305,1479),
+(10,14305,1558),
+(10,14305,4822);
+
+DELETE FROM `creature_involvedrelation` WHERE `id`=14305;
+INSERT INTO `creature_involvedrelation`(`id`,`quest`) VALUES
+(14305,1468),
+(14305,558),
+(14305,1687),
+(14305,1479),
+(14305,1558),
+(14305,4822);
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (19,20) AND `SourceEntry` IN (558,4822,171);
+INSERT INTO `conditions`(`SourceTypeOrReferenceId`,`SourceEntry`,`ConditionTypeOrReference`,`ConditionValue1`,`comment`) VALUES
+(19,558,8,1687,'Accept quest 558 - Quest 1687 needs to be rewarded'),
+(19,558,8,1558,'Accept quest 558 - Quest 1558 needs to be rewarded'),
+(19,558,8,1479,'Accept quest 558 - Quest 1479 needs to be rewarded'),
+(19,558,16,1101,'Accept quest 558 - Needs to be in race mask 1101'),
+(19,4822,8,1687,'Accept quest 4822 - Quest 1687 needs to be rewarded'),
+(19,4822,8,1558,'Accept quest 4822 - Quest 1558 needs to be rewarded'),
+(19,4822,8,1479,'Accept quest 4822 - Quest 1479 needs to be rewarded'),
+(19,171,8,4822,'Accept quest 171 - Quest 4822 needs to be rewarded'),
+(20,558,8,1687,'Show quest mark 558 - Quest 1687 needs to be rewarded'),
+(20,558,8,1558,'Show quest mark 558 - Quest 1558 needs to be rewarded'),
+(20,558,8,1479,'Show quest mark 558 - Quest 1479 needs to be rewarded'),
+(20,558,16,1101,'Show quest mark 558 - Needs to be in race mask 1101'),
+(20,4822,8,1687,'Show quest mark 4822 - Quest 1687 needs to be rewarded'),
+(20,4822,8,1558,'Show quest mark 4822 - Quest 1558 needs to be rewarded'),
+(20,4822,8,1479,'Show quest mark 4822 - Quest 1479 needs to be rewarded'),
+(20,171,8,4822,'Show quest mark 171 - Quest 4822 needs to be rewarded');
+
+-- Orcish Orphan
+DELETE FROM `creature_questrelation` WHERE `id`=14444;
+
+DELETE FROM `game_event_creature_quest` WHERE `id`=14444;
+INSERT INTO `game_event_creature_quest`(`eventEntry`,`id`,`quest`) VALUES
+(10,14444,910),
+(10,14444,911),
+(10,14444,1800),
+(10,14444,925),
+(10,14444,915),
+(10,14444,5502);
+
+DELETE FROM `creature_involvedrelation` WHERE `id`=14444;
+INSERT INTO `creature_involvedrelation`(`id`,`quest`) VALUES
+(14444,925),
+(14444,172),
+(14444,910),
+(14444,911),
+(14444,1800),
+(14444,915);
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (19,20) AND `SourceEntry` IN (915,925,5502);
+INSERT INTO `conditions`(`SourceTypeOrReferenceId`,`SourceEntry`,`ConditionTypeOrReference`,`ConditionValue1`,`comment`) VALUES
+(19,925,8,910,'Accept quest 925 - Quest 910 needs to be rewarded'),
+(19,925,8,911,'Accept quest 925 - Quest 911 needs to be rewarded'),
+(19,925,8,1800,'Accept quest 925 - Quest 1800 needs to be rewarded'),
+(19,915,8,910,'Accept quest 915 - Quest 910 needs to be rewarded'),
+(19,915,8,911,'Accept quest 915 - Quest 911 needs to be rewarded'),
+(19,915,8,1800,'Accept quest 915 - Quest 1800 needs to be rewarded'),
+(19,5502,8,925,'Accept quest 5502 - Quest 925 needs to be rewarded'),
+(20,925,8,910,'Show quest mark 925 - Quest 910 needs to be rewarded'),
+(20,925,8,911,'Show quest mark 925 - Quest 911 needs to be rewarded'),
+(20,925,8,1800,'Show quest mark 925 - Quest 1800 needs to be rewarded'),
+(20,915,8,910,'Show quest mark 915 - Quest 910 needs to be rewarded'),
+(20,915,8,911,'Show quest mark 915 - Quest 911 needs to be rewarded'),
+(20,915,8,1800,'Show quest mark 915 - Quest 1800 needs to be rewarded'),
+(20,5502,8,925,'Show quest mark 5502 - Quest 925 needs to be rewarded');
+
+-- Home of the bear-men
+SET @GUID_GRIZZLEMAW_TRIGGER_1 = 3019842;
+SET @GUID_GRIZZLEMAW_TRIGGER_2 = 3019843;
+SET @GUID_GRIZZLEMAW_TRIGGER_3 = 3106167;
+
+UPDATE `creature_template` SET `AIName`='',`ScriptName`='npc_grizzlemaw_cw_trigger',`flags_extra`=0 WHERE `entry`=36209;
+
+DELETE FROM `creature` WHERE `guid` IN (@GUID_GRIZZLEMAW_TRIGGER_1,@GUID_GRIZZLEMAW_TRIGGER_2,@GUID_GRIZZLEMAW_TRIGGER_3);
+INSERT INTO `creature`(`guid`,`id`,`map`,`position_x`,`position_y`,`position_z`) VALUES
+(@GUID_GRIZZLEMAW_TRIGGER_1,36209,571,4068.82,-3811,223.4),
+(@GUID_GRIZZLEMAW_TRIGGER_2,36209,571,4073.2,-3734.354,222.6634),
+(@GUID_GRIZZLEMAW_TRIGGER_3,36209,571,3923.109,-3763.967,165.362);
+
+-- Elder Kekek
+SET @GUID_KEKEK = 3019845;
+SET @TEXT_ELDER_KEKEK_1 = 1;
+
+UPDATE `creature_template` SET `ScriptName`='npc_elder_kekek' WHERE `entry`=34387;
+
+DELETE FROM `creature` WHERE `guid`=@GUID_KEKEK OR `id`=34387;
+INSERT INTO `creature`(`guid`,`id`,`map`,`position_x`,`position_y`,`position_z`,`orientation`) VALUES
+(@GUID_KEKEK,34387,571,4181.482,-461.453,120.728,1.398097);
+
+DELETE FROM `creature_text` WHERE `entry`=34387;
+INSERT INTO `creature_text`(`entry`,`groupid`,`text`,`type`,`emote`) VALUE
+(34387,@TEXT_ELDER_KEKEK_1,"No worry, Kekek. You grow up, be strong for Frenzyheart. You lead people back to old home, where there no big-tongue babies.",12,0);
+
+-- Alexstraza
+SET @TEXT_ALEXSTRASZA_2 = 2;
+SET @TEXT_KRASUS_8 = 8;
+
+UPDATE `creature_template` SET `AIName`='',`ScriptName`='npc_alexstraza_the_lifebinder' WHERE `entry`=26917;
+
+DELETE FROM `creature_text` WHERE (`entry`=26917 AND `groupid`=@TEXT_ALEXSTRASZA_2) OR (`entry`=27990 AND `groupid`=@TEXT_KRASUS_8);
+INSERT INTO `creature_text`(`entry`,`groupid`,`text`,`type`,`emote`) VALUE
+(26917,@TEXT_ALEXSTRASZA_2,"If I was in my dragon form, there wouldn't be any room for anyone else, little one.",12,0),
+(27990,@TEXT_KRASUS_8,"Rest assured, Kekek, she is the queen of the dragons. We often take the forms of smaller beings when we work with them.",12,0);
+
+-- High Oracle Soo Roo
+SET @GUID_SOO_ROO = 3019824;
+SET @TEXT_SOO_ROO_1 = 1;
+
+UPDATE `creature_template` SET `AIName`='',`ScriptName`='npc_high_oracle_soo_roo' WHERE `entry`=34386;
+
+DELETE FROM `creature_text` WHERE `entry`=34386;
+INSERT INTO `creature_text`(`entry`,`groupid`,`text`,`type`,`emote`) VALUE
+(34386,@TEXT_SOO_ROO_1,"We remember this visit, yes we do. Never forget what you learn from your new friend, little Roo. You got great future ahead.",12,0);
+
+DELETE FROM `creature` WHERE `guid`=@GUID_SOO_ROO OR `id`=34386;
+INSERT INTO `creature`(`guid`,`id`,`map`,`position_x`,`position_y`,`position_z`,`orientation`) VALUES
+(@GUID_SOO_ROO,34386,571,4120.996,-329.486,121.443817,0.299253);
+
+-- Nesingwary
+SET @TEXT_NESINGWARY_1 = 1;
+
+DELETE FROM `creature_text` WHERE `entry`=27986;
+INSERT INTO `creature_text`(`entry`,`groupid`,`text`,`type`,`emote`) VALUE
+(27986,@TEXT_NESINGWARY_1,"Well, lad, you can start by readin' The Green Hills of Stranglethorn. Then, maybe you can join me on one of my safaris. What do you say?",12,0);
+
+-- Snowfall Glade Playmate
+SET @GUID_SNOWFALL_GLADE_PLAYMATE = 3019844;
+SET @TEXT_SNOWFALL_GLADE_PLAYMATE_1 = 1;
+SET @TEXT_SNOWFALL_GLADE_PLAYMATE_2 = 2;
+
+UPDATE `creature_template` SET `AIName`='',`ScriptName`='npc_snowfall_glade_playmate' WHERE `entry`=34490;
+
+DELETE FROM `creature_text` WHERE `entry`=34490;
+INSERT INTO `creature_text`(`entry`,`groupid`,`text`,`type`,`emote`) VALUE
+(34490,@TEXT_SNOWFALL_GLADE_PLAYMATE_1,"Better watch out!",12,0),
+(34490,@TEXT_SNOWFALL_GLADE_PLAYMATE_2,"Got you good!",12,0);
+
+DELETE FROM `creature` WHERE `guid`=@GUID_SNOWFALL_GLADE_PLAYMATE OR `id`=34490;
+INSERT INTO `creature`(`guid`,`id`,`map`,`position_x`,`position_y`,`position_z`,`orientation`) VALUES
+(@GUID_SNOWFALL_GLADE_PLAYMATE,34490,571,3325.193,1026.451,138.1712,2.062184);
+
+-- Winterfin Playmate
+SET @GUID_WINTERFIN_PLAYMATE = 3019823;
+SET @TEXT_WINTERFIN_PLAYMATE_1 = 1;
+SET @TEXT_WINTERFIN_PLAYMATE_2 = 2;
+
+UPDATE `creature_template` SET `AIName`='',`ScriptName`='npc_winterfin_playmate' WHERE `entry`=34489;
+
+DELETE FROM `creature_text` WHERE `entry`=34489;
+INSERT INTO `creature_text`(`entry`,`groupid`,`text`,`type`,`emote`) VALUE
+(34489,@TEXT_WINTERFIN_PLAYMATE_1,"Wanna see what I can do?",12,0),
+(34489,@TEXT_WINTERFIN_PLAYMATE_2,"Now dance together!",12,0);
+
+DELETE FROM `creature` WHERE `guid`=@GUID_WINTERFIN_PLAYMATE OR `id`=34489;
+INSERT INTO `creature`(`guid`,`id`,`map`,`position_x`,`position_y`,`position_z`,`orientation`) VALUES
+(@GUID_WINTERFIN_PLAYMATE,34489,571,4382.502,6066.199,0.724562,3.571894);
+
+-- Biggest Tree Ever
+SET @GUID_BIGGEST_TREE_TRIGGER = 3019825;
+
+UPDATE `creature_template` SET `AIName`='',`ScriptName`='npc_the_biggest_tree',`flags_extra`=0 WHERE `entry`=34381;
+
+DELETE FROM `creature` WHERE `guid`=@GUID_BIGGEST_TREE_TRIGGER OR `id`=34381;
+INSERT INTO `creature`(`guid`,`id`,`map`,`position_x`,`position_y`,`position_z`,`orientation`) VALUES
+(@GUID_BIGGEST_TREE_TRIGGER,34381,571,4022.666,-3777.682,115.443588,4.857019);
+
+-- Meeting A Great One
+UPDATE `creature_template` SET `ScriptName`='npc_the_etymidian' WHERE `entry`=28092;
+
+-- POIs
+DELETE FROM `quest_poi` WHERE `questId` IN (13956,13929,13950,13951,13957,13933,13934,13930,13954,13955);
+INSERT INTO `quest_poi`(`questId`,`objIndex`,`mapid`,`WorldMapAreaId`,`unk4`) VALUES
+(13956,16,1,201,3),
+(13929,16,571,490,3),
+(13950,16,571,486,3),
+(13951,16,571,488,3),
+(13957,16,571,493,3),
+(13933,16,571,488,3),
+(13934,16,571,488,3),
+(13930,16,571,490,3),
+(13954,16,571,488,3),
+(13955,16,571,488,3);
+
+DELETE FROM `quest_poi_points` WHERE `questid` IN (13956,13929,13950,13951,13957,13933,13934,13930,13954,13955);
+INSERT INTO `quest_poi_points`(`questId`,`x`,`y`) VALUES
+(13956,-6193,-1223),
+(13929,4022,-3777),
+(13950,4382,6066),
+(13951,3325,1026),
+(13957,5584,5748),
+(13933,4121,-329),
+(13934,4181,-461),
+(13930,4071,-3773),
+(13954,3530,271),
+(13955,3530,271);
+
+-- NPC areatriggers
+SET @GUID_AERIS_LANDING_TRIGGER = 3019827;
+SET @GUID_SILVERMOON_TRIGGER_01 = 3019838;
+SET @GUID_AUCHINDOUN_TRIGGER = 3019828;
+SET @GUID_SPOREGGAR_TRIGGER = 3019829;
+SET @GUID_THRONE_OF_ELEMENTS_TRIGGER = 3019830;
+
+UPDATE `creature_template` SET `InhabitType`=7,`flags_extra`=0,`unit_flags`=33554432,`ScriptName`='npc_cw_area_trigger',`AIName`='' WHERE `entry` IN (22905,22851,22838,22866,22831,22829,22872,22839);
+
+DELETE FROM `creature` WHERE `guid` IN (@GUID_SILVERMOON_TRIGGER_01,@GUID_AERIS_LANDING_TRIGGER,@GUID_AUCHINDOUN_TRIGGER,@GUID_SPOREGGAR_TRIGGER,@GUID_THRONE_OF_ELEMENTS_TRIGGER);
+INSERT INTO `creature`(`guid`,`id`,`map`,`position_x`,`position_y`,`position_z`,`orientation`) VALUES
+(@GUID_AERIS_LANDING_TRIGGER,22838,530,-2075.759,8559.336,23.027,4.857019),
+(@GUID_SILVERMOON_TRIGGER_01,22866,530,9506.086,-7329.313,14.397272,0),
+(@GUID_AUCHINDOUN_TRIGGER,22831,530,-3320.860,4925.095,-101.1,0),
+(@GUID_SPOREGGAR_TRIGGER,22829,530,203.587,8550.11,22.3256,0),
+(@GUID_THRONE_OF_ELEMENTS_TRIGGER,22839,530,-781.294,6943.52,33.3344,0);
+
+-- Misc
+DELETE `game_event_creature` FROM `game_event_creature` INNER JOIN `creature` ON `creature`.`guid`=`game_event_creature`.`guid`
+WHERE `id` IN (22905,22851,22838,22866,22831,22829,22872,22839,14450,22819,14451,34365,34387,34386,34490,34489,34381,36209);
+INSERT INTO `game_event_creature`(`eventEntry`,`guid`) SELECT 10,`guid` FROM `creature`
+WHERE `id` IN (22905,22851,22838,22866,22831,22829,22872,22839,14450,22819,14451,34365,34387,34386,34490,34489,34381,36209);
+
+DELETE FROM `game_event_npc_vendor` WHERE `eventEntry`=10 AND `item`=46693;
+INSERT INTO `game_event_npc_vendor` (`eventEntry`, `guid`, `item`) VALUES
+(10,99369,46693),
+(10,97984,46693);
+
+UPDATE `item_template` SET `minMoneyLoot`=50000,`maxMoneyLoot`=50000 WHERE `entry`=23022;
+UPDATE `item_template` SET `HolidayId`=201 WHERE `entry` IN (46396,46397,31880,31881,18598,18597);
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=17 AND `SourceEntry` IN (23012,23013,39478,39479,65352,65353);
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ErrorTextId`,`Comment`) VALUES
+(17,0,23012,0,12,10,0,"Orphan Whistle only while children's week"),
+(17,0,23013,0,12,10,0,"Orphan Whistle only while children's week"),
+(17,0,39478,0,12,10,0,"Orphan Whistle only while children's week"),
+(17,0,39479,0,12,10,0,"Orphan Whistle only while children's week"),
+(17,0,65352,0,12,10,0,"Orphan Whistle only while children's week"),
+(17,0,65353,0,12,10,0,"Orphan Whistle only while children's week");
+
+UPDATE `quest_poi_points` SET `x`=1642,`y`=239 WHERE `questId`=1800 AND `id`=0 AND `idx`=0;
+UPDATE `quest_poi_points` SET `x`=-248,`y`=956 WHERE `questId`=10952 AND `id`=0 AND `idx`=0;
+UPDATE `quest_poi_points` SET `x`=-11400.211,`y`=1944.599 WHERE `questId`=1687 AND `id`=0 AND `idx`=0;
+UPDATE `quest_poi_points` SET `x`=-998.183,`y`=-3822.07 WHERE `questId`=910 AND `id`=0 AND `idx`=0;
+UPDATE `quest_poi_points` SET `x`=1260.812,`y`=-2223.765 WHERE `questId`=911 AND `id`=0 AND `idx`=0;
+UPDATE `quest_poi_points` SET `x`=9933,`y`=2500 WHERE `questId`=1479 AND `id`=0 AND `idx`=0;
+UPDATE `quest_poi_points` SET `x`=-2075.759,`y`=8559.336 WHERE `questId`=10954 AND `id`=0 AND `idx`=0;
+UPDATE `quest_poi_points` SET `x`=9506,`y`=-7329 WHERE `questId`=11975 AND `id`=0 AND `idx`=0;
+UPDATE `quest_poi_points` SET `x`=-3320.860,`y`=4925.095 WHERE `questId`=10950 AND `id`=0 AND `idx`=0;
+UPDATE `quest_poi_points` SET `x`=203.587,`y`=8550.11 WHERE `questId`=10945 AND `id`=0 AND `idx`=0;
+UPDATE `quest_poi_points` SET `x`=-781.294,`y`=6943.52 WHERE `questId`=10953 AND `id`=0 AND `idx`=0;
diff --git a/src/server/game/Scripting/ScriptLoader.cpp b/src/server/game/Scripting/ScriptLoader.cpp
index 905443a3766..39b5dcee211 100755
--- a/src/server/game/Scripting/ScriptLoader.cpp
+++ b/src/server/game/Scripting/ScriptLoader.cpp
@@ -90,6 +90,7 @@ void AddSC_npc_innkeeper();
void AddSC_npcs_special();
void AddSC_npc_taxi();
void AddSC_achievement_scripts();
+void AddSC_event_scripts();
//eastern kingdoms
void AddSC_alterac_valley(); //Alterac Valley
@@ -713,6 +714,7 @@ void AddWorldScripts()
AddSC_npc_taxi();
AddSC_achievement_scripts();
AddSC_chat_log();
+ AddSC_event_scripts();
#endif
}
diff --git a/src/server/scripts/CMakeLists.txt b/src/server/scripts/CMakeLists.txt
index f148ae2b3ee..59dfc0f990f 100644
--- a/src/server/scripts/CMakeLists.txt
+++ b/src/server/scripts/CMakeLists.txt
@@ -44,6 +44,7 @@ if(SCRIPTS)
include(Kalimdor/CMakeLists.txt)
include(Outland/CMakeLists.txt)
include(Northrend/CMakeLists.txt)
+ include(Events/CMakeLists.txt)
endif()
message(STATUS "SCRIPT PREPARATION COMPLETE")
diff --git a/src/server/scripts/Events/CMakeLists.txt b/src/server/scripts/Events/CMakeLists.txt
new file mode 100644
index 00000000000..d8be052d645
--- /dev/null
+++ b/src/server/scripts/Events/CMakeLists.txt
@@ -0,0 +1,17 @@
+# Copyright (C) 2008-2011 TrinityCore <http://www.trinitycore.org/>
+#
+# This file is free software; as a special exception the author gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+set(scripts_STAT_SRCS
+ ${scripts_STAT_SRCS}
+ Events/childrens_week.cpp
+ Events/event.cpp
+)
+
+message(" -> Prepared: Events")
diff --git a/src/server/scripts/Events/childrens_week.cpp b/src/server/scripts/Events/childrens_week.cpp
new file mode 100644
index 00000000000..8014434cd98
--- /dev/null
+++ b/src/server/scripts/Events/childrens_week.cpp
@@ -0,0 +1,1049 @@
+/*
+* Copyright (C) 2008-2012 TrinityCore <http://www.trinitycore.org/>
+*
+* This program is free software; you can redistribute it and/or modify it
+* under the terms of the GNU General Public License as published by the
+* Free Software Foundation; either version 2 of the License, or (at your
+* option) any later version.
+*
+* This program is distributed in the hope that it will be useful, but WITHOUT
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+* more details.
+*
+* You should have received a copy of the GNU General Public License along
+* with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "event.h"
+#include "ScriptMgr.h"
+#include "ScriptedCreature.h"
+
+enum Orphans
+{
+ ORPHAN_ORACLE = 33533,
+ ORPHAN_WOLVAR = 33532,
+ ORPHAN_BLOOD_ELF = 22817,
+ ORPHAN_DRAENEI = 22818,
+ ORPHAN_HUMAN = 14305,
+ ORPHAN_ORCISH = 14444,
+};
+
+enum Texts
+{
+ TEXT_ORACLE_ORPHAN_1 = 1,
+ TEXT_ORACLE_ORPHAN_2 = 2,
+ TEXT_ORACLE_ORPHAN_3 = 3,
+ TEXT_ORACLE_ORPHAN_4 = 4,
+ TEXT_ORACLE_ORPHAN_5 = 5,
+ TEXT_ORACLE_ORPHAN_6 = 6,
+ TEXT_ORACLE_ORPHAN_7 = 7,
+ TEXT_ORACLE_ORPHAN_8 = 8,
+ TEXT_ORACLE_ORPHAN_9 = 9,
+ TEXT_ORACLE_ORPHAN_10 = 10,
+ TEXT_ORACLE_ORPHAN_11 = 11,
+ TEXT_ORACLE_ORPHAN_12 = 12,
+ TEXT_ORACLE_ORPHAN_13 = 13,
+ TEXT_ORACLE_ORPHAN_14 = 14,
+
+ TEXT_WOLVAR_ORPHAN_1 = 1,
+ TEXT_WOLVAR_ORPHAN_2 = 2,
+ TEXT_WOLVAR_ORPHAN_3 = 3,
+ TEXT_WOLVAR_ORPHAN_4 = 4,
+ TEXT_WOLVAR_ORPHAN_5 = 5,
+ // 6 - 9 used in Nesingwary script
+ TEXT_WOLVAR_ORPHAN_10 = 10,
+ TEXT_WOLVAR_ORPHAN_11 = 11,
+ TEXT_WOLVAR_ORPHAN_12 = 12,
+ TEXT_WOLVAR_ORPHAN_13 = 13,
+
+ TEXT_WINTERFIN_PLAYMATE_1 = 1,
+ TEXT_WINTERFIN_PLAYMATE_2 = 2,
+
+ TEXT_SNOWFALL_GLADE_PLAYMATE_1 = 1,
+ TEXT_SNOWFALL_GLADE_PLAYMATE_2 = 2,
+
+ TEXT_SOO_ROO_1 = 1,
+ TEXT_ELDER_KEKEK_1 = 1,
+
+ TEXT_ALEXSTRASZA_2 = 2,
+ TEXT_KRASUS_8 = 8,
+};
+
+enum Quests
+{
+ QUEST_PLAYMATE_WOLVAR = 13951,
+ QUEST_PLAYMATE_ORACLE = 13950,
+ QUEST_THE_BIGGEST_TREE_EVER = 13929,
+ QUEST_THE_BRONZE_DRAGONSHRINE_ORACLE = 13933,
+ QUEST_THE_BRONZE_DRAGONSHRINE_WOLVAR = 13934,
+ QUEST_MEETING_A_GREAT_ONE = 13956,
+ QUEST_THE_MIGHTY_HEMET_NESINGWARY = 13957,
+ QUEST_DOWN_AT_THE_DOCKS = 910,
+ QUEST_GATEWAY_TO_THE_FRONTIER = 911,
+ QUEST_BOUGHT_OF_ETERNALS = 1479,
+ QUEST_SPOOKY_LIGHTHOUSE = 1687,
+ QUEST_STONEWROUGHT_DAM = 1558,
+ QUEST_DARK_PORTAL_H = 10951,
+ QUEST_DARK_PORTAL_A = 10952,
+ QUEST_LORDAERON_THRONE_ROOM = 1800,
+ QUEST_AUCHINDOUN_AND_THE_RING = 10950,
+ QUEST_TIME_TO_VISIT_THE_CAVERNS_H = 10963,
+ QUEST_TIME_TO_VISIT_THE_CAVERNS_A = 10962,
+ QUEST_THE_SEAT_OF_THE_NARUU = 10956,
+ QUEST_CALL_ON_THE_FARSEER = 10968,
+ QUEST_JHEEL_IS_AT_AERIS_LANDING = 10954,
+ QUEST_HCHUU_AND_THE_MUSHROOM_PEOPLE = 10945,
+ QUEST_VISIT_THE_THRONE_OF_ELEMENTS = 10953,
+ QUEST_NOW_WHEN_I_GROW_UP = 11975,
+ QUEST_HOME_OF_THE_BEAR_MEN = 13930,
+ QUEST_THE_DRAGON_QUEEN_ORACLE = 13954,
+ QUEST_THE_DRAGON_QUEEN_WOLVAR = 13955,
+};
+
+enum Areatriggers
+{
+ AT_DOWN_AT_THE_DOCKS = 3551,
+ AT_GATEWAY_TO_THE_FRONTIER = 3549,
+ AT_LORDAERON_THRONE_ROOM = 3547,
+ AT_BOUGHT_OF_ETERNALS = 3546,
+ AT_SPOOKY_LIGHTHOUSE = 3552,
+ AT_STONEWROUGHT_DAM = 3548,
+ AT_DARK_PORTAL = 4356,
+
+ NPC_CAVERNS_OF_TIME_CW_TRIGGER = 22872,
+ NPC_EXODAR_01_CW_TRIGGER = 22851,
+ NPC_EXODAR_02_CW_TRIGGER = 22905,
+ NPC_AERIS_LANDING_CW_TRIGGER = 22838,
+ NPC_AUCHINDOUN_CW_TRIGGER = 22831,
+ NPC_SPOREGGAR_CW_TRIGGER = 22829,
+ NPC_THRONE_OF_ELEMENTS_CW_TRIGGER = 22839,
+ NPC_SILVERMOON_01_CW_TRIGGER = 22866,
+ NPC_KRASUS = 27990,
+};
+
+enum Misc
+{
+ SPELL_SNOWBALL = 21343,
+ SPELL_ORPHAN_OUT = 58818,
+
+ DISPLAY_INVISIBLE = 11686,
+};
+
+uint64 getOrphanGUID(Player* player, uint32 orphan)
+{
+ if (Aura* orphanOut = player->GetAura(SPELL_ORPHAN_OUT))
+ if (orphanOut->GetCaster() && orphanOut->GetCaster()->GetEntry() == orphan)
+ return orphanOut->GetCaster()->GetGUID();
+
+ return 0;
+}
+
+/*######
+## npc_winterfin_playmate
+######*/
+class npc_winterfin_playmate : public CreatureScript
+{
+ public:
+ npc_winterfin_playmate() : CreatureScript("npc_winterfin_playmate") {}
+
+ struct npc_winterfin_playmateAI : public ScriptedAI
+ {
+ npc_winterfin_playmateAI(Creature* creature) : ScriptedAI (creature) {}
+
+ void Reset()
+ {
+ timer = 0;
+ phase = 0;
+ playerGUID = 0;
+ orphanGUID = 0;
+ }
+
+ void MoveInLineOfSight(Unit* who)
+ {
+ if (!phase && who && who->GetDistance2d(me) < 10.0f)
+ if (Player* player = who->ToPlayer())
+ if (player->GetQuestStatus(QUEST_PLAYMATE_ORACLE) == QUEST_STATUS_INCOMPLETE)
+ {
+ playerGUID = player->GetGUID();
+ if (orphanGUID = getOrphanGUID(player, ORPHAN_ORACLE))
+ phase = 1;
+ }
+ }
+
+ void UpdateAI(const uint32 diff)
+ {
+ if (!phase)
+ return;
+
+ if (timer <= diff)
+ {
+ Player* player = Player::GetPlayer(*me, playerGUID);
+ Creature* orphan = Creature::GetCreature(*me, orphanGUID);
+
+ if (!orphan || !player)
+ {
+ Reset();
+ return;
+ }
+
+ switch(phase)
+ {
+ case 1:
+ orphan->GetMotionMaster()->MovePoint(0, me->GetPositionX() + cos(me->GetOrientation()) * 5,me->GetPositionY() + sin(me->GetOrientation()) * 5, me->GetPositionZ());
+ orphan->AI()->Talk(TEXT_ORACLE_ORPHAN_1);
+ timer = 3000;
+ break;
+ case 2:
+ orphan->SetFacingToObject(me);
+ Talk(TEXT_WINTERFIN_PLAYMATE_1);
+ me->HandleEmoteCommand(EMOTE_STATE_DANCE);
+ timer = 3000;
+ break;
+ case 3:
+ orphan->AI()->Talk(TEXT_ORACLE_ORPHAN_2);
+ timer = 3000;
+ break;
+ case 4:
+ Talk(TEXT_WINTERFIN_PLAYMATE_2);
+ timer = 5000;
+ break;
+ case 5:
+ orphan->AI()->Talk(TEXT_ORACLE_ORPHAN_3);
+ me->HandleEmoteCommand(EMOTE_STATE_NONE);
+ player->GroupEventHappens(QUEST_PLAYMATE_ORACLE, me);
+ orphan->GetMotionMaster()->MoveFollow(player, PET_FOLLOW_DIST, PET_FOLLOW_ANGLE);
+ Reset();
+ return;
+ }
+ ++phase;
+ }
+ else
+ timer -= diff;
+ }
+
+ private:
+ uint32 timer;
+ int8 phase;
+ uint64 playerGUID;
+ uint64 orphanGUID;
+
+ };
+
+ CreatureAI* GetAI(Creature* creature) const
+ {
+ return new npc_winterfin_playmateAI(creature);
+ }
+};
+
+/*######
+## npc_snowfall_glade_playmate
+######*/
+class npc_snowfall_glade_playmate : public CreatureScript
+{
+ public:
+ npc_snowfall_glade_playmate() : CreatureScript("npc_snowfall_glade_playmate") {}
+
+ struct npc_snowfall_glade_playmateAI : public ScriptedAI
+ {
+ npc_snowfall_glade_playmateAI(Creature* creature) : ScriptedAI (creature) {}
+
+ void Reset()
+ {
+ timer = 0;
+ phase = 0;
+ playerGUID = 0;
+ orphanGUID = 0;
+ }
+
+ void MoveInLineOfSight(Unit* who)
+ {
+ if (!phase && who && who->GetDistance2d(me) < 10.0f)
+ if (Player* player = who->ToPlayer())
+ if (player->GetQuestStatus(QUEST_PLAYMATE_WOLVAR) == QUEST_STATUS_INCOMPLETE)
+ {
+ playerGUID = player->GetGUID();
+ if (orphanGUID = getOrphanGUID(player, ORPHAN_WOLVAR))
+ phase = 1;
+ }
+ }
+
+ void UpdateAI(const uint32 diff)
+ {
+ if (!phase)
+ return;
+
+ if (timer <= diff)
+ {
+ Player* player = Player::GetPlayer(*me, playerGUID);
+ Creature* orphan = Creature::GetCreature(*me, orphanGUID);
+
+ if (!orphan || !player)
+ {
+ Reset();
+ return;
+ }
+
+ switch (phase)
+ {
+ case 1:
+ orphan->GetMotionMaster()->MovePoint(0, me->GetPositionX() + cos(me->GetOrientation()) * 5,me->GetPositionY() + sin(me->GetOrientation()) * 5, me->GetPositionZ());
+ orphan->AI()->Talk(TEXT_WOLVAR_ORPHAN_1);
+ timer = 5000;
+ break;
+ case 2:
+ orphan->SetFacingToObject(me);
+ Talk(TEXT_SNOWFALL_GLADE_PLAYMATE_1);
+ DoCast(orphan, SPELL_SNOWBALL);
+ timer = 5000;
+ break;
+ case 3:
+ Talk(TEXT_SNOWFALL_GLADE_PLAYMATE_2);
+ timer = 5000;
+ break;
+ case 4:
+ orphan->AI()->Talk(TEXT_WOLVAR_ORPHAN_2);
+ orphan->AI()->DoCast(me, SPELL_SNOWBALL);
+ timer = 5000;
+ break;
+ case 5:
+ orphan->AI()->Talk(TEXT_WOLVAR_ORPHAN_3);
+ player->GroupEventHappens(QUEST_PLAYMATE_WOLVAR, me);
+ orphan->GetMotionMaster()->MoveFollow(player, PET_FOLLOW_DIST, PET_FOLLOW_ANGLE);
+ Reset();
+ return;
+ }
+ ++phase;
+ }
+ else
+ timer -= diff;
+ }
+
+ private:
+ uint32 timer;
+ int8 phase;
+ uint64 playerGUID;
+ uint64 orphanGUID;
+ };
+
+ CreatureAI* GetAI(Creature* pCreature) const
+ {
+ return new npc_snowfall_glade_playmateAI(pCreature);
+ }
+};
+
+/*######
+## npc_the_biggest_tree
+######*/
+class npc_the_biggest_tree : public CreatureScript
+{
+ public:
+ npc_the_biggest_tree() : CreatureScript("npc_the_biggest_tree") {}
+
+ struct npc_the_biggest_treeAI : public ScriptedAI
+ {
+ npc_the_biggest_treeAI(Creature* creature) : ScriptedAI (creature)
+ {
+ me->SetDisplayId(DISPLAY_INVISIBLE);
+ }
+
+ void Reset()
+ {
+ timer = 1000;
+ phase = 0;
+ playerGUID = 0;
+ orphanGUID = 0;
+ }
+
+ void MoveInLineOfSight(Unit* who)
+ {
+ if (!phase && who && who->GetDistance2d(me) < 10.0f)
+ if (Player* player = who->ToPlayer())
+ if (player->GetQuestStatus(QUEST_THE_BIGGEST_TREE_EVER) == QUEST_STATUS_INCOMPLETE)
+ {
+ playerGUID = player->GetGUID();
+ if (orphanGUID = getOrphanGUID(player, ORPHAN_ORACLE))
+ phase = 1;
+ }
+ }
+
+ void UpdateAI(const uint32 diff)
+ {
+ if (!phase)
+ return;
+
+ if (timer <= diff)
+ {
+ Player* player = Player::GetPlayer(*me, playerGUID);
+ Creature* orphan = Creature::GetCreature(*me, orphanGUID);
+
+ if (!orphan || !player)
+ {
+ Reset();
+ return;
+ }
+
+ switch (phase)
+ {
+ case 1:
+ orphan->GetMotionMaster()->MovePoint(0, me->GetPositionX() + cos(me->GetOrientation()) * 5, me->GetPositionY() + sin(me->GetOrientation()) * 5, me->GetPositionZ());
+ timer = 2000;
+ break;
+ case 2:
+ orphan->SetFacingToObject(me);
+ orphan->AI()->Talk(TEXT_ORACLE_ORPHAN_4);
+ timer = 5000;
+ break;
+ case 3:
+ player->GroupEventHappens(QUEST_THE_BIGGEST_TREE_EVER, me);
+ orphan->GetMotionMaster()->MoveFollow(player, PET_FOLLOW_DIST, PET_FOLLOW_ANGLE);
+ Reset();
+ return;
+ }
+ ++phase;
+ }
+ else
+ timer -= diff;
+ }
+
+ private:
+ uint32 timer;
+ uint8 phase;
+ uint64 playerGUID;
+ uint64 orphanGUID;
+
+ };
+
+ CreatureAI* GetAI(Creature* creature) const
+ {
+ return new npc_the_biggest_treeAI(creature);
+ }
+};
+
+/*######
+## npc_high_oracle_soo_roo
+######*/
+class npc_high_oracle_soo_roo : public CreatureScript
+{
+ public:
+ npc_high_oracle_soo_roo() : CreatureScript("npc_high_oracle_soo_roo") {}
+
+ struct npc_high_oracle_soo_rooAI : public ScriptedAI
+ {
+ npc_high_oracle_soo_rooAI(Creature* creature) : ScriptedAI (creature) {}
+
+ void Reset()
+ {
+ timer = 0;
+ phase = 0;
+ playerGUID = 0;
+ orphanGUID = 0;
+ }
+
+ void MoveInLineOfSight(Unit* who)
+ {
+ if (!phase && who && who->GetDistance2d(me) < 10.0f)
+ if (Player* player = who->ToPlayer())
+ if (player->GetQuestStatus(QUEST_THE_BRONZE_DRAGONSHRINE_ORACLE) == QUEST_STATUS_INCOMPLETE)
+ {
+ playerGUID = player->GetGUID();
+ if (orphanGUID = getOrphanGUID(player, ORPHAN_ORACLE))
+ phase = 1;
+ }
+ }
+
+ void UpdateAI(const uint32 diff)
+ {
+ if (!phase)
+ return;
+
+ if (timer <= diff)
+ {
+ Player* player = Player::GetPlayer(*me, playerGUID);
+ Creature* orphan = Creature::GetCreature(*me, orphanGUID);
+
+ if (!orphan || !player)
+ {
+ Reset();
+ return;
+ }
+
+ switch (phase)
+ {
+ case 1:
+ orphan->GetMotionMaster()->MovePoint(0, me->GetPositionX() + cos(me->GetOrientation()) * 5, me->GetPositionY() + sin(me->GetOrientation()) * 5, me->GetPositionZ());
+ orphan->AI()->Talk(TEXT_ORACLE_ORPHAN_5);
+ timer = 3000;
+ break;
+ case 2:
+ orphan->SetFacingToObject(me);
+ Talk(TEXT_SOO_ROO_1);
+ timer = 6000;
+ break;
+ case 3:
+ orphan->AI()->Talk(TEXT_ORACLE_ORPHAN_6);
+ player->GroupEventHappens(QUEST_THE_BRONZE_DRAGONSHRINE_ORACLE, me);
+ orphan->GetMotionMaster()->MoveFollow(player, PET_FOLLOW_DIST, PET_FOLLOW_ANGLE);
+ Reset();
+ return;
+ }
+ ++phase;
+ }
+ else
+ timer -= diff;
+ }
+
+ private:
+ uint32 timer;
+ int8 phase;
+ uint64 playerGUID;
+ uint64 orphanGUID;
+
+ };
+
+ CreatureAI* GetAI(Creature* creature) const
+ {
+ return new npc_high_oracle_soo_rooAI(creature);
+ }
+};
+
+/*######
+## npc_elder_kekek
+######*/
+class npc_elder_kekek : public CreatureScript
+{
+ public:
+ npc_elder_kekek() : CreatureScript("npc_elder_kekek") {}
+
+ struct npc_elder_kekekAI : public ScriptedAI
+ {
+ npc_elder_kekekAI(Creature* creature) : ScriptedAI (creature) {}
+
+ void Reset()
+ {
+ timer = 0;
+ phase = 0;
+ playerGUID = 0;
+ orphanGUID = 0;
+ }
+
+ void MoveInLineOfSight(Unit* who)
+ {
+ if (!phase && who && who->GetDistance2d(me) < 10.0f)
+ if (Player* player = who->ToPlayer())
+ if (player->GetQuestStatus(QUEST_THE_BRONZE_DRAGONSHRINE_WOLVAR) == QUEST_STATUS_INCOMPLETE)
+ {
+ playerGUID = player->GetGUID();
+ if (orphanGUID = getOrphanGUID(player, ORPHAN_WOLVAR))
+ phase = 1;
+ }
+ }
+
+ void UpdateAI(const uint32 diff)
+ {
+ if (!phase)
+ return;
+
+ if (timer <= diff)
+ {
+ Player* player = Player::GetPlayer(*me, playerGUID);
+ Creature* orphan = Creature::GetCreature(*me, orphanGUID);
+
+ if (!player || !orphan)
+ {
+ Reset();
+ return;
+ }
+
+ switch (phase)
+ {
+ case 1:
+ orphan->GetMotionMaster()->MovePoint(0, me->GetPositionX() + cos(me->GetOrientation()) * 5, me->GetPositionY() + sin(me->GetOrientation()) * 5, me->GetPositionZ());
+ orphan->AI()->Talk(TEXT_WOLVAR_ORPHAN_4);
+ timer = 3000;
+ break;
+ case 2:
+ Talk(TEXT_ELDER_KEKEK_1);
+ timer = 6000;
+ break;
+ case 3:
+ orphan->AI()->Talk(TEXT_WOLVAR_ORPHAN_5);
+ player->GroupEventHappens(QUEST_THE_BRONZE_DRAGONSHRINE_WOLVAR, me);
+ orphan->GetMotionMaster()->MoveFollow(player, PET_FOLLOW_DIST, PET_FOLLOW_ANGLE);
+ Reset();
+ return;
+ }
+ ++phase;
+ }
+ else
+ timer -= diff;
+ }
+
+ private:
+ uint32 timer;
+ int8 phase;
+ uint64 playerGUID;
+ uint64 orphanGUID;
+
+ };
+
+ CreatureAI* GetAI(Creature* creature) const
+ {
+ return new npc_elder_kekekAI(creature);
+ }
+};
+
+/*######
+## npc_the_etymidian
+## TODO: A red crystal as a gift for the great one should be spawned during the event.
+######*/
+class npc_the_etymidian : public CreatureScript
+{
+ public:
+ npc_the_etymidian() : CreatureScript("npc_the_etymidian") {}
+
+ struct npc_the_etymidianAI : public ScriptedAI
+ {
+ npc_the_etymidianAI(Creature* creature) : ScriptedAI (creature) {}
+
+ void Reset()
+ {
+ timer = 0;
+ phase = 0;
+ playerGUID = 0;
+ orphanGUID = 0;
+ }
+
+ void MoveInLineOfSight(Unit* who)
+ {
+ if (!phase && who && who->GetDistance2d(me) < 10.0f)
+ if (Player* player = who->ToPlayer())
+ if (player->GetQuestStatus(QUEST_MEETING_A_GREAT_ONE) == QUEST_STATUS_INCOMPLETE)
+ {
+ playerGUID = player->GetGUID();
+ if (orphanGUID = getOrphanGUID(player, ORPHAN_ORACLE))
+ phase = 1;
+ }
+ }
+
+ void UpdateAI(const uint32 diff)
+ {
+ if (!phase)
+ return;
+
+ if (timer <= diff)
+ {
+ Player* player = Player::GetPlayer(*me, playerGUID);
+ Creature* orphan = Creature::GetCreature(*me, orphanGUID);
+
+ if (!orphan || !player)
+ {
+ Reset();
+ return;
+ }
+
+ switch (phase)
+ {
+ case 1:
+ orphan->GetMotionMaster()->MovePoint(0, me->GetPositionX() + cos(me->GetOrientation()) * 5, me->GetPositionY() + sin(me->GetOrientation()) * 5, me->GetPositionZ());
+ orphan->AI()->Talk(TEXT_ORACLE_ORPHAN_7);
+ timer = 5000;
+ break;
+ case 2:
+ orphan->SetFacingToObject(me);
+ orphan->AI()->Talk(TEXT_ORACLE_ORPHAN_8);
+ timer = 5000;
+ break;
+ case 3:
+ orphan->AI()->Talk(TEXT_ORACLE_ORPHAN_9);
+ timer = 5000;
+ break;
+ case 4:
+ orphan->AI()->Talk(TEXT_ORACLE_ORPHAN_10);
+ timer = 5000;
+ break;
+ case 5:
+ orphan->GetMotionMaster()->MoveFollow(player, PET_FOLLOW_DIST, PET_FOLLOW_ANGLE);
+ player->GroupEventHappens(QUEST_MEETING_A_GREAT_ONE, me);
+ Reset();
+ return;
+ }
+ ++phase;
+ }
+ else
+ timer -= diff;
+ }
+
+ private:
+ uint32 timer;
+ int8 phase;
+ uint32 GOtimer;
+ uint64 playerGUID;
+ uint64 orphanGUID;
+
+ };
+
+ CreatureAI* GetAI(Creature* creature) const
+ {
+ return new npc_the_etymidianAI(creature);
+ }
+};
+
+/*######
+## npc_cw_alexstrasza_trigger
+######*/
+class npc_alexstraza_the_lifebinder : public CreatureScript
+{
+ public:
+ npc_alexstraza_the_lifebinder() : CreatureScript("npc_alexstraza_the_lifebinder") {}
+
+ struct npc_alexstraza_the_lifebinderAI : public ScriptedAI
+ {
+ npc_alexstraza_the_lifebinderAI(Creature* creature) : ScriptedAI (creature) {}
+
+ void Reset()
+ {
+ timer = 0;
+ phase = 0;
+ playerGUID = 0;
+ orphanGUID = 0;
+ }
+
+ void SetData(uint32 type, uint32 data)
+ {
+ // Existing SmartAI
+ if (type == 0)
+ {
+ switch (data)
+ {
+ case 1:
+ me->SetOrientation(1.6049f);
+ break;
+ case 2:
+ me->SetOrientation(me->GetHomePosition().GetOrientation());
+ break;
+ }
+ }
+ }
+
+ void MoveInLineOfSight(Unit* who)
+ {
+ if (!phase && who && who->GetDistance2d(me) < 10.0f)
+ if (Player* player = who->ToPlayer())
+ {
+ if (player->GetQuestStatus(QUEST_THE_DRAGON_QUEEN_ORACLE) == QUEST_STATUS_INCOMPLETE)
+ {
+ if (orphanGUID = getOrphanGUID(player, ORPHAN_ORACLE))
+ phase = 1;
+ playerGUID = player->GetGUID();
+ }
+ else if (player->GetQuestStatus(QUEST_THE_DRAGON_QUEEN_WOLVAR) == QUEST_STATUS_INCOMPLETE)
+ {
+ if (orphanGUID = getOrphanGUID(player, ORPHAN_WOLVAR))
+ phase = 7;
+ playerGUID = player->GetGUID();
+ }
+ }
+ }
+
+ void UpdateAI(const uint32 diff)
+ {
+ if (!phase)
+ return;
+
+ if (timer <= diff)
+ {
+ Player* player = Player::GetPlayer(*me, playerGUID);
+ Creature* orphan = Creature::GetCreature(*me, orphanGUID);
+
+ if (!orphan || !player)
+ {
+ Reset();
+ return;
+ }
+
+ switch (phase)
+ {
+ case 1:
+ orphan->GetMotionMaster()->MovePoint(0, me->GetPositionX() + cos(me->GetOrientation()) * 5, me->GetPositionY() + sin(me->GetOrientation()) * 5, me->GetPositionZ());
+ orphan->AI()->Talk(TEXT_ORACLE_ORPHAN_11);
+ timer = 5000;
+ break;
+ case 2:
+ orphan->SetFacingToObject(me);
+ orphan->AI()->Talk(TEXT_ORACLE_ORPHAN_12);
+ timer = 5000;
+ break;
+ case 3:
+ orphan->AI()->Talk(TEXT_ORACLE_ORPHAN_13);
+ timer = 5000;
+ break;
+ case 4:
+ Talk(TEXT_ALEXSTRASZA_2);
+ me->SetStandState(UNIT_STAND_STATE_KNEEL);
+ me->SetFacingToObject(orphan);
+ timer = 5000;
+ break;
+ case 5:
+ orphan->AI()->Talk(TEXT_ORACLE_ORPHAN_14);
+ timer = 5000;
+ break;
+ case 6:
+ me->SetStandState(UNIT_STAND_STATE_STAND);
+ me->SetOrientation(me->GetHomePosition().GetOrientation());
+ player->GroupEventHappens(QUEST_THE_DRAGON_QUEEN_ORACLE, me);
+ orphan->GetMotionMaster()->MoveFollow(player, PET_FOLLOW_DIST, PET_FOLLOW_ANGLE);
+ Reset();
+ return;
+ case 7:
+ orphan->GetMotionMaster()->MovePoint(0, me->GetPositionX() + cos(me->GetOrientation()) * 5, me->GetPositionY() + sin(me->GetOrientation()) * 5, me->GetPositionZ());
+ orphan->AI()->Talk(TEXT_WOLVAR_ORPHAN_11);
+ timer = 5000;
+ break;
+ case 8:
+ if(Creature* krasus = me->FindNearestCreature(NPC_KRASUS, 10.0f))
+ {
+ orphan->SetFacingToObject(krasus);
+ krasus->AI()->Talk(TEXT_KRASUS_8);
+ }
+ timer = 5000;
+ break;
+ case 9:
+ orphan->AI()->Talk(TEXT_WOLVAR_ORPHAN_12);
+ timer = 5000;
+ break;
+ case 10:
+ orphan->SetFacingToObject(me);
+ Talk(TEXT_ALEXSTRASZA_2);
+ timer = 5000;
+ break;
+ case 11:
+ orphan->AI()->Talk(TEXT_WOLVAR_ORPHAN_13);
+ timer = 5000;
+ break;
+ case 12:
+ player->GroupEventHappens(QUEST_THE_DRAGON_QUEEN_WOLVAR, me);
+ orphan->GetMotionMaster()->MoveFollow(player, PET_FOLLOW_DIST, PET_FOLLOW_ANGLE);
+ Reset();
+ return;
+ }
+ ++phase;
+ }
+ else
+ timer -= diff;
+ }
+
+ private:
+ int8 phase;
+ uint32 timer;
+ uint64 playerGUID;
+ uint64 orphanGUID;
+ uint64 alexstraszaGUID;
+
+ };
+
+ CreatureAI* GetAI(Creature* creature) const
+ {
+ return new npc_alexstraza_the_lifebinderAI(creature);
+ }
+};
+
+/*######
+## at_bring_your_orphan_to
+######*/
+
+class at_bring_your_orphan_to : public AreaTriggerScript
+{
+ public:
+ at_bring_your_orphan_to() : AreaTriggerScript("at_bring_your_orphan_to") { }
+
+ bool OnTrigger(Player* player, AreaTriggerEntry const* trigger)
+ {
+ if (player->isDead() || !player->HasAura(SPELL_ORPHAN_OUT))
+ return false;
+
+ uint32 questId = 0;
+ uint32 orphanId = 0;
+
+ switch (trigger->id)
+ {
+ case AT_DOWN_AT_THE_DOCKS:
+ questId = QUEST_DOWN_AT_THE_DOCKS;
+ orphanId = ORPHAN_ORCISH;
+ break;
+ case AT_GATEWAY_TO_THE_FRONTIER:
+ questId = QUEST_GATEWAY_TO_THE_FRONTIER;
+ orphanId = ORPHAN_ORCISH;
+ break;
+ case AT_LORDAERON_THRONE_ROOM:
+ questId = QUEST_LORDAERON_THRONE_ROOM;
+ orphanId = ORPHAN_ORCISH;
+ break;
+ case AT_BOUGHT_OF_ETERNALS:
+ questId = QUEST_BOUGHT_OF_ETERNALS;
+ orphanId = ORPHAN_HUMAN;
+ break;
+ case AT_SPOOKY_LIGHTHOUSE:
+ questId = QUEST_SPOOKY_LIGHTHOUSE;
+ orphanId = ORPHAN_HUMAN;
+ break;
+ case AT_STONEWROUGHT_DAM:
+ questId = QUEST_STONEWROUGHT_DAM;
+ orphanId = ORPHAN_HUMAN;
+ break;
+ case AT_DARK_PORTAL:
+ questId = player->GetTeam() == ALLIANCE ? QUEST_DARK_PORTAL_A : QUEST_DARK_PORTAL_H;
+ orphanId = player->GetTeam() == ALLIANCE ? ORPHAN_DRAENEI : ORPHAN_BLOOD_ELF;
+ break;
+ }
+
+ if (questId && orphanId && getOrphanGUID(player, orphanId) && player->GetQuestStatus(questId) == QUEST_STATUS_INCOMPLETE)
+ player->AreaExploredOrEventHappens(questId);
+
+ return true;
+ }
+};
+
+/*######
+## npc_cw_area_trigger
+######*/
+class npc_cw_area_trigger : public CreatureScript
+{
+ public:
+ npc_cw_area_trigger() : CreatureScript("npc_cw_area_trigger") {}
+
+ struct npc_cw_area_triggerAI : public ScriptedAI
+ {
+ npc_cw_area_triggerAI(Creature* creature) : ScriptedAI (creature)
+ {
+ me->SetDisplayId(DISPLAY_INVISIBLE);
+ }
+
+ void MoveInLineOfSight(Unit* who)
+ {
+ if (who && me->GetDistance2d(who) < 20.0f)
+ if (Player* player = who->ToPlayer())
+ if (player->HasAura(SPELL_ORPHAN_OUT))
+ {
+ uint32 questId = 0;
+ uint32 orphanId = 0;
+ switch (me->GetEntry())
+ {
+ case NPC_CAVERNS_OF_TIME_CW_TRIGGER:
+ questId = player->GetTeam() == ALLIANCE ? QUEST_TIME_TO_VISIT_THE_CAVERNS_A : QUEST_TIME_TO_VISIT_THE_CAVERNS_H;
+ orphanId = player->GetTeam() == ALLIANCE ? ORPHAN_DRAENEI : ORPHAN_BLOOD_ELF;
+ break;
+ case NPC_EXODAR_01_CW_TRIGGER:
+ questId = QUEST_THE_SEAT_OF_THE_NARUU;
+ orphanId = ORPHAN_DRAENEI;
+ break;
+ case NPC_EXODAR_02_CW_TRIGGER:
+ questId = QUEST_CALL_ON_THE_FARSEER;
+ orphanId = ORPHAN_DRAENEI;
+ break;
+ case NPC_AERIS_LANDING_CW_TRIGGER:
+ questId = QUEST_JHEEL_IS_AT_AERIS_LANDING;
+ orphanId = ORPHAN_DRAENEI;
+ break;
+ case NPC_AUCHINDOUN_CW_TRIGGER:
+ questId = QUEST_AUCHINDOUN_AND_THE_RING;
+ orphanId = ORPHAN_DRAENEI;
+ break;
+ case NPC_SPOREGGAR_CW_TRIGGER:
+ questId = QUEST_HCHUU_AND_THE_MUSHROOM_PEOPLE;
+ orphanId = ORPHAN_BLOOD_ELF;
+ break;
+ case NPC_THRONE_OF_ELEMENTS_CW_TRIGGER:
+ questId = QUEST_VISIT_THE_THRONE_OF_ELEMENTS;
+ orphanId = ORPHAN_BLOOD_ELF;
+ break;
+ case NPC_SILVERMOON_01_CW_TRIGGER:
+ if (player->GetQuestStatus(QUEST_NOW_WHEN_I_GROW_UP) == QUEST_STATUS_INCOMPLETE && getOrphanGUID(player, ORPHAN_BLOOD_ELF))
+ {
+ player->AreaExploredOrEventHappens(QUEST_NOW_WHEN_I_GROW_UP);
+ if (player->GetQuestStatus(QUEST_NOW_WHEN_I_GROW_UP) == QUEST_STATUS_COMPLETE)
+ if (Creature* samuro = me->FindNearestCreature(25151, 20.0f))
+ {
+ uint32 emote = 0;
+ switch(urand(1,5))
+ {
+ case 1:
+ emote = EMOTE_ONESHOT_WAVE;
+ break;
+ case 2:
+ emote = EMOTE_ONESHOT_ROAR;
+ break;
+ case 3:
+ emote = EMOTE_ONESHOT_FLEX;
+ break;
+ case 4:
+ emote = EMOTE_ONESHOT_SALUTE;
+ break;
+ case 5:
+ emote = EMOTE_ONESHOT_DANCE;
+ break;
+ }
+ samuro->HandleEmoteCommand(emote);
+ }
+ }
+ break;
+ }
+ if (questId && orphanId && getOrphanGUID(player, orphanId) && player->GetQuestStatus(questId) == QUEST_STATUS_INCOMPLETE)
+ player->AreaExploredOrEventHappens(questId);
+ }
+ }
+ };
+
+ CreatureAI* GetAI(Creature* creature) const
+ {
+ return new npc_cw_area_triggerAI(creature);
+ }
+};
+
+/*######
+## npc_grizzlemaw_cw_trigger
+######*/
+class npc_grizzlemaw_cw_trigger : public CreatureScript
+{
+ public:
+ npc_grizzlemaw_cw_trigger() : CreatureScript("npc_grizzlemaw_cw_trigger") {}
+
+ struct npc_grizzlemaw_cw_triggerAI : public ScriptedAI
+ {
+ npc_grizzlemaw_cw_triggerAI(Creature* creature) : ScriptedAI (creature)
+ {
+ me->SetDisplayId(DISPLAY_INVISIBLE);
+ }
+
+ void MoveInLineOfSight(Unit* who)
+ {
+ if (who && who->GetDistance2d(me) < 10.0f)
+ if (Player* player = who->ToPlayer())
+ if (player->GetQuestStatus(QUEST_HOME_OF_THE_BEAR_MEN) == QUEST_STATUS_INCOMPLETE)
+ if (Creature* orphan = Creature::GetCreature(*me, getOrphanGUID(player, ORPHAN_WOLVAR)))
+ {
+ player->AreaExploredOrEventHappens(QUEST_HOME_OF_THE_BEAR_MEN);
+ orphan->AI()->Talk(TEXT_WOLVAR_ORPHAN_10);
+ }
+ }
+ };
+
+ CreatureAI* GetAI(Creature* creature) const
+ {
+ return new npc_grizzlemaw_cw_triggerAI(creature);
+ }
+};
+
+void AddSC_event_childrens_week()
+{
+ new npc_elder_kekek();
+ new npc_high_oracle_soo_roo();
+ new npc_winterfin_playmate();
+ new npc_snowfall_glade_playmate();
+ new npc_the_etymidian();
+ new npc_the_biggest_tree();
+ new at_bring_your_orphan_to();
+ new npc_grizzlemaw_cw_trigger();
+ new npc_cw_area_trigger();
+ new npc_alexstraza_the_lifebinder();
+}
diff --git a/src/server/scripts/Events/event.cpp b/src/server/scripts/Events/event.cpp
new file mode 100644
index 00000000000..22334f8d365
--- /dev/null
+++ b/src/server/scripts/Events/event.cpp
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008-2012 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "ScriptPCH.h"
+
+void AddSC_event_childrens_week();
+
+void AddSC_event_scripts()
+{
+ AddSC_event_childrens_week();
+}
diff --git a/src/server/scripts/Northrend/sholazar_basin.cpp b/src/server/scripts/Northrend/sholazar_basin.cpp
index 56ef25c5753..d734b4b4e58 100644
--- a/src/server/scripts/Northrend/sholazar_basin.cpp
+++ b/src/server/scripts/Northrend/sholazar_basin.cpp
@@ -470,11 +470,27 @@ public:
enum utils
{
- NPC_HEMET = 27986,
- NPC_HADRIUS = 28047,
- NPC_TAMARA = 28568,
- SPELL_OFFER = 51962,
- QUEST_ENTRY = 12645,
+ NPC_HEMET = 27986,
+ NPC_HADRIUS = 28047,
+ NPC_TAMARA = 28568,
+ SPELL_OFFER = 51962,
+ QUEST_ENTRY = 12645,
+};
+
+enum NesingwaryChildrensWeek
+{
+ SPELL_ORPHAN_OUT = 58818,
+
+ QUEST_THE_MIGHTY_HEMET_NESINGWARY = 13957,
+
+ ORPHAN_WOLVAR = 33532,
+
+ TEXT_WOLVAR_ORPHAN_6 = 6,
+ TEXT_WOLVAR_ORPHAN_7 = 7,
+ TEXT_WOLVAR_ORPHAN_8 = 8,
+ TEXT_WOLVAR_ORPHAN_9 = 9,
+
+ TEXT_NESINGWARY_1 = 1,
};
class npc_jungle_punch_target : public CreatureScript
@@ -486,17 +502,86 @@ public:
{
npc_jungle_punch_targetAI(Creature* creature) : ScriptedAI(creature) {}
- uint16 sayTimer;
- uint8 sayStep;
-
void Reset()
{
sayTimer = 3500;
sayStep = 0;
+ timer = 0;
+ phase = 0;
+ playerGUID = 0;
+ orphanGUID = 0;
+ }
+
+ void MoveInLineOfSight(Unit* who)
+ {
+ if (!phase && who && who->GetDistance2d(me) < 10.0f)
+ if (Player* player = who->ToPlayer())
+ if (player->GetQuestStatus(QUEST_THE_MIGHTY_HEMET_NESINGWARY) == QUEST_STATUS_INCOMPLETE)
+ {
+ playerGUID = player->GetGUID();
+ if (Aura* orphanOut = player->GetAura(SPELL_ORPHAN_OUT))
+ if (orphanOut->GetCaster() && orphanOut->GetCaster()->GetEntry() == ORPHAN_WOLVAR)
+ {
+ orphanGUID = orphanOut->GetCaster()->GetGUID();
+ phase = 1;
+ }
+ }
+ }
+
+ void proceedCwEvent(const uint32 diff)
+ {
+ if (timer <= diff)
+ {
+ Player* player = Player::GetPlayer(*me, playerGUID);
+ Creature* orphan = Creature::GetCreature(*me, orphanGUID);
+
+ if(!orphan || !player)
+ {
+ Reset();
+ return;
+ }
+
+ switch(phase)
+ {
+ case 1:
+ orphan->GetMotionMaster()->MovePoint(0, me->GetPositionX() + cos(me->GetOrientation()) * 5, me->GetPositionY() + sin(me->GetOrientation()) * 5, me->GetPositionZ());
+ orphan->AI()->Talk(TEXT_WOLVAR_ORPHAN_6);
+ timer = 5000;
+ break;
+ case 2:
+ orphan->SetFacingToObject(me);
+ orphan->AI()->Talk(TEXT_WOLVAR_ORPHAN_7);
+ timer = 5000;
+ break;
+ case 3:
+ Talk(TEXT_NESINGWARY_1);
+ timer = 5000;
+ break;
+ case 4:
+ orphan->AI()->Talk(TEXT_WOLVAR_ORPHAN_8);
+ timer = 5000;
+ break;
+ case 5:
+ orphan->AI()->Talk(TEXT_WOLVAR_ORPHAN_9);
+ timer = 5000;
+ break;
+ case 6:
+ orphan->GetMotionMaster()->MoveFollow(player, PET_FOLLOW_DIST, PET_FOLLOW_ANGLE);
+ player->GroupEventHappens(QUEST_THE_MIGHTY_HEMET_NESINGWARY, me);
+ Reset();
+ return;
+ }
+ ++phase;
+ }
+ else
+ timer -= diff;
}
void UpdateAI(const uint32 uiDiff)
{
+ if (phase)
+ proceedCwEvent(uiDiff);
+
if (!sayStep)
return;
@@ -588,6 +673,14 @@ public:
break;
}
}
+
+ private:
+ uint16 sayTimer;
+ uint8 sayStep;
+ uint32 timer;
+ int8 phase;
+ uint64 playerGUID;
+ uint64 orphanGUID;
};
CreatureAI* GetAI(Creature* creature) const
diff --git a/src/server/scripts/World/areatrigger_scripts.cpp b/src/server/scripts/World/areatrigger_scripts.cpp
index f302009a4f3..db35e84b930 100644
--- a/src/server/scripts/World/areatrigger_scripts.cpp
+++ b/src/server/scripts/World/areatrigger_scripts.cpp
@@ -235,21 +235,19 @@ enum eWaygate
QUEST_THE_MAKERS_OVERLOOK = 12613,
QUEST_THE_MAKERS_PERCH = 12559,
+ QUEST_MEETING_A_GREAT_ONE = 13956,
};
class AreaTrigger_at_sholazar_waygate : public AreaTriggerScript
{
public:
- AreaTrigger_at_sholazar_waygate()
- : AreaTriggerScript("at_sholazar_waygate")
- {
- }
+ AreaTrigger_at_sholazar_waygate() : AreaTriggerScript("at_sholazar_waygate") {}
bool OnTrigger(Player* player, AreaTriggerEntry const* trigger)
{
- if (player->GetQuestStatus(QUEST_THE_MAKERS_OVERLOOK) == QUEST_STATUS_REWARDED && !player->isDead() &&
- player->GetQuestStatus(QUEST_THE_MAKERS_PERCH) == QUEST_STATUS_REWARDED)
+ if (!player->isDead() && (player->GetQuestStatus(QUEST_MEETING_A_GREAT_ONE) != QUEST_STATUS_NONE ||
+ (player->GetQuestStatus(QUEST_THE_MAKERS_OVERLOOK) == QUEST_STATUS_REWARDED && player->GetQuestStatus(QUEST_THE_MAKERS_PERCH) == QUEST_STATUS_REWARDED)))
{
switch (trigger->id)
{
@@ -303,76 +301,6 @@ class AreaTrigger_at_nats_landing : public AreaTriggerScript
};
/*######
-## at_bring_your_orphan_to
-######*/
-
-enum BringYourOrphanTo
-{
- QUEST_DOWN_AT_THE_DOCKS = 910,
- QUEST_GATEWAY_TO_THE_FRONTIER = 911,
- QUEST_LORDAERON_THRONE_ROOM = 1800,
- QUEST_BOUGHT_OF_ETERNALS = 1479,
- QUEST_SPOOKY_LIGHTHOUSE = 1687,
- QUEST_STONEWROUGHT_DAM = 1558,
- QUEST_DARK_PORTAL_H = 10951,
- QUEST_DARK_PORTAL_A = 10952,
-
- AT_DOWN_AT_THE_DOCKS = 3551,
- AT_GATEWAY_TO_THE_FRONTIER = 3549,
- AT_LORDAERON_THRONE_ROOM = 3547,
- AT_BOUGHT_OF_ETERNALS = 3546,
- AT_SPOOKY_LIGHTHOUSE = 3552,
- AT_STONEWROUGHT_DAM = 3548,
- AT_DARK_PORTAL = 4356,
-
- AURA_ORPHAN_OUT = 58818,
-};
-
-class AreaTrigger_at_bring_your_orphan_to : public AreaTriggerScript
-{
- public:
- AreaTrigger_at_bring_your_orphan_to() : AreaTriggerScript("at_bring_your_orphan_to") { }
-
- bool OnTrigger(Player* player, AreaTriggerEntry const* trigger)
- {
- uint32 questId = 0;
-
- if (player->isDead() || !player->HasAura(AURA_ORPHAN_OUT))
- return false;
-
- switch (trigger->id)
- {
- case AT_DOWN_AT_THE_DOCKS:
- questId = QUEST_DOWN_AT_THE_DOCKS;
- break;
- case AT_GATEWAY_TO_THE_FRONTIER:
- questId = QUEST_GATEWAY_TO_THE_FRONTIER;
- break;
- case AT_LORDAERON_THRONE_ROOM:
- questId = QUEST_LORDAERON_THRONE_ROOM;
- break;
- case AT_BOUGHT_OF_ETERNALS:
- questId = QUEST_BOUGHT_OF_ETERNALS;
- break;
- case AT_SPOOKY_LIGHTHOUSE:
- questId = QUEST_SPOOKY_LIGHTHOUSE;
- break;
- case AT_STONEWROUGHT_DAM:
- questId = QUEST_STONEWROUGHT_DAM;
- break;
- case AT_DARK_PORTAL:
- questId = player->GetTeam() == ALLIANCE ? QUEST_DARK_PORTAL_A : QUEST_DARK_PORTAL_H;
- break;
- }
-
- if (questId && player->GetQuestStatus(questId) == QUEST_STATUS_INCOMPLETE)
- player->AreaExploredOrEventHappens(questId);
-
- return true;
- }
-};
-
-/*######
## at_brewfest
######*/
@@ -505,7 +433,6 @@ void AddSC_areatrigger_scripts()
new AreaTrigger_at_last_rites();
new AreaTrigger_at_sholazar_waygate();
new AreaTrigger_at_nats_landing();
- new AreaTrigger_at_bring_your_orphan_to();
new AreaTrigger_at_brewfest();
new AreaTrigger_at_area_52_entrance();
}