mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-02-28 14:35:57 +00:00
Merge branch 'master' into Playerbot
# Conflicts: # src/server/game/Entities/Creature/Creature.cpp # src/server/game/Entities/Creature/Creature.h # src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp
This commit is contained in:
8
data/sql/updates/db_world/2022_07_13_00.sql
Normal file
8
data/sql/updates/db_world/2022_07_13_00.sql
Normal file
@@ -0,0 +1,8 @@
|
||||
-- DB update 2022_07_12_01 -> 2022_07_13_00
|
||||
--
|
||||
|
||||
UPDATE `creature_template` SET `exp`=0, `ManaModifier`=1 WHERE `entry`=11657;
|
||||
UPDATE `creature_template` SET `unit_flags`=`unit_flags`|512 WHERE `entry`=11677;
|
||||
UPDATE `creature_template` SET `minlevel`=53, `maxlevel`=54 WHERE `entry`=11600;
|
||||
UPDATE `creature_template` SET `lootid`=0,`mingold`=0, `maxgold`=0 WHERE `entry` IN (10987,11600,11602,11604,11605,10982,11603);
|
||||
|
||||
6
data/sql/updates/db_world/2022_07_18_00.sql
Normal file
6
data/sql/updates/db_world/2022_07_18_00.sql
Normal file
@@ -0,0 +1,6 @@
|
||||
-- DB update 2022_07_13_00 -> 2022_07_18_00
|
||||
--
|
||||
DELETE FROM `item_loot_template` WHERE (`Entry` = 9265) AND (`Item` IN (9360, 9361));
|
||||
INSERT INTO `item_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES
|
||||
(9265, 9360, 0, 92, 0, 1, 1, 1, 1, 'Cuergo\'s Hidden Treasure - Cuergo\'s Gold'),
|
||||
(9265, 9361, 0, 0, 0, 1, 1, 1, 1, 'Cuergo\'s Hidden Treasure - Cuergo\'s Gold with worm');
|
||||
2
data/sql/updates/db_world/2022_07_18_01.sql
Normal file
2
data/sql/updates/db_world/2022_07_18_01.sql
Normal file
@@ -0,0 +1,2 @@
|
||||
-- DB update 2022_07_18_00 -> 2022_07_18_01
|
||||
UPDATE `creature_template` SET `flags_extra` = `flags_extra` |64 WHERE (`entry` = 10161);
|
||||
3
data/sql/updates/db_world/2022_07_19_00.sql
Normal file
3
data/sql/updates/db_world/2022_07_19_00.sql
Normal file
@@ -0,0 +1,3 @@
|
||||
-- DB update 2022_07_18_01 -> 2022_07_19_00
|
||||
--
|
||||
UPDATE `spell_dbc` SET `DurationIndex`=21 WHERE `ID`=24235;
|
||||
3
data/sql/updates/db_world/2022_07_19_01.sql
Normal file
3
data/sql/updates/db_world/2022_07_19_01.sql
Normal file
@@ -0,0 +1,3 @@
|
||||
-- DB update 2022_07_19_00 -> 2022_07_19_01
|
||||
--
|
||||
UPDATE `creature_template` SET `ScriptName`='npc_brain_wash_totem' WHERE `entry`=15112;
|
||||
8
data/sql/updates/db_world/2022_07_19_02.sql
Normal file
8
data/sql/updates/db_world/2022_07_19_02.sql
Normal file
@@ -0,0 +1,8 @@
|
||||
-- DB update 2022_07_19_01 -> 2022_07_19_02
|
||||
--
|
||||
UPDATE `creature` SET `MovementType` = 1, `wander_distance` = 5 WHERE `guid` IN (51879,51914);
|
||||
UPDATE `creature` SET `MovementType` = 0 WHERE `guid` = 132313;
|
||||
|
||||
UPDATE `creature_template` SET `AIName` = 'NullCreatureAI' WHERE `AIName` IN ('NullCreatureAi', 'NullAI');
|
||||
UPDATE `creature_template` SET `AIName` = 'AggressorAI' WHERE `AIName` = 'AgressorAI';
|
||||
UPDATE `creature_template` SET `AIName` = '' WHERE `AIName` = 'OutdoorPvPObjectiveAI';
|
||||
3
data/sql/updates/db_world/2022_07_19_03.sql
Normal file
3
data/sql/updates/db_world/2022_07_19_03.sql
Normal file
@@ -0,0 +1,3 @@
|
||||
-- DB update 2022_07_19_02 -> 2022_07_19_03
|
||||
--
|
||||
UPDATE `spell_proc_event` SET `procPhase`=1 WHERE `entry`=24658;
|
||||
284
data/sql/updates/db_world/2022_07_19_04.sql
Normal file
284
data/sql/updates/db_world/2022_07_19_04.sql
Normal file
@@ -0,0 +1,284 @@
|
||||
-- DB update 2022_07_19_03 -> 2022_07_19_04
|
||||
--
|
||||
/* Maintenance on ZG Entranceway mobs part 2 Pooling */
|
||||
DELETE FROM `creature` WHERE `guid` IN (49116, 49117, 49118, 49119);
|
||||
DELETE FROM `creature_addon` WHERE `guid` IN (49116, 49117, 49118, 49119);
|
||||
DELETE FROM `waypoint_data` WHERE `id` IN (49116, 49117, 49118, 49119);
|
||||
|
||||
/* 20 Pools of V( (Themselves Pooled) to represent every possibility; this is the only way I know how to represent every possibility I am open to other suggestions; 72 snakes
|
||||
|
||||
INSERT INTO `creature` (`guid`, `id1`, `id2`, `id3`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `ScriptName`, `VerifiedBuild`) VALUES
|
||||
(@GUID+, 0, 0, 0, 309, 0, 0, 1, 1, 0, -11884.3, -1379.01, 66.4316, 3.36848, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- Empty Occasionally 1 slot, front facing exit
|
||||
(@GUID+, 0, 0, 0, 309, 0, 0, 1, 1, 0, -11896.4, -1365.13, 69.8727, 2.42601, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- Empty Occasionally 2 slot left facing exit
|
||||
(@GUID+, 0, 0, 0, 309, 0, 0, 1, 1, 0, -11885, -1368.42, 68.8007, 5.53269, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 3 slot center slot
|
||||
(@GUID+, 0, 0, 0, 309, 0, 0, 1, 1, 0, -11878.2, -1368.68, 69.7661, 3.90954, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0); -- 4 slot right slot
|
||||
|
||||
@POOL+0 Master Pool of all of the following Pools
|
||||
|
||||
8 Pools are 6.25% to create a 50% chance of 3 mobs spawning, let E1 and E2 represent empty xyz slots that have been witnessed empty
|
||||
|
||||
@POOL+1 E1 A@GUID+0 S@GUID+1 X@GUID+2
|
||||
@POOL+2 E1 A@GUID+3 X@GUID+4 S@GUID+5
|
||||
@POOL+3 E1 S@GUID+6 A@GUID+7 X@GUID+8
|
||||
@POOL+4 E1 S@GUID+9 X@GUID+10 A@GUID+11
|
||||
@POOL+5 A@GUID+12 E2 S@GUID+13 X@GUID+14
|
||||
@POOL+6 A@GUID+15 E2 X@GUID+16 S@GUID+17
|
||||
@POOL+7 S@GUID+18 E2 A@GUID+19 X@GUID+20
|
||||
@POOL+8 S@GUID+21 E2 X@GUID+22 A@GUID+23
|
||||
|
||||
11 Pools of 4.16% and 1 of 4.24% to create a 50% chance of 4 mobs spawning 1-3 of each type
|
||||
@POOL+9 A@GUID+24 S@GUID+25 X@GUID+26 X@GUID+27
|
||||
@POOL+10 A@GUID+28 X@GUID+29 S@GUID+30 X@GUID+31
|
||||
@POOL+11 A@GUID+32 X@GUID+33 X@GUID+34 S@GUID+35
|
||||
@POOL+12 S@GUID+36 A@GUID+37 X@GUID+38 X@GUID+39
|
||||
@POOL+13 S@GUID+40 X@GUID+41 A@GUID+42 X@GUID+43
|
||||
@POOL+14 S@GUID+44 X@GUID+45 X@GUID+46 A@GUID+47
|
||||
@POOL+15 X@GUID+48 A@GUID+49 S@GUID+50 X@GUID+51
|
||||
@POOL+16 X@GUID+52 A@GUID+53 X@GUID+54 S@GUID+55
|
||||
@POOL+17 X@GUID+56 S@GUID+57 A@GUID+58 X@GUID+59
|
||||
@POOL+18 X@GUID+60 S@GUID+61 X@GUID+62 A@GUID+63
|
||||
@POOL+19 X@GUID+64 X@GUID+65 A@GUID+66 S@GUID+67
|
||||
@POOL+20 X@GUID+68 X@GUID+69 S@GUID+70 A@GUID+71 */
|
||||
|
||||
SET @GUID :=86939;
|
||||
DELETE FROM `creature` WHERE `guid` BETWEEN @GUID+0 AND @GUID+71;
|
||||
INSERT INTO `creature` (`guid`, `id1`, `id2`, `id3`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `ScriptName`, `VerifiedBuild`) VALUES
|
||||
-- 3 Packs
|
||||
-- @POOL+1 E1 11372, 0, 0,@GUID+0 11371, 0, 0,@GUID+1 11371, 11372, 0,@GUID+2
|
||||
(@GUID+0, 11372, 0, 0, 309, 0, 0, 1, 1, 0, -11896.4, -1365.13, 69.8727, 2.42601, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 2
|
||||
(@GUID+1, 11371, 0, 0, 309, 0, 0, 1, 1, 0, -11885, -1368.42, 68.8007, 5.53269, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 3
|
||||
(@GUID+2, 11371, 11372, 0, 309, 0, 0, 1, 1, 0, -11878.2, -1368.68, 69.7661, 3.90954, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 4
|
||||
-- @POOL+2 E1 11372, 0, 0,@GUID+3 11371, 11372, 0,@GUID+4 11371, 0, 0,@GUID+5
|
||||
(@GUID+3, 11372, 0, 0, 309, 0, 0, 1, 1, 0, -11896.4, -1365.13, 69.8727, 2.42601, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 2
|
||||
(@GUID+4, 11371, 11372, 0, 309, 0, 0, 1, 1, 0, -11885, -1368.42, 68.8007, 5.53269, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 3
|
||||
(@GUID+5, 11371, 0, 0, 309, 0, 0, 1, 1, 0, -11878.2, -1368.68, 69.7661, 3.90954, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 4
|
||||
-- @POOL+3 E1 11371, 0, 0,@GUID+6 11372, 0, 0,@GUID+7 11371, 11372, 0,@GUID+8
|
||||
(@GUID+6, 11371, 0, 0, 309, 0, 0, 1, 1, 0, -11896.4, -1365.13, 69.8727, 2.42601, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 2
|
||||
(@GUID+7, 11372, 0, 0, 309, 0, 0, 1, 1, 0, -11885, -1368.42, 68.8007, 5.53269, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 3
|
||||
(@GUID+8, 11371, 11372, 0, 309, 0, 0, 1, 1, 0, -11878.2, -1368.68, 69.7661, 3.90954, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 4
|
||||
-- @POOL+4 E1 11371, 0, 0,@GUID+9 11371, 11372, 0,@GUID+10 11372, 0, 0,@GUID+11
|
||||
(@GUID+9, 11371, 0, 0, 309, 0, 0, 1, 1, 0, -11896.4, -1365.13, 69.8727, 2.42601, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 2
|
||||
(@GUID+10, 11371, 11372, 0, 309, 0, 0, 1, 1, 0, -11885, -1368.42, 68.8007, 5.53269, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 3
|
||||
(@GUID+11, 11372, 0, 0, 309, 0, 0, 1, 1, 0, -11878.2, -1368.68, 69.7661, 3.90954, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 4
|
||||
-- @POOL+5 11372, 0, 0,@GUID+12 E2 11371, 0, 0,@GUID+13 11371, 11372, 0,@GUID+14
|
||||
(@GUID+12, 11372, 0, 0, 309, 0, 0, 1, 1, 0, -11884.3, -1379.01, 66.4316, 3.36848, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 1
|
||||
(@GUID+13, 11371, 0, 0, 309, 0, 0, 1, 1, 0, -11885, -1368.42, 68.8007, 5.53269, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 3
|
||||
(@GUID+14, 11371, 11372, 0, 309, 0, 0, 1, 1, 0, -11878.2, -1368.68, 69.7661, 3.90954, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 4
|
||||
-- @POOL+6 11372, 0, 0,@GUID+15 E2 11371, 11372, 0,@GUID+16 11371, 0, 0,@GUID+17
|
||||
(@GUID+15, 11372, 0, 0, 309, 0, 0, 1, 1, 0, -11884.3, -1379.01, 66.4316, 3.36848, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 1
|
||||
(@GUID+16, 11371, 11372, 0, 309, 0, 0, 1, 1, 0, -11885, -1368.42, 68.8007, 5.53269, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 3
|
||||
(@GUID+17, 11371, 0, 0, 309, 0, 0, 1, 1, 0, -11878.2, -1368.68, 69.7661, 3.90954, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 4
|
||||
-- @POOL+7 11371, 0, 0,@GUID+18 E2 11372, 0, 0,@GUID+19 11371, 11372, 0,@GUID+20
|
||||
(@GUID+18, 11371, 0, 0, 309, 0, 0, 1, 1, 0, -11884.3, -1379.01, 66.4316, 3.36848, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 1
|
||||
(@GUID+19, 11372, 0, 0, 309, 0, 0, 1, 1, 0, -11885, -1368.42, 68.8007, 5.53269, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 3
|
||||
(@GUID+20, 11371, 11372, 0, 309, 0, 0, 1, 1, 0, -11878.2, -1368.68, 69.7661, 3.90954, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 4
|
||||
-- @POOL+8 11371, 0, 0,@GUID+21 E2 11371, 11372, 0,@GUID+22 11372, 0, 0,@GUID+23
|
||||
(@GUID+21, 11371, 0, 0, 309, 0, 0, 1, 1, 0, -11884.3, -1379.01, 66.4316, 3.36848, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 1
|
||||
(@GUID+22, 11371, 11372, 0, 309, 0, 0, 1, 1, 0, -11885, -1368.42, 68.8007, 5.53269, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 3
|
||||
(@GUID+23, 11372, 0, 0, 309, 0, 0, 1, 1, 0, -11878.2, -1368.68, 69.7661, 3.90954, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 4
|
||||
-- 4 Packs
|
||||
-- @POOL+9 11372, 0, 0,@GUID+24 11371, 0, 0,@GUID+25 11371, 11372, 0,@GUID+26 11371, 11372, 0,@GUID+27
|
||||
(@GUID+24, 11372, 0, 0, 309, 0, 0, 1, 1, 0, -11884.3, -1379.01, 66.4316, 3.36848, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 1
|
||||
(@GUID+25, 11371, 0, 0, 309, 0, 0, 1, 1, 0, -11896.4, -1365.13, 69.8727, 2.42601, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 2
|
||||
(@GUID+26, 11371, 11372, 0, 309, 0, 0, 1, 1, 0, -11885, -1368.42, 68.8007, 5.53269, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 3
|
||||
(@GUID+27, 11371, 11372, 0, 309, 0, 0, 1, 1, 0, -11878.2, -1368.68, 69.7661, 3.90954, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 4
|
||||
-- @POOL+10 11372, 0, 0,@GUID+28 11371, 11372, 0,@GUID+29 11371, 0, 0,@GUID+30 11371, 11372, 0,@GUID+31
|
||||
(@GUID+28, 11372, 0, 0, 309, 0, 0, 1, 1, 0, -11884.3, -1379.01, 66.4316, 3.36848, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 1
|
||||
(@GUID+29, 11371, 11372, 0, 309, 0, 0, 1, 1, 0, -11896.4, -1365.13, 69.8727, 2.42601, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 2
|
||||
(@GUID+30, 11371, 0, 0, 309, 0, 0, 1, 1, 0, -11885, -1368.42, 68.8007, 5.53269, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 3
|
||||
(@GUID+31, 11371, 11372, 0, 309, 0, 0, 1, 1, 0, -11878.2, -1368.68, 69.7661, 3.90954, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 4
|
||||
-- @POOL+11 11372, 0, 0,@GUID+32 11371, 11372, 0,@GUID+33 11371, 11372, 0,@GUID+34 11371, 0, 0,@GUID+35
|
||||
(@GUID+32, 11372, 0, 0, 309, 0, 0, 1, 1, 0, -11884.3, -1379.01, 66.4316, 3.36848, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 1
|
||||
(@GUID+33, 11371, 11372, 0, 309, 0, 0, 1, 1, 0, -11896.4, -1365.13, 69.8727, 2.42601, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 2
|
||||
(@GUID+34, 11371, 11372, 0, 309, 0, 0, 1, 1, 0, -11885, -1368.42, 68.8007, 5.53269, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 3
|
||||
(@GUID+35, 11371, 0, 0, 309, 0, 0, 1, 1, 0, -11878.2, -1368.68, 69.7661, 3.90954, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 4
|
||||
-- @POOL+12 11371, 0, 0,@GUID+36 11372, 0, 0,@GUID+37 11371, 11372, 0,@GUID+38 11371, 11372, 0,@GUID+39
|
||||
(@GUID+36, 11371, 0, 0, 309, 0, 0, 1, 1, 0, -11884.3, -1379.01, 66.4316, 3.36848, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 1
|
||||
(@GUID+37, 11372, 0, 0, 309, 0, 0, 1, 1, 0, -11896.4, -1365.13, 69.8727, 2.42601, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 2
|
||||
(@GUID+38, 11371, 11372, 0, 309, 0, 0, 1, 1, 0, -11885, -1368.42, 68.8007, 5.53269, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 3
|
||||
(@GUID+39, 11371, 11372, 0, 309, 0, 0, 1, 1, 0, -11878.2, -1368.68, 69.7661, 3.90954, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 4
|
||||
-- @POOL+13 11371, 0, 0,@GUID+40 11371, 11372, 0,@GUID+41 11372, 0, 0,@GUID+42 11371, 11372, 0,@GUID+43
|
||||
(@GUID+40, 11371, 0, 0, 309, 0, 0, 1, 1, 0, -11884.3, -1379.01, 66.4316, 3.36848, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 1
|
||||
(@GUID+41, 11371, 11372, 0, 309, 0, 0, 1, 1, 0, -11896.4, -1365.13, 69.8727, 2.42601, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 2
|
||||
(@GUID+42, 11372, 0, 0, 309, 0, 0, 1, 1, 0, -11885, -1368.42, 68.8007, 5.53269, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 3
|
||||
(@GUID+43, 11371, 11372, 0, 309, 0, 0, 1, 1, 0, -11878.2, -1368.68, 69.7661, 3.90954, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 4
|
||||
-- @POOL+14 11371, 0, 0,@GUID+44 11371, 11372, 0,@GUID+45 11371, 11372, 0,@GUID+46 11372, 0, 0,@GUID+47
|
||||
(@GUID+44, 11371, 0, 0, 309, 0, 0, 1, 1, 0, -11884.3, -1379.01, 66.4316, 3.36848, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 1
|
||||
(@GUID+45, 11371, 11372, 0, 309, 0, 0, 1, 1, 0, -11896.4, -1365.13, 69.8727, 2.42601, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 2
|
||||
(@GUID+46, 11371, 11372, 0, 309, 0, 0, 1, 1, 0, -11885, -1368.42, 68.8007, 5.53269, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 3
|
||||
(@GUID+47, 11372, 0, 0, 309, 0, 0, 1, 1, 0, -11878.2, -1368.68, 69.7661, 3.90954, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 4
|
||||
-- @POOL+15 11371, 11372, 0,@GUID+48 11372, 0, 0,@GUID+49 11371, 0, 0,@GUID+50 11371, 11372, 0,@GUID+51
|
||||
(@GUID+48, 11371, 11372, 0, 309, 0, 0, 1, 1, 0, -11884.3, -1379.01, 66.4316, 3.36848, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 1
|
||||
(@GUID+49, 11372, 0, 0, 309, 0, 0, 1, 1, 0, -11896.4, -1365.13, 69.8727, 2.42601, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 2
|
||||
(@GUID+50, 11371, 0, 0, 309, 0, 0, 1, 1, 0, -11885, -1368.42, 68.8007, 5.53269, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 3
|
||||
(@GUID+51, 11371, 11372, 0, 309, 0, 0, 1, 1, 0, -11878.2, -1368.68, 69.7661, 3.90954, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 4
|
||||
-- @POOL+16 11371, 11372, 0,@GUID+52 11372, 0, 0,@GUID+53 11371, 11372, 0,@GUID+54 11371, 0, 0,@GUID+55
|
||||
(@GUID+52, 11371, 11372, 0, 309, 0, 0, 1, 1, 0, -11884.3, -1379.01, 66.4316, 3.36848, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 1
|
||||
(@GUID+53, 11372, 0, 0, 309, 0, 0, 1, 1, 0, -11896.4, -1365.13, 69.8727, 2.42601, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 2
|
||||
(@GUID+54, 11371, 11372, 0, 309, 0, 0, 1, 1, 0, -11885, -1368.42, 68.8007, 5.53269, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 3
|
||||
(@GUID+55, 11371, 0, 0, 309, 0, 0, 1, 1, 0, -11878.2, -1368.68, 69.7661, 3.90954, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 4
|
||||
-- @POOL+17 11371, 11372, 0,@GUID+56 11371, 0, 0,@GUID+57 11372, 0, 0,@GUID+58 11371, 11372, 0,@GUID+59
|
||||
(@GUID+56, 11371, 11372, 0, 309, 0, 0, 1, 1, 0, -11884.3, -1379.01, 66.4316, 3.36848, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 1
|
||||
(@GUID+57, 11371, 0, 0, 309, 0, 0, 1, 1, 0, -11896.4, -1365.13, 69.8727, 2.42601, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 2
|
||||
(@GUID+58, 11372, 0, 0, 309, 0, 0, 1, 1, 0, -11885, -1368.42, 68.8007, 5.53269, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 3
|
||||
(@GUID+59, 11371, 11372, 0, 309, 0, 0, 1, 1, 0, -11878.2, -1368.68, 69.7661, 3.90954, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 4
|
||||
-- @POOL+18 11371, 11372, 0,@GUID+60 11371, 0, 0,@GUID+61 11371, 11372, 0,@GUID+62 11372, 0, 0,@GUID+63
|
||||
(@GUID+60, 11371, 11372, 0, 309, 0, 0, 1, 1, 0, -11884.3, -1379.01, 66.4316, 3.36848, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 1
|
||||
(@GUID+61, 11371, 0, 0, 309, 0, 0, 1, 1, 0, -11896.4, -1365.13, 69.8727, 2.42601, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 2
|
||||
(@GUID+62, 11371, 11372, 0, 309, 0, 0, 1, 1, 0, -11885, -1368.42, 68.8007, 5.53269, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 3
|
||||
(@GUID+63, 11372, 0, 0, 309, 0, 0, 1, 1, 0, -11878.2, -1368.68, 69.7661, 3.90954, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 4
|
||||
-- @POOL+19 11371, 11372, 0,@GUID+64 11371, 11372, 0,@GUID+65 11372, 0, 0,@GUID+66 11371, 0, 0,@GUID+67
|
||||
(@GUID+64, 11371, 11372, 0, 309, 0, 0, 1, 1, 0, -11884.3, -1379.01, 66.4316, 3.36848, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 1
|
||||
(@GUID+65, 11371, 11372, 0, 309, 0, 0, 1, 1, 0, -11896.4, -1365.13, 69.8727, 2.42601, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 2
|
||||
(@GUID+66, 11372, 0, 0, 309, 0, 0, 1, 1, 0, -11885, -1368.42, 68.8007, 5.53269, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 3
|
||||
(@GUID+67, 11371, 0, 0, 309, 0, 0, 1, 1, 0, -11878.2, -1368.68, 69.7661, 3.90954, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 4
|
||||
-- @POOL+20 11371, 11372, 0,@GUID+68 11371, 11372, 0,@GUID+69 11371, 0, 0,@GUID+70 11372, 0, 0,@GUID+71
|
||||
(@GUID+68, 11371, 11372, 0, 309, 0, 0, 1, 1, 0, -11884.3, -1379.01, 66.4316, 3.36848, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 1
|
||||
(@GUID+69, 11371, 11372, 0, 309, 0, 0, 1, 1, 0, -11896.4, -1365.13, 69.8727, 2.42601, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 2
|
||||
(@GUID+70, 11371, 0, 0, 309, 0, 0, 1, 1, 0, -11885, -1368.42, 68.8007, 5.53269, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0), -- 3
|
||||
(@GUID+71, 11372, 0, 0, 309, 0, 0, 1, 1, 0, -11878.2, -1368.68, 69.7661, 3.90954, 7200, 3, 0, 15260, 0, 1, 0, 0, 0, '', 0); -- 4
|
||||
|
||||
SET @POOL :=448;
|
||||
DELETE FROM `pool_template` WHERE `entry` BETWEEN @POOL+0 AND @POOL+20;
|
||||
DELETE FROM `pool_creature` WHERE `guid` BETWEEN @GUID+0 AND @GUID+71;
|
||||
|
||||
INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES
|
||||
(@POOL+0, 1, 'ZG Entrance Snake 3-4 Pack Pool of Pools'),
|
||||
(@POOL+1, 3, 'ZG Entrance Snake as 3 Pack 1/8'),
|
||||
(@POOL+2, 3, 'ZG Entrance Snake as 3 Pack 2/8'),
|
||||
(@POOL+3, 3, 'ZG Entrance Snake as 3 Pack 3/8'),
|
||||
(@POOL+4, 3, 'ZG Entrance Snake as 3 Pack 4/8'),
|
||||
(@POOL+5, 3, 'ZG Entrance Snake as 3 Pack 5/8'),
|
||||
(@POOL+6, 3, 'ZG Entrance Snake as 3 Pack 6/8'),
|
||||
(@POOL+7, 3, 'ZG Entrance Snake as 3 Pack 7/8'),
|
||||
(@POOL+8, 3, 'ZG Entrance Snake as 3 Pack 8/8'),
|
||||
(@POOL+9, 4, 'ZG Entrance Snake as 4 Pack 1/12'),
|
||||
(@POOL+10, 4, 'ZG Entrance Snake as 4 Pack 2/12'),
|
||||
(@POOL+11, 4, 'ZG Entrance Snake as 4 Pack 3/12'),
|
||||
(@POOL+12, 4, 'ZG Entrance Snake as 4 Pack 4/12'),
|
||||
(@POOL+13, 4, 'ZG Entrance Snake as 4 Pack 5/12'),
|
||||
(@POOL+14, 4, 'ZG Entrance Snake as 4 Pack 6/12'),
|
||||
(@POOL+15, 4, 'ZG Entrance Snake as 4 Pack 7/12'),
|
||||
(@POOL+16, 4, 'ZG Entrance Snake as 4 Pack 8/12'),
|
||||
(@POOL+17, 4, 'ZG Entrance Snake as 4 Pack 9/12'),
|
||||
(@POOL+18, 4, 'ZG Entrance Snake as 4 Pack 10/12'),
|
||||
(@POOL+19, 4, 'ZG Entrance Snake as 4 Pack 11/12'),
|
||||
(@POOL+20, 4, 'ZG Entrance Snake as 4 Pack 12/12');
|
||||
|
||||
DELETE FROM `pool_pool` WHERE `pool_id` BETWEEN @POOL+0 AND @POOL+20;
|
||||
DELETE FROM `pool_pool` WHERE `mother_pool` BETWEEN @POOL+0 AND @POOL+20;
|
||||
INSERT INTO `pool_pool` (`pool_id`, `mother_pool`, `chance`, `description`) VALUES
|
||||
(@POOL+1, @POOL+0, 6, 'ZG Entrance Snake as 3 Pack 1/8'),
|
||||
(@POOL+2, @POOL+0, 6, 'ZG Entrance Snake as 3 Pack 2/8'),
|
||||
(@POOL+3, @POOL+0, 6, 'ZG Entrance Snake as 3 Pack 3/8'),
|
||||
(@POOL+4, @POOL+0, 7, 'ZG Entrance Snake as 3 Pack 4/8'),
|
||||
(@POOL+5, @POOL+0, 6, 'ZG Entrance Snake as 3 Pack 5/8'),
|
||||
(@POOL+6, @POOL+0, 6, 'ZG Entrance Snake as 3 Pack 6/8'),
|
||||
(@POOL+7, @POOL+0, 6, 'ZG Entrance Snake as 3 Pack 7/8'),
|
||||
(@POOL+8, @POOL+0, 7, 'ZG Entrance Snake as 3 Pack 8/8'),
|
||||
(@POOL+9, @POOL+0, 5, 'ZG Entrance Snake as 4 Pack 1/12'),
|
||||
(@POOL+10, @POOL+0, 4, 'ZG Entrance Snake as 4 Pack 2/12'),
|
||||
(@POOL+11, @POOL+0, 4, 'ZG Entrance Snake as 4 Pack 3/12'),
|
||||
(@POOL+12, @POOL+0, 4, 'ZG Entrance Snake as 4 Pack 4/12'),
|
||||
(@POOL+13, @POOL+0, 4, 'ZG Entrance Snake as 4 Pack 5/12'),
|
||||
(@POOL+14, @POOL+0, 5, 'ZG Entrance Snake as 4 Pack 6/12'),
|
||||
(@POOL+15, @POOL+0, 4, 'ZG Entrance Snake as 4 Pack 7/12'),
|
||||
(@POOL+16, @POOL+0, 4, 'ZG Entrance Snake as 4 Pack 8/12'),
|
||||
(@POOL+17, @POOL+0, 4, 'ZG Entrance Snake as 4 Pack 9/12'),
|
||||
(@POOL+18, @POOL+0, 4, 'ZG Entrance Snake as 4 Pack 10/12'),
|
||||
(@POOL+19, @POOL+0, 4, 'ZG Entrance Snake as 4 Pack 11/12'),
|
||||
(@POOL+20, @POOL+0, 4, 'ZG Entrance Snake as 4 Pack 12/12');
|
||||
|
||||
INSERT INTO `pool_creature` (`guid`, `pool_entry`, `description`) VALUES
|
||||
-- @POOL+1 E1 A@GUID+0 S@GUID+1 X@GUID+2
|
||||
(@GUID+0, @POOL+1, 'ZG Entrance Snake as 3 Pack 1/8 Adder'),
|
||||
(@GUID+1, @POOL+1, 'ZG Entrance Snake as 3 Pack 1/8 Serpent'),
|
||||
(@GUID+2, @POOL+1, 'ZG Entrance Snake as 3 Pack 1/8 Xsnake'),
|
||||
-- @POOL+2 E1 A@GUID+3 X@GUID+4 S@GUID+5
|
||||
(@GUID+3, @POOL+2, 'ZG Entrance Snake as 3 Pack 2/8 Adder'),
|
||||
(@GUID+4, @POOL+2, 'ZG Entrance Snake as 3 Pack 2/8 Xsnake'),
|
||||
(@GUID+5, @POOL+2, 'ZG Entrance Snake as 3 Pack 2/8 Serpent'),
|
||||
-- @POOL+3 E1 S@GUID+6 A@GUID+7 X@GUID+8
|
||||
(@GUID+6, @POOL+3, 'ZG Entrance Snake as 3 Pack 3/8 Serpent'),
|
||||
(@GUID+7, @POOL+3, 'ZG Entrance Snake as 3 Pack 3/8 Adder'),
|
||||
(@GUID+8, @POOL+3, 'ZG Entrance Snake as 3 Pack 3/8 Xsnake'),
|
||||
-- @POOL+4 E1 S@GUID+9 X@GUID+10 A@GUID+11
|
||||
(@GUID+9, @POOL+4, 'ZG Entrance Snake as 3 Pack 4/8 Serpent'),
|
||||
(@GUID+10, @POOL+4, 'ZG Entrance Snake as 3 Pack 4/8 Xsnake'),
|
||||
(@GUID+11, @POOL+4, 'ZG Entrance Snake as 3 Pack 4/8 Adder'),
|
||||
-- @POOL+5 A@GUID+12 E2 S@GUID+13 X@GUID+14
|
||||
(@GUID+12, @POOL+5, 'ZG Entrance Snake as 3 Pack 5/8 Adder'),
|
||||
(@GUID+13, @POOL+5, 'ZG Entrance Snake as 3 Pack 5/8 Serpent'),
|
||||
(@GUID+14, @POOL+5, 'ZG Entrance Snake as 3 Pack 5/8 Xsnake'),
|
||||
-- @POOL+6 A@GUID+15 E2 X@GUID+16 S@GUID+17
|
||||
(@GUID+15, @POOL+6, 'ZG Entrance Snake as 3 Pack 6/8 Adder'),
|
||||
(@GUID+16, @POOL+6, 'ZG Entrance Snake as 3 Pack 6/8 Xsnake'),
|
||||
(@GUID+17, @POOL+6, 'ZG Entrance Snake as 3 Pack 6/8 Serpent'),
|
||||
-- @POOL+7 S@GUID+18 E2 A@GUID+19 X@GUID+20
|
||||
(@GUID+18, @POOL+7, 'ZG Entrance Snake as 3 Pack 7/8 Serpent'),
|
||||
(@GUID+19, @POOL+7, 'ZG Entrance Snake as 3 Pack 7/8 Adder'),
|
||||
(@GUID+20, @POOL+7, 'ZG Entrance Snake as 3 Pack 7/8 Xsnake'),
|
||||
-- @POOL+8 S@GUID+21 E2 X@GUID+22 A@GUID+23
|
||||
(@GUID+21, @POOL+8, 'ZG Entrance Snake as 3 Pack 8/8 Serpent'),
|
||||
(@GUID+22, @POOL+8, 'ZG Entrance Snake as 3 Pack 8/8 Xsnake'),
|
||||
(@GUID+23, @POOL+8, 'ZG Entrance Snake as 3 Pack 8/8 Adder'),
|
||||
-- @POOL+9 A@GUID+24 S@GUID+25 X@GUID+26 X@GUID+27
|
||||
(@GUID+24, @POOL+9, 'ZG Entrance Snake as 4 Pack 1/12 Adder'),
|
||||
(@GUID+25, @POOL+9, 'ZG Entrance Snake as 4 Pack 1/12 Serpent'),
|
||||
(@GUID+26, @POOL+9, 'ZG Entrance Snake as 4 Pack 1/12 Xsnake'),
|
||||
(@GUID+27, @POOL+9, 'ZG Entrance Snake as 4 Pack 1/12 Xsnake'),
|
||||
-- @POOL+10 A@GUID+28 X@GUID+29 S@GUID+30 X@GUID+31
|
||||
(@GUID+28, @POOL+10, 'ZG Entrance Snake as 4 Pack 2/12 Adder'),
|
||||
(@GUID+29, @POOL+10, 'ZG Entrance Snake as 4 Pack 2/12 Xsnake'),
|
||||
(@GUID+30, @POOL+10, 'ZG Entrance Snake as 4 Pack 2/12 Serpent'),
|
||||
(@GUID+31, @POOL+10, 'ZG Entrance Snake as 4 Pack 2/12 Xsnake'),
|
||||
-- @POOL+11 A@GUID+32 X@GUID+33 X@GUID+34 S@GUID+35
|
||||
(@GUID+32, @POOL+11, 'ZG Entrance Snake as 4 Pack 3/12 Adder'),
|
||||
(@GUID+33, @POOL+11, 'ZG Entrance Snake as 4 Pack 3/12 Xsnake'),
|
||||
(@GUID+34, @POOL+11, 'ZG Entrance Snake as 4 Pack 3/12 Xsnake'),
|
||||
(@GUID+35, @POOL+11, 'ZG Entrance Snake as 4 Pack 3/12 Serpent'),
|
||||
-- @POOL+12 S@GUID+36 A@GUID+37 X@GUID+38 X@GUID+39
|
||||
(@GUID+36, @POOL+12, 'ZG Entrance Snake as 4 Pack 4/12 Serpent'),
|
||||
(@GUID+37, @POOL+12, 'ZG Entrance Snake as 4 Pack 4/12 Adder'),
|
||||
(@GUID+38, @POOL+12, 'ZG Entrance Snake as 4 Pack 4/12 Xsnake'),
|
||||
(@GUID+39, @POOL+12, 'ZG Entrance Snake as 4 Pack 4/12 Xsnake'),
|
||||
-- @POOL+13 S@GUID+40 X@GUID+41 A@GUID+42 X@GUID+43
|
||||
(@GUID+40, @POOL+13, 'ZG Entrance Snake as 4 Pack 5/12 Serpent'),
|
||||
(@GUID+41, @POOL+13, 'ZG Entrance Snake as 4 Pack 5/12 Xsnake'),
|
||||
(@GUID+42, @POOL+13, 'ZG Entrance Snake as 4 Pack 5/12 Adder'),
|
||||
(@GUID+43, @POOL+13, 'ZG Entrance Snake as 4 Pack 5/12 Xsnake'),
|
||||
-- @POOL+14 S@GUID+44 X@GUID+45 X@GUID+46 A@GUID+47
|
||||
(@GUID+44, @POOL+14, 'ZG Entrance Snake as 4 Pack 6/12 Serpent'),
|
||||
(@GUID+45, @POOL+14, 'ZG Entrance Snake as 4 Pack 6/12 Xsnake'),
|
||||
(@GUID+46, @POOL+14, 'ZG Entrance Snake as 4 Pack 6/12 Xsnake'),
|
||||
(@GUID+47, @POOL+14, 'ZG Entrance Snake as 4 Pack 6/12 Adder'),
|
||||
-- @POOL+15 X@GUID+48 A@GUID+49 S@GUID+50 X@GUID+51
|
||||
(@GUID+48, @POOL+15, 'ZG Entrance Snake as 4 Pack 7/12 Xsnake'),
|
||||
(@GUID+49, @POOL+15, 'ZG Entrance Snake as 4 Pack 7/12 Adder'),
|
||||
(@GUID+50, @POOL+15, 'ZG Entrance Snake as 4 Pack 7/12 Serpent'),
|
||||
(@GUID+51, @POOL+15, 'ZG Entrance Snake as 4 Pack 7/12 Xsnake'),
|
||||
-- @POOL+16 X@GUID+52 A@GUID+53 X@GUID+54 S@GUID+55
|
||||
(@GUID+52, @POOL+16, 'ZG Entrance Snake as 4 Pack 8/12 Xsnake'),
|
||||
(@GUID+53, @POOL+16, 'ZG Entrance Snake as 4 Pack 8/12 Adder'),
|
||||
(@GUID+54, @POOL+16, 'ZG Entrance Snake as 4 Pack 8/12 Xsnake'),
|
||||
(@GUID+55, @POOL+16, 'ZG Entrance Snake as 4 Pack 8/12 Serpent'),
|
||||
-- @POOL+17 X@GUID+56 S@GUID+57 A@GUID+58 X@GUID+59
|
||||
(@GUID+56, @POOL+17, 'ZG Entrance Snake as 4 Pack 9/12 Xsnake'),
|
||||
(@GUID+57, @POOL+17, 'ZG Entrance Snake as 4 Pack 9/12 Serpent'),
|
||||
(@GUID+58, @POOL+17, 'ZG Entrance Snake as 4 Pack 9/12 Adder'),
|
||||
(@GUID+59, @POOL+17, 'ZG Entrance Snake as 4 Pack 9/12 Xsnake'),
|
||||
-- @POOL+18 X@GUID+60 S@GUID+61 X@GUID+62 A@GUID+63
|
||||
(@GUID+60, @POOL+18, 'ZG Entrance Snake as 4 Pack 10/12 Xsnake'),
|
||||
(@GUID+61, @POOL+18, 'ZG Entrance Snake as 4 Pack 10/12 Serpent'),
|
||||
(@GUID+62, @POOL+18, 'ZG Entrance Snake as 4 Pack 10/12 Xsnake'),
|
||||
(@GUID+63, @POOL+18, 'ZG Entrance Snake as 4 Pack 10/12 Adder'),
|
||||
-- @POOL+19 X@GUID+64 X@GUID+65 A@GUID+66 S@GUID+67
|
||||
(@GUID+64, @POOL+19, 'ZG Entrance Snake as 4 Pack 11/12 Xsnake'),
|
||||
(@GUID+65, @POOL+19, 'ZG Entrance Snake as 4 Pack 11/12 Xsnake'),
|
||||
(@GUID+66, @POOL+19, 'ZG Entrance Snake as 4 Pack 11/12 Adder'),
|
||||
(@GUID+67, @POOL+19, 'ZG Entrance Snake as 4 Pack 11/12 Serpent'),
|
||||
-- @POOL+20 X@GUID+68 X@GUID+69 S@GUID+70 A@GUID+71
|
||||
(@GUID+68, @POOL+20, 'ZG Entrance Snake as 4 Pack 12/12 Xsnake'),
|
||||
(@GUID+69, @POOL+20, 'ZG Entrance Snake as 4 Pack 12/12 Xsnake'),
|
||||
(@GUID+70, @POOL+20, 'ZG Entrance Snake as 4 Pack 12/12 Serpent'),
|
||||
(@GUID+71, @POOL+20, 'ZG Entrance Snake as 4 Pack 12/12 Adder');
|
||||
54
data/sql/updates/db_world/2022_07_20_00.sql
Normal file
54
data/sql/updates/db_world/2022_07_20_00.sql
Normal file
@@ -0,0 +1,54 @@
|
||||
-- DB update 2022_07_19_04 -> 2022_07_20_00
|
||||
--
|
||||
SET @NPC := 42880;
|
||||
SET @PATH := @NPC * 10;
|
||||
|
||||
UPDATE `creature` SET `position_x`=-10661, `position_y`=-3924.57, `position_z`=18.8015, `orientation`=5.83672, `MovementType`='2' WHERE `guid`=@NPC;
|
||||
|
||||
DELETE FROM `creature_addon` WHERE `guid` = @NPC;
|
||||
INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH);
|
||||
|
||||
DELETE FROM `waypoint_data` WHERE `id` = @PATH;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`) VALUES
|
||||
(@PATH, 1, -10641.5, -3982.49, 19.943),
|
||||
(@PATH, 2, -10591, -3982.21, 21.4646),
|
||||
(@PATH, 3, -10574.5, -3995.66, 18.5265),
|
||||
(@PATH, 4, -10556.4, -4008.31, 19.5063),
|
||||
(@PATH, 5, -10541.2, -4012.2, 22.3642),
|
||||
(@PATH, 6, -10510.2, -4016.9, 18.3724),
|
||||
(@PATH, 7, -10482.4, -4010.78, 18.9192),
|
||||
(@PATH, 8, -10475.6, -4003.55, 19.5199),
|
||||
(@PATH, 9, -10460.1, -3998.53, 18.5604),
|
||||
(@PATH, 10, -10434, -4005, 18.5093),
|
||||
(@PATH, 11, -10408.6, -4010.32, 18.2372),
|
||||
(@PATH, 12, -10387.1, -3999.93, 19.7943),
|
||||
(@PATH, 13, -10363.4, -3997.07, 19.3136),
|
||||
(@PATH, 14, -10343.3, -4003.71, 20.5207),
|
||||
(@PATH, 15, -10328.6, -4013.14, 18.4205),
|
||||
(@PATH, 16, -10335.8, -4029.01, 19.4894),
|
||||
(@PATH, 17, -10325.5, -4054.12, 19.7849),
|
||||
(@PATH, 18, -10315.2, -4078.22, 22.4922),
|
||||
(@PATH, 19, -10296, -4123.39, 23.2141),
|
||||
(@PATH, 20, -10301, -4143.57, 19.8863),
|
||||
(@PATH, 21, -10322.1, -4159.15, 18.3385),
|
||||
(@PATH, 22, -10357.8, -4178.26, 20.1807),
|
||||
(@PATH, 23, -10379.9, -4192.31, 22.7909),
|
||||
(@PATH, 24, -10419, -4192.8, 19.1422),
|
||||
(@PATH, 25, -10441.2, -4184.96, 18.6967),
|
||||
(@PATH, 26, -10480, -4193.1, 18.9901),
|
||||
(@PATH, 27, -10495, -4205.67, 19.6285),
|
||||
(@PATH, 28, -10511.9, -4209.93, 19.0212),
|
||||
(@PATH, 29, -10547.4, -4199.08, 18.7961),
|
||||
(@PATH, 30, -10564.6, -4187.57, 19.3169),
|
||||
(@PATH, 31, -10581, -4203.9, 20.3609),
|
||||
(@PATH, 32, -10594, -4205.64, 21.6639),
|
||||
(@PATH, 33, -10620.6, -4211.36, 23.3686),
|
||||
(@PATH, 34, -10673.5, -4191.09, 22.867),
|
||||
(@PATH, 35, -10710.4, -4172.44, 21.8668),
|
||||
(@PATH, 36, -10723.1, -4139.99, 18.6405),
|
||||
(@PATH, 37, -10745.3, -4114.88, 19.7025),
|
||||
(@PATH, 38, -10749.3, -4070.5, 20.6484),
|
||||
(@PATH, 39, -10756.1, -4048.57, 22.868),
|
||||
(@PATH, 40, -10742.5, -4002.81, 20.3069),
|
||||
(@PATH, 41, -10701.2, -3956.85, 23.3119),
|
||||
(@PATH, 42, -10662.1, -3926.38, 19.4344);
|
||||
227
data/sql/updates/db_world/2022_07_20_01.sql
Normal file
227
data/sql/updates/db_world/2022_07_20_01.sql
Normal file
@@ -0,0 +1,227 @@
|
||||
-- DB update 2022_07_20_00 -> 2022_07_20_01
|
||||
--
|
||||
SET @EVENT := 8;
|
||||
|
||||
DELETE FROM `game_event_creature` WHERE `eventEntry` = @EVENT AND `guid` IN
|
||||
(146602,
|
||||
146609,
|
||||
146618,
|
||||
146619,
|
||||
146621);
|
||||
|
||||
INSERT INTO `game_event_creature` (`eventEntry`, `guid`) VALUES
|
||||
(@EVENT, 146602),
|
||||
(@EVENT, 146609),
|
||||
(@EVENT, 146618),
|
||||
(@EVENT, 146619),
|
||||
(@EVENT, 146621);
|
||||
|
||||
DELETE FROM `game_event_gameobject` WHERE `eventEntry` = @EVENT AND `guid` IN
|
||||
(9780,
|
||||
9754,
|
||||
9782,
|
||||
9751,
|
||||
9766,
|
||||
9756,
|
||||
9747,
|
||||
9749,
|
||||
9809,
|
||||
9774,
|
||||
9746,
|
||||
9748,
|
||||
9802,
|
||||
9808,
|
||||
9752,
|
||||
9760,
|
||||
9792,
|
||||
9762,
|
||||
9778,
|
||||
9757,
|
||||
9770,
|
||||
9793,
|
||||
9758,
|
||||
9769,
|
||||
9830,
|
||||
9828,
|
||||
9761,
|
||||
9779,
|
||||
9791,
|
||||
9773,
|
||||
9768,
|
||||
9833,
|
||||
9759,
|
||||
9800,
|
||||
9804,
|
||||
9801,
|
||||
9787,
|
||||
9783,
|
||||
9798,
|
||||
9772,
|
||||
9794,
|
||||
9781,
|
||||
9790,
|
||||
9795,
|
||||
9813,
|
||||
9753,
|
||||
9811,
|
||||
9805,
|
||||
9785,
|
||||
9807,
|
||||
9797,
|
||||
9799,
|
||||
9810,
|
||||
9784,
|
||||
9771,
|
||||
9796,
|
||||
9743,
|
||||
9803,
|
||||
9786,
|
||||
9777,
|
||||
9767,
|
||||
9765,
|
||||
9789,
|
||||
9763,
|
||||
242252,
|
||||
242257,
|
||||
242259,
|
||||
242267,
|
||||
242253,
|
||||
242254,
|
||||
242275,
|
||||
242274,
|
||||
242273,
|
||||
242271,
|
||||
242263,
|
||||
242272,
|
||||
242276,
|
||||
242270,
|
||||
242265,
|
||||
242255,
|
||||
242306,
|
||||
242307,
|
||||
242302,
|
||||
242301,
|
||||
242304,
|
||||
242303,
|
||||
242300,
|
||||
242299,
|
||||
242305,
|
||||
242266,
|
||||
242264,
|
||||
242282,
|
||||
242258,
|
||||
242261,
|
||||
242284,
|
||||
242283,
|
||||
242256,
|
||||
242260,
|
||||
242278,
|
||||
242277,
|
||||
242279,
|
||||
242280,
|
||||
242281);
|
||||
|
||||
INSERT INTO `game_event_gameobject` (`eventEntry`, `guid`) VALUES
|
||||
(@EVENT, 9780),
|
||||
(@EVENT, 9754),
|
||||
(@EVENT, 9782),
|
||||
(@EVENT, 9751),
|
||||
(@EVENT, 9766),
|
||||
(@EVENT, 9756),
|
||||
(@EVENT, 9747),
|
||||
(@EVENT, 9749),
|
||||
(@EVENT, 9809),
|
||||
(@EVENT, 9774),
|
||||
(@EVENT, 9746),
|
||||
(@EVENT, 9748),
|
||||
(@EVENT, 9802),
|
||||
(@EVENT, 9808),
|
||||
(@EVENT, 9752),
|
||||
(@EVENT, 9760),
|
||||
(@EVENT, 9792),
|
||||
(@EVENT, 9762),
|
||||
(@EVENT, 9778),
|
||||
(@EVENT, 9757),
|
||||
(@EVENT, 9770),
|
||||
(@EVENT, 9793),
|
||||
(@EVENT, 9758),
|
||||
(@EVENT, 9769),
|
||||
(@EVENT, 9830),
|
||||
(@EVENT, 9828),
|
||||
(@EVENT, 9761),
|
||||
(@EVENT, 9779),
|
||||
(@EVENT, 9791),
|
||||
(@EVENT, 9773),
|
||||
(@EVENT, 9768),
|
||||
(@EVENT, 9833),
|
||||
(@EVENT, 9759),
|
||||
(@EVENT, 9800),
|
||||
(@EVENT, 9804),
|
||||
(@EVENT, 9801),
|
||||
(@EVENT, 9787),
|
||||
(@EVENT, 9783),
|
||||
(@EVENT, 9798),
|
||||
(@EVENT, 9772),
|
||||
(@EVENT, 9794),
|
||||
(@EVENT, 9781),
|
||||
(@EVENT, 9790),
|
||||
(@EVENT, 9795),
|
||||
(@EVENT, 9813),
|
||||
(@EVENT, 9753),
|
||||
(@EVENT, 9811),
|
||||
(@EVENT, 9805),
|
||||
(@EVENT, 9785),
|
||||
(@EVENT, 9807),
|
||||
(@EVENT, 9797),
|
||||
(@EVENT, 9799),
|
||||
(@EVENT, 9810),
|
||||
(@EVENT, 9784),
|
||||
(@EVENT, 9771),
|
||||
(@EVENT, 9796),
|
||||
(@EVENT, 9743),
|
||||
(@EVENT, 9803),
|
||||
(@EVENT, 9786),
|
||||
(@EVENT, 9777),
|
||||
(@EVENT, 9767),
|
||||
(@EVENT, 9765),
|
||||
(@EVENT, 9789),
|
||||
(@EVENT, 9763),
|
||||
(@EVENT, 242252),
|
||||
(@EVENT, 242257),
|
||||
(@EVENT, 242259),
|
||||
(@EVENT, 242267),
|
||||
(@EVENT, 242253),
|
||||
(@EVENT, 242254),
|
||||
(@EVENT, 242275),
|
||||
(@EVENT, 242274),
|
||||
(@EVENT, 242273),
|
||||
(@EVENT, 242271),
|
||||
(@EVENT, 242263),
|
||||
(@EVENT, 242272),
|
||||
(@EVENT, 242276),
|
||||
(@EVENT, 242270),
|
||||
(@EVENT, 242265),
|
||||
(@EVENT, 242255),
|
||||
(@EVENT, 242306),
|
||||
(@EVENT, 242307),
|
||||
(@EVENT, 242302),
|
||||
(@EVENT, 242301),
|
||||
(@EVENT, 242304),
|
||||
(@EVENT, 242303),
|
||||
(@EVENT, 242300),
|
||||
(@EVENT, 242299),
|
||||
(@EVENT, 242305),
|
||||
(@EVENT, 242266),
|
||||
(@EVENT, 242264),
|
||||
(@EVENT, 242282),
|
||||
(@EVENT, 242258),
|
||||
(@EVENT, 242261),
|
||||
(@EVENT, 242284),
|
||||
(@EVENT, 242283),
|
||||
(@EVENT, 242256),
|
||||
(@EVENT, 242260),
|
||||
(@EVENT, 242278),
|
||||
(@EVENT, 242277),
|
||||
(@EVENT, 242279),
|
||||
(@EVENT, 242280),
|
||||
(@EVENT, 242281);
|
||||
57
data/sql/updates/db_world/2022_07_20_02.sql
Normal file
57
data/sql/updates/db_world/2022_07_20_02.sql
Normal file
@@ -0,0 +1,57 @@
|
||||
-- DB update 2022_07_20_01 -> 2022_07_20_02
|
||||
-- Rocklance
|
||||
SET @NPC := 20720;
|
||||
SET @PATH := @NPC * 10;
|
||||
|
||||
UPDATE `creature` SET `position_x`=-1199.35, `position_y`=-3100.46, `position_z`=94.7484, `orientation`=2.7918, `MovementType`='2' WHERE `guid`=@NPC;
|
||||
|
||||
DELETE FROM `creature_addon` WHERE `guid` = @NPC;
|
||||
INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH);
|
||||
|
||||
DELETE FROM `waypoint_data` WHERE `id` = @PATH;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`) VALUES
|
||||
(@PATH, 1, -1201.63, -3099.24, 94.8781),
|
||||
(@PATH, 2, -1219.21, -3099.76, 95.241),
|
||||
(@PATH, 3, -1272.76, -3089.53, 93.8928),
|
||||
(@PATH, 4, -1315.08, -3106.5, 91.7995),
|
||||
(@PATH, 5, -1330.48, -3095.55, 92.4438),
|
||||
(@PATH, 6, -1341.49, -3060.61, 92.6899),
|
||||
(@PATH, 7, -1354.4, -3030.3, 93.3309),
|
||||
(@PATH, 8, -1386.31, -3005.86, 93.1475),
|
||||
(@PATH, 9, -1430.19, -2974.08, 93.1218),
|
||||
(@PATH, 10, -1436.49, -2943.46, 91.668),
|
||||
(@PATH, 11, -1436.75, -2920.35, 92.5429),
|
||||
(@PATH, 12, -1410.03, -2893.52, 93.1282),
|
||||
(@PATH, 13, -1388.5, -2866.72, 94.5754),
|
||||
(@PATH, 14, -1360.27, -2850.79, 94.705),
|
||||
(@PATH, 15, -1332.8, -2857.77, 93.5965),
|
||||
(@PATH, 16, -1288.33, -2870.37, 93.0108),
|
||||
(@PATH, 17, -1265.32, -2850.79, 94.069),
|
||||
(@PATH, 18, -1239.87, -2834.24, 94.41),
|
||||
(@PATH, 19, -1219.09, -2834.03, 93.9937),
|
||||
(@PATH, 20, -1194.71, -2865.09, 93.5771),
|
||||
(@PATH, 21, -1170.2, -2886.21, 94.3522),
|
||||
(@PATH, 22, -1146.43, -2925.68, 93.1956),
|
||||
(@PATH, 23, -1123.57, -2957.35, 92.8819),
|
||||
(@PATH, 24, -1114.24, -2966.51, 92.4826),
|
||||
(@PATH, 25, -1111.46, -3018.12, 94.8292),
|
||||
(@PATH, 26, -1101.72, -3047.27, 93.4784),
|
||||
(@PATH, 27, -1123.65, -3070.33, 91.8408),
|
||||
(@PATH, 28, -1147.38, -3076.85, 92.3126),
|
||||
(@PATH, 29, -1177.95, -3082.89, 92.8266);
|
||||
|
||||
DELETE FROM `creature_formations` WHERE `leaderGUID` = @NPC;
|
||||
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`) VALUES (@NPC, @NPC, 0, 0, 512);
|
||||
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`) VALUES (@NPC, 20588, 3, 215, 512);
|
||||
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`) VALUES (@NPC, 14007, 3, 135, 512);
|
||||
|
||||
UPDATE `creature` SET `spawntimesecs`=25000 WHERE `guid`=14007;
|
||||
UPDATE `creature` SET `spawntimesecs`=25000 WHERE `guid`=20588;
|
||||
UPDATE `creature` SET `spawntimesecs`=19800 WHERE `guid`=@NPC;
|
||||
|
||||
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 5841;
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 5841) AND (`source_type` = 0) AND (`id` IN (3, 4));
|
||||
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`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(5841, 0, 3, 0, 11, 0, 100, 0, 0, 0, 0, 0, 0, 70, 500, 0, 0, 0, 0, 0, 10, 14007, 0, 0, 0, 0, 0, 0, 0, 'Rocklance - On Respawn - Respawn Formation Member 14007'),
|
||||
(5841, 0, 4, 0, 11, 0, 100, 0, 0, 0, 0, 0, 0, 70, 500, 0, 0, 0, 0, 0, 10, 20588, 0, 0, 0, 0, 0, 0, 0, 'Rocklance - On Respawn - Respawn Formation Member 20588');
|
||||
4
data/sql/updates/db_world/2022_07_20_03.sql
Normal file
4
data/sql/updates/db_world/2022_07_20_03.sql
Normal file
@@ -0,0 +1,4 @@
|
||||
-- DB update 2022_07_20_02 -> 2022_07_20_03
|
||||
--
|
||||
DELETE FROM `command` WHERE `name` = 'npc guid';
|
||||
INSERT INTO `command` (`name`, `security`, `help`) VALUES ('npc guid', 1, 'Syntax: .npc guid\r\n\r\nDisplays GUID, faction, NPC flags, Entry ID, Model ID for selected creature.');
|
||||
9
data/sql/updates/db_world/2022_07_20_04.sql
Normal file
9
data/sql/updates/db_world/2022_07_20_04.sql
Normal file
@@ -0,0 +1,9 @@
|
||||
-- DB update 2022_07_20_03 -> 2022_07_20_04
|
||||
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 11076;
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 11076);
|
||||
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`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(11076, 0, 0, 0, 0, 0, 100, 0, 0, 0, 3400, 4800, 0, 11, 12471, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Cauldron Lord Razarch - In Combat - Cast \'Shadow Bolt\''),
|
||||
(11076, 0, 1, 0, 0, 0, 100, 0, 11000, 15000, 20000, 25000, 0, 11, 17204, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cauldron Lord Razarch - In Combat - Cast \'Summon Skeleton\''),
|
||||
(11076, 0, 2, 0, 2, 0, 100, 0, 0, 50, 14000, 18000, 0, 11, 17173, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Cauldron Lord Razarch - Between 0-50% Health - Cast \'Drain Life\''),
|
||||
(11076, 0, 3, 0, 4, 0, 100, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Cauldron Lord Razarch - On Aggro - Say Line 0');
|
||||
6
data/sql/updates/db_world/2022_07_20_05.sql
Normal file
6
data/sql/updates/db_world/2022_07_20_05.sql
Normal file
@@ -0,0 +1,6 @@
|
||||
-- DB update 2022_07_20_04 -> 2022_07_20_05
|
||||
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 1785;
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 1785) AND (`source_type` = 0) AND (`id` IN (0, 1));
|
||||
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`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(1785, 0, 0, 0, 2, 0, 100, 1, 5, 30, 0, 0, 0, 11, 12542, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Skeletal Terror - Between 5-30% Health - Cast \'Fear\' (No Repeat)');
|
||||
28
data/sql/updates/db_world/2022_07_20_06.sql
Normal file
28
data/sql/updates/db_world/2022_07_20_06.sql
Normal file
@@ -0,0 +1,28 @@
|
||||
-- DB update 2022_07_20_05 -> 2022_07_20_06
|
||||
-- Remorseful Highborne --> Add gossip texts (Credit: https://github.com/Haeniken/FairyCore/commit/25260b92a6c5163643248deeae7247a3bac6cbb7)
|
||||
UPDATE `creature_template` SET `gossip_menu_id`=3803, `npcflag` = `npcflag` | 1 WHERE `entry`=10684;
|
||||
|
||||
DELETE FROM `gossip_menu` WHERE `MenuID`=3803;
|
||||
INSERT INTO `gossip_menu` (`MenuID`, `TextID`) VALUES
|
||||
(3803,4635),
|
||||
(3803,4636);
|
||||
|
||||
DELETE FROM `npc_text` WHERE `ID`=4636;
|
||||
INSERT INTO `npc_text` (`ID`, `text0_0`, `text0_1`, `BroadcastTextID0`, `lang0`, `Probability0`) VALUES
|
||||
(4636,'',"I will not forrrget what you have done...$B$BPleassse, leave meee...",7309,0,1);
|
||||
|
||||
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=14 AND `SourceGroup`=3803;
|
||||
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
|
||||
(14,3803,4636,0,0,8,0,5248,0,0,0,0,0,'',"Remorseful Highborne - Show Gossip Menu Text 4636 if Quest 5248 is rewarded");
|
||||
|
||||
-- Remorseful Highborne --> Add texts on quest finished
|
||||
DELETE FROM `creature_text` WHERE `CreatureID`=10684;
|
||||
INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES
|
||||
(10684,0,0,"Highborne spirits! Be at peace! The Crystal of Zin-Malor is whole once again!",14,0,100,0,0,0,6505,0,"Remorseful Highborne"),
|
||||
(10684,0,1,"Cursed spirits! Let go of the past! The Crystal of Zin-Malor no longer binds you!",14,0,100,0,0,0,6506,0,"Remorseful Highborne"),
|
||||
(10684,0,2,"Spirits of the Highborne! You may now rest! The curse of the crystal releases you!",14,0,100,0,0,0,6507,0,"Remorseful Highborne");
|
||||
|
||||
UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=10684;
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid`=10684 AND `source_type`=0;
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(10684,0,0,0,20,0,100,0,5248,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Remorseful Highborne - On Quest \'Tormented by the Past\' Finished - Say Line 0");
|
||||
4
data/sql/updates/db_world/2022_07_20_07.sql
Normal file
4
data/sql/updates/db_world/2022_07_20_07.sql
Normal file
@@ -0,0 +1,4 @@
|
||||
-- DB update 2022_07_20_06 -> 2022_07_20_07
|
||||
--
|
||||
UPDATE `smart_scripts` SET `target_type`=24 WHERE `entryorguid`=25416 AND `source_type`=0 AND `id`=4;
|
||||
UPDATE `smart_scripts` SET `target_type`=24 WHERE `entryorguid`=25418 AND `source_type`=0 AND `id`=4;
|
||||
6
data/sql/updates/db_world/2022_07_20_08.sql
Normal file
6
data/sql/updates/db_world/2022_07_20_08.sql
Normal file
@@ -0,0 +1,6 @@
|
||||
-- DB update 2022_07_20_07 -> 2022_07_20_08
|
||||
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 202;
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 202) AND (`source_type` = 0) AND (`id` IN (0));
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(202, 0, 0, 0, 0, 0, 100, 0, 5000, 8000, 9000, 13000, 0, 11, 7399, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Skeletal Horror - In Combat - Cast \'Terrify\' (No Repeat)');
|
||||
7
data/sql/updates/db_world/2022_07_20_09.sql
Normal file
7
data/sql/updates/db_world/2022_07_20_09.sql
Normal file
@@ -0,0 +1,7 @@
|
||||
-- DB update 2022_07_20_08 -> 2022_07_20_09
|
||||
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 12119;
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 12119) AND (`source_type` = 0) AND (`id` IN (0, 1));
|
||||
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`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(12119, 0, 0, 0, 0, 0, 100, 0, 5000, 5000, 6500, 6500, 0, 11, 20604, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 'Flamewaker Protector - In Combat - Cast \'Dominate Mind\''),
|
||||
(12119, 0, 1, 0, 0, 0, 100, 0, 5000, 10000, 7000, 7000, 0, 11, 20605, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Flamewaker Protector - In Combat - Cast \'Cleave\'');
|
||||
22
data/sql/updates/db_world/2022_07_20_10.sql
Normal file
22
data/sql/updates/db_world/2022_07_20_10.sql
Normal file
@@ -0,0 +1,22 @@
|
||||
-- DB update 2022_07_20_09 -> 2022_07_20_10
|
||||
--
|
||||
/* Snakes */
|
||||
UPDATE `creature` SET `id1`=11371 WHERE `guid` IN (49096, 49097);
|
||||
UPDATE `creature` SET `id2`=11372 WHERE `guid` IN (49096, 49097);
|
||||
|
||||
/* Priest can be Axe thrower */
|
||||
UPDATE `creature` SET `id2`=11350 WHERE `guid`=49754;
|
||||
|
||||
/* Crocs movement is a scripted action that occurs about every 30 seconds, and all crocs do it--not normal random movement */
|
||||
UPDATE `creature` SET `wander_distance`=0, `MovementType`=0 WHERE `id1`=15043;
|
||||
|
||||
/* Reposition a Snake */
|
||||
/* Reposition two Trolls */
|
||||
DELETE FROM `creature` WHERE `guid` IN (49121, 49122, 49097);
|
||||
INSERT INTO `creature` (`guid`, `id1`, `id2`, `id3`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `ScriptName`, `VerifiedBuild`) VALUES
|
||||
(49097, 11371, 11372, 0, 309, 0, 0, 1, 1, 0, -11959.5, -1547.96, 40.6727, 3.1776, 7200, 0, 0, 15260, 0, 0, 0, 0, 0, '', 0),
|
||||
(49121, 11351, 0, 0, 309, 0, 0, 1, 1, 1, -12008.5, -1484.79, 79.1498, 4.87654, 7200, 0, 0, 21364, 0, 0, 0, 0, 0, '', 0),
|
||||
(49122, 11831, 0, 0, 309, 0, 0, 1, 1, 1, -12004.5, -1483.46, 79.5746, 4.71553, 7200, 0, 0, 24420, 12170, 0, 0, 0, 0, '', 0);
|
||||
|
||||
/* Movetype and wander distance corrections for Snakes and Bats/Bat Riders */
|
||||
UPDATE `creature` SET `wander_distance`=2, `MovementType`=1 WHERE `guid` IN (49096, 49097, 49190, 49191, 49192, 49193);
|
||||
6
data/sql/updates/db_world/2022_07_20_11.sql
Normal file
6
data/sql/updates/db_world/2022_07_20_11.sql
Normal file
@@ -0,0 +1,6 @@
|
||||
-- DB update 2022_07_20_10 -> 2022_07_20_11
|
||||
--
|
||||
DELETE FROM `spell_script_names` WHERE `spell_id` = 25371 AND `ScriptName` = 'spell_consume_aq20';
|
||||
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES (25371, 'spell_consume_aq20');
|
||||
DELETE FROM `spell_script_names` WHERE `spell_id` = 25373 AND `ScriptName` = 'spell_gen_10pct_count_pct_from_max_hp';
|
||||
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES (25373, 'spell_gen_10pct_count_pct_from_max_hp');
|
||||
4
data/sql/updates/db_world/2022_07_20_12.sql
Normal file
4
data/sql/updates/db_world/2022_07_20_12.sql
Normal file
@@ -0,0 +1,4 @@
|
||||
-- DB update 2022_07_20_11 -> 2022_07_20_12
|
||||
--
|
||||
DELETE FROM `spell_script_names` WHERE `spell_id` = 26180 AND `ScriptName` = 'spell_huhuran_wyvern_sting';
|
||||
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES (26180, 'spell_huhuran_wyvern_sting');
|
||||
3
data/sql/updates/db_world/2022_07_20_13.sql
Normal file
3
data/sql/updates/db_world/2022_07_20_13.sql
Normal file
@@ -0,0 +1,3 @@
|
||||
-- DB update 2022_07_20_12 -> 2022_07_20_13
|
||||
-- fix Slim Pickings quest
|
||||
UPDATE `creature_template` SET `npcflag`=`npcflag`|1 WHERE `entry` = 26809;
|
||||
6
data/sql/updates/db_world/2022_07_20_14.sql
Normal file
6
data/sql/updates/db_world/2022_07_20_14.sql
Normal file
@@ -0,0 +1,6 @@
|
||||
-- DB update 2022_07_20_13 -> 2022_07_20_14
|
||||
--
|
||||
DELETE FROM `creature_addon` WHERE `guid`=144632;
|
||||
INSERT INTO `creature_addon` (`guid`, `auras`) VALUES
|
||||
(144632, '8876'); -- Triggers SPELL_THRASH = 3391
|
||||
|
||||
47
data/sql/updates/db_world/2022_07_20_15.sql
Normal file
47
data/sql/updates/db_world/2022_07_20_15.sql
Normal file
@@ -0,0 +1,47 @@
|
||||
-- DB update 2022_07_20_14 -> 2022_07_20_15
|
||||
--
|
||||
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` IN (15325, 15343, 15320, 15335, 15336, 15319, 15461, 15462, 15505);
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid`IN (15325, 15343, 15320, 15335, 15336, 15319, 15461, 15462, 15505);
|
||||
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`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
-- swarmguard
|
||||
(15343, 0, 0, 0, 9, 0, 100, 0, 0, 5, 8000, 12000, 0, 11, 25174, 3, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Qiraji Swarmguard - Within 0-5 Range - Cast \'Sundering Cleave\''),
|
||||
|
||||
-- hive wasp
|
||||
(15325, 0, 0, 0, 9, 0, 100, 0, 0, 40, 5000, 7000, 0, 11, 25185, 4, 32, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Hive\'Zara Wasp - Within 0-40 Range - Cast \'Itch\''),
|
||||
|
||||
-- hive soldier
|
||||
(15320, 0, 0, 0, 0, 0, 100, 0, 1000, 3000, 19000, 23000, 0, 11, 22857, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Hive\'Zara Soldier - In Combat - Cast \'Retaliation\''),
|
||||
(15320, 0, 1, 0, 9, 0, 100, 0, 0, 30, 5000, 7000, 0, 11, 25497, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Hive\'Zara Soldier - Within 0-30 Range - Cast \'Venom Spit\''),
|
||||
|
||||
-- flesh hunter
|
||||
(15335, 0, 0, 0, 11, 0, 100, 0, 0, 0, 0, 0, 0, 11, 8876, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Flesh Hunter - On Respawn - Cast \'Thrash\''),
|
||||
(15335, 0, 1, 0, 4, 0, 100, 0, 0, 0, 0, 0, 0, 22, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Flesh Hunter - On Aggro - Set Event Phase 1'),
|
||||
(15335, 0, 2, 0, 9, 0, 100, 0, 0, 45, 5000, 7000, 0, 11, 25424, 4, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Flesh Hunter - Within 0-45 Range - Cast \'Poison Bolt\''),
|
||||
(15335, 0, 3, 0, 24, 2, 100, 0, 25371, 1, 5000, 5000, 0, 22, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Flesh Hunter - On Target Buffed With \'Consume\' - Set Event Phase 2 (Phase 2)'),
|
||||
(15335, 0, 4, 0, 28, 0, 100, 0, 5000, 5000, 0, 0, 0, 22, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Flesh Hunter - On Passenger Removed - Set Event Phase 1'),
|
||||
(15335, 0, 5, 0, 9, 1, 100, 0, 0, 10, 21000, 24000, 0, 11, 25371, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Flesh Hunter - Within 0-10 Range - Cast \'Consume\' (Phase 1)'),
|
||||
(15335, 0, 6, 0, 7, 0, 100, 0, 0, 0, 0, 0, 0, 22, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Flesh Hunter - On Evade - Set Event Phase 1'),
|
||||
|
||||
-- tail lasher
|
||||
(15336, 0, 0, 0, 4, 0, 100, 0, 0, 0, 0, 0, 0, 22, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Hive\'Zara Tail Lasher - On Aggro - Set Event Phase 1'),
|
||||
(15336, 0, 1, 0, 9, 1, 100, 0, 0, 5, 6000, 9000, 0, 11, 25645, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Hive\'Zara Tail Lasher - Within 0-5 Range - Cast \'Poison\' (Phase 1)'),
|
||||
(15336, 0, 2, 0, 24, 1, 100, 0, 25645, 5, 5000, 5000, 0, 22, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Hive\'Zara Tail Lasher - On Target Buffed With \'Poison\' - Set Event Phase 2 (Phase 1)'),
|
||||
(15336, 0, 3, 0, 24, 2, 100, 0, 25645, 1, 5000, 5000, 0, 22, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Hive\'Zara Tail Lasher - On Target Buffed With \'Poison\' - Set Event Phase 1 (Phase 2)'),
|
||||
(15336, 0, 4, 0, 9, 0, 100, 0, 0, 30, 7000, 10000, 0, 11, 25654, 4, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Hive\'Zara Tail Lasher - Within 0-30 Range - Cast \'Tail Lash\''),
|
||||
(15336, 0, 5, 0, 7, 0, 100, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Hive\'Zara Tail Lasher - On Evade - Set Event Phase 0'),
|
||||
|
||||
-- hive collector
|
||||
(15319, 0, 0, 0, 9, 0, 100, 0, 0, 30, 10000, 16000, 0, 11, 12252, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Hive\'Zara Collector - Within 0-30 Range - Cast \'Web Spray\''),
|
||||
(15319, 0, 1, 0, 0, 0, 100, 0, 7000, 11000, 12000, 15000, 0, 11, 3589, 4, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Hive\'Zara Collector - In Combat - Cast \'Deafening Screech\''),
|
||||
|
||||
-- shrieker scarab
|
||||
(15461, 0, 0, 0, 9, 0, 100, 0, 0, 40, 14000, 18000, 0, 11, 22886, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Shrieker Scarab - Within 0-40 Range - Cast \'Berserker Charge\''),
|
||||
(15461, 0, 1, 0, 0, 0, 100, 0, 5000, 9000, 10000, 15000, 0, 11, 26379, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Shrieker Scarab - In Combat - Cast \'Piercing Shriek\''),
|
||||
|
||||
-- spitting scarab
|
||||
(15462, 0, 0, 0, 9, 0, 100, 0, 0, 40, 14000, 18000, 0, 11, 22886, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Spitting Scarab - Within 0-40 Range - Cast \'Berserker Charge\''),
|
||||
(15462, 0, 1, 0, 0, 0, 100, 0, 5000, 9000, 4000, 6000, 0, 11, 24334, 4, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Spitting Scarab - In Combat - Cast \'Acid Spit\''),
|
||||
|
||||
-- canal frenzy
|
||||
(15505, 0, 0, 0, 9, 0, 100, 0, 0, 5, 5000, 8000, 0, 11, 12097, 4, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Canal Frenzy - Within 0-5 Range - Cast \'Pierce Armor\'');
|
||||
3
data/sql/updates/db_world/2022_07_22_00.sql
Normal file
3
data/sql/updates/db_world/2022_07_22_00.sql
Normal file
@@ -0,0 +1,3 @@
|
||||
-- DB update 2022_07_20_15 -> 2022_07_22_00
|
||||
--
|
||||
UPDATE `creature_loot_template` SET `Chance`='100' WHERE `Item`=20513 AND `Reference`=0 AND `GroupId`=0;
|
||||
6
data/sql/updates/db_world/2022_07_23_00.sql
Normal file
6
data/sql/updates/db_world/2022_07_23_00.sql
Normal file
@@ -0,0 +1,6 @@
|
||||
-- DB update 2022_07_22_00 -> 2022_07_23_00
|
||||
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 17606;
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 17606) AND (`source_type` = 0) AND (`id` IN (1, 2));
|
||||
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`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(17606, 0, 1, 0, 0, 0, 100, 0, 0, 3000, 4500, 5000, 0, 11, 19816, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Sunhawk Reclaimer - IC - Cast Fireball');
|
||||
46
data/sql/updates/db_world/2022_07_23_01.sql
Normal file
46
data/sql/updates/db_world/2022_07_23_01.sql
Normal file
@@ -0,0 +1,46 @@
|
||||
-- DB update 2022_07_23_00 -> 2022_07_23_01
|
||||
--
|
||||
ALTER TABLE `pet_levelstats` CHANGE `hp` `hp` INT UNSIGNED DEFAULT 0 NOT NULL,
|
||||
CHANGE `mana` `mana` INT UNSIGNED DEFAULT 0 NOT NULL,
|
||||
CHANGE `str` `str` INT UNSIGNED DEFAULT 0 NOT NULL,
|
||||
CHANGE `agi` `agi` INT UNSIGNED DEFAULT 0 NOT NULL,
|
||||
CHANGE `sta` `sta` INT UNSIGNED DEFAULT 0 NOT NULL,
|
||||
CHANGE `inte` `inte` INT UNSIGNED DEFAULT 0 NOT NULL,
|
||||
CHANGE `spi` `spi` INT UNSIGNED DEFAULT 0 NOT NULL,
|
||||
CHANGE `min_dmg` `min_dmg` INT UNSIGNED DEFAULT 0 NOT NULL,
|
||||
CHANGE `max_dmg` `max_dmg` INT UNSIGNED DEFAULT 0 NOT NULL;
|
||||
|
||||
ALTER TABLE `player_classlevelstats` CHANGE `basehp` `basehp` INT UNSIGNED DEFAULT 1 NOT NULL,
|
||||
CHANGE `basemana` `basemana` INT UNSIGNED DEFAULT 1 NOT NULL;
|
||||
|
||||
ALTER TABLE `player_levelstats` CHANGE `str` `str` INT UNSIGNED DEFAULT 0 NOT NULL,
|
||||
CHANGE `agi` `agi` INT UNSIGNED DEFAULT 0 NOT NULL,
|
||||
CHANGE `sta` `sta` INT UNSIGNED DEFAULT 0 NOT NULL,
|
||||
CHANGE `inte` `inte` INT UNSIGNED DEFAULT 0 NOT NULL,
|
||||
CHANGE `spi` `spi` INT UNSIGNED DEFAULT 0 NOT NULL;
|
||||
|
||||
ALTER TABLE `creature_classlevelstats` CHANGE `basehp0` `basehp0` INT UNSIGNED DEFAULT 1 NOT NULL,
|
||||
CHANGE `basehp1` `basehp1` INT UNSIGNED DEFAULT 1 NOT NULL,
|
||||
CHANGE `basehp2` `basehp2` INT UNSIGNED DEFAULT 1 NOT NULL,
|
||||
CHANGE `basemana` `basemana` INT UNSIGNED DEFAULT 0 NOT NULL,
|
||||
CHANGE `basearmor` `basearmor` INT UNSIGNED DEFAULT 1 NOT NULL,
|
||||
CHANGE `attackpower` `attackpower` INT UNSIGNED DEFAULT 0 NOT NULL,
|
||||
CHANGE `rangedattackpower` `rangedattackpower` INT UNSIGNED DEFAULT 0 NOT NULL;
|
||||
|
||||
ALTER TABLE `item_template` CHANGE `stat_value1` `stat_value1` INT DEFAULT 0 NOT NULL,
|
||||
CHANGE `stat_value2` `stat_value2` INT DEFAULT 0 NOT NULL,
|
||||
CHANGE `stat_value3` `stat_value3` INT DEFAULT 0 NOT NULL,
|
||||
CHANGE `stat_value4` `stat_value4` INT DEFAULT 0 NOT NULL,
|
||||
CHANGE `stat_value5` `stat_value5` INT DEFAULT 0 NOT NULL,
|
||||
CHANGE `stat_value6` `stat_value6` INT DEFAULT 0 NOT NULL,
|
||||
CHANGE `stat_value7` `stat_value7` INT DEFAULT 0 NOT NULL,
|
||||
CHANGE `stat_value8` `stat_value8` INT DEFAULT 0 NOT NULL,
|
||||
CHANGE `stat_value9` `stat_value9` INT DEFAULT 0 NOT NULL,
|
||||
CHANGE `stat_value10` `stat_value10` INT DEFAULT 0 NOT NULL,
|
||||
CHANGE `armor` `armor` INT UNSIGNED DEFAULT 0 NOT NULL,
|
||||
CHANGE `holy_res` `holy_res` INT UNSIGNED DEFAULT 0 NOT NULL,
|
||||
CHANGE `fire_res` `fire_res` INT UNSIGNED DEFAULT 0 NOT NULL,
|
||||
CHANGE `nature_res` `nature_res` INT UNSIGNED DEFAULT 0 NOT NULL,
|
||||
CHANGE `frost_res` `frost_res` INT UNSIGNED DEFAULT 0 NOT NULL,
|
||||
CHANGE `shadow_res` `shadow_res` INT UNSIGNED DEFAULT 0 NOT NULL,
|
||||
CHANGE `arcane_res` `arcane_res` INT UNSIGNED DEFAULT 0 NOT NULL;
|
||||
12
data/sql/updates/db_world/2022_07_24_00.sql
Normal file
12
data/sql/updates/db_world/2022_07_24_00.sql
Normal file
@@ -0,0 +1,12 @@
|
||||
-- DB update 2022_07_23_01 -> 2022_07_24_00
|
||||
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 7453;
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 7453) AND (`source_type` = 0) AND (`id` IN (0, 1));
|
||||
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`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(7453, 0, 0, 0, 0, 0, 100, 0, 7000, 11000, 15000, 18000, 0, 11, 15798, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Moontouched Owlbeast - In Combat - Cast \'Moonfire\''),
|
||||
(7453, 0, 1, 0, 0, 0, 100, 0, 0, 0, 18000, 21000, 0, 11, 12160, 32, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Moontouched Owlbeast - In Combat - Cast \'Rejuvenation\'');
|
||||
|
||||
DELETE FROM `creature_template_spell` WHERE (`CreatureID` = 7453) AND (`Index` IN (0, 1));
|
||||
INSERT INTO `creature_template_spell` (`CreatureID`, `Index`, `Spell`, `VerifiedBuild`) VALUES
|
||||
(7453, 0, 15798, 12340),
|
||||
(7453, 1, 12160, 12340);
|
||||
3
data/sql/updates/db_world/2022_07_24_01.sql
Normal file
3
data/sql/updates/db_world/2022_07_24_01.sql
Normal file
@@ -0,0 +1,3 @@
|
||||
-- DB update 2022_07_24_00 -> 2022_07_24_01
|
||||
--
|
||||
UPDATE `reference_loot_template` SET `Chance`=0 WHERE `Entry`=35026 AND `Item` IN (22407, 22406, 22405, 22404, 22403);
|
||||
39
data/sql/updates/db_world/2022_07_24_02.sql
Normal file
39
data/sql/updates/db_world/2022_07_24_02.sql
Normal file
@@ -0,0 +1,39 @@
|
||||
-- DB update 2022_07_24_01 -> 2022_07_24_02
|
||||
-- Warmaul Chef Bufferlo
|
||||
UPDATE `creature_template` SET `AIName`="SmartAI", `speed_walk`=1 WHERE `entry`=18440;
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid`=18440 AND `source_type`=0;
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid` IN (1844000,1844001,1844002) 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`,`event_param5`,`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
|
||||
(18440,0,0,0,4,0,100,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Warmaul Chef Bufferlo - On Aggro - Say Line 0"),
|
||||
(18440,0,1,0,1,0,100,0,10000,30000,80000,100000,0,87,1844000,1844001,1844002,0,0,0,1,0,0,0,0,0,0,0,"Warmaul Chef Bufferlo - Out of Combat - Run Random Script"),
|
||||
(18440,0,2,0,0,0,100,0,7000,12000,7000,12000,0,11,32376,0,0,0,0,0,2,0,0,0,0,0,0,0,"Warmaul Chef Bufferlo - In Combat - Cast 'Tenderize'"),
|
||||
(18440,0,3,0,0,0,100,0,4000,6000,14000,18000,0,11,32378,0,0,0,0,0,2,0,0,0,0,0,0,0,"Warmaul Chef Bufferlo - In Combat - Cast 'Filet'"),
|
||||
(18440,0,4,0,4,0,100,0,0,0,0,0,0,11,31994,0,0,0,0,0,2,0,0,0,0,0,0,0,"Warmaul Chef Bufferlo - On Aggro - Cast 'Shoulder Charge'"),
|
||||
(1844000,9,0,0,0,0,100,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,"Warmaul Chef Bufferlo - On Script - Say Line 1"),
|
||||
(1844000,9,1,0,0,0,100,0,6000,6000,0,0,0,1,2,0,0,0,0,0,1,0,0,0,0,0,0,0,"Warmaul Chef Bufferlo - On Script - Say Line 2"),
|
||||
(1844001,9,0,0,0,0,100,0,0,0,0,0,0,5,36,0,0,0,0,0,1,0,0,0,0,0,0,0,"Warmaul Chef Bufferlo - On Script - Play Emote 36"),
|
||||
(1844001,9,1,0,0,0,100,0,2000,2000,0,0,0,1,3,0,0,0,0,0,1,0,0,0,0,0,0,0,"Warmaul Chef Bufferlo - On Script - Say Line 3"),
|
||||
(1844002,9,0,0,0,0,100,0,0,0,0,0,0,5,35,0,0,0,0,0,1,0,0,0,0,0,0,0,"Warmaul Chef Bufferlo - On Script - Play Emote 35"),
|
||||
(1844002,9,1,0,0,0,100,0,2000,2000,0,0,0,1,4,0,0,0,0,0,1,0,0,0,0,0,0,0,"Warmaul Chef Bufferlo - On Script - Say Line 4"),
|
||||
(1844002,9,2,0,0,0,100,0,5000,5000,0,0,0,1,5,0,0,0,0,0,1,0,0,0,0,0,0,0,"Warmaul Chef Bufferlo - On Script - Say Line 5"),
|
||||
(1844002,9,3,0,0,0,100,0,4000,4000,0,0,0,1,6,0,0,0,0,0,1,0,0,0,0,0,0,0,"Warmaul Chef Bufferlo - On Script - Say Line 6"),
|
||||
(1844002,9,4,0,0,0,100,0,4000,4000,0,0,0,1,7,0,0,0,0,0,1,0,0,0,0,0,0,0,"Warmaul Chef Bufferlo - On Script - Say Line 7"),
|
||||
(1844002,9,5,0,0,0,100,0,2000,2000,0,0,0,5,35,0,0,0,0,0,1,0,0,0,0,0,0,0,"Warmaul Chef Bufferlo - On Script - Play Emote 35"),
|
||||
(1844002,9,6,0,0,0,100,0,2000,2000,0,0,0,1,8,0,0,0,0,0,1,0,0,0,0,0,0,0,"Warmaul Chef Bufferlo - On Script - Say Line 8"),
|
||||
(1844002,9,7,0,0,0,100,0,8000,8000,0,0,0,1,9,0,0,0,0,0,1,0,0,0,0,0,0,0,"Warmaul Chef Bufferlo - On Script - Say Line 9"),
|
||||
(1844002,9,8,0,0,0,100,0,3000,3000,0,0,0,5,153,0,0,0,0,0,1,0,0,0,0,0,0,0,"Warmaul Chef Bufferlo - On Script - Play Emote 153");
|
||||
|
||||
DELETE FROM `creature_text` WHERE `CreatureID`=18440;
|
||||
INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES
|
||||
(18440,0,0,"IT DUZ WUT IT'S TOLD!",12,0,100,0,0,0,15419,0,"Warmaul Chef Bufferlo"),
|
||||
(18440,0,1,"GET IN DA STEW!",12,0,100,0,0,0,15420,0,"Warmaul Chef Bufferlo"),
|
||||
(18440,0,2,"YOU GUD IN DA BELLY!",12,0,100,0,0,0,15421,0,"Warmaul Chef Bufferlo"),
|
||||
(18440,1,0,"Your daddy pay Warmaul and maybe we no eat you.",12,0,100,1,0,0,15426,0,"Warmaul Chef Bufferlo"),
|
||||
(18440,2,0,"Ha-ha! Just kidding. We eat you for shure anyway!",12,0,100,11,0,0,15427,0,"Warmaul Chef Bufferlo"),
|
||||
(18440,3,0,"BAM! Look at dat gristle sizzle!",12,0,100,1,0,0,15430,0,"Warmaul Chef Bufferlo"),
|
||||
(18440,4,0,"And dis is da recipe for da bestest Broken chowder!",12,0,100,1,0,0,15431,0,"Warmaul Chef Bufferlo"),
|
||||
(18440,5,0,"First you need da spices.",12,0,100,1,0,0,15432,0,"Warmaul Chef Bufferlo"),
|
||||
(18440,6,0,"Da salt goes into da pot...",12,0,100,35,0,0,15433,0,"Warmaul Chef Bufferlo"),
|
||||
(18440,7,0,"Den you put da pepper in da pot...",12,0,100,0,0,0,15434,0,"Warmaul Chef Bufferlo"),
|
||||
(18440,8,0,"Now we gonna kick it up a notch wit da secret ingra... ingor... inrag... da secret sauce!",12,0,100,43,0,0,15435,0,"Warmaul Chef Bufferlo"),
|
||||
(18440,9,0,"And last, we put in da Corki!",12,0,100,1,0,0,15436,0,"Warmaul Chef Bufferlo");
|
||||
5
data/sql/updates/db_world/2022_07_24_03.sql
Normal file
5
data/sql/updates/db_world/2022_07_24_03.sql
Normal file
@@ -0,0 +1,5 @@
|
||||
-- DB update 2022_07_24_02 -> 2022_07_24_03
|
||||
--
|
||||
DELETE FROM `spell_script_names` WHERE `spell_id`=56246;
|
||||
INSERT INTO `spell_script_names` VALUES
|
||||
(56246,'spell_warl_glyph_of_felguard');
|
||||
3
data/sql/updates/db_world/2022_07_24_04.sql
Normal file
3
data/sql/updates/db_world/2022_07_24_04.sql
Normal file
@@ -0,0 +1,3 @@
|
||||
-- DB update 2022_07_24_03 -> 2022_07_24_04
|
||||
--
|
||||
UPDATE `spell_proc_event` SET `SpellFamilyName`=11, `SpellFamilyMask0`=0x00000003, `SpellFamilyMask1`=0x00001000 WHERE `entry`=16166;
|
||||
13
data/sql/updates/db_world/2022_07_24_05.sql
Normal file
13
data/sql/updates/db_world/2022_07_24_05.sql
Normal file
@@ -0,0 +1,13 @@
|
||||
-- DB update 2022_07_24_04 -> 2022_07_24_05
|
||||
--
|
||||
-- Crocs movement is a scripted action that occurs about every 30 seconds, not normal random movement
|
||||
UPDATE `creature` SET `wander_distance`=0, `MovementType`=0 WHERE `id1`=15043;
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid`=15043 AND `source_type`=0;
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(15043, 0, 0, 0, 0, 0, 100, 0, 8000, 9000, 11000, 12000, 0, 11, 3604, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Zulian Crocolisk - In Combat - Cast \'Tendon Rip\''),
|
||||
(15043, 0, 1, 0, 0, 0, 100, 0, 17000, 19000, 22000, 24000, 0, 11, 13445, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Zulian Crocolisk - In Combat - Cast \'Rend\''),
|
||||
(15043, 0, 2, 0, 1, 0, 100, 0, 30000, 30000, 40000, 40000, 0, 89, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'ZG Crocolisks will wander a small amount for about 10 seconds out of every 40 (wander on-2)'),
|
||||
(15043, 0, 3, 0, 1, 0, 100, 0, 39500, 39500, 40000, 40000, 0, 89, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'ZG Crocolisks will wander a small amount for about 10 seconds out of every 40 (wander on-0)'),
|
||||
(15043, 0, 4, 0, 1, 0, 100, 0, 39999, 39999, 40000, 40000, 0, 101, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Send ZG Croclisks toward home position to control wandering range (set home POS)'),
|
||||
(15043, 0, 5, 0, 1, 0, 100, 0, 40000, 40000, 40000, 40000, 0, 24, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Send ZG Croclisks toward home position to control wandering range (reset to home POS)');
|
||||
19
data/sql/updates/db_world/2022_07_24_06.sql
Normal file
19
data/sql/updates/db_world/2022_07_24_06.sql
Normal file
@@ -0,0 +1,19 @@
|
||||
-- DB update 2022_07_24_05 -> 2022_07_24_06
|
||||
|
||||
-- Immune to Taunt
|
||||
UPDATE `creature_template` SET `flags_extra`=`flags_extra`|256 WHERE `entry`=15370;
|
||||
|
||||
-- Disable exp on Buru egg / Hive'zara hatchling
|
||||
UPDATE `creature_template` SET `flags_extra`=`flags_extra`|64 WHERE `entry` IN (15514,15521);
|
||||
|
||||
-- New smartAI - despawn
|
||||
UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=15521;
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid`= 15521 AND `source_type`= 0 AND `id`= 0;
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `event_type`, `event_flags`, `event_param1`, `event_param2`, `action_type`, `action_param1`, `target_type`, `comment`) VALUES
|
||||
(15521, 1, 1, 10000, 10000, 41, 500, 1, 'Hive\'Zara Hatchling - Out of Combat - Despawn (No Repeat)');
|
||||
|
||||
-- Root egg properly - avoid reset
|
||||
DELETE FROM `creature_template_movement` WHERE `CreatureId`=15514;
|
||||
INSERT INTO `creature_template_movement` (`CreatureId`, `Ground`, `Swim`, `Flight`, `Rooted`, `Chase`, `Random`) VALUES
|
||||
(15514, 1, 1, 0, 1, 0, 0);
|
||||
|
||||
5
data/sql/updates/db_world/2022_07_24_07.sql
Normal file
5
data/sql/updates/db_world/2022_07_24_07.sql
Normal file
@@ -0,0 +1,5 @@
|
||||
-- DB update 2022_07_24_06 -> 2022_07_24_07
|
||||
--
|
||||
UPDATE `gameobject_template` SET `ScriptName` = 'go_sand_trap' WHERE `entry` = 180647;
|
||||
|
||||
UPDATE `creature_text` SET `TextRange` = 3 WHERE `CreatureID` = 15339 AND `GroupID` = 5;
|
||||
3
data/sql/updates/db_world/2022_07_25_00.sql
Normal file
3
data/sql/updates/db_world/2022_07_25_00.sql
Normal file
@@ -0,0 +1,3 @@
|
||||
-- DB update 2022_07_24_07 -> 2022_07_25_00
|
||||
--
|
||||
UPDATE `smart_scripts` SET `action_param1`=500 WHERE `entryorguid`=28788 AND `source_type`=0 AND `id`=5;
|
||||
11
data/sql/updates/db_world/2022_07_25_01.sql
Normal file
11
data/sql/updates/db_world/2022_07_25_01.sql
Normal file
@@ -0,0 +1,11 @@
|
||||
-- DB update 2022_07_25_00 -> 2022_07_25_01
|
||||
DELETE FROM `creature_formations` WHERE `leaderguid` IN (144488, 144486, 144484, 144483);
|
||||
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`, `point_1`, `point_2`) VALUES
|
||||
(144488, 144488, 0, 0, 3, 0, 0),
|
||||
(144488, 144489, 0, 0, 3, 0, 0),
|
||||
(144486, 144486, 0, 0, 3, 0, 0),
|
||||
(144486, 144487, 0, 0, 3, 0, 0),
|
||||
(144484, 144484, 0, 0, 3, 0, 0),
|
||||
(144484, 144485, 0, 0, 3, 0, 0),
|
||||
(144483, 144483, 0, 0, 3, 0, 0),
|
||||
(144483, 144482, 0, 0, 3, 0, 0);
|
||||
53
data/sql/updates/db_world/2022_07_25_02.sql
Normal file
53
data/sql/updates/db_world/2022_07_25_02.sql
Normal file
@@ -0,0 +1,53 @@
|
||||
-- DB update 2022_07_25_01 -> 2022_07_25_02
|
||||
DELETE FROM `creature_formations` WHERE `leaderguid` IN (144698, 144695, 144715, 144684, 144726);
|
||||
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`, `point_1`, `point_2`) VALUES
|
||||
(144698, 144698, 0, 0, 3, 0, 0),
|
||||
(144698, 144723, 0, 0, 3, 0, 0),
|
||||
(144698, 144699, 0, 0, 3, 0, 0),
|
||||
(144698, 144725, 0, 0, 3, 0, 0),
|
||||
(144698, 144700, 0, 0, 3, 0, 0),
|
||||
(144698, 144721, 0, 0, 3, 0, 0),
|
||||
(144698, 144722, 0, 0, 3, 0, 0),
|
||||
(144698, 144724, 0, 0, 3, 0, 0),
|
||||
(144698, 144697, 0, 0, 3, 0, 0),
|
||||
(144698, 144696, 0, 0, 3, 0, 0),
|
||||
(144695, 144695, 0, 0, 3, 0, 0),
|
||||
(144695, 144720, 0, 0, 3, 0, 0),
|
||||
(144695, 144718, 0, 0, 3, 0, 0),
|
||||
(144695, 144694, 0, 0, 3, 0, 0),
|
||||
(144695, 144717, 0, 0, 3, 0, 0),
|
||||
(144695, 144692, 0, 0, 3, 0, 0),
|
||||
(144695, 144716, 0, 0, 3, 0, 0),
|
||||
(144695, 144690, 0, 0, 3, 0, 0),
|
||||
(144695, 144693, 0, 0, 3, 0, 0),
|
||||
(144695, 144719, 0, 0, 3, 0, 0),
|
||||
(144715, 144715, 0, 0, 3, 0, 0),
|
||||
(144715, 144688, 0, 0, 3, 0, 0),
|
||||
(144715, 144691, 0, 0, 3, 0, 0),
|
||||
(144715, 144714, 0, 0, 3, 0, 0),
|
||||
(144715, 144689, 0, 0, 3, 0, 0),
|
||||
(144715, 144713, 0, 0, 3, 0, 0),
|
||||
(144715, 144712, 0, 0, 3, 0, 0),
|
||||
(144715, 144686, 0, 0, 3, 0, 0),
|
||||
(144715, 144687, 0, 0, 3, 0, 0),
|
||||
(144715, 144711, 0, 0, 3, 0, 0),
|
||||
(144684, 144684, 0, 0, 3, 0, 0),
|
||||
(144684, 144710, 0, 0, 3, 0, 0),
|
||||
(144684, 144708, 0, 0, 3, 0, 0),
|
||||
(144684, 144709, 0, 0, 3, 0, 0),
|
||||
(144684, 144683, 0, 0, 3, 0, 0),
|
||||
(144684, 144682, 0, 0, 3, 0, 0),
|
||||
(144684, 144681, 0, 0, 3, 0, 0),
|
||||
(144684, 144706, 0, 0, 3, 0, 0),
|
||||
(144684, 144707, 0, 0, 3, 0, 0),
|
||||
(144684, 144685, 0, 0, 3, 0, 0),
|
||||
(144726, 144726, 0, 0, 3, 0, 0),
|
||||
(144726, 144727, 0, 0, 3, 0, 0),
|
||||
(144726, 144703, 0, 0, 3, 0, 0),
|
||||
(144726, 144729, 0, 0, 3, 0, 0),
|
||||
(144726, 144704, 0, 0, 3, 0, 0),
|
||||
(144726, 144702, 0, 0, 3, 0, 0),
|
||||
(144726, 144701, 0, 0, 3, 0, 0),
|
||||
(144726, 144728, 0, 0, 3, 0, 0),
|
||||
(144726, 144730, 0, 0, 3, 0, 0),
|
||||
(144726, 144705, 0, 0, 3, 0, 0);
|
||||
4
data/sql/updates/db_world/2022_07_25_03.sql
Normal file
4
data/sql/updates/db_world/2022_07_25_03.sql
Normal file
@@ -0,0 +1,4 @@
|
||||
-- DB update 2022_07_25_02 -> 2022_07_25_03
|
||||
--
|
||||
DELETE FROM `spell_script_names` WHERE `spell_id` = 25185 AND `ScriptName` = 'spell_itch_aq20';
|
||||
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES (25185, 'spell_itch_aq20');
|
||||
77
data/sql/updates/db_world/2022_07_25_04.sql
Normal file
77
data/sql/updates/db_world/2022_07_25_04.sql
Normal file
@@ -0,0 +1,77 @@
|
||||
-- DB update 2022_07_25_03 -> 2022_07_25_04
|
||||
-- Captain Qeez
|
||||
DELETE FROM `creature_formations` WHERE `leaderGUID` = 144676;
|
||||
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`, `point_1`, `point_2`) VALUES
|
||||
(144676, 144676, 0, 0, 11, 0, 0),
|
||||
(144676, 144611, 0, 0, 11, 0, 0),
|
||||
(144676, 144656, 0, 0, 11, 0, 0),
|
||||
(144676, 144653, 0, 0, 11, 0, 0),
|
||||
(144676, 144655, 0, 0, 11, 0, 0),
|
||||
(144676, 144610, 0, 0, 11, 0, 0),
|
||||
(144676, 144654, 0, 0, 11, 0, 0);
|
||||
|
||||
-- Tubid
|
||||
DELETE FROM `creature_formations` WHERE `leaderGUID` = 144677;
|
||||
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`, `point_1`, `point_2`) VALUES
|
||||
(144677, 144677, 0, 0, 11, 0, 0),
|
||||
(144677, 144658, 0, 0, 11, 0, 0),
|
||||
(144677, 144616, 0, 0, 11, 0, 0),
|
||||
(144677, 144617, 0, 0, 11, 0, 0),
|
||||
(144677, 144619, 0, 0, 11, 0, 0),
|
||||
(144677, 144660, 0, 0, 11, 0, 0),
|
||||
(144677, 144659, 0, 0, 11, 0, 0);
|
||||
|
||||
-- Drenn
|
||||
DELETE FROM `creature_formations` WHERE `leaderGUID` = 144674;
|
||||
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`, `point_1`, `point_2`) VALUES
|
||||
(144674, 144674, 0, 0, 11, 0, 0),
|
||||
(144674, 144618, 0, 0, 11, 0, 0),
|
||||
(144674, 144657, 0, 0, 11, 0, 0),
|
||||
(144674, 144614, 0, 0, 11, 0, 0),
|
||||
(144674, 144613, 0, 0, 11, 0, 0),
|
||||
(144674, 144612, 0, 0, 11, 0, 0),
|
||||
(144674, 144615, 0, 0, 11, 0, 0);
|
||||
|
||||
-- Yeggeth
|
||||
DELETE FROM `creature_formations` WHERE `leaderGUID` = 144652;
|
||||
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`, `point_1`, `point_2`) VALUES
|
||||
(144652, 144652, 0, 0, 11, 0, 0),
|
||||
(144652, 144664, 0, 0, 11, 0, 0),
|
||||
(144652, 144622, 0, 0, 11, 0, 0),
|
||||
(144652, 144624, 0, 0, 11, 0, 0),
|
||||
(144652, 144663, 0, 0, 11, 0, 0),
|
||||
(144652, 144621, 0, 0, 11, 0, 0),
|
||||
(144652, 144620, 0, 0, 11, 0, 0);
|
||||
|
||||
-- Xurrem
|
||||
DELETE FROM `creature_formations` WHERE `leaderGUID` = 144675;
|
||||
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`, `point_1`, `point_2`) VALUES
|
||||
(144675, 144675, 0, 0, 11, 0, 0),
|
||||
(144675, 144625, 0, 0, 11, 0, 0),
|
||||
(144675, 144623, 0, 0, 11, 0, 0),
|
||||
(144675, 144665, 0, 0, 11, 0, 0),
|
||||
(144675, 144626, 0, 0, 11, 0, 0),
|
||||
(144675, 144662, 0, 0, 11, 0, 0),
|
||||
(144675, 144661, 0, 0, 11, 0, 0);
|
||||
|
||||
-- Pakkon
|
||||
DELETE FROM `creature_formations` WHERE `leaderGUID` = 144673;
|
||||
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`, `point_1`, `point_2`) VALUES
|
||||
(144673, 144673, 0, 0, 11, 0, 0),
|
||||
(144673, 144669, 0, 0, 11, 0, 0),
|
||||
(144673, 144630, 0, 0, 11, 0, 0),
|
||||
(144673, 144670, 0, 0, 11, 0, 0),
|
||||
(144673, 144631, 0, 0, 11, 0, 0),
|
||||
(144673, 144672, 0, 0, 11, 0, 0),
|
||||
(144673, 144671, 0, 0, 11, 0, 0);
|
||||
|
||||
-- Zerram
|
||||
DELETE FROM `creature_formations` WHERE `leaderGUID` = 144651;
|
||||
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`, `point_1`, `point_2`) VALUES
|
||||
(144651, 144651, 0, 0, 11, 0, 0),
|
||||
(144651, 144668, 0, 0, 11, 0, 0),
|
||||
(144651, 144629, 0, 0, 11, 0, 0),
|
||||
(144651, 144667, 0, 0, 11, 0, 0),
|
||||
(144651, 144628, 0, 0, 11, 0, 0),
|
||||
(144651, 144666, 0, 0, 11, 0, 0),
|
||||
(144651, 144627, 0, 0, 11, 0, 0);
|
||||
7
data/sql/updates/db_world/2022_07_25_05.sql
Normal file
7
data/sql/updates/db_world/2022_07_25_05.sql
Normal file
@@ -0,0 +1,7 @@
|
||||
-- DB update 2022_07_25_04 -> 2022_07_25_05
|
||||
--
|
||||
DELETE FROM `creature_template_movement` WHERE `creatureId` = 15802;
|
||||
INSERT INTO `creature_template_movement` (`CreatureId`, `Ground`, `Swim`, `Flight`, `Rooted`, `Chase`, `Random`, `InteractionPauseTimer`) VALUES
|
||||
(15802, 1, 0, 0, 1, 0, 0, 0);
|
||||
|
||||
UPDATE `creature_template` SET `ScriptName` = '' WHERE `entry` = 15802;
|
||||
19
data/sql/updates/db_world/2022_07_25_06.sql
Normal file
19
data/sql/updates/db_world/2022_07_25_06.sql
Normal file
@@ -0,0 +1,19 @@
|
||||
-- DB update 2022_07_25_05 -> 2022_07_25_06
|
||||
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 15343;
|
||||
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 15343) AND (`source_type` = 0) AND (`id` IN (0));
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(15343, 0, 0, 0, 9, 0, 100, 0, 0, 5, 5000, 7000, 0, 11, 25174, 3, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Qiraji Swarmguard - Within 0-5 Range - Cast \'Sundering Cleave\'');
|
||||
|
||||
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 15325;
|
||||
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 15325) AND (`source_type` = 0) AND (`id` IN (0));
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(15325, 0, 0, 0, 9, 0, 100, 0, 0, 40, 11000, 16000, 0, 11, 25185, 4, 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Hive\'Zara Wasp - Within 0-40 Range - Cast \'Itch\'');
|
||||
|
||||
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 15338;
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 15338);
|
||||
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`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(15338, 0, 0, 0, 0, 0, 100, 0, 5000, 9000, 8000, 11000, 0, 11, 25756, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Obsidian Destroyer - In Combat - Cast \'Purge\''),
|
||||
(15338, 0, 1, 0, 0, 0, 100, 0, 2000, 4000, 6000, 6000, 0, 11, 25755, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Obsidian Destroyer - In Combat - Cast \'Drain Mana\''),
|
||||
(15338, 0, 2, 0, 6, 0, 100, 0, 0, 0, 0, 0, 0, 11, 27627, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Obsidian Destroyer - On Just Died - Cast \'Serverside - Drop Obsidian\''),
|
||||
(15338, 0, 3, 0, 7, 0, 100, 0, 0, 0, 0, 0, 0, 108, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Obsidian Destroyer - On Respawn - Set Mana To 0');
|
||||
UPDATE `creature_template` SET `unit_flags2` = 0 WHERE (`entry` = 15338);
|
||||
7
data/sql/updates/db_world/2022_07_25_07.sql
Normal file
7
data/sql/updates/db_world/2022_07_25_07.sql
Normal file
@@ -0,0 +1,7 @@
|
||||
-- DB update 2022_07_25_06 -> 2022_07_25_07
|
||||
|
||||
-- Ossirian immune to Taunt
|
||||
UPDATE `creature_template` SET `flags_extra`=`flags_extra`|256 WHERE `entry`=15339;
|
||||
|
||||
-- Sand Vortex UNIT_FLAG_NOT_SELECTABLE
|
||||
UPDATE `creature_template` SET `unit_flags`=`unit_flags`|33554432 WHERE `entry`=15428;
|
||||
3
data/sql/updates/db_world/2022_07_25_08.sql
Normal file
3
data/sql/updates/db_world/2022_07_25_08.sql
Normal file
@@ -0,0 +1,3 @@
|
||||
-- DB update 2022_07_25_07 -> 2022_07_25_08
|
||||
--
|
||||
UPDATE `creature_template` SET `ScriptName` = 'npc_anubisath_guardian' WHERE `entry` = 15355;
|
||||
9
data/sql/updates/db_world/2022_07_26_00.sql
Normal file
9
data/sql/updates/db_world/2022_07_26_00.sql
Normal file
@@ -0,0 +1,9 @@
|
||||
-- DB update 2022_07_25_08 -> 2022_07_26_00
|
||||
--
|
||||
|
||||
UPDATE `creature_template` SET `mingold`=0, `maxgold`=0, `AIName`='SmartAI' WHERE `entry`=15527;
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid`=15527 AND `source_type`=0;
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `target_type`, `comment`) VALUES
|
||||
(15527, 0, 0, 0, 0, 0, 100, 0, 6000, 6000, 6000, 6000, 11, 25679, 2, 2, 'Mana Fiend - In Combat - Cast Arcane Explosion'),
|
||||
(15527, 0, 1, 0, 13, 0, 100, 0, 10000, 20000, 0, 0, 11, 15122, 0, 2, 'Mana Fiend - In Combat - Cast Counterspell');
|
||||
|
||||
2
data/sql/updates/db_world/2022_07_26_01.sql
Normal file
2
data/sql/updates/db_world/2022_07_26_01.sql
Normal file
@@ -0,0 +1,2 @@
|
||||
-- DB update 2022_07_26_00 -> 2022_07_26_01
|
||||
UPDATE `creature_onkill_reputation` SET `MaxStanding1` = 5 WHERE (`creature_id` IN (7157, 7156, 7158));
|
||||
13
data/sql/updates/db_world/2022_07_26_02.sql
Normal file
13
data/sql/updates/db_world/2022_07_26_02.sql
Normal file
@@ -0,0 +1,13 @@
|
||||
-- DB update 2022_07_26_01 -> 2022_07_26_02
|
||||
--
|
||||
DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_moam_mana_drain_filter';
|
||||
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
|
||||
(25676, 'spell_moam_mana_drain_filter');
|
||||
|
||||
DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_moam_summon_mana_fiends';
|
||||
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
|
||||
(25684, 'spell_moam_summon_mana_fiends');
|
||||
|
||||
DELETE FROM `creature_text` WHERE `CreatureID` = 15340 AND `GroupID` = 2;
|
||||
INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES
|
||||
(15340, 2, 0, '%s drains your mana and turns to stone.', 16, 0, 100, 0, 0, 0, 11474, 0, 'moam EMOTE_STONE_PHASE');
|
||||
5
data/sql/updates/db_world/2022_07_26_03.sql
Normal file
5
data/sql/updates/db_world/2022_07_26_03.sql
Normal file
@@ -0,0 +1,5 @@
|
||||
-- DB update 2022_07_26_02 -> 2022_07_26_03
|
||||
--
|
||||
DELETE FROM `spell_custom_attr` WHERE `spell_id` = 5255;
|
||||
INSERT INTO `spell_custom_attr` (`spell_id`, `attributes`) VALUES
|
||||
(5255, 0x00008000);
|
||||
9
data/sql/updates/db_world/2022_07_26_04.sql
Normal file
9
data/sql/updates/db_world/2022_07_26_04.sql
Normal file
@@ -0,0 +1,9 @@
|
||||
-- DB update 2022_07_26_03 -> 2022_07_26_04
|
||||
--
|
||||
|
||||
UPDATE `creature_template` SET `mingold`=0, `maxgold`=0 WHERE `entry`=15546;
|
||||
UPDATE `creature_template` SET `flags_extra`=`flags_extra`|256 WHERE `entry`=15369;
|
||||
DELETE FROM `creature_addon` WHERE `guid`=144641;
|
||||
INSERT INTO `creature_addon` (`guid`, `auras`) VALUES
|
||||
(144641, '8876'); -- Triggers SPELL_THRASH = 3391
|
||||
|
||||
760
data/sql/updates/db_world/2022_07_26_05.sql
Normal file
760
data/sql/updates/db_world/2022_07_26_05.sql
Normal file
@@ -0,0 +1,760 @@
|
||||
-- DB update 2022_07_26_04 -> 2022_07_26_05
|
||||
--
|
||||
/* Vile Familiar - GUID 4701 */
|
||||
|
||||
|
||||
SET @NPC := 4701;
|
||||
SET @PATH := @NPC * 10;
|
||||
|
||||
UPDATE `creature` SET `position_x` = -35.7399, `position_y` = -4228.09, `position_z` = 65.2618, `orientation` = 3.89663 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `creature_addon` WHERE `guid` = @NPC;
|
||||
INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH);
|
||||
UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `waypoint_data` where `id` = @PATH;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES
|
||||
(@PATH, 1, -35.7399, -4228.09, 65.2618, 100.0, 0),
|
||||
(@PATH, 2, -25.1474, -4238.52, 68.0743, 100.0, 0),
|
||||
(@PATH, 3, -28.5747, -4245.48, 68.4759, 100.0, 0),
|
||||
(@PATH, 4, -23.6166, -4258.85, 66.6592, 100.0, 0),
|
||||
(@PATH, 5, -35.6993, -4270.22, 66.894, 100.0, 0),
|
||||
(@PATH, 6, -56.3938, -4280.35, 70.0308, 100.0, 0),
|
||||
(@PATH, 7, -53.3781, -4302.13, 69.8885, 100.0, 0),
|
||||
(@PATH, 8, -39.7387, -4310.99, 70.2738, 100.0, 0),
|
||||
(@PATH, 9, -53.3781, -4302.13, 69.8885, 100.0, 0),
|
||||
(@PATH, 10, -56.3938, -4280.35, 70.0308, 100.0, 0),
|
||||
(@PATH, 11, -35.6993, -4270.22, 66.894, 100.0, 0),
|
||||
(@PATH, 12, -23.6166, -4258.85, 66.6592, 100.0, 0),
|
||||
(@PATH, 13, -28.5747, -4245.48, 68.4759, 100.0, 0),
|
||||
(@PATH, 14, -25.1474, -4238.52, 68.0743, 100.0, 0),
|
||||
(@PATH, 15, -35.7399, -4228.09, 65.2619, 100.0, 0),
|
||||
(@PATH, 16, -49.5318, -4222.88, 62.2678, 100.0, 0);
|
||||
|
||||
|
||||
/* Vile Familiar - GUID 4705 */
|
||||
|
||||
|
||||
SET @NPC := 4705;
|
||||
SET @PATH := @NPC * 10;
|
||||
|
||||
UPDATE `creature` SET `position_x` = -152.718, `position_y` = -4264.43, `position_z` = 61.5234, `orientation` = 1.04177 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `creature_addon` WHERE `guid` = @NPC;
|
||||
INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH);
|
||||
UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `waypoint_data` where `id` = @PATH;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES
|
||||
(@PATH, 1, -152.718, -4264.43, 61.5234, 100.0, 0),
|
||||
(@PATH, 2, -150.795, -4251.99, 59.8122, 100.0, 0),
|
||||
(@PATH, 3, -140.417, -4234.24, 58.089, 100.0, 0),
|
||||
(@PATH, 4, -127.943, -4230.0, 57.2045, 100.0, 0),
|
||||
(@PATH, 5, -110.444, -4210.7, 54.7955, 100.0, 0),
|
||||
(@PATH, 6, -96.4095, -4201.51, 51.431, 100.0, 0),
|
||||
(@PATH, 7, -80.8383, -4204.42, 49.8348, 100.0, 0),
|
||||
(@PATH, 8, -79.6806, -4223.97, 53.0284, 100.0, 0),
|
||||
(@PATH, 9, -83.5118, -4242.02, 52.784, 100.0, 0),
|
||||
(@PATH, 10, -96.4792, -4250.83, 51.9981, 100.0, 0),
|
||||
(@PATH, 11, -83.5118, -4242.02, 52.784, 100.0, 0),
|
||||
(@PATH, 12, -79.6806, -4223.97, 53.0284, 100.0, 0),
|
||||
(@PATH, 13, -80.8383, -4204.42, 49.8348, 100.0, 0),
|
||||
(@PATH, 14, -96.4095, -4201.51, 51.431, 100.0, 0),
|
||||
(@PATH, 15, -110.265, -4210.5, 54.7808, 100.0, 0),
|
||||
(@PATH, 16, -127.943, -4230.0, 57.2045, 100.0, 0),
|
||||
(@PATH, 17, -140.286, -4234.02, 58.09, 100.0, 0),
|
||||
(@PATH, 18, -150.776, -4251.96, 59.792, 100.0, 0),
|
||||
(@PATH, 19, -152.797, -4264.3, 61.4815, 100.0, 0),
|
||||
(@PATH, 20, -145.721, -4275.72, 63.287, 100.0, 0);
|
||||
|
||||
/* Sen'jin Watcher - GUID 6401 */
|
||||
|
||||
|
||||
SET @NPC := 6401;
|
||||
SET @PATH := @NPC * 10;
|
||||
|
||||
UPDATE `creature` SET `position_x` = -820.061, `position_y` = -4892.82, `position_z` = 19.3183, `orientation` = 3.33843 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `creature_addon` WHERE `guid` = @NPC;
|
||||
INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH);
|
||||
UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `waypoint_data` where `id` = @PATH;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES
|
||||
(@PATH, 1, -820.061, -4892.82, 19.3183, 100.0, 0),
|
||||
(@PATH, 2, -814.445, -4894.38, 19.1953, 100.0, 0),
|
||||
(@PATH, 3, -810.197, -4898.55, 19.2201, 100.0, 0),
|
||||
(@PATH, 4, -805.71, -4902.39, 19.3582, 100.0, 0),
|
||||
(@PATH, 5, -800.273, -4902.95, 19.4798, 100.0, 0),
|
||||
(@PATH, 6, -794.502, -4901.52, 19.5224, 100.0, 0),
|
||||
(@PATH, 7, -791.733, -4902.05, 19.5467, 100.0, 0),
|
||||
(@PATH, 8, -789.871, -4904.44, 19.5926, 100.0, 0),
|
||||
(@PATH, 9, -790.881, -4909.7, 19.5959, 100.0, 0),
|
||||
(@PATH, 10, -793.125, -4911.08, 19.5652, 100.0, 0),
|
||||
(@PATH, 11, -798.939, -4909.47, 19.4492, 100.0, 0),
|
||||
(@PATH, 12, -801.808, -4908.93, 19.3913, 100.0, 0),
|
||||
(@PATH, 13, -804.86, -4909.7, 19.3525, 100.0, 0),
|
||||
(@PATH, 14, -808.699, -4913.92, 19.2707, 100.0, 0),
|
||||
(@PATH, 15, -811.502, -4919.28, 19.3742, 100.0, 0),
|
||||
(@PATH, 16, -815.664, -4923.35, 19.5169, 100.0, 0),
|
||||
(@PATH, 17, -821.037, -4926.27, 19.7472, 100.0, 0),
|
||||
(@PATH, 18, -824.913, -4930.46, 20.2496, 100.0, 0),
|
||||
(@PATH, 19, -825.216, -4933.02, 20.4924, 100.0, 0),
|
||||
(@PATH, 20, -822.131, -4938.15, 20.9481, 100.0, 0),
|
||||
(@PATH, 21, -822.812, -4941.48, 21.2641, 100.0, 0),
|
||||
(@PATH, 22, -828.34, -4939.55, 21.1166, 100.0, 0),
|
||||
(@PATH, 23, -831.006, -4931.77, 20.6677, 100.0, 0),
|
||||
(@PATH, 24, -833.433, -4930.48, 20.7289, 100.0, 0),
|
||||
(@PATH, 25, -835.654, -4928.46, 20.7985, 100.0, 0),
|
||||
(@PATH, 26, -839.542, -4923.88, 20.6797, 100.0, 0),
|
||||
(@PATH, 27, -840.869, -4921.56, 20.6249, 100.0, 0),
|
||||
(@PATH, 28, -842.204, -4918.86, 20.5327, 100.0, 0),
|
||||
(@PATH, 29, -842.497, -4916.01, 20.4017, 100.0, 0),
|
||||
(@PATH, 30, -840.453, -4910.24, 20.1169, 100.0, 0),
|
||||
(@PATH, 31, -838.588, -4907.94, 19.9559, 100.0, 0),
|
||||
(@PATH, 32, -833.656, -4904.45, 19.8107, 100.0, 0),
|
||||
(@PATH, 33, -831.472, -4902.45, 19.8099, 100.0, 0),
|
||||
(@PATH, 34, -829.256, -4897.08, 19.89, 100.0, 0),
|
||||
(@PATH, 35, -828.472, -4894.54, 19.858, 100.0, 0);
|
||||
|
||||
|
||||
/* Sen'jin Watcher - GUID 7318 */
|
||||
|
||||
|
||||
SET @NPC := 7318;
|
||||
SET @PATH := @NPC * 10;
|
||||
|
||||
DELETE FROM `creature_addon` WHERE `guid` = @NPC;
|
||||
INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH);
|
||||
UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `waypoint_data` where `id` = @PATH;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES
|
||||
(@PATH, 1, -751.532, -4937.42, 22.0626, 1.39087, 0),
|
||||
(@PATH, 2, -749.446, -4925.95, 21.7179, 1.40658, 0),
|
||||
(@PATH, 3, -748.146, -4909.12, 21.6451, 1.53224, 0),
|
||||
(@PATH, 4, -749.044, -4894.65, 21.3131, 1.80792, 0),
|
||||
(@PATH, 5, -758.065, -4886.38, 20.7674, 2.42367, 0),
|
||||
(@PATH, 6, -769.284, -4881.33, 20.2048, 2.81558, 0),
|
||||
(@PATH, 7, -786.327, -4873.79, 19.3151, 2.69777, 0),
|
||||
(@PATH, 8, -800.025, -4868.83, 19.0121, 2.81558, 0),
|
||||
(@PATH, 9, -814.01, -4868.4, 19.1711, 3.05199, 0),
|
||||
(@PATH, 10, -830.176, -4867.12, 20.0416, 3.19336, 0),
|
||||
(@PATH, 11, -840.925, -4866.71, 20.9414, 3.11796, 0),
|
||||
(@PATH, 12, -852.233, -4866.44, 20.6684, 3.11796, 0),
|
||||
(@PATH, 13, -862.73, -4866.2, 19.5395, 3.11796, 0),
|
||||
(@PATH, 14, -877.267, -4867.57, 15.675, 3.35358, 0),
|
||||
(@PATH, 15, -889.625, -4876.12, 11.69, 4.09814, 0),
|
||||
(@PATH, 16, -892.882, -4882.87, 10.4069, 4.41387, 0),
|
||||
(@PATH, 17, -894.161, -4891.19, 9.9882, 4.72724, 0),
|
||||
(@PATH, 18, -891.952, -4904.18, 11.096, 5.00292, 0),
|
||||
(@PATH, 19, -887.942, -4917.59, 13.5855, 5.00292, 0),
|
||||
(@PATH, 20, -885.714, -4929.01, 15.4245, 4.84505, 0),
|
||||
(@PATH, 21, -884.325, -4939.42, 16.5051, 4.84505, 0),
|
||||
(@PATH, 22, -882.937, -4949.83, 17.3169, 4.84505, 0),
|
||||
(@PATH, 23, -881.758, -4958.38, 17.6026, 5.00292, 0),
|
||||
(@PATH, 24, -877.399, -4967.48, 17.6634, 5.3964, 0),
|
||||
(@PATH, 25, -869.496, -4975.38, 16.6692, 5.55427, 0),
|
||||
(@PATH, 26, -860.011, -4982.71, 14.9847, 5.67208, 0),
|
||||
(@PATH, 27, -852.52, -4987.43, 14.0936, 5.78989, 0),
|
||||
(@PATH, 28, -840.341, -4990.7, 14.844, 6.18102, 0),
|
||||
(@PATH, 29, -830.497, -4989.98, 15.4556, 0.13345, 0),
|
||||
(@PATH, 30, -819.594, -4986.79, 16.2936, 0.369069, 0),
|
||||
(@PATH, 31, -809.257, -4982.2, 17.4642, 0.446824, 0),
|
||||
(@PATH, 32, -793.258, -4973.57, 18.1898, 0.486879, 0),
|
||||
(@PATH, 33, -775.559, -4963.22, 20.2241, 0.564633, 0),
|
||||
(@PATH, 34, -763.732, -4955.73, 21.347, 0.564633, 0),
|
||||
(@PATH, 35, -757.087, -4948.8, 21.8513, 0.878007, 0),
|
||||
(@PATH, 36, -750.98, -4940.85, 22.1672, 0.995817, 0);
|
||||
|
||||
|
||||
/* Sen'jin Watcher - GUID 7324 */
|
||||
|
||||
|
||||
SET @NPC := 7324;
|
||||
SET @PATH := @NPC * 10;
|
||||
|
||||
UPDATE `creature` SET `position_x` = -772.175, `position_y` = -4941.56, `position_z` = 36.863, `orientation` = 2.03416 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `creature_addon` WHERE `guid` = @NPC;
|
||||
INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH);
|
||||
UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `waypoint_data` where `id` = @PATH;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES
|
||||
(@PATH, 1, -772.175, -4941.56, 36.863, 100.0, 0),
|
||||
(@PATH, 2, -774.724, -4940.84, 38.2501, 100.0, 0),
|
||||
(@PATH, 3, -777.686, -4940.8, 38.2811, 100.0, 0),
|
||||
(@PATH, 4, -779.612, -4942.97, 38.2811, 100.0, 0),
|
||||
(@PATH, 5, -781.083, -4945.55, 38.2811, 100.0, 0),
|
||||
(@PATH, 6, -786.085, -4947.83, 38.2811, 100.0, 0),
|
||||
(@PATH, 7, -788.325, -4946.54, 38.2811, 100.0, 0),
|
||||
(@PATH, 8, -789.578, -4943.82, 38.2811, 100.0, 0),
|
||||
(@PATH, 9, -789.76, -4940.87, 38.2811, 100.0, 0),
|
||||
(@PATH, 10, -784.81, -4937.9, 38.2811, 100.0, 0),
|
||||
(@PATH, 11, -779.324, -4939.52, 38.2811, 100.0, 0),
|
||||
(@PATH, 12, -776.578, -4940.72, 38.2811, 100.0, 0),
|
||||
(@PATH, 13, -768.679, -4942.92, 34.9, 100.0, 0),
|
||||
(@PATH, 14, -766.035, -4944.11, 33.9918, 100.0, 0),
|
||||
(@PATH, 15, -763.665, -4945.41, 32.7905, 100.0, 0),
|
||||
(@PATH, 16, -762.145, -4947.73, 31.7292, 100.0, 0),
|
||||
(@PATH, 17, -762.604, -4953.17, 29.8729, 100.0, 0),
|
||||
(@PATH, 18, -764.436, -4955.34, 29.2952, 100.0, 0),
|
||||
(@PATH, 19, -767.039, -4956.27, 28.2648, 100.0, 0),
|
||||
(@PATH, 20, -772.457, -4955.5, 26.0306, 100.0, 0),
|
||||
(@PATH, 21, -779.579, -4952.01, 22.2463, 100.0, 0),
|
||||
(@PATH, 22, -782.32, -4950.71, 22.2463, 100.0, 0),
|
||||
(@PATH, 23, -786.267, -4947.33, 22.2463, 100.0, 0),
|
||||
(@PATH, 24, -786.019, -4944.63, 22.2463, 100.0, 0),
|
||||
(@PATH, 25, -781.034, -4943.89, 22.2463, 100.0, 0),
|
||||
(@PATH, 26, -778.747, -4948.8, 22.2463, 100.0, 0),
|
||||
(@PATH, 27, -777.972, -4951.7, 22.2463, 100.0, 0),
|
||||
(@PATH, 28, -771.84, -4955.62, 26.2679, 100.0, 0),
|
||||
(@PATH, 29, -769.283, -4956.47, 27.5535, 100.0, 0),
|
||||
(@PATH, 30, -766.381, -4956.36, 28.4894, 100.0, 0),
|
||||
(@PATH, 31, -763.87, -4955.03, 29.4397, 100.0, 0),
|
||||
(@PATH, 32, -762.094, -4952.75, 30.1289, 100.0, 0),
|
||||
(@PATH, 33, -761.814, -4947.37, 31.8481, 100.0, 0),
|
||||
(@PATH, 34, -763.198, -4945.0, 32.8622, 100.0, 0),
|
||||
(@PATH, 35, -768.301, -4942.61, 34.8163, 100.0, 0);
|
||||
|
||||
/* Den Grunt - GUID 7656 */
|
||||
|
||||
|
||||
SET @NPC := 7656;
|
||||
SET @PATH := @NPC * 10;
|
||||
|
||||
UPDATE `creature` SET `position_x` = -600.043, `position_y` = -4342.45, `position_z` = 37.8159, `orientation` = 1.11138 WHERE `guid` = @NPC;
|
||||
|
||||
UPDATE `creature_addon` set `path_id` = @PATH WHERE `guid` = @NPC;
|
||||
UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `waypoint_data` where `id` = @PATH;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES
|
||||
(@PATH, 1, -600.043, -4342.45, 37.8159, 100.0, 0),
|
||||
(@PATH, 2, -599.399, -4324.38, 37.5988, 100.0, 0),
|
||||
(@PATH, 3, -599.657, -4312.29, 37.5986, 100.0, 0),
|
||||
(@PATH, 4, -599.869, -4298.37, 37.811, 100.0, 0),
|
||||
(@PATH, 5, -599.768, -4307.47, 37.5992, 100.0, 0),
|
||||
(@PATH, 6, -599.445, -4319.6, 37.5986, 100.0, 0),
|
||||
(@PATH, 7, -599.705, -4334.79, 37.5988, 100.0, 0),
|
||||
(@PATH, 8, -600.446, -4349.94, 38.131, 100.0, 0),
|
||||
(@PATH, 9, -600.588, -4362.75, 38.8676, 100.0, 0),
|
||||
(@PATH, 10, -601.845, -4378.2, 39.9664, 100.0, 0),
|
||||
(@PATH, 11, -601.612, -4395.27, 42.6652, 100.0, 0),
|
||||
(@PATH, 12, -600.024, -4410.47, 43.5231, 100.0, 0),
|
||||
(@PATH, 13, -594.057, -4427.35, 42.4307, 100.0, 0),
|
||||
(@PATH, 14, -579.457, -4457.44, 41.9763, 100.0, 0),
|
||||
(@PATH, 15, -573.993, -4468.27, 42.2239, 100.0, 0),
|
||||
(@PATH, 16, -570.217, -4476.48, 42.5183, 100.0, 0),
|
||||
(@PATH, 17, -569.013, -4485.33, 42.566, 100.0, 0),
|
||||
(@PATH, 18, -570.17, -4497.38, 42.5664, 100.0, 0),
|
||||
(@PATH, 19, -578.906, -4511.47, 42.5098, 100.0, 0),
|
||||
(@PATH, 20, -581.195, -4514.85, 42.4688, 100.0, 0),
|
||||
(@PATH, 21, -572.172, -4501.6, 42.5659, 100.0, 0),
|
||||
(@PATH, 22, -569.257, -4490.21, 42.5659, 100.0, 0),
|
||||
(@PATH, 23, -569.142, -4481.09, 42.566, 100.0, 0),
|
||||
(@PATH, 24, -571.964, -4472.59, 42.4032, 100.0, 0),
|
||||
(@PATH, 25, -578.171, -4460.08, 41.9867, 100.0, 0),
|
||||
(@PATH, 26, -583.786, -4448.55, 41.618, 100.0, 0),
|
||||
(@PATH, 27, -589.919, -4434.83, 42.0238, 100.0, 0),
|
||||
(@PATH, 28, -597.115, -4418.48, 43.1092, 100.0, 0),
|
||||
(@PATH, 29, -600.253, -4403.03, 43.6641, 100.0, 0),
|
||||
(@PATH, 30, -601.071, -4387.19, 41.4481, 100.0, 0),
|
||||
(@PATH, 31, -600.667, -4370.0, 39.3044, 100.0, 0),
|
||||
(@PATH, 32, -600.132, -4356.39, 38.4777, 100.0, 0);
|
||||
|
||||
/* Clattering Scorpid - GUID 7953 */
|
||||
|
||||
|
||||
SET @NPC := 7953;
|
||||
SET @PATH := @NPC * 10;
|
||||
|
||||
DELETE FROM `creature_addon` WHERE `guid` = @NPC;
|
||||
INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH);
|
||||
UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `waypoint_data` where `id` = @PATH;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES
|
||||
(@PATH, 1, -103.086, -4657.6, 33.6479, 100.0, 0),
|
||||
(@PATH, 2, -85.3881, -4677.97, 32.5394, 100.0, 0),
|
||||
(@PATH, 3, -81.7362, -4701.13, 30.2284, 100.0, 0),
|
||||
(@PATH, 4, -70.1425, -4695.94, 30.9405, 100.0, 0),
|
||||
(@PATH, 5, -59.5394, -4681.0, 33.771, 100.0, 0),
|
||||
(@PATH, 6, -54.5816, -4677.98, 35.3588, 100.0, 0),
|
||||
(@PATH, 7, -49.7002, -4676.23, 38.9528, 100.0, 0),
|
||||
(@PATH, 8, -46.3046, -4673.13, 41.046, 100.0, 0),
|
||||
(@PATH, 9, -44.1007, -4670.26, 41.0807, 100.0, 0),
|
||||
(@PATH, 10, -44.0761, -4665.47, 38.7072, 100.0, 0),
|
||||
(@PATH, 11, -44.3984, -4659.13, 35.8799, 100.0, 0),
|
||||
(@PATH, 12, -40.1175, -4644.03, 36.3342, 100.0, 0),
|
||||
(@PATH, 13, -34.7326, -4631.52, 40.2554, 100.0, 0),
|
||||
(@PATH, 14, -33.4486, -4622.9, 43.117, 100.0, 0),
|
||||
(@PATH, 15, -45.7339, -4611.2, 44.6652, 100.0, 0),
|
||||
(@PATH, 16, -59.8055, -4613.19, 43.9173, 100.0, 0),
|
||||
(@PATH, 17, -72.1956, -4616.84, 41.993, 100.0, 0),
|
||||
(@PATH, 18, -82.2069, -4628.65, 38.7271, 100.0, 0),
|
||||
(@PATH, 19, -89.89, -4632.09, 38.1229, 100.0, 0),
|
||||
(@PATH, 20, -103.297, -4625.97, 39.8145, 100.0, 0),
|
||||
(@PATH, 21, -112.51, -4623.24, 41.5492, 100.0, 0),
|
||||
(@PATH, 22, -116.701, -4640.65, 36.011, 100.0, 0),
|
||||
(@PATH, 23, -116.177, -4648.41, 34.4998, 100.0, 0);
|
||||
|
||||
/* Dire Mottled Boar - GUID 8539 */
|
||||
|
||||
|
||||
SET @NPC := 8539;
|
||||
SET @PATH := @NPC * 10;
|
||||
|
||||
DELETE FROM `creature_addon` WHERE `guid` = @NPC;
|
||||
INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH);
|
||||
UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `waypoint_data` where `id` = @PATH;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES
|
||||
(@PATH, 1, -214.372, -4845.64, 29.1291, 100.0, 0),
|
||||
(@PATH, 2, -225.02, -4850.37, 30.6568, 100.0, 0),
|
||||
(@PATH, 3, -235.224, -4854.72, 31.7916, 100.0, 0),
|
||||
(@PATH, 4, -247.126, -4856.09, 31.6676, 100.0, 0),
|
||||
(@PATH, 5, -256.584, -4848.05, 31.4637, 100.0, 0),
|
||||
(@PATH, 6, -269.014, -4841.03, 32.0333, 100.0, 0),
|
||||
(@PATH, 7, -289.34, -4837.1, 34.9092, 100.0, 0),
|
||||
(@PATH, 8, -310.287, -4836.23, 39.2223, 100.0, 0),
|
||||
(@PATH, 9, -320.813, -4838.24, 39.9581, 100.0, 0),
|
||||
(@PATH, 10, -330.673, -4844.51, 40.5147, 100.0, 0),
|
||||
(@PATH, 11, -333.401, -4850.53, 40.7722, 100.0, 0),
|
||||
(@PATH, 12, -328.735, -4858.96, 40.7124, 100.0, 0),
|
||||
(@PATH, 13, -321.563, -4868.14, 40.2101, 100.0, 0),
|
||||
(@PATH, 14, -317.509, -4873.85, 39.4117, 100.0, 0),
|
||||
(@PATH, 15, -306.572, -4879.36, 36.7733, 100.0, 0),
|
||||
(@PATH, 16, -292.646, -4884.23, 33.3096, 100.0, 0),
|
||||
(@PATH, 17, -280.699, -4884.3, 31.3057, 100.0, 0),
|
||||
(@PATH, 18, -270.147, -4887.51, 29.426, 100.0, 0),
|
||||
(@PATH, 19, -265.117, -4889.67, 28.3422, 100.0, 0),
|
||||
(@PATH, 20, -252.422, -4898.02, 27.9178, 100.0, 0),
|
||||
(@PATH, 21, -246.598, -4899.89, 27.4249, 100.0, 0),
|
||||
(@PATH, 22, -239.562, -4898.45, 29.0681, 100.0, 0),
|
||||
(@PATH, 23, -234.568, -4895.74, 29.3167, 100.0, 0),
|
||||
(@PATH, 24, -226.236, -4890.71, 29.3149, 100.0, 0),
|
||||
(@PATH, 25, -217.424, -4884.85, 29.7653, 100.0, 0),
|
||||
(@PATH, 26, -211.227, -4871.29, 29.6777, 100.0, 0),
|
||||
(@PATH, 27, -210.178, -4858.07, 29.221, 100.0, 0);
|
||||
|
||||
/* Clattering Scorpid - GUID 10474 */
|
||||
|
||||
|
||||
SET @NPC := 10474;
|
||||
SET @PATH := @NPC * 10;
|
||||
|
||||
DELETE FROM `creature_addon` WHERE `guid` = @NPC;
|
||||
INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH);
|
||||
UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `waypoint_data` where `id` = @PATH;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES
|
||||
(@PATH, 1, -406.087, -4716.63, 44.8804, 100.0, 0),
|
||||
(@PATH, 2, -408.276, -4708.65, 45.1308, 100.0, 0),
|
||||
(@PATH, 3, -409.576, -4703.31, 40.2804, 100.0, 0),
|
||||
(@PATH, 4, -412.923, -4691.66, 39.5794, 100.0, 0),
|
||||
(@PATH, 5, -419.728, -4679.76, 38.7276, 100.0, 0),
|
||||
(@PATH, 6, -428.741, -4672.17, 37.967, 100.0, 0),
|
||||
(@PATH, 7, -439.755, -4664.31, 40.0006, 100.0, 0),
|
||||
(@PATH, 8, -456.36, -4658.33, 40.9741, 100.0, 0),
|
||||
(@PATH, 9, -460.767, -4666.47, 39.0189, 100.0, 0),
|
||||
(@PATH, 10, -467.21, -4674.15, 36.7182, 100.0, 0),
|
||||
(@PATH, 11, -478.211, -4682.6, 38.8073, 100.0, 0),
|
||||
(@PATH, 12, -489.172, -4689.26, 36.6404, 100.0, 0),
|
||||
(@PATH, 13, -494.44, -4693.17, 36.7468, 100.0, 0),
|
||||
(@PATH, 14, -482.252, -4697.46, 36.8586, 100.0, 0),
|
||||
(@PATH, 15, -470.356, -4697.13, 38.0726, 100.0, 0),
|
||||
(@PATH, 16, -455.515, -4698.51, 38.4622, 100.0, 0),
|
||||
(@PATH, 17, -444.913, -4710.9, 37.4488, 100.0, 0),
|
||||
(@PATH, 18, -433.46, -4722.15, 38.8961, 100.0, 0),
|
||||
(@PATH, 19, -424.593, -4731.05, 40.0664, 100.0, 0),
|
||||
(@PATH, 20, -415.99, -4737.86, 40.2052, 100.0, 0),
|
||||
(@PATH, 21, -409.609, -4729.68, 41.9805, 100.0, 0),
|
||||
(@PATH, 22, -406.009, -4721.75, 41.9123, 100.0, 0);
|
||||
|
||||
|
||||
/* Vile Familiar - GUID 12169 */
|
||||
|
||||
|
||||
SET @NPC := 12169;
|
||||
SET @PATH := @NPC * 10;
|
||||
|
||||
UPDATE `creature` SET `position_x` = -107.068, `position_y` = -4306.76, `position_z` = 62.6159, `orientation` = 6.04921 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `creature_addon` WHERE `guid` = @NPC;
|
||||
INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH);
|
||||
UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `waypoint_data` where `id` = @PATH;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES
|
||||
(@PATH, 1, -107.068, -4306.76, 62.6159, 100.0, 0),
|
||||
(@PATH, 2, -124.8, -4318.37, 66.0147, 100.0, 0),
|
||||
(@PATH, 3, -139.239, -4303.63, 66.1942, 100.0, 0),
|
||||
(@PATH, 4, -143.22, -4283.83, 64.4553, 100.0, 0),
|
||||
(@PATH, 5, -129.423, -4280.46, 64.745, 100.0, 0),
|
||||
(@PATH, 6, -109.47, -4285.22, 63.7303, 100.0, 0),
|
||||
(@PATH, 7, -94.2235, -4292.27, 60.9362, 100.0, 0);
|
||||
|
||||
/* Clattering Scorpid - GUID 12264 */
|
||||
|
||||
|
||||
SET @NPC := 12264;
|
||||
SET @PATH := @NPC * 10;
|
||||
|
||||
UPDATE `creature` SET `position_x` = -121.162, `position_y` = -4709.15, `position_z` = 27.93, `orientation` = 0.263307 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `creature_addon` WHERE `guid` = @NPC;
|
||||
INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH);
|
||||
UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `waypoint_data` where `id` = @PATH;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES
|
||||
(@PATH, 1, -121.162, -4709.15, 27.93, 100.0, 0),
|
||||
(@PATH, 2, -103.324, -4704.22, 28.4752, 100.0, 0),
|
||||
(@PATH, 3, -91.8912, -4693.48, 30.4882, 100.0, 0),
|
||||
(@PATH, 4, -98.0826, -4668.58, 32.5437, 100.0, 0),
|
||||
(@PATH, 5, -108.558, -4659.12, 33.0813, 100.0, 0),
|
||||
(@PATH, 6, -123.121, -4652.93, 33.8118, 100.0, 0),
|
||||
(@PATH, 7, -137.574, -4653.24, 35.3335, 100.0, 0),
|
||||
(@PATH, 8, -152.153, -4651.58, 37.4562, 100.0, 0),
|
||||
(@PATH, 9, -167.803, -4649.81, 37.7494, 100.0, 0),
|
||||
(@PATH, 10, -186.079, -4647.93, 38.5911, 100.0, 0),
|
||||
(@PATH, 11, -188.795, -4657.63, 36.2397, 100.0, 0),
|
||||
(@PATH, 12, -189.618, -4669.97, 33.4692, 100.0, 0),
|
||||
(@PATH, 13, -198.707, -4679.42, 33.1351, 100.0, 0),
|
||||
(@PATH, 14, -209.977, -4691.24, 32.6171, 100.0, 0),
|
||||
(@PATH, 15, -217.987, -4698.61, 31.033, 100.0, 0),
|
||||
(@PATH, 16, -221.252, -4706.95, 29.1452, 100.0, 0),
|
||||
(@PATH, 17, -226.853, -4716.18, 29.2998, 100.0, 0),
|
||||
(@PATH, 18, -228.244, -4721.6, 29.3076, 100.0, 0),
|
||||
(@PATH, 19, -222.968, -4725.64, 29.6394, 100.0, 0),
|
||||
(@PATH, 20, -217.048, -4728.59, 31.5374, 100.0, 0),
|
||||
(@PATH, 21, -209.686, -4728.02, 32.0704, 100.0, 0),
|
||||
(@PATH, 22, -196.465, -4727.24, 32.0757, 100.0, 0),
|
||||
(@PATH, 23, -178.542, -4717.88, 31.7107, 100.0, 0),
|
||||
(@PATH, 24, -175.455, -4698.0, 32.316, 100.0, 0),
|
||||
(@PATH, 25, -153.919, -4700.8, 30.4153, 100.0, 0),
|
||||
(@PATH, 26, -141.606, -4706.08, 28.791, 100.0, 0),
|
||||
(@PATH, 27, -132.901, -4712.47, 27.927, 100.0, 0);
|
||||
|
||||
/* Razormane Scout - GUID 12307 */
|
||||
|
||||
|
||||
SET @NPC := 12307;
|
||||
SET @PATH := @NPC * 10;
|
||||
|
||||
UPDATE `creature` SET `position_x` = 69.2959, `position_y` = -4609.61, `position_z` = 48.2853, `orientation` = 0.64357 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `creature_addon` WHERE `guid` = @NPC;
|
||||
INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH);
|
||||
UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `waypoint_data` where `id` = @PATH;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES
|
||||
(@PATH, 1, 69.2959, -4609.61, 48.2853, 100.0, 10000),
|
||||
(@PATH, 2, 72.8356, -4591.06, 55.2529, 100.0, 0),
|
||||
(@PATH, 3, 76.6362, -4578.17, 56.5297, 100.0, 0),
|
||||
(@PATH, 4, 84.8748, -4572.65, 56.1986, 100.0, 0),
|
||||
(@PATH, 5, 93.5395, -4567.38, 55.1739, 100.0, 0),
|
||||
(@PATH, 6, 95.7022, -4560.2, 54.7452, 100.0, 0),
|
||||
(@PATH, 7, 90.0297, -4556.16, 54.7916, 100.0, 0),
|
||||
(@PATH, 8, 84.1164, -4557.37, 54.8289, 100.0, 0),
|
||||
(@PATH, 9, 79.8056, -4559.84, 54.9896, 100.0, 0),
|
||||
(@PATH, 10, 74.5471, -4569.52, 55.9016, 100.0, 0),
|
||||
(@PATH, 11, 75.6316, -4575.49, 56.3877, 100.0, 0),
|
||||
(@PATH, 12, 81.4626, -4576.27, 56.6136, 100.0, 0),
|
||||
(@PATH, 13, 84.9299, -4571.12, 55.8428, 100.0, 0),
|
||||
(@PATH, 14, 84.1083, -4562.97, 54.7466, 100.0, 0),
|
||||
(@PATH, 15, 82.6289, -4555.58, 55.1128, 100.0, 0),
|
||||
(@PATH, 16, 83.1458, -4551.12, 55.8152, 100.0, 0),
|
||||
(@PATH, 17, 88.5177, -4548.67, 56.596, 100.0, 20000),
|
||||
(@PATH, 18, 85.0209, -4556.79, 54.8304, 100.0, 0),
|
||||
(@PATH, 19, 81.9841, -4566.79, 55.1042, 100.0, 0),
|
||||
(@PATH, 20, 78.8213, -4577.88, 56.6008, 100.0, 0),
|
||||
(@PATH, 21, 75.8794, -4588.68, 56.083, 100.0, 0),
|
||||
(@PATH, 22, 72.7215, -4599.41, 52.3967, 100.0, 0);
|
||||
|
||||
/* Dire Mottled Boar - GUID 12312 */
|
||||
|
||||
|
||||
SET @NPC := 12312;
|
||||
SET @PATH := @NPC * 10;
|
||||
|
||||
UPDATE `creature` SET `position_x` = -61.8657, `position_y` = -4828.86, `position_z` = 22.6982, `orientation` = 1.96017 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `creature_addon` WHERE `guid` = @NPC;
|
||||
INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH);
|
||||
UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `waypoint_data` where `id` = @PATH;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES
|
||||
(@PATH, 1, -61.8657, -4828.86, 22.6982, 100.0, 0),
|
||||
(@PATH, 2, -74.1842, -4823.68, 23.4622, 100.0, 0),
|
||||
(@PATH, 3, -83.4586, -4827.15, 23.5508, 100.0, 0),
|
||||
(@PATH, 4, -91.9781, -4833.29, 23.7535, 100.0, 0),
|
||||
(@PATH, 5, -103.712, -4841.91, 22.8193, 100.0, 0),
|
||||
(@PATH, 6, -114.994, -4850.2, 21.4633, 100.0, 0),
|
||||
(@PATH, 7, -126.212, -4858.57, 20.7062, 100.0, 0),
|
||||
(@PATH, 8, -130.104, -4870.51, 20.677, 100.0, 0),
|
||||
(@PATH, 9, -127.47, -4878.73, 21.0682, 100.0, 0),
|
||||
(@PATH, 10, -118.877, -4883.74, 21.1563, 100.0, 0),
|
||||
(@PATH, 11, -107.751, -4884.02, 20.3514, 100.0, 0),
|
||||
(@PATH, 12, -99.2225, -4885.73, 18.9527, 100.0, 0),
|
||||
(@PATH, 13, -83.4712, -4889.91, 17.615, 100.0, 0),
|
||||
(@PATH, 14, -76.0254, -4891.22, 17.5674, 100.0, 0),
|
||||
(@PATH, 15, -68.0709, -4887.69, 17.682, 100.0, 0),
|
||||
(@PATH, 16, -60.9011, -4879.28, 18.6881, 100.0, 0),
|
||||
(@PATH, 17, -58.3497, -4872.06, 20.4372, 100.0, 0),
|
||||
(@PATH, 18, -55.5972, -4863.78, 20.8662, 100.0, 0),
|
||||
(@PATH, 19, -54.8455, -4852.25, 21.3061, 100.0, 0),
|
||||
(@PATH, 20, -56.5215, -4843.12, 22.1018, 100.0, 0);
|
||||
|
||||
|
||||
/* Razormane Scout - GUID 12316 */
|
||||
|
||||
|
||||
SET @NPC := 12316;
|
||||
SET @PATH := @NPC * 10;
|
||||
|
||||
DELETE FROM `creature_addon` WHERE `guid` = @NPC;
|
||||
INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH);
|
||||
UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `waypoint_data` where `id` = @PATH;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES
|
||||
(@PATH, 1, 124.53, -4582.72, 63.7189, 100.0, 0),
|
||||
(@PATH, 2, 133.618, -4582.61, 63.8564, 100.0, 0),
|
||||
(@PATH, 3, 138.082, -4583.02, 62.9627, 100.0, 0),
|
||||
(@PATH, 4, 141.923, -4585.0, 65.7188, 100.0, 0),
|
||||
(@PATH, 5, 145.08, -4587.58, 64.9695, 100.0, 20000),
|
||||
(@PATH, 6, 141.282, -4584.24, 65.4642, 100.0, 0),
|
||||
(@PATH, 7, 137.239, -4583.36, 62.5436, 100.0, 0),
|
||||
(@PATH, 8, 134.007, -4582.37, 63.8799, 100.0, 0),
|
||||
(@PATH, 9, 123.97, -4582.68, 63.7515, 100.0, 0),
|
||||
(@PATH, 10, 117.123, -4580.07, 62.112, 100.0, 0),
|
||||
(@PATH, 11, 110.209, -4572.99, 57.9044, 100.0, 0),
|
||||
(@PATH, 12, 102.608, -4566.32, 55.3204, 100.0, 20000),
|
||||
(@PATH, 13, 110.348, -4573.89, 58.1059, 100.0, 0),
|
||||
(@PATH, 14, 116.007, -4578.7, 61.2531, 100.0, 0),
|
||||
(@PATH, 15, 121.21, -4582.27, 63.9267, 100.0, 0);
|
||||
|
||||
/* Dire Mottled Boar - GUID 12943 */
|
||||
|
||||
|
||||
SET @NPC := 12943;
|
||||
SET @PATH := @NPC * 10;
|
||||
|
||||
UPDATE `creature` SET `position_x` = -200.386, `position_y` = -4883.89, `position_z` = 27.1407, `orientation` = 3.59203 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `creature_addon` WHERE `guid` = @NPC;
|
||||
INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH);
|
||||
UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `waypoint_data` where `id` = @PATH;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES
|
||||
(@PATH, 1, -200.386, -4883.89, 27.1407, 100.0, 0),
|
||||
(@PATH, 2, -193.105, -4896.78, 25.5057, 100.0, 0),
|
||||
(@PATH, 3, -187.962, -4899.92, 23.7865, 100.0, 0),
|
||||
(@PATH, 4, -182.618, -4903.26, 19.2486, 100.0, 0),
|
||||
(@PATH, 5, -170.129, -4906.9, 19.2486, 100.0, 0),
|
||||
(@PATH, 6, -156.713, -4894.43, 19.5028, 100.0, 0),
|
||||
(@PATH, 7, -146.434, -4884.93, 20.0447, 100.0, 0),
|
||||
(@PATH, 8, -126.3, -4870.36, 21.0744, 100.0, 0),
|
||||
(@PATH, 9, -129.568, -4853.1, 20.1477, 100.0, 0),
|
||||
(@PATH, 10, -117.071, -4842.32, 21.1624, 100.0, 0),
|
||||
(@PATH, 11, -103.254, -4835.31, 23.3766, 100.0, 0),
|
||||
(@PATH, 12, -100.011, -4829.95, 23.8422, 100.0, 0),
|
||||
(@PATH, 13, -105.703, -4815.96, 24.8568, 100.0, 0),
|
||||
(@PATH, 14, -111.89, -4808.07, 25.1118, 100.0, 0),
|
||||
(@PATH, 15, -123.375, -4813.62, 24.5666, 100.0, 0),
|
||||
(@PATH, 16, -146.001, -4825.22, 23.1651, 100.0, 0),
|
||||
(@PATH, 17, -153.565, -4838.05, 21.2692, 100.0, 0),
|
||||
(@PATH, 18, -168.864, -4845.25, 20.7892, 100.0, 0),
|
||||
(@PATH, 19, -182.876, -4852.28, 22.8461, 100.0, 0),
|
||||
(@PATH, 20, -192.274, -4840.5, 25.7954, 100.0, 0),
|
||||
(@PATH, 21, -196.924, -4835.91, 26.8833, 100.0, 0),
|
||||
(@PATH, 22, -201.854, -4832.7, 24.8223, 100.0, 0),
|
||||
(@PATH, 23, -209.203, -4836.12, 24.9899, 100.0, 0),
|
||||
(@PATH, 24, -214.462, -4839.38, 27.5361, 100.0, 0),
|
||||
(@PATH, 25, -223.442, -4846.79, 29.9977, 100.0, 0),
|
||||
(@PATH, 26, -226.932, -4855.15, 31.4781, 100.0, 0),
|
||||
(@PATH, 27, -218.524, -4863.81, 30.614, 100.0, 0),
|
||||
(@PATH, 28, -206.247, -4873.63, 28.7488, 100.0, 0);
|
||||
|
||||
/* Kul Tiras Marine - GUID 12998 */
|
||||
|
||||
|
||||
SET @NPC := 12998;
|
||||
SET @PATH := @NPC * 10;
|
||||
|
||||
UPDATE `creature` SET `position_x` = -230.719, `position_y` = -5125.15, `position_z` = 42.4774, `orientation` = 4.53786 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `creature_addon` WHERE `guid` = @NPC;
|
||||
INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH);
|
||||
UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `waypoint_data` where `id` = @PATH;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES
|
||||
(@PATH, 1, -230.719, -5125.15, 42.4774, 100.0, 0),
|
||||
(@PATH, 2, -230.686, -5131.19, 45.7119, 100.0, 0),
|
||||
(@PATH, 3, -229.064, -5132.69, 45.8029, 100.0, 0),
|
||||
(@PATH, 4, -222.909, -5132.9, 49.2699, 100.0, 0),
|
||||
(@PATH, 5, -221.358, -5132.17, 49.2699, 100.0, 0),
|
||||
(@PATH, 6, -221.043, -5127.19, 49.2699, 100.0, 0),
|
||||
(@PATH, 7, -224.449, -5124.92, 49.2699, 100.0, 0),
|
||||
(@PATH, 8, -225.147, -5115.53, 49.3237, 100.0, 0),
|
||||
(@PATH, 9, -224.832, -5124.48, 49.2703, 100.0, 0),
|
||||
(@PATH, 10, -220.976, -5127.14, 49.2703, 100.0, 0),
|
||||
(@PATH, 11, -221.009, -5131.62, 49.2703, 100.0, 0),
|
||||
(@PATH, 12, -223.324, -5132.8, 49.2703, 100.0, 0),
|
||||
(@PATH, 13, -229.317, -5132.73, 45.712, 100.0, 0),
|
||||
(@PATH, 14, -230.802, -5130.94, 45.712, 100.0, 0),
|
||||
(@PATH, 15, -230.745, -5125.24, 42.477, 100.0, 0),
|
||||
(@PATH, 16, -229.071, -5123.85, 42.477, 100.0, 0),
|
||||
(@PATH, 17, -221.9, -5124.38, 38.2719, 100.0, 0),
|
||||
(@PATH, 18, -220.41, -5126.12, 38.2719, 100.0, 0),
|
||||
(@PATH, 19, -220.741, -5128.71, 38.2719, 100.0, 0),
|
||||
(@PATH, 20, -224.215, -5129.94, 38.2719, 100.0, 0),
|
||||
(@PATH, 21, -231.927, -5129.92, 34.0668, 100.0, 0),
|
||||
(@PATH, 22, -233.333, -5128.56, 34.0668, 100.0, 0),
|
||||
(@PATH, 23, -232.741, -5126.2, 34.0668, 100.0, 0),
|
||||
(@PATH, 24, -229.79, -5125.62, 34.0668, 100.0, 0),
|
||||
(@PATH, 25, -228.711, -5122.72, 34.0653, 100.0, 0),
|
||||
(@PATH, 26, -228.582, -5108.82, 34.0653, 100.0, 0),
|
||||
(@PATH, 27, -228.8, -5098.57, 41.3473, 100.0, 0),
|
||||
(@PATH, 28, -231.072, -5095.27, 41.3473, 100.0, 0),
|
||||
(@PATH, 29, -235.625, -5093.99, 41.3473, 100.0, 0),
|
||||
(@PATH, 30, -252.0, -5094.0, 41.3473, 100.0, 0),
|
||||
(@PATH, 31, -232.244, -5094.07, 41.3473, 100.0, 0),
|
||||
(@PATH, 32, -228.875, -5098.53, 41.3473, 100.0, 0),
|
||||
(@PATH, 33, -228.729, -5108.67, 34.0658, 100.0, 0),
|
||||
(@PATH, 34, -229.067, -5111.95, 34.0658, 100.0, 0),
|
||||
(@PATH, 35, -234.399, -5112.87, 34.0658, 100.0, 0),
|
||||
(@PATH, 36, -252.847, -5113.07, 34.0658, 100.0, 0),
|
||||
(@PATH, 37, -231.446, -5112.98, 34.0658, 100.0, 0),
|
||||
(@PATH, 38, -228.84, -5117.89, 34.0658, 100.0, 0),
|
||||
(@PATH, 39, -228.85, -5124.55, 34.0658, 100.0, 0),
|
||||
(@PATH, 40, -231.059, -5125.75, 34.0658, 100.0, 0),
|
||||
(@PATH, 41, -233.287, -5126.61, 34.0658, 100.0, 0),
|
||||
(@PATH, 42, -233.166, -5129.52, 34.0658, 100.0, 0),
|
||||
(@PATH, 43, -231.672, -5129.95, 34.0669, 100.0, 0),
|
||||
(@PATH, 44, -224.454, -5129.98, 38.2726, 100.0, 0),
|
||||
(@PATH, 45, -221.865, -5129.24, 38.2726, 100.0, 0),
|
||||
(@PATH, 46, -220.17, -5126.07, 38.2726, 100.0, 0),
|
||||
(@PATH, 47, -221.888, -5124.38, 38.2719, 100.0, 0),
|
||||
(@PATH, 48, -229.382, -5123.85, 42.4772, 100.0, 0);
|
||||
|
||||
/* Clattering Scorpid - GUID 13002 */
|
||||
|
||||
|
||||
SET @NPC := 13002;
|
||||
SET @PATH := @NPC * 10;
|
||||
|
||||
UPDATE `creature` SET `position_x` = -327.766, `position_y` = -4760.08, `position_z` = 36.6491, `orientation` = 6.08023 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `creature_addon` WHERE `guid` = @NPC;
|
||||
INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH);
|
||||
UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `waypoint_data` where `id` = @PATH;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES
|
||||
(@PATH, 1, -327.766, -4760.08, 36.6491, 100.0, 0),
|
||||
(@PATH, 2, -307.026, -4757.96, 36.3603, 100.0, 0),
|
||||
(@PATH, 3, -286.811, -4756.11, 34.1922, 100.0, 0),
|
||||
(@PATH, 4, -272.284, -4754.77, 34.1844, 100.0, 0),
|
||||
(@PATH, 5, -265.5, -4753.05, 33.6913, 100.0, 0),
|
||||
(@PATH, 6, -256.536, -4741.59, 32.2737, 100.0, 0),
|
||||
(@PATH, 7, -256.426, -4725.89, 33.2756, 100.0, 0),
|
||||
(@PATH, 8, -257.675, -4709.1, 34.2231, 100.0, 0),
|
||||
(@PATH, 9, -260.288, -4699.09, 37.0144, 100.0, 0),
|
||||
(@PATH, 10, -264.176, -4694.38, 38.3938, 100.0, 0),
|
||||
(@PATH, 11, -269.589, -4690.96, 38.8834, 100.0, 0),
|
||||
(@PATH, 12, -280.665, -4690.68, 39.2254, 100.0, 0),
|
||||
(@PATH, 13, -291.292, -4693.17, 39.4739, 100.0, 0),
|
||||
(@PATH, 14, -303.736, -4689.96, 41.9234, 100.0, 0),
|
||||
(@PATH, 15, -311.884, -4690.42, 41.0454, 100.0, 0),
|
||||
(@PATH, 16, -321.512, -4692.89, 40.3765, 100.0, 0),
|
||||
(@PATH, 17, -337.345, -4696.95, 38.814, 100.0, 0),
|
||||
(@PATH, 18, -347.369, -4707.03, 38.2411, 100.0, 0),
|
||||
(@PATH, 19, -357.466, -4726.06, 38.4795, 100.0, 0),
|
||||
(@PATH, 20, -361.583, -4734.52, 39.4971, 100.0, 0),
|
||||
(@PATH, 21, -366.072, -4742.29, 38.7492, 100.0, 0),
|
||||
(@PATH, 22, -369.61, -4747.54, 40.3396, 100.0, 0),
|
||||
(@PATH, 23, -361.003, -4753.41, 37.5095, 100.0, 0),
|
||||
(@PATH, 24, -345.576, -4759.72, 36.8648, 100.0, 0);
|
||||
|
||||
|
||||
|
||||
/* Hexed Troll - GUID 13026 */
|
||||
|
||||
|
||||
SET @NPC := 13026;
|
||||
SET @PATH := @NPC * 10;
|
||||
|
||||
UPDATE `creature` SET `position_x` = -1138.31, `position_y` = -5597.88, `position_z` = 7.61002, `orientation` = 3.24477 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `creature_addon` WHERE `guid` = @NPC;
|
||||
INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH);
|
||||
UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `waypoint_data` where `id` = @PATH;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES
|
||||
(@PATH, 1, -1138.31, -5597.88, 7.61002, 100.0, 0),
|
||||
(@PATH, 2, -1148.76, -5592.07, 8.36803, 100.0, 0),
|
||||
(@PATH, 3, -1153.21, -5584.65, 8.89221, 100.0, 0),
|
||||
(@PATH, 4, -1161.68, -5573.5, 8.47221, 100.0, 0),
|
||||
(@PATH, 5, -1164.14, -5566.63, 8.27151, 100.0, 0),
|
||||
(@PATH, 6, -1157.9, -5555.72, 7.68995, 100.0, 0),
|
||||
(@PATH, 7, -1153.67, -5550.14, 7.69433, 100.0, 0),
|
||||
(@PATH, 8, -1147.32, -5541.78, 7.18916, 100.0, 0),
|
||||
(@PATH, 9, -1144.69, -5538.37, 7.33432, 100.0, 0),
|
||||
(@PATH, 10, -1137.1, -5531.1, 6.45399, 100.0, 0),
|
||||
(@PATH, 11, -1130.09, -5526.81, 7.79135, 100.0, 0),
|
||||
(@PATH, 12, -1124.47, -5527.46, 8.42845, 100.0, 0),
|
||||
(@PATH, 13, -1115.83, -5535.14, 8.6434, 100.0, 0),
|
||||
(@PATH, 14, -1106.94, -5544.4, 7.6163, 100.0, 0),
|
||||
(@PATH, 15, -1098.62, -5551.2, 9.11498, 100.0, 0),
|
||||
(@PATH, 16, -1098.47, -5559.96, 8.45261, 100.0, 0),
|
||||
(@PATH, 17, -1103.26, -5568.14, 7.54396, 100.0, 0),
|
||||
(@PATH, 18, -1109.9, -5578.23, 7.82146, 100.0, 0),
|
||||
(@PATH, 19, -1117.06, -5586.63, 8.32589, 100.0, 0),
|
||||
(@PATH, 20, -1127.57, -5595.51, 7.71829, 100.0, 0);
|
||||
|
||||
|
||||
/* Vile Familiar - GUID 13062 */
|
||||
|
||||
|
||||
SET @NPC := 13062;
|
||||
SET @PATH := @NPC * 10;
|
||||
|
||||
UPDATE `creature` SET `position_x` = -154.199, `position_y` = -4357.06, `position_z` = 66.8175, `orientation` = 3.49807 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `creature_addon` WHERE `guid` = @NPC;
|
||||
INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH);
|
||||
UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC;
|
||||
|
||||
DELETE FROM `waypoint_data` where `id` = @PATH;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES
|
||||
(@PATH, 1, -154.199, -4357.06, 66.8175, 100.0, 0),
|
||||
(@PATH, 2, -139.779, -4370.04, 66.2358, 100.0, 0),
|
||||
(@PATH, 3, -132.177, -4361.44, 67.0957, 100.0, 0),
|
||||
(@PATH, 4, -129.829, -4346.96, 66.2549, 100.0, 0),
|
||||
(@PATH, 5, -127.669, -4337.69, 64.1934, 100.0, 0),
|
||||
(@PATH, 6, -113.978, -4332.43, 65.8378, 100.0, 0),
|
||||
(@PATH, 7, -95.8724, -4329.41, 64.5048, 100.0, 0),
|
||||
(@PATH, 8, -78.0683, -4330.18, 66.9585, 100.0, 0),
|
||||
(@PATH, 9, -69.2985, -4337.84, 67.894, 100.0, 0),
|
||||
(@PATH, 10, -53.1216, -4331.94, 68.3126, 100.0, 0),
|
||||
(@PATH, 11, -69.2985, -4337.84, 67.894, 100.0, 0),
|
||||
(@PATH, 12, -78.0683, -4330.18, 66.9585, 100.0, 0),
|
||||
(@PATH, 13, -95.8724, -4329.41, 64.5048, 100.0, 0),
|
||||
(@PATH, 14, -113.978, -4332.43, 65.8378, 100.0, 0),
|
||||
(@PATH, 15, -127.627, -4337.51, 64.1911, 100.0, 0),
|
||||
(@PATH, 16, -129.829, -4346.96, 66.2549, 100.0, 0),
|
||||
(@PATH, 17, -132.177, -4361.44, 67.0957, 100.0, 0),
|
||||
(@PATH, 18, -139.779, -4370.04, 66.2358, 100.0, 0),
|
||||
(@PATH, 19, -154.199, -4357.06, 66.8175, 100.0, 0),
|
||||
(@PATH, 20, -162.918, -4360.37, 67.2569, 100.0, 0);
|
||||
23
data/sql/updates/db_world/2022_07_26_06.sql
Normal file
23
data/sql/updates/db_world/2022_07_26_06.sql
Normal file
@@ -0,0 +1,23 @@
|
||||
-- DB update 2022_07_26_05 -> 2022_07_26_06
|
||||
--
|
||||
UPDATE `creature_text` SET `BroadcastTextId` = 1456 WHERE `CreatureID` = 10000 AND `GroupID` = 0;
|
||||
UPDATE `creature_text` SET `BroadcastTextId` = 5680 WHERE `CreatureID` = 10000 AND `GroupID` = 1;
|
||||
UPDATE `creature_text` SET `BroadcastTextId` = 5681 WHERE `CreatureID` = 10000 AND `GroupID` = 2;
|
||||
UPDATE `creature_text` SET `BroadcastTextId` = 5682 WHERE `CreatureID` = 10000 AND `GroupID` = 3;
|
||||
|
||||
-- SFK: Arugal intro script
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid` = 10000 AND `source_type`= 0;
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(10000,0,0,0,60,0,100,1,0,0,0,0,0,47,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,'Arugal - Set Invisible'),
|
||||
(10000,0,1,0,60,0,100,1,5000,5000,0,0,0,47,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,'Arugal - Set Visible'),
|
||||
(10000,0,2,0,60,0,100,1,5000,5000,0,0,0,11,7741,0,0,0,0,0,1,0,0,0,0,0,0,0,0,'Arugal - Cast spell teleport'),
|
||||
(10000,0,3,0,60,0,100,1,7000,7000,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,'Arugal - Say text 0'),
|
||||
(10000,0,4,0,60,0,100,1,7000,7000,0,0,0,5,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,'Arugal - Emote talk'),
|
||||
(10000,0,5,0,60,0,100,1,10000,10000,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,'Arugal - Say text 1'),
|
||||
(10000,0,6,0,60,0,100,1,10000,10000,0,0,0,5,25,0,0,0,0,0,1,0,0,0,0,0,0,0,0,'Arugal - Emote point'),
|
||||
(10000,0,7,0,60,0,100,1,14000,14000,0,0,0,1,2,0,0,0,0,0,1,0,0,0,0,0,0,0,0,'Arugal - Say text 2'),
|
||||
(10000,0,8,0,60,0,100,1,14000,14000,0,0,0,5,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,'Arugal - Emote talk'),
|
||||
(10000,0,9,0,60,0,100,1,16000,16000,0,0,0,5,11,0,0,0,0,0,1,0,0,0,0,0,0,0,0,'Arugal - Emote laught'),
|
||||
(10000,0,10,0,60,0,100,1,19000,19000,0,0,0,1,3,0,0,0,0,0,1,0,0,0,0,0,0,0,0,'Arugal - Say text 3'),
|
||||
(10000,0,11,0,60,0,100,1,21000,21000,0,0,0,11,7741,0,0,0,0,0,1,0,0,0,0,0,0,0,0,'Arugal - Cast spell teleport'),
|
||||
(10000,0,12,0,60,0,100,1,0,0,0,0,0,41,22000,0,0,0,0,0,1,0,0,0,0,0,0,0,0,'Arugal - Despawn');
|
||||
3
data/sql/updates/db_world/2022_07_27_00.sql
Normal file
3
data/sql/updates/db_world/2022_07_27_00.sql
Normal file
@@ -0,0 +1,3 @@
|
||||
-- DB update 2022_07_26_06 -> 2022_07_27_00
|
||||
--
|
||||
UPDATE `creature_template` SET `flags_extra` = `flags_extra`|0x80000000 WHERE `entry` = 15339;
|
||||
8
data/sql/updates/db_world/2022_07_27_01.sql
Normal file
8
data/sql/updates/db_world/2022_07_27_01.sql
Normal file
@@ -0,0 +1,8 @@
|
||||
-- DB update 2022_07_27_00 -> 2022_07_27_01
|
||||
--
|
||||
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 15325;
|
||||
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 15325) AND (`source_type` = 0) AND (`id` IN (0, 1, 2));
|
||||
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`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(15325, 0, 0, 1, 9, 0, 100, 0, 0, 40, 11000, 16000, 0, 11, 25185, 4, 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Hive\'Zara Wasp - Within 0-40 Range - Cast \'Itch\''),
|
||||
(15325, 0, 1, 2, 61, 0, 100, 0, 0, 0, 0, 0, 0, 11, 25185, 4, 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Hive\'Zara Wasp - Within 0-40 Range - Cast \'Itch\''),
|
||||
(15325, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 11, 25185, 4, 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Hive\'Zara Wasp - Within 0-40 Range - Cast \'Itch\'');
|
||||
9
data/sql/updates/db_world/2022_07_27_02.sql
Normal file
9
data/sql/updates/db_world/2022_07_27_02.sql
Normal file
@@ -0,0 +1,9 @@
|
||||
-- DB update 2022_07_27_01 -> 2022_07_27_02
|
||||
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 15338;
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 15338);
|
||||
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`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(15338, 0, 0, 0, 0, 0, 100, 0, 5000, 9000, 8000, 11000, 0, 11, 25756, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Obsidian Destroyer - In Combat - Cast \'Purge\''),
|
||||
(15338, 0, 1, 0, 0, 0, 100, 0, 2000, 4000, 6000, 6000, 0, 11, 25755, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Obsidian Destroyer - In Combat - Cast \'Drain Mana\''),
|
||||
(15338, 0, 2, 0, 6, 0, 100, 0, 0, 0, 0, 0, 0, 11, 27627, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Obsidian Destroyer - On Just Died - Cast \'Serverside - Drop Obsidian\''),
|
||||
(15338, 0, 3, 0, 11, 0, 100, 0, 0, 0, 0, 0, 0, 108, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Obsidian Destroyer - On Respawn - Set Mana To 0'),
|
||||
(15338, 0, 4, 0, 7, 0, 100, 0, 0, 0, 0, 0, 0, 108, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Obsidian Destroyer - On Evade - Set Mana To 0');
|
||||
5
data/sql/updates/db_world/2022_07_27_03.sql
Normal file
5
data/sql/updates/db_world/2022_07_27_03.sql
Normal file
@@ -0,0 +1,5 @@
|
||||
-- DB update 2022_07_27_02 -> 2022_07_27_03
|
||||
--
|
||||
DELETE FROM `spell_bonus_data` WHERE `entry`=22009;
|
||||
INSERT INTO `spell_bonus_data` VALUES
|
||||
(22009,0,0.2,0,0,'Priest - Greater Heal - 8P T2');
|
||||
78
data/sql/updates/db_world/2022_07_27_04.sql
Normal file
78
data/sql/updates/db_world/2022_07_27_04.sql
Normal file
@@ -0,0 +1,78 @@
|
||||
-- DB update 2022_07_27_03 -> 2022_07_27_04
|
||||
DELETE FROM `creature_formations` WHERE `leaderguid` IN (49609, 49059, 51584, 49309, 51350, 51974, 51570, 49793, 49274, 51979, 49290);
|
||||
DELETE FROM `creature_formations` WHERE `leaderguid` = 49065 AND `memberGUID` = 49051;
|
||||
DELETE FROM `creature_formations` WHERE `leaderguid` = 49062 AND `memberGUID` = 49052;
|
||||
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`, `point_1`, `point_2`) VALUES
|
||||
(51584, 51584, 0, 0, 3, 0, 0),
|
||||
(51584, 49801, 0, 0, 3, 0, 0),
|
||||
(51584, 49802, 0, 0, 3, 0, 0),
|
||||
(51584, 49803, 0, 0, 3, 0, 0),
|
||||
(51584, 49804, 0, 0, 3, 0, 0),
|
||||
(51584, 51583, 0, 0, 3, 0, 0),
|
||||
(51584, 49805, 0, 0, 3, 0, 0),
|
||||
(51584, 51582, 0, 0, 3, 0, 0),
|
||||
(49309, 49309, 0, 0, 3, 0, 0),
|
||||
(49309, 49296, 0, 0, 3, 0, 0),
|
||||
(49309, 49297, 0, 0, 3, 0, 0),
|
||||
(49309, 49308, 0, 0, 3, 0, 0),
|
||||
(49309, 49300, 0, 0, 3, 0, 0),
|
||||
(49309, 49307, 0, 0, 3, 0, 0),
|
||||
(49309, 49299, 0, 0, 3, 0, 0),
|
||||
(49309, 49298, 0, 0, 3, 0, 0),
|
||||
(51350, 51350, 0, 0, 3, 0, 0),
|
||||
(51350, 51351, 0, 0, 3, 0, 0),
|
||||
(51350, 49813, 0, 0, 3, 0, 0),
|
||||
(51350, 51352, 0, 0, 3, 0, 0),
|
||||
(51350, 49812, 0, 0, 3, 0, 0),
|
||||
(51350, 49811, 0, 0, 3, 0, 0),
|
||||
(51350, 51349, 0, 0, 3, 0, 0),
|
||||
(51974, 51974, 0, 0, 3, 0, 0),
|
||||
(51974, 51460, 0, 0, 3, 0, 0),
|
||||
(51974, 51983, 0, 0, 3, 0, 0),
|
||||
(51974, 51461, 0, 0, 3, 0, 0),
|
||||
(51570, 51570, 0, 0, 3, 0, 0),
|
||||
(51570, 51967, 0, 0, 3, 0, 0),
|
||||
(51570, 51571, 0, 0, 3, 0, 0),
|
||||
(51570, 51572, 0, 0, 3, 0, 0),
|
||||
(51570, 51968, 0, 0, 3, 0, 0),
|
||||
(51570, 51969, 0, 0, 3, 0, 0),
|
||||
(49793, 49793, 0, 0, 3, 0, 0),
|
||||
(49793, 49796, 0, 0, 3, 0, 0),
|
||||
(49793, 49795, 0, 0, 3, 0, 0),
|
||||
(49793, 49794, 0, 0, 3, 0, 0),
|
||||
(49274, 49274, 0, 0, 3, 0, 0),
|
||||
(49274, 49276, 0, 0, 3, 0, 0),
|
||||
(49274, 51565, 0, 0, 3, 0, 0),
|
||||
(49274, 51564, 0, 0, 3, 0, 0),
|
||||
(49274, 49275, 0, 0, 3, 0, 0),
|
||||
(49274, 51462, 0, 0, 3, 0, 0),
|
||||
(51979, 51979, 0, 0, 3, 0, 0),
|
||||
(51979, 51455, 0, 0, 3, 0, 0),
|
||||
(51979, 51453, 0, 0, 3, 0, 0),
|
||||
(51979, 51454, 0, 0, 3, 0, 0),
|
||||
(51979, 51980, 0, 0, 3, 0, 0),
|
||||
(51979, 51978, 0, 0, 3, 0, 0),
|
||||
(49290, 49290, 0, 0, 3, 0, 0),
|
||||
(49290, 51580, 0, 0, 3, 0, 0),
|
||||
(49290, 49304, 0, 0, 3, 0, 0),
|
||||
(49290, 51581, 0, 0, 3, 0, 0),
|
||||
(49290, 49810, 0, 0, 3, 0, 0),
|
||||
(49290, 49800, 0, 0, 3, 0, 0),
|
||||
(49290, 49291, 0, 0, 3, 0, 0),
|
||||
(49290, 49306, 0, 0, 3, 0, 0),
|
||||
(49290, 49289, 0, 0, 3, 0, 0),
|
||||
(49059, 49059, 0, 0, 3, 0, 0),
|
||||
(49059, 49060, 0, 0, 3, 0, 0),
|
||||
(49059, 49061, 0, 0, 3, 0, 0),
|
||||
(49065, 49051, 0, 0, 3, 0, 0),
|
||||
(49062, 49052, 0, 0, 3, 0, 0),
|
||||
(49609, 49609, 0, 0, 3, 0, 0),
|
||||
(49609, 49574, 0, 0, 3, 0, 0),
|
||||
(49609, 49421, 0, 0, 3, 0, 0),
|
||||
(49609, 49576, 0, 0, 3, 0, 0),
|
||||
(49609, 49402, 0, 0, 3, 0, 0),
|
||||
(49609, 49650, 0, 0, 3, 0, 0),
|
||||
(49609, 49575, 0, 0, 3, 0, 0),
|
||||
(49609, 49573, 0, 0, 3, 0, 0),
|
||||
(49609, 49403, 0, 0, 3, 0, 0),
|
||||
(49609, 49577, 0, 0, 3, 0, 0);
|
||||
@@ -19,33 +19,29 @@
|
||||
#define ACORE_FACTORY_HOLDER
|
||||
|
||||
#include "Define.h"
|
||||
#include "Dynamic/TypeList.h"
|
||||
#include "ObjectRegistry.h"
|
||||
#include "TypeList.h"
|
||||
|
||||
/*
|
||||
* FactoryHolder holds a factory object of a specific type
|
||||
/** FactoryHolder holds a factory object of a specific type
|
||||
*/
|
||||
template<class T, class Key = std::string>
|
||||
template<class T, class O, class Key = std::string>
|
||||
class FactoryHolder
|
||||
{
|
||||
public:
|
||||
typedef ObjectRegistry<FactoryHolder<T, Key >, Key > FactoryHolderRegistry;
|
||||
typedef ObjectRegistry<FactoryHolder<T, O, Key>, Key> FactoryHolderRegistry;
|
||||
|
||||
FactoryHolder(Key k) : i_key(k) { }
|
||||
explicit FactoryHolder(Key const& k) : _key(k) { }
|
||||
virtual ~FactoryHolder() { }
|
||||
inline Key key() const { return i_key; }
|
||||
|
||||
void RegisterSelf(void) { FactoryHolderRegistry::instance()->InsertItem(this, i_key); }
|
||||
void DeregisterSelf(void) { FactoryHolderRegistry::instance()->RemoveItem(this, false); }
|
||||
void RegisterSelf() { FactoryHolderRegistry::instance()->InsertItem(this, _key); }
|
||||
|
||||
/// Abstract Factory create method
|
||||
virtual T* Create(void* data = nullptr) const = 0;
|
||||
virtual T* Create(O* object = nullptr) const = 0;
|
||||
private:
|
||||
Key i_key;
|
||||
Key const _key;
|
||||
};
|
||||
|
||||
/*
|
||||
* Permissible is a classic way of letting the object decide
|
||||
/** Permissible is a classic way of letting the object decide
|
||||
* whether how good they handle things. This is not retricted
|
||||
* to factory selectors.
|
||||
*/
|
||||
@@ -54,7 +50,6 @@ class Permissible
|
||||
{
|
||||
public:
|
||||
virtual ~Permissible() { }
|
||||
virtual int Permit(const T*) const = 0;
|
||||
virtual int32 Permit(T const*) const = 0;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -23,20 +23,23 @@
|
||||
#include <string>
|
||||
#include <unordered_map>
|
||||
#include <vector>
|
||||
#include <memory>
|
||||
|
||||
/** ObjectRegistry holds all registry item of the same type
|
||||
*/
|
||||
template<class T, class Key = std::string>
|
||||
class ObjectRegistry
|
||||
class ObjectRegistry final
|
||||
{
|
||||
public:
|
||||
typedef std::map<Key, T*> RegistryMapType;
|
||||
typedef std::map<Key, std::unique_ptr<T>> RegistryMapType;
|
||||
|
||||
/// Returns a registry item
|
||||
const T* GetRegistryItem(Key key) const
|
||||
T const* GetRegistryItem(Key const& key) const
|
||||
{
|
||||
typename RegistryMapType::const_iterator iter = i_registeredObjects.find(key);
|
||||
return ( iter == i_registeredObjects.end() ? nullptr : iter->second );
|
||||
auto itr = _registeredObjects.find(key);
|
||||
if (itr == _registeredObjects.end())
|
||||
return nullptr;
|
||||
return itr->second.get();
|
||||
}
|
||||
|
||||
static ObjectRegistry<T, Key>* instance()
|
||||
@@ -46,72 +49,40 @@ public:
|
||||
}
|
||||
|
||||
/// Inserts a registry item
|
||||
bool InsertItem(T* obj, Key key, bool override = false)
|
||||
bool InsertItem(T* obj, Key const& key, bool force = false)
|
||||
{
|
||||
typename RegistryMapType::iterator iter = i_registeredObjects.find(key);
|
||||
if ( iter != i_registeredObjects.end() )
|
||||
auto itr = _registeredObjects.find(key);
|
||||
if (itr != _registeredObjects.end())
|
||||
{
|
||||
if ( !override )
|
||||
if (!force)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
delete iter->second;
|
||||
i_registeredObjects.erase(iter);
|
||||
_registeredObjects.erase(itr);
|
||||
}
|
||||
|
||||
i_registeredObjects[key] = obj;
|
||||
_registeredObjects.emplace(std::piecewise_construct, std::forward_as_tuple(key), std::forward_as_tuple(obj));
|
||||
return true;
|
||||
}
|
||||
|
||||
/// Removes a registry item
|
||||
void RemoveItem(Key key, bool delete_object = true)
|
||||
{
|
||||
typename RegistryMapType::iterator iter = i_registeredObjects.find(key);
|
||||
if ( iter != i_registeredObjects.end() )
|
||||
{
|
||||
if ( delete_object )
|
||||
{
|
||||
delete iter->second;
|
||||
}
|
||||
i_registeredObjects.erase(iter);
|
||||
}
|
||||
}
|
||||
|
||||
/// Returns true if registry contains an item
|
||||
bool HasItem(Key key) const
|
||||
bool HasItem(Key const& key) const
|
||||
{
|
||||
return (i_registeredObjects.find(key) != i_registeredObjects.end());
|
||||
}
|
||||
|
||||
/// Inefficiently return a vector of registered items
|
||||
unsigned int GetRegisteredItems(std::vector<Key>& l) const
|
||||
{
|
||||
unsigned int sz = l.size();
|
||||
l.resize(sz + i_registeredObjects.size());
|
||||
for (typename RegistryMapType::const_iterator iter = i_registeredObjects.begin(); iter != i_registeredObjects.end(); ++iter)
|
||||
{
|
||||
l[sz++] = iter->first;
|
||||
}
|
||||
return i_registeredObjects.size();
|
||||
return (_registeredObjects.count(key) > 0);
|
||||
}
|
||||
|
||||
/// Return the map of registered items
|
||||
RegistryMapType const& GetRegisteredItems() const
|
||||
{
|
||||
return i_registeredObjects;
|
||||
return _registeredObjects;
|
||||
}
|
||||
|
||||
ObjectRegistry() { }
|
||||
~ObjectRegistry()
|
||||
{
|
||||
for (typename RegistryMapType::iterator iter = i_registeredObjects.begin(); iter != i_registeredObjects.end(); ++iter)
|
||||
{
|
||||
delete iter->second;
|
||||
}
|
||||
i_registeredObjects.clear();
|
||||
}
|
||||
private:
|
||||
RegistryMapType i_registeredObjects;
|
||||
RegistryMapType _registeredObjects;
|
||||
|
||||
// non instanceable, only static
|
||||
ObjectRegistry() { }
|
||||
~ObjectRegistry() { }
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -231,7 +231,7 @@ private:
|
||||
struct TimeTrackerSmall
|
||||
{
|
||||
public:
|
||||
TimeTrackerSmall(uint32 expiry = 0)
|
||||
TimeTrackerSmall(int32 expiry = 0)
|
||||
: i_expiryTime(expiry)
|
||||
{
|
||||
}
|
||||
@@ -246,7 +246,7 @@ public:
|
||||
return i_expiryTime <= 0;
|
||||
}
|
||||
|
||||
void Reset(uint32 interval)
|
||||
void Reset(int32 interval)
|
||||
{
|
||||
i_expiryTime = interval;
|
||||
}
|
||||
|
||||
@@ -26,11 +26,11 @@
|
||||
// AggressorAI
|
||||
/////////////////
|
||||
|
||||
int AggressorAI::Permissible(Creature const* creature)
|
||||
int32 AggressorAI::Permissible(Creature const* creature)
|
||||
{
|
||||
// have some hostile factions, it will be selected by IsHostileTo check at MoveInLineOfSight
|
||||
if (!creature->IsCivilian() && !creature->IsNeutralToAll())
|
||||
return PERMIT_BASE_PROACTIVE;
|
||||
return PERMIT_BASE_REACTIVE;
|
||||
|
||||
return PERMIT_BASE_NO;
|
||||
}
|
||||
@@ -320,3 +320,11 @@ void VehicleAI::CheckConditions(uint32 diff)
|
||||
else
|
||||
m_ConditionsTimer -= diff;
|
||||
}
|
||||
|
||||
int32 VehicleAI::Permissible(Creature const* creature)
|
||||
{
|
||||
if (creature->IsVehicle())
|
||||
return PERMIT_BASE_SPECIAL;
|
||||
|
||||
return PERMIT_BASE_NO;
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ public:
|
||||
explicit AggressorAI(Creature* c) : CreatureAI(c) {}
|
||||
|
||||
void UpdateAI(uint32) override;
|
||||
static int Permissible(Creature const*);
|
||||
static int32 Permissible(Creature const* creature);
|
||||
};
|
||||
|
||||
typedef std::vector<uint32> SpellVct;
|
||||
@@ -47,7 +47,7 @@ public:
|
||||
void JustDied(Unit* killer) override;
|
||||
void UpdateAI(uint32 diff) override;
|
||||
|
||||
static int Permissible(Creature const* /*creature*/) { return PERMIT_BASE_NO; }
|
||||
static int32 Permissible(Creature const* /*creature*/) { return PERMIT_BASE_NO; }
|
||||
|
||||
protected:
|
||||
EventMap events;
|
||||
@@ -73,7 +73,7 @@ public:
|
||||
void AttackStart(Unit* who) override;
|
||||
void UpdateAI(uint32 diff) override;
|
||||
|
||||
static int Permissible(Creature const* /*creature*/) { return PERMIT_BASE_NO; }
|
||||
static int32 Permissible(Creature const* /*creature*/) { return PERMIT_BASE_NO; }
|
||||
|
||||
protected:
|
||||
float m_minRange;
|
||||
@@ -87,7 +87,7 @@ public:
|
||||
void AttackStart(Unit* who) override;
|
||||
void UpdateAI(uint32 diff) override;
|
||||
|
||||
static int Permissible(Creature const* /*creature*/) { return PERMIT_BASE_NO; }
|
||||
static int32 Permissible(Creature const* /*creature*/) { return PERMIT_BASE_NO; }
|
||||
|
||||
protected:
|
||||
float m_minRange;
|
||||
@@ -105,7 +105,7 @@ public:
|
||||
void AttackStart(Unit*) override {}
|
||||
void OnCharmed(bool apply) override;
|
||||
|
||||
static int Permissible(Creature const* /*creature*/) { return PERMIT_BASE_NO; }
|
||||
static int32 Permissible(Creature const* creature);
|
||||
|
||||
private:
|
||||
void LoadConditions();
|
||||
|
||||
@@ -17,12 +17,15 @@
|
||||
|
||||
#include "GameObjectAI.h"
|
||||
|
||||
//GameObjectAI::GameObjectAI(GameObject* g) : go(g) {}
|
||||
int GameObjectAI::Permissible(GameObject const* go)
|
||||
int32 GameObjectAI::Permissible(GameObject const* /*go*/)
|
||||
{
|
||||
if (go->GetAIName() == "GameObjectAI")
|
||||
return PERMIT_BASE_SPECIAL;
|
||||
return PERMIT_BASE_NO;
|
||||
}
|
||||
|
||||
NullGameObjectAI::NullGameObjectAI(GameObject* g) : GameObjectAI(g) {}
|
||||
NullGameObjectAI::NullGameObjectAI(GameObject* go) : GameObjectAI(go) { }
|
||||
|
||||
int32 NullGameObjectAI::Permissible(GameObject const* /*go*/)
|
||||
{
|
||||
return PERMIT_BASE_IDLE;
|
||||
}
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@ public:
|
||||
virtual void SetGUID(ObjectGuid /*guid*/, int32 /*id = 0 */) {}
|
||||
virtual ObjectGuid GetGUID(int32 /*id = 0 */) const { return ObjectGuid::Empty; }
|
||||
|
||||
static int Permissible(GameObject const* go);
|
||||
static int32 Permissible(GameObject const* go);
|
||||
|
||||
virtual bool GossipHello(Player* /*player*/, bool /*reportUse*/) { return false; }
|
||||
virtual bool GossipSelect(Player* /*player*/, uint32 /*sender*/, uint32 /*action*/) { return false; }
|
||||
@@ -76,6 +76,6 @@ public:
|
||||
|
||||
void UpdateAI(uint32 /*diff*/) override {}
|
||||
|
||||
static int Permissible(GameObject const* /*go*/) { return PERMIT_BASE_IDLE; }
|
||||
static int32 Permissible(GameObject const* go);
|
||||
};
|
||||
#endif
|
||||
|
||||
@@ -19,10 +19,10 @@
|
||||
#include "CreatureAIImpl.h"
|
||||
#include "Player.h"
|
||||
|
||||
int GuardAI::Permissible(Creature const* creature)
|
||||
int32 GuardAI::Permissible(Creature const* creature)
|
||||
{
|
||||
if (creature->IsGuard())
|
||||
return PERMIT_BASE_SPECIAL;
|
||||
return PERMIT_BASE_PROACTIVE;
|
||||
|
||||
return PERMIT_BASE_NO;
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@ class GuardAI : public ScriptedAI
|
||||
public:
|
||||
explicit GuardAI(Creature* creature);
|
||||
|
||||
static int Permissible(Creature const* creature);
|
||||
static int32 Permissible(Creature const* creature);
|
||||
|
||||
void Reset() override;
|
||||
void EnterEvadeMode(EvadeReason /*why*/) override;
|
||||
|
||||
@@ -23,6 +23,17 @@ PassiveAI::PassiveAI(Creature* c) : CreatureAI(c) { me->SetReactState(REACT_PASS
|
||||
PossessedAI::PossessedAI(Creature* c) : CreatureAI(c) { me->SetReactState(REACT_PASSIVE); }
|
||||
NullCreatureAI::NullCreatureAI(Creature* c) : CreatureAI(c) { me->SetReactState(REACT_PASSIVE); }
|
||||
|
||||
int32 NullCreatureAI::Permissible(Creature const* creature)
|
||||
{
|
||||
if (creature->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK))
|
||||
return PERMIT_BASE_PROACTIVE + 50;
|
||||
|
||||
if (creature->IsTrigger())
|
||||
return PERMIT_BASE_REACTIVE;
|
||||
|
||||
return PERMIT_BASE_IDLE;
|
||||
}
|
||||
|
||||
void PassiveAI::UpdateAI(uint32)
|
||||
{
|
||||
if (me->IsInCombat() && me->getAttackers().empty())
|
||||
@@ -84,8 +95,24 @@ void CritterAI::UpdateAI(uint32 diff)
|
||||
}
|
||||
}
|
||||
|
||||
int32 CritterAI::Permissible(Creature const* creature)
|
||||
{
|
||||
if (creature->IsCritter() && !creature->HasUnitTypeMask(UNIT_MASK_GUARDIAN))
|
||||
return PERMIT_BASE_PROACTIVE;
|
||||
|
||||
return PERMIT_BASE_NO;
|
||||
}
|
||||
|
||||
void TriggerAI::IsSummonedBy(Unit* summoner)
|
||||
{
|
||||
if (me->m_spells[0])
|
||||
me->CastSpell(me, me->m_spells[0], false, 0, 0, summoner ? summoner->GetGUID() : ObjectGuid::Empty);
|
||||
}
|
||||
|
||||
int32 TriggerAI::Permissible(Creature const* creature)
|
||||
{
|
||||
if (creature->IsTrigger() && creature->m_spells[0])
|
||||
return PERMIT_BASE_SPECIAL;
|
||||
|
||||
return PERMIT_BASE_NO;
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@ public:
|
||||
void AttackStart(Unit*) override {}
|
||||
void UpdateAI(uint32) override;
|
||||
|
||||
static int Permissible(Creature const*) { return PERMIT_BASE_IDLE; }
|
||||
static int32 Permissible(Creature const* /*creature*/) { return PERMIT_BASE_NO; }
|
||||
};
|
||||
|
||||
class PossessedAI : public CreatureAI
|
||||
@@ -46,7 +46,7 @@ public:
|
||||
void JustDied(Unit*) override;
|
||||
void KilledUnit(Unit* victim) override;
|
||||
|
||||
static int Permissible(Creature const*) { return PERMIT_BASE_IDLE; }
|
||||
static int32 Permissible(Creature const* /*creature*/) { return PERMIT_BASE_NO; }
|
||||
};
|
||||
|
||||
class NullCreatureAI : public CreatureAI
|
||||
@@ -60,7 +60,7 @@ public:
|
||||
void EnterEvadeMode(EvadeReason /*why*/) override {}
|
||||
void OnCharmed(bool /*apply*/) override {}
|
||||
|
||||
static int Permissible(Creature const*) { return PERMIT_BASE_IDLE; }
|
||||
static int32 Permissible(Creature const* creature);
|
||||
};
|
||||
|
||||
class CritterAI : public PassiveAI
|
||||
@@ -72,6 +72,7 @@ public:
|
||||
void EnterEvadeMode(EvadeReason why) override;
|
||||
void UpdateAI(uint32) override;
|
||||
|
||||
static int32 Permissible(Creature const* creature);
|
||||
// Xinef: Added
|
||||
private:
|
||||
uint32 _combatTimer;
|
||||
@@ -82,6 +83,8 @@ class TriggerAI : public NullCreatureAI
|
||||
public:
|
||||
explicit TriggerAI(Creature* c) : NullCreatureAI(c) {}
|
||||
void IsSummonedBy(Unit* summoner) override;
|
||||
|
||||
static int32 Permissible(Creature const* creature);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -28,10 +28,14 @@
|
||||
#include "SpellMgr.h"
|
||||
#include "Util.h"
|
||||
|
||||
int PetAI::Permissible(Creature const* creature)
|
||||
int32 PetAI::Permissible(Creature const* creature)
|
||||
{
|
||||
if (creature->IsPet())
|
||||
return PERMIT_BASE_SPECIAL;
|
||||
if (creature->HasUnitTypeMask(UNIT_MASK_CONTROLABLE_GUARDIAN))
|
||||
{
|
||||
if (reinterpret_cast<Guardian const*>(creature)->GetOwner()->GetTypeId() == TYPEID_PLAYER)
|
||||
return PERMIT_BASE_PROACTIVE;
|
||||
return PERMIT_BASE_REACTIVE;
|
||||
}
|
||||
|
||||
return PERMIT_BASE_NO;
|
||||
}
|
||||
|
||||
@@ -49,7 +49,7 @@ public:
|
||||
explicit PetAI(Creature* c);
|
||||
|
||||
void UpdateAI(uint32) override;
|
||||
static int Permissible(Creature const*);
|
||||
static int32 Permissible(Creature const* creature);
|
||||
|
||||
void KilledUnit(Unit* /*victim*/) override;
|
||||
void AttackStart(Unit* target) override;
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
#include "CreatureAIImpl.h"
|
||||
#include "Errors.h"
|
||||
|
||||
int ReactorAI::Permissible(Creature const* creature)
|
||||
int32 ReactorAI::Permissible(Creature const* creature)
|
||||
{
|
||||
if (creature->IsCivilian() || creature->IsNeutralToAll())
|
||||
return PERMIT_BASE_REACTIVE;
|
||||
|
||||
@@ -30,6 +30,6 @@ public:
|
||||
void MoveInLineOfSight(Unit*) override {}
|
||||
void UpdateAI(uint32 diff) override;
|
||||
|
||||
static int Permissible(Creature const*);
|
||||
static int32 Permissible(Creature const* creature);
|
||||
};
|
||||
#endif
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
#include "SpellMgr.h"
|
||||
#include "Totem.h"
|
||||
|
||||
int TotemAI::Permissible(Creature const* creature)
|
||||
int32 TotemAI::Permissible(Creature const* creature)
|
||||
{
|
||||
if (creature->IsTotem())
|
||||
return PERMIT_BASE_PROACTIVE;
|
||||
|
||||
@@ -38,7 +38,7 @@ public:
|
||||
void DoAction(int32 param) override;
|
||||
|
||||
void UpdateAI(uint32 diff) override;
|
||||
static int Permissible(Creature const* creature);
|
||||
static int32 Permissible(Creature const* creature);
|
||||
|
||||
private:
|
||||
ObjectGuid i_victimGuid;
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
#include "Vehicle.h"
|
||||
#include "ScriptMgr.h"
|
||||
#include "Language.h"
|
||||
#include "ZoneScript.h"
|
||||
|
||||
class PhasedRespawn : public BasicEvent
|
||||
{
|
||||
@@ -306,7 +307,10 @@ bool CreatureAI::_EnterEvadeMode(EvadeReason /*why*/)
|
||||
me->SetLootRecipient(nullptr);
|
||||
me->ResetPlayerDamageReq();
|
||||
me->SetLastDamagedTime(0);
|
||||
me->SetCannotReachTarget(false);
|
||||
me->SetCannotReachTarget();
|
||||
|
||||
if (ZoneScript* zoneScript = me->GetZoneScript() ? me->GetZoneScript() : (ZoneScript*)me->GetInstanceScript())
|
||||
zoneScript->OnCreatureEvade(me);
|
||||
|
||||
if (me->IsInEvadeMode())
|
||||
{
|
||||
|
||||
@@ -88,6 +88,7 @@ public:
|
||||
EVADE_REASON_NO_HOSTILES, // the creature's threat list is empty
|
||||
EVADE_REASON_BOUNDARY, // the creature has moved outside its evade boundary
|
||||
EVADE_REASON_SEQUENCE_BREAK, // this is a boss and the pre-requisite encounters for engaging it are not defeated yet
|
||||
EVADE_REASON_NO_PATH, // the creature was unable to reach its target for over 5 seconds
|
||||
EVADE_REASON_OTHER
|
||||
};
|
||||
|
||||
@@ -210,6 +211,8 @@ public:
|
||||
|
||||
virtual void CalculateThreat(Unit* /*hatedUnit*/, float& /*threat*/, SpellInfo const* /*threatSpell*/) { }
|
||||
|
||||
virtual bool OnTeleportUnreacheablePlayer(Player* /*player*/) { return false; }
|
||||
|
||||
protected:
|
||||
virtual void MoveInLineOfSight(Unit* /*who*/);
|
||||
|
||||
@@ -222,7 +225,7 @@ private:
|
||||
bool m_MoveInLineOfSight_locked;
|
||||
};
|
||||
|
||||
enum Permitions
|
||||
enum Permitions : int32
|
||||
{
|
||||
PERMIT_BASE_NO = -1,
|
||||
PERMIT_BASE_IDLE = 1,
|
||||
|
||||
@@ -19,60 +19,32 @@
|
||||
#define ACORE_CREATUREAIFACTORY_H
|
||||
|
||||
#include "FactoryHolder.h"
|
||||
#include "GameObjectAI.h"
|
||||
#include "ObjectRegistry.h"
|
||||
|
||||
struct SelectableAI : public FactoryHolder<CreatureAI>, public Permissible<Creature>
|
||||
typedef FactoryHolder<CreatureAI, Creature> CreatureAICreator;
|
||||
|
||||
struct SelectableAI : public CreatureAICreator, public Permissible<Creature>
|
||||
{
|
||||
SelectableAI(const char* id) : FactoryHolder<CreatureAI>(id) {}
|
||||
SelectableAI(std::string const& name) : CreatureAICreator(name), Permissible<Creature>() { }
|
||||
};
|
||||
|
||||
template<class REAL_AI>
|
||||
struct CreatureAIFactory : public SelectableAI
|
||||
{
|
||||
CreatureAIFactory(const char* name) : SelectableAI(name) {}
|
||||
CreatureAIFactory(std::string const& name) : SelectableAI(name) { }
|
||||
|
||||
CreatureAI* Create(void*) const;
|
||||
inline CreatureAI* Create(Creature* c) const override
|
||||
{
|
||||
return new REAL_AI(c);
|
||||
}
|
||||
|
||||
int Permit(Creature const* c) const { return REAL_AI::Permissible(c); }
|
||||
int32 Permit(Creature const* c) const override
|
||||
{
|
||||
return REAL_AI::Permissible(c);
|
||||
}
|
||||
};
|
||||
|
||||
template<class REAL_AI>
|
||||
inline CreatureAI*
|
||||
CreatureAIFactory<REAL_AI>::Create(void* data) const
|
||||
{
|
||||
Creature* creature = reinterpret_cast<Creature*>(data);
|
||||
return (new REAL_AI(creature));
|
||||
}
|
||||
|
||||
typedef FactoryHolder<CreatureAI> CreatureAICreator;
|
||||
typedef FactoryHolder<CreatureAI>::FactoryHolderRegistry CreatureAIRegistry;
|
||||
|
||||
//GO
|
||||
struct SelectableGameObjectAI : public FactoryHolder<GameObjectAI>, public Permissible<GameObject>
|
||||
{
|
||||
SelectableGameObjectAI(const char* id) : FactoryHolder<GameObjectAI>(id) {}
|
||||
};
|
||||
|
||||
template<class REAL_GO_AI>
|
||||
struct GameObjectAIFactory : public SelectableGameObjectAI
|
||||
{
|
||||
GameObjectAIFactory(const char* name) : SelectableGameObjectAI(name) {}
|
||||
|
||||
GameObjectAI* Create(void*) const;
|
||||
|
||||
int Permit(GameObject const* g) const { return REAL_GO_AI::Permissible(g); }
|
||||
};
|
||||
|
||||
template<class REAL_GO_AI>
|
||||
inline GameObjectAI*
|
||||
GameObjectAIFactory<REAL_GO_AI>::Create(void* data) const
|
||||
{
|
||||
GameObject* go = reinterpret_cast<GameObject*>(data);
|
||||
return (new REAL_GO_AI(go));
|
||||
}
|
||||
|
||||
typedef FactoryHolder<GameObjectAI> GameObjectAICreator;
|
||||
typedef FactoryHolder<GameObjectAI>::FactoryHolderRegistry GameObjectAIRegistry;
|
||||
typedef CreatureAICreator::FactoryHolderRegistry CreatureAIRegistry;
|
||||
#define sCreatureAIRegistry CreatureAIRegistry::instance()
|
||||
|
||||
#endif
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
#include "CombatAI.h"
|
||||
#include "CreatureAIFactory.h"
|
||||
#include "GuardAI.h"
|
||||
#include "MovementGeneratorImpl.h"
|
||||
#include "MovementGenerator.h"
|
||||
#include "PassiveAI.h"
|
||||
#include "PetAI.h"
|
||||
#include "RandomMovementGenerator.h"
|
||||
@@ -27,6 +27,7 @@
|
||||
#include "SmartAI.h"
|
||||
#include "TotemAI.h"
|
||||
#include "WaypointMovementGenerator.h"
|
||||
#include "GameObjectAIFactory.h"
|
||||
|
||||
namespace AIRegistry
|
||||
{
|
||||
@@ -47,10 +48,12 @@ namespace AIRegistry
|
||||
(new CreatureAIFactory<VehicleAI>("VehicleAI"))->RegisterSelf();
|
||||
(new CreatureAIFactory<SmartAI>("SmartAI"))->RegisterSelf();
|
||||
|
||||
(new GameObjectAIFactory<NullGameObjectAI>("NullGameObjectAI"))->RegisterSelf();
|
||||
(new GameObjectAIFactory<GameObjectAI>("GameObjectAI"))->RegisterSelf();
|
||||
(new GameObjectAIFactory<SmartGameObjectAI>("SmartGameObjectAI"))->RegisterSelf();
|
||||
|
||||
(new MovementGeneratorFactory<RandomMovementGenerator<Creature> >(RANDOM_MOTION_TYPE))->RegisterSelf();
|
||||
(new MovementGeneratorFactory<WaypointMovementGenerator<Creature> >(WAYPOINT_MOTION_TYPE))->RegisterSelf();
|
||||
(new IdleMovementFactory())->RegisterSelf();
|
||||
(new MovementGeneratorFactory<RandomMovementGenerator<Creature>>(RANDOM_MOTION_TYPE))->RegisterSelf();
|
||||
(new MovementGeneratorFactory<WaypointMovementGenerator<Creature>>(WAYPOINT_MOTION_TYPE))->RegisterSelf();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,132 +15,97 @@
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "CreatureAISelector.h"
|
||||
#include "Creature.h"
|
||||
#include "CreatureAISelector.h"
|
||||
#include "CreatureAIFactory.h"
|
||||
|
||||
#include "MovementGenerator.h"
|
||||
#include "PassiveAI.h"
|
||||
#include "Pet.h"
|
||||
|
||||
#include "GameObject.h"
|
||||
#include "GameObjectAIFactory.h"
|
||||
|
||||
#include "ScriptMgr.h"
|
||||
#include "TemporarySummon.h"
|
||||
|
||||
namespace FactorySelector
|
||||
{
|
||||
CreatureAI* selectAI(Creature* creature)
|
||||
template <class T, class Value>
|
||||
inline int32 GetPermitFor(T const* obj, Value const& value)
|
||||
{
|
||||
const CreatureAICreator* ai_factory = nullptr;
|
||||
CreatureAIRegistry& ai_registry(*CreatureAIRegistry::instance());
|
||||
|
||||
// xinef: if we have controlable guardian, define petai for players as they can steer him, otherwise db / normal ai
|
||||
// xinef: dont remember why i changed this qq commented out as may break some quests
|
||||
if (creature->IsPet()/* || (creature->HasUnitTypeMask(UNIT_MASK_CONTROLABLE_GUARDIAN) && ((Guardian*)creature)->GetOwner()->GetTypeId() == TYPEID_PLAYER)*/)
|
||||
ai_factory = ai_registry.GetRegistryItem("PetAI");
|
||||
|
||||
//scriptname in db
|
||||
if (!ai_factory)
|
||||
if (CreatureAI* scriptedAI = sScriptMgr->GetCreatureAI(creature))
|
||||
return scriptedAI;
|
||||
|
||||
// AIname in db
|
||||
std::string ainame = creature->GetAIName();
|
||||
if (!ai_factory && !ainame.empty())
|
||||
ai_factory = ai_registry.GetRegistryItem(ainame);
|
||||
|
||||
// select by NPC flags
|
||||
if (!ai_factory)
|
||||
{
|
||||
if (creature->IsVehicle())
|
||||
ai_factory = ai_registry.GetRegistryItem("VehicleAI");
|
||||
else if (creature->HasUnitTypeMask(UNIT_MASK_CONTROLABLE_GUARDIAN) && ((Guardian*)creature)->GetOwner()->GetTypeId() == TYPEID_PLAYER)
|
||||
ai_factory = ai_registry.GetRegistryItem("PetAI");
|
||||
else if (creature->HasNpcFlag(UNIT_NPC_FLAG_SPELLCLICK))
|
||||
ai_factory = ai_registry.GetRegistryItem("NullCreatureAI");
|
||||
else if (creature->IsGuard())
|
||||
ai_factory = ai_registry.GetRegistryItem("GuardAI");
|
||||
else if (creature->HasUnitTypeMask(UNIT_MASK_CONTROLABLE_GUARDIAN))
|
||||
ai_factory = ai_registry.GetRegistryItem("PetAI");
|
||||
else if (creature->IsTotem())
|
||||
ai_factory = ai_registry.GetRegistryItem("TotemAI");
|
||||
else if (creature->IsTrigger())
|
||||
{
|
||||
if (creature->m_spells[0])
|
||||
ai_factory = ai_registry.GetRegistryItem("TriggerAI");
|
||||
else
|
||||
ai_factory = ai_registry.GetRegistryItem("NullCreatureAI");
|
||||
}
|
||||
else if (creature->IsCritter() && !creature->HasUnitTypeMask(UNIT_MASK_GUARDIAN))
|
||||
ai_factory = ai_registry.GetRegistryItem("CritterAI");
|
||||
}
|
||||
|
||||
// select by permit check
|
||||
if (!ai_factory)
|
||||
{
|
||||
int best_val = -1;
|
||||
typedef CreatureAIRegistry::RegistryMapType RMT;
|
||||
RMT const& l = ai_registry.GetRegisteredItems();
|
||||
for (RMT::const_iterator iter = l.begin(); iter != l.end(); ++iter)
|
||||
{
|
||||
const CreatureAICreator* factory = iter->second;
|
||||
const SelectableAI* p = dynamic_cast<const SelectableAI*>(factory);
|
||||
ASSERT(p);
|
||||
int val = p->Permit(creature);
|
||||
if (val > best_val)
|
||||
{
|
||||
best_val = val;
|
||||
ai_factory = p;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// select NullCreatureAI if not another cases
|
||||
ainame = (!ai_factory) ? "NullCreatureAI" : ai_factory->key();
|
||||
LOG_DEBUG("scripts.ai", "Creature {} used AI is {}.", creature->GetGUID().ToString(), ainame);
|
||||
return (!ai_factory ? new NullCreatureAI(creature) : ai_factory->Create(creature));
|
||||
Permissible<T> const* const p = ASSERT_NOTNULL(dynamic_cast<Permissible<T> const*>(value.second.get()));
|
||||
return p->Permit(obj);
|
||||
}
|
||||
|
||||
MovementGenerator* selectMovementGenerator(Creature* creature)
|
||||
template <class T>
|
||||
struct PermissibleOrderPred
|
||||
{
|
||||
MovementGeneratorRegistry& mv_registry(*MovementGeneratorRegistry::instance());
|
||||
ASSERT(creature->GetCreatureTemplate());
|
||||
const MovementGeneratorCreator* mv_factory = mv_registry.GetRegistryItem(creature->GetDefaultMovementType());
|
||||
public:
|
||||
PermissibleOrderPred(T const* obj) : _obj(obj) { }
|
||||
|
||||
/* if (mv_factory == nullptr)
|
||||
template <class Value>
|
||||
bool operator()(Value const& left, Value const& right) const
|
||||
{
|
||||
int best_val = -1;
|
||||
std::vector<std::string> l;
|
||||
mv_registry.GetRegisteredItems(l);
|
||||
for (std::vector<std::string>::iterator iter = l.begin(); iter != l.end(); ++iter)
|
||||
{
|
||||
const MovementGeneratorCreator *factory = mv_registry.GetRegistryItem((*iter).c_str());
|
||||
const SelectableMovement *p = dynamic_cast<const SelectableMovement *>(factory);
|
||||
ASSERT(p != nullptr);
|
||||
int val = p->Permit(creature);
|
||||
if (val > best_val)
|
||||
{
|
||||
best_val = val;
|
||||
mv_factory = p;
|
||||
}
|
||||
}
|
||||
}*/
|
||||
return GetPermitFor(_obj, left) < GetPermitFor(_obj, right);
|
||||
}
|
||||
|
||||
return (!mv_factory ? nullptr : mv_factory->Create(creature));
|
||||
private:
|
||||
T const* const _obj;
|
||||
};
|
||||
|
||||
template <class AI, class T>
|
||||
inline FactoryHolder<AI, T> const* SelectFactory(T* obj)
|
||||
{
|
||||
static_assert(std::is_same<AI, CreatureAI>::value || std::is_same<AI, GameObjectAI>::value, "Invalid template parameter");
|
||||
static_assert(std::is_same<AI, CreatureAI>::value == std::is_same<T, Creature>::value, "Incompatible AI for type");
|
||||
static_assert(std::is_same<AI, GameObjectAI>::value == std::is_same<T, GameObject>::value, "Incompatible AI for type");
|
||||
|
||||
using AIRegistry = typename FactoryHolder<AI, T>::FactoryHolderRegistry;
|
||||
|
||||
// AIName in db
|
||||
std::string const& aiName = obj->GetAIName();
|
||||
if (!aiName.empty())
|
||||
return AIRegistry::instance()->GetRegistryItem(aiName);
|
||||
|
||||
// select by permit check
|
||||
typename AIRegistry::RegistryMapType const& items = AIRegistry::instance()->GetRegisteredItems();
|
||||
auto itr = std::max_element(items.begin(), items.end(), PermissibleOrderPred<T>(obj));
|
||||
if (itr != items.end() && GetPermitFor(obj, *itr) >= 0)
|
||||
return itr->second.get();
|
||||
|
||||
// should _never_ happen, Null AI types defined as PERMIT_BASE_IDLE, it must've been found
|
||||
ABORT();
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
CreatureAI* SelectAI(Creature* creature)
|
||||
{
|
||||
// special pet case, if a tamed creature uses AIName (example SmartAI) we need to override it
|
||||
if (creature->IsPet())
|
||||
return ASSERT_NOTNULL(sCreatureAIRegistry->GetRegistryItem("PetAI"))->Create(creature);
|
||||
|
||||
// scriptname in db
|
||||
if (CreatureAI* scriptedAI = sScriptMgr->GetCreatureAI(creature))
|
||||
return scriptedAI;
|
||||
|
||||
return SelectFactory<CreatureAI>(creature)->Create(creature);
|
||||
}
|
||||
|
||||
MovementGenerator* SelectMovementGenerator(Unit* unit)
|
||||
{
|
||||
MovementGeneratorType type = IDLE_MOTION_TYPE;
|
||||
if (Creature* creature = unit->ToCreature())
|
||||
if (!creature->GetCharmerOrOwnerPlayerOrPlayerItself())
|
||||
type = creature->GetDefaultMovementType();
|
||||
|
||||
MovementGeneratorCreator const* mv_factory = sMovementGeneratorRegistry->GetRegistryItem(type);
|
||||
return ASSERT_NOTNULL(mv_factory)->Create(unit);
|
||||
}
|
||||
|
||||
GameObjectAI* SelectGameObjectAI(GameObject* go)
|
||||
{
|
||||
const GameObjectAICreator* ai_factory = nullptr;
|
||||
GameObjectAIRegistry& ai_registry(*GameObjectAIRegistry::instance());
|
||||
|
||||
// scriptname in db
|
||||
if (GameObjectAI* scriptedAI = sScriptMgr->GetGameObjectAI(go))
|
||||
return scriptedAI;
|
||||
|
||||
ai_factory = ai_registry.GetRegistryItem(go->GetAIName());
|
||||
|
||||
//future goAI types go here
|
||||
|
||||
std::string ainame = (!ai_factory || go->GetScriptId()) ? "NullGameObjectAI" : ai_factory->key();
|
||||
LOG_DEBUG("scripts.ai", "GameObject {} used AI is {}.", go->GetGUID().ToString(), ainame);
|
||||
|
||||
return (!ai_factory ? new NullGameObjectAI(go) : ai_factory->Create(go));
|
||||
return SelectFactory<GameObjectAI>(go)->Create(go);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,13 +21,14 @@
|
||||
class CreatureAI;
|
||||
class Creature;
|
||||
class MovementGenerator;
|
||||
class Unit;
|
||||
class GameObjectAI;
|
||||
class GameObject;
|
||||
|
||||
namespace FactorySelector
|
||||
{
|
||||
CreatureAI* selectAI(Creature*);
|
||||
MovementGenerator* selectMovementGenerator(Creature*);
|
||||
GameObjectAI* SelectGameObjectAI(GameObject*);
|
||||
AC_GAME_API CreatureAI* SelectAI(Creature* creature);
|
||||
AC_GAME_API MovementGenerator* SelectMovementGenerator(Unit* unit);
|
||||
AC_GAME_API GameObjectAI* SelectGameObjectAI(GameObject* go);
|
||||
}
|
||||
#endif
|
||||
|
||||
51
src/server/game/AI/GameObjectAIFactory.h
Normal file
51
src/server/game/AI/GameObjectAIFactory.h
Normal file
@@ -0,0 +1,51 @@
|
||||
/*
|
||||
* This file is part of the AzerothCore Project. See AUTHORS file for Copyright information
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU Affero General Public License as published by the
|
||||
* Free Software Foundation; either version 3 of the License, or (at your
|
||||
* option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef ACORE_GAMEOBJECTAIFACTORY_H
|
||||
#define ACORE_GAMEOBJECTAIFACTORY_H
|
||||
|
||||
#include "ObjectRegistry.h"
|
||||
#include "FactoryHolder.h"
|
||||
|
||||
typedef FactoryHolder<GameObjectAI, GameObject> GameObjectAICreator;
|
||||
|
||||
struct SelectableGameObjectAI : public GameObjectAICreator, public Permissible<GameObject>
|
||||
{
|
||||
SelectableGameObjectAI(std::string const& name) : GameObjectAICreator(name), Permissible<GameObject>() { }
|
||||
};
|
||||
|
||||
template<class REAL_GO_AI>
|
||||
struct GameObjectAIFactory : public SelectableGameObjectAI
|
||||
{
|
||||
GameObjectAIFactory(std::string const& name) : SelectableGameObjectAI(name) { }
|
||||
|
||||
GameObjectAI* Create(GameObject* go) const override
|
||||
{
|
||||
return new REAL_GO_AI(go);
|
||||
}
|
||||
|
||||
int32 Permit(GameObject const* go) const override
|
||||
{
|
||||
return REAL_GO_AI::Permissible(go);
|
||||
}
|
||||
};
|
||||
|
||||
typedef GameObjectAICreator::FactoryHolderRegistry GameObjectAIRegistry;
|
||||
|
||||
#define sGameObjectAIRegistry GameObjectAIRegistry::instance()
|
||||
|
||||
#endif
|
||||
@@ -297,12 +297,12 @@ void SmartAI::EndPath(bool fail)
|
||||
mEscortNPCFlags = 0;
|
||||
}
|
||||
|
||||
ObjectList* targets = GetScript()->GetTargetList(SMART_ESCORT_TARGETS);
|
||||
ObjectVector const* targets = GetScript()->GetStoredTargetVector(SMART_ESCORT_TARGETS, *me);
|
||||
if (targets && mEscortQuestID)
|
||||
{
|
||||
if (targets->size() == 1 && GetScript()->IsPlayer((*targets->begin())))
|
||||
{
|
||||
Player* player = (*targets->begin())->ToPlayer();
|
||||
Player* player = targets->front()->ToPlayer();
|
||||
if (Group* group = player->GetGroup())
|
||||
{
|
||||
for (GroupReference* groupRef = group->GetFirstMember(); groupRef != nullptr; groupRef = groupRef->next())
|
||||
@@ -327,11 +327,11 @@ void SmartAI::EndPath(bool fail)
|
||||
}
|
||||
else
|
||||
{
|
||||
for (ObjectList::iterator iter = targets->begin(); iter != targets->end(); ++iter)
|
||||
for (WorldObject* target : *targets)
|
||||
{
|
||||
if (GetScript()->IsPlayer((*iter)))
|
||||
if (GetScript()->IsPlayer(target))
|
||||
{
|
||||
Player* player = (*iter)->ToPlayer();
|
||||
Player* player = target->ToPlayer();
|
||||
if (!fail && player->IsAtGroupRewardDistance(me) && !player->HasCorpse())
|
||||
player->AreaExploredOrEventHappens(mEscortQuestID);
|
||||
else if (fail && player->GetQuestStatus(mEscortQuestID) == QUEST_STATUS_INCOMPLETE)
|
||||
@@ -535,8 +535,7 @@ void SmartAI::UpdateAI(uint32 diff)
|
||||
|
||||
bool SmartAI::IsEscortInvokerInRange()
|
||||
{
|
||||
ObjectList* targets = GetScript()->GetTargetList(SMART_ESCORT_TARGETS);
|
||||
if (targets)
|
||||
if (ObjectVector const* targets = GetScript()->GetStoredTargetVector(SMART_ESCORT_TARGETS, *me))
|
||||
{
|
||||
float checkDist = me->GetInstanceScript() ? SMART_ESCORT_MAX_PLAYER_DIST * 2 : SMART_ESCORT_MAX_PLAYER_DIST;
|
||||
if (targets->size() == 1 && GetScript()->IsPlayer((*targets->begin())))
|
||||
@@ -558,11 +557,11 @@ bool SmartAI::IsEscortInvokerInRange()
|
||||
}
|
||||
else
|
||||
{
|
||||
for (ObjectList::iterator iter = targets->begin(); iter != targets->end(); ++iter)
|
||||
for (WorldObject* target : *targets)
|
||||
{
|
||||
if (GetScript()->IsPlayer((*iter)))
|
||||
if (GetScript()->IsPlayer(target))
|
||||
{
|
||||
if (me->GetDistance((*iter)->ToPlayer()) <= checkDist)
|
||||
if (me->GetDistance(target->ToPlayer()) <= checkDist)
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -763,13 +762,6 @@ void SmartAI::JustRespawned()
|
||||
mFollowArrivedAlive = true;
|
||||
}
|
||||
|
||||
int SmartAI::Permissible(Creature const* creature)
|
||||
{
|
||||
if (creature->GetAIName() == "SmartAI")
|
||||
return PERMIT_BASE_SPECIAL;
|
||||
return PERMIT_BASE_NO;
|
||||
}
|
||||
|
||||
void SmartAI::JustReachedHome()
|
||||
{
|
||||
GetScript()->OnReset();
|
||||
@@ -1133,13 +1125,6 @@ void SmartGameObjectAI::SummonedCreatureDies(Creature* summon, Unit* /*killer*/)
|
||||
GetScript()->ProcessEventsFor(SMART_EVENT_SUMMONED_UNIT_DIES, summon);
|
||||
}
|
||||
|
||||
int SmartGameObjectAI::Permissible(GameObject const* g)
|
||||
{
|
||||
if (g->GetAIName() == "SmartGameObjectAI")
|
||||
return PERMIT_BASE_SPECIAL;
|
||||
return PERMIT_BASE_NO;
|
||||
}
|
||||
|
||||
void SmartGameObjectAI::UpdateAI(uint32 diff)
|
||||
{
|
||||
GetScript()->OnUpdate(diff);
|
||||
|
||||
@@ -164,7 +164,7 @@ public:
|
||||
ObjectGuid GetGUID(int32 id = 0) const override;
|
||||
|
||||
//core related
|
||||
static int32 Permissible(Creature const*);
|
||||
static int32 Permissible(Creature const* /*creature*/) { return PERMIT_BASE_NO; }
|
||||
|
||||
// Called at movepoint reached
|
||||
void MovepointReached(uint32 id);
|
||||
@@ -259,7 +259,7 @@ public:
|
||||
void InitializeAI() override;
|
||||
void Reset() override;
|
||||
SmartScript* GetScript() { return &mScript; }
|
||||
static int32 Permissible(GameObject const* g);
|
||||
static int32 Permissible(GameObject const* /*go*/) { return PERMIT_BASE_NO; }
|
||||
|
||||
bool GossipHello(Player* player, bool reportUse) override;
|
||||
bool GossipSelect(Player* player, uint32 sender, uint32 action) override;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -39,19 +39,19 @@ public:
|
||||
void ProcessEventsFor(SMART_EVENT e, Unit* unit = nullptr, uint32 var0 = 0, uint32 var1 = 0, bool bvar = false, SpellInfo const* spell = nullptr, GameObject* gob = nullptr);
|
||||
void ProcessEvent(SmartScriptHolder& e, Unit* unit = nullptr, uint32 var0 = 0, uint32 var1 = 0, bool bvar = false, SpellInfo const* spell = nullptr, GameObject* gob = nullptr);
|
||||
bool CheckTimer(SmartScriptHolder const& e) const;
|
||||
void RecalcTimer(SmartScriptHolder& e, uint32 min, uint32 max);
|
||||
static void RecalcTimer(SmartScriptHolder& e, uint32 min, uint32 max);
|
||||
void UpdateTimer(SmartScriptHolder& e, uint32 const diff);
|
||||
void InitTimer(SmartScriptHolder& e);
|
||||
static void InitTimer(SmartScriptHolder& e);
|
||||
void ProcessAction(SmartScriptHolder& e, Unit* unit = nullptr, uint32 var0 = 0, uint32 var1 = 0, bool bvar = false, SpellInfo const* spell = nullptr, GameObject* gob = nullptr);
|
||||
void ProcessTimedAction(SmartScriptHolder& e, uint32 const& min, uint32 const& max, Unit* unit = nullptr, uint32 var0 = 0, uint32 var1 = 0, bool bvar = false, SpellInfo const* spell = nullptr, GameObject* gob = nullptr);
|
||||
ObjectList* GetTargets(SmartScriptHolder const& e, Unit* invoker = nullptr);
|
||||
ObjectList* GetWorldObjectsInDist(float dist);
|
||||
void GetTargets(ObjectVector& targets, SmartScriptHolder const& e, Unit* invoker = nullptr) const;
|
||||
void GetWorldObjectsInDist(ObjectVector& objects, float dist) const;
|
||||
void InstallTemplate(SmartScriptHolder const& e);
|
||||
SmartScriptHolder CreateSmartEvent(SMART_EVENT e, uint32 event_flags, uint32 event_param1, uint32 event_param2, uint32 event_param3, uint32 event_param4, uint32 event_param5, SMART_ACTION action, uint32 action_param1, uint32 action_param2, uint32 action_param3, uint32 action_param4, uint32 action_param5, uint32 action_param6, SMARTAI_TARGETS t, uint32 target_param1, uint32 target_param2, uint32 target_param3, uint32 target_param4, uint32 phaseMask);
|
||||
static SmartScriptHolder CreateSmartEvent(SMART_EVENT e, uint32 event_flags, uint32 event_param1, uint32 event_param2, uint32 event_param3, uint32 event_param4, uint32 event_param5, SMART_ACTION action, uint32 action_param1, uint32 action_param2, uint32 action_param3, uint32 action_param4, uint32 action_param5, uint32 action_param6, SMARTAI_TARGETS t, uint32 target_param1, uint32 target_param2, uint32 target_param3, uint32 target_param4, uint32 phaseMask);
|
||||
void AddEvent(SMART_EVENT e, uint32 event_flags, uint32 event_param1, uint32 event_param2, uint32 event_param3, uint32 event_param4, uint32 event_param5, SMART_ACTION action, uint32 action_param1, uint32 action_param2, uint32 action_param3, uint32 action_param4, uint32 action_param5, uint32 action_param6, SMARTAI_TARGETS t, uint32 target_param1, uint32 target_param2, uint32 target_param3, uint32 target_param4, uint32 phaseMask);
|
||||
void SetPathId(uint32 id) { mPathId = id; }
|
||||
uint32 GetPathId() const { return mPathId; }
|
||||
WorldObject* GetBaseObject()
|
||||
WorldObject* GetBaseObject() const
|
||||
{
|
||||
WorldObject* obj = nullptr;
|
||||
if (me)
|
||||
@@ -70,27 +70,17 @@ public:
|
||||
void OnUpdate(const uint32 diff);
|
||||
void OnMoveInLineOfSight(Unit* who);
|
||||
|
||||
Unit* DoSelectLowestHpFriendly(float range, uint32 MinHPDiff);
|
||||
Unit* DoSelectLowestHpFriendly(float range, uint32 MinHPDiff) const;
|
||||
Unit* DoSelectLowestHpPercentFriendly(float range, uint32 minHpPct, uint32 maxHpPct) const;
|
||||
void DoFindFriendlyCC(std::list<Creature*>& _list, float range);
|
||||
void DoFindFriendlyMissingBuff(std::list<Creature*>& list, float range, uint32 spellid);
|
||||
Unit* DoFindClosestFriendlyInRange(float range, bool playerOnly);
|
||||
void DoFindFriendlyCC(std::vector<Creature*>& creatures, float range) const;
|
||||
void DoFindFriendlyMissingBuff(std::vector<Creature*>& creatures, float range, uint32 spellid) const;
|
||||
Unit* DoFindClosestFriendlyInRange(float range, bool playerOnly) const;
|
||||
|
||||
void StoreTargetList(ObjectList* targets, uint32 id)
|
||||
void StoreTargetList(ObjectVector const& targets, uint32 id)
|
||||
{
|
||||
if (!targets)
|
||||
return;
|
||||
|
||||
if (mTargetStorage->find(id) != mTargetStorage->end())
|
||||
{
|
||||
// check if already stored
|
||||
if ((*mTargetStorage)[id]->Equals(targets))
|
||||
return;
|
||||
|
||||
delete (*mTargetStorage)[id];
|
||||
}
|
||||
|
||||
(*mTargetStorage)[id] = new ObjectGuidList(targets, GetBaseObject());
|
||||
// insert or replace
|
||||
_storedTargets.erase(id);
|
||||
_storedTargets.emplace(id, ObjectGuidVector(targets));
|
||||
}
|
||||
|
||||
bool IsSmart(Creature* c = nullptr)
|
||||
@@ -122,11 +112,11 @@ public:
|
||||
return smart;
|
||||
}
|
||||
|
||||
ObjectList* GetTargetList(uint32 id)
|
||||
ObjectVector const* GetStoredTargetVector(uint32 id, WorldObject const& ref) const
|
||||
{
|
||||
ObjectListMap::iterator itr = mTargetStorage->find(id);
|
||||
if (itr != mTargetStorage->end())
|
||||
return (*itr).second->GetObjectList();
|
||||
auto itr = _storedTargets.find(id);
|
||||
if (itr != _storedTargets.end())
|
||||
return itr->second.GetObjectVector(ref);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
@@ -187,8 +177,6 @@ public:
|
||||
return creatureItr != bounds.second ? creatureItr->second : bounds.first->second;
|
||||
}
|
||||
|
||||
ObjectListMap* mTargetStorage;
|
||||
|
||||
void OnReset();
|
||||
void ResetBaseObject()
|
||||
{
|
||||
@@ -223,7 +211,7 @@ public:
|
||||
|
||||
//TIMED_ACTIONLIST (script type 9 aka script9)
|
||||
void SetScript9(SmartScriptHolder& e, uint32 entry);
|
||||
Unit* GetLastInvoker(Unit* invoker = nullptr);
|
||||
Unit* GetLastInvoker(Unit* invoker = nullptr) const;
|
||||
ObjectGuid mLastInvoker;
|
||||
typedef std::unordered_map<uint32, uint32> CounterMap;
|
||||
CounterMap mCounterList;
|
||||
@@ -284,6 +272,8 @@ private:
|
||||
// Xinef: misc
|
||||
bool _allowPhaseReset;
|
||||
|
||||
ObjectVectorMap _storedTargets;
|
||||
|
||||
SMARTAI_TEMPLATE mTemplate;
|
||||
void InstallEvents();
|
||||
|
||||
|
||||
@@ -679,7 +679,7 @@ bool SmartAIMgr::CheckUnusedActionParams(SmartScriptHolder const& e)
|
||||
case SMART_ACTION_SEND_GOSSIP_MENU: return sizeof(SmartAction::sendGossipMenu);
|
||||
case SMART_ACTION_GO_SET_LOOT_STATE: return sizeof(SmartAction::setGoLootState);
|
||||
case SMART_ACTION_SEND_TARGET_TO_TARGET: return sizeof(SmartAction::sendTargetToTarget);
|
||||
case SMART_ACTION_SET_HOME_POS: return NO_PARAMS;
|
||||
case SMART_ACTION_SET_HOME_POS: return sizeof(SmartAction::setHomePos);
|
||||
case SMART_ACTION_SET_HEALTH_REGEN: return sizeof(SmartAction::setHealthRegen);
|
||||
case SMART_ACTION_SET_ROOT: return sizeof(SmartAction::setRoot);
|
||||
case SMART_ACTION_SET_GO_FLAG: return sizeof(SmartAction::goFlag);
|
||||
@@ -1358,24 +1358,39 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e)
|
||||
break;
|
||||
}
|
||||
case SMART_ACTION_RANDOM_EMOTE:
|
||||
if (e.action.randomEmote.emote1 && !IsEmoteValid(e, e.action.randomEmote.emote1))
|
||||
return false;
|
||||
{
|
||||
if (std::all_of(e.action.randomEmote.emotes.begin(), e.action.randomEmote.emotes.end(), [](uint32 emote) { return emote == 0; }))
|
||||
{
|
||||
LOG_ERROR("sql.sql", "SmartAIMgr: Entry {} SourceType {} Event {} Action {} does not have any non-zero emote",
|
||||
e.entryOrGuid, e.GetScriptType(), e.event_id, e.GetActionType());
|
||||
return false;
|
||||
}
|
||||
|
||||
if (e.action.randomEmote.emote2 && !IsEmoteValid(e, e.action.randomEmote.emote2))
|
||||
return false;
|
||||
|
||||
if (e.action.randomEmote.emote3 && !IsEmoteValid(e, e.action.randomEmote.emote3))
|
||||
return false;
|
||||
|
||||
if (e.action.randomEmote.emote4 && !IsEmoteValid(e, e.action.randomEmote.emote4))
|
||||
return false;
|
||||
|
||||
if (e.action.randomEmote.emote5 && !IsEmoteValid(e, e.action.randomEmote.emote5))
|
||||
return false;
|
||||
|
||||
if (e.action.randomEmote.emote6 && !IsEmoteValid(e, e.action.randomEmote.emote6))
|
||||
return false;
|
||||
break;
|
||||
for (uint32 emote : e.action.randomEmote.emotes)
|
||||
if (emote && !IsEmoteValid(e, emote))
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
case SMART_ACTION_CALL_RANDOM_TIMED_ACTIONLIST:
|
||||
{
|
||||
if (std::all_of(e.action.randTimedActionList.actionLists.begin(), e.action.randTimedActionList.actionLists.end(), [](uint32 actionList) { return actionList == 0; }))
|
||||
{
|
||||
LOG_ERROR("sql.sql", "SmartAIMgr: Entry {} SourceType {} Event {} Action {} does not have any non-zero action list",
|
||||
e.entryOrGuid, e.GetScriptType(), e.event_id, e.GetActionType());
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SMART_ACTION_START_CLOSEST_WAYPOINT:
|
||||
{
|
||||
if (std::all_of(e.action.closestWaypointFromList.wps.begin(), e.action.closestWaypointFromList.wps.end(), [](uint32 wp) { return wp == 0; }))
|
||||
{
|
||||
LOG_ERROR("sql.sql", "SmartAIMgr: Entry {} SourceType {} Event {} Action {} does not have any non-zero waypoint id",
|
||||
e.entryOrGuid, e.GetScriptType(), e.event_id, e.GetActionType());
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SMART_ACTION_CAST:
|
||||
case SMART_ACTION_INVOKER_CAST:
|
||||
if (!IsSpellValid(e, e.action.cast.spell))
|
||||
@@ -1434,36 +1449,29 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e)
|
||||
break;
|
||||
case SMART_ACTION_RANDOM_PHASE:
|
||||
{
|
||||
if (e.action.randomPhase.phase1 >= SMART_EVENT_PHASE_MAX ||
|
||||
e.action.randomPhase.phase2 >= SMART_EVENT_PHASE_MAX ||
|
||||
e.action.randomPhase.phase3 >= SMART_EVENT_PHASE_MAX ||
|
||||
e.action.randomPhase.phase4 >= SMART_EVENT_PHASE_MAX ||
|
||||
e.action.randomPhase.phase5 >= SMART_EVENT_PHASE_MAX ||
|
||||
e.action.randomPhase.phase6 >= SMART_EVENT_PHASE_MAX)
|
||||
{
|
||||
LOG_ERROR("sql.sql", "SmartAIMgr: Entry {} SourceType {} Event {} Action {} attempts to set invalid phase, skipped.", e.entryOrGuid, e.GetScriptType(), e.event_id, e.GetActionType());
|
||||
return false;
|
||||
}
|
||||
if (e.action.randomPhase.phase1 == 0 &&
|
||||
e.action.randomPhase.phase2 == 0 &&
|
||||
e.action.randomPhase.phase3 == 0 &&
|
||||
e.action.randomPhase.phase4 == 0 &&
|
||||
e.action.randomPhase.phase5 == 0 &&
|
||||
e.action.randomPhase.phase6 == 0)
|
||||
if (std::all_of(e.action.randomPhase.phases.begin(), e.action.randomPhase.phases.end(), [](uint32 phase) { return phase == 0; }))
|
||||
{
|
||||
LOG_ERROR("sql.sql", "SmartAIMgr: Entry {} SourceType {} Event {} Action {} does not have any non-zero phase",
|
||||
e.entryOrGuid, e.GetScriptType(), e.event_id, e.GetActionType());
|
||||
return false;
|
||||
}
|
||||
|
||||
if (std::any_of(e.action.randomPhase.phases.begin(), e.action.randomPhase.phases.end(), [](uint32 phase) { return phase >= SMART_EVENT_PHASE_MAX; }))
|
||||
{
|
||||
LOG_ERROR("sql.sql", "SmartAIMgr: Entry {} SourceType {} Event {} Action {} attempts to set invalid phase, skipped.", e.entryOrGuid, e.GetScriptType(), e.event_id, e.GetActionType());
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case SMART_ACTION_RANDOM_PHASE_RANGE: //PhaseMin, PhaseMax
|
||||
{
|
||||
if (e.action.randomPhaseRange.phaseMin >= SMART_EVENT_PHASE_MAX ||
|
||||
e.action.randomPhaseRange.phaseMax >= SMART_EVENT_PHASE_MAX)
|
||||
e.action.randomPhaseRange.phaseMax >= SMART_EVENT_PHASE_MAX)
|
||||
{
|
||||
LOG_ERROR("sql.sql", "SmartAIMgr: Entry {} SourceType {} Event {} Action {} attempts to set invalid phase, skipped.", e.entryOrGuid, e.GetScriptType(), e.event_id, e.GetActionType());
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!IsMinMaxValid(e, e.action.randomPhaseRange.phaseMin, e.action.randomPhaseRange.phaseMax))
|
||||
return false;
|
||||
break;
|
||||
@@ -1570,7 +1578,7 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e)
|
||||
}
|
||||
case SMART_ACTION_CALL_RANDOM_RANGE_TIMED_ACTIONLIST:
|
||||
{
|
||||
if (!IsMinMaxValid(e, e.action.randRangeTimedActionList.idMin, e.action.randRangeTimedActionList.idMax))
|
||||
if (!IsMinMaxValid(e, e.action.randTimedActionList.actionLists[0], e.action.randTimedActionList.actionLists[1]))
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
@@ -1625,12 +1633,10 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e)
|
||||
{
|
||||
if (e.GetScriptType() == SMART_SCRIPT_TYPE_CREATURE)
|
||||
{
|
||||
int8 equipId = (int8)e.action.equip.entry;
|
||||
|
||||
if (equipId)
|
||||
if (int8 equipId = static_cast<int8>(e.action.equip.entry))
|
||||
{
|
||||
EquipmentInfo const* einfo = sObjectMgr->GetEquipmentInfo(e.entryOrGuid, equipId);
|
||||
if (!einfo)
|
||||
EquipmentInfo const* eInfo = sObjectMgr->GetEquipmentInfo(e.entryOrGuid, equipId);
|
||||
if (!eInfo)
|
||||
{
|
||||
LOG_ERROR("scripts.ai.sai", "SmartScript: SMART_ACTION_EQUIP uses non-existent equipment info id {} for creature {}, skipped.", equipId, e.entryOrGuid);
|
||||
return false;
|
||||
@@ -1783,7 +1789,6 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e)
|
||||
case SMART_ACTION_MOVE_TO_POS:
|
||||
case SMART_ACTION_EVADE:
|
||||
case SMART_ACTION_SET_ACTIVE:
|
||||
case SMART_ACTION_START_CLOSEST_WAYPOINT:
|
||||
case SMART_ACTION_FOLLOW:
|
||||
case SMART_ACTION_SET_ORIENTATION:
|
||||
case SMART_ACTION_STORE_TARGET_LIST:
|
||||
@@ -1818,7 +1823,6 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e)
|
||||
case SMART_ACTION_SET_NPC_FLAG:
|
||||
case SMART_ACTION_ADD_NPC_FLAG:
|
||||
case SMART_ACTION_REMOVE_NPC_FLAG:
|
||||
case SMART_ACTION_CALL_RANDOM_TIMED_ACTIONLIST:
|
||||
case SMART_ACTION_RANDOM_MOVE:
|
||||
case SMART_ACTION_SET_UNIT_FIELD_BYTES_1:
|
||||
case SMART_ACTION_REMOVE_UNIT_FIELD_BYTES_1:
|
||||
|
||||
@@ -49,6 +49,16 @@ struct WayPoint
|
||||
uint32 delay;
|
||||
};
|
||||
|
||||
enum eSmartAI
|
||||
{
|
||||
SMART_EVENT_PARAM_COUNT = 4,
|
||||
SMART_ACTION_PARAM_COUNT = 6,
|
||||
SMART_SUMMON_COUNTER = 0xFFFFFF,
|
||||
SMART_ESCORT_LAST_OOC_POINT = 0xFFFFFF,
|
||||
SMART_RANDOM_POINT = 0xFFFFFE,
|
||||
SMART_ESCORT_TARGETS = 0xFFFFFF
|
||||
};
|
||||
|
||||
enum SMART_EVENT_PHASE
|
||||
{
|
||||
SMART_EVENT_PHASE_ALWAYS = 0,
|
||||
@@ -758,12 +768,7 @@ struct SmartAction
|
||||
|
||||
struct
|
||||
{
|
||||
uint32 emote1;
|
||||
uint32 emote2;
|
||||
uint32 emote3;
|
||||
uint32 emote4;
|
||||
uint32 emote5;
|
||||
uint32 emote6;
|
||||
std::array<uint32, SMART_ACTION_PARAM_COUNT> emotes;
|
||||
} randomEmote;
|
||||
|
||||
struct
|
||||
@@ -858,12 +863,7 @@ struct SmartAction
|
||||
|
||||
struct
|
||||
{
|
||||
uint32 phase1;
|
||||
uint32 phase2;
|
||||
uint32 phase3;
|
||||
uint32 phase4;
|
||||
uint32 phase5;
|
||||
uint32 phase6;
|
||||
std::array<uint32, SMART_ACTION_PARAM_COUNT> phases;
|
||||
} randomPhase;
|
||||
|
||||
struct
|
||||
@@ -1049,9 +1049,7 @@ struct SmartAction
|
||||
{
|
||||
uint32 entry;
|
||||
uint32 mask;
|
||||
uint32 slot1;
|
||||
uint32 slot2;
|
||||
uint32 slot3;
|
||||
std::array<uint32, MAX_EQUIPMENT_ITEMS> slots;
|
||||
} equip;
|
||||
|
||||
struct
|
||||
@@ -1086,12 +1084,7 @@ struct SmartAction
|
||||
|
||||
struct
|
||||
{
|
||||
uint32 entry1;
|
||||
uint32 entry2;
|
||||
uint32 entry3;
|
||||
uint32 entry4;
|
||||
uint32 entry5;
|
||||
uint32 entry6;
|
||||
std::array<uint32, SMART_ACTION_PARAM_COUNT> actionLists;
|
||||
} randTimedActionList;
|
||||
|
||||
struct
|
||||
@@ -1209,12 +1202,7 @@ struct SmartAction
|
||||
|
||||
struct
|
||||
{
|
||||
uint32 wp1;
|
||||
uint32 wp2;
|
||||
uint32 wp3;
|
||||
uint32 wp4;
|
||||
uint32 wp5;
|
||||
uint32 wp6;
|
||||
std::array<uint32, SMART_ACTION_PARAM_COUNT> wps;
|
||||
} closestWaypointFromList;
|
||||
|
||||
struct
|
||||
@@ -1584,16 +1572,6 @@ enum SmartTargetRoleFlags
|
||||
SMART_TARGET_ROLE_FLAG_DAMAGERS = 0x004
|
||||
};
|
||||
|
||||
enum eSmartAI
|
||||
{
|
||||
SMART_EVENT_PARAM_COUNT = 4,
|
||||
SMART_ACTION_PARAM_COUNT = 6,
|
||||
SMART_SUMMON_COUNTER = 0xFFFFFF,
|
||||
SMART_ESCORT_LAST_OOC_POINT = 0xFFFFFF,
|
||||
SMART_RANDOM_POINT = 0xFFFFFE,
|
||||
SMART_ESCORT_TARGETS = 0xFFFFFF
|
||||
};
|
||||
|
||||
enum SmartScriptType
|
||||
{
|
||||
SMART_SCRIPT_TYPE_CREATURE = 0, //done
|
||||
@@ -1802,60 +1780,42 @@ public:
|
||||
|
||||
typedef std::unordered_map<uint32, WayPoint*> WPPath;
|
||||
|
||||
typedef std::list<WorldObject*> ObjectList;
|
||||
typedef std::vector<WorldObject*> ObjectVector;
|
||||
|
||||
class ObjectGuidList
|
||||
class ObjectGuidVector
|
||||
{
|
||||
ObjectList* m_objectList;
|
||||
GuidList* m_guidList;
|
||||
WorldObject* m_baseObject;
|
||||
|
||||
public:
|
||||
ObjectGuidList(ObjectList* objectList, WorldObject* baseObject)
|
||||
explicit ObjectGuidVector(ObjectVector const& objectVector) : _objectVector(objectVector)
|
||||
{
|
||||
ASSERT(objectList);
|
||||
m_objectList = objectList;
|
||||
m_baseObject = baseObject;
|
||||
m_guidList = new GuidList();
|
||||
|
||||
for (ObjectList::iterator itr = objectList->begin(); itr != objectList->end(); ++itr)
|
||||
{
|
||||
m_guidList->push_back((*itr)->GetGUID());
|
||||
}
|
||||
_guidVector.reserve(_objectVector.size());
|
||||
for (WorldObject* obj : _objectVector)
|
||||
_guidVector.push_back(obj->GetGUID());
|
||||
}
|
||||
|
||||
ObjectList* GetObjectList()
|
||||
ObjectVector const* GetObjectVector(WorldObject const& ref) const
|
||||
{
|
||||
if (m_baseObject)
|
||||
{
|
||||
//sanitize list using m_guidList
|
||||
m_objectList->clear();
|
||||
|
||||
for (GuidList::iterator itr = m_guidList->begin(); itr != m_guidList->end(); ++itr)
|
||||
{
|
||||
if (WorldObject* obj = ObjectAccessor::GetWorldObject(*m_baseObject, *itr))
|
||||
m_objectList->push_back(obj);
|
||||
//else
|
||||
// LOG_DEBUG("scripts.ai", "SmartScript::mTargetStorage stores a guid to an invalid object: {}", (*itr).ToString());
|
||||
}
|
||||
}
|
||||
|
||||
return m_objectList;
|
||||
UpdateObjects(ref);
|
||||
return &_objectVector;
|
||||
}
|
||||
|
||||
bool Equals(ObjectList* objectList)
|
||||
{
|
||||
return m_objectList == objectList;
|
||||
}
|
||||
~ObjectGuidVector() { }
|
||||
|
||||
~ObjectGuidList()
|
||||
private:
|
||||
mutable ObjectVector _objectVector;
|
||||
|
||||
GuidVector _guidVector;
|
||||
|
||||
//sanitize vector using _guidVector
|
||||
void UpdateObjects(WorldObject const& ref) const
|
||||
{
|
||||
delete m_objectList;
|
||||
delete m_guidList;
|
||||
_objectVector.clear();
|
||||
|
||||
for (ObjectGuid const& guid : _guidVector)
|
||||
if (WorldObject* obj = ObjectAccessor::GetWorldObject(ref, guid))
|
||||
_objectVector.push_back(obj);
|
||||
}
|
||||
};
|
||||
|
||||
typedef std::unordered_map<uint32, ObjectGuidList*> ObjectListMap;
|
||||
typedef std::unordered_map<uint32, ObjectGuidVector> ObjectVectorMap;
|
||||
|
||||
class SmartWaypointMgr
|
||||
{
|
||||
|
||||
@@ -261,12 +261,18 @@ HostileReference* ThreatContainer::getReferenceByTarget(Unit* victim) const
|
||||
if (!victim)
|
||||
return nullptr;
|
||||
|
||||
ObjectGuid const guid = victim->GetGUID();
|
||||
return getReferenceByTarget(victim->GetGUID());
|
||||
}
|
||||
|
||||
HostileReference* ThreatContainer::getReferenceByTarget(ObjectGuid const& guid) const
|
||||
{
|
||||
for (ThreatContainer::StorageType::const_iterator i = iThreatList.begin(); i != iThreatList.end(); ++i)
|
||||
{
|
||||
HostileReference* ref = (*i);
|
||||
if (ref && ref->getUnitGuid() == guid)
|
||||
{
|
||||
return ref;
|
||||
}
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
|
||||
@@ -164,6 +164,7 @@ public:
|
||||
}
|
||||
|
||||
HostileReference* getReferenceByTarget(Unit* victim) const;
|
||||
HostileReference* getReferenceByTarget(ObjectGuid const& guid) const;
|
||||
|
||||
[[nodiscard]] StorageType const& getThreatList() const { return iThreatList; }
|
||||
|
||||
|
||||
@@ -219,8 +219,8 @@ Creature::Creature(bool isWorldObject): Unit(isWorldObject), MovableMapObject(),
|
||||
m_corpseRemoveTime(0), m_respawnTime(0), m_respawnDelay(300), m_corpseDelay(60), m_wanderDistance(0.0f), m_boundaryCheckTime(2500),
|
||||
m_transportCheckTimer(1000), lootPickPocketRestoreTime(0), m_reactState(REACT_AGGRESSIVE), m_defaultMovementType(IDLE_MOTION_TYPE),
|
||||
m_spawnId(0), m_equipmentId(0), m_originalEquipmentId(0), m_AlreadyCallAssistance(false),
|
||||
m_AlreadySearchedAssistance(false), m_regenHealth(true), m_AI_locked(false), m_meleeDamageSchoolMask(SPELL_SCHOOL_MASK_NORMAL), m_originalEntry(0), m_moveInLineOfSightDisabled(false), m_moveInLineOfSightStrictlyDisabled(false),
|
||||
m_homePosition(), m_transportHomePosition(), m_creatureInfo(nullptr), m_creatureData(nullptr), m_detectionDistance(20.0f), m_waypointID(0), m_path_id(0), m_formation(nullptr), _lastDamagedTime(nullptr), m_cannotReachTarget(false), m_cannotReachTimer(0),
|
||||
m_AlreadySearchedAssistance(false), m_regenHealth(true), m_regenPower(true), m_AI_locked(false), m_meleeDamageSchoolMask(SPELL_SCHOOL_MASK_NORMAL), m_originalEntry(0), m_moveInLineOfSightDisabled(false), m_moveInLineOfSightStrictlyDisabled(false),
|
||||
m_homePosition(), m_transportHomePosition(), m_creatureInfo(nullptr), m_creatureData(nullptr), m_detectionDistance(20.0f), m_waypointID(0), m_path_id(0), m_formation(nullptr), _lastDamagedTime(nullptr), m_cannotReachTimer(0),
|
||||
_isMissingSwimmingFlagOutOfCombat(false), m_assistanceTimer(0), _playerDamageReq(0), _damagedByPlayer(false)
|
||||
{
|
||||
m_regenTimer = CREATURE_REGEN_INTERVAL;
|
||||
@@ -628,207 +628,238 @@ void Creature::Update(uint32 diff)
|
||||
LOG_ERROR("entities.unit", "Creature ({}) in wrong state: JUST_DEAD (1)", GetGUID().ToString());
|
||||
break;
|
||||
case DEAD:
|
||||
{
|
||||
time_t now = GameTime::GetGameTime().count();
|
||||
if (m_respawnTime <= now)
|
||||
{
|
||||
time_t now = GameTime::GetGameTime().count();
|
||||
if (m_respawnTime <= now)
|
||||
|
||||
ConditionList conditions = sConditionMgr->GetConditionsForNotGroupedEntry(CONDITION_SOURCE_TYPE_CREATURE_RESPAWN, GetEntry());
|
||||
|
||||
if (!sConditionMgr->IsObjectMeetToConditions(this, conditions))
|
||||
{
|
||||
|
||||
ConditionList conditions = sConditionMgr->GetConditionsForNotGroupedEntry(CONDITION_SOURCE_TYPE_CREATURE_RESPAWN, GetEntry());
|
||||
|
||||
if (!sConditionMgr->IsObjectMeetToConditions(this, conditions))
|
||||
{
|
||||
// Creature should not respawn, reset respawn timer. Conditions will be checked again the next time it tries to respawn.
|
||||
m_respawnTime = GameTime::GetGameTime().count() + m_respawnDelay;
|
||||
break;
|
||||
}
|
||||
|
||||
bool allowed = !IsAIEnabled || AI()->CanRespawn(); // First check if there are any scripts that prevent us respawning
|
||||
if (!allowed) // Will be rechecked on next Update call
|
||||
break;
|
||||
|
||||
ObjectGuid dbtableHighGuid = ObjectGuid::Create<HighGuid::Unit>(GetEntry(), m_spawnId);
|
||||
time_t linkedRespawntime = GetMap()->GetLinkedRespawnTime(dbtableHighGuid);
|
||||
if (!linkedRespawntime) // Can respawn
|
||||
Respawn();
|
||||
else // the master is dead
|
||||
{
|
||||
ObjectGuid targetGuid = sObjectMgr->GetLinkedRespawnGuid(dbtableHighGuid);
|
||||
if (targetGuid == dbtableHighGuid) // if linking self, never respawn (check delayed to next day)
|
||||
SetRespawnTime(DAY);
|
||||
else
|
||||
m_respawnTime = (now > linkedRespawntime ? now : linkedRespawntime) + urand(5, MINUTE); // else copy time from master and add a little
|
||||
SaveRespawnTime(); // also save to DB immediately
|
||||
}
|
||||
// Creature should not respawn, reset respawn timer. Conditions will be checked again the next time it tries to respawn.
|
||||
m_respawnTime = GameTime::GetGameTime().count() + m_respawnDelay;
|
||||
break;
|
||||
}
|
||||
|
||||
bool allowed = !IsAIEnabled || AI()->CanRespawn(); // First check if there are any scripts that prevent us respawning
|
||||
if (!allowed) // Will be rechecked on next Update call
|
||||
break;
|
||||
|
||||
ObjectGuid dbtableHighGuid = ObjectGuid::Create<HighGuid::Unit>(GetEntry(), m_spawnId);
|
||||
time_t linkedRespawntime = GetMap()->GetLinkedRespawnTime(dbtableHighGuid);
|
||||
if (!linkedRespawntime) // Can respawn
|
||||
Respawn();
|
||||
else // the master is dead
|
||||
{
|
||||
ObjectGuid targetGuid = sObjectMgr->GetLinkedRespawnGuid(dbtableHighGuid);
|
||||
if (targetGuid == dbtableHighGuid) // if linking self, never respawn (check delayed to next day)
|
||||
SetRespawnTime(DAY);
|
||||
else
|
||||
m_respawnTime = (now > linkedRespawntime ? now : linkedRespawntime) + urand(5, MINUTE); // else copy time from master and add a little
|
||||
SaveRespawnTime(); // also save to DB immediately
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case CORPSE:
|
||||
{
|
||||
Unit::Update(diff);
|
||||
// deathstate changed on spells update, prevent problems
|
||||
if (m_deathState != CORPSE)
|
||||
break;
|
||||
|
||||
if (m_groupLootTimer && lootingGroupLowGUID)
|
||||
{
|
||||
if (m_groupLootTimer <= diff)
|
||||
{
|
||||
Group* group = sGroupMgr->GetGroupByGUID(lootingGroupLowGUID);
|
||||
if (group)
|
||||
group->EndRoll(&loot, GetMap());
|
||||
m_groupLootTimer = 0;
|
||||
lootingGroupLowGUID = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_groupLootTimer -= diff;
|
||||
}
|
||||
}
|
||||
else if (m_corpseRemoveTime <= GameTime::GetGameTime().count())
|
||||
{
|
||||
RemoveCorpse(false);
|
||||
LOG_DEBUG("entities.unit", "Removing corpse... {} ", GetUInt32Value(OBJECT_FIELD_ENTRY));
|
||||
}
|
||||
{
|
||||
Unit::Update(diff);
|
||||
// deathstate changed on spells update, prevent problems
|
||||
if (m_deathState != CORPSE)
|
||||
break;
|
||||
}
|
||||
case ALIVE:
|
||||
|
||||
if (m_groupLootTimer && lootingGroupLowGUID)
|
||||
{
|
||||
Unit::Update(diff);
|
||||
|
||||
// creature can be dead after Unit::Update call
|
||||
// CORPSE/DEAD state will processed at next tick (in other case death timer will be updated unexpectedly)
|
||||
if (!IsAlive())
|
||||
break;
|
||||
|
||||
// if creature is charmed, switch to charmed AI
|
||||
if (NeedChangeAI)
|
||||
if (m_groupLootTimer <= diff)
|
||||
{
|
||||
UpdateCharmAI();
|
||||
NeedChangeAI = false;
|
||||
IsAIEnabled = true;
|
||||
Group* group = sGroupMgr->GetGroupByGUID(lootingGroupLowGUID);
|
||||
if (group)
|
||||
group->EndRoll(&loot, GetMap());
|
||||
m_groupLootTimer = 0;
|
||||
lootingGroupLowGUID = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_groupLootTimer -= diff;
|
||||
}
|
||||
}
|
||||
else if (m_corpseRemoveTime <= GameTime::GetGameTime().count())
|
||||
{
|
||||
RemoveCorpse(false);
|
||||
LOG_DEBUG("entities.unit", "Removing corpse... {} ", GetUInt32Value(OBJECT_FIELD_ENTRY));
|
||||
}
|
||||
break;
|
||||
}
|
||||
case ALIVE:
|
||||
{
|
||||
Unit::Update(diff);
|
||||
|
||||
// xinef: update combat state, if npc is not in combat - return to spawn correctly by calling EnterEvadeMode
|
||||
SelectVictim();
|
||||
// creature can be dead after Unit::Update call
|
||||
// CORPSE/DEAD state will processed at next tick (in other case death timer will be updated unexpectedly)
|
||||
if (!IsAlive())
|
||||
break;
|
||||
|
||||
// if creature is charmed, switch to charmed AI
|
||||
if (NeedChangeAI)
|
||||
{
|
||||
UpdateCharmAI();
|
||||
NeedChangeAI = false;
|
||||
IsAIEnabled = true;
|
||||
|
||||
// xinef: update combat state, if npc is not in combat - return to spawn correctly by calling EnterEvadeMode
|
||||
SelectVictim();
|
||||
}
|
||||
|
||||
// periodic check to see if the creature has passed an evade boundary
|
||||
if (IsAIEnabled && !IsInEvadeMode() && IsEngaged())
|
||||
{
|
||||
if (diff >= m_boundaryCheckTime)
|
||||
{
|
||||
AI()->CheckInRoom();
|
||||
m_boundaryCheckTime = 2500;
|
||||
}
|
||||
else
|
||||
m_boundaryCheckTime -= diff;
|
||||
}
|
||||
|
||||
Unit* owner = GetCharmerOrOwner();
|
||||
if (IsCharmed() && !IsWithinDistInMap(owner, GetMap()->GetVisibilityRange(), true, false))
|
||||
{
|
||||
RemoveCharmAuras();
|
||||
}
|
||||
|
||||
if (Unit* victim = GetVictim())
|
||||
{
|
||||
// If we are closer than 50% of the combat reach we are going to reposition the victim
|
||||
if (diff >= m_moveBackwardsMovementTime)
|
||||
{
|
||||
float MaxRange = GetCollisionRadius() + GetVictim()->GetCollisionRadius();
|
||||
|
||||
if (IsInDist(victim, MaxRange))
|
||||
AI()->MoveBackwardsChecks();
|
||||
|
||||
m_moveBackwardsMovementTime = urand(MOVE_BACKWARDS_CHECK_INTERVAL, MOVE_BACKWARDS_CHECK_INTERVAL * 3);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_moveBackwardsMovementTime -= diff;
|
||||
}
|
||||
|
||||
// periodic check to see if the creature has passed an evade boundary
|
||||
if (IsAIEnabled && !IsInEvadeMode() && IsEngaged())
|
||||
// Circling the target
|
||||
if (diff >= m_moveCircleMovementTime)
|
||||
{
|
||||
if (diff >= m_boundaryCheckTime)
|
||||
{
|
||||
AI()->CheckInRoom();
|
||||
m_boundaryCheckTime = 2500;
|
||||
} else
|
||||
m_boundaryCheckTime -= diff;
|
||||
AI()->MoveCircleChecks();
|
||||
m_moveCircleMovementTime = urand(MOVE_CIRCLE_CHECK_INTERVAL, MOVE_CIRCLE_CHECK_INTERVAL * 2);
|
||||
}
|
||||
|
||||
Unit* owner = GetCharmerOrOwner();
|
||||
if (IsCharmed() && !IsWithinDistInMap(owner, GetMap()->GetVisibilityRange(), true, false))
|
||||
else
|
||||
{
|
||||
RemoveCharmAuras();
|
||||
m_moveCircleMovementTime -= diff;
|
||||
}
|
||||
}
|
||||
|
||||
if (Unit *victim = GetVictim())
|
||||
// Call for assistance if not disabled
|
||||
if (m_assistanceTimer)
|
||||
{
|
||||
if (m_assistanceTimer <= diff)
|
||||
{
|
||||
// If we are closer than 50% of the combat reach we are going to reposition the victim
|
||||
if (diff >= m_moveBackwardsMovementTime)
|
||||
if (CanPeriodicallyCallForAssistance())
|
||||
{
|
||||
float MaxRange = GetCollisionRadius() + GetVictim()->GetCollisionRadius();
|
||||
|
||||
if (IsInDist(victim, MaxRange))
|
||||
AI()->MoveBackwardsChecks();
|
||||
|
||||
m_moveBackwardsMovementTime = urand(MOVE_BACKWARDS_CHECK_INTERVAL, MOVE_BACKWARDS_CHECK_INTERVAL * 3);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_moveBackwardsMovementTime -= diff;
|
||||
}
|
||||
|
||||
// Circling the target
|
||||
if (diff >= m_moveCircleMovementTime)
|
||||
{
|
||||
AI()->MoveCircleChecks();
|
||||
m_moveCircleMovementTime = urand(MOVE_CIRCLE_CHECK_INTERVAL, MOVE_CIRCLE_CHECK_INTERVAL * 2);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_moveCircleMovementTime -= diff;
|
||||
SetNoCallAssistance(false);
|
||||
CallAssistance();
|
||||
}
|
||||
m_assistanceTimer = sWorld->getIntConfig(CONFIG_CREATURE_FAMILY_ASSISTANCE_PERIOD);
|
||||
}
|
||||
|
||||
// Call for assistance if not disabled
|
||||
if (m_assistanceTimer)
|
||||
else
|
||||
{
|
||||
if (m_assistanceTimer <= diff)
|
||||
m_assistanceTimer -= diff;
|
||||
}
|
||||
}
|
||||
|
||||
if (!IsInEvadeMode() && IsAIEnabled)
|
||||
{
|
||||
// do not allow the AI to be changed during update
|
||||
m_AI_locked = true;
|
||||
i_AI->UpdateAI(diff);
|
||||
m_AI_locked = false;
|
||||
}
|
||||
|
||||
// creature can be dead after UpdateAI call
|
||||
// CORPSE/DEAD state will processed at next tick (in other case death timer will be updated unexpectedly)
|
||||
if (!IsAlive())
|
||||
break;
|
||||
|
||||
m_regenTimer -= diff;
|
||||
if (m_regenTimer <= 0)
|
||||
{
|
||||
if (!IsInEvadeMode())
|
||||
{
|
||||
// regenerate health if not in combat or if polymorphed)
|
||||
if (!IsInCombat() || IsPolymorphed())
|
||||
RegenerateHealth();
|
||||
else if (IsNotReachableAndNeedRegen())
|
||||
{
|
||||
if (CanPeriodicallyCallForAssistance())
|
||||
// regenerate health if cannot reach the target and the setting is set to do so.
|
||||
// this allows to disable the health regen of raid bosses if pathfinding has issues for whatever reason
|
||||
if (sWorld->getBoolConfig(CONFIG_REGEN_HP_CANNOT_REACH_TARGET_IN_RAID) || !GetMap()->IsRaid())
|
||||
{
|
||||
SetNoCallAssistance(false);
|
||||
CallAssistance();
|
||||
}
|
||||
m_assistanceTimer = sWorld->getIntConfig(CONFIG_CREATURE_FAMILY_ASSISTANCE_PERIOD);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_assistanceTimer -= diff;
|
||||
}
|
||||
}
|
||||
|
||||
if (!IsInEvadeMode() && IsAIEnabled)
|
||||
{
|
||||
// do not allow the AI to be changed during update
|
||||
m_AI_locked = true;
|
||||
i_AI->UpdateAI(diff);
|
||||
m_AI_locked = false;
|
||||
}
|
||||
|
||||
// creature can be dead after UpdateAI call
|
||||
// CORPSE/DEAD state will processed at next tick (in other case death timer will be updated unexpectedly)
|
||||
if (!IsAlive())
|
||||
break;
|
||||
|
||||
m_regenTimer -= diff;
|
||||
if (m_regenTimer <= 0)
|
||||
{
|
||||
if (!IsInEvadeMode())
|
||||
{
|
||||
// regenerate health if not in combat or if polymorphed)
|
||||
if (!IsInCombat() || IsPolymorphed())
|
||||
RegenerateHealth();
|
||||
else if (IsNotReachableAndNeedRegen())
|
||||
LOG_DEBUG("entities.unit", "RegenerateHealth() enabled because Creature cannot reach the target. Detail: {}", GetDebugInfo());
|
||||
}
|
||||
else
|
||||
LOG_DEBUG("entities.unit", "RegenerateHealth() disabled even if the Creature cannot reach the target. Detail: {}", GetDebugInfo());
|
||||
}
|
||||
}
|
||||
|
||||
if (getPowerType() == POWER_ENERGY)
|
||||
Regenerate(POWER_ENERGY);
|
||||
else
|
||||
Regenerate(POWER_MANA);
|
||||
|
||||
m_regenTimer += CREATURE_REGEN_INTERVAL;
|
||||
}
|
||||
|
||||
if (CanNotReachTarget() && !IsInEvadeMode())
|
||||
{
|
||||
m_cannotReachTimer += diff;
|
||||
if (m_cannotReachTimer >= (sWorld->getIntConfig(CONFIG_NPC_EVADE_IF_NOT_REACHABLE) * IN_MILLISECONDS))
|
||||
{
|
||||
Player* cannotReachPlayer = ObjectAccessor::GetPlayer(*this, m_cannotReachTarget);
|
||||
if (cannotReachPlayer && IsEngagedBy(cannotReachPlayer) && IsAIEnabled && AI()->OnTeleportUnreacheablePlayer(cannotReachPlayer))
|
||||
{
|
||||
SetCannotReachTarget();
|
||||
}
|
||||
else if (!GetMap()->IsRaid())
|
||||
{
|
||||
auto EnterEvade = [&]()
|
||||
{
|
||||
// regenerate health if cannot reach the target and the setting is set to do so.
|
||||
// this allows to disable the health regen of raid bosses if pathfinding has issues for whatever reason
|
||||
if (sWorld->getBoolConfig(CONFIG_REGEN_HP_CANNOT_REACH_TARGET_IN_RAID) || !GetMap()->IsRaid())
|
||||
if (CreatureAI* ai = AI())
|
||||
{
|
||||
RegenerateHealth();
|
||||
LOG_DEBUG("entities.unit", "RegenerateHealth() enabled because Creature cannot reach the target. Detail: {}", GetDebugInfo());
|
||||
ai->EnterEvadeMode(CreatureAI::EvadeReason::EVADE_REASON_NO_PATH);
|
||||
}
|
||||
};
|
||||
|
||||
if (GetThreatMgr().getThreatList().size() <= 1)
|
||||
{
|
||||
EnterEvade();
|
||||
}
|
||||
else
|
||||
{
|
||||
if (HostileReference* ref = GetThreatMgr().getOnlineContainer().getReferenceByTarget(m_cannotReachTarget))
|
||||
{
|
||||
ref->removeReference();
|
||||
SetCannotReachTarget();
|
||||
}
|
||||
else
|
||||
LOG_DEBUG("entities.unit", "RegenerateHealth() disabled even if the Creature cannot reach the target. Detail: {}", GetDebugInfo());
|
||||
{
|
||||
EnterEvade();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (getPowerType() == POWER_ENERGY)
|
||||
Regenerate(POWER_ENERGY);
|
||||
else
|
||||
Regenerate(POWER_MANA);
|
||||
|
||||
m_regenTimer += CREATURE_REGEN_INTERVAL;
|
||||
}
|
||||
|
||||
if (CanNotReachTarget() && !IsInEvadeMode() && !GetMap()->IsRaid())
|
||||
{
|
||||
m_cannotReachTimer += diff;
|
||||
if (IsNotReachable() && IsAIEnabled)
|
||||
{
|
||||
AI()->EnterEvadeMode();
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -883,6 +914,11 @@ void Creature::Regenerate(Powers power)
|
||||
if (!HasUnitFlag2(UNIT_FLAG2_REGENERATE_POWER) && !GetOwnerGUID().IsPlayer())
|
||||
return;
|
||||
|
||||
if (!m_regenPower)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (curValue >= maxValue)
|
||||
return;
|
||||
|
||||
@@ -1020,7 +1056,7 @@ bool Creature::AIM_Initialize(CreatureAI* ai)
|
||||
// Xinef: called in add to world
|
||||
//Motion_Initialize();
|
||||
|
||||
i_AI = ai ? ai : FactorySelector::selectAI(this);
|
||||
i_AI = ai ? ai : FactorySelector::SelectAI(this);
|
||||
delete oldAI;
|
||||
IsAIEnabled = true;
|
||||
i_AI->InitializeAI();
|
||||
@@ -1927,7 +1963,7 @@ void Creature::setDeathState(DeathState s, bool despawn)
|
||||
SetFullHealth();
|
||||
SetLootRecipient(nullptr);
|
||||
ResetPlayerDamageReq();
|
||||
SetCannotReachTarget(false);
|
||||
SetCannotReachTarget();
|
||||
CreatureTemplate const* cinfo = GetCreatureTemplate();
|
||||
// Xinef: npc run by default
|
||||
//SetWalk(true);
|
||||
@@ -2861,7 +2897,7 @@ uint8 Creature::getLevelForTarget(WorldObject const* target) const
|
||||
return uint8(level);
|
||||
}
|
||||
|
||||
std::string Creature::GetAIName() const
|
||||
std::string const& Creature::GetAIName() const
|
||||
{
|
||||
return sObjectMgr->GetCreatureTemplate(GetEntry())->AIName;
|
||||
}
|
||||
@@ -3468,7 +3504,24 @@ bool Creature::SetCannotReachTarget(bool cannotReach, bool isChase /*= true*/)
|
||||
m_cannotReachTimer = 0;
|
||||
|
||||
if (cannotReach)
|
||||
{
|
||||
LOG_DEBUG("entities.unit", "Creature::SetCannotReachTarget() called with true. Details: {}", GetDebugInfo());
|
||||
}
|
||||
}
|
||||
|
||||
bool Creature::CanNotReachTarget() const
|
||||
{
|
||||
return m_cannotReachTarget;
|
||||
}
|
||||
|
||||
bool Creature::IsNotReachableAndNeedRegen() const
|
||||
{
|
||||
if (CanNotReachTarget())
|
||||
{
|
||||
return m_cannotReachTimer >= (sWorld->getIntConfig(CONFIG_NPC_REGEN_TIME_IF_NOT_REACHABLE_IN_RAID) * IN_MILLISECONDS);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
time_t Creature::GetLastDamagedTime() const
|
||||
|
||||
@@ -198,7 +198,7 @@ public:
|
||||
void SetDetectionDistance(float dist){ m_detectionDistance = dist; }
|
||||
[[nodiscard]] CreatureAddon const* GetCreatureAddon() const;
|
||||
|
||||
[[nodiscard]] std::string GetAIName() const;
|
||||
[[nodiscard]] std::string const& GetAIName() const;
|
||||
[[nodiscard]] std::string GetScriptName() const;
|
||||
[[nodiscard]] uint32 GetScriptId() const;
|
||||
|
||||
@@ -300,6 +300,7 @@ public:
|
||||
|
||||
bool isRegeneratingHealth() { return m_regenHealth; }
|
||||
void SetRegeneratingHealth(bool c) { m_regenHealth = c; }
|
||||
void SetRegeneratingPower(bool c) { m_regenPower = c; }
|
||||
[[nodiscard]] virtual uint8 GetPetAutoSpellSize() const { return MAX_SPELL_CHARM; }
|
||||
[[nodiscard]] virtual uint32 GetPetAutoSpellOnPos(uint8 pos) const
|
||||
{
|
||||
@@ -417,6 +418,7 @@ protected:
|
||||
bool m_AlreadyCallAssistance;
|
||||
bool m_AlreadySearchedAssistance;
|
||||
bool m_regenHealth;
|
||||
bool m_regenPower;
|
||||
bool m_AI_locked;
|
||||
|
||||
SpellSchoolMask m_meleeDamageSchoolMask;
|
||||
@@ -455,7 +457,7 @@ private:
|
||||
|
||||
mutable std::shared_ptr<time_t> _lastDamagedTime; // Part of Evade mechanics
|
||||
|
||||
bool m_cannotReachTarget;
|
||||
ObjectGuid m_cannotReachTarget;
|
||||
uint32 m_cannotReachTimer;
|
||||
|
||||
Spell const* _focusSpell; ///> Locks the target during spell cast for proper facing
|
||||
|
||||
@@ -80,8 +80,7 @@ enum CreatureFlagsExtra : uint32
|
||||
CREATURE_FLAG_EXTRA_HARD_RESET = 0x80000000,
|
||||
|
||||
// Masks
|
||||
CREATURE_FLAG_EXTRA_UNUSED = (CREATURE_FLAG_EXTRA_UNUSED_12 | CREATURE_FLAG_EXTRA_UNUSED_26 |
|
||||
CREATURE_FLAG_EXTRA_UNUSED_27 | CREATURE_FLAG_EXTRA_UNUSED_28), // SKIP
|
||||
CREATURE_FLAG_EXTRA_UNUSED = (CREATURE_FLAG_EXTRA_UNUSED_12 | CREATURE_FLAG_EXTRA_UNUSED_26 | CREATURE_FLAG_EXTRA_UNUSED_27 | CREATURE_FLAG_EXTRA_UNUSED_28), // SKIP
|
||||
|
||||
CREATURE_FLAG_EXTRA_DB_ALLOWED = (0xFFFFFFFF & ~(CREATURE_FLAG_EXTRA_UNUSED | CREATURE_FLAG_EXTRA_DUNGEON_BOSS)) // SKIP
|
||||
};
|
||||
|
||||
@@ -381,3 +381,40 @@ void CreatureGroup::LeaderMoveTo(float x, float y, float z, bool run)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CreatureGroup::RespawnFormation(bool force)
|
||||
{
|
||||
for (auto const& itr : m_members)
|
||||
{
|
||||
if (itr.first && !itr.first->IsAlive())
|
||||
{
|
||||
itr.first->Respawn(force);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool CreatureGroup::IsFormationInCombat()
|
||||
{
|
||||
for (auto const& itr : m_members)
|
||||
{
|
||||
if (itr.first && itr.first->IsInCombat())
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool CreatureGroup::IsAnyMemberAlive()
|
||||
{
|
||||
for (auto const& itr : m_members)
|
||||
{
|
||||
if (itr.first && itr.first->IsAlive())
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -109,6 +109,9 @@ public:
|
||||
void LeaderMoveTo(float x, float y, float z, bool run);
|
||||
void MemberEngagingTarget(Creature* member, Unit* target);
|
||||
void MemberEvaded(Creature* member);
|
||||
void RespawnFormation(bool force = false);
|
||||
[[nodiscard]] bool IsFormationInCombat();
|
||||
[[nodiscard]] bool IsAnyMemberAlive();
|
||||
|
||||
private:
|
||||
Creature* m_leader; //Important do not forget sometimes to work with pointers instead synonims :D:D
|
||||
|
||||
@@ -96,7 +96,7 @@ bool GameObject::AIM_Initialize()
|
||||
return true;
|
||||
}
|
||||
|
||||
std::string GameObject::GetAIName() const
|
||||
std::string const& GameObject::GetAIName() const
|
||||
{
|
||||
return sObjectMgr->GetGameObjectTemplate(GetEntry())->AIName;
|
||||
}
|
||||
|
||||
@@ -1001,7 +1001,7 @@ public:
|
||||
[[nodiscard]] virtual uint32 GetScriptId() const;
|
||||
[[nodiscard]] GameObjectAI* AI() const { return m_AI; }
|
||||
|
||||
[[nodiscard]] std::string GetAIName() const;
|
||||
[[nodiscard]] std::string const& GetAIName() const;
|
||||
void SetDisplayId(uint32 displayid);
|
||||
[[nodiscard]] uint32 GetDisplayId() const { return GetUInt32Value(GAMEOBJECT_DISPLAYID); }
|
||||
|
||||
|
||||
@@ -1154,7 +1154,9 @@ bool Guardian::InitStatsForLevel(uint8 petlevel)
|
||||
{
|
||||
// xinef: Glyph of Felguard, so ugly im crying... no appropriate spell
|
||||
if (AuraEffect* aurEff = owner->GetAuraEffectDummy(SPELL_GLYPH_OF_FELGUARD))
|
||||
SetModifierValue(UNIT_MOD_ATTACK_POWER, TOTAL_PCT, 1.0f + float(aurEff->GetAmount() / 100.0f));
|
||||
{
|
||||
HandleStatModifier(UNIT_MOD_ATTACK_POWER, TOTAL_PCT, aurEff->GetAmount(), true);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -8911,7 +8911,7 @@ void Player::RemovePet(Pet* pet, PetSaveMode mode, bool returnreagent)
|
||||
return;
|
||||
}
|
||||
|
||||
if (returnreagent && (pet || m_temporaryUnsummonedPetNumber) && !InBattleground())
|
||||
if (returnreagent && (pet || (m_temporaryUnsummonedPetNumber && (!m_session || !m_session->PlayerLogout()))) && !InBattleground())
|
||||
{
|
||||
//returning of reagents only for players, so best done here
|
||||
uint32 spellId = pet ? pet->GetUInt32Value(UNIT_CREATED_BY_SPELL) : m_oldpetspell;
|
||||
@@ -12573,8 +12573,13 @@ void Player::SetMover(Unit* target)
|
||||
LOG_INFO("misc", "Player::SetMover (B2) - {}, {}, {}, {}, {}, {}, {}, {}", target->GetGUID().ToString(), target->GetMapId(), target->GetInstanceId(), target->FindMap()->GetId(), target->IsInWorld() ? 1 : 0, target->IsDuringRemoveFromWorld() ? 1 : 0, (target->ToPlayer() && target->ToPlayer()->IsBeingTeleported() ? 1 : 0), target->isBeingLoaded() ? 1 : 0);
|
||||
}
|
||||
m_mover->m_movedByPlayer = nullptr;
|
||||
if (m_mover->GetTypeId() == TYPEID_UNIT)
|
||||
m_mover->GetMotionMaster()->Initialize();
|
||||
|
||||
m_mover = target;
|
||||
m_mover->m_movedByPlayer = this;
|
||||
if (m_mover->GetTypeId() == TYPEID_UNIT)
|
||||
m_mover->GetMotionMaster()->Initialize();
|
||||
}
|
||||
|
||||
uint32 Player::GetCorpseReclaimDelay(bool pvp) const
|
||||
|
||||
@@ -289,8 +289,8 @@ typedef std::list<PlayerCreateInfoItem> PlayerCreateInfoItems;
|
||||
struct PlayerClassLevelInfo
|
||||
{
|
||||
PlayerClassLevelInfo() = default;
|
||||
uint16 basehealth{0};
|
||||
uint16 basemana{0};
|
||||
uint32 basehealth{0};
|
||||
uint32 basemana{0};
|
||||
};
|
||||
|
||||
struct PlayerClassInfo
|
||||
@@ -302,9 +302,12 @@ struct PlayerClassInfo
|
||||
|
||||
struct PlayerLevelInfo
|
||||
{
|
||||
PlayerLevelInfo() { for (unsigned char & stat : stats) stat = 0; }
|
||||
PlayerLevelInfo()
|
||||
{
|
||||
stats.fill(0);
|
||||
}
|
||||
|
||||
uint8 stats[MAX_STATS];
|
||||
std::array<uint32, MAX_STATS> stats = { };
|
||||
};
|
||||
|
||||
typedef std::list<uint32> PlayerCreateInfoSpells;
|
||||
@@ -2732,7 +2735,7 @@ public:
|
||||
ActionButtonList m_actionButtons;
|
||||
|
||||
float m_auraBaseMod[BASEMOD_END][MOD_END];
|
||||
int16 m_baseRatingValue[MAX_COMBAT_RATING];
|
||||
int32 m_baseRatingValue[MAX_COMBAT_RATING];
|
||||
uint32 m_baseSpellPower;
|
||||
uint32 m_baseFeralAP;
|
||||
uint32 m_baseManaRegen;
|
||||
|
||||
@@ -108,12 +108,11 @@ void Player::_SavePlayerSettings(CharacterDatabaseTransaction trans)
|
||||
void Player::UpdatePlayerSetting(std::string source, uint8 index, uint32 value)
|
||||
{
|
||||
auto itr = m_charSettingsMap.find(source);
|
||||
uint8 size = index + 1;
|
||||
|
||||
if (itr == m_charSettingsMap.end())
|
||||
{
|
||||
// Settings not found, initialize a new entry.
|
||||
uint8 size = index ? index : index + 1;
|
||||
|
||||
PlayerSettingVector setting;
|
||||
setting.resize(size);
|
||||
|
||||
@@ -129,6 +128,10 @@ void Player::UpdatePlayerSetting(std::string source, uint8 index, uint32 value)
|
||||
}
|
||||
else
|
||||
{
|
||||
if (size > itr->second.size())
|
||||
{
|
||||
itr->second.resize(size);
|
||||
}
|
||||
itr->second[index].value = value;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,20 +34,13 @@ Totem::Totem(SummonPropertiesEntry const* properties, ObjectGuid owner) : Minion
|
||||
void Totem::Update(uint32 time)
|
||||
{
|
||||
Unit* owner = GetOwner();
|
||||
if (!owner || !owner->IsAlive() || !IsAlive())
|
||||
if (!owner || !owner->IsAlive() || !IsAlive() || m_duration <= time)
|
||||
{
|
||||
UnSummon(); // remove self
|
||||
return;
|
||||
}
|
||||
|
||||
if (m_duration <= time)
|
||||
{
|
||||
UnSummon(); // remove self
|
||||
return;
|
||||
}
|
||||
else
|
||||
m_duration -= time;
|
||||
|
||||
m_duration -= time;
|
||||
Creature::Update(time);
|
||||
}
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user