diff options
| author | Gacko <gacko28@gmx.de> | 2012-10-21 14:33:20 +0200 | 
|---|---|---|
| committer | Gacko <gacko28@gmx.de> | 2012-10-21 14:33:20 +0200 | 
| commit | 9c4cf9b39c17854fac3c1323e5e3bd1d2f164e3d (patch) | |
| tree | 99bd6e6a91a7b6fee6e78832acb9a432de52681a | |
| parent | 36806bf5b3a9abed467e23eb835a992df3ea0d50 (diff) | |
Core/DB: Children's Week
| -rw-r--r-- | sql/updates/world/2012_10_20_00_world_childrens_week.sql | 573 | ||||
| -rwxr-xr-x | src/server/game/Scripting/ScriptLoader.cpp | 2 | ||||
| -rw-r--r-- | src/server/scripts/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | src/server/scripts/Events/CMakeLists.txt | 17 | ||||
| -rw-r--r-- | src/server/scripts/Events/childrens_week.cpp | 1049 | ||||
| -rw-r--r-- | src/server/scripts/Events/event.cpp | 26 | ||||
| -rw-r--r-- | src/server/scripts/Northrend/sholazar_basin.cpp | 109 | ||||
| -rw-r--r-- | src/server/scripts/World/areatrigger_scripts.cpp | 81 | 
8 files changed, 1773 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 54a74a021c1..7ced64930f8 100755 --- a/src/server/game/Scripting/ScriptLoader.cpp +++ b/src/server/game/Scripting/ScriptLoader.cpp @@ -89,6 +89,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 @@ -711,6 +712,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..0cb0b10bdbc --- /dev/null +++ b/src/server/scripts/Events/event.cpp @@ -0,0 +1,26 @@ +/* + * 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" +#include "event.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();  }  | 
