Merge branch 'master' of https://github.com/TrinityCore/TrinityCore into 4.3.4
Conflicts: src/server/authserver/Server/AuthSession.cpp src/server/game/Entities/Player/Player.cpp src/server/game/Server/WorldSocket.cpp
This commit is contained in:
commit
42cac6796a
34 files changed
+3374
-761
No files matched your search
@@ -0,0 +1,100 @@
|
||||
--
|
||||
DELETE FROM `spell_script_names` WHERE `spell_id` IN (63274, 63414, 63667, 63382, 64402, 65034, 63681, 64542, 65192, 64570, 63027, 65346, 66351, 65224, 63009, 64620, 63820, 64425, 64426, 64621, 64398, 64619, 64623, 65354, 64618, 64436, 63340, 64383, 63339, 64562, 63041, 63801, 64463);
|
||||
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
|
||||
(63801, 'spell_mimiron_bomb_bot'),
|
||||
(65192, 'spell_mimiron_clear_fires'),
|
||||
(65224, 'spell_mimiron_clear_fires'),
|
||||
(64619, 'spell_mimiron_clear_fires'),
|
||||
(65354, 'spell_mimiron_clear_fires'),
|
||||
(64463, 'spell_mimiron_despawn_assault_bots'),
|
||||
(64618, 'spell_mimiron_fire_search'),
|
||||
(64570, 'spell_mimiron_flame_suppressant'),
|
||||
(64436, 'spell_mimiron_magnetic_core'),
|
||||
(63667, 'spell_mimiron_napalm_shell'),
|
||||
(63274, 'spell_mimiron_p3wx2_laser_barrage'),
|
||||
(64542, 'spell_mimiron_plasma_blast'),
|
||||
(63027, 'spell_mimiron_proximity_mines'),
|
||||
(66351, 'spell_mimiron_proximity_explosion'),
|
||||
(63009, 'spell_mimiron_proximity_explosion'),
|
||||
(65346, 'spell_mimiron_proximity_trigger'),
|
||||
(63382, 'spell_mimiron_rapid_burst'),
|
||||
(64402, 'spell_mimiron_rocket_strike'),
|
||||
(65034, 'spell_mimiron_rocket_strike'),
|
||||
(63041, 'spell_mimiron_rocket_strike_damage'),
|
||||
(63681, 'spell_mimiron_rocket_strike_target_select'),
|
||||
(64383, 'spell_mimiron_self_repair'),
|
||||
(63414, 'spell_mimiron_spinning_up'),
|
||||
(64426, 'spell_mimiron_summon_assault_bot'),
|
||||
(64425, 'spell_mimiron_summon_assault_bot_target'),
|
||||
(64621, 'spell_mimiron_summon_fire_bot'),
|
||||
(64620, 'spell_mimiron_summon_fire_bot_target'),
|
||||
(64562, 'spell_mimiron_summon_flames_spread'),
|
||||
(64623, 'spell_mimiron_summon_frost_bomb_target'),
|
||||
(64398, 'spell_mimiron_summon_junk_bot'),
|
||||
(63820, 'spell_mimiron_summon_junk_bot_target'),
|
||||
(63339, 'spell_mimiron_weld');
|
||||
|
||||
DELETE FROM `spelldifficulty_dbc` WHERE `id` IN (66351, 64019, 63387, 62997, 64348, 64352, 63689, 65647, 63677, 63679, 64626);
|
||||
INSERT INTO `spelldifficulty_dbc` (`id`, `spellid0`, `spellid1`) VALUES
|
||||
(64348, 64348, 64536),
|
||||
(64352, 64352, 64537),
|
||||
(66351, 66351, 63009),
|
||||
(63387, 63387, 64531),
|
||||
(64019, 64019, 64532),
|
||||
(62997, 62997, 64529),
|
||||
(63689, 63689, 64535),
|
||||
(65647, 65647, 65648),
|
||||
(63677, 63677, 64533),
|
||||
(63679, 63679, 64534),
|
||||
(64626, 64626, 65333);
|
||||
|
||||
DELETE FROM `conditions` WHERE `SourceEntry` IN (65192, 64570, 63274, 66490, 63300, 63414, 64539, 64402, 65034, 63041, 65224, 64620, 63820, 64425, 64619, 64626, 65333, 65354, 64618, 64623, 64436, 64444, 65101, 64463);
|
||||
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
|
||||
(13, 1, 65192, 0, 0, 31, 0, 3, 34363, 0, 0, 0, 0, '', 'Flame Suppressant VX EFFECT_0 can only hit NPC_FLAME'),
|
||||
(13, 1, 65192, 0, 1, 31, 0, 3, 34121, 0, 0, 0, 0, '', 'Flame Suppressant VX EFFECT_0 can only hit NPC_FLAME_SPREAD'),
|
||||
(13, 2, 64570, 0, 0, 31, 0, 3, 34363, 0, 0, 0, 0, '', 'Flame Suppressant MK EFFECT_1 can only hit NPC_FLAME'),
|
||||
(13, 2, 64570, 0, 1, 31, 0, 3, 34121, 0, 0, 0, 0, '', 'Flame Suppressant MK EFFECT_1 can only hit NPC_FLAME_SPREAD'),
|
||||
(13, 1, 64623, 0, 0, 31, 0, 3, 34363, 0, 0, 0, 0, '', 'Frost Bomb EFFECT_0 can only hit NPC_FLAME'),
|
||||
(13, 1, 64623, 0, 1, 31, 0, 3, 34121, 0, 0, 0, 0, '', 'Frost Bomb EFFECT_0 can only hit NPC_FLAME_SPREAD'),
|
||||
(13, 4, 64626, 0, 0, 31, 0, 3, 34363, 0, 0, 0, 0, '', 'Explosion EFFECT_2 can only hit NPC_FLAME'),
|
||||
(13, 4, 64626, 0, 1, 31, 0, 3, 34121, 0, 0, 0, 0, '', 'Explosion EFFECT_2 can only hit NPC_FLAME_SPREAD'),
|
||||
(13, 4, 65333, 0, 0, 31, 0, 3, 34363, 0, 0, 0, 0, '', 'Explosion EFFECT_2 can only hit NPC_FLAME'),
|
||||
(13, 4, 65333, 0, 1, 31, 0, 3, 34121, 0, 0, 0, 0, '', 'Explosion EFFECT_2 can only hit NPC_FLAME_SPREAD'),
|
||||
(13, 1, 65224, 0, 0, 31, 0, 3, 34363, 0, 0, 0, 0, '', 'Clear Fires EFFECT_0 can only hit NPC_FLAME'),
|
||||
(13, 1, 65224, 0, 1, 31, 0, 3, 34121, 0, 0, 0, 0, '', 'Clear Fires EFFECT_0 can only hit NPC_FLAME_SPREAD'),
|
||||
(13, 1, 65354, 0, 0, 31, 0, 3, 34363, 0, 0, 0, 0, '', 'Clear Fires EFFECT_0 can only hit NPC_FLAME'),
|
||||
(13, 1, 65354, 0, 1, 31, 0, 3, 34121, 0, 0, 0, 0, '', 'Clear Fires EFFECT_0 can only hit NPC_FLAME_SPREAD'),
|
||||
(13, 1, 64619, 0, 0, 31, 0, 3, 34363, 0, 0, 0, 0, '', 'Water Spray EFFECT_0 can only hit NPC_FLAME'),
|
||||
(13, 1, 64619, 0, 1, 31, 0, 3, 34121, 0, 0, 0, 0, '', 'Water Spray EFFECT_0 can only hit NPC_FLAME_SPREAD'),
|
||||
(13, 1, 64618, 0, 0, 31, 0, 3, 34363, 0, 0, 0, 0, '', 'Fire Search EFFECT_0 can only hit NPC_FLAME'),
|
||||
(13, 1, 64618, 0, 1, 31, 0, 3, 34121, 0, 0, 0, 0, '', 'Fire Search EFFECT_0 can only hit NPC_FLAME_SPREAD'),
|
||||
(13, 1, 64539, 0, 0, 31, 0, 3, 34071, 0, 0, 0, 0, '', 'Napalm Shell EFFECT_0 can only hit NPC_LEVIATHAN_MKII_TURRET'),
|
||||
(13, 1, 63274, 0, 0, 31, 0, 3, 33576, 0, 0, 0, 0, '', 'P3Wx2 Laser Barrage EFFECT_0 can only hit NPC_DB_TARGET'),
|
||||
(17, 0, 66490, 0, 0, 31, 0, 3, 33432, 0, 0, 0, 0, '', 'P3Wx2 Laser Barrage can only hit NPC_LEVIATHAN_MKII'),
|
||||
(17, 0, 63300, 0, 0, 31, 0, 3, 33651, 0, 0, 0, 0, '', 'P3Wx2 Laser Barrage can only hit NPC_VX_001'),
|
||||
(13, 1, 63414, 0, 0, 31, 0, 3, 33576, 0, 0, 0, 0, '', 'Spinning Up EFFECT_0 can only hit NPC_DB_TARGET'),
|
||||
(13, 2, 63414, 0, 1, 31, 0, 3, 33432, 0, 0, 0, 0, '', 'Spinning Up EFFECT_1 can only hit NPC_LEVIATHAN_MKII'),
|
||||
(13, 1, 64620, 0, 0, 31, 0, 3, 33856, 0, 0, 0, 0, '', 'Summon Fire Bot Trigger EFFECT_0 can only hit NPC_BOT_SUMMON_TRIGGER'),
|
||||
(13, 1, 63820, 0, 0, 31, 0, 3, 33856, 0, 0, 0, 0, '', 'Summon Junk Bot Trigger EFFECT_0 can only hit NPC_BOT_SUMMON_TRIGGER'),
|
||||
(13, 1, 64425, 0, 0, 31, 0, 3, 33856, 0, 0, 0, 0, '', 'Summon Assault Bot Trigger EFFECT_0 can only hit NPC_BOT_SUMMON_TRIGGER'),
|
||||
(13, 1, 64402, 0, 0, 31, 0, 3, 34050, 0, 0, 0, 0, '', 'Rocket Strike EFFECT_0 can only hit NPC_ROCKET_MIMIRON_VISUAL'),
|
||||
(13, 1, 65034, 0, 0, 31, 0, 3, 34050, 0, 0, 0, 0, '', 'Rocket Strike EFFECT_0 can only hit NPC_ROCKET_MIMIRON_VISUAL'),
|
||||
(13, 2, 64436, 0, 0, 31, 0, 3, 33670, 0, 0, 0, 0, '', 'Magnetic Core EFFECT_1 can only hit NPC_AERIAL_COMMAND_UNIT'),
|
||||
(13, 1, 64444, 0, 0, 31, 0, 3, 33670, 0, 0, 0, 0, '', 'Magnetic Core EFFECT_0 can only hit NPC_AERIAL_COMMAND_UNIT'),
|
||||
(13, 1, 65101, 0, 0, 31, 0, 3, 34071, 0, 0, 0, 0, '', 'Emergency Mode EFFECT_0 can only hit NPC_LEVIATHAN_MKII_TURRET'),
|
||||
(13, 1, 64463, 0, 0, 31, 0, 3, 34057, 0, 0, 0, 0, '', 'Despawn Assault Bots EFFECT_1 can only hit NPC_ASSAULT_BOT'),
|
||||
(13, 2, 63041, 0, 0, 31, 0, 3, 34057, 0, 0, 0, 0, '', 'Rocket Strike EFFECT_1 can only hit NPC_ASSAULT_BOT'),
|
||||
(13, 4, 63041, 0, 1, 31, 0, 3, 34137, 0, 0, 0, 0, '', 'Rocket Strike EFFECT_2 can only hit NPC_EMERGENCY_FIRE_BOT'),
|
||||
(13, 4, 63041, 0, 2, 31, 0, 3, 33855, 0, 0, 0, 0, '', 'Rocket Strike EFFECT_2 can only hit NPC_JUNK_BOT'),
|
||||
(13, 4, 63041, 0, 3, 31, 0, 3, 33836, 0, 0, 0, 0, '', 'Rocket Strike EFFECT_2 can only hit NPC_BOMB_BOT');
|
||||
|
||||
DELETE FROM `spell_linked_spell` WHERE `spell_trigger` IN (64626, 64570, 64627, 65333, 64567);
|
||||
INSERT INTO `spell_linked_spell` (`spell_trigger`, `spell_effect`, `type`, `comment`) VALUES
|
||||
(64626, -64624, 0, 'Explosion - Remove SPELL_FROST_BOMB_LINKED from caster'),
|
||||
(64626, -64561, 1, 'Explosion - Remove SPELL_FLAMES_PERIODIC_TRIGGER from targets'),
|
||||
(65333, -64624, 0, 'Explosion - Remove SPELL_FROST_BOMB_LINKED from caster'),
|
||||
(65333, -64561, 1, 'Explosion - Remove SPELL_FLAMES_PERIODIC_TRIGGER from targets'),
|
||||
(64627, -64561, 1, 'Frost Bomb - Remove SPELL_FLAMES_PERIODIC_TRIGGER from target'),
|
||||
(64567, 64563, 1, 'Summon Flames Initial - Cast SPELL_SUMMON_FLAMES_INITIAL on hit targets'),
|
||||
(64570, -64561, 1, 'Flame Suppressant - Remove SPELL_FLAMES_PERIODIC_TRIGGER from targets');
|
||||
--
|
||||
@@ -0,0 +1,8 @@
|
||||
DELETE FROM `command` WHERE `permission`='683';
|
||||
DELETE FROM `command` WHERE `permission`='684';
|
||||
DELETE FROM `command` WHERE `permission`='705';
|
||||
|
||||
INSERT INTO `command` (`name`, `permission`, `help`) VALUES
|
||||
('reload reputation_reward_rate', 683, 'Syntax: .reload reputation_reward_rate\r\nReload reputation_reward_rate table.'),
|
||||
('reload reputation_spillover_template', 684, 'Syntax: .reload reputation_spillover_template\r\nReload reputation_spillover_template table.'),
|
||||
('reload warden_action', 705, 'Syntax: .reload warden_action\r\nReload warden_action.');
|
||||
@@ -0,0 +1,9 @@
|
||||
UPDATE `creature_text` SET `emote`=51 WHERE `entry`=27212;
|
||||
UPDATE `creature_text` SET `emote`=1 WHERE `entry`=27439 AND `groupid`=0 AND `id`=0;
|
||||
UPDATE `creature_text` SET `emote`=6 WHERE `entry`=27439 AND `groupid`=1 AND `id`=0;
|
||||
UPDATE `creature_text` SET `emote`=1 WHERE `entry`=27439 AND `groupid`=2 AND `id`=0;
|
||||
UPDATE `creature_text` SET `emote`=25 WHERE `entry`=27439 AND `groupid`=3 AND `id`=0;
|
||||
UPDATE `creature_text` SET `emote`=274 WHERE `entry`=27439 AND `groupid`=4 AND `id`=0;
|
||||
UPDATE `creature_text` SET `sound`=2943 WHERE `entry`=27439 AND `groupid`=5 AND `id`=0;
|
||||
|
||||
UPDATE `smart_scripts` SET `event_param1`=30 WHERE `entryorguid`=17831 AND `source_type`=0 AND `id`=4 AND `link`=5;
|
||||
@@ -0,0 +1,231 @@
|
||||
SET @EventEntry := 34;
|
||||
SET @CGuid := 127312;
|
||||
|
||||
-- Add game events to gameevent table (one per month so different brew vendor spawns each month which sells a different brew
|
||||
|
||||
DELETE FROM `game_event` WHERE `eventEntry` BETWEEN @EventEntry AND @EventEntry+11;
|
||||
|
||||
INSERT INTO `game_event` (`eventEntry`, `start_time`, `end_time`, `occurence`, `length`, `holiday`, `description`, `world_event`, `announce`) VALUES
|
||||
(@EventEntry, '2012-10-01 00:01:00', '2020-12-31 06:00:00', 525600, 44640, 0, 'Brew of the Month October', 0, 2),
|
||||
(@EventEntry+1, '2012-11-01 00:01:00', '2020-12-31 06:00:00', 525600, 43200, 0, 'Brew of the Month November', 0, 2),
|
||||
(@EventEntry+2, '2012-12-01 00:01:00', '2020-12-31 06:00:00', 525600, 44640, 0, 'Brew of the Month December', 0, 2),
|
||||
(@EventEntry+3, '2012-01-01 00:01:00', '2020-12-31 06:00:00', 525600, 44640, 0, 'Brew of the Month January', 0, 2),
|
||||
(@EventEntry+4, '2012-02-01 00:01:00', '2020-12-31 06:00:00', 525600, 40320, 0, 'Brew of the Month February', 0, 2),
|
||||
(@EventEntry+5, '2012-03-01 00:01:00', '2020-12-31 06:00:00', 525600, 44640, 0, 'Brew of the Month March', 0, 2),
|
||||
(@EventEntry+6, '2012-04-01 00:01:00', '2020-12-31 06:00:00', 525600, 43200, 0, 'Brew of the Month April', 0, 2),
|
||||
(@EventEntry+7, '2012-05-01 00:01:00', '2020-12-31 06:00:00', 525600, 44640, 0, 'Brew of the Month May', 0, 2),
|
||||
(@EventEntry+8, '2012-06-01 00:01:00', '2020-12-31 06:00:00', 525600, 43200, 0, 'Brew of the Month June', 0, 2),
|
||||
(@EventEntry+9, '2012-07-01 00:01:00', '2020-12-31 06:00:00', 525600, 44640, 0, 'Brew of the Month July', 0, 2),
|
||||
(@EventEntry+10, '2012-08-01 00:01:00', '2020-12-31 06:00:00', 525600, 44640, 0, 'Brew of the Month August', 0, 2),
|
||||
(@EventEntry+11, '2012-09-01 00:01:00', '2020-12-31 06:00:00', 525600, 44640, 0, 'Brew of the Month September', 0, 2);
|
||||
|
||||
UPDATE `creature_template` SET `minlevel`=50, `maxlevel`=50, `npcflag`=129,`gossip_menu_id`=9549 WHERE `entry` IN(27806,27810,27811,27812,27813,27814,27815,27816,27817,27818,27819,27820);
|
||||
|
||||
-- Add brewfest brews to vendors some of these are already in db but all are here just in case)
|
||||
|
||||
DELETE FROM `npc_vendor` WHERE `entry` IN (27806,27810,27811,27812,27813,27814,27815,27816,27817,27818,27819,27820);
|
||||
|
||||
INSERT INTO `npc_vendor` (`entry`, `slot`, `item`, `maxcount`, `incrtime`, `ExtendedCost`) VALUES
|
||||
(27806, 0, 37488, 0, 0, 0), -- Wild Winter Pilsner (January)
|
||||
(27810, 0, 37899, 0, 0, 0), -- Izzard's Ever Flavor (February)
|
||||
(27811, 0, 37490, 0, 0, 0), -- Aromatic Honey Brew (March)
|
||||
(27812, 0, 37491, 0, 0, 0), -- Metok's Bubble Bock (April)
|
||||
(27813, 0, 37492, 0, 0, 0), -- Springtime Stout (May)
|
||||
(27814, 0, 37493, 0, 0, 0), -- Blackrock Lager (June)
|
||||
(27815, 0, 37494, 0, 0, 0), -- Stranglethorn Brew (July)
|
||||
(27816, 0, 37495, 0, 0, 0), -- Draenic Pale Ale (August)
|
||||
(27817, 0, 37496, 0, 0, 0), -- Binary Brew (September)
|
||||
(27818, 0, 37497, 0, 0, 0), -- Autumnal Acorn Ale (October)
|
||||
(27819, 0, 37498, 0, 0, 0), -- Bartlett's Bitter Brew (November)
|
||||
(27820, 0, 37499, 0, 0, 0); -- Lord of Frost's Private Label (December)
|
||||
|
||||
-- Set buycount to 6 and make duration of these items so the duration is in realtime and not game time
|
||||
UPDATE `item_template` SET `BuyCount`=6, `flagsCustom`=1 WHERE `entry` IN(37488,37899,37490,37491,37492,37493,37494,37495,37496,37497,37498,37499,37496);
|
||||
|
||||
-- Link brew vendors to monthly events
|
||||
DELETE FROM `game_event_creature` WHERE `guid` BETWEEN @CGuid AND @CGuid+23;
|
||||
|
||||
INSERT INTO `game_event_creature` (`eventEntry`, `guid`) VALUES
|
||||
(@EventEntry+3, @CGuid),
|
||||
(@EventEntry+3, @CGuid+1),
|
||||
(@EventEntry+4, @CGuid+2),
|
||||
(@EventEntry+4, @CGuid+3),
|
||||
(@EventEntry+5, @CGuid+4),
|
||||
(@EventEntry+5, @CGuid+5),
|
||||
(@EventEntry+6, @CGuid+6),
|
||||
(@EventEntry+6, @CGuid+7),
|
||||
(@EventEntry+7, @CGuid+8),
|
||||
(@EventEntry+7, @CGuid+9),
|
||||
(@EventEntry+8, @CGuid+10),
|
||||
(@EventEntry+8, @CGuid+11),
|
||||
(@EventEntry+9, @CGuid+12),
|
||||
(@EventEntry+9, @CGuid+13),
|
||||
(@EventEntry+10, @CGuid+14),
|
||||
(@EventEntry+10, @CGuid+15),
|
||||
(@EventEntry+11, @CGuid+16),
|
||||
(@EventEntry+11, @CGuid+17),
|
||||
(@EventEntry, @CGuid+18),
|
||||
(@EventEntry, @CGuid+19),
|
||||
(@EventEntry+1, @CGuid+20),
|
||||
(@EventEntry+1, @CGuid+21),
|
||||
(@EventEntry+2, @CGuid+22),
|
||||
(@EventEntry+2, @CGuid+23);
|
||||
|
||||
|
||||
-- Add some missing gossips and conditions for these which are needed so only players who completed brew of the month quest can access vendors
|
||||
UPDATE `gossip_menu_option` SET `npc_option_npcflag`=128,`option_id`=3 WHERE `menu_id`=9554 AND `id`=0;
|
||||
|
||||
DELETE FROM `gossip_menu_option` WHERE `menu_id`=9548;
|
||||
|
||||
INSERT INTO `gossip_menu_option` (`menu_id`, `id`, `option_icon`, `option_text`, `OptionBroadcastTextID`, `option_id`, `npc_option_npcflag`, `action_menu_id`, `action_poi_id`, `box_coded`, `box_money`, `box_text`, `BoxBroadcastTextID`) VALUES
|
||||
(9548, 0, 0, 'What do you have for me?', 26695, 3, 128, 0, 0, 0, 0, '', 0);
|
||||
|
||||
|
||||
DELETE FROM `gossip_menu_option` WHERE `menu_id`=9549;
|
||||
|
||||
INSERT INTO `gossip_menu_option` (`menu_id`, `id`, `option_icon`, `option_text`, `OptionBroadcastTextID`, `option_id`, `npc_option_npcflag`, `action_menu_id`, `action_poi_id`, `box_coded`, `box_money`, `box_text`, `BoxBroadcastTextID`) VALUES
|
||||
(9549, 0, 1, 'I''d like to buy this month''s brew.', 26693, 3, 128, 0, 0, 0, 0, '', 0);
|
||||
|
||||
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`IN(9549,9548);
|
||||
|
||||
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
|
||||
(15, 9548, 0, 0, 0, 2, 0, 37829, 1, 0, 0, 0, 0, '', 'Only show gossip menu if player has at least 1 brewfest prize token'),
|
||||
|
||||
(15, 9549, 0, 0, 0, 8, 0, 12421, 0, 0, 0, 0, 0, '', 'Only allow players who have completed brew of the month quest to access vendor'),
|
||||
(15, 9549, 0, 0, 2, 8, 0, 12420, 0, 0, 0, 0, 0, '', 'Only allow players who have completed brew of the month quest to access vendor');
|
||||
|
||||
DELETE FROM `creature` WHERE `id` IN (27806,27810,27811,27812,27813,27814,27815,27816,27817,27818,27819,27820);
|
||||
|
||||
INSERT INTO `creature` (`guid`, `id`, `map`, `spawnMask`, `phaseMask`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `spawndist`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`) VALUES
|
||||
(@CGuid, 27806, 0, 1, 1, 24979, 1, -4845.949, -861.9443, 501.9972, 4.485496, 120, 0, 0, 2215, 0, 0, 0, 0, 0),
|
||||
(@CGuid+1, 27806, 1, 1, 1, 24979, 1, 1475.8, -4210.233, 43.2693, 4.014257, 120, 0, 0, 2215, 0, 0, 0, 0, 0),
|
||||
(@CGuid+2, 27810, 0, 1, 1, 24980, 1, -4845.949, -861.9443, 501.9972, 4.485496, 120, 0, 0, 2215, 0, 0, 0, 0, 0),
|
||||
(@CGuid+3, 27810, 1, 1, 1, 24980, 1, 1475.8, -4210.233, 43.2693, 4.014257, 120, 0, 0, 2215, 0, 0, 0, 0, 0),
|
||||
(@CGuid+4, 27811, 0, 1, 1, 24981, 1, -4845.949, -861.9443, 501.9972, 4.485496, 120, 0, 0, 2215, 0, 0, 0, 0, 0),
|
||||
(@CGuid+5, 27811, 1, 1, 1, 24981, 1, 1475.8, -4210.233, 43.2693, 4.014257, 120, 0, 0, 2215, 0, 0, 0, 0, 0),
|
||||
(@CGuid+6, 27812, 0, 1, 1, 24982, 1, -4845.949, -861.9443, 501.9972, 4.485496, 120, 0, 0, 2215, 0, 0, 0, 0, 0),
|
||||
(@CGuid+7, 27812, 1, 1, 1, 24982, 1, 1475.8, -4210.233, 43.2693, 4.014257, 120, 0, 0, 2215, 0, 0, 0, 0, 0),
|
||||
(@CGuid+8, 27813, 0, 1, 1, 24983, 1, -4845.949, -861.9443, 501.9972, 4.485496, 120, 0, 0, 2215, 0, 0, 0, 0, 0),
|
||||
(@CGuid+9, 27813, 1, 1, 1, 24983, 1, 1475.8, -4210.233, 43.2693, 4.014257, 120, 0, 0, 2215, 0, 0, 0, 0, 0),
|
||||
(@CGuid+10, 27814, 0, 1, 1, 24984, 1, -4845.949, -861.9443, 501.9972, 4.485496, 120, 0, 0, 2215, 0, 0, 0, 0, 0),
|
||||
(@CGuid+11, 27814, 1, 1, 1, 24984, 1, 1475.8, -4210.233, 43.2693, 4.014257, 120, 0, 0, 2215, 0, 0, 0, 0, 0),
|
||||
(@CGuid+12, 27815, 0, 1, 1, 24985, 1, -4845.949, -861.9443, 501.9972, 4.485496, 120, 0, 0, 2215, 0, 0, 0, 0, 0),
|
||||
(@CGuid+13, 27815, 1, 1, 1, 24985, 1, 1475.8, -4210.233, 43.2693, 4.014257, 120, 0, 0, 2215, 0, 0, 0, 0, 0),
|
||||
(@CGuid+14, 27816, 0, 1, 1, 24986, 1, -4845.949, -861.9443, 501.9972, 4.485496, 120, 0, 0, 2215, 0, 0, 0, 0, 0),
|
||||
(@CGuid+15, 27816, 1, 1, 1, 24986, 1, 1475.8, -4210.233, 43.2693, 4.014257, 120, 0, 0, 2215, 0, 0, 0, 0, 0),
|
||||
(@CGuid+16, 27817, 0, 1, 1, 24987, 1, -4845.949, -861.9443, 501.9972, 4.485496, 120, 0, 0, 2215, 0, 0, 0, 0, 0),
|
||||
(@CGuid+17, 27817, 1, 1, 1, 24987, 1, 1475.8, -4210.233, 43.2693, 4.014257, 120, 0, 0, 2215, 0, 0, 0, 0, 0),
|
||||
(@CGuid+18, 27818, 0, 1, 1, 24988, 1, -4845.949, -861.9443, 501.9972, 4.485496, 120, 0, 0, 2215, 0, 0, 0, 0, 0),
|
||||
(@CGuid+19, 27818, 1, 1, 1, 24988, 1, 1475.8, -4210.233, 43.2693, 4.014257, 120, 0, 0, 2215, 0, 0, 0, 0, 0),
|
||||
(@CGuid+20, 27819, 0, 1, 1, 24989, 1, -4845.949, -861.9443, 501.9972, 4.485496, 120, 0, 0, 2215, 0, 0, 0, 0, 0),
|
||||
(@CGuid+21, 27819, 1, 1, 1, 24989, 1, 1475.8, -4210.233, 43.2693, 4.014257, 120, 0, 0, 2215, 0, 0, 0, 0, 0),
|
||||
(@CGuid+22, 27820, 0, 1, 1, 24990, 1, -4845.949, -861.9443, 501.9972, 4.485496, 120, 0, 0, 2215, 0, 0, 0, 0, 0),
|
||||
(@CGuid+23, 27820, 1, 1, 1, 24990, 1, 1475.8, -4210.233, 43.2693, 4.014257, 120, 0, 0, 2215, 0, 0, 0, 0, 0);
|
||||
|
||||
-- Spawn Larkin Thunderbrew <Brew of the Month Club> who is needed so alliance can turn quest to unlock vendors
|
||||
DELETE FROM `creature` WHERE `guid`=@CGuid+24;
|
||||
|
||||
INSERT INTO `creature` (`guid`, `id`, `map`, `spawnMask`, `phaseMask`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `spawndist`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`) VALUES
|
||||
(@CGuid+24, 27478, 0, 1, 1, 22396, 0, -4849.41, -862.255, 501.997, 4.85202, 300, 0, 0, 2215, 0, 0, 0, 0, 0);
|
||||
|
||||
-- Smart scripts to dynamically change faction on brew vendors depending on location
|
||||
-- 774 = Alliance only alliance can access vendor, vendor still appears neutral to horde but wont allow interaction
|
||||
-- 775 = Horde only horde can access vendor, vendor still appears neutral to alliance but wont allow interaction
|
||||
|
||||
|
||||
UPDATE `creature_template` SET `AIName`= 'SmartAI' WHERE `entry` IN (27806,27810,27811,27812,27813,27814,27815,27816,27817,27818,27819,27820);
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid` IN (27806,27810,27811,27812,27813,27814,27815,27816,27817,27818,27819,27820);
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(27806, 0, 0, 2, 11, 0, 100, 0, 0, 0, 0, 0, 2, 774 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brew Vendor - On Spawn - Set Faction (Alliance)'),
|
||||
(27806, 0, 1, 3, 11, 0, 100, 0, 0, 0, 0, 0, 2, 775 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brew Vendor - On Spawn - Set Faction (Horde)'),
|
||||
(27806, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 11, 49672 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brew Vendor - On Spawn - Cast BOTM - Vendor - Transform - Alliance'),
|
||||
(27806, 0, 3, 0, 61, 0, 100, 0, 0, 0, 0, 0, 11, 49673 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brew Vendor - On Spawn - Cast BOTM - Vendor - Transform - Horde'),
|
||||
(27810, 0, 0, 2, 11, 0, 100, 0, 0, 0, 0, 0, 2, 774 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brew Vendor - On Spawn - Set Faction (Alliance)'),
|
||||
(27810, 0, 1, 3, 11, 0, 100, 0, 0, 0, 0, 0, 2, 775 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brew Vendor - On Spawn - Set Faction (Horde)'),
|
||||
(27810, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 11, 49672 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brew Vendor - On Spawn - Cast BOTM - Vendor - Transform - Alliance'),
|
||||
(27810, 0, 3, 0, 61, 0, 100, 0, 0, 0, 0, 0, 11, 49673 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brew Vendor - On Spawn - Cast BOTM - Vendor - Transform - Horde'),
|
||||
(27811, 0, 0, 2, 11, 0, 100, 0, 0, 0, 0, 0, 2, 774 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brew Vendor - On Spawn - Set Faction (Alliance)'),
|
||||
(27811, 0, 1, 3, 11, 0, 100, 0, 0, 0, 0, 0, 2, 775 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brew Vendor - On Spawn - Set Faction (Horde)'),
|
||||
(27811, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 11, 49672 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brew Vendor - On Spawn - Cast BOTM - Vendor - Transform - Alliance'),
|
||||
(27811, 0, 3, 0, 61, 0, 100, 0, 0, 0, 0, 0, 11, 49673 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brew Vendor - On Spawn - Cast BOTM - Vendor - Transform - Horde'),
|
||||
(27812, 0, 0, 2, 11, 0, 100, 0, 0, 0, 0, 0, 2, 774 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brew Vendor - On Spawn - Set Faction (Alliance)'),
|
||||
(27812, 0, 1, 3, 11, 0, 100, 0, 0, 0, 0, 0, 2, 775 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brew Vendor - On Spawn - Set Faction (Horde)'),
|
||||
(27812, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 11, 49672 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brew Vendor - On Spawn - Cast BOTM - Vendor - Transform - Alliance'),
|
||||
(27812, 0, 3, 0, 61, 0, 100, 0, 0, 0, 0, 0, 11, 49673 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brew Vendor - On Spawn - Cast BOTM - Vendor - Transform - Horde'),
|
||||
(27813, 0, 0, 2, 11, 0, 100, 0, 0, 0, 0, 0, 2, 774 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brew Vendor - On Spawn - Set Faction (Alliance)'),
|
||||
(27813, 0, 1, 3, 11, 0, 100, 0, 0, 0, 0, 0, 2, 775 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brew Vendor - On Spawn - Set Faction (Horde)'),
|
||||
(27813, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 11, 49672 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brew Vendor - On Spawn - Cast BOTM - Vendor - Transform - Alliance'),
|
||||
(27813, 0, 3, 0, 61, 0, 100, 0, 0, 0, 0, 0, 11, 49673 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brew Vendor - On Spawn - Cast BOTM - Vendor - Transform - Horde'),
|
||||
(27814, 0, 0, 2, 11, 0, 100, 0, 0, 0, 0, 0, 2, 774 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brew Vendor - On Spawn - Set Faction (Alliance)'),
|
||||
(27814, 0, 1, 3, 11, 0, 100, 0, 0, 0, 0, 0, 2, 775 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brew Vendor - On Spawn - Set Faction (Horde)'),
|
||||
(27814, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 11, 49672 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brew Vendor - On Spawn - Cast BOTM - Vendor - Transform - Alliance'),
|
||||
(27814, 0, 3, 0, 61, 0, 100, 0, 0, 0, 0, 0, 11, 49673 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brew Vendor - On Spawn - Cast BOTM - Vendor - Transform - Horde'),
|
||||
(27815, 0, 0, 2, 11, 0, 100, 0, 0, 0, 0, 0, 2, 774 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brew Vendor - On Spawn - Set Faction (Alliance)'),
|
||||
(27815, 0, 1, 3, 11, 0, 100, 0, 0, 0, 0, 0, 2, 775 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brew Vendor - On Spawn - Set Faction (Horde)'),
|
||||
(27815, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 11, 49672 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brew Vendor - On Spawn - Cast BOTM - Vendor - Transform - Alliance'),
|
||||
(27815, 0, 3, 0, 61, 0, 100, 0, 0, 0, 0, 0, 11, 49673 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brew Vendor - On Spawn - Cast BOTM - Vendor - Transform - Horde'),
|
||||
(27816, 0, 0, 2, 11, 0, 100, 0, 0, 0, 0, 0, 2, 774 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brew Vendor - On Spawn - Set Faction (Alliance)'),
|
||||
(27816, 0, 1, 3, 11, 0, 100, 0, 0, 0, 0, 0, 2, 775 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brew Vendor - On Spawn - Set Faction (Horde)'),
|
||||
(27816, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 11, 49672 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brew Vendor - On Spawn - Cast BOTM - Vendor - Transform - Alliance'),
|
||||
(27816, 0, 3, 0, 61, 0, 100, 0, 0, 0, 0, 0, 11, 49673 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brew Vendor - On Spawn - Cast BOTM - Vendor - Transform - Horde'),
|
||||
(27817, 0, 0, 2, 11, 0, 100, 0, 0, 0, 0, 0, 2, 774 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brew Vendor - On Spawn - Set Faction (Alliance)'),
|
||||
(27817, 0, 1, 3, 11, 0, 100, 0, 0, 0, 0, 0, 2, 775 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brew Vendor - On Spawn - Set Faction (Horde)'),
|
||||
(27817, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 11, 49672 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brew Vendor - On Spawn - Cast BOTM - Vendor - Transform - Alliance'),
|
||||
(27817, 0, 3, 0, 61, 0, 100, 0, 0, 0, 0, 0, 11, 49673 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brew Vendor - On Spawn - Cast BOTM - Vendor - Transform - Horde'),
|
||||
(27818, 0, 0, 2, 11, 0, 100, 0, 0, 0, 0, 0, 2, 774 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brew Vendor - On Spawn - Set Faction (Alliance)'),
|
||||
(27818, 0, 1, 3, 11, 0, 100, 0, 0, 0, 0, 0, 2, 775 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brew Vendor - On Spawn - Set Faction (Horde)'),
|
||||
(27818, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 11, 49672 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brew Vendor - On Spawn - Cast BOTM - Vendor - Transform - Alliance'),
|
||||
(27818, 0, 3, 0, 61, 0, 100, 0, 0, 0, 0, 0, 11, 49673 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brew Vendor - On Spawn - Cast BOTM - Vendor - Transform - Horde'),
|
||||
(27819, 0, 0, 2, 11, 0, 100, 0, 0, 0, 0, 0, 2, 774 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brew Vendor - On Spawn - Set Faction (Alliance)'),
|
||||
(27819, 0, 1, 3, 11, 0, 100, 0, 0, 0, 0, 0, 2, 775 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brew Vendor - On Spawn - Set Faction (Horde)'),
|
||||
(27819, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 11, 49672 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brew Vendor - On Spawn - Cast BOTM - Vendor - Transform - Alliance'),
|
||||
(27819, 0, 3, 0, 61, 0, 100, 0, 0, 0, 0, 0, 11, 49673 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brew Vendor - On Spawn - Cast BOTM - Vendor - Transform - Horde'),
|
||||
(27820, 0, 0, 2, 11, 0, 100, 0, 0, 0, 0, 0, 2, 774 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brew Vendor - On Spawn - Set Faction (Alliance)'),
|
||||
(27820, 0, 1, 3, 11, 0, 100, 0, 0, 0, 0, 0, 2, 775 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brew Vendor - On Spawn - Set Faction (Horde)'),
|
||||
(27820, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 11, 49672 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brew Vendor - On Spawn - Cast BOTM - Vendor - Transform - Alliance'),
|
||||
(27820, 0, 3, 0, 61, 0, 100, 0, 0, 0, 0, 0, 11, 49673 , 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brew Vendor - On Spawn - Cast BOTM - Vendor - Transform - Horde');
|
||||
|
||||
|
||||
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry` IN (27806,27810,27811,27812,27813,27814,27815,27816,27817,27818,27819,27820);
|
||||
|
||||
INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
|
||||
(22,1,27806,0,0,23,1,1537,0,0,0,0,'','Only Run AI in Ironforge'),
|
||||
(22,2,27806,0,0,23,1,1637,0,0,0,0,'','Only Run AI in Ogrimmar'),
|
||||
(22,1,27810,0,0,23,1,1537,0,0,0,0,'','Only Run AI in Ironforge'),
|
||||
(22,2,27810,0,0,23,1,1637,0,0,0,0,'','Only Run AI in Ogrimmar'),
|
||||
(22,1,27811,0,0,23,1,1537,0,0,0,0,'','Only Run AI in Ironforge'),
|
||||
(22,2,27811,0,0,23,1,1637,0,0,0,0,'','Only Run AI in Ogrimmar'),
|
||||
(22,1,27812,0,0,23,1,1537,0,0,0,0,'','Only Run AI in Ironforge'),
|
||||
(22,2,27812,0,0,23,1,1637,0,0,0,0,'','Only Run AI in Ogrimmar'),
|
||||
(22,1,27813,0,0,23,1,1537,0,0,0,0,'','Only Run AI in Ironforge'),
|
||||
(22,2,27813,0,0,23,1,1637,0,0,0,0,'','Only Run AI in Ogrimmar'),
|
||||
(22,1,27814,0,0,23,1,1537,0,0,0,0,'','Only Run AI in Ironforge'),
|
||||
(22,2,27814,0,0,23,1,1637,0,0,0,0,'','Only Run AI in Ogrimmar'),
|
||||
(22,1,27815,0,0,23,1,1537,0,0,0,0,'','Only Run AI in Ironforge'),
|
||||
(22,2,27815,0,0,23,1,1637,0,0,0,0,'','Only Run AI in Ogrimmar'),
|
||||
(22,1,27816,0,0,23,1,1537,0,0,0,0,'','Only Run AI in Ironforge'),
|
||||
(22,2,27816,0,0,23,1,1637,0,0,0,0,'','Only Run AI in Ogrimmar'),
|
||||
(22,1,27817,0,0,23,1,1537,0,0,0,0,'','Only Run AI in Ironforge'),
|
||||
(22,2,27817,0,0,23,1,1637,0,0,0,0,'','Only Run AI in Ogrimmar'),
|
||||
(22,1,27818,0,0,23,1,1537,0,0,0,0,'','Only Run AI in Ironforge'),
|
||||
(22,2,27818,0,0,23,1,1637,0,0,0,0,'','Only Run AI in Ogrimmar'),
|
||||
(22,1,27819,0,0,23,1,1537,0,0,0,0,'','Only Run AI in Ironforge'),
|
||||
(22,2,27819,0,0,23,1,1637,0,0,0,0,'','Only Run AI in Ogrimmar'),
|
||||
(22,1,27820,0,0,23,1,1537,0,0,0,0,'','Only Run AI in Ironforge'),
|
||||
(22,2,27820,0,0,23,1,1637,0,0,0,0,'','Only Run AI in Ogrimmar');
|
||||
|
||||
DELETE FROM `spell_linked_spell` WHERE `spell_trigger` IN(42256,42255,42254,43961,42263,42257,43959,42264,42259,42260,42258,42261);
|
||||
INSERT INTO `spell_linked_spell` (`spell_trigger`, `spell_effect`, `type`, `comment`) VALUES
|
||||
(42256, 51655, 0, 'BOTM - Create Empty Brew Bottle'),
|
||||
(42255, 51655, 0, 'BOTM - Create Empty Brew Bottle'),
|
||||
(42254, 51655, 0, 'BOTM - Create Empty Brew Bottle'),
|
||||
(43961, 51655, 0, 'BOTM - Create Empty Brew Bottle'),
|
||||
(42263, 51655, 0, 'BOTM - Create Empty Brew Bottle'),
|
||||
(42257, 51655, 0, 'BOTM - Create Empty Brew Bottle'),
|
||||
(43959, 51655, 0, 'BOTM - Create Empty Brew Bottle'),
|
||||
(42264, 51655, 0, 'BOTM - Create Empty Brew Bottle'),
|
||||
(42259, 51655, 0, 'BOTM - Create Empty Brew Bottle'),
|
||||
(42260, 51655, 0, 'BOTM - Create Empty Brew Bottle'),
|
||||
(42258, 51655, 0, 'BOTM - Create Empty Brew Bottle'),
|
||||
(42261, 51655, 0, 'BOTM - Create Empty Brew Bottle');
|
||||
@@ -0,0 +1,84 @@
|
||||
UPDATE `creature_template` SET `AIName`= 'SmartAI',`ScriptName`= '' WHERE `entry` IN(29491,28994,28721,28725,33027,28727,28715,28714,28726,29523,28989,28997,28723,28718);
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid` IN(29491,28994,28721,28725,33027,28727,28715,28714,28726,29523,28989,28997,28723,28718) and `source_type`=0;
|
||||
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(29491, 0, 0, 0, 10, 0, 100, 0, 1, 20, 30000, 120000, 1, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Karandonna - OOC LOS - Say Line'),
|
||||
(28994, 0, 0, 0, 10, 0, 100, 0, 1, 20, 30000, 120000, 1, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Abra Cadabra - OOC LOS - Say Line'),
|
||||
(28721, 0, 0, 0, 10, 0, 100, 0, 1, 20, 30000, 120000, 1, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Tiffany Cartier - OOC LOS - Say Line'),
|
||||
(28727, 0, 0, 0, 10, 0, 100, 0, 1, 20, 30000, 120000, 1, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Edward Egan - OOC LOS - Say Line'),
|
||||
(33027, 0, 0, 0, 10, 0, 100, 0, 1, 20, 30000, 120000, 1, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Jessica Sellers - OOC LOS - Say Line'),
|
||||
(28725, 0, 0, 0, 10, 0, 100, 0, 1, 20, 30000, 120000, 1, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Patricia Egan - OOC LOS - Say Line'),
|
||||
(28715, 0, 0, 0, 10, 0, 100, 0, 1, 20, 30000, 120000, 1, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Endora Moorehead - OOC LOS - Say Line'),
|
||||
(28714, 0, 0, 0, 10, 0, 100, 0, 1, 20, 30000, 120000, 1, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Ildine Sorrowspear - OOC LOS - Say Line'),
|
||||
(28726, 0, 0, 0, 10, 0, 100, 0, 1, 20, 30000, 120000, 1, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Dominique Stefano - OOC LOS - Say Line'),
|
||||
(29523, 0, 0, 0, 10, 0, 100, 0, 1, 20, 30000, 120000, 1, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Bragund Brightlink - OOC LOS - Say Line'),
|
||||
(28989, 0, 0, 0, 10, 0, 100, 0, 1, 20, 30000, 120000, 1, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Aemara - OOC LOS - Say Line'),
|
||||
(28997, 0, 0, 0, 10, 0, 100, 0, 1, 20, 30000, 120000, 1, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Griselda Hunderland - OOC LOS - Say Line'),
|
||||
(28723, 0, 0, 0, 10, 0, 100, 0, 1, 20, 30000, 120000, 1, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Larana Drome - OOC LOS - Say Line'),
|
||||
(28718, 0, 0, 0, 10, 0, 100, 0, 1, 20, 30000, 120000, 1, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Ranid Glowergold - OOC LOS - Say Line');
|
||||
|
||||
DELETE FROM `creature_text` WHERE `entry` IN(29491,28994,28721,28725,33027,28727,28715,28714,28726,29523,28989,28997,28723,28718);
|
||||
|
||||
INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `comment`, `BroadcastTextID`) VALUES
|
||||
(29491, 0, 0, 'Welcome. May I help you find something?', 12, 0, 100, 3, 0, 0, 'Karandonna', 32811),
|
||||
(29491, 0, 1, 'Welcome.', 12, 0, 100, 3, 0, 0, 'Karandonna',32936),
|
||||
(28994, 0, 0, 'Greetings.', 12, 0, 100, 3, 0, 0, 'Abra Cadabra',32935),
|
||||
(28994, 0, 1, 'Welcome. May I help you find something?', 12, 0, 100, 3, 0, 0, 'Abra Cadabra',32811),
|
||||
(28994, 0, 2, 'Welcome.', 12, 0, 100, 3, 0, 0, 'Abra Cadabra',32936),
|
||||
(28994, 0, 3, 'Let me know if you need help finding anything, $c.', 12, 0, 100, 3, 0, 0, 'Abra Cadabra',32810),
|
||||
(28721, 0, 0, 'Greetings! Please have a look around.', 12, 0, 100, 3, 0, 0, 'Tiffany Cartier',32809),
|
||||
(28721, 0, 1, 'Greetings, $c.', 12, 0, 100, 3, 0, 0, 'Tiffany Cartier',32808),
|
||||
(28721, 0, 2, 'Greetings.', 12, 0, 100, 3, 0, 0, 'Tiffany Cartier',32935),
|
||||
(28721, 0, 3, 'Let me know if you need help finding anything, $c.', 12, 0, 100, 3, 0, 0, 'Tiffany Cartier',32810),
|
||||
(28721, 0, 4, 'Welcome.', 12, 0, 100, 3, 0, 0, 'Tiffany Cartier',32936),
|
||||
(28721, 0, 5, 'Welcome. May I help you find something?', 12, 0, 100, 3, 0, 0, 'Tiffany Cartier',32811),
|
||||
(28725, 0, 0, 'Welcome. May I help you find something?', 12, 0, 100, 3, 0, 0, 'Patricia Egan',32811),
|
||||
(28725, 0, 1, 'Welcome.', 12, 0, 100, 3, 0, 0, 'Patricia Egan',32936),
|
||||
(28725, 0, 2, 'Greetings! Please have a look around.', 12, 0, 100, 3, 0, 0, 'Patricia Egan',32809),
|
||||
(28725, 0, 3, 'Welcome!', 12, 0, 100, 3, 0, 0, 'Patricia Egan',32807),
|
||||
(33027, 0, 0, 'Let me know if you need help finding anything, $c.', 12, 0, 100, 3, 0, 0, 'Jessica Sellers',32810),
|
||||
(33027, 0, 1, 'Greetings, $c.', 12, 0, 100, 3, 0, 0, 'Jessica Sellers',32808),
|
||||
(33027, 0, 2, 'Welcome. May I help you find something?', 12, 0, 100, 3, 0, 0, 'Jessica Sellers',32811),
|
||||
(33027, 0, 3, 'Greetings! Please have a look around.', 12, 0, 100, 3, 0, 0, 'Jessica Sellers',32809),
|
||||
(33027, 0, 4, 'Welcome.', 12, 0, 100, 3, 0, 0, 'Jessica Sellers',32936),
|
||||
(28727, 0, 0, 'Welcome!', 12, 0, 100, 3, 0, 0, 'Edward Egan',32807),
|
||||
(28727, 0, 1, 'Greetings.', 12, 0, 100, 3, 0, 0, 'Edward Egan',32935),
|
||||
(28727, 0, 2, 'Welcome. May I help you find something?', 12, 0, 100, 3, 0, 0, 'Edward Egan',32811),
|
||||
(28727, 0, 3, 'Greetings! Please have a look around.', 12, 0, 100, 3, 0, 0, 'Edward Egan', 32809),
|
||||
(28715, 0, 0, 'Greetings! Please have a look around.', 12, 0, 100, 3, 0, 0, 'Endora Moorehead',32809),
|
||||
(28715, 0, 1, 'Greetings, $c.', 12, 0, 100, 3, 0, 0, 'Endora Moorehead',32808),
|
||||
(28715, 0, 2, 'Welcome!', 12, 0, 100, 3, 0, 0, 'Endora Moorehead',32807),
|
||||
(28714, 0, 0, 'Welcome.', 12, 0, 100, 3, 0, 0, 'Ildine Sorrowspear',32936),
|
||||
(28714, 0, 1, 'Greetings.', 12, 0, 100, 3, 0, 0, 'Ildine Sorrowspear',32935),
|
||||
(28714, 0, 2, 'Let me know if you need help finding anything, $c.', 12, 0, 100, 3, 0, 0, 'Ildine Sorrowspear',32810),
|
||||
(28726, 0, 0, 'Greetings! Please have a look around.', 12, 0, 100, 3, 0, 0, 'Dominique Stefano',32809),
|
||||
(28726, 0, 1, 'Welcome!', 12, 0, 100, 3, 0, 0, 'Dominique Stefano',32807),
|
||||
(28726, 0, 2, 'Greetings, $c.', 12, 0, 100, 3, 0, 0, 'Dominique Stefano',32808),
|
||||
(28726, 0, 3, 'Welcome. May I help you find something?', 12, 0, 100, 3, 0, 0, 'Dominique Stefano',32811),
|
||||
(28726, 0, 4, 'Greetings.', 12, 0, 100, 3, 0, 0, 'Dominique Stefano',32935),
|
||||
(28726, 0, 5, 'Let me know if you need help finding anything, $c.', 12, 0, 100, 3, 0, 0, 'Dominique Stefano',32810),
|
||||
(29523, 0, 0, 'Welcome.', 12, 0, 100, 3, 0, 0, 'Bragund Brightlink',32936),
|
||||
(29523, 0, 1, 'Welcome!', 12, 0, 100, 3, 0, 0, 'Bragund Brightlink',32807),
|
||||
(29523, 0, 2, 'Greetings! Please have a look around.', 12, 0, 100, 3, 0, 0, 'Bragund Brightlink',32809),
|
||||
(29523, 0, 3, 'Let me know if you need help finding anything, $c.', 12, 0, 100, 3, 0, 0, 'Bragund Brightlink',32810),
|
||||
(28989, 0, 0, 'Greetings! Please have a look around.', 12, 0, 100, 3, 0, 0, 'Aemara',32809),
|
||||
(28989, 0, 1, 'Greetings.', 12, 0, 100, 3, 0, 0, 'Aemara',32935),
|
||||
(28989, 0, 2, 'Welcome. May I help you find something?', 12, 0, 100, 3, 0, 0, 'Aemara',32811),
|
||||
(28989, 0, 3, 'Greetings, $c.', 12, 0, 100, 3, 0, 0, 'Aemara',32808),
|
||||
(28989, 0, 4, 'Let me know if you need help finding anything, $c.', 12, 0, 100, 3, 0, 0, 'Aemara',32810),
|
||||
(28989, 0, 5, 'Welcome.', 12, 0, 100, 3, 0, 0, 'Aemara',32936),
|
||||
(28997, 0, 0, 'Greetings, $c.', 12, 0, 100, 3, 0, 0, 'Griselda Hunderland',32808),
|
||||
(28997, 0, 1, 'Let me know if you need help finding anything, $c.', 12, 0, 100, 3, 0, 0, 'Griselda Hunderland',32810),
|
||||
(28997, 0, 2, 'Greetings.', 12, 0, 100, 3, 0, 0, 'Griselda Hunderland',32935),
|
||||
(28997, 0, 3, 'Welcome!', 12, 0, 100, 3, 0, 0, 'Griselda Hunderland',32807),
|
||||
(28723, 0, 0, 'Greetings, $c.', 12, 0, 100, 3, 0, 0, 'Larana Drome',32808),
|
||||
(28723, 0, 1, 'Greetings.', 12, 0, 100, 3, 0, 0, 'Larana Drome',32935),
|
||||
(28723, 0, 2, 'Welcome.', 12, 0, 100, 3, 0, 0, 'Larana Drome',32936),
|
||||
(28718, 0, 0, 'Welcome!', 12, 0, 100, 3, 0, 0, 'Ranid Glowergold',32807),
|
||||
(28718, 0, 1, 'Greetings.', 12, 0, 100, 3, 0, 0, 'Ranid Glowergold',32935),
|
||||
(28718, 0, 2, 'Welcome. May I help you find something?', 12, 0, 100, 3, 0, 0, 'Ranid Glowergold',32811),
|
||||
(28718, 0, 3, 'Let me know if you need help finding anything, $c.', 12, 0, 100, 3, 0, 0, 'Ranid Glowergold',32810),
|
||||
(28718, 0, 4, 'Greetings! Please have a look around.', 12, 0, 100, 3, 0, 0, 'Ranid Glowergold',32809),
|
||||
(28718, 0, 5, 'Greetings, $c.', 12, 0, 100, 3, 0, 0, 'Ranid Glowergold',32808),
|
||||
(28718, 0, 6, 'Welcome.', 12, 0, 100, 3, 0, 0, 'Ranid Glowergold',32936);
|
||||
@@ -0,0 +1,191 @@
|
||||
SET @CGUID := 74528;
|
||||
|
||||
DELETE FROM `creature` WHERE `guid` BETWEEN @CGUID AND @CGUID+10;
|
||||
INSERT INTO `creature` (`guid`, `id`, `map`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `spawndist`, `MovementType`) VALUES
|
||||
(@CGUID+0, 28332, 571, 1, 1, 5711.057, 645.7639, 672.0823, 0, 120, 0, 0), -- top
|
||||
(@CGUID+1, 28332, 571, 1, 1, 5713.228, 646.6321, 653.1444, 0, 120, 0, 0),
|
||||
(@CGUID+2, 28332, 571, 1, 1, 5713.016, 648.0272, 657.1592, 0, 120, 0, 0),
|
||||
(@CGUID+3, 28332, 571, 1, 1, 5710.699, 648.6166, 656.5358, 0, 120, 0, 0),
|
||||
(@CGUID+4, 28332, 571, 1, 1, 5711.029, 645.7101, 653.7773, 0, 120, 0, 0),
|
||||
(@CGUID+5, 28332, 571, 1, 1, 5712.544, 644.6033, 656.4701, 0, 120, 0, 0),
|
||||
(@CGUID+6, 28332, 571, 1, 1, 5709.351, 644.943, 655.8727, 0, 120, 0, 0),
|
||||
(@CGUID+7, 28332, 571, 1, 1, 5711.693, 645.9358, 737.1865, 0, 120, 0, 0),
|
||||
(@CGUID+8, 28332, 571, 1, 1, 5711.447, 646.1441, 761.046, 0, 120, 0, 0),
|
||||
(@CGUID+9, 28332, 571, 1, 1, 5711.718, 645.9705, 796.1944, 0, 120, 0, 0),
|
||||
(@CGUID+10, 28332, 571, 1, 1, 5711.647, 645.8472, 856.7622, 0, 120, 0, 0);
|
||||
|
||||
UPDATE `creature_template` SET `ainame`='SmartAI', `scriptname`='' WHERE `entry` IN(34044,16128,28332,30116);
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid` IN(34044,16128,28332,30116) AND `source_type`=0;
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid` IN(-@CGUID-0,-@CGUID-1,-@CGUID-2,-@CGUID-3,-@CGUID-4,-@CGUID-5,-@CGUID-6,-@CGUID-7,-@CGUID-8,-@CGUID-9,-@CGUID-10) AND `source_type`=0;
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid` IN(1612800,1612801,1612802,2833200,3011600) AND `source_type`=9;
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(30116, 0, 0, 0, 38, 0, 100, 0, 1, 1, 0, 0, 80, 3011600, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Archmage Aethas Sunreaver <Kirin Tor> - On Data Set - Run Script'), -- On retail Rhonin teleports back to original position since on tc teleport does not work for npcs this script is to respawn rhonin otherwise takes a long time to respawn.
|
||||
|
||||
(16128, 0, 0, 5, 20, 0, 100, 0, 13631, 0, 0, 0, 80, 1612800, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Rhonin - On Quest Reward (All Is Well That Ends Well) - Run Script'),
|
||||
(16128, 0, 1, 5, 20, 0, 100, 0, 13819, 0, 0, 0, 80, 1612800, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Rhonin - On Quest Reward (Heroic: All Is Well That Ends Well) - Run Script'),
|
||||
(16128, 0, 2, 0, 38, 0, 100, 0, 1, 1, 0, 0, 80, 1612801, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Rhonin - On Data Set 1 1 - Run Script 2'),
|
||||
(16128, 0, 3, 0, 40, 0, 100, 0, 11, 16128, 0, 0, 80, 1612802, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Rhonin - On Reached WP11 - Run Script 3'),
|
||||
(16128, 0, 4, 5, 38, 0, 100, 0, 6, 6, 0, 0, 80, 1612800, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Rhonin - On Quest Reward (All Is Well That Ends Well) - Run Script'),
|
||||
(16128, 0, 5, 0, 61, 0, 100, 0, 0, 0, 0, 0, 45, 1, 1, 0, 0, 0, 0, 19, 30116, 0, 0, 0, 0, 0, 0, 'Rhonin - Link - Set Data to Archmage Aethas Sunreaver <Kirin Tor>'), -- To trigger respawn script
|
||||
(34044, 0, 0, 0, 54, 0, 100, 0, 0, 0, 0, 0, 53, 0, 34044, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brann Bronzebeard - On On Spawn - Start WP'),
|
||||
(34044, 0, 1, 2, 40, 0, 100, 0, 11, 34044, 0, 0, 54, 4000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brann Bronzebeard - On Reached WP13 - Pause WP'),
|
||||
(34044, 0, 2, 3, 61, 0, 100, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brann Bronzebeard - On Reached WP13 - Say Line 1'),
|
||||
(34044, 0, 3, 0, 61, 0, 100, 0, 0, 0, 0, 0, 45, 1, 1, 0, 0, 0, 0, 19, 16128, 0, 0, 0, 0, 0, 0, 'Brann Bronzebeard - On Reached WP13 - Set Data On Rhonin'),
|
||||
(34044, 0, 4, 0, 38, 0, 100, 0, 1, 1, 0, 0, 41, 5000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brann Bronzebeard - On Data Set - Despawn'),
|
||||
(-@CGUID-1, 0, 0, 0, 38, 0, 100, 0, 32, 32, 0, 0, 11, 64367, 0, 0, 0, 0, 0, 9, 28332, 20, 200, 0, 0, 0, 0, 'Generic Trigger LAB (Large AOI) - On Data Set - Cast Algalon Event Beam'),
|
||||
(-@CGUID-2, 0, 0, 0, 38, 0, 100, 0, 32, 32, 0, 0, 11, 64367, 0, 0, 0, 0, 0, 9, 28332, 20, 200, 0, 0, 0, 0, 'Generic Trigger LAB (Large AOI) - On Data Set - Cast Algalon Event Beam'),
|
||||
(-@CGUID-3, 0, 0, 0, 38, 0, 100, 0, 32, 32, 0, 0, 11, 64367, 0, 0, 0, 0, 0, 9, 28332, 20, 200, 0, 0, 0, 0, 'Generic Trigger LAB (Large AOI) - On Data Set - Cast Algalon Event Beam'),
|
||||
(-@CGUID-4, 0, 0, 0, 38, 0, 100, 0, 32, 32, 0, 0, 11, 64367, 0, 0, 0, 0, 0, 9, 28332, 20, 200, 0, 0, 0, 0, 'Generic Trigger LAB (Large AOI) - On Data Set - Cast Algalon Event Beam'),
|
||||
(-@CGUID-5, 0, 0, 0, 38, 0, 100, 0, 32, 32, 0, 0, 11, 64367, 0, 0, 0, 0, 0, 9, 28332, 20, 200, 0, 0, 0, 0, 'Generic Trigger LAB (Large AOI) - On Data Set - Cast Algalon Event Beam'),
|
||||
(-@CGUID-6, 0, 0, 0, 38, 0, 100, 0, 32, 32, 0, 0, 11, 64367, 0, 0, 0, 0, 0, 9, 28332, 20, 200, 0, 0, 0, 0, 'Generic Trigger LAB (Large AOI) - On Data Set - Cast Algalon Event Beam'),
|
||||
(-@CGUID-0, 0, 0, 0, 38, 0, 100, 0, 30, 30, 0, 0, 11, 64580, 2, 0, 0, 0, 0, 10, @CGUID+7, 28332, 0, 0, 0, 0, 0, 'Generic Trigger LAB (Large AOI) - On Data Set - Cast Reply-Code Alpha (Phase 2)'),
|
||||
(-@CGUID-7, 0, 0, 0, 38, 0, 100, 0, 30, 30, 0, 0, 11, 64580, 2, 0, 0, 0, 0, 10, @CGUID+8, 28332, 0, 0, 0, 0, 0, 'Generic Trigger LAB (Large AOI) - On Data Set - Cast Reply-Code Alpha (Phase 2)'),
|
||||
(-@CGUID-8, 0, 0, 0, 38, 0, 100, 0, 30, 30, 0, 0, 11, 64580, 2, 0, 0, 0, 0, 10, @CGUID+9, 28332, 0, 0, 0, 0, 0, 'Generic Trigger LAB (Large AOI) - On Data Set - Cast Reply-Code Alpha (Phase 2)'),
|
||||
(-@CGUID-9, 0, 0, 0, 38, 0, 100, 0, 30, 30, 0, 0, 11, 64580, 2, 0, 0, 0, 0, 10, @CGUID+10, 28332, 0, 0, 0, 0, 0, 'Generic Trigger LAB (Large AOI) - On Data Set - Cast Reply-Code Alpha (Phase 2)'),
|
||||
(-@CGUID-10, 0, 0, 0, 38, 0, 100, 0, 29, 29, 0, 0, 11, 64581, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Generic Trigger LAB (Large AOI) - On Data Set - Cast Reply-Code Alpha (Phase 2)'),
|
||||
(-@CGUID-10, 0, 1, 0, 38, 0, 100, 0, 31, 31, 0, 0, 11, 64510, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Generic Trigger LAB (Large AOI) - On Data Set - Cast Reply-Code Alpha (Phase 2)'),
|
||||
(-@CGUID-0, 0, 1, 0, 38, 0, 100, 0, 28, 28, 0, 0, 80, 2833200, 2, 0, 0, 0, 0, 9, 28332, 20, 200, 0, 0, 0, 0, 'Generic Trigger LAB (Large AOI) - On Data Set - Run Script'),
|
||||
(-@CGUID-1, 0, 1, 0, 38, 0, 100, 0, 28, 28, 0, 0, 80, 2833200, 2, 0, 0, 0, 0, 9, 28332, 20, 200, 0, 0, 0, 0, 'Generic Trigger LAB (Large AOI) - On Data Set - Run Script'),
|
||||
(-@CGUID-2, 0, 1, 0, 38, 0, 100, 0, 28, 28, 0, 0, 80, 2833200, 2, 0, 0, 0, 0, 9, 28332, 20, 200, 0, 0, 0, 0, 'Generic Trigger LAB (Large AOI) - On Data Set - Run Script'),
|
||||
(-@CGUID-3, 0, 1, 0, 38, 0, 100, 0, 28, 28, 0, 0, 80, 2833200, 2, 0, 0, 0, 0, 9, 28332, 20, 200, 0, 0, 0, 0, 'Generic Trigger LAB (Large AOI) - On Data Set - Run Script'),
|
||||
(-@CGUID-4, 0, 1, 0, 38, 0, 100, 0, 28, 28, 0, 0, 80, 2833200, 2, 0, 0, 0, 0, 9, 28332, 20, 200, 0, 0, 0, 0, 'Generic Trigger LAB (Large AOI) - On Data Set - Run Script'),
|
||||
(-@CGUID-5, 0, 1, 0, 38, 0, 100, 0, 28, 28, 0, 0, 80, 2833200, 2, 0, 0, 0, 0, 9, 28332, 20, 200, 0, 0, 0, 0, 'Generic Trigger LAB (Large AOI) - On Data Set - Run Script'),
|
||||
(-@CGUID-6, 0, 1, 0, 38, 0, 100, 0, 28, 28, 0, 0, 80, 2833200, 2, 0, 0, 0, 0, 9, 28332, 20, 200, 0, 0, 0, 0, 'Generic Trigger LAB (Large AOI) - On Data Set - Run Script'),
|
||||
(-@CGUID-7, 0, 1, 0, 38, 0, 100, 0, 28, 28, 0, 0, 80, 2833200, 2, 0, 0, 0, 0, 9, 28332, 20, 200, 0, 0, 0, 0, 'Generic Trigger LAB (Large AOI) - On Data Set - Run Script'),
|
||||
(-@CGUID-8, 0, 1, 0, 38, 0, 100, 0, 28, 28, 0, 0, 80, 2833200, 2, 0, 0, 0, 0, 9, 28332, 20, 200, 0, 0, 0, 0, 'Generic Trigger LAB (Large AOI) - On Data Set - Run Script'),
|
||||
(-@CGUID-9, 0, 1, 0, 38, 0, 100, 0, 28, 28, 0, 0, 80, 2833200, 2, 0, 0, 0, 0, 9, 28332, 20, 200, 0, 0, 0, 0, 'Generic Trigger LAB (Large AOI) - On Data Set - Run Script'),
|
||||
(-@CGUID-10, 0, 2, 0, 38, 0, 100, 0, 28, 28, 0, 0, 80, 2833200, 2, 0, 0, 0, 0, 9, 28332, 20, 200, 0, 0, 0, 0, 'Generic Trigger LAB (Large AOI) - On Data Set - Run Script'),
|
||||
(3011600, 9, 0, 0, 0, 0, 100, 0, 205000, 205000, 0, 0, 70, 0, 0, 0, 0, 0, 0, 10, 95366, 16128, 0, 0, 0, 0, 0, 'Archmage Aethas Sunreaver <Kirin Tor> - Script - Respawn Rhonin'),
|
||||
(2833200, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 28, 64367, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Generic Trigger LAB - Script - Remove aura'),
|
||||
(2833200, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 28, 64510, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Generic Trigger LAB - Script - Remove aura'),
|
||||
(2833200, 9, 2, 0, 0, 0, 100, 0, 0, 0, 0, 0, 28, 64580, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Generic Trigger LAB - Script - Remove aura'),
|
||||
(1612800, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Rhonin - Script - Set NPC Flags'),
|
||||
(1612800, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 12, 34044, 1, 300000, 0, 0, 0, 8, 0, 0, 0, 5800.296, 822.4527, 668.519, 4.812811, 'Rhonin - Script - Summon Brann Bronzebeard'),
|
||||
(1612800, 9, 2, 0, 0, 0, 100, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 'Rhonin - Script - Say Line 1'),
|
||||
(1612801, 9, 0, 0, 0, 0, 100, 0, 4000, 4000, 0, 0, 53, 0, 16128, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Rhonin - Script 2 - Start WP'),
|
||||
(1612802, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 45, 32, 32, 0, 0, 0, 0, 10, @CGUID+1, 28332, 0, 0, 0, 0, 0, 'Rhonin - Script 3 - Set Data on Generic Trigger LAB (Large AOI)'),
|
||||
(1612802, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 45, 32, 32, 0, 0, 0, 0, 10, @CGUID+2, 28332, 0, 0, 0, 0, 0, 'Rhonin - Script 3 - Set Data on Generic Trigger LAB (Large AOI)'),
|
||||
(1612802, 9, 2, 0, 0, 0, 100, 0, 0, 0, 0, 0, 45, 32, 32, 0, 0, 0, 0, 10, @CGUID+3, 28332, 0, 0, 0, 0, 0, 'Rhonin - Script 3 - Set Data on Generic Trigger LAB (Large AOI)'),
|
||||
(1612802, 9, 3, 0, 0, 0, 100, 0, 0, 0, 0, 0, 45, 32, 32, 0, 0, 0, 0, 10, @CGUID+4, 28332, 0, 0, 0, 0, 0, 'Rhonin - Script 3 - Set Data on Generic Trigger LAB (Large AOI)'),
|
||||
(1612802, 9, 4, 0, 0, 0, 100, 0, 0, 0, 0, 0, 45, 32, 32, 0, 0, 0, 0, 10, @CGUID+5, 28332, 0, 0, 0, 0, 0, 'Rhonin - Script 3 - Set Data on Generic Trigger LAB (Large AOI)'),
|
||||
(1612802, 9, 5, 0, 0, 0, 100, 0, 0, 0, 0, 0, 45, 32, 32, 0, 0, 0, 0, 10, @CGUID+6, 28332, 0, 0, 0, 0, 0, 'Rhonin - Script 3 - Set Data on Generic Trigger LAB (Large AOI)'),
|
||||
(1612802, 9, 6, 0, 0, 0, 100, 0, 0, 0, 0, 0, 45, 30, 30, 0, 0, 0, 0, 10, @CGUID+0, 28332, 0, 0, 0, 0, 0, 'Rhonin - Script 3 - Set Data on Generic Trigger LAB (Large AOI)'),
|
||||
(1612802, 9, 7, 0, 0, 0, 100, 0, 0, 0, 0, 0, 45, 30, 30, 0, 0, 0, 0, 10, @CGUID+7, 28332, 0, 0, 0, 0, 0, 'Rhonin - Script 3 - Set Data on Generic Trigger LAB (Large AOI)'),
|
||||
(1612802, 9, 8, 0, 0, 0, 100, 0, 0, 0, 0, 0, 45, 30, 30, 0, 0, 0, 0, 10, @CGUID+8, 28332, 0, 0, 0, 0, 0, 'Rhonin - Script 3 - Set Data on Generic Trigger LAB (Large AOI)'),
|
||||
(1612802, 9, 9, 0, 0, 0, 100, 0, 0, 0, 0, 0, 45, 30, 30, 0, 0, 0, 0, 10, @CGUID+9, 28332, 0, 0, 0, 0, 0, 'Rhonin - Script 3 - Set Data on Generic Trigger LAB (Large AOI)'),
|
||||
(1612802, 9, 10, 0, 0, 0, 100, 0, 0, 0, 0, 0, 45, 31, 31, 0, 0, 0, 0, 10, @CGUID+10, 28332, 0, 0, 0, 0, 0, 'Rhonin - Script 3 - Set Data on Generic Trigger LAB (Large AOI)'),
|
||||
(1612802, 9, 11, 0, 0, 0, 100, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Rhonin - Script 3 - Say Line 2'),
|
||||
(1612802, 9, 12, 0, 0, 0, 100, 0, 10000, 10000, 0, 0, 1, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Rhonin - Script 3 - Say Line 3'),
|
||||
(1612802, 9, 13, 0, 0, 0, 100, 0, 10000, 10000, 0, 0, 1, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Rhonin - Script 3 - Say Line 3'),
|
||||
(1612802, 9, 14, 0, 0, 0, 100, 0, 10000, 10000, 0, 0, 1, 4, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Rhonin - Script 3 - Say Line 3'),
|
||||
(1612802, 9, 15, 0, 0, 0, 100, 0, 8000, 8000, 0, 0, 1, 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Rhonin - Script 3 - Say Line 3'),
|
||||
(1612802, 9, 16, 0, 0, 0, 100, 0, 10000, 10000, 0, 0, 1, 6, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Rhonin - Script 3 - Say Line 3'),
|
||||
(1612802, 9, 17, 0, 0, 0, 100, 0, 14000, 14000, 0, 0, 1, 7, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Rhonin - Script 3 - Say Line 3'),
|
||||
(1612802, 9, 18, 0, 0, 0, 100, 0, 60000, 60000, 0, 0, 45, 29, 29, 0, 0, 0, 0, 10, @CGUID+10, 28332, 0, 0, 0, 0, 0, 'Rhonin - Script 3 - Set Data on Generic Trigger LAB (Large AOI)'),
|
||||
(1612802, 9, 19, 0, 0, 0, 100, 0, 0, 0, 0, 0, 45, 28, 28, 0, 0, 0, 0, 10, @CGUID+0, 28332, 0, 0, 0, 0, 0, 'Rhonin - Script 3 - Set Data on Generic Trigger LAB (Large AOI)'),
|
||||
(1612802, 9, 20, 0, 0, 0, 100, 0, 0, 0, 0, 0, 45, 28, 28, 0, 0, 0, 0, 10, @CGUID+1, 28332, 0, 0, 0, 0, 0, 'Rhonin - Script 3 - Set Data on Generic Trigger LAB (Large AOI)'),
|
||||
(1612802, 9, 21, 0, 0, 0, 100, 0, 0, 0, 0, 0, 45, 28, 28, 0, 0, 0, 0, 10, @CGUID+2, 28332, 0, 0, 0, 0, 0, 'Rhonin - Script 3 - Set Data on Generic Trigger LAB (Large AOI)'),
|
||||
(1612802, 9, 22, 0, 0, 0, 100, 0, 0, 0, 0, 0, 45, 28, 28, 0, 0, 0, 0, 10, @CGUID+3, 28332, 0, 0, 0, 0, 0, 'Rhonin - Script 3 - Set Data on Generic Trigger LAB (Large AOI)'),
|
||||
(1612802, 9, 23, 0, 0, 0, 100, 0, 0, 0, 0, 0, 45, 28, 28, 0, 0, 0, 0, 10, @CGUID+4, 28332, 0, 0, 0, 0, 0, 'Rhonin - Script 3 - Set Data on Generic Trigger LAB (Large AOI)'),
|
||||
(1612802, 9, 24, 0, 0, 0, 100, 0, 0, 0, 0, 0, 45, 28, 28, 0, 0, 0, 0, 10, @CGUID+5, 28332, 0, 0, 0, 0, 0, 'Rhonin - Script 3 - Set Data on Generic Trigger LAB (Large AOI)'),
|
||||
(1612802, 9, 25, 0, 0, 0, 100, 0, 0, 0, 0, 0, 45, 28, 28, 0, 0, 0, 0, 10, @CGUID+6, 28332, 0, 0, 0, 0, 0, 'Rhonin - Script 3 - Set Data on Generic Trigger LAB (Large AOI)'),
|
||||
(1612802, 9, 26, 0, 0, 0, 100, 0, 0, 0, 0, 0, 45, 28, 28, 0, 0, 0, 0, 10, @CGUID+7, 28332, 0, 0, 0, 0, 0, 'Rhonin - Script 3 - Set Data on Generic Trigger LAB (Large AOI)'),
|
||||
(1612802, 9, 27, 0, 0, 0, 100, 0, 0, 0, 0, 0, 45, 28, 28, 0, 0, 0, 0, 10, @CGUID+8, 28332, 0, 0, 0, 0, 0, 'Rhonin - Script 3 - Set Data on Generic Trigger LAB (Large AOI)'),
|
||||
(1612802, 9, 28, 0, 0, 0, 100, 0, 0, 0, 0, 0, 45, 28, 28, 0, 0, 0, 0, 10, @CGUID+9, 28332, 0, 0, 0, 0, 0, 'Rhonin - Script 3 - Set Data on Generic Trigger LAB (Large AOI)'),
|
||||
(1612802, 9, 29, 0, 0, 0, 100, 0, 0, 0, 0, 0, 45, 28, 28, 0, 0, 0, 0, 10, @CGUID+10, 28332, 0, 0, 0, 0, 0, 'Rhonin - Script 3 - Set Data on Generic Trigger LAB (Large AOI)'),
|
||||
(1612802, 9, 30, 0, 0, 0, 100, 0, 5000, 5000, 0, 0, 45, 1, 1, 0, 0, 0, 0, 19, 34044, 0, 0, 0, 0, 0, 0, 'Rhonin - Script 3 - Set Data on Brann Bronzebeard'),
|
||||
(1612802, 9, 31, 0, 0, 0, 100, 0, 1000, 1000, 0, 0, 11, 51347, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Rhonin - Script 3 - Set Data on Brann Bronzebeard'),
|
||||
(1612802, 9, 32, 0, 0, 0, 100, 0, 1000, 1000, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Rhonin - Script 3 - Despawn');
|
||||
|
||||
|
||||
|
||||
DELETE FROM `creature_text` WHERE `entry` IN(34044,16128);
|
||||
INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `comment`, `BroadcastTextID`) VALUES
|
||||
(34044, 0, 0, 'Just in time. Let''s see this thing off, then.', 12, 0, 100, 0, 0, 15826, 'Brann Bronzebeard',34084),
|
||||
(16128, 0, 0, 'We received Brann''s message, and we have begun preparations.', 12, 0, 100, 1, 0, 15649, 'Rhonin',33982),
|
||||
(16128, 1, 0, 'Citizens of Dalaran! Raise your eyes to the skies and observe!', 14, 0, 100, 0, 0, 15650, 'Rhonin',33983),
|
||||
(16128, 2, 0, 'Today our world''s destruction has been averted in defiance of our very makers!', 14, 0, 100, 0, 0, 15651, 'Rhonin',33984),
|
||||
(16128, 3, 0, 'Algalon the Observer, herald of the titans, has been defeated by our brave comrades in the depths of the titan city of Ulduar.', 14, 0, 100, 0, 0, 15652, 'Rhonin',33985),
|
||||
(16128, 4, 0, 'Algalon was sent here to judge the fate of our world.', 14, 0, 100, 0, 0, 15653, 'Rhonin',33986),
|
||||
(16128, 5, 0, 'He found a planet whose races had deviated from the titans'' blueprints. A planet where not everything had gone according to plan.', 14, 0, 100, 0, 0, 15654, 'Rhonin',33987),
|
||||
(16128, 6, 0, 'Cold logic deemed our world not worth saving. Cold logic, however, does not account for the power of free will. It''s up to each of us to prove this is a world worth saving.', 14, 0, 100, 0, 0, 15655, 'Rhonin',33988),
|
||||
(16128, 7, 0, 'That our lives... our lives are worth living.', 14, 0, 100, 0, 0, 15656, 'Rhonin',33989);
|
||||
|
||||
DELETE FROM `waypoints` WHERE `entry` IN(34044,16128);
|
||||
INSERT INTO `waypoints` (`entry`, `pointid`, `position_x`, `position_y`, `position_z`, `point_comment`) VALUES
|
||||
(34044,1, 5799.257, 822.8445, 668.8303,'Brann Bronzebeard'),
|
||||
(34044,2, 5800.257, 822.8445, 668.8303,'Brann Bronzebeard'),
|
||||
(34044,3, 5800.367, 821.7542, 667.9642,'Brann Bronzebeard'),
|
||||
(34044,4, 5800.662, 818.8298, 666.119,'Brann Bronzebeard'),
|
||||
(34044,5, 5801.204, 813.4578, 662.2362,'Brann Bronzebeard'),
|
||||
(34044,6, 5801.204, 813.4578, 662.2362,'Brann Bronzebeard'),
|
||||
(34044,7, 5801.473, 813.3398, 662.5571,'Brann Bronzebeard'),
|
||||
(34044,8, 5801.478, 811.0238, 662.2334,'Brann Bronzebeard'),
|
||||
(34044,9, 5801.978, 807.0238, 662.2334,'Brann Bronzebeard'),
|
||||
(34044,10, 5801.978, 806.2738, 662.2334,'Brann Bronzebeard'),
|
||||
(34044,11, 5800.728, 802.5238, 662.2334,'Brann Bronzebeard'), -- Say 1
|
||||
(34044,12, 5799.999, 799.77, 662.1868,'Brann Bronzebeard'),
|
||||
(34044,13, 5798.749, 789.02, 662.1868,'Brann Bronzebeard'),
|
||||
(34044,14, 5798.749, 787.77, 662.1868,'Brann Bronzebeard'),
|
||||
(34044,15, 5798.499, 786.52, 662.1868,'Brann Bronzebeard'),
|
||||
(34044,16, 5798.366, 786.4135, 662.1921,'Brann Bronzebeard'),
|
||||
(34044,17, 5798.116, 784.4135, 662.1921,'Brann Bronzebeard'),
|
||||
(34044,18, 5797.866, 783.6635, 662.6921,'Brann Bronzebeard'),
|
||||
(34044,19, 5797.866, 779.4135, 662.6921,'Brann Bronzebeard'),
|
||||
(34044,20, 5797.866, 775.6635, 661.9421,'Brann Bronzebeard'),
|
||||
(34044,21, 5797.866, 774.6635, 661.6921,'Brann Bronzebeard'),
|
||||
(34044,22, 5797.628, 774.3326, 661.3541,'Brann Bronzebeard'),
|
||||
(34044,23, 5797.378, 772.5826, 661.3541,'Brann Bronzebeard'),
|
||||
(34044,24, 5797.378, 772.0826, 661.3541,'Brann Bronzebeard'),
|
||||
(34044,25, 5796.628, 766.8326, 661.6041,'Brann Bronzebeard'),
|
||||
(34044,26, 5796.378, 761.8326, 658.3541,'Brann Bronzebeard'),
|
||||
(34044,27, 5795.75, 756.938, 654.6126,'Brann Bronzebeard'),
|
||||
(34044,28, 5795.75, 754.438, 652.8626,'Brann Bronzebeard'),
|
||||
(34044,29, 5795.75, 745.438, 646.8626,'Brann Bronzebeard'),
|
||||
(34044,30, 5795.75, 737.188, 640.8626,'Brann Bronzebeard'),
|
||||
(34044,31, 5795.75, 736.188, 640.6126,'Brann Bronzebeard'),
|
||||
(34044,32, 5795.629, 732.4694, 640.3873,'Brann Bronzebeard'),
|
||||
(34044,33, 5795.379, 731.2194, 640.3873,'Brann Bronzebeard'),
|
||||
(34044,34, 5794.879, 722.7194, 640.6373,'Brann Bronzebeard'),
|
||||
(34044,35, 5794.379, 720.2194, 640.6373,'Brann Bronzebeard'),
|
||||
(34044,36, 5794.141, 719.7362, 641.0156,'Brann Bronzebeard'),
|
||||
(34044,37, 5794.141, 719.4862, 641.0156,'Brann Bronzebeard'),
|
||||
(34044,38, 5793.391, 718.2362, 641.0156,'Brann Bronzebeard'),
|
||||
(34044,39, 5792.141, 716.7362, 641.0156,'Brann Bronzebeard'),
|
||||
(34044,40, 5788.391, 710.9862, 641.5156,'Brann Bronzebeard'),
|
||||
(34044,41, 5784.409, 705.4751, 642.0784,'Brann Bronzebeard'),
|
||||
(34044,42, 5780.409, 699.9751, 642.3284,'Brann Bronzebeard'),
|
||||
(34044,43, 5778.909, 697.9751, 642.5784,'Brann Bronzebeard'),
|
||||
(34044,44, 5778.659, 697.4751, 642.5784,'Brann Bronzebeard'),
|
||||
(34044,45, 5773.409, 690.4751, 642.8284,'Brann Bronzebeard'),
|
||||
(34044,46, 5772.659, 689.2251, 642.8284,'Brann Bronzebeard'),
|
||||
(34044,47, 5772.451, 688.9385, 643.1041,'Brann Bronzebeard'),
|
||||
(34044,48, 5769.951, 685.9385, 643.1041,'Brann Bronzebeard'),
|
||||
(34044,49, 5767.951, 683.4385, 643.1041,'Brann Bronzebeard'),
|
||||
(34044,50, 5761.951, 676.6885, 642.8541,'Brann Bronzebeard'),
|
||||
(34044,51, 5758.701, 672.6885, 643.1041,'Brann Bronzebeard'),
|
||||
(34044,52, 5757.701, 671.9385, 643.1041,'Brann Bronzebeard'),
|
||||
(34044,53, 5756.951, 670.9385, 643.1041,'Brann Bronzebeard'),
|
||||
(34044,54, 5755.701, 669.4385, 643.1041,'Brann Bronzebeard'),
|
||||
(34044,55, 5754.951, 668.6885, 643.3541,'Brann Bronzebeard'),
|
||||
(34044,56, 5750.951, 663.9385, 643.6041,'Brann Bronzebeard'),
|
||||
(34044,57, 5750.721, 663.7521, 643.809,'Brann Bronzebeard'),
|
||||
(34044,58, 5750.221, 663.2521, 643.809,'Brann Bronzebeard'),
|
||||
(34044,59, 5745.221, 659.0021, 644.559,'Brann Bronzebeard'),
|
||||
(34044,60, 5740.221, 654.7521, 645.559,'Brann Bronzebeard'),
|
||||
(34044,61, 5740.14, 654.6359, 645.801,'Brann Bronzebeard'),
|
||||
(34044,62, 5736.89, 651.8859, 646.051,'Brann Bronzebeard'),
|
||||
(34044,63, 5734.89, 651.1359, 646.301,'Brann Bronzebeard'),
|
||||
(34044,64, 5731.39, 649.8859, 646.801,'Brann Bronzebeard'),
|
||||
(16128,1, 5797.603, 793.3063, 662.1119,'Rhonin'),
|
||||
(16128,2, 5796.103, 777.5563, 662.3619,'Rhonin'),
|
||||
(16128,3, 5794.603, 767.0563, 661.6119,'Rhonin'),
|
||||
(16128,4, 5793.103, 753.0563, 651.8619,'Rhonin'),
|
||||
(16128,5, 5790.603, 736.8063, 640.6119,'Rhonin'),
|
||||
(16128,6, 5786.353, 717.5563, 641.1119,'Rhonin'),
|
||||
(16128,7, 5773.603, 702.0563, 642.1119,'Rhonin'),
|
||||
(16128,8, 5759.103, 683.5563, 642.6119,'Rhonin'),
|
||||
(16128,9, 5746.853, 669.0563, 644.3619,'Rhonin'),
|
||||
(16128,10, 5736.353, 658.8063, 645.8619,'Rhonin'),
|
||||
(16128,11, 5727.353, 653.8063, 646.8619,'Rhonin');
|
||||
@@ -0,0 +1,4 @@
|
||||
--
|
||||
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=10027;
|
||||
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `ConditionTypeOrReference`, `ConditionValue1`, `Comment`) VALUES
|
||||
(15, 10027, 15, 32, 'Show gossip option if player is a Death knight');
|
||||
@@ -0,0 +1,7 @@
|
||||
-- Supreme Defender
|
||||
DELETE FROM `achievement_criteria_data` WHERE `criteria_id` IN (3698, 3699);
|
||||
INSERT INTO `achievement_criteria_data` VALUES
|
||||
(3698,6,3277,0,''),
|
||||
(3698,7,23335,0,''), -- Alliance target should have Alliance Flag buff
|
||||
(3699,6,3277,0,''),
|
||||
(3699,7,23333,0,''); -- Horde target should have Horde Flag buff
|
||||
@@ -0,0 +1,481 @@
|
||||
SET @CGuid := 29974;
|
||||
|
||||
-- These two gossip menus on Injured rainspeaker oracle are not meant to be linked, they are two
|
||||
-- seperate gossips the first one for Just Following Orders to help the injured rainspeaker oracle and start event
|
||||
-- The second is to start the event for fortunate misunderstandings
|
||||
|
||||
UPDATE `gossip_menu_option` SET `action_menu_id`=0 WHERE `menu_id`=9677 AND `id`=0;
|
||||
|
||||
-- Delete Ravenous Mangal Crocolisk as this is not meant to be spawned, it is summoned from spell
|
||||
DELETE FROM `creature` WHERE `guid`=111427;
|
||||
|
||||
-- Spawn Shaman Jakjek and Lightningcaller Soo-met
|
||||
DELETE FROM `creature` WHERE `id` IN(28106,28107);
|
||||
INSERT INTO `creature` (`guid`, `id`, `map`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `spawndist`, `MovementType`) VALUES
|
||||
(@CGUID+0, 28106, 571, 1, 1, 4869.281, 5912.271, -40.38539, 5.166174, 120, 0, 0), -- 28106 (Area: 3711)
|
||||
(@CGUID+1, 28107, 571, 1, 1, 5116.647, 5469.729, -91.70967, 1.605703, 120, 0, 0); -- 28107 (Area: 3711)
|
||||
|
||||
DELETE FROM `creature_template_addon` WHERE `entry` IN(28106,28107);
|
||||
INSERT INTO `creature_template_addon` (`entry`, `mount`, `bytes1`, `bytes2`, `auras`) VALUES
|
||||
(28106, 0, 0x10000, 0x1, '52215'), -- 28106 - 52215
|
||||
(28107, 0, 0x10000, 0x1, '52215'); -- 28107 - 52215
|
||||
|
||||
DELETE FROM `gossip_menu` WHERE `entry` IN(9744,9745);
|
||||
INSERT INTO `gossip_menu` (`entry`, `text_id`) VALUES
|
||||
(9745, 13364), -- 28106
|
||||
(9744, 13363); -- 28107
|
||||
|
||||
-- The below spell area for phasing is not working correctly as these npcs should only be visible after a player has killed artruis and is working towards that faction
|
||||
-- If a player swaps faction they are meant to no longer be able to see the npc for that faction
|
||||
-- Currenly with below npc becomes visible once player unlocks dailies for that faction but will remain
|
||||
-- visible even if player switches faction as there is no way of telling which faction player is working towards
|
||||
-- as all quests remain completed, there a couple of hidden faction choice tracker quests too but even this stay rewarded
|
||||
-- once spell is cast which adds hidden quest, other way would be by reputation but this is not possible with spell area either
|
||||
-- My guess is a wolvar faction choice tracker and gorlok faction choice tracker quest and spells to engage these, cant find how these
|
||||
-- would reset though
|
||||
|
||||
DELETE FROM `spell_area` WHERE `spell`=52217 AND `area` IN(4287,4288);
|
||||
INSERT INTO `spell_area` (`spell`, `area`, `quest_start`, `quest_end`, `aura_spell`, `racemask`, `gender`, `autocast`, `quest_start_status`, `quest_end_status`) VALUES
|
||||
(52217,4287, 12692, 0, 0, 0, 2, 1, 64, 11),
|
||||
(52217,4288, 12695, 0, 0, 0, 2, 1, 64, 11);
|
||||
|
||||
UPDATE `creature_template` SET `ainame`='SmartAI', `scriptname`='' WHERE `entry` IN(28217,28325,28327);
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid` IN(28217,28325,28327) AND `source_type`=0;
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid` IN(28077) AND `source_type`=0 and `id`>14;
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid` IN(28133) AND `source_type`=0 and `id`=4;
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid` IN(2811301) AND `source_type`=9 and `id`>0;
|
||||
UPDATE `smart_scripts` SET `event_param1`=290 WHERE `entryorguid`=28308 AND `source_type`=0 AND `id`=2 AND `link`=3;
|
||||
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid` IN(2821700,2821701,2832700) AND `source_type`=9;
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(28217, 0, 0, 1, 11, 0, 100, 0, 0, 0, 0, 0, 11, 51329, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Injured Rainspeaker Oracle - On Spawn - Cast Feign Death'),
|
||||
(28217, 0, 1, 14, 61, 0, 100, 0, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Injured Rainspeaker Oracle - On Spawn - Set NPC Flags (Gossip Only)'),
|
||||
(28217, 0, 2, 3, 62, 0, 100, 0, 9677, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Injured Rainspeaker Oracle - On Gossip Option Select - Say Line 1'),
|
||||
(28217, 0, 3, 4, 61, 0, 100, 0, 0, 0, 0, 0, 28, 51329, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Injured Rainspeaker Oracle - On Gossip Option Select - Remove Aura - Feign Death'),
|
||||
(28217, 0, 4, 5, 61, 0, 100, 0, 0, 0, 0, 0, 81, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Injured Rainspeaker Oracle - On Gossip Option Select - Remove Aura - Set NPC Flags - Quest + Gossip'),
|
||||
(28217, 0, 5, 15, 61, 0, 100, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Injured Rainspeaker Oracle - On Gossip Option Select - Close Gossip'),
|
||||
(28217, 0, 6, 0, 62, 0, 100, 0, 9677, 0, 0, 0, 85, 51382, 2, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Injured Rainspeaker Oracle - On Gossip Option Select - Invoker Cast Forcecast Summon Huge Crocolisk'),
|
||||
(28217, 0, 7, 0, 64, 0, 100, 0, 0, 0, 0, 0, 98, 9684, 13124, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Injured Rainspeaker Oracle - On Gossip Hello - Send Gossip Menu'),
|
||||
(28217, 0, 8, 10, 62, 0, 100, 0, 9684, 0, 0, 0, 2, 774, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Injured Rainspeaker Oracle - On Gossip Option Select - Set Faction (Alliance)'),
|
||||
(28217, 0, 9, 10, 62, 0, 100, 0, 9684, 0, 0, 0, 2, 775, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Injured Rainspeaker Oracle - On Gossip Option Select - Set Faction (Horde)'),
|
||||
(28217, 0, 10, 11, 61, 0, 100, 0, 0, 0, 0, 0, 64, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Injured Rainspeaker Oracle - On Gossip Option Select - Store Targetlist'),
|
||||
(28217, 0, 11, 0, 61, 0, 100, 0, 0, 0, 0, 0, 80, 2821700, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Injured Rainspeaker Oracle - On Gossip Option Select - Run Script'),
|
||||
(28217, 0, 12, 0, 19, 0, 100, 0, 12570, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Injured Rainspeaker Oracle - On On Quest Accept - Fortunate Misunderstandings - Say Line 2'),
|
||||
(28217, 0, 13, 0, 40, 0, 100, 0, 64, 28217, 0, 0, 80, 2821701, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Injured Rainspeaker Oracle - On Reached WP80 - Run Script'),
|
||||
(28217, 0, 14, 0, 61, 0, 100, 0, 0, 0, 0, 0, 11, 58806, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Injured Rainspeaker Oracle - On Spawn - Add Aura Permanent Feign Death'),
|
||||
(28217, 0, 15, 0, 61, 0, 100, 0, 0, 0, 0, 0, 28, 58806, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Injured Rainspeaker Oracle - On Gossip Select - Remove Aura Permanent Feign Death'),
|
||||
(28077, 0, 15, 16, 54, 0, 100, 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 21, 50, 0, 0, 0, 0, 0, 0, 'Frenzyheart Tracker - On Just Summoned - Set Orientation'),
|
||||
(28077, 0, 16, 17, 61, 0, 100, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Frenzyheart Tracker - On Just Summoned - Say Line 1'),
|
||||
(28077, 0, 17, 0, 61, 0, 100, 0, 0, 0, 0, 0, 41, 8000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Frenzyheart Tracker - On Just Summoned - Despawn After 8 seconds'),
|
||||
(28325, 0, 0, 0, 0, 0, 100, 0, 5000, 9000, 9000, 14000, 11, 34370, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 'Ravenous Mangal Crocolisk - In Combat - Cast Jagged Tooth Snap'),
|
||||
(28325, 0, 1, 2, 54, 0, 100, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Ravenous Mangal Crocolisk - On Just Summoned - Say Line 1'),
|
||||
(28325, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 21, 50, 0, 0, 0, 0, 0, 0, 'Ravenous Mangal Crocolisk - On Just Summoned - Attack'),
|
||||
(28325, 0, 3, 0, 6, 0, 100, 0, 0, 0, 0, 0, 11, 51321, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Ravenous Mangal Crocolisk - On Death - Cast Summon Shaman Vekjik'),
|
||||
(28327, 0, 0, 1, 54, 0, 100, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Shaman Vekjik - On Just Summoned - Say Line 1'),
|
||||
(28327, 0, 1, 2, 61, 0, 100, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Shaman Vekjik - On Just Summoned - Move to Position'),
|
||||
(28327, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 80, 2832700, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Shaman Vekjik - On Just Summoned - Run Script'),
|
||||
(28113, 0, 4, 0, 64, 0, 100, 0, 0, 0, 0, 0, 1, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Mosswalker Victim - On Gossip Hello - Say Line 3'),
|
||||
(2821700, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Injured Rainspeaker Oracle - Script - Set NPC Flags'),
|
||||
(2821700, 9, 1, 0, 0, 0, 100, 0, 3000, 3000, 0, 0, 1, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Injured Rainspeaker Oracle - Script - Say Line 3'),
|
||||
(2821700, 9, 2, 0, 0, 0, 100, 0, 1000, 1000, 0, 0, 53, 1, 28217, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Injured Rainspeaker Oracle - Script - Start WP'),
|
||||
(2821701, 9, 0, 0, 0, 0, 100, 0, 1000, 1000, 0, 0, 1, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Injured Rainspeaker Oracle - Script 2 - Say Line 4'),
|
||||
(2821701, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 11, 51448, 0, 0, 0, 0, 0, 12, 1, 0, 0, 0, 0, 0, 0, 'Injured Rainspeaker Oracle - Script 2 - Cast Oracle Intro Quest Complete'),
|
||||
(2821701, 9, 2, 0, 0, 0, 100, 0, 4000, 4000, 0, 0, 1, 4, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Injured Rainspeaker Oracle - Script 2 - Say Line 5'),
|
||||
(2821701, 9, 3, 0, 0, 0, 100, 0, 2000, 2000, 0, 0, 11, 52100, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Injured Rainspeaker Oracle - Script 2 - Cast Summon Frenyheart Tracker'),
|
||||
(2821701, 9, 4, 0, 0, 0, 100, 0, 10000, 10000, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Injured Rainspeaker Oracle - Script 2 - Despawn'),
|
||||
(2811301, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 11, 52156, 2, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Mosswalker Victim - On Script - Cast Summon Shinies'),
|
||||
(2811301, 9, 2, 0, 0, 0, 100, 0, 2000, 2000, 0, 0, 37, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Mosswalker Victim - On Script - Kill Self'),
|
||||
(2832700, 9, 0, 0, 0, 0, 100, 0, 3000, 3000, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Shaman Vekjik - Script - Say Line 2'),
|
||||
(2832700, 9, 1, 0, 0, 0, 100, 0, 7000, 7000, 0, 0, 1, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Shaman Vekjik - Script - Say Line 3'),
|
||||
(2832700, 9, 2, 0, 0, 0, 100, 0, 4000, 4000, 0, 0, 1, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Shaman Vekjik - Script - Say Line 4'),
|
||||
(2832700, 9, 3, 0, 0, 0, 100, 0, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Shaman Vekjik - Script - Set Run On'),
|
||||
(2832700, 9, 4, 0, 0, 0, 100, 0, 0, 0, 0, 0, 46, 50, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Shaman Vekjik - Script - Move Foward'),
|
||||
(2832700, 9, 5, 0, 0, 0, 100, 0, 0, 0, 0, 0, 41, 5000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Shaman Vekjik - Script - Despawn After 5 seconds');
|
||||
|
||||
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=9677;
|
||||
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry`=28217;
|
||||
|
||||
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
|
||||
(15, 9677, 0, 0, 0, 1, 1, 51329, 0, 0, 0, 0, 0, '', 'Injured Rainspeaker Oracle only display gossip if injured rainspeaker oracle has aura Feign Death'),
|
||||
(22, 7, 28217, 0, 0, 9, 0, 12540, 0, 0, 0, 0, 0, '', 'Injured Rainspeaker Oracle - Only run SAI if player has Just Following Orders taken'),
|
||||
(22, 8, 28217, 0, 0, 9, 0, 12570, 0, 0, 0, 0, 0, '', 'Injured Rainspeaker Oracle - Only run SAI if player has Fortunate Misunderstandings Taken'),
|
||||
(22, 9, 28217, 0, 0, 16, 0, 1101, 0, 0, 0, 0, 0, '', 'Injured Rainspeaker Oracle - Only run SAI if player is Alliance'),
|
||||
(22, 10, 28217, 0, 0, 16, 0, 690, 0, 0, 0, 0, 0, '', 'Injured Rainspeaker Oracle - Only run SAI if player is Horde');
|
||||
|
||||
DELETE FROM `creature_text` WHERE `entry` IN(28217,28325,28327,28077,28213);
|
||||
DELETE FROM `creature_text` WHERE `entry` IN(28113) AND `groupid`=3;
|
||||
|
||||
INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `comment`, `BroadcastTextID`) VALUES
|
||||
(28217, 0, 0, 'The Injured Rainspeaker Oracle rises clumsily to its feet.', 16, 0, 100, 0, 0, 0, 'Injured Rainspeaker Oracle',27785),
|
||||
(28217, 1, 0, 'You tell us when it home time.', 12, 0, 100, 0, 0, 0, 'Injured Rainspeaker Oracle',27826),
|
||||
(28217, 2, 0, 'Home not far. Come!', 12, 0, 100, 0, 0, 0, 'Injured Rainspeaker Oracle',27753),
|
||||
(28217, 3, 0, 'Thanks!', 12, 0, 100, 0, 0, 0, 'Injured Rainspeaker Oracle',27752),
|
||||
(28217, 4, 0, 'Oh no! Some puppy-men followed!', 12, 0, 100, 0, 0, 0, 'Injured Rainspeaker Oracle',27799),
|
||||
(28325, 0, 0, 'You hear a low guttural growl from nearby.', 16, 0, 100, 0, 0, 0, 'Ravenous Mangal Crocolisk',27831),
|
||||
(28327, 0, 0, 'Shaman Vekjik comes out of the underbrush nearby.', 16, 0, 100, 0, 0, 0, 'Shaman Vekjik',27738),
|
||||
(28327, 1, 0, 'You help Rainspeaker! I saw you help Rainspeaker! Traitor thing!', 12, 0, 100, 0, 0, 0, 'Shaman Vekjik',27739),
|
||||
(28327, 2, 0, 'If you want to be friends with big-tongues, you not friends with Frenzyheart! I tell village! We no trust you anymore!', 12, 0, 100, 0, 0, 0, 'Shaman Vekjik',27740),
|
||||
(28327, 3, 0, 'Shaman Vekjik scurries off towards Frenzyheart Hill.', 16, 0, 100, 0, 0, 0, 'Shaman Vekjik',27741),
|
||||
(28077, 0, 0, 'Dumb big-tongue lover! You not friend of Frenzyheart no more. Frenzyheart will get you good.', 14, 0, 100, 0, 0, 0, 'Frenzyheart Tracker',27798),
|
||||
(28213, 0, 0, 'The %s screams with rage and rushes to the aid of her babies.', 16, 0, 100, 0, 0, 0, 'Hardknuckle Matriarch',27607),
|
||||
(28113, 3, 0, 'The mosswalker victim groans in pain.', 16, 0, 100, 0, 0, 0, 'Mosswalker Victim',28638);
|
||||
|
||||
DELETE FROM `waypoints` WHERE `entry` IN(28217,28308);
|
||||
DELETE FROM `script_waypoint` WHERE `entry` IN(28217);
|
||||
|
||||
INSERT INTO `waypoints` (`entry`, `pointid`, `position_x`, `position_y`, `position_z`, `point_comment`) VALUES
|
||||
(28217, 1,5462.371, 4514.91, -133.6022, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 2,5483.05, 4514.717, -141.1091, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 3,5485.3, 4516.467, -142.1091, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 4,5485.8, 4516.967, -143.3591, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 5,5486.8, 4517.717, -145.3591, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 6,5494.231, 4523.077, -149.136, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 7,5497.242, 4543.376, -146.9484, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 8,5499.492, 4544.876, -145.6984, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 9,5500.992, 4546.376, -145.1984, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 10,5502.492, 4547.626, -144.6984, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 11,5504.492, 4549.626, -143.9484, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 12,5507.492, 4552.126, -142.9484, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 13,5507.9, 4552.293, -142.7217, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 14,5509.15, 4553.793, -142.2217, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 15,5509.4, 4555.793, -141.7217, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 16,5509.4, 4558.793, -140.2217, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 17,5509.65, 4560.793, -139.4717, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 18,5509.9, 4563.543, -138.9717, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 19,5509.9, 4566.543, -137.9717, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 20,5510.15, 4568.543, -136.9717, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 21,5510.44, 4568.722, -136.8404, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 22,5510.44, 4571.722, -135.5904, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 23,5510.69, 4572.722, -135.3404, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 24,5510.69, 4575.722, -135.8404, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 25,5511.19, 4586.472, -135.0904, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 26,5511.44, 4589.472, -134.5904, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 27,5511.69, 4591.472, -133.8404, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 28,5511.69, 4593.472, -133.3404, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 29,5511.94, 4595.222, -132.5904, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 30,5512.074, 4593.584, -133.326, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 31,5512.074, 4595.584, -132.576, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 32,5512.324, 4597.584, -132.326, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 33,5513.824, 4600.334, -131.826, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 34,5514.824, 4601.834, -132.826, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 35,5515.324, 4602.834, -133.326, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 36,5518.074, 4607.084, -132.076, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 37,5520.074, 4610.334, -133.076, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 38,5520.324, 4611.084, -133.826, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 39,5520.824, 4611.834, -134.576, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 40,5521.324, 4612.834, -135.326, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 41,5521.824, 4613.584, -135.576, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 42,5524.574, 4617.834, -136.576, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 43,5528.879, 4624.343, -136.8704, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 44,5532.879, 4624.343, -137.1204, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 45,5550.51, 4624.694, -136.8637, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 46,5552.26, 4625.444, -137.3637, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 47,5565.26, 4629.944, -136.8637, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 48,5568.01, 4630.944, -136.3637, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 49,5571.01, 4631.944, -135.1137, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 50,5574.76, 4633.194, -134.3637, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 51,5577.51, 4634.194, -135.1137, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 52,5577.733, 4634.199, -135.0235, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 53,5580.983, 4635.449, -135.7735, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 54,5584.983, 4634.949, -136.0235, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 55,5587.983, 4634.449, -136.7735, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 56,5589.733, 4634.199, -138.0235, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 57,5594.733, 4633.699, -138.2735, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 58,5596.733, 4633.449, -137.5235, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 59,5599.733, 4633.199, -136.7735, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 60,5606.606, 4632.268, -136.4532, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 61,5612.106, 4626.518, -137.2032, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 62,5616.856, 4621.768, -137.7032, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 63,5620.638, 4618.1, -137.5758, 'Injured Rainspeaker Oracle'),
|
||||
(28217, 64,5625.388, 4612.85, -137.0758, 'Injured Rainspeaker Oracle'),
|
||||
(28308,1, 5295.424, 4436.538, -97.6029,'Captive Crocolisk'),
|
||||
(28308,2, 5291.674, 4435.038, -97.1029,'Captive Crocolisk'),
|
||||
(28308,3, 5287.924, 4433.538, -96.3529,'Captive Crocolisk'),
|
||||
(28308,4, 5277.924, 4429.538, -95.8529,'Captive Crocolisk'),
|
||||
(28308,5, 5277.777, 4429.427, -95.94301,'Captive Crocolisk'),
|
||||
(28308,6, 5268.277, 4425.427, -95.44301,'Captive Crocolisk'),
|
||||
(28308,7, 5249.84, 4405.99, -95.93161,'Captive Crocolisk'),
|
||||
(28308,8, 5251.84, 4401.24, -95.18161,'Captive Crocolisk'),
|
||||
(28308,9, 5262.34, 4376.74, -95.68161,'Captive Crocolisk'),
|
||||
(28308,10, 5263.34, 4373.99, -96.43161,'Captive Crocolisk'),
|
||||
(28308,11, 5264.34, 4371.99, -96.93161,'Captive Crocolisk'),
|
||||
(28308,12, 5265.34, 4369.24, -97.68161,'Captive Crocolisk'),
|
||||
(28308,13, 5262.209, 4376.323, -95.75699,'Captive Crocolisk'),
|
||||
(28308,14, 5263.459, 4373.823, -96.50699,'Captive Crocolisk'),
|
||||
(28308,15, 5264.209, 4372.073, -97.25699,'Captive Crocolisk'),
|
||||
(28308,16, 5265.459, 4369.323, -98.00699,'Captive Crocolisk'),
|
||||
(28308,17, 5266.959, 4365.823, -98.00699,'Captive Crocolisk'),
|
||||
(28308,18, 5272.959, 4366.073, -99.00699,'Captive Crocolisk'),
|
||||
(28308,19, 5274.709, 4366.073, -99.50699,'Captive Crocolisk'),
|
||||
(28308,20, 5277.709, 4366.323, -100.257,'Captive Crocolisk'),
|
||||
(28308,21, 5284.709, 4366.573, -101.007,'Captive Crocolisk'),
|
||||
(28308,22, 5288.709, 4366.823, -101.757,'Captive Crocolisk'),
|
||||
(28308,23, 5284.895, 4366.406, -101.2539,'Captive Crocolisk'),
|
||||
(28308,24, 5288.895, 4366.656, -102.0039,'Captive Crocolisk'),
|
||||
(28308,25, 5289.395, 4366.656, -102.0039,'Captive Crocolisk'),
|
||||
(28308,26, 5291.395, 4366.406, -103.0039,'Captive Crocolisk'),
|
||||
(28308,27, 5293.395, 4366.156, -104.2539,'Captive Crocolisk'),
|
||||
(28308,28, 5294.395, 4366.156, -105.0039,'Captive Crocolisk'),
|
||||
(28308,29, 5295.395, 4366.156, -106.0039,'Captive Crocolisk'),
|
||||
(28308,30, 5296.395, 4365.906, -106.5039,'Captive Crocolisk'),
|
||||
(28308,31, 5297.395, 4365.906, -107.2539,'Captive Crocolisk'),
|
||||
(28308,32, 5298.395, 4365.906, -108.0039,'Captive Crocolisk'),
|
||||
(28308,33, 5299.145, 4365.656, -108.7539,'Captive Crocolisk'),
|
||||
(28308,34, 5300.145, 4365.656, -109.5039,'Captive Crocolisk'),
|
||||
(28308,35, 5302.145, 4365.406, -110.0039,'Captive Crocolisk'),
|
||||
(28308,36, 5304.145, 4365.406, -110.5039,'Captive Crocolisk'),
|
||||
(28308,37, 5305.145, 4365.156, -111.2539,'Captive Crocolisk'),
|
||||
(28308,38, 5306.145, 4365.156, -112.0039,'Captive Crocolisk'),
|
||||
(28308,39, 5307.145, 4365.156, -112.5039,'Captive Crocolisk'),
|
||||
(28308,40, 5308.145, 4365.156, -113.2539,'Captive Crocolisk'),
|
||||
(28308,41, 5309.145, 4364.906, -114.0039,'Captive Crocolisk'),
|
||||
(28308,42, 5311.145, 4364.906, -115.0039,'Captive Crocolisk'),
|
||||
(28308,43, 5313.145, 4364.656, -116.0039,'Captive Crocolisk'),
|
||||
(28308,44, 5316.145, 4364.406, -116.7539,'Captive Crocolisk'),
|
||||
(28308,45, 5318.145, 4364.406, -117.5039,'Captive Crocolisk'),
|
||||
(28308,46, 5320.145, 4364.406, -118.2539,'Captive Crocolisk'),
|
||||
(28308,47, 5322.145, 4364.156, -119.0039,'Captive Crocolisk'),
|
||||
(28308,48, 5325.145, 4363.906, -120.0039,'Captive Crocolisk'),
|
||||
(28308,49, 5325.253, 4363.768, -120.1149,'Captive Crocolisk'),
|
||||
(28308,50, 5330.003, 4363.268, -120.8649,'Captive Crocolisk'),
|
||||
(28308,51, 5334.503, 4358.018, -121.6149,'Captive Crocolisk'),
|
||||
(28308,52, 5336.503, 4355.768, -122.3649,'Captive Crocolisk'),
|
||||
(28308,53, 5339.253, 4353.018, -123.3649,'Captive Crocolisk'),
|
||||
(28308,54, 5341.253, 4350.768, -124.3649,'Captive Crocolisk'),
|
||||
(28308,55, 5343.003, 4348.518, -126.1149,'Captive Crocolisk'),
|
||||
(28308,56, 5345.003, 4346.018, -128.1149,'Captive Crocolisk'),
|
||||
(28308,57, 5346.253, 4344.518, -129.6149,'Captive Crocolisk'),
|
||||
(28308,58, 5347.003, 4343.768, -130.8649,'Captive Crocolisk'),
|
||||
(28308,59, 5348.253, 4342.268, -132.3649,'Captive Crocolisk'),
|
||||
(28308,60, 5349.003, 4341.518, -133.8649,'Captive Crocolisk'),
|
||||
(28308,61, 5350.473, 4340.604, -135.0103,'Captive Crocolisk'),
|
||||
(28308,62, 5351.223, 4340.104, -136.2603,'Captive Crocolisk'),
|
||||
(28308,63, 5353.223, 4339.604, -137.2603,'Captive Crocolisk'),
|
||||
(28308,64, 5354.973, 4338.854, -138.2603,'Captive Crocolisk'),
|
||||
(28308,65, 5357.473, 4337.604, -139.0103,'Captive Crocolisk'),
|
||||
(28308,66, 5359.223, 4336.604, -139.5103,'Captive Crocolisk'),
|
||||
(28308,67, 5361.973, 4335.354, -140.5103,'Captive Crocolisk'),
|
||||
(28308,68, 5363.723, 4334.604, -141.0103,'Captive Crocolisk'),
|
||||
(28308,69, 5364.094, 4334.348, -141.0889,'Captive Crocolisk'),
|
||||
(28308,70, 5365.344, 4333.598, -141.0889,'Captive Crocolisk'),
|
||||
(28308,71, 5369.594, 4331.098, -142.5889,'Captive Crocolisk'),
|
||||
(28308,72, 5372.844, 4328.848, -143.5889,'Captive Crocolisk'),
|
||||
(28308,73, 5376.344, 4326.598, -144.5889,'Captive Crocolisk'),
|
||||
(28308,74, 5379.344, 4324.598, -145.3389,'Captive Crocolisk'),
|
||||
(28308,75, 5382.594, 4322.598, -146.0889,'Captive Crocolisk'),
|
||||
(28308,76, 5402.844, 4309.598, -144.5889,'Captive Crocolisk'),
|
||||
(28308,77, 5403.844, 4309.098, -143.3389,'Captive Crocolisk'),
|
||||
(28308,78, 5403.236, 4309.773, -144.7202,'Captive Crocolisk'),
|
||||
(28308,79, 5403.986, 4309.273, -143.2202,'Captive Crocolisk'),
|
||||
(28308,80, 5405.736, 4308.023, -141.7202,'Captive Crocolisk'),
|
||||
(28308,81, 5407.736, 4308.023, -141.2202,'Captive Crocolisk'),
|
||||
(28308,82, 5409.736, 4307.773, -140.4702,'Captive Crocolisk'),
|
||||
(28308,83, 5412.486, 4307.523, -139.7202,'Captive Crocolisk'),
|
||||
(28308,84, 5416.486, 4307.273, -138.2202,'Captive Crocolisk'),
|
||||
(28308,85, 5419.486, 4307.023, -137.7202,'Captive Crocolisk'),
|
||||
(28308,86, 5424.486, 4306.773, -136.9702,'Captive Crocolisk'),
|
||||
(28308,87, 5432.486, 4306.023, -136.4702,'Captive Crocolisk'),
|
||||
(28308,88, 5432.637, 4305.777, -136.2332,'Captive Crocolisk'),
|
||||
(28308,89, 5435.137, 4305.777, -135.9832,'Captive Crocolisk'),
|
||||
(28308,90, 5439.137, 4305.277, -135.4832,'Captive Crocolisk'),
|
||||
(28308,91, 5442.887, 4304.777, -134.7332,'Captive Crocolisk'),
|
||||
(28308,92, 5445.887, 4304.527, -134.2332,'Captive Crocolisk'),
|
||||
(28308,93, 5450.887, 4304.027, -133.4832,'Captive Crocolisk'),
|
||||
(28308,94, 5458.887, 4303.027, -132.9832,'Captive Crocolisk'),
|
||||
(28308,95, 5459.032, 4302.869, -132.6968,'Captive Crocolisk'),
|
||||
(28308,96, 5465.032, 4302.119, -132.6968,'Captive Crocolisk'),
|
||||
(28308,97, 5481.032, 4297.369, -131.9468,'Captive Crocolisk'),
|
||||
(28308,98, 5483.032, 4296.869, -131.1968,'Captive Crocolisk'),
|
||||
(28308,99, 5484.782, 4296.369, -130.6968,'Captive Crocolisk'),
|
||||
(28308,100, 5485.782, 4296.119, -129.9468,'Captive Crocolisk'),
|
||||
(28308,101, 5487.782, 4295.619, -128.9468,'Captive Crocolisk'),
|
||||
(28308,102, 5489.532, 4294.869, -127.4468,'Captive Crocolisk'),
|
||||
(28308,103, 5489.61, 4294.574, -127.3404,'Captive Crocolisk'),
|
||||
(28308,104, 5490.61, 4294.324, -127.0904,'Captive Crocolisk'),
|
||||
(28308,105, 5491.11, 4293.574, -126.3404,'Captive Crocolisk'),
|
||||
(28308,106, 5491.86, 4291.824, -125.3404,'Captive Crocolisk'),
|
||||
(28308,107, 5492.86, 4290.074, -124.0904,'Captive Crocolisk'),
|
||||
(28308,108, 5493.86, 4288.324, -122.5904,'Captive Crocolisk'),
|
||||
(28308,109, 5494.86, 4286.574, -121.5904,'Captive Crocolisk'),
|
||||
(28308,110, 5495.36, 4285.574, -121.0904,'Captive Crocolisk'),
|
||||
(28308,111, 5496.36, 4284.074, -119.3404,'Captive Crocolisk'),
|
||||
(28308,112, 5496.61, 4283.074, -118.8404,'Captive Crocolisk'),
|
||||
(28308,113, 5496.464, 4283.905, -119.1085,'Captive Crocolisk'),
|
||||
(28308,114, 5496.964, 4282.905, -118.6085,'Captive Crocolisk'),
|
||||
(28308,115, 5497.464, 4282.155, -117.3585,'Captive Crocolisk'),
|
||||
(28308,116, 5497.964, 4281.155, -116.8585,'Captive Crocolisk'),
|
||||
(28308,117, 5498.964, 4279.405, -115.8585,'Captive Crocolisk'),
|
||||
(28308,118, 5499.214, 4278.655, -114.8585,'Captive Crocolisk'),
|
||||
(28308,119, 5500.214, 4276.655, -113.6085,'Captive Crocolisk'),
|
||||
(28308,120, 5501.714, 4274.155, -112.3585,'Captive Crocolisk'),
|
||||
(28308,121, 5502.714, 4272.405, -111.6085,'Captive Crocolisk'),
|
||||
(28308,122, 5503.714, 4270.655, -110.6085,'Captive Crocolisk'),
|
||||
(28308,123, 5503.964, 4269.905, -110.1085,'Captive Crocolisk'),
|
||||
(28308,124, 5505.464, 4268.655, -109.3585,'Captive Crocolisk'),
|
||||
(28308,125, 5507.464, 4266.405, -107.8585,'Captive Crocolisk'),
|
||||
(28308,126, 5508.714, 4265.155, -107.3585,'Captive Crocolisk'),
|
||||
(28308,127, 5510.214, 4263.655, -106.1085,'Captive Crocolisk'),
|
||||
(28308,128, 5511.714, 4262.155, -105.1085,'Captive Crocolisk'),
|
||||
(28308,129, 5513.714, 4260.155, -104.3585,'Captive Crocolisk'),
|
||||
(28308,130, 5515.964, 4257.905, -103.6085,'Captive Crocolisk'),
|
||||
(28308,131, 5517.964, 4255.905, -103.1085,'Captive Crocolisk'),
|
||||
(28308,132, 5518.275, 4255.893, -103.0304,'Captive Crocolisk'),
|
||||
(28308,133, 5518.525, 4255.643, -102.7804,'Captive Crocolisk'),
|
||||
(28308,134, 5521.525, 4256.143, -102.2804,'Captive Crocolisk'),
|
||||
(28308,135, 5540.806, 4259.841, -102.1478,'Captive Crocolisk'),
|
||||
(28308,136, 5552.306, 4261.591, -102.6478,'Captive Crocolisk'),
|
||||
(28308,137, 5552.562, 4261.524, -102.5733,'Captive Crocolisk'),
|
||||
(28308,138, 5564.562, 4263.524, -102.3233,'Captive Crocolisk'),
|
||||
(28308,139, 5567.062, 4263.024, -101.8233,'Captive Crocolisk'),
|
||||
(28308,140, 5570.062, 4262.774, -101.0733,'Captive Crocolisk'),
|
||||
(28308,141, 5573.062, 4262.524, -100.5733,'Captive Crocolisk'),
|
||||
(28308,142, 5581.062, 4261.524, -100.0733,'Captive Crocolisk'),
|
||||
(28308,143, 5585.062, 4261.274, -99.32326,'Captive Crocolisk'),
|
||||
(28308,144, 5585.636, 4261.419, -99.31418,'Captive Crocolisk'),
|
||||
(28308,145, 5607.386, 4259.919, -98.81418,'Captive Crocolisk'),
|
||||
(28308,146, 5607.644, 4260.124, -98.76741,'Captive Crocolisk'),
|
||||
(28308,147, 5609.894, 4259.874, -98.76741,'Captive Crocolisk'),
|
||||
(28308,148, 5620.644, 4259.624, -98.01741,'Captive Crocolisk'),
|
||||
(28308,149, 5620.918, 4259.831, -98.01412,'Captive Crocolisk'),
|
||||
(28308,150, 5633.668, 4259.581, -98.26412,'Captive Crocolisk'),
|
||||
(28308,151, 5652.418, 4260.331, -98.76412,'Captive Crocolisk'),
|
||||
(28308,152, 5652.634, 4260.799, -99.03739,'Captive Crocolisk'),
|
||||
(28308,153, 5660.884, 4261.299, -98.53739,'Captive Crocolisk'),
|
||||
(28308,154, 5681.829, 4266.604, -99.07877,'Captive Crocolisk'),
|
||||
(28308,155, 5683.829, 4267.104, -99.57877,'Captive Crocolisk'),
|
||||
(28308,156, 5686.579, 4267.604, -100.3288,'Captive Crocolisk'),
|
||||
(28308,157, 5688.329, 4268.104, -100.8288,'Captive Crocolisk'),
|
||||
(28308,158, 5691.329, 4268.854, -101.3288,'Captive Crocolisk'),
|
||||
(28308,159, 5695.079, 4269.854, -102.0788,'Captive Crocolisk'),
|
||||
(28308,160, 5699.079, 4270.854, -102.8288,'Captive Crocolisk'),
|
||||
(28308,161, 5699.236, 4271.2, -103.1089,'Captive Crocolisk'),
|
||||
(28308,162, 5708.486, 4273.7, -102.8589,'Captive Crocolisk'),
|
||||
(28308,163, 5714.236, 4275.2, -103.3589,'Captive Crocolisk'),
|
||||
(28308,164, 5717.736, 4275.95, -104.1089,'Captive Crocolisk'),
|
||||
(28308,165, 5721.736, 4276.95, -104.8589,'Captive Crocolisk'),
|
||||
(28308,166, 5725.486, 4277.95, -105.3589,'Captive Crocolisk'),
|
||||
(28308,167, 5729.486, 4278.95, -106.1089,'Captive Crocolisk'),
|
||||
(28308,168, 5732.236, 4279.7, -106.3589,'Captive Crocolisk'),
|
||||
(28308,169, 5735.236, 4280.45, -106.8589,'Captive Crocolisk'),
|
||||
(28308,170, 5737.986, 4281.2, -107.8589,'Captive Crocolisk'),
|
||||
(28308,171, 5739.986, 4281.7, -108.6089,'Captive Crocolisk'),
|
||||
(28308,172, 5741.986, 4282.45, -109.3589,'Captive Crocolisk'),
|
||||
(28308,173, 5743.986, 4282.95, -110.1089,'Captive Crocolisk'),
|
||||
(28308,174, 5746.736, 4283.7, -110.8589,'Captive Crocolisk'),
|
||||
(28308,175, 5750.526, 4285.622, -112.3181,'Captive Crocolisk'),
|
||||
(28308,176, 5752.526, 4287.872, -113.0681,'Captive Crocolisk'),
|
||||
(28308,177, 5754.776, 4289.872, -113.8181,'Captive Crocolisk'),
|
||||
(28308,178, 5757.026, 4291.872, -114.5681,'Captive Crocolisk'),
|
||||
(28308,179, 5759.276, 4293.872, -113.0681,'Captive Crocolisk'),
|
||||
(28308,180, 5836.026, 4365.122, -114.5681,'Captive Crocolisk'),
|
||||
(28308,181, 5838.276, 4367.122, -113.0681,'Captive Crocolisk'),
|
||||
(28308,182, 5840.798, 4369.525, -110.6656,'Captive Crocolisk'),
|
||||
(28308,183, 5842.548, 4370.525, -109.9156,'Captive Crocolisk'),
|
||||
(28308,184, 5843.298, 4371.025, -109.4156,'Captive Crocolisk'),
|
||||
(28308,185, 5845.048, 4372.275, -108.4156,'Captive Crocolisk'),
|
||||
(28308,186, 5846.548, 4373.525, -107.6656,'Captive Crocolisk'),
|
||||
(28308,187, 5850.048, 4375.775, -106.6656,'Captive Crocolisk'),
|
||||
(28308,188, 5852.298, 4377.275, -105.6656,'Captive Crocolisk'),
|
||||
(28308,189, 5855.798, 4379.775, -104.4156,'Captive Crocolisk'),
|
||||
(28308,190, 5857.298, 4380.775, -103.6656,'Captive Crocolisk'),
|
||||
(28308,191, 5858.048, 4381.275, -102.9156,'Captive Crocolisk'),
|
||||
(28308,192, 5859.048, 4382.025, -100.9156,'Captive Crocolisk'),
|
||||
(28308,193, 5859.798, 4382.525, -100.1656,'Captive Crocolisk'),
|
||||
(28308,194, 5862.298, 4384.275, -99.41559,'Captive Crocolisk'),
|
||||
(28308,195, 5863.798, 4385.275, -100.4156,'Captive Crocolisk'),
|
||||
(28308,196, 5868.048, 4388.275, -99.91559,'Captive Crocolisk'),
|
||||
(28308,197, 5871.048, 4390.275, -99.16559,'Captive Crocolisk'),
|
||||
(28308,198, 5874.298, 4392.525, -98.41559,'Captive Crocolisk'),
|
||||
(28308,199, 5878.548, 4395.275, -97.91559,'Captive Crocolisk'),
|
||||
(28308,200, 5889.048, 4402.775, -97.16559,'Captive Crocolisk'),
|
||||
(28308,201, 5890.798, 4404.025, -96.41559,'Captive Crocolisk'),
|
||||
(28308,202, 5893.298, 4405.525, -95.91559,'Captive Crocolisk'),
|
||||
(28308,203, 5896.548, 4407.775, -95.16559,'Captive Crocolisk'),
|
||||
(28308,204, 5889.418, 4402.901, -97.02716,'Captive Crocolisk'),
|
||||
(28308,205, 5891.168, 4404.151, -96.27716,'Captive Crocolisk'),
|
||||
(28308,206, 5893.418, 4405.901, -95.77716,'Captive Crocolisk'),
|
||||
(28308,207, 5896.918, 4408.151, -95.27716,'Captive Crocolisk'),
|
||||
(28308,208, 5897.418, 4408.651, -95.02716,'Captive Crocolisk'),
|
||||
(28308,209, 5901.418, 4413.151, -94.52716,'Captive Crocolisk'),
|
||||
(28308,210, 5906.418, 4419.151, -93.77716,'Captive Crocolisk'),
|
||||
(28308,211, 5910.418, 4423.401, -93.27716,'Captive Crocolisk'),
|
||||
(28308,212, 5922.168, 4437.151, -93.77716,'Captive Crocolisk'),
|
||||
(28308,213, 5924.918, 4440.151, -94.52716,'Captive Crocolisk'),
|
||||
(28308,214, 5922.623, 4437.382, -93.73592,'Captive Crocolisk'),
|
||||
(28308,215, 5925.123, 4440.382, -94.23592,'Captive Crocolisk'),
|
||||
(28308,216, 5925.623, 4440.882, -94.23592,'Captive Crocolisk'),
|
||||
(28308,217, 5927.373, 4443.132, -94.73592,'Captive Crocolisk'),
|
||||
(28308,218, 5929.873, 4446.382, -95.48592,'Captive Crocolisk'),
|
||||
(28308,219, 5932.373, 4449.632, -95.98592,'Captive Crocolisk'),
|
||||
(28308,220, 5935.123, 4453.382, -96.73592,'Captive Crocolisk'),
|
||||
(28308,221, 5940.623, 4460.382, -95.98592,'Captive Crocolisk'),
|
||||
(28308,222, 5941.873, 4461.882, -95.23592,'Captive Crocolisk'),
|
||||
(28308,223, 5944.373, 4465.132, -94.48592,'Captive Crocolisk'),
|
||||
(28308,224, 5947.373, 4469.132, -93.98592,'Captive Crocolisk'),
|
||||
(28308,225, 5947.696, 4469.354, -94.11644,'Captive Crocolisk'),
|
||||
(28308,226, 5953.196, 4476.604, -94.11644,'Captive Crocolisk'),
|
||||
(28308,227, 5955.196, 4482.104, -93.61644,'Captive Crocolisk'),
|
||||
(28308,228, 5956.696, 4485.604, -92.86644,'Captive Crocolisk'),
|
||||
(28308,229, 5955.557, 4482.148, -93.45278,'Captive Crocolisk'),
|
||||
(28308,230, 5957.057, 4485.898, -92.95278,'Captive Crocolisk'),
|
||||
(28308,231, 5964.307, 4503.898, -92.70278,'Captive Crocolisk'),
|
||||
(28308,232, 5962.057, 4529.648, -93.45278,'Captive Crocolisk'),
|
||||
(28308,233, 5961.557, 4533.648, -93.95278,'Captive Crocolisk'),
|
||||
(28308,234, 5961.307, 4536.648, -94.45278,'Captive Crocolisk'),
|
||||
(28308,235, 5960.807, 4543.648, -94.95278,'Captive Crocolisk'),
|
||||
(28308,236, 5962.334, 4529.804, -93.40747,'Captive Crocolisk'),
|
||||
(28308,237, 5961.834, 4533.804, -93.90747,'Captive Crocolisk'),
|
||||
(28308,238, 5961.584, 4536.804, -94.65747,'Captive Crocolisk'),
|
||||
(28308,239, 5961.084, 4543.804, -95.15747,'Captive Crocolisk'),
|
||||
(28308,240, 5960.834, 4546.804, -95.40747,'Captive Crocolisk'),
|
||||
(28308,241, 5963.334, 4564.304, -95.90747,'Captive Crocolisk'),
|
||||
(28308,242, 5963.584, 4566.304, -96.65747,'Captive Crocolisk'),
|
||||
(28308,243, 5963.834, 4569.304, -97.65747,'Captive Crocolisk'),
|
||||
(28308,244, 5963.431, 4564.66, -96.028,'Captive Crocolisk'),
|
||||
(28308,245, 5963.681, 4566.66, -96.778,'Captive Crocolisk'),
|
||||
(28308,246, 5963.931, 4569.66, -97.528,'Captive Crocolisk'),
|
||||
(28308,247, 5965.431, 4579.41, -97.028,'Captive Crocolisk'),
|
||||
(28308,248, 5969.632, 4614.113, -97.93755,'Captive Crocolisk'),
|
||||
(28308,249, 5970.632, 4621.863, -98.43755,'Captive Crocolisk'),
|
||||
(28308,250, 5976.144, 4659.492, -99.19481,'Captive Crocolisk'),
|
||||
(28308,251, 5979.644, 4667.742, -98.44481,'Captive Crocolisk'),
|
||||
(28308,252, 5980.644, 4670.492, -97.94481,'Captive Crocolisk'),
|
||||
(28308,253, 5983.644, 4677.742, -97.19481,'Captive Crocolisk'),
|
||||
(28308,254, 5990.394, 4693.242, -97.94481,'Captive Crocolisk'),
|
||||
(28308,255, 5991.394, 4695.992, -98.44481,'Captive Crocolisk'),
|
||||
(28308,256, 5983.768, 4677.933, -97.22537,'Captive Crocolisk'),
|
||||
(28308,257, 5990.518, 4693.683, -97.47537,'Captive Crocolisk'),
|
||||
(28308,258, 5991.768, 4696.433, -98.22537,'Captive Crocolisk'),
|
||||
(28308,259, 5993.268, 4699.683, -98.97537,'Captive Crocolisk'),
|
||||
(28308,260, 5995.518, 4704.183, -98.22537,'Captive Crocolisk'),
|
||||
(28308,261, 5996.768, 4706.933, -97.47537,'Captive Crocolisk'),
|
||||
(28308,262, 5998.518, 4710.433, -96.97537,'Captive Crocolisk'),
|
||||
(28308,263, 6015.43, 4744.089, -96.98655,'Captive Crocolisk'),
|
||||
(28308,264, 6021.18, 4757.589, -96.48655,'Captive Crocolisk'),
|
||||
(28308,265, 6023.68, 4762.839, -95.98655,'Captive Crocolisk'),
|
||||
(28308,266, 6029.43, 4775.839, -95.48655,'Captive Crocolisk'),
|
||||
(28308,267, 6032.68, 4783.089, -94.73655,'Captive Crocolisk'),
|
||||
(28308,268, 6029.549, 4775.949, -95.34583,'Captive Crocolisk'),
|
||||
(28308,269, 6032.799, 4783.199, -94.84583,'Captive Crocolisk'),
|
||||
(28308,270, 6035.549, 4788.949, -94.59583,'Captive Crocolisk'),
|
||||
(28308,271, 6040.799, 4796.199, -93.84583,'Captive Crocolisk'),
|
||||
(28308,272, 6052.299, 4810.949, -94.34583,'Captive Crocolisk'),
|
||||
(28308,273, 6055.299, 4814.949, -93.34583,'Captive Crocolisk'),
|
||||
(28308,274, 6058.299, 4818.949, -93.84583,'Captive Crocolisk'),
|
||||
(28308,275, 6056.549, 4816.449, -92.84583,'Captive Crocolisk'),
|
||||
(28308,276, 6059.549, 4820.449, -94.34583,'Captive Crocolisk'),
|
||||
(28308,277, 6055.51, 4815.281, -93.31942,'Captive Crocolisk'),
|
||||
(28308,278, 6056.76, 4816.781, -92.81942,'Captive Crocolisk'),
|
||||
(28308,279, 6058.51, 4819.281, -93.81942,'Captive Crocolisk'),
|
||||
(28308,280, 6059.76, 4820.781, -94.06942,'Captive Crocolisk'),
|
||||
(28308,281, 6065.01, 4827.781, -94.06942,'Captive Crocolisk'),
|
||||
(28308,282, 6065.26, 4840.781, -93.56942,'Captive Crocolisk'),
|
||||
(28308,283, 6065.26, 4841.781, -92.81942,'Captive Crocolisk'),
|
||||
(28308,284, 6065.26, 4848.531, -93.81942,'Captive Crocolisk'),
|
||||
(28308,285, 6065.731, 4870.604, -94.3074,'Captive Crocolisk'),
|
||||
(28308,286, 6077.481, 4876.354, -93.8074,'Captive Crocolisk'),
|
||||
(28308,287, 6096.964, 4885.957, -94.31221,'Captive Crocolisk'),
|
||||
(28308,288, 6119.714, 4901.457, -94.56221,'Captive Crocolisk'),
|
||||
(28308,289, 6120.019, 4901.537, -94.72534,'Captive Crocolisk'),
|
||||
(28308,290, 6120.519, 4902.037, -94.72534,'Captive Crocolisk');
|
||||
@@ -83,8 +83,8 @@ typedef struct AUTH_LOGON_PROOF_S
|
||||
uint8 cmd;
|
||||
uint8 error;
|
||||
uint8 M2[20];
|
||||
uint32 unk1;
|
||||
uint32 unk2;
|
||||
uint32 AccountFlags;
|
||||
uint32 SurveyId;
|
||||
uint16 unk3;
|
||||
} sAuthLogonProof_S;
|
||||
|
||||
@@ -537,9 +537,9 @@ bool AuthSession::HandleLogonProof()
|
||||
memcpy(proof.M2, sha.GetDigest(), 20);
|
||||
proof.cmd = AUTH_LOGON_PROOF;
|
||||
proof.error = 0;
|
||||
proof.unk1 = GAMEACCOUNT_FLAG_PROPASS_LOCK;
|
||||
proof.unk2 = 0x00; // SurveyId
|
||||
proof.unk3 = 0x00;
|
||||
proof.AccountFlags = GAMEACCOUNT_FLAG_PROPASS_LOCK;
|
||||
proof.SurveyId = 0;
|
||||
proof.unk3 = 0;
|
||||
|
||||
packet.resize(sizeof(proof));
|
||||
std::memcpy(packet.contents(), &proof, sizeof(proof));
|
||||
|
||||
@@ -427,8 +427,8 @@ enum RBACPermissions
|
||||
RBAC_PERM_COMMAND_REPAIRITEMS = 521,
|
||||
RBAC_PERM_COMMAND_RESPAWN = 522,
|
||||
RBAC_PERM_COMMAND_REVIVE = 523,
|
||||
RBAC_PERM_COMMAND_SAVE = 524,
|
||||
RBAC_PERM_COMMAND_SAVEALL = 525,
|
||||
RBAC_PERM_COMMAND_SAVEALL = 524,
|
||||
RBAC_PERM_COMMAND_SAVE = 525,
|
||||
RBAC_PERM_COMMAND_SETSKILL = 526,
|
||||
RBAC_PERM_COMMAND_SHOWAREA = 527,
|
||||
RBAC_PERM_COMMAND_SUMMON = 528,
|
||||
@@ -549,10 +549,10 @@ enum RBACPermissions
|
||||
RBAC_PERM_COMMAND_RELOAD_EVENT_SCRIPTS = 643,
|
||||
RBAC_PERM_COMMAND_RELOAD_FISHING_LOOT_TEMPLATE = 644,
|
||||
RBAC_PERM_COMMAND_RELOAD_GAME_GRAVEYARD_ZONE = 645,
|
||||
RBAC_PERM_COMMAND_RELOAD_GAMEOBJECT_QUESTENDER = 646,
|
||||
RBAC_PERM_COMMAND_RELOAD_GAMEOBJECT_QUEST_LOOT_TEMPLATE = 647,
|
||||
RBAC_PERM_COMMAND_RELOAD_GAMEOBJECT_QUESTSTARTER = 648,
|
||||
RBAC_PERM_COMMAND_RELOAD_GAME_TELE = 649,
|
||||
RBAC_PERM_COMMAND_RELOAD_GAME_TELE = 646,
|
||||
RBAC_PERM_COMMAND_RELOAD_GAMEOBJECT_QUESTENDER = 647,
|
||||
RBAC_PERM_COMMAND_RELOAD_GAMEOBJECT_QUEST_LOOT_TEMPLATE = 648,
|
||||
RBAC_PERM_COMMAND_RELOAD_GAMEOBJECT_QUESTSTARTER = 649,
|
||||
RBAC_PERM_COMMAND_RELOAD_GM_TICKETS = 650,
|
||||
RBAC_PERM_COMMAND_RELOAD_GOSSIP_MENU = 651,
|
||||
RBAC_PERM_COMMAND_RELOAD_GOSSIP_MENU_OPTION = 652,
|
||||
@@ -585,34 +585,34 @@ enum RBACPermissions
|
||||
RBAC_PERM_COMMAND_RELOAD_QUEST_TEMPLATE = 679,
|
||||
RBAC_PERM_COMMAND_RELOAD_RBAC = 680,
|
||||
RBAC_PERM_COMMAND_RELOAD_REFERENCE_LOOT_TEMPLATE = 681,
|
||||
RBAC_PERM_COMMAND_RELOAD_REPUTATION_REWARD_RATE = 682,
|
||||
RBAC_PERM_COMMAND_RELOAD_RESERVED_NAME = 683,
|
||||
RBAC_PERM_COMMAND_RELOAD_SKILL_DISCOVERY_TEMPLATE = 684,
|
||||
RBAC_PERM_COMMAND_RELOAD_SKILL_EXTRA_ITEM_TEMPLATE = 685,
|
||||
RBAC_PERM_COMMAND_RELOAD_SKILL_FISHING_BASE_LEVEL = 686,
|
||||
RBAC_PERM_COMMAND_RELOAD_SKINNING_LOOT_TEMPLATE = 687,
|
||||
RBAC_PERM_COMMAND_RELOAD_SMART_SCRIPTS = 688,
|
||||
RBAC_PERM_COMMAND_RELOAD_SPELL_AREA = 689,
|
||||
RBAC_PERM_COMMAND_RELOAD_SPELL_BONUS_DATA = 690,
|
||||
RBAC_PERM_COMMAND_RELOAD_SPELL_GROUP = 691,
|
||||
RBAC_PERM_COMMAND_RELOAD_SPELL_GROUP_STACK_RULES = 692,
|
||||
RBAC_PERM_COMMAND_RELOAD_SPELL_LEARN_SPELL = 693,
|
||||
RBAC_PERM_COMMAND_RELOAD_SPELL_LINKED_SPELL = 694,
|
||||
RBAC_PERM_COMMAND_RELOAD_RESERVED_NAME = 682,
|
||||
RBAC_PERM_COMMAND_RELOAD_REPUTATION_REWARD_RATE = 683,
|
||||
RBAC_PERM_COMMAND_RELOAD_SPILLOVER_TEMPLATE = 684,
|
||||
RBAC_PERM_COMMAND_RELOAD_SKILL_DISCOVERY_TEMPLATE = 685,
|
||||
RBAC_PERM_COMMAND_RELOAD_SKILL_EXTRA_ITEM_TEMPLATE = 686,
|
||||
RBAC_PERM_COMMAND_RELOAD_SKILL_FISHING_BASE_LEVEL = 687,
|
||||
RBAC_PERM_COMMAND_RELOAD_SKINNING_LOOT_TEMPLATE = 688,
|
||||
RBAC_PERM_COMMAND_RELOAD_SMART_SCRIPTS = 689,
|
||||
RBAC_PERM_COMMAND_RELOAD_SPELL_REQUIRED = 690,
|
||||
RBAC_PERM_COMMAND_RELOAD_SPELL_AREA = 691,
|
||||
RBAC_PERM_COMMAND_RELOAD_SPELL_BONUS_DATA = 692,
|
||||
RBAC_PERM_COMMAND_RELOAD_SPELL_GROUP = 693,
|
||||
RBAC_PERM_COMMAND_RELOAD_SPELL_LEARN_SPELL = 694,
|
||||
RBAC_PERM_COMMAND_RELOAD_SPELL_LOOT_TEMPLATE = 695,
|
||||
RBAC_PERM_COMMAND_RELOAD_SPELL_PET_AURAS = 696,
|
||||
RBAC_PERM_COMMAND_RELOAD_SPELL_PROC = 697,
|
||||
RBAC_PERM_COMMAND_RELOAD_SPELL_LINKED_SPELL = 696,
|
||||
RBAC_PERM_COMMAND_RELOAD_SPELL_PET_AURAS = 697,
|
||||
RBAC_PERM_COMMAND_RELOAD_SPELL_PROC_EVENT = 698,
|
||||
RBAC_PERM_COMMAND_RELOAD_SPELL_REQUIRED = 699,
|
||||
RBAC_PERM_COMMAND_RELOAD_SPELL_PROC = 699,
|
||||
RBAC_PERM_COMMAND_RELOAD_SPELL_SCRIPTS = 700,
|
||||
RBAC_PERM_COMMAND_RELOAD_SPELL_TARGET_POSITION = 701,
|
||||
RBAC_PERM_COMMAND_RELOAD_SPELL_THREATS = 702,
|
||||
RBAC_PERM_COMMAND_RELOAD_SPILLOVER_TEMPLATE = 703,
|
||||
RBAC_PERM_COMMAND_RELOAD_SPELL_GROUP_STACK_RULES = 703,
|
||||
RBAC_PERM_COMMAND_RELOAD_TRINITY_STRING = 704,
|
||||
RBAC_PERM_COMMAND_RELOAD_VEHICLE_ACCESORY = 705,
|
||||
RBAC_PERM_COMMAND_RELOAD_VEHICLE_TEMPLATE_ACCESSORY = 706,
|
||||
RBAC_PERM_COMMAND_RELOAD_WARDEN_ACTION = 707,
|
||||
RBAC_PERM_COMMAND_RELOAD_WAYPOINT_DATA = 708,
|
||||
RBAC_PERM_COMMAND_RELOAD_WAYPOINT_SCRIPTS = 709,
|
||||
RBAC_PERM_COMMAND_RELOAD_WARDEN_ACTION = 705,
|
||||
RBAC_PERM_COMMAND_RELOAD_WAYPOINT_SCRIPTS = 706,
|
||||
RBAC_PERM_COMMAND_RELOAD_WAYPOINT_DATA = 707,
|
||||
RBAC_PERM_COMMAND_RELOAD_VEHICLE_ACCESORY = 708,
|
||||
RBAC_PERM_COMMAND_RELOAD_VEHICLE_TEMPLATE_ACCESSORY = 709,
|
||||
RBAC_PERM_COMMAND_RESET = 710,
|
||||
RBAC_PERM_COMMAND_RESET_ACHIEVEMENTS = 711,
|
||||
RBAC_PERM_COMMAND_RESET_HONOR = 712,
|
||||
|
||||
@@ -2283,7 +2283,7 @@ void Creature::AllLootRemovedFromCorpse()
|
||||
if (loot.loot_type == LOOT_SKINNING)
|
||||
m_corpseRemoveTime = now;
|
||||
else
|
||||
m_corpseRemoveTime = now + m_corpseDelay * decayRate;
|
||||
m_corpseRemoveTime = now + uint32(m_corpseDelay * decayRate);
|
||||
|
||||
m_respawnTime = m_corpseRemoveTime + m_respawnDelay;
|
||||
}
|
||||
|
||||
@@ -1545,6 +1545,14 @@ void Item::ItemContainerSaveLootToDB()
|
||||
// but we don't want to resave it.
|
||||
if (!_li->canSave)
|
||||
continue;
|
||||
// Conditions are not checked when loot is generated, it is checked when loot is sent to a player.
|
||||
// For items that are lootable, loot is saved to the DB immediately, that means that loot can be
|
||||
// saved to the DB that the player never should have gotten. This check prevents that, so that only
|
||||
// items that the player should get in loot are in the DB.
|
||||
// IE: Horde items are not saved to the DB for Ally players.
|
||||
Player* const guid = GetOwner();
|
||||
if (!_li->AllowedForPlayer(guid))
|
||||
continue;
|
||||
|
||||
stmt_items = CharacterDatabase.GetPreparedStatement(CHAR_INS_ITEMCONTAINER_ITEMS);
|
||||
|
||||
|
||||
@@ -12923,13 +12923,6 @@ void Player::SwapItem(uint16 src, uint16 dst)
|
||||
|
||||
// SRC checks
|
||||
|
||||
if (pSrcItem->m_lootGenerated) // prevent swap looting item
|
||||
{
|
||||
//best error message found for attempting to swap while looting
|
||||
SendEquipError(EQUIP_ERR_CLIENT_LOCKED_OUT, pSrcItem, NULL);
|
||||
return;
|
||||
}
|
||||
|
||||
// check unequip potability for equipped items and bank bags
|
||||
if (IsEquipmentPos(src) || IsBagPos(src))
|
||||
{
|
||||
@@ -12960,13 +12953,6 @@ void Player::SwapItem(uint16 src, uint16 dst)
|
||||
|
||||
if (pDstItem)
|
||||
{
|
||||
if (pDstItem->m_lootGenerated) // prevent swap looting item
|
||||
{
|
||||
//best error message found for attempting to swap while looting
|
||||
SendEquipError(EQUIP_ERR_CLIENT_LOCKED_OUT, pDstItem, NULL);
|
||||
return;
|
||||
}
|
||||
|
||||
// check unequip potability for equipped items and bank bags
|
||||
if (IsEquipmentPos(dst) || IsBagPos(dst))
|
||||
{
|
||||
|
||||
@@ -365,6 +365,10 @@ void WorldSession::HandleArenaTeamRemoveOpcode(WorldPacket& recvData)
|
||||
SendArenaTeamCommandResult(ERR_ARENA_TEAM_QUIT_S, "", "", ERR_ARENA_TEAM_LEADER_LEAVE_S);
|
||||
return;
|
||||
}
|
||||
|
||||
// Player cannot be removed during fights
|
||||
if (arenaTeam->IsFighting())
|
||||
return;
|
||||
|
||||
arenaTeam->DelMember(member->Guid, true);
|
||||
|
||||
|
||||
@@ -16,14 +16,15 @@
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <memory>
|
||||
#include "WorldSocket.h"
|
||||
#include "BigNumber.h"
|
||||
#include "Opcodes.h"
|
||||
#include "Player.h"
|
||||
#include "ScriptMgr.h"
|
||||
#include "SHA1.h"
|
||||
#include "PacketLog.h"
|
||||
#include "BattlenetAccountMgr.h"
|
||||
#include <memory>
|
||||
|
||||
using boost::asio::ip::tcp;
|
||||
|
||||
@@ -68,6 +69,22 @@ void WorldSocket::ReadHeaderHandler()
|
||||
EndianConvertReverse(header->size);
|
||||
EndianConvert(header->cmd);
|
||||
|
||||
if (!header->IsValid())
|
||||
{
|
||||
if (_worldSession)
|
||||
{
|
||||
Player* player = _worldSession->GetPlayer();
|
||||
TC_LOG_ERROR("network", "WorldSocket::ReadHeaderHandler(): client (account: %u, char [GUID: %u, name: %s]) sent malformed packet (size: %hu, cmd: %u)",
|
||||
_worldSession->GetAccountId(), player ? player->GetGUIDLow() : 0, player ? player->GetName().c_str() : "<none>", header->size, header->cmd);
|
||||
}
|
||||
else
|
||||
TC_LOG_ERROR("network", "WorldSocket::ReadHeaderHandler(): client %s sent malformed packet (size: %hu, cmd: %u)",
|
||||
GetRemoteIpAddress().to_string().c_str(), header->size, header->cmd);
|
||||
|
||||
CloseSocket();
|
||||
return;
|
||||
}
|
||||
|
||||
AsyncReadData(header->size - sizeof(header->cmd));
|
||||
}
|
||||
|
||||
@@ -75,8 +92,6 @@ void WorldSocket::ReadDataHandler()
|
||||
{
|
||||
ClientPktHeader* header = reinterpret_cast<ClientPktHeader*>(GetHeaderBuffer());
|
||||
|
||||
header->size -= sizeof(header->cmd);
|
||||
|
||||
Opcodes opcode = PacketFilter::DropHighBytes(Opcodes(header->cmd));
|
||||
|
||||
std::string opcodeName = GetOpcodeNameForLogging(opcode);
|
||||
@@ -141,7 +156,8 @@ void WorldSocket::ReadDataHandler()
|
||||
if (!_worldSession)
|
||||
{
|
||||
TC_LOG_ERROR("network.opcode", "ProcessIncoming: Client not authed opcode = %u", uint32(opcode));
|
||||
break;
|
||||
CloseSocket();
|
||||
return;
|
||||
}
|
||||
|
||||
// Our Idle timer will reset on any non PING opcodes.
|
||||
@@ -197,10 +213,12 @@ void WorldSocket::HandleAuthSession(WorldPacket& recvPacket)
|
||||
BigNumber k;
|
||||
bool wardenActive = sWorld->getBoolConfig(CONFIG_WARDEN_ENABLED);
|
||||
WorldPacket addonsData;
|
||||
uint8 loginServerType;
|
||||
uint32 realmIndex;
|
||||
|
||||
recvPacket.read_skip<uint32>();
|
||||
recvPacket.read_skip<uint32>();
|
||||
recvPacket.read_skip<uint8>();
|
||||
recvPacket.read_skip<uint32>(); // ServerId - Used for GRUNT only
|
||||
recvPacket.read_skip<uint32>(); // Battlegroup
|
||||
recvPacket >> loginServerType;
|
||||
recvPacket >> digest[10];
|
||||
recvPacket >> digest[18];
|
||||
recvPacket >> digest[12];
|
||||
@@ -215,7 +233,7 @@ void WorldSocket::HandleAuthSession(WorldPacket& recvPacket)
|
||||
recvPacket >> digest[3];
|
||||
recvPacket >> clientBuild;
|
||||
recvPacket >> digest[8];
|
||||
recvPacket.read_skip<uint32>();
|
||||
recvPacket >> realmIndex;
|
||||
recvPacket.read_skip<uint8>();
|
||||
recvPacket >> digest[17];
|
||||
recvPacket >> digest[6];
|
||||
@@ -224,7 +242,7 @@ void WorldSocket::HandleAuthSession(WorldPacket& recvPacket)
|
||||
recvPacket >> digest[11];
|
||||
recvPacket >> clientSeed;
|
||||
recvPacket >> digest[2];
|
||||
recvPacket.read_skip<uint32>();
|
||||
recvPacket.read_skip<uint32>(); // Region
|
||||
recvPacket >> digest[14];
|
||||
recvPacket >> digest[13];
|
||||
|
||||
@@ -236,15 +254,9 @@ void WorldSocket::HandleAuthSession(WorldPacket& recvPacket)
|
||||
recvPacket.read((uint8*)addonsData.contents(), addonSize);
|
||||
}
|
||||
|
||||
recvPacket.ReadBit();
|
||||
recvPacket.ReadBit(); // UseIPv6
|
||||
uint32 accountNameLength = recvPacket.ReadBits(12);
|
||||
account = recvPacket.ReadString(accountNameLength);
|
||||
if (sWorld->IsClosed())
|
||||
{
|
||||
SendAuthResponseError(AUTH_REJECT);
|
||||
TC_LOG_ERROR("network", "WorldSocket::HandleAuthSession: World closed, denying client (%s).", GetRemoteIpAddress().to_string().c_str());
|
||||
return;
|
||||
}
|
||||
|
||||
// Get the account information from the auth database
|
||||
// 0 1 2 3 4 5 6 7 8
|
||||
@@ -252,8 +264,17 @@ void WorldSocket::HandleAuthSession(WorldPacket& recvPacket)
|
||||
PreparedStatement* stmt;
|
||||
uint32 battlenetAccountId = 0;
|
||||
uint8 battlenetAccountIndex = 0;
|
||||
if (Battlenet::AccountMgr::GetAccountIdAndIndex(account, &battlenetAccountId, &battlenetAccountIndex))
|
||||
if (loginServerType == 1)
|
||||
{
|
||||
if (!Battlenet::AccountMgr::GetAccountIdAndIndex(account, &battlenetAccountId, &battlenetAccountIndex))
|
||||
{
|
||||
// We can not log here, as we do not know the account. Thus, no accountId.
|
||||
SendAuthResponseError(AUTH_UNKNOWN_ACCOUNT);
|
||||
TC_LOG_ERROR("network", "WorldSocket::HandleAuthSession: Sent Auth Response (unknown account).");
|
||||
DelayedCloseSocket();
|
||||
return;
|
||||
}
|
||||
|
||||
stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_ACCOUNT_INFO_BY_BNET);
|
||||
stmt->setUInt32(0, battlenetAccountId);
|
||||
stmt->setUInt8(1, battlenetAccountIndex);
|
||||
@@ -272,6 +293,7 @@ void WorldSocket::HandleAuthSession(WorldPacket& recvPacket)
|
||||
// We can not log here, as we do not know the account. Thus, no accountId.
|
||||
SendAuthResponseError(AUTH_UNKNOWN_ACCOUNT);
|
||||
TC_LOG_ERROR("network", "WorldSocket::HandleAuthSession: Sent Auth Response (unknown account).");
|
||||
DelayedCloseSocket();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -297,6 +319,57 @@ void WorldSocket::HandleAuthSession(WorldPacket& recvPacket)
|
||||
// id has to be fetched at this point, so that first actual account response that fails can be logged
|
||||
id = fields[0].GetUInt32();
|
||||
|
||||
k.SetHexStr(fields[1].GetCString());
|
||||
|
||||
// even if auth credentials are bad, try using the session key we have - client cannot read auth response error without it
|
||||
_authCrypt.Init(&k);
|
||||
|
||||
// First reject the connection if packet contains invalid data or realm state doesn't allow logging in
|
||||
if (sWorld->IsClosed())
|
||||
{
|
||||
SendAuthResponseError(AUTH_REJECT);
|
||||
TC_LOG_ERROR("network", "WorldSocket::HandleAuthSession: World closed, denying client (%s).", GetRemoteIpAddress().to_string().c_str());
|
||||
DelayedCloseSocket();
|
||||
return;
|
||||
}
|
||||
|
||||
if (realmIndex != realmID)
|
||||
{
|
||||
SendAuthResponseError(REALM_LIST_REALM_NOT_FOUND);
|
||||
TC_LOG_ERROR("network", "WorldSocket::HandleAuthSession: Sent Auth Response (bad realm).");
|
||||
DelayedCloseSocket();
|
||||
return;
|
||||
}
|
||||
|
||||
std::string os = fields[8].GetString();
|
||||
|
||||
// Must be done before WorldSession is created
|
||||
if (wardenActive && os != "Win" && os != "OSX")
|
||||
{
|
||||
SendAuthResponseError(AUTH_REJECT);
|
||||
TC_LOG_ERROR("network", "WorldSocket::HandleAuthSession: Client %s attempted to log in using invalid client OS (%s).", address.c_str(), os.c_str());
|
||||
DelayedCloseSocket();
|
||||
return;
|
||||
}
|
||||
|
||||
// Check that Key and account name are the same on client and server
|
||||
uint32 t = 0;
|
||||
|
||||
sha.UpdateData(account);
|
||||
sha.UpdateData((uint8*)&t, 4);
|
||||
sha.UpdateData((uint8*)&clientSeed, 4);
|
||||
sha.UpdateData((uint8*)&_authSeed, 4);
|
||||
sha.UpdateBigNumbers(&k, NULL);
|
||||
sha.Finalize();
|
||||
|
||||
if (memcmp(sha.GetDigest(), digest, 20))
|
||||
{
|
||||
SendAuthResponseError(AUTH_FAILED);
|
||||
TC_LOG_ERROR("network", "WorldSocket::HandleAuthSession: Authentication failed for account: %u ('%s') address: %s", id, account.c_str(), address.c_str());
|
||||
DelayedCloseSocket();
|
||||
return;
|
||||
}
|
||||
|
||||
///- Re-check ip locking (same check as in auth).
|
||||
if (fields[3].GetUInt8() == 1) // if ip is locked
|
||||
{
|
||||
@@ -306,12 +379,11 @@ void WorldSocket::HandleAuthSession(WorldPacket& recvPacket)
|
||||
TC_LOG_DEBUG("network", "WorldSocket::HandleAuthSession: Sent Auth Response (Account IP differs. Original IP: %s, new IP: %s).", fields[2].GetCString(), address.c_str());
|
||||
// We could log on hook only instead of an additional db log, however action logger is config based. Better keep DB logging as well
|
||||
sScriptMgr->OnFailedAccountLogin(id);
|
||||
DelayedCloseSocket();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
k.SetHexStr(fields[1].GetCString());
|
||||
|
||||
int64 mutetime = fields[5].GetInt64();
|
||||
//! Negative mutetime indicates amount of seconds to be muted effective on next login - which is now.
|
||||
if (mutetime < 0)
|
||||
@@ -331,16 +403,6 @@ void WorldSocket::HandleAuthSession(WorldPacket& recvPacket)
|
||||
locale = LOCALE_enUS;
|
||||
|
||||
uint32 recruiter = fields[7].GetUInt32();
|
||||
std::string os = fields[8].GetString();
|
||||
|
||||
// Must be done before WorldSession is created
|
||||
if (wardenActive && os != "Win" && os != "OSX")
|
||||
{
|
||||
SendAuthResponseError(AUTH_REJECT);
|
||||
TC_LOG_ERROR("network", "WorldSocket::HandleAuthSession: Client %s attempted to log in using invalid client OS (%s).", address.c_str(), os.c_str());
|
||||
return;
|
||||
}
|
||||
|
||||
// Checks gmlevel per Realm
|
||||
stmt = LoginDatabase.GetPreparedStatement(LOGIN_GET_GMLEVEL_BY_REALMID);
|
||||
|
||||
@@ -370,6 +432,7 @@ void WorldSocket::HandleAuthSession(WorldPacket& recvPacket)
|
||||
SendAuthResponseError(AUTH_BANNED);
|
||||
TC_LOG_ERROR("network", "WorldSocket::HandleAuthSession: Sent Auth Response (Account banned).");
|
||||
sScriptMgr->OnFailedAccountLogin(id);
|
||||
DelayedCloseSocket();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -381,23 +444,7 @@ void WorldSocket::HandleAuthSession(WorldPacket& recvPacket)
|
||||
SendAuthResponseError(AUTH_UNAVAILABLE);
|
||||
TC_LOG_INFO("network", "WorldSocket::HandleAuthSession: User tries to login but his security level is not enough");
|
||||
sScriptMgr->OnFailedAccountLogin(id);
|
||||
return;
|
||||
}
|
||||
|
||||
// Check that Key and account name are the same on client and server
|
||||
uint32 t = 0;
|
||||
|
||||
sha.UpdateData(account);
|
||||
sha.UpdateData((uint8*)&t, 4);
|
||||
sha.UpdateData((uint8*)&clientSeed, 4);
|
||||
sha.UpdateData((uint8*)&_authSeed, 4);
|
||||
sha.UpdateBigNumbers(&k, NULL);
|
||||
sha.Finalize();
|
||||
|
||||
if (memcmp(sha.GetDigest(), digest, 20))
|
||||
{
|
||||
SendAuthResponseError(AUTH_FAILED);
|
||||
TC_LOG_ERROR("network", "WorldSocket::HandleAuthSession: Authentication failed for account: %u ('%s') address: %s", id, account.c_str(), address.c_str());
|
||||
DelayedCloseSocket();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -424,19 +471,15 @@ void WorldSocket::HandleAuthSession(WorldPacket& recvPacket)
|
||||
|
||||
LoginDatabase.Execute(stmt);
|
||||
|
||||
// NOTE ATM the socket is single-threaded, have this in mind ...
|
||||
// At this point, we can safely hook a successful login
|
||||
sScriptMgr->OnAccountLogin(id);
|
||||
|
||||
_worldSession = new WorldSession(id, battlenetAccountId, shared_from_this(), AccountTypes(security), expansion, mutetime, locale, recruiter, isRecruiter);
|
||||
|
||||
_authCrypt.Init(&k);
|
||||
|
||||
_worldSession->LoadGlobalAccountData();
|
||||
_worldSession->LoadTutorialsData();
|
||||
_worldSession->ReadAddonsInfo(addonsData);
|
||||
_worldSession->LoadPermissions();
|
||||
|
||||
// At this point, we can safely hook a successful login
|
||||
sScriptMgr->OnAccountLogin(id);
|
||||
|
||||
// Initialize Warden system only if it is enabled by config
|
||||
if (wardenActive)
|
||||
_worldSession->InitWarden(&k, os);
|
||||
|
||||
@@ -48,6 +48,8 @@ struct ClientPktHeader
|
||||
{
|
||||
uint16 size;
|
||||
uint32 cmd;
|
||||
|
||||
bool IsValid() const { return size >= 4 && size < 10240 && (cmd < NUM_OPCODE_HANDLERS || (header.cmd >> 16) == 0x4C52); }
|
||||
};
|
||||
|
||||
#pragma pack(pop)
|
||||
|
||||
@@ -70,6 +70,11 @@ class boss_arcanist_doan : public CreatureScript
|
||||
events.ScheduleEvent(EVENT_POLYMORPH, 30 * IN_MILLISECONDS);
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
{
|
||||
_JustDied();
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
if (!UpdateVictim())
|
||||
@@ -119,7 +124,7 @@ class boss_arcanist_doan : public CreatureScript
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
{
|
||||
return new boss_arcanist_doanAI(creature);
|
||||
return GetInstanceAI<boss_arcanist_doanAI>(creature);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
|
||||
* Copyright (C) 2006-2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
@@ -25,79 +24,104 @@ EndScriptData */
|
||||
|
||||
#include "ScriptMgr.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "scarlet_monastery.h"
|
||||
|
||||
enum Spells
|
||||
{
|
||||
SPELL_CALLOFTHEGRAVE = 17831,
|
||||
SPELL_CALL_OF_THE_GRAVE = 17831,
|
||||
SPELL_TERRIFY = 7399,
|
||||
SPELL_SOULSIPHON = 7290
|
||||
SPELL_SOUL_SIPHON = 7290
|
||||
};
|
||||
|
||||
enum Events
|
||||
{
|
||||
EVENT_CALL_OF_GRAVE = 1,
|
||||
EVENT_TERRIFY,
|
||||
EVENT_SOUL_SIPHON
|
||||
};
|
||||
|
||||
class boss_azshir_the_sleepless : public CreatureScript
|
||||
{
|
||||
public:
|
||||
boss_azshir_the_sleepless() : CreatureScript("boss_azshir_the_sleepless") { }
|
||||
public:
|
||||
boss_azshir_the_sleepless() : CreatureScript("boss_azshir_the_sleepless") { }
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
{
|
||||
return new boss_azshir_the_sleeplessAI(creature);
|
||||
}
|
||||
|
||||
struct boss_azshir_the_sleeplessAI : public ScriptedAI
|
||||
{
|
||||
boss_azshir_the_sleeplessAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
|
||||
uint32 SoulSiphon_Timer;
|
||||
uint32 CallOftheGrave_Timer;
|
||||
uint32 Terrify_Timer;
|
||||
|
||||
void Reset() override
|
||||
struct boss_azshir_the_sleeplessAI : public BossAI
|
||||
{
|
||||
SoulSiphon_Timer = 1;
|
||||
CallOftheGrave_Timer = 30000;
|
||||
Terrify_Timer = 20000;
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override { }
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
//If we are <50% hp cast Soul Siphon rank 1
|
||||
if (!HealthAbovePct(50) && !me->IsNonMeleeSpellCast(false))
|
||||
boss_azshir_the_sleeplessAI(Creature* creature) : BossAI(creature, DATA_AZSHIR)
|
||||
{
|
||||
//SoulSiphon_Timer
|
||||
if (SoulSiphon_Timer <= diff)
|
||||
_siphon = false;
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
_Reset();
|
||||
_siphon = false;
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override
|
||||
{
|
||||
_EnterCombat();
|
||||
events.ScheduleEvent(EVENT_CALL_OF_GRAVE, 30000);
|
||||
events.ScheduleEvent(EVENT_TERRIFY, 20000);
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
{
|
||||
_JustDied();
|
||||
}
|
||||
|
||||
void DamageTaken(Unit* /*done_by*/, uint32& /*damage*/) override
|
||||
{
|
||||
if (HealthBelowPct(50) && !_siphon)
|
||||
{
|
||||
DoCastVictim(SPELL_SOULSIPHON);
|
||||
DoCastVictim(SPELL_SOUL_SIPHON);
|
||||
events.ScheduleEvent(EVENT_SOUL_SIPHON, 20000);
|
||||
_siphon = true;
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
if (me->HasUnitState(UNIT_STATE_CASTING))
|
||||
return;
|
||||
|
||||
//SoulSiphon_Timer = 20000;
|
||||
while (uint32 eventId = events.ExecuteEvent())
|
||||
{
|
||||
switch (eventId)
|
||||
{
|
||||
case EVENT_CALL_OF_GRAVE:
|
||||
DoCastVictim(SPELL_CALL_OF_THE_GRAVE);
|
||||
events.ScheduleEvent(EVENT_CALL_OF_GRAVE, 30000);
|
||||
break;
|
||||
case EVENT_TERRIFY:
|
||||
DoCastVictim(SPELL_TERRIFY);
|
||||
events.ScheduleEvent(EVENT_TERRIFY, 20000);
|
||||
break;
|
||||
case EVENT_SOUL_SIPHON:
|
||||
DoCastVictim(SPELL_SOUL_SIPHON);
|
||||
events.ScheduleEvent(EVENT_SOUL_SIPHON, 20000);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
else SoulSiphon_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
//CallOfTheGrave_Timer
|
||||
if (CallOftheGrave_Timer <= diff)
|
||||
{
|
||||
DoCastVictim(SPELL_CALLOFTHEGRAVE);
|
||||
CallOftheGrave_Timer = 30000;
|
||||
}
|
||||
else CallOftheGrave_Timer -= diff;
|
||||
private:
|
||||
bool _siphon;
|
||||
};
|
||||
|
||||
//Terrify_Timer
|
||||
if (Terrify_Timer <= diff)
|
||||
{
|
||||
DoCastVictim(SPELL_TERRIFY);
|
||||
Terrify_Timer = 20000;
|
||||
}
|
||||
else Terrify_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
{
|
||||
return GetInstanceAI<boss_azshir_the_sleeplessAI>(creature);
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
void AddSC_boss_azshir_the_sleepless()
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
|
||||
* Copyright (C) 2006-2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
@@ -16,15 +15,9 @@
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* ScriptData
|
||||
SDName: Boss_Bloodmage_Thalnos
|
||||
SD%Complete: 100
|
||||
SDComment:
|
||||
SDCategory: Scarlet Monastery
|
||||
EndScriptData */
|
||||
|
||||
#include "ScriptMgr.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "scarlet_monastery.h"
|
||||
|
||||
enum Yells
|
||||
{
|
||||
@@ -38,95 +31,102 @@ enum Spells
|
||||
SPELL_FLAMESHOCK = 8053,
|
||||
SPELL_SHADOWBOLT = 1106,
|
||||
SPELL_FLAMESPIKE = 8814,
|
||||
SPELL_FIRENOVA = 16079,
|
||||
SPELL_FIRENOVA = 16079
|
||||
};
|
||||
|
||||
enum Events
|
||||
{
|
||||
EVENT_FLAME_SHOCK = 1,
|
||||
EVENT_SHADOW_BOLT,
|
||||
EVENT_FLAME_SPIKE,
|
||||
EVENT_FIRE_NOVA
|
||||
};
|
||||
|
||||
class boss_bloodmage_thalnos : public CreatureScript
|
||||
{
|
||||
public:
|
||||
boss_bloodmage_thalnos() : CreatureScript("boss_bloodmage_thalnos") { }
|
||||
public:
|
||||
boss_bloodmage_thalnos() : CreatureScript("boss_bloodmage_thalnos") { }
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
{
|
||||
return new boss_bloodmage_thalnosAI(creature);
|
||||
}
|
||||
|
||||
struct boss_bloodmage_thalnosAI : public ScriptedAI
|
||||
{
|
||||
boss_bloodmage_thalnosAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
|
||||
bool HpYell;
|
||||
uint32 FlameShock_Timer;
|
||||
uint32 ShadowBolt_Timer;
|
||||
uint32 FlameSpike_Timer;
|
||||
uint32 FireNova_Timer;
|
||||
|
||||
void Reset() override
|
||||
struct boss_bloodmage_thalnosAI : public BossAI
|
||||
{
|
||||
HpYell = false;
|
||||
FlameShock_Timer = 10000;
|
||||
ShadowBolt_Timer = 2000;
|
||||
FlameSpike_Timer = 8000;
|
||||
FireNova_Timer = 40000;
|
||||
}
|
||||
boss_bloodmage_thalnosAI(Creature* creature) : BossAI(creature, DATA_BLOODMAGE_THALNOS)
|
||||
{
|
||||
_hpYell = false;
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override
|
||||
void Reset() override
|
||||
{
|
||||
_hpYell = false;
|
||||
_Reset();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override
|
||||
{
|
||||
Talk(SAY_AGGRO);
|
||||
_EnterCombat();
|
||||
events.ScheduleEvent(EVENT_FLAME_SHOCK, 10000);
|
||||
events.ScheduleEvent(EVENT_SHADOW_BOLT, 2000);
|
||||
events.ScheduleEvent(EVENT_FLAME_SPIKE, 8000);
|
||||
events.ScheduleEvent(EVENT_FIRE_NOVA, 40000);
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
{
|
||||
_JustDied();
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* /*victim*/) override
|
||||
{
|
||||
Talk(SAY_KILL);
|
||||
}
|
||||
|
||||
void DamageTaken(Unit* /*done_by*/, uint32& /*damage*/) override
|
||||
{
|
||||
if (HealthBelowPct(35) && !_hpYell)
|
||||
{
|
||||
Talk(SAY_HEALTH);
|
||||
_hpYell = true;
|
||||
}
|
||||
}
|
||||
|
||||
void ExecuteEvent(uint32 eventId) override
|
||||
{
|
||||
switch (eventId)
|
||||
{
|
||||
case EVENT_FLAME_SHOCK:
|
||||
DoCastVictim(SPELL_FLAMESHOCK);
|
||||
events.ScheduleEvent(EVENT_FLAME_SHOCK, urand(10000, 15000));
|
||||
break;
|
||||
case EVENT_SHADOW_BOLT:
|
||||
DoCastVictim(SPELL_SHADOWBOLT);
|
||||
events.ScheduleEvent(EVENT_SHADOW_BOLT, 2000);
|
||||
break;
|
||||
case EVENT_FLAME_SPIKE:
|
||||
DoCastVictim(SPELL_FLAMESPIKE);
|
||||
events.ScheduleEvent(EVENT_FLAME_SPIKE, 30000);
|
||||
break;
|
||||
case EVENT_FIRE_NOVA:
|
||||
DoCastVictim(SPELL_FIRENOVA);
|
||||
events.ScheduleEvent(EVENT_FIRE_NOVA, 40000);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
BossAI::UpdateAI(diff);
|
||||
}
|
||||
|
||||
private:
|
||||
bool _hpYell;
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
{
|
||||
Talk(SAY_AGGRO);
|
||||
return GetInstanceAI<boss_bloodmage_thalnosAI>(creature);
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* /*Victim*/) override
|
||||
{
|
||||
Talk(SAY_KILL);
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
//If we are <35% hp
|
||||
if (!HpYell && !HealthAbovePct(35))
|
||||
{
|
||||
Talk(SAY_HEALTH);
|
||||
HpYell = true;
|
||||
}
|
||||
|
||||
//FlameShock_Timer
|
||||
if (FlameShock_Timer <= diff)
|
||||
{
|
||||
DoCastVictim(SPELL_FLAMESHOCK);
|
||||
FlameShock_Timer = urand(10000, 15000);
|
||||
}
|
||||
else FlameShock_Timer -= diff;
|
||||
|
||||
//FlameSpike_Timer
|
||||
if (FlameSpike_Timer <= diff)
|
||||
{
|
||||
DoCastVictim(SPELL_FLAMESPIKE);
|
||||
FlameSpike_Timer = 30000;
|
||||
}
|
||||
else FlameSpike_Timer -= diff;
|
||||
|
||||
//FireNova_Timer
|
||||
if (FireNova_Timer <= diff)
|
||||
{
|
||||
DoCastVictim(SPELL_FIRENOVA);
|
||||
FireNova_Timer = 40000;
|
||||
}
|
||||
else FireNova_Timer -= diff;
|
||||
|
||||
//ShadowBolt_Timer
|
||||
if (ShadowBolt_Timer <= diff)
|
||||
{
|
||||
DoCastVictim(SPELL_SHADOWBOLT);
|
||||
ShadowBolt_Timer = 2000;
|
||||
}
|
||||
else ShadowBolt_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
void AddSC_boss_bloodmage_thalnos()
|
||||
|
||||
@@ -155,13 +155,13 @@ public:
|
||||
{
|
||||
npc_wisp_invisAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Creaturetype = delay = spell = spell2 = 0;
|
||||
Creaturetype = delay = _spell = _spell2 = 0;
|
||||
}
|
||||
|
||||
uint32 Creaturetype;
|
||||
uint32 delay;
|
||||
uint32 spell;
|
||||
uint32 spell2;
|
||||
uint32 _spell;
|
||||
uint32 _spell2;
|
||||
void Reset() override { }
|
||||
void EnterCombat(Unit* /*who*/) override { }
|
||||
void SetType(uint32 _type)
|
||||
@@ -169,24 +169,24 @@ public:
|
||||
switch (Creaturetype = _type)
|
||||
{
|
||||
case 1:
|
||||
spell = SPELL_PUMPKIN_AURA_GREEN;
|
||||
_spell = SPELL_PUMPKIN_AURA_GREEN;
|
||||
break;
|
||||
case 2:
|
||||
delay = 15000;
|
||||
spell = SPELL_BODY_FLAME;
|
||||
spell2 = SPELL_DEATH;
|
||||
_spell = SPELL_BODY_FLAME;
|
||||
_spell2 = SPELL_DEATH;
|
||||
break;
|
||||
case 3:
|
||||
delay = 15000;
|
||||
spell = SPELL_SMOKE;
|
||||
_spell = SPELL_SMOKE;
|
||||
break;
|
||||
case 4:
|
||||
delay = 7000;
|
||||
spell2 = SPELL_WISP_BLUE;
|
||||
_spell2 = SPELL_WISP_BLUE;
|
||||
break;
|
||||
}
|
||||
if (spell)
|
||||
DoCast(me, spell);
|
||||
if (_spell)
|
||||
DoCast(me, _spell);
|
||||
}
|
||||
|
||||
void SpellHit(Unit* /*caster*/, const SpellInfo* spell) override
|
||||
@@ -196,7 +196,6 @@ public:
|
||||
}
|
||||
|
||||
void MoveInLineOfSight(Unit* who) override
|
||||
|
||||
{
|
||||
if (!who || Creaturetype != 1 || !who->isTargetableForAttack())
|
||||
return;
|
||||
@@ -212,8 +211,8 @@ public:
|
||||
if (delay <= diff)
|
||||
{
|
||||
me->RemoveAurasDueToSpell(SPELL_SMOKE);
|
||||
if (spell2)
|
||||
DoCast(me, spell2);
|
||||
if (_spell2)
|
||||
DoCast(me, _spell2);
|
||||
delay = 0;
|
||||
} else delay -= diff;
|
||||
}
|
||||
@@ -435,7 +434,7 @@ public:
|
||||
}
|
||||
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
||||
//instance->SetData(DATA_HORSEMAN_EVENT, NOT_STARTED);
|
||||
//instance->SetBossState(DATA_HORSEMAN_EVENT, NOT_STARTED);
|
||||
}
|
||||
|
||||
void FlyMode()
|
||||
@@ -471,7 +470,7 @@ public:
|
||||
break;
|
||||
}
|
||||
case 6:
|
||||
instance->SetData(GAMEOBJECT_PUMPKIN_SHRINE, 0); //hide gameobject
|
||||
instance->SetData(DATA_PUMPKIN_SHRINE, 0); //hide gameobject
|
||||
break;
|
||||
case 19:
|
||||
me->SetDisableGravity(false);
|
||||
@@ -493,7 +492,7 @@ public:
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override
|
||||
{
|
||||
instance->SetData(DATA_HORSEMAN_EVENT, IN_PROGRESS);
|
||||
instance->SetBossState(DATA_HORSEMAN_EVENT, IN_PROGRESS);
|
||||
DoZoneInCombat();
|
||||
}
|
||||
|
||||
@@ -503,7 +502,6 @@ public:
|
||||
}
|
||||
|
||||
void MoveInLineOfSight(Unit* who) override
|
||||
|
||||
{
|
||||
if (withhead && Phase != 0)
|
||||
ScriptedAI::MoveInLineOfSight(who);
|
||||
@@ -567,7 +565,7 @@ public:
|
||||
flame->CastSpell(flame, SPELL_BODY_FLAME, false);
|
||||
if (Creature* wisp = DoSpawnCreature(WISP_INVIS, 0, 0, 0, 0, TEMPSUMMON_TIMED_DESPAWN, 60000))
|
||||
ENSURE_AI(npc_wisp_invis::npc_wisp_invisAI, wisp->AI())->SetType(4);
|
||||
instance->SetData(DATA_HORSEMAN_EVENT, DONE);
|
||||
instance->SetBossState(DATA_HORSEMAN_EVENT, DONE);
|
||||
|
||||
Map::PlayerList const& players = me->GetMap()->GetPlayers();
|
||||
if (!players.isEmpty())
|
||||
@@ -852,7 +850,6 @@ public:
|
||||
}
|
||||
|
||||
void MoveInLineOfSight(Unit* who) override
|
||||
|
||||
{
|
||||
if (!who || !me->IsValidAttackTarget(who) || me->GetVictim())
|
||||
return;
|
||||
@@ -880,9 +877,9 @@ public:
|
||||
InstanceScript* instance = player->GetInstanceScript();
|
||||
if (instance)
|
||||
{
|
||||
if (instance->GetData(DATA_HORSEMAN_EVENT) != NOT_STARTED)
|
||||
if (instance->GetBossState(DATA_HORSEMAN_EVENT) != NOT_STARTED)
|
||||
return true;
|
||||
instance->SetData(DATA_HORSEMAN_EVENT, IN_PROGRESS);
|
||||
instance->SetBossState(DATA_HORSEMAN_EVENT, IN_PROGRESS);
|
||||
}
|
||||
/* if (soil->GetGoType() == GAMEOBJECT_TYPE_QUESTGIVER && player->getLevel() > 64)
|
||||
{
|
||||
|
||||
@@ -26,6 +26,7 @@ EndScriptData */
|
||||
#include "ScriptMgr.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "ScriptedEscortAI.h"
|
||||
#include "scarlet_monastery.h"
|
||||
|
||||
enum Says
|
||||
{
|
||||
@@ -44,89 +45,103 @@ enum Spells
|
||||
SPELL_FRENZY = 8269
|
||||
};
|
||||
|
||||
enum Entry
|
||||
enum Npcs
|
||||
{
|
||||
ENTRY_SCARLET_TRAINEE = 6575,
|
||||
ENTRY_SCARLET_MYRMIDON = 4295
|
||||
NPC_SCARLET_TRAINEE = 6575,
|
||||
NPC_SCARLET_MYRMIDON = 4295
|
||||
};
|
||||
|
||||
enum Events
|
||||
{
|
||||
EVENT_CLEAVE = 1,
|
||||
EVENT_WHIRLWIND
|
||||
};
|
||||
|
||||
Position const ScarletTraineePos = { 1939.18f, -431.58f, 17.09f, 6.22f };
|
||||
|
||||
class boss_herod : public CreatureScript
|
||||
{
|
||||
public:
|
||||
boss_herod() : CreatureScript("boss_herod") { }
|
||||
public:
|
||||
boss_herod() : CreatureScript("boss_herod") { }
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
{
|
||||
return new boss_herodAI(creature);
|
||||
}
|
||||
|
||||
struct boss_herodAI : public ScriptedAI
|
||||
{
|
||||
boss_herodAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
|
||||
bool Enrage;
|
||||
|
||||
uint32 Cleave_Timer;
|
||||
uint32 Whirlwind_Timer;
|
||||
|
||||
void Reset() override
|
||||
struct boss_herodAI : public BossAI
|
||||
{
|
||||
Enrage = false;
|
||||
Cleave_Timer = 12000;
|
||||
Whirlwind_Timer = 60000;
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override
|
||||
{
|
||||
Talk(SAY_AGGRO);
|
||||
DoCast(me, SPELL_RUSHINGCHARGE);
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* /*victim*/) override
|
||||
{
|
||||
Talk(SAY_KILL);
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
{
|
||||
for (uint8 i = 0; i < 20; ++i)
|
||||
me->SummonCreature(ENTRY_SCARLET_TRAINEE, 1939.18f, -431.58f, 17.09f, 6.22f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 600000);
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
//If we are <30% hp goes Enraged
|
||||
if (!Enrage && !HealthAbovePct(30) && !me->IsNonMeleeSpellCast(false))
|
||||
boss_herodAI(Creature* creature) : BossAI(creature, DATA_HEROD)
|
||||
{
|
||||
Talk(EMOTE_ENRAGE);
|
||||
Talk(SAY_ENRAGE);
|
||||
DoCast(me, SPELL_FRENZY);
|
||||
Enrage = true;
|
||||
_enrage = false;
|
||||
}
|
||||
|
||||
//Cleave_Timer
|
||||
if (Cleave_Timer <= diff)
|
||||
void Reset() override
|
||||
{
|
||||
DoCastVictim(SPELL_CLEAVE);
|
||||
Cleave_Timer = 12000;
|
||||
_enrage = false;
|
||||
_Reset();
|
||||
}
|
||||
else Cleave_Timer -= diff;
|
||||
|
||||
// Whirlwind_Timer
|
||||
if (Whirlwind_Timer <= diff)
|
||||
void EnterCombat(Unit* /*who*/) override
|
||||
{
|
||||
Talk(SAY_WHIRLWIND);
|
||||
DoCastVictim(SPELL_WHIRLWIND);
|
||||
Whirlwind_Timer = 30000;
|
||||
}
|
||||
else Whirlwind_Timer -= diff;
|
||||
Talk(SAY_AGGRO);
|
||||
DoCast(me, SPELL_RUSHINGCHARGE);
|
||||
_EnterCombat();
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
events.ScheduleEvent(EVENT_CLEAVE, 12000);
|
||||
events.ScheduleEvent(EVENT_WHIRLWIND, 60000);
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* /*victim*/) override
|
||||
{
|
||||
Talk(SAY_KILL);
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
{
|
||||
_JustDied();
|
||||
|
||||
for (uint8 i = 0; i < 20; ++i)
|
||||
me->SummonCreature(NPC_SCARLET_TRAINEE, ScarletTraineePos, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 600000);
|
||||
}
|
||||
|
||||
void DamageTaken(Unit* /*done_by*/, uint32& /*damage*/) override
|
||||
{
|
||||
if (HealthBelowPct(30) && !_enrage)
|
||||
{
|
||||
Talk(EMOTE_ENRAGE);
|
||||
Talk(SAY_ENRAGE);
|
||||
DoCast(me, SPELL_FRENZY);
|
||||
_enrage = true;
|
||||
}
|
||||
}
|
||||
|
||||
void ExecuteEvent(uint32 eventId) override
|
||||
{
|
||||
switch (eventId)
|
||||
{
|
||||
case EVENT_CLEAVE:
|
||||
DoCastVictim(SPELL_CLEAVE);
|
||||
events.ScheduleEvent(EVENT_CLEAVE, 12000);
|
||||
break;
|
||||
case EVENT_WHIRLWIND:
|
||||
Talk(SAY_WHIRLWIND);
|
||||
DoCastVictim(SPELL_WHIRLWIND);
|
||||
events.ScheduleEvent(EVENT_WHIRLWIND, 30000);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
BossAI::UpdateAI(diff);
|
||||
}
|
||||
|
||||
private:
|
||||
bool _enrage;
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
{
|
||||
return GetInstanceAI<boss_herodAI>(creature);
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
class npc_scarlet_trainee : public CreatureScript
|
||||
|
||||
+14
-2
@@ -25,6 +25,7 @@ EndScriptData */
|
||||
|
||||
#include "ScriptMgr.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "scarlet_monastery.h"
|
||||
|
||||
enum Spells
|
||||
{
|
||||
@@ -43,12 +44,15 @@ public:
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
{
|
||||
return new boss_high_inquisitor_fairbanksAI(creature);
|
||||
return GetInstanceAI<boss_high_inquisitor_fairbanksAI>(creature);
|
||||
}
|
||||
|
||||
struct boss_high_inquisitor_fairbanksAI : public ScriptedAI
|
||||
{
|
||||
boss_high_inquisitor_fairbanksAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
boss_high_inquisitor_fairbanksAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
uint32 CurseOfBlood_Timer;
|
||||
uint32 DispelMagic_Timer;
|
||||
@@ -57,6 +61,7 @@ public:
|
||||
uint32 Sleep_Timer;
|
||||
uint32 Dispel_Timer;
|
||||
bool PowerWordShield;
|
||||
InstanceScript* instance;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
@@ -69,12 +74,19 @@ public:
|
||||
PowerWordShield = false;
|
||||
me->SetStandState(UNIT_STAND_STATE_DEAD);
|
||||
me->SetUInt32Value(UNIT_FIELD_BYTES_1, 7);
|
||||
instance->SetBossState(DATA_HIGH_INQUISITOR_FAIRBANKS, NOT_STARTED);
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override
|
||||
{
|
||||
me->SetStandState(UNIT_STAND_STATE_STAND);
|
||||
me->SetUInt32Value(UNIT_FIELD_BYTES_1, 0);
|
||||
instance->SetBossState(DATA_HIGH_INQUISITOR_FAIRBANKS, IN_PROGRESS);
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
{
|
||||
instance->SetBossState(DATA_HIGH_INQUISITOR_FAIRBANKS, DONE);
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
|
||||
* Copyright (C) 2006-2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
@@ -16,15 +15,9 @@
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* ScriptData
|
||||
SDName: Boss_Houndmaster_Loksey
|
||||
SD%Complete: 100
|
||||
SDComment:
|
||||
SDCategory: Scarlet Monastery
|
||||
EndScriptData */
|
||||
|
||||
#include "ScriptMgr.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "scarlet_monastery.h"
|
||||
|
||||
enum Yells
|
||||
{
|
||||
@@ -37,47 +30,60 @@ enum Spells
|
||||
SPELL_BLOODLUST = 6742
|
||||
};
|
||||
|
||||
enum Events
|
||||
{
|
||||
EVENT_BLOODLUST = 1
|
||||
};
|
||||
|
||||
class boss_houndmaster_loksey : public CreatureScript
|
||||
{
|
||||
public:
|
||||
boss_houndmaster_loksey() : CreatureScript("boss_houndmaster_loksey") { }
|
||||
public:
|
||||
boss_houndmaster_loksey() : CreatureScript("boss_houndmaster_loksey") { }
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
{
|
||||
return new boss_houndmaster_lokseyAI(creature);
|
||||
}
|
||||
|
||||
struct boss_houndmaster_lokseyAI : public ScriptedAI
|
||||
{
|
||||
boss_houndmaster_lokseyAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
|
||||
uint32 BloodLust_Timer;
|
||||
|
||||
void Reset() override
|
||||
struct boss_houndmaster_lokseyAI : public BossAI
|
||||
{
|
||||
BloodLust_Timer = 20000;
|
||||
}
|
||||
boss_houndmaster_lokseyAI(Creature* creature) : BossAI(creature, DATA_HOUNDMASTER_LOKSEY) { }
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override
|
||||
{
|
||||
Talk(SAY_AGGRO);
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
if (BloodLust_Timer <= diff)
|
||||
void Reset() override
|
||||
{
|
||||
DoCast(me, SPELL_BLOODLUST);
|
||||
BloodLust_Timer = 20000;
|
||||
_Reset();
|
||||
}
|
||||
else BloodLust_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
void EnterCombat(Unit* /*who*/) override
|
||||
{
|
||||
Talk(SAY_AGGRO);
|
||||
_EnterCombat();
|
||||
events.ScheduleEvent(EVENT_BLOODLUST, 20000);
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
{
|
||||
_JustDied();
|
||||
}
|
||||
|
||||
void ExecuteEvent(uint32 eventId) override
|
||||
{
|
||||
switch (eventId)
|
||||
{
|
||||
case EVENT_BLOODLUST:
|
||||
DoCast(me, SPELL_BLOODLUST);
|
||||
events.ScheduleEvent(EVENT_BLOODLUST, 20000);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
BossAI::UpdateAI(diff);
|
||||
}
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
{
|
||||
return GetInstanceAI<boss_houndmaster_lokseyAI>(creature);
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
void AddSC_boss_houndmaster_loksey()
|
||||
|
||||
@@ -69,11 +69,13 @@ public:
|
||||
ShadowWordPain_Timer = 5000;
|
||||
Yell60 = false;
|
||||
Yell30 = false;
|
||||
instance->SetBossState(DATA_INTERROGATOR_VISHAS, NOT_STARTED);
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override
|
||||
{
|
||||
Talk(SAY_AGGRO);
|
||||
instance->SetBossState(DATA_INTERROGATOR_VISHAS, IN_PROGRESS);
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* /*Victim*/) override
|
||||
@@ -86,6 +88,7 @@ public:
|
||||
//Any other Actions to do with vorrel? setStandState?
|
||||
if (Creature* vorrel = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_VORREL)))
|
||||
vorrel->AI()->Talk(SAY_TRIGGER_VORREL);
|
||||
instance->SetBossState(DATA_INTERROGATOR_VISHAS, DONE);
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
|
||||
@@ -95,7 +95,7 @@ public:
|
||||
me->SetStandState(UNIT_STAND_STATE_STAND);
|
||||
|
||||
if (me->IsAlive())
|
||||
instance->SetData(TYPE_MOGRAINE_AND_WHITE_EVENT, NOT_STARTED);
|
||||
instance->SetBossState(DATA_MOGRAINE_AND_WHITE_EVENT, NOT_STARTED);
|
||||
|
||||
_bHasDied = false;
|
||||
_bHeal = false;
|
||||
@@ -104,8 +104,8 @@ public:
|
||||
|
||||
void JustReachedHome() override
|
||||
{
|
||||
if (instance->GetData(TYPE_MOGRAINE_AND_WHITE_EVENT) != NOT_STARTED)
|
||||
instance->SetData(TYPE_MOGRAINE_AND_WHITE_EVENT, FAIL);
|
||||
if (instance->GetBossState(DATA_MOGRAINE_AND_WHITE_EVENT) != NOT_STARTED)
|
||||
instance->SetBossState(DATA_MOGRAINE_AND_WHITE_EVENT, FAIL);
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override
|
||||
@@ -129,7 +129,7 @@ public:
|
||||
//On first death, fake death and open door, as well as initiate whitemane if exist
|
||||
if (Unit* Whitemane = ObjectAccessor::GetUnit(*me, instance->GetData64(DATA_WHITEMANE)))
|
||||
{
|
||||
instance->SetData(TYPE_MOGRAINE_AND_WHITE_EVENT, IN_PROGRESS);
|
||||
instance->SetBossState(DATA_MOGRAINE_AND_WHITE_EVENT, IN_PROGRESS);
|
||||
|
||||
Whitemane->GetMotionMaster()->MovePoint(1, 1163.113370f, 1398.856812f, 32.527786f);
|
||||
|
||||
@@ -163,7 +163,7 @@ public:
|
||||
Talk(SAY_MO_RESURRECTED);
|
||||
_bFakeDeath = false;
|
||||
|
||||
instance->SetData(TYPE_MOGRAINE_AND_WHITE_EVENT, SPECIAL);
|
||||
instance->SetBossState(DATA_MOGRAINE_AND_WHITE_EVENT, SPECIAL);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -172,7 +172,7 @@ public:
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
if (_bHasDied && !_bHeal && instance->GetData(TYPE_MOGRAINE_AND_WHITE_EVENT) == SPECIAL)
|
||||
if (_bHasDied && !_bHeal && instance->GetBossState(DATA_MOGRAINE_AND_WHITE_EVENT) == SPECIAL)
|
||||
{
|
||||
//On resurrection, stop fake death and heal whitemane and resume fight
|
||||
if (Unit* Whitemane = ObjectAccessor::GetUnit(*me, instance->GetData64(DATA_WHITEMANE)))
|
||||
@@ -254,12 +254,12 @@ public:
|
||||
_bCanResurrect = false;
|
||||
|
||||
if (me->IsAlive())
|
||||
instance->SetData(TYPE_MOGRAINE_AND_WHITE_EVENT, NOT_STARTED);
|
||||
instance->SetBossState(DATA_MOGRAINE_AND_WHITE_EVENT, NOT_STARTED);
|
||||
}
|
||||
|
||||
void AttackStart(Unit* who) override
|
||||
{
|
||||
if (instance->GetData(TYPE_MOGRAINE_AND_WHITE_EVENT) == NOT_STARTED)
|
||||
if (instance->GetBossState(DATA_MOGRAINE_AND_WHITE_EVENT) == NOT_STARTED)
|
||||
return;
|
||||
|
||||
ScriptedAI::AttackStart(who);
|
||||
|
||||
@@ -25,84 +25,87 @@ EndScriptData */
|
||||
|
||||
#include "ScriptMgr.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "scarlet_monastery.h"
|
||||
|
||||
enum Spells
|
||||
{
|
||||
SPELL_LICHSLAP = 28873,
|
||||
SPELL_FROSTBOLTVOLLEY = 8398,
|
||||
SPELL_FROSTBOLT_VOLLEY = 8398,
|
||||
SPELL_MINDFLAY = 17313,
|
||||
SPELL_FROSTNOVA = 15531
|
||||
};
|
||||
|
||||
enum Events
|
||||
{
|
||||
EVENT_LICH_SLAP = 1,
|
||||
EVENT_FROSTBOLT_VOLLEY,
|
||||
EVENT_MIND_FLAY,
|
||||
EVENT_FROST_NOVA
|
||||
};
|
||||
|
||||
class boss_scorn : public CreatureScript
|
||||
{
|
||||
public:
|
||||
boss_scorn() : CreatureScript("boss_scorn") { }
|
||||
public:
|
||||
boss_scorn() : CreatureScript("boss_scorn") { }
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
{
|
||||
return new boss_scornAI(creature);
|
||||
}
|
||||
|
||||
struct boss_scornAI : public ScriptedAI
|
||||
{
|
||||
boss_scornAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
|
||||
uint32 LichSlap_Timer;
|
||||
uint32 FrostboltVolley_Timer;
|
||||
uint32 MindFlay_Timer;
|
||||
uint32 FrostNova_Timer;
|
||||
|
||||
void Reset() override
|
||||
struct boss_scornAI : public BossAI
|
||||
{
|
||||
LichSlap_Timer = 45000;
|
||||
FrostboltVolley_Timer = 30000;
|
||||
MindFlay_Timer = 30000;
|
||||
FrostNova_Timer = 30000;
|
||||
}
|
||||
boss_scornAI(Creature* creature) : BossAI(creature, DATA_SCORN) { }
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override { }
|
||||
void Reset() override
|
||||
{
|
||||
_Reset();
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
void EnterCombat(Unit* /*who*/) override
|
||||
{
|
||||
_EnterCombat();
|
||||
events.ScheduleEvent(EVENT_LICH_SLAP, 45000);
|
||||
events.ScheduleEvent(EVENT_FROSTBOLT_VOLLEY, 30000);
|
||||
events.ScheduleEvent(EVENT_MIND_FLAY, 30000);
|
||||
events.ScheduleEvent(EVENT_FROST_NOVA, 30000);
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
{
|
||||
_JustDied();
|
||||
}
|
||||
|
||||
void ExecuteEvent(uint32 eventId) override
|
||||
{
|
||||
switch (eventId)
|
||||
{
|
||||
case EVENT_LICH_SLAP:
|
||||
DoCastVictim(SPELL_LICHSLAP);
|
||||
events.ScheduleEvent(EVENT_LICH_SLAP, 45000);
|
||||
break;
|
||||
case EVENT_FROSTBOLT_VOLLEY:
|
||||
DoCastVictim(SPELL_FROSTBOLT_VOLLEY);
|
||||
events.ScheduleEvent(EVENT_FROSTBOLT_VOLLEY, 20000);
|
||||
break;
|
||||
case EVENT_MIND_FLAY:
|
||||
DoCastVictim(SPELL_MINDFLAY);
|
||||
events.ScheduleEvent(EVENT_MIND_FLAY, 20000);
|
||||
break;
|
||||
case EVENT_FROST_NOVA:
|
||||
DoCastVictim(SPELL_FROSTNOVA);
|
||||
events.ScheduleEvent(EVENT_FROST_NOVA, 15000);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
BossAI::UpdateAI(diff);
|
||||
}
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
{
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
//LichSlap_Timer
|
||||
if (LichSlap_Timer <= diff)
|
||||
{
|
||||
DoCastVictim(SPELL_LICHSLAP);
|
||||
LichSlap_Timer = 45000;
|
||||
}
|
||||
else LichSlap_Timer -= diff;
|
||||
|
||||
//FrostboltVolley_Timer
|
||||
if (FrostboltVolley_Timer <= diff)
|
||||
{
|
||||
DoCastVictim(SPELL_FROSTBOLTVOLLEY);
|
||||
FrostboltVolley_Timer = 20000;
|
||||
}
|
||||
else FrostboltVolley_Timer -= diff;
|
||||
|
||||
//MindFlay_Timer
|
||||
if (MindFlay_Timer <= diff)
|
||||
{
|
||||
DoCastVictim(SPELL_MINDFLAY);
|
||||
MindFlay_Timer = 20000;
|
||||
}
|
||||
else MindFlay_Timer -= diff;
|
||||
|
||||
//FrostNova_Timer
|
||||
if (FrostNova_Timer <= diff)
|
||||
{
|
||||
DoCastVictim(SPELL_FROSTNOVA);
|
||||
FrostNova_Timer = 15000;
|
||||
}
|
||||
else FrostNova_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
return GetInstanceAI<boss_scornAI>(creature);
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
void AddSC_boss_scorn()
|
||||
|
||||
+176
-118
@@ -1,6 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
|
||||
* Copyright (C) 2006-2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
@@ -16,146 +15,205 @@
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* ScriptData
|
||||
SDName: Instance_Scarlet_Monastery
|
||||
SD%Complete: 50
|
||||
SDComment:
|
||||
SDCategory: Scarlet Monastery
|
||||
EndScriptData */
|
||||
|
||||
#include "ScriptMgr.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "InstanceScript.h"
|
||||
#include "scarlet_monastery.h"
|
||||
|
||||
enum Entry
|
||||
DoorData const doorData[] =
|
||||
{
|
||||
ENTRY_PUMPKIN_SHRINE = 186267,
|
||||
ENTRY_HORSEMAN = 23682,
|
||||
ENTRY_HEAD = 23775,
|
||||
ENTRY_PUMPKIN = 23694
|
||||
{ GO_HIGH_INQUISITORS_DOOR, DATA_MOGRAINE_AND_WHITE_EVENT, DOOR_TYPE_ROOM, BOUNDARY_NONE },
|
||||
{ 0, 0, DOOR_TYPE_ROOM, BOUNDARY_NONE } // END
|
||||
};
|
||||
|
||||
#define MAX_ENCOUNTER 2
|
||||
|
||||
class instance_scarlet_monastery : public InstanceMapScript
|
||||
{
|
||||
public:
|
||||
instance_scarlet_monastery() : InstanceMapScript("instance_scarlet_monastery", 189) { }
|
||||
public:
|
||||
instance_scarlet_monastery() : InstanceMapScript("instance_scarlet_monastery", 189) { }
|
||||
|
||||
InstanceScript* GetInstanceScript(InstanceMap* map) const override
|
||||
{
|
||||
return new instance_scarlet_monastery_InstanceMapScript(map);
|
||||
}
|
||||
|
||||
struct instance_scarlet_monastery_InstanceMapScript : public InstanceScript
|
||||
{
|
||||
instance_scarlet_monastery_InstanceMapScript(Map* map) : InstanceScript(map) { }
|
||||
|
||||
uint64 PumpkinShrineGUID;
|
||||
uint64 HorsemanGUID;
|
||||
uint64 HeadGUID;
|
||||
std::set<uint64> HorsemanAdds;
|
||||
|
||||
uint64 MograineGUID;
|
||||
uint64 WhitemaneGUID;
|
||||
uint64 VorrelGUID;
|
||||
uint64 DoorHighInquisitorGUID;
|
||||
|
||||
uint32 encounter[MAX_ENCOUNTER];
|
||||
|
||||
void Initialize() override
|
||||
struct instance_scarlet_monastery_InstanceMapScript : public InstanceScript
|
||||
{
|
||||
memset(&encounter, 0, sizeof(encounter));
|
||||
|
||||
PumpkinShrineGUID = 0;
|
||||
HorsemanGUID = 0;
|
||||
HeadGUID = 0;
|
||||
HorsemanAdds.clear();
|
||||
|
||||
MograineGUID = 0;
|
||||
WhitemaneGUID = 0;
|
||||
VorrelGUID = 0;
|
||||
DoorHighInquisitorGUID = 0;
|
||||
}
|
||||
|
||||
void OnGameObjectCreate(GameObject* go) override
|
||||
{
|
||||
switch (go->GetEntry())
|
||||
instance_scarlet_monastery_InstanceMapScript(Map* map) : InstanceScript(map)
|
||||
{
|
||||
case ENTRY_PUMPKIN_SHRINE: PumpkinShrineGUID = go->GetGUID();break;
|
||||
case 104600: DoorHighInquisitorGUID = go->GetGUID(); break;
|
||||
SetBossNumber(EncounterCount);
|
||||
LoadDoorData(doorData);
|
||||
|
||||
PumpkinShrineGUID = 0;
|
||||
HorsemanGUID = 0;
|
||||
HeadGUID = 0;
|
||||
MograineGUID = 0;
|
||||
WhitemaneGUID = 0;
|
||||
VorrelGUID = 0;
|
||||
|
||||
HorsemanAdds.clear();
|
||||
}
|
||||
}
|
||||
|
||||
void OnCreatureCreate(Creature* creature) override
|
||||
{
|
||||
switch (creature->GetEntry())
|
||||
void OnGameObjectCreate(GameObject* go) override
|
||||
{
|
||||
case ENTRY_HORSEMAN: HorsemanGUID = creature->GetGUID(); break;
|
||||
case ENTRY_HEAD: HeadGUID = creature->GetGUID(); break;
|
||||
case ENTRY_PUMPKIN: HorsemanAdds.insert(creature->GetGUID());break;
|
||||
case 3976: MograineGUID = creature->GetGUID(); break;
|
||||
case 3977: WhitemaneGUID = creature->GetGUID(); break;
|
||||
case 3981: VorrelGUID = creature->GetGUID(); break;
|
||||
}
|
||||
}
|
||||
|
||||
void SetData(uint32 type, uint32 data) override
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case TYPE_MOGRAINE_AND_WHITE_EVENT:
|
||||
if (data == IN_PROGRESS)
|
||||
DoUseDoorOrButton(DoorHighInquisitorGUID);
|
||||
if (data == FAIL)
|
||||
DoUseDoorOrButton(DoorHighInquisitorGUID);
|
||||
|
||||
encounter[0] = data;
|
||||
break;
|
||||
case GAMEOBJECT_PUMPKIN_SHRINE:
|
||||
HandleGameObject(PumpkinShrineGUID, false);
|
||||
break;
|
||||
case DATA_HORSEMAN_EVENT:
|
||||
encounter[1] = data;
|
||||
if (data == DONE)
|
||||
switch (go->GetEntry())
|
||||
{
|
||||
for (std::set<uint64>::const_iterator itr = HorsemanAdds.begin(); itr != HorsemanAdds.end(); ++itr)
|
||||
{
|
||||
Creature* add = instance->GetCreature(*itr);
|
||||
if (add && add->IsAlive())
|
||||
add->Kill(add);
|
||||
}
|
||||
HorsemanAdds.clear();
|
||||
HandleGameObject(PumpkinShrineGUID, false);
|
||||
case GO_PUMPKIN_SHRINE:
|
||||
PumpkinShrineGUID = go->GetGUID();
|
||||
break;
|
||||
case GO_HIGH_INQUISITORS_DOOR:
|
||||
AddDoor(go, true);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
uint64 GetData64(uint32 type) const override
|
||||
{
|
||||
switch (type)
|
||||
void OnGameObjectRemove(GameObject* go) override
|
||||
{
|
||||
//case GAMEOBJECT_PUMPKIN_SHRINE: return PumpkinShrineGUID;
|
||||
//case DATA_HORSEMAN: return HorsemanGUID;
|
||||
//case DATA_HEAD: return HeadGUID;
|
||||
case DATA_MOGRAINE: return MograineGUID;
|
||||
case DATA_WHITEMANE: return WhitemaneGUID;
|
||||
case DATA_VORREL: return VorrelGUID;
|
||||
case DATA_DOOR_WHITEMANE: return DoorHighInquisitorGUID;
|
||||
switch (go->GetEntry())
|
||||
{
|
||||
case GO_HIGH_INQUISITORS_DOOR:
|
||||
AddDoor(go, false);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint32 GetData(uint32 type) const override
|
||||
void OnCreatureCreate(Creature* creature) override
|
||||
{
|
||||
switch (creature->GetEntry())
|
||||
{
|
||||
case NPC_HORSEMAN:
|
||||
HorsemanGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_HEAD:
|
||||
HeadGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_PUMPKIN:
|
||||
HorsemanAdds.insert(creature->GetGUID());
|
||||
break;
|
||||
case NPC_MOGRAINE:
|
||||
MograineGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_WHITEMANE:
|
||||
WhitemaneGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_VORREL:
|
||||
VorrelGUID = creature->GetGUID();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void SetData(uint32 type, uint32 /*data*/) override
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case DATA_PUMPKIN_SHRINE:
|
||||
HandleGameObject(PumpkinShrineGUID, false);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
bool SetBossState(uint32 type, EncounterState state) override
|
||||
{
|
||||
if (!InstanceScript::SetBossState(type, state))
|
||||
return false;
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case DATA_HORSEMAN_EVENT:
|
||||
if (state == DONE)
|
||||
{
|
||||
for (uint64 guid : HorsemanAdds)
|
||||
{
|
||||
Creature* add = instance->GetCreature(guid);
|
||||
if (add && add->IsAlive())
|
||||
add->Kill(add);
|
||||
}
|
||||
HorsemanAdds.clear();
|
||||
HandleGameObject(PumpkinShrineGUID, false);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
uint64 GetData64(uint32 type) const override
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case DATA_MOGRAINE:
|
||||
return MograineGUID;
|
||||
case DATA_WHITEMANE:
|
||||
return WhitemaneGUID;
|
||||
case DATA_VORREL:
|
||||
return VorrelGUID;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
std::string GetSaveData() override
|
||||
{
|
||||
OUT_SAVE_INST_DATA;
|
||||
|
||||
std::ostringstream saveStream;
|
||||
saveStream << "S M " << GetBossSaveData();
|
||||
|
||||
OUT_SAVE_INST_DATA_COMPLETE;
|
||||
return saveStream.str();
|
||||
}
|
||||
|
||||
void Load(const char* str) override
|
||||
{
|
||||
if (!str)
|
||||
{
|
||||
OUT_LOAD_INST_DATA_FAIL;
|
||||
return;
|
||||
}
|
||||
|
||||
OUT_LOAD_INST_DATA(str);
|
||||
|
||||
char dataHead1, dataHead2;
|
||||
|
||||
std::istringstream loadStream(str);
|
||||
loadStream >> dataHead1 >> dataHead2;
|
||||
|
||||
if (dataHead1 == 'S' && dataHead2 == 'M')
|
||||
{
|
||||
for (uint8 i = 0; i < EncounterCount; ++i)
|
||||
{
|
||||
uint32 tmpState;
|
||||
loadStream >> tmpState;
|
||||
if (tmpState == IN_PROGRESS || tmpState > SPECIAL)
|
||||
tmpState = NOT_STARTED;
|
||||
|
||||
SetBossState(i, EncounterState(tmpState));
|
||||
}
|
||||
}
|
||||
else
|
||||
OUT_LOAD_INST_DATA_FAIL;
|
||||
|
||||
OUT_LOAD_INST_DATA_COMPLETE;
|
||||
}
|
||||
|
||||
protected:
|
||||
uint64 PumpkinShrineGUID;
|
||||
uint64 HorsemanGUID;
|
||||
uint64 HeadGUID;
|
||||
uint64 MograineGUID;
|
||||
uint64 WhitemaneGUID;
|
||||
uint64 VorrelGUID;
|
||||
|
||||
std::set<uint64> HorsemanAdds;
|
||||
};
|
||||
|
||||
InstanceScript* GetInstanceScript(InstanceMap* map) const override
|
||||
{
|
||||
if (type == TYPE_MOGRAINE_AND_WHITE_EVENT)
|
||||
return encounter[0];
|
||||
if (type == DATA_HORSEMAN_EVENT)
|
||||
return encounter[1];
|
||||
return 0;
|
||||
return new instance_scarlet_monastery_InstanceMapScript(map);
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
void AddSC_instance_scarlet_monastery()
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
|
||||
* Copyright (C) 2006-2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
@@ -19,19 +18,43 @@
|
||||
#ifndef SCARLET_M_
|
||||
#define SCARLET_M_
|
||||
|
||||
uint32 const EncounterCount = 10;
|
||||
|
||||
enum DataTypes
|
||||
{
|
||||
TYPE_MOGRAINE_AND_WHITE_EVENT = 1,
|
||||
|
||||
DATA_MOGRAINE_AND_WHITE_EVENT = 1,
|
||||
DATA_MOGRAINE = 2,
|
||||
DATA_WHITEMANE = 3,
|
||||
DATA_DOOR_WHITEMANE = 4,
|
||||
|
||||
DATA_HORSEMAN_EVENT = 5,
|
||||
GAMEOBJECT_PUMPKIN_SHRINE = 6,
|
||||
DATA_HORSEMAN_EVENT = 4,
|
||||
DATA_PUMPKIN_SHRINE = 5,
|
||||
|
||||
DATA_VORREL = 7,
|
||||
DATA_ARCANIST_DOAN = 8
|
||||
DATA_VORREL = 6,
|
||||
DATA_ARCANIST_DOAN = 7,
|
||||
DATA_AZSHIR = 8,
|
||||
DATA_BLOODMAGE_THALNOS = 9,
|
||||
DATA_HEROD = 10,
|
||||
DATA_HIGH_INQUISITOR_FAIRBANKS = 11,
|
||||
DATA_HOUNDMASTER_LOKSEY = 12,
|
||||
DATA_INTERROGATOR_VISHAS = 13,
|
||||
DATA_SCORN = 14
|
||||
};
|
||||
|
||||
enum CreatureIds
|
||||
{
|
||||
NPC_MOGRAINE = 3976,
|
||||
NPC_WHITEMANE = 3977,
|
||||
NPC_VORREL = 3981,
|
||||
|
||||
NPC_HORSEMAN = 23682,
|
||||
NPC_HEAD = 23775,
|
||||
NPC_PUMPKIN = 23694
|
||||
};
|
||||
|
||||
enum GameObjectIds
|
||||
{
|
||||
GO_HIGH_INQUISITORS_DOOR = 104600,
|
||||
GO_PUMPKIN_SHRINE = 186267
|
||||
};
|
||||
|
||||
#endif // SCARLET_M_
|
||||
File diff suppressed because it is too large.
Load diff
@@ -15,13 +15,12 @@
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "ScriptMgr.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "InstanceScript.h"
|
||||
#include "Player.h"
|
||||
#include "WorldPacket.h"
|
||||
#include "SpellScript.h"
|
||||
#include "ulduar.h"
|
||||
#include "Player.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "ScriptMgr.h"
|
||||
#include "SpellScript.h"
|
||||
#include "WorldPacket.h"
|
||||
|
||||
static DoorData const doorData[] =
|
||||
{
|
||||
@@ -32,6 +31,9 @@ static DoorData const doorData[] =
|
||||
{ GO_HODIR_ENTRANCE, BOSS_HODIR, DOOR_TYPE_ROOM, BOUNDARY_E },
|
||||
{ GO_HODIR_DOOR, BOSS_HODIR, DOOR_TYPE_PASSAGE, BOUNDARY_NONE },
|
||||
{ GO_HODIR_ICE_DOOR, BOSS_HODIR, DOOR_TYPE_PASSAGE, BOUNDARY_W },
|
||||
{ GO_MIMIRON_DOOR_1, BOSS_MIMIRON, DOOR_TYPE_ROOM, BOUNDARY_W },
|
||||
{ GO_MIMIRON_DOOR_2, BOSS_MIMIRON, DOOR_TYPE_ROOM, BOUNDARY_E },
|
||||
{ GO_MIMIRON_DOOR_3, BOSS_MIMIRON, DOOR_TYPE_ROOM, BOUNDARY_S },
|
||||
{ GO_VEZAX_DOOR, BOSS_VEZAX, DOOR_TYPE_PASSAGE, BOUNDARY_E },
|
||||
{ GO_YOGG_SARON_DOOR, BOSS_YOGG_SARON, DOOR_TYPE_ROOM, BOUNDARY_S },
|
||||
{ GO_DOODAD_UL_SIGILDOOR_03, BOSS_ALGALON, DOOR_TYPE_ROOM, BOUNDARY_W },
|
||||
@@ -70,11 +72,14 @@ class instance_ulduar : public InstanceMapScript
|
||||
uint64 AssemblyGUIDs[3];
|
||||
uint64 KologarnGUID;
|
||||
uint64 AuriayaGUID;
|
||||
uint64 MimironGUID;
|
||||
uint64 HodirGUID;
|
||||
uint64 ThorimGUID;
|
||||
uint64 FreyaGUID;
|
||||
uint64 ElderGUIDs[3];
|
||||
uint64 MimironGUID;
|
||||
uint64 MimironVehicleGUIDs[3];
|
||||
uint64 MimironComputerGUID;
|
||||
uint64 MimironWorldTriggerGUID;
|
||||
uint64 VezaxGUID;
|
||||
uint64 YoggSaronGUID;
|
||||
uint64 VoiceOfYoggSaronGUID;
|
||||
@@ -92,6 +97,9 @@ class instance_ulduar : public InstanceMapScript
|
||||
uint64 ThorimChestGUID;
|
||||
uint64 HodirRareCacheGUID;
|
||||
uint64 HodirChestGUID;
|
||||
uint64 MimironTramGUID;
|
||||
uint64 MimironElevatorGUID;
|
||||
uint64 MimironButtonGUID;
|
||||
uint64 BrainRoomDoorGUIDs[3];
|
||||
uint64 AlgalonSigilDoorGUID[3];
|
||||
uint64 AlgalonFloorGUID[2];
|
||||
@@ -126,6 +134,8 @@ class instance_ulduar : public InstanceMapScript
|
||||
KologarnGUID = 0;
|
||||
AuriayaGUID = 0;
|
||||
MimironGUID = 0;
|
||||
MimironComputerGUID = 0;
|
||||
MimironWorldTriggerGUID = 0;
|
||||
HodirGUID = 0;
|
||||
ThorimGUID = 0;
|
||||
FreyaGUID = 0;
|
||||
@@ -140,6 +150,9 @@ class instance_ulduar : public InstanceMapScript
|
||||
ThorimChestGUID = 0;
|
||||
HodirRareCacheGUID = 0;
|
||||
HodirChestGUID = 0;
|
||||
MimironTramGUID = 0;
|
||||
MimironElevatorGUID = 0;
|
||||
MimironButtonGUID = 0;
|
||||
LeviathanGateGUID = 0;
|
||||
AlgalonUniverseGUID = 0;
|
||||
AlgalonTrapdoorGUID = 0;
|
||||
@@ -166,6 +179,7 @@ class instance_ulduar : public InstanceMapScript
|
||||
memset(AssemblyGUIDs, 0, sizeof(AssemblyGUIDs));
|
||||
memset(RazorHarpoonGUIDs, 0, sizeof(RazorHarpoonGUIDs));
|
||||
memset(ElderGUIDs, 0, sizeof(ElderGUIDs));
|
||||
memset(MimironVehicleGUIDs, 0, sizeof(MimironVehicleGUIDs));
|
||||
memset(BrainRoomDoorGUIDs, 0, sizeof(BrainRoomDoorGUIDs));
|
||||
memset(KeeperGUIDs, 0, sizeof(KeeperGUIDs));
|
||||
memset(_summonObservationRingKeeper, false, sizeof(_summonObservationRingKeeper));
|
||||
@@ -289,9 +303,6 @@ class instance_ulduar : public InstanceMapScript
|
||||
case NPC_AURIAYA:
|
||||
AuriayaGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_MIMIRON:
|
||||
MimironGUID = creature->GetGUID();
|
||||
break;
|
||||
|
||||
// Hodir
|
||||
case NPC_HODIR:
|
||||
@@ -354,6 +365,26 @@ class instance_ulduar : public InstanceMapScript
|
||||
creature->DespawnOrUnsummon();
|
||||
break;
|
||||
|
||||
// Mimiron
|
||||
case NPC_MIMIRON:
|
||||
MimironGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_LEVIATHAN_MKII:
|
||||
MimironVehicleGUIDs[0] = creature->GetGUID();
|
||||
break;
|
||||
case NPC_VX_001:
|
||||
MimironVehicleGUIDs[1] = creature->GetGUID();
|
||||
break;
|
||||
case NPC_AERIAL_COMMAND_UNIT:
|
||||
MimironVehicleGUIDs[2] = creature->GetGUID();
|
||||
break;
|
||||
case NPC_COMPUTER:
|
||||
MimironComputerGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_WORLD_TRIGGER_MIMIRON:
|
||||
MimironWorldTriggerGUID = creature->GetGUID();
|
||||
break;
|
||||
|
||||
case NPC_VEZAX:
|
||||
VezaxGUID = creature->GetGUID();
|
||||
break;
|
||||
@@ -470,6 +501,15 @@ class instance_ulduar : public InstanceMapScript
|
||||
case GO_HODIR_CHEST:
|
||||
HodirChestGUID = gameObject->GetGUID();
|
||||
break;
|
||||
case GO_MIMIRON_TRAM:
|
||||
MimironTramGUID = gameObject->GetGUID();
|
||||
break;
|
||||
case GO_MIMIRON_ELEVATOR:
|
||||
MimironElevatorGUID = gameObject->GetGUID();
|
||||
break;
|
||||
case GO_MIMIRON_BUTTON:
|
||||
MimironButtonGUID = gameObject->GetGUID();
|
||||
break;
|
||||
case GO_LEVIATHAN_GATE:
|
||||
LeviathanGateGUID = gameObject->GetGUID();
|
||||
if (GetBossState(BOSS_LEVIATHAN) == DONE)
|
||||
@@ -482,6 +522,9 @@ class instance_ulduar : public InstanceMapScript
|
||||
case GO_HODIR_ENTRANCE:
|
||||
case GO_HODIR_DOOR:
|
||||
case GO_HODIR_ICE_DOOR:
|
||||
case GO_MIMIRON_DOOR_1:
|
||||
case GO_MIMIRON_DOOR_2:
|
||||
case GO_MIMIRON_DOOR_3:
|
||||
case GO_VEZAX_DOOR:
|
||||
case GO_YOGG_SARON_DOOR:
|
||||
AddDoor(gameObject, true);
|
||||
@@ -566,6 +609,9 @@ class instance_ulduar : public InstanceMapScript
|
||||
case GO_HODIR_ENTRANCE:
|
||||
case GO_HODIR_DOOR:
|
||||
case GO_HODIR_ICE_DOOR:
|
||||
case GO_MIMIRON_DOOR_1:
|
||||
case GO_MIMIRON_DOOR_2:
|
||||
case GO_MIMIRON_DOOR_3:
|
||||
case GO_VEZAX_DOOR:
|
||||
case GO_YOGG_SARON_DOOR:
|
||||
case GO_DOODAD_UL_SIGILDOOR_03:
|
||||
@@ -774,6 +820,10 @@ class instance_ulduar : public InstanceMapScript
|
||||
break;
|
||||
case DATA_UNBROKEN:
|
||||
Unbroken = data != 0;
|
||||
break;
|
||||
case DATA_MIMIRON_ELEVATOR:
|
||||
if (GameObject* gameObject = instance->GetGameObject(MimironElevatorGUID))
|
||||
gameObject->SetGoState((GOState)data);
|
||||
break;
|
||||
case DATA_ILLUSION:
|
||||
illusion = data;
|
||||
@@ -846,8 +896,6 @@ class instance_ulduar : public InstanceMapScript
|
||||
return KologarnGUID;
|
||||
case BOSS_AURIAYA:
|
||||
return AuriayaGUID;
|
||||
case BOSS_MIMIRON:
|
||||
return MimironGUID;
|
||||
case BOSS_HODIR:
|
||||
return HodirGUID;
|
||||
case BOSS_THORIM:
|
||||
@@ -863,6 +911,22 @@ class instance_ulduar : public InstanceMapScript
|
||||
case BOSS_STONEBARK:
|
||||
return ElderGUIDs[2];
|
||||
|
||||
// Mimiron
|
||||
case BOSS_MIMIRON:
|
||||
return MimironGUID;
|
||||
case DATA_LEVIATHAN_MK_II:
|
||||
return MimironVehicleGUIDs[0];
|
||||
case DATA_VX_001:
|
||||
return MimironVehicleGUIDs[1];
|
||||
case DATA_AERIAL_COMMAND_UNIT:
|
||||
return MimironVehicleGUIDs[2];
|
||||
case DATA_COMPUTER:
|
||||
return MimironComputerGUID;
|
||||
case DATA_MIMIRON_WORLD_TRIGGER:
|
||||
return MimironWorldTriggerGUID;
|
||||
case DATA_MIMIRON_BUTTON:
|
||||
return MimironButtonGUID;
|
||||
|
||||
case BOSS_VEZAX:
|
||||
return VezaxGUID;
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
#ifndef DEF_ULDUAR_H
|
||||
#define DEF_ULDUAR_H
|
||||
|
||||
#include "InstanceScript.h"
|
||||
#include "ObjectMgr.h"
|
||||
#define UlduarScriptName "instance_ulduar"
|
||||
|
||||
@@ -83,6 +84,18 @@ enum UlduarNPCs
|
||||
NPC_LEVIATHAN_MKII = 33432,
|
||||
NPC_VX_001 = 33651,
|
||||
NPC_AERIAL_COMMAND_UNIT = 33670,
|
||||
NPC_ASSAULT_BOT = 34057,
|
||||
NPC_BOMB_BOT = 33836,
|
||||
NPC_JUNK_BOT = 33855,
|
||||
NPC_EMERGENCY_FIRE_BOT = 34147,
|
||||
NPC_FROST_BOMB = 34149,
|
||||
NPC_BURST_TARGET = 34211,
|
||||
NPC_FLAME = 34363,
|
||||
NPC_FLAME_SPREAD = 34121,
|
||||
NPC_DB_TARGET = 33576,
|
||||
NPC_ROCKET_MIMIRON_VISUAL = 34050,
|
||||
NPC_WORLD_TRIGGER_MIMIRON = 21252,
|
||||
NPC_COMPUTER = 34143,
|
||||
|
||||
// Freya's Keepers
|
||||
NPC_IRONBRANCH = 32913,
|
||||
@@ -204,6 +217,18 @@ enum UlduarGameObjects
|
||||
GO_THORIM_CHEST_HERO = 194315,
|
||||
GO_THORIM_CHEST = 194314,
|
||||
|
||||
// Mimiron
|
||||
GO_MIMIRON_TRAM = 194675,
|
||||
GO_MIMIRON_ELEVATOR = 194749,
|
||||
GO_MIMIRON_BUTTON = 194739,
|
||||
GO_MIMIRON_DOOR_1 = 194774,
|
||||
GO_MIMIRON_DOOR_2 = 194775,
|
||||
GO_MIMIRON_DOOR_3 = 194776,
|
||||
GO_CACHE_OF_INNOVATION = 194789,
|
||||
GO_CACHE_OF_INNOVATION_FIREFIGHTER = 194957,
|
||||
GO_CACHE_OF_INNOVATION_HERO = 194956,
|
||||
GO_CACHE_OF_INNOVATION_FIREFIGHTER_HERO = 194958,
|
||||
|
||||
// Vezax
|
||||
GO_VEZAX_DOOR = 194750,
|
||||
|
||||
@@ -292,6 +317,16 @@ enum UlduarData
|
||||
// Hodir
|
||||
DATA_HODIR_RARE_CACHE,
|
||||
|
||||
// Mimiron
|
||||
DATA_LEVIATHAN_MK_II,
|
||||
DATA_VX_001,
|
||||
DATA_AERIAL_COMMAND_UNIT,
|
||||
DATA_COMPUTER,
|
||||
DATA_MIMIRON_WORLD_TRIGGER,
|
||||
DATA_MIMIRON_ELEVATOR,
|
||||
DATA_MIMIRON_TRAM,
|
||||
DATA_MIMIRON_BUTTON,
|
||||
|
||||
// Yogg-Saron
|
||||
DATA_VOICE_OF_YOGG_SARON,
|
||||
DATA_SARA,
|
||||
|
||||
@@ -18,12 +18,11 @@
|
||||
/* ScriptData
|
||||
SDName: Sholazar_Basin
|
||||
SD%Complete: 100
|
||||
SDComment: Quest support: 12570, 12573, 12621, 12726
|
||||
SDComment: Quest support: 12573, 12621, 12726
|
||||
SDCategory: Sholazar_Basin
|
||||
EndScriptData */
|
||||
|
||||
/* ContentData
|
||||
npc_injured_rainspeaker_oracle
|
||||
npc_vekjik
|
||||
avatar_of_freya
|
||||
npc_haiphoon (Quest: "Song of Wind and Water")
|
||||
@@ -39,141 +38,6 @@ EndContentData */
|
||||
#include "CombatAI.h"
|
||||
#include "Player.h"
|
||||
|
||||
/*######
|
||||
## npc_injured_rainspeaker_oracle
|
||||
######*/
|
||||
|
||||
#define GOSSIP_ITEM1 "I am ready to travel to your village now."
|
||||
|
||||
enum Rainspeaker
|
||||
{
|
||||
SAY_START_IRO = 0,
|
||||
SAY_QUEST_ACCEPT_IRO = 1,
|
||||
SAY_END_IRO = 2,
|
||||
|
||||
QUEST_FORTUNATE_MISUNDERSTANDINGS = 12570,
|
||||
FACTION_ESCORTEE_A = 774,
|
||||
FACTION_ESCORTEE_H = 775
|
||||
};
|
||||
|
||||
class npc_injured_rainspeaker_oracle : public CreatureScript
|
||||
{
|
||||
public:
|
||||
npc_injured_rainspeaker_oracle() : CreatureScript("npc_injured_rainspeaker_oracle") { }
|
||||
|
||||
struct npc_injured_rainspeaker_oracleAI : public npc_escortAI
|
||||
{
|
||||
npc_injured_rainspeaker_oracleAI(Creature* creature) : npc_escortAI(creature) { c_guid = creature->GetGUID(); }
|
||||
|
||||
uint64 c_guid;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
me->RestoreFaction();
|
||||
// if we will have other way to assign this to only one npc remove this part
|
||||
if (GUID_LOPART(me->GetGUID()) != 101030)
|
||||
{
|
||||
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER);
|
||||
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||
}
|
||||
}
|
||||
|
||||
void WaypointReached(uint32 waypointId) override
|
||||
{
|
||||
Player* player = GetPlayerForEscort();
|
||||
if (!player)
|
||||
return;
|
||||
|
||||
switch (waypointId)
|
||||
{
|
||||
case 1:
|
||||
SetRun();
|
||||
break;
|
||||
case 10:
|
||||
case 11:
|
||||
case 12:
|
||||
case 13:
|
||||
case 14:
|
||||
case 15:
|
||||
case 16:
|
||||
case 17:
|
||||
case 18:
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_FALLING);
|
||||
me->SetSpeed(MOVE_SWIM, 0.85f, true);
|
||||
me->SetSwim(true);
|
||||
me->SetDisableGravity(true);
|
||||
break;
|
||||
case 19:
|
||||
me->GetMotionMaster()->MoveFall();
|
||||
break;
|
||||
case 28:
|
||||
player->GroupEventHappens(QUEST_FORTUNATE_MISUNDERSTANDINGS, me);
|
||||
// me->RestoreFaction();
|
||||
Talk(SAY_END_IRO);
|
||||
SetRun(false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
{
|
||||
if (!HasEscortState(STATE_ESCORT_ESCORTING))
|
||||
return;
|
||||
|
||||
if (Player* player = GetPlayerForEscort())
|
||||
{
|
||||
if (player->GetQuestStatus(QUEST_FORTUNATE_MISUNDERSTANDINGS) != QUEST_STATUS_COMPLETE)
|
||||
player->FailQuest(QUEST_FORTUNATE_MISUNDERSTANDINGS);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
bool OnGossipHello(Player* player, Creature* creature) override
|
||||
{
|
||||
if (creature->IsQuestGiver())
|
||||
player->PrepareQuestMenu(creature->GetGUID());
|
||||
|
||||
if (player->GetQuestStatus(QUEST_FORTUNATE_MISUNDERSTANDINGS) == QUEST_STATUS_INCOMPLETE)
|
||||
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
|
||||
|
||||
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
|
||||
{
|
||||
player->PlayerTalkClass->ClearMenus();
|
||||
if (action == GOSSIP_ACTION_INFO_DEF+1)
|
||||
{
|
||||
ENSURE_AI(npc_escortAI, (creature->AI()))->Start(true, false, player->GetGUID());
|
||||
ENSURE_AI(npc_escortAI, (creature->AI()))->SetMaxPlayerDistance(35.0f);
|
||||
creature->AI()->Talk(SAY_START_IRO);
|
||||
|
||||
switch (player->GetTeam()){
|
||||
case ALLIANCE:
|
||||
creature->setFaction(FACTION_ESCORTEE_A);
|
||||
break;
|
||||
case HORDE:
|
||||
creature->setFaction(FACTION_ESCORTEE_H);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool OnQuestAccept(Player* /*player*/, Creature* creature, Quest const* /*_Quest*/) override
|
||||
{
|
||||
creature->AI()->Talk(SAY_QUEST_ACCEPT_IRO);
|
||||
return false;
|
||||
}
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
{
|
||||
return new npc_injured_rainspeaker_oracleAI(creature);
|
||||
}
|
||||
};
|
||||
|
||||
/*######
|
||||
## npc_vekjik
|
||||
######*/
|
||||
@@ -1143,7 +1007,6 @@ public:
|
||||
|
||||
void AddSC_sholazar_basin()
|
||||
{
|
||||
new npc_injured_rainspeaker_oracle();
|
||||
new npc_vekjik();
|
||||
new npc_avatar_of_freya();
|
||||
new npc_bushwhacker();
|
||||
|
||||
@@ -42,7 +42,7 @@ class Socket : public std::enable_shared_from_this<T>
|
||||
|
||||
public:
|
||||
Socket(tcp::socket&& socket, std::size_t headerSize) : _socket(std::move(socket)), _remoteAddress(_socket.remote_endpoint().address()),
|
||||
_remotePort(_socket.remote_endpoint().port()), _readHeaderBuffer(), _readDataBuffer(), _closed(false)
|
||||
_remotePort(_socket.remote_endpoint().port()), _readHeaderBuffer(), _readDataBuffer(), _closed(false), _closing(false)
|
||||
{
|
||||
_readHeaderBuffer.Grow(headerSize);
|
||||
}
|
||||
@@ -126,7 +126,7 @@ public:
|
||||
std::placeholders::_1, std::placeholders::_2));
|
||||
}
|
||||
|
||||
bool IsOpen() const { return !_closed; }
|
||||
bool IsOpen() const { return !_closed && !_closing; }
|
||||
|
||||
virtual void CloseSocket()
|
||||
{
|
||||
@@ -140,6 +140,9 @@ public:
|
||||
shutdownError.value(), shutdownError.message().c_str());
|
||||
}
|
||||
|
||||
/// Marks the socket for closing after write buffer becomes empty
|
||||
void DelayedCloseSocket() { _closing = true; }
|
||||
|
||||
virtual bool IsHeaderReady() const { return _readHeaderBuffer.IsMessageReady(); }
|
||||
virtual bool IsDataReady() const { return _readDataBuffer.IsMessageReady(); }
|
||||
|
||||
@@ -221,6 +224,8 @@ private:
|
||||
|
||||
if (!_writeQueue.empty())
|
||||
AsyncWrite(_writeQueue.front());
|
||||
else if (_closing)
|
||||
CloseSocket();
|
||||
}
|
||||
else
|
||||
CloseSocket();
|
||||
@@ -241,6 +246,7 @@ private:
|
||||
MessageBuffer _readDataBuffer;
|
||||
|
||||
std::atomic<bool> _closed;
|
||||
std::atomic<bool> _closing;
|
||||
};
|
||||
|
||||
#endif // __SOCKET_H__
|
||||
Reference in new issue
Block a user