mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-30 05:43:12 +01:00
Scripts/Trial of Crusader: Northrend Beasts Rework (#21031)
* Rewritten Gormok encounter
* Rewritten Snobold Vassal Script
* Rewritten Jormungars encounter
* Rewritten Icehowl encounter
* Added missing texts
* Added missing spells
* Implemented berserk mechanic on heroic diffs.
* Implemented Achievement requirement to make heroic diffs.
* Rewritten Barrett Ramsay scripts
* Added Barrett gossips and ported everything to DB.
* Added right Barrett in each encounter
* Removed a lot of hacks
* Rewritten Tirion Fordring script
* Rewritten Varian Wrynn script
* Rewritten Garrosh script
* Rewritten Wilfred event
* Rewritten Lich King event
* Updated codestyle
* Added missing spawns
* Fixed combat behavior before Gormok
* Fixed some visual stuff
(cherry picked from commit 2362e9c794)
This commit is contained in:
@@ -0,0 +1,449 @@
|
||||
SET @CGUID :=79369; -- 2 Guids needed
|
||||
DELETE FROM `creature` WHERE `guid` IN(@CGUID, @CGUID+1);
|
||||
INSERT INTO `creature` (`guid`,`id`,`map`,`zoneId`,`areaId`,`spawnDifficulties`,`PhaseId`,`modelid`,`equipment_id`,`position_x`,`position_y`,`position_z`,`orientation`,`spawntimesecs`,`spawndist`,`currentwaypoint`,`curhealth`,`curmana`,`MovementType`,`npcflag`,`unit_flags`,`dynamicflags`,`ScriptName`,`VerifiedBuild`) VALUES
|
||||
(@CGUID,16980,649,0,0,'3,4,5,6',0,0,0,646.073,60.3333,394.856,0,7200,0,0,4120,0,0,0,0,0,'',0), -- Lich King voice
|
||||
(@CGUID+1,34564,649,0,0,'3,4,5,6',0,0,0,783.9305,132.9722,142.6711,3.141593,7200,0,0,4120,0,0,0,0,0,'',0); -- Anub'arak
|
||||
|
||||
DELETE FROM `creature_text` WHERE `CreatureID`=16980 AND `GroupId` IN (4,5); -- The Lich King Voice
|
||||
INSERT INTO `creature_text` (`CreatureID`,`GroupID`,`ID`,`Text`,`Type`,`Language`,`Probability`,`Emote`,`Duration`,`Sound`,`BroadcastTextId`,`TextRange`,`comment`) VALUES
|
||||
(16980,4,0,'You will have your challenge, Fordring.',14,0,100,0,0,16321,35747,0,'The Lich King SAY CHALLENGE'),
|
||||
(16980,5,0,'The souls of your fallen champions will be mine, Fordring.',14,0,100,0,0,16323,35749,0,'The Lich King SAY SOULS WILL BE MINE');
|
||||
|
||||
DELETE FROM `creature_text` WHERE `CreatureID`=35877; -- Lich King
|
||||
INSERT INTO `creature_text` (`CreatureID`,`GroupID`,`ID`,`Text`,`Type`,`Language`,`Probability`,`Emote`,`Duration`,`Sound`,`BroadcastTextId`,`TextRange`,`comment`) VALUES
|
||||
(35877,0,0,'The Nerubians built an empire beneath the frozen wastes of Northrend. An empire that you so foolishly built your structures upon. MY EMPIRE.',14,0,100,11,0,16322,35748,0,'The Lich King SAY EMPIRE');
|
||||
|
||||
DELETE FROM `creature` WHERE `id`=34816; -- Barrett
|
||||
|
||||
-- 34854 (Fire Bomb)
|
||||
UPDATE `creature_template` SET `ScriptName`='' WHERE `entry`=34854;
|
||||
DELETE FROM `creature_template_addon`WHERE `entry`=34854;
|
||||
INSERT INTO `creature_template_addon` (`entry`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `auras`) VALUES
|
||||
(34854,0,0,16908544,1,0,'66318'); -- Fire Bomb Aura
|
||||
|
||||
-- Added trigger flag in Slime Pool
|
||||
UPDATE `creature_template` SET `ScriptName`='npc_jormungars_slime_pool' WHERE `entry`=35176;
|
||||
DELETE FROM `creature_template_addon`WHERE `entry`=35176;
|
||||
|
||||
UPDATE `creature_template` SET `flags_extra`=128, `ScriptName`='npc_beasts_combat_stalker' WHERE `entry`=36549;
|
||||
UPDATE `creature_template` SET `ScriptName`='npc_open_portal_target_toc' WHERE `entry`=17965;
|
||||
|
||||
UPDATE `conditions` SET `Comment`='Effect_0 hits Gormok the Impaler' WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry`=66636;
|
||||
|
||||
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry`=67888; -- Fel Lightning
|
||||
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
|
||||
(13,1,67888,0,0,31,0,3,35458,0,0,0,0,'','Effect_0 hits Wilfred Fizzlebang');
|
||||
|
||||
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry`=67864; -- Open Portal
|
||||
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
|
||||
(13,1,67864,0,0,31,0,3,17965,0,0,0,0,'','Effect_0 hits Open Portal Target');
|
||||
|
||||
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry`=69016; -- Corpse Teleport
|
||||
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
|
||||
(13,1,69016,0,0,31,0,3,34797,0,0,0,0,'','Effect_0 hits Icehowl'),
|
||||
(13,1,69016,0,1,31,0,3,34780,0,0,0,0,'','Effect_0 hits Lord Jaraxxus'),
|
||||
(13,1,69016,0,2,31,0,3,34496,0,0,0,0,'','Effect_0 hits Eydis Darkbane'),
|
||||
(13,1,69016,0,3,31,0,3,34497,0,0,0,0,'','Effect_0 hits Fjola Lightbane');
|
||||
|
||||
DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_gormok_fire_bomb';
|
||||
-- 66729 Furious Charge Summon Stalker (SERVERSIDE)
|
||||
DELETE FROM `serverside_spell_effect` WHERE `SpellID`=66729 AND `EffectIndex`=0 AND `DifficultyID`=0;
|
||||
INSERT INTO `serverside_spell_effect` (`SpellID`, `EffectIndex`, `DifficultyID`, `Effect`, `EffectAura`, `EffectAmplitude`, `EffectAttributes`, `EffectAuraPeriod`, `EffectBonusCoefficient`, `EffectChainAmplitude`, `EffectChainTargets`, `EffectItemType`, `EffectMechanic`, `EffectPointsPerResource`, `EffectPosFacing`, `EffectRealPointsPerLevel`, `EffectTriggerSpell`, `BonusCoefficientFromAP`, `PvpMultiplier`, `Coefficient`, `Variance`, `ResourceCoefficient`, `GroupSizeBasePointsCoefficient`, `EffectBasePoints`, `EffectMiscValue1`, `EffectMiscValue2`, `EffectRadiusIndex1`, `EffectRadiusIndex2`, `EffectSpellClassMask1`, `EffectSpellClassMask2`, `EffectSpellClassMask3`, `EffectSpellClassMask4`, `ImplicitTarget1`, `ImplicitTarget2`) VALUES
|
||||
(66729, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35062, 64, 0, 0, 0, 0, 0, 0, 6, 53);
|
||||
-- 66319 Summon Fire Bomb (SERVERSIDE)
|
||||
DELETE FROM `serverside_spell` WHERE `Id`=66319;
|
||||
INSERT INTO `serverside_spell` (`Id`, `DifficultyID`, `CategoryId`, `Dispel`, `Mechanic`, `Attributes`, `AttributesEx`, `AttributesEx2`, `AttributesEx3`, `AttributesEx4`, `AttributesEx5`, `AttributesEx6`, `AttributesEx7`, `AttributesEx8`, `AttributesEx9`, `AttributesEx10`, `AttributesEx11`, `AttributesEx12`, `AttributesEx13`, `AttributesEx14`, `Stances`, `StancesNot`, `Targets`, `TargetCreatureType`, `RequiresSpellFocus`, `FacingCasterFlags`, `CasterAuraState`, `TargetAuraState`, `ExcludeCasterAuraState`, `ExcludeTargetAuraState`, `CasterAuraSpell`, `TargetAuraSpell`, `ExcludeCasterAuraSpell`, `ExcludeTargetAuraSpell`, `CastingTimeIndex`, `RecoveryTime`, `CategoryRecoveryTime`, `StartRecoveryCategory`, `StartRecoveryTime`, `InterruptFlags`, `AuraInterruptFlags1`, `AuraInterruptFlags2`, `ChannelInterruptFlags1`, `ChannelInterruptFlags2`, `ProcFlags`, `ProcChance`, `ProcCharges`, `ProcCooldown`, `ProcBasePPM`, `MaxLevel`, `BaseLevel`, `SpellLevel`, `DurationIndex`, `RangeIndex`, `Speed`, `LaunchDelay`, `StackAmount`, `EquippedItemClass`, `EquippedItemSubClassMask`, `EquippedItemInventoryTypeMask`, `ContentTuningId`, `SpellName`, `ConeAngle`, `ConeWidth`, `MaxTargetLevel`, `MaxAffectedTargets`, `SpellFamilyName`, `SpellFamilyFlags1`, `SpellFamilyFlags2`, `SpellFamilyFlags3`, `SpellFamilyFlags4`, `DmgClass`, `PreventionType`, `AreaGroupId`, `SchoolMask`, `ChargeCategoryId`) VALUES
|
||||
(66319, 0, 0, 0, 0, 256, 268435456, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 13, 0, 0, 0, -1, 0, 0, 0, 'Summon Fire Bomb', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0);
|
||||
|
||||
DELETE FROM `serverside_spell_effect` WHERE `SpellID`=66319 AND `EffectIndex`=0 AND `DifficultyID`=0;
|
||||
INSERT INTO `serverside_spell_effect` (`SpellID`, `EffectIndex`, `DifficultyID`, `Effect`, `EffectAura`, `EffectAmplitude`, `EffectAttributes`, `EffectAuraPeriod`, `EffectBonusCoefficient`, `EffectChainAmplitude`, `EffectChainTargets`, `EffectItemType`, `EffectMechanic`, `EffectPointsPerResource`, `EffectPosFacing`, `EffectRealPointsPerLevel`, `EffectTriggerSpell`, `BonusCoefficientFromAP`, `PvpMultiplier`, `Coefficient`, `Variance`, `ResourceCoefficient`, `GroupSizeBasePointsCoefficient`, `EffectBasePoints`, `EffectMiscValue1`, `EffectMiscValue2`, `EffectRadiusIndex1`, `EffectRadiusIndex2`, `EffectSpellClassMask1`, `EffectSpellClassMask2`, `EffectSpellClassMask3`, `EffectSpellClassMask4`, `ImplicitTarget1`, `ImplicitTarget2`) VALUES
|
||||
(66319, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34854, 64, 0, 0, 0, 0, 0, 0, 6, 53);
|
||||
|
||||
|
||||
DELETE FROM `spell_linked_spell` WHERE `spell_effect`=68667 AND `type`=0;
|
||||
|
||||
DELETE FROM `spell_script_names` WHERE `ScriptName` IN (
|
||||
'spell_icehowl_arctic_breath',
|
||||
'spell_icehowl_trample',
|
||||
'spell_icehowl_massive_crash',
|
||||
'spell_lich_king_teleport_corpse',
|
||||
'spell_jormungars_burning_bile');
|
||||
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
|
||||
(66688,'spell_icehowl_arctic_breath'),
|
||||
(66734,'spell_icehowl_trample'),
|
||||
(66683,'spell_icehowl_massive_crash'),
|
||||
(69016,'spell_lich_king_teleport_corpse'),
|
||||
(66870,'spell_jormungars_burning_bile'),
|
||||
(67621,'spell_jormungars_burning_bile'),
|
||||
(67622,'spell_jormungars_burning_bile'),
|
||||
(67623,'spell_jormungars_burning_bile');
|
||||
|
||||
UPDATE `creature_text` SET `comment`='Icehowl - Roar' WHERE `CreatureID`=34797 AND`GroupID`=0 AND `ID`=0;
|
||||
UPDATE `creature_text` SET `comment`='Icehowl - Fail' WHERE `CreatureID`=34797 and`GroupID`=1 AND `ID`=0;
|
||||
UPDATE `creature_text` SET `comment`='Icehowl - Enrage' WHERE `CreatureID`=34797 and`GroupID`=2 AND `ID`=0;
|
||||
|
||||
-- Open Portal Target
|
||||
UPDATE `creature_template` SET /*`modelid1`=20024, `modelid2`=0,*/ `ScriptName`='npc_open_portal_target_toc' WHERE `entry`=17965;
|
||||
DELETE FROM `creature_template_addon`WHERE `entry`=17965;
|
||||
INSERT INTO `creature_template_addon` (`entry`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `auras`) VALUES
|
||||
(17965,0,0,16908544,50331648,0,'');
|
||||
|
||||
-- UPDATE `creature_template` SET `modelid1`=29890, `modelid2`=0, `modelid3`=0 WHERE `entry`=35651; -- Purple Ground Rune Argent Raid
|
||||
|
||||
DELETE FROM `creature_summon_groups` WHERE `summonerId`=34996;
|
||||
INSERT INTO `creature_summon_groups` (`summonerId`,`summonerType`,`groupId`,`entry`,`position_x`,`position_y`,`position_z`,`orientation`,`summonType`,`summonTime`) VALUES
|
||||
(34996,0,1,34497,571.684,204.9028,399.263,4.590216,8,0), -- Fjola Lightbane
|
||||
(34996,0,1,34496,555.4514,205.8889,399.2634,4.886922,8,0), -- Eydis Darkbane
|
||||
(34996,0,1,34567,536.5504,164.5504,394.7856,0,8,0), -- Dark Essence
|
||||
(34996,0,1,34567,588.2083,115.6667,394.5307,0,8,0), -- Dark Essence
|
||||
(34996,0,1,34568,542.6441,117.3194,394.7847,0,8,0), -- Light Essence
|
||||
(34996,0,1,34568,589.743,163.0955,394.7754,0,8,0); -- Light Essence
|
||||
|
||||
-- Barrett related stuffs
|
||||
DELETE FROM `npc_text` WHERE `ID`=14852;
|
||||
INSERT INTO `npc_text` (`ID`, `Probability0`, `Probability1`, `Probability2`, `Probability3`, `Probability4`, `Probability5`, `Probability6`, `Probability7`, `BroadcastTextID0`, `BroadcastTextID1`, `BroadcastTextID2`, `BroadcastTextID3`, `BroadcastTextID4`, `BroadcastTextID5`, `BroadcastTextID6`, `BroadcastTextID7`, `VerifiedBuild`) VALUES
|
||||
(14852, 1, 0, 0, 0, 0, 0, 0, 0, 36084, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
|
||||
UPDATE `creature_template` SET `gossip_menu_id`=10692 WHERE `entry`=35771;
|
||||
UPDATE `creature_template` SET `gossip_menu_id`=10704 WHERE `entry`=35909;
|
||||
UPDATE `creature_template` SET `npcflag`=1, `ScriptName`='npc_barrett_toc' WHERE `entry` IN (34816,35035,35766,35770,35771,35909);
|
||||
|
||||
DELETE FROM `gossip_menu` WHERE `MenuID` IN (10692,10693,10704,10705,10706,10610,10609,10599,10678,10687,10679,10688,10600);
|
||||
INSERT INTO `gossip_menu` (`MenuID`,`TextID`,`VerifiedBuild`) VALUES
|
||||
(10599,14664,0),
|
||||
(10599,14667,0),
|
||||
(10600,14665,0),
|
||||
(10600,14668,0),
|
||||
(10609,14678,0),
|
||||
(10609,14679,0),
|
||||
(10610,14680,0),
|
||||
(10610,14682,0),
|
||||
(10678,14813,0),
|
||||
(10678,14815,0),
|
||||
(10679,14819,0),
|
||||
(10679,14820,0),
|
||||
(10687,14814,0),
|
||||
(10687,14816,0),
|
||||
(10688,14821,0),
|
||||
(10688,14822,0),
|
||||
(10692,14828,0),
|
||||
(10693,14829,0),
|
||||
(10704,14667,0),
|
||||
(10704,14850,0),
|
||||
(10705,14852,0),
|
||||
(10706,14853,0);
|
||||
|
||||
DELETE FROM `gossip_menu_option` WHERE `MenuID` IN (10692,10693,10704,10705,10706,10610,10609,10599,10678,10687,10679,10688,10600);
|
||||
INSERT INTO `gossip_menu_option` (`MenuID`,`OptionIndex`,`OptionIcon`,`OptionText`,`OptionBroadcastTextID`,`OptionType`,`OptionNpcFlag`) VALUES
|
||||
(10599,0,0,'Yes. We are prepared for the challenges ahead of us.',35172,1,1),
|
||||
(10599,1,0,'We want another shot at those beasts!',35215,1,1),
|
||||
(10600,0,0,'Bring forth the first challenge!',35174,1,1),
|
||||
(10600,1,0,'We\'re ready. This time things will be different.',35216,1,1),
|
||||
(10609,0,0,'What new challenge awaits us?',35251,1,1),
|
||||
(10609,1,0,'We\'re ready to fight the sorceror again.',35254,1,1),
|
||||
(10610,0,0,'I am ready for the next challenge.',35538,1,1),
|
||||
(10610,1,0,'Now.',35258,1,1),
|
||||
(10678,0,0,'Of course!',35987,1,1),
|
||||
(10678,1,0,'You\'ll be even more amazed after we take them out!',35991,1,1),
|
||||
(10679,0,0,'That tough, huh?',36024,1,1),
|
||||
(10679,1,0,'We\'ll just have to improve our own teamwork to match the two of them.',36025,1,1),
|
||||
(10687,0,0,'Give the signal! We\'re ready to go!',35989,1,1),
|
||||
(10687,1,0,'We\'re ready for anything!',35993,1,1),
|
||||
(10688,0,0,'Val\'kyr? We\'re ready for them.',36027,1,1),
|
||||
(10688,1,0,'Just bring them out again, then watch.',36029,1,1),
|
||||
(10692,0,0,'Your words of praise are appreciated, Coliseum Master.',36047,1,1),
|
||||
(10693,0,0,'That is strange...',36049,1,1),
|
||||
(10704,0,0,'I have completed the Trial of the Crusader.',36082,1,1),
|
||||
(10704,1,0,'I have not completed the Trial of the Crusader.',36083,1,1),
|
||||
(10704,2,0,'We want another shot at those beasts!',35215,1,1),
|
||||
(10706,0,0,'Yes. We are prepared for the challenges ahead of us.',35172,1,1);
|
||||
|
||||
DELETE FROM `gossip_menu_option_action` WHERE `MenuId` IN (10599,10609,10678,10679,10692,10704,10706);
|
||||
INSERT INTO `gossip_menu_option_action` (`MenuId`, `OptionIndex`, `ActionMenuId`, `ActionPoiId`) VALUES
|
||||
(10599, 0, 10600, 0),
|
||||
(10599, 1, 10600, 0),
|
||||
(10609, 0, 10610, 0),
|
||||
(10609, 1, 10610, 0),
|
||||
(10678, 0, 10687, 0),
|
||||
(10678, 1, 10687, 0),
|
||||
(10679, 0, 10688, 0),
|
||||
(10679, 1, 10688, 0),
|
||||
(10692, 0, 10693, 0),
|
||||
(10704, 0, 10706, 0),
|
||||
(10704, 1, 10705, 0),
|
||||
(10704, 2, 10600, 0),
|
||||
(10706, 0, 10600, 0);
|
||||
|
||||
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`IN(14,15) AND `SourceGroup` IN(10704,10600,10599,10609,10610,10678,10687,10679,10688);
|
||||
INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition`,`ErrorType`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
|
||||
(15,10704,0,0,0,17,0,3916,0,0,0,0,0,'','Show gossip option if player achieved Call of the Crusade (25 player)'),
|
||||
(15,10704,0,0,0,19,0,8,0,0,0,0,0,'','Show gossip option if player is in 25 version'),
|
||||
(15,10704,0,0,0,13,0,0,2,2,1,0,0,'','Show gossip option if player not failed to defeat Northrend Beasts'),
|
||||
(15,10704,0,0,1,17,0,3917,0,0,0,0,0,'','Show gossip option if player achieved Call of the Crusade (10 player)'),
|
||||
(15,10704,0,0,1,19,0,4,0,0,0,0,0,'','Show gossip option if player is in 10 version'),
|
||||
(15,10704,0,0,1,13,0,0,2,2,1,0,0,'','Show gossip option if player not failed to defeat Northrend Beasts'),
|
||||
(15,10704,1,0,0,17,0,3916,0,0,1,0,0,'','Show gossip option if player not achieved Call of the Crusade (25 player)'),
|
||||
(15,10704,1,0,0,19,0,8,0,0,0,0,0,'','Show gossip option if player is in 25 version'),
|
||||
(15,10704,1,0,0,13,0,0,2,2,1,0,0,'','Show gossip option if player not failed to defeat Northrend Beasts'),
|
||||
(15,10704,1,0,1,17,0,3917,0,0,1,0,0,'','Show gossip option if player not achieved Call of the Crusade (10 player)'),
|
||||
(15,10704,1,0,1,19,0,4,0,0,0,0,0,'','Show gossip option if player is in 10 version'),
|
||||
(15,10704,1,0,1,13,0,0,2,2,1,0,0,'','Show gossip option if player not failed to defeat Northrend Beasts'),
|
||||
(15,10704,2,0,0,13,0,0,2,2,0,0,0,'','Show gossip option if player failed to defeat Northrend Beasts'),
|
||||
(14,10704,14667,0,0,13,0,0,2,2,0,0,0,'','Show gossip text if player failed to defeat Northrend Beasts'),
|
||||
(14,10704,14850,0,0,13,0,0,2,2,1,0,0,'','Show gossip text if player not failed to defeat Northrend Beasts'),
|
||||
(14,10600,14668,0,0,13,0,0,2,2,0,0,0,'','Show gossip text if player failed to defeat Northrend Beasts'),
|
||||
(14,10600,14665,0,0,13,0,0,2,2,1,0,0,'','Show gossip text if player not failed to defeat Northrend Beasts'),
|
||||
(15,10600,0,0,0,13,0,0,2,2,1,0,0,'','Show gossip option if player not failed to defeat Northrend Beasts'),
|
||||
(15,10600,1,0,0,13,0,0,2,2,0,0,0,'','Show gossip option if player failed to defeat Northrend Beasts'),
|
||||
(14,10599,14667,0,0,13,0,0,2,2,0,0,0,'','Show gossip text if player failed to defeat Northrend Beasts'),
|
||||
(14,10599,14664,0,0,13,0,0,2,2,1,0,0,'','Show gossip text if player not failed to defeat Northrend Beasts'),
|
||||
(15,10599,0,0,0,13,0,0,2,2,1,0,0,'','Show gossip option if player not failed to defeat Northrend Beasts'),
|
||||
(15,10599,1,0,0,13,0,0,2,2,0,0,0,'','Show gossip option if player failed to defeat Northrend Beasts'),
|
||||
(14,10609,14679,0,0,13,0,1,2,2,0,0,0,'','Show gossip text if player failed to defeat Jaraxxus'),
|
||||
(14,10609,14678,0,0,13,0,1,2,2,1,0,0,'','Show gossip text if player not failed to defeat Jaraxxus'),
|
||||
(15,10609,0,0,1,13,0,1,2,2,1,0,0,'','Show gossip option if player not failed to defeat Jaraxxus'),
|
||||
(15,10609,1,0,0,13,0,1,2,2,0,0,0,'','Show gossip option if player failed to defeat Jaraxxus'),
|
||||
(14,10610,14682,0,0,13,0,1,2,2,0,0,0,'','Show gossip text if player failed to defeat Jaraxxus'),
|
||||
(14,10610,14680,0,0,13,0,1,2,2,1,0,0,'','Show gossip text if player not failed to defeat Jaraxxus'),
|
||||
(15,10610,0,0,1,13,0,1,2,2,1,0,0,'','Show gossip option if player not failed to defeat Jaraxxus'),
|
||||
(15,10610,1,0,0,13,0,1,2,2,0,0,0,'','Show gossip option if player failed to defeat Jaraxxus'),
|
||||
(14,10678,14815,0,0,13,0,2,2,2,0,0,0,'','Show gossip text if player failed to defeat Faction Champions'),
|
||||
(14,10678,14813,0,0,13,0,2,2,2,1,0,0,'','Show gossip text if player not failed to defeat Faction Champions'),
|
||||
(15,10678,0,0,1,13,0,2,2,2,1,0,0,'','Show gossip option if player not failed to defeat Faction Champions'),
|
||||
(15,10678,1,0,0,13,0,2,2,2,0,0,0,'','Show gossip option if player failed to defeat Faction Champions'),
|
||||
(14,10687,14816,0,0,13,0,2,2,2,0,0,0,'','Show gossip text if player failed to defeat Faction Champions'),
|
||||
(14,10687,14814,0,0,13,0,2,2,2,1,0,0,'','Show gossip text if player not failed to defeat Faction Champions'),
|
||||
(15,10687,0,0,1,13,0,2,2,2,1,0,0,'','Show gossip option if player not failed to defeat Faction Champions'),
|
||||
(15,10687,1,0,0,13,0,2,2,2,0,0,0,'','Show gossip option if player failed to defeat Faction Champions'),
|
||||
(14,10679,14820,0,0,13,0,3,2,2,0,0,0,'','Show gossip text if player failed to defeat Valkyr'),
|
||||
(14,10679,14819,0,0,13,0,3,2,2,1,0,0,'','Show gossip text if player not failed to defeat Valkyr'),
|
||||
(15,10679,0,0,1,13,0,3,2,2,1,0,0,'','Show gossip option if player not failed to defeat Valkyr'),
|
||||
(15,10679,1,0,0,13,0,3,2,2,0,0,0,'','Show gossip option if player failed to defeat Valkyr'),
|
||||
(14,10688,14822,0,0,13,0,3,2,2,0,0,0,'','Show gossip text if player failed to defeat Valkyr'),
|
||||
(14,10688,14821,0,0,13,0,3,2,2,1,0,0,'','Show gossip text if player not failed to defeat Valkyr'),
|
||||
(15,10688,0,0,1,13,0,3,2,2,1,0,0,'','Show gossip option if player not failed to defeat Valkyrs'),
|
||||
(15,10688,1,0,0,13,0,3,2,2,0,0,0,'','Show gossip option if player failed to defeat Valkyr');
|
||||
|
||||
-- Gormok
|
||||
DELETE FROM `script_spline_chain_meta` WHERE `entry`=34796 AND `chainId`=1;
|
||||
INSERT INTO `script_spline_chain_meta` (`entry`,`chainId`,`splineId`,`expectedDuration`,`msUntilNext`) VALUES
|
||||
(34796, 1, 0, 4181, 0);
|
||||
|
||||
DELETE FROM `script_spline_chain_waypoints` WHERE `entry`=34796 AND `chainId`=1;
|
||||
INSERT INTO `script_spline_chain_waypoints` (`entry`,`chainId`,`splineId`,`wpId`,`x`,`y`,`z`) VALUES
|
||||
(34796, 1, 0, 0, 563.93580, 229.82990, 394.80610),
|
||||
(34796, 1, 0, 1, 563.84190, 224.04790, 394.89610),
|
||||
(34796, 1, 0, 2, 563.84190, 222.79790, 394.89610),
|
||||
(34796, 1, 0, 3, 563.84190, 218.54790, 394.89610),
|
||||
(34796, 1, 0, 4, 563.84190, 216.04790, 395.39610),
|
||||
(34796, 1, 0, 5, 563.84190, 204.04790, 395.39610),
|
||||
(34796, 1, 0, 6, 563.84190, 202.54790, 395.39610),
|
||||
(34796, 1, 0, 7, 563.84190, 186.79790, 394.64610),
|
||||
(34796, 1, 0, 8, 563.74800, 179.76600, 394.48620);
|
||||
|
||||
-- Dreadscale
|
||||
DELETE FROM `script_spline_chain_meta` WHERE `entry`=34799 AND `chainId`=1;
|
||||
INSERT INTO `script_spline_chain_meta` (`entry`,`chainId`,`splineId`,`expectedDuration`,`msUntilNext`) VALUES
|
||||
(34799, 1, 0, 10805, 0);
|
||||
|
||||
DELETE FROM `script_spline_chain_waypoints` WHERE `entry`=34799 AND `chainId`=1;
|
||||
INSERT INTO `script_spline_chain_waypoints` (`entry`,`chainId`,`splineId`,`wpId`,`x`,`y`,`z`) VALUES
|
||||
(34799, 1, 0, 0, 564.36460, 231.48260, 394.83890),
|
||||
(34799, 1, 0, 1, 564.32970, 232.48200, 394.83890),
|
||||
(34799, 1, 0, 2, 564.36460, 231.48260, 394.83890),
|
||||
(34799, 1, 0, 3, 564.12680, 236.13020, 394.70030),
|
||||
(34799, 1, 0, 4, 564.49300, 221.61810, 394.64320),
|
||||
(34799, 1, 0, 5, 563.88370, 194.52080, 395.24500),
|
||||
(34799, 1, 0, 6, 567.82640, 182.76910, 395.20800),
|
||||
(34799, 1, 0, 7, 576.53470, 168.95140, 394.70640),
|
||||
(34799, 1, 0, 8, 576.53470, 168.95140, 394.70640);
|
||||
|
||||
-- Icehowl
|
||||
DELETE FROM `script_spline_chain_meta` WHERE `entry`=34797 AND `chainId`=1;
|
||||
INSERT INTO `script_spline_chain_meta` (`entry`,`chainId`,`splineId`,`expectedDuration`,`msUntilNext`) VALUES
|
||||
(34797, 1, 0, 6729, 0);
|
||||
|
||||
DELETE FROM `script_spline_chain_waypoints` WHERE `entry`=34797 AND `chainId`=1;
|
||||
INSERT INTO `script_spline_chain_waypoints` (`entry`,`chainId`,`splineId`,`wpId`,`x`,`y`,`z`) VALUES
|
||||
(34797, 1, 0, 0, 563.71700, 230.39930, 394.81330),
|
||||
(34797, 1, 0, 1, 563.73450, 231.39920, 394.81330),
|
||||
(34797, 1, 0, 2, 563.71700, 230.39930, 394.81330),
|
||||
(34797, 1, 0, 3, 563.60240, 228.03130, 394.70000),
|
||||
(34797, 1, 0, 4, 563.71360, 192.86810, 394.63020),
|
||||
(34797, 1, 0, 5, 563.85770, 176.58850, 394.44170),
|
||||
(34797, 1, 0, 6, 563.85770, 176.58850, 394.44170);
|
||||
|
||||
-- Barrett Ramsay
|
||||
DELETE FROM `script_spline_chain_meta` WHERE `entry`=34816 AND `chainId`=1;
|
||||
INSERT INTO `script_spline_chain_meta` (`entry`,`chainId`,`splineId`,`expectedDuration`,`msUntilNext`) VALUES
|
||||
(34816, 1, 0, 1544, 0);
|
||||
|
||||
DELETE FROM `script_spline_chain_waypoints` WHERE `entry`=34816 AND `chainId`=1;
|
||||
INSERT INTO `script_spline_chain_waypoints` (`entry`,`chainId`,`splineId`,`wpId`,`x`,`y`,`z`) VALUES
|
||||
(34816, 1, 0, 0, 559.14060, 90.272570, 395.27180),
|
||||
(34816, 1, 0, 1, 561.59470, 84.008530, 395.22810),
|
||||
(34816, 1, 0, 2, 563.54880, 78.744500, 395.18450);
|
||||
|
||||
DELETE FROM `script_spline_chain_meta` WHERE `entry`=35909 AND `chainId`=1;
|
||||
INSERT INTO `script_spline_chain_meta` (`entry`,`chainId`,`splineId`,`expectedDuration`,`msUntilNext`) VALUES
|
||||
(35909, 1, 0, 1544, 0);
|
||||
|
||||
DELETE FROM `script_spline_chain_waypoints` WHERE `entry`=35909 AND `chainId`=1;
|
||||
INSERT INTO `script_spline_chain_waypoints` (`entry`,`chainId`,`splineId`,`wpId`,`x`,`y`,`z`) VALUES
|
||||
(35909, 1, 0, 0, 559.14060, 90.272570, 395.27180),
|
||||
(35909, 1, 0, 1, 561.59470, 84.008530, 395.22810),
|
||||
(35909, 1, 0, 2, 563.54880, 78.744500, 395.18450);
|
||||
|
||||
DELETE FROM `script_spline_chain_meta` WHERE `entry`=35035 AND `chainId`=1;
|
||||
INSERT INTO `script_spline_chain_meta` (`entry`,`chainId`,`splineId`,`expectedDuration`,`msUntilNext`) VALUES
|
||||
(35035, 1, 0, 1544, 0);
|
||||
|
||||
DELETE FROM `script_spline_chain_waypoints` WHERE `entry`=35035 AND `chainId`=1;
|
||||
INSERT INTO `script_spline_chain_waypoints` (`entry`,`chainId`,`splineId`,`wpId`,`x`,`y`,`z`) VALUES
|
||||
(35035, 1, 0, 0, 559.14060, 90.272570, 395.27180),
|
||||
(35035, 1, 0, 1, 561.59470, 84.008530, 395.22810),
|
||||
(35035, 1, 0, 2, 563.54880, 78.744500, 395.18450);
|
||||
|
||||
DELETE FROM `script_spline_chain_meta` WHERE `entry`=35766 AND `chainId`=1;
|
||||
INSERT INTO `script_spline_chain_meta` (`entry`,`chainId`,`splineId`,`expectedDuration`,`msUntilNext`) VALUES
|
||||
(35766, 1, 0, 1544, 0);
|
||||
|
||||
DELETE FROM `script_spline_chain_waypoints` WHERE `entry`=35766 AND `chainId`=1;
|
||||
INSERT INTO `script_spline_chain_waypoints` (`entry`,`chainId`,`splineId`,`wpId`,`x`,`y`,`z`) VALUES
|
||||
(35766, 1, 0, 0, 559.14060, 90.272570, 395.27180),
|
||||
(35766, 1, 0, 1, 561.59470, 84.008530, 395.22810),
|
||||
(35766, 1, 0, 2, 563.54880, 78.744500, 395.18450);
|
||||
|
||||
DELETE FROM `script_spline_chain_meta` WHERE `entry`=35770 AND `chainId`=1;
|
||||
INSERT INTO `script_spline_chain_meta` (`entry`,`chainId`,`splineId`,`expectedDuration`,`msUntilNext`) VALUES
|
||||
(35770, 1, 0, 1544, 0);
|
||||
|
||||
DELETE FROM `script_spline_chain_waypoints` WHERE `entry`=35770 AND `chainId`=1;
|
||||
INSERT INTO `script_spline_chain_waypoints` (`entry`,`chainId`,`splineId`,`wpId`,`x`,`y`,`z`) VALUES
|
||||
(35770, 1, 0, 0, 559.14060, 90.272570, 395.27180),
|
||||
(35770, 1, 0, 1, 561.59470, 84.008530, 395.22810),
|
||||
(35770, 1, 0, 2, 563.54880, 78.744500, 395.18450);
|
||||
|
||||
DELETE FROM `script_spline_chain_meta` WHERE `entry`=35771 AND `chainId`=1;
|
||||
INSERT INTO `script_spline_chain_meta` (`entry`,`chainId`,`splineId`,`expectedDuration`,`msUntilNext`) VALUES
|
||||
(35771, 1, 0, 1544, 0);
|
||||
|
||||
DELETE FROM `script_spline_chain_waypoints` WHERE `entry`=35771 AND `chainId`=1;
|
||||
INSERT INTO `script_spline_chain_waypoints` (`entry`,`chainId`,`splineId`,`wpId`,`x`,`y`,`z`) VALUES
|
||||
(35771, 1, 0, 0, 559.14060, 90.272570, 395.27180),
|
||||
(35771, 1, 0, 1, 561.59470, 84.008530, 395.22810),
|
||||
(35771, 1, 0, 2, 563.54880, 78.744500, 395.18450);
|
||||
|
||||
-- Wilfred
|
||||
DELETE FROM `script_spline_chain_meta` WHERE `entry`=35458 AND `chainId`=1;
|
||||
INSERT INTO `script_spline_chain_meta` (`entry`,`chainId`,`splineId`,`expectedDuration`,`msUntilNext`) VALUES
|
||||
(35458, 1, 0, 10626, 9969),
|
||||
(35458, 1, 1, 4280, 3203),
|
||||
(35458, 1, 2, 5631, 5266),
|
||||
(35458, 1, 3, 5325, 0);
|
||||
|
||||
DELETE FROM `script_spline_chain_waypoints` WHERE `entry`=35458 AND `chainId`=1;
|
||||
INSERT INTO `script_spline_chain_waypoints` (`entry`,`chainId`,`splineId`,`wpId`,`x`,`y`,`z`) VALUES
|
||||
(35458, 1, 0, 0, 563.60070, 208.52780, 395.26960),
|
||||
(35458, 1, 0, 1, 563.58330, 209.52760, 395.26960),
|
||||
(35458, 1, 0, 2, 563.60070, 208.52780, 395.26960),
|
||||
(35458, 1, 0, 3, 563.62780, 203.76760, 395.21350),
|
||||
(35458, 1, 0, 4, 563.72610, 186.49170, 394.56950),
|
||||
(35458, 1, 0, 5, 563.75180, 181.98090, 394.51520),
|
||||
(35458, 1, 0, 6, 563.75180, 181.98090, 394.51520),
|
||||
(35458, 1, 1, 0, 563.74210, 183.67530, 394.53560),
|
||||
(35458, 1, 1, 1, 563.69400, 182.07720, 394.71280),
|
||||
(35458, 1, 1, 2, 563.64580, 172.97920, 394.39000),
|
||||
(35458, 1, 2, 0, 563.67610, 175.55330, 394.42580),
|
||||
(35458, 1, 2, 1, 563.68090, 173.01620, 394.65770),
|
||||
(35458, 1, 2, 2, 563.68090, 168.01620, 394.65770),
|
||||
(35458, 1, 2, 3, 563.68580, 161.47920, 394.38960),
|
||||
(35458, 1, 3, 0, 563.68260, 162.41400, 394.38780),
|
||||
(35458, 1, 3, 1, 563.66330, 161.52210, 394.43900),
|
||||
(35458, 1, 3, 2, 563.66330, 152.77210, 394.43900),
|
||||
(35458, 1, 3, 3, 563.64410, 149.13020, 393.99010);
|
||||
|
||||
-- Jaraxxus
|
||||
DELETE FROM `script_spline_chain_meta` WHERE `entry`=34780 AND `chainId`=1;
|
||||
INSERT INTO `script_spline_chain_meta` (`entry`,`chainId`,`splineId`,`expectedDuration`,`msUntilNext`) VALUES
|
||||
(34780, 1, 0, 1354, 0);
|
||||
|
||||
DELETE FROM `script_spline_chain_waypoints` WHERE `entry`=34780 AND `chainId`=1;
|
||||
INSERT INTO `script_spline_chain_waypoints` (`entry`,`chainId`,`splineId`,`wpId`,`x`,`y`,`z`) VALUES
|
||||
(34780, 1, 0, 0, 563.84390, 141.65610, 393.98610),
|
||||
(34780, 1, 0, 1, 563.82640, 140.65630, 393.98610),
|
||||
(34780, 1, 0, 2, 563.81340, 139.47290, 393.90840),
|
||||
(34780, 1, 0, 3, 563.77460, 135.96830, 393.90840),
|
||||
(34780, 1, 0, 4, 563.75520, 134.21640, 394.23520),
|
||||
(34780, 1, 0, 5, 563.72220, 131.23440, 393.99010),
|
||||
(34780, 1, 0, 6, 563.72220, 131.23440, 393.99010);
|
||||
|
||||
-- Fjola Lightbane
|
||||
DELETE FROM `script_spline_chain_meta` WHERE `entry`=34497 AND `chainId`=1;
|
||||
INSERT INTO `script_spline_chain_meta` (`entry`,`chainId`,`splineId`,`expectedDuration`,`msUntilNext`) VALUES
|
||||
(34497, 1, 0, 3499, 2438),
|
||||
(34497, 1, 1, 3586, 2437),
|
||||
(34497, 1, 2, 3214, 0);
|
||||
|
||||
DELETE FROM `script_spline_chain_waypoints` WHERE `entry`=34497 AND `chainId`=1;
|
||||
INSERT INTO `script_spline_chain_waypoints` (`entry`,`chainId`,`splineId`,`wpId`,`x`,`y`,`z`) VALUES
|
||||
(34497, 1, 0, 0, 571.68400, 204.90280, 399.26300),
|
||||
(34497, 1, 0, 1, 571.73790, 204.94450, 401.48890),
|
||||
(34497, 1, 0, 2, 571.73790, 203.69450, 401.48890),
|
||||
(34497, 1, 0, 3, 571.73790, 190.69450, 401.48890),
|
||||
(34497, 1, 0, 4, 571.79170, 184.48610, 401.21480),
|
||||
(34497, 1, 1, 0, 571.75040, 192.30170, 401.20640),
|
||||
(34497, 1, 1, 1, 572.04100, 190.26200, 401.45710),
|
||||
(34497, 1, 1, 2, 572.04100, 184.76200, 401.45710),
|
||||
(34497, 1, 1, 3, 579.29100, 181.01200, 401.45710),
|
||||
(34497, 1, 1, 4, 583.33160, 178.72220, 401.20780),
|
||||
(34497, 1, 2, 0, 576.00200, 182.38320, 401.21590),
|
||||
(34497, 1, 2, 1, 579.49060, 180.61520, 401.46680),
|
||||
(34497, 1, 2, 2, 583.24060, 178.61520, 401.46680),
|
||||
(34497, 1, 2, 3, 583.49060, 176.36520, 401.46680),
|
||||
(34497, 1, 2, 4, 584.47920, 167.84720, 400.71780);
|
||||
|
||||
-- Eydis Darkbane
|
||||
DELETE FROM `script_spline_chain_meta` WHERE `entry`=34496 AND `chainId`=1;
|
||||
INSERT INTO `script_spline_chain_meta` (`entry`,`chainId`,`splineId`,`expectedDuration`,`msUntilNext`) VALUES
|
||||
(34496, 1, 0, 4306, 3594),
|
||||
(34496, 1, 1, 3304, 2437),
|
||||
(34496, 1, 2, 2047, 0);
|
||||
|
||||
DELETE FROM `script_spline_chain_waypoints` WHERE `entry`=34496 AND `chainId`=1;
|
||||
INSERT INTO `script_spline_chain_waypoints` (`entry`,`chainId`,`splineId`,`wpId`,`x`,`y`,`z`) VALUES
|
||||
(34496, 1, 0, 0, 555.45140, 205.88890, 399.26340),
|
||||
(34496, 1, 0, 1, 555.51310, 205.85760, 401.48250),
|
||||
(34496, 1, 0, 2, 555.51310, 203.60760, 401.48250),
|
||||
(34496, 1, 0, 3, 555.26310, 198.60760, 401.48250),
|
||||
(34496, 1, 0, 4, 555.07460, 179.82640, 401.20160),
|
||||
(34496, 1, 1, 0, 555.14360, 184.59820, 401.20050),
|
||||
(34496, 1, 1, 1, 554.95030, 180.11680, 401.48760),
|
||||
(34496, 1, 1, 2, 547.70030, 178.11680, 401.23760),
|
||||
(34496, 1, 1, 3, 542.45030, 176.36680, 401.48760),
|
||||
(34496, 1, 1, 4, 540.25700, 175.63540, 400.77480),
|
||||
(34496, 1, 2, 0, 546.12530, 177.29520, 401.19950),
|
||||
(34496, 1, 2, 1, 542.29610, 176.19790, 401.47940),
|
||||
(34496, 1, 2, 2, 540.54610, 175.69790, 400.97940),
|
||||
(34496, 1, 2, 3, 540.46700, 170.60070, 400.75930);
|
||||
|
||||
-- Lich King
|
||||
DELETE FROM `script_spline_chain_meta` WHERE `entry`=35877 AND `chainId`=1;
|
||||
INSERT INTO `script_spline_chain_meta` (`entry`,`chainId`,`splineId`,`expectedDuration`,`msUntilNext`) VALUES
|
||||
(35877, 1, 0, 4474, 3594),
|
||||
(35877, 1, 1, 2894, 0);
|
||||
|
||||
DELETE FROM `script_spline_chain_waypoints` WHERE `entry`=35877 AND `chainId`=1;
|
||||
INSERT INTO `script_spline_chain_waypoints` (`entry`,`chainId`,`splineId`,`wpId`,`x`,`y`,`z`) VALUES
|
||||
(35877, 1, 0, 0, 563.57120, 175.83510, 394.49540),
|
||||
(35877, 1, 0, 1, 563.57120, 174.83510, 394.49540),
|
||||
(35877, 1, 0, 2, 563.56950, 173.12000, 394.39130),
|
||||
(35877, 1, 0, 3, 563.56410, 167.81720, 394.29680),
|
||||
(35877, 1, 0, 4, 563.54860, 152.47400, 394.39250),
|
||||
(35877, 1, 0, 5, 563.54860, 152.47400, 394.39250),
|
||||
(35877, 1, 1, 0, 563.55220, 156.01330, 394.37050),
|
||||
(35877, 1, 1, 1, 563.54960, 152.56310, 394.63950),
|
||||
(35877, 1, 1, 2, 563.54960, 147.56310, 394.13950),
|
||||
(35877, 1, 1, 3, 563.54960, 145.31310, 394.13950),
|
||||
(35877, 1, 1, 4, 563.54960, 144.31310, 394.38950),
|
||||
(35877, 1, 1, 5, 563.54690, 141.61290, 393.90840);
|
||||
@@ -28,11 +28,6 @@
|
||||
#include "TemporarySummon.h"
|
||||
#include "trial_of_the_crusader.h"
|
||||
|
||||
enum Yells
|
||||
{
|
||||
SAY_KILL_PLAYER = 6
|
||||
};
|
||||
|
||||
enum AIs
|
||||
{
|
||||
AI_MELEE = 0,
|
||||
@@ -209,7 +204,7 @@ enum Events
|
||||
EVENT_REGROWTH = 3,
|
||||
EVENT_REJUVENATION = 4,
|
||||
EVENT_TRANQUILITY = 5,
|
||||
EVENT_HEAL_BARKSKIN = 6,
|
||||
EVENT_HEAL_BARKSKIN = 6,
|
||||
EVENT_THORNS = 7,
|
||||
EVENT_NATURE_GRASP = 8,
|
||||
|
||||
@@ -551,9 +546,7 @@ class boss_toc_champion_controller : public CreatureScript
|
||||
case DONE:
|
||||
{
|
||||
_championsKilled++;
|
||||
if (_championsKilled == 1)
|
||||
instance->SetBossState(DATA_FACTION_CRUSADERS, SPECIAL);
|
||||
else if (_championsKilled >= summons.size())
|
||||
if (_championsKilled >= summons.size())
|
||||
{
|
||||
instance->SetBossState(DATA_FACTION_CRUSADERS, DONE);
|
||||
summons.DespawnAll();
|
||||
@@ -584,7 +577,7 @@ class boss_toc_champion_controller : public CreatureScript
|
||||
|
||||
struct boss_faction_championsAI : public BossAI
|
||||
{
|
||||
boss_faction_championsAI(Creature* creature, uint32 aitype) : BossAI(creature, DATA_FACTION_CHAMPIONS)
|
||||
boss_faction_championsAI(Creature* creature, uint32 aitype) : BossAI(creature, DATA_FACTION_CHAMPIONS), _teamInstance(0)
|
||||
{
|
||||
_aiType = aitype;
|
||||
SetBoundary(instance->GetBossBoundary(DATA_FACTION_CRUSADERS));
|
||||
@@ -592,6 +585,7 @@ struct boss_faction_championsAI : public BossAI
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
_teamInstance = instance->GetData(DATA_TEAM);
|
||||
_events.ScheduleEvent(EVENT_THREAT, 5*IN_MILLISECONDS);
|
||||
if (IsHeroic() && (_aiType != AI_PET))
|
||||
_events.ScheduleEvent(EVENT_REMOVE_CC, 5*IN_MILLISECONDS);
|
||||
@@ -656,22 +650,13 @@ struct boss_faction_championsAI : public BossAI
|
||||
{
|
||||
if (who->GetTypeId() == TYPEID_PLAYER)
|
||||
{
|
||||
Map::PlayerList const& players = me->GetMap()->GetPlayers();
|
||||
uint32 TeamInInstance = 0;
|
||||
|
||||
if (!players.isEmpty())
|
||||
if (Player* player = players.begin()->GetSource())
|
||||
TeamInInstance = player->GetTeam();
|
||||
|
||||
if (TeamInInstance == ALLIANCE)
|
||||
if (_teamInstance == ALLIANCE)
|
||||
{
|
||||
if (Creature* varian = instance->GetCreature(DATA_VARIAN))
|
||||
varian->AI()->Talk(SAY_KILL_PLAYER);
|
||||
varian->AI()->DoAction(ACTION_SAY_KILLED_PLAYER);
|
||||
}
|
||||
else
|
||||
if (Creature* garrosh = instance->GetCreature(DATA_GARROSH))
|
||||
garrosh->AI()->Talk(SAY_KILL_PLAYER);
|
||||
|
||||
else if (Creature* garrosh = instance->GetCreature(DATA_GARROSH))
|
||||
garrosh->AI()->DoAction(ACTION_SAY_KILLED_PLAYER);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -757,6 +742,7 @@ struct boss_faction_championsAI : public BossAI
|
||||
|
||||
private:
|
||||
uint32 _aiType;
|
||||
uint32 _teamInstance;
|
||||
// make sure that every bosses separate events dont mix with these _events
|
||||
EventMap _events;
|
||||
};
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
|
||||
#include "ScriptMgr.h"
|
||||
#include "InstanceScript.h"
|
||||
#include "MotionMaster.h"
|
||||
#include "Player.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "SpellInfo.h"
|
||||
#include "SpellScript.h"
|
||||
@@ -49,19 +51,21 @@ enum Summons
|
||||
|
||||
enum BossSpells
|
||||
{
|
||||
SPELL_LEGION_FLAME = 66197, // player should run away from raid because he triggers Legion Flame
|
||||
SPELL_LEGION_FLAME_EFFECT = 66201, // used by trigger npc
|
||||
SPELL_NETHER_POWER = 66228, // +20% of spell damage per stack, stackable up to 5/10 times, must be dispelled/stealed
|
||||
SPELL_FEL_LIGHTING = 66528, // jumps to nearby targets
|
||||
SPELL_FEL_FIREBALL = 66532, // does heavy damage to the tank, interruptable
|
||||
SPELL_INCINERATE_FLESH = 66237, // target must be healed or will trigger Burning Inferno
|
||||
SPELL_BURNING_INFERNO = 66242, // triggered by Incinerate Flesh
|
||||
SPELL_INFERNAL_ERUPTION = 66258, // summons Infernal Volcano
|
||||
SPELL_INFERNAL_ERUPTION_EFFECT = 66252, // summons Felflame Infernal (3 at Normal and inifinity at Heroic)
|
||||
SPELL_NETHER_PORTAL = 66269, // summons Nether Portal
|
||||
SPELL_NETHER_PORTAL_EFFECT = 66263, // summons Mistress of Pain (1 at Normal and infinity at Heroic)
|
||||
SPELL_LEGION_FLAME = 66197, // player should run away from raid because he triggers Legion Flame
|
||||
SPELL_LEGION_FLAME_EFFECT = 66201, // used by trigger npc
|
||||
SPELL_NETHER_POWER = 66228, // +20% of spell damage per stack, stackable up to 5/10 times, must be dispelled/stealed
|
||||
SPELL_FEL_LIGHTING = 66528, // jumps to nearby targets
|
||||
SPELL_FEL_FIREBALL = 66532, // does heavy damage to the tank, interruptable
|
||||
SPELL_INCINERATE_FLESH = 66237, // target must be healed or will trigger Burning Inferno
|
||||
SPELL_BURNING_INFERNO = 66242, // triggered by Incinerate Flesh
|
||||
SPELL_INFERNAL_ERUPTION = 66258, // summons Infernal Volcano
|
||||
SPELL_INFERNAL_ERUPTION_EFFECT = 66252, // summons Felflame Infernal (3 at Normal and inifinity at Heroic)
|
||||
SPELL_NETHER_PORTAL = 66269, // summons Nether Portal
|
||||
SPELL_NETHER_PORTAL_EFFECT = 66263, // summons Mistress of Pain (1 at Normal and infinity at Heroic)
|
||||
SPELL_LORD_JARAXXUS_HITTIN_YA = 66327,
|
||||
SPELL_FEL_LIGHTNING = 67888,
|
||||
|
||||
SPELL_BERSERK = 64238, // unused
|
||||
SPELL_BERSERK = 64238, // unused
|
||||
|
||||
// Mistress of Pain spells
|
||||
SPELL_SHIVAN_SLASH = 67098,
|
||||
@@ -78,18 +82,31 @@ enum BossSpells
|
||||
enum Events
|
||||
{
|
||||
// Lord Jaraxxus
|
||||
EVENT_FEL_FIREBALL = 1,
|
||||
EVENT_FEL_LIGHTNING = 2,
|
||||
EVENT_INCINERATE_FLESH = 3,
|
||||
EVENT_NETHER_POWER = 4,
|
||||
EVENT_LEGION_FLAME = 5,
|
||||
EVENT_SUMMONO_NETHER_PORTAL = 6,
|
||||
EVENT_SUMMON_INFERNAL_ERUPTION = 7,
|
||||
EVENT_INTRO = 1,
|
||||
EVENT_FEL_FIREBALL,
|
||||
EVENT_FEL_LIGHTNING,
|
||||
EVENT_INCINERATE_FLESH,
|
||||
EVENT_NETHER_POWER,
|
||||
EVENT_LEGION_FLAME,
|
||||
EVENT_SUMMONO_NETHER_PORTAL,
|
||||
EVENT_SUMMON_INFERNAL_ERUPTION,
|
||||
EVENT_TAUNT_GNOME,
|
||||
EVENT_KILL_GNOME,
|
||||
EVENT_CHANGE_ORIENTATION,
|
||||
EVENT_START_COMBAT,
|
||||
|
||||
// Mistress of Pain
|
||||
EVENT_SHIVAN_SLASH = 8,
|
||||
EVENT_SPINNING_STRIKE = 9,
|
||||
EVENT_MISTRESS_KISS = 10
|
||||
EVENT_SHIVAN_SLASH,
|
||||
EVENT_SPINNING_STRIKE,
|
||||
EVENT_MISTRESS_KISS
|
||||
};
|
||||
|
||||
enum Misc
|
||||
{
|
||||
PHASE_INTRO = 1,
|
||||
PHASE_COMBAT = 2,
|
||||
SPLINE_INITIAL_MOVEMENT = 1,
|
||||
POINT_SUMMONED = 1
|
||||
};
|
||||
|
||||
class boss_jaraxxus : public CreatureScript
|
||||
@@ -104,22 +121,44 @@ class boss_jaraxxus : public CreatureScript
|
||||
void Reset() override
|
||||
{
|
||||
_Reset();
|
||||
events.ScheduleEvent(EVENT_FEL_FIREBALL, 5*IN_MILLISECONDS);
|
||||
events.ScheduleEvent(EVENT_FEL_LIGHTNING, urand(10*IN_MILLISECONDS, 15*IN_MILLISECONDS));
|
||||
events.ScheduleEvent(EVENT_INCINERATE_FLESH, urand(20*IN_MILLISECONDS, 25*IN_MILLISECONDS));
|
||||
events.ScheduleEvent(EVENT_NETHER_POWER, 40*IN_MILLISECONDS);
|
||||
events.ScheduleEvent(EVENT_LEGION_FLAME, 30*IN_MILLISECONDS);
|
||||
events.ScheduleEvent(EVENT_SUMMONO_NETHER_PORTAL, 20*IN_MILLISECONDS);
|
||||
events.ScheduleEvent(EVENT_SUMMON_INFERNAL_ERUPTION, 80*IN_MILLISECONDS);
|
||||
if (instance->GetBossState(DATA_JARAXXUS) == NOT_STARTED)
|
||||
DoAction(ACTION_JARAXXUS_INTRO);
|
||||
}
|
||||
|
||||
void JustReachedHome() override
|
||||
{
|
||||
_JustReachedHome();
|
||||
instance->SetBossState(DATA_JARAXXUS, FAIL);
|
||||
DoCast(me, SPELL_JARAXXUS_CHAINS);
|
||||
me->AddUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
DoCastSelf(SPELL_JARAXXUS_CHAINS);
|
||||
me->SetImmuneToPC(true);
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
}
|
||||
|
||||
void DoAction(int32 action) override
|
||||
{
|
||||
if (action == ACTION_JARAXXUS_INTRO)
|
||||
{
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
events.SetPhase(PHASE_INTRO);
|
||||
events.ScheduleEvent(EVENT_INTRO, 1s);
|
||||
}
|
||||
else if (action == ACTION_JARAXXUS_ENGAGE)
|
||||
{
|
||||
me->RemoveAurasDueToSpell(SPELL_JARAXXUS_CHAINS);
|
||||
me->SetImmuneToPC(false);
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
DoZoneInCombat();
|
||||
}
|
||||
}
|
||||
|
||||
void MovementInform(uint32 type, uint32 pointId) override
|
||||
{
|
||||
if (type == SPLINE_CHAIN_MOTION_TYPE && pointId == POINT_SUMMONED)
|
||||
if (Creature* wilfred = instance->GetCreature(DATA_FIZZLEBANG))
|
||||
{
|
||||
me->SetFacingToObject(wilfred);
|
||||
events.ScheduleEvent(EVENT_TAUNT_GNOME, 9s);
|
||||
}
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* who) override
|
||||
@@ -138,11 +177,18 @@ class boss_jaraxxus : public CreatureScript
|
||||
{
|
||||
_EnterCombat();
|
||||
Talk(SAY_AGGRO);
|
||||
events.ScheduleEvent(EVENT_FEL_FIREBALL, 5 * IN_MILLISECONDS);
|
||||
events.ScheduleEvent(EVENT_FEL_LIGHTNING, urand(10 * IN_MILLISECONDS, 15 * IN_MILLISECONDS));
|
||||
events.ScheduleEvent(EVENT_INCINERATE_FLESH, urand(20 * IN_MILLISECONDS, 25 * IN_MILLISECONDS));
|
||||
events.ScheduleEvent(EVENT_NETHER_POWER, 40 * IN_MILLISECONDS);
|
||||
events.ScheduleEvent(EVENT_LEGION_FLAME, 30 * IN_MILLISECONDS);
|
||||
events.ScheduleEvent(EVENT_SUMMONO_NETHER_PORTAL, 20 * IN_MILLISECONDS);
|
||||
events.ScheduleEvent(EVENT_SUMMON_INFERNAL_ERUPTION, 80 * IN_MILLISECONDS);
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
if (!UpdateVictim())
|
||||
if (!UpdateVictim() && !events.IsInPhase(PHASE_INTRO))
|
||||
return;
|
||||
|
||||
events.Update(diff);
|
||||
@@ -157,12 +203,12 @@ class boss_jaraxxus : public CreatureScript
|
||||
case EVENT_FEL_FIREBALL:
|
||||
DoCastVictim(SPELL_FEL_FIREBALL);
|
||||
events.ScheduleEvent(EVENT_FEL_FIREBALL, urand(10*IN_MILLISECONDS, 15*IN_MILLISECONDS));
|
||||
return;
|
||||
break;
|
||||
case EVENT_FEL_LIGHTNING:
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true, true, -SPELL_LORD_HITTIN))
|
||||
DoCast(target, SPELL_FEL_LIGHTING);
|
||||
events.ScheduleEvent(EVENT_FEL_LIGHTNING, urand(10*IN_MILLISECONDS, 15*IN_MILLISECONDS));
|
||||
return;
|
||||
break;
|
||||
case EVENT_INCINERATE_FLESH:
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 0.0f, true, true, -SPELL_LORD_HITTIN))
|
||||
{
|
||||
@@ -171,11 +217,11 @@ class boss_jaraxxus : public CreatureScript
|
||||
DoCast(target, SPELL_INCINERATE_FLESH);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_INCINERATE_FLESH, urand(20*IN_MILLISECONDS, 25*IN_MILLISECONDS));
|
||||
return;
|
||||
break;
|
||||
case EVENT_NETHER_POWER:
|
||||
me->CastCustomSpell(SPELL_NETHER_POWER, SPELLVALUE_AURA_STACK, RAID_MODE<uint32>(5, 10, 5, 10), me, true);
|
||||
events.ScheduleEvent(EVENT_NETHER_POWER, 40*IN_MILLISECONDS);
|
||||
return;
|
||||
break;
|
||||
case EVENT_LEGION_FLAME:
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 0.0f, true, true, -SPELL_LORD_HITTIN))
|
||||
{
|
||||
@@ -183,19 +229,42 @@ class boss_jaraxxus : public CreatureScript
|
||||
DoCast(target, SPELL_LEGION_FLAME);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_LEGION_FLAME, 30*IN_MILLISECONDS);
|
||||
return;
|
||||
break;
|
||||
case EVENT_SUMMONO_NETHER_PORTAL:
|
||||
Talk(EMOTE_NETHER_PORTAL);
|
||||
Talk(SAY_MISTRESS_OF_PAIN);
|
||||
DoCast(SPELL_NETHER_PORTAL);
|
||||
events.ScheduleEvent(EVENT_SUMMONO_NETHER_PORTAL, 2*MINUTE*IN_MILLISECONDS);
|
||||
return;
|
||||
break;
|
||||
case EVENT_SUMMON_INFERNAL_ERUPTION:
|
||||
Talk(EMOTE_INFERNAL_ERUPTION);
|
||||
Talk(SAY_INFERNAL_ERUPTION);
|
||||
DoCast(SPELL_INFERNAL_ERUPTION);
|
||||
events.ScheduleEvent(EVENT_SUMMON_INFERNAL_ERUPTION, 2*MINUTE*IN_MILLISECONDS);
|
||||
return;
|
||||
break;
|
||||
case EVENT_INTRO:
|
||||
DoCastSelf(SPELL_LORD_JARAXXUS_HITTIN_YA, true);
|
||||
me->GetMotionMaster()->MoveAlongSplineChain(POINT_SUMMONED, SPLINE_INITIAL_MOVEMENT, true);
|
||||
break;
|
||||
case EVENT_TAUNT_GNOME:
|
||||
Talk(SAY_INTRO);
|
||||
events.ScheduleEvent(EVENT_KILL_GNOME, 9s);
|
||||
break;
|
||||
case EVENT_KILL_GNOME:
|
||||
DoCastSelf(SPELL_FEL_LIGHTNING);
|
||||
events.ScheduleEvent(EVENT_CHANGE_ORIENTATION, 3s);
|
||||
break;
|
||||
case EVENT_CHANGE_ORIENTATION:
|
||||
me->SetFacingTo(4.729842f);
|
||||
events.ScheduleEvent(EVENT_START_COMBAT, 7s);
|
||||
break;
|
||||
case EVENT_START_COMBAT:
|
||||
me->SetImmuneToPC(false);
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
DoZoneInCombat();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (me->HasUnitState(UNIT_STATE_CASTING))
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -44,10 +44,14 @@ enum Texts
|
||||
SAY_DEATH = 8
|
||||
};
|
||||
|
||||
enum Equipment
|
||||
enum Misc
|
||||
{
|
||||
EQUIP_MAIN_1 = 9423,
|
||||
EQUIP_MAIN_2 = 37377
|
||||
EQUIP_MAIN_1 = 9423,
|
||||
EQUIP_MAIN_2 = 37377,
|
||||
POINT_INITIAL_MOVEMENT = 1,
|
||||
SPLINE_INITIAL_MOVEMENT = 1,
|
||||
PHASE_EVENT = 1,
|
||||
PHASE_COMBAT = 2
|
||||
};
|
||||
|
||||
enum Summons
|
||||
@@ -100,7 +104,8 @@ enum Events
|
||||
EVENT_TWIN_SPIKE = 1,
|
||||
EVENT_TOUCH = 2,
|
||||
EVENT_SPECIAL_ABILITY = 3,
|
||||
EVENT_BERSERK = 4
|
||||
EVENT_BERSERK = 4,
|
||||
EVENT_START_MOVE = 5
|
||||
};
|
||||
|
||||
enum Stages
|
||||
@@ -124,9 +129,7 @@ enum Actions
|
||||
class OrbsDespawner : public BasicEvent
|
||||
{
|
||||
public:
|
||||
explicit OrbsDespawner(Creature* creature) : _creature(creature)
|
||||
{
|
||||
}
|
||||
explicit OrbsDespawner(Creature* creature) : _creature(creature) { }
|
||||
|
||||
bool Execute(uint64 /*currTime*/, uint32 /*diff*/) override
|
||||
{
|
||||
@@ -177,7 +180,6 @@ struct boss_twin_baseAI : public BossAI
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
me->AddUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE));
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
me->ModifyAuraState(AuraState, true);
|
||||
/* Uncomment this once that they are floating above the ground
|
||||
@@ -185,30 +187,26 @@ struct boss_twin_baseAI : public BossAI
|
||||
me->SetFlying(true); */
|
||||
|
||||
summons.DespawnAll();
|
||||
events.SetPhase(PHASE_EVENT);
|
||||
events.ScheduleEvent(EVENT_START_MOVE, 4s);
|
||||
}
|
||||
|
||||
void JustReachedHome() override
|
||||
{
|
||||
instance->SetBossState(DATA_TWIN_VALKIRIES, FAIL);
|
||||
|
||||
HandleRemoveAuras();
|
||||
summons.DespawnAll();
|
||||
me->DespawnOrUnsummon();
|
||||
}
|
||||
|
||||
void MovementInform(uint32 uiType, uint32 uiId) override
|
||||
void MovementInform(uint32 type, uint32 pointId) override
|
||||
{
|
||||
if (uiType != POINT_MOTION_TYPE)
|
||||
return;
|
||||
|
||||
switch (uiId)
|
||||
if (type == SPLINE_CHAIN_MOTION_TYPE && pointId == POINT_INITIAL_MOVEMENT)
|
||||
{
|
||||
case 1:
|
||||
me->RemoveUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE));
|
||||
me->SetImmuneToPC(false);
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
me->SetImmuneToPC(false);
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
if (me->GetEntry() == NPC_FJOLA_LIGHTBANE) // avoid call twice
|
||||
instance->DoCloseDoorOrButton(instance->GetGuidData(DATA_MAIN_GATE));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -218,25 +216,13 @@ struct boss_twin_baseAI : public BossAI
|
||||
Talk(SAY_KILL_PLAYER);
|
||||
}
|
||||
|
||||
void SummonedCreatureDespawn(Creature* summoned) override
|
||||
void HandleRemoveAuras()
|
||||
{
|
||||
switch (summoned->GetEntry())
|
||||
{
|
||||
case NPC_LIGHT_ESSENCE:
|
||||
instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_LIGHT_ESSENCE);
|
||||
instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_POWERING_UP);
|
||||
break;
|
||||
case NPC_DARK_ESSENCE:
|
||||
instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_DARK_ESSENCE);
|
||||
instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_POWERING_UP);
|
||||
break;
|
||||
case NPC_BULLET_CONTROLLER:
|
||||
me->m_Events.AddEvent(new OrbsDespawner(me), me->m_Events.CalculateTime(100));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
summons.Despawn(summoned);
|
||||
instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_LIGHT_ESSENCE);
|
||||
instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_POWERING_UP);
|
||||
instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_DARK_ESSENCE);
|
||||
instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_POWERING_UP);
|
||||
me->m_Events.AddEventAtOffset(new OrbsDespawner(me), 100ms);
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
@@ -250,6 +236,7 @@ struct boss_twin_baseAI : public BossAI
|
||||
pSister->AddDynamicFlag(UNIT_DYNFLAG_LOOTABLE);
|
||||
events.Reset();
|
||||
summons.DespawnAll();
|
||||
HandleRemoveAuras();
|
||||
instance->SetBossState(DATA_TWIN_VALKIRIES, DONE);
|
||||
}
|
||||
else
|
||||
@@ -332,11 +319,35 @@ struct boss_twin_baseAI : public BossAI
|
||||
DoCast(me, SPELL_BERSERK);
|
||||
Talk(SAY_BERSERK);
|
||||
break;
|
||||
case EVENT_START_MOVE:
|
||||
events.SetPhase(PHASE_COMBAT);
|
||||
me->GetMotionMaster()->MoveAlongSplineChain(POINT_INITIAL_MOVEMENT, SPLINE_INITIAL_MOVEMENT, false);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
if (!UpdateVictim() && !events.IsInPhase(PHASE_EVENT))
|
||||
return;
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
if (me->HasUnitState(UNIT_STATE_CASTING))
|
||||
return;
|
||||
|
||||
while (uint32 eventId = events.ExecuteEvent())
|
||||
{
|
||||
ExecuteEvent(eventId);
|
||||
if (me->HasUnitState(UNIT_STATE_CASTING))
|
||||
return;
|
||||
}
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
protected:
|
||||
AuraStateType AuraState;
|
||||
uint32 Weapon;
|
||||
|
||||
@@ -22,10 +22,13 @@
|
||||
#include "Log.h"
|
||||
#include "Map.h"
|
||||
#include "Player.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "TemporarySummon.h"
|
||||
#include "trial_of_the_crusader.h"
|
||||
#include <sstream>
|
||||
|
||||
// ToDo: Remove magic numbers of events
|
||||
|
||||
BossBoundaryData const boundaries =
|
||||
{
|
||||
{ DATA_NORTHREND_BEASTS, new CircleBoundary(Position(563.26f, 139.6f), 75.0) },
|
||||
@@ -37,23 +40,25 @@ BossBoundaryData const boundaries =
|
||||
|
||||
ObjectData const creatureData[] =
|
||||
{
|
||||
{ NPC_GORMOK, DATA_GORMOK_THE_IMPALER },
|
||||
{ NPC_ACIDMAW, DATA_ACIDMAW },
|
||||
{ NPC_DREADSCALE, DATA_DREADSCALE },
|
||||
{ NPC_ICEHOWL, DATA_ICEHOWL },
|
||||
{ NPC_JARAXXUS, DATA_JARAXXUS },
|
||||
{ NPC_CHAMPIONS_CONTROLLER, DATA_FACTION_CRUSADERS },
|
||||
{ NPC_FJOLA_LIGHTBANE, DATA_FJOLA_LIGHTBANE },
|
||||
{ NPC_EYDIS_DARKBANE, DATA_EYDIS_DARKBANE },
|
||||
{ NPC_LICH_KING, DATA_LICH_KING },
|
||||
{ NPC_ANUBARAK, DATA_ANUBARAK },
|
||||
{ NPC_BARRET_RAMSEY, DATA_BARRET_RAMSEY },
|
||||
{ NPC_TIRION_FORDRING, DATA_FORDRING },
|
||||
{ NPC_TIRION_FORDRING_ANUBARAK, DATA_FORDRING_ANUBARAK },
|
||||
{ NPC_VARIAN, DATA_VARIAN },
|
||||
{ NPC_GARROSH, DATA_GARROSH },
|
||||
{ NPC_FIZZLEBANG, DATA_FIZZLEBANG },
|
||||
{ 0, 0 } // END
|
||||
{ NPC_GORMOK, DATA_GORMOK_THE_IMPALER },
|
||||
{ NPC_ACIDMAW, DATA_ACIDMAW },
|
||||
{ NPC_DREADSCALE, DATA_DREADSCALE },
|
||||
{ NPC_ICEHOWL, DATA_ICEHOWL },
|
||||
{ NPC_BEASTS_COMBAT_STALKER, DATA_BEASTS_COMBAT_STALKER },
|
||||
{ NPC_FURIOUS_CHARGE_STALKER, DATA_FURIOUS_CHARGE },
|
||||
{ NPC_JARAXXUS, DATA_JARAXXUS },
|
||||
{ NPC_CHAMPIONS_CONTROLLER, DATA_FACTION_CRUSADERS },
|
||||
{ NPC_FJOLA_LIGHTBANE, DATA_FJOLA_LIGHTBANE },
|
||||
{ NPC_EYDIS_DARKBANE, DATA_EYDIS_DARKBANE },
|
||||
{ NPC_LICH_KING, DATA_LICH_KING },
|
||||
{ NPC_ANUBARAK, DATA_ANUBARAK },
|
||||
{ NPC_TIRION_FORDRING, DATA_FORDRING },
|
||||
{ NPC_TIRION_FORDRING_ANUBARAK, DATA_FORDRING_ANUBARAK },
|
||||
{ NPC_VARIAN, DATA_VARIAN },
|
||||
{ NPC_GARROSH, DATA_GARROSH },
|
||||
{ NPC_FIZZLEBANG, DATA_FIZZLEBANG },
|
||||
{ NPC_LICH_KING_VOICE, DATA_LICH_KING_VOICE },
|
||||
{ 0, 0 } // END
|
||||
};
|
||||
|
||||
ObjectData const gameObjectData[] =
|
||||
@@ -77,6 +82,17 @@ ObjectData const gameObjectData[] =
|
||||
{ 0, 0 } // END
|
||||
};
|
||||
|
||||
DoorData const doorData[] =
|
||||
{
|
||||
{ GO_EAST_PORTCULLIS, DATA_NORTHREND_BEASTS, DOOR_TYPE_ROOM },
|
||||
{ GO_EAST_PORTCULLIS, DATA_JARAXXUS, DOOR_TYPE_ROOM },
|
||||
{ GO_EAST_PORTCULLIS, DATA_FACTION_CRUSADERS, DOOR_TYPE_ROOM },
|
||||
{ GO_EAST_PORTCULLIS, DATA_TWIN_VALKIRIES, DOOR_TYPE_ROOM },
|
||||
{ GO_EAST_PORTCULLIS, DATA_LICH_KING, DOOR_TYPE_ROOM },
|
||||
{ GO_WEB_DOOR, DATA_ANUBARAK, DOOR_TYPE_ROOM },
|
||||
{ 0, 0, DOOR_TYPE_ROOM } // END
|
||||
};
|
||||
|
||||
class instance_trial_of_the_crusader : public InstanceMapScript
|
||||
{
|
||||
public:
|
||||
@@ -90,9 +106,12 @@ class instance_trial_of_the_crusader : public InstanceMapScript
|
||||
SetBossNumber(EncounterCount);
|
||||
LoadBossBoundaries(boundaries);
|
||||
LoadObjectData(creatureData, gameObjectData);
|
||||
LoadDoorData(doorData);
|
||||
TrialCounter = 50;
|
||||
EventStage = 0;
|
||||
NorthrendBeasts = NOT_STARTED;
|
||||
NorthrendBeastsCount = 4;
|
||||
Team = TEAM_OTHER;
|
||||
EventTimer = 1000;
|
||||
NotOneButTwoJormungarsTimer = 0;
|
||||
ResilienceWillFixItTimer = 0;
|
||||
@@ -102,19 +121,6 @@ class instance_trial_of_the_crusader : public InstanceMapScript
|
||||
NeedSave = false;
|
||||
}
|
||||
|
||||
bool IsEncounterInProgress() const override
|
||||
{
|
||||
for (uint8 i = 0; i < EncounterCount; ++i)
|
||||
if (GetBossState(i) == IN_PROGRESS)
|
||||
return true;
|
||||
|
||||
// Special state is set at Faction Champions after first champ dead, encounter is still in combat
|
||||
if (GetBossState(DATA_FACTION_CRUSADERS) == SPECIAL)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void OnPlayerEnter(Player* player) override
|
||||
{
|
||||
if (instance->IsHeroic())
|
||||
@@ -125,36 +131,27 @@ class instance_trial_of_the_crusader : public InstanceMapScript
|
||||
else
|
||||
player->SendUpdateWorldState(UPDATE_STATE_UI_SHOW, 0);
|
||||
|
||||
// make sure Anub'arak isnt missing
|
||||
if (GetBossState(DATA_LICH_KING) == DONE && TrialCounter && GetBossState(DATA_ANUBARAK) != DONE)
|
||||
if (!GetCreature(DATA_ANUBARAK))
|
||||
player->SummonCreature(NPC_ANUBARAK, AnubarakLoc[0], TEMPSUMMON_CORPSE_TIMED_DESPAWN, DESPAWN_TIME);
|
||||
}
|
||||
if (Team == TEAM_OTHER)
|
||||
Team = player->GetTeam();
|
||||
|
||||
void OpenDoor(ObjectGuid guid)
|
||||
{
|
||||
if (!guid)
|
||||
return;
|
||||
|
||||
if (GameObject* go = instance->GetGameObject(guid))
|
||||
go->SetGoState(GO_STATE_ACTIVE_ALTERNATIVE);
|
||||
}
|
||||
|
||||
void CloseDoor(ObjectGuid guid)
|
||||
{
|
||||
if (!guid)
|
||||
return;
|
||||
|
||||
if (GameObject* go = instance->GetGameObject(guid))
|
||||
go->SetGoState(GO_STATE_READY);
|
||||
if (NorthrendBeasts == GORMOK_IN_PROGRESS)
|
||||
player->CreateVehicleKit(PLAYER_VEHICLE_ID, 0);
|
||||
}
|
||||
|
||||
void OnCreatureCreate(Creature* creature) override
|
||||
{
|
||||
InstanceScript::OnCreatureCreate(creature);
|
||||
if (creature->GetEntry() == NPC_BARRET_RAMSEY)
|
||||
if (!TrialCounter)
|
||||
creature->DespawnOrUnsummon();
|
||||
if (creature->GetEntry() == NPC_SNOBOLD_VASSAL)
|
||||
snoboldGUIDS.push_back(creature->GetGUID());
|
||||
}
|
||||
|
||||
// Summon prevention to heroic modes
|
||||
uint32 GetCreatureEntry(ObjectGuid::LowType /*guidLow*/, CreatureData const* data) override
|
||||
{
|
||||
if (!TrialCounter)
|
||||
return 0;
|
||||
|
||||
return data->id;
|
||||
}
|
||||
|
||||
void OnGameObjectCreate(GameObject* go) override
|
||||
@@ -182,23 +179,28 @@ class instance_trial_of_the_crusader : public InstanceMapScript
|
||||
case DATA_NORTHREND_BEASTS:
|
||||
break;
|
||||
case DATA_JARAXXUS:
|
||||
// Cleanup Icehowl
|
||||
if (Creature* icehowl = GetCreature(DATA_ICEHOWL))
|
||||
icehowl->DespawnOrUnsummon();
|
||||
if (state == DONE)
|
||||
if (state == FAIL)
|
||||
{
|
||||
if (Creature* fordring = GetCreature(DATA_FORDRING))
|
||||
fordring->AI()->DoAction(ACTION_JARAXXUS_WIPE);
|
||||
}
|
||||
else if (state == DONE)
|
||||
{
|
||||
if (Creature* fordring = GetCreature(DATA_FORDRING))
|
||||
fordring->AI()->DoAction(ACTION_JARAXXUS_DEFEATED);
|
||||
EventStage = 2000;
|
||||
}
|
||||
break;
|
||||
case DATA_FACTION_CRUSADERS:
|
||||
// Cleanup Jaraxxus
|
||||
if (Creature* jaraxxus = GetCreature(DATA_JARAXXUS))
|
||||
jaraxxus->DespawnOrUnsummon();
|
||||
if (Creature* fizzlebang = GetCreature(DATA_FIZZLEBANG))
|
||||
fizzlebang->DespawnOrUnsummon();
|
||||
switch (state)
|
||||
{
|
||||
case IN_PROGRESS:
|
||||
ResilienceWillFixItTimer = 0;
|
||||
break;
|
||||
case FAIL:
|
||||
if (Creature* fordring = GetCreature(DATA_FORDRING))
|
||||
fordring->AI()->DoAction(ACTION_FACTION_WIPE);
|
||||
break;
|
||||
case SPECIAL: //Means the first blood
|
||||
ResilienceWillFixItTimer = 60*IN_MILLISECONDS;
|
||||
state = IN_PROGRESS;
|
||||
@@ -210,6 +212,8 @@ class instance_trial_of_the_crusader : public InstanceMapScript
|
||||
DoRespawnGameObject(GetGuidData(DATA_CRUSADERS_CHEST), 7 * DAY);
|
||||
if (GameObject* cache = GetGameObject(DATA_CRUSADERS_CHEST))
|
||||
cache->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
|
||||
if (Creature* fordring = GetCreature(DATA_FORDRING))
|
||||
fordring->AI()->DoAction(ACTION_CHAMPIONS_DEFEATED);
|
||||
EventStage = 3100;
|
||||
break;
|
||||
default:
|
||||
@@ -223,12 +227,12 @@ class instance_trial_of_the_crusader : public InstanceMapScript
|
||||
switch (state)
|
||||
{
|
||||
case FAIL:
|
||||
if (GetBossState(DATA_TWIN_VALKIRIES) == NOT_STARTED)
|
||||
state = NOT_STARTED;
|
||||
if (Creature* fordring = GetCreature(DATA_FORDRING))
|
||||
fordring->AI()->DoAction(ACTION_VALKYR_WIPE);
|
||||
break;
|
||||
case SPECIAL:
|
||||
if (GetBossState(DATA_TWIN_VALKIRIES) == SPECIAL)
|
||||
state = DONE;
|
||||
case DONE:
|
||||
if (Creature* fordring = GetCreature(DATA_FORDRING))
|
||||
fordring->AI()->DoAction(ACTION_VALKYR_DEFEATED);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -292,17 +296,6 @@ class instance_trial_of_the_crusader : public InstanceMapScript
|
||||
break;
|
||||
}
|
||||
|
||||
if (IsEncounterInProgress())
|
||||
{
|
||||
CloseDoor(GetGuidData(DATA_EAST_PORTCULLIS));
|
||||
CloseDoor(GetGuidData(DATA_WEB_DOOR));
|
||||
}
|
||||
else
|
||||
{
|
||||
OpenDoor(GetGuidData(DATA_EAST_PORTCULLIS));
|
||||
OpenDoor(GetGuidData(DATA_WEB_DOOR));
|
||||
}
|
||||
|
||||
if (type < EncounterCount)
|
||||
{
|
||||
TC_LOG_DEBUG("scripts", "[ToCr] BossState(type %u) %u = state %u;", type, GetBossState(type), state);
|
||||
@@ -320,9 +313,6 @@ class instance_trial_of_the_crusader : public InstanceMapScript
|
||||
// if theres no more attemps allowed
|
||||
if (!TrialCounter)
|
||||
{
|
||||
if (Unit* announcer = GetCreature(DATA_BARRET_RAMSEY))
|
||||
announcer->ToCreature()->DespawnOrUnsummon();
|
||||
|
||||
if (Creature* anubarak = GetCreature(DATA_ANUBARAK))
|
||||
anubarak->DespawnOrUnsummon();
|
||||
}
|
||||
@@ -333,15 +323,41 @@ class instance_trial_of_the_crusader : public InstanceMapScript
|
||||
}
|
||||
|
||||
if (state == DONE || NeedSave)
|
||||
{
|
||||
if (Unit* announcer = GetCreature(DATA_BARRET_RAMSEY))
|
||||
announcer->AddNpcFlag(UNIT_NPC_FLAG_GOSSIP);
|
||||
Save();
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void HandleNorthrendBeastsDone()
|
||||
{
|
||||
--NorthrendBeastsCount;
|
||||
if (!NorthrendBeastsCount)
|
||||
{
|
||||
SetData(TYPE_NORTHREND_BEASTS, DONE);
|
||||
SetBossState(DATA_NORTHREND_BEASTS, DONE);
|
||||
SetData(DATA_DESPAWN_SNOBOLDS, 0);
|
||||
EventStage = 400;
|
||||
if (Creature* combatStalker = GetCreature(DATA_BEASTS_COMBAT_STALKER))
|
||||
combatStalker->DespawnOrUnsummon();
|
||||
HandlePlayerVehicle(false);
|
||||
if (Creature* fordring = GetCreature(DATA_FORDRING))
|
||||
fordring->AI()->DoAction(ACTION_NORTHREND_BEASTS_DEFEATED);
|
||||
}
|
||||
}
|
||||
|
||||
void HandlePlayerVehicle(bool apply)
|
||||
{
|
||||
Map::PlayerList const &players = instance->GetPlayers();
|
||||
for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
|
||||
if (Player* player = itr->GetSource())
|
||||
{
|
||||
if (apply)
|
||||
player->CreateVehicleKit(PLAYER_VEHICLE_ID, 0);
|
||||
else
|
||||
player->RemoveVehicleKit();
|
||||
}
|
||||
}
|
||||
|
||||
void SetData(uint32 type, uint32 data) override
|
||||
{
|
||||
switch (type)
|
||||
@@ -362,34 +378,49 @@ class instance_trial_of_the_crusader : public InstanceMapScript
|
||||
NorthrendBeasts = data;
|
||||
switch (data)
|
||||
{
|
||||
case GORMOK_IN_PROGRESS:
|
||||
SetBossState(DATA_NORTHREND_BEASTS, IN_PROGRESS);
|
||||
NorthrendBeastsCount = 4;
|
||||
HandlePlayerVehicle(true);
|
||||
break;
|
||||
case GORMOK_DONE:
|
||||
EventStage = 200;
|
||||
SetData(TYPE_NORTHREND_BEASTS, IN_PROGRESS);
|
||||
if (Creature* tirion = GetCreature(DATA_FORDRING))
|
||||
tirion->AI()->DoAction(ACTION_START_JORMUNGARS);
|
||||
HandleNorthrendBeastsDone();
|
||||
break;
|
||||
case SNAKES_IN_PROGRESS:
|
||||
NotOneButTwoJormungarsTimer = 0;
|
||||
break;
|
||||
case SNAKES_SPECIAL:
|
||||
NotOneButTwoJormungarsTimer = 10*IN_MILLISECONDS;
|
||||
HandleNorthrendBeastsDone();
|
||||
break;
|
||||
case SNAKES_DONE:
|
||||
if (NotOneButTwoJormungarsTimer > 0)
|
||||
DoUpdateCriteria(CRITERIA_TYPE_BE_SPELL_TARGET, SPELL_WORMS_KILLED_IN_10_SECONDS);
|
||||
EventStage = 300;
|
||||
SetData(TYPE_NORTHREND_BEASTS, IN_PROGRESS);
|
||||
if (Creature* tirion = GetCreature(DATA_FORDRING))
|
||||
tirion->AI()->DoAction(ACTION_START_ICEHOWL);
|
||||
HandleNorthrendBeastsDone();
|
||||
break;
|
||||
case ICEHOWL_DONE:
|
||||
EventStage = 400;
|
||||
SetData(TYPE_NORTHREND_BEASTS, DONE);
|
||||
SetBossState(DATA_NORTHREND_BEASTS, DONE);
|
||||
HandleNorthrendBeastsDone();
|
||||
break;
|
||||
case FAIL:
|
||||
HandlePlayerVehicle(false);
|
||||
SetBossState(DATA_NORTHREND_BEASTS, FAIL);
|
||||
if (Creature* tirion = GetCreature(DATA_FORDRING))
|
||||
tirion->AI()->DoAction(ACTION_NORTHREND_BEASTS_WIPE);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case DATA_DESPAWN_SNOBOLDS:
|
||||
for (ObjectGuid const guid : snoboldGUIDS)
|
||||
if (Creature* snobold = instance->GetCreature(guid))
|
||||
snobold->DespawnOrUnsummon();
|
||||
snoboldGUIDS.clear();
|
||||
break;
|
||||
//Achievements
|
||||
case DATA_SNOBOLD_COUNT:
|
||||
if (data == INCREASE)
|
||||
@@ -412,6 +443,8 @@ class instance_trial_of_the_crusader : public InstanceMapScript
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case DATA_TEAM:
|
||||
return Team;
|
||||
case TYPE_COUNTER:
|
||||
return TrialCounter;
|
||||
case TYPE_EVENT:
|
||||
@@ -524,7 +557,7 @@ class instance_trial_of_the_crusader : public InstanceMapScript
|
||||
NotOneButTwoJormungarsTimer -= diff;
|
||||
}
|
||||
|
||||
if (GetBossState(DATA_FACTION_CRUSADERS) == SPECIAL && ResilienceWillFixItTimer)
|
||||
if (GetBossState(DATA_FACTION_CRUSADERS) == IN_PROGRESS && ResilienceWillFixItTimer)
|
||||
{
|
||||
if (ResilienceWillFixItTimer <= diff)
|
||||
ResilienceWillFixItTimer = 0;
|
||||
@@ -624,15 +657,18 @@ class instance_trial_of_the_crusader : public InstanceMapScript
|
||||
uint32 EventStage;
|
||||
uint32 EventTimer;
|
||||
uint32 NorthrendBeasts;
|
||||
bool NeedSave;
|
||||
uint32 Team;
|
||||
bool NeedSave;
|
||||
std::string SaveDataBuffer;
|
||||
GuidVector snoboldGUIDS;
|
||||
|
||||
// Achievement stuff
|
||||
uint32 NotOneButTwoJormungarsTimer;
|
||||
uint32 ResilienceWillFixItTimer;
|
||||
uint8 SnoboldCount;
|
||||
uint8 MistressOfPainCount;
|
||||
bool TributeToImmortalityEligible;
|
||||
uint8 SnoboldCount;
|
||||
uint8 MistressOfPainCount;
|
||||
uint8 NorthrendBeastsCount;
|
||||
bool TributeToImmortalityEligible;
|
||||
};
|
||||
|
||||
InstanceScript* GetInstanceScript(InstanceMap* map) const override
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -37,13 +37,12 @@ enum TCRDataTypes
|
||||
DATA_ANUBARAK = 5,
|
||||
|
||||
// Additional Data
|
||||
DATA_GORMOK_THE_IMPALER = 5,
|
||||
DATA_ACIDMAW = 6,
|
||||
DATA_DREADSCALE = 7,
|
||||
DATA_ICEHOWL = 8,
|
||||
DATA_FJOLA_LIGHTBANE = 9,
|
||||
DATA_EYDIS_DARKBANE = 10,
|
||||
DATA_BARRET_RAMSEY = 11,
|
||||
DATA_GORMOK_THE_IMPALER = 6,
|
||||
DATA_ACIDMAW = 7,
|
||||
DATA_DREADSCALE = 8,
|
||||
DATA_ICEHOWL = 9,
|
||||
DATA_FJOLA_LIGHTBANE = 10,
|
||||
DATA_EYDIS_DARKBANE = 11,
|
||||
DATA_FORDRING = 12,
|
||||
DATA_FORDRING_ANUBARAK = 13,
|
||||
DATA_VARIAN = 14,
|
||||
@@ -57,9 +56,14 @@ enum TCRDataTypes
|
||||
DATA_EAST_PORTCULLIS = 21,
|
||||
DATA_WEB_DOOR = 22,
|
||||
DATA_TRIBUTE_CHEST = 23,
|
||||
DATA_BEASTS_COMBAT_STALKER = 24,
|
||||
DATA_FURIOUS_CHARGE = 25,
|
||||
DATA_DESPAWN_SNOBOLDS = 26,
|
||||
DATA_TEAM = 27,
|
||||
DATA_LICH_KING_VOICE = 28,
|
||||
|
||||
TYPE_COUNTER = 24,
|
||||
TYPE_EVENT = 25,
|
||||
TYPE_COUNTER = 29,
|
||||
TYPE_EVENT = 30,
|
||||
|
||||
TYPE_EVENT_TIMER = 101,
|
||||
TYPE_EVENT_NPC = 102,
|
||||
@@ -69,20 +73,54 @@ enum TCRDataTypes
|
||||
DATA_MISTRESS_OF_PAIN_COUNT = 302,
|
||||
|
||||
INCREASE = 501,
|
||||
DECREASE = 502,
|
||||
DECREASE = 502
|
||||
};
|
||||
|
||||
enum TCRSpellIds
|
||||
{
|
||||
SPELL_WILFRED_PORTAL = 68424,
|
||||
SPELL_OPEN_PORTAL = 67864,
|
||||
SPELL_JARAXXUS_CHAINS = 67924,
|
||||
SPELL_CORPSE_TELEPORT = 69016,
|
||||
SPELL_DESTROY_FLOOR_KNOCKUP = 68193,
|
||||
SPELL_ARTHAS_PORTAL = 51807,
|
||||
SPELL_LK_FROST_NOVA = 68198,
|
||||
SPELL_CORPSE_TELEPORT = 69016
|
||||
};
|
||||
|
||||
enum TCRMiscData
|
||||
enum TCRMisc
|
||||
{
|
||||
DESPAWN_TIME = 1200000
|
||||
DESPAWN_TIME = 1200000,
|
||||
PLAYER_VEHICLE_ID = 444
|
||||
};
|
||||
|
||||
enum TCRActions
|
||||
{
|
||||
ACTION_START_GORMOK = 1,
|
||||
ACTION_START_GORMOK_FAIL,
|
||||
ACTION_START_JORMUNGARS,
|
||||
ACTION_START_ICEHOWL,
|
||||
ACTION_NORTHREND_BEASTS_WIPE,
|
||||
ACTION_NORTHREND_BEASTS_DEFEATED,
|
||||
ACTION_START_JARAXXUS_EVENT,
|
||||
ACTION_KILL_JARAXXUS,
|
||||
ACTION_JARAXXUS_DEFEATED,
|
||||
ACTION_START_CHAMPIONS,
|
||||
ACTION_SUMMON_CHAMPIONS,
|
||||
ACTION_TIRION_ALLOW,
|
||||
ACTION_CHAMPIONS_DEFEATED,
|
||||
ACTION_SUMMON_JARAXXUS,
|
||||
ACTION_JARAXXUS_INTRO,
|
||||
ACTION_START_VALKYR,
|
||||
ACTION_START_LK_EVENT,
|
||||
ACTION_SAY_KILLED_PLAYER,
|
||||
ACTION_VALKYR_DEFEATED,
|
||||
ACTION_LK_EVENT_FINISHED,
|
||||
ACTION_JARAXXUS_ENGAGE,
|
||||
ACTION_START_CHAMPIONS_ENGAGE,
|
||||
ACTION_START_VALKYR_ENGAGE,
|
||||
ACTION_JARAXXUS_WIPE,
|
||||
ACTION_FACTION_WIPE,
|
||||
ACTION_VALKYR_WIPE
|
||||
};
|
||||
|
||||
extern Position const ToCCommonLoc[];
|
||||
@@ -119,7 +157,12 @@ enum AnnouncerMessages
|
||||
|
||||
enum TCRCreatureIds
|
||||
{
|
||||
NPC_BARRET_RAMSEY = 34816,
|
||||
NPC_BARRETT_BEASTS = 34816,
|
||||
NPC_BARRETT_BEASTS_HC = 35909,
|
||||
NPC_BARRETT_JARAXXUS = 35035,
|
||||
NPC_BARRETT_FACTION = 35766,
|
||||
NPC_BARRETT_VALKYR = 35770,
|
||||
NPC_BARRETT_LK = 35771,
|
||||
NPC_TIRION_FORDRING = 34996,
|
||||
NPC_TIRION_FORDRING_ANUBARAK = 36095,
|
||||
NPC_ARGENT_MAGE = 36097,
|
||||
@@ -131,17 +174,19 @@ enum TCRCreatureIds
|
||||
NPC_THRALL = 34994,
|
||||
NPC_PROUDMOORE = 34992,
|
||||
NPC_WILFRED_PORTAL = 17965,
|
||||
NPC_TRIGGER = 35651,
|
||||
NPC_PURPLE_GROUND = 35651,
|
||||
|
||||
NPC_ICEHOWL = 34797,
|
||||
NPC_GORMOK = 34796,
|
||||
NPC_DREADSCALE = 34799,
|
||||
NPC_ACIDMAW = 35144,
|
||||
NPC_BEASTS_COMBAT_STALKER = 36549,
|
||||
NPC_FURIOUS_CHARGE_STALKER = 35062,
|
||||
NPC_SNOBOLD_VASSAL = 34800,
|
||||
|
||||
NPC_JARAXXUS = 34780,
|
||||
|
||||
NPC_CHAMPIONS_CONTROLLER = 34781,
|
||||
|
||||
NPC_ALLIANCE_DEATH_KNIGHT = 34461,
|
||||
NPC_ALLIANCE_DRUID_BALANCE = 34460,
|
||||
NPC_ALLIANCE_DRUID_RESTORATION = 34469,
|
||||
@@ -178,6 +223,9 @@ enum TCRCreatureIds
|
||||
NPC_DARK_ESSENCE = 34567,
|
||||
NPC_LIGHT_ESSENCE = 34568,
|
||||
|
||||
NPC_LICH_KING_VOICE = 16980,
|
||||
NPC_ARTHAS_PORTAL = 22517,
|
||||
|
||||
NPC_ANUBARAK = 34564
|
||||
};
|
||||
|
||||
@@ -247,4 +295,6 @@ inline AI* GetTrialOfTheCrusaderAI(T* obj)
|
||||
return GetInstanceAI<AI>(obj, ToCrScriptName);
|
||||
}
|
||||
|
||||
#define RegisterTrialOfTheCrusaderCreatureAI(ai_name) RegisterCreatureAIWithFactory(ai_name, GetTrialOfTheCrusaderAI)
|
||||
|
||||
#endif
|
||||
|
||||
@@ -2701,7 +2701,8 @@ class spell_gen_spectator_cheer_trigger : public SpellScript
|
||||
|
||||
void HandleDummy(SpellEffIndex /*effIndex*/)
|
||||
{
|
||||
GetCaster()->HandleEmoteCommand(EmoteArray[urand(0, 2)]);
|
||||
if (roll_chance_i(40))
|
||||
GetCaster()->HandleEmoteCommand(EmoteArray[urand(0, 2)]);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
|
||||
Reference in New Issue
Block a user