aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnubisss <none@none>2009-07-12 01:17:04 +0200
committerAnubisss <none@none>2009-07-12 01:17:04 +0200
commit87213301e7f363abe4ae17c0988fd7262a5feb19 (patch)
treefa14c38d9c29b3e3a4c3398d015655b303549676
parent692c927e75c6c9a32d53da8d7f6319508d9b6fb9 (diff)
*Merge SD2.
*r1202: Added support for quest 12739(and 12742 to 12750). Patch by ckegg *And merge a grid searcher from SD2. --HG-- branch : trunk
-rw-r--r--sql/FULL/world_script_texts.sql56
-rw-r--r--sql/FULL/world_scripts_full.sql1
-rw-r--r--sql/updates/4432_world.sql58
-rw-r--r--src/bindings/scripts/include/sc_creature.cpp21
-rw-r--r--src/bindings/scripts/include/sc_creature.h6
-rw-r--r--src/bindings/scripts/scripts/zone/eastern_plaguelands/the_scarlet_enclave.cpp464
6 files changed, 604 insertions, 2 deletions
diff --git a/sql/FULL/world_script_texts.sql b/sql/FULL/world_script_texts.sql
index f33773743b2..d6e5e8c65e5 100644
--- a/sql/FULL/world_script_texts.sql
+++ b/sql/FULL/world_script_texts.sql
@@ -1744,7 +1744,61 @@ INSERT INTO `script_texts` (`entry`, `content_default`, `content_loc1`, `content
(-1609013, 'There is no hope for our future...', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'unworthy_initiate SAY_EVENT_ATTACK_6'),
(-1609014, 'Sate your hunger on cold steel\, $R', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'unworthy_initiate SAY_EVENT_ATTACK_7'),
(-1609015, 'It ends here!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'unworthy_initiate SAY_EVENT_ATTACK_8'),
-(-1609016, 'Death is the only cure!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'unworthy_initiate SAY_EVENT_ATTACK_9');
+(-1609016, 'Death is the only cure!', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 'unworthy_initiate SAY_EVENT_ATTACK_9'),
+(-1609025,'Come to finish the job, have you?',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,1,'special_surprise SAY_EXEC_START_1'),
+(-1609026,'Come to finish the job, have ye?',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,1,'special_surprise SAY_EXEC_START_2'),
+(-1609027,'Come ta finish da job, mon?',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,1,'special_surprise SAY_EXEC_START_3'),
+(-1609028,'You\'ll look me in the eyes when...',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,25,'special_surprise SAY_EXEC_PROG_1'),
+(-1609029,'Well this son o\' Ironforge would like...',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,25,'special_surprise SAY_EXEC_PROG_2'),
+(-1609030,'Ironic, isn\'t it? To be killed...',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,25,'special_surprise SAY_EXEC_PROG_3'),
+(-1609031,'If you\'d allow me just one...',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,25,'special_surprise SAY_EXEC_PROG_4'),
+(-1609032,'I\'d like to stand for...',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,25,'special_surprise SAY_EXEC_PROG_5'),
+(-1609033,'I want to die like an orc...',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,25,'special_surprise SAY_EXEC_PROG_6'),
+(-1609034,'Dis troll gonna stand for da...',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,25,'special_surprise SAY_EXEC_PROG_7'),
+(-1609035,'$N?',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,1,'special_surprise SAY_EXEC_NAME_1'),
+(-1609036,'$N? Mon?',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,1,'special_surprise SAY_EXEC_NAME_2'),
+(-1609037,'$N, I\'d recognize that face anywhere... What... What have they done to you, $N?',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,1,'special_surprise SAY_EXEC_RECOG_1'),
+(-1609038,'$N, I\'d recognize those face tentacles anywhere... What... What have they done to you, $N?',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,1,'special_surprise SAY_EXEC_RECOG_2'),
+(-1609039,'$N, I\'d recognize that face anywhere... What... What have they done to ye, $Glad:lass;?',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,1,'special_surprise SAY_EXEC_RECOG_3'),
+(-1609040,'$N, I\'d recognize that decay anywhere... What... What have they done to you, $N?',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,1,'special_surprise SAY_EXEC_RECOG_4'),
+(-1609041,'$N, I\'d recognize those horns anywhere... What have they done to you, $N?',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,1,'special_surprise SAY_EXEC_RECOG_5'),
+(-1609042,'$N, I\'d recognize dem tusks anywhere... What... What have dey done ta you, mon?',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,1,'special_surprise SAY_EXEC_RECOG_6'),
+(-1609043,'You don\'t remember me, do you? Blasted Scourge... They\'ve tried to drain you of everything that made you a righteous force of reckoning. Every last ounce of good... Everything that made you a draenei!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,1,'special_surprise SAY_EXEC_NOREM_1'),
+(-1609044,'Ye don\'t remember me, do ye? Blasted Scourge... They\'ve tried to drain ye o\' everything that made ye a righteous force o\' reckoning. Every last ounce o\' good... Everything that made you a $Gson:daughter; of Ironforge!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,1,'special_surprise SAY_EXEC_NOREM_2'),
+(-1609045,'You don\'t remember me, do you? We were humans once - long, long ago - until Lordaeron fell to the Scourge. Your transformation to a Scourge zombie came shortly after my own. Not long after that, our minds were freed by the Dark Lady.',0,0,0,1,'special_surprise SAY_EXEC_NOREM_3'),
+(-1609046,'You don\'t remember me, do you? Blasted Scourge... They\'ve tried to drain you of everything that made you a pint-sized force of reckoning. Every last ounce of good... Everything that made you a gnome!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,1,'special_surprise SAY_EXEC_NOREM_4'),
+(-1609047,'You don\'t remember me, do you? Blasted Scourge...They\'ve tried to drain of everything that made you a righteous force of reckoning. Every last ounce of good...Everything that made you a human!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,1,'special_surprise SAY_EXEC_NOREM_5'),
+(-1609048,'You don\'t remember me? When you were a child your mother would leave you in my care while she served at the Temple of the Moon. I held you in my arms and fed you with honey and sheep\'s milk to calm you until she would return. You were my little angel. Blasted Scourge... What have they done to you, $N?',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,1,'special_surprise SAY_EXEC_NOREM_6'),
+(-1609049,'You don\'t recognize me, do you? Blasted Scourge... They\'ve tried to drain you of everything that made you a righteous force of reckoning. Every last ounce of good... Everything that made you an orc!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,1,'special_surprise SAY_EXEC_NOREM_7'),
+(-1609050,'You don\'t remember me, do you? Blasted Scourge... They\'ve tried to drain you of everything that made you a righteous force of reckoning. Every last ounce of good... Everything that made you a tauren!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,1,'special_surprise SAY_EXEC_NOREM_8'),
+(-1609051,'You don\'t remember me, mon? Damn da Scourge! Dey gone ta drain you of everytin dat made ya a mojo masta. Every last ounce of good... Everytin\' dat made ya a troll hero, mon!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,1,'special_surprise SAY_EXEC_NOREM_9'),
+(-1609052,'A pact was made, $Gbrother:sister;! We vowed vengeance against the Lich King! For what he had done to us! We battled the Scourge as Forsaken, pushing them back into the plaguelands and freeing Tirisfal! You and I were champions of the Forsaken!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,1,'special_surprise SAY_EXEC_THINK_1'),
+(-1609053,'You must remember the splendor of life, $Gbrother:sister;. You were a champion of the Kaldorei once! This isn\'t you!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,1,'special_surprise SAY_EXEC_THINK_2'),
+(-1609054,'Think, $N. Think back. Try and remember the majestic halls of Silvermoon City, where you were born. Remember the splendor of life, $Gbrother:sister;. You were a champion of the sin\'dorei once! This isn\'t you.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,6,'special_surprise SAY_EXEC_THINK_3'),
+(-1609055,'Think, $N. Think back. Try and remember the proud mountains of Argus, where you were born. Remember the splendor of life, $Gbrother:sister;. You were a champion of the draenei once! This isn\'t you.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,6,'special_surprise SAY_EXEC_THINK_4'),
+(-1609056,'Think, $N. Think back. Try and remember the snow capped mountains o\' Dun Morogh! Ye were born there, $Glad:lass;. Remember the splendor o\' life, $N! Ye were a champion o\' the dwarves once! This isn\'t ye!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,6,'special_surprise SAY_EXEC_THINK_5'),
+(-1609057,'Think, $N. Think back. Try and remember Gnomeregan before those damned troggs! Remember the feel of an [arclight spanner] $Gbrother:sister;. You were a champion of gnome-kind once! This isn\'t you.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,6,'special_surprise SAY_EXEC_THINK_6'),
+(-1609058,'Think, $N. Think back. Try and remember the hills and valleys of Elwynn, where you were born. Remember the splendor of life, $Gbrother:sister;. You were a champion of the Alliance once! This isn\'t you.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,6,'special_surprise SAY_EXEC_THINK_7'),
+(-1609059,'Think, $N. Think back. Try and remember Durotar, $Gbrother:sister;! Remember the sacrifices our heroes made so that we could be free of the blood curse. Harken back to the Valley of Trials, where we were reborn into a world without demonic influence. We found the splendor of life, $N. Together! This isn\'t you. You were a champion of the Horde once!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,6,'special_surprise SAY_EXEC_THINK_8'),
+(-1609060,'Think, $N. Think back. Try and remember the rolling plains of Mulgore, where you were born. Remember the splendor of life, $Gbrother:sister;. You were a champion of the tauren once! This isn\'t you.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,6,'special_surprise SAY_EXEC_THINK_9'),
+(-1609061,'TINK $N. Tink back, mon! We be Darkspear, mon! Bruddas and sistas! Remember when we fought the Zalazane and done took he head and freed da Echo Isles? MON! TINK! You was a champion of da Darkspear trolls!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,6,'special_surprise SAY_EXEC_THINK_10'),
+(-1609062,'Listen to me, $N. You must fight against the Lich King\'s control. He is a monster that wants to see this world - our world - in ruin. Don\'t let him use you to accomplish his goals. You were once a hero and you can be again. Fight, damn you! Fight his control!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,5,'special_surprise SAY_EXEC_LISTEN_1'),
+(-1609063,'Listen to me, $N Ye must fight against the Lich King\'s control. He\'s a monster that wants to see this world - our world - in ruin. Don\'t let him use ye to accomplish his goals. Ye were once a hero and ye can be again. Fight, damn ye! Fight his control!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,5,'special_surprise SAY_EXEC_LISTEN_2'),
+(-1609064,'Listen to me, $N. You must fight against the Lich King\'s control. He is a monster that wants to see this world - our world - in ruin. Don\'t let him use you to accomplish his goals AGAIN. You were once a hero and you can be again. Fight, damn you! Fight his control!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,5,'special_surprise SAY_EXEC_LISTEN_3'),
+(-1609065,'Listen ta me, $Gbrudda:sista;. You must fight against da Lich King\'s control. He be a monstar dat want ta see dis world - our world - be ruined. Don\'t let he use you ta accomplish he goals. You be a hero once and you be a hero again! Fight it, mon! Fight he control!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,5,'special_surprise SAY_EXEC_LISTEN_4'),
+(-1609066,'What\'s going on in there? What\'s taking so long, $N?',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,1,0,0,'special_surprise SAY_PLAGUEFIST'),
+(-1609067,'There... There\'s no more time for me. I\'m done for. Finish me off, $N. Do it or they\'ll kill us both. $N... Remember Silvermoon. This world is worth saving!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,18,'special_surprise SAY_EXEC_TIME_1'),
+(-1609068,'There... There\'s no more time for me. I\'m done for. Finish me off, $N. Do it or they\'ll kill us both. $N... Remember Argus. Don\'t let that happen to this world.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,18,'special_surprise SAY_EXEC_TIME_2'),
+(-1609069,'There... There\'s no more time for me. I\'m done for. Finish me off, $N. Do it or they\'ll kill us both $N... For KHAAAAAAAAZZZ MODAAAAAANNNNNN!!!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,18,'special_surprise SAY_EXEC_TIME_3'),
+(-1609070,'There... There\'s no more time for me. I\'m done for. Finish me off, $N. Do it or they\'ll kill us both. $N... Remember Tirisfal! This world is worth saving!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,18,'special_surprise SAY_EXEC_TIME_4'),
+(-1609071,'There... There\'s no more time for me. I\'m done for. Finish me off, $N. Do it or they\'ll kill us both. $N... Remember Gnomeregan! This world is worth saving.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,18,'special_surprise SAY_EXEC_TIME_5'),
+(-1609072,'There... There\'s no more time for me. I\'m done for. FInish me off, $N. Do it or they\'ll kill us both. $N...Remember Elwynn. This world is worth saving.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,18,'special_surprise SAY_EXEC_TIME_6'),
+(-1609073,'There... There\'s no more time for me. I\'m done for. Finish me off, $N. Do it or they\'ll kill us both. $N... Remember Teldrassil, our beloved home. This world is worth saving.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,18,'special_surprise SAY_EXEC_TIME_7'),
+(-1609074,'There... There\'s no more time for me. I\'m done for. Finish me off, $N. Do it or they\'ll kill us both. $N... For the Horde! This world is worth saving.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,18,'special_surprise SAY_EXEC_TIME_8'),
+(-1609075,'There... There\'s no more time for me. I\'m done for. Finish me off, $N. Do it or they\'ll kill us both. $N... Remember Mulgore. This world is worth saving.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,18,'special_surprise SAY_EXEC_TIME_9'),
+(-1609076,'Der... Der\'s no more time for me. I be done for. Finish me off $N. Do it or they\'ll kill us both. $N... Remember Sen\'jin Village, mon! Dis world be worth saving!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,18,'special_surprise SAY_EXEC_TIME_10'),
+(-1609077,'Do it, $N! Put me out of my misery!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,1,'special_surprise SAY_EXEC_WAITING'),
+(-1609078,'dies from his wounds.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,2,0,0,'special_surprise EMOTE_DIES');
--
-- Below just for beautiful view in table, run at own desire
diff --git a/sql/FULL/world_scripts_full.sql b/sql/FULL/world_scripts_full.sql
index b7063259cbb..6491cb49270 100644
--- a/sql/FULL/world_scripts_full.sql
+++ b/sql/FULL/world_scripts_full.sql
@@ -112,6 +112,7 @@ UPDATE `creature_template` SET `ScriptName`='npc_salanar_the_horseman' WHERE `en
UPDATE `creature_template` SET `ScriptName`='npc_dark_rider_of_acherus' WHERE `entry` =28654;
UPDATE `creature_template` SET `ScriptName`='npc_ros_dark_rider' WHERE `entry`=28768;
UPDATE `creature_template` SET `ScriptName`='npc_dkc1_gothik' WHERE `entry`=28658;
+UPDATE `creature_template` SET `ScriptName`='npc_a_special_surprise' WHERE `entry` IN (29032, 29061, 29065, 29067, 29068, 29070, 29074, 29072, 29073, 29071);
/* */
/* ZONE */
diff --git a/sql/updates/4432_world.sql b/sql/updates/4432_world.sql
new file mode 100644
index 00000000000..895ffbb503a
--- /dev/null
+++ b/sql/updates/4432_world.sql
@@ -0,0 +1,58 @@
+UPDATE `creature_template` SET `ScriptName` = 'npc_a_special_surprise' WHERE `entry` IN (29032, 29061, 29065, 29067, 29068, 29070, 29074, 29072, 29073, 29071);
+
+DELETE FROM `script_texts` WHERE `entry` BETWEEN -1609078 AND -1609025;
+INSERT INTO `script_texts` (`entry`, `content_default`, `sound`, `type`, `language`, `emote`, `comment`) VALUES
+(-1609025,'Come to finish the job, have you?',0,0,0,1,'special_surprise SAY_EXEC_START_1'),
+(-1609026,'Come to finish the job, have ye?',0,0,0,1,'special_surprise SAY_EXEC_START_2'),
+(-1609027,'Come ta finish da job, mon?',0,0,0,1,'special_surprise SAY_EXEC_START_3'),
+(-1609028,'You\'ll look me in the eyes when...',0,0,0,25,'special_surprise SAY_EXEC_PROG_1'),
+(-1609029,'Well this son o\' Ironforge would like...',0,0,0,25,'special_surprise SAY_EXEC_PROG_2'),
+(-1609030,'Ironic, isn\'t it? To be killed...',0,0,0,25,'special_surprise SAY_EXEC_PROG_3'),
+(-1609031,'If you\'d allow me just one...',0,0,0,25,'special_surprise SAY_EXEC_PROG_4'),
+(-1609032,'I\'d like to stand for...',0,0,0,25,'special_surprise SAY_EXEC_PROG_5'),
+(-1609033,'I want to die like an orc...',0,0,0,25,'special_surprise SAY_EXEC_PROG_6'),
+(-1609034,'Dis troll gonna stand for da...',0,0,0,25,'special_surprise SAY_EXEC_PROG_7'),
+(-1609035,'$N?',0,0,0,1,'special_surprise SAY_EXEC_NAME_1'),
+(-1609036,'$N? Mon?',0,0,0,1,'special_surprise SAY_EXEC_NAME_2'),
+(-1609037,'$N, I\'d recognize that face anywhere... What... What have they done to you, $N?',0,0,0,1,'special_surprise SAY_EXEC_RECOG_1'),
+(-1609038,'$N, I\'d recognize those face tentacles anywhere... What... What have they done to you, $N?',0,0,0,1,'special_surprise SAY_EXEC_RECOG_2'),
+(-1609039,'$N, I\'d recognize that face anywhere... What... What have they done to ye, $Glad:lass;?',0,0,0,1,'special_surprise SAY_EXEC_RECOG_3'),
+(-1609040,'$N, I\'d recognize that decay anywhere... What... What have they done to you, $N?',0,0,0,1,'special_surprise SAY_EXEC_RECOG_4'),
+(-1609041,'$N, I\'d recognize those horns anywhere... What have they done to you, $N?',0,0,0,1,'special_surprise SAY_EXEC_RECOG_5'),
+(-1609042,'$N, I\'d recognize dem tusks anywhere... What... What have dey done ta you, mon?',0,0,0,1,'special_surprise SAY_EXEC_RECOG_6'),
+(-1609043,'You don\'t remember me, do you? Blasted Scourge... They\'ve tried to drain you of everything that made you a righteous force of reckoning. Every last ounce of good... Everything that made you a draenei!',0,0,0,1,'special_surprise SAY_EXEC_NOREM_1'),
+(-1609044,'Ye don\'t remember me, do ye? Blasted Scourge... They\'ve tried to drain ye o\' everything that made ye a righteous force o\' reckoning. Every last ounce o\' good... Everything that made you a $Gson:daughter; of Ironforge!',0,0,0,1,'special_surprise SAY_EXEC_NOREM_2'),
+(-1609045,'You don\'t remember me, do you? We were humans once - long, long ago - until Lordaeron fell to the Scourge. Your transformation to a Scourge zombie came shortly after my own. Not long after that, our minds were freed by the Dark Lady.',0,0,0,1,'special_surprise SAY_EXEC_NOREM_3'),
+(-1609046,'You don\'t remember me, do you? Blasted Scourge... They\'ve tried to drain you of everything that made you a pint-sized force of reckoning. Every last ounce of good... Everything that made you a gnome!',0,0,0,1,'special_surprise SAY_EXEC_NOREM_4'),
+(-1609047,'You don\'t remember me, do you? Blasted Scourge...They\'ve tried to drain of everything that made you a righteous force of reckoning. Every last ounce of good...Everything that made you a human!',0,0,0,1,'special_surprise SAY_EXEC_NOREM_5'),
+(-1609048,'You don\'t remember me? When you were a child your mother would leave you in my care while she served at the Temple of the Moon. I held you in my arms and fed you with honey and sheep\'s milk to calm you until she would return. You were my little angel. Blasted Scourge... What have they done to you, $N?',0,0,0,1,'special_surprise SAY_EXEC_NOREM_6'),
+(-1609049,'You don\'t recognize me, do you? Blasted Scourge... They\'ve tried to drain you of everything that made you a righteous force of reckoning. Every last ounce of good... Everything that made you an orc!',0,0,0,1,'special_surprise SAY_EXEC_NOREM_7'),
+(-1609050,'You don\'t remember me, do you? Blasted Scourge... They\'ve tried to drain you of everything that made you a righteous force of reckoning. Every last ounce of good... Everything that made you a tauren!',0,0,0,1,'special_surprise SAY_EXEC_NOREM_8'),
+(-1609051,'You don\'t remember me, mon? Damn da Scourge! Dey gone ta drain you of everytin dat made ya a mojo masta. Every last ounce of good... Everytin\' dat made ya a troll hero, mon!',0,0,0,1,'special_surprise SAY_EXEC_NOREM_9'),
+(-1609052,'A pact was made, $Gbrother:sister;! We vowed vengeance against the Lich King! For what he had done to us! We battled the Scourge as Forsaken, pushing them back into the plaguelands and freeing Tirisfal! You and I were champions of the Forsaken!',0,0,0,1,'special_surprise SAY_EXEC_THINK_1'),
+(-1609053,'You must remember the splendor of life, $Gbrother:sister;. You were a champion of the Kaldorei once! This isn\'t you!',0,0,0,1,'special_surprise SAY_EXEC_THINK_2'),
+(-1609054,'Think, $N. Think back. Try and remember the majestic halls of Silvermoon City, where you were born. Remember the splendor of life, $Gbrother:sister;. You were a champion of the sin\'dorei once! This isn\'t you.',0,0,0,6,'special_surprise SAY_EXEC_THINK_3'),
+(-1609055,'Think, $N. Think back. Try and remember the proud mountains of Argus, where you were born. Remember the splendor of life, $Gbrother:sister;. You were a champion of the draenei once! This isn\'t you.',0,0,0,6,'special_surprise SAY_EXEC_THINK_4'),
+(-1609056,'Think, $N. Think back. Try and remember the snow capped mountains o\' Dun Morogh! Ye were born there, $Glad:lass;. Remember the splendor o\' life, $N! Ye were a champion o\' the dwarves once! This isn\'t ye!',0,0,0,6,'special_surprise SAY_EXEC_THINK_5'),
+(-1609057,'Think, $N. Think back. Try and remember Gnomeregan before those damned troggs! Remember the feel of an [arclight spanner] $Gbrother:sister;. You were a champion of gnome-kind once! This isn\'t you.',0,0,0,6,'special_surprise SAY_EXEC_THINK_6'),
+(-1609058,'Think, $N. Think back. Try and remember the hills and valleys of Elwynn, where you were born. Remember the splendor of life, $Gbrother:sister;. You were a champion of the Alliance once! This isn\'t you.',0,0,0,6,'special_surprise SAY_EXEC_THINK_7'),
+(-1609059,'Think, $N. Think back. Try and remember Durotar, $Gbrother:sister;! Remember the sacrifices our heroes made so that we could be free of the blood curse. Harken back to the Valley of Trials, where we were reborn into a world without demonic influence. We found the splendor of life, $N. Together! This isn\'t you. You were a champion of the Horde once!',0,0,0,6,'special_surprise SAY_EXEC_THINK_8'),
+(-1609060,'Think, $N. Think back. Try and remember the rolling plains of Mulgore, where you were born. Remember the splendor of life, $Gbrother:sister;. You were a champion of the tauren once! This isn\'t you.',0,0,0,6,'special_surprise SAY_EXEC_THINK_9'),
+(-1609061,'TINK $N. Tink back, mon! We be Darkspear, mon! Bruddas and sistas! Remember when we fought the Zalazane and done took he head and freed da Echo Isles? MON! TINK! You was a champion of da Darkspear trolls!',0,0,0,6,'special_surprise SAY_EXEC_THINK_10'),
+(-1609062,'Listen to me, $N. You must fight against the Lich King\'s control. He is a monster that wants to see this world - our world - in ruin. Don\'t let him use you to accomplish his goals. You were once a hero and you can be again. Fight, damn you! Fight his control!',0,0,0,5,'special_surprise SAY_EXEC_LISTEN_1'),
+(-1609063,'Listen to me, $N Ye must fight against the Lich King\'s control. He\'s a monster that wants to see this world - our world - in ruin. Don\'t let him use ye to accomplish his goals. Ye were once a hero and ye can be again. Fight, damn ye! Fight his control!',0,0,0,5,'special_surprise SAY_EXEC_LISTEN_2'),
+(-1609064,'Listen to me, $N. You must fight against the Lich King\'s control. He is a monster that wants to see this world - our world - in ruin. Don\'t let him use you to accomplish his goals AGAIN. You were once a hero and you can be again. Fight, damn you! Fight his control!',0,0,0,5,'special_surprise SAY_EXEC_LISTEN_3'),
+(-1609065,'Listen ta me, $Gbrudda:sista;. You must fight against da Lich King\'s control. He be a monstar dat want ta see dis world - our world - be ruined. Don\'t let he use you ta accomplish he goals. You be a hero once and you be a hero again! Fight it, mon! Fight he control!',0,0,0,5,'special_surprise SAY_EXEC_LISTEN_4'),
+(-1609066,'What\'s going on in there? What\'s taking so long, $N?',0,1,0,0,'special_surprise SAY_PLAGUEFIST'),
+(-1609067,'There... There\'s no more time for me. I\'m done for. Finish me off, $N. Do it or they\'ll kill us both. $N... Remember Silvermoon. This world is worth saving!',0,0,0,18,'special_surprise SAY_EXEC_TIME_1'),
+(-1609068,'There... There\'s no more time for me. I\'m done for. Finish me off, $N. Do it or they\'ll kill us both. $N... Remember Argus. Don\'t let that happen to this world.',0,0,0,18,'special_surprise SAY_EXEC_TIME_2'),
+(-1609069,'There... There\'s no more time for me. I\'m done for. Finish me off, $N. Do it or they\'ll kill us both $N... For KHAAAAAAAAZZZ MODAAAAAANNNNNN!!!',0,0,0,18,'special_surprise SAY_EXEC_TIME_3'),
+(-1609070,'There... There\'s no more time for me. I\'m done for. Finish me off, $N. Do it or they\'ll kill us both. $N... Remember Tirisfal! This world is worth saving!',0,0,0,18,'special_surprise SAY_EXEC_TIME_4'),
+(-1609071,'There... There\'s no more time for me. I\'m done for. Finish me off, $N. Do it or they\'ll kill us both. $N... Remember Gnomeregan! This world is worth saving.',0,0,0,18,'special_surprise SAY_EXEC_TIME_5'),
+(-1609072,'There... There\'s no more time for me. I\'m done for. FInish me off, $N. Do it or they\'ll kill us both. $N...Remember Elwynn. This world is worth saving.',0,0,0,18,'special_surprise SAY_EXEC_TIME_6'),
+(-1609073,'There... There\'s no more time for me. I\'m done for. Finish me off, $N. Do it or they\'ll kill us both. $N... Remember Teldrassil, our beloved home. This world is worth saving.',0,0,0,18,'special_surprise SAY_EXEC_TIME_7'),
+(-1609074,'There... There\'s no more time for me. I\'m done for. Finish me off, $N. Do it or they\'ll kill us both. $N... For the Horde! This world is worth saving.',0,0,0,18,'special_surprise SAY_EXEC_TIME_8'),
+(-1609075,'There... There\'s no more time for me. I\'m done for. Finish me off, $N. Do it or they\'ll kill us both. $N... Remember Mulgore. This world is worth saving.',0,0,0,18,'special_surprise SAY_EXEC_TIME_9'),
+(-1609076,'Der... Der\'s no more time for me. I be done for. Finish me off $N. Do it or they\'ll kill us both. $N... Remember Sen\'jin Village, mon! Dis world be worth saving!',0,0,0,18,'special_surprise SAY_EXEC_TIME_10'),
+(-1609077,'Do it, $N! Put me out of my misery!',0,0,0,1,'special_surprise SAY_EXEC_WAITING'),
+(-1609078,'dies from his wounds.',0,2,0,0,'special_surprise EMOTE_DIES');
diff --git a/src/bindings/scripts/include/sc_creature.cpp b/src/bindings/scripts/include/sc_creature.cpp
index 361385c85a9..159fc4419ba 100644
--- a/src/bindings/scripts/include/sc_creature.cpp
+++ b/src/bindings/scripts/include/sc_creature.cpp
@@ -742,3 +742,24 @@ void LoadOverridenDBCData()
}
}
}
+
+
+Creature* GetClosestCreatureWithEntry(WorldObject* pSource, uint32 Entry, float MaxSearchRange)
+{
+ Creature* pCreature = NULL;
+
+ CellPair pair(Trinity::ComputeCellPair(pSource->GetPositionX(), pSource->GetPositionY()));
+ Cell cell(pair);
+ cell.data.Part.reserved = ALL_DISTRICT;
+ cell.SetNoCreate();
+
+ Trinity::NearestCreatureEntryWithLiveStateInObjectRangeCheck creature_check(*pSource, Entry, true, MaxSearchRange);
+ Trinity::CreatureLastSearcher<Trinity::NearestCreatureEntryWithLiveStateInObjectRangeCheck> searcher(pSource, pCreature, creature_check);
+
+ TypeContainerVisitor<Trinity::CreatureLastSearcher<Trinity::NearestCreatureEntryWithLiveStateInObjectRangeCheck>, GridTypeMapContainer> creature_searcher(searcher);
+
+ CellLock<GridReadGuard> cell_lock(cell, pair);
+ cell_lock->Visit(cell_lock, creature_searcher,*(pSource->GetMap()));
+
+ return pCreature;
+}
diff --git a/src/bindings/scripts/include/sc_creature.h b/src/bindings/scripts/include/sc_creature.h
index f145ff09942..13713a56100 100644
--- a/src/bindings/scripts/include/sc_creature.h
+++ b/src/bindings/scripts/include/sc_creature.h
@@ -243,5 +243,11 @@ struct TRINITY_DLL_DECL BossAI : public ScriptedAI
void TeleportCheaters();
};
+// SD2's grid searchers
+
+//return closest creature alive in grid, with range from pSource
+Creature* GetClosestCreatureWithEntry(WorldObject* pSource, uint32 Entry, float MaxSearchRange);
+
+
#endif
diff --git a/src/bindings/scripts/scripts/zone/eastern_plaguelands/the_scarlet_enclave.cpp b/src/bindings/scripts/scripts/zone/eastern_plaguelands/the_scarlet_enclave.cpp
index 6353fe6c567..9870451b836 100644
--- a/src/bindings/scripts/scripts/zone/eastern_plaguelands/the_scarlet_enclave.cpp
+++ b/src/bindings/scripts/scripts/zone/eastern_plaguelands/the_scarlet_enclave.cpp
@@ -22,6 +22,463 @@
#define GCD_CAST 1
/*######
+## npc_a_special_surprise
+######*/
+
+enum SpecialSurprise
+{
+ SAY_EXEC_START_1 = -1609025, // speech for all
+ SAY_EXEC_START_2 = -1609026,
+ SAY_EXEC_START_3 = -1609027,
+ SAY_EXEC_PROG_1 = -1609028,
+ SAY_EXEC_PROG_2 = -1609029,
+ SAY_EXEC_PROG_3 = -1609030,
+ SAY_EXEC_PROG_4 = -1609031,
+ SAY_EXEC_PROG_5 = -1609032,
+ SAY_EXEC_PROG_6 = -1609033,
+ SAY_EXEC_PROG_7 = -1609034,
+ SAY_EXEC_NAME_1 = -1609035,
+ SAY_EXEC_NAME_2 = -1609036,
+ SAY_EXEC_RECOG_1 = -1609037,
+ SAY_EXEC_RECOG_2 = -1609038,
+ SAY_EXEC_RECOG_3 = -1609039,
+ SAY_EXEC_RECOG_4 = -1609040,
+ SAY_EXEC_RECOG_5 = -1609041,
+ SAY_EXEC_RECOG_6 = -1609042,
+ SAY_EXEC_NOREM_1 = -1609043,
+ SAY_EXEC_NOREM_2 = -1609044,
+ SAY_EXEC_NOREM_3 = -1609045,
+ SAY_EXEC_NOREM_4 = -1609046,
+ SAY_EXEC_NOREM_5 = -1609047,
+ SAY_EXEC_NOREM_6 = -1609048,
+ SAY_EXEC_NOREM_7 = -1609049,
+ SAY_EXEC_NOREM_8 = -1609050,
+ SAY_EXEC_NOREM_9 = -1609051,
+ SAY_EXEC_THINK_1 = -1609052,
+ SAY_EXEC_THINK_2 = -1609053,
+ SAY_EXEC_THINK_3 = -1609054,
+ SAY_EXEC_THINK_4 = -1609055,
+ SAY_EXEC_THINK_5 = -1609056,
+ SAY_EXEC_THINK_6 = -1609057,
+ SAY_EXEC_THINK_7 = -1609058,
+ SAY_EXEC_THINK_8 = -1609059,
+ SAY_EXEC_THINK_9 = -1609060,
+ SAY_EXEC_THINK_10 = -1609061,
+ SAY_EXEC_LISTEN_1 = -1609062,
+ SAY_EXEC_LISTEN_2 = -1609063,
+ SAY_EXEC_LISTEN_3 = -1609064,
+ SAY_EXEC_LISTEN_4 = -1609065,
+ SAY_PLAGUEFIST = -1609066,
+ SAY_EXEC_TIME_1 = -1609067,
+ SAY_EXEC_TIME_2 = -1609068,
+ SAY_EXEC_TIME_3 = -1609069,
+ SAY_EXEC_TIME_4 = -1609070,
+ SAY_EXEC_TIME_5 = -1609071,
+ SAY_EXEC_TIME_6 = -1609072,
+ SAY_EXEC_TIME_7 = -1609073,
+ SAY_EXEC_TIME_8 = -1609074,
+ SAY_EXEC_TIME_9 = -1609075,
+ SAY_EXEC_TIME_10 = -1609076,
+ SAY_EXEC_WAITING = -1609077,
+ EMOTE_DIES = -1609078,
+
+ NPC_PLAGUEFIST = 29053
+};
+
+struct TRINITY_DLL_DECL npc_a_special_surpriseAI : public ScriptedAI
+{
+ npc_a_special_surpriseAI(Creature *pCreature) : ScriptedAI(pCreature) {}
+
+ uint32 ExecuteSpeech_Timer;
+ uint32 ExecuteSpeech_Counter;
+ uint64 PlayerGUID;
+
+ void Reset()
+ {
+ ExecuteSpeech_Timer = 0;
+ ExecuteSpeech_Counter = 0;
+ PlayerGUID = 0;
+
+ me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_ATTACKABLE_2);
+ }
+
+ bool MeetQuestCondition(Unit* pPlayer)
+ {
+ switch(me->GetEntry())
+ {
+ case 29061: // Ellen Stanbridge
+ if (CAST_PLR(pPlayer)->GetQuestStatus(12742) == QUEST_STATUS_INCOMPLETE)
+ return true;
+ break;
+ case 29072: // Kug Ironjaw
+ if (CAST_PLR(pPlayer)->GetQuestStatus(12748) == QUEST_STATUS_INCOMPLETE)
+ return true;
+ break;
+ case 29067: // Donovan Pulfrost
+ if (CAST_PLR(pPlayer)->GetQuestStatus(12744) == QUEST_STATUS_INCOMPLETE)
+ return true;
+ break;
+ case 29065: // Yazmina Oakenthorn
+ if (CAST_PLR(pPlayer)->GetQuestStatus(12743) == QUEST_STATUS_INCOMPLETE)
+ return true;
+ break;
+ case 29071: // Antoine Brack
+ if (CAST_PLR(pPlayer)->GetQuestStatus(12750) == QUEST_STATUS_INCOMPLETE)
+ return true;
+ break;
+ case 29032: // Malar Bravehorn
+ if (CAST_PLR(pPlayer)->GetQuestStatus(12739) == QUEST_STATUS_INCOMPLETE)
+ return true;
+ break;
+ case 29068: // Goby Blastenheimer
+ if (CAST_PLR(pPlayer)->GetQuestStatus(12745) == QUEST_STATUS_INCOMPLETE)
+ return true;
+ break;
+ case 29073: // Iggy Darktusk
+ if (CAST_PLR(pPlayer)->GetQuestStatus(12749) == QUEST_STATUS_INCOMPLETE)
+ return true;
+ break;
+ case 29074: // Lady Eonys
+ if (CAST_PLR(pPlayer)->GetQuestStatus(12747) == QUEST_STATUS_INCOMPLETE)
+ return true;
+ break;
+ case 29070: // Valok the Righteous
+ if (CAST_PLR(pPlayer)->GetQuestStatus(12746) == QUEST_STATUS_INCOMPLETE)
+ return true;
+ break;
+ }
+
+ return false;
+ }
+
+ void MoveInLineOfSight(Unit* pWho)
+ {
+ if (PlayerGUID || pWho->GetTypeId() != TYPEID_PLAYER || !pWho->IsWithinDist(me, INTERACTION_DISTANCE))
+ return;
+
+ if (MeetQuestCondition(pWho))
+ PlayerGUID = pWho->GetGUID();
+ }
+
+ void UpdateAI(const uint32 diff)
+ {
+ if (PlayerGUID && !me->getVictim() && me->isAlive())
+ {
+ if (ExecuteSpeech_Timer < diff)
+ {
+ Player* pPlayer = Unit::GetPlayer(PlayerGUID);
+
+ if (!pPlayer)
+ {
+ Reset();
+ return;
+ }
+
+ //TODO: simplify text's selection
+
+ switch(pPlayer->getRace())
+ {
+ case RACE_HUMAN:
+ switch(ExecuteSpeech_Counter)
+ {
+ case 0: DoScriptText(SAY_EXEC_START_1, me, pPlayer); break;
+ case 1: me->SetStandState(UNIT_STAND_STATE_STAND); break;
+ case 2: DoScriptText(SAY_EXEC_PROG_5, me, pPlayer); break;
+ case 3: DoScriptText(SAY_EXEC_NAME_1, me, pPlayer); break;
+ case 4: DoScriptText(SAY_EXEC_RECOG_1, me, pPlayer); break;
+ case 5: DoScriptText(SAY_EXEC_NOREM_5, me, pPlayer); break;
+ case 6: DoScriptText(SAY_EXEC_THINK_7, me, pPlayer); break;
+ case 7: DoScriptText(SAY_EXEC_LISTEN_1, me, pPlayer); break;
+ case 8:
+ if (Creature* Plaguefist = GetClosestCreatureWithEntry(me, NPC_PLAGUEFIST, 85.0f))
+ DoScriptText(SAY_PLAGUEFIST, Plaguefist, pPlayer);
+ break;
+ case 9:
+ DoScriptText(SAY_EXEC_TIME_6, me, pPlayer);
+ me->SetStandState(UNIT_STAND_STATE_KNEEL);
+ me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_ATTACKABLE_2);
+ break;
+ case 10: DoScriptText(SAY_EXEC_WAITING, me, pPlayer); break;
+ case 11:
+ DoScriptText(EMOTE_DIES, me);
+ me->setDeathState(JUST_DIED);
+ me->SetHealth(0);
+ return;
+ }
+ break;
+ case RACE_ORC:
+ switch(ExecuteSpeech_Counter)
+ {
+ case 0: DoScriptText(SAY_EXEC_START_1, me, pPlayer); break;
+ case 1: me->SetStandState(UNIT_STAND_STATE_STAND); break;
+ case 2: DoScriptText(SAY_EXEC_PROG_6, me, pPlayer); break;
+ case 3: DoScriptText(SAY_EXEC_NAME_1, me, pPlayer); break;
+ case 4: DoScriptText(SAY_EXEC_RECOG_1, me, pPlayer); break;
+ case 5: DoScriptText(SAY_EXEC_NOREM_7, me, pPlayer); break;
+ case 6: DoScriptText(SAY_EXEC_THINK_8, me, pPlayer); break;
+ case 7: DoScriptText(SAY_EXEC_LISTEN_1, me, pPlayer); break;
+ case 8:
+ if (Creature* Plaguefist = GetClosestCreatureWithEntry(me, NPC_PLAGUEFIST, 85.0f))
+ DoScriptText(SAY_PLAGUEFIST, Plaguefist, pPlayer);
+ break;
+ case 9:
+ DoScriptText(SAY_EXEC_TIME_8, me, pPlayer);
+ me->SetStandState(UNIT_STAND_STATE_KNEEL);
+ me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_ATTACKABLE_2);
+ break;
+ case 10: DoScriptText(SAY_EXEC_WAITING, me, pPlayer); break;
+ case 11:
+ DoScriptText(EMOTE_DIES, me);
+ me->setDeathState(JUST_DIED);
+ me->SetHealth(0);
+ return;
+ }
+ break;
+ case RACE_DWARF:
+ switch(ExecuteSpeech_Counter)
+ {
+ case 0: DoScriptText(SAY_EXEC_START_2, me, pPlayer); break;
+ case 1: me->SetStandState(UNIT_STAND_STATE_STAND); break;
+ case 2: DoScriptText(SAY_EXEC_PROG_2, me, pPlayer); break;
+ case 3: DoScriptText(SAY_EXEC_NAME_1, me, pPlayer); break;
+ case 4: DoScriptText(SAY_EXEC_RECOG_3, me, pPlayer); break;
+ case 5: DoScriptText(SAY_EXEC_NOREM_2, me, pPlayer); break;
+ case 6: DoScriptText(SAY_EXEC_THINK_5, me, pPlayer); break;
+ case 7: DoScriptText(SAY_EXEC_LISTEN_2, me, pPlayer); break;
+ case 8:
+ if (Creature* Plaguefist = GetClosestCreatureWithEntry(me, NPC_PLAGUEFIST, 85.0f))
+ DoScriptText(SAY_PLAGUEFIST, Plaguefist, pPlayer);
+ break;
+ case 9:
+ DoScriptText(SAY_EXEC_TIME_3, me, pPlayer);
+ me->SetStandState(UNIT_STAND_STATE_KNEEL);
+ me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_ATTACKABLE_2);
+ break;
+ case 10: DoScriptText(SAY_EXEC_WAITING, me, pPlayer); break;
+ case 11:
+ DoScriptText(EMOTE_DIES, me);
+ me->setDeathState(JUST_DIED);
+ me->SetHealth(0);
+ return;
+ }
+ break;
+ case RACE_NIGHTELF:
+ switch(ExecuteSpeech_Counter)
+ {
+ case 0: DoScriptText(SAY_EXEC_START_1, me, pPlayer); break;
+ case 1: me->SetStandState(UNIT_STAND_STATE_STAND); break;
+ case 2: DoScriptText(SAY_EXEC_PROG_5, me, pPlayer); break;
+ case 3: DoScriptText(SAY_EXEC_NAME_1, me, pPlayer); break;
+ case 4: DoScriptText(SAY_EXEC_RECOG_1, me, pPlayer); break;
+ case 5: DoScriptText(SAY_EXEC_NOREM_6, me, pPlayer); break;
+ case 6: DoScriptText(SAY_EXEC_THINK_2, me, pPlayer); break;
+ case 7: DoScriptText(SAY_EXEC_LISTEN_1, me, pPlayer); break;
+ case 8:
+ if (Creature* Plaguefist = GetClosestCreatureWithEntry(me, NPC_PLAGUEFIST, 85.0f))
+ DoScriptText(SAY_PLAGUEFIST, Plaguefist, pPlayer);
+ break;
+ case 9:
+ DoScriptText(SAY_EXEC_TIME_7, me, pPlayer);
+ me->SetStandState(UNIT_STAND_STATE_KNEEL);
+ me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_ATTACKABLE_2);
+ break;
+ case 10: DoScriptText(SAY_EXEC_WAITING, me, pPlayer); break;
+ case 11:
+ DoScriptText(EMOTE_DIES, me);
+ me->setDeathState(JUST_DIED);
+ me->SetHealth(0);
+ return;
+ }
+ break;
+ case RACE_UNDEAD_PLAYER:
+ switch(ExecuteSpeech_Counter)
+ {
+ case 0: DoScriptText(SAY_EXEC_START_1, me, pPlayer); break;
+ case 1: me->SetStandState(UNIT_STAND_STATE_STAND); break;
+ case 2: DoScriptText(SAY_EXEC_PROG_3, me, pPlayer); break;
+ case 3: DoScriptText(SAY_EXEC_NAME_1, me, pPlayer); break;
+ case 4: DoScriptText(SAY_EXEC_RECOG_4, me, pPlayer); break;
+ case 5: DoScriptText(SAY_EXEC_NOREM_3, me, pPlayer); break;
+ case 6: DoScriptText(SAY_EXEC_THINK_1, me, pPlayer); break;
+ case 7: DoScriptText(SAY_EXEC_LISTEN_3, me, pPlayer); break;
+ case 8:
+ if (Creature* Plaguefist = GetClosestCreatureWithEntry(me, NPC_PLAGUEFIST, 85.0f))
+ DoScriptText(SAY_PLAGUEFIST, Plaguefist, pPlayer);
+ break;
+ case 9:
+ DoScriptText(SAY_EXEC_TIME_4, me, pPlayer);
+ me->SetStandState(UNIT_STAND_STATE_KNEEL);
+ me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_ATTACKABLE_2);
+ break;
+ case 10: DoScriptText(SAY_EXEC_WAITING, me, pPlayer); break;
+ case 11:
+ DoScriptText(EMOTE_DIES, me);
+ me->setDeathState(JUST_DIED);
+ me->SetHealth(0);
+ return;
+ }
+ break;
+ case RACE_TAUREN:
+ switch(ExecuteSpeech_Counter)
+ {
+ case 0: DoScriptText(SAY_EXEC_START_1, me, pPlayer); break;
+ case 1: me->SetStandState(UNIT_STAND_STATE_STAND); break;
+ case 2: DoScriptText(SAY_EXEC_PROG_1, me, pPlayer); break;
+ case 3: DoScriptText(SAY_EXEC_NAME_1, me, pPlayer); break;
+ case 4: DoScriptText(SAY_EXEC_RECOG_5, me, pPlayer); break;
+ case 5: DoScriptText(SAY_EXEC_NOREM_8, me, pPlayer); break;
+ case 6: DoScriptText(SAY_EXEC_THINK_9, me, pPlayer); break;
+ case 7: DoScriptText(SAY_EXEC_LISTEN_1, me, pPlayer); break;
+ case 8:
+ if (Creature* Plaguefist = GetClosestCreatureWithEntry(me, NPC_PLAGUEFIST, 85.0f))
+ DoScriptText(SAY_PLAGUEFIST, Plaguefist, pPlayer);
+ break;
+ case 9:
+ DoScriptText(SAY_EXEC_TIME_9, me, pPlayer);
+ me->SetStandState(UNIT_STAND_STATE_KNEEL);
+ me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_ATTACKABLE_2);
+ break;
+ case 10: DoScriptText(SAY_EXEC_WAITING, me, pPlayer); break;
+ case 11:
+ DoScriptText(EMOTE_DIES, me);
+ me->setDeathState(JUST_DIED);
+ me->SetHealth(0);
+ return;
+ }
+ break;
+ case RACE_GNOME:
+ switch(ExecuteSpeech_Counter)
+ {
+ case 0: DoScriptText(SAY_EXEC_START_1, me, pPlayer); break;
+ case 1: me->SetStandState(UNIT_STAND_STATE_STAND); break;
+ case 2: DoScriptText(SAY_EXEC_PROG_4, me, pPlayer); break;
+ case 3: DoScriptText(SAY_EXEC_NAME_1, me, pPlayer); break;
+ case 4: DoScriptText(SAY_EXEC_RECOG_1, me, pPlayer); break;
+ case 5: DoScriptText(SAY_EXEC_NOREM_4, me, pPlayer); break;
+ case 6: DoScriptText(SAY_EXEC_THINK_6, me, pPlayer); break;
+ case 7: DoScriptText(SAY_EXEC_LISTEN_1, me, pPlayer); break;
+ case 8:
+ if (Creature* Plaguefist = GetClosestCreatureWithEntry(me, NPC_PLAGUEFIST, 85.0f))
+ DoScriptText(SAY_PLAGUEFIST, Plaguefist, pPlayer);
+ break;
+ case 9:
+ DoScriptText(SAY_EXEC_TIME_5, me, pPlayer);
+ me->SetStandState(UNIT_STAND_STATE_KNEEL);
+ me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_ATTACKABLE_2);
+ break;
+ case 10: DoScriptText(SAY_EXEC_WAITING, me, pPlayer); break;
+ case 11:
+ DoScriptText(EMOTE_DIES, me);
+ me->setDeathState(JUST_DIED);
+ me->SetHealth(0);
+ return;
+ }
+ break;
+ case RACE_TROLL:
+ switch(ExecuteSpeech_Counter)
+ {
+ case 0: DoScriptText(SAY_EXEC_START_3, me, pPlayer); break;
+ case 1: me->SetStandState(UNIT_STAND_STATE_STAND); break;
+ case 2: DoScriptText(SAY_EXEC_PROG_7, me, pPlayer); break;
+ case 3: DoScriptText(SAY_EXEC_NAME_2, me, pPlayer); break;
+ case 4: DoScriptText(SAY_EXEC_RECOG_6, me, pPlayer); break;
+ case 5: DoScriptText(SAY_EXEC_NOREM_9, me, pPlayer); break;
+ case 6: DoScriptText(SAY_EXEC_THINK_10, me, pPlayer); break;
+ case 7: DoScriptText(SAY_EXEC_LISTEN_4, me, pPlayer); break;
+ case 8:
+ if (Creature* Plaguefist = GetClosestCreatureWithEntry(me, NPC_PLAGUEFIST, 85.0f))
+ DoScriptText(SAY_PLAGUEFIST, Plaguefist, pPlayer);
+ break;
+ case 9:
+ DoScriptText(SAY_EXEC_TIME_10, me, pPlayer);
+ me->SetStandState(UNIT_STAND_STATE_KNEEL);
+ me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_ATTACKABLE_2);
+ break;
+ case 10: DoScriptText(SAY_EXEC_WAITING, me, pPlayer); break;
+ case 11:
+ DoScriptText(EMOTE_DIES, me);
+ me->setDeathState(JUST_DIED);
+ me->SetHealth(0);
+ return;
+ }
+ break;
+ case RACE_BLOODELF:
+ switch(ExecuteSpeech_Counter)
+ {
+ case 0: DoScriptText(SAY_EXEC_START_1, me, pPlayer); break;
+ case 1: me->SetStandState(UNIT_STAND_STATE_STAND); break;
+ case 2: DoScriptText(SAY_EXEC_PROG_1, me, pPlayer); break;
+ case 3: DoScriptText(SAY_EXEC_NAME_1, me, pPlayer); break;
+ case 4: DoScriptText(SAY_EXEC_RECOG_1, me, pPlayer); break;
+ //case 5: //unknown
+ case 6: DoScriptText(SAY_EXEC_THINK_3, me, pPlayer); break;
+ case 7: DoScriptText(SAY_EXEC_LISTEN_1, me, pPlayer); break;
+ case 8:
+ if (Creature* Plaguefist = GetClosestCreatureWithEntry(me, NPC_PLAGUEFIST, 85.0f))
+ DoScriptText(SAY_PLAGUEFIST, Plaguefist, pPlayer);
+ break;
+ case 9:
+ DoScriptText(SAY_EXEC_TIME_1, me, pPlayer);
+ me->SetStandState(UNIT_STAND_STATE_KNEEL);
+ me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_ATTACKABLE_2);
+ break;
+ case 10: DoScriptText(SAY_EXEC_WAITING, me, pPlayer); break;
+ case 11:
+ DoScriptText(EMOTE_DIES, me);
+ me->setDeathState(JUST_DIED);
+ me->SetHealth(0);
+ return;
+ }
+ break;
+ case RACE_DRAENEI:
+ switch(ExecuteSpeech_Counter)
+ {
+ case 0: DoScriptText(SAY_EXEC_START_1, me, pPlayer); break;
+ case 1: me->SetStandState(UNIT_STAND_STATE_STAND); break;
+ case 2: DoScriptText(SAY_EXEC_PROG_1, me, pPlayer); break;
+ case 3: DoScriptText(SAY_EXEC_NAME_1, me, pPlayer); break;
+ case 4: DoScriptText(SAY_EXEC_RECOG_2, me, pPlayer); break;
+ case 5: DoScriptText(SAY_EXEC_NOREM_1, me, pPlayer); break;
+ case 6: DoScriptText(SAY_EXEC_THINK_4, me, pPlayer); break;
+ case 7: DoScriptText(SAY_EXEC_LISTEN_1, me, pPlayer); break;
+ case 8:
+ if (Creature* Plaguefist = GetClosestCreatureWithEntry(me, NPC_PLAGUEFIST, 85.0f))
+ DoScriptText(SAY_PLAGUEFIST, Plaguefist, pPlayer);
+ break;
+ case 9:
+ DoScriptText(SAY_EXEC_TIME_2, me, pPlayer);
+ me->SetStandState(UNIT_STAND_STATE_KNEEL);
+ me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_ATTACKABLE_2);
+ break;
+ case 10: DoScriptText(SAY_EXEC_WAITING, me, pPlayer); break;
+ case 11:
+ DoScriptText(EMOTE_DIES, me);
+ me->setDeathState(JUST_DIED);
+ me->SetHealth(0);
+ return;
+ }
+ break;
+ }
+
+ if (ExecuteSpeech_Counter >= 9)
+ ExecuteSpeech_Timer = 15000;
+ else
+ ExecuteSpeech_Timer = 7000;
+
+ ++ExecuteSpeech_Counter;
+ }
+ else
+ ExecuteSpeech_Timer -= diff;
+ }
+ }
+};
+
+CreatureAI* GetAI_npc_a_special_surprise(Creature* pCreature)
+{
+ return new npc_a_special_surpriseAI(pCreature);
+}
+
+/*######
##Quest 12848
######*/
@@ -771,4 +1228,9 @@ void AddSC_the_scarlet_enclave()
newscript->Name="npc_dkc1_gothik";
newscript->GetAI = &GetAI_npc_dkc1_gothik;
newscript->RegisterSelf();
-} \ No newline at end of file
+
+ newscript = new Script;
+ newscript->Name = "npc_a_special_surprise";
+ newscript->GetAI = &GetAI_npc_a_special_surprise;
+ newscript->RegisterSelf();
+}