diff options
14 files changed, 853 insertions, 967 deletions
diff --git a/sql/base/world_database.sql b/sql/base/world_database.sql index 12c58505da7..1c43d2e1891 100644 --- a/sql/base/world_database.sql +++ b/sql/base/world_database.sql @@ -26806,6 +26806,9 @@ INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES ( 69172, 'spell_tyrannus_overlord_brand'), -- Icecrown Citadel ( 69057, 'spell_marrowgar_bone_spike_graveyard'), +( 70826, 'spell_marrowgar_bone_spike_graveyard'), +( 72088, 'spell_marrowgar_bone_spike_graveyard'), +( 72089, 'spell_marrowgar_bone_spike_graveyard'), ( 69140, 'spell_marrowgar_coldflame'), ( 72705, 'spell_marrowgar_coldflame'), ( 69147, 'spell_marrowgar_coldflame_trigger'), @@ -26815,7 +26818,13 @@ INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES ( 70836, 'spell_marrowgar_bone_storm'), ( 70842, 'spell_deathwhisper_mana_barrier'), ( 70903, 'spell_cultist_dark_martyrdrom'), +( 72498, 'spell_cultist_dark_martyrdrom'), +( 72499, 'spell_cultist_dark_martyrdrom'), +( 72500, 'spell_cultist_dark_martyrdrom'), ( 71236, 'spell_cultist_dark_martyrdrom'), +( 72495, 'spell_cultist_dark_martyrdrom'), +( 72496, 'spell_cultist_dark_martyrdrom'), +( 72497, 'spell_cultist_dark_martyrdrom'), ( 72202, 'spell_deathbringer_blood_link'), ( 72178, 'spell_deathbringer_blood_link_aura'), ( 72371, 'spell_deathbringer_blood_power'), diff --git a/sql/scripts/world_script_texts.sql b/sql/scripts/world_script_texts.sql index d2084bcb89f..c5a7da20e19 100644 --- a/sql/scripts/world_script_texts.sql +++ b/sql/scripts/world_script_texts.sql @@ -2797,161 +2797,6 @@ INSERT INTO `script_texts` (`npc_entry`,`entry`,`content_default`,`content_loc1` (29311,-1619033,'Ywaq maq oou; ywaq maq ssaggh. Ywaq ma shg''fhn.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,'Herald Volazj SAY_SLAY_3'), (29311,-1619034,'Iilth vwah, uhn''agth fhssh za.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,'Herald Volazj SAY_DEATH_1'), --- -1 631 000 ICECROWN CITADEL: RAID --- Lord Marrowgar - (36612,-1631000,'This is the beginning AND the end, mortals. None may enter the master''s sanctum!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16950,1,0,0,'SAY_ENTER_ZONE'), - (36612,-1631001,'The Scourge will wash over this world as a swarm of death and destruction!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16941,1,0,0,'SAY_AGGRO'), - (36612,-1631002,'BONE STORM!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16946,1,0,0,'SAY_BONE_STORM'), - (36612,-1631003,'Bound by bone!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16947,1,0,0,'SAY_BONESPIKE_1'), - (36612,-1631004,'Stick Around!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16948,1,0,0,'SAY_BONESPIKE_2'), - (36612,-1631005,'The only escape is death!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16949,1,0,0,'SAY_BONESPIKE_3'), - (36612,-1631006,'More bones for the offering!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16942,1,0,0,'SAY_KILL_1'), - (36612,-1631007,'Languish in damnation!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16943,1,0,0,'SAY_KILL_2'), - (36612,-1631008,'I see... only darkness...',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16944,1,0,0,'SAY_DEATH'), - (36612,-1631009,'THE MASTER''S RAGE COURSES THROUGH ME!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16945,1,0,0,'SAY_BERSERK'), - (36612,-1631010,'Lord Marrowgar creates a whirling storm of bone!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,3,0,0,'SAY_BONE_STORM_EMOTE'), - --- Lady Deathwhisper - (36855,-1631011,'You have found your way here, because you are among the few gifted with true vision in a world cursed with blindness.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,17272,1,0,0,'SAY_INTRO_1'), - (36855,-1631012,'You can see through the fog that hangs over this world like a shroud, and grasp where true power lies.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,17273,1,0,0,'SAY_INTRO_2'), - (36855,-1631013,'Fix your eyes upon your crude hands: the sinew, the soft meat, the dark blood coursing within.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16878,1,0,0,'SAY_INTRO_3'), - (36855,-1631014,'It is a weakness; a crippling flaw.... A joke played by the Creators upon their own creations.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,17268,1,0,0,'SAY_INTRO_4'), - (36855,-1631015,'The sooner you come to accept your condition as a defect, the sooner you will find yourselves in a position to transcend it.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,17269,1,0,0,'SAY_INTRO_5'), - (36855,-1631016,'Through our Master, all things are possible. His power is without limit, and his will unbending.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,17270,1,0,0,'SAY_INTRO_6'), - (36855,-1631017,'Those who oppose him will be destroyed utterly, and those who serve -- who serve wholly, unquestioningly, with utter devotion of mind and soul -- elevated to heights beyond your ken.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,17271,1,0,0,'SAY_INTRO_7'), - (36855,-1631018,'What is this disturbance?! You dare trespass upon this hallowed ground? This shall be your final resting place.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16868,1,0,0,'SAY_AGGRO'), - (36855,-1631019,'Enough! I see I must take matters into my own hands!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16877,1,0,0,'SAY_PHASE_2'), - (36855,-1631020,'Lady Deathwhisper''s Mana Barrier shimmers and fades away!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,3,0,0,'SAY_PHASE_2_EMOTE'), - (36855,-1631021,'You are weak, powerless to resist my will!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16876,1,0,0,'SAY_DOMINATE_MIND'), - (36855,-1631022,'Take this blessing and show these intruders a taste of our master''s power.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16873,1,0,0,'SAY_DARK_EMPOWERMENT'), - (36855,-1631023,'I release you from the curse of flesh!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16874,1,0,0,'SAY_DARK_TRANSFORMATION'), - (36855,-1631024,'Arise and exult in your pure form!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16875,1,0,0,'SAY_ANIMATE_DEAD'), - (36855,-1631025,'Do you yet grasp of the futility of your actions?',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16869,1,0,0,'SAY_KILL_1'), - (36855,-1631026,'Embrace the darkness... Darkness eternal!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16870,1,0,0,'SAY_KILL_2'), - (36855,-1631027,'This charade has gone on long enough.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16872,1,0,0,'SAY_BERSERK'), - (36855,-1631028,'All part of the masters plan! Your end is... inevitable!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16871,1,0,0,'SAY_DEATH'), - --- Deathbringer Saurfang - (37200,-1631029,'Let''s get a move on then! Move ou...',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16974,1,0,0,'SAY_INTRO_ALLIANCE_1'), - (37813,-1631030,'For every Horde soldier that you killed -- for every Alliance dog that fell, the Lich King''s armies grew. Even now the val''kyr work to raise your fallen as Scourge.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16701,1,0,0,'SAY_INTRO_ALLIANCE_2'), - (37813,-1631031,'Things are about to get much worse. Come, taste the power that the Lich King has bestowed upon me!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16702,1,0,0,'SAY_INTRO_ALLIANCE_3'), - (37200,-1631032,'A lone orc against the might of the Alliance???',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16970,1,0,0,'SAY_INTRO_ALLIANCE_4'), - (37200,-1631033,'Charge!!!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16971,1,0,0,'SAY_INTRO_ALLIANCE_5'), - (37813,-1631034,'Dwarves...',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16703,1,0,0,'SAY_INTRO_ALLIANCE_6'), - (37813,-1631035,'Deathbringer Saurfang immobilizes Muradin and his guards.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,2,0,0,'SAY_INTRO_ALLIANCE_7'), - (37187,-1631036,'Kor''kron, move out! Champions, watch your backs. The Scourge have been...',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,17103,1,0,22,'SAY_INTRO_HORDE_1'), - (37813,-1631037,'Join me, father. Join me and we will crush this world in the name of the Scourge -- for the glory of the Lich King!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16704,1,0,0,'SAY_INTRO_HORDE_2'), - (37187,-1631038,'My boy died at the Wrath Gate. I am here only to collect his body.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,17097,0,0,397,'SAY_INTRO_HORDE_3'), - (37813,-1631039,'Stubborn and old. What chance do you have? I am stronger, and more powerful than you ever were.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16705,1,0,5,'SAY_INTRO_HORDE_4'), - (37187,-1631040,'We named him Dranosh. It means "Heart of Draenor" in orcish. I would not let the warlocks take him. My boy would be safe, hidden away by the elders of Garadar.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,17098,0,0,1,'SAY_INTRO_HORDE_5'), - (37187,-1631041,'I made a promise to his mother before she died; that I would cross the Dark Portal alone - whether I lived or died, my son would be safe. Untainted...',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,17099,0,0,1,'SAY_INTRO_HORDE_6'), - (37187,-1631042,'Today, I fulfill that promise.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,17100,0,0,397,'SAY_INTRO_HORDE_7'), - (37187,-1631043,'High Overlord Saurfang charges!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,17104,2,0,53,'SAY_INTRO_HORDE_8'), - (37813,-1631044,'Pathetic old orc. Come then heroes. Come and face the might of the Scourge!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16706,1,0,15,'SAY_INTRO_HORDE_9'), - (37813,-1631045,'BY THE MIGHT OF THE LICH KING!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16694,1,0,0,'SAY_AGGRO'), - (37813,-1631046,'The ground runs red with your blood!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16699,1,0,0,'SAY_MARK_OF_THE_FALLEN_CHAMPION'), - (37813,-1631047,'Feast, my minions!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16700,1,0,0,'SAY_BLOOD_BEASTS'), - (37813,-1631048,'You are nothing!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16695,1,0,0,'SAY_KILL_1'), - (37813,-1631049,'Your soul will find no redemption here!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16696,1,0,0,'SAY_KILL_2'), - (37813,-1631050,'Deathbringer Saurfang goes into frenzy!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,3,0,0,'SAY_FRENZY'), - (37813,-1631051,'I have become...DEATH!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16698,1,0,0,'SAY_BERSERK'), - (37813,-1631052,'I... Am... Released.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16697,1,0,0,'SAY_DEATH'), - (37200,-1631053,'Muradin Bronzebeard gasps for air.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16975,2,0,0,'SAY_OUTRO_ALLIANCE_1'), - (37200,-1631054,'That was Saurfang''s boy - the Horde commander at the Wrath Gate. Such a tragic end...',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16976,0,0,0,'SAY_OUTRO_ALLIANCE_2'), - (37200,-1631055,'What in the... There, in the distance!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16977,0,0,0,'SAY_OUTRO_ALLIANCE_3'), - ( 0,-1631056,'A Horde Zeppelin flies up to the rise.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,2,0,0,'SAY_OUTRO_ALLIANCE_4'), - (37200,-1631057,'Soldiers, fall in! Looks like the Horde are comin'' to take another shot!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16978,1,0,0,'SAY_OUTRO_ALLIANCE_5'), - ( 0,-1631058,'The Zeppelin docks, and High Overlord Saurfang hops out, confronting the Alliance soldiers and Muradin',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,2,0,0,'SAY_OUTRO_ALLIANCE_6'), - (37200,-1631059,'Don''t force me hand, orc. We can''t let ye pass.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16972,0,0,0,'SAY_OUTRO_ALLIANCE_7'), - (37187,-1631060,'Behind you lies the body of my only son. Nothing will keep me from him.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,17094,0,0,0,'SAY_OUTRO_ALLIANCE_8'), - (37200,-1631061,'I... I can''t do it. Get back on yer ship and we''ll spare yer life.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16973,0,0,0,'SAY_OUTRO_ALLIANCE_9'), - ( 0,-1631062,'A mage portal from Stormwind appears between the two and Varian Wrynn and Jaina Proudmoore emerge.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,2,0,0,'SAY_OUTRO_ALLIANCE_10'), - (37879,-1631063,'Stand down, Muradin. Let a grieving father pass.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16690,0,0,0,'SAY_OUTRO_ALLIANCE_11'), - (37187,-1631064,'High Overlord Saurfang walks over to his son and kneels before his son''s body.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,2,0,0,'SAY_OUTRO_ALLIANCE_12'), - (37187,-1631065,'[Orcish] No''ku kil zil''nok ha tar.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,17096,0,0,0,'SAY_OUTRO_ALLIANCE_13'), - (37187,-1631066,'Higher Overlord Saurfang picks up the body of his son and walks over towards Varian',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,2,0,0,'SAY_OUTRO_ALLIANCE_14'), - (37187,-1631067,'I will not forget this... kindness. I thank you, Highness',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,17095,0,0,0,'SAY_OUTRO_ALLIANCE_15'), - (37879,-1631068,'I... I was not at the Wrath Gate, but the soldiers who survived told me much of what happened. Your son fought with honor. He died a hero''s death. He deserves a hero''s burial.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16691,0,0,0,'SAY_OUTRO_ALLIANCE_16'), - (37188,-1631069,'Lady Jaina Proudmoore cries.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16651,2,0,18,'SAY_OUTRO_ALLIANCE_17'), - (37879,-1631070,'Jaina? Why are you crying?',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16692,0,0,0,'SAY_OUTRO_ALLIANCE_18'), - (37188,-1631071,'It was nothing, your majesty. Just... I''m proud of my king.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16652,0,0,0,'SAY_OUTRO_ALLIANCE_19'), - (37879,-1631072,'Bah! Muradin, secure the deck and prepare our soldiers for an assault on the upper citadel. I''ll send out another regiment from Stormwind.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16693,0,0,0,'SAY_OUTRO_ALLIANCE_20'), - (37200,-1631073,'Right away, yer majesty!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16979,0,0,0,'SAY_OUTRO_ALLIANCE_21'), - (37187,-1631074,'High Overlord Saurfang coughs.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,17105,2,0,0,'SAY_OUTRO_HORDE_1'), - (37187,-1631075,'High Overlord Saurfang weeps over the corpse of his son.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,17106,2,0,15,'SAY_OUTRO_HORDE_2'), - (37187,-1631076,'You will have a proper ceremony in Nagrand next to the pyres of your mother and ancestors.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,17101,0,0,0,'SAY_OUTRO_HORDE_3'), - (37187,-1631077,'Honor, young heroes... no matter how dire the battle... Never forsake it!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,17102,0,0,0,'SAY_OUTRO_HORDE_4'), - --- Festergut - (36626,-1631078,'NOOOO! You kill Stinky! You pay!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16907,1,0,0,'SAY_STINKY_DEAD'), - (36626,-1631079,'Fun time!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16901,1,0,0,'SAY_AGGRO'), - (36678,-1631080,'Just an ordinary gas cloud. But watch out, because that''s no ordinary gas cloud!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,17119,1,0,432,'SAY_GASEOUS_BLIGHT'), - (36626,-1631081,'Festergut farts.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16911,2,0,0,'EMOTE_GAS_SPORE'), - (36626,-1631082,'Festergut releases Gas Spores!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,3,0,0,'EMOTE_WARN_GAS_SPORE'), - (36626,-1631083,'Gyah! Uhhh, I not feel so good...',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16906,1,0,0,'SAY_PUNGENT_BLIGHT'), - (36626,-1631084,'Festergut begins to cast |cFFFF7F00Pungent Blight!|r',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,3,0,0,'EMOTE_WARN_PUNGENT_BLIGHT'), - (36626,-1631085,'Festergut vomits.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,2,0,0,'EMOTE_PUNGENT_BLIGHT'), - (36626,-1631086,'Daddy, I did it!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16902,1,0,0,'SAY_KILL_1'), - (36626,-1631087,'Dead, dead, dead!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16903,1,0,0,'SAY_KILL_2'), - (36626,-1631088,'Fun time over!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16905,1,0,0,'SAY_BERSERK'), - (36626,-1631089,'Da ... Ddy...',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16904,1,0,0,'SAY_DEATH'), - (36678,-1631090,'Oh, Festergut. You were always my favorite. Next to Rotface. The good news is you left behind so much gas, I can practically taste it!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,17124,1,0,0,'SAY_FESTERGUT_DEATH'), - --- Rotface - (36678,-1631091,'Great news, everyone! The slime is flowing again!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,17126,1,0,1,'SAY_ROTFACE_OOZE_FLOOD1'), - (36678,-1631092,'Good news, everyone! I''ve fixed the poison slime pipes!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,17123,1,0,1,'SAY_ROTFACE_OOZE_FLOOD2'), - (36678,-1631093,'Terrible news, everyone, Rotface is dead! But great news everyone, he left behind plenty of ooze for me to use! Whaa...? I''m a poet, and I didn''t know it? Astounding!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,17146,1,0,0,'SAY_ROTFACE_DEATH'), - (36627,-1631094,'What? Precious? Noooooooooo!!!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16993,1,0,0,'SAY_PRECIOUS_DIES'), - (36627,-1631095,'WEEEEEE!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16986,1,0,0,'SAY_AGGRO'), - (36627,-1631096,'%s begins to cast Slime Spray!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,3,0,0,'EMOTE_SLIME_SPRAY'), - (36627,-1631097,'Icky sticky.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16991,1,0,0,'SAY_SLIME_SPRAY'), - (36627,-1631098,'|TInterface\Icons\spell_shadow_unstableaffliction_2.blp:16|t%s begins to cast |cFFFF0000Unstable Ooze Explosion!|r',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,3,0,0,'EMOTE_UNSTABLE_EXPLOSION'), - (36627,-1631099,'I think I made an angry poo-poo. It gonna blow!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16992,1,0,0,'SAY_UNSTABLE_EXPLOSION'), - (36627,-1631100,'Daddy make toys out of you!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16988,1,0,0,'SAY_KILL_1'), - (36627,-1631101,'I brokes-ded it...',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16987,1,0,0,'SAY_KILL_2'), - (36627,-1631102,'Sleepy Time!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16990,1,0,0,'SAY_BERSERK'), - (36627,-1631103,'Bad news daddy...',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16989,1,0,0,'SAY_DEATH'), - --- Professor Putricide - (36678,-1631104,'Good news, everyone! I think I perfected a plague that will destroy all life on Azeroth!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,17114,1,0,0,'SAY_AGGRO'), - (36678,-1631105,'%s begins to cast Unstable Experiment!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,3,0,0,'EMOTE_UNSTABLE_EXPERIMENT'), - (36678,-1631106,'Two oozes, one room! So many delightful possibilities...',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,17122,1,0,0,'SAY_PHASE_TRANSITION_HEROIC'), - (36678,-1631107,'Hmm. I don''t feel a thing. Whaa...? Where''d those come from?',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,17120,1,0,15,'SAY_TRANSFORM_1'), - (36678,-1631108,'Tastes like... Cherry! Oh! Excuse me!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,17121,1,0,15,'SAY_TRANSFORM_2'), - (36678,-1631109,'|TInterface\Icons\inv_misc_herb_evergreenmoss.blp:16|t%s cast |cFF00FF00Malleable Goo!|r',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,3,0,0,'EMOTE_MALLEABLE_GOO'), - (36678,-1631110,'%s cast |cFFFF7F00Choking Gas Bomb!|r',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,3,0,0,'EMOTE_CHOKING_GAS_BOMB'), - (36678,-1631111,'Hmm... Interesting...',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,17115,1,0,0,'SAY_KILL_1'), - (36678,-1631112,'That was unexpected!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,17116,1,0,0,'SAY_KILL_2'), - (36678,-1631113,'Great news, everyone!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,17118,1,0,0,'SAY_BERSERK'), - (36678,-1631114,'Bad news, everyone! I don''t think I''m going to make it.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,17117,1,0,0,'SAY_DEATH'), - --- Blood Prince Council - (38004,-1631115,'Foolish mortals. You thought us defeated so easily? The San''layn are the Lich King''s immortal soldiers! Now you shall face their might combined!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16795,1,0,1,'SAY_INTRO_1'), - (38004,-1631116,'Rise up, brothers, and destroy our enemies.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16796,1,0,0,'SAY_INTRO_2'), - (37972,-1631117,'Such wondrous power! The Darkfallen Orb has made me INVINCIBLE!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16727,1,0,0,'SAY_KELESETH_INVOCATION'), - (37972,-1631118,'Invocation of Blood jumps to Prince Keleseth!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,3,0,0,'EMOTE_KELESETH_INVOCATION'), - (37972,-1631119,'Blood will flow!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16728,1,0,0,'SAY_KELESETH_SPECIAL'), - (37972,-1631120,'Were you ever a threat?',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16723,1,0,0,'SAY_KELESETH_KILL_1'), - (37972,-1631121,'Truth is found in death.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16724,1,0,0,'SAY_KELESETH_KILL_2'), - (37972,-1631122,'%s cackles maniacally!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16726,2,0,0,'EMOTE_KELESETH_BERSERK'), - (37972,-1631123,'My queen... they come...',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16725,1,0,0,'SAY_KELESETH_DEATH'), - (37973,-1631124,'Tremble before Taldaram, mortals, for the power of the orb flows through me!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16857,1,0,0,'SAY_TALDARAM_INVOCATION'), - (37973,-1631125,'Invocation of Blood jumps to Prince Taldaram!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,3,0,0,'EMOTE_TALDARAM_INVOCATION'), - (37973,-1631126,'Delight in the pain!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16858,1,0,0,'SAY_TALDARAM_SPECIAL'), - (37973,-1631127,'Inferno Flames speed toward $N!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,3,0,0,'EMOTE_TALDARAM_FLAME'), - (37973,-1631128,'Worm food.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16853,1,0,0,'SAY_TALDARAM_KILL_1'), - (37973,-1631129,'Beg for mercy!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16854,1,0,0,'SAY_TALDARAM_KILL_2'), - (37973,-1631130,'%s laughs.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16856,2,0,0,'EMOTE_TALDARAM_BERSERK'), - (37973,-1631131,'%s gurgles and dies.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16855,2,0,0,'EMOTE_TALDARAM_DEATH'), - (37970,-1631132,'Naxxanar was merely a setback! With the power of the orb, Valanar will have his vengeance!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16685,1,0,0,'SAY_VALANAR_INVOCATION'), - (37970,-1631133,'Invocation of Blood jumps to Prince Valanar!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,3,0,0,'EMOTE_VALANAR_INVOCATION'), - (37970,-1631134,'My cup runneth over.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16686,1,0,0,'SAY_VALANAR_SPECIAL'), - (37970,-1631135,'%s begins casting Empowered Schock Vortex!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,3,0,0,'EMOTE_VALANAR_SHOCK_VORTEX'), - (37970,-1631136,'Dinner... is served.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16681,1,0,0,'SAY_VALANAR_KILL_1'), - (37970,-1631137,'Do you see NOW the power of the Darkfallen?',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16682,1,0,0,'SAY_VALANAR_KILL_2'), - (37970,-1631138,'BOW DOWN BEFORE THE SAN''LAYN!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16684,1,0,0,'SAY_VALANAR_BERSERK'), - (37970,-1631139,'...why...?',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16683,1,0,0,'SAY_VALANAR_DEATH'), - -- -1 632 000 ICECROWN CITADEL: FROZEN HALLS: FORGE OF SOULS -- Bronjham (36497,-1632001,'Finally...a captive audience!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16595,1,0,0,'Bronjham SAY_AGGRO'), diff --git a/sql/updates/10468_world_script_texts.sql b/sql/updates/10468_world_script_texts.sql new file mode 100644 index 00000000000..bb3ed4d7299 --- /dev/null +++ b/sql/updates/10468_world_script_texts.sql @@ -0,0 +1 @@ +DELETE FROM `script_texts` WHERE `entry` BETWEEN -1631139 AND -1631000; diff --git a/sql/updates/10468_world_spell_script_names.sql b/sql/updates/10468_world_spell_script_names.sql new file mode 100644 index 00000000000..89f6b5b79e1 --- /dev/null +++ b/sql/updates/10468_world_spell_script_names.sql @@ -0,0 +1,15 @@ +DELETE FROM `spell_script_names` WHERE `spell_id` IN (69057,70826,72088,72089) AND `ScriptName`='spell_marrowgar_bone_spike_graveyard'; +DELETE FROM `spell_script_names` WHERE `spell_id` IN (70903,72498,72499,72500,71236,72495,72496,72497) AND `ScriptName`='spell_cultist_dark_martyrdrom'; +INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES +(69057,'spell_marrowgar_bone_spike_graveyard'), +(70826,'spell_marrowgar_bone_spike_graveyard'), +(72088,'spell_marrowgar_bone_spike_graveyard'), +(72089,'spell_marrowgar_bone_spike_graveyard'), +(70903,'spell_cultist_dark_martyrdrom'), +(72498,'spell_cultist_dark_martyrdrom'), +(72499,'spell_cultist_dark_martyrdrom'), +(72500,'spell_cultist_dark_martyrdrom'), +(71236,'spell_cultist_dark_martyrdrom'), +(72495,'spell_cultist_dark_martyrdrom'), +(72496,'spell_cultist_dark_martyrdrom'), +(72497,'spell_cultist_dark_martyrdrom'); diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp index b551ba0b302..abab6ecb041 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp @@ -25,37 +25,34 @@ enum eTexts { // Blood Queen Lana'Thel - SAY_INTRO_1 = -1631115, - SAY_INTRO_2 = -1631116, + SAY_INTRO_1 = 0, + SAY_INTRO_2 = 1, // Prince Keleseth - SAY_KELESETH_INVOCATION = -1631117, - EMOTE_KELESETH_INVOCATION = -1631118, - SAY_KELESETH_SPECIAL = -1631119, - SAY_KELESETH_KILL_1 = -1631120, - SAY_KELESETH_KILL_2 = -1631121, - EMOTE_KELESETH_BERSERK = -1631122, - SAY_KELESETH_DEATH = -1631123, + SAY_KELESETH_INVOCATION = 0, + EMOTE_KELESETH_INVOCATION = 1, + SAY_KELESETH_SPECIAL = 2, + SAY_KELESETH_KILL = 3, + EMOTE_KELESETH_BERSERK = 4, + SAY_KELESETH_DEATH = 5, // Prince Taldaram - SAY_TALDARAM_INVOCATION = -1631124, - EMOTE_TALDARAM_INVOCATION = -1631125, - SAY_TALDARAM_SPECIAL = -1631126, - EMOTE_TALDARAM_FLAME = -1631127, - SAY_TALDARAM_KILL_1 = -1631128, - SAY_TALDARAM_KILL_2 = -1631129, - EMOTE_TALDARAM_BERSERK = -1631130, - EMOTE_TALDARAM_DEATH = -1631131, + SAY_TALDARAM_INVOCATION = 0, + EMOTE_TALDARAM_INVOCATION = 1, + SAY_TALDARAM_SPECIAL = 2, + EMOTE_TALDARAM_FLAME = 3, + SAY_TALDARAM_KILL = 4, + EMOTE_TALDARAM_BERSERK = 5, + EMOTE_TALDARAM_DEATH = 6, // Prince Valanar - SAY_VALANAR_INVOCATION = -1631132, - EMOTE_VALANAR_INVOCATION = -1631133, - SAY_VALANAR_SPECIAL = -1631134, - EMOTE_VALANAR_SHOCK_VORTEX = -1631135, - SAY_VALANAR_KILL_1 = -1631136, - SAY_VALANAR_KILL_2 = -1631137, - SAY_VALANAR_BERSERK = -1631138, - SAY_VALANAR_DEATH = -1631139 + SAY_VALANAR_INVOCATION = 0, + EMOTE_VALANAR_INVOCATION = 1, + SAY_VALANAR_SPECIAL = 2, + EMOTE_VALANAR_SHOCK_VORTEX = 3, + SAY_VALANAR_KILL = 4, + SAY_VALANAR_BERSERK = 5, + SAY_VALANAR_DEATH = 6, }; enum eSpells @@ -181,7 +178,7 @@ class boss_blood_council_controller : public CreatureScript struct boss_blood_council_controllerAI : public BossAI { - boss_blood_council_controllerAI(Creature* pCreature) : BossAI(pCreature, DATA_BLOOD_PRINCE_COUNCIL) + boss_blood_council_controllerAI(Creature* creature) : BossAI(creature, DATA_BLOOD_PRINCE_COUNCIL) { } @@ -305,7 +302,7 @@ class boss_blood_council_controller : public CreatureScript newPrince->SetHealth(me->GetHealth()); DoCast(me, invocationOrder[invocationStage].spellId); - DoScriptText(invocationOrder[invocationStage].textId, me); + Talk(invocationOrder[invocationStage].textId); events.ScheduleEvent(EVENT_INVOCATION_OF_BLOOD, 30000); break; } @@ -320,7 +317,7 @@ class boss_blood_council_controller : public CreatureScript { uint64 guid; uint32 spellId; - int32 textId; + uint8 textId; uint32 visualSpell; InvocationData(uint64 _guid, uint32 _spellId, int32 _textId, uint32 _visualSpell) @@ -336,9 +333,9 @@ class boss_blood_council_controller : public CreatureScript uint8 invocationStage; }; - CreatureAI* GetAI(Creature* pCreature) const + CreatureAI* GetAI(Creature* creature) const { - return new boss_blood_council_controllerAI(pCreature); + return new boss_blood_council_controllerAI(creature); } }; @@ -349,10 +346,10 @@ class boss_prince_keleseth_icc : public CreatureScript struct boss_prince_kelesethAI : public BossAI { - boss_prince_kelesethAI(Creature* pCreature) : BossAI(pCreature, DATA_BLOOD_PRINCE_COUNCIL) + boss_prince_kelesethAI(Creature* creature) : BossAI(creature, DATA_BLOOD_PRINCE_COUNCIL) { - bIsEmpowered = false; - spawnHealth = pCreature->GetMaxHealth(); + isEmpowered = false; + spawnHealth = creature->GetMaxHealth(); } void InitializeAI() @@ -375,7 +372,7 @@ class boss_prince_keleseth_icc : public CreatureScript summons.DespawnAll(); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE); - bIsEmpowered = false; + isEmpowered = false; me->SetHealth(spawnHealth); instance->SetData(DATA_ORB_WHISPERER_ACHIEVEMENT, uint32(true)); me->SetReactState(REACT_DEFENSIVE); @@ -400,7 +397,13 @@ class boss_prince_keleseth_icc : public CreatureScript void JustDied(Unit* /*killer*/) { - DoScriptText(SAY_KELESETH_DEATH, me); + Talk(SAY_KELESETH_DEATH); + } + + void JustReachedHome() + { + me->SetHealth(spawnHealth); + isEmpowered = false; } void JustRespawned() @@ -431,14 +434,14 @@ class boss_prince_keleseth_icc : public CreatureScript void DamageTaken(Unit* /*attacker*/, uint32& damage) { - if (!bIsEmpowered) + if (!isEmpowered) damage = 0; } void KilledUnit(Unit *victim) { if (victim->GetTypeId() == TYPEID_PLAYER) - DoScriptText(RAND(SAY_KELESETH_KILL_1, SAY_KELESETH_KILL_2), me); + Talk(SAY_KELESETH_KILL); } void DoAction(const int32 action) @@ -454,15 +457,15 @@ class boss_prince_keleseth_icc : public CreatureScript me->m_Events.AddEvent(new StandUpEvent(*me), me->m_Events.CalculateTime(1000)); break; case ACTION_CAST_INVOCATION: - DoScriptText(SAY_KELESETH_INVOCATION, me); + Talk(SAY_KELESETH_INVOCATION); DoCast(me, SPELL_INVOCATION_VISUAL_ACTIVE, true); - bIsEmpowered = true; + isEmpowered = true; break; case ACTION_REMOVE_INVOCATION: me->SetHealth(spawnHealth); me->RemoveAurasDueToSpell(SPELL_INVOCATION_VISUAL_ACTIVE); me->RemoveAurasDueToSpell(SPELL_INVOCATION_OF_BLOOD_KELESETH); - bIsEmpowered = false; + isEmpowered = false; break; default: break; @@ -485,15 +488,15 @@ class boss_prince_keleseth_icc : public CreatureScript { case EVENT_BERSERK: DoCast(me, SPELL_BERSERK); - DoScriptText(EMOTE_KELESETH_BERSERK, me); + Talk(EMOTE_KELESETH_BERSERK); break; case EVENT_SHADOW_RESONANCE: - DoScriptText(SAY_KELESETH_SPECIAL, me); + Talk(SAY_KELESETH_SPECIAL); DoCast(me, SPELL_SHADOW_RESONANCE); events.ScheduleEvent(EVENT_SHADOW_RESONANCE, urand(10000, 15000)); break; case EVENT_SHADOW_LANCE: - if (bIsEmpowered) + if (isEmpowered) DoCastVictim(SPELL_EMPOWERED_SHADOW_LANCE); else DoCastVictim(SPELL_SHADOW_LANCE); @@ -508,13 +511,13 @@ class boss_prince_keleseth_icc : public CreatureScript } private: - bool bIsEmpowered; // bool check faster than map lookup + bool isEmpowered; // bool check faster than map lookup uint32 spawnHealth; }; - CreatureAI* GetAI(Creature* pCreature) const + CreatureAI* GetAI(Creature* creature) const { - return new boss_prince_kelesethAI(pCreature); + return new boss_prince_kelesethAI(creature); } }; @@ -525,10 +528,10 @@ class boss_prince_taldaram_icc : public CreatureScript struct boss_prince_taldaramAI : public BossAI { - boss_prince_taldaramAI(Creature* pCreature) : BossAI(pCreature, DATA_BLOOD_PRINCE_COUNCIL) + boss_prince_taldaramAI(Creature* creature) : BossAI(creature, DATA_BLOOD_PRINCE_COUNCIL) { - bIsEmpowered = false; - spawnHealth = pCreature->GetMaxHealth(); + isEmpowered = false; + spawnHealth = creature->GetMaxHealth(); } void InitializeAI() @@ -551,7 +554,7 @@ class boss_prince_taldaram_icc : public CreatureScript summons.DespawnAll(); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE); - bIsEmpowered = false; + isEmpowered = false; me->SetHealth(spawnHealth); instance->SetData(DATA_ORB_WHISPERER_ACHIEVEMENT, uint32(true)); me->SetReactState(REACT_DEFENSIVE); @@ -576,7 +579,13 @@ class boss_prince_taldaram_icc : public CreatureScript void JustDied(Unit* /*killer*/) { - DoScriptText(EMOTE_TALDARAM_DEATH, me); + Talk(EMOTE_TALDARAM_DEATH); + } + + void JustReachedHome() + { + me->SetHealth(spawnHealth); + isEmpowered = false; } void JustRespawned() @@ -598,8 +607,8 @@ class boss_prince_taldaram_icc : public CreatureScript if (!target) target = SelectTarget(SELECT_TARGET_RANDOM, 0/*1*/, 0.0f, true); // too bad for you raiders, its going to boom - if (summon->GetEntry() == NPC_BALL_OF_INFERNO_FLAME) - DoScriptText(EMOTE_TALDARAM_FLAME, summon, target); // safe, has NULL checks + if (summon->GetEntry() == NPC_BALL_OF_INFERNO_FLAME && target) + Talk(EMOTE_TALDARAM_FLAME, target->GetGUID()); if (target) summon->AI()->SetGUID(target->GetGUID()); @@ -616,14 +625,14 @@ class boss_prince_taldaram_icc : public CreatureScript void DamageTaken(Unit* /*attacker*/, uint32& damage) { - if (!bIsEmpowered) + if (!isEmpowered) damage = 0; } void KilledUnit(Unit *victim) { if (victim->GetTypeId() == TYPEID_PLAYER) - DoScriptText(RAND(SAY_TALDARAM_KILL_1, SAY_TALDARAM_KILL_2), me); + Talk(SAY_TALDARAM_KILL); } void DoAction(const int32 action) @@ -639,15 +648,15 @@ class boss_prince_taldaram_icc : public CreatureScript me->m_Events.AddEvent(new StandUpEvent(*me), me->m_Events.CalculateTime(1000)); break; case ACTION_CAST_INVOCATION: - DoScriptText(SAY_TALDARAM_INVOCATION, me); + Talk(SAY_TALDARAM_INVOCATION); DoCast(me, SPELL_INVOCATION_VISUAL_ACTIVE, true); - bIsEmpowered = true; + isEmpowered = true; break; case ACTION_REMOVE_INVOCATION: me->SetHealth(spawnHealth); me->RemoveAurasDueToSpell(SPELL_INVOCATION_VISUAL_ACTIVE); me->RemoveAurasDueToSpell(SPELL_INVOCATION_OF_BLOOD_TALDARAM); - bIsEmpowered = false; + isEmpowered = false; break; default: break; @@ -670,14 +679,14 @@ class boss_prince_taldaram_icc : public CreatureScript { case EVENT_BERSERK: DoCast(me, SPELL_BERSERK); - DoScriptText(EMOTE_TALDARAM_BERSERK, me); + Talk(EMOTE_TALDARAM_BERSERK); break; case EVENT_GLITTERING_SPARKS: DoCastVictim(SPELL_GLITTERING_SPARKS); events.ScheduleEvent(EVENT_GLITTERING_SPARKS, urand(15000, 50000)); break; case EVENT_CONJURE_FLAME: - if (bIsEmpowered) + if (isEmpowered) { DoCast(me, SPELL_CONJURE_EMPOWERED_FLAME); events.ScheduleEvent(EVENT_CONJURE_FLAME, urand(15000, 25000)); @@ -687,7 +696,7 @@ class boss_prince_taldaram_icc : public CreatureScript DoCast(me, SPELL_CONJURE_FLAME); events.ScheduleEvent(EVENT_CONJURE_FLAME, urand(20000, 30000)); } - DoScriptText(SAY_TALDARAM_SPECIAL, me); + Talk(SAY_TALDARAM_SPECIAL); break; default: break; @@ -698,13 +707,13 @@ class boss_prince_taldaram_icc : public CreatureScript } private: - bool bIsEmpowered; // bool check faster than map lookup + bool isEmpowered; // bool check faster than map lookup uint32 spawnHealth; }; - CreatureAI* GetAI(Creature* pCreature) const + CreatureAI* GetAI(Creature* creature) const { - return new boss_prince_taldaramAI(pCreature); + return new boss_prince_taldaramAI(creature); } }; @@ -715,10 +724,10 @@ class boss_prince_valanar_icc : public CreatureScript struct boss_prince_valanarAI : public BossAI { - boss_prince_valanarAI(Creature* pCreature) : BossAI(pCreature, DATA_BLOOD_PRINCE_COUNCIL) + boss_prince_valanarAI(Creature* creature) : BossAI(creature, DATA_BLOOD_PRINCE_COUNCIL) { - bIsEmpowered = false; - spawnHealth = pCreature->GetMaxHealth(); + isEmpowered = false; + spawnHealth = creature->GetMaxHealth(); } void InitializeAI() @@ -741,7 +750,7 @@ class boss_prince_valanar_icc : public CreatureScript summons.DespawnAll(); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE); - bIsEmpowered = false; + isEmpowered = false; me->SetHealth(me->GetMaxHealth()); instance->SetData(DATA_ORB_WHISPERER_ACHIEVEMENT, uint32(true)); me->SetReactState(REACT_DEFENSIVE); @@ -766,7 +775,13 @@ class boss_prince_valanar_icc : public CreatureScript void JustDied(Unit* /*killer*/) { - DoScriptText(SAY_VALANAR_DEATH, me); + Talk(SAY_VALANAR_DEATH); + } + + void JustReachedHome() + { + me->SetHealth(me->GetMaxHealth()); + isEmpowered = false; } void JustRespawned() @@ -820,14 +835,14 @@ class boss_prince_valanar_icc : public CreatureScript void DamageTaken(Unit* /*attacker*/, uint32& damage) { - if (!bIsEmpowered) + if (!isEmpowered) damage = 0; } void KilledUnit(Unit *victim) { if (victim->GetTypeId() == TYPEID_PLAYER) - DoScriptText(RAND(SAY_VALANAR_KILL_1, SAY_VALANAR_KILL_2), me); + Talk(SAY_VALANAR_KILL); } void DoAction(const int32 action) @@ -843,15 +858,15 @@ class boss_prince_valanar_icc : public CreatureScript me->m_Events.AddEvent(new StandUpEvent(*me), me->m_Events.CalculateTime(1000)); break; case ACTION_CAST_INVOCATION: - DoScriptText(SAY_VALANAR_INVOCATION, me); + Talk(SAY_VALANAR_INVOCATION); DoCast(me, SPELL_INVOCATION_VISUAL_ACTIVE, true); - bIsEmpowered = true; + isEmpowered = true; break; case ACTION_REMOVE_INVOCATION: me->SetHealth(spawnHealth); me->RemoveAurasDueToSpell(SPELL_INVOCATION_VISUAL_ACTIVE); me->RemoveAurasDueToSpell(SPELL_INVOCATION_OF_BLOOD_VALANAR); - bIsEmpowered = false; + isEmpowered = false; break; default: break; @@ -874,21 +889,21 @@ class boss_prince_valanar_icc : public CreatureScript { case EVENT_BERSERK: DoCast(me, SPELL_BERSERK); - DoScriptText(SAY_VALANAR_BERSERK, me); + Talk(SAY_VALANAR_BERSERK); break; case EVENT_KINETIC_BOMB: if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 0.0f, true)) { DoCast(target, SPELL_KINETIC_BOMB_TARGET); - DoScriptText(SAY_VALANAR_SPECIAL, me); + Talk(SAY_VALANAR_SPECIAL); } events.ScheduleEvent(EVENT_KINETIC_BOMB, urand(18000, 24000)); break; case EVENT_SHOCK_VORTEX: - if (bIsEmpowered) + if (isEmpowered) { DoCast(me, SPELL_EMPOWERED_SHOCK_VORTEX); - DoScriptText(EMOTE_VALANAR_SHOCK_VORTEX, me); + Talk(EMOTE_VALANAR_SHOCK_VORTEX); events.ScheduleEvent(EVENT_SHOCK_VORTEX, 30000); } else @@ -907,13 +922,13 @@ class boss_prince_valanar_icc : public CreatureScript } private: - bool bIsEmpowered; // bool check faster than map lookup + bool isEmpowered; // bool check faster than map lookup uint32 spawnHealth; }; - CreatureAI* GetAI(Creature* pCreature) const + CreatureAI* GetAI(Creature* creature) const { - return new boss_prince_valanarAI(pCreature); + return new boss_prince_valanarAI(creature); } }; @@ -924,10 +939,10 @@ class npc_blood_queen_lana_thel : public CreatureScript struct npc_blood_queen_lana_thelAI : public ScriptedAI { - npc_blood_queen_lana_thelAI(Creature* pCreature) : ScriptedAI(pCreature) + npc_blood_queen_lana_thelAI(Creature* creature) : ScriptedAI(creature) { - bIntroDone = false; - instance = pCreature->GetInstanceScript(); + introDone = false; + instance = creature->GetInstanceScript(); } void InitializeAI() @@ -945,7 +960,7 @@ class npc_blood_queen_lana_thel : public CreatureScript if (instance->GetBossState(DATA_BLOOD_PRINCE_COUNCIL) == DONE) { me->SetVisible(false); - bIntroDone = true; + introDone = true; } else me->SetVisible(true); @@ -953,14 +968,14 @@ class npc_blood_queen_lana_thel : public CreatureScript void MoveInLineOfSight(Unit* who) { - if (bIntroDone) + if (introDone) return; if (!me->IsWithinDistInMap(who, 35.0f)) return; - bIntroDone = true; - DoScriptText(SAY_INTRO_1, me); + introDone = true; + Talk(SAY_INTRO_1); events.SetPhase(1); events.ScheduleEvent(EVENT_INTRO_1, 14000); // summon a visual trigger @@ -987,7 +1002,7 @@ class npc_blood_queen_lana_thel : public CreatureScript if (events.ExecuteEvent() == EVENT_INTRO_1) { - DoScriptText(SAY_INTRO_2, me); + Talk(SAY_INTRO_2); me->GetMotionMaster()->MovePoint(POINT_INTRO_DESPAWN, introFinalPos); events.Reset(); @@ -1007,14 +1022,14 @@ class npc_blood_queen_lana_thel : public CreatureScript } private: - bool bIntroDone; + bool introDone; EventMap events; InstanceScript* instance; }; - CreatureAI* GetAI(Creature* pCreature) const + CreatureAI* GetAI(Creature* creature) const { - return new npc_blood_queen_lana_thelAI(pCreature); + return new npc_blood_queen_lana_thelAI(creature); } }; @@ -1025,7 +1040,7 @@ class npc_ball_of_flame : public CreatureScript struct npc_ball_of_flameAI : public ScriptedAI { - npc_ball_of_flameAI(Creature* pCreature) : ScriptedAI(pCreature) + npc_ball_of_flameAI(Creature* creature) : ScriptedAI(creature) { despawnTimer = 0; } @@ -1087,9 +1102,9 @@ class npc_ball_of_flame : public CreatureScript uint64 chaseGUID; }; - CreatureAI* GetAI(Creature* pCreature) const + CreatureAI* GetAI(Creature* creature) const { - return new npc_ball_of_flameAI(pCreature); + return new npc_ball_of_flameAI(creature); } }; @@ -1100,7 +1115,7 @@ class npc_kinetic_bomb : public CreatureScript struct npc_kinetic_bombAI : public ScriptedAI { - npc_kinetic_bombAI(Creature* pCreature) : ScriptedAI(pCreature) { } + npc_kinetic_bombAI(Creature* creature) : ScriptedAI(creature) { } void Reset() { @@ -1152,9 +1167,9 @@ class npc_kinetic_bomb : public CreatureScript float x, y, groundZ; }; - CreatureAI* GetAI(Creature* pCreature) const + CreatureAI* GetAI(Creature* creature) const { - return new npc_kinetic_bombAI(pCreature); + return new npc_kinetic_bombAI(creature); } }; @@ -1165,7 +1180,7 @@ class npc_dark_nucleus : public CreatureScript struct npc_dark_nucleusAI : public ScriptedAI { - npc_dark_nucleusAI(Creature* pCreature) : ScriptedAI(pCreature) + npc_dark_nucleusAI(Creature* creature) : ScriptedAI(creature) { lockedTarget = false; targetAuraCheck = 0; @@ -1250,9 +1265,9 @@ class npc_dark_nucleus : public CreatureScript bool lockedTarget; }; - CreatureAI* GetAI(Creature* pCreature) const + CreatureAI* GetAI(Creature* creature) const { - return new npc_dark_nucleusAI(pCreature); + return new npc_dark_nucleusAI(creature); } }; diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp index 54436d1eeac..a00ec330897 100755 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp @@ -15,64 +15,73 @@ * with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include "ScriptPCH.h" +#include "ObjectMgr.h" +#include "ScriptMgr.h" +#include "ScriptedCreature.h" +#include "ScriptedGossip.h" +#include "SpellScript.h" +#include "SpellAuras.h" #include "icecrown_citadel.h" enum eScriptTexts { - SAY_INTRO_ALLIANCE_1 = -1631029, - SAY_INTRO_ALLIANCE_2 = -1631030, - SAY_INTRO_ALLIANCE_3 = -1631031, - SAY_INTRO_ALLIANCE_4 = -1631032, - SAY_INTRO_ALLIANCE_5 = -1631033, - SAY_INTRO_ALLIANCE_6 = -1631034, - SAY_INTRO_ALLIANCE_7 = -1631035, - - SAY_INTRO_HORDE_1 = -1631036, - SAY_INTRO_HORDE_2 = -1631037, - SAY_INTRO_HORDE_3 = -1631038, - SAY_INTRO_HORDE_4 = -1631039, - SAY_INTRO_HORDE_5 = -1631040, - SAY_INTRO_HORDE_6 = -1631041, - SAY_INTRO_HORDE_7 = -1631042, - SAY_INTRO_HORDE_8 = -1631043, - SAY_INTRO_HORDE_9 = -1631044, - - SAY_AGGRO = -1631045, - SAY_MARK_OF_THE_FALLEN_CHAMPION = -1631046, - SAY_BLOOD_BEASTS = -1631047, - SAY_KILL_1 = -1631048, - SAY_KILL_2 = -1631049, - SAY_FRENZY = -1631050, - SAY_BERSERK = -1631051, - SAY_DEATH = -1631052, - - SAY_OUTRO_ALLIANCE_1 = -1631053, // TODO ALLIANCE OUTRO - SAY_OUTRO_ALLIANCE_2 = -1631054, - SAY_OUTRO_ALLIANCE_3 = -1631055, - SAY_OUTRO_ALLIANCE_4 = -1631056, - SAY_OUTRO_ALLIANCE_5 = -1631057, - SAY_OUTRO_ALLIANCE_6 = -1631058, - SAY_OUTRO_ALLIANCE_7 = -1631059, - SAY_OUTRO_ALLIANCE_8 = -1631060, - SAY_OUTRO_ALLIANCE_9 = -1631061, - SAY_OUTRO_ALLIANCE_10 = -1631062, - SAY_OUTRO_ALLIANCE_11 = -1631063, - SAY_OUTRO_ALLIANCE_12 = -1631064, // kneel after WP reached - SAY_OUTRO_ALLIANCE_13 = -1631065, - SAY_OUTRO_ALLIANCE_14 = -1631066, - SAY_OUTRO_ALLIANCE_15 = -1631067, - SAY_OUTRO_ALLIANCE_16 = -1631068, - SAY_OUTRO_ALLIANCE_17 = -1631069, - SAY_OUTRO_ALLIANCE_18 = -1631070, - SAY_OUTRO_ALLIANCE_19 = -1631071, - SAY_OUTRO_ALLIANCE_20 = -1631072, - SAY_OUTRO_ALLIANCE_21 = -1631073, - - SAY_OUTRO_HORDE_1 = -1631074, - SAY_OUTRO_HORDE_2 = -1631075, - SAY_OUTRO_HORDE_3 = -1631076, - SAY_OUTRO_HORDE_4 = -1631077 + // Deathbringer Saurfang + SAY_INTRO_ALLIANCE_2 = 0, + SAY_INTRO_ALLIANCE_3 = 1, + SAY_INTRO_ALLIANCE_6 = 2, + SAY_INTRO_ALLIANCE_7 = 3, + SAY_INTRO_HORDE_2 = 4, + SAY_INTRO_HORDE_4 = 5, + SAY_INTRO_HORDE_9 = 6, + SAY_AGGRO = 7, + SAY_MARK_OF_THE_FALLEN_CHAMPION = 8, + SAY_BLOOD_BEASTS = 9, + SAY_KILL = 10, + SAY_FRENZY = 11, + SAY_BERSERK = 12, + SAY_DEATH = 13, + + // High Overlord Saurfang + SAY_INTRO_HORDE_1 = 0, + SAY_INTRO_HORDE_3 = 1, + SAY_INTRO_HORDE_5 = 2, + SAY_INTRO_HORDE_6 = 3, + SAY_INTRO_HORDE_7 = 4, + SAY_INTRO_HORDE_8 = 5, + SAY_OUTRO_ALLIANCE_8 = 6, + SAY_OUTRO_ALLIANCE_12 = 7, // kneel after WP reached + SAY_OUTRO_ALLIANCE_13 = 8, + SAY_OUTRO_ALLIANCE_14 = 9, + SAY_OUTRO_ALLIANCE_15 = 10, + SAY_OUTRO_HORDE_1 = 11, + SAY_OUTRO_HORDE_2 = 12, + SAY_OUTRO_HORDE_3 = 13, + SAY_OUTRO_HORDE_4 = 14, + + // Muradin Bronzebeard + SAY_INTRO_ALLIANCE_1 = 0, + SAY_INTRO_ALLIANCE_4 = 1, + SAY_INTRO_ALLIANCE_5 = 2, + SAY_OUTRO_ALLIANCE_1 = 3, // TODO ALLIANCE OUTRO + SAY_OUTRO_ALLIANCE_2 = 4, + SAY_OUTRO_ALLIANCE_3 = 5, + SAY_OUTRO_ALLIANCE_4 = 6, + SAY_OUTRO_ALLIANCE_5 = 7, + SAY_OUTRO_ALLIANCE_6 = 8, + SAY_OUTRO_ALLIANCE_7 = 9, + SAY_OUTRO_ALLIANCE_9 = 10, + SAY_OUTRO_ALLIANCE_10 = 11, + SAY_OUTRO_ALLIANCE_21 = 12, + + // Lady Jaina Proudmoore + SAY_OUTRO_ALLIANCE_17 = 0, + SAY_OUTRO_ALLIANCE_19 = 1, + + // King Varian Wrynn + SAY_OUTRO_ALLIANCE_11 = 0, + SAY_OUTRO_ALLIANCE_16 = 1, + SAY_OUTRO_ALLIANCE_18 = 2, + SAY_OUTRO_ALLIANCE_20 = 3, }; enum eSpells @@ -102,7 +111,7 @@ enum eSpells SPELL_SCENT_OF_BLOOD = 72769, // Heroic only SPELL_RIDE_VEHICLE = 70640, // Outro - SPELL_ACHIEVEMENT = 72928 + SPELL_ACHIEVEMENT = 72928, }; // Helper to get id of the aura on different modes (HasAura(baseId) wont work) @@ -165,7 +174,7 @@ enum eEvents EVENT_OUTRO_HORDE_5 = 48, EVENT_OUTRO_HORDE_6 = 49, EVENT_OUTRO_HORDE_7 = 50, - EVENT_OUTRO_HORDE_8 = 51 + EVENT_OUTRO_HORDE_8 = 51, }; enum ePhases @@ -231,11 +240,11 @@ class boss_deathbringer_saurfang : public CreatureScript struct boss_deathbringer_saurfangAI : public BossAI { - boss_deathbringer_saurfangAI(Creature* pCreature) : BossAI(pCreature, DATA_DEATHBRINGER_SAURFANG) + boss_deathbringer_saurfangAI(Creature* creature) : BossAI(creature, DATA_DEATHBRINGER_SAURFANG) { - ASSERT(pCreature->GetVehicleKit()); // we dont actually use it, just check if exists - bIntroDone = false; - uiFallenChampionCount = 0; + ASSERT(creature->GetVehicleKit()); // we dont actually use it, just check if exists + introDone = false; + fallenChampionCount = 0; } void InitializeAI() @@ -250,7 +259,7 @@ class boss_deathbringer_saurfang : public CreatureScript { events.Reset(); events.SetPhase(PHASE_COMBAT); - bFrenzy = false; + frenzy = false; me->SetPower(POWER_ENERGY, 0); DoCast(me, SPELL_ZERO_POWER, true); DoCast(me, SPELL_BLOOD_LINK, true); @@ -265,14 +274,14 @@ class boss_deathbringer_saurfang : public CreatureScript void EnterCombat(Unit* /*who*/) { - DoScriptText(SAY_AGGRO, me); + Talk(SAY_AGGRO); events.ScheduleEvent(EVENT_SUMMON_BLOOD_BEAST, 30000, 0, PHASE_COMBAT); events.ScheduleEvent(EVENT_BERSERK, 480000, 0, PHASE_COMBAT); events.ScheduleEvent(EVENT_BOILING_BLOOD, 15500, 0, PHASE_COMBAT); events.ScheduleEvent(EVENT_BLOOD_NOVA, 17000, 0, PHASE_COMBAT); events.ScheduleEvent(EVENT_RUNE_OF_BLOOD, 20000, 0, PHASE_COMBAT); - uiFallenChampionCount = 0; + fallenChampionCount = 0; instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_MARK_OF_THE_FALLEN_CHAMPION); instance->SetBossState(DATA_DEATHBRINGER_SAURFANG, IN_PROGRESS); } @@ -280,7 +289,7 @@ class boss_deathbringer_saurfang : public CreatureScript void JustDied(Unit* /*killer*/) { DoCastAOE(SPELL_ACHIEVEMENT, true); - DoScriptText(SAY_DEATH, me); + Talk(SAY_DEATH); instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_MARK_OF_THE_FALLEN_CHAMPION); instance->SetBossState(DATA_DEATHBRINGER_SAURFANG, DONE); @@ -304,7 +313,7 @@ class boss_deathbringer_saurfang : public CreatureScript void EnterEvadeMode() { ScriptedAI::EnterEvadeMode(); - if (bIntroDone) + if (introDone) me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE); } @@ -314,26 +323,26 @@ class boss_deathbringer_saurfang : public CreatureScript instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_MARK_OF_THE_FALLEN_CHAMPION); } - void KilledUnit(Unit *victim) + void KilledUnit(Unit* victim) { if (victim->GetTypeId() == TYPEID_PLAYER) - DoScriptText(RAND(SAY_KILL_1, SAY_KILL_2), me); + Talk(SAY_KILL); } void DamageTaken(Unit* /*attacker*/, uint32& /*damage*/) { - if (!bFrenzy && HealthBelowPct(31)) // AT 30%, not below + if (!frenzy && HealthBelowPct(31)) // AT 30%, not below { - bFrenzy = true; + frenzy = true; DoCast(me, SPELL_FRENZY); - DoScriptText(SAY_FRENZY, me); + Talk(SAY_FRENZY); } } void JustSummoned(Creature* summon) { - if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 1)) - summon->AI()->AttackStart(pTarget); + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1)) + summon->AI()->AttackStart(target); if (IsHeroic()) DoCast(summon, SPELL_SCENT_OF_BLOOD); @@ -361,7 +370,7 @@ class boss_deathbringer_saurfang : public CreatureScript switch (spell->Id) { case SPELL_MARK_OF_THE_FALLEN_CHAMPION: - DoScriptText(SAY_MARK_OF_THE_FALLEN_CHAMPION, me); + Talk(SAY_MARK_OF_THE_FALLEN_CHAMPION); break; case 72255: // Mark of the Fallen Champion, triggered id case 72444: @@ -390,29 +399,29 @@ class boss_deathbringer_saurfang : public CreatureScript switch (eventId) { case EVENT_INTRO_ALLIANCE_2: - DoScriptText(SAY_INTRO_ALLIANCE_2, me); + Talk(SAY_INTRO_ALLIANCE_2); break; case EVENT_INTRO_ALLIANCE_3: - DoScriptText(SAY_INTRO_ALLIANCE_3, me); + Talk(SAY_INTRO_ALLIANCE_3); break; case EVENT_INTRO_ALLIANCE_6: - DoScriptText(SAY_INTRO_ALLIANCE_6, me); - DoScriptText(SAY_INTRO_ALLIANCE_7, me); + Talk(SAY_INTRO_ALLIANCE_6); + Talk(SAY_INTRO_ALLIANCE_7); DoCast(me, SPELL_GRIP_OF_AGONY); break; case EVENT_INTRO_HORDE_2: - DoScriptText(SAY_INTRO_HORDE_2, me); + Talk(SAY_INTRO_HORDE_2); break; case EVENT_INTRO_HORDE_4: - DoScriptText(SAY_INTRO_HORDE_4, me); + Talk(SAY_INTRO_HORDE_4); break; case EVENT_INTRO_HORDE_9: DoCast(me, SPELL_GRIP_OF_AGONY); - DoScriptText(SAY_INTRO_HORDE_9, me); + Talk(SAY_INTRO_HORDE_9); break; case EVENT_INTRO_FINISH: events.SetPhase(PHASE_COMBAT); - bIntroDone = true; + introDone = true; me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE); break; case EVENT_SUMMON_BLOOD_BEAST: @@ -421,7 +430,7 @@ class boss_deathbringer_saurfang : public CreatureScript if (Is25ManRaid()) for (uint8 i25 = 0; i25 < 3; ++i25) DoCast(me, SPELL_SUMMON_BLOOD_BEAST_25_MAN+i25); - DoScriptText(SAY_BLOOD_BEASTS, me); + Talk(SAY_BLOOD_BEASTS); events.ScheduleEvent(EVENT_SUMMON_BLOOD_BEAST, 40000, 0, PHASE_COMBAT); break; case EVENT_BLOOD_NOVA: @@ -446,7 +455,7 @@ class boss_deathbringer_saurfang : public CreatureScript break; case EVENT_BERSERK: DoCast(me, SPELL_BERSERK); - DoScriptText(SAY_BERSERK, me); + Talk(SAY_BERSERK); break; default: break; @@ -459,7 +468,7 @@ class boss_deathbringer_saurfang : public CreatureScript uint32 GetData(uint32 type) { if (type == DATA_MADE_A_MESS) - if (uiFallenChampionCount < RAID_MODE<uint32>(3, 5, 3, 5)) + if (fallenChampionCount < RAID_MODE<uint32>(3, 5, 3, 5)) return 1; return 0; @@ -501,7 +510,7 @@ class boss_deathbringer_saurfang : public CreatureScript case ACTION_MARK_OF_THE_FALLEN_CHAMPION: if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true, -SPELL_MARK_OF_THE_FALLEN_CHAMPION)) { - ++uiFallenChampionCount; + ++fallenChampionCount; DoCast(target, SPELL_MARK_OF_THE_FALLEN_CHAMPION); me->SetPower(POWER_ENERGY, 0); if (Aura* bloodPower = me->GetAura(SPELL_BLOOD_POWER)) @@ -514,14 +523,14 @@ class boss_deathbringer_saurfang : public CreatureScript } private: - bool bIntroDone; - bool bFrenzy; // faster than iterating all auras to find Frenzy - uint32 uiFallenChampionCount; + bool introDone; + bool frenzy; // faster than iterating all auras to find Frenzy + uint32 fallenChampionCount; }; - CreatureAI* GetAI(Creature* pCreature) const + CreatureAI* GetAI(Creature* creature) const { - return new boss_deathbringer_saurfangAI(pCreature); + return new boss_deathbringer_saurfangAI(creature); } }; @@ -532,10 +541,10 @@ class npc_high_overlord_saurfang_icc : public CreatureScript struct npc_high_overlord_saurfangAI : public ScriptedAI { - npc_high_overlord_saurfangAI(Creature* pCreature) : ScriptedAI(pCreature), vehicle(pCreature->GetVehicleKit()) + npc_high_overlord_saurfangAI(Creature* creature) : ScriptedAI(creature), vehicle(creature->GetVehicleKit()) { ASSERT(vehicle); - pInstance = me->GetInstanceScript(); + instance = me->GetInstanceScript(); } void Reset() @@ -558,21 +567,21 @@ class npc_high_overlord_saurfang_icc : public CreatureScript (*itr)->AI()->SetData(0, x); me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); - DoScriptText(SAY_INTRO_HORDE_1, me); + Talk(SAY_INTRO_HORDE_1); events.SetPhase(PHASE_INTRO_H); events.ScheduleEvent(EVENT_INTRO_HORDE_3, 18500, 0, PHASE_INTRO_H); - if (pInstance) + if (instance) { - uiDeathbringerSaurfangGUID = pInstance->GetData64(DATA_DEATHBRINGER_SAURFANG); - pInstance->HandleGameObject(pInstance->GetData64(GO_SAURFANG_S_DOOR), true); + deathbringerSaurfangGUID = instance->GetData64(DATA_DEATHBRINGER_SAURFANG); + instance->HandleGameObject(instance->GetData64(GO_SAURFANG_S_DOOR), true); } - if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, uiDeathbringerSaurfangGUID)) + if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, deathbringerSaurfangGUID)) deathbringer->AI()->DoAction(PHASE_INTRO_H); } else if (action == ACTION_START_OUTRO) { me->RemoveAurasDueToSpell(SPELL_GRIP_OF_AGONY); - DoScriptText(SAY_OUTRO_HORDE_1, me); + Talk(SAY_OUTRO_HORDE_1); events.ScheduleEvent(EVENT_OUTRO_HORDE_2, 10000); // say events.ScheduleEvent(EVENT_OUTRO_HORDE_3, 18000); // say events.ScheduleEvent(EVENT_OUTRO_HORDE_4, 24000); // cast @@ -603,19 +612,17 @@ class npc_high_overlord_saurfang_icc : public CreatureScript if (id == POINT_FIRST_STEP) { me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING); - DoScriptText(SAY_INTRO_HORDE_3, me); + Talk(SAY_INTRO_HORDE_3); events.ScheduleEvent(EVENT_INTRO_HORDE_5, 15500, 0, PHASE_INTRO_H); events.ScheduleEvent(EVENT_INTRO_HORDE_6, 29500, 0, PHASE_INTRO_H); events.ScheduleEvent(EVENT_INTRO_HORDE_7, 43800, 0, PHASE_INTRO_H); events.ScheduleEvent(EVENT_INTRO_HORDE_8, 47000, 0, PHASE_INTRO_H); - if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, uiDeathbringerSaurfangGUID)) + if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, deathbringerSaurfangGUID)) deathbringer->AI()->DoAction(ACTION_CONTINUE_INTRO); } - //else if (id == EVENT_FALL_GROUND) - // me->RemoveUnitMovementFlag(MOVEMENTFLAG_LEVITATING); else if (id == POINT_CORPSE) { - if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, uiDeathbringerSaurfangGUID)) + if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, deathbringerSaurfangGUID)) { deathbringer->CastSpell(me, SPELL_RIDE_VEHICLE, true); // for the packet logs. deathbringer->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); @@ -627,7 +634,7 @@ class npc_high_overlord_saurfang_icc : public CreatureScript } else if (id == POINT_FINAL) { - if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, uiDeathbringerSaurfangGUID)) + if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, deathbringerSaurfangGUID)) deathbringer->ForcedDespawn(); me->ForcedDespawn(); } @@ -645,30 +652,30 @@ class npc_high_overlord_saurfang_icc : public CreatureScript me->GetMotionMaster()->MovePoint(POINT_FIRST_STEP, firstStepPos.GetPositionX(), firstStepPos.GetPositionY(), firstStepPos.GetPositionZ()); break; case EVENT_INTRO_HORDE_5: - DoScriptText(SAY_INTRO_HORDE_5, me); + Talk(SAY_INTRO_HORDE_5); break; case EVENT_INTRO_HORDE_6: - DoScriptText(SAY_INTRO_HORDE_6, me); + Talk(SAY_INTRO_HORDE_6); break; case EVENT_INTRO_HORDE_7: - DoScriptText(SAY_INTRO_HORDE_7, me); + Talk(SAY_INTRO_HORDE_7); break; case EVENT_INTRO_HORDE_8: - DoScriptText(SAY_INTRO_HORDE_8, me); + Talk(SAY_INTRO_HORDE_8); for (std::list<Creature*>::iterator itr = guardList.begin(); itr != guardList.end(); ++itr) (*itr)->AI()->DoAction(ACTION_CHARGE); me->GetMotionMaster()->MoveCharge(chargePos[0].GetPositionX(), chargePos[0].GetPositionY(), chargePos[0].GetPositionZ(), 8.5f, POINT_CHARGE); break; case EVENT_OUTRO_HORDE_2: // say - if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, uiDeathbringerSaurfangGUID)) + if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, deathbringerSaurfangGUID)) me->SetFacingToObject(deathbringer); - DoScriptText(SAY_OUTRO_HORDE_2, me); + Talk(SAY_OUTRO_HORDE_2); break; case EVENT_OUTRO_HORDE_3: // say - DoScriptText(SAY_OUTRO_HORDE_3, me); + Talk(SAY_OUTRO_HORDE_3); break; case EVENT_OUTRO_HORDE_4: // move - if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, uiDeathbringerSaurfangGUID)) + if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, deathbringerSaurfangGUID)) { float x, y, z; deathbringer->GetClosePoint(x, y, z, deathbringer->GetObjectSize()); @@ -680,7 +687,7 @@ class npc_high_overlord_saurfang_icc : public CreatureScript me->GetMotionMaster()->MovePoint(POINT_FINAL, finalPos); break; case EVENT_OUTRO_HORDE_6: // say - DoScriptText(SAY_OUTRO_HORDE_4, me); + Talk(SAY_OUTRO_HORDE_4); break; } } @@ -688,40 +695,40 @@ class npc_high_overlord_saurfang_icc : public CreatureScript private: EventMap events; - InstanceScript* pInstance; + InstanceScript* instance; Vehicle* vehicle; - uint64 uiDeathbringerSaurfangGUID; + uint64 deathbringerSaurfangGUID; std::list<Creature*> guardList; }; - bool OnGossipHello(Player* pPlayer, Creature* pCreature) + bool OnGossipHello(Player* player, Creature* creature) { - if (pCreature->GetPositionZ() < 530.0f) + if (creature->GetPositionZ() < 530.0f) return false; - InstanceScript* pInstance = pCreature->GetInstanceScript(); - if (pInstance && pInstance->GetBossState(DATA_DEATHBRINGER_SAURFANG) != DONE) + InstanceScript* instance = creature->GetInstanceScript(); + if (instance && instance->GetBossState(DATA_DEATHBRINGER_SAURFANG) != DONE) { - pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Let it begin...", 631, -ACTION_START_EVENT); - pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, pCreature->GetGUID()); + player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Let it begin...", 631, -ACTION_START_EVENT); + player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, creature->GetGUID()); } return true; } - bool OnGossipSelect(Player* player, Creature* pCreature, uint32 /*sender*/, uint32 action) + bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) { player->PlayerTalkClass->ClearMenus(); player->CLOSE_GOSSIP_MENU(); if (action == -ACTION_START_EVENT) - pCreature->AI()->DoAction(ACTION_START_EVENT); + creature->AI()->DoAction(ACTION_START_EVENT); return true; } - CreatureAI* GetAI(Creature* pCreature) const + CreatureAI* GetAI(Creature* creature) const { - return new npc_high_overlord_saurfangAI(pCreature); + return new npc_high_overlord_saurfangAI(creature); } }; @@ -732,9 +739,9 @@ class npc_muradin_bronzebeard_icc : public CreatureScript struct npc_muradin_bronzebeard_iccAI : public ScriptedAI { - npc_muradin_bronzebeard_iccAI(Creature* pCreature) : ScriptedAI(pCreature) + npc_muradin_bronzebeard_iccAI(Creature* creature) : ScriptedAI(creature) { - pInstance = me->GetInstanceScript(); + instance = me->GetInstanceScript(); } void Reset() @@ -758,20 +765,20 @@ class npc_muradin_bronzebeard_icc : public CreatureScript (*itr)->AI()->SetData(0, x); me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); - DoScriptText(SAY_INTRO_ALLIANCE_1, me); + Talk(SAY_INTRO_ALLIANCE_1); events.ScheduleEvent(EVENT_INTRO_ALLIANCE_4, 2500+17500+9500, 0, PHASE_INTRO_A); - if (pInstance) + if (instance) { - uiDeathbringerSaurfangGUID = pInstance->GetData64(DATA_DEATHBRINGER_SAURFANG); - pInstance->HandleGameObject(pInstance->GetData64(GO_SAURFANG_S_DOOR), true); + deathbringerSaurfangGUID = instance->GetData64(DATA_DEATHBRINGER_SAURFANG); + instance->HandleGameObject(instance->GetData64(GO_SAURFANG_S_DOOR), true); } - if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, uiDeathbringerSaurfangGUID)) + if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, deathbringerSaurfangGUID)) deathbringer->AI()->DoAction(PHASE_INTRO_A); } else if (action == ACTION_START_OUTRO) { me->RemoveAurasDueToSpell(SPELL_GRIP_OF_AGONY); - DoScriptText(SAY_OUTRO_ALLIANCE_1, me); + Talk(SAY_OUTRO_ALLIANCE_1); me->RemoveUnitMovementFlag(MOVEMENTFLAG_LEVITATING); me->SendMovementFlagUpdate(); me->Relocate(me->GetPositionX(), me->GetPositionY(), 539.2917f); @@ -796,9 +803,9 @@ class npc_muradin_bronzebeard_icc : public CreatureScript return; me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING); - DoScriptText(SAY_INTRO_ALLIANCE_4, me); + Talk(SAY_INTRO_ALLIANCE_4); events.ScheduleEvent(EVENT_INTRO_ALLIANCE_5, 5000, 0, PHASE_INTRO_A); - if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, uiDeathbringerSaurfangGUID)) + if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, deathbringerSaurfangGUID)) deathbringer->AI()->DoAction(ACTION_CONTINUE_INTRO); } @@ -814,7 +821,7 @@ class npc_muradin_bronzebeard_icc : public CreatureScript me->GetMotionMaster()->MovePoint(POINT_FIRST_STEP, firstStepPos.GetPositionX(), firstStepPos.GetPositionY(), firstStepPos.GetPositionZ()); break; case EVENT_INTRO_ALLIANCE_5: - DoScriptText(SAY_INTRO_ALLIANCE_5, me); + Talk(SAY_INTRO_ALLIANCE_5); for (std::list<Creature*>::iterator itr = guardList.begin(); itr != guardList.end(); ++itr) (*itr)->AI()->DoAction(ACTION_CHARGE); me->GetMotionMaster()->MoveCharge(chargePos[0].GetPositionX(), chargePos[0].GetPositionY(), chargePos[0].GetPositionZ(), 8.5f, POINT_CHARGE); @@ -825,39 +832,39 @@ class npc_muradin_bronzebeard_icc : public CreatureScript private: EventMap events; - InstanceScript* pInstance; - uint64 uiDeathbringerSaurfangGUID; + InstanceScript* instance; + uint64 deathbringerSaurfangGUID; std::list<Creature*> guardList; }; - bool OnGossipHello(Player* pPlayer, Creature* pCreature) + bool OnGossipHello(Player* player, Creature* creature) { - if (pCreature->GetPositionZ() < 530.0f) + if (creature->GetPositionZ() < 530.0f) return false; - InstanceScript* pInstance = pCreature->GetInstanceScript(); - if (pInstance && pInstance->GetBossState(DATA_DEATHBRINGER_SAURFANG) != DONE) + InstanceScript* instance = creature->GetInstanceScript(); + if (instance && instance->GetBossState(DATA_DEATHBRINGER_SAURFANG) != DONE) { - pPlayer->ADD_GOSSIP_ITEM(0, "Let it begin...", 631, -ACTION_START_EVENT+1); - pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, pCreature->GetGUID()); + player->ADD_GOSSIP_ITEM(0, "Let it begin...", 631, -ACTION_START_EVENT+1); + player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, creature->GetGUID()); } return true; } - bool OnGossipSelect(Player* player, Creature* pCreature, uint32 /*sender*/, uint32 action) + bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) { player->PlayerTalkClass->ClearMenus(); player->CLOSE_GOSSIP_MENU(); if (action == -ACTION_START_EVENT+1) - pCreature->AI()->DoAction(ACTION_START_EVENT); + creature->AI()->DoAction(ACTION_START_EVENT); return true; } - CreatureAI* GetAI(Creature* pCreature) const + CreatureAI* GetAI(Creature* creature) const { - return new npc_muradin_bronzebeard_iccAI(pCreature); + return new npc_muradin_bronzebeard_iccAI(creature); } }; @@ -868,7 +875,7 @@ class npc_saurfang_event : public CreatureScript struct npc_saurfang_eventAI : public ScriptedAI { - npc_saurfang_eventAI(Creature* pCreature) : ScriptedAI(pCreature) + npc_saurfang_eventAI(Creature* creature) : ScriptedAI(creature) { uiNPCindex = 0; } @@ -901,9 +908,9 @@ class npc_saurfang_event : public CreatureScript uint32 uiNPCindex; }; - CreatureAI* GetAI(Creature* pCreature) const + CreatureAI* GetAI(Creature* creature) const { - return new npc_saurfang_eventAI(pCreature); + return new npc_saurfang_eventAI(creature); } }; @@ -914,7 +921,8 @@ class spell_deathbringer_blood_link : public SpellScriptLoader class spell_deathbringer_blood_link_SpellScript : public SpellScript { - PrepareSpellScript(spell_deathbringer_blood_link_SpellScript) + PrepareSpellScript(spell_deathbringer_blood_link_SpellScript); + bool Validate(SpellEntry const* /*spellInfo*/) { if (!sSpellStore.LookupEntry(SPELL_BLOOD_LINK_POWER)) @@ -936,13 +944,6 @@ class spell_deathbringer_blood_link : public SpellScriptLoader { OnEffect += SpellEffectFn(spell_deathbringer_blood_link_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } - - bool Load() - { - if (GetSpellInfo()->Id != SPELL_BLOOD_LINK_DUMMY) - return false; - return true; - } }; SpellScript* GetSpellScript() const @@ -958,7 +959,8 @@ class spell_deathbringer_blood_link_aura : public SpellScriptLoader class spell_deathbringer_blood_link_AuraScript : public AuraScript { - PrepareAuraScript(spell_deathbringer_blood_link_AuraScript) + PrepareAuraScript(spell_deathbringer_blood_link_AuraScript); + bool Validate(SpellEntry const* /*spellInfo*/) { if (!sSpellStore.LookupEntry(SPELL_MARK_OF_THE_FALLEN_CHAMPION)) @@ -966,26 +968,18 @@ class spell_deathbringer_blood_link_aura : public SpellScriptLoader return true; } - void HandlePeriodicTick(AuraEffect const * /*aurEff*/, AuraApplication const * /*aurApp*/) + void HandlePeriodicTick(AuraEffect const* /*aurEff*/, AuraApplication const* /*aurApp*/) { + PreventDefaultAction(); if (GetUnitOwner()->getPowerType() == POWER_ENERGY && GetUnitOwner()->GetPower(POWER_ENERGY) == GetUnitOwner()->GetMaxPower(POWER_ENERGY)) if (Creature* saurfang = GetUnitOwner()->ToCreature()) saurfang->AI()->DoAction(ACTION_MARK_OF_THE_FALLEN_CHAMPION); - - PreventDefaultAction(); } void Register() { OnEffectPeriodic += AuraEffectPeriodicFn(spell_deathbringer_blood_link_AuraScript::HandlePeriodicTick, EFFECT_1, SPELL_AURA_PERIODIC_DUMMY); } - - bool Load() - { - if (GetSpellProto()->Id != SPELL_BLOOD_LINK) - return false; - return true; - } }; AuraScript* GetAuraScript() const @@ -1001,7 +995,8 @@ class spell_deathbringer_blood_power : public SpellScriptLoader class spell_deathbringer_blood_power_SpellScript : public SpellScript { - PrepareSpellScript(spell_deathbringer_blood_power_SpellScript) + PrepareSpellScript(spell_deathbringer_blood_power_SpellScript); + void ModAuraValue() { if (Aura* aura = GetHitAura()) @@ -1016,7 +1011,8 @@ class spell_deathbringer_blood_power : public SpellScriptLoader class spell_deathbringer_blood_power_AuraScript : public AuraScript { - PrepareAuraScript(spell_deathbringer_blood_power_AuraScript) + PrepareAuraScript(spell_deathbringer_blood_power_AuraScript); + void RecalculateHook(AuraEffect const* /*aurEffect*/, int32& amount, bool& canBeRecalculated) { amount = GetUnitOwner()->GetPower(POWER_ENERGY); @@ -1055,7 +1051,8 @@ class spell_deathbringer_rune_of_blood : public SpellScriptLoader class spell_deathbringer_rune_of_blood_SpellScript : public SpellScript { - PrepareSpellScript(spell_deathbringer_rune_of_blood_SpellScript) + PrepareSpellScript(spell_deathbringer_rune_of_blood_SpellScript); + bool Validate(SpellEntry const* /*spellInfo*/) { if (!sSpellStore.LookupEntry(SPELL_BLOOD_LINK_DUMMY)) @@ -1063,9 +1060,9 @@ class spell_deathbringer_rune_of_blood : public SpellScriptLoader return true; } - void HandleScript(SpellEffIndex /*effIndex*/) + void HandleScript(SpellEffIndex effIndex) { - PreventHitDefaultEffect(EFFECT_1); // make this the default handler + PreventHitDefaultEffect(effIndex); // make this the default handler if (GetCaster()->GetPower(POWER_ENERGY) != GetCaster()->GetMaxPower(POWER_ENERGY)) GetHitUnit()->CastCustomSpell(SPELL_BLOOD_LINK_DUMMY, SPELLVALUE_BASE_POINT0, 1, GetCaster(), true); } @@ -1089,7 +1086,8 @@ class spell_deathbringer_blood_nova : public SpellScriptLoader class spell_deathbringer_blood_nova_SpellScript : public SpellScript { - PrepareSpellScript(spell_deathbringer_blood_nova_SpellScript) + PrepareSpellScript(spell_deathbringer_blood_nova_SpellScript); + bool Validate(SpellEntry const* /*spellInfo*/) { if (!sSpellStore.LookupEntry(SPELL_BLOOD_LINK_DUMMY)) diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp index 7a5d3c3a1c7..c87a5242cac 100755 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp @@ -15,22 +15,25 @@ * with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include "ScriptPCH.h" +#include "ObjectMgr.h" +#include "ScriptMgr.h" +#include "ScriptedCreature.h" +#include "SpellScript.h" +#include "SpellAuras.h" #include "icecrown_citadel.h" enum eScriptTexts { - SAY_STINKY_DEAD = -1631078, - SAY_AGGRO = -1631079, - EMOTE_GAS_SPORE = -1631081, - EMOTE_WARN_GAS_SPORE = -1631082, - SAY_PUNGENT_BLIGHT = -1631083, - EMOTE_WARN_PUNGENT_BLIGHT = -1631084, - EMOTE_PUNGENT_BLIGHT = -1631085, - SAY_KILL_1 = -1631086, - SAY_KILL_2 = -1631087, - SAY_BERSERK = -1631088, - SAY_DEATH = -1631089 + SAY_STINKY_DEAD = 0, + SAY_AGGRO = 1, + EMOTE_GAS_SPORE = 2, + EMOTE_WARN_GAS_SPORE = 3, + SAY_PUNGENT_BLIGHT = 4, + EMOTE_WARN_PUNGENT_BLIGHT = 5, + EMOTE_PUNGENT_BLIGHT = 6, + SAY_KILL = 7, + SAY_BERSERK = 8, + SAY_DEATH = 9, }; enum eSpells @@ -47,7 +50,7 @@ enum eSpells // Stinky SPELL_MORTAL_WOUND = 71127, SPELL_DECIMATE = 71123, - SPELL_PLAGUE_STENCH = 71805 + SPELL_PLAGUE_STENCH = 71805, }; // Used for HasAura checks @@ -66,7 +69,7 @@ enum eEvents EVENT_GASTRIC_BLOAT = 5, EVENT_DECIMATE = 6, - EVENT_MORTAL_WOUND = 7 + EVENT_MORTAL_WOUND = 7, }; #define DATA_INOCULATED_STACK 69291 @@ -78,10 +81,10 @@ class boss_festergut : public CreatureScript struct boss_festergutAI : public BossAI { - boss_festergutAI(Creature* pCreature) : BossAI(pCreature, DATA_FESTERGUT) + boss_festergutAI(Creature* creature) : BossAI(creature, DATA_FESTERGUT) { - uiMaxInoculatedStack = 0; - uiInhaleCounter = 0; + maxInoculatedStack = 0; + inhaleCounter = 0; gasDummyGUID = 0; } @@ -101,17 +104,13 @@ class boss_festergut : public CreatureScript events.ScheduleEvent(EVENT_VILE_GAS, urand(30000, 32500)); events.ScheduleEvent(EVENT_GAS_SPORE, urand(20000, 25000)); events.ScheduleEvent(EVENT_GASTRIC_BLOAT, urand(12500, 15000)); - uiMaxInoculatedStack = 0; - uiInhaleCounter = 0; + maxInoculatedStack = 0; + inhaleCounter = 0; me->RemoveAurasDueToSpell(SPELL_BERSERK2); - if (Creature* gasDummy = GetClosestCreatureWithEntry(me, NPC_GAS_DUMMY, 100.0f, true)) + if (Creature* gasDummy = me->FindNearestCreature(NPC_GAS_DUMMY, 100.0f, true)) { gasDummyGUID = gasDummy->GetGUID(); - for (uint8 i = 0; i < 3; ++i) - { - gasDummy->RemoveAurasDueToSpell(gaseousBlight[i]); - gasDummy->RemoveAurasDueToSpell(gaseousBlightVisual[i]); - } + _RemoveBlight(); } instance->SetBossState(DATA_FESTERGUT, NOT_STARTED); @@ -119,8 +118,8 @@ class boss_festergut : public CreatureScript void EnterCombat(Unit* /*who*/) { - DoScriptText(SAY_AGGRO, me); - if (Creature* gasDummy = GetClosestCreatureWithEntry(me, NPC_GAS_DUMMY, 100.0f, true)) + Talk(SAY_AGGRO); + if (Creature* gasDummy = me->FindNearestCreature(NPC_GAS_DUMMY, 100.0f, true)) gasDummyGUID = gasDummy->GetGUID(); if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PROFESSOR_PUTRICIDE))) professor->AI()->DoAction(ACTION_FESTERGUT_COMBAT); @@ -130,17 +129,12 @@ class boss_festergut : public CreatureScript void JustDied(Unit* /*killer*/) { - DoScriptText(SAY_DEATH, me); + Talk(SAY_DEATH); instance->SetBossState(DATA_FESTERGUT, DONE); if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PROFESSOR_PUTRICIDE))) professor->AI()->DoAction(ACTION_FESTERGUT_DEATH); - if (Creature* gasDummy = ObjectAccessor::GetCreature(*me, gasDummyGUID)) - for (uint8 i = 0; i < 3; ++i) - { - gasDummy->RemoveAurasDueToSpell(gaseousBlight[i]); - gasDummy->RemoveAurasDueToSpell(gaseousBlightVisual[i]); - } + _RemoveBlight(); } void JustReachedHome() @@ -155,10 +149,10 @@ class boss_festergut : public CreatureScript professor->AI()->EnterEvadeMode(); } - void KilledUnit(Unit *victim) + void KilledUnit(Unit* victim) { if (victim->GetTypeId() == TYPEID_PLAYER) - DoScriptText(RAND(SAY_KILL_1, SAY_KILL_2), me); + Talk(SAY_KILL); } void MoveInLineOfSight(Unit* /*who*/) @@ -188,18 +182,13 @@ class boss_festergut : public CreatureScript { case EVENT_INHALE_BLIGHT: { - if (Creature* gasDummy = ObjectAccessor::GetCreature(*me, gasDummyGUID)) - for (uint8 i = 0; i < 3; ++i) - { - gasDummy->RemoveAurasDueToSpell(gaseousBlight[i]); - gasDummy->RemoveAurasDueToSpell(gaseousBlightVisual[i]); - } - if (uiInhaleCounter == 3) + _RemoveBlight(); + if (inhaleCounter == 3) { - DoScriptText(EMOTE_WARN_PUNGENT_BLIGHT, me); - DoScriptText(SAY_PUNGENT_BLIGHT, me); + Talk(EMOTE_WARN_PUNGENT_BLIGHT); + Talk(SAY_PUNGENT_BLIGHT); DoCast(me, SPELL_PUNGENT_BLIGHT); - uiInhaleCounter = 0; + inhaleCounter = 0; if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PROFESSOR_PUTRICIDE))) professor->AI()->DoAction(ACTION_FESTERGUT_GAS); } @@ -207,9 +196,9 @@ class boss_festergut : public CreatureScript { DoCast(me, SPELL_INHALE_BLIGHT); // just cast and dont bother with target, conditions will handle it - ++uiInhaleCounter; - if (uiInhaleCounter < 3) - me->CastSpell(me, gaseousBlight[uiInhaleCounter], true, NULL, NULL, me->GetGUID()); + ++inhaleCounter; + if (inhaleCounter < 3) + me->CastSpell(me, gaseousBlight[inhaleCounter], true, NULL, NULL, me->GetGUID()); } events.ScheduleEvent(EVENT_INHALE_BLIGHT, urand(33500, 35000)); break; @@ -229,9 +218,9 @@ class boss_festergut : public CreatureScript break; } case EVENT_GAS_SPORE: - DoScriptText(EMOTE_WARN_GAS_SPORE, me); + Talk(EMOTE_WARN_GAS_SPORE); + Talk(EMOTE_GAS_SPORE); me->CastCustomSpell(SPELL_GAS_SPORE, SPELLVALUE_MAX_TARGETS, RAID_MODE<int32>(2,3,2,3), me); - DoScriptText(EMOTE_GAS_SPORE, me); events.ScheduleEvent(EVENT_GAS_SPORE, urand(40000, 45000)); break; case EVENT_GASTRIC_BLOAT: @@ -240,7 +229,7 @@ class boss_festergut : public CreatureScript break; case EVENT_BERSERK: DoCast(me, SPELL_BERSERK2); - DoScriptText(SAY_BERSERK, me); + Talk(SAY_BERSERK); break; default: break; @@ -252,27 +241,37 @@ class boss_festergut : public CreatureScript void SetData(uint32 type, uint32 data) { - if (type == DATA_INOCULATED_STACK && data > uiMaxInoculatedStack) - uiMaxInoculatedStack = data; + if (type == DATA_INOCULATED_STACK && data > maxInoculatedStack) + maxInoculatedStack = data; } uint32 GetData(uint32 type) { if (type == DATA_INOCULATED_STACK) - return uint32(uiMaxInoculatedStack); + return uint32(maxInoculatedStack); return 0; } + void _RemoveBlight() + { + if (Creature* gasDummy = ObjectAccessor::GetCreature(*me, gasDummyGUID)) + for (uint8 i = 0; i < 3; ++i) + { + gasDummy->RemoveAurasDueToSpell(gaseousBlight[i]); + gasDummy->RemoveAurasDueToSpell(gaseousBlightVisual[i]); + } + } + private: - uint32 uiMaxInoculatedStack; - uint8 uiInhaleCounter; + uint32 maxInoculatedStack; + uint8 inhaleCounter; uint64 gasDummyGUID; }; - CreatureAI* GetAI(Creature* pCreature) const + CreatureAI* GetAI(Creature* creature) const { - return new boss_festergutAI(pCreature); + return new boss_festergutAI(creature); } }; @@ -283,9 +282,9 @@ class npc_stinky_icc : public CreatureScript struct npc_stinky_iccAI : public ScriptedAI { - npc_stinky_iccAI(Creature* pCreature) : ScriptedAI(pCreature) + npc_stinky_iccAI(Creature* creature) : ScriptedAI(creature) { - pInstance = pCreature->GetInstanceScript(); + instance = creature->GetInstanceScript(); } void Reset() @@ -328,20 +327,20 @@ class npc_stinky_icc : public CreatureScript void JustDied(Unit* /*who*/) { - uint64 festergutGUID = pInstance ? pInstance->GetData64(DATA_FESTERGUT) : 0; - if (Creature *festergut = me->GetCreature(*me, festergutGUID)) + uint64 festergutGUID = instance ? instance->GetData64(DATA_FESTERGUT) : 0; + if (Creature* festergut = me->GetCreature(*me, festergutGUID)) if (festergut->isAlive()) - DoScriptText(SAY_STINKY_DEAD, festergut); + festergut->AI()->Talk(SAY_STINKY_DEAD); } private: EventMap events; - InstanceScript* pInstance; + InstanceScript* instance; }; - CreatureAI* GetAI(Creature* pCreature) const + CreatureAI* GetAI(Creature* creature) const { - return new npc_stinky_iccAI(pCreature); + return new npc_stinky_iccAI(creature); } }; @@ -352,11 +351,12 @@ class spell_festergut_pungent_blight : public SpellScriptLoader class spell_festergut_pungent_blight_SpellScript : public SpellScript { - PrepareSpellScript(spell_festergut_pungent_blight_SpellScript) + PrepareSpellScript(spell_festergut_pungent_blight_SpellScript); + void HandleScript(SpellEffIndex /*effIndex*/) { SpellEntry const* spellInfo = sSpellStore.LookupEntry(GetEffectValue()); - if (!spellInfo) + if (!spellInfo || GetCaster()->GetTypeId() != TYPEID_UNIT) return; // Get Inhaled Blight id for our difficulty @@ -364,7 +364,7 @@ class spell_festergut_pungent_blight : public SpellScriptLoader // ...and remove it GetCaster()->RemoveAurasDueToSpell(spellInfo->Id); - DoScriptText(EMOTE_PUNGENT_BLIGHT, GetCaster()); + GetCaster()->ToCreature()->AI()->Talk(EMOTE_PUNGENT_BLIGHT); } void Register() @@ -386,7 +386,8 @@ class spell_festergut_gastric_bloat : public SpellScriptLoader class spell_festergut_gastric_bloat_SpellScript : public SpellScript { - PrepareSpellScript(spell_festergut_gastric_bloat_SpellScript) + PrepareSpellScript(spell_festergut_gastric_bloat_SpellScript); + void HandleScript(SpellEffIndex /*effIndex*/) { Aura const* aura = GetHitUnit()->GetAura(GetSpellInfo()->Id); @@ -422,7 +423,8 @@ class spell_festergut_blighted_spores : public SpellScriptLoader class spell_festergut_blighted_spores_AuraScript : public AuraScript { - PrepareAuraScript(spell_festergut_blighted_spores_AuraScript) + PrepareAuraScript(spell_festergut_blighted_spores_AuraScript); + void ExtraEffect(AuraEffect const* /*aurEff*/, AuraApplication const* aurApp, AuraEffectHandleModes /*mode*/) { if (!GetCaster()->IsAIEnabled || GetCaster()->GetTypeId() != TYPEID_UNIT) @@ -435,8 +437,7 @@ class spell_festergut_blighted_spores : public SpellScriptLoader aurApp->GetTarget()->CastSpell(aurApp->GetTarget(), SPELL_INOCULATED, true); ++currStack; - if (GetCaster()) - GetCaster()->ToCreature()->AI()->SetData(DATA_INOCULATED_STACK, currStack); + GetCaster()->ToCreature()->AI()->SetData(DATA_INOCULATED_STACK, currStack); } void Register() diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp index 79e2f04b766..cc303407873 100755 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp @@ -15,29 +15,31 @@ * with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include "ScriptPCH.h" +#include "ObjectMgr.h" +#include "ScriptMgr.h" +#include "ScriptedCreature.h" +#include "SpellScript.h" #include "icecrown_citadel.h" enum eScriptTexts { - SAY_INTRO_1 = -1631011, - SAY_INTRO_2 = -1631012, - SAY_INTRO_3 = -1631013, - SAY_INTRO_4 = -1631014, - SAY_INTRO_5 = -1631015, - SAY_INTRO_6 = -1631016, - SAY_INTRO_7 = -1631017, - SAY_AGGRO = -1631018, - SAY_PHASE_2 = -1631019, - SAY_PHASE_2_EMOTE = -1631020, - SAY_DOMINATE_MIND = -1631021, - SAY_DARK_EMPOWERMENT = -1631022, - SAY_DARK_TRANSFORMATION = -1631023, - SAY_ANIMATE_DEAD = -1631024, - SAY_KILL_1 = -1631025, - SAY_KILL_2 = -1631026, - SAY_BERSERK = -1631027, - SAY_DEATH = -1631028 + SAY_INTRO_1 = 0, + SAY_INTRO_2 = 1, + SAY_INTRO_3 = 2, + SAY_INTRO_4 = 3, + SAY_INTRO_5 = 4, + SAY_INTRO_6 = 5, + SAY_INTRO_7 = 6, + SAY_AGGRO = 7, + SAY_PHASE_2 = 8, + EMOTE_PHASE_2 = 9, + SAY_DOMINATE_MIND = 10, + SAY_DARK_EMPOWERMENT = 11, + SAY_DARK_TRANSFORMATION = 12, + SAY_ANIMATE_DEAD = 13, + SAY_KILL = 14, + SAY_BERSERK = 15, + SAY_DEATH = 16, }; enum eSpells @@ -82,7 +84,10 @@ enum eSpells // Vengeful Shade SPELL_VENGEFUL_BLAST = 71544, - SPELL_VENGEFUL_BLAST_PASSIVE = 71494 + SPELL_VENGEFUL_BLAST_PASSIVE = 71494, + SPELL_VENGEFUL_BLAST_25N = 72010, + SPELL_VENGEFUL_BLAST_10H = 72011, + SPELL_VENGEFUL_BLAST_25H = 72012, }; enum eEvents @@ -124,7 +129,7 @@ enum eEvents EVENT_ADHERENT_FROST_FEVER = 24, EVENT_ADHERENT_DEATHCHILL = 25, EVENT_ADHERENT_CURSE_OF_TORPOR = 26, - EVENT_ADHERENT_SHORUD_OF_THE_OCCULT = 27 + EVENT_ADHERENT_SHORUD_OF_THE_OCCULT = 27, }; enum ePhases @@ -138,7 +143,7 @@ enum ePhases PHASE_ONE_MASK = 1 << PHASE_ONE, }; -static const uint32 uiAddEntries[2] = {NPC_CULT_FANATIC, NPC_CULT_ADHERENT}; +static const uint32 addEntries[2] = {NPC_CULT_FANATIC, NPC_CULT_ADHERENT}; static const Position addSpawnPos[7] = { @@ -148,7 +153,7 @@ static const Position addSpawnPos[7] = {-578.6996f, 2269.856f, 51.01529f, 4.590216f}, // 4 Right Door 1 (Cult Adherent) {-598.9688f, 2269.264f, 51.01529f, 4.590216f}, // 5 Right Door 2 (Cult Fanatic) {-619.4323f, 2268.523f, 51.01530f, 4.590216f}, // 6 Right Door 3 (Cult Adherent) - {-524.2480f, 2211.920f, 62.90960f, 3.141592f} // 7 Upper (Random Cultist) + {-524.2480f, 2211.920f, 62.90960f, 3.141592f}, // 7 Upper (Random Cultist) }; class boss_lady_deathwhisper : public CreatureScript @@ -158,10 +163,10 @@ class boss_lady_deathwhisper : public CreatureScript struct boss_lady_deathwhisperAI : public BossAI { - boss_lady_deathwhisperAI(Creature* pCreature) : BossAI(pCreature, DATA_LADY_DEATHWHISPER) + boss_lady_deathwhisperAI(Creature* creature) : BossAI(creature, DATA_LADY_DEATHWHISPER) { - bIntroDone = false; - uiDominateMindCount = RAID_MODE(0,1,1,3); + introDone = false; + dominateMindCount = RAID_MODE(0,1,1,3); } void InitializeAI() @@ -178,8 +183,8 @@ class boss_lady_deathwhisper : public CreatureScript me->SetLastManaUse(0xFFFFFFFF); // hacky, but no other way atm to prevent mana regen events.Reset(); events.SetPhase(PHASE_ONE); - uiAddWaveCounter = 0; - uiNextVengefulShadeTarget = 0; + addWaveCounter = 0; + nextVengefulShadeTarget = 0; DoCast(me, SPELL_SHADOW_CHANNELING); me->RemoveAurasDueToSpell(SPELL_BERSERK); me->RemoveAurasDueToSpell(SPELL_MANA_BARRIER); @@ -190,11 +195,11 @@ class boss_lady_deathwhisper : public CreatureScript void MoveInLineOfSight(Unit* who) { - if (!bIntroDone && me->IsWithinDistInMap(who, 100.0f)) + if (!introDone && me->IsWithinDistInMap(who, 100.0f)) { me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); - bIntroDone = true; - DoScriptText(SAY_INTRO_1, me); + introDone = true; + Talk(SAY_INTRO_1); events.SetPhase(PHASE_INTRO); events.ScheduleEvent(EVENT_INTRO_2, 11000, 0, PHASE_INTRO); events.ScheduleEvent(EVENT_INTRO_3, 21000, 0, PHASE_INTRO); @@ -229,7 +234,7 @@ class boss_lady_deathwhisper : public CreatureScript if (getDifficulty() != RAID_DIFFICULTY_10MAN_NORMAL) events.ScheduleEvent(EVENT_DOMINATE_MIND_H, 27000); - DoScriptText(SAY_AGGRO, me); + Talk(SAY_AGGRO); DoStartNoMovement(who); me->RemoveAurasDueToSpell(SPELL_SHADOW_CHANNELING); DoCast(me, SPELL_MANA_BARRIER, true); @@ -239,7 +244,7 @@ class boss_lady_deathwhisper : public CreatureScript void JustDied(Unit* killer) { - DoScriptText(SAY_DEATH, me); + Talk(SAY_DEATH); instance->SetBossState(DATA_LADY_DEATHWHISPER, DONE); @@ -281,10 +286,10 @@ class boss_lady_deathwhisper : public CreatureScript summons.DespawnAll(); } - void KilledUnit(Unit *victim) + void KilledUnit(Unit* victim) { if (victim->GetTypeId() == TYPEID_PLAYER) - DoScriptText(RAND(SAY_KILL_1, SAY_KILL_2), me); + Talk(SAY_KILL); } void DamageTaken(Unit* /*damageDealer*/, uint32& uiDamage) @@ -292,8 +297,8 @@ class boss_lady_deathwhisper : public CreatureScript // phase transition if (events.GetPhaseMask() & PHASE_ONE_MASK && uiDamage > me->GetPower(POWER_MANA)) { - DoScriptText(SAY_PHASE_2, me); - DoScriptText(SAY_PHASE_2_EMOTE, me); + Talk(SAY_PHASE_2); + Talk(EMOTE_PHASE_2); DoStartMovement(me->getVictim()); uiDamage -= me->GetPower(POWER_MANA); me->SetPower(POWER_MANA, 0); @@ -319,8 +324,8 @@ class boss_lady_deathwhisper : public CreatureScript Unit* target = NULL; if (summon->GetEntry() == NPC_VENGEFUL_SHADE) { - target = ObjectAccessor::GetUnit(*me, uiNextVengefulShadeTarget); // Vengeful Shade - uiNextVengefulShadeTarget = 0; + target = ObjectAccessor::GetUnit(*me, nextVengefulShadeTarget); // Vengeful Shade + nextVengefulShadeTarget = 0; } else target = SelectTarget(SELECT_TARGET_RANDOM); // Wave adds @@ -332,11 +337,6 @@ class boss_lady_deathwhisper : public CreatureScript summon->AI()->DoCast(summon, SPELL_ADHERENT_S_DETERMINATION); } - void SummonedCreatureDespawn(Creature* summon) - { - summons.remove(summon->GetGUID()); - } - void UpdateAI(const uint32 diff) { if ((!UpdateVictim() && !(events.GetPhaseMask() & PHASE_INTRO_MASK)) || !CheckInRoom()) @@ -352,34 +352,34 @@ class boss_lady_deathwhisper : public CreatureScript switch (eventId) { case EVENT_INTRO_2: - DoScriptText(SAY_INTRO_2, me); + Talk(SAY_INTRO_2); break; case EVENT_INTRO_3: - DoScriptText(SAY_INTRO_3, me); + Talk(SAY_INTRO_3); break; case EVENT_INTRO_4: - DoScriptText(SAY_INTRO_4, me); + Talk(SAY_INTRO_4); break; case EVENT_INTRO_5: - DoScriptText(SAY_INTRO_5, me); + Talk(SAY_INTRO_5); break; case EVENT_INTRO_6: - DoScriptText(SAY_INTRO_6, me); + Talk(SAY_INTRO_6); break; case EVENT_INTRO_7: - DoScriptText(SAY_INTRO_7, me); + Talk(SAY_INTRO_7); break; case EVENT_INTRO_FINISH: me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); break; case EVENT_DEATH_AND_DECAY: - if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM)) - DoCast(pTarget, SPELL_DEATH_AND_DECAY); + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM)) + DoCast(target, SPELL_DEATH_AND_DECAY); events.ScheduleEvent(EVENT_DEATH_AND_DECAY, urand(10000, 12000)); break; case EVENT_DOMINATE_MIND_H: - DoScriptText(SAY_DOMINATE_MIND, me); - for (uint8 i = 0; i < uiDominateMindCount; i++) + Talk(SAY_DOMINATE_MIND); + for (uint8 i = 0; i < dominateMindCount; i++) if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 0.0f, true, -SPELL_DOMINATE_MIND_H)) DoCast(target, SPELL_DOMINATE_MIND_H); events.ScheduleEvent(EVENT_DOMINATE_MIND_H, urand(18000, 22000)); @@ -389,8 +389,8 @@ class boss_lady_deathwhisper : public CreatureScript events.ScheduleEvent(EVENT_P1_SUMMON_WAVE, 60000, 0, PHASE_ONE); break; case EVENT_P1_SHADOW_BOLT: - if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM)) - DoCast(pTarget, SPELL_SHADOW_BOLT); + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM)) + DoCast(target, SPELL_SHADOW_BOLT); events.ScheduleEvent(EVENT_P1_SHADOW_BOLT, urand(5000, 8000), 0, PHASE_ONE); break; case EVENT_P1_REANIMATE_CULTIST: @@ -413,10 +413,10 @@ class boss_lady_deathwhisper : public CreatureScript events.ScheduleEvent(EVENT_P2_TOUCH_OF_INSIGNIFICANCE, urand(9000, 13000), 0, PHASE_TWO); break; case EVENT_P2_SUMMON_SHADE: - if (Unit* pShadeTarget = SelectUnit(SELECT_TARGET_RANDOM, 1)) + if (Unit* shadeTarget = SelectUnit(SELECT_TARGET_RANDOM, 1)) { - uiNextVengefulShadeTarget = pShadeTarget->GetGUID(); - DoCast(pShadeTarget, SPELL_SUMMON_SHADE); + nextVengefulShadeTarget = shadeTarget->GetGUID(); + DoCast(shadeTarget, SPELL_SUMMON_SHADE); } events.ScheduleEvent(EVENT_P2_SUMMON_SHADE, urand(18000, 23000), 0, PHASE_TWO); break; @@ -426,7 +426,7 @@ class boss_lady_deathwhisper : public CreatureScript break; case EVENT_BERSERK: DoCast(me, SPELL_BERSERK); - DoScriptText(SAY_BERSERK, me); + Talk(SAY_BERSERK); break; } } @@ -441,34 +441,34 @@ class boss_lady_deathwhisper : public CreatureScript // summoning function for first phase void SummonWaveP1() { - uint8 addIndex = uiAddWaveCounter & 1; + uint8 addIndex = addWaveCounter & 1; uint8 addIndexOther = addIndex ^ 1; - _SummonAdd(uiAddEntries[addIndex], addSpawnPos[addIndex*3]); - _SummonAdd(uiAddEntries[addIndexOther], addSpawnPos[addIndex*3+1]); - _SummonAdd(uiAddEntries[addIndex], addSpawnPos[addIndex*3+2]); - if (getDifficulty() == RAID_DIFFICULTY_25MAN_NORMAL || getDifficulty() == RAID_DIFFICULTY_25MAN_HEROIC) + _SummonAdd(addEntries[addIndex], addSpawnPos[addIndex*3]); + _SummonAdd(addEntries[addIndexOther], addSpawnPos[addIndex*3+1]); + _SummonAdd(addEntries[addIndex], addSpawnPos[addIndex*3+2]); + if (Is25ManRaid()) { - _SummonAdd(uiAddEntries[addIndexOther], addSpawnPos[addIndexOther*3]); - _SummonAdd(uiAddEntries[addIndex], addSpawnPos[addIndexOther*3+1]); - _SummonAdd(uiAddEntries[addIndexOther], addSpawnPos[addIndexOther*3+2]); - _SummonAdd(uiAddEntries[urand(0,1)], addSpawnPos[6]); + _SummonAdd(addEntries[addIndexOther], addSpawnPos[addIndexOther*3]); + _SummonAdd(addEntries[addIndex], addSpawnPos[addIndexOther*3+1]); + _SummonAdd(addEntries[addIndexOther], addSpawnPos[addIndexOther*3+2]); + _SummonAdd(addEntries[urand(0,1)], addSpawnPos[6]); } - ++uiAddWaveCounter; + ++addWaveCounter; } // summoning function for second phase void SummonWaveP2() { - if (getDifficulty() == RAID_DIFFICULTY_25MAN_HEROIC) + if (Is25ManRaid()) { - uint8 addIndex = uiAddWaveCounter & 1; - _SummonAdd(uiAddEntries[addIndex], addSpawnPos[addIndex*3]); - _SummonAdd(uiAddEntries[addIndex ^ 1], addSpawnPos[addIndex*3+1]); - _SummonAdd(uiAddEntries[addIndex], addSpawnPos[addIndex*3+2]); + uint8 addIndex = addWaveCounter & 1; + _SummonAdd(addEntries[addIndex], addSpawnPos[addIndex*3]); + _SummonAdd(addEntries[addIndex ^ 1], addSpawnPos[addIndex*3+1]); + _SummonAdd(addEntries[addIndex], addSpawnPos[addIndex*3+2]); } else - _SummonAdd(uiAddEntries[urand(0,1)], addSpawnPos[6]); - ++uiAddWaveCounter; + _SummonAdd(addEntries[urand(0,1)], addSpawnPos[6]); + ++addWaveCounter; } // helper for summoning wave mobs @@ -495,11 +495,11 @@ class boss_lady_deathwhisper : public CreatureScript if (!cultist) return; - DoScriptText(SAY_ANIMATE_DEAD, me); + Talk(SAY_ANIMATE_DEAD); DoCast(cultist, SPELL_DARK_MARTYRDOM_T); } - void SpellHitTarget(Unit * target, const SpellEntry * spell) + void SpellHitTarget(Unit* target, const SpellEntry* spell) { if (spell->Id == SPELL_DARK_MARTYRDOM_T) { @@ -536,20 +536,20 @@ class boss_lady_deathwhisper : public CreatureScript Creature* cultist = *cultistItr; DoCast(cultist, cultist->GetEntry() == NPC_CULT_FANATIC ? SPELL_DARK_TRANSFORMATION_T : SPELL_DARK_EMPOWERMENT_T, true); - DoScriptText(cultist->GetEntry() == NPC_CULT_FANATIC ? SAY_DARK_TRANSFORMATION : SAY_DARK_EMPOWERMENT, me); + Talk(cultist->GetEntry() == NPC_CULT_FANATIC ? SAY_DARK_TRANSFORMATION : SAY_DARK_EMPOWERMENT); } private: - bool bIntroDone; - uint32 uiAddWaveCounter; - uint64 uiNextVengefulShadeTarget; + bool introDone; + uint32 addWaveCounter; + uint64 nextVengefulShadeTarget; std::deque<uint64> reanimationQueue; - uint8 uiDominateMindCount; + uint8 dominateMindCount; }; - CreatureAI* GetAI(Creature* pCreature) const + CreatureAI* GetAI(Creature* creature) const { - return new boss_lady_deathwhisperAI(pCreature); + return new boss_lady_deathwhisperAI(creature); } }; @@ -560,7 +560,7 @@ class npc_cult_fanatic : public CreatureScript struct npc_cult_fanaticAI : public ScriptedAI { - npc_cult_fanaticAI(Creature* pCreature) : ScriptedAI(pCreature) {} + npc_cult_fanaticAI(Creature* creature) : ScriptedAI(creature) {} void Reset() { @@ -572,7 +572,7 @@ class npc_cult_fanatic : public CreatureScript events.ScheduleEvent(EVENT_CULTIST_DARK_MARTYRDOM, urand(18000, 32000)); } - void SpellHit(Unit* /*caster*/, const SpellEntry * spell) + void SpellHit(Unit* /*caster*/, const SpellEntry* spell) { if (spell->Id == SPELL_DARK_TRANSFORMATION) me->UpdateEntry(NPC_DEFORMED_FANATIC); @@ -624,9 +624,9 @@ class npc_cult_fanatic : public CreatureScript EventMap events; }; - CreatureAI* GetAI(Creature* pCreature) const + CreatureAI* GetAI(Creature* creature) const { - return new npc_cult_fanaticAI(pCreature); + return new npc_cult_fanaticAI(creature); } }; @@ -637,7 +637,7 @@ class npc_cult_adherent : public CreatureScript struct npc_cult_adherentAI : public ScriptedAI { - npc_cult_adherentAI(Creature* pCreature) : ScriptedAI(pCreature) {} + npc_cult_adherentAI(Creature* creature) : ScriptedAI(creature) {} void Reset() { @@ -650,7 +650,7 @@ class npc_cult_adherent : public CreatureScript events.ScheduleEvent(EVENT_CULTIST_DARK_MARTYRDOM, urand(18000, 32000)); } - void SpellHit(Unit* /*caster*/, const SpellEntry * spell) + void SpellHit(Unit* /*caster*/, const SpellEntry* spell) { if (spell->Id == SPELL_DARK_EMPOWERMENT) me->UpdateEntry(NPC_EMPOWERED_ADHERENT); @@ -688,8 +688,8 @@ class npc_cult_adherent : public CreatureScript events.ScheduleEvent(EVENT_ADHERENT_DEATHCHILL, urand(9000, 13000)); break; case EVENT_ADHERENT_CURSE_OF_TORPOR: - if (Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM, 1)) - DoCast(pTarget, SPELL_CURSE_OF_TORPOR); + if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 1)) + DoCast(target, SPELL_CURSE_OF_TORPOR); events.ScheduleEvent(EVENT_ADHERENT_CURSE_OF_TORPOR, urand(9000, 13000)); break; case EVENT_ADHERENT_SHORUD_OF_THE_OCCULT: @@ -723,7 +723,7 @@ class npc_vengeful_shade : public CreatureScript struct npc_vengeful_shadeAI : public ScriptedAI { - npc_vengeful_shadeAI(Creature* pCreature) : ScriptedAI(pCreature) + npc_vengeful_shadeAI(Creature* creature) : ScriptedAI(creature) { me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); @@ -734,14 +734,14 @@ class npc_vengeful_shade : public CreatureScript me->AddAura(SPELL_VENGEFUL_BLAST_PASSIVE, me); } - void SpellHitTarget(Unit * /*pTarget*/, const SpellEntry * spell) + void SpellHitTarget(Unit* /*pTarget*/, const SpellEntry* spell) { switch (spell->Id) { case SPELL_VENGEFUL_BLAST: - case 72010: - case 72011: - case 72012: + case SPELL_VENGEFUL_BLAST_25N: + case SPELL_VENGEFUL_BLAST_10H: + case SPELL_VENGEFUL_BLAST_25H: me->Kill(me); break; default: @@ -750,9 +750,9 @@ class npc_vengeful_shade : public CreatureScript } }; - CreatureAI* GetAI(Creature* pCreature) const + CreatureAI* GetAI(Creature* creature) const { - return new npc_vengeful_shadeAI(pCreature); + return new npc_vengeful_shadeAI(creature); } }; @@ -763,14 +763,15 @@ class spell_deathwhisper_mana_barrier : public SpellScriptLoader class spell_deathwhisper_mana_barrier_AuraScript : public AuraScript { - PrepareAuraScript(spell_deathwhisper_mana_barrier_AuraScript) - void HandlePeriodicTick(AuraEffect const * /*aurEff*/, AuraApplication const * /*aurApp*/) + PrepareAuraScript(spell_deathwhisper_mana_barrier_AuraScript); + + void HandlePeriodicTick(AuraEffect const* /*aurEff*/, AuraApplication const* /*aurApp*/) { + PreventDefaultAction(); Unit* caster = GetCaster(); int32 missingHealth = caster->GetMaxHealth() - caster->GetHealth(); caster->ModifyHealth(missingHealth); caster->ModifyPower(POWER_MANA, -missingHealth); - PreventDefaultAction(); } void Register() @@ -792,16 +793,7 @@ class spell_cultist_dark_martyrdom : public SpellScriptLoader class spell_cultist_dark_martyrdom_SpellScript : public SpellScript { - PrepareSpellScript(spell_cultist_dark_martyrdom_SpellScript) - bool Validate(SpellEntry const* /*spellEntry*/) - { - if (uint32 scriptId = sObjectMgr.GetScriptId("boss_lady_deathwhisper")) - if (CreatureInfo const* creInfo = ObjectMgr::GetCreatureTemplate(NPC_LADY_DEATHWHISPER)) - if (creInfo->ScriptID == scriptId) - return true; - - return false; - } + PrepareSpellScript(spell_cultist_dark_martyrdom_SpellScript); void HandleEffect(SpellEffIndex /*effIndex*/) { diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp index b0bad028cbc..af4b0e09791 100755 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp @@ -15,24 +15,24 @@ * with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include "ScriptPCH.h" +#include "ObjectMgr.h" +#include "ScriptMgr.h" +#include "ScriptedCreature.h" +#include "SpellScript.h" +#include "SpellAuras.h" #include "icecrown_citadel.h" #include "MapManager.h" -#include "Spell.h" enum eScriptTexts { - SAY_ENTER_ZONE = -1631000, - SAY_AGGRO = -1631001, - SAY_BONE_STORM = -1631002, - SAY_BONESPIKE_1 = -1631003, - SAY_BONESPIKE_2 = -1631004, - SAY_BONESPIKE_3 = -1631005, - SAY_KILL_1 = -1631006, - SAY_KILL_2 = -1631007, - SAY_DEATH = -1631008, - SAY_BERSERK = -1631009, - SAY_BONE_STORM_EMOTE = -1631010 + SAY_ENTER_ZONE = 0, + SAY_AGGRO = 1, + SAY_BONE_STORM = 2, + SAY_BONESPIKE = 3, + SAY_KILL = 4, + SAY_DEATH = 5, + SAY_BERSERK = 6, + EMOTE_BONE_STORM = 7, }; enum eSpells @@ -45,6 +45,7 @@ enum eSpells SPELL_COLDFLAME_BONE_STORM = 72705, // Bone Spike + SPELL_IMPALE = 69062, SPELL_IMPALED = 69065, // Coldflame @@ -63,13 +64,15 @@ enum eEvents EVENT_WARN_BONE_STORM = 8, EVENT_COLDFLAME_TRIGGER = 9, - EVENT_FAIL_BONED = 10 + EVENT_FAIL_BONED = 10, + + EVENT_GROUP_SPECIAL = 1, }; enum eMovementPoints { - POINT_TARGET_BONESTORM_PLAYER = 36612631, // entry+mapid - POINT_TARGET_COLDFLAME = 36672631 + POINT_TARGET_BONESTORM_PLAYER = 36612631, + POINT_TARGET_COLDFLAME = 36672631, }; class boss_lord_marrowgar : public CreatureScript @@ -79,13 +82,13 @@ class boss_lord_marrowgar : public CreatureScript struct boss_lord_marrowgarAI : public BossAI { - boss_lord_marrowgarAI(Creature *pCreature) : BossAI(pCreature, DATA_LORD_MARROWGAR) + boss_lord_marrowgarAI(Creature* creature) : BossAI(creature, DATA_LORD_MARROWGAR) { - bIntroDone = false; - uiBoneStormDuration = RAID_MODE(20000,30000,20000,30000); - fBaseSpeed = pCreature->GetSpeedRate(MOVE_RUN); - bBoneSlice = false; - coldflameLastPos.Relocate(pCreature); + introDone = false; + boneStormDuration = RAID_MODE(20000, 30000, 20000, 30000); + baseSpeed = creature->GetSpeedRate(MOVE_RUN); + boneSlice = false; + coldflameLastPos.Relocate(creature); } void InitializeAI() @@ -98,28 +101,28 @@ class boss_lord_marrowgar : public CreatureScript void Reset() { - me->SetSpeed(MOVE_RUN, fBaseSpeed, true); + me->SetSpeed(MOVE_RUN, baseSpeed, true); me->RemoveAurasDueToSpell(SPELL_BONE_STORM); me->RemoveAurasDueToSpell(SPELL_BERSERK); events.Reset(); events.ScheduleEvent(EVENT_ENABLE_BONE_SLICE, 10000); - events.ScheduleEvent(EVENT_BONE_SPIKE_GRAVEYARD, urand(20000, 30000)); - events.ScheduleEvent(EVENT_COLDFLAME, urand(10000, 15000)); - events.ScheduleEvent(EVENT_WARN_BONE_STORM, urand(35000, 50000)); + events.ScheduleEvent(EVENT_BONE_SPIKE_GRAVEYARD, urand(10000, 15000), EVENT_GROUP_SPECIAL); + events.ScheduleEvent(EVENT_COLDFLAME, 5000, EVENT_GROUP_SPECIAL); + events.ScheduleEvent(EVENT_WARN_BONE_STORM, urand(45000, 50000)); events.ScheduleEvent(EVENT_ENRAGE, 600000); instance->SetBossState(DATA_LORD_MARROWGAR, NOT_STARTED); } void EnterCombat(Unit* /*who*/) { - DoScriptText(SAY_AGGRO, me); + Talk(SAY_AGGRO); instance->SetBossState(DATA_LORD_MARROWGAR, IN_PROGRESS); } void JustDied(Unit* /*killer*/) { - DoScriptText(SAY_DEATH, me); + Talk(SAY_DEATH); instance->SetBossState(DATA_LORD_MARROWGAR, DONE); } @@ -130,18 +133,18 @@ class boss_lord_marrowgar : public CreatureScript instance->SetData(DATA_BONED_ACHIEVEMENT, uint32(true)); // reset } - void KilledUnit(Unit *victim) + void KilledUnit(Unit* victim) { if (victim->GetTypeId() == TYPEID_PLAYER) - DoScriptText(RAND(SAY_KILL_1, SAY_KILL_2), me); + Talk(SAY_KILL); } - void MoveInLineOfSight(Unit *who) + void MoveInLineOfSight(Unit* who) { - if (!bIntroDone && me->IsWithinDistInMap(who, 70.0f)) + if (!introDone && me->IsWithinDistInMap(who, 70.0f)) { - DoScriptText(SAY_ENTER_ZONE, me); - bIntroDone = true; + Talk(SAY_ENTER_ZONE); + introDone = true; } } @@ -162,7 +165,7 @@ class boss_lord_marrowgar : public CreatureScript case EVENT_BONE_SPIKE_GRAVEYARD: if (IsHeroic() || !me->HasAura(SPELL_BONE_STORM)) DoCast(me, SPELL_BONE_SPIKE_GRAVEYARD); - events.ScheduleEvent(EVENT_BONE_SPIKE_GRAVEYARD, urand(25000, 35000)); + events.ScheduleEvent(EVENT_BONE_SPIKE_GRAVEYARD, urand(15000, 20000), EVENT_GROUP_SPECIAL); break; case EVENT_COLDFLAME: coldflameLastPos.Relocate(me); @@ -170,47 +173,48 @@ class boss_lord_marrowgar : public CreatureScript me->CastCustomSpell(SPELL_COLDFLAME_NORMAL, SPELLVALUE_MAX_TARGETS, 1, me); else DoCast(me, SPELL_COLDFLAME_BONE_STORM); - events.ScheduleEvent(EVENT_COLDFLAME, urand(10000, 15000)); + events.ScheduleEvent(EVENT_COLDFLAME, 5000, EVENT_GROUP_SPECIAL); break; case EVENT_WARN_BONE_STORM: - bBoneSlice = false; - DoScriptText(SAY_BONE_STORM_EMOTE, me); - events.ScheduleEvent(EVENT_BONE_STORM_BEGIN, 3050); + boneSlice = false; + Talk(EMOTE_BONE_STORM); me->FinishSpell(CURRENT_MELEE_SPELL, false); DoCast(me, SPELL_BONE_STORM); + events.DelayEvents(3000, EVENT_GROUP_SPECIAL); + events.ScheduleEvent(EVENT_BONE_STORM_BEGIN, 3050); break; case EVENT_BONE_STORM_BEGIN: if (Aura* pStorm = me->GetAura(SPELL_BONE_STORM)) - pStorm->SetDuration(int32(uiBoneStormDuration)); - me->SetSpeed(MOVE_RUN, fBaseSpeed*3.0f, true); - DoScriptText(SAY_BONE_STORM, me); - events.ScheduleEvent(EVENT_BONE_STORM_END, uiBoneStormDuration+1); + pStorm->SetDuration(int32(boneStormDuration)); + me->SetSpeed(MOVE_RUN, baseSpeed*3.0f, true); + Talk(SAY_BONE_STORM); + events.ScheduleEvent(EVENT_BONE_STORM_END, boneStormDuration+1); // no break here case EVENT_BONE_STORM_MOVE: { - events.ScheduleEvent(EVENT_BONE_STORM_MOVE, uiBoneStormDuration/3); - Unit* pUnit = SelectUnit(SELECT_TARGET_RANDOM, 1); - if (!pUnit) - pUnit = SelectUnit(SELECT_TARGET_RANDOM, 0); - if (pUnit) - me->GetMotionMaster()->MovePoint(POINT_TARGET_BONESTORM_PLAYER, pUnit->GetPositionX(), pUnit->GetPositionY(), pUnit->GetPositionZ()); + events.ScheduleEvent(EVENT_BONE_STORM_MOVE, boneStormDuration/3); + Unit* unit = SelectUnit(SELECT_TARGET_RANDOM, 1); + if (!unit) + unit = SelectUnit(SELECT_TARGET_RANDOM, 0); + if (unit) + me->GetMotionMaster()->MovePoint(POINT_TARGET_BONESTORM_PLAYER, unit->GetPositionX(), unit->GetPositionY(), unit->GetPositionZ()); break; } case EVENT_BONE_STORM_END: if (me->GetMotionMaster()->GetCurrentMovementGeneratorType() == POINT_MOTION_TYPE) me->GetMotionMaster()->MovementExpired(); DoStartMovement(me->getVictim()); - me->SetSpeed(MOVE_RUN, fBaseSpeed, true); + me->SetSpeed(MOVE_RUN, baseSpeed, true); events.CancelEvent(EVENT_BONE_STORM_MOVE); events.ScheduleEvent(EVENT_ENABLE_BONE_SLICE, 10000); - events.ScheduleEvent(EVENT_WARN_BONE_STORM, urand(35000, 50000)); + events.ScheduleEvent(EVENT_WARN_BONE_STORM, urand(70000, 75000)); break; case EVENT_ENABLE_BONE_SLICE: - bBoneSlice = true; + boneSlice = true; break; case EVENT_ENRAGE: DoCast(me, SPELL_BERSERK, true); - DoScriptText(SAY_BERSERK, me); + Talk(SAY_BERSERK); break; } } @@ -220,7 +224,7 @@ class boss_lord_marrowgar : public CreatureScript return; // After 10 seconds since encounter start Bone Slice replaces melee attacks - if (bBoneSlice && !me->GetCurrentSpell(CURRENT_MELEE_SPELL)) + if (boneSlice && !me->GetCurrentSpell(CURRENT_MELEE_SPELL)) DoCastVictim(SPELL_BONE_SLICE); DoMeleeAttackIfReady(); @@ -241,19 +245,21 @@ class boss_lord_marrowgar : public CreatureScript } private: - bool bIntroDone; - uint32 uiBoneStormDuration; - float fBaseSpeed; - bool bBoneSlice; + bool introDone; + uint32 boneStormDuration; + float baseSpeed; + bool boneSlice; Position coldflameLastPos; }; - CreatureAI* GetAI(Creature* pCreature) const + CreatureAI* GetAI(Creature* creature) const { - return new boss_lord_marrowgarAI(pCreature); + return new boss_lord_marrowgarAI(creature); } }; +typedef boss_lord_marrowgar::boss_lord_marrowgarAI MarrowgarAI; + class npc_coldflame : public CreatureScript { public: @@ -261,18 +267,20 @@ class npc_coldflame : public CreatureScript struct npc_coldflameAI : public ScriptedAI { - npc_coldflameAI(Creature *pCreature) : ScriptedAI(pCreature) + npc_coldflameAI(Creature* creature) : ScriptedAI(creature) { } void IsSummonedBy(Unit* owner) { + if (owner->GetTypeId() != TYPEID_UNIT) + return; + Creature* creOwner = owner->ToCreature(); DoCast(me, SPELL_COLDFLAME_PASSIVE, true); float x, y, z; // random target case - if (!owner->HasAura(SPELL_BONE_STORM) && owner->GetTypeId() == TYPEID_UNIT) + if (!owner->HasAura(SPELL_BONE_STORM)) { - Creature* creOwner = owner->ToCreature(); // select any unit but not the tank (by owners threatlist) Unit* target = creOwner->AI()->SelectTarget(SELECT_TARGET_RANDOM, 1, 40.0f, true); if (!target) @@ -291,7 +299,8 @@ class npc_coldflame : public CreatureScript else { me->GetPosition(x, y, z); - Position const* ownerPos = CAST_AI(boss_lord_marrowgar::boss_lord_marrowgarAI, owner->ToCreature()->AI())->GetLastColdflamePosition(); + MarrowgarAI* marrowgarAI = CAST_AI(MarrowgarAI, creOwner->AI()); + Position const* ownerPos = marrowgarAI->GetLastColdflamePosition(); float ang = me->GetAngle(ownerPos) - static_cast<float>(M_PI); MapManager::NormalizeOrientation(ang); x += 50.0f * cosf(ang); @@ -305,14 +314,11 @@ class npc_coldflame : public CreatureScript { events.Update(diff); - while (uint32 eventId = events.ExecuteEvent()) + if (events.ExecuteEvent() == EVENT_COLDFLAME_TRIGGER) { - if (eventId == EVENT_COLDFLAME_TRIGGER) - { - if (me->HasAura(SPELL_COLDFLAME_PASSIVE)) - DoCast(SPELL_COLDFLAME_PASSIVE); - events.ScheduleEvent(EVENT_COLDFLAME_TRIGGER, 400); - } + if (me->HasAura(SPELL_COLDFLAME_PASSIVE)) + DoCast(SPELL_COLDFLAME_PASSIVE); + events.ScheduleEvent(EVENT_COLDFLAME_TRIGGER, 400); } } @@ -329,9 +335,9 @@ class npc_coldflame : public CreatureScript EventMap events; }; - CreatureAI* GetAI(Creature* pCreature) const + CreatureAI* GetAI(Creature* creature) const { - return new npc_coldflameAI(pCreature); + return new npc_coldflameAI(creature); } }; @@ -342,69 +348,52 @@ class npc_bone_spike : public CreatureScript struct npc_bone_spikeAI : public Scripted_NoMovementAI { - npc_bone_spikeAI(Creature *pCreature) : Scripted_NoMovementAI(pCreature), vehicle(pCreature->GetVehicleKit()) + npc_bone_spikeAI(Creature* creature) : Scripted_NoMovementAI(creature), vehicle(creature->GetVehicleKit()) { ASSERT(vehicle); - uiTrappedGUID = 0; + trappedGUID = 0; } void Reset() { - uiTrappedGUID = 0; + trappedGUID = 0; } - void JustDied(Unit * /*killer*/) + void JustDied(Unit* /*killer*/) { events.Reset(); - if (Player* trapped = ObjectAccessor::GetPlayer(*me, uiTrappedGUID)) + if (Player* trapped = ObjectAccessor::GetPlayer(*me, trappedGUID)) trapped->RemoveAurasDueToSpell(SPELL_IMPALED); + trappedGUID = 0; } - void KilledUnit(Unit * /*pVictim*/) + void IsSummonedBy(Unit* summoner) { - me->Kill(me); + trappedGUID = summoner->GetGUID(); + summoner->EnterVehicle(vehicle, 0); + DoCast(summoner, SPELL_IMPALED); + events.ScheduleEvent(EVENT_FAIL_BONED, 8000); } void UpdateAI(const uint32 diff) { - if (!uiTrappedGUID) + if (!trappedGUID) return; - events.Update(diff); - Player* trapped = ObjectAccessor::GetPlayer(*me, uiTrappedGUID); - if ((trapped && trapped->isAlive() && !trapped->HasAura(SPELL_IMPALED)) || !trapped) - me->Kill(me); - if (events.ExecuteEvent() == EVENT_FAIL_BONED) if (InstanceScript* instance = me->GetInstanceScript()) instance->SetData(DATA_BONED_ACHIEVEMENT, uint32(false)); } - void SetGUID(const uint64& guid, int32 /*type = 0*/) - { - uiTrappedGUID = guid; - if (Player* target = ObjectAccessor::GetPlayer(*me, guid)) - target->EnterVehicle(vehicle, 0); - } - - void PassengerBoarded(Unit * who, int8 /*seatId*/, bool apply) - { - if (!apply) - return; - - me->AddAura(SPELL_IMPALED, who); - events.ScheduleEvent(EVENT_FAIL_BONED, 8000); - } - private: - uint64 uiTrappedGUID; + uint64 trappedGUID; EventMap events; Vehicle* vehicle; }; - CreatureAI* GetAI(Creature* pCreature) const + CreatureAI* GetAI(Creature* creature) const { - return new npc_bone_spikeAI(pCreature); + return new npc_bone_spikeAI(creature); } }; @@ -415,9 +404,11 @@ class spell_marrowgar_coldflame : public SpellScriptLoader class spell_marrowgar_coldflame_SpellScript : public SpellScript { - PrepareSpellScript(spell_marrowgar_coldflame_SpellScript) - void HandleScriptEffect(SpellEffIndex /*effIndex*/) + PrepareSpellScript(spell_marrowgar_coldflame_SpellScript); + + void HandleScriptEffect(SpellEffIndex effIndex) { + PreventHitDefaultEffect(effIndex); Unit* caster = GetCaster(); uint8 count = 1; if (GetSpellInfo()->Id == 72705) @@ -431,13 +422,6 @@ class spell_marrowgar_coldflame : public SpellScriptLoader { OnEffect += SpellEffectFn(spell_marrowgar_coldflame_SpellScript::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); } - - bool Load() - { - if (GetCaster()->GetEntry() != NPC_LORD_MARROWGAR) - return false; - return true; - } }; SpellScript* GetSpellScript() const @@ -453,40 +437,36 @@ class spell_marrowgar_bone_spike_graveyard : public SpellScriptLoader class spell_marrowgar_bone_spike_graveyard_SpellScript : public SpellScript { - PrepareSpellScript(spell_marrowgar_bone_spike_graveyard_SpellScript) - void HandleApplyAura(SpellEffIndex /*effIndex*/) + PrepareSpellScript(spell_marrowgar_bone_spike_graveyard_SpellScript); + + void HandleScript(SpellEffIndex effIndex) { - CreatureAI* marrowgarAI = GetCaster()->ToCreature()->AI(); - bool yell = false; - uint8 boneSpikeCount = GetCaster()->GetMap()->GetSpawnMode() & 1 ? 3 : 1; - for (uint8 i = 0; i < boneSpikeCount; ++i) + PreventHitDefaultEffect(effIndex); + if (Creature* marrowgar = GetCaster()->ToCreature()) { - // select any unit but not the tank - Unit* target = marrowgarAI->SelectTarget(SELECT_TARGET_RANDOM, 1, 100.0f, true, -SPELL_IMPALED); - if (!target && !i) - target = marrowgarAI->SelectTarget(SELECT_TARGET_RANDOM, 0, 100.0f, true, -SPELL_IMPALED); - if (!target) - break; - yell = true; - //GetCaster()->CastSpell(target, SPELL_IMPALE, true); // this is the proper spell but if we use it we dont have any way to assign a victim to it - Creature* pBone = GetCaster()->SummonCreature(NPC_BONE_SPIKE, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_CORPSE_DESPAWN); - pBone->AI()->SetGUID(target->GetGUID()); - } + CreatureAI* marrowgarAI = marrowgar->AI(); + bool yell = false; + uint8 boneSpikeCount = GetCaster()->GetMap()->GetSpawnMode() & 1 ? 3 : 1; + for (uint8 i = 0; i < boneSpikeCount; ++i) + { + // select any unit but not the tank + Unit* target = marrowgarAI->SelectTarget(SELECT_TARGET_RANDOM, 1, 100.0f, true, -SPELL_IMPALED); + if (!target && !i) + target = marrowgarAI->SelectTarget(SELECT_TARGET_RANDOM, 0, 100.0f, true, -SPELL_IMPALED); + if (!target) + break; + yell = true; + target->CastCustomSpell(SPELL_IMPALE, SPELLVALUE_BASE_POINT0, 0, target, true); + } - if (yell) - DoScriptText(RAND(SAY_BONESPIKE_1, SAY_BONESPIKE_2, SAY_BONESPIKE_3), GetCaster()); + if (yell) + marrowgarAI->Talk(SAY_BONESPIKE); + } } void Register() { - OnEffect += SpellEffectFn(spell_marrowgar_bone_spike_graveyard_SpellScript::HandleApplyAura, EFFECT_1, SPELL_EFFECT_APPLY_AURA); - } - - bool Load() - { - if (GetCaster()->GetEntry() != NPC_LORD_MARROWGAR) - return false; - return true; + OnEffect += SpellEffectFn(spell_marrowgar_bone_spike_graveyard_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); } }; @@ -503,7 +483,8 @@ class spell_marrowgar_bone_storm : public SpellScriptLoader class spell_marrowgar_bone_storm_SpellScript : public SpellScript { - PrepareSpellScript(spell_marrowgar_bone_storm_SpellScript) + PrepareSpellScript(spell_marrowgar_bone_storm_SpellScript); + void RecalculateDamage(SpellEffIndex /*effIndex*/) { int32 dmg = GetHitDamage(); @@ -519,13 +500,6 @@ class spell_marrowgar_bone_storm : public SpellScriptLoader { OnEffect += SpellEffectFn(spell_marrowgar_bone_storm_SpellScript::RecalculateDamage, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE); } - - bool Load() - { - if (GetCaster()->GetEntry() != NPC_LORD_MARROWGAR) - return false; - return true; - } }; SpellScript* GetSpellScript() const diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp index 9947c452128..3976da68cce 100755 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp @@ -25,26 +25,24 @@ enum eScriptTexts { // Festergut - SAY_FESTERGUT_GASEOUS_BLIGHT = -1631080, - SAY_FESTERGUT_DEATH = -1631090, + SAY_FESTERGUT_GASEOUS_BLIGHT = 0, + SAY_FESTERGUT_DEATH = 1, // Rotface - SAY_ROTFACE_OOZE_FLOOD1 = -1631091, - SAY_ROTFACE_OOZE_FLOOD2 = -1631092, - SAY_ROTFACE_DEATH = -1631093, + SAY_ROTFACE_OOZE_FLOOD = 2, + SAY_ROTFACE_DEATH = 3, // Professor Putricide - SAY_AGGRO = -1631104, - EMOTE_UNSTABLE_EXPERIMENT = -1631105, - SAY_PHASE_TRANSITION_HEROIC = -1631106, - SAY_TRANSFORM_1 = -1631107, - SAY_TRANSFORM_2 = -1631108, - EMOTE_MALLEABLE_GOO = -1631109, - EMOTE_CHOKING_GAS_BOMB = -1631110, - SAY_KILL_1 = -1631111, - SAY_KILL_2 = -1631112, - SAY_BERSERK = -1631113, - SAY_DEATH = -1631114 + SAY_AGGRO = 4, + EMOTE_UNSTABLE_EXPERIMENT = 5, + SAY_PHASE_TRANSITION_HEROIC = 6, + SAY_TRANSFORM_1 = 7, + SAY_TRANSFORM_2 = 8, // always used for phase2 change, DO NOT GROUP WITH SAY_TRANSFORM_1 + EMOTE_MALLEABLE_GOO = 9, + EMOTE_CHOKING_GAS_BOMB = 10, + SAY_KILL = 11, + SAY_BERSERK = 12, + SAY_DEATH = 13, }; enum eSpells @@ -131,6 +129,7 @@ enum eEvents enum ePhases { + PHASE_NONE = 0, PHASE_FESTERGUT = 1, PHASE_ROTFACE = 2, PHASE_COMBAT_1 = 4, @@ -138,7 +137,7 @@ enum ePhases PHASE_COMBAT_3 = 6, PHASE_MASK_COMBAT = (1 << PHASE_COMBAT_1) | (1 << PHASE_COMBAT_2) | (1 << PHASE_COMBAT_3), - PHASE_MASK_NOT_SELF = (1 << PHASE_FESTERGUT) | (1 << PHASE_ROTFACE) + PHASE_MASK_NOT_SELF = (1 << PHASE_FESTERGUT) | (1 << PHASE_ROTFACE), }; enum ePoints @@ -179,10 +178,10 @@ class boss_professor_putricide : public CreatureScript struct boss_professor_putricideAI : public BossAI { - boss_professor_putricideAI(Creature* pCreature) : BossAI(pCreature, DATA_PROFESSOR_PUTRICIDE), - fBaseSpeed(pCreature->GetSpeedRate(MOVE_RUN)), bExperimentState(EXPERIMENT_STATE_OOZE) + boss_professor_putricideAI(Creature* creature) : BossAI(creature, DATA_PROFESSOR_PUTRICIDE), + baseSpeed(creature->GetSpeedRate(MOVE_RUN)), experimentState(EXPERIMENT_STATE_OOZE) { - phase = ePhases(0); + phase = PHASE_NONE; } void InitializeAI() @@ -202,11 +201,13 @@ class boss_professor_putricide : public CreatureScript events.Reset(); summons.DespawnAll(); _SetPhase(PHASE_COMBAT_1); - bExperimentState = EXPERIMENT_STATE_OOZE; + experimentState = EXPERIMENT_STATE_OOZE; me->SetReactState(REACT_DEFENSIVE); me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING); if (me->GetMotionMaster()->GetCurrentMovementGeneratorType() == POINT_MOTION_TYPE) me->GetMotionMaster()->MovementExpired(); + if (GameObject* table = ObjectAccessor::GetGameObject(*me, instance->GetData64(DATA_PUTRICIDE_TABLE))) + table->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE); } void EnterCombat(Unit* /*who*/) @@ -215,7 +216,7 @@ class boss_professor_putricide : public CreatureScript return; _SetPhase(PHASE_COMBAT_1); - DoScriptText(SAY_AGGRO, me); + Talk(SAY_AGGRO); DoCast(me, SPELL_OOZE_TANK_PROTECTION, true); DoZoneInCombat(me); @@ -227,6 +228,8 @@ class boss_professor_putricide : public CreatureScript events.ScheduleEvent(EVENT_UNBOUND_PLAGUE, 20000); instance->SetBossState(DATA_PROFESSOR_PUTRICIDE, IN_PROGRESS); + if (GameObject* table = ObjectAccessor::GetGameObject(*me, instance->GetData64(DATA_PUTRICIDE_TABLE))) + table->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE); } void JustReachedHome() @@ -236,15 +239,15 @@ class boss_professor_putricide : public CreatureScript instance->SetBossState(DATA_PROFESSOR_PUTRICIDE, FAIL); } - void KilledUnit(Unit *victim) + void KilledUnit(Unit* victim) { if (victim->GetTypeId() == TYPEID_PLAYER) - DoScriptText(RAND(SAY_KILL_1, SAY_KILL_2), me); + Talk(SAY_KILL); } void JustDied(Unit* /*killer*/) { - DoScriptText(SAY_DEATH, me); + Talk(SAY_DEATH); instance->SetBossState(DATA_PROFESSOR_PUTRICIDE, DONE); DoCastAOE(SPELL_UNHOLY_INFUSION_CREDIT, true); } @@ -324,21 +327,21 @@ class boss_professor_putricide : public CreatureScript { case POINT_FESTERGUT: instance->SetBossState(DATA_FESTERGUT, IN_PROGRESS); // needed here for delayed gate close - me->SetSpeed(MOVE_RUN, fBaseSpeed, true); + me->SetSpeed(MOVE_RUN, baseSpeed, true); DoAction(ACTION_FESTERGUT_GAS); if (Creature* festergut = Unit::GetCreature(*me, instance->GetData64(DATA_FESTERGUT))) festergut->CastSpell(festergut, SPELL_GASEOUS_BLIGHT_LARGE, false, NULL, NULL, festergut->GetGUID()); break; case POINT_ROTFACE: instance->SetBossState(DATA_ROTFACE, IN_PROGRESS); // needed here for delayed gate close - me->SetSpeed(MOVE_RUN, fBaseSpeed, true); + me->SetSpeed(MOVE_RUN, baseSpeed, true); DoAction(ACTION_ROTFACE_OOZE); events.ScheduleEvent(EVENT_ROTFACE_OOZE_FLOOD, 25000, 0, PHASE_ROTFACE); break; case POINT_TABLE: // stop attack me->GetMotionMaster()->MoveIdle(); - me->SetSpeed(MOVE_RUN, fBaseSpeed, true); + me->SetSpeed(MOVE_RUN, baseSpeed, true); if (GameObject* table = ObjectAccessor::GetGameObject(*me, instance->GetData64(DATA_PUTRICIDE_TABLE))) me->SetFacingToObject(table); // operating on new phase already @@ -375,7 +378,7 @@ class boss_professor_putricide : public CreatureScript { case ACTION_FESTERGUT_COMBAT: _SetPhase(PHASE_FESTERGUT); - me->SetSpeed(MOVE_RUN, fBaseSpeed*2.0f, true); + me->SetSpeed(MOVE_RUN, baseSpeed*2.0f, true); me->GetMotionMaster()->MovePoint(POINT_FESTERGUT, festergutWatchPos); me->SetReactState(REACT_PASSIVE); if (IsHeroic()) @@ -385,7 +388,7 @@ class boss_professor_putricide : public CreatureScript } break; case ACTION_FESTERGUT_GAS: - DoScriptText(SAY_FESTERGUT_GASEOUS_BLIGHT, me); + Talk(SAY_FESTERGUT_GASEOUS_BLIGHT); DoCast(me, SPELL_RELEASE_GAS_VISUAL, true); break; case ACTION_FESTERGUT_DEATH: @@ -394,7 +397,7 @@ class boss_professor_putricide : public CreatureScript case ACTION_ROTFACE_COMBAT: { _SetPhase(PHASE_ROTFACE); - me->SetSpeed(MOVE_RUN, fBaseSpeed*2.0f, true); + me->SetSpeed(MOVE_RUN, baseSpeed*2.0f, true); me->GetMotionMaster()->MovePoint(POINT_ROTFACE, rotfaceWatchPos); me->SetReactState(REACT_PASSIVE); oozeFloodStage = 0; @@ -429,7 +432,7 @@ class boss_professor_putricide : public CreatureScript break; } case ACTION_ROTFACE_OOZE: - DoScriptText(RAND(SAY_ROTFACE_OOZE_FLOOD1, SAY_ROTFACE_OOZE_FLOOD2), me); + Talk(SAY_ROTFACE_OOZE_FLOOD); if (Creature* dummy = Unit::GetCreature(*me, oozeFloodDummy[oozeFloodStage])) dummy->CastSpell(dummy, oozeFloodSpells[oozeFloodStage], true, NULL, NULL, me->GetGUID()); // cast from self for LoS (with prof's GUID for logs) if (++oozeFloodStage == 4) @@ -439,7 +442,7 @@ class boss_professor_putricide : public CreatureScript events.ScheduleEvent(EVENT_ROTFACE_DIES, 4500, 0, PHASE_ROTFACE); break; case ACTION_CHANGE_PHASE: - me->SetSpeed(MOVE_RUN, fBaseSpeed*2.0f, true); + me->SetSpeed(MOVE_RUN, baseSpeed*2.0f, true); events.DelayEvents(30000); me->AttackStop(); if (!IsHeroic()) @@ -449,7 +452,7 @@ class boss_professor_putricide : public CreatureScript } else { - DoScriptText(SAY_PHASE_TRANSITION_HEROIC, me); + Talk(SAY_PHASE_TRANSITION_HEROIC); DoCast(me, SPELL_UNSTABLE_EXPERIMENT, true); DoCast(me, SPELL_UNSTABLE_EXPERIMENT, true); // cast variables @@ -491,6 +494,8 @@ class boss_professor_putricide : public CreatureScript events.CancelEvent(EVENT_UNSTABLE_EXPERIMENT); instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_MUTATED_TRANSFORMATION); instance->DoRemoveAurasDueToSpellOnPlayers(71503); // SPELL_MUTATED_TRANSFORMATION2 + if (GameObject* table = ObjectAccessor::GetGameObject(*me, instance->GetData64(DATA_PUTRICIDE_TABLE))) + table->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE); break; default: break; @@ -506,8 +511,8 @@ class boss_professor_putricide : public CreatureScript if (type == DATA_EXPERIMENT_STAGE) { // ALSO MODIFIES! - uint32 ret = uint32(bExperimentState); - bExperimentState ^= true; + uint32 ret = uint32(experimentState); + experimentState ^= true; return ret; } @@ -529,7 +534,7 @@ class boss_professor_putricide : public CreatureScript switch (eventId) { case EVENT_FESTERGUT_DIES: - DoScriptText(SAY_FESTERGUT_DEATH, me); + Talk(SAY_FESTERGUT_DEATH); EnterEvadeMode(); break; case EVENT_FESTERGUT_GOO: @@ -538,7 +543,7 @@ class boss_professor_putricide : public CreatureScript events.ScheduleEvent(EVENT_FESTERGUT_GOO, urand(15000, 20000), 0, PHASE_FESTERGUT); break; case EVENT_ROTFACE_DIES: - DoScriptText(SAY_ROTFACE_DEATH, me); + Talk(SAY_ROTFACE_DEATH); EnterEvadeMode(); break; case EVENT_ROTFACE_VILE_GAS: @@ -551,7 +556,7 @@ class boss_professor_putricide : public CreatureScript events.ScheduleEvent(EVENT_ROTFACE_OOZE_FLOOD, 25000, 0, PHASE_ROTFACE); break; case EVENT_BERSERK: - DoScriptText(SAY_BERSERK, me); + Talk(SAY_BERSERK); DoCast(me, SPELL_BERSERK2); break; case EVENT_SLIME_PUDDLE: @@ -565,7 +570,7 @@ class boss_professor_putricide : public CreatureScript break; } case EVENT_UNSTABLE_EXPERIMENT: - DoScriptText(EMOTE_UNSTABLE_EXPERIMENT, me); + Talk(EMOTE_UNSTABLE_EXPERIMENT); DoCast(me, SPELL_UNSTABLE_EXPERIMENT); events.ScheduleEvent(EVENT_UNSTABLE_EXPERIMENT, urand(35000, 40000)); break; @@ -586,7 +591,7 @@ class boss_professor_putricide : public CreatureScript SelectTargetList(targets, 2, SELECT_TARGET_RANDOM, -7.0f, true); if (!targets.empty()) { - DoScriptText(EMOTE_MALLEABLE_GOO, me); + Talk(EMOTE_MALLEABLE_GOO); for (std::list<Unit*>::iterator itr = targets.begin(); itr != targets.end(); ++itr) DoCast(*itr, SPELL_MALLEABLE_GOO); } @@ -595,14 +600,14 @@ class boss_professor_putricide : public CreatureScript { if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, -7.0f, true)) { - DoScriptText(EMOTE_MALLEABLE_GOO, me); + Talk(EMOTE_MALLEABLE_GOO); DoCast(target, SPELL_MALLEABLE_GOO); } } events.ScheduleEvent(EVENT_MALLEABLE_GOO, urand(25000, 30000)); break; case EVENT_CHOKING_GAS_BOMB: - DoScriptText(EMOTE_CHOKING_GAS_BOMB, me); + Talk(EMOTE_CHOKING_GAS_BOMB); DoCast(me, SPELL_CHOKING_GAS_BOMB); events.ScheduleEvent(EVENT_CHOKING_GAS_BOMB, urand(35000, 40000)); break; @@ -626,14 +631,14 @@ class boss_professor_putricide : public CreatureScript if (Creature* face = me->FindNearestCreature(NPC_TEAR_GAS_TARGET_STALKER, 50.0f)) me->SetFacingToObject(face); me->HandleEmoteCommand(EMOTE_ONESHOT_KNEEL); - DoScriptText(SAY_TRANSFORM_1, me); + Talk(SAY_TRANSFORM_1); events.ScheduleEvent(EVENT_RESUME_ATTACK, 5500, 0, PHASE_COMBAT_2); break; case PHASE_COMBAT_3: if (Creature* face = me->FindNearestCreature(NPC_TEAR_GAS_TARGET_STALKER, 50.0f)) me->SetFacingToObject(face); me->HandleEmoteCommand(EMOTE_ONESHOT_KNEEL); - DoScriptText(SAY_TRANSFORM_2, me); + Talk(SAY_TRANSFORM_2); events.ScheduleEvent(EVENT_RESUME_ATTACK, 8500, 0, PHASE_COMBAT_3); break; default: @@ -657,15 +662,15 @@ class boss_professor_putricide : public CreatureScript ePhases phase; // external of EventMap because event phase gets reset on evade // Festergut & Rotface variables - const float fBaseSpeed; + const float baseSpeed; uint64 oozeFloodDummy[4]; uint8 oozeFloodStage; - bool bExperimentState; + bool experimentState; }; - CreatureAI* GetAI(Creature* pCreature) const + CreatureAI* GetAI(Creature* creature) const { - return new boss_professor_putricideAI(pCreature); + return new boss_professor_putricideAI(creature); } }; @@ -676,9 +681,9 @@ class npc_volatile_ooze : public CreatureScript struct npc_volatile_oozeAI : public ScriptedAI { - npc_volatile_oozeAI(Creature* pCreature) : ScriptedAI(pCreature) + npc_volatile_oozeAI(Creature* creature) : ScriptedAI(creature) { - uiNewTargetSelectTimer = 0; + newTargetSelectTimer = 0; } void SpellHitTarget(Unit* /*pTarget*/, const SpellEntry* spell) @@ -687,7 +692,7 @@ class npc_volatile_ooze : public CreatureScript explode = sSpellMgr.GetSpellForDifficultyFromSpell(explode, me); if (explode->Id == spell->Id) { - uiNewTargetSelectTimer = 5000; + newTargetSelectTimer = 5000; DoStartNoMovement(me); } } @@ -697,12 +702,12 @@ class npc_volatile_ooze : public CreatureScript if (!UpdateVictim()) return; - if (!uiNewTargetSelectTimer) + if (!newTargetSelectTimer) return; - if (uiNewTargetSelectTimer <= diff) + if (newTargetSelectTimer <= diff) { - uiNewTargetSelectTimer = 0; + newTargetSelectTimer = 0; if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 0.0f, true, -SPELL_VOLATILE_OOZE_PROTECTION)) { AttackStart(target); @@ -714,17 +719,17 @@ class npc_volatile_ooze : public CreatureScript me->ForcedDespawn(); } else - uiNewTargetSelectTimer -= diff; + newTargetSelectTimer -= diff; } private: // no need to use EventMap for just one event - uint32 uiNewTargetSelectTimer; + uint32 newTargetSelectTimer; }; - CreatureAI* GetAI(Creature* pCreature) const + CreatureAI* GetAI(Creature* creature) const { - return new npc_volatile_oozeAI(pCreature); + return new npc_volatile_oozeAI(creature); } }; @@ -1132,7 +1137,7 @@ class spell_putricide_mutated_plague : public SpellScriptLoader multiplier = 3.0f; damage *= int32(pow(multiplier, aurApp->GetBase()->GetStackAmount())); - damage = int32(damage * 1.5f); + damage = int32(damage * 1.5f); aurApp->GetTarget()->CastCustomSpell(triggerSpell, SPELLVALUE_BASE_POINT0, damage, aurApp->GetTarget(), true, NULL, aurEff, GetCasterGUID()); } diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp index 5d3a86cd992..ed253dd4eda 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp @@ -27,16 +27,15 @@ enum eTexts { - SAY_PRECIOUS_DIES = -1631094, - SAY_AGGRO = -1631095, - EMOTE_SLIME_SPRAY = -1631096, - SAY_SLIME_SPRAY = -1631097, - EMOTE_UNSTABLE_EXPLOSION = -1631098, - SAY_UNSTABLE_EXPLOSION = -1631099, - SAY_KILL_1 = -1631100, - SAY_KILL_2 = -1631101, - SAY_BERSERK = -1631102, - SAY_DEATH = -1631103 + SAY_PRECIOUS_DIES = 0, + SAY_AGGRO = 1, + EMOTE_SLIME_SPRAY = 2, + SAY_SLIME_SPRAY = 3, + EMOTE_UNSTABLE_EXPLOSION = 4, + SAY_UNSTABLE_EXPLOSION = 5, + SAY_KILL = 6, + SAY_BERSERK = 7, + SAY_DEATH = 8, }; enum eSpells @@ -60,7 +59,7 @@ enum eSpells // Precious SPELL_MORTAL_WOUND = 71127, - SPELL_DECIMATE = 71123 + SPELL_DECIMATE = 71123, }; #define MUTATED_INFECTION RAID_MODE<int32>(69674,71224,73022,73023) @@ -75,7 +74,7 @@ enum eEvents EVENT_MORTAL_WOUND = 5, EVENT_STICKY_OOZE = 6, - EVENT_UNSTABLE_DESPAWN = 7 + EVENT_UNSTABLE_DESPAWN = 7, }; class boss_rotface : public CreatureScript @@ -85,7 +84,7 @@ class boss_rotface : public CreatureScript struct boss_rotfaceAI : public BossAI { - boss_rotfaceAI(Creature* pCreature) : BossAI(pCreature, DATA_ROTFACE) + boss_rotfaceAI(Creature* creature) : BossAI(creature, DATA_ROTFACE) { infectionStage = 0; infectionCooldown = 14000; @@ -114,7 +113,7 @@ class boss_rotface : public CreatureScript void EnterCombat(Unit* /*who*/) { - DoScriptText(SAY_AGGRO, me); + Talk(SAY_AGGRO); if (Creature* professor = Unit::GetCreature(*me, instance->GetData64(DATA_PROFESSOR_PUTRICIDE))) professor->AI()->DoAction(ACTION_ROTFACE_COMBAT); @@ -123,7 +122,7 @@ class boss_rotface : public CreatureScript void JustDied(Unit* /*killer*/) { - DoScriptText(SAY_DEATH, me); + Talk(SAY_DEATH); instance->SetBossState(DATA_ROTFACE, DONE); if (Creature* professor = Unit::GetCreature(*me, instance->GetData64(DATA_PROFESSOR_PUTRICIDE))) professor->AI()->DoAction(ACTION_ROTFACE_DEATH); @@ -135,10 +134,10 @@ class boss_rotface : public CreatureScript instance->SetData(DATA_OOZE_DANCE_ACHIEVEMENT, uint32(true)); // reset } - void KilledUnit(Unit *victim) + void KilledUnit(Unit* victim) { if (victim->GetTypeId() == TYPEID_PLAYER) - DoScriptText(RAND(SAY_KILL_1, SAY_KILL_2), me); + Talk(SAY_KILL); } void EnterEvadeMode() @@ -151,7 +150,7 @@ class boss_rotface : public CreatureScript void SpellHitTarget(Unit* /*target*/, SpellEntry const* spell) { if (spell->Id == SPELL_SLIME_SPRAY) - DoScriptText(SAY_SLIME_SPRAY, me); + Talk(SAY_SLIME_SPRAY); } void MoveInLineOfSight(Unit* /*who*/) @@ -198,7 +197,7 @@ class boss_rotface : public CreatureScript Position pos; target->GetPosition(&pos); DoSummon(NPC_OOZE_SPRAY_STALKER, pos, 8000, TEMPSUMMON_TIMED_DESPAWN); - DoScriptText(EMOTE_SLIME_SPRAY, me); + Talk(EMOTE_SLIME_SPRAY); DoCastAOE(SPELL_SLIME_SPRAY); } events.ScheduleEvent(EVENT_SLIME_SPRAY, 20000); @@ -233,9 +232,9 @@ class boss_rotface : public CreatureScript uint32 infectionCooldown; }; - CreatureAI* GetAI(Creature* pCreature) const + CreatureAI* GetAI(Creature* creature) const { - return new boss_rotfaceAI(pCreature); + return new boss_rotfaceAI(creature); } }; @@ -246,7 +245,7 @@ class npc_little_ooze : public CreatureScript struct npc_little_oozeAI : public ScriptedAI { - npc_little_oozeAI(Creature* pCreature) : ScriptedAI(pCreature) + npc_little_oozeAI(Creature* creature) : ScriptedAI(creature) { } @@ -293,9 +292,9 @@ class npc_little_ooze : public CreatureScript EventMap events; }; - CreatureAI* GetAI(Creature* pCreature) const + CreatureAI* GetAI(Creature* creature) const { - return new npc_little_oozeAI(pCreature); + return new npc_little_oozeAI(creature); } }; @@ -306,7 +305,7 @@ class npc_big_ooze : public CreatureScript struct npc_big_oozeAI : public ScriptedAI { - npc_big_oozeAI(Creature* pCreature) : ScriptedAI(pCreature), bExploded(false) + npc_big_oozeAI(Creature* creature) : ScriptedAI(creature) { } @@ -341,7 +340,6 @@ class npc_big_ooze : public CreatureScript events.CancelEvent(EVENT_STICKY_OOZE); else if (action == EVENT_UNSTABLE_DESPAWN) { - bExploded = true; me->RemoveAllAuras(); me->SetVisible(false); events.Reset(); @@ -371,19 +369,18 @@ class npc_big_ooze : public CreatureScript break; } } - - if (!bExploded) + + if (me->IsVisible()) DoMeleeAttackIfReady(); } private: EventMap events; - bool bExploded; }; - CreatureAI* GetAI(Creature* pCreature) const + CreatureAI* GetAI(Creature* creature) const { - return new npc_big_oozeAI(pCreature); + return new npc_big_oozeAI(creature); } }; @@ -394,9 +391,9 @@ class npc_precious_icc : public CreatureScript struct npc_precious_iccAI : public ScriptedAI { - npc_precious_iccAI(Creature* pCreature) : ScriptedAI(pCreature) + npc_precious_iccAI(Creature* creature) : ScriptedAI(creature) { - pInstance = pCreature->GetInstanceScript(); + instance = creature->GetInstanceScript(); } void Reset() @@ -438,20 +435,20 @@ class npc_precious_icc : public CreatureScript void JustDied(Unit* /*who*/) { - uint64 rotfaceGUID = pInstance ? pInstance->GetData64(DATA_ROTFACE) : 0; - if (Creature *rotface = Unit::GetCreature(*me, rotfaceGUID)) + uint64 rotfaceGUID = instance ? instance->GetData64(DATA_ROTFACE) : 0; + if (Creature* rotface = Unit::GetCreature(*me, rotfaceGUID)) if (rotface->isAlive()) - DoScriptText(SAY_PRECIOUS_DIES, rotface); + rotface->AI()->Talk(SAY_PRECIOUS_DIES); } private: EventMap events; - InstanceScript* pInstance; + InstanceScript* instance; }; - CreatureAI* GetAI(Creature* pCreature) const + CreatureAI* GetAI(Creature* creature) const { - return new npc_precious_iccAI(pCreature); + return new npc_precious_iccAI(creature); } }; @@ -591,11 +588,13 @@ class spell_rotface_large_ooze_buff_combine : public SpellScriptLoader { GetCaster()->RemoveAurasDueToSpell(SPELL_LARGE_OOZE_BUFF_COMBINE); GetCaster()->RemoveAurasDueToSpell(SPELL_LARGE_OOZE_COMBINE); - DoScriptText(EMOTE_UNSTABLE_EXPLOSION, GetCaster()); if (InstanceScript* instance = GetCaster()->GetInstanceScript()) if (Creature* rotface = Unit::GetCreature(*GetCaster(), instance->GetData64(DATA_ROTFACE))) if (rotface->isAlive()) - DoScriptText(SAY_UNSTABLE_EXPLOSION, rotface); + { + rotface->AI()->Talk(EMOTE_UNSTABLE_EXPLOSION); + rotface->AI()->Talk(SAY_UNSTABLE_EXPLOSION); + } if (Creature* cre = GetCaster()->ToCreature()) cre->AI()->DoAction(EVENT_STICKY_OOZE); diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h index c29ffb00f48..0b5a120fe24 100755 --- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h +++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h @@ -20,6 +20,7 @@ #define ICCScriptName "instance_icecrown_citadel" +// Shared spells used by every boss enum eSharedSpells { SPELL_BERSERK = 26662, @@ -28,6 +29,7 @@ enum eSharedSpells enum eData { + // Encounter States/Boss GUIDs DATA_LORD_MARROWGAR = 0, DATA_LADY_DEATHWHISPER = 1, DATA_GUNSHIP_EVENT = 2, @@ -41,6 +43,7 @@ enum eData DATA_SINDRAGOSA = 10, DATA_THE_LICH_KING = 11, + // Additional data DATA_SAURFANG_EVENT_NPC = 12, DATA_BONED_ACHIEVEMENT = 13, DATA_OOZE_DANCE_ACHIEVEMENT = 14, @@ -137,17 +140,24 @@ enum eCreatures enum eGameobjects { + // Lord Marrogar GO_DOODAD_ICECROWN_ICEWALL02 = 201910, GO_ICEWALL = 201911, GO_LORD_MARROWGAR_S_ENTRANCE = 201857, + + // Lady Deathwhisper GO_ORATORY_OF_THE_DAMNED_ENTRANCE = 201563, GO_LADY_DEATHWHISPER_ELEVATOR = 202220, + + // Deathbringer Saurfang GO_SAURFANG_S_DOOR = 201825, GO_DEATHBRINGER_S_CACHE_10N = 202239, GO_DEATHBRINGER_S_CACHE_25N = 202240, GO_DEATHBRINGER_S_CACHE_10H = 202238, GO_DEATHBRINGER_S_CACHE_25H = 202241, GO_SCOURGE_TRANSPORTER_SAURFANG = 202244, + + // Professor Putricide GO_ORANGE_PLAGUE_MONSTER_ENTRANCE = 201371, GO_GREEN_PLAGUE_MONSTER_ENTRANCE = 201370, GO_SCIENTIST_AIRLOCK_DOOR_COLLISION = 201612, @@ -157,13 +167,21 @@ enum eGameobjects GO_DOODAD_ICECROWN_GREENTUBES02 = 201618, GO_SCIENTIST_ENTRANCE = 201372, GO_DRINK_ME = 201584, + + // Blood Prince Council GO_CRIMSON_HALL_DOOR = 201376, GO_BLOOD_ELF_COUNCIL_DOOR = 201378, GO_BLOOD_ELF_COUNCIL_DOOR_RIGHT = 201377, + + // Blood-Queen Lana'thel GO_DOODAD_ICECROWN_BLOODPRINCE_DOOR_01 = 201746, GO_DOODAD_ICECROWN_GRATE_01 = 201755, + + // Valithria Dreamwalker GO_GREEN_DRAGON_BOSS_ENTRANCE = 201375, GO_GREEN_DRAGON_BOSS_EXIT = 201374, + + // Sindragosa GO_SINDRAGOSA_ENTRANCE_DOOR = 201373, GO_SINDRAGOSA_SHORTCUT_ENTRANCE_DOOR = 201369, GO_SINDRAGOSA_SHORTCUT_EXIT_DOOR = 201379, @@ -171,29 +189,39 @@ enum eGameobjects enum eAchievementCriteria { + // Lord Marrowgar CRITERIA_BONED_10N = 12775, CRITERIA_BONED_25N = 12962, CRITERIA_BONED_10H = 13393, CRITERIA_BONED_25H = 13394, + + // Rotface CRITERIA_DANCES_WITH_OOZES_10N = 12984, CRITERIA_DANCES_WITH_OOZES_25N = 12966, CRITERIA_DANCES_WITH_OOZES_10H = 12985, CRITERIA_DANCES_WITH_OOZES_25H = 12983, + + // Professor Putricide CRITERIA_NAUSEA_10N = 12987, CRITERIA_NAUSEA_25N = 12968, CRITERIA_NAUSEA_10H = 12988, CRITERIA_NAUSEA_25H = 12981, + + // Blood Prince Council CRITERIA_ORB_WHISPERER_10N = 13033, CRITERIA_ORB_WHISPERER_25N = 12969, CRITERIA_ORB_WHISPERER_10H = 13034, CRITERIA_ORB_WHISPERER_25H = 13032, }; -enum ePutricideActions +enum eSharedActions { + // Festergut ACTION_FESTERGUT_COMBAT = -366260, ACTION_FESTERGUT_GAS = -366261, ACTION_FESTERGUT_DEATH = -366262, + + // Rotface ACTION_ROTFACE_COMBAT = -366270, ACTION_ROTFACE_OOZE = -366271, ACTION_ROTFACE_DEATH = -366272, diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel_teleport.cpp b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel_teleport.cpp index f053a4b5a9b..04a16bf6440 100755 --- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel_teleport.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel_teleport.cpp @@ -15,7 +15,9 @@ * with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include "ScriptPCH.h" +#include "ScriptedGossip.h" +#include "ScriptMgr.h" +#include "InstanceScript.h" #include "icecrown_citadel.h" #include "Spell.h" diff --git a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp index c752324dd31..f92bff6b9dc 100755 --- a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp @@ -15,7 +15,9 @@ * with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include "ScriptPCH.h" +#include "ObjectMgr.h" +#include "ScriptMgr.h" +#include "InstanceScript.h" #include "icecrown_citadel.h" static const DoorData doorData[] = @@ -47,25 +49,25 @@ class instance_icecrown_citadel : public InstanceMapScript struct instance_icecrown_citadel_InstanceMapScript : public InstanceScript { - instance_icecrown_citadel_InstanceMapScript(InstanceMap* pMap) : InstanceScript(pMap) + instance_icecrown_citadel_InstanceMapScript(InstanceMap* map) : InstanceScript(map) { SetBossNumber(MAX_ENCOUNTER); LoadDoorData(doorData); - uiLadyDeathwisperElevator = 0; - uiDeathbringerSaurfang = 0; - uiSaurfangDoor = 0; - uiSaurfangEventNPC = 0; - uiDeathbringersCache = 0; - uiSaurfangTeleport = 0; - memset(uiPutricidePipes, 0, 2*sizeof(uint64)); - memset(uiPutricideGates, 0, 2*sizeof(uint64)); - uiPutricideCollision = 0; - uiFestergut = 0; - uiRotface = 0; - uiProfessorPutricide = 0; - uiPutricideTable = 0; - memset(uiBloodCouncil, 0, 3*sizeof(uint64)); - uiBloodCouncilController = 0; + ladyDeathwisperElevator = 0; + deathbringerSaurfang = 0; + saurfangDoor = 0; + saurfangEventNPC = 0; + deathbringersCache = 0; + saurfangTeleport = 0; + memset(putricidePipes, 0, 2*sizeof(uint64)); + memset(putricideGates, 0, 2*sizeof(uint64)); + putricideCollision = 0; + festergut = 0; + rotface = 0; + professorPutricide = 0; + putricideTable = 0; + memset(bloodCouncil, 0, 3*sizeof(uint64)); + bloodCouncilController = 0; isBonedEligible = true; isOozeDanceEligible = true; isNauseaEligible = true; @@ -122,13 +124,13 @@ class instance_icecrown_citadel : public InstanceMapScript creature->UpdateEntry(NPC_KING_VARIAN_WRYNN, ALLIANCE); break; case NPC_DEATHBRINGER_SAURFANG: - uiDeathbringerSaurfang = creature->GetGUID(); + deathbringerSaurfang = creature->GetGUID(); break; case NPC_SE_HIGH_OVERLORD_SAURFANG: if (TeamInInstance == ALLIANCE) creature->UpdateEntry(NPC_SE_MURADIN_BRONZEBEARD, ALLIANCE); case NPC_SE_MURADIN_BRONZEBEARD: - uiSaurfangEventNPC = creature->GetGUID(); + saurfangEventNPC = creature->GetGUID(); creature->LastUsedScriptID = creature->GetScriptId(); break; case NPC_SE_KOR_KRON_REAVER: @@ -136,34 +138,34 @@ class instance_icecrown_citadel : public InstanceMapScript creature->UpdateEntry(NPC_SE_SKYBREAKER_MARINE, ALLIANCE); break; case NPC_FESTERGUT: - uiFestergut = creature->GetGUID(); + festergut = creature->GetGUID(); break; case NPC_ROTFACE: - uiRotface = creature->GetGUID(); + rotface = creature->GetGUID(); break; case NPC_PROFESSOR_PUTRICIDE: - uiProfessorPutricide = creature->GetGUID(); + professorPutricide = creature->GetGUID(); break; case NPC_PRINCE_KELESETH: - uiBloodCouncil[0] = creature->GetGUID(); + bloodCouncil[0] = creature->GetGUID(); break; case NPC_PRINCE_TALDARAM: - uiBloodCouncil[1] = creature->GetGUID(); + bloodCouncil[1] = creature->GetGUID(); break; case NPC_PRINCE_VALANAR: - uiBloodCouncil[2] = creature->GetGUID(); + bloodCouncil[2] = creature->GetGUID(); break; case NPC_BLOOD_ORB_CONTROLLER: - uiBloodCouncilController = creature->GetGUID(); + bloodCouncilController = creature->GetGUID(); break; default: break; } } - void OnGameObjectCreate(GameObject* pGo, bool add) + void OnGameObjectCreate(GameObject* go, bool add) { - switch (pGo->GetEntry()) + switch (go->GetEntry()) { case GO_DOODAD_ICECROWN_ICEWALL02: case GO_ICEWALL: @@ -182,59 +184,59 @@ class instance_icecrown_citadel : public InstanceMapScript case GO_SINDRAGOSA_ENTRANCE_DOOR: case GO_SINDRAGOSA_SHORTCUT_ENTRANCE_DOOR: case GO_SINDRAGOSA_SHORTCUT_EXIT_DOOR: - AddDoor(pGo, add); + AddDoor(go, add); break; case GO_LADY_DEATHWHISPER_ELEVATOR: - uiLadyDeathwisperElevator = pGo->GetGUID(); + ladyDeathwisperElevator = go->GetGUID(); if (GetBossState(DATA_LADY_DEATHWHISPER) == DONE) { - pGo->SetUInt32Value(GAMEOBJECT_LEVEL, 0); - pGo->SetGoState(GO_STATE_READY); + go->SetUInt32Value(GAMEOBJECT_LEVEL, 0); + go->SetGoState(GO_STATE_READY); } break; case GO_SAURFANG_S_DOOR: - uiSaurfangDoor = pGo->GetGUID(); + saurfangDoor = go->GetGUID(); break; case GO_DEATHBRINGER_S_CACHE_10N: case GO_DEATHBRINGER_S_CACHE_25N: case GO_DEATHBRINGER_S_CACHE_10H: case GO_DEATHBRINGER_S_CACHE_25H: - uiDeathbringersCache = pGo->GetGUID(); + deathbringersCache = go->GetGUID(); break; case GO_SCOURGE_TRANSPORTER_SAURFANG: - uiSaurfangTeleport = pGo->GetGUID(); + saurfangTeleport = go->GetGUID(); break; case GO_SCIENTIST_AIRLOCK_DOOR_COLLISION: - uiPutricideCollision = pGo->GetGUID(); + putricideCollision = go->GetGUID(); if (GetBossState(DATA_FESTERGUT) == DONE && GetBossState(DATA_ROTFACE) == DONE) - HandleGameObject(uiPutricideCollision, true, pGo); + HandleGameObject(putricideCollision, true, go); break; case GO_SCIENTIST_AIRLOCK_DOOR_ORANGE: - uiPutricideGates[0] = pGo->GetGUID(); + putricideGates[0] = go->GetGUID(); if (GetBossState(DATA_FESTERGUT) == DONE && GetBossState(DATA_ROTFACE) == DONE) - pGo->SetGoState(GO_STATE_ACTIVE_ALTERNATIVE); + go->SetGoState(GO_STATE_ACTIVE_ALTERNATIVE); else if (GetBossState(DATA_FESTERGUT) == DONE) - HandleGameObject(uiPutricideGates[1], false, pGo); + HandleGameObject(putricideGates[1], false, go); break; case GO_SCIENTIST_AIRLOCK_DOOR_GREEN: - uiPutricideGates[1] = pGo->GetGUID(); + putricideGates[1] = go->GetGUID(); if (GetBossState(DATA_ROTFACE) == DONE && GetBossState(DATA_FESTERGUT) == DONE) - pGo->SetGoState(GO_STATE_ACTIVE_ALTERNATIVE); + go->SetGoState(GO_STATE_ACTIVE_ALTERNATIVE); else if (GetBossState(DATA_ROTFACE) == DONE) - HandleGameObject(uiPutricideGates[1], false, pGo); + HandleGameObject(putricideGates[1], false, go); break; case GO_DOODAD_ICECROWN_ORANGETUBES02: - uiPutricidePipes[0] = pGo->GetGUID(); + putricidePipes[0] = go->GetGUID(); if (GetBossState(DATA_FESTERGUT) == DONE) - HandleGameObject(uiPutricidePipes[0], true, pGo); + HandleGameObject(putricidePipes[0], true, go); break; case GO_DOODAD_ICECROWN_GREENTUBES02: - uiPutricidePipes[1] = pGo->GetGUID(); + putricidePipes[1] = go->GetGUID(); if (GetBossState(DATA_ROTFACE) == DONE) - HandleGameObject(uiPutricidePipes[1], true, pGo); + HandleGameObject(putricidePipes[1], true, go); break; case GO_DRINK_ME: - uiPutricideTable = pGo->GetGUID(); + putricideTable = go->GetGUID(); break; default: break; @@ -246,29 +248,29 @@ class instance_icecrown_citadel : public InstanceMapScript switch (type) { case DATA_DEATHBRINGER_SAURFANG: - return uiDeathbringerSaurfang; + return deathbringerSaurfang; case DATA_SAURFANG_EVENT_NPC: - return uiSaurfangEventNPC; + return saurfangEventNPC; case GO_SAURFANG_S_DOOR: - return uiSaurfangDoor; + return saurfangDoor; case GO_SCOURGE_TRANSPORTER_SAURFANG: - return uiSaurfangTeleport; + return saurfangTeleport; case DATA_FESTERGUT: - return uiFestergut; + return festergut; case DATA_ROTFACE: - return uiRotface; + return rotface; case DATA_PROFESSOR_PUTRICIDE: - return uiProfessorPutricide; + return professorPutricide; case DATA_PUTRICIDE_TABLE: - return uiPutricideTable; + return putricideTable; case DATA_PRINCE_KELESETH_GUID: - return uiBloodCouncil[0]; + return bloodCouncil[0]; case DATA_PRINCE_TALDARAM_GUID: - return uiBloodCouncil[1]; + return bloodCouncil[1]; case DATA_PRINCE_VALANAR_GUID: - return uiBloodCouncil[2]; + return bloodCouncil[2]; case DATA_BLOOD_PRINCES_CONTROL: - return uiBloodCouncilController; + return bloodCouncilController; default: break; } @@ -286,7 +288,7 @@ class instance_icecrown_citadel : public InstanceMapScript case DATA_LADY_DEATHWHISPER: SetBossState(DATA_GUNSHIP_EVENT, state); // TEMP HACK UNTIL GUNSHIP SCRIPTED if (state == DONE) - if (GameObject* elevator = instance->GetGameObject(uiLadyDeathwisperElevator)) + if (GameObject* elevator = instance->GetGameObject(ladyDeathwisperElevator)) { elevator->SetUInt32Value(GAMEOBJECT_LEVEL, 0); elevator->SetGoState(GO_STATE_READY); @@ -296,11 +298,11 @@ class instance_icecrown_citadel : public InstanceMapScript switch (state) { case DONE: - DoRespawnGameObject(uiDeathbringersCache, 7*DAY); + DoRespawnGameObject(deathbringersCache, 7*DAY); case NOT_STARTED: - if (GameObject* teleporter = instance->GetGameObject(uiSaurfangTeleport)) + if (GameObject* teleporter = instance->GetGameObject(saurfangTeleport)) { - HandleGameObject(uiSaurfangTeleport, true, teleporter); + HandleGameObject(saurfangTeleport, true, teleporter); teleporter->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE); } break; @@ -313,15 +315,15 @@ class instance_icecrown_citadel : public InstanceMapScript { if (GetBossState(DATA_ROTFACE) == DONE) { - HandleGameObject(uiPutricideCollision, true); - if (GameObject* pGo = instance->GetGameObject(uiPutricideGates[0])) - pGo->SetGoState(GO_STATE_ACTIVE_ALTERNATIVE); - if (GameObject* pGo = instance->GetGameObject(uiPutricideGates[1])) - pGo->SetGoState(GO_STATE_ACTIVE_ALTERNATIVE); + HandleGameObject(putricideCollision, true); + if (GameObject* go = instance->GetGameObject(putricideGates[0])) + go->SetGoState(GO_STATE_ACTIVE_ALTERNATIVE); + if (GameObject* go = instance->GetGameObject(putricideGates[1])) + go->SetGoState(GO_STATE_ACTIVE_ALTERNATIVE); } else - HandleGameObject(uiPutricideGates[0], false); - HandleGameObject(uiPutricidePipes[0], true); + HandleGameObject(putricideGates[0], false); + HandleGameObject(putricidePipes[0], true); } break; case DATA_ROTFACE: @@ -329,15 +331,15 @@ class instance_icecrown_citadel : public InstanceMapScript { if (GetBossState(DATA_FESTERGUT) == DONE) { - HandleGameObject(uiPutricideCollision, true); - if (GameObject* pGo = instance->GetGameObject(uiPutricideGates[0])) - pGo->SetGoState(GO_STATE_ACTIVE_ALTERNATIVE); - if (GameObject* pGo = instance->GetGameObject(uiPutricideGates[1])) - pGo->SetGoState(GO_STATE_ACTIVE_ALTERNATIVE); + HandleGameObject(putricideCollision, true); + if (GameObject* go = instance->GetGameObject(putricideGates[0])) + go->SetGoState(GO_STATE_ACTIVE_ALTERNATIVE); + if (GameObject* go = instance->GetGameObject(putricideGates[1])) + go->SetGoState(GO_STATE_ACTIVE_ALTERNATIVE); } else - HandleGameObject(uiPutricideGates[1], false); - HandleGameObject(uiPutricidePipes[1], true); + HandleGameObject(putricideGates[1], false); + HandleGameObject(putricidePipes[1], true); } break; case DATA_BLOOD_PRINCE_COUNCIL: @@ -447,30 +449,30 @@ class instance_icecrown_citadel : public InstanceMapScript } private: - uint64 uiLadyDeathwisperElevator; - uint64 uiDeathbringerSaurfang; - uint64 uiSaurfangDoor; - uint64 uiSaurfangEventNPC; // Muradin Bronzebeard or High Overlord Saurfang - uint64 uiDeathbringersCache; - uint64 uiSaurfangTeleport; - uint64 uiPutricidePipes[2]; - uint64 uiPutricideGates[2]; - uint64 uiPutricideCollision; - uint64 uiFestergut; - uint64 uiRotface; - uint64 uiProfessorPutricide; - uint64 uiPutricideTable; - uint64 uiBloodCouncil[3]; - uint64 uiBloodCouncilController; + uint64 ladyDeathwisperElevator; + uint64 deathbringerSaurfang; + uint64 saurfangDoor; + uint64 saurfangEventNPC; // Muradin Bronzebeard or High Overlord Saurfang + uint64 deathbringersCache; + uint64 saurfangTeleport; + uint64 putricidePipes[2]; + uint64 putricideGates[2]; + uint64 putricideCollision; + uint64 festergut; + uint64 rotface; + uint64 professorPutricide; + uint64 putricideTable; + uint64 bloodCouncil[3]; + uint64 bloodCouncilController; bool isBonedEligible; bool isOozeDanceEligible; bool isNauseaEligible; bool isOrbWhispererEligible; }; - InstanceScript* GetInstanceScript(InstanceMap* pMap) const + InstanceScript* GetInstanceScript(InstanceMap* map) const { - return new instance_icecrown_citadel_InstanceMapScript(pMap); + return new instance_icecrown_citadel_InstanceMapScript(map); } }; |