diff options
8 files changed, 394 insertions, 319 deletions
diff --git a/sql/FULL/world_script_texts.sql b/sql/FULL/world_script_texts.sql index f45ea8f603e..6e346ea51ee 100644 --- a/sql/FULL/world_script_texts.sql +++ b/sql/FULL/world_script_texts.sql @@ -1904,6 +1904,16 @@ INSERT INTO `script_texts` (`npc_entry`,`entry`,`content_default`,`content_loc1` (28860,-1615041,'A Vesperon Disciple appears in the Twilight!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,5,0,0,'shadron WHISPER_VESPERON_DICIPLE'), (28860,-1615042,'%s begins to open a Twilight Portal!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,5,0,0,'sartharion drake WHISPER_OPEN_PORTAL'), +-- -1 619 000 AHN'KAHET: THE OLD KINGDOM + (29308,-1619021,'I will feast on your remains.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,'prince taldaram SAY_AGGRO'), + (29308,-1619022,'I will drink no blood before it''s time.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,'prince taldaram SAY_SLAY_1'), + (29308,-1618023,'One final embrace.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,'prince taldaram SAY_SLAY_2'), + (29308,-1618024,'Still I hunger, still I thirst.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,'prince taldaram SAY_DEATH'), + (29308,-1618025,'So appetizing.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,'prince taldaram SAY_FEED1'), + (29308,-1618026,'Fresh, warm blood. It has been too long.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,'prince taldaram SAY_FEED2'), + (29308,-1618027,'Your heartbeat is music to my ears.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,'prince taldaram SAY_VANISH1'), + (29308,-1618028,'I am nowhere. I am everywhere. I am the watcher, unseen.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,'prince taldaram SAY_VANISH2'), + -- -1 999 900+ - RANDOM (0,-1999900,'Let the games begin.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,8280,1,0,0,'example_creature SAY_AGGRO'), (0,-1999901,'I see endless suffering. I see torment. I see rage. I see everything.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,8831,1,0,0,'example_creature SAY_RANDOM_0'), @@ -2202,7 +2212,7 @@ INSERT INTO `game_event_npc_gossip` (`guid`,`event_id`,`textid`) VALUES DELETE FROM `npc_text` WHERE `ID` IN (16000,16001); INSERT INTO `npc_text` (`ID`,`text0_0`,`text0_1`,`prob0`,`lang0`) VALUES (16000,'The current situation in the front lines look like this:$B$B Iron $2000w % $B Thorium $2001w % $B Stranglekeep $2002w % $B Arthas Tears $2003w % $B Light Leather $2004w % $B Medium Leather $2005w % $B Linen Bandages $2006w % $B Silk Bandages $2007w % $B Rainbow Fin Albacore $2008w % $B Roast Raptor $2009w % $B$B Allongside with the Horde, we managed to gather: $B Copper $2020w % $B Purple Lotus $2021w % $B Thick Leather $2022w % $B Runecloth Bandage $2023w % $B Spotted Yellowtail $2024w. $B that is the current state of the effort, Aid us $N.','The current situation in the front lines look like this:$B$B Iron $2000w % $B Thorium $2001w % $B Stranglekeep $2002w % $B Arthas Tears $2003w % $B Light Leather $2004w % $B Medium Leather $2005w % $B Linen Bandages $2006w % $B Silk Bandages $2007w % $B Rainbow Fin Albacore $2008w % $B Roast Raptor $2009w % $B$B Allongside with the Horde, we managed to gather: $B Copper $2020w % $B Purple Lotus $2021w % $B Thick Leather $2022w % $B Runecloth Bandage $2023w % $B Spotted Yellowtail $2024w. $B that is the current state of the effort, Aid us $N.',100,0), - (16001,'The current situation in the front lines look like this:$B$B Tin $2010w % $B Mithril $2011w % $B PeaceBloom $2012w % $B FireBloom $2013w % $B Heavy Leather $2014w % $B Rugged Leather $2015w % $B Wool Bandages $2016w % $B Mageweave Bandages $2017w % $B Lean Wolf Steaks $2018w % $B Baked Salmon $2019w % $B$B Allongside with the Alliance, we managed to gather: $B Copper $2020w % $B Purple Lotus $2021w % $B Thick Leather $2022w % $B Runecloth Bandage $2023w % $B Spotted Yellowtail $2024w. $B that is the current state of the effort, Aid us $N.','The current situation in the front lines look like this:$B$B Tin $2010w % $B Mithril $2011w % $B PeaceBloom $2012w % $B FireBloom $2013w % $B Heavy Leather $2014w % $B Rugged Leather $2015w % $B Wool Bandages $2016w % $B Mageweave Bandages $2017w % $B Lean Wolf Steaks $2018w % $B Baked Salmon $2019w % $B$B Allongside with the Alliance, we managed to gather: $B Copper $2020w % $B Purple Lotus $2021w % $B Thick Leather $2022w % $B Runecloth Bandage $2023w % $B Spotted Yellowtail $2024w. $B that is the current state of the effort, Aid us $N.',100,0); + (16001,'The current situation in the front lines look like this:$B$B Tin $2010w % $B Mithril $2011w % $B Peacebloom $2012w % $B Firebloom $2013w % $B Heavy Leather $2014w % $B Rugged Leather $2015w % $B Wool Bandages $2016w % $B Mageweave Bandages $2017w % $B Lean Wolf Steaks $2018w % $B Baked Salmon $2019w % $B$B Allongside with the Alliance, we managed to gather: $B Copper $2020w % $B Purple Lotus $2021w % $B Thick Leather $2022w % $B Runecloth Bandage $2023w % $B Spotted Yellowtail $2024w. $B that is the current state of the effort, Aid us $N.','The current situation in the front lines look like this:$B$B Tin $2010w % $B Mithril $2011w % $B Peacebloom $2012w % $B Firebloom $2013w % $B Heavy Leather $2014w % $B Rugged Leather $2015w % $B Wool Bandages $2016w % $B Mageweave Bandages $2017w % $B Lean Wolf Steaks $2018w % $B Baked Salmon $2019w % $B$B Allongside with the Alliance, we managed to gather: $B Copper $2020w % $B Purple Lotus $2021w % $B Thick Leather $2022w % $B Runecloth Bandage $2023w % $B Spotted Yellowtail $2024w. $B that is the current state of the effort, Aid us $N.',100,0); DELETE FROM `npc_gossip` WHERE `npc_guid` IN (135161,135162); INSERT INTO `npc_gossip` (`npc_guid`,`textid`) VALUES (135161,16000), diff --git a/sql/FULL/world_scripts_full.sql b/sql/FULL/world_scripts_full.sql index d8978930f12..10a3a56a3c4 100644 --- a/sql/FULL/world_scripts_full.sql +++ b/sql/FULL/world_scripts_full.sql @@ -173,9 +173,12 @@ UPDATE `creature_template` SET `ScriptName`='mob_voidtraveler' WHERE `entry`=192 /* AZJOL-NERUB */ /* AHN'KAHET: THE OLD KINGDOM */ +UPDATE `instance_template` SET `script`='instance_ahnkahet' WHERE `map`=619; UPDATE `creature_template` SET `ScriptName`='boss_elder_nadox' WHERE `entry`=29309; UPDATE `creature_template` SET `ScriptName`='mob_ahnkahar_nerubian' WHERE `entry` IN (30176,30178); -UPDATE `instance_template` SET `script`='instance_ahnkahet' WHERE `map`=619; +UPDATE `creature_template` SET `ScriptName`='boss_taldaram' WHERE `entry`=29308; +UPDATE `creature_template` SET `ScriptName`='mob_taldaram_flamesphere' WHERE `entry` IN (30106,31686,31687); +UPDATE `gameobject_template` SET `ScriptName`='prince_taldaram_sphere' WHERE `entry` IN (193093,193094); /* AZSHARA */ UPDATE `creature_template` SET `ScriptName`='mobs_spitelashes' WHERE `entry` IN (6190,6193,6194,6195,6196,7885,7886,12204,12205); @@ -1100,7 +1103,6 @@ UPDATE `creature_template` SET `ScriptName`='mob_lightning_elemental' WHERE `ent UPDATE `creature_template` SET `ScriptName`='mob_rune_of_summoning' WHERE `entry`=33051; UPDATE `creature_template` SET `ScriptName`='boss_kologarn' WHERE `entry`=32930; - /* UN'GORO CRATER */ UPDATE `creature_template` SET `ScriptName`='npc_ame' WHERE `entry`=9623; UPDATE `creature_template` SET `ScriptName`='npc_ringo' WHERE `entry`=9999; diff --git a/sql/updates/5700_world.sql b/sql/updates/5700_world.sql index 1722fbad843..f973d54a128 100644 --- a/sql/updates/5700_world.sql +++ b/sql/updates/5700_world.sql @@ -1,6 +1,4 @@ --- A LOT of this file needs to be included in TDB!! - -- Sunken temple (already in world_scripts_full.sql) UPDATE `instance_template` SET `script`='instance_sunken_temple' WHERE `map`=109; UPDATE `gameobject_template` SET `ScriptName`='go_atalai_statue' WHERE `entry` IN (148830,148831,148832,148833,148834,148835); @@ -13,7 +11,7 @@ INSERT INTO `areatrigger_scripts` (`entry`,`ScriptName`) VALUES (4017,'at_twilig UPDATE `creature_template` SET `ScriptName`='boss_twilight_corrupter' WHERE `entry`=15625; -- quest data: Long Forgotten Memories -UPDATE `quest_template` SET `method`=0 WHERE `entry`=8305; +-- TDB(???): UPDATE `quest_template` SET `method`=0 WHERE `entry`=8305; -- quest data: A pawn on the eternal board -- Already in world_scripts_full.sql UPDATE `gameobject_template` SET `ScriptName`='go_crystalline_tear' WHERE `entry`=180633; @@ -55,284 +53,13 @@ INSERT INTO `script_texts` (`npc_entry`,`entry`,`content_default`,`type`,`emote` (15378,-1350029,'Succumb to the endless dream, little ones. Let it consume you!',1,53,'MERITHRA_YELL_1'), (15378,-1350030,'glances at her compatriots.',2,2,'MERITHRA_EMOTE_1'); --- AQ Gates data -UPDATE `game_event` SET `end_time`='2020-12-30 22:00:00',`world_event`=1 WHERE `entry`=22; -UPDATE `game_event` SET `length`=0 WHERE `entry`=22; -INSERT INTO `game_event_creature` (`guid`, `event`) VALUES - (135121,22),(135122,22),(135123,22),(135124,22),(135125,22), - (135126,22),(135127,22),(135128,22),(135129,22),(135130,22), - (135131,22),(135132,22),(135133,22),(135134,22),(135135,22), - (135136,22),(135137,22),(135138,22),(135139,22),(135140,22), - (135141,22),(135142,22),(135143,22),(135144,22),(135145,22), - (135146,22),(135147,22),(135148,22),(135149,22),(135150,22), - (135151,22),(135152,22),(135153,22),(135154,22),(135155,22), - (135156,22),(135157,22),(135158,22),(135159,22),(135160,22), - (135161,22),(135162,22); - -INSERT INTO `creature` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`modelid`,`equipment_id`,`position_x`,`position_y`,`position_z`,`orientation`,`spawntimesecs`,`spawndist`,`currentwaypoint`,`curhealth`,`curmana`,`DeathState`,`MovementType`) VALUES --- Ironforge NPCs - (135121,15383,0,1,1,0,0,-4929.00,-1226.00,501.66,4.00,180,5,0,844,0,0,1), - (135122,15431,0,1,1,0,0,-4919.80,-1226.16,501.66,4.00,180,0,0,844,0,0,0), - (135123,15432,0,1,1,0,0,-4913.99,-1233.25,501.66,4.00,180,10,0,881,0,0,1), - (135124,15434,0,1,1,0,0,-4949.20,-1272.96,501.66,1.50,180,0,0,6100,0,0,0), - (135125,15437,0,1,1,0,0,-4943.54,-1278.49,501.66,1.50,180,0,0,2000,0,0,0), - (135126,15445,0,1,1,0,0,-4947.45,-1270.83,501.66,1.50,180,0,0,3900,0,0,0), - (135127,15446,0,1,1,0,0,-4979.34,-1171.01,501.66,4.50,180,0,0,6800,0,0,0), - (135128,15448,0,1,1,0,0,-4969.70,-1181.49,501.66,0.00,180,10,0,3400,0,0,1), - (135129,15450,0,1,1,0,0,-4976.90,-1183.89,501.66,0.00,180,10,0,881,0,0,1), - (135130,15451,0,1,1,0,0,-4990.51,-1157.65,501.66,5.00,180,0,0,844,0,0,0), - (135131,15452,0,1,1,0,0,-4980.24,-1152.63,501.66,5.00,180,10,0,2700,0,0,1), - (135132,15453,0,1,1,0,0,-4999.72,-1143.44,501.66,5.00,180,10,0,881,0,0,1), - (135133,15455,0,1,1,0,0,-4940.09,-1274.89,501.66,1.50,180,0,0,844,0,0,0), - (135134,15456,0,1,1,0,0,-4934.47,-1279.39,501.66,2.00,180,0,0,844,0,0,0), - (135135,15457,0,1,1,0,0,-4934.56,-1273.68,501.66,1.80,180,0,0,881,0,0,0), --- Orgrimmar NPCs - (135136,15459,1,1,1,0,0,1647.23,-4123.34,31.234,1.70,180,0,0,807,0,0,0), - (135137,15460,1,1,1,0,0,1663.15,-4113.42,34.156,1.70,180,0,0,844,0,0,0), - (135138,15469,1,1,1,0,0,1656.99,-4116.07,33.160,1.70,180,0,0,881,0,0,0), - (135139,15477,1,1,1,0,0,1616.93,-4143.40,34.560,1.50,180,0,0,5960,0,0,0), - (135140,15508,1,1,1,0,0,1623.98,-4148.34,35.990,1.70,180,0,0,6430,0,0,0), - (135141,15512,1,1,1,0,0,1630.03,-4152.75,38.420,1.90,180,0,0,5000,0,0,0), - (135142,15515,1,1,1,0,0,1586.35,-4181.89,40.310,3.14,180,0,0,5960,0,0,0), - (135143,15522,1,1,1,0,0,1590.62,-4159.70,36.920,3.14,180,0,0,5000,0,0,0), - (135144,15525,1,1,1,0,0,1594.49,-4172.66,39.220,3.00,180,0,0,5000,0,0,0), - (135145,15528,1,1,1,0,0,1580.69,-4119.78,34.440,4.61,180,0,0,5960,0,0,0), - (135146,15529,1,1,1,0,0,1572.15,-4122.62,36.280,4.85,180,0,0,5000,0,0,0), - (135147,15532,1,1,1,0,0,1567.91,-4127.32,37.000,5.02,180,0,0,5000,0,0,0), - (135148,15533,1,1,1,0,0,1641.95,-4086.75,36.700,4.72,180,0,0,807,0,0,0), - (135149,15534,1,1,1,0,0,1632.56,-4095.93,34.210,4.87,180,0,0,844,0,0,0), - (135150,15535,1,1,1,0,0,1630.00,-4108.75,29.400,5.12,180,7,0,15260,0,0,1), --- War Effort Commanders - (135151,15701,0,1,1,0,0,-4956.31,-1198.15,501.66,0.00,180,0,0,2900,0,0,2), - (135152,15700,1,1,1,0,0,1582.41,-4209.28,42.508,0.00,180,0,0,3400,0,0,2), --- War Effort Recruiters - (135153,15702,1,1,1,0,0,-1204.90,107.38,134.42,1.6,180,0,0,4120,0,0,0), - (135154,15703,0,1,1,0,0,1573.93,273.84,-43.1,5.3,180,0,0,1700,0,0,0), - (135155,15704,1,1,1,0,0,1648.18,-4405.40,17.43,0,180,15,0,6900,0,0,1), - (135156,15707,0,1,1,0,0,-4972.66,-945.77,501.66,5,180,0,0,1100,0,0,0), - (135157,15708,0,1,1,0,0,-8813.4,654.195,96.0776,4.5185,180,0,0,6900,0,0,0), - (135158,15709,1,1,1,0,0,9951.02,2482.53,1316.20,0,180,10,0,881,0,0,1), - (135159,21155,530,1,1,0,0,9526.54,-7189.49,16.14,1.57,180,0,0,6900,2434,0,0), - (135160,21156,530,1,1,0,0,-3934.23,-11606.23,-138.58,4.5,180,0,0,6900,0,0,0), --- War Effort Ambassadors - (135161,15539,0,1,1,0,0,-4984.12,-1205.16,501.66,3.14,180,0,0,1800,0,0,0), - (135162,15458,1,1,1,0,0,1632.00,-4116.88,31.24,1.7,180,0,0,910,0,0,0); - --- War Effort Commanders paths -INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`) VALUES - (1351510,1,-4992.88,-1148.14,501.66), - (1351510,2,-5018.99,-1182.52,501.66), - (1351510,3,-4981.63,-1217.63,501.66), - (1351510,4,-4941.99,-1263.46,501.66), - (1351510,5,-4920.39,-1242.94,501.66), - (1351510,6,-4896.23,-1254.96,501.87), - (1351510,7,-4920.39,-1242.94,501.66), - (1351510,8,-4945.89,-1206.33,501.66), - (1351510,9,-4933.98,-1176.06,501.68), - (1351510,10,-4956.31,-1198.15,501.66), - (1351520,1,1582.41,-4209.28,42.51), - (1351520,2,1577.13,-4173.25,43.28), - (1351520,3,1604.33,-4124.16,29.67), - (1351520,4,1659.62,-4097.64,33.62), - (1351520,5,1697.91,-4085.99,39.23), - (1351520,6,1660.63,-4095.52,34.52), - (1351520,7,1602.48,-4123.29,29.58), - (1351520,8,1576.30,-4176.98,37.99); - --- War Effort Commanders Mounts -INSERT INTO `creature_template_addon` (`entry`,`mount`) VALUES - (15701,14347), - (15700,14573), - (15458,14346), - (15539,14575); -UPDATE `creature_template` SET `MovementType`=2 WHERE `entry` IN(15700,15701); -UPDATE `creature` SET `spawnMask`=0 WHERE `guid`=86424; -UPDATE `creature_template` SET `faction_A`=64,`faction_H`=64 WHERE `entry`=15707; -DELETE `creature_questrelation` FROM `creature_questrelation` WHERE `id`=15452; -DELETE `creature_involvedrelation` FROM `creature_involvedrelation` WHERE `id`=15452; -INSERT INTO `creature_questrelation` (`id`,`quest`) VALUES -(15452,8520),(15452,8521); -INSERT INTO `creature_involvedrelation` (`id`,`quest`) VALUES -(15452,8520),(15452,8521); -UPDATE `quest_template` SET `PrevQuestId`=0 WHERE `entry`=8520; -INSERT INTO `game_event_quest_condition` (`quest`,`event_id`,`condition_id`,`num`) VALUES --- Alliance only quests - (8495,22,1,20),(8494,22,1,20), - (8500,22,2,20),(8499,22,2,20), - (8504,22,3,20),(8503,22,3,20), - (8510,22,4,20),(8509,22,4,20), - (8512,22,5,10),(8511,22,5,10), - (8514,22,6,10),(8513,22,6,10), - (8518,22,7,20),(8517,22,7,20), - (8521,22,8,20),(8520,22,8,20), - (8525,22,9,20),(8524,22,9,20), - (8527,22,10,20),(8526,22,10,20), --- Horde only Quests - (8543,22,11,20),(8542,22,11,20), - (8546,22,12,20),(8545,22,12,20), - (8550,22,13,20),(8549,22,13,20), - (8583,22,14,20),(8582,22,14,20), - (8589,22,15,10),(8588,22,15,10), - (8601,22,16,10),(8600,22,16,10), - (8605,22,17,20),(8604,22,17,20), - (8608,22,18,20),(8607,22,18,20), - (8612,22,19,20),(8611,22,19,20), - (8616,22,20,20),(8615,22,20,20), --- Shared quests - (8493,22,21,20),(8492,22,21,20),(8533,22,21,20),(8532,22,21,20), - (8506,22,22,20),(8505,22,22,20),(8581,22,22,20),(8580,22,22,20), - (8516,22,23,10),(8515,22,23,10),(8591,22,23,10),(8590,22,23,10), - (8523,22,24,20),(8522,22,24,20),(8610,22,24,20),(8609,22,24,20), - (8529,22,25,20),(8528,22,25,20),(8614,22,25,20),(8613,22,25,20); -INSERT INTO `game_event_condition` (`event_id`,`condition_id`,`req_num`,`max_world_state_field`,`done_world_state_field`,`description`) VALUES --- Alliance reqs - (22,1,28000,0,2000,'Iron'), - (22,2,24000,0,2001,'Thorium'), - (22,3,33000,0,2002,'Stranglekeep'), - (22,4,20000,0,2003,'Arthas Tears'), - (22,5,180000,0,2004,'Light Leather'), - (22,6,110000,0,2005,'Medium Leather'), - (22,7,800000,0,2006,'Linen Bandages'), - (22,8,600000,0,2007,'Silk Bandages'), - (22,9,14000,0,2008,' Rainbow Fin Albacore'), - (22,10,20000,0,2009,'Roast Raptor'), --- Horde reqs - (22,11,22000,0,2010,'Tin Bars'), - (22,12,18000,0,2011,'Mithril Bars'), - (22,13,96000,0,2012,'PeaceBloom'), - (22,14,19000,0,2013,'FireBloom'), - (22,15,60000,0,2014,'Heavy Leather'), - (22,16,60000,0,2015,'Rugged Leather'), - (22,17,250000,0,2016,'Wool Bandages'), - (22,18,250000,0,2017,'Mageweave Bandages'), - (22,19,10000,0,2018,'Lean Wolf Steaks'), - (22,20,10000,0,2019,'Baked Salmon'), --- World Reqs - (22,21,90000,0,2020,'Copper'), - (22,22,26000,0,2021,'Purple Lotus'), - (22,23,80000,0,2022,'Thick Leather'), - (22,24,400000,0,2023,'Runecloth Bandages'), - (22,25,17000,0,2024,'Spotted Yellowtail'); - -- Already in world_script_texts.sql INSERT INTO `game_event_npc_gossip` (`guid`,`event_id`,`textid`) VALUES (135161,22,16000), (135162,22,16001); INSERT INTO `npc_text` (`ID`,`text0_0`,`text0_1`,`prob0`,`lang0`) VALUES (16000,'The current situation in the front lines look like this:$B$B Iron $2000w % $B Thorium $2001w % $B Stranglekeep $2002w % $B Arthas Tears $2003w % $B Light Leather $2004w % $B Medium Leather $2005w % $B Linen Bandages $2006w % $B Silk Bandages $2007w % $B Rainbow Fin Albacore $2008w % $B Roast Raptor $2009w % $B$B Allongside with the Horde, we managed to gather: $B Copper $2020w % $B Purple Lotus $2021w % $B Thick Leather $2022w % $B Runecloth Bandage $2023w % $B Spotted Yellowtail $2024w. $B that is the current state of the effort, Aid us $N.','The current situation in the front lines look like this:$B$B Iron $2000w % $B Thorium $2001w % $B Stranglekeep $2002w % $B Arthas Tears $2003w % $B Light Leather $2004w % $B Medium Leather $2005w % $B Linen Bandages $2006w % $B Silk Bandages $2007w % $B Rainbow Fin Albacore $2008w % $B Roast Raptor $2009w % $B$B Allongside with the Horde, we managed to gather: $B Copper $2020w % $B Purple Lotus $2021w % $B Thick Leather $2022w % $B Runecloth Bandage $2023w % $B Spotted Yellowtail $2024w. $B that is the current state of the effort, Aid us $N.',100,0), - (16001,'The current situation in the front lines look like this:$B$B Tin $2010w % $B Mithril $2011w % $B PeaceBloom $2012w % $B FireBloom $2013w % $B Heavy Leather $2014w % $B Rugged Leather $2015w % $B Wool Bandages $2016w % $B Mageweave Bandages $2017w % $B Lean Wolf Steaks $2018w % $B Baked Salmon $2019w % $B$B Allongside with the Alliance, we managed to gather: $B Copper $2020w % $B Purple Lotus $2021w % $B Thick Leather $2022w % $B Runecloth Bandage $2023w % $B Spotted Yellowtail $2024w. $B that is the current state of the effort, Aid us $N.','The current situation in the front lines look like this:$B$B Tin $2010w % $B Mithril $2011w % $B PeaceBloom $2012w % $B FireBloom $2013w % $B Heavy Leather $2014w % $B Rugged Leather $2015w % $B Wool Bandages $2016w % $B Mageweave Bandages $2017w % $B Lean Wolf Steaks $2018w % $B Baked Salmon $2019w % $B$B Allongside with the Alliance, we managed to gather: $B Copper $2020w % $B Purple Lotus $2021w % $B Thick Leather $2022w % $B Runecloth Bandage $2023w % $B Spotted Yellowtail $2024w. $B that is the current state of the effort, Aid us $N.',100,0); + (16001,'The current situation in the front lines look like this:$B$B Tin $2010w % $B Mithril $2011w % $B Peacebloom $2012w % $B Firebloom $2013w % $B Heavy Leather $2014w % $B Rugged Leather $2015w % $B Wool Bandages $2016w % $B Mageweave Bandages $2017w % $B Lean Wolf Steaks $2018w % $B Baked Salmon $2019w % $B$B Allongside with the Alliance, we managed to gather: $B Copper $2020w % $B Purple Lotus $2021w % $B Thick Leather $2022w % $B Runecloth Bandage $2023w % $B Spotted Yellowtail $2024w. $B that is the current state of the effort, Aid us $N.','The current situation in the front lines look like this:$B$B Tin $2010w % $B Mithril $2011w % $B Peacebloom $2012w % $B Firebloom $2013w % $B Heavy Leather $2014w % $B Rugged Leather $2015w % $B Wool Bandages $2016w % $B Mageweave Bandages $2017w % $B Lean Wolf Steaks $2018w % $B Baked Salmon $2019w % $B$B Allongside with the Alliance, we managed to gather: $B Copper $2020w % $B Purple Lotus $2021w % $B Thick Leather $2022w % $B Runecloth Bandage $2023w % $B Spotted Yellowtail $2024w. $B that is the current state of the effort, Aid us $N.',100,0); INSERT INTO `npc_gossip` (`npc_guid`,`textid`) VALUES (135161,16000), (135162,16001); - -UPDATE `creature_template` SET `npcflag`=1 WHERE `entry`=15458; -INSERT INTO `creature_questrelation` (`id`,`quest`) VALUES - (15535,8616); -INSERT INTO `creature_involvedrelation` (`id`,`quest`) VALUES - (15535,8616); -UPDATE `quest_template` SET `SpecialFlags`=1 WHERE `entry` IN - (8495,8500,8504,8510,8512,8514,8518,8521,8525,8527,8543,8546,8550,8583,8589,8601,8605,8608,8612,8616,8493,8533,8506,8581,8516,8591,5824,8610,8529,8614); -INSERT INTO `game_event` (`entry`,`start_time`,`end_time`,`occurence`,`length`,`description`,`world_event`) VALUES - (75,'0000-00-00 00:00:00','2020-12-30 22:00:00',5184000,14400,'AQ War Effort - The Transfer',1); -INSERT INTO `game_event_prerequisite` (`event_id`,`prerequisite_event`) VALUES - (75,22),(76,75),(77,76); -INSERT INTO `game_event_creature` (`guid`, `event`) VALUES - (135163,75); -INSERT INTO `creature` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`modelid`,`equipment_id`,`position_x`,`position_y`,`position_z`,`orientation`,`spawntimesecs`,`spawndist`,`currentwaypoint`,`curhealth`,`curmana`,`DeathState`,`MovementType`) VALUES - (135163,1,0,1,1,0,0,-8813.4,654.195,96.0776,4.5185,180,0,0,7000000,0,0,0); -INSERT INTO `game_event` (`entry`,`start_time`,`end_time`,`occurence`,`length`,`description`,`world_event`) VALUES - (76,'0000-00-00 00:00:00','2020-12-30 22:00:00',5184000,0,'AQ War Effort - Armies Gathered',1), - (77,'0000-00-00 00:00:00','2020-12-30 22:00:00',5184000,720,'AQ War Effort - Gong Time',1); -INSERT INTO `game_event_quest_condition` (`quest`,`event_id`,`condition_id`,`num`) VALUES - (8743,76,1,1); -INSERT INTO `game_event_condition` (`event_id`,`condition_id`,`req_num`,`max_world_state_field`,`done_world_state_field`,`description`) VALUES - (76,1,1,0,0,'First Banger!'); -INSERT INTO `game_event_gameobject_quest` (`id`,`quest`,`event`) VALUES - (180717,8743,76),(180717,8743,77); -INSERT INTO `gameobject_involvedrelation` (`id`,`quest`) VALUES - (180717,8743); -INSERT INTO `gameobject_questrelation` (`id`,`quest`) VALUES - (180717,8743); -INSERT INTO `game_event_gameobject` (`guid`,`event`) VALUES - (100000,76),(100001,77),(49451,-77); -INSERT INTO `gameobject` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`position_x`,`position_y`,`position_z`,`orientation`,`rotation0`,`rotation1`,`rotation2`,`rotation3`,`spawntimesecs`,`animprogress`,`state`) VALUES - (100000,180717,1,1,1,-8069.05,1641.72,27.03,-1.53589,0,0,0.694658,-0.71934,900,100,1), - (100001,180717,1,1,1,-8069.05,1641.72,27.03,-1.53589,0,0,0.694658,-0.71934,900,100,1); --- quest data: Bang a gong! -UPDATE `quest_template` SET `CharTitleId`=46 WHERE `entry`=8743; -UPDATE `quest_template` SET `Method`=0 WHERE `entry`=8743; -UPDATE `quest_template` SET `Type`=82 WHERE `entry`=8743; -UPDATE `quest_template` SET `QuestFlags`=2 WHERE `entry`=8743; -UPDATE `gameobject_template` SET `type`=10 WHERE `entry`=180718; -UPDATE `gameobject_template` SET `type`=2 WHERE `entry`=180717; -UPDATE `gameobject_template` SET `flags`=0 WHERE `entry`=180717; --- AQ Doors -INSERT INTO `game_event_gameobject` (`guid`,`event`) VALUES - (100002,22),(100003,22),(100004,22), - (100005,75),(100006,75),(100007,75), - (100008,76),(100009,76),(100010,76); -INSERT INTO `gameobject` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`position_x`,`position_y`,`position_z`,`orientation`,`rotation0`,`rotation1`,`rotation2`,`rotation3`,`spawntimesecs`,`animprogress`,`state`) VALUES - (100002,176148,1,1,1,-8130,1525,17.5,0,0,0,0,0,10,100,1), - (100003,176147,1,1,1,-8130,1525,17.5,0,0,0,0,0,10,100,1), - (100004,176146,1,1,1,-8130,1525,17.5,0,0,0,0,0,10,100,1), - (100005,176148,1,1,1,-8130,1525,17.5,0,0,0,0,0,10,100,1), - (100006,176147,1,1,1,-8130,1525,17.5,0,0,0,0,0,10,100,1), - (100007,176146,1,1,1,-8130,1525,17.5,0,0,0,0,0,10,100,1), - (100008,176148,1,1,1,-8130,1525,17.5,0,0,0,0,0,10,100,1), - (100009,176147,1,1,1,-8130,1525,17.5,0,0,0,0,0,10,100,1), - (100010,176146,1,1,1,-8130,1525,17.5,0,0,0,0,0,10,100,1); -INSERT INTO `game_event_creature` (`guid`,`event`) VALUES - (135164,77),(135165,77),(135166,77),(135167,77),(135168,77), - (135169,77),(135170,77),(135171,77),(135172,77),(135173,77), - (135174,77),(135175,77),(135176,77),(135177,77),(135178,77), - (135179,77),(135180,77),(135181,77),(135182,77),(135183,77), - (135184,77),(135185,77),(135186,77),(135187,77),(135188,77), - (135189,77),(135190,77),(135191,77),(135192,77),(135193,77), - (135194,77),(135195,77),(135196,77),(135197,77),(135198,77), - (135199,77),(135200,77); -INSERT INTO `creature` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`modelid`,`equipment_id`,`position_x`,`position_y`,`position_z`,`orientation`,`spawntimesecs`,`spawndist`,`currentwaypoint`,`curhealth`,`curmana`,`DeathState`,`MovementType`) VALUES --- General Rajaxx - (135164,15341,1,1,1,0,0,-8130.05,1525.05,37.90,0,180,0,0,416375,0,0,0), --- Hive Collossus - (135165,15740,1,1,1,0,0,-7298.00,1665.00,-35.6,-1.53589,180,200,0,3331000,0,0,1), - (135166,15741,1,1,1,0,0,-7782.50,516.72,-39.85,-1.53589,180,200,0,3331000,0,0,1), - (135167,15742,1,1,1,0,0,-6530.05,977.13,0.43,-1.53589,180,200,0,3331000,0,0,1), --- Anubisah Colossus - (135168,15743,1,1,1,0,0,-8055.51,1478.02,2.60,-1.53589,180,20,0,356070,0,0,1), - (135169,15743,1,1,1,0,0,-8062.05,1527.77,2.61,0,180,15,0,356070,0,0,1), - (135170,15743,1,1,1,0,0,-8006.14,1556.79,2.63,0,180,15,0,356070,0,0,1), - (135171,15743,1,1,1,0,0,-7971.34,1436.62,27.03,-0.15,180,35,0,356070,0,0,1), - (135172,15743,1,1,1,0,0,-8192.27,1628.45,2.59,-1.53589,180,5,0,356070,0,0,1), - (135173,15743,1,1,1,0,0,-8256.22,1528.53,-4.49,0,180,25,0,356070,0,0,1), - (135174,15743,1,1,1,0,0,-8272.40,1436.73,9.99,1,180,10,0,356070,0,0,1), --- Qiraji Champions - (135175,15252,1,1,1,0,0,-8117.14,1512.34,3.88,0,180,0,0,266480,0,0,0), - (135176,15252,1,1,1,0,0,-8116.27,1536.37,3.48,0,180,0,0,266480,0,0,0), --- Anubisath Sentinels - (135177,15264,1,1,1,0,0,-8090.60,1576.85,14.33,0,180,0,0,110040,0,0,0), - (135178,15264,1,1,1,0,0,-8041.13,1579.14,13.88,3.1415,180,0,0,110040,0,0,0), - (135179,15264,1,1,1,0,0,-8271.16,1681.18,25.95,-0.79,180,0,0,110040,0,0,0), - (135180,15264,1,1,1,0,0,-8288.46,1661.79,24.99,-0.79,180,0,0,110040,0,0,0), - (135181,15264,1,1,1,0,0,-8289.26,1715.53,25.29,0.79,180,0,0,110040,0,0,0), - (135182,15264,1,1,1,0,0,-8324.89,1677.27,25.84,-2.20,180,0,0,110040,0,0,0), --- Anubisath Defender - (135183,15277,1,1,1,0,0,-8149.52,1525.93,4.41,0,180,0,0,485550,0,0,0), --- Qiraji Warriors - (135184,15537,1,1,1,0,0,-8167.79,1504.59,7.49,0.42,180,15,0,38844,0,0,1), - (135185,15537,1,1,1,0,0,-8175.52,1521.04,4.19,0,180,15,0,38844,0,0,1), - (135186,15537,1,1,1,0,0,-8158.94,1543.86,4.28,-0.2,180,15,0,38844,0,0,1), - (135187,15537,1,1,1,0,0,-8180.07,1562.58,2.36,-0.4,180,15,0,38844,0,0,1), - (135188,15537,1,1,1,0,0,-8226.91,1592.79,4.37,-0.3,180,15,0,38844,0,0,1), - (135189,15537,1,1,1,0,0,-8262.60,1639.70,17.45,-1.53589,180,15,0,38844,0,0,1), - (135190,15537,1,1,1,0,0,-8270.04,1592.54,9.25,-0.2,180,15,0,38844,0,0,1), - (135191,15537,1,1,1,0,0,-8204.95,1558.74,4.02,-0.15,180,15,0,38844,0,0,1), - (135192,15537,1,1,1,0,0,-8193.70,1513.13,5.02,0.2,180,15,0,38844,0,0,1), - (135193,15537,1,1,1,0,0,-8196.39,1536.41,4.25,0,180,15,0,38844,0,0,1), - (135194,15537,1,1,1,0,0,-8216.25,1533.89,1.44,0,180,15,0,38844,0,0,1), - (135195,15537,1,1,1,0,0,-8258.04,1565.02,-5.00,0,180,15,0,38844,0,0,1), - (135196,15537,1,1,1,0,0,-8295.32,1518.27,0.16,0,180,15,0,38844,0,0,1), - (135197,15537,1,1,1,0,0,-8193.51,1438.81,2.33,0.7,180,15,0,38844,0,0,1), - (135198,15537,1,1,1,0,0,-8245.27,1453.14,6.33,0.3,180,15,0,38844,0,0,1), - (135199,15537,1,1,1,0,0,-8269.06,1480.93,5.85,0,180,15,0,38844,0,0,1), - (135200,15537,1,1,1,0,0,-8319.30,1474.29,6.55,0,180,15,0,38844,0,0,1); - diff --git a/sql/updates/5713_world_prince_taldaram.sql b/sql/updates/5713_world_prince_taldaram.sql new file mode 100644 index 00000000000..69d23ad2d9a --- /dev/null +++ b/sql/updates/5713_world_prince_taldaram.sql @@ -0,0 +1,13 @@ + +UPDATE `creature_template` SET `ScriptName`='boss_taldaram' WHERE `entry`=29308; +UPDATE `creature_template` SET `ScriptName`='mob_taldaram_flamesphere' WHERE `entry` IN (30106,31686,31687); +UPDATE `gameobject_template` SET `ScriptName`='prince_taldaram_sphere' WHERE `entry` IN (193093,193094); +INSERT INTO `script_texts` (`npc_entry`,`entry`,`content_default`,`sound`,`type`,`language`,`emote`,`comment`) VALUES + (29308,-1619021,'I will feast on your remains.',0,0,0,0,'prince taldaram SAY_AGGRO'), + (29308,-1619022,'I will drink no blood before it''s time.',0,0,0,0,'prince taldaram SAY_SLAY_1'), + (29308,-1618023,'One final embrace.',0,0,0,0,'prince taldaram SAY_SLAY_2'), + (29308,-1618024,'Still I hunger, still I thirst.',0,0,0,0,'prince taldaram SAY_DEATH'), + (29308,-1618025,'So appetizing.',0,0,0,0,'prince taldaram SAY_FEED1'), + (29308,-1618026,'Fresh, warm blood. It has been too long.',0,0,0,0,'prince taldaram SAY_FEED2'), + (29308,-1618027,'Your heartbeat is music to my ears.',0,0,0,0,'prince taldaram SAY_VANISH1'), + (29308,-1618028,'I am nowhere. I am everywhere. I am the watcher, unseen.',0,0,0,0,'prince taldaram SAY_VANISH2'); diff --git a/src/bindings/scripts/scripts/northrend/azjol_nerub/ahnkahet/boss_prince_taldaram.cpp b/src/bindings/scripts/scripts/northrend/azjol_nerub/ahnkahet/boss_prince_taldaram.cpp index 511e1f2629a..605219e59e1 100644 --- a/src/bindings/scripts/scripts/northrend/azjol_nerub/ahnkahet/boss_prince_taldaram.cpp +++ b/src/bindings/scripts/scripts/northrend/azjol_nerub/ahnkahet/boss_prince_taldaram.cpp @@ -18,7 +18,7 @@ /* ScriptData SDName: boss_prince_taldaram -SDAuthor: LordVanMartin +SDAuthor: Tartalo & tlexii SD%Complete: 0 SDComment: SDCategory: Ahn'kahet @@ -33,65 +33,294 @@ EndScriptData */ #define SPELL_FLAME_SPHERE_SUMMON_1 55895// 1x 30106 #define H_SPELL_FLAME_SPHERE_SUMMON_1 59511// 1x 31686 #define H_SPELL_FLAME_SPHERE_SUMMON_2 59512// 1x 31687 -#define SPELL_FLAME_SPHERE_SPAWN_EFFEKT 55891 +#define SPELL_FLAME_SPHERE_SPAWN_EFFECT 55891 #define SPELL_FLAME_SPHERE_VISUAL 55928 #define SPELL_FLAME_SPHERE_PERIODIC 55926 #define H_SPELL_FLAME_SPHERE_PERIODIC 59508 -#define SPELL_FLAME_SPHERE_DEATH_EFFEKT 55947 +#define SPELL_FLAME_SPHERE_DEATH_EFFECT 55947 +#define SPELL_BEAM_VISUAL 60342 #define SPELL_EMBRACE_OF_THE_VAMPYR 55959 #define H_SPELL_EMBRACE_OF_THE_VAMPYR 59513 #define SPELL_VANISH 55964 +#define CREATURE_FLAME_SPHERE 30106 +#define H_CREATURE_FLAME_SPHERE_1 31686 +#define H_CREATURE_FLAME_SPHERE_2 31687 + +#define DATA_EMBRACE_DMG 20000 +#define H_DATA_EMBRACE_DMG 40000 + +#define DATA_GROUND_POSITION_Z 11.4 +#define DATA_SPHERE_DISTANCE 100.0 + //not in db //Yell #define SAY_AGGRO -1619021 #define SAY_SLAY_1 -1619022 #define SAY_SLAY_2 -1619023 -#define SAY_SLAY_3 -1619024 -#define SAY_DEATH -1619025 -#define SAY_FEED_1 -1619026 -#define SAY_FEED_2 -1619027 -#define SAY_VANISH_1 -1619028 -#define SAY_VANISH_2 -1619029 +#define SAY_DEATH -1619024 +#define SAY_FEED_1 -1619025 +#define SAY_FEED_2 -1619026 +#define SAY_VANISH_1 -1619027 +#define SAY_VANISH_2 -1619028 + +enum CombatPhase +{ + NORMAL, + CASTING_FLAME_SPHERES, + JUST_VANISHED, + VANISHED, + FEEDING +}; struct TRINITY_DLL_DECL boss_taldaramAI : public ScriptedAI { - boss_taldaramAI(Creature *c) : ScriptedAI(c) {} + boss_taldaramAI(Creature *c) : ScriptedAI(c) + { + pInstance = c->GetInstanceData(); + m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE); + m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); + } + + uint32 uiBloodthirstTimer; + uint32 uiVanishTimer; + uint32 uiWaitTimer; + uint32 uiEmbraceTimer; + uint32 uiEmbraceTakenDamage; + uint32 uiFlamesphereTimer; + uint32 uiPhaseTimer; + + uint64 uiSphereGuids[2]; - void Reset() {} + Unit *pEmbraceTarget; + + CombatPhase Phase; + + ScriptedInstance* pInstance; + + void Reset() + { + uiBloodthirstTimer = 10000; + uiVanishTimer = (25 + rand()%10)*1000; + uiEmbraceTimer = 20000; + uiFlamesphereTimer = 5000; + uiEmbraceTakenDamage = 0; + Phase = NORMAL; + uiPhaseTimer = 0; + pEmbraceTarget = NULL; + if (pInstance) + pInstance->SetData(DATA_PRINCE_TALDARAM_EVENT, NOT_STARTED); + } + void EnterCombat(Unit* who) { - DoScriptText(SAY_AGGRO, m_creature); + if (pInstance) + pInstance->SetData(DATA_PRINCE_TALDARAM_EVENT, IN_PROGRESS); + DoScriptText(SAY_AGGRO, m_creature); } - void AttackStart(Unit* who) {} - void MoveInLineOfSight(Unit* who) {} + void UpdateAI(const uint32 diff) { - //Return since we have no target if (!UpdateVictim()) return; - - DoMeleeAttackIfReady(); + if (uiPhaseTimer < diff) + { + switch (Phase) + { + case CASTING_FLAME_SPHERES: + //DoCast(m_creature, SPELL_FLAME_SPHERE_SUMMON_1); + DoSpawnCreature(CREATURE_FLAME_SPHERE, 0, 0, 5, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 10000); + if (HeroicMode) + { + //DoCast(m_creature, H_SPELL_FLAME_SPHERE_SUMMON_1); + DoSpawnCreature(H_CREATURE_FLAME_SPHERE_1, 0, 0, 5, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 10000); + //DoCast(m_creature, H_SPELL_FLAME_SPHERE_SUMMON_2); + DoSpawnCreature(H_CREATURE_FLAME_SPHERE_2, 0, 0, 5, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 10000); + } + Phase = NORMAL; + uiPhaseTimer = 0; + break; + case JUST_VANISHED: + DoModifyThreatPercent(pEmbraceTarget, 100); + DoTeleportTo(pEmbraceTarget->GetPositionX(),pEmbraceTarget->GetPositionY(),pEmbraceTarget->GetPositionZ()); + Phase = VANISHED; + uiPhaseTimer = 1400; + break; + case VANISHED: + DoCast(pEmbraceTarget,HeroicMode ? H_SPELL_EMBRACE_OF_THE_VAMPYR : SPELL_EMBRACE_OF_THE_VAMPYR ); + Phase = FEEDING; + uiPhaseTimer = 20000; + break; + case FEEDING: + Phase = NORMAL; + uiPhaseTimer = 0; + pEmbraceTarget = NULL; + break; + case NORMAL: + if (uiBloodthirstTimer < diff) + { + DoCast(m_creature->getVictim(),SPELL_BLOODTHIRST); + uiBloodthirstTimer = 10000; + } else uiBloodthirstTimer -= diff; + + if (uiFlamesphereTimer < diff) + { + DoCast(m_creature, SPELL_CONJURE_FLAME_SPHERE); + Phase = CASTING_FLAME_SPHERES; + uiPhaseTimer = 3000 + diff; + uiFlamesphereTimer = 15000; + } else uiFlamesphereTimer -= diff; + + if (uiVanishTimer < diff ) + { + //Count alive players + Unit *target = NULL; + std::list<HostilReference *> t_list = m_creature->getThreatManager().getThreatList(); + std::vector<Unit *> target_list; + for(std::list<HostilReference *>::iterator itr = t_list.begin(); itr!= t_list.end(); ++itr) + { + target = Unit::GetUnit(*m_creature, (*itr)->getUnitGuid()); + // exclude pets & totems + if (target && target->GetTypeId() == TYPEID_PLAYER && target->isAlive()) + target_list.push_back(target); + target = NULL; + } + //He only vanishes if there are 3 or more alive players + if (target_list.size() > 2) + { + DoScriptText(RAND(SAY_VANISH_1,SAY_VANISH_2), m_creature); + DoCast(m_creature,SPELL_VANISH); + Phase = JUST_VANISHED; + uiPhaseTimer = 1000; + pEmbraceTarget = SelectUnit(SELECT_TARGET_RANDOM, 0); + while (pEmbraceTarget && pEmbraceTarget->GetTypeId() != TYPEID_PLAYER) + pEmbraceTarget = SelectUnit(SELECT_TARGET_RANDOM, 0); + } + uiVanishTimer = (25 + rand()%10)*1000; + } else uiVanishTimer -= diff; + + DoMeleeAttackIfReady(); + break; + } + } else uiPhaseTimer -= diff; } + + void DamageTaken(Unit* done_by, uint32 &damage) + { + if (Phase == FEEDING && pEmbraceTarget && pEmbraceTarget->isAlive()) + { + uiEmbraceTakenDamage += damage; + if (uiEmbraceTakenDamage > (HeroicMode ? H_DATA_EMBRACE_DMG : DATA_EMBRACE_DMG)) + { + Phase = NORMAL; + uiPhaseTimer = 0; + pEmbraceTarget = NULL; + m_creature->CastStop(); + } + } + } + void JustDied(Unit* killer) { DoScriptText(SAY_DEATH, m_creature); + + if (pInstance) + pInstance->SetData(DATA_PRINCE_TALDARAM_EVENT, DONE); } void KilledUnit(Unit *victim) { if (victim == m_creature) return; + if (Phase == FEEDING && pEmbraceTarget && victim == pEmbraceTarget) + { + Phase = NORMAL; + uiPhaseTimer = 0; + pEmbraceTarget = NULL; + } + DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2), m_creature); + } + + bool CheckSpheres() + { + if(!pInstance) + return false; + uiSphereGuids[0] = pInstance->GetData64(DATA_SPHERE1); + uiSphereGuids[1] = pInstance->GetData64(DATA_SPHERE2); + + GameObject *pSpheres[2]; + for (uint8 i=0; i < 2; ++i) + { + pSpheres[i] = pInstance->instance->GetGameObject(uiSphereGuids[i]); + if (!pSpheres[i]) + return false; + if (pSpheres[i]->GetGoState() != GO_STATE_ACTIVE) + return false; + } + RemovePrison(); + return true; + } + + void RemovePrison() + { + m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE); + m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); + m_creature->RemoveAurasDueToSpell(SPELL_BEAM_VISUAL); + m_creature->SetHomePosition(m_creature->GetPositionX(), m_creature->GetPositionY(), DATA_GROUND_POSITION_Z, m_creature->GetOrientation()); + uint64 prison_GUID = pInstance->GetData64(DATA_PRINCE_TALDARAM_PLATFORM); + pInstance->HandleGameObject(prison_GUID,true); + } +}; - switch(rand()%3) +struct TRINITY_DLL_DECL mob_taldaram_flamesphereAI : public ScriptedAI +{ + mob_taldaram_flamesphereAI(Creature *c) : ScriptedAI(c) + { + pInstance = c->GetInstanceData(); + } + + uint32 uiDespawnTimer; + ScriptedInstance* pInstance; + + void Reset() + { + m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + m_creature->AddUnitMovementFlag(MOVEMENTFLAG_FLYING + MOVEMENTFLAG_HOVER); + m_creature->setFaction(16); + DoCast(m_creature, SPELL_FLAME_SPHERE_VISUAL); + DoCast(m_creature, SPELL_FLAME_SPHERE_SPAWN_EFFECT); + DoCast(m_creature, HeroicMode ? H_SPELL_FLAME_SPHERE_PERIODIC : SPELL_FLAME_SPHERE_PERIODIC); + uiDespawnTimer = 10000; + Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0); + if (pTarget) { - case 0: DoScriptText(SAY_SLAY_1, m_creature);break; - case 1: DoScriptText(SAY_SLAY_2, m_creature);break; - case 2: DoScriptText(SAY_SLAY_3, m_creature);break; + float angle,x,y; + angle = m_creature->GetAngle(pTarget); + x = m_creature->GetPositionX() + DATA_SPHERE_DISTANCE * cos(angle); + y = m_creature->GetPositionY() + DATA_SPHERE_DISTANCE * sin(angle); + m_creature->GetMotionMaster()->MovePoint(0, x, y, m_creature->GetPositionZ()); } } + + void EnterCombat(Unit *who) {} + void MoveInLineOfSight(Unit *who) {} + + void JustDied(Unit* slayer) + { + DoCast(m_creature, SPELL_FLAME_SPHERE_DEATH_EFFECT); + } + + void UpdateAI(const uint32 diff) + { + if (uiDespawnTimer < diff) + { + m_creature->DealDamage(m_creature, m_creature->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false); + m_creature->RemoveCorpse(); + } + else uiDespawnTimer -= diff; + } }; CreatureAI* GetAI_boss_taldaram(Creature* pCreature) @@ -99,6 +328,33 @@ CreatureAI* GetAI_boss_taldaram(Creature* pCreature) return new boss_taldaramAI (pCreature); } +CreatureAI* GetAI_mob_taldaram_flamesphere(Creature* pCreature) +{ + return new mob_taldaram_flamesphereAI (pCreature); +} + +bool GOHello_prince_taldaram_sphere(Player *pPlayer, GameObject *pGO) +{ + ScriptedInstance *pInstance = pGO->GetInstanceData(); + + Creature *pPrinceTaldaram = Unit::GetCreature(*pGO, pInstance ? pInstance->GetData64(DATA_PRINCE_TALDARAM) : 0); + if (pPrinceTaldaram && pPrinceTaldaram->isAlive()) + { + // maybe these are hacks :( + pGO->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_UNK1); + pGO->SetGoState(GO_STATE_ACTIVE); + + switch(pGO->GetEntry()) + { + case 193093: pInstance->SetData(DATA_SPHERE1_EVENT,IN_PROGRESS); break; + case 193094: pInstance->SetData(DATA_SPHERE2_EVENT,IN_PROGRESS); break; + } + + CAST_AI(boss_taldaramAI, pPrinceTaldaram->AI())->CheckSpheres(); + } + return true; +} + void AddSC_boss_taldaram() { Script *newscript; @@ -107,4 +363,14 @@ void AddSC_boss_taldaram() newscript->Name="boss_taldaram"; newscript->GetAI = &GetAI_boss_taldaram; newscript->RegisterSelf(); + + newscript = new Script; + newscript->Name="mob_taldaram_flamesphere"; + newscript->GetAI = &GetAI_mob_taldaram_flamesphere; + newscript->RegisterSelf(); + + newscript = new Script; + newscript->Name = "prince_taldaram_sphere"; + newscript->pGOHello = &GOHello_prince_taldaram_sphere; + newscript->RegisterSelf(); } diff --git a/src/bindings/scripts/scripts/northrend/azjol_nerub/ahnkahet/def_ahnkahet.h b/src/bindings/scripts/scripts/northrend/azjol_nerub/ahnkahet/def_ahnkahet.h index 97c0db55d72..9c17171d019 100644 --- a/src/bindings/scripts/scripts/northrend/azjol_nerub/ahnkahet/def_ahnkahet.h +++ b/src/bindings/scripts/scripts/northrend/azjol_nerub/ahnkahet/def_ahnkahet.h @@ -30,4 +30,11 @@ #define DATA_JEDOGA_SHADOWSEEKER_EVENT 8 #define DATA_HERALD_VOLAZJ_EVENT 9 #define DATA_AMANITAR_EVENT 10 + +#define DATA_SPHERE1 11 +#define DATA_SPHERE2 12 +#define DATA_SPHERE1_EVENT 13 +#define DATA_SPHERE2_EVENT 14 +#define DATA_PRINCE_TALDARAM_PLATFORM 15 + #endif diff --git a/src/bindings/scripts/scripts/northrend/azjol_nerub/ahnkahet/instance_ahnkahet.cpp b/src/bindings/scripts/scripts/northrend/azjol_nerub/ahnkahet/instance_ahnkahet.cpp index db9befd65cf..a1516f06dd5 100644 --- a/src/bindings/scripts/scripts/northrend/azjol_nerub/ahnkahet/instance_ahnkahet.cpp +++ b/src/bindings/scripts/scripts/northrend/azjol_nerub/ahnkahet/instance_ahnkahet.cpp @@ -45,19 +45,26 @@ struct TRINITY_DLL_DECL instance_ahnkahet : public ScriptedInstance uint64 Jedoga_Shadowseeker; uint64 Herald_Volazj; uint64 Amanitar; + + uint64 Prince_TaldaramSpheres[2]; + uint64 Prince_TaldaramPlatform; + uint64 Prince_TaldaramGate; uint32 m_auiEncounter[MAX_ENCOUNTER]; + uint32 spheres[2]; - void Initialize() - { - Elder_Nadox =0; - Prince_Taldaram =0; - Jedoga_Shadowseeker =0; - Herald_Volazj =0; - Amanitar =0; - - for(uint8 i = 0; i < MAX_ENCOUNTER; ++i) - m_auiEncounter[i] = NOT_STARTED; + void Initialize() + { + Elder_Nadox =0; + Prince_Taldaram =0; + Jedoga_Shadowseeker =0; + Herald_Volazj =0; + Amanitar =0; + + for(uint8 i = 0; i < MAX_ENCOUNTER; ++i) + m_auiEncounter[i] = NOT_STARTED; + spheres[0] = NOT_STARTED; + spheres[1] = NOT_STARTED; } bool IsEncounterInProgress() const @@ -75,21 +82,48 @@ struct TRINITY_DLL_DECL instance_ahnkahet : public ScriptedInstance { case 29309: Elder_Nadox = pCreature->GetGUID(); break; case 29308: Prince_Taldaram = pCreature->GetGUID(); break; - case 29310: Jedoga_Shadowseeker = pCreature->GetGUID(); break; + case 29310: Jedoga_Shadowseeker = pCreature->GetGUID(); break; case 29311: Herald_Volazj = pCreature->GetGUID(); break; case 30258: Amanitar = pCreature->GetGUID(); break; } } + + void OnGameObjectCreate(GameObject* pGo, bool add) + { + switch(pGo->GetEntry()) + { + case 193564: Prince_TaldaramPlatform = pGo->GetGUID();break; + case 193093: Prince_TaldaramSpheres[0] = pGo->GetGUID(); + if (spheres[0] == IN_PROGRESS) + { + pGo->SetGoState(GO_STATE_ACTIVE); + pGo->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_UNK1); + } + break; + case 193094: Prince_TaldaramSpheres[1] = pGo->GetGUID(); + if (spheres[1] == IN_PROGRESS) + { + pGo->SetGoState(GO_STATE_ACTIVE); + pGo->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_UNK1); + } + break; + case 192236: Prince_TaldaramGate = pGo->GetGUID(); // Web gate past Prince Taldaram + if (m_auiEncounter[1] == DONE)HandleGameObject(NULL,true,pGo);break; + } + } uint64 GetData64(uint32 identifier) { switch(identifier) { - case DATA_ELDER_NADOX: return Elder_Nadox; - case DATA_PRINCE_TALDARAM: return Prince_Taldaram; - case DATA_JEDOGA_SHADOWSEEKER: return Jedoga_Shadowseeker; - case DATA_HERALD_VOLAZJ: return Herald_Volazj; - case DATA_AMANITAR: return Amanitar; + case DATA_ELDER_NADOX: return Elder_Nadox; + case DATA_PRINCE_TALDARAM: return Prince_Taldaram; + case DATA_JEDOGA_SHADOWSEEKER: return Jedoga_Shadowseeker; + case DATA_HERALD_VOLAZJ: return Herald_Volazj; + case DATA_AMANITAR: return Amanitar; + case DATA_SPHERE1: return Prince_TaldaramSpheres[0]; + case DATA_SPHERE2: return Prince_TaldaramSpheres[1]; + case DATA_PRINCE_TALDARAM_PLATFORM: return Prince_TaldaramPlatform; } return 0; } @@ -101,6 +135,10 @@ struct TRINITY_DLL_DECL instance_ahnkahet : public ScriptedInstance case DATA_ELDER_NADOX_EVENT: m_auiEncounter[0] = data;break; case DATA_PRINCE_TALDARAM_EVENT: + if (data == DONE) + { + HandleGameObject(Prince_TaldaramGate,true); + } m_auiEncounter[1] = data; break; case DATA_JEDOGA_SHADOWSEEKER_EVENT: m_auiEncounter[2] = data; break; @@ -108,7 +146,11 @@ struct TRINITY_DLL_DECL instance_ahnkahet : public ScriptedInstance m_auiEncounter[3] = data; break; case DATA_AMANITAR: m_auiEncounter[4] = data; break; - } + case DATA_SPHERE1_EVENT: + spheres[0] = data; break; + case DATA_SPHERE2_EVENT: + spheres[1] = data; break; + } if (data == DONE) { @@ -125,6 +167,8 @@ struct TRINITY_DLL_DECL instance_ahnkahet : public ScriptedInstance case DATA_JEDOGA_SHADOWSEEKER_EVENT: return m_auiEncounter[2]; case DATA_HERALD_VOLAZJ: return m_auiEncounter[3]; case DATA_AMANITAR: return m_auiEncounter[4]; + case DATA_SPHERE1_EVENT: return spheres[0]; + case DATA_SPHERE2_EVENT: return spheres[1]; } return 0; } @@ -137,7 +181,8 @@ struct TRINITY_DLL_DECL instance_ahnkahet : public ScriptedInstance std::ostringstream saveStream; saveStream << "A K " << m_auiEncounter[0] << " " << m_auiEncounter[1] << " " - << m_auiEncounter[2] << m_auiEncounter[3] << m_auiEncounter[4]; + << m_auiEncounter[2] << " " << m_auiEncounter[3] << " " << m_auiEncounter[4] << " " + << spheres[0] << " " << spheres[1]; str_data = saveStream.str(); @@ -156,10 +201,10 @@ struct TRINITY_DLL_DECL instance_ahnkahet : public ScriptedInstance OUT_LOAD_INST_DATA(in); char dataHead1, dataHead2; - uint16 data0,data1,data2,data3,data4; + uint16 data0,data1,data2,data3,data4, data5, data6; std::istringstream loadStream(in); - loadStream >> dataHead1 >> dataHead2 >> data0 >> data1 >> data2 >> data3 >> data4; + loadStream >> dataHead1 >> dataHead2 >> data0 >> data1 >> data2 >> data3 >> data4 >> data5 >> data6; if (dataHead1 == 'A' && dataHead2 == 'K') { @@ -173,6 +218,9 @@ struct TRINITY_DLL_DECL instance_ahnkahet : public ScriptedInstance if (m_auiEncounter[i] == IN_PROGRESS) m_auiEncounter[i] = NOT_STARTED; + spheres[0] = data5; + spheres[1] = data6; + }else OUT_LOAD_INST_DATA_FAIL; OUT_LOAD_INST_DATA_COMPLETE; diff --git a/src/bindings/scripts/system/ScriptLoader.cpp b/src/bindings/scripts/system/ScriptLoader.cpp index 8ecd4e6fcf6..420019563a6 100644 --- a/src/bindings/scripts/system/ScriptLoader.cpp +++ b/src/bindings/scripts/system/ScriptLoader.cpp @@ -262,6 +262,7 @@ extern void AddSC_winterspring(); //northrend extern void AddSC_instance_ahnkahet(); //Azjol-Nerub Ahn'kahet +extern void AddSC_boss_taldaram(); extern void AddSC_boss_elder_nadox(); extern void AddSC_boss_anubrekhan(); //Naxxramas extern void AddSC_boss_maexxna(); @@ -662,6 +663,7 @@ void AddScripts() //northrend AddSC_instance_ahnkahet(); //Azjol-Nerub Ahn'kahet + AddSC_boss_taldaram(); AddSC_boss_elder_nadox(); AddSC_boss_anubrekhan(); //Naxxramas AddSC_boss_maexxna(); |