Compare commits
5
Commits
e1302366f3
...
787e1b27c0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
787e1b27c0 | ||
|
|
ae0954cdf8 | ||
|
|
28573387b9 | ||
|
|
1e6f5d4e62 | ||
|
|
a99e5a6e57 |
@@ -0,0 +1,740 @@
|
||||
-- =================================================================================
|
||||
-- Lightforged Draenei Starting Zone (Map 1860 - AreaID/ZoneID 9359 - The Vindicaar)
|
||||
-- =================================================================================
|
||||
|
||||
-- =======================
|
||||
-- Misc: Zone Calibrations
|
||||
-- =======================
|
||||
DELETE FROM `phase_area` WHERE `AreaId`=9359;
|
||||
UPDATE `creature` SET `phaseUseFlags`=0, `PhaseId`=0, `spawntimesecs`=180, `wander_distance`=0, `MovementType`=0 WHERE `map`=1860;
|
||||
UPDATE `gameobject` SET `spawntimesecs`=180 WHERE `map`=1860;
|
||||
|
||||
|
||||
|
||||
-- ============================
|
||||
-- Misc: Spell Area Calibration
|
||||
-- ============================
|
||||
DELETE FROM `spell_area` WHERE `area`=9359;
|
||||
INSERT INTO `spell_area` (`spell`, `area`, `quest_start`, `quest_end`, `aura_spell`, `teamId`, `racemask`, `gender`, `flags`, `quest_start_status`, `quest_end_status`, `comment`) VALUES
|
||||
(49416, 9359, 49772, 0, 0, -1, 536870912, 2, 3, 74, 64, 'Generic Quest Invisibility Detection 1 - Lightforged Draenei (The Vindicaar, The Vindicaar)');
|
||||
|
||||
DELETE FROM `spell_area` WHERE `area`=5150 AND `spell`=49417;
|
||||
INSERT INTO `spell_area` (`spell`, `area`, `quest_start`, `quest_end`, `aura_spell`, `teamId`, `racemask`, `gender`, `flags`, `quest_start_status`, `quest_end_status`, `comment`) VALUES
|
||||
(49417, 5150, 50313, 50313, 0, -1, 536870912, 2, 3, 10, 64, 'Generic Quest Invisibility Detection 2 - Lightforged Draenei (Dwarven District, Stormwind City)');
|
||||
|
||||
DELETE FROM `spell_area` WHERE `area`=9171 AND `spell` IN (49417,60922);
|
||||
INSERT INTO `spell_area` (`spell`, `area`, `quest_start`, `quest_end`, `aura_spell`, `teamId`, `racemask`, `gender`, `flags`, `quest_start_status`, `quest_end_status`, `comment`) VALUES
|
||||
(49417, 9171, 50313, 0, 0, -1, 536870912, 2, 3, 64, 64, 'Generic Quest Invisibility Detection 2 - Lightforged Draenei (Stormwind Embassy, Stormwind City)'),
|
||||
(60922, 9171, 49698, 50071, 0, -1, 0, 2, 3, 74, 64, 'Generic Quest Invisibility Detection 2 (Stormwind Embassy, Stormwind City)');
|
||||
|
||||
|
||||
|
||||
-- =========================================
|
||||
-- Quest For the Alliance (49772)
|
||||
-- Quest Heritage of the Lightforged (49782)
|
||||
-- =========================================
|
||||
UPDATE `quest_template_addon` SET `ScriptName`='SmartQuest' WHERE `ID`=49772;
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid`=49772 AND `source_type`=5;
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `Difficulties`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param_string`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `action_param7`, `action_param_string`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_param_string`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(49772, 5, 0, 0, '', 91, 0, 100, 0, 0, 0, 0, 0, 0, '', 62, 1860, 0, 0, 0, 0, 0, 0, NULL, 7, 0, 0, 0, 0, NULL, 457.285, 1449.185, 757.572, 0.408, 'Lightforged Draenei Quest - On Quest Abandoned - Teleport Player');
|
||||
|
||||
|
||||
-- NPC Captain Fareeya (130993)
|
||||
DELETE FROM `creature` WHERE `guid`=243563;
|
||||
UPDATE `creature_template_difficulty` SET `ContentTuningID`=293, `VerifiedBuild`=69587 WHERE `Entry`=130993;
|
||||
DELETE FROM `creature_text` WHERE `CreatureID`=130993;
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid`=130993 AND `source_type`=0;
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid`=13099300 AND `source_type`=9;
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `Difficulties`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param_string`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `action_param7`, `action_param_string`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_param_string`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(130993, 0, 0, 0, '', 19, 0, 100, 0, 49772, 0, 0, 0, 0, '', 143, 6481, 0, 0, 0, 0, 0, 0, NULL, 7, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 'Captain Fareeya - On Quest Taken - Run Conversation'),
|
||||
(130993, 0, 1, 0, '', 20, 0, 100, 0, 49782, 0, 0, 0, 0, '', 143, 20003, 0, 0, 0, 0, 0, 0, NULL, 7, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 'Captain Fareeya - On Quest Rewarded - Run Conversation');
|
||||
|
||||
|
||||
-- Conversation (20003)
|
||||
DELETE FROM `conversation_template` WHERE `Id`=20003;
|
||||
INSERT INTO `conversation_template` (`Id`, `FirstLineId`, `TextureKitId`, `Flags`, `ScriptName`, `VerifiedBuild`) VALUES
|
||||
(20003, 15593, 0, 0, '', 69587);
|
||||
|
||||
DELETE FROM `conversation_actors` WHERE `ConversationId`=20003;
|
||||
INSERT INTO `conversation_actors` (`ConversationId`, `ConversationActorId`, `ConversationActorGuid`, `ConversationActorNearId`, `Idx`, `CreatureId`, `CreatureDisplayInfoId`, `NoActorObject`, `ActivePlayerObject`, `VerifiedBuild`) VALUES
|
||||
(20003, 61703, 238180, 0, 0, 0, 0, 0, 0, 69587);
|
||||
|
||||
DELETE FROM `conversation_line_template` WHERE `Id` IN (15593,15594);
|
||||
INSERT INTO `conversation_line_template` (`Id`, `UiCameraID`, `ActorIdx`, `Flags`, `ChatType`, `VerifiedBuild`, `Unk`) VALUES
|
||||
(15593, 0, 0, 0, 0, 69587, 0),
|
||||
(15594, 0, 0, 0, 0, 69587, 0);
|
||||
|
||||
|
||||
-- GO Portal to Stormwind (278732)
|
||||
UPDATE `gameobject_template` SET `IconName`='questinteract' WHERE `entry`=278732;
|
||||
|
||||
DELETE FROM `gameobject_addon` WHERE `guid`=143827;
|
||||
INSERT INTO `gameobject_addon` (`guid`, `parent_rotation0`, `parent_rotation1`, `parent_rotation2`, `parent_rotation3`, `invisibilityType`, `invisibilityValue`, `WorldEffectID`, `AIAnimKitID`) VALUES
|
||||
(143827, 0, 0, 0, 1, 7, 1, 0, 0);
|
||||
|
||||
DELETE FROM `gameobject_template_locale` WHERE `entry` IN (278732);
|
||||
INSERT INTO `gameobject_template_locale` (`entry`, `locale`, `name`, `castBarCaption`, `unk1`, `VerifiedBuild`) VALUES
|
||||
(278732, 'deDE', 'Portal nach Sturmwind', '', NULL, 69587),
|
||||
(278732, 'esES', 'Portal a Ventormenta', '', NULL, 69587),
|
||||
(278732, 'esMX', 'Portal a Ventormenta', '', NULL, 69587),
|
||||
(278732, 'frFR', 'Portail vers Hurlevent', '', NULL, 69587),
|
||||
(278732, 'itIT', 'Portale per Roccavento', '', '', 69587),
|
||||
(278732, 'koKR', '스톰윈드로 통하는 차원문', '', NULL, 69587),
|
||||
(278732, 'ruRU', 'Портал в Штормград', '', NULL, 69587),
|
||||
(278732, 'zhCN', '通往暴风城的传送门', '', NULL, 69587),
|
||||
(278732, 'zhTW', '暴風城傳送門', '', NULL, 69587);
|
||||
|
||||
|
||||
|
||||
-- ========================================
|
||||
-- Quest Stranger in a Strange Land (50313)
|
||||
-- ========================================
|
||||
UPDATE `quest_poi_points` SET `X`=-8358, `Y`=622, `Z`=95 WHERE `QuestID`=50313 AND `Idx1`=0 AND `Idx2`=0;
|
||||
|
||||
|
||||
-- NPC Vindicator Minkey (131334)
|
||||
UPDATE `creature` SET `PhaseId`=0 WHERE `guid`=241642;
|
||||
UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=131334;
|
||||
UPDATE `creature_template_addon` SET `SheathState`=0 WHERE `entry`=131334;
|
||||
UPDATE `creature_template_difficulty` SET `ContentTuningID`=293, `VerifiedBuild`=69587 WHERE `Entry`=131334;
|
||||
UPDATE `creature_text` SET `comment`='Vindicator Minkey' WHERE `CreatureID`=131334;
|
||||
|
||||
DELETE FROM `creature_addon` WHERE `guid`=241642;
|
||||
INSERT INTO `creature_addon` (`guid`, `PathId`, `mount`, `MountCreatureID`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvPFlags`, `emote`, `aiAnimKit`, `movementAnimKit`, `meleeAnimKit`, `visibilityDistanceType`, `auras`) VALUES
|
||||
(241642, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '49415');
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid`=131334 AND `source_type`=0;
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid`=13133400 AND `source_type`=9;
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `Difficulties`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param_string`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `action_param7`, `action_param_string`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_param_string`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(131334, 0, 0, 0, '', 20, 0, 100, 0, 50313, 0, 0, 0, 0, '', 162, 131334, 8, 0, 0, 0, 0, 0, NULL, 7, 0, 0, 0, 0, NULL, -8340.16, 637.168, 95.5151, 3.3206, 'Vindicator Minkey - On Quest Rewarded - Summon Creature Vindicator Minkey in Personal Visibility'),
|
||||
(131334, 0, 1, 0, '', 54, 0, 100, 1, 0, 0, 0, 0, 0, '', 80, 13133400, 2, 0, 0, 0, 0, 0, NULL, 1, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 'Vindicator Minkey - On Just Summoned - Run Actionlist'),
|
||||
(131334, 0, 2, 3, '', 34, 0, 100, 1, 8, 1, 0, 0, 0, '', 11, 52096, 2, 0, 0, 0, 0, 0, NULL, 1, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 'Vindicator Minkey - On Movement Inform 1 - Cast Cosmetic Teleport Effect'),
|
||||
(131334, 0, 3, 0, '', 61, 0, 100, 1, 0, 0, 0, 0, 0, '', 41, 0, 0, 0, 0, 0, 0, 0, NULL, 1, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 'Vindicator Minkey - Despawn Instant'),
|
||||
|
||||
(13133400, 9, 0, 0, '', 0, 0, 100, 0, 0, 0, 0, 0, 0, '', 83, 2, 0, 0, 0, 0, 0, 0, NULL, 1, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 'Vindicator Minkey - Remove NPC Flag'),
|
||||
(13133400, 9, 1, 0, '', 0, 0, 100, 0, 0, 0, 0, 0, 0, '', 66, 0, 0, 0, 0, 0, 0, 0, NULL, 23, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 'Vindicator Minkey - Set Orientation to Invoker'),
|
||||
(13133400, 9, 2, 0, '', 0, 0, 100, 0, 1000, 1000, 0, 0, 0, '', 1, 0, 0, 0, 0, 0, 0, 0, NULL, 23, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 'Vindicator Minkey - Say Line 0'),
|
||||
(13133400, 9, 3, 0, '', 0, 0, 100, 0, 7000, 7000, 0, 0, 0, '', 59, 0, 0, 0, 0, 0, 0, 0, NULL, 1, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 'Vindicator Minkey - Set Run Off'),
|
||||
(13133400, 9, 4, 0, '', 0, 0, 100, 0, 0, 0, 0, 0, 0, '', 69, 1, 0, 0, 0, 0, 0, 0, NULL, 8, 0, 0, 0, 0, NULL, -8358.657, 622.213, 95.317, 3.814, 'Vindicator Minkey - Move to PoS 1');
|
||||
|
||||
|
||||
-- NPC Lightforged Beacon (130758)
|
||||
UPDATE `creature` SET `PhaseId`=0 WHERE `guid`=243622;
|
||||
UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=130758;
|
||||
UPDATE `creature_template_addon` SET `SheathState`=0 WHERE `entry`=130758;
|
||||
UPDATE `creature_template_difficulty` SET `StaticFlags1`=524288 WHERE `Entry`=130758 AND `DifficultyID`=0;
|
||||
|
||||
DELETE FROM `creature` WHERE `guid`=37;
|
||||
INSERT INTO `creature` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnDifficulties`, `phaseUseFlags`, `PhaseId`, `PhaseGroup`, `terrainSwapMap`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `curHealthPct`, `MovementType`, `npcflag`, `unit_flags`, `unit_flags2`, `unit_flags3`, `ScriptName`, `StringId`, `VerifiedBuild`) VALUES
|
||||
(37, 130758, 0, 1519, 9171, '0', 0, 0, 0, -1, 0, 0, -8123.5, 889.019, 77.2747, 0.35972, 180, 0, 0, NULL, 0, NULL, NULL, NULL, NULL, '', NULL, 69587);
|
||||
|
||||
DELETE FROM `creature_addon` WHERE `guid` IN (243622,37);
|
||||
INSERT INTO `creature_addon` (`guid`, `PathId`, `mount`, `MountCreatureID`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvPFlags`, `emote`, `aiAnimKit`, `movementAnimKit`, `meleeAnimKit`, `visibilityDistanceType`, `auras`) VALUES
|
||||
(243622, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '49415'),
|
||||
(37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '60921');
|
||||
|
||||
DELETE FROM `npc_spellclick_spells` WHERE `npc_entry`=130758;
|
||||
INSERT INTO `npc_spellclick_spells` (`npc_entry`, `spell_id`, `cast_flags`, `user_type`) VALUES
|
||||
(130758, 258298, 3, 0);
|
||||
|
||||
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=18 AND `SourceGroup`=130758 AND `SourceEntry`=258298;
|
||||
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `ConditionStringValue1`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
|
||||
(18, 130758, 258298, 0, 0, 9, 0, 49698, 0, 0, '', 0, 0, 0, '', 'Lightforged Beacon - Allow Spellclick if Quest is Taken'),
|
||||
(18, 130758, 258298, 0, 1, 28, 0, 49698, 0, 0, '', 0, 0, 0, '', 'Lightforged Beacon - Allow Spellclick if Quest is Completed'),
|
||||
(18, 130758, 258298, 0, 2, 8, 0, 49698, 0, 0, '', 0, 0, 0, '', 'Lightforged Beacon - Allow Spellclick if Quest is Rewarded'),
|
||||
(18, 130758, 258298, 0, 2, 8, 0, 50071, 0, 0, '', 1, 0, 0, '', 'Lightforged Beacon - Allow Spellclick if Quest is Not Rewarded'),
|
||||
(18, 130758, 258298, 0, 3, 8, 0, 50313, 0, 0, '', 0, 0, 0, '', 'Lightforged Beacon - Allow Spellclick if Quest is Rewarded');
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid`=130758 AND `source_type`=0;
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `Difficulties`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param_string`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `action_param7`, `action_param_string`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_param_string`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(130758, 0, 0, 0, '', 73, 0, 100, 0, 0, 0, 0, 0, 0, '', 33, 130758, 0, 0, 0, 0, 0, 0, NULL, 7, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 'Lightforged Beacon - On Spellclick - Quest Credit');
|
||||
|
||||
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry`=199952 AND `SourceId`=0;
|
||||
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `ConditionStringValue1`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
|
||||
(22, 1, 199952, 0, 0, 9, 0, 49782, 0, 0, '', 0, 0, 0, '', 'Lightforged Beacon - Run Script if Quest is Taken'),
|
||||
(22, 1, 199952, 0, 1, 9, 0, 49698, 0, 0, '', 0, 0, 0, '', 'Lightforged Beacon - Run Script if Quest is Taken');
|
||||
|
||||
|
||||
|
||||
-- =========================================
|
||||
-- Quest The Lightforged (49698)
|
||||
-- Quest Heritage of the Lightforged (49782)
|
||||
-- =========================================
|
||||
UPDATE `quest_objectives` SET `Type`=0 WHERE `ID`=333778;
|
||||
UPDATE `quest_objectives` SET `Type`=0 WHERE `ID`=454073;
|
||||
|
||||
DELETE FROM `quest_poi_points` WHERE `QuestID`=49782;
|
||||
INSERT INTO `quest_poi_points` (`QuestID`, `Idx1`, `Idx2`, `X`, `Y`, `Z`, `VerifiedBuild`) VALUES
|
||||
(49782, 0, 0, 464, 1452, 758, 69587),
|
||||
(49782, 1, 0, -8163, 777, 76, 69587),
|
||||
(49782, 2, 0, -8163, 777, 76, 69587),
|
||||
(49782, 3, 0, 502, 1471, 766, 69587),
|
||||
(49782, 4, 0, -8163, 777, 76, 69587),
|
||||
(49782, 5, 0, -2385, 1271, 534, 69587);
|
||||
|
||||
|
||||
|
||||
-- ==============================
|
||||
-- Misc: Gameobjects Calibrations
|
||||
-- ==============================
|
||||
|
||||
-- GO Netherlight Crucible (276296,273271)
|
||||
UPDATE `gameobject_template` SET `name`='Netherlight Crucible', `IconName`='questinteract' WHERE `entry` IN (276296,273271);
|
||||
DELETE FROM `gameobject` WHERE `guid`=143831;
|
||||
DELETE FROM `gameobject_addon` WHERE `guid`=143831;
|
||||
|
||||
DELETE FROM `gameobject_template_locale` WHERE `entry` IN (276296,273271);
|
||||
INSERT INTO `gameobject_template_locale` (`entry`, `locale`, `name`, `castBarCaption`, `unk1`, `VerifiedBuild`) VALUES
|
||||
(276296, 'deDE', 'Netherlichttiegel', '', NULL, 69587),
|
||||
(276296, 'esES', 'Crisol de Luz Abisal', '', NULL, 69587),
|
||||
(276296, 'esMX', 'Crisol de luz abisal', '', NULL, 69587),
|
||||
(276296, 'frFR', 'Creuset de Halo-du-Néant', '', NULL, 69587),
|
||||
(276296, 'itIT', 'Crogiolo di Lucefatua', '', NULL, 69587),
|
||||
(276296, 'koKR', '황천빛 도가니', '', NULL, 69587),
|
||||
(276296, 'ptBR', 'Crisol de Eterluz', '', NULL, 69587),
|
||||
(276296, 'ruRU', 'Тигель света Пустоты', '', NULL, 69587),
|
||||
(276296, 'zhCN', '虚空之光熔炉', '', NULL, 69587),
|
||||
(276296, 'zhTW', '虛空之光熔爐', '', NULL, 69587),
|
||||
|
||||
(273271, 'deDE', 'Netherlichttiegel', '', NULL, 69587),
|
||||
(273271, 'esES', 'Crisol de Luz Abisal', '', NULL, 69587),
|
||||
(273271, 'esMX', 'Crisol de luz abisal', '', NULL, 69587),
|
||||
(273271, 'frFR', 'Creuset de Halo-du-Néant', '', NULL, 69587),
|
||||
(273271, 'itIT', 'Crogiolo di Lucefatua', '', NULL, 69587),
|
||||
(273271, 'koKR', '황천빛 도가니', '', NULL, 69587),
|
||||
(273271, 'ptBR', 'Crisol de Eterluz', '', NULL, 69587),
|
||||
(273271, 'ruRU', 'Тигель света Пустоты', '', NULL, 69587),
|
||||
(273271, 'zhCN', '虚空之光熔炉', '', NULL, 69587),
|
||||
(273271, 'zhTW', '虛空之光熔爐', '', NULL, 69587);
|
||||
|
||||
|
||||
|
||||
-- ============================
|
||||
-- Misc: Creatures Calibrations
|
||||
-- ============================
|
||||
|
||||
-- NPC Tassia Whisperglen (96507)
|
||||
UPDATE `creature_template_addon` SET `SheathState`=0, `emote`=69 WHERE `entry`=96507;
|
||||
|
||||
|
||||
|
||||
-- NPC High Priestess Ishanah (123395)
|
||||
DELETE FROM `gossip_menu_option` WHERE `MenuID`=21462;
|
||||
INSERT INTO `gossip_menu_option` (`MenuID`, `GossipOptionID`, `OptionID`, `OptionNpc`, `OptionText`, `OptionBroadcastTextID`, `Language`, `Flags`, `ActionMenuID`, `ActionPoiID`, `GossipNpcOptionID`, `BoxCoded`, `BoxMoney`, `BoxText`, `BoxBroadcastTextID`, `SpellID`, `OverrideIconID`, `VerifiedBuild`) VALUES
|
||||
(21462, 47636, 0, 5, 'Make this inn your home.', 2822, 0, 0, 0, 0, NULL, 0, 0, NULL, 0, NULL, NULL, 69587),
|
||||
(21462, 47638, 1, 1, 'Let me browse your goods.', 2823, 0, 0, 0, 0, NULL, 0, 0, NULL, 0, NULL, NULL, 69587),
|
||||
(21462, 0, 2, 0, 'It is good to see you, Ishanah. How are you?', 136389, 0, 0, 21463, 0, NULL, 0, 0, '', 0, NULL, NULL, 69587),
|
||||
(21462, -331008, 3, 0, 'Trick or Treat!', 10693, 0, 0, 0, 0, NULL, 0, 0, NULL, 0, NULL, NULL, 69587);
|
||||
|
||||
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=21462;
|
||||
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `ConditionStringValue1`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
|
||||
(15, 21462, 2, 0, 0, 9, 0, 48500, 0, 0, '', 0, 0, 0, '', 'High Priestess Ishanah - Show Gossip Option 2 if Quest is Taken'),
|
||||
(15, 21462, 2, 0, 0, 48, 0, 292394, 0, 1, '', 1, 0, 0, '', 'High Priestess Ishanah - Show Gossip Option 2 if Quest Objetive is Not Completed'),
|
||||
(15, 21462, 3, 0, 0, 12, 0, 12, 0, 0, '', 0, 0, 0, '', 'High Priestess Ishanah - Show Gossip Option 3 if Hallow\'s End Event is Active'),
|
||||
(15, 21462, 3, 0, 0, 1, 0, 24755, 0, 0, '', 1, 0, 0, '', 'High Priestess Ishanah - Show Gossip Option 3 if Player Not Aura Tricked or Treated');
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid`=123395 AND `source_type`=0;
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `Difficulties`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param_string`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `action_param7`, `action_param_string`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_param_string`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(123395, 0, 0, 0, '', 62, 0, 100, 0, 21462, 2, 0, 0, 0, '', 33, 123395, 0, 0, 0, 0, 0, 0, NULL, 7, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 'High Priestess Ishanah - On Gossip Option 2 Select - Quest Credit'),
|
||||
(123395, 0, 1, 2, '', 62, 0, 100, 0, 21462, 3, 0, 0, 0, '', 72, 0, 0, 0, 0, 0, 0, 0, NULL, 7, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 'High Priestess Ishanah - On Gossip Option 3 Select - Close Gossip'),
|
||||
(123395, 0, 2, 0, '', 61, 0, 100, 0, 0, 0, 0, 0, 0, '', 85, 24751, 0, 0, 0, 0, 0, 0, NULL, 7, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 'High Priestess Ishanah - Player Cast on Self Trick or Treat');
|
||||
|
||||
|
||||
|
||||
-- NPC Lightsworn Anchorite (125524)
|
||||
DELETE FROM `creature` WHERE `guid` IN (327892,32789,327896,327908,327910);
|
||||
UPDATE `creature` SET `wander_distance`='0', `MovementType`='0' WHERE `id`='125524' AND NOT `MovementType`='2';
|
||||
UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=125524;
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid`=125524 AND `source_type`=0;
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid` IN (12552400,12552401) AND `source_type`=9;
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(125524, 0, 0, 0, 60, 0, 100, 0, 5000, 10000, 10000, 15000, 88, 12552400, 12552401, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Lightsworn Anchorite - On Update - Run Random Actionlist'),
|
||||
|
||||
(12552400, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 10, 1, 113, 29, 574, 71, 400, 1, 0, 0, 0, 0, 0, 0, 0, 'Lightsworn Anchorite - Play Random Emote'),
|
||||
(12552401, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 10, 1, 5, 6, 29, 604, 661, 1, 0, 0, 0, 0, 0, 0, 0, 'Lightsworn Anchorite - Play Random Emote');
|
||||
|
||||
|
||||
|
||||
-- NPC Exodar Artificer (125843)
|
||||
DELETE FROM `creature` WHERE `guid` IN (231024,231031,231124,326596,326598,326606,447401,447406,447410,447416);
|
||||
UPDATE `creature` SET `wander_distance`='0', `MovementType`='0' WHERE `id`='125843' AND NOT `MovementType`='2';
|
||||
UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=125843;
|
||||
UPDATE `creature_template_addon` SET `emote`=233 WHERE `entry`=125843;
|
||||
|
||||
DELETE FROM `creature_addon` WHERE `guid` IN (231012,231013,231022,231028,231032,231034,231080,231086,243586,326594,326595,326597,326601);
|
||||
INSERT INTO `creature_addon` (`guid`, `PathId`, `mount`, `MountCreatureID`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvPFlags`, `emote`, `aiAnimKit`, `movementAnimKit`, `meleeAnimKit`, `visibilityDistanceType`, `auras`) VALUES
|
||||
(231012, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '230497'),
|
||||
(231013, 0, 0, 0, 0, 0, 0, 0, 0, 648, 0, 0, 0, 0, ''),
|
||||
(231022, 0, 0, 0, 0, 0, 0, 0, 0, 455, 0, 0, 0, 0, ''),
|
||||
(231028, 0, 0, 0, 0, 0, 0, 0, 0, 455, 0, 0, 0, 0, ''),
|
||||
(231032, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '230497'),
|
||||
(231034, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '230497'),
|
||||
(231080, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ''),
|
||||
(231086, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ''),
|
||||
(243586, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ''),
|
||||
(326594, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ''),
|
||||
(326595, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ''),
|
||||
(326597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ''),
|
||||
(326601, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '');
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid` IN (125843,-231080,-231086,-243586,-326594,-326595,-326597,-326601) AND `source_type`=0;
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid` IN (12584300,12584301) AND `source_type`=9;
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(-231080, 0, 0, 0, 60, 0, 100, 0, 5000, 10000, 10000, 15000, 88, 12584300, 12584301, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Lightsworn Anchorite - On Update - Run Random Actionlist'),
|
||||
(-231086, 0, 0, 0, 60, 0, 100, 0, 5000, 10000, 10000, 15000, 88, 12584300, 12584301, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Lightsworn Anchorite - On Update - Run Random Actionlist'),
|
||||
(-243586, 0, 0, 0, 60, 0, 100, 0, 5000, 10000, 10000, 15000, 88, 12584300, 12584301, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Lightsworn Anchorite - On Update - Run Random Actionlist'),
|
||||
(-326594, 0, 0, 0, 60, 0, 100, 0, 5000, 10000, 10000, 15000, 88, 12584300, 12584301, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Lightsworn Anchorite - On Update - Run Random Actionlist'),
|
||||
(-326595, 0, 0, 0, 60, 0, 100, 0, 5000, 10000, 10000, 15000, 88, 12584300, 12584301, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Lightsworn Anchorite - On Update - Run Random Actionlist'),
|
||||
(-326597, 0, 0, 0, 60, 0, 100, 0, 5000, 10000, 10000, 15000, 88, 12584300, 12584301, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Lightsworn Anchorite - On Update - Run Random Actionlist'),
|
||||
(-326601, 0, 0, 0, 60, 0, 100, 0, 5000, 10000, 10000, 15000, 88, 12584300, 12584301, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Lightsworn Anchorite - On Update - Run Random Actionlist'),
|
||||
|
||||
(12584300, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 10, 1, 113, 29, 574, 71, 400, 1, 0, 0, 0, 0, 0, 0, 0, 'Lightsworn Anchorite - Play Random Emote'),
|
||||
(12584301, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 10, 1, 5, 6, 29, 604, 661, 1, 0, 0, 0, 0, 0, 0, 0, 'Lightsworn Anchorite - Play Random Emote');
|
||||
|
||||
|
||||
|
||||
-- NPC Anchorite Lysara (126022)
|
||||
UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=126022;
|
||||
UPDATE `creature_template_addon` SET `SheathState`=0 WHERE `entry`=126022;
|
||||
UPDATE `creature_trainer` SET `MenuID`=0 WHERE `CreatureID`=126022 AND `MenuID`=8522 AND `OptionID`=0;
|
||||
UPDATE `creature_trainer` SET `MenuID`=0 WHERE `MenuID`=8522;
|
||||
UPDATE `creature` SET `wander_distance`='0', `MovementType`='0' WHERE `id`='126022' AND NOT `MovementType`='2';
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid`=126022 AND `source_type`=0;
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `Difficulties`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param_string`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `action_param7`, `action_param_string`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_param_string`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(126022, 0, 0, 0, '', 60, 0, 100, 0, 5000, 10000, 20000, 20000, 0, '', 11, 61493, 2, 0, 0, 0, 0, 0, NULL, 1, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 'Anchorite Lysara - On Update - Cast [DND] First Aid');
|
||||
|
||||
|
||||
|
||||
-- NPC Lightsworn Anchorite (126030)
|
||||
DELETE FROM `creature` WHERE `guid`=327924;
|
||||
UPDATE `creature_template` SET `AIName`='' WHERE `entry`=126030;
|
||||
|
||||
DELETE FROM `creature_addon` WHERE `guid` IN (231065,243608,327921,327923,327925);
|
||||
INSERT INTO `creature_addon` (`guid`, `PathId`, `mount`, `MountCreatureID`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvPFlags`, `emote`, `aiAnimKit`, `movementAnimKit`, `meleeAnimKit`, `visibilityDistanceType`, `auras`) VALUES
|
||||
(231065, 0, 0, 0, 0, 0, 0, 0, 0, 641, 0, 0, 0, 0, ''),
|
||||
(243608, 0, 0, 0, 0, 0, 0, 0, 0, 641, 0, 0, 0, 0, ''),
|
||||
(327921, 0, 0, 0, 0, 0, 0, 0, 0, 641, 0, 0, 0, 0, ''),
|
||||
(327923, 0, 0, 0, 0, 0, 0, 0, 0, 641, 0, 0, 0, 0, ''),
|
||||
(327925, 0, 0, 0, 0, 0, 0, 0, 0, 641, 0, 0, 0, 0, '');
|
||||
|
||||
|
||||
|
||||
-- NPC A'naa (126075)
|
||||
UPDATE `creature_template_addon` SET `SheathState`=0, `emote`=69 WHERE `entry`=126075;
|
||||
|
||||
DELETE FROM `creature_addon` WHERE `guid`=327562;
|
||||
INSERT INTO `creature_addon` (`guid`, `PathId`, `mount`, `MountCreatureID`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvPFlags`, `emote`, `aiAnimKit`, `movementAnimKit`, `meleeAnimKit`, `visibilityDistanceType`, `auras`) VALUES
|
||||
(327562, 0, 0, 0, 0, 0, 0, 0, 0, 613, 0, 0, 0, 0, '');
|
||||
|
||||
|
||||
|
||||
-- NPC Artificer Shela'na (126389)
|
||||
UPDATE `creature_template` SET `npcflag`=3 WHERE `entry`=126389;
|
||||
|
||||
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=21451;
|
||||
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `ConditionStringValue1`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
|
||||
(15, 21451, 0, 0, 0, 9, 0, 48500, 0, 0, '', 0, 0, 0, '', 'Artificer Shela\'na - Show Gossip Option if Quest is Taken'),
|
||||
(15, 21451, 0, 0, 0, 48, 0, 292317, 0, 1, '', 1, 0, 0, '', 'Artificer Shela\'na - Show Gossip Option if Quest Objetive is Not Completed');
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid`=126389 AND `source_type`=0;
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `Difficulties`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param_string`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `action_param7`, `action_param_string`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_param_string`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(126389, 0, 0, 0, '', 62, 0, 100, 0, 21451, 0, 0, 0, 0, '', 33, 126389, 0, 0, 0, 0, 0, 0, NULL, 7, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 'Artificer Shela\'na - On Gossip Select - Quest Credit');
|
||||
|
||||
|
||||
|
||||
-- NPC Thelbus Wimblenod (126390)
|
||||
UPDATE `creature_template_difficulty` SET `StaticFlags1`=536871168 WHERE `Entry`=126390;
|
||||
UPDATE `creature` SET `position_z`=132.267 WHERE `guid`=231071;
|
||||
UPDATE `creature` SET `position_z`=743.197 WHERE `guid`=243579;
|
||||
UPDATE `creature` SET `position_z`=41.720 WHERE `guid`=329855;
|
||||
UPDATE `creature` SET `position_z`=47.778 WHERE `guid`=447426;
|
||||
|
||||
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=21454;
|
||||
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `ConditionStringValue1`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
|
||||
(15, 21454, 0, 0, 0, 9, 0, 48500, 0, 0, '', 0, 0, 0, '', 'Thelbus Wimblenod - Show Gossip Option if Quest is Taken'),
|
||||
(15, 21454, 0, 0, 0, 48, 0, 292319, 0, 1, '', 1, 0, 0, '', 'Thelbus Wimblenod - Show Gossip Option if Quest Objetive is Not Completed');
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid`=126390 AND `source_type`=0;
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `Difficulties`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param_string`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `action_param7`, `action_param_string`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_param_string`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(126390, 0, 0, 0, '', 62, 0, 100, 0, 21454, 0, 0, 0, 0, '', 33, 126390, 0, 0, 0, 0, 0, 0, NULL, 7, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 'Thelbus Wimblenod - On Gossip Select - Quest Credit');
|
||||
|
||||
|
||||
|
||||
-- NPC Maras (130560)
|
||||
UPDATE `creature_template_addon` SET `SheathState`=0, `emote`=415 WHERE `entry`=130560;
|
||||
|
||||
|
||||
|
||||
-- NPC Vigilant Quoram (130986)
|
||||
UPDATE `creature_text` SET `comment`='Vigilant Quoram' WHERE `CreatureID`=130986;
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid`=130986 AND `source_type`=0;
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `Difficulties`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param_string`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `action_param7`, `action_param_string`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_param_string`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(130986, 0, 0, 1, '', 62, 0, 100, 0, 21910, 0, 0, 0, 0, '', 1, 0, 0, 0, 0, 0, 0, 0, NULL, 7, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 'Vigilant Quoram - On Gossip Option 0 Select - Say Random Text'),
|
||||
(130986, 0, 1, 0, '', 61, 0, 100, 0, 0, 0, 0, 0, 0, '', 72, 0, 0, 0, 0, 0, 0, 0, NULL, 7, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 'Vigilant Quoram - Close Gossip'),
|
||||
(130986, 0, 2, 3, '', 62, 0, 100, 0, 21910, 1, 0, 0, 0, '', 1, 1, 0, 0, 0, 0, 0, 0, NULL, 7, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 'Vigilant Quoram - On Gossip Option 1 Select - Say Line 1'),
|
||||
(130986, 0, 3, 0, '', 61, 0, 100, 0, 0, 0, 0, 0, 0, '', 72, 0, 0, 0, 0, 0, 0, 0, NULL, 7, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 'Vigilant Quoram - Close Gossip'),
|
||||
(130986, 0, 4, 5, '', 62, 0, 100, 0, 21910, 2, 0, 0, 0, '', 1, 2, 0, 0, 0, 0, 0, 0, NULL, 7, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 'Vigilant Quoram - On Gossip Option 2 Select - Say Random Text'),
|
||||
(130986, 0, 5, 0, '', 61, 0, 100, 0, 0, 0, 0, 0, 0, '', 72, 0, 0, 0, 0, 0, 0, 0, NULL, 7, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 'Vigilant Quoram - Close Gossip'),
|
||||
(130986, 0, 6, 7, '', 62, 0, 100, 0, 21910, 3, 0, 0, 0, '', 1, 3, 0, 0, 0, 0, 0, 0, NULL, 7, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 'Vigilant Quoram - On Gossip Option 3 Select - Say Random Text'),
|
||||
(130986, 0, 7, 0, '', 61, 0, 100, 0, 0, 0, 0, 0, 0, '', 72, 0, 0, 0, 0, 0, 0, 0, NULL, 7, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 'Vigilant Quoram - Close Gossip'),
|
||||
(130986, 0, 8, 9, '', 62, 0, 100, 0, 21910, 4, 0, 0, 0, '', 1, 4, 0, 0, 0, 0, 0, 0, NULL, 7, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 'Vigilant Quoram - On Gossip Option 4 Select - Say Line 4'),
|
||||
(130986, 0, 9, 0, '', 61, 0, 100, 0, 0, 0, 0, 0, 0, '', 72, 0, 0, 0, 0, 0, 0, 0, NULL, 7, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 'Vigilant Quoram - Close Gossip'),
|
||||
(130986, 0, 10, 11, '', 62, 0, 100, 0, 21910, 5, 0, 0, 0, '', 1, 5, 0, 0, 0, 0, 0, 0, NULL, 7, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 'Vigilant Quoram - On Gossip Option 5 Select - Say Line 5'),
|
||||
(130986, 0, 11, 0, '', 61, 0, 100, 0, 0, 0, 0, 0, 0, '', 72, 0, 0, 0, 0, 0, 0, 0, NULL, 7, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 'Vigilant Quoram - Close Gossip');
|
||||
|
||||
|
||||
|
||||
-- NPC T'paartos (132210)
|
||||
UPDATE `creature_template_addon` SET `SheathState`=0, `emote`=455 WHERE `entry`=132210;
|
||||
|
||||
|
||||
|
||||
-- NPC Lightforged Anchorite (132214)
|
||||
UPDATE `creature` SET `position_x`=451.651, `position_y`=1391.86, `position_z`=772.655, `orientation`=3.5627, `wander_distance`=0, `MovementType`=2 WHERE `guid`=243587;
|
||||
UPDATE `creature` SET `position_x`=445.31, `position_y`=1491.44, `position_z`=742.054, `wander_distance`=0, `MovementType`=2 WHERE `guid`=243590;
|
||||
|
||||
DELETE FROM `creature_addon` WHERE `guid` IN (243587,243590);
|
||||
INSERT INTO `creature_addon` (`guid`, `PathId`, `mount`, `MountCreatureID`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvPFlags`, `emote`, `aiAnimKit`, `movementAnimKit`, `meleeAnimKit`, `visibilityDistanceType`, `auras`) VALUES
|
||||
(243587, 243587, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, ''),
|
||||
(243590, 243590, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '');
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid` IN (132214,-243587,-243590) AND `source_type`=0;
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid` IN (13221400,13221401) AND `source_type`=9;
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(132214, 0, 0, 0, 60, 0, 100, 0, 5000, 10000, 10000, 15000, 88, 13221400, 13221401, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Lightforged Anchorite - On Update - Run Random Actionlist'),
|
||||
|
||||
(-243587, 0, 0, 0, 25, 0, 100, 1, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Lightforged Anchorite - On Reset - Set Emote State'),
|
||||
(-243590, 0, 0, 0, 25, 0, 100, 1, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Lightforged Anchorite - On Reset - Set Emote State'),
|
||||
|
||||
(13221400, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 10, 1, 113, 29, 574, 71, 400, 1, 0, 0, 0, 0, 0, 0, 0, 'Lightforged Anchorite - Play Random Emote'),
|
||||
(13221401, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 10, 1, 5, 6, 29, 604, 661, 1, 0, 0, 0, 0, 0, 0, 0, 'Lightforged Anchorite - Play Random Emote');
|
||||
|
||||
DELETE FROM `waypoint_path` WHERE `PathId` IN (243587,243590);
|
||||
INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Velocity`, `Comment`) VALUES
|
||||
(243587, 0, 0, NULL, 'Lightforged Anchorite'),
|
||||
(243590, 0, 0, NULL, 'Lightforged Anchorite');
|
||||
|
||||
DELETE FROM `waypoint_path_node` WHERE `PathId` IN (243587,243590);
|
||||
INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `Delay`) VALUES
|
||||
(243587, 1, 451.651, 1391.86, 772.655, 3.5627, 6000),
|
||||
(243587, 2, 468.72, 1398.42, 772.649, NULL, 15000),
|
||||
|
||||
(243590, 1, 445.31, 1491.44, 742.054, NULL, 0),
|
||||
(243590, 2, 449.102, 1492.26, 742.054, NULL, 0),
|
||||
(243590, 3, 452.211, 1492.02, 742.054, NULL, 0),
|
||||
(243590, 4, 455.332, 1491.77, 742.054, NULL, 0),
|
||||
(243590, 5, 459.149, 1491.24, 742.054, NULL, 0),
|
||||
(243590, 6, 461.977, 1489.86, 742.054, NULL, 0),
|
||||
(243590, 7, 464.783, 1488.5, 742.054, NULL, 0),
|
||||
(243590, 8, 467.845, 1486.43, 742.054, NULL, 0),
|
||||
(243590, 9, 470.159, 1484.3, 742.054, NULL, 0),
|
||||
(243590, 10, 472.47, 1482.17, 742.054, NULL, 0),
|
||||
(243590, 11, 474.784, 1480.48, 742.054, NULL, 0),
|
||||
(243590, 12, 477.384, 1478.69, 742.054, NULL, 0),
|
||||
(243590, 13, 479.934, 1476.97, 742.054, NULL, 0),
|
||||
(243590, 14, 482.59, 1475.29, 742.054, NULL, 0),
|
||||
(243590, 15, 485.636, 1473.01, 742.054, NULL, 0),
|
||||
(243590, 16, 487.552, 1470.53, 742.054, NULL, 0),
|
||||
(243590, 17, 489.67, 1467.63, 742.351, NULL, 0),
|
||||
(243590, 18, 490.965, 1464.76, 742.41, NULL, 0),
|
||||
(243590, 19, 492.259, 1461.91, 742.094, NULL, 0),
|
||||
(243590, 20, 493.017, 1458.38, 742.054, NULL, 0),
|
||||
(243590, 21, 493.614, 1455.29, 742.054, NULL, 0),
|
||||
(243590, 22, 493.873, 1451.91, 742.054, NULL, 0),
|
||||
(243590, 23, 494.082, 1448.77, 742.054, NULL, 0),
|
||||
(243590, 24, 494.018, 1445.42, 742.054, NULL, 0),
|
||||
(243590, 25, 493.892, 1442.26, 742.054, NULL, 0),
|
||||
(243590, 26, 493.686, 1439.02, 742.054, NULL, 0),
|
||||
(243590, 27, 493.405, 1435.87, 742.054, NULL, 0),
|
||||
(243590, 28, 493.125, 1432.73, 742.054, NULL, 0),
|
||||
(243590, 29, 492.558, 1429.43, 742.054, NULL, 0),
|
||||
(243590, 30, 491.974, 1426.33, 742.054, NULL, 0),
|
||||
(243590, 31, 490.814, 1422.84, 742.054, NULL, 0),
|
||||
(243590, 32, 489.362, 1420.06, 742.054, NULL, 0),
|
||||
(243590, 33, 487.307, 1416.63, 742.054, NULL, 0),
|
||||
(243590, 34, 484.792, 1414.76, 742.054, NULL, 0),
|
||||
(243590, 35, 482.283, 1412.89, 742.054, NULL, 0),
|
||||
(243590, 36, 479.226, 1411.06, 742.054, NULL, 0),
|
||||
(243590, 37, 476.346, 1409.78, 742.054, NULL, 0),
|
||||
(243590, 38, 473.466, 1408.51, 742.054, NULL, 0),
|
||||
(243590, 39, 470.176, 1407.37, 742.054, NULL, 0),
|
||||
(243590, 40, 467.112, 1406.61, 742.054, NULL, 0),
|
||||
(243590, 41, 464.061, 1405.85, 742.054, NULL, 0),
|
||||
(243590, 42, 460.678, 1405.27, 742.054, NULL, 0),
|
||||
(243590, 43, 457.557, 1404.97, 742.054, NULL, 0),
|
||||
(243590, 44, 454.439, 1404.66, 742.054, NULL, 0),
|
||||
(243590, 45, 450.63, 1404.75, 742.054, NULL, 0),
|
||||
(243590, 46, 447.592, 1405.52, 742.054, NULL, 0),
|
||||
(243590, 47, 444.559, 1406.3, 742.054, NULL, 0),
|
||||
(243590, 48, 441.241, 1408.08, 742.054, NULL, 0),
|
||||
(243590, 49, 438.659, 1409.84, 742.054, NULL, 0),
|
||||
(243590, 50, 435.959, 1412.43, 742.054, NULL, 0),
|
||||
(243590, 51, 434.062, 1414.93, 742.054, NULL, 0),
|
||||
(243590, 52, 432.168, 1417.44, 742.054, NULL, 0),
|
||||
(243590, 53, 430.249, 1419.89, 742.054, NULL, 0),
|
||||
(243590, 54, 428.286, 1422.37, 742.054, NULL, 0),
|
||||
(243590, 55, 426.317, 1425.07, 742.078, NULL, 0),
|
||||
(243590, 56, 424.625, 1427.71, 742.386, NULL, 0),
|
||||
(243590, 57, 422.932, 1430.35, 742.391, NULL, 0),
|
||||
(243590, 58, 420.405, 1436.27, 742.46, NULL, 0),
|
||||
(243590, 59, 419.453, 1439.03, 742.46, NULL, 0),
|
||||
(243590, 60, 418.494, 1441.81, 742.054, NULL, 0),
|
||||
(243590, 61, 417.564, 1444.83, 742.054, NULL, 0),
|
||||
(243590, 62, 416.921, 1447.69, 742.054, NULL, 0),
|
||||
(243590, 63, 416.277, 1450.54, 742.054, NULL, 0),
|
||||
(243590, 64, 415.805, 1453.77, 742.054, NULL, 0),
|
||||
(243590, 65, 415.674, 1456.71, 742.054, NULL, 0),
|
||||
(243590, 66, 415.543, 1459.64, 742.054, NULL, 0),
|
||||
(243590, 67, 415.413, 1462.57, 742.054, NULL, 0),
|
||||
(243590, 68, 416.659, 1466.18, 742.054, NULL, 0),
|
||||
(243590, 69, 417.855, 1468.87, 742.054, NULL, 0),
|
||||
(243590, 70, 419.464, 1471.91, 742.054, NULL, 0),
|
||||
(243590, 71, 421.322, 1474.18, 742.054, NULL, 0),
|
||||
(243590, 72, 423.185, 1476.45, 742.054, NULL, 0),
|
||||
(243590, 73, 425.048, 1478.72, 742.054, NULL, 0),
|
||||
(243590, 74, 427.477, 1480.94, 742.054, NULL, 0),
|
||||
(243590, 75, 429.724, 1482.82, 742.054, NULL, 0),
|
||||
(243590, 76, 431.97, 1484.71, 742.054, NULL, 0),
|
||||
(243590, 77, 434.211, 1486.59, 742.054, NULL, 0),
|
||||
(243590, 78, 437.152, 1488.8, 742.054, NULL, 0),
|
||||
(243590, 79, 439.943, 1489.7, 742.054, NULL, 0),
|
||||
(243590, 80, 442.729, 1490.6, 742.054, NULL, 0);
|
||||
|
||||
|
||||
|
||||
-- NPC Lightforged Vindicator (132215)
|
||||
DELETE FROM `creature` WHERE `guid` IN (243582,243601);
|
||||
UPDATE `creature` SET `position_x`=425.337, `position_y`=1412.52, `position_z`=772.696, `orientation`=0.1589, `wander_distance`=0, `MovementType`=2 WHERE `guid`=243573;
|
||||
UPDATE `creature` SET `position_x`=425.095, `position_y`=1438.91, `position_z`=742.054, `wander_distance`=0, `MovementType`=2 WHERE `guid`=243577;
|
||||
|
||||
DELETE FROM `creature_addon` WHERE `guid` IN (243573,243577,243581,243592,243607,243609,243615,243621);
|
||||
INSERT INTO `creature_addon` (`guid`, `PathId`, `mount`, `MountCreatureID`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvPFlags`, `emote`, `aiAnimKit`, `movementAnimKit`, `meleeAnimKit`, `visibilityDistanceType`, `auras`) VALUES
|
||||
(243573, 243573, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, ''),
|
||||
(243577, 243577, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, ''),
|
||||
(243581, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ''),
|
||||
(243592, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ''),
|
||||
(243607, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ''),
|
||||
(243609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '260861 52550'),
|
||||
(243615, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ''),
|
||||
(243621, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '260861 52550');
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid` IN (-243581,-243592,-243607,-243615) AND `source_type`=0;
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid` IN (13221500,13221501) AND `source_type`=9;
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(-243581, 0, 0, 0, 60, 0, 100, 0, 5000, 10000, 10000, 15000, 88, 13221500, 13221501, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Lightforged Vindicator - On Update - Run Random Actionlist'),
|
||||
(-243592, 0, 0, 0, 60, 0, 100, 0, 5000, 10000, 10000, 15000, 88, 13221500, 13221501, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Lightforged Vindicator - On Update - Run Random Actionlist'),
|
||||
(-243607, 0, 0, 0, 60, 0, 100, 0, 5000, 10000, 10000, 15000, 88, 13221500, 13221501, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Lightforged Vindicator - On Update - Run Random Actionlist'),
|
||||
(-243615, 0, 0, 0, 60, 0, 100, 0, 5000, 10000, 10000, 15000, 88, 13221500, 13221501, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Lightforged Vindicator - On Update - Run Random Actionlist'),
|
||||
|
||||
(13221500, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 10, 1, 113, 29, 574, 71, 400, 1, 0, 0, 0, 0, 0, 0, 0, 'Lightforged Vindicator - Play Random Emote'),
|
||||
(13221501, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 10, 1, 5, 6, 29, 604, 661, 1, 0, 0, 0, 0, 0, 0, 0, 'Lightforged Vindicator - Play Random Emote');
|
||||
|
||||
DELETE FROM `waypoint_path` WHERE `PathId` IN (243573,243577);
|
||||
INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Velocity`, `Comment`) VALUES
|
||||
(243573, 0, 0, NULL, 'Lightforged Vindicator'),
|
||||
(243577, 0, 0, NULL, 'Lightforged Vindicator');
|
||||
|
||||
DELETE FROM `waypoint_path_node` WHERE `PathId` IN (243573,243577);
|
||||
INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `Delay`) VALUES
|
||||
(243573, 1, 425.337, 1412.52, 772.696, 0.1589, 6000),
|
||||
(243573, 2, 415.845, 1483.25, 772.655, 0.1196, 15000),
|
||||
|
||||
(243577, 1, 425.095, 1438.91, 742.054, NULL, 0),
|
||||
(243577, 2, 425.317, 1442.74, 742.054, NULL, 0),
|
||||
(243577, 3, 426.108, 1446.2, 742.054, NULL, 0),
|
||||
(243577, 4, 427.422, 1448.99, 742.054, NULL, 0),
|
||||
(243577, 5, 428.614, 1451.72, 742.054, NULL, 0),
|
||||
(243577, 6, 429.68, 1454.39, 742.886, NULL, 0),
|
||||
(243577, 7, 430.591, 1457.19, 743.547, NULL, 0),
|
||||
(243577, 8, 431.674, 1460.08, 744.594, NULL, 0),
|
||||
(243577, 9, 432.78, 1462.79, 745.482, NULL, 0),
|
||||
(243577, 10, 434.441, 1465.61, 746.429, NULL, 0),
|
||||
(243577, 11, 436.273, 1468.39, 747.52, NULL, 0),
|
||||
(243577, 12, 438.286, 1470.49, 748.399, NULL, 0),
|
||||
(243577, 13, 440.691, 1472.8, 749.454, NULL, 0),
|
||||
(243577, 14, 443.108, 1474.42, 750.417, NULL, 0),
|
||||
(243577, 15, 445.914, 1476.06, 751.394, NULL, 0),
|
||||
(243577, 16, 448.577, 1477.23, 752.357, NULL, 0),
|
||||
(243577, 17, 451.689, 1478.24, 753.491, NULL, 0),
|
||||
(243577, 18, 454.527, 1478.92, 754.517, NULL, 0),
|
||||
(243577, 19, 457.791, 1479.22, 755.482, NULL, 0),
|
||||
(243577, 20, 460.694, 1479.34, 756.435, NULL, 0),
|
||||
(243577, 21, 463.933, 1479.11, 757.525, NULL, 0),
|
||||
(243577, 22, 466.045, 1479.19, 757.627, NULL, 0),
|
||||
(243577, 23, 469.1, 1480.03, 757.472, NULL, 0),
|
||||
(243577, 24, 469.459, 1481.52, 757.456, NULL, 0),
|
||||
(243577, 25, 470.04, 1483.35, 757.333, NULL, 0),
|
||||
(243577, 26, 470.281, 1484.75, 757.279, NULL, 0),
|
||||
(243577, 27, 468.04, 1486.89, 757.356, NULL, 0),
|
||||
(243577, 28, 466.111, 1487.73, 757.603, NULL, 0),
|
||||
(243577, 29, 463.585, 1488.48, 758.087, NULL, 0),
|
||||
(243577, 30, 460.578, 1488.74, 758.641, NULL, 0),
|
||||
(243577, 31, 457.904, 1488.9, 759.686, NULL, 0),
|
||||
(243577, 32, 454.81, 1488.85, 760.096, NULL, 0),
|
||||
(243577, 33, 452.216, 1488.62, 760.753, NULL, 0),
|
||||
(243577, 34, 449.254, 1487.98, 761.71, NULL, 0),
|
||||
(243577, 35, 446.729, 1487.19, 762.13, NULL, 0),
|
||||
(243577, 36, 443.952, 1486.02, 762.769, NULL, 0),
|
||||
(243577, 37, 441.45, 1484.77, 763.477, NULL, 0),
|
||||
(243577, 38, 438.819, 1483.29, 764.144, NULL, 0),
|
||||
(243577, 39, 436.522, 1481.83, 764.613, NULL, 0),
|
||||
(243577, 40, 434.132, 1480, 765.177, NULL, 0),
|
||||
(243577, 41, 432.1, 1478.29, 765.793, NULL, 0),
|
||||
(243577, 42, 430.058, 1476.07, 766.47, NULL, 0),
|
||||
(243577, 43, 428.251, 1474.04, 767.19, NULL, 0),
|
||||
(243577, 44, 426.538, 1471.56, 767.892, NULL, 0),
|
||||
(243577, 45, 425.027, 1469.37, 768.482, NULL, 0),
|
||||
(243577, 46, 423.781, 1466.67, 769.215, NULL, 0),
|
||||
(243577, 47, 422.594, 1464.12, 769.731, NULL, 0),
|
||||
(243577, 48, 421.691, 1461.25, 770.444, NULL, 0),
|
||||
(243577, 49, 421.047, 1458.65, 771.059, NULL, 0),
|
||||
(243577, 50, 420.639, 1455.66, 771.744, NULL, 0),
|
||||
(243577, 51, 420.347, 1452.73, 772.418, NULL, 0),
|
||||
(243577, 52, 420, 1449.59, 772.758, NULL, 0),
|
||||
(243577, 53, 419.555, 1446.55, 772.844, NULL, 0),
|
||||
(243577, 54, 419.527, 1444.09, 772.69, NULL, 0),
|
||||
(243577, 55, 420.012, 1441.05, 772.664, NULL, 0),
|
||||
(243577, 56, 420.512, 1438.32, 772.671, NULL, 0),
|
||||
(243577, 57, 421.431, 1435.38, 772.685, NULL, 0),
|
||||
(243577, 58, 422.348, 1432.46, 772.819, NULL, 0),
|
||||
(243577, 59, 423.365, 1430.44, 772.697, NULL, 0),
|
||||
(243577, 60, 425.32, 1428.06, 772.664, NULL, 0),
|
||||
(243577, 61, 427.284, 1425.68, 772.728, NULL, 0),
|
||||
(243577, 62, 429.257, 1424.18, 772.782, NULL, 0),
|
||||
(243577, 63, 431.81, 1422.2, 772.791, NULL, 0),
|
||||
(243577, 64, 434.217, 1420.42, 772.751, NULL, 0),
|
||||
(243577, 65, 436.709, 1418.64, 772.429, NULL, 0),
|
||||
(243577, 66, 439.116, 1417.03, 771.734, NULL, 0),
|
||||
(243577, 67, 441.692, 1415.48, 771.134, NULL, 0),
|
||||
(243577, 68, 443.986, 1414.18, 770.556, NULL, 0),
|
||||
(243577, 69, 446.812, 1413.08, 769.907, NULL, 0),
|
||||
(243577, 70, 449.631, 1411.99, 769.273, NULL, 0),
|
||||
(243577, 71, 452.185, 1411.51, 768.583, NULL, 0),
|
||||
(243577, 72, 455.143, 1411.01, 767.863, NULL, 0),
|
||||
(243577, 73, 457.876, 1410.91, 767.276, NULL, 0),
|
||||
(243577, 74, 460.883, 1410.82, 766.629, NULL, 0),
|
||||
(243577, 75, 463.687, 1411.04, 766.026, NULL, 0),
|
||||
(243577, 76, 466.459, 1411.32, 765.402, NULL, 0),
|
||||
(243577, 77, 469.426, 1411.9, 764.664, NULL, 0),
|
||||
(243577, 78, 469.65, 1409.86, 764.7, NULL, 0),
|
||||
(243577, 79, 469.651, 1409.86, 764.699, NULL, 0),
|
||||
(243577, 80, 477.215, 1414.74, 763.059, NULL, 0),
|
||||
(243577, 81, 479.872, 1416.28, 762.292, NULL, 0),
|
||||
(243577, 82, 481.742, 1417.87, 762.106, NULL, 0),
|
||||
(243577, 83, 483.966, 1419.78, 761.211, NULL, 0),
|
||||
(243577, 84, 486.063, 1421.92, 760.265, NULL, 0),
|
||||
(243577, 85, 487.826, 1423.99, 759.804, NULL, 0),
|
||||
(243577, 86, 489.595, 1426.36, 758.859, NULL, 0),
|
||||
(243577, 87, 491.266, 1428.77, 758.153, NULL, 0),
|
||||
(243577, 88, 492.772, 1431.17, 757.649, NULL, 0),
|
||||
(243577, 89, 493.989, 1432.96, 757.442, NULL, 0),
|
||||
(243577, 90, 494.181, 1436.01, 757.323, NULL, 0),
|
||||
(243577, 91, 493.674, 1436.83, 757.259, NULL, 0),
|
||||
(243577, 92, 492.256, 1438.46, 757.278, NULL, 0),
|
||||
(243577, 93, 489.288, 1439.18, 757.412, NULL, 0),
|
||||
(243577, 94, 487.482, 1438.66, 757.536, NULL, 0),
|
||||
(243577, 95, 485.915, 1437.66, 757.604, NULL, 0),
|
||||
(243577, 96, 484.063, 1435.4, 757.656, NULL, 0),
|
||||
(243577, 97, 482.373, 1433.09, 756.492, NULL, 0),
|
||||
(243577, 98, 480.408, 1430.66, 755.344, NULL, 0),
|
||||
(243577, 99, 478.432, 1428.56, 754.382, NULL, 0),
|
||||
(243577, 100, 476.005, 1426.4, 753.537, NULL, 0),
|
||||
(243577, 101, 473.666, 1424.68, 752.412, NULL, 0),
|
||||
(243577, 102, 473.666, 1424.68, 752.412, NULL, 0),
|
||||
(243577, 103, 473.666, 1424.68, 752.412, NULL, 0),
|
||||
(243577, 104, 473.666, 1424.68, 752.412, NULL, 0),
|
||||
(243577, 105, 473.666, 1424.68, 752.412, NULL, 0),
|
||||
(243577, 106, 473.666, 1424.68, 752.412, NULL, 0),
|
||||
(243577, 107, 470.558, 1423, 751.247, NULL, 0),
|
||||
(243577, 108, 467.799, 1422.14, 750.429, NULL, 0),
|
||||
(243577, 109, 464.682, 1421.47, 749.263, NULL, 0),
|
||||
(243577, 110, 461.82, 1421.03, 748.429, NULL, 0),
|
||||
(243577, 111, 458.523, 1421.07, 747.585, NULL, 0),
|
||||
(243577, 112, 455.631, 1421.22, 746.376, NULL, 0),
|
||||
(243577, 113, 452.499, 1421.85, 745.46, NULL, 0),
|
||||
(243577, 114, 449.563, 1422.53, 744.548, NULL, 0),
|
||||
(243577, 115, 446.674, 1423.52, 743.494, NULL, 0),
|
||||
(243577, 116, 443.984, 1424.24, 742.848, NULL, 0),
|
||||
(243577, 117, 441.076, 1424.94, 742.054, NULL, 0),
|
||||
(243577, 118, 438.091, 1425.64, 742.054, NULL, 0),
|
||||
(243577, 119, 434.852, 1426.78, 742.054, NULL, 0),
|
||||
(243577, 120, 431.627, 1428.42, 742.093, NULL, 0),
|
||||
(243577, 121, 429.287, 1430.39, 742.065, NULL, 0),
|
||||
(243577, 122, 427.075, 1433.13, 742.46, NULL, 0);
|
||||
|
||||
|
||||
|
||||
-- NPC Durael (132224)
|
||||
UPDATE `creature_template_addon` SET `emote`=613 WHERE `entry`=132224;
|
||||
|
||||
|
||||
|
||||
-- NPC Lightforged Artificer (132225)
|
||||
DELETE FROM `creature` WHERE `guid`=243566;
|
||||
UPDATE `creature_template_addon` SET `SheathState`=0 WHERE `entry`=132225;
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid`=132225 AND `source_type`=0;
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid` IN (13222500,13222501) AND `source_type`=9;
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(132225, 0, 0, 0, 60, 0, 100, 0, 5000, 10000, 10000, 15000, 88, 13222500, 13222501, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Lightforged Artificer - On Update - Run Random Actionlist'),
|
||||
|
||||
(13222500, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 10, 1, 113, 29, 574, 71, 400, 1, 0, 0, 0, 0, 0, 0, 0, 'Lightforged Artificer - Play Random Emote'),
|
||||
(13222501, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 10, 1, 5, 6, 29, 604, 661, 1, 0, 0, 0, 0, 0, 0, 0, 'Lightforged Artificer - Play Random Emote');
|
||||
|
||||
|
||||
|
||||
-- NPC Lightforged Protector (132262)
|
||||
UPDATE `creature_template_addon` SET `aiAnimKit`=12976 WHERE `entry`=132262;
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid`=132262 AND `source_type`=0;
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `Difficulties`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param_string`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `action_param7`, `action_param_string`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_param_string`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(132262, 0, 0, 0, '', 60, 0, 100, 0, 1000, 1000, 300000, 300000, 0, '', 11, 79968, 1, 0, 0, 0, 0, 0, NULL, 1, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 'Lightforged Protector - On Update - Cast Blessing of Kings');
|
||||
|
||||
|
||||
|
||||
-- NPC Lightforged Protector (132266)
|
||||
UPDATE `creature_template_addon` SET `aiAnimKit`=14737 WHERE `entry`=132266;
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid`=132266 AND `source_type`=0;
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `Difficulties`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param_string`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `action_param7`, `action_param_string`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_param_string`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(132266, 0, 0, 0, '', 60, 0, 100, 0, 1000, 1000, 300000, 300000, 0, '', 11, 79968, 1, 0, 0, 0, 0, 0, NULL, 1, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 'Lightforged Protector - On Update - Cast Blessing of Kings');
|
||||
|
||||
|
||||
|
||||
-- NPC Yalia (132323)
|
||||
UPDATE `creature_template_addon` SET `SheathState`=0, `emote`=69 WHERE `entry`=132323;
|
||||
|
||||
|
||||
|
||||
-- NPC Jarus (132325)
|
||||
UPDATE `creature_template` SET `AIName`='' WHERE `entry`=132325;
|
||||
UPDATE `creature_template_addon` SET `SheathState`=0, `emote`=426, `aiAnimKit`=7276 WHERE `entry`=132325;
|
||||
|
||||
|
||||
|
||||
-- NPC Lightforged Bulwark (132328)
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid` IN (132328,-243617) AND `source_type`=0;
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid` IN (13232800,13232801) AND `source_type`=9;
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(132328, 0, 0, 0, 60, 0, 100, 0, 5000, 10000, 10000, 15000, 88, 13232800, 13232801, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Lightforged Bulwark - On Update - Run Random Actionlist'),
|
||||
|
||||
(-243617, 0, 0, 0, 25, 0, 100, 1, 0, 0, 0, 0, 17, 492, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Lightforged Bulwark - On Reset - Set Emote State'),
|
||||
|
||||
(13232800, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 10, 1, 113, 29, 574, 71, 400, 1, 0, 0, 0, 0, 0, 0, 0, 'Lightforged Bulwark - Play Random Emote'),
|
||||
(13232801, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 10, 1, 5, 6, 29, 604, 661, 1, 0, 0, 0, 0, 0, 0, 0, 'Lightforged Bulwark - Play Random Emote');
|
||||
|
||||
|
||||
|
||||
-- NPC Grand Artificer Romuul (132334)
|
||||
UPDATE `creature_template` SET `AIName`='' WHERE `entry`=132334;
|
||||
|
||||
|
||||
|
||||
-- NPC Enstraa (132358)
|
||||
UPDATE `creature_template_addon` SET `emote`=641 WHERE `entry`=132358;
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,235 @@
|
||||
DELETE FROM `creature_equip_template` WHERE (`CreatureID`=268753 AND `ID`=1);
|
||||
INSERT INTO `creature_equip_template` (`CreatureID`, `ID`, `ItemID1`, `AppearanceModID1`, `ItemVisual1`, `ItemID2`, `AppearanceModID2`, `ItemVisual2`, `ItemID3`, `AppearanceModID3`, `ItemVisual3`, `VerifiedBuild`) VALUES
|
||||
(268753, 1, 268215, 0, 0, 0, 0, 0, 0, 0, 0, 69587); -- Kursak the Coiled
|
||||
|
||||
REPLACE INTO `conversation_actors` (`ConversationId`, `ConversationActorId`, `Idx`, `CreatureId`, `CreatureDisplayInfoId`, `NoActorObject`, `ActivePlayerObject`, `VerifiedBuild`) VALUES
|
||||
(28589, 105534, 0, 235535, 124899, 0, 0, 69587), -- Full: 0x2041F15A60E603C001058B00001ECF33 Creature/0 R4220/S66955 Map: 2771 (Voidstorm) Entry: 235535 (Lothraxion) Low: 2019123
|
||||
(32187, 111767, 0, 241034, 124899, 0, 0, 69587);
|
||||
|
||||
|
||||
DELETE FROM `conversation_line_template` WHERE `Id` IN (78725, 89172);
|
||||
INSERT INTO `conversation_line_template` (`Id`, `UiCameraID`, `ActorIdx`, `Flags`, `ChatType`, `VerifiedBuild`) VALUES
|
||||
(78725, 0, 0, 0, 0, 69587),
|
||||
(89172, 1890, 0, 0, 0, 69587);
|
||||
|
||||
|
||||
DELETE FROM `conversation_template` WHERE `Id` IN (32187, 28589);
|
||||
INSERT INTO `conversation_template` (`Id`, `FirstLineID`, `TextureKitId`, `VerifiedBuild`) VALUES
|
||||
(32187, 89172, 0, 69587),
|
||||
(28589, 78725, 0, 69587);
|
||||
|
||||
|
||||
DELETE FROM `ui_map_quest` WHERE (`UIMapId`=2405 AND `QuestId` IN (96048,92195,92364));
|
||||
INSERT INTO `ui_map_quest` (`UIMapId`, `QuestId`, `VerifiedBuild`) VALUES
|
||||
(2405, 96048, 69587), -- The Time to Strike
|
||||
(2405, 92195, 69587), -- Come On Down
|
||||
(2405, 92364, 69587); -- Sun Support
|
||||
|
||||
|
||||
DELETE FROM `world_quest_template` WHERE `QuestID` IN (57219 /*Unearthed Keeper*/, 54836 /*Commander Drald*/, 56163 /*Bound Elemental*/, 51665 /*Broodmother Razora*/, 56400 /*Unit 17*/, 52979 /*Ritual Cleansing*/, 57234 /*Solar Collector*/, 54829 /*Stonebinder Ssra'vess*/, 55828 /*Bounty: More Murlocs*/, 81862 /*Feline Frenzy*/, 60842 /*To Serve Spriggan*/, 55973 /*Deepcoil Experiments*/, 49050 /*Shadeflicker*/, 51546 /*It's the Pits*/, 58285 /*Unearthed Artifacts*/, 53979 /*Naga Attack!*/, 51640 /*Beachhead*/, 51619 /*Trapline*/, 52464 /*Osca the Bloodied*/, 55824 /*Bounty: A Few Snapdragons*/, 52507 /*Sticky Mess*/, 75657 /*Time-Lost Trio*/, 56074 /*Void Conduit*/, 55670 /*Amathet Raiding Fleet*/, 50850 /*Tia'Kawan*/, 50600 /*Order of Embers*/, 55888 /*Champion Qalina, Spear of Ice*/, 52779 /*Crawg in the Bog*/, 54673 /*Tip of the Trident*/, 53346 /*Trogg Tromping*/, 51033 /*Supplies Needed: Mistscale*/, 56036 /*A Steamy Situation*/, 54825 /*Alash'anir*/, 61342 /*Battles Won Long Ago*/, 56384 /*Shadowspike Lurker*/);
|
||||
INSERT INTO `world_quest_template` (`QuestID`, `Duration`, `VariableID`, `Value`) VALUES
|
||||
(57219, 86400, 18469, 1), -- Unearthed Keeper
|
||||
(54836, 86400, 17031, 1), -- Commander Drald
|
||||
(56163, 86400, 18087, 1), -- Bound Elemental
|
||||
(51665, 86400, 15435, 1), -- Broodmother Razora
|
||||
(56400, 86400, 17788, 8), -- Unit 17
|
||||
(52979, 86400, 16004, 2), -- Ritual Cleansing
|
||||
(57234, 86400, 18471, 1), -- Solar Collector
|
||||
(54829, 86400, 17024, 1), -- Stonebinder Ssra'vess
|
||||
(55828, 86400, 17523, 1), -- Bounty: More Murlocs
|
||||
(81862, 345600, 26477, 1), -- Feline Frenzy
|
||||
(60842, 86400, 19476, 2), -- To Serve Spriggan
|
||||
(55973, 86400, 17619, 1), -- Deepcoil Experiments
|
||||
(49050, 86400, 14316, 1), -- Shadeflicker
|
||||
(51546, 86400, 14985, 1), -- It's the Pits
|
||||
(58285, 86400, 18449, 1), -- Unearthed Artifacts
|
||||
(53979, 86400, 16485, 1), -- Naga Attack!
|
||||
(51640, 86400, 15310, 1), -- Beachhead
|
||||
(51619, 86400, 15493, 1), -- Trapline
|
||||
(52464, 86400, 15764, 1), -- Osca the Bloodied
|
||||
(55824, 86400, 17519, 1), -- Bounty: A Few Snapdragons
|
||||
(52507, 86400, 15889, 1), -- Sticky Mess
|
||||
(75657, 86400, 24019, 1), -- Time-Lost Trio
|
||||
(56074, 86400, 18093, 1), -- Void Conduit
|
||||
(55670, 86400, 18463, 1), -- Amathet Raiding Fleet
|
||||
(50850, 86400, 14940, 1), -- Tia'Kawan
|
||||
(50600, 259200, 14884, 1), -- Order of Embers
|
||||
(55888, 259200, 17588, 1), -- Champion Qalina, Spear of Ice
|
||||
(52779, 86400, 15890, 1), -- Crawg in the Bog
|
||||
(54673, 86400, 17065, 1), -- Tip of the Trident
|
||||
(53346, 86400, 15139, 4), -- Trogg Tromping
|
||||
(51033, 86400, 16093, 6), -- Supplies Needed: Mistscale
|
||||
(56036, 86400, 17683, 1), -- A Steamy Situation
|
||||
(54825, 86400, 17019, 1), -- Alash'anir
|
||||
(61342, 86400, 19734, 2), -- Battles Won Long Ago
|
||||
(56384, 86400, 17787, 4); -- Shadowspike Lurker
|
||||
|
||||
UPDATE `world_quest_template` SET `VariableID`=14062 WHERE `QuestID`=49091; -- Invasion Point: Val
|
||||
|
||||
|
||||
UPDATE `spawn_tracking_template` SET `PhaseId`=0 WHERE `SpawnTrackingId` IN (2478335, 2291865, 2291871);
|
||||
|
||||
DELETE FROM `creature_template_addon` WHERE `entry`=268753;
|
||||
INSERT INTO `creature_template_addon` (`entry`, `PathId`, `mount`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvpFlags`, `emote`, `aiAnimKit`, `movementAnimKit`, `meleeAnimKit`, `visibilityDistanceType`, `auras`) VALUES
|
||||
(268753, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '1260302'); -- 268753 (Kursak the Coiled) - Recovering Strength
|
||||
|
||||
|
||||
UPDATE `creature_model_info` SET `CombatReach`=1.5 WHERE `DisplayID`=118072;
|
||||
UPDATE `creature_model_info` SET `BoundingRadius`=1, `CombatReach`=1.5 WHERE `DisplayID`=137452;
|
||||
UPDATE `creature_model_info` SET `BoundingRadius`=1.654816031455993652, `CombatReach`=2.160000085830688476 WHERE `DisplayID`=145588;
|
||||
UPDATE `creature_model_info` SET `BoundingRadius`=3.539993524551391601 WHERE `DisplayID`=128549;
|
||||
|
||||
DELETE FROM `creature_template_gossip` WHERE (`CreatureID`=235535 AND `MenuID`=38425);
|
||||
INSERT INTO `creature_template_gossip` (`CreatureID`, `MenuID`, `VerifiedBuild`) VALUES
|
||||
(235535, 38425, 69587); -- Lothraxion
|
||||
|
||||
UPDATE `gameobject_template` SET `Data7`=10481 WHERE `entry`=618571;
|
||||
|
||||
DELETE FROM `page_text` WHERE `ID`=10481;
|
||||
INSERT INTO `page_text` (`ID`, `Text`, `NextPageID`, `PlayerConditionID`, `Flags`, `VerifiedBuild`) VALUES
|
||||
(10481, '<The Shadowgraft hums. It calls to you with the promise of power.\n\nYou reach a hand out before you can stop yourself. As your skin touches the cold metal, you feel a rush of power.\n\nThe thrill of battle. The soaring heartbeat of a duel. The off-beat note of a parry.\n\nThe brutal satisfaction of sinking your blade into your enemy\'s flesh, that feeling both disgusting and triumphant.\n\nYour fingers tingle. Your vision is red. You have already grabbed your weapon, turning to fight the next enemy.\n\nAs you step away from the Shadowgraft, your vision returns to normal. Your breath returns and your heartbeat slows.\n\nYou know deep in your bones that this metal will make you braver and stronger.\n\nYou also know that if you are bound by it, you will never be yourself again.>', 0, 0, 0, 69587); -- 10481
|
||||
|
||||
|
||||
DELETE FROM `quest_details` WHERE `ID` IN (86530 /*First, The Shells*/, 86531 /*Work Disruption*/, 86536 /*Reliable Enemies*/, 86565 /*No Prayer for the Wicked*/);
|
||||
INSERT INTO `quest_details` (`ID`, `Emote1`, `Emote2`, `Emote3`, `Emote4`, `EmoteDelay1`, `EmoteDelay2`, `EmoteDelay3`, `EmoteDelay4`, `VerifiedBuild`) VALUES
|
||||
(86530, 1, 0, 0, 0, 0, 0, 0, 0, 69587), -- First, The Shells
|
||||
(86531, 1, 0, 0, 0, 0, 0, 0, 0, 69587), -- Work Disruption
|
||||
(86536, 1, 0, 0, 0, 0, 0, 0, 0, 69587), -- Reliable Enemies
|
||||
(86565, 669, 0, 0, 0, 0, 0, 0, 0, 69587); -- No Prayer for the Wicked
|
||||
|
||||
|
||||
DELETE FROM `ui_map_quest` WHERE (`UIMapId`=2405 AND `QuestId` IN (96048,92195,92122,92364));
|
||||
INSERT INTO `ui_map_quest` (`UIMapId`, `QuestId`, `VerifiedBuild`) VALUES
|
||||
(2405, 96048, 69587), -- The Time to Strike
|
||||
(2405, 92195, 69587), -- Come On Down
|
||||
(2405, 92122, 69587), -- Beneath the Sunsails
|
||||
(2405, 92364, 69587); -- Sun Support
|
||||
|
||||
|
||||
DELETE FROM `world_quest_template` WHERE `QuestID` IN (57219 /*Unearthed Keeper*/, 54836 /*Commander Drald*/, 56163 /*Bound Elemental*/, 51665 /*Broodmother Razora*/, 56400 /*Unit 17*/, 52979 /*Ritual Cleansing*/, 57234 /*Solar Collector*/, 54829 /*Stonebinder Ssra'vess*/, 55828 /*Bounty: More Murlocs*/, 81862 /*Feline Frenzy*/, 60842 /*To Serve Spriggan*/, 55973 /*Deepcoil Experiments*/, 49050 /*Shadeflicker*/, 51546 /*It's the Pits*/, 58285 /*Unearthed Artifacts*/, 53979 /*Naga Attack!*/, 51640 /*Beachhead*/, 51619 /*Trapline*/, 52464 /*Osca the Bloodied*/, 53753 /*Shell Outs*/, 51982 /*Storm's Rage*/, 55824 /*Bounty: A Few Snapdragons*/, 75657 /*Time-Lost Trio*/, 56074 /*Void Conduit*/, 55670 /*Amathet Raiding Fleet*/, 92566 /*92566*/, 48729 /*Ataxon*/, 50850 /*Tia'Kawan*/, 50600 /*Order of Embers*/, 55888 /*Champion Qalina, Spear of Ice*/, 52779 /*Crawg in the Bog*/, 54647 /*Ale Intent*/, 54673 /*Tip of the Trident*/, 53346 /*Trogg Tromping*/, 51033 /*Supplies Needed: Mistscale*/, 53724 /*Shadow Hunter Mutumba*/, 53768 /*Furious Fracas*/, 56036 /*A Steamy Situation*/, 54825 /*Alash'anir*/, 53715 /*Firewarden Viton Darkflare*/, 61342 /*Battles Won Long Ago*/, 56384 /*Shadowspike Lurker*/);
|
||||
INSERT INTO `world_quest_template` (`QuestID`, `Duration`, `VariableID`, `Value`) VALUES
|
||||
(57219, 86400, 18469, 1), -- Unearthed Keeper
|
||||
(54836, 86400, 17031, 1), -- Commander Drald
|
||||
(56163, 86400, 18087, 1), -- Bound Elemental
|
||||
(51665, 86400, 15435, 1), -- Broodmother Razora
|
||||
(56400, 86400, 17788, 8), -- Unit 17
|
||||
(52979, 86400, 16004, 2), -- Ritual Cleansing
|
||||
(57234, 86400, 18471, 1), -- Solar Collector
|
||||
(54829, 86400, 17024, 1), -- Stonebinder Ssra'vess
|
||||
(55828, 86400, 17523, 1), -- Bounty: More Murlocs
|
||||
(81862, 345600, 26477, 1), -- Feline Frenzy
|
||||
(60842, 86400, 19476, 2), -- To Serve Spriggan
|
||||
(55973, 86400, 17619, 1), -- Deepcoil Experiments
|
||||
(49050, 86400, 14316, 1), -- Shadeflicker
|
||||
(51546, 86400, 14985, 1), -- It's the Pits
|
||||
(58285, 86400, 18449, 1), -- Unearthed Artifacts
|
||||
(53979, 86400, 16485, 1), -- Naga Attack!
|
||||
(51640, 86400, 15310, 1), -- Beachhead
|
||||
(51619, 86400, 15493, 1), -- Trapline
|
||||
(52464, 86400, 15764, 1), -- Osca the Bloodied
|
||||
(53753, 25200, 16289, 1), -- Shell Outs
|
||||
(51982, 25200, 16289, 1), -- Storm's Rage
|
||||
(55824, 86400, 17519, 1), -- Bounty: A Few Snapdragons
|
||||
(75657, 86400, 24019, 1), -- Time-Lost Trio
|
||||
(56074, 86400, 18093, 1), -- Void Conduit
|
||||
(55670, 86400, 18463, 1), -- Amathet Raiding Fleet
|
||||
(92566, 302400, 29823, 1), -- 92566
|
||||
(48729, 86400, 14179, 1), -- Ataxon
|
||||
(50850, 86400, 14940, 1), -- Tia'Kawan
|
||||
(50600, 259200, 14884, 1), -- Order of Embers
|
||||
(55888, 259200, 17588, 1), -- Champion Qalina, Spear of Ice
|
||||
(52779, 86400, 15890, 1), -- Crawg in the Bog
|
||||
(54647, 25200, 16289, 1), -- Ale Intent
|
||||
(54673, 86400, 17065, 1), -- Tip of the Trident
|
||||
(53346, 86400, 15139, 4), -- Trogg Tromping
|
||||
(51033, 86400, 16093, 6), -- Supplies Needed: Mistscale
|
||||
(53724, 25200, 16289, 1), -- Shadow Hunter Mutumba
|
||||
(53768, 25200, 16289, 1), -- Furious Fracas
|
||||
(56036, 86400, 17683, 1), -- A Steamy Situation
|
||||
(54825, 86400, 17019, 1), -- Alash'anir
|
||||
(53715, 25200, 16289, 1), -- Firewarden Viton Darkflare
|
||||
(61342, 86400, 19734, 2), -- Battles Won Long Ago
|
||||
(56384, 86400, 17787, 4); -- Shadowspike Lurker
|
||||
|
||||
UPDATE `world_quest_template` SET `VariableID`=14247 WHERE `QuestID`=49096; -- Invasion Point: Naigtal
|
||||
UPDATE `world_quest_template` SET `VariableID`=14062 WHERE `QuestID`=49091; -- Invasion Point: Val
|
||||
UPDATE `world_quest_template` SET `VariableID`=14061 WHERE `QuestID`=48982; -- Invasion Point: Aurinor
|
||||
|
||||
DELETE FROM `spawn_tracking_template` WHERE `SpawnTrackingId` IN (2702275 /*Map: 2771 (Voidstorm) - Phase: 25963*/, 2703730 /*Map: 2771 (Voidstorm) - Phase: 25966*/, 2702280 /*Map: 2771 (Voidstorm) - Phase: 25964*/, 2703732 /*Map: 2771 (Voidstorm) - Phase: 25965*/, 2703356 /*Map: 2771 (Voidstorm) - Phase: 27316*/, 2702278 /*Map: 2771 (Voidstorm) - Phase: 25964*/, 2703358 /*Map: 2771 (Voidstorm) - Phase: 26477*/, 2703339 /*Map: 2771 (Voidstorm) - Phase: 25853*/, 2703322 /*Map: 2771 (Voidstorm) - Phase: 0*/, 2799645 /*Map: 2771 (Voidstorm) - Phase: 0*/, 2703359 /*Map: 2771 (Voidstorm) - Phase: 27316*/);
|
||||
INSERT INTO `spawn_tracking_template` (`SpawnTrackingId`, `MapId`, `PhaseId`, `PhaseGroup`, `PhaseUseFlags`, `VerifiedBuild`) VALUES
|
||||
(2702275, 2771, 25963, 0, 0, 69587), -- Map: 2771 (Voidstorm) - Phase: 25963
|
||||
(2703730, 2771, 25966, 0, 0, 69587), -- Map: 2771 (Voidstorm) - Phase: 25966
|
||||
(2702280, 2771, 25964, 0, 0, 69587), -- Map: 2771 (Voidstorm) - Phase: 25964
|
||||
(2703732, 2771, 25965, 0, 0, 69587), -- Map: 2771 (Voidstorm) - Phase: 25965
|
||||
(2703356, 2771, 27316, 0, 0, 69587), -- Map: 2771 (Voidstorm) - Phase: 27316
|
||||
(2702278, 2771, 25964, 0, 0, 69587), -- Map: 2771 (Voidstorm) - Phase: 25964
|
||||
(2703358, 2771, 26477, 0, 0, 69587), -- Map: 2771 (Voidstorm) - Phase: 26477
|
||||
(2703339, 2771, 25853, 0, 0, 69587), -- Map: 2771 (Voidstorm) - Phase: 25853
|
||||
(2703322, 2771, 0, 0, 0, 69587), -- Map: 2771 (Voidstorm) - Phase: 0
|
||||
(2799645, 2771, 0, 0, 0, 69587), -- Map: 2771 (Voidstorm) - Phase: 0
|
||||
(2703359, 2771, 27316, 0, 0, 69587); -- Map: 2771 (Voidstorm) - Phase: 27316
|
||||
|
||||
UPDATE `spawn_tracking_template` SET `PhaseId`=0 WHERE `SpawnTrackingId` IN (2478335, 2291865, 2291871);
|
||||
|
||||
DELETE FROM `spawn_tracking_quest_objective` WHERE (`SpawnTrackingId`=2703730 AND `QuestObjectiveId`=459674) OR (`SpawnTrackingId`=2702278 AND `QuestObjectiveId`=464297) OR (`SpawnTrackingId`=2703358 AND `QuestObjectiveId`=459779) OR (`SpawnTrackingId`=2703339 AND `QuestObjectiveId`=456983) OR (`SpawnTrackingId`=2703322 AND `QuestObjectiveId`=456982) OR (`SpawnTrackingId`=2799645 AND `QuestObjectiveId`=461332);
|
||||
INSERT INTO `spawn_tracking_quest_objective` (`SpawnTrackingId`, `QuestObjectiveId`, `VerifiedBuild`) VALUES
|
||||
(2703730, 459674, 69587), -- 2703730
|
||||
(2702278, 464297, 69587), -- 2702278
|
||||
(2703358, 459779, 69587), -- 2703358
|
||||
(2703339, 456983, 69587), -- 2703339
|
||||
(2703322, 456982, 69587), -- 2703322
|
||||
(2799645, 461332, 69587); -- 2799645
|
||||
|
||||
DELETE FROM `spell_target_position` WHERE (`ID`=1233371 AND `EffectIndex`=1 AND `OrderIndex`=0);
|
||||
INSERT INTO `spell_target_position` (`ID`, `EffectIndex`, `OrderIndex`, `MapID`, `PositionX`, `PositionY`, `PositionZ`, `VerifiedBuild`) VALUES
|
||||
(1233371, 1, 0, 2771, 2903.85009765625, 2013.3299560546875, 180.3699951171875, 69587); -- Spell: 1233371 ([DNT] Start Scene) Effect 1: 252 (SPELL_EFFECT_TELEPORT_UNITS)
|
||||
|
||||
|
||||
DELETE FROM `creature_template_difficulty` WHERE (`Entry`=217429 AND `DifficultyID`=1);
|
||||
INSERT INTO `creature_template_difficulty` (`Entry`, `DifficultyID`, `HealthScalingExpansion`, `HealthModifier`, `ManaModifier`, `CreatureDifficultyID`, `TypeFlags`, `TypeFlags2`, `TypeFlags3`) VALUES
|
||||
(217429, 1, 11, 2, 1, 266922, 0x0, 1, 0); -- Overfiend
|
||||
|
||||
UPDATE `creature_template_difficulty` SET `HealthScalingExpansion`=11, `HealthModifier`=1.5, `ManaModifier`=1.5, `CreatureDifficultyID`=55991 WHERE (`Entry`=62821 AND `DifficultyID`=1); -- Mystic Birdhat
|
||||
UPDATE `creature_template_difficulty` SET `HealthScalingExpansion`=11, `HealthModifier`=1, `CreatureDifficultyID`=55992 WHERE (`Entry`=62822 AND `DifficultyID`=1); -- Cousin Slowhands
|
||||
UPDATE `creature_template_difficulty` SET `HealthScalingExpansion`=11 WHERE (`Entry`=166949 AND `DifficultyID`=1); -- Chi-Ji
|
||||
|
||||
|
||||
UPDATE `creature_model_info` SET `BoundingRadius`=3.539993524551391601 WHERE `DisplayID`=128549;
|
||||
UPDATE `creature_model_info` SET `BoundingRadius`=1, `CombatReach`=2 WHERE `DisplayID`=145977;
|
||||
UPDATE `creature_model_info` SET `BoundingRadius`=1 WHERE `DisplayID`=146677;
|
||||
UPDATE `creature_model_info` SET `BoundingRadius`=0.949782073497772216 WHERE `DisplayID`=146663;
|
||||
UPDATE `creature_model_info` SET `BoundingRadius`=1.358234524726867675 WHERE `DisplayID`=144271;
|
||||
UPDATE `creature_model_info` SET `BoundingRadius`=1.654816031455993652, `CombatReach`=2.160000085830688476 WHERE `DisplayID`=146372;
|
||||
UPDATE `creature_model_info` SET `BoundingRadius`=3.483673095703125, `CombatReach`=3.60000014305114746 WHERE `DisplayID`=146986;
|
||||
UPDATE `creature_model_info` SET `BoundingRadius`=1.049999952316284179, `CombatReach`=1.75 WHERE `DisplayID`=147574;
|
||||
UPDATE `creature_model_info` SET `BoundingRadius`=2.615614652633666992, `CombatReach`=1.399999976158142089 WHERE `DisplayID`=137230;
|
||||
UPDATE `creature_model_info` SET `BoundingRadius`=1.039555668830871582, `CombatReach`=1 WHERE `DisplayID`=131269;
|
||||
|
||||
DELETE FROM `creature_template_gossip` WHERE (`CreatureID`=235392 AND `MenuID`=38393) OR (`CreatureID`=235607 AND `MenuID`=38620) OR (`CreatureID`=235537 AND `MenuID`=39205) OR (`CreatureID`=235535 AND `MenuID`=38425);
|
||||
INSERT INTO `creature_template_gossip` (`CreatureID`, `MenuID`, `VerifiedBuild`) VALUES
|
||||
(235392, 38393, 69587), -- Decimus
|
||||
(235607, 38620, 69587), -- Decimus
|
||||
(235537, 39205, 69587), -- Arator
|
||||
(235535, 38425, 69587); -- Lothraxion
|
||||
|
||||
|
||||
REPLACE INTO `npc_text` (`ID`, `Probability0`, `Probability1`, `Probability2`, `Probability3`, `Probability4`, `Probability5`, `Probability6`, `Probability7`, `BroadcastTextId0`, `BroadcastTextId1`, `BroadcastTextId2`, `BroadcastTextId3`, `BroadcastTextId4`, `BroadcastTextId5`, `BroadcastTextId6`, `BroadcastTextId7`, `VerifiedBuild`) VALUES
|
||||
(235537, 1, 0, 0, 0, 0, 0, 0, 0, 289834, 0, 0, 0, 0, 0, 0, 0, 69587), -- 235537 (Arator)
|
||||
(235392, 1, 0, 0, 0, 0, 0, 0, 0, 297403, 0, 0, 0, 0, 0, 0, 0, 69587), -- 235392 (Decimus)
|
||||
(235607, 1, 0, 0, 0, 0, 0, 0, 0, 285822, 0, 0, 0, 0, 0, 0, 0, 69587); -- 235607 (Decimus)
|
||||
|
||||
REPLACE INTO `gossip_menu` (`MenuID`, `TextID`, `VerifiedBuild`) VALUES
|
||||
(39205, 235537, 69587), -- 235537 (Arator)
|
||||
(38393, 235392, 69587), -- 235392 (Decimus)
|
||||
(38620, 235607, 69587); -- 235607 (Decimus)
|
||||
|
||||
|
||||
DELETE FROM `gossip_menu_option` WHERE (`MenuID`=39205 AND `OptionID`=0) OR (`MenuID`=38393 AND `OptionID`=0) OR (`MenuID`=38620 AND `OptionID` IN (2,0,1));
|
||||
INSERT INTO `gossip_menu_option` (`MenuID`, `GossipOptionID`, `OptionID`, `OptionNpc`, `OptionText`, `OptionBroadcastTextID`, `Language`, `Flags`, `ActionMenuID`, `ActionPoiID`, `GossipNpcOptionID`, `BoxCoded`, `BoxMoney`, `BoxText`, `BoxBroadcastTextID`, `SpellID`, `OverrideIconID`, `VerifiedBuild`) VALUES
|
||||
(39205, 133752, 0, 0, '<Ask Arator when he\'s planning on telling Alleria what Turalyon did at the Amani Pass.>', 0, 0, 0, 0, 0, NULL, 0, 0, '', 0, NULL, NULL, 69587),
|
||||
(38393, 135469, 0, 0, 'How did Xal\'atath take control of the ethereals?', 0, 0, 5, 0, 0, NULL, 0, 0, '', 0, NULL, NULL, 69587),
|
||||
(38620, 133628, 2, 0, '<Ask for more information about the domanaar.>', 0, 0, 0, 0, 0, NULL, 0, 0, '', 0, NULL, NULL, 69587),
|
||||
(38620, 132998, 0, 0, '<Apply force.>', 0, 0, 1, 0, 0, NULL, 0, 0, '', 0, NULL, NULL, 69587),
|
||||
(38620, 132848, 1, 0, '|cFFFF0000<Skip>|r I don\'t have time for this. Tell us what you know.', 0, 0, 1, 0, 0, NULL, 0, 0, '', 0, NULL, NULL, 69587);
|
||||
|
||||
|
||||
@@ -44,23 +44,37 @@
|
||||
#include "UpdateData.h"
|
||||
#include "ZoneScript.h"
|
||||
#include "advstd.h"
|
||||
#include <G3D/AABox.h>
|
||||
#include <G3D/Box.h>
|
||||
#include <G3D/CollisionDetection.h>
|
||||
#include <G3D/CoordinateFrame.h>
|
||||
#include <G3D/Cylinder.h>
|
||||
#include <G3D/Quat.h>
|
||||
#include <bit>
|
||||
|
||||
struct AreaTrigger::MovementUpdateResult
|
||||
enum class MovementUpdateResult
|
||||
{
|
||||
enum
|
||||
{
|
||||
None,
|
||||
Moved,
|
||||
Arrived
|
||||
} Status;
|
||||
None,
|
||||
Moved,
|
||||
Arrived
|
||||
};
|
||||
|
||||
struct AreaTrigger::MovementUpdateWorldResult
|
||||
{
|
||||
MovementUpdateResult Status;
|
||||
::Position Position;
|
||||
G3D::Quat Rotation;
|
||||
};
|
||||
|
||||
struct AreaTrigger::MovementUpdateLocalResult
|
||||
{
|
||||
MovementUpdateResult Status;
|
||||
G3D::Vector3 Position;
|
||||
float Rotation = 0.0f;
|
||||
G3D::Vector3 Rotation;
|
||||
};
|
||||
|
||||
AreaTrigger::AreaTrigger() : WorldObject(false), MapObject(), _spawnId(0), _aurEff(nullptr),
|
||||
_duration(0), _totalDuration(0), _verticesUpdatePreviousOrientation(std::numeric_limits<float>::infinity()),
|
||||
_duration(0), _totalDuration(0), _verticesUpdatePreviousRotation(),
|
||||
_isRemoved(false), _reachedDestination(true),
|
||||
_areaTriggerCreateProperties(nullptr), _areaTriggerTemplate(nullptr)
|
||||
{
|
||||
@@ -184,7 +198,7 @@ bool AreaTrigger::Create(AreaTriggerCreatePropertiesId areaTriggerCreateProperti
|
||||
{
|
||||
SetUpdateFieldValue(areaTriggerData.ModifyValue(&UF::AreaTriggerData::TimeToTargetScale), GetCreateProperties()->TimeToTargetScale != 0 ? GetCreateProperties()->TimeToTargetScale : *m_areaTriggerData->Duration);
|
||||
SetUpdateFieldValue(areaTriggerData.ModifyValue(&UF::AreaTriggerData::TimeToTargetPos), *m_areaTriggerData->Duration);
|
||||
SetUpdateFieldValue(areaTriggerData.ModifyValue(&UF::AreaTriggerData::TimeToTargetFacing), *m_areaTriggerData->Duration);
|
||||
SetUpdateFieldValue(areaTriggerData.ModifyValue(&UF::AreaTriggerData::TimeToTargetShape), *m_areaTriggerData->Duration);
|
||||
}
|
||||
SetUpdateFieldValue(areaTriggerData.ModifyValue(&UF::AreaTriggerData::BoundsRadius2D), GetCreateProperties()->Shape.GetMaxSearchRadius());
|
||||
SetUpdateFieldValue(areaTriggerData.ModifyValue(&UF::AreaTriggerData::DecalPropertiesID), GetCreateProperties()->DecalPropertiesId);
|
||||
@@ -291,12 +305,19 @@ bool AreaTrigger::Create(AreaTriggerCreatePropertiesId areaTriggerCreateProperti
|
||||
|
||||
SetUpdateFieldValue(areaTriggerData.ModifyValue(&UF::AreaTriggerData::Facing), _stationaryPosition.GetOrientation());
|
||||
|
||||
UpdateShape();
|
||||
|
||||
AI_Initialize();
|
||||
|
||||
UpdateDynamicShapeFlag();
|
||||
|
||||
// Calculate initial position and rotation
|
||||
{
|
||||
auto [_, movedPos, movedRot] = CalculateWorldPositionAndRotation();
|
||||
Relocate(movedPos);
|
||||
_rotation = { movedRot.x, movedRot.y, movedRot.z, movedRot.w };
|
||||
}
|
||||
|
||||
UpdateShape();
|
||||
|
||||
if (!IsStaticSpawn())
|
||||
{
|
||||
if (!GetMap()->AddToMap(this))
|
||||
@@ -451,19 +472,19 @@ void AreaTrigger::ClearOverrideMoveCurve()
|
||||
UpdateDynamicShapeFlag();
|
||||
}
|
||||
|
||||
void AreaTrigger::SetOverrideFacingCurve(float overrideFacing)
|
||||
void AreaTrigger::SetOverrideShapeCurve(float overrideFacing)
|
||||
{
|
||||
SetOverrideCurve(m_values.ModifyValue(&AreaTrigger::m_areaTriggerData).ModifyValue(&UF::AreaTriggerData::OverrideFacingCurve), overrideFacing);
|
||||
SetOverrideCurve(m_values.ModifyValue(&AreaTrigger::m_areaTriggerData).ModifyValue(&UF::AreaTriggerData::OverrideShapeCurve), overrideFacing);
|
||||
}
|
||||
|
||||
void AreaTrigger::SetOverrideFacingCurve(std::array<DBCPosition2D, 2> const& points, Optional<uint32> startTimeOffset, CurveInterpolationMode interpolation)
|
||||
void AreaTrigger::SetOverrideShapeCurve(std::array<DBCPosition2D, 2> const& points, Optional<uint32> startTimeOffset, CurveInterpolationMode interpolation)
|
||||
{
|
||||
SetOverrideCurve(m_values.ModifyValue(&AreaTrigger::m_areaTriggerData).ModifyValue(&UF::AreaTriggerData::OverrideFacingCurve), points, startTimeOffset, interpolation);
|
||||
SetOverrideCurve(m_values.ModifyValue(&AreaTrigger::m_areaTriggerData).ModifyValue(&UF::AreaTriggerData::OverrideShapeCurve), points, startTimeOffset, interpolation);
|
||||
}
|
||||
|
||||
void AreaTrigger::ClearOverrideFacingCurve()
|
||||
void AreaTrigger::ClearOverrideShapeCurve()
|
||||
{
|
||||
ClearOverrideCurve(m_values.ModifyValue(&AreaTrigger::m_areaTriggerData).ModifyValue(&UF::AreaTriggerData::OverrideFacingCurve));
|
||||
ClearOverrideCurve(m_values.ModifyValue(&AreaTrigger::m_areaTriggerData).ModifyValue(&UF::AreaTriggerData::OverrideShapeCurve));
|
||||
}
|
||||
|
||||
void AreaTrigger::SetSpellVisual(SpellCastVisual const& visual)
|
||||
@@ -474,6 +495,24 @@ void AreaTrigger::SetSpellVisual(SpellCastVisual const& visual)
|
||||
SetUpdateFieldValue(spellVisualMutator.ModifyValue(&UF::SpellCastVisual::ScriptVisualID), visual.ScriptVisualID);
|
||||
}
|
||||
|
||||
void AreaTrigger::SetRollPitchYaw(float roll, float pitch, float yaw,
|
||||
Optional<float> targetRoll, Optional<float> targetPitch, Optional<float> targetYaw)
|
||||
{
|
||||
auto areaTriggerData = m_values.ModifyValue(&AreaTrigger::m_areaTriggerData);
|
||||
|
||||
SetUpdateFieldValue(areaTriggerData.ModifyValue(&UF::AreaTriggerData::RollPitchYaw), { roll, pitch, yaw });
|
||||
if (targetRoll && targetPitch && targetYaw)
|
||||
{
|
||||
SetUpdateFieldValue(areaTriggerData.ModifyValue(&UF::AreaTriggerData::TargetRollPitchYaw, 0), { *targetRoll, *targetPitch, *targetYaw });
|
||||
SetAreaTriggerFlag(AreaTriggerFieldFlags::DynamicShape);
|
||||
}
|
||||
else
|
||||
{
|
||||
RemoveOptionalUpdateFieldValue(areaTriggerData.ModifyValue(&UF::AreaTriggerData::TargetRollPitchYaw));
|
||||
UpdateDynamicShapeFlag();
|
||||
}
|
||||
}
|
||||
|
||||
void AreaTrigger::SetDuration(int32 newDuration)
|
||||
{
|
||||
_duration = newDuration;
|
||||
@@ -501,21 +540,13 @@ float AreaTrigger::CalcCurrentScale() const
|
||||
if (m_areaTriggerData->OverrideScaleCurve->OverrideActive)
|
||||
scale *= std::max(GetOverrideCurveValue(*m_areaTriggerData->OverrideScaleCurve, m_areaTriggerData->TimeToTargetScale), 0.000001f);
|
||||
else if (m_areaTriggerData->ScaleCurveId)
|
||||
scale *= std::max(sDB2Manager.GetCurveValueAt(m_areaTriggerData->ScaleCurveId, GetOverrideCurveProgress(*m_areaTriggerData->OverrideScaleCurve, m_areaTriggerData->TimeToTargetScale)), 0.000001f);
|
||||
scale *= std::max(sDB2Manager.GetCurveValueAt(m_areaTriggerData->ScaleCurveId, GetScaleProgress()), 0.000001f);
|
||||
|
||||
scale *= std::max(GetOverrideCurveValue(*m_areaTriggerData->ExtraScaleCurve, m_areaTriggerData->TimeToTargetExtraScale), 0.000001f);
|
||||
|
||||
return scale;
|
||||
}
|
||||
|
||||
float AreaTrigger::GetProgress() const
|
||||
{
|
||||
if (_totalDuration <= 0)
|
||||
return 1.0f;
|
||||
|
||||
return std::clamp(float(GetTimeSinceCreated()) / float(GetTotalDuration()), 0.0f, 1.0f);
|
||||
}
|
||||
|
||||
float AreaTrigger::GetOverrideCurveProgress(UF::OverrideCurve const& overrideCurve, uint32 timeTo) const
|
||||
{
|
||||
if (!timeTo)
|
||||
@@ -727,7 +758,7 @@ void AreaTrigger::SearchUnits(std::vector<Unit*>& targetList, float radius, bool
|
||||
|
||||
void AreaTrigger::SearchUnitInSphere(UF::AreaTriggerSphere const& sphere, std::vector<Unit*>& targetList)
|
||||
{
|
||||
float progress = GetProgress();
|
||||
float progress = GetShapeProgress();
|
||||
if (m_areaTriggerData->MorphCurveId)
|
||||
progress = sDB2Manager.GetCurveValueAt(m_areaTriggerData->MorphCurveId, progress);
|
||||
|
||||
@@ -735,11 +766,16 @@ void AreaTrigger::SearchUnitInSphere(UF::AreaTriggerSphere const& sphere, std::v
|
||||
float radius = G3D::lerp(sphere.Radius, sphere.RadiusTarget, progress) * scale;
|
||||
|
||||
SearchUnits(targetList, radius, true);
|
||||
|
||||
Trinity::Containers::EraseIf(targetList, [this, radius](Unit const* unit) -> bool
|
||||
{
|
||||
return !unit->IsWithinDist(this, radius);
|
||||
});
|
||||
}
|
||||
|
||||
void AreaTrigger::SearchUnitInBox(UF::AreaTriggerBox const& box, std::vector<Unit*>& targetList)
|
||||
{
|
||||
float progress = GetProgress();
|
||||
float progress = GetShapeProgress();
|
||||
if (m_areaTriggerData->MorphCurveId)
|
||||
progress = sDB2Manager.GetCurveValueAt(m_areaTriggerData->MorphCurveId, progress);
|
||||
|
||||
@@ -747,20 +783,32 @@ void AreaTrigger::SearchUnitInBox(UF::AreaTriggerBox const& box, std::vector<Uni
|
||||
float extentsX = G3D::lerp(box.Extents->Pos.GetPositionX(), box.ExtentsTarget->Pos.GetPositionX(), progress) * scale;
|
||||
float extentsY = G3D::lerp(box.Extents->Pos.GetPositionY(), box.ExtentsTarget->Pos.GetPositionY(), progress) * scale;
|
||||
float extentsZ = G3D::lerp(box.Extents->Pos.GetPositionZ(), box.ExtentsTarget->Pos.GetPositionZ(), progress) * scale;
|
||||
float radius = std::sqrt(extentsX * extentsX + extentsY * extentsY);
|
||||
float radius = std::sqrt(extentsX * extentsX + extentsY * extentsY + extentsZ * extentsZ);
|
||||
|
||||
SearchUnits(targetList, radius, false);
|
||||
|
||||
Position const& boxCenter = GetPosition();
|
||||
Trinity::Containers::EraseIf(targetList, [boxCenter, extentsX, extentsY, extentsZ](Unit const* unit) -> bool
|
||||
if (targetList.empty())
|
||||
return;
|
||||
|
||||
G3D::Box rotatedBox = G3D::CoordinateFrame(G3D::Quat(_rotation.x, _rotation.y, _rotation.z, _rotation.w), PositionToVector3(GetPosition()))
|
||||
.toWorldSpace(G3D::AABox({ -extentsX, -extentsY, -extentsZ / 2 }, { extentsX, extentsY, extentsZ / 2 }));
|
||||
|
||||
Trinity::Containers::EraseIf(targetList, [&rotatedBox](Unit const* unit) -> bool
|
||||
{
|
||||
return !unit->IsWithinBox(boxCenter, extentsX, extentsY, extentsZ / 2);
|
||||
return !rotatedBox.contains(PositionToVector3(*unit));
|
||||
});
|
||||
|
||||
#ifdef TRINITY_DEBUG
|
||||
// DebugVisualizeShape
|
||||
if (Player* caster = Object::ToPlayer(GetCaster()); caster && caster->isDebugAreaTriggers)
|
||||
for (int32 corner = 0; corner < 8; ++corner)
|
||||
caster->SummonCreature(1, Vector3ToPosition(rotatedBox.corner(corner)), TEMPSUMMON_TIMED_DESPAWN, 50ms);
|
||||
#endif
|
||||
}
|
||||
|
||||
void AreaTrigger::SearchUnitInPolygon(UF::AreaTriggerPolygon const& polygon, std::vector<Unit*>& targetList)
|
||||
{
|
||||
float progress = GetProgress();
|
||||
float progress = GetShapeProgress();
|
||||
if (m_areaTriggerData->MorphCurveId)
|
||||
progress = sDB2Manager.GetCurveValueAt(m_areaTriggerData->MorphCurveId, progress);
|
||||
|
||||
@@ -770,17 +818,33 @@ void AreaTrigger::SearchUnitInPolygon(UF::AreaTriggerPolygon const& polygon, std
|
||||
|
||||
SearchUnits(targetList, GetMaxSearchRadius(), false);
|
||||
|
||||
if (targetList.empty())
|
||||
return;
|
||||
|
||||
Trinity::Containers::EraseIf(targetList, [this, minZ, maxZ](Unit const* unit) -> bool
|
||||
{
|
||||
return unit->GetPositionZ() < minZ
|
||||
|| unit->GetPositionZ() > maxZ
|
||||
|| !unit->IsInPolygon2D(*this, _polygonVertices);
|
||||
});
|
||||
|
||||
#ifdef TRINITY_DEBUG
|
||||
// DebugVisualizeShape
|
||||
if (Player* caster = Object::ToPlayer(GetCaster()); caster && caster->isDebugAreaTriggers)
|
||||
{
|
||||
for (Position const& vertex : _polygonVertices)
|
||||
{
|
||||
G3D::Vector3 pos = PositionToVector3(GetPosition()) + PositionToVector3(vertex);
|
||||
caster->SummonCreature(1, Vector3ToPosition(pos + G3D::Vector3(0, 0, -height)), TEMPSUMMON_TIMED_DESPAWN, 50ms);
|
||||
caster->SummonCreature(1, Vector3ToPosition(pos + G3D::Vector3(0, 0, +height)), TEMPSUMMON_TIMED_DESPAWN, 50ms);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void AreaTrigger::SearchUnitInCylinder(UF::AreaTriggerCylinder const& cylinder, std::vector<Unit*>& targetList)
|
||||
{
|
||||
float progress = GetProgress();
|
||||
float progress = GetShapeProgress();
|
||||
if (m_areaTriggerData->MorphCurveId)
|
||||
progress = sDB2Manager.GetCurveValueAt(m_areaTriggerData->MorphCurveId, progress);
|
||||
|
||||
@@ -790,21 +854,35 @@ void AreaTrigger::SearchUnitInCylinder(UF::AreaTriggerCylinder const& cylinder,
|
||||
if (!HasAreaTriggerFlag(AreaTriggerFieldFlags::HeightIgnoresScale))
|
||||
height *= scale;
|
||||
|
||||
float minZ = GetPositionZ() - height;
|
||||
float maxZ = GetPositionZ() + height;
|
||||
float zOffset = G3D::lerp(cylinder.LocationZOffset, cylinder.LocationZOffsetTarget, progress) * scale;
|
||||
|
||||
SearchUnits(targetList, radius, false);
|
||||
SearchUnits(targetList, std::sqrt(radius * radius + height * height), false);
|
||||
|
||||
Trinity::Containers::EraseIf(targetList, [minZ, maxZ](Unit const* unit) -> bool
|
||||
if (targetList.empty())
|
||||
return;
|
||||
|
||||
G3D::Cylinder rotatedCylinder = G3D::CoordinateFrame(G3D::Quat(_rotation.x, _rotation.y, _rotation.z, _rotation.w), PositionToVector3(GetPosition()))
|
||||
.toWorldSpace(G3D::Cylinder(
|
||||
{ 0.0f, 0.0f, 0.0f + zOffset },
|
||||
{ 0.0f, 0.0f, 0.0f + zOffset + height },
|
||||
radius));
|
||||
|
||||
Trinity::Containers::EraseIf(targetList, [&rotatedCylinder](Unit const* unit) -> bool
|
||||
{
|
||||
return unit->GetPositionZ() < minZ
|
||||
|| unit->GetPositionZ() > maxZ;
|
||||
return !rotatedCylinder.contains(PositionToVector3(*unit));
|
||||
});
|
||||
|
||||
#ifdef TRINITY_DEBUG
|
||||
// DebugVisualizeShape
|
||||
if (Player* caster = Object::ToPlayer(GetCaster()); caster && caster->isDebugAreaTriggers)
|
||||
for (int32 end = 0; end < 2; ++end)
|
||||
caster->SummonCreature(1, Vector3ToPosition(rotatedCylinder.point(end)), TEMPSUMMON_TIMED_DESPAWN, 50ms);
|
||||
#endif
|
||||
}
|
||||
|
||||
void AreaTrigger::SearchUnitInDisk(UF::AreaTriggerDisk const& disk, std::vector<Unit*>& targetList)
|
||||
{
|
||||
float progress = GetProgress();
|
||||
float progress = GetShapeProgress();
|
||||
if (m_areaTriggerData->MorphCurveId)
|
||||
progress = sDB2Manager.GetCurveValueAt(m_areaTriggerData->MorphCurveId, progress);
|
||||
|
||||
@@ -815,35 +893,73 @@ void AreaTrigger::SearchUnitInDisk(UF::AreaTriggerDisk const& disk, std::vector<
|
||||
if (!HasAreaTriggerFlag(AreaTriggerFieldFlags::HeightIgnoresScale))
|
||||
height *= scale;
|
||||
|
||||
float minZ = GetPositionZ() - height;
|
||||
float maxZ = GetPositionZ() + height;
|
||||
float zOffset = G3D::lerp(disk.LocationZOffset, disk.LocationZOffsetTarget, progress) * scale;
|
||||
|
||||
SearchUnits(targetList, outerRadius, false);
|
||||
SearchUnits(targetList, std::sqrt(outerRadius * outerRadius + height * height), false);
|
||||
|
||||
Trinity::Containers::EraseIf(targetList, [this, innerRadius, minZ, maxZ](Unit const* unit) -> bool
|
||||
if (targetList.empty())
|
||||
return;
|
||||
|
||||
G3D::Cylinder innerCylinder = G3D::CoordinateFrame(G3D::Quat(_rotation.x, _rotation.y, _rotation.z, _rotation.w), PositionToVector3(GetPosition()))
|
||||
.toWorldSpace(G3D::Cylinder(
|
||||
{ 0.0f, 0.0f, 0.0f + zOffset },
|
||||
{ 0.0f, 0.0f, 0.0f + zOffset + height },
|
||||
innerRadius));
|
||||
|
||||
G3D::Cylinder outerCylinder(innerCylinder.point(0), innerCylinder.point(1), outerRadius);
|
||||
|
||||
Trinity::Containers::EraseIf(targetList, [&innerCylinder, &outerCylinder](Unit const* unit) -> bool
|
||||
{
|
||||
return unit->IsInDist2d(this, innerRadius) || unit->GetPositionZ() < minZ || unit->GetPositionZ() > maxZ;
|
||||
G3D::Vector3 position = PositionToVector3(*unit);
|
||||
return innerCylinder.contains(position) || !outerCylinder.contains(position);
|
||||
});
|
||||
|
||||
#ifdef TRINITY_DEBUG
|
||||
// DebugVisualizeShape
|
||||
if (Player* caster = Object::ToPlayer(GetCaster()); caster && caster->isDebugAreaTriggers)
|
||||
for (int32 end = 0; end < 2; ++end)
|
||||
caster->SummonCreature(1, Vector3ToPosition(innerCylinder.point(end)), TEMPSUMMON_TIMED_DESPAWN, 50ms);
|
||||
#endif
|
||||
}
|
||||
|
||||
void AreaTrigger::SearchUnitInBoundedPlane(UF::AreaTriggerBoundedPlane const& boundedPlane, std::vector<Unit*>& targetList)
|
||||
{
|
||||
float progress = GetProgress();
|
||||
float progress = GetShapeProgress();
|
||||
if (m_areaTriggerData->MorphCurveId)
|
||||
progress = sDB2Manager.GetCurveValueAt(m_areaTriggerData->MorphCurveId, progress);
|
||||
|
||||
float scale = CalcCurrentScale();
|
||||
float extentsX = G3D::lerp(boundedPlane.ExtentsX, boundedPlane.ExtentsTargetX, progress) * scale;
|
||||
float extentsY = G3D::lerp(boundedPlane.ExtentsY, boundedPlane.ExtentsTargetY, progress) * scale;
|
||||
float radius = std::sqrt(extentsX * extentsX + extentsY * extentsY);
|
||||
float extentsZ = G3D::lerp(boundedPlane.ExtentsZ, boundedPlane.ExtentsTargetZ, progress) * scale;
|
||||
float radius = std::sqrt(extentsY * extentsY + extentsZ * extentsZ);
|
||||
|
||||
SearchUnits(targetList, radius, false);
|
||||
|
||||
Position const& boxCenter = GetPosition();
|
||||
Trinity::Containers::EraseIf(targetList, [boxCenter, extentsX, extentsY](Unit const* unit) -> bool
|
||||
if (targetList.empty())
|
||||
return;
|
||||
|
||||
G3D::CoordinateFrame coordinateFrame = G3D::CoordinateFrame(G3D::Quat(_rotation.x, _rotation.y, _rotation.z, _rotation.w), PositionToVector3(GetPosition()));
|
||||
|
||||
G3D::Vector3 corners[4] =
|
||||
{
|
||||
coordinateFrame.pointToWorldSpace(G3D::Vector3(0.0f, -extentsY, -extentsZ)),
|
||||
coordinateFrame.pointToWorldSpace(G3D::Vector3(0.0f, extentsY, -extentsZ)),
|
||||
coordinateFrame.pointToWorldSpace(G3D::Vector3(0.0f, -extentsY, extentsZ)),
|
||||
coordinateFrame.pointToWorldSpace(G3D::Vector3(0.0f, extentsY, extentsZ))
|
||||
};
|
||||
|
||||
Trinity::Containers::EraseIf(targetList, [&corners](Unit const* unit) -> bool
|
||||
{
|
||||
return !unit->IsWithinBox(boxCenter, extentsX, extentsY, MAP_SIZE);
|
||||
G3D::Vector3 closestPoint = G3D::CollisionDetection::closestPointToRectangle(corners[0], corners[1], corners[2], corners[3], PositionToVector3(*unit));
|
||||
return !unit->IsInDist(closestPoint.x, closestPoint.y, closestPoint.z, unit->GetCombatReach());
|
||||
});
|
||||
|
||||
#ifdef TRINITY_DEBUG
|
||||
// DebugVisualizeShape
|
||||
if (Player* caster = Object::ToPlayer(GetCaster()); caster && caster->isDebugAreaTriggers)
|
||||
for (G3D::Vector3 const& corner : corners)
|
||||
caster->SummonCreature(1, Vector3ToPosition(corner), TEMPSUMMON_TIMED_DESPAWN, 50ms);
|
||||
#endif
|
||||
}
|
||||
|
||||
void AreaTrigger::HandleUnitEnterExit(std::vector<Unit*> const& newTargetList, AreaTriggerExitReason exitMode)
|
||||
@@ -1035,10 +1151,10 @@ void AreaTrigger::SetShape(AreaTriggerShapeInfo const& shape)
|
||||
{
|
||||
SetUpdateFieldValue(areaTriggerData.ModifyValue(&UF::AreaTriggerData::ShapeType), 8);
|
||||
auto boundedPlane = areaTriggerData.ModifyValue(&UF::AreaTriggerData::ShapeData, UF::VariantCase<UF::AreaTriggerBoundedPlane>);
|
||||
SetUpdateFieldValue(boundedPlane.ModifyValue(&UF::AreaTriggerBoundedPlane::ExtentsX), shapeData.Extents.Pos.GetPositionX());
|
||||
SetUpdateFieldValue(boundedPlane.ModifyValue(&UF::AreaTriggerBoundedPlane::ExtentsY), shapeData.Extents.Pos.GetPositionY());
|
||||
SetUpdateFieldValue(boundedPlane.ModifyValue(&UF::AreaTriggerBoundedPlane::ExtentsTargetX), shapeData.ExtentsTarget.Pos.GetPositionX());
|
||||
SetUpdateFieldValue(boundedPlane.ModifyValue(&UF::AreaTriggerBoundedPlane::ExtentsTargetY), shapeData.ExtentsTarget.Pos.GetPositionY());
|
||||
SetUpdateFieldValue(boundedPlane.ModifyValue(&UF::AreaTriggerBoundedPlane::ExtentsY), shapeData.ExtentsY);
|
||||
SetUpdateFieldValue(boundedPlane.ModifyValue(&UF::AreaTriggerBoundedPlane::ExtentsZ), shapeData.ExtentsZ);
|
||||
SetUpdateFieldValue(boundedPlane.ModifyValue(&UF::AreaTriggerBoundedPlane::ExtentsTargetY), shapeData.ExtentsTargetY);
|
||||
SetUpdateFieldValue(boundedPlane.ModifyValue(&UF::AreaTriggerBoundedPlane::ExtentsTargetZ), shapeData.ExtentsTargetZ);
|
||||
}
|
||||
else
|
||||
static_assert(Trinity::dependant_false_v<ShapeType>, "Unsupported shape type");
|
||||
@@ -1056,16 +1172,15 @@ float AreaTrigger::GetMaxSearchRadius() const
|
||||
void AreaTrigger::UpdatePolygonVertices()
|
||||
{
|
||||
UF::AreaTriggerPolygon const* shape = m_areaTriggerData->ShapeData.Get<UF::AreaTriggerPolygon>();
|
||||
float newOrientation = GetOrientation();
|
||||
|
||||
// No need to recalculate, orientation didn't change
|
||||
if (G3D::fuzzyEq(_verticesUpdatePreviousOrientation, newOrientation) && shape->VerticesTarget.empty())
|
||||
if (_verticesUpdatePreviousRotation == _rotation && shape->VerticesTarget.empty())
|
||||
return;
|
||||
|
||||
_polygonVertices.assign(shape->Vertices.begin(), shape->Vertices.end());
|
||||
if (!shape->VerticesTarget.empty())
|
||||
{
|
||||
float progress = GetProgress();
|
||||
float progress = GetShapeProgress();
|
||||
if (m_areaTriggerData->MorphCurveId)
|
||||
progress = sDB2Manager.GetCurveValueAt(m_areaTriggerData->MorphCurveId, progress);
|
||||
|
||||
@@ -1079,18 +1194,16 @@ void AreaTrigger::UpdatePolygonVertices()
|
||||
}
|
||||
}
|
||||
|
||||
float angleSin = std::sin(newOrientation);
|
||||
float angleCos = std::cos(newOrientation);
|
||||
G3D::Matrix3 rotationMatrix(G3D::Quat(_rotation.x, _rotation.y, _rotation.z, _rotation.w));
|
||||
|
||||
// This is needed to rotate the vertices, following orientation
|
||||
for (Position& vertice : _polygonVertices)
|
||||
{
|
||||
float x = vertice.GetPositionX() * angleCos - vertice.GetPositionY() * angleSin;
|
||||
float y = vertice.GetPositionY() * angleCos + vertice.GetPositionX() * angleSin;
|
||||
vertice.Relocate(x, y);
|
||||
G3D::Vector3 transformed = rotationMatrix * PositionToVector3(vertice);
|
||||
vertice.Relocate(transformed.x, transformed.y);
|
||||
}
|
||||
|
||||
_verticesUpdatePreviousOrientation = newOrientation;
|
||||
_verticesUpdatePreviousRotation = _rotation;
|
||||
}
|
||||
|
||||
bool AreaTrigger::HasOverridePosition() const
|
||||
@@ -1214,44 +1327,24 @@ void AreaTrigger::UndoActions(Unit* unit)
|
||||
|
||||
void AreaTrigger::UpdatePositionAndRotation()
|
||||
{
|
||||
Position oldPosition = GetPosition();
|
||||
Position newPosition;
|
||||
float oldRotation = GetOrientation();
|
||||
auto [movementUpdateResult, position, rotation] = CalculateLocalPositionAndRotation();
|
||||
auto [movementUpdateResult, newPosition, newRotation] = CalculateWorldPositionAndRotation();
|
||||
|
||||
if (HasAreaTriggerFlag(AreaTriggerFieldFlags::Attached))
|
||||
{
|
||||
if (Unit* target = GetTarget())
|
||||
{
|
||||
RelocateStationaryPosition(target->GetPosition());
|
||||
|
||||
newPosition = target->GetPositionWithOffset(Vector3ToPosition(position));
|
||||
|
||||
if (!HasAreaTriggerFlag(AreaTriggerFieldFlags::AbsoluteOrientation))
|
||||
rotation += target->GetOrientation();
|
||||
|
||||
if (movementUpdateResult == MovementUpdateResult::None)
|
||||
movementUpdateResult = MovementUpdateResult::Moved;
|
||||
}
|
||||
}
|
||||
else if (TransportBase const* transport = GetTransport())
|
||||
{
|
||||
newPosition = transport->GetPositionWithOffset(Vector3ToPosition(position));
|
||||
|
||||
if (!HasAreaTriggerFlag(AreaTriggerFieldFlags::AbsoluteOrientation))
|
||||
rotation += transport->GetTransportOrientation();
|
||||
}
|
||||
else
|
||||
newPosition = GetMovementOrigin().GetPositionWithOffset(Vector3ToPosition(position));
|
||||
Position oldPosition = GetPosition();
|
||||
QuaternionData oldRotation = std::exchange(_rotation, { newRotation.x, newRotation.y, newRotation.z, newRotation.w });
|
||||
|
||||
if (newPosition != oldPosition)
|
||||
{
|
||||
GetMap()->AreaTriggerRelocation(this, newPosition.GetPositionX(), newPosition.GetPositionY(), newPosition.GetPositionZ(), rotation);
|
||||
GetMap()->AreaTriggerRelocation(this, newPosition.GetPositionX(), newPosition.GetPositionY(), newPosition.GetPositionZ(), newPosition.GetOrientation());
|
||||
}
|
||||
else if (!G3D::fuzzyEq(rotation, oldRotation))
|
||||
else
|
||||
{
|
||||
SetOrientation(rotation);
|
||||
UpdateShape();
|
||||
SetOrientation(newPosition.GetOrientation());
|
||||
if (oldRotation != _rotation)
|
||||
UpdateShape();
|
||||
}
|
||||
|
||||
#ifdef TRINITY_DEBUG
|
||||
@@ -1268,26 +1361,78 @@ void AreaTrigger::UpdatePositionAndRotation()
|
||||
}
|
||||
}
|
||||
|
||||
AreaTrigger::MovementUpdateWorldResult AreaTrigger::CalculateWorldPositionAndRotation() const
|
||||
{
|
||||
auto [status, localPosition, localRotation] = CalculateLocalPositionAndRotation();
|
||||
MovementUpdateWorldResult worldResult {
|
||||
.Status = status,
|
||||
.Position = Vector3ToPosition(localPosition),
|
||||
.Rotation = G3D::Quat::fromYPRAngles(localRotation.z, localRotation.y, localRotation.x)
|
||||
};
|
||||
|
||||
if (HasAreaTriggerFlag(AreaTriggerFieldFlags::Attached))
|
||||
{
|
||||
if (Unit* target = GetTarget())
|
||||
{
|
||||
worldResult.Position = target->GetPositionWithOffset(worldResult.Position);
|
||||
|
||||
if (!HasAreaTriggerFlag(AreaTriggerFieldFlags::AbsoluteOrientation))
|
||||
worldResult.Rotation = G3D::Quat::fromAxisAngleRotation(G3D::Vector3::unitZ(), target->GetOrientation()) * worldResult.Rotation;
|
||||
|
||||
if (worldResult.Status == MovementUpdateResult::None)
|
||||
worldResult.Status = MovementUpdateResult::Moved;
|
||||
}
|
||||
}
|
||||
else if (TransportBase const* transport = GetTransport())
|
||||
{
|
||||
worldResult.Position = transport->GetPositionWithOffset(worldResult.Position);
|
||||
|
||||
if (!HasAreaTriggerFlag(AreaTriggerFieldFlags::AbsoluteOrientation))
|
||||
worldResult.Rotation = G3D::Quat::fromAxisAngleRotation(G3D::Vector3::unitZ(), transport->GetTransportOrientation()) * worldResult.Rotation;
|
||||
}
|
||||
else
|
||||
worldResult.Position = GetMovementOrigin().GetPositionWithOffset(worldResult.Position);
|
||||
|
||||
worldResult.Rotation.toYPRAngles(localRotation.z, localRotation.y, localRotation.x);
|
||||
worldResult.Position.SetOrientation(localRotation.z);
|
||||
|
||||
return worldResult;
|
||||
}
|
||||
|
||||
struct AreaTriggerPositionAndRotationCalcVisitor
|
||||
{
|
||||
AreaTrigger::MovementUpdateResult operator()(UF::AreaTriggerSplineCalculator const&) const { return at->CalculateLocalSplinePositionAndRotation(); }
|
||||
AreaTrigger::MovementUpdateResult operator()(UF::AreaTriggerOrbit const& orbit) const { return at->CalculateLocalOrbitPositionAndRotation(orbit); }
|
||||
AreaTrigger::MovementUpdateResult operator()(std::monostate) const { return at->CalculateLocalStationaryPositionAndRotation(); }
|
||||
AreaTrigger::MovementUpdateResult operator()(UF::AreaTriggerMovementScript const& /*script*/) const { ASSERT(false, "AreaTriggerMovementScript is not implemented"); }
|
||||
AreaTrigger::MovementUpdateLocalResult operator()(UF::AreaTriggerSplineCalculator const&) const { return at->CalculateLocalSplinePositionAndRotation(); }
|
||||
AreaTrigger::MovementUpdateLocalResult operator()(UF::AreaTriggerOrbit const& orbit) const { return at->CalculateLocalOrbitPositionAndRotation(orbit); }
|
||||
AreaTrigger::MovementUpdateLocalResult operator()(std::monostate) const { return at->CalculateLocalStationaryPositionAndRotation(); }
|
||||
AreaTrigger::MovementUpdateLocalResult operator()(UF::AreaTriggerMovementScript const& /*script*/) const { ASSERT(false, "AreaTriggerMovementScript is not implemented"); }
|
||||
|
||||
AreaTrigger const* at;
|
||||
};
|
||||
|
||||
AreaTrigger::MovementUpdateResult AreaTrigger::CalculateLocalPositionAndRotation() const
|
||||
AreaTrigger::MovementUpdateLocalResult AreaTrigger::CalculateLocalPositionAndRotation() const
|
||||
{
|
||||
MovementUpdateResult result = m_areaTriggerData->PathData.Visit(AreaTriggerPositionAndRotationCalcVisitor{ this });
|
||||
MovementUpdateLocalResult result = m_areaTriggerData->PathData.Visit(AreaTriggerPositionAndRotationCalcVisitor{ this });
|
||||
|
||||
if (m_areaTriggerData->TargetRollPitchYaw.has_value())
|
||||
{
|
||||
float progress = GetShapeProgress();
|
||||
if (m_areaTriggerData->MorphCurveId)
|
||||
progress = sDB2Manager.GetCurveValueAt(m_areaTriggerData->MorphCurveId, progress);
|
||||
|
||||
result.Rotation += PositionToVector3(m_areaTriggerData->RollPitchYaw->Pos)
|
||||
.lerp(PositionToVector3(m_areaTriggerData->TargetRollPitchYaw->Pos), progress);
|
||||
}
|
||||
else
|
||||
result.Rotation += PositionToVector3(m_areaTriggerData->RollPitchYaw->Pos);
|
||||
|
||||
if (HasOverridePosition())
|
||||
{
|
||||
result.Status = MovementUpdateResult::Moved;
|
||||
result.Position.x = GetOverrideCurveValue(*m_areaTriggerData->OverrideMoveCurveX, m_areaTriggerData->TimeToTargetPos);
|
||||
result.Position.y = GetOverrideCurveValue(*m_areaTriggerData->OverrideMoveCurveY, m_areaTriggerData->TimeToTargetPos);
|
||||
result.Position.z = GetOverrideCurveValue(*m_areaTriggerData->OverrideMoveCurveZ, m_areaTriggerData->TimeToTargetPos);
|
||||
|
||||
float progress = GetOverridePosProgress();
|
||||
result.Position.x = GetOverrideCurveValueAtProgress(*m_areaTriggerData->OverrideMoveCurveX, progress);
|
||||
result.Position.y = GetOverrideCurveValueAtProgress(*m_areaTriggerData->OverrideMoveCurveY, progress);
|
||||
result.Position.z = GetOverrideCurveValueAtProgress(*m_areaTriggerData->OverrideMoveCurveZ, progress);
|
||||
|
||||
if (m_movementInfo.transport.guid.IsEmpty())
|
||||
result.Position = PositionToVector3(GetMovementOrigin().GetPositionOffsetTo(Vector3ToPosition(result.Position)));
|
||||
@@ -1411,7 +1556,7 @@ void AreaTrigger::InitOrbit(AreaTriggerOrbitInfo const& orbit, Optional<float> o
|
||||
SetUpdateFieldValue(pathData.ModifyValue(&UF::AreaTriggerOrbit::Center), center);
|
||||
}
|
||||
|
||||
AreaTrigger::MovementUpdateResult AreaTrigger::CalculateLocalSplinePositionAndRotation() const
|
||||
AreaTrigger::MovementUpdateLocalResult AreaTrigger::CalculateLocalSplinePositionAndRotation() const
|
||||
{
|
||||
float currentTimePercent = std::clamp(float(GetElapsedTimeForMovement()) / float(GetTimeToTarget()), 0.0f, 1.0f);
|
||||
bool reachedDestination = currentTimePercent >= 1.0f;
|
||||
@@ -1438,8 +1583,7 @@ AreaTrigger::MovementUpdateResult AreaTrigger::CalculateLocalSplinePositionAndRo
|
||||
|
||||
float orientation = 0.0f;
|
||||
if (m_areaTriggerData->FacingCurveId)
|
||||
orientation += sDB2Manager.GetCurveValueAt(m_areaTriggerData->FacingCurveId,
|
||||
GetOverrideCurveProgress(m_areaTriggerData->OverrideFacingCurve, m_areaTriggerData->TimeToTargetFacing));
|
||||
orientation += sDB2Manager.GetCurveValueAt(m_areaTriggerData->FacingCurveId, GetShapeProgress());
|
||||
|
||||
if (!HasAreaTriggerFlag(AreaTriggerFieldFlags::AbsoluteOrientation))
|
||||
{
|
||||
@@ -1449,13 +1593,30 @@ AreaTrigger::MovementUpdateResult AreaTrigger::CalculateLocalSplinePositionAndRo
|
||||
orientation += std::atan2(derivative.y, derivative.x);
|
||||
}
|
||||
|
||||
return { .Status = reachedDestination ? MovementUpdateResult::Arrived : MovementUpdateResult::Moved, .Position = currentPosition, .Rotation = orientation };
|
||||
return {
|
||||
.Status = reachedDestination ? MovementUpdateResult::Arrived : MovementUpdateResult::Moved,
|
||||
.Position = currentPosition,
|
||||
.Rotation = G3D::Vector3(0.0f, 0.0f, orientation)
|
||||
};
|
||||
}
|
||||
|
||||
AreaTrigger::MovementUpdateResult AreaTrigger::CalculateLocalOrbitPositionAndRotation(UF::AreaTriggerOrbit const& orbit) const
|
||||
AreaTrigger::MovementUpdateLocalResult AreaTrigger::CalculateLocalOrbitPositionAndRotation(UF::AreaTriggerOrbit const& orbit) const
|
||||
{
|
||||
// AreaTrigger make exactly "Duration / TimeToTarget" loops during his life time
|
||||
float pathProgress = float(GetElapsedTimeForMovement() + *orbit.ExtraTimeForBlending) / float(GetTimeToTarget());
|
||||
uint32 movementTime = GetElapsedTimeForMovement();
|
||||
uint32 timeToTarget = GetTimeToTarget() + orbit.ExtraTimeForBlending;
|
||||
bool firstLoop = true;
|
||||
if (HasAreaTriggerFlag(AreaTriggerFieldFlags::CanLoop) && timeToTarget)
|
||||
{
|
||||
// remove ExtraTimeForBlending if not on first loop
|
||||
if (movementTime > timeToTarget)
|
||||
{
|
||||
timeToTarget -= orbit.ExtraTimeForBlending;
|
||||
movementTime = (movementTime - orbit.ExtraTimeForBlending) % timeToTarget;
|
||||
firstLoop = false;
|
||||
}
|
||||
}
|
||||
|
||||
float pathProgress = float(movementTime) / float(timeToTarget);
|
||||
if (m_areaTriggerData->MoveCurveId)
|
||||
pathProgress = sDB2Manager.GetCurveValueAt(m_areaTriggerData->MoveCurveId, pathProgress);
|
||||
|
||||
@@ -1464,30 +1625,31 @@ AreaTrigger::MovementUpdateResult AreaTrigger::CalculateLocalOrbitPositionAndRot
|
||||
pathProgress = std::min(1.f, pathProgress);
|
||||
|
||||
float radius = orbit.Radius;
|
||||
if (pathProgress <= 1.0f && G3D::fuzzyNe(orbit.BlendFromRadius, radius))
|
||||
if (firstLoop && G3D::fuzzyNe(orbit.BlendFromRadius, radius))
|
||||
{
|
||||
float blendCurve = (orbit.BlendFromRadius - radius) / radius;
|
||||
RoundToInterval(blendCurve, 1.f, 4.f);
|
||||
float blendProgress = std::min(1.f, pathProgress / blendCurve * 0.63661975f);
|
||||
float blendCurve = std::clamp((orbit.BlendFromRadius - radius) / radius, 1.0f, 4.0f);
|
||||
float blendProgress = std::clamp(std::abs(4.0f * pathProgress / blendCurve), 0.0f, 1.0f);
|
||||
radius = G3D::lerp(orbit.BlendFromRadius, radius, blendProgress);
|
||||
}
|
||||
|
||||
// Adapt Path progress depending of circle direction
|
||||
if (!orbit.CounterClockwise)
|
||||
pathProgress *= -1;
|
||||
float angle = 2.0f * float(M_PI) * pathProgress;
|
||||
|
||||
// Adapt angle depending of circle direction
|
||||
if (!orbit.CounterClockwise)
|
||||
angle *= -1;
|
||||
|
||||
angle += orbit.InitialAngle;
|
||||
|
||||
float angle = orbit.InitialAngle + 2.f * float(M_PI) * pathProgress;
|
||||
G3D::Vector3 position =
|
||||
{
|
||||
radius * std::cos(angle),
|
||||
radius * std::sin(angle),
|
||||
*m_areaTriggerData->ZOffset
|
||||
m_areaTriggerData->ZOffset
|
||||
};
|
||||
|
||||
float orientation = 0.0f;
|
||||
if (m_areaTriggerData->FacingCurveId)
|
||||
orientation = sDB2Manager.GetCurveValueAt(m_areaTriggerData->FacingCurveId,
|
||||
GetOverrideCurveProgress(m_areaTriggerData->OverrideFacingCurve, m_areaTriggerData->TimeToTargetFacing));
|
||||
orientation = sDB2Manager.GetCurveValueAt(m_areaTriggerData->FacingCurveId, GetShapeProgress());
|
||||
|
||||
if (!HasAreaTriggerFlag(AreaTriggerFieldFlags::AbsoluteOrientation))
|
||||
{
|
||||
@@ -1495,20 +1657,27 @@ AreaTrigger::MovementUpdateResult AreaTrigger::CalculateLocalOrbitPositionAndRot
|
||||
orientation += orbit.CounterClockwise ? float(M_PI_4) : -float(M_PI_4);
|
||||
}
|
||||
|
||||
return { .Status = MovementUpdateResult::Moved, .Position = position, .Rotation = orientation };
|
||||
return {
|
||||
.Status = MovementUpdateResult::Moved,
|
||||
.Position = position,
|
||||
.Rotation = G3D::Vector3(0.0f, 0.0f, orientation)
|
||||
};
|
||||
}
|
||||
|
||||
AreaTrigger::MovementUpdateResult AreaTrigger::CalculateLocalStationaryPositionAndRotation() const
|
||||
AreaTrigger::MovementUpdateLocalResult AreaTrigger::CalculateLocalStationaryPositionAndRotation() const
|
||||
{
|
||||
float orientation = 0.0f;
|
||||
if (m_areaTriggerData->FacingCurveId)
|
||||
orientation = sDB2Manager.GetCurveValueAt(m_areaTriggerData->FacingCurveId,
|
||||
GetOverrideCurveProgress(m_areaTriggerData->OverrideFacingCurve, m_areaTriggerData->TimeToTargetFacing));
|
||||
orientation = sDB2Manager.GetCurveValueAt(m_areaTriggerData->FacingCurveId, GetShapeProgress());
|
||||
|
||||
if (!HasAreaTriggerFlag(AreaTriggerFieldFlags::AbsoluteOrientation))
|
||||
orientation += *m_areaTriggerData->Facing;
|
||||
|
||||
return { .Status = MovementUpdateResult::None, .Position = G3D::Vector3::zero(), .Rotation = orientation };
|
||||
return {
|
||||
.Status = MovementUpdateResult::None,
|
||||
.Position = G3D::Vector3::zero(),
|
||||
.Rotation = G3D::Vector3(0.0f, 0.0f, orientation)
|
||||
};
|
||||
}
|
||||
|
||||
struct AreaTriggerMovementOriginVisitor
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
#include "Object.h"
|
||||
#include "GridObject.h"
|
||||
#include "MapObject.h"
|
||||
#include "QuaternionData.h"
|
||||
#include "AreaTriggerTemplate.h"
|
||||
|
||||
class AuraEffect;
|
||||
@@ -153,9 +154,9 @@ class TC_GAME_API AreaTrigger final : public WorldObject, public GridObject<Area
|
||||
Optional<uint32> startTimeOffset = {}, CurveInterpolationMode interpolation = CurveInterpolationMode::Linear);
|
||||
void ClearOverrideMoveCurve();
|
||||
|
||||
void SetOverrideFacingCurve(float overrideFacing);
|
||||
void SetOverrideFacingCurve(std::array<DBCPosition2D, 2> const& points, Optional<uint32> startTimeOffset = {}, CurveInterpolationMode interpolation = CurveInterpolationMode::Linear);
|
||||
void ClearOverrideFacingCurve();
|
||||
void SetOverrideShapeCurve(float overrideFacing);
|
||||
void SetOverrideShapeCurve(std::array<DBCPosition2D, 2> const& points, Optional<uint32> startTimeOffset = {}, CurveInterpolationMode interpolation = CurveInterpolationMode::Linear);
|
||||
void ClearOverrideShapeCurve();
|
||||
|
||||
uint32 GetTimeToTarget() const { return m_areaTriggerData->TimeToTarget; }
|
||||
void SetTimeToTarget(uint32 timeToTarget) { SetUpdateFieldValue(m_values.ModifyValue(&AreaTrigger::m_areaTriggerData).ModifyValue(&UF::AreaTriggerData::TimeToTarget), timeToTarget); }
|
||||
@@ -169,11 +170,14 @@ class TC_GAME_API AreaTrigger final : public WorldObject, public GridObject<Area
|
||||
uint32 GetTimeToTargetPos() const { return m_areaTriggerData->TimeToTargetPos; }
|
||||
void SetTimeToTargetPos(uint32 timeToTargetPos) { SetUpdateFieldValue(m_values.ModifyValue(&AreaTrigger::m_areaTriggerData).ModifyValue(&UF::AreaTriggerData::TimeToTargetPos), timeToTargetPos); }
|
||||
|
||||
uint32 GetTimeToTargetFacing() const { return m_areaTriggerData->TimeToTargetFacing; }
|
||||
void SetTimeToTargetFacing(uint32 timeToTargetFacing) { SetUpdateFieldValue(m_values.ModifyValue(&AreaTrigger::m_areaTriggerData).ModifyValue(&UF::AreaTriggerData::TimeToTargetFacing), timeToTargetFacing); }
|
||||
uint32 GetTimeToTargetFacing() const { return m_areaTriggerData->TimeToTargetShape; }
|
||||
void SetTimeToTargetFacing(uint32 timeToTargetShape) { SetUpdateFieldValue(m_values.ModifyValue(&AreaTrigger::m_areaTriggerData).ModifyValue(&UF::AreaTriggerData::TimeToTargetShape), timeToTargetShape); }
|
||||
|
||||
void SetSpellVisual(SpellCastVisual const& visual);
|
||||
|
||||
void SetRollPitchYaw(float roll, float pitch, float yaw,
|
||||
Optional<float> targetRoll = {}, Optional<float> targetPitch = {}, Optional<float> targetYaw = {});
|
||||
|
||||
int32 GetDuration() const { return _duration; }
|
||||
int32 GetTotalDuration() const { return _totalDuration; }
|
||||
void SetDuration(int32 newDuration);
|
||||
@@ -218,7 +222,10 @@ class TC_GAME_API AreaTrigger final : public WorldObject, public GridObject<Area
|
||||
protected:
|
||||
void _UpdateDuration(int32 newDuration);
|
||||
|
||||
float GetProgress() const;
|
||||
float GetScaleProgress() const { return GetOverrideCurveProgress(m_areaTriggerData->OverrideScaleCurve, m_areaTriggerData->TimeToTargetScale); }
|
||||
float GetExtraScaleProgress() const { return GetOverrideCurveProgress(m_areaTriggerData->ExtraScaleCurve, m_areaTriggerData->TimeToTargetExtraScale); }
|
||||
float GetOverridePosProgress() const { return GetOverrideCurveProgress(m_areaTriggerData->OverrideMoveCurveX, m_areaTriggerData->TimeToTargetPos); }
|
||||
float GetShapeProgress() const { return GetOverrideCurveProgress(m_areaTriggerData->OverrideShapeCurve, m_areaTriggerData->TimeToTargetShape); }
|
||||
|
||||
struct OverrideCurveData
|
||||
{
|
||||
@@ -254,14 +261,16 @@ class TC_GAME_API AreaTrigger final : public WorldObject, public GridObject<Area
|
||||
|
||||
void UpdatePositionAndRotation();
|
||||
|
||||
struct MovementUpdateResult;
|
||||
struct MovementUpdateWorldResult;
|
||||
MovementUpdateWorldResult CalculateWorldPositionAndRotation() const;
|
||||
|
||||
MovementUpdateResult CalculateLocalPositionAndRotation() const;
|
||||
struct MovementUpdateLocalResult;
|
||||
MovementUpdateLocalResult CalculateLocalPositionAndRotation() const;
|
||||
|
||||
friend struct AreaTriggerPositionAndRotationCalcVisitor;
|
||||
MovementUpdateResult CalculateLocalSplinePositionAndRotation() const;
|
||||
MovementUpdateResult CalculateLocalOrbitPositionAndRotation(UF::AreaTriggerOrbit const& orbit) const;
|
||||
MovementUpdateResult CalculateLocalStationaryPositionAndRotation() const;
|
||||
MovementUpdateLocalResult CalculateLocalSplinePositionAndRotation() const;
|
||||
MovementUpdateLocalResult CalculateLocalOrbitPositionAndRotation(UF::AreaTriggerOrbit const& orbit) const;
|
||||
MovementUpdateLocalResult CalculateLocalStationaryPositionAndRotation() const;
|
||||
|
||||
Position const& GetMovementOrigin() const;
|
||||
|
||||
@@ -279,9 +288,10 @@ class TC_GAME_API AreaTrigger final : public WorldObject, public GridObject<Area
|
||||
AuraEffect const* _aurEff;
|
||||
|
||||
Position _stationaryPosition;
|
||||
QuaternionData _rotation;
|
||||
int32 _duration;
|
||||
int32 _totalDuration;
|
||||
float _verticesUpdatePreviousOrientation;
|
||||
QuaternionData _verticesUpdatePreviousRotation;
|
||||
bool _isRemoved;
|
||||
|
||||
std::vector<Position> _polygonVertices;
|
||||
|
||||
@@ -83,13 +83,13 @@ bool AreaTriggerShapeInfo::Disk::IsDynamic() const
|
||||
float AreaTriggerShapeInfo::BoundedPlane::GetMaxSearchRadius() const
|
||||
{
|
||||
return std::sqrt(std::max(
|
||||
Extents.Pos.GetPositionX() * Extents.Pos.GetPositionX() / 4 + Extents.Pos.GetPositionY() * Extents.Pos.GetPositionY() / 4,
|
||||
ExtentsTarget.Pos.GetPositionX() * ExtentsTarget.Pos.GetPositionX() / 4 + ExtentsTarget.Pos.GetPositionY() * ExtentsTarget.Pos.GetPositionY() / 4));
|
||||
ExtentsY * ExtentsY + ExtentsZ * ExtentsZ,
|
||||
ExtentsTargetY * ExtentsTargetY + ExtentsTargetZ * ExtentsTargetZ));
|
||||
}
|
||||
|
||||
bool AreaTriggerShapeInfo::BoundedPlane::IsDynamic() const
|
||||
{
|
||||
return Extents != ExtentsTarget;
|
||||
return ExtentsY != ExtentsTargetY || ExtentsZ != ExtentsTargetZ;
|
||||
}
|
||||
|
||||
float AreaTriggerShapeInfo::GetMaxSearchRadius() const
|
||||
|
||||
@@ -181,13 +181,14 @@ struct AreaTriggerShapeInfo
|
||||
|
||||
struct BoundedPlane
|
||||
{
|
||||
BoundedPlane()
|
||||
: Extents(), ExtentsTarget() { }
|
||||
BoundedPlane() = default;
|
||||
explicit BoundedPlane(std::array<float, MAX_AREATRIGGER_ENTITY_DATA> const& raw)
|
||||
: Extents(raw[0], raw[1]), ExtentsTarget(raw[2], raw[3]) { }
|
||||
: ExtentsY(raw[0]), ExtentsZ(raw[1]), ExtentsTargetY(raw[2]), ExtentsTargetZ(raw[3]) { }
|
||||
|
||||
TaggedPosition<Position::XY> Extents;
|
||||
TaggedPosition<Position::XY> ExtentsTarget;
|
||||
float ExtentsY = 0.0f;
|
||||
float ExtentsZ = 0.0f;
|
||||
float ExtentsTargetY = 0.0f;
|
||||
float ExtentsTargetZ = 0.0f;
|
||||
|
||||
float GetMaxSearchRadius() const;
|
||||
bool IsDynamic() const;
|
||||
|
||||
@@ -8248,10 +8248,10 @@ namespace UF
|
||||
|
||||
void AreaTriggerBoundedPlane::WriteCreate(ByteBuffer& data, Player const* receiver, AreaTrigger const* owner) const
|
||||
{
|
||||
data << float(ExtentsX);
|
||||
data << float(ExtentsY);
|
||||
data << float(ExtentsTargetX);
|
||||
data << float(ExtentsZ);
|
||||
data << float(ExtentsTargetY);
|
||||
data << float(ExtentsTargetZ);
|
||||
}
|
||||
|
||||
void AreaTriggerBoundedPlane::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, AreaTrigger const* owner) const
|
||||
@@ -8267,29 +8267,29 @@ namespace UF
|
||||
{
|
||||
if (changesMask[1])
|
||||
{
|
||||
data << float(ExtentsX);
|
||||
data << float(ExtentsY);
|
||||
}
|
||||
if (changesMask[2])
|
||||
{
|
||||
data << float(ExtentsY);
|
||||
data << float(ExtentsZ);
|
||||
}
|
||||
if (changesMask[3])
|
||||
{
|
||||
data << float(ExtentsTargetX);
|
||||
data << float(ExtentsTargetY);
|
||||
}
|
||||
if (changesMask[4])
|
||||
{
|
||||
data << float(ExtentsTargetY);
|
||||
data << float(ExtentsTargetZ);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void AreaTriggerBoundedPlane::ClearChangesMask()
|
||||
{
|
||||
Base::ClearChangesMask(ExtentsX);
|
||||
Base::ClearChangesMask(ExtentsY);
|
||||
Base::ClearChangesMask(ExtentsTargetX);
|
||||
Base::ClearChangesMask(ExtentsZ);
|
||||
Base::ClearChangesMask(ExtentsTargetY);
|
||||
Base::ClearChangesMask(ExtentsTargetZ);
|
||||
_changesMask.ResetAll();
|
||||
}
|
||||
|
||||
@@ -8300,14 +8300,14 @@ namespace UF
|
||||
OverrideMoveCurveX->WriteCreate(data, receiver, owner);
|
||||
OverrideMoveCurveY->WriteCreate(data, receiver, owner);
|
||||
OverrideMoveCurveZ->WriteCreate(data, receiver, owner);
|
||||
OverrideFacingCurve->WriteCreate(data, receiver, owner);
|
||||
OverrideShapeCurve->WriteCreate(data, receiver, owner);
|
||||
data << *Caster;
|
||||
data << uint32(Duration);
|
||||
data << uint32(TimeToTarget);
|
||||
data << uint32(TimeToTargetScale);
|
||||
data << uint32(TimeToTargetExtraScale);
|
||||
data << uint32(TimeToTargetPos);
|
||||
data << uint32(TimeToTargetFacing);
|
||||
data << uint32(TimeToTargetShape);
|
||||
data << int32(SpellID);
|
||||
data << int32(SpellForVisuals);
|
||||
SpellVisual->WriteCreate(data, receiver, owner);
|
||||
@@ -8414,7 +8414,7 @@ namespace UF
|
||||
}
|
||||
if (changesMask[6])
|
||||
{
|
||||
OverrideFacingCurve->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner);
|
||||
OverrideShapeCurve->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner);
|
||||
}
|
||||
if (changesMask[7])
|
||||
{
|
||||
@@ -8442,7 +8442,7 @@ namespace UF
|
||||
}
|
||||
if (changesMask[13])
|
||||
{
|
||||
data << uint32(TimeToTargetFacing);
|
||||
data << uint32(TimeToTargetShape);
|
||||
}
|
||||
if (changesMask[14])
|
||||
{
|
||||
@@ -8616,14 +8616,14 @@ namespace UF
|
||||
Base::ClearChangesMask(OverrideMoveCurveX);
|
||||
Base::ClearChangesMask(OverrideMoveCurveY);
|
||||
Base::ClearChangesMask(OverrideMoveCurveZ);
|
||||
Base::ClearChangesMask(OverrideFacingCurve);
|
||||
Base::ClearChangesMask(OverrideShapeCurve);
|
||||
Base::ClearChangesMask(Caster);
|
||||
Base::ClearChangesMask(Duration);
|
||||
Base::ClearChangesMask(TimeToTarget);
|
||||
Base::ClearChangesMask(TimeToTargetScale);
|
||||
Base::ClearChangesMask(TimeToTargetExtraScale);
|
||||
Base::ClearChangesMask(TimeToTargetPos);
|
||||
Base::ClearChangesMask(TimeToTargetFacing);
|
||||
Base::ClearChangesMask(TimeToTargetShape);
|
||||
Base::ClearChangesMask(SpellID);
|
||||
Base::ClearChangesMask(SpellForVisuals);
|
||||
Base::ClearChangesMask(SpellVisual);
|
||||
|
||||
@@ -1751,10 +1751,10 @@ namespace UF
|
||||
|
||||
struct AreaTriggerBoundedPlane : public IsUpdateFieldStructureTag, public HasChangesMask<5>
|
||||
{
|
||||
UpdateField<float, 0, 1> ExtentsX;
|
||||
UpdateField<float, 0, 2> ExtentsY;
|
||||
UpdateField<float, 0, 3> ExtentsTargetX;
|
||||
UpdateField<float, 0, 4> ExtentsTargetY;
|
||||
UpdateField<float, 0, 1> ExtentsY;
|
||||
UpdateField<float, 0, 2> ExtentsZ;
|
||||
UpdateField<float, 0, 3> ExtentsTargetY;
|
||||
UpdateField<float, 0, 4> ExtentsTargetZ;
|
||||
|
||||
using OwnerObject = AreaTrigger;
|
||||
void WriteCreate(ByteBuffer& data, Player const* receiver, AreaTrigger const* owner) const;
|
||||
@@ -1769,14 +1769,14 @@ namespace UF
|
||||
UpdateField<UF::OverrideCurve, 0, 3> OverrideMoveCurveX;
|
||||
UpdateField<UF::OverrideCurve, 0, 4> OverrideMoveCurveY;
|
||||
UpdateField<UF::OverrideCurve, 0, 5> OverrideMoveCurveZ;
|
||||
UpdateField<UF::OverrideCurve, 0, 6> OverrideFacingCurve;
|
||||
UpdateField<UF::OverrideCurve, 0, 6> OverrideShapeCurve;
|
||||
UpdateField<ObjectGuid, 0, 7> Caster;
|
||||
UpdateField<uint32, 0, 8> Duration;
|
||||
UpdateField<uint32, 0, 9> TimeToTarget;
|
||||
UpdateField<uint32, 0, 10> TimeToTargetScale;
|
||||
UpdateField<uint32, 0, 11> TimeToTargetExtraScale;
|
||||
UpdateField<uint32, 0, 12> TimeToTargetPos; // Linked to m_overrideMoveCurve
|
||||
UpdateField<uint32, 0, 13> TimeToTargetFacing; // Linked to m_overrideFacingCurve
|
||||
UpdateField<uint32, 0, 13> TimeToTargetShape; // Linked to m_overrideShapeCurve
|
||||
UpdateField<int32, 0, 14> SpellID;
|
||||
UpdateField<int32, 0, 15> SpellForVisuals;
|
||||
UpdateField<UF::SpellCastVisual, 0, 16> SpellVisual;
|
||||
|
||||
@@ -548,7 +548,7 @@ struct at_ymiron_the_fallen_king_bane : AreaTriggerAI
|
||||
return;
|
||||
|
||||
float radius = at->GetExactDist(caster);
|
||||
float angle = at->GetOrientation();
|
||||
float angle = caster->GetAbsoluteAngle(at);
|
||||
|
||||
AreaTriggerOrbitInfo orbitInfo;
|
||||
orbitInfo.CounterClockwise = false;
|
||||
|
||||
Reference in New Issue
Block a user