diff options
-rw-r--r-- | sql/updates/world/master/2019_08_25_00_world.sql | 603 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/Unit.h | 2 | ||||
-rw-r--r-- | src/server/scripts/BrokenIsles/broken_isles_script_loader.cpp | 26 | ||||
-rw-r--r-- | src/server/scripts/BrokenIsles/zone_orderhall_warrior.cpp | 924 |
4 files changed, 1555 insertions, 0 deletions
diff --git a/sql/updates/world/master/2019_08_25_00_world.sql b/sql/updates/world/master/2019_08_25_00_world.sql new file mode 100644 index 00000000000..c170d9f8c07 --- /dev/null +++ b/sql/updates/world/master/2019_08_25_00_world.sql @@ -0,0 +1,603 @@ +SET @CGUID := 685; +DELETE FROM `creature` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+124; +INSERT INTO `creature` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnDifficulties`, `PhaseId`, `PhaseGroup`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `spawndist`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `ScriptName`, `VerifiedBuild`) VALUES +(@CGUID+0, 112392, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 1076.599, 7248.414, 97.78458, 0.7000231, 120, 0, 0, 0, 0, 2, 0, 0, 0, '', 24015), -- Quartermaster Durnolf +(@CGUID+1, 93823, 1479, 7813, 7813, '0', 5090, 0, 0, 0, 1059.613, 7224.605, 100.3775, 0.03462749, 120, 0, 0, 0, 0, 0, 0, 0, 0, '', 24015), -- Danica the Reclaimer +(@CGUID+2, 116609, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 1071.531, 7241.38, 97.78132, 6.147542, 120, 0, 0, 0, 0, 0, 0, 0, 0, '', 24015), -- Battlelord's Armor +(@CGUID+3, 96679, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 1082.998, 7229.331, 98.20152, 3.558333, 120, 0, 0, 0, 0, 0, 0, 0, 0, '', 24015), -- Aerylia +(@CGUID+4, 112420, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 1049.514, 7135.655, 98.26167, 4.09064, 120, 0, 0, 0, 0, 0, 0, 0, 0, '', 24015), -- Ymirjar Lord's Set +(@CGUID+5, 96572, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 1019.195, 7165.312, 97.78876, 1.599757, 120, 0, 0, 0, 0, 0, 0, 0, 0, '', 24015), -- Stormforged Valarjar +(@CGUID+6, 112400, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 1042.552, 7139.059, 98.17068, 4.729155, 120, 0, 0, 0, 0, 0, 0, 0, 0, '', 24015), -- Onslaught Set +(@CGUID+7, 96469, 1479, 7813, 7813, '0', 5107, 0, 0, 0, 796.1858, 7228.977, 106.7501, 0.01738298, 120, 0, 0, 0, 0, 0, 0, 0, 0, '', 24015), -- Odyn +(@CGUID+8, 111741, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 1067.51, 7324.483, 109.51, 0.05171752, 120, 0, 0, 0, 0, 0, 0, 0, 0, '', 24015), -- Fjornson Stonecarver +(@CGUID+9, 96572, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 892.434, 7226.98, 97.78457, 5.579187, 120, 0, 0, 0, 0, 2, 0, 0, 0, '', 24015), -- Stormforged Valarjar +(@CGUID+10, 96572, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 881.3212, 7215.812, 97.84029, 0.8428905, 120, 0, 0, 0, 0, 0, 0, 0, 0, '', 24015), -- Stormforged Valarjar +(@CGUID+11, 96572, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 1035.899, 7164.185, 97.78709, 1.637839, 120, 0, 0, 0, 0, 0, 0, 0, 0, '', 24015), -- Stormforged Valarjar +(@CGUID+12, 112408, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 1044.514, 7138.362, 98.09043, 4.533813, 120, 0, 0, 0, 0, 0, 0, 0, 0, '', 24015), -- Heroes' Dreadnaught Set +(@CGUID+13, 112418, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 1048.08, 7136.716, 98.11954, 4.406168, 120, 0, 0, 0, 0, 0, 0, 0, 0, '', 24015), -- Hellscream's Conquest Set +(@CGUID+14, 96572, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 1052.437, 7118.711, 97.76829, 5.480986, 120, 0, 0, 0, 0, 2, 0, 0, 0, '', 24015), -- Stormforged Valarjar +(@CGUID+15, 112413, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 1046.476, 7137.655, 98.12541, 4.404978, 120, 0, 0, 0, 0, 0, 0, 0, 0, '', 24015), -- Valorous Siegebreaker Set +(@CGUID+16, 112416, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 1048.076, 7136.72, 98.18303, 4.312254, 120, 0, 0, 0, 0, 0, 0, 0, 0, '', 24015), -- Wrynn's Conquest Set +(@CGUID+17, 96572, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 881.3577, 7238.921, 97.81672, 5.622649, 120, 0, 0, 0, 0, 0, 0, 0, 0, '', 24015), -- Stormforged Valarjar +(@CGUID+18, 112361, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 1010.028, 7139.051, 98.17016, 5.175318, 120, 0, 0, 0, 0, 0, 0, 0, 0, '', 24015), -- Warbringer Armor Set +(@CGUID+19, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 1041.295, 7120.502, 97.79205, 4.123053, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_spectating_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+20, 112390, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 1011.79, 7139.432, 98.16254, 4.938556, 120, 0, 0, 0, 0, 0, 0, 0, 0, '', 24015), -- Destroyer Armor Set +(@CGUID+21, 114558, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 996.7882, 7131.478, 98.34371, 5.313775, 120, 0, 0, 0, 0, 0, 0, 0, 0, '', 24015), -- Greater Sparring Partner +(@CGUID+22, 114559, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 983.5417, 7115.333, 98.34372, 5.964656, 120, 0, 0, 0, 0, 0, 0, 0, 0, '', 24015), -- Lesser Sparring Partner +(@CGUID+23, 96572, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 849.691, 7241.927, 106.7698, 3.942692, 120, 0, 0, 0, 0, 0, 0, 0, 0, '', 24015), -- Stormforged Valarjar +(@CGUID+24, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 1000.208, 7109.535, 97.79235, 5.673533, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_spectating_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+25, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 1014.392, 7122.58, 97.79585, 5.204721, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_spectating_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+26, 112356, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 1006.404, 7137.51, 98.14191, 5.266796, 120, 0, 0, 0, 0, 0, 0, 0, 0, '', 24015), -- Battlegear of Wrath Set +(@CGUID+27, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 1050.693, 7111.057, 97.79233, 4.03371, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_spectating_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+28, 96572, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 848.368, 7212.071, 106.7691, 2.617522, 120, 0, 0, 0, 0, 0, 0, 0, 0, '', 24015), -- Stormforged Valarjar +(@CGUID+29, 112353, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 1004.611, 7136.491, 98.09541, 5.572387, 120, 0, 0, 0, 0, 0, 0, 0, 0, '', 24015), -- Battlegear of Might Set +(@CGUID+30, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 1010.502, 7120.085, 97.79221, 5.342214, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_spectating_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+31, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 1066.46, 7116.097, 98.34373, 0.714711, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_weapon_inspector_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+32, 107494, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 1029.283, 7122.28, 101.786, 1.365587, 120, 0, 0, 0, 0, 0, 0, 0, 0, '', 24015), -- Val'kyr Arena Master +(@CGUID+33, 112577, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 1021.997, 7125.033, 97.78559, 4.873281, 120, 0, 0, 0, 0, 0, 0, 0, 0, '', 24015), -- Weaponmaster Asvard +(@CGUID+34, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 1002.779, 7112.72, 97.79243, 5.494812, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_spectating_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+35, 112357, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 1008.24, 7138.466, 98.09775, 5.087465, 120, 0, 0, 0, 0, 0, 0, 0, 0, '', 24015), -- Conqueror's Battlegear Set +(@CGUID+36, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 1009.476, 7069.135, 97.7838, 1.230678, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_spectating_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+37, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 1068.148, 7099.457, 98.06343, 0.4467911, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_weapon_inspector_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+38, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 996.0295, 7088.243, 97.7838, 0.5178266, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_spectating_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+39, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 1053.821, 7059.55, 98.34373, 4.876904, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_weapon_inspector_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+40, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 1013.844, 7066.76, 97.7838, 1.091989, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_spectating_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+41, 107494, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 1022.26, 7065.905, 101.786, 4.937614, 120, 0, 0, 0, 0, 0, 0, 0, 0, '', 24015), -- Val'kyr Arena Master +(@CGUID+42, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 1055.898, 7089.155, 97.78381, 3.174177, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_spectating_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+43, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 996.283, 7100.035, 97.78442, 6.270727, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_spectating_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+44, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 1000.828, 7078.397, 97.7838, 0.4620249, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_spectating_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+45, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 1037.589, 7066.596, 97.78381, 2.381599, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_spectating_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+46, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 1041.092, 7068.59, 97.78381, 2.431519, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_spectating_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+47, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 981.2535, 7083.415, 98.34373, 3.51726, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_weapon_inspector_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+48, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 1055.465, 7101.055, 97.78791, 3.54066, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_spectating_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+49, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 1049.63, 7075.854, 97.78381, 2.568862, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_spectating_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+50, 107483, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 1041.01, 7048.68, 98.34371, 1.974365, 120, 0, 0, 0, 0, 0, 0, 0, 0, '', 24015), -- Lesser Sparring Partner +(@CGUID+51, 107483, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 1008.724, 7049.438, 98.34371, 1.227951, 120, 0, 0, 0, 0, 0, 0, 0, 0, '', 24015), -- Lesser Sparring Partner +(@CGUID+52, 107484, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 1025.441, 7047.345, 98.34372, 1.575, 120, 0, 0, 0, 0, 0, 0, 0, 0, '', 24015), -- Greater Sparring Partner +(@CGUID+53, 96572, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 787.2691, 7141.032, 107.1845, 3.962807, 120, 0, 0, 0, 0, 2, 0, 0, 0, '', 24015), -- Stormforged Valarjar +(@CGUID+54, 96586, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 1024.649, 7354.032, 107.6685, 1.500983, 120, 0, 0, 0, 0, 0, 0, 0, 0, '', 24015), -- Master Smith Helgar +(@CGUID+55, 96572, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 799.2552, 7240.588, 106.7846, 3.108604, 120, 0, 0, 0, 0, 2, 0, 0, 0, '', 24015), -- Stormforged Valarjar +(@CGUID+56, 96572, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 795.0833, 7217.432, 106.7469, 0.12223, 120, 0, 0, 0, 0, 0, 0, 0, 0, '', 24015), -- Stormforged Valarjar +(@CGUID+57, 96572, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 795.4566, 7241.323, 106.7465, 6.263709, 120, 0, 0, 0, 0, 0, 0, 0, 0, '', 24015), -- Stormforged Valarjar +(@CGUID+58, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 906.0347, 7238.638, 97.82867, 3.213452, 420, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_incoming_valarjar_aspirant_2', 24015), -- Valarjar Aspirant +(@CGUID+59, 96572, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 783.9618, 7319.146, 107.1622, 5.558975, 120, 0, 0, 0, 0, 0, 0, 0, 0, '', 24015), -- Stormforged Valarjar +(@CGUID+60, 96572, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 781.368, 7140.252, 107.1625, 0.8794658, 120, 0, 0, 0, 0, 0, 0, 0, 0, '', 24015), -- Stormforged Valarjar +(@CGUID+61, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 887.0469, 7215.551, 97.8416, 1.970037, 420, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_incoming_valarjar_aspirant_1', 24015), -- Valarjar Aspirant +(@CGUID+62, 113270, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 838.9618, 7182.88, 107.5491, 2.275736, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_feasting_valarjar', 24015), -- Shieldmaiden +(@CGUID+63, 113270, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 839.1059, 7186.208, 107.5515, 3.687696, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_feasting_valarjar', 24015), -- Shieldmaiden +(@CGUID+64, 113270, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 840.1702, 7270.393, 107.5516, 2.705152, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_feasting_valarjar', 24015), -- Shieldmaiden +(@CGUID+65, 113270, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 828.2902, 7272.351, 107.5846, 2.375442, 120, 0, 0, 0, 0, 2, 0, 0, 0, '', 24015), -- Shieldmaiden +(@CGUID+66, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 803.6049,7325.532, 107.5846, 4.506814, 540, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_leaving_valarjar_1', 24015), -- Valarjar Aspirant +(@CGUID+67, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 831.388, 7296.055, 107.5846, 1.930207, 120, 0, 0, 0, 0, 0, 0, 0, 0, '', 24015), -- Valarjar Aspirant +(@CGUID+68, 113270, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 809.3837, 7173.368, 107.0277, 5.281168, 120, 0, 0, 0, 0, 2, 0, 0, 0, '', 24015), -- Shieldmaiden +(@CGUID+69, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 828.7118, 7184.054, 107.556, 5.624679, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_feasting_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+70, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 823.9757, 7169.554, 107.5535, 5.984025, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_feasting_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+71, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 797.1129, 7270.123, 107.5464, 1.396805, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_feasting_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+72, 113270, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 819.7847, 7292.21, 107.5571, 0.6717078, 120, 0, 0, 0, 0, 0, 0, 0, 0, '', 24015), -- Shieldmaiden +(@CGUID+73, 113300, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 814.1077, 7229.027, 106.7456, 3.15387, 120, 0, 0, 0, 0, 0, 0, 0, 0, '', 24015), -- Image of Thorim +(@CGUID+74, 113270, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 820.4601, 7153.763, 107.5452, 0.8983396, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_feasting_valarjar', 24015), -- Shieldmaiden +(@CGUID+75, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 812.2892, 7286.124, 106.7846, 4.526197, 120, 0, 0, 0, 0, 2, 0, 0, 0, '', 24015), -- Valarjar Aspirant +(@CGUID+76, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 805.3559, 7189.577, 107.5568, 4.634243, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_feasting_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+77, 113270, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 824.0938, 7156.772, 107.554, 2.579204, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_feasting_valarjar', 24015), -- Shieldmaiden +(@CGUID+78, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 829.4011, 7162.335, 107.5629, 2.534826, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_feasting_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+79, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 828.6077, 7180.745, 107.5552, 0.9823219, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_feasting_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+80, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 827.3924, 7285.477, 107.5528, 0.9050231, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_feasting_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+81, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 822.0504, 7291.395, 107.5548, 0.8406721, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_feasting_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+82, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 839.9896, 7276.862, 107.5461, 3.406442, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_feasting_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+83, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 1046.743, 7116.038, 97.79204, 4.075095, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_spectating_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+84, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 798.8055, 7167.791, 107.5566, 3.21311, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_feasting_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+85, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 818.2708, 7151.954, 107.5402, 3.27984, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_feasting_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+86, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 795.5208, 7295.604, 107.5576, 2.931253, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_feasting_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+87, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 814.1736, 7311.827, 107.5468, 5.071805, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_feasting_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+88, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 821.4045, 7304.61, 107.5438, 3.961463, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_feasting_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+89, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 843.809, 7283.556, 107.4719, 3.633651, 120, 0, 0, 0, 0, 0, 0, 0, 0, '', 24015), -- Valarjar Aspirant +(@CGUID+90, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 807.2465, 7269.116, 107.5579, 3.195144, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_feasting_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+91, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 840.3403, 7172.121, 107.4872, 2.919409, 120, 0, 0, 0, 0, 0, 0, 0, 0, '', 24015), -- Valarjar Aspirant +(@CGUID+92, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 831.3125, 7274.136, 107.5543, 1.661897, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_feasting_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+93, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 793.7621, 7192.156, 107.4274, 6.169437, 120, 0, 0, 0, 0, 0, 0, 0, 0, '', 24015), -- Valarjar Aspirant +(@CGUID+94, 113270, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 797.5504, 7279.313, 107.5523, 5.85173, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_feasting_valarjar', 24015), -- Shieldmaiden +(@CGUID+95, 113270, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 794.342, 7181.619, 107.5434, 5.917163, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_feasting_valarjar', 24015), -- Shieldmaiden +(@CGUID+96, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 797.0816, 7274.227, 107.5485, 5.371294, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_feasting_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+97, 113270, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 784.0087, 7167.393, 107.5416, 5.713745, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_feasting_valarjar', 24015), -- Shieldmaiden +(@CGUID+98, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 789.3386, 7161.089, 107.5541, 2.545176, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_feasting_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+99, 113270, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 798.5434, 7293.633, 107.5581, 4.832476, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_feasting_valarjar', 24015), -- Shieldmaiden +(@CGUID+100, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 815.0625, 7149.273, 107.5412, 1.924815, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_feasting_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+101, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 796.5729, 7165.526, 107.5567, 1.24369, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_feasting_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+102, 103810, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 807.7656, 7309.16, 109.6824, 3.487215, 120, 0, 0, 0, 0, 0, 0, 0, 0, '', 24015), -- Renfield +(@CGUID+103, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 804.5729, 7146.695, 107.5489, 0.8699546, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_feasting_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+104, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 793.0313, 7298.327, 107.5576, 5.071805, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_feasting_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+105, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 776.6667, 7302.682, 107.3829, 5.628316, 120, 0, 0, 0, 0, 0, 0, 0, 0, '', 24015), -- Valarjar Aspirant +(@CGUID+106, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 800.3316, 7325.029, 107.3884, 5.443239, 120, 0, 0, 0, 0, 0, 0, 0, 0, '', 24015), -- Valarjar Aspirant +(@CGUID+107, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 810.6476, 7301.071, 107.5587, 2.769743, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_feasting_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+108, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 808.6337, 7303.242, 107.5587, 0.4036042, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_feasting_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+109, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 808.1007, 7312.498, 107.5525, 5.614032, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_feasting_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+110, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 805.4045, 7185.153, 107.5569, 2.049371, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_feasting_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+111, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 795.6667, 7181.746, 107.5449, 0.1131875, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_feasting_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+112, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 829.2587, 7191.175, 107.5606, 0.1131875, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_feasting_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+113, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 794.6996, 7282.824, 107.5476, 0.7188638, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_feasting_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+114, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 817.0955, 7309.072, 107.5454, 3.461222, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_feasting_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+115, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 788.6007, 7174.139, 107.4175, 5.679673, 120, 0, 0, 0, 0, 0, 0, 0, 0, '', 24015), -- Valarjar Aspirant +(@CGUID+116, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 831.092, 7277.778, 107.5537, 5.071805, 120, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_feasting_valarjar', 24015), -- Valarjar Aspirant +(@CGUID+117, 93819, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 993.75, 7323.065, 123.6135, 5.650713, 30, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_valkyr_of_odyn_1', 24015), -- Val'kyr of Odyn +(@CGUID+118, 93819, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 1110.443, 7213.999, 17.28479, 3.149208, 30, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_valkyr_of_odyn_2', 24015), -- Val'kyr of Odyn +(@CGUID+119, 93819, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 1124.51, 7222.31, 42.15336, 3.232374, 30, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_valkyr_of_odyn_3', 24015), -- Val'kyr of Odyn +(@CGUID+120, 93819, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 912.2222, 7205.531, 129.2773, 6.190696, 30, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_valkyr_of_odyn_4', 24015), -- Val'kyr of Odyn +(@CGUID+121, 93819, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 1039.444, 7133.647, 106.5698, 3.696915, 30, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_valkyr_of_odyn_5', 24015), -- Val'kyr of Odyn +(@CGUID+122, 93819, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 1107.887, 7234.073, 54.97818, 3.075214, 30, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_valkyr_of_odyn_6', 24015), -- Val'kyr of Odyn +(@CGUID+123, 93819, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 1065.42, 7306.094, 117.8158, 2.302904, 30, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_valkyr_of_odyn_7', 24015), -- Val'kyr of Odyn +(@CGUID+124, 96401, 1479, 7813, 7813, '0', 5997, 0, 0, 0, 771.441, 7159.936, 107.5405, 6.036823, 600, 0, 0, 0, 0, 0, 0, 0, 0, 'npc_leaving_valarjar_2', 24015); -- Valarjar Aspirant + +DELETE FROM `creature_addon` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+124; +INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `aiAnimKit`, `movementAnimKit`, `meleeAnimKit`, `auras`) VALUES +(@CGUID+2, 0, 0, 0, 1, 0, 12290, 0, 0, ''), -- Battlelord's Armor +(@CGUID+4, 0, 0, 50331648, 1, 0, 0, 0, 0, '223760'), -- Ymirjar Lord's Set - 223760 - Ymirjar Lord's Set +(@CGUID+6, 0, 0, 50331648, 1, 0, 0, 0, 0, '223743'), -- Onslaught Set - 223743 - Onslaught Set +(@CGUID+7, 0, 0, 1, 1, 0, 0, 0, 0, ''), -- Odyn +(@CGUID+8, 0, 0, 0, 1, 0, 0, 0, 0, ''), -- Fjornson Stonecarver +(@CGUID+12, 0, 0, 50331648, 1, 0, 0, 0, 0, '223746'), -- Heroes' Dreadnaught Set - 223746 - Heroes' Dreadnaught Set +(@CGUID+13, 0, 0, 50331648, 1, 0, 0, 0, 0, '223759'), -- Hellscream's Conquest Set - 223759 - Hellscream's Conquest Set +(@CGUID+15, 0, 0, 50331648, 1, 0, 0, 0, 0, '223749'), -- Valorous Siegebreaker Set - 223749 - Valorous Siegebreaker Set +(@CGUID+16, 0, 0, 50331648, 1, 0, 0, 0, 0, '223752'), -- Wrynn's Conquest Set - 223752 - Wrynn's Conquest Set +(@CGUID+18, 0, 0, 50331648, 1, 0, 0, 0, 0, '223717'), -- Warbringer Armor Set - 223717 - Warbringer Armor Set +(@CGUID+20, 0, 0, 50331648, 1, 0, 0, 0, 0, '223739'), -- Destroyer Armor Set - 223739 - Destroyer Armor Set +(@CGUID+21, 0, 0, 0, 1, 0, 0, 0, 0, '98892'), -- Greater Sparring Partner - 98892 - Training Dummy Marker +(@CGUID+22, 0, 0, 0, 1, 0, 0, 0, 0, '98892'), -- Lesser Sparring Partner - 98892 - Training Dummy Marker +(@CGUID+26, 0, 0, 50331648, 1, 0, 0, 0, 0, '223705'), -- Battlegear of Wrath Set - 223705 - Battlegear of Wrath Set +(@CGUID+29, 0, 0, 50331648, 1, 0, 0, 0, 0, '223700'), -- Battlegear of Might Set - 223700 - Battlegear of Might Set +(@CGUID+33, 0, 0, 0, 1, 0, 0, 0, 0, ''), -- Weaponmaster Asvard +(@CGUID+35, 0, 0, 50331648, 1, 0, 0, 0, 0, '223709'), -- Conqueror's Battlegear Set - 223709 - Conqueror's Battlegear Set +(@CGUID+50, 0, 0, 0, 1, 0, 0, 0, 0, '98892'), -- Lesser Sparring Partner - 98892 - Training Dummy Marker +(@CGUID+51, 0, 0, 0, 1, 0, 0, 0, 0, '98892'), -- Lesser Sparring Partner - 98892 - Training Dummy Marker +(@CGUID+52, 0, 0, 0, 1, 0, 0, 0, 0, '98892'), -- Greater Sparring Partner - 98892 - Training Dummy Marker +(@CGUID+54, 0, 0, 0, 1, 0, 0, 0, 0, ''), -- Master Smith Helgar +(@CGUID+73, 0, 0, 0, 1, 0, 0, 0, 0, ''), -- Image of Thorim +(@CGUID+89, 0, 0, 0, 1, 426, 0, 0, 0, ''), -- Valarjar Aspirant +(@CGUID+91, 0, 0, 0, 1, 426, 0, 0, 0, ''), -- Valarjar Aspirant +(@CGUID+93, 0, 0, 0, 1, 426, 0, 0, 0, ''), -- Valarjar Aspirant +(@CGUID+105, 0, 0, 0, 1, 426, 0, 0, 0, ''), -- Valarjar Aspirant +(@CGUID+106, 0, 0, 0, 1, 426, 0, 0, 0, ''), -- Valarjar Aspirant +(@CGUID+115, 0, 0, 0, 1, 426, 0, 0, 0, ''); -- Valarjar Aspirant + +DELETE FROM `creature_template_addon` WHERE `entry` IN (93823, 93819, 96401, 113270, 96572, 103810, 107494, 96679); +INSERT INTO `creature_template_addon` (`entry`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `aiAnimKit`, `movementAnimKit`, `meleeAnimKit`, `auras`) VALUES +(93823, 0, 0, 50331648, 1, 0, 0, 0, 0, ''), -- Danica the Reclaimer +(93819, 0, 0, 50331648, 1, 0, 0, 0, 0, ''), -- Val'kyr of Odyn +(96401, 0, 0, 0, 1, 0, 0, 0, 0, ''), -- Valarjar Aspirant +(113270, 0, 0, 0, 1, 0, 0, 0, 0, ''), -- Shieldmaiden +(96572, 0, 0, 0, 1, 0, 0, 0, 0, '52642'), -- Stormforged Valarjar - 52642 - Dull Weapons +(103810, 0, 0, 0, 1, 0, 0, 0, 0, '205607'), -- Renfield - 205607 - Boosted +(107494, 0, 0, 33554432, 1, 0, 0, 0, 0, ''), -- Val'kyr Arena Master +(96679, 0, 0, 0, 1, 0, 0, 0, 0, ''); -- Aerylia + +-- Pathing for Quartermaster Durnolf +SET @PATH := (@CGUID+0) * 10; + +DELETE FROM `creature_addon` WHERE `guid`=@CGUID+0; +INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `aiAnimKit`, `movementAnimKit`, `meleeAnimKit`, `auras`) VALUES +(@CGUID+0, @PATH, 0, 0, 1, 0, 0, 0, 0, ''); + +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `move_type`, `action`, `action_chance`, `wpguid`) VALUES +(@PATH, 1, 1078.332, 7249.874, 97.78458, 0.5061455, 15000, 0, 0, 100, 0), +(@PATH, 2, 1076.599, 7248.414, 97.78458, 0, 0, 0, 0, 100, 0), +(@PATH, 3, 1072.833, 7244.781, 97.78458, 2.251475, 15000, 0, 0, 100, 0); + +-- Pathing for Stormforged Valarjar +SET @PATH := (@CGUID+14) * 10; + +DELETE FROM `creature_addon` WHERE `guid`=@CGUID+14; +INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `aiAnimKit`, `movementAnimKit`, `meleeAnimKit`, `auras`) VALUES +(@CGUID+14, @PATH, 0, 0, 1, 0, 0, 0, 0, '52642'); -- Stormforged Valarjar - 52642 - Dull Weapons + +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `move_type`, `action`, `action_chance`, `wpguid`) VALUES +(@PATH, 1, 1059.355, 7109.143, 98.03021, 0, 0, 0, 0, 100, 0), +(@PATH, 2, 1062.14, 7098.445, 98.09122, 0, 0, 0, 0, 100, 0), +(@PATH, 3, 1062.212, 7086.201, 98.07793, 0, 0, 0, 0, 100, 0), +(@PATH, 4, 1057.238, 7073.042, 98.07264, 0, 0, 0, 0, 100, 0), +(@PATH, 5, 1050.738, 7066.218, 97.85432, 0, 0, 0, 0, 100, 0), +(@PATH, 6, 1041.468, 7059.611, 98.03458, 0, 0, 0, 0, 100, 0), +(@PATH, 7, 1035.233, 7057.516, 98.04141, 0, 0, 0, 0, 100, 0), +(@PATH, 8, 1030.441, 7056.395, 98.03458, 0, 0, 0, 0, 100, 0), +(@PATH, 9, 1016.19, 7057.544, 98.03458, 0, 0, 0, 0, 100, 0), +(@PATH, 10, 1001.354, 7064.85, 98.03457, 0, 0, 0, 0, 100, 0), +(@PATH, 11, 999.6281, 7066.602, 98.03458, 0, 0, 0, 0, 100, 0), +(@PATH, 12, 991.1783, 7078.769, 98.05251, 0, 0, 0, 0, 100, 0), +(@PATH, 13, 988.2833, 7090.929, 98.04587, 0, 0, 0, 0, 100, 0), +(@PATH, 14, 988.7699, 7102.168, 98.06433, 0, 0, 0, 0, 100, 0), +(@PATH, 15, 991.3452, 7110.406, 98.0473, 0, 0, 0, 0, 100, 0), +(@PATH, 16, 997.7927, 7119.614, 98.03343, 0, 0, 0, 0, 100, 0), +(@PATH, 17, 1007.708, 7127.708, 98.04001, 0, 0, 0, 0, 100, 0), +(@PATH, 18, 1009.347, 7128.678, 98.05522, 0, 0, 0, 0, 100, 0), +(@PATH, 19, 1024.143, 7130.562, 98.03651, 0, 0, 0, 0, 100, 0), +(@PATH, 20, 1033.394, 7130.59, 97.83824, 0, 0, 0, 0, 100, 0), +(@PATH, 21, 1035.905, 7129.8, 98.03458, 0, 0, 0, 0, 100, 0), +(@PATH, 22, 1039.673, 7128.535, 98.06012, 0, 0, 0, 0, 100, 0), +(@PATH, 23, 1050.871, 7120.234, 98.03458, 0, 0, 0, 0, 100, 0); + +-- Pathing for Stormforged Valarjar +SET @PATH := (@CGUID+9) * 10; + +DELETE FROM `creature_addon` WHERE `guid`=@CGUID+9; +INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `aiAnimKit`, `movementAnimKit`, `meleeAnimKit`, `auras`) VALUES +(@CGUID+9, @PATH, 0, 0, 1, 0, 0, 0, 0, '52642'); -- Stormforged Valarjar - 52642 - Dull Weapons + +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `move_type`, `action`, `action_chance`, `wpguid`) VALUES +(@PATH, 1, 899.703, 7219.97, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 2, 909.387, 7216.78, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 3, 919.976, 7216.32, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 4, 932.529, 7216.02, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 5, 945.434, 7216.09, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 6, 956.3, 7216.17, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 7, 965.25, 7216.12, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 8, 976.085, 7217.55, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 9, 984.035, 7218.43, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 10, 991.854, 7220.49, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 11, 995.995, 7220.9, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 12, 998.682, 7220.46, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 13, 1000.88, 7217.52, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 14, 1003.06, 7213.05, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 15, 1006.04, 7208.53, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 16, 1010.58, 7203.69, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 17, 1016.79, 7200.38, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 18, 1020.13, 7198.14, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 19, 1022.56, 7194.85, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 20, 1023.03, 7190.72, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 21, 1022.07, 7185.97, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 22, 1021.28, 7180.11, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 23, 1020.18, 7171.65, 97.7846, 0, 14000, 0, 0, 100, 0), +(@PATH, 24, 1028.04, 7170.89, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 25, 1033.46, 7173.44, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 26, 1034.11, 7178.06, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 27, 1033.23, 7181.86, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 28, 1032.5, 7189.42, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 29, 1032.85, 7195.41, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 30, 1036.11, 7198.49, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 31, 1041.39, 7201.25, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 32, 1045.58, 7204.88, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 33, 1048.67, 7207.85, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 34, 1052.05, 7212.5, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 35, 1054.7, 7216.44, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 36, 1055.88, 7220.42, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 37, 1060.33, 7221.08, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 38, 1065.39, 7218.43, 97.8289, 0, 0, 0, 0, 100, 0), +(@PATH, 39, 1068.39, 7214.8, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 40, 1068.32, 7209.8, 97.7846, 0, 15000, 0, 0, 100, 0), +(@PATH, 41, 1065.41, 7217.37, 97.8214, 0, 0, 0, 0, 100, 0), +(@PATH, 42, 1061.24, 7219.92, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 43, 1056.07, 7221.62, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 44, 1053.59, 7226.19, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 45, 1053.6, 7231.76, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 46, 1053.44, 7238.03, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 47, 1049.05, 7243.52, 97.8326, 0, 0, 0, 0, 100, 0), +(@PATH, 48, 1045.87, 7246.58, 97.8975, 0, 0, 0, 0, 100, 0), +(@PATH, 49, 1042.33, 7249.42, 97.9682, 0, 0, 0, 0, 100, 0), +(@PATH, 50, 1039.85, 7250.54, 97.7845, 0, 0, 0, 0, 100, 0), +(@PATH, 51, 1036.55, 7252.61, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 52, 1034.29, 7254.71, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 53, 1034.21, 7258.83, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 54, 1034.25, 7263.33, 97.8129, 0, 0, 0, 0, 100, 0), +(@PATH, 55, 1034.49, 7266.94, 97.8577, 0, 0, 0, 0, 100, 0), +(@PATH, 56, 1034.63, 7269.23, 97.8861, 0, 13000, 0, 0, 100, 0), +(@PATH, 57, 1029.1, 7268.52, 97.8802, 0, 0, 0, 0, 100, 0), +(@PATH, 58, 1025.21, 7262.77, 97.8107, 0, 0, 0, 0, 100, 0), +(@PATH, 59, 1024.41, 7258.54, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 60, 1023.33, 7254.99, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 61, 1019.39, 7252.49, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 62, 1015.62, 7250.6, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 63, 1010.78, 7247.79, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 64, 1006.78, 7244.65, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 65, 1003.78, 7239.71, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 66, 1001.31, 7234.52, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 67, 1000.29, 7231.48, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 68, 995.401, 7230.75, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 69, 988.91, 7231.11, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 70, 985.299, 7232.55, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 71, 978.115, 7235.72, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 72, 970.783, 7235.44, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 73, 963.299, 7235.57, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 74, 952.04, 7236, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 75, 941.611, 7236.31, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 76, 922.184, 7236.51, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 77, 901.578, 7237.24, 97.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 78, 886.344, 7237.96, 97.7846, 0, 15000, 0, 0, 100, 0); + +-- Pathing for Stormforged Valarjar +SET @PATH := (@CGUID+55) * 10; + +DELETE FROM `creature_addon` WHERE `guid`=@CGUID+55; +INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `aiAnimKit`, `movementAnimKit`, `meleeAnimKit`, `auras`) VALUES +(@CGUID+55, @PATH, 0, 0, 1, 0, 0, 0, 0, '52642'); -- Stormforged Valarjar - 52642 - Dull Weapons + +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `move_type`, `action`, `action_chance`, `wpguid`) VALUES +(@PATH, 1, 799.2552, 7240.588, 106.7846, 0, 15000, 0, 0, 100, 0), +(@PATH, 2, 803.5764, 7240.032, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 3, 807.1285, 7241.317, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 4, 809.2222, 7248.132, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 5, 811.243, 7253.938, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 6, 814.2976, 7259.448, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 7, 813.4879, 7265.893, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 8, 813.4063, 7275.651, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 9, 813.8004, 7283.113, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 10, 810.0226, 7288.268, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 11, 803.0785, 7294.741, 106.8754, 0, 0, 0, 0, 100, 0), +(@PATH, 12, 792.852, 7305.193, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 13, 784.3941, 7313.585, 107.1845, 0, 15000, 0, 0, 100, 0), +(@PATH, 14, 792.852, 7305.193, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 15, 803.0785, 7294.741, 106.8754, 0, 0, 0, 0, 100, 0), +(@PATH, 16, 810.0226, 7288.268, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 17, 813.8004, 7283.113, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 18, 813.4063, 7275.651, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 19, 813.4879, 7265.893, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 20, 814.2976, 7259.448, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 21, 811.243, 7253.938, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 22, 809.2222, 7248.132, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 23, 807.1285, 7241.317, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 24, 803.5764, 7240.032, 106.7846, 0, 0, 0, 0, 100, 0); + +-- Pathing for Stormforged Valarjar +SET @PATH := (@CGUID+53) * 10; + +DELETE FROM `creature_addon` WHERE `guid`=@CGUID+53; +INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `aiAnimKit`, `movementAnimKit`, `meleeAnimKit`, `auras`) VALUES +(@CGUID+53, @PATH, 0, 0, 1, 0, 0, 0, 0, '52642'); -- Stormforged Valarjar - 52642 - Dull Weapons + +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `move_type`, `action`, `action_chance`, `wpguid`) VALUES +(@PATH, 1, 787.2691, 7141.032, 107.1845, 0, 15000, 0, 0, 100, 0), +(@PATH, 2, 791.7396, 7145.578, 107.0109, 0, 0, 0, 0, 100, 0), +(@PATH, 3, 795.9323, 7149.517, 106.8352, 0, 0, 0, 0, 100, 0), +(@PATH, 4, 801.4167, 7155.145, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 5, 806.757, 7160.366, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 6, 812.3542, 7166.497, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 7, 817.4305, 7172.878, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 8, 819.4948, 7179.916, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 9, 819.6927, 7189.042, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 10, 820.6406, 7199.277, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 11, 824.2413, 7201.967, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 12, 828.4722, 7203.042, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 13, 832.0208, 7204.906, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 14, 835.8264, 7208.015, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 15, 839.2604, 7211.28, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 16, 845.6389, 7213.393, 106.7846, 0, 15000, 0, 0, 100, 0), +(@PATH, 17, 839.2604, 7211.28, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 18, 835.8264, 7208.015, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 19, 832.0208, 7204.906, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 20, 828.4722, 7203.042, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 21, 824.2413, 7201.967, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 22, 820.6406, 7199.277, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 23, 819.6927, 7189.042, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 24, 819.4948, 7179.916, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 25, 817.4305, 7172.878, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 26, 812.3542, 7166.497, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 27, 806.757, 7160.366, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 28, 801.4167, 7155.145, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 29, 795.9323, 7149.517, 106.8352, 0, 0, 0, 0, 100, 0), +(@PATH, 30, 791.7396, 7145.578, 107.0109, 0, 0, 0, 0, 100, 0); + +-- Start Mead Hall + +-- Pathing for Shieldmaiden +SET @PATH := (@CGUID+65) * 10; + +DELETE FROM `creature_addon` WHERE `guid`=@CGUID+65; +INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `aiAnimKit`, `movementAnimKit`, `meleeAnimKit`, `auras`) VALUES +(@CGUID+65, @PATH, 0, 0, 1, 0, 0, 0, 0, ''); -- Shieldmaiden + +-- missing emotes +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `move_type`, `action`, `action_chance`, `wpguid`) VALUES +(@PATH, 1, 821.6458, 7278.744, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 2, 817.5417, 7284.403, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 3, 813.7292, 7289.004, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 4, 809.7726, 7291.155, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 5, 806.7186, 7288.294, 107.5844, 0, 0, 0, 0, 100, 0), +(@PATH, 6, 802.8837, 7288.68, 107.5846, 0, 0, 0, 0, 100, 0), +(@PATH, 7, 801.5521, 7290.084, 107.5846, 0, 20000, 0, 0, 100, 0), +(@PATH, 8, 806.4844, 7289.871, 107.2425, 0, 0, 0, 0, 100, 0), +(@PATH, 9, 810.8333, 7287.885, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 10, 815.3386, 7283.011, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 11, 818.4531, 7278.502, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 12, 822.3646, 7270.632, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 13, 826.1702, 7270.191, 107.5846, 0, 0, 0, 0, 100, 0), +(@PATH, 14, 830.4688, 7270.254, 107.5846, 0, 20000, 0, 0, 100, 0); + +-- Pathing for Valarjar Aspirant +SET @PATH := (@CGUID+75) * 10; + +DELETE FROM `creature_addon` WHERE `guid`=@CGUID+75; +INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `aiAnimKit`, `movementAnimKit`, `meleeAnimKit`, `auras`) VALUES +(@CGUID+75, @PATH, 0, 0, 1, 0, 0, 0, 0, ''); -- Valarjar Aspirant + +-- missing emotes +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `move_type`, `action`, `action_chance`, `wpguid`) VALUES +(@PATH, 1, 807.4114, 7278.075, 107.5846, 0, 15000, 0, 0, 100, 0), +(@PATH, 2, 814.585, 7297.916, 107.5846, 0, 15000, 0, 0, 100, 0), +(@PATH, 3, 812.8472, 7289.086, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 4, 811.0191, 7279.381, 106.7846, 0, 0, 0, 0, 100, 0); + +-- Shieldmaiden +SET @PATH := (@CGUID+68) * 10; + +DELETE FROM `creature_addon` WHERE `guid`=@CGUID+68; +INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `aiAnimKit`, `movementAnimKit`, `meleeAnimKit`, `auras`) VALUES +(@CGUID+68, @PATH, 0, 0, 1, 0, 0, 0, 0, ''); -- Shieldmaiden + +-- missing emotes +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `move_type`, `action`, `action_chance`, `wpguid`) VALUES +(@PATH, 1, 810.806, 7163.271, 106.8967, 0, 0, 0, 0, 100, 0), +(@PATH, 2, 813.4445, 7160.912, 107.6182, 0, 20000, 0, 0, 100, 0), +(@PATH, 3, 808.9236, 7166.083, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 4, 809.0608, 7170.817, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 5, 810.1614, 7177.255, 106.7846, 0, 0, 0, 0, 100, 0), +(@PATH, 6, 806.1841, 7178.373, 107.5846, 0, 15000, 0, 0, 100, 0), +(@PATH, 7, 812.059, 7169.183, 106.7846, 0, 0, 0, 0, 100, 0); + +-- End Mead Hall + +-- Creature Equip Templates +DELETE FROM `creature_equip_template` WHERE (`CreatureID`=103810 AND `ID`=1) OR (`CreatureID`=96586 AND `ID`=1) OR (`CreatureID`=107484 AND `ID`=1) OR (`CreatureID`=107483 AND `ID`=1) OR (`CreatureID`=112577 AND `ID`=1) OR (`CreatureID`=107494 AND `ID`=1) OR (`CreatureID`=114559 AND `ID`=1) OR (`CreatureID`=114558 AND `ID`=1) OR (`CreatureID`=96572 AND `ID`=1) OR (`CreatureID`=96679 AND `ID`=1) OR (`CreatureID`=93823 AND `ID`=1) OR (`CreatureID`=112392 AND `ID`=1); +INSERT INTO `creature_equip_template` (`CreatureID`, `ID`, `ItemID1`, `AppearanceModID1`, `ItemVisual1`, `ItemID2`, `AppearanceModID2`, `ItemVisual2`, `ItemID3`, `AppearanceModID3`, `ItemVisual3`) VALUES +(103810, 1, 83019, 0, 0, 0, 0, 0, 0, 0, 0), -- Renfield +(96586, 1, 7956, 0, 0, 0, 0, 0, 0, 0, 0), -- Master Smith Helgar +(107484, 1, 137174, 0, 0, 137266, 0, 0, 0, 0, 0), -- Greater Sparring Partner +(107483, 1, 137263, 0, 0, 137264, 0, 0, 0, 0, 0), -- Lesser Sparring Partner +(112577, 1, 140747, 0, 0, 0, 0, 0, 0, 0, 0), -- Weaponmaster Asvard +(107494, 1, 137262, 0, 0, 0, 0, 0, 0, 0, 0), -- Val'kyr Arena Master +(114559, 1, 137263, 0, 0, 137264, 0, 0, 0, 0, 0), -- Lesser Sparring Partner +(114558, 1, 137263, 0, 0, 140748, 0, 0, 0, 0, 0), -- Greater Sparring Partner +(96572, 1, 137174, 0, 0, 140748, 0, 0, 0, 0, 0), -- Stormforged Valarjar +(96679, 1, 140345, 0, 0, 0, 0, 0, 0, 0, 0), -- Aerylia +(93823, 1, 140345, 0, 0, 0, 0, 0, 0, 0, 0), -- Danica the Reclaimer +(112392, 1, 140747, 0, 0, 0, 0, 0, 0, 0, 0); -- Quartermaster Durnolf + +UPDATE `creature_template` SET `minlevel`=100, `maxlevel`=100, `speed_walk`=0.888888, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry`=103810; -- Renfield +UPDATE `creature_template` SET `minlevel`=110, `maxlevel`=110, `faction`=2141, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=33587264, `unit_flags2`=2048, `VehicleId`=4866 WHERE `entry`=113300; -- Image of Thorim +UPDATE `creature_template` SET `minlevel`=98, `maxlevel`=110, `speed_run`=1.285714, `BaseAttackTime`=1000, `RangeAttackTime`=2000, `unit_flags2`=2048, `InhabitType`=1 WHERE `entry`=113270; -- Shieldmaiden +UPDATE `creature_template` SET `minlevel`=110, `maxlevel`=110, `npcflag`=134217731, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2048 WHERE `entry`=96586; -- Master Smith Helgar +UPDATE `creature_template` SET `minlevel`=113, `maxlevel`=113, `faction`=7, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=131072, `unit_flags2`=2048 WHERE `entry`=107484; -- Greater Sparring Partner +UPDATE `creature_template` SET `minlevel`=110, `maxlevel`=110, `faction`=7, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=131072, `unit_flags2`=2048 WHERE `entry`=107483; -- Lesser Sparring Partner +UPDATE `creature_template` SET `minlevel`=110, `maxlevel`=110, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=67110912 WHERE `entry`=112357; -- Conqueror's Battlegear Set +UPDATE `creature_template` SET `minlevel`=5, `maxlevel`=5, `npcflag`=1, `speed_run`=1, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=2048 WHERE `entry`=112577; -- Weaponmaster Asvard +UPDATE `creature_template` SET `minlevel`=100, `maxlevel`=100, `npcflag`=1, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33536, `unit_flags2`=18432, `HoverHeight`=2.8 WHERE `entry`=107494; -- Val'kyr Arena Master +UPDATE `creature_template` SET `minlevel`=110, `maxlevel`=110, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=67110912 WHERE `entry`=112353; -- Battlegear of Might Set +UPDATE `creature_template` SET `minlevel`=110, `maxlevel`=110, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=67110912 WHERE `entry`=112356; -- Battlegear of Wrath Set +UPDATE `creature_template` SET `minlevel`=112, `maxlevel`=112, `faction`=7, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=114559; -- Lesser Sparring Partner +UPDATE `creature_template` SET `minlevel`=113, `maxlevel`=113, `faction`=7, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags2`=2048 WHERE `entry`=114558; -- Greater Sparring Partner +UPDATE `creature_template` SET `minlevel`=110, `maxlevel`=110, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=67110912 WHERE `entry`=112390; -- Destroyer Armor Set +UPDATE `creature_template` SET `minlevel`=98, `maxlevel`=110, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32768, `unit_flags2`=2048, `ScriptName`='' WHERE `entry`=96401; -- Valarjar Aspirant +UPDATE `creature_template` SET `minlevel`=110, `maxlevel`=110, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=67110912 WHERE `entry`=112361; -- Warbringer Armor Set +UPDATE `creature_template` SET `minlevel`=110, `maxlevel`=110, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=67110912 WHERE `entry`=112416; -- Wrynn's Conquest Set +UPDATE `creature_template` SET `minlevel`=110, `maxlevel`=110, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=67110912 WHERE `entry`=112413; -- Valorous Siegebreaker Set +UPDATE `creature_template` SET `minlevel`=110, `maxlevel`=110, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=67110912 WHERE `entry`=112418; -- Hellscream's Conquest Set +UPDATE `creature_template` SET `minlevel`=110, `maxlevel`=110, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=67110912 WHERE `entry`=112408; -- Heroes' Dreadnaught Set +UPDATE `creature_template` SET `minlevel`=110, `maxlevel`=110, `npcflag`=3, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=8, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=111741; -- Fjornson Stonecarver +UPDATE `creature_template` SET `minlevel`=111, `maxlevel`=111, `npcflag`=3, `speed_run`=1, `BaseAttackTime`=1500, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=4196352, `ScriptName`='npc_odyn' WHERE `entry`=96469; -- Odyn +UPDATE `creature_template` SET `minlevel`=110, `maxlevel`=110, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=67110912 WHERE `entry`=112400; -- Onslaught Set +UPDATE `creature_template` SET `minlevel`=110, `maxlevel`=110, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=32832, `unit_flags2`=2099200 WHERE `entry`=96572; -- Stormforged Valarjar +UPDATE `creature_template` SET `minlevel`=110, `maxlevel`=110, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=67110912 WHERE `entry`=112420; -- Ymirjar Lord's Set +UPDATE `creature_template` SET `minlevel`=100, `maxlevel`=100, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33536, `unit_flags2`=18432, `HoverHeight`=2.8, `InhabitType`=2|4 WHERE `entry`=93819; -- Val'kyr of Odyn +UPDATE `creature_template` SET `minlevel`=100, `maxlevel`=100, `npcflag`=1, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33536, `unit_flags2`=18432, `HoverHeight`=2.8 WHERE `entry`=96679; -- Aerylia +UPDATE `creature_template` SET `minlevel`=110, `maxlevel`=110, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_flags`=768, `unit_flags2`=67110912 WHERE `entry`=116609; -- Battlelord's Armor +UPDATE `creature_template` SET `minlevel`=100, `maxlevel`=100, `npcflag`=3, `speed_run`=1, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33536, `unit_flags2`=18432, `HoverHeight`=2.8, `InhabitType`=6, `ScriptName`='npc_danica_the_reclaimer' WHERE `entry`=93823; -- Danica the Reclaimer +UPDATE `creature_template` SET `minlevel`=110, `maxlevel`=110, `npcflag`=4227, `BaseAttackTime`=2000, `RangeAttackTime`=2000, `unit_class`=2, `unit_flags`=33536, `unit_flags2`=2048 WHERE `entry`=112392; -- Quartermaster Durnolf + +UPDATE `creature_model_info` SET `BoundingRadius`=0.31, `CombatReach`=1.1, `VerifiedBuild`=24015 WHERE `DisplayID`=40994; +UPDATE `creature_model_info` SET `VerifiedBuild`=24015 WHERE `DisplayID`=25799; +UPDATE `creature_model_info` SET `VerifiedBuild`=24015 WHERE `DisplayID`=25204; +UPDATE `creature_model_info` SET `BoundingRadius`=0.31, `CombatReach`=1.5, `VerifiedBuild`=24015 WHERE `DisplayID`=71252; +UPDATE `creature_model_info` SET `VerifiedBuild`=24015 WHERE `DisplayID`=25801; +UPDATE `creature_model_info` SET `VerifiedBuild`=24015 WHERE `DisplayID`=25800; +UPDATE `creature_model_info` SET `VerifiedBuild`=24015 WHERE `DisplayID`=42722; +UPDATE `creature_model_info` SET `VerifiedBuild`=24015 WHERE `DisplayID`=42720; +UPDATE `creature_model_info` SET `BoundingRadius`=1.509789, `CombatReach`=1.875, `VerifiedBuild`=24015 WHERE `DisplayID`=67956; +UPDATE `creature_model_info` SET `VerifiedBuild`=24015 WHERE `DisplayID`=65680; +UPDATE `creature_model_info` SET `VerifiedBuild`=24015 WHERE `DisplayID`=65678; +UPDATE `creature_model_info` SET `VerifiedBuild`=24015 WHERE `DisplayID`=65679; +UPDATE `creature_model_info` SET `VerifiedBuild`=24015 WHERE `DisplayID`=70110; +UPDATE `creature_model_info` SET `VerifiedBuild`=24015 WHERE `DisplayID`=65681; +UPDATE `creature_model_info` SET `BoundingRadius`=1.748563, `CombatReach`=0.6, `VerifiedBuild`=24015 WHERE `DisplayID`=67162; +UPDATE `creature_model_info` SET `BoundingRadius`=1.449397, `CombatReach`=1.8, `VerifiedBuild`=24015 WHERE `DisplayID`=67937; +UPDATE `creature_model_info` SET `BoundingRadius`=1.509789, `CombatReach`=1.875, `VerifiedBuild`=24015 WHERE `DisplayID`=67938; +UPDATE `creature_model_info` SET `BoundingRadius`=1.831403, `CombatReach`=1.729, `VerifiedBuild`=24015 WHERE `DisplayID`=73429; +UPDATE `creature_model_info` SET `VerifiedBuild`=24015 WHERE `DisplayID`=67230; +UPDATE `creature_model_info` SET `BoundingRadius`=1.328614, `CombatReach`=1.65, `VerifiedBuild`=24015 WHERE `DisplayID`=67361; +UPDATE `creature_model_info` SET `VerifiedBuild`=24015 WHERE `DisplayID`=21342; +UPDATE `creature_model_info` SET `BoundingRadius`=2.03999, `CombatReach`=0.7, `VerifiedBuild`=24015 WHERE `DisplayID`=67161; +UPDATE `creature_model_info` SET `BoundingRadius`=0.306, `CombatReach`=1.5, `VerifiedBuild`=24015 WHERE `DisplayID`=74255; +UPDATE `creature_model_info` SET `BoundingRadius`=2.03999, `CombatReach`=0.7, `VerifiedBuild`=24015 WHERE `DisplayID`=73300; +UPDATE `creature_model_info` SET `BoundingRadius`=0.3645831, `CombatReach`=1.575, `VerifiedBuild`=24015 WHERE `DisplayID`=72055; + +DELETE FROM `creature_queststarter` WHERE `id`=93823 AND `quest`=39654; +INSERT INTO `creature_queststarter` (`id`, `quest`) VALUES +(93823, 39654); + +DELETE FROM `scene_template` WHERE `SceneId` IN (1109); +INSERT INTO `scene_template` (`SceneId`, `Flags`, `ScriptPackageID`, `ScriptName`) VALUES +(1109, 11, 1489, 'scene_odyn_intro'); + +DELETE FROM `phase_area` WHERE (`AreaId`=7813 AND `PhaseId`=5997) OR (`AreaId`=7813 AND `PhaseId`=5090) OR (`AreaId`=7813 AND `PhaseId`=5107); +INSERT INTO `phase_area` (`AreaId`, `PhaseId`, `Comment`) VALUES +(7813, 5997, 'Warrior Order Hall - Default phase'), +(7813, 5107, 'Warrior Order Hall - Odyn\'s phase'), +(7813, 5090, 'Warrior Order Hall - Starting phase - Removed when quest 39654 (Odyn and the Valarjar) is completed or rewarded'); + +DELETE FROM `graveyard_zone` WHERE `ID`=5358; +INSERT INTO `graveyard_zone` (`ID`, `GhostZone`, `Comment`) VALUES +(5358, 7813, 'Warrior Order Hall - Default Graveyard'); + +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=26 AND `SourceGroup`=5090 AND `SourceEntry`=7813; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionValue1`, `NegativeCondition`, `Comment`) VALUES +(26, 5090, 7813, 0, 8, 39654, 1, 'Only in phase 5090 when quest 39654 not rewarded'), +(26, 5090, 7813, 0, 28, 39654, 1, 'Only in phase 5090 when quest 39654 not completed'); + +DELETE FROM `creature_text` WHERE `CreatureID`=93823; +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `comment`) VALUES +(93823, 0, 0, 'Welcome to Skyhold! Here the brave live on forever!', 12, 0, 100, 0, 0, 60356, 98601, 'Danica the Reclaimer to Player'), +(93823, 1, 0, 'Behind you lies the Eye of Odyn, which peers across all of Azeroth! This way lies the Forge, where the mightiest weapons of the valarjar are crafted by Helgar, the greatest smith in the Halls.', 12, 0, 100, 0, 0, 60358, 98370, 'Danica the Reclaimer to Player'), +(93823, 2, 0, 'Across the way lies the Arena of Glory, where warriors vie for supremacy in epic combat. Before us lies the Great Mead Hall where drink and stories flow freely!', 12, 0, 100, 0, 0, 60359, 105450, 'Danica the Reclaimer to Player'), +(93823, 3, 0, 'Odyn awaits ahead. I will go forth and announce you. Be respectful!', 12, 0, 100, 0, 0, 60360, 98372, 'Danica the Reclaimer to Player'); + +DELETE FROM `spell_target_position` WHERE `ID`=193711 AND `EffectIndex`=0; +INSERT INTO `spell_target_position` (`ID`, `EffectIndex`, `MapID`, `PositionX`, `PositionY`, `PositionZ`, `VerifiedBuild`) VALUES +(193711, 0, 1479, 834.61, 7228.57, 106.67, 24015); -- Spell: Cancel/Complete Scene - Order Formation Efffect: 252 (SPELL_EFFECT_TELEPORT_UNITS) + +-- GameObjects +DELETE FROM `gameobject_template` WHERE `entry` IN (250878 /*Training Troops*/, 252887 /*Blessing of Mjolnir*/, 250879 /*Training Troops*/, 267923 /*The Legend of Odyn*/, 248980 /*The Legend of Odyn*/, 252801 /*Artifact Research Notes*/, 250880 /*Training Troops*/, 248979 /*Saga of the Valarjar*/, 267922 /*The Favored of Odyn*/, 248981 /*The Favored of Odyn*/, 258944 /*Warswords of the Valarjar Appearance*/, 244516 /*Valhallas Portal*/, 258942 /*Warswords of the Valarjar Appearance*/, 258943 /*Warswords of the Valarjar Appearance*/, 258945 /*Warswords of the Valarjar Appearance*/, 252016 /*Requisitioned Armaments*/, 245726 /*Forge of Odyn*/); +INSERT INTO `gameobject_template` (`entry`, `type`, `displayId`, `name`, `IconName`, `castBarCaption`, `unk1`, `size`, `Data0`, `Data1`, `Data2`, `Data3`, `Data4`, `Data5`, `Data6`, `Data7`, `Data8`, `Data9`, `Data10`, `Data11`, `Data12`, `Data13`, `Data14`, `Data15`, `Data16`, `Data17`, `Data18`, `Data19`, `Data20`, `Data21`, `Data22`, `Data23`, `Data24`, `Data25`, `Data26`, `Data27`, `Data28`, `Data29`, `Data30`, `Data31`, `Data32`, `RequiredLevel`, `VerifiedBuild`) VALUES +(250878, 45, 9510, 'Training Troops', '', '', '', 1, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24015), -- Training Troops +(252887, 45, 9510, 'Blessing of Mjolnir', '', '', '', 1, 194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24015), -- Blessing of Mjolnir +(250879, 45, 9510, 'Training Troops', '', '', '', 1, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24015), -- Training Troops +(267923, 8, 9510, 'The Legend of Odyn', '', '', '', 1, 1915, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24015), -- The Legend of Odyn +(248980, 9, 33174, 'The Legend of Odyn', '', '', '', 1.5, 5268, 0, 8, 0, 42681, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24015), -- The Legend of Odyn +(252801, 45, 15781, 'Artifact Research Notes', '', '', '', 1, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24015), -- Artifact Research Notes +(250880, 45, 9510, 'Training Troops', '', '', '', 1, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24015), -- Training Troops +(248979, 9, 33173, 'Saga of the Valarjar', '', '', '', 1.5, 5795, 0, 8, 0, 42681, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24015), -- Saga of the Valarjar +(267922, 8, 9510, 'The Favored of Odyn', '', '', '', 1, 1914, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24015), -- The Favored of Odyn +(248981, 9, 33174, 'The Favored of Odyn', '', '', '', 1.5, 5269, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24015), -- The Favored of Odyn +(258944, 5, 37956, 'Warswords of the Valarjar Appearance', '', '', '', 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24015), -- Warswords of the Valarjar Appearance +(244516, 5, 34055, 'Valhallas Portal', '', '', '', 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24015), -- Valhallas Portal +(258942, 5, 37958, 'Warswords of the Valarjar Appearance', '', '', '', 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24015), -- Warswords of the Valarjar Appearance +(258943, 5, 37957, 'Warswords of the Valarjar Appearance', '', '', '', 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24015), -- Warswords of the Valarjar Appearance +(258945, 5, 37955, 'Warswords of the Valarjar Appearance', '', '', '', 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24015), -- Warswords of the Valarjar Appearance +(252016, 45, 9510, 'Requisitioned Armaments', '', '', '', 1, 202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24015), -- Requisitioned Armaments +(245726, 47, 31101, 'Forge of Odyn', '', '', '', 2, 37155, 1, 0, 648, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24015); -- Forge of Odyn + +DELETE FROM `gameobject_template_addon` WHERE `entry` IN (250878 /*Training Troops*/, 252887 /*Blessing of Mjolnir*/, 250879 /*Training Troops*/, 252801 /*Artifact Research Notes*/, 250880 /*Training Troops*/, 258944 /*Warswords of the Valarjar Appearance*/, 258945 /*Warswords of the Valarjar Appearance*/, 258943 /*Warswords of the Valarjar Appearance*/, 258942 /*Warswords of the Valarjar Appearance*/, 252016 /*Requisitioned Armaments*/, 245726 /*Forge of Odyn*/, 252064 /*Grand Challenger's Bounty*/, 246280 /*Cylinder Collision (2 Scale)*/); +INSERT INTO `gameobject_template_addon` (`entry`, `faction`, `flags`) VALUES +(250878, 0, 262144), -- Training Troops +(252887, 0, 262144), -- Blessing of Mjolnir +(250879, 0, 262144), -- Training Troops +(252801, 0, 262144), -- Artifact Research Notes +(250880, 0, 262144), -- Training Troops +(258944, 114, 0), -- Warswords of the Valarjar Appearance +(258945, 114, 0), -- Warswords of the Valarjar Appearance +(258943, 114, 0), -- Warswords of the Valarjar Appearance +(258942, 114, 0), -- Warswords of the Valarjar Appearance +(252016, 0, 262144), -- Requisitioned Armaments +(245726, 0, 270336), -- Forge of Odyn +(252064, 0, 262144), -- Grand Challenger's Bounty +(246280, 0, 32); -- Cylinder Collision (2 Scale) + +SET @OGUID := 46; +DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+14; +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnDifficulties`, `PhaseId`, `PhaseGroup`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `VerifiedBuild`) VALUES +(@OGUID+0, 246280, 1479, 7813, 7813, '0', 5997, 0, 1067.097, 7240.936, 100.5904, 0, 0, 0, 0, 1, 120, 255, 1, 24015), -- Cylinder Collision (2 Scale) (Area: Skyhold - Difficulty: 0) +(@OGUID+1, 250878, 1479, 7813, 7813, '0', 5997, 0, 1127.615, 7196.929, 99.71751, 2.335665, 0, 0, 0.9199028, 0.3921465, 120, 255, 1, 24015), -- Training Troops (Area: Skyhold - Difficulty: 0) +(@OGUID+2, 244516, 1479, 7813, 7813, '0', 5997, 0, 1085.462, 7228.605, 47.26785, 1.315875, 0.522438, 0.354455, 0.4989128, 0.5937223, 120, 255, 1, 24015), -- Valhallas Portal (Area: Skyhold - Difficulty: 0) +(@OGUID+3, 252016, 1479, 7813, 7813, '0', 5997, 0, 1069.146, 7204.144, 97.69034, 0.8474326, 0, 0, 0.4111509, 0.9115673, 120, 255, 1, 24015), -- Requisitioned Armaments (Area: Skyhold - Difficulty: 0) +(@OGUID+4, 267922, 1479, 7813, 7813, '0', 5997, 0, 1068.727, 7311.191, 109.4267, 0, 0, 0, 0, 1, 120, 255, 1, 24015), -- The Favored of Odyn (Area: Skyhold - Difficulty: 0) +(@OGUID+5, 250879, 1479, 7813, 7813, '0', 5997, 0, 1128.748, 7249.465, 99.71822, 3.968774, 0, 0, -0.9156837, 0.4018996, 120, 255, 1, 24015), -- Training Troops (Area: Skyhold - Difficulty: 0) +(@OGUID+6, 259095, 1479, 7813, 7813, '0', 5997, 0, 1142.71, 7223.2, 101.819, 0, 0, 0, 0, 1, 120, 255, 1, 24015), -- [DNT] Command Table Collision Cylinder (Area: Skyhold - Difficulty: 0) +(@OGUID+7, 248981, 1479, 7813, 7813, '0', 5997, 0, 1069.054, 7311.249, 109.4267, 0.9491548, 0, 0, 0.4569626, 0.8894859, 120, 255, 1, 24015), -- The Favored of Odyn (Area: Skyhold - Difficulty: 0) +(@OGUID+8, 250880, 1479, 7813, 7813, '0', 5997, 0, 1122.059, 7253.297, 99.71768, 3.91156, 0, 0, -0.9268045, 0.3755441, 120, 255, 1, 24015), -- Training Troops (Area: Skyhold - Difficulty: 0) +(@OGUID+9, 252887, 1479, 7813, 7813, '0', 5997, 0, 1054.125, 7132.937, 98.26038, 5.665893, 0, 0, -0.3037691, 0.9527457, 120, 255, 1, 24015), -- Blessing of Mjolnir (Area: Skyhold - Difficulty: 0) +(@OGUID+10, 248979, 1479, 7813, 7813, '0', 5997, 0, 1074.019, 7322.522, 109.4267, 0, 0, 0, 0, 1, 120, 255, 1, 24015), -- Saga of the Valarjar (Area: Skyhold - Difficulty: 0) +(@OGUID+11, 245726, 1479, 7813, 7813, '0', 5997, 0, 1030.769, 7361.063, 107.3078, 4.673286, -0.001883507, -0.01285458, -0.7206783, 0.6931479, 120, 255, 1, 24015), -- Forge of Odyn (Area: Skyhold - Difficulty: 0) +(@OGUID+12, 267923, 1479, 7813, 7813, '0', 5997, 0, 1068.278, 7334.356, 109.4267, 0, 0, 0, 0, 1, 120, 255, 1, 24015), -- The Legend of Odyn (Area: Skyhold - Difficulty: 0) +(@OGUID+13, 248980, 1479, 7813, 7813, '0', 5997, 0, 1068.616, 7334.295, 109.4267, 5.433888, 0, 0, -0.4120007, 0.9111835, 120, 255, 1, 24015), -- The Legend of Odyn (Area: Skyhold - Difficulty: 0) +(@OGUID+14, 247320, 1479, 7813, 7813, '0', 5997, 0, 1030.392, 7360.578, 107.5607, 4.678151, 0, 0, -0.7191076, 0.6948987, 120, 255, 1, 24015); -- Forge of Power (Area: Skyhold - Difficulty: 0) diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index d22a4fdbb72..e5400cc082c 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -1426,6 +1426,8 @@ class TC_GAME_API Unit : public WorldObject void SetCritterGUID(ObjectGuid guid) { SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::Critter), guid); } ObjectGuid GetBattlePetCompanionGUID() const { return m_unitData->BattlePetCompanionGUID; } void SetBattlePetCompanionGUID(ObjectGuid guid) { SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::BattlePetCompanionGUID), guid); } + ObjectGuid GetDemonCreatorGUID() const { return m_unitData->DemonCreator; } + void SetDemonCreatorGUID(ObjectGuid guid) { SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::DemonCreator), guid); } bool IsControlledByPlayer() const { return m_ControlledByPlayer; } ObjectGuid GetCharmerOrOwnerGUID() const; diff --git a/src/server/scripts/BrokenIsles/broken_isles_script_loader.cpp b/src/server/scripts/BrokenIsles/broken_isles_script_loader.cpp new file mode 100644 index 00000000000..a9d83693c79 --- /dev/null +++ b/src/server/scripts/BrokenIsles/broken_isles_script_loader.cpp @@ -0,0 +1,26 @@ +/* + * Copyright (C) 2008-2019 TrinityCore <https://www.trinitycore.org/> + * + * 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 + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +// This is where scripts' loading functions should be declared: +void AddSC_orderhall_warrior(); + +// The name of this function should match: +// void Add${NameOfDirectory}Scripts() +void AddBrokenIslesScripts() +{ + AddSC_orderhall_warrior(); +} diff --git a/src/server/scripts/BrokenIsles/zone_orderhall_warrior.cpp b/src/server/scripts/BrokenIsles/zone_orderhall_warrior.cpp new file mode 100644 index 00000000000..5cc65e64437 --- /dev/null +++ b/src/server/scripts/BrokenIsles/zone_orderhall_warrior.cpp @@ -0,0 +1,924 @@ +/* + * Copyright (C) 2008-2019 TrinityCore <https://www.trinitycore.org/> + * + * 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 + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "MotionMaster.h" +#include "MovementTypedefs.h" +#include "ObjectAccessor.h" +#include "PhasingHandler.h" +#include "Player.h" +#include "ScriptedCreature.h" +#include "ScriptMgr.h" +#include "TemporarySummon.h" + +enum ValarjarSpells +{ + SPELL_EMOTE_BELCH = 65937, + SPELL_WARRIOR_ORDER_FORMATION_SCENE = 193709, + SPELL_CANCEL_COMPLETE_SCENE_WARRIOR_ORDER_FORMATION = 193711 +}; + +enum Phases +{ + PHASE_ODYN = 5107, + PHASE_DANICA = 5090 +}; + +enum Quests +{ + QUEST_ODYN_AND_THE_VALARJAR = 39654 +}; + +enum Creatures +{ + NPC_KILL_CREDIT_FOLLOWED_DANICA = 103036, + NPC_DANICA_THE_RECLAIMER = 93823, + NPC_KILL_CREDIT_ARRIVED_AT_ODYN = 96532 +}; + +enum Items +{ + ITEM_MONSTER_ITEM_MUTTON_WITH_BITE = 2202, + ITEM_MONSTER_ITEM_TANKARD_WOODEN = 2703, + ITEM_HOV_2H_AXE = 137176, + ITEM_HOV_1H_SWORD = 137263, + ITEM_HOV_SHIELD_2 = 137265 +}; + +struct npc_danica_the_reclaimer : public ScriptedAI +{ + npc_danica_the_reclaimer(Creature* creature) : ScriptedAI(creature) { } + + Position const DanicaPath01[6] = + { + { 1050.219f, 7232.470f, 100.5846f }, + { 1046.207f, 7240.372f, 100.5846f }, + { 1040.963f, 7245.498f, 100.6819f }, + { 1034.726f, 7250.083f, 100.5846f }, + { 1027.422f, 7257.835f, 100.5846f }, + { 1027.542f, 7259.735f, 100.5846f } + }; + + using DanicaPath01Size = std::extent<decltype(DanicaPath01)>; + + Position const DanicaPath02[6] = + { + { 1018.493f, 7247.438f, 100.5846f }, + { 1013.535f, 7243.327f, 100.5846f }, + { 1007.063f, 7235.723f, 100.5846f }, + { 1003.337f, 7229.650f, 100.5846f }, + { 995.4549f, 7227.286f, 100.5846f }, + { 984.4410f, 7224.357f, 100.5846f } + }; + + using DanicaPath02Size = std::extent<decltype(DanicaPath02)>; + + Position const DanicaPath03[5] = + { + { 962.5208f, 7223.089f, 100.5846f }, + { 934.2795f, 7223.116f, 100.5846f }, + { 911.8507f, 7223.776f, 100.5846f }, + { 879.0139f, 7224.100f, 100.9079f }, + { 851.691f, 7224.5490f, 109.5846f } + }; + + using DanicaPath03Size = std::extent<decltype(DanicaPath03)>; + + enum Texts + { + SAY_FIRST_LINE = 1, + SAY_SECOND_LINE = 2, + SAY_THIRD_LINE = 3 + }; + + enum Points + { + POINT_FORGE_OF_ODYN, + POINT_INTRODUCE_MEAD_HALL, + POINT_ODYN + }; + + // Should be the player + // Personal spawn ? Demon Creator is the player who accepts the quest, no phasing involved but the quest giver dissapears and gets replaced with a new one + void IsSummonedBy(Unit* summoner) override + { + if (summoner->GetTypeId() != TYPEID_PLAYER) + return; + + me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); + _summonerGuid = summoner->GetGUID(); + _scheduler.Schedule(2s, [this, summoner](TaskContext /*context*/) + { + me->GetMotionMaster()->MoveSmoothPath(POINT_FORGE_OF_ODYN, DanicaPath01, DanicaPath01Size::value, false, true); + Talk(SAY_FIRST_LINE, summoner); + }); + } + + void MovementInform(uint32 /*type*/, uint32 id) override + { + switch (id) + { + case POINT_FORGE_OF_ODYN: + _scheduler.Schedule(10s, [this](TaskContext /*context*/) + { + Player* player = ObjectAccessor::FindConnectedPlayer(_summonerGuid); + me->GetMotionMaster()->MoveSmoothPath(POINT_INTRODUCE_MEAD_HALL, DanicaPath02, DanicaPath02Size::value, false, true); + Talk(SAY_SECOND_LINE, player); + }); + break; + case POINT_INTRODUCE_MEAD_HALL: + _scheduler.Schedule(10s, [this](TaskContext /*context*/) + { + Player* player = ObjectAccessor::FindConnectedPlayer(_summonerGuid); + me->GetMotionMaster()->MoveSmoothPath(POINT_ODYN, DanicaPath03, DanicaPath03Size::value, false, true); + Talk(SAY_THIRD_LINE, player); + + if (player) + player->KilledMonsterCredit(NPC_KILL_CREDIT_FOLLOWED_DANICA); + }); + break; + case POINT_ODYN: + me->DespawnOrUnsummon(); + break; + default: + break; + } + } + + void UpdateAI(uint32 diff) override + { + _scheduler.Update(diff); + } + + // Should be some other way to do this... + void sQuestAccept(Player* player, Quest const* /*quest*/) override + { + TempSummon* summon = player->SummonCreature(NPC_DANICA_THE_RECLAIMER, 1059.613f, 7224.605f, 100.4608f, 0.03462749f, TEMPSUMMON_MANUAL_DESPAWN, 0, true); + if (!summon) + return; + + summon->SetDemonCreatorGUID(player->GetGUID()); + } + +private: + TaskScheduler _scheduler; + ObjectGuid _summonerGuid; +}; + +struct npc_feasting_valarjar : public ScriptedAI +{ + npc_feasting_valarjar(Creature* creature) : ScriptedAI(creature), + _randomEmotes({ EMOTE_ONESHOT_EAT_NO_SHEATHE, EMOTE_ONESHOT_LAUGH_NO_SHEATHE, EMOTE_ONESHOT_ROAR, EMOTE_ONESHOT_LAUGH, EMOTE_ONESHOT_POINT, + EMOTE_ONESHOT_TALK, EMOTE_ONESHOT_CHEER_NO_SHEATHE }) { } + + enum Points + { + POINT_LEAVING + }; + + void UpdateAI(uint32 diff) override + { + _scheduler.Update(diff); + } + + void Reset() override + { + _scheduler.Schedule(5s, 30s, [this](TaskContext context) + { + uint32 emoteID = Trinity::Containers::SelectRandomContainerElement(_randomEmotes); + if (emoteID == EMOTE_ONESHOT_EAT_NO_SHEATHE) + { + me->SetVirtualItem(0, urand(0, 1) ? ITEM_MONSTER_ITEM_MUTTON_WITH_BITE : ITEM_MONSTER_ITEM_TANKARD_WOODEN); + _scheduler.Schedule(1s, [this](TaskContext /*context*/) + { + me->SetVirtualItem(0, 0); + if (roll_chance_i(85)) + DoCastSelf(SPELL_EMOTE_BELCH); + }); + } + + me->HandleEmoteCommand(emoteID); + context.Repeat(); + }); + + _scheduler.Schedule(5min, 20min, [this](TaskContext /*context*/) + { + float direction = me->GetOrientation() + M_PI; + me->GetMotionMaster()->MovePoint(POINT_LEAVING, me->GetFirstCollisionPosition(5.0f, direction)); + }); + } + + void MovementInform(uint32 /*type*/, uint32 id) override + { + switch (id) + { + case POINT_LEAVING: + me->DespawnOrUnsummon(); + break; + default: + break; + } + } + +private: + TaskScheduler _scheduler; + std::unordered_set<uint32> _randomEmotes; +}; + +struct npc_valarjar_paying_respect_to_odyn : ScriptedAI +{ + npc_valarjar_paying_respect_to_odyn(Creature* creature) : ScriptedAI(creature), + _randomEmotes({ EMOTE_ONESHOT_POINT, EMOTE_ONESHOT_TALK, EMOTE_ONESHOT_NO }) { } + + enum Points + { + POINT_TABLE, + POINT_ODYN, + POINT_DESPAWN + }; + + virtual size_t GetPathToTableSize() const = 0; + virtual Position const* GetPathToTable() const = 0; + virtual size_t GetPathToOdynSize() const = 0; + virtual Position const* GetPathToOdyn() const = 0; + virtual size_t GetPathToDespawnPointSize() const = 0; + virtual Position const* GetPathToDespawnPoint() const = 0; + + void Reset() override + { + me->GetMotionMaster()->MoveSmoothPath(POINT_TABLE, GetPathToTable(), GetPathToTableSize(), true); + } + + void UpdateAI(uint32 diff) override + { + _scheduler.Update(diff); + } + + void MovementInform(uint32 /*type*/, uint32 id) override + { + switch (id) + { + case POINT_TABLE: + _scheduler.Schedule(3s, 6s, [this](TaskContext /*context*/) + { + me->HandleEmoteCommand(Trinity::Containers::SelectRandomContainerElement(_randomEmotes)); + }); + + _scheduler.Schedule(7s, 15s, [this](TaskContext /*context*/) + { + me->GetMotionMaster()->MoveSmoothPath(POINT_ODYN, GetPathToOdyn(), GetPathToOdynSize(), true); + }); + break; + case POINT_ODYN: + _scheduler.Schedule(1s, 3s, [this](TaskContext /*context*/) + { + me->PlayOneShotAnimKitId(1431); + _scheduler.Schedule(3s, 10s, [this](TaskContext /*context*/) + { + me->GetMotionMaster()->MoveSmoothPath(POINT_DESPAWN, GetPathToDespawnPoint(), GetPathToDespawnPointSize()); + }); + }); + break; + case POINT_DESPAWN: + me->DespawnOrUnsummon(2s); + break; + default: + break; + } + } + +private: + TaskScheduler _scheduler; + std::unordered_set<uint32> _randomEmotes; +}; + +struct npc_incoming_valarjar_aspirant_1 : public npc_valarjar_paying_respect_to_odyn +{ + npc_incoming_valarjar_aspirant_1(Creature* creature) : npc_valarjar_paying_respect_to_odyn(creature) { } + + Position const IncommingValarjarAspirantPath01[11] = + { + { 876.7396f, 7220.805f, 98.91662f }, + { 870.6129f, 7220.945f, 101.8951f }, + { 865.0677f, 7220.975f, 103.7846f }, + { 854.6389f, 7221.030f, 106.7846f }, + { 851.1597f, 7220.292f, 106.7846f }, + { 848.0573f, 7216.386f, 106.7846f }, + { 844.7570f, 7210.920f, 106.7846f }, + { 841.9844f, 7207.228f, 106.7846f }, + { 839.2396f, 7203.619f, 107.5846f }, + { 836.4844f, 7200.202f, 107.5846f }, + { 834.2430f, 7196.000f, 107.5846f } + }; + + using IncommingValarjarAspirantPath01Size = std::extent<decltype(IncommingValarjarAspirantPath01)>; + + Position const IncommingValarjarAspirantPath02[5] = + { + { 828.5851f, 7204.096f, 106.7846f }, + { 819.4636f, 7212.124f, 106.7846f }, + { 814.2853f, 7215.074f, 106.7846f }, + { 809.4948f, 7217.543f, 106.7846f }, + { 806.0313f, 7219.614f, 106.7846f } + }; + + using IncommingValarjarAspirantPath02Size = std::extent<decltype(IncommingValarjarAspirantPath02)>; + + Position const IncommingValarjarAspirantPath03[9] = + { + { 824.1597f, 7221.822f, 106.7846f }, + { 831.7500f, 7221.092f, 106.7846f }, + { 842.4236f, 7222.208f, 106.7846f }, + { 853.5781f, 7222.473f, 106.7846f }, + { 863.9618f, 7223.012f, 103.7846f }, + { 867.9358f, 7223.165f, 103.3735f }, + { 880.6215f, 7222.569f, 97.78457f }, + { 887.8438f, 7221.310f, 97.78457f }, + { 903.7118f, 7215.743f, 97.78458f } + }; + + using IncommingValarjarAspirantPath03Size = std::extent<decltype(IncommingValarjarAspirantPath03)>; + + size_t GetPathToTableSize() const override { return IncommingValarjarAspirantPath01Size::value; } + Position const* GetPathToTable() const override { return IncommingValarjarAspirantPath01; } + size_t GetPathToOdynSize() const override { return IncommingValarjarAspirantPath02Size::value; } + Position const* GetPathToOdyn() const override { return IncommingValarjarAspirantPath02; } + size_t GetPathToDespawnPointSize() const override { return IncommingValarjarAspirantPath03Size::value; } + Position const* GetPathToDespawnPoint() const override { return IncommingValarjarAspirantPath03; } +}; + +struct npc_incoming_valarjar_aspirant_2 : public npc_valarjar_paying_respect_to_odyn +{ + npc_incoming_valarjar_aspirant_2(Creature* creature) : npc_valarjar_paying_respect_to_odyn(creature) { } + + Position const IncommingValarjarAspirantPath01[12] = + { + { 890.5521f, 7235.710f, 97.78457f }, + { 883.8073f, 7233.402f, 97.78457f }, + { 872.1979f, 7234.018f, 101.2886f }, + { 863.5941f, 7234.594f, 103.7846f }, + { 855.2899f, 7235.626f, 106.7593f }, + { 849.8177f, 7236.571f, 106.7846f }, + { 845.7830f, 7241.082f, 106.7846f }, + { 841.8489f, 7246.654f, 106.7846f }, + { 839.7205f, 7250.986f, 106.7846f }, + { 840.8889f, 7254.773f, 107.5846f }, + { 841.9254f, 7259.517f, 107.5846f }, + { 840.6077f, 7266.662f, 107.5846f } + }; + + using IncommingValarjarAspirantPath01Size = std::extent<decltype(IncommingValarjarAspirantPath01)>; + + Position const IncommingValarjarAspirantPath02[6] = + { + { 838.1493f, 7260.027f, 107.5846f }, + { 832.2691f, 7253.756f, 106.7846f }, + { 823.1996f, 7246.677f, 106.7846f }, + { 821.2500f, 7244.573f, 106.7846f }, + { 815.8906f, 7241.437f, 106.7846f }, + { 809.8281f, 7239.580f, 106.7846f } + }; + + using IncommingValarjarAspirantPath02Size = std::extent<decltype(IncommingValarjarAspirantPath02)>; + + Position const IncommingValarjarAspirantPath03[10] = + { + { 827.4757f, 7236.593f, 106.7846f }, + { 837.1840f, 7236.047f, 106.7846f }, + { 847.1684f, 7235.377f, 106.7846f }, + { 854.7185f, 7235.294f, 106.7846f }, + { 862.3524f, 7234.287f, 104.4290f }, + { 882.3489f, 7233.743f, 97.78457f }, + { 894.3768f, 7233.098f, 97.78457f }, + { 906.0660f, 7232.520f, 97.78458f }, + { 915.0070f, 7233.368f, 97.78458f }, + { 924.6910f, 7233.694f, 97.78458f } + }; + + using IncommingValarjarAspirantPath03Size = std::extent<decltype(IncommingValarjarAspirantPath03)>; + + size_t GetPathToTableSize() const override { return IncommingValarjarAspirantPath01Size::value; } + Position const* GetPathToTable() const override { return IncommingValarjarAspirantPath01; } + size_t GetPathToOdynSize() const override { return IncommingValarjarAspirantPath02Size::value; } + Position const* GetPathToOdyn() const override { return IncommingValarjarAspirantPath02; } + size_t GetPathToDespawnPointSize() const override { return IncommingValarjarAspirantPath03Size::value; } + Position const* GetPathToDespawnPoint() const override { return IncommingValarjarAspirantPath03; } +}; + +struct npc_leaving_valarjar_1 : public npc_valarjar_paying_respect_to_odyn +{ + npc_leaving_valarjar_1(Creature* creature) : npc_valarjar_paying_respect_to_odyn(creature) { } + + Position const PathLeavingValarjar01[8] = + { + { 802.5903f, 7304.605f, 106.7846f }, + { 809.3333f, 7296.529f, 106.7846f }, + { 811.8004f, 7293.676f, 106.7846f }, + { 817.4219f, 7287.498f, 106.7846f }, + { 821.0313f, 7283.637f, 106.7846f }, + { 822.1111f, 7275.672f, 106.7846f }, + { 826.4662f, 7270.601f, 107.5846f }, + { 830.8212f, 7268.729f, 107.5846f } + }; + + using PathLeavingValarjar01Size = std::extent<decltype(PathLeavingValarjar01)>; + + Position const PathLeavingValarjar02[6] = + { + { 824.9757f, 7261.047f, 107.5846f }, + { 822.0989f, 7256.705f, 106.7846f }, + { 819.0261f, 7253.674f, 106.7846f }, + { 813.1910f, 7249.034f, 106.7846f }, + { 809.1493f, 7245.616f, 106.7846f }, + { 806.3559f, 7243.057f, 106.7846f } + }; + + using PathLeavingValarjar02Size = std::extent<decltype(PathLeavingValarjar02)>; + + Position const PathLeavingValarjar03[10] = + { + { 825.3177f, 7244.253f, 106.7846f }, + { 837.5816f, 7243.241f, 106.7846f }, + { 845.0243f, 7240.063f, 106.7846f }, + { 853.7274f, 7238.423f, 106.7953f }, + { 862.9948f, 7238.000f, 103.9737f }, + { 872.7899f, 7236.939f, 100.8285f }, + { 882.8333f, 7235.922f, 97.78457f }, + { 897.2813f, 7235.469f, 97.78457f }, + { 908.8090f, 7234.836f, 97.78458f }, + { 919.8750f, 7238.241f, 97.78458f } + }; + + using PathLeavingValarjar03Size = std::extent<decltype(PathLeavingValarjar03)>; + + size_t GetPathToTableSize() const override { return PathLeavingValarjar01Size::value; } + Position const* GetPathToTable() const override { return PathLeavingValarjar01; } + size_t GetPathToOdynSize() const override { return PathLeavingValarjar02Size::value; } + Position const* GetPathToOdyn() const override { return PathLeavingValarjar02; } + size_t GetPathToDespawnPointSize() const override { return PathLeavingValarjar03Size::value; } + Position const* GetPathToDespawnPoint() const override { return PathLeavingValarjar03; } +}; + +struct npc_leaving_valarjar_2 : public npc_valarjar_paying_respect_to_odyn +{ + npc_leaving_valarjar_2(Creature* creature) : npc_valarjar_paying_respect_to_odyn(creature) { } + + Position const PathLeavingValarjar01[7] = + { + { 787.2361f, 7155.902f, 107.5846f }, + { 792.4844f, 7154.038f, 106.7846f }, + { 798.7830f, 7154.968f, 106.7846f }, + { 807.8160f, 7162.251f, 106.7846f }, + { 813.2882f, 7167.856f, 106.7846f }, + { 816.4913f, 7170.818f, 106.7846f }, + { 819.8299f, 7166.373f, 107.6281f } + }; + + using PathLeavingValarjar01Size = std::extent<decltype(PathLeavingValarjar01)>; + + Position const PathLeavingValarjar02[7] = + { + { 818.2708f, 7175.469f, 106.7846f }, + { 819.5643f, 7185.691f, 106.7846f }, + { 818.4184f, 7193.082f, 106.7846f }, + { 818.8750f, 7199.256f, 106.7846f }, + { 815.2361f, 7203.648f, 106.7846f }, + { 809.6198f, 7208.319f, 106.7846f }, + { 804.2743f, 7215.379f, 106.7846f } + }; + + using PathLeavingValarjar02Size = std::extent<decltype(PathLeavingValarjar02)>; + + Position const PathLeavingValarjar03[6] = + { + { 810.8403f, 7231.531f, 106.7846f }, + { 807.5087f, 7248.719f, 106.7846f }, + { 801.2587f, 7254.592f, 106.7846f }, + { 794.6649f, 7265.814f, 107.5846f }, + { 792.0191f, 7274.151f, 107.5846f }, + { 790.1823f, 7282.182f, 107.5846f } + }; + + using PathLeavingValarjar03Size = std::extent<decltype(PathLeavingValarjar03)>; + + size_t GetPathToTableSize() const override { return PathLeavingValarjar01Size::value; } + Position const* GetPathToTable() const override { return PathLeavingValarjar01; } + size_t GetPathToOdynSize() const override { return PathLeavingValarjar02Size::value; } + Position const* GetPathToOdyn() const override { return PathLeavingValarjar02; } + size_t GetPathToDespawnPointSize() const override { return PathLeavingValarjar03Size::value; } + Position const* GetPathToDespawnPoint() const override { return PathLeavingValarjar03; } +}; + +struct npc_odyn : public ScriptedAI +{ + npc_odyn(Creature* creature) : ScriptedAI(creature) { } + + // Should be an better way of doing this... + // What about a QuestScript with a hook "OnPlayerChangeArea" ? But The Great Mead Hall does not have a specific area... + void MoveInLineOfSight(Unit* who) override + { + if (Player* player = who->ToPlayer()) + { + if (player->GetQuestStatus(QUEST_ODYN_AND_THE_VALARJAR) == QUEST_STATUS_INCOMPLETE) + { + if (player->IsInDist(me, 60.0f)) + { + player->KilledMonsterCredit(NPC_KILL_CREDIT_ARRIVED_AT_ODYN); // SPELL_WARRIOR_ORDER_FORMATION_SCENE does not has this credit. + player->CastSpell(player, SPELL_WARRIOR_ORDER_FORMATION_SCENE); + } + } + } + } +}; + +struct npc_spectating_valarjar : public ScriptedAI +{ + npc_spectating_valarjar(Creature* creature) : ScriptedAI(creature), + _randomEmotes({ EMOTE_ONESHOT_CHEER_NO_SHEATHE, EMOTE_ONESHOT_SALUTE, EMOTE_ONESHOT_ROAR, EMOTE_ONESHOT_POINT, EMOTE_ONESHOT_SHOUT }) { } + + void UpdateAI(uint32 diff) override + { + _scheduler.Update(diff); + } + + void Reset() override + { + _scheduler.Schedule(5s, 30s, [this](TaskContext context) + { + me->HandleEmoteCommand(Trinity::Containers::SelectRandomContainerElement(_randomEmotes)); + context.Repeat(); + }); + + _scheduler.Schedule(5min, 20min, [this](TaskContext /*context*/) + { + float direction = me->GetOrientation() + M_PI; + me->GetMotionMaster()->MovePoint(0, me->GetFirstCollisionPosition(5.0f, direction)); + }); + } + + void MovementInform(uint32 /*type*/, uint32 id) override + { + switch (id) + { + case 0: + me->DespawnOrUnsummon(); + break; + default: + break; + } + } + +private: + TaskScheduler _scheduler; + std::unordered_set<uint32> _randomEmotes; +}; + +struct npc_valkyr_of_odyn : public ScriptedAI +{ + npc_valkyr_of_odyn(Creature* creature) : ScriptedAI(creature) { } + + virtual Position const* GetPath() const = 0; + virtual size_t GetPathSize() const = 0; + + enum Points + { + POINT_DESPAWN = 1, + POINT_JUMP, + POINT_DESPAWN_JUMP + }; + + void Reset() override + { + if (me->GetPositionZ() >= 100.0f) + { + _scheduler.Schedule(3s, [this](TaskContext /*context*/) + { + me->GetMotionMaster()->MoveSmoothPath(POINT_JUMP, GetPath(), GetPathSize(), false, true); + }); + } + else + me->GetMotionMaster()->MoveSmoothPath(POINT_DESPAWN, GetPath(), GetPathSize(), false, true); + } + + void UpdateAI(uint32 diff) override + { + _scheduler.Update(diff); + } + + void MovementInform(uint32 /*type*/, uint32 id) override + { + switch (id) + { + case POINT_JUMP: + _scheduler.Schedule(250ms, [this](TaskContext /*context*/) + { + /* + * (MovementMonsterSpline) (MovementSpline) MoveTime: 3111 + * (MovementMonsterSpline) (MovementSpline) JumpGravity: 19.2911 -> +-Movement::gravity + * 1.4125f is guessed value. Which makes the JumpGravity way closer to the intended one. Not sure how to do it 100% blizzlike. + * Also the MoveTime is not correct but I don't know how to set it here. + */ + me->GetMotionMaster()->MoveJump({ 1107.84f, 7222.57f, 38.9725f, me->GetOrientation() }, me->GetSpeed(MOVE_RUN), Movement::gravity * 1.4125f, POINT_DESPAWN_JUMP); + }); + break; + case POINT_DESPAWN: + me->DespawnOrUnsummon(500ms); + break; + case POINT_DESPAWN_JUMP: + me->DespawnOrUnsummon(); + break; + default: + break; + } + } + +private: + TaskScheduler _scheduler; +}; + +struct npc_valkyr_of_odyn_1 : public npc_valkyr_of_odyn +{ + npc_valkyr_of_odyn_1(Creature* creature) : npc_valkyr_of_odyn(creature) { } + + Position const Path[7] = + { + { 996.5347f, 7321.393f, 124.0931f }, + { 1009.880f, 7311.655f, 118.0898f }, + { 1024.688f, 7293.689f, 120.4009f }, + { 1038.288f, 7266.321f, 122.2708f }, + { 1049.439f, 7235.418f, 120.1065f }, + { 1067.825f, 7229.589f, 114.6320f }, + { 1082.800f, 7223.660f, 98.63562f } + }; + + using PathSize = std::extent<decltype(Path)>; + + Position const* GetPath() const override { return Path; } + size_t GetPathSize() const override { return PathSize::value; } +}; + +struct npc_valkyr_of_odyn_2 : public npc_valkyr_of_odyn +{ + npc_valkyr_of_odyn_2(Creature* creature) : npc_valkyr_of_odyn(creature) { } + + Position const Path[18] = + { + { 1113.635f, 7214.023f, 7.808200f }, + { 1110.443f, 7213.999f, 17.28479f }, + { 1108.583f, 7213.984f, 22.80371f }, + { 1103.488f, 7221.702f, 70.68047f }, + { 1101.911f, 7222.535f, 82.51234f }, + { 1098.861f, 7222.271f, 90.03111f }, + { 1095.129f, 7223.033f, 94.15130f }, + { 1089.240f, 7223.335f, 97.94925f }, + { 1077.932f, 7222.822f, 110.2143f }, + { 1068.802f, 7223.216f, 110.2143f }, + { 1045.356f, 7224.674f, 114.5371f }, + { 1023.946f, 7224.304f, 120.0150f }, + { 1002.535f, 7224.943f, 121.1011f }, + { 911.7552f, 7227.165f, 121.7384f }, + { 879.1285f, 7227.272f, 121.7384f }, + { 830.8785f, 7233.613f, 121.7384f }, + { 809.5052f, 7267.270f, 121.7384f }, + { 795.2899f, 7311.849f, 121.7384f } + }; + + using PathSize = std::extent<decltype(Path)>; + + Position const* GetPath() const override { return Path; } + size_t GetPathSize() const override { return PathSize::value; } +}; + +struct npc_valkyr_of_odyn_3 : public npc_valkyr_of_odyn +{ + npc_valkyr_of_odyn_3(Creature* creature) : npc_valkyr_of_odyn(creature) { } + + Position const Path[14] = + { + { 1133.929f, 7223.167f, 38.90330f }, + { 1124.510f, 7222.310f, 42.15336f }, + { 1119.903f, 7221.891f, 43.74335f }, + { 1103.934f, 7227.212f, 69.99904f }, + { 1097.554f, 7226.132f, 89.09371f }, + { 1092.602f, 7224.059f, 101.1545f }, + { 1078.701f, 7228.348f, 109.5599f }, + { 1068.967f, 7232.247f, 116.7876f }, + { 1053.540f, 7229.623f, 117.8927f }, + { 1044.104f, 7242.757f, 118.7891f }, + { 1031.111f, 7256.717f, 118.7891f }, + { 1029.684f, 7288.019f, 126.3048f }, + { 1029.889f, 7325.333f, 126.3061f }, + { 1039.043f, 7365.176f, 133.2310f } + }; + + using PathSize = std::extent<decltype(Path)>; + + Position const* GetPath() const override { return Path; } + size_t GetPathSize() const override { return PathSize::value; } +}; + +struct npc_valkyr_of_odyn_4 : public npc_valkyr_of_odyn +{ + npc_valkyr_of_odyn_4(Creature* creature) : npc_valkyr_of_odyn(creature) { } + + Position const Path[7] = + { + { 914.8663f, 7204.922f, 128.1687f }, + { 945.4445f, 7216.170f, 128.1687f }, + { 987.2483f, 7220.554f, 125.4318f }, + { 1015.882f, 7222.849f, 126.0546f }, + { 1053.023f, 7224.076f, 119.6729f }, + { 1071.891f, 7222.934f, 108.9545f }, + { 1081.530f, 7224.331f, 98.63076f } + }; + + using PathSize = std::extent<decltype(Path)>; + + Position const* GetPath() const override { return Path; } + size_t GetPathSize() const override { return PathSize::value; } +}; + +struct npc_valkyr_of_odyn_5 : public npc_valkyr_of_odyn +{ + npc_valkyr_of_odyn_5(Creature* creature) : npc_valkyr_of_odyn(creature) { } + + Position const Path[12] = + { + { 1038.141f, 7134.033f, 105.8965f }, + { 1033.373f, 7134.492f, 105.8965f }, + { 1027.882f, 7136.373f, 105.8965f }, + { 1026.943f, 7144.288f, 105.8965f }, + { 1027.608f, 7167.030f, 108.4167f }, + { 1027.767f, 7180.922f, 108.4167f }, + { 1028.484f, 7197.977f, 108.4167f }, + { 1034.113f, 7207.747f, 108.4167f }, + { 1041.977f, 7216.452f, 108.4167f }, + { 1054.269f, 7223.207f, 108.4167f }, + { 1075.891f, 7224.811f, 101.7954f }, + { 1082.438f, 7224.540f, 99.12900f } + }; + + using PathSize = std::extent<decltype(Path)>; + + Position const* GetPath() const override { return Path; } + size_t GetPathSize() const override { return PathSize::value; } +}; + +struct npc_valkyr_of_odyn_6 : public npc_valkyr_of_odyn +{ + npc_valkyr_of_odyn_6(Creature* creature) : npc_valkyr_of_odyn(creature) { } + + Position const Path[17] = + { + { 1112.011f, 7233.799f, 45.87240f }, + { 1107.887f, 7234.073f, 54.97818f }, + { 1106.264f, 7234.181f, 58.56218f }, + { 1099.969f, 7236.397f, 75.87664f }, + { 1096.552f, 7233.196f, 85.53920f }, + { 1095.531f, 7229.387f, 89.86687f }, + { 1092.981f, 7225.366f, 97.69602f }, + { 1082.800f, 7221.249f, 109.4660f }, + { 1070.983f, 7218.749f, 112.6827f }, + { 1057.455f, 7216.709f, 112.6827f }, + { 1051.859f, 7210.338f, 112.6827f }, + { 1042.427f, 7200.762f, 112.6827f }, + { 1032.616f, 7183.982f, 112.6827f }, + { 1027.792f, 7157.764f, 112.6827f }, + { 1026.870f, 7126.981f, 112.6827f }, + { 1053.083f, 7102.808f, 125.9283f }, + { 1055.122f, 7059.807f, 130.4395f } + }; + + using PathSize = std::extent<decltype(Path)>; + + Position const* GetPath() const override { return Path; } + size_t GetPathSize() const override { return PathSize::value; } +}; + +struct npc_valkyr_of_odyn_7 : public npc_valkyr_of_odyn +{ + npc_valkyr_of_odyn_7(Creature* creature) : npc_valkyr_of_odyn(creature) { } + + Position const Path[10] = + { + { 1064.076f, 7305.979f, 117.5428f }, + { 1058.290f, 7305.543f, 117.5428f }, + { 1046.578f, 7305.583f, 117.5428f }, + { 1034.373f, 7295.979f, 117.5428f }, + { 1026.639f, 7275.582f, 114.1900f }, + { 1030.729f, 7251.381f, 114.1900f }, + { 1040.950f, 7237.213f, 114.1900f }, + { 1057.274f, 7229.228f, 114.1900f }, + { 1070.297f, 7226.421f, 111.7502f }, + { 1082.146f, 7225.846f, 101.0798f } + }; + + using PathSize = std::extent<decltype(Path)>; + + Position const* GetPath() const override { return Path; } + size_t GetPathSize() const override { return PathSize::value; } +}; + +struct npc_weapon_inspector_valarjar : public ScriptedAI +{ + npc_weapon_inspector_valarjar(Creature* creature) : ScriptedAI(creature), + _randomWeapons({ { ITEM_HOV_2H_AXE, 0 }, { ITEM_HOV_1H_SWORD, ITEM_HOV_SHIELD_2 } }) { } + + void UpdateAI(uint32 diff) override + { + _scheduler.Update(diff); + } + + void Reset() override + { + _scheduler.Schedule(15s, 20s, [this](TaskContext context) + { + me->SetAIAnimKitId(0); + std::pair<uint32, uint32> weapons = Trinity::Containers::SelectRandomContainerElement(_randomWeapons); + me->SetVirtualItem(0, weapons.first); + me->SetVirtualItem(1, weapons.second); + + context.Schedule(8s, 10s, [this](TaskContext context) + { + me->SetVirtualItem(0, 0); + me->SetVirtualItem(1, 0); + context.Schedule(10s, [this](TaskContext /*context*/) + { + me->SetAIAnimKitId(1583); + }); + }); + + context.Repeat(30s); + }); + } + +private: + TaskScheduler _scheduler; + std::unordered_set<std::pair<uint32, uint32>> _randomWeapons; +}; + +class scene_odyn_intro : public SceneScript +{ +public: + scene_odyn_intro() : SceneScript("scene_odyn_intro") { } + + void OnSceneStart(Player* player, uint32 /*sceneInstanceID*/, SceneTemplate const* /*sceneTemplate*/) override + { + PhasingHandler::RemovePhase(player, PHASE_DANICA, false); + PhasingHandler::RemovePhase(player, PHASE_ODYN, true); + player->SetControlled(true, UNIT_STATE_ROOT); + } + + // Called when a scene is canceled + void OnSceneCancel(Player* player, uint32 /*sceneInstanceID*/, SceneTemplate const* /*sceneTemplate*/) override + { + Finish(player); + } + + // Called when a scene is completed + void OnSceneComplete(Player* player, uint32 /*sceneInstanceID*/, SceneTemplate const* /*sceneTemplate*/) override + { + Finish(player); + } + + void Finish(Player* player) + { + PhasingHandler::AddPhase(player, PHASE_ODYN, true); + player->SetControlled(false, UNIT_STATE_ROOT); + player->CastSpell(player, SPELL_CANCEL_COMPLETE_SCENE_WARRIOR_ORDER_FORMATION); + } +}; + +void AddSC_orderhall_warrior() +{ + RegisterCreatureAI(npc_danica_the_reclaimer); + RegisterCreatureAI(npc_feasting_valarjar); + RegisterCreatureAI(npc_incoming_valarjar_aspirant_1); + RegisterCreatureAI(npc_incoming_valarjar_aspirant_2); + RegisterCreatureAI(npc_leaving_valarjar_1); + RegisterCreatureAI(npc_leaving_valarjar_2); + RegisterCreatureAI(npc_odyn); + RegisterCreatureAI(npc_spectating_valarjar); + RegisterCreatureAI(npc_valkyr_of_odyn_1); + RegisterCreatureAI(npc_valkyr_of_odyn_2); + RegisterCreatureAI(npc_valkyr_of_odyn_3); + RegisterCreatureAI(npc_valkyr_of_odyn_4); + RegisterCreatureAI(npc_valkyr_of_odyn_5); + RegisterCreatureAI(npc_valkyr_of_odyn_6); + RegisterCreatureAI(npc_valkyr_of_odyn_7); + RegisterCreatureAI(npc_weapon_inspector_valarjar); + new scene_odyn_intro(); +} |