mirror of
https://github.com/azerothcore/azerothcore-wotlk.git
synced 2025-11-10 21:04:26 +08:00
Merge branch 'master' into ovv/systemd-socket-activation
This commit is contained in:
commit
8d13542d6a
3
data/sql/updates/db_world/2025_05_23_04.sql
Normal file
3
data/sql/updates/db_world/2025_05_23_04.sql
Normal file
@ -0,0 +1,3 @@
|
||||
-- DB update 2025_05_23_03 -> 2025_05_23_04
|
||||
--
|
||||
DELETE FROM `spell_linked_spell` WHERE `spell_trigger`=24707;
|
||||
3
data/sql/updates/db_world/2025_05_23_05.sql
Normal file
3
data/sql/updates/db_world/2025_05_23_05.sql
Normal file
@ -0,0 +1,3 @@
|
||||
-- DB update 2025_05_23_04 -> 2025_05_23_05
|
||||
-- Captured Totem - NON_ATTACKABLE
|
||||
UPDATE `creature_template` SET `unit_flags` = `unit_flags`|2 WHERE (`entry` = 23811);
|
||||
13
data/sql/updates/db_world/2025_05_23_06.sql
Normal file
13
data/sql/updates/db_world/2025_05_23_06.sql
Normal file
@ -0,0 +1,13 @@
|
||||
-- DB update 2025_05_23_05 -> 2025_05_23_06
|
||||
-- Warp Storm (21322)
|
||||
DELETE FROM `creature_template_addon` WHERE (`entry` = 21322);
|
||||
INSERT INTO `creature_template_addon` (`entry`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `visibilityDistanceType`, `auras`) VALUES
|
||||
(21322, 0, 0, 0, 0, 0, 0, '36581');
|
||||
UPDATE `creature_template` SET `AIName` = '', `unit_flags` = `unit_flags`&~(128|256) WHERE `entry` = 21322;
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid` IN (20516,21322) AND `source_type` = 0;
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 18865 AND `id` = 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`, `event_param6`, `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
|
||||
(18865, 0, 4, 0, 6, 0, 100, 0, 0, 0, 0, 0, 0, 0, 41, 1000, 0, 0, 0, 0, 0, 204, 21322, 0, 0, 0, 0, 0, 0, 0, 'Warp Aberration - On Just Died - Despawn \'Warp Storm\' In 1000 ms'),
|
||||
(20516, 0, 0, 0, 4, 0, 100, 0, 0, 0, 0, 0, 0, 0, 11, 36577, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Warp Monstrosity - On Aggro - Cast \'Warp Storm\''),
|
||||
(20516, 0, 1, 0, 0, 0, 100, 0, 1700, 2300, 6800, 8100, 0, 0, 11, 13901, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Warp Monstrosity - In Combat - Cast \'Arcane Bolt\''),
|
||||
(20516, 0, 2, 0, 6, 0, 100, 0, 0, 0, 0, 0, 0, 0, 41, 1000, 0, 0, 0, 0, 0, 204, 21322, 0, 0, 0, 0, 0, 0, 0, 'Warp Monstrosity - On Just Died - Despawn \'Warp Storm\' In 1000 ms');
|
||||
4
data/sql/updates/db_world/2025_05_24_00.sql
Normal file
4
data/sql/updates/db_world/2025_05_24_00.sql
Normal file
@ -0,0 +1,4 @@
|
||||
-- DB update 2025_05_23_06 -> 2025_05_24_00
|
||||
--
|
||||
DELETE FROM `spell_linked_spell` WHERE `spell_trigger`=45848 AND `spell_effect`=47314;
|
||||
INSERT INTO `spell_linked_spell` (`spell_trigger`, `spell_effect`, `type`, `comment`) VALUES (45848, 47314, 0, 'Shield of the Blue 95% output damage reduction');
|
||||
15
data/sql/updates/db_world/2025_05_24_01.sql
Normal file
15
data/sql/updates/db_world/2025_05_24_01.sql
Normal file
@ -0,0 +1,15 @@
|
||||
-- DB update 2025_05_24_00 -> 2025_05_24_01
|
||||
--
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` IN (29102,29103));
|
||||
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`, `event_param6`, `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
|
||||
(29102, 0, 0, 0, 25, 0, 100, 0, 0, 0, 0, 0, 0, 0, 22, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Hearthglen Crusader - On Reset - Set Event Phase 1'),
|
||||
(29102, 0, 1, 0, 24, 1, 100, 0, 52196, 1, 1000, 2000, 0, 0, 11, 53348, 0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Hearthglen Crusader - On Target Buffed With \'Frostbrood Vanquisher\' - Cast \'Arrow Assault\' (Phase 1)'),
|
||||
(29102, 0, 2, 0, 9, 1, 100, 0, 2000, 4000, 4000, 6000, 40, 150, 11, 53345, 64, 0, 1, 0, 0, 9, 0, 40, 150, 0, 0, 0, 0, 0, 'Hearthglen Crusader - Within 40-150 Range - Cast \'Arrow Assault\' (Phase 1)'),
|
||||
(29102, 0, 3, 0, 8, 0, 100, 0, 53110, 1, 0, 0, 0, 0, 22, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Hearthglen Crusader - On Spellhit \'Devour Humanoid\' - Set Event Phase 2'),
|
||||
(29103, 0, 0, 0, 25, 0, 100, 0, 0, 0, 0, 0, 0, 0, 22, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Tirisfal Crusader - On Reset - Set Event Phase 1'),
|
||||
(29103, 0, 1, 0, 24, 1, 100, 0, 52196, 1, 1000, 2000, 0, 0, 11, 53348, 0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Tirisfal Crusader - On Target Buffed With \'Frostbrood Vanquisher\' - Cast \'Arrow Assault\' (Phase 1)'),
|
||||
(29103, 0, 2, 0, 9, 1, 100, 0, 2000, 4000, 4000, 6000, 40, 150, 11, 53345, 64, 0, 1, 0, 0, 9, 0, 40, 150, 0, 0, 0, 0, 0, 'Tirisfal Crusader - Within 40-150 Range - Cast \'Arrow Assault\' (Phase 1)'),
|
||||
(29103, 0, 3, 0, 8, 0, 100, 0, 53110, 0, 0, 0, 0, 0, 22, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Tirisfal Crusader - On Spellhit \'Devour Humanoid\' - Set Event Phase 2');
|
||||
|
||||
DELETE FROM `spell_script_names` WHERE `spell_id`=53111 AND `ScriptName`='spell_q12779_an_end_to_all_things_devour_aura';
|
||||
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES (53111, 'spell_q12779_an_end_to_all_things_devour_aura');
|
||||
14
data/sql/updates/db_world/2025_05_24_02.sql
Normal file
14
data/sql/updates/db_world/2025_05_24_02.sql
Normal file
@ -0,0 +1,14 @@
|
||||
-- DB update 2025_05_24_01 -> 2025_05_24_02
|
||||
--
|
||||
DELETE FROM `spell_proc_event` WHERE `entry` IN (45396,45398);
|
||||
INSERT INTO `spell_proc_event` (`entry`, `SchoolMask`, `SpellFamilyName`, `SpellFamilyMask0`, `SpellFamilyMask1`, `SpellFamilyMask2`, `procFlags`, `procEx`, `procPhase`, `ppmRate`, `CustomChance`, `Cooldown`) VALUES
|
||||
(45396, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 45000),
|
||||
(45398, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45000);
|
||||
|
||||
DELETE FROM `spell_script_names` WHERE `spell_id` IN (45396,45398) AND `ScriptName`='spell_gen_weapon_coating_enchant';
|
||||
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
|
||||
(45396, 'spell_gen_weapon_coating_enchant'),
|
||||
(45398, 'spell_gen_weapon_coating_enchant');
|
||||
|
||||
UPDATE `spell_dbc` SET `ProcTypeMask` = 81920,`ProcChance` = 100,`Effect_1` = 6,`EffectBasePoints_1` = 99,`EffectDieSides_1` = 1,`EffectTriggerSpell_1` = 45403,`EffectAura_1` = 42,`ImplicitTargetA_1` = 1 WHERE `ID` = 45396;
|
||||
UPDATE `spell_dbc` SET `ProcTypeMask` = 68,`ProcChance` = 100,`Effect_1` = 6,`EffectBasePoints_1` = 99,`EffectDieSides_1` = 1,`EffectTriggerSpell_1` = 45401,`EffectAura_1` = 42,`ImplicitTargetA_1` = 1 WHERE `ID` = 45398;
|
||||
11
data/sql/updates/db_world/2025_05_26_00.sql
Normal file
11
data/sql/updates/db_world/2025_05_26_00.sql
Normal file
@ -0,0 +1,11 @@
|
||||
-- DB update 2025_05_24_02 -> 2025_05_26_00
|
||||
-- Eye of Acherus
|
||||
DELETE FROM `creature_template_spell` WHERE (`CreatureID` = 28511);
|
||||
INSERT INTO `creature_template_spell` (`CreatureID`, `Index`, `Spell`, `VerifiedBuild`) VALUES
|
||||
(28511, 0, 51859, 0),
|
||||
(28511, 1, 51904, 0),
|
||||
(28511, 2, 52006, 0),
|
||||
(28511, 4, 52694, 0);
|
||||
|
||||
DELETE FROM `spell_script_names` WHERE `spell_id`=52694 AND `ScriptName`='spell_q12641_death_comes_from_on_high_recall_eye';
|
||||
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES (52694, 'spell_q12641_death_comes_from_on_high_recall_eye');
|
||||
12
data/sql/updates/db_world/2025_05_27_00.sql
Normal file
12
data/sql/updates/db_world/2025_05_27_00.sql
Normal file
@ -0,0 +1,12 @@
|
||||
-- DB update 2025_05_26_00 -> 2025_05_27_00
|
||||
-- 30695 (Portal Keeper)
|
||||
DELETE FROM `spelldifficulty_dbc` WHERE `ID` IN (58529,58532);
|
||||
INSERT INTO `spelldifficulty_dbc` (`ID`, `DifficultySpellID_1`, `DifficultySpellID_2`, `DifficultySpellID_3`, `DifficultySpellID_4`) VALUES
|
||||
(58529, 58529, 61592, 0, 0),
|
||||
(58532, 58532, 61594, 0, 0);
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 30695);
|
||||
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`, `event_param6`, `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
|
||||
(30695, 0, 0, 0, 0, 0, 100, 0, 3000, 6000, 6000, 8000, 0, 0, 11, 58529, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Portal Keeper - In Combat - Cast \'Arcane Missiles\''),
|
||||
(30695, 0, 1, 0, 0, 0, 100, 0, 13000, 19000, 13000, 19000, 0, 0, 11, 58532, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Portal Keeper - In Combat - Cast \'Frostbolt Volley\''),
|
||||
(30695, 0, 2, 0, 0, 0, 100, 0, 6000, 9000, 9000, 14000, 0, 0, 11, 58534, 64, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 'Portal Keeper - In Combat - Cast \'Deep Freeze\'');
|
||||
174
data/sql/updates/db_world/2025_05_27_01.sql
Normal file
174
data/sql/updates/db_world/2025_05_27_01.sql
Normal file
@ -0,0 +1,174 @@
|
||||
-- DB update 2025_05_27_00 -> 2025_05_27_01
|
||||
DROP TABLE IF EXISTS `player_shapeshift_model`;
|
||||
DROP TABLE IF EXISTS `player_totem_model`;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `player_shapeshift_model` (
|
||||
`ShapeshiftID` TINYINT unsigned NOT NULL,
|
||||
`RaceID` TINYINT unsigned NOT NULL,
|
||||
`CustomizationID` TINYINT unsigned NOT NULL,
|
||||
`GenderID` TINYINT unsigned NOT NULL,
|
||||
`ModelID` INT unsigned NOT NULL,
|
||||
PRIMARY KEY (`ShapeshiftID`, `RaceID`, `CustomizationID`, `GenderID`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 PACK_KEYS=0;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `player_totem_model` (
|
||||
`TotemID` TINYINT unsigned NOT NULL,
|
||||
`RaceID` TINYINT unsigned NOT NULL,
|
||||
`ModelID` INT unsigned NOT NULL,
|
||||
PRIMARY KEY (`TotemID`, `RaceID`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 PACK_KEYS=0;
|
||||
|
||||
DELETE FROM `player_shapeshift_model`;
|
||||
INSERT INTO `player_shapeshift_model` (`ShapeshiftID`, `RaceID`, `CustomizationID`, `GenderID`, `ModelID`) VALUES
|
||||
-- Cat Form
|
||||
-- Night Elf
|
||||
(1, 4, 0, 2, 29407), -- Green
|
||||
(1, 4, 1, 2, 29407), -- Light Green
|
||||
(1, 4, 2, 2, 29407), -- Dark Green
|
||||
(1, 4, 3, 2, 29406), -- Light Blue
|
||||
(1, 4, 4, 2, 29408), -- White
|
||||
(1, 4, 7, 2, 29405), -- Violet
|
||||
(1, 4, 8, 2, 29405), -- Violet
|
||||
(1, 4, 255, 2, 892), -- Dark Blue
|
||||
-- Tauren
|
||||
-- Male
|
||||
(1, 6, 12, 0, 29409), -- White
|
||||
(1, 6, 13, 0, 29409), -- White
|
||||
(1, 6, 14, 0, 29409), -- White
|
||||
(1, 6, 18, 0, 29409), -- Completely White
|
||||
(1, 6, 9, 0, 29410), -- Light Brown
|
||||
(1, 6, 10, 0, 29410), -- Light Brown
|
||||
(1, 6, 11, 0, 29410), -- Light Brown
|
||||
(1, 6, 6, 0, 29411), -- Brown
|
||||
(1, 6, 7, 0, 29411), -- Brown
|
||||
(1, 6, 8, 0, 29411), -- Brown
|
||||
(1, 6, 0, 0, 29412), -- Dark
|
||||
(1, 6, 1, 0, 29412), -- Dark
|
||||
(1, 6, 2, 0, 29412), -- Dark
|
||||
(1, 6, 3, 0, 29412), -- Dark Grey
|
||||
(1, 6, 4, 0, 29412), -- Dark Grey
|
||||
(1, 6, 5, 0, 29412), -- Dark Grey
|
||||
(1, 6, 255, 0, 8571), -- Grey
|
||||
-- Female
|
||||
(1, 6, 10, 1, 29409), -- White
|
||||
(1, 6, 6, 1, 29410), -- Light Brown
|
||||
(1, 6, 7, 1, 29410), -- Light Brown
|
||||
(1, 6, 4, 1, 29411), -- Brown
|
||||
(1, 6, 5, 1, 29411), -- Brown
|
||||
(1, 6, 0, 1, 29412), -- Dark
|
||||
(1, 6, 1, 1, 29412), -- Dark
|
||||
(1, 6, 2, 1, 29412), -- Dark
|
||||
(1, 6, 3, 1, 29412), -- Dark
|
||||
(1, 6, 255, 1, 8571), -- Grey
|
||||
-- Bear Form
|
||||
-- Night Elf
|
||||
(5, 4, 0, 2, 29413), -- Green (29415?)
|
||||
(5, 4, 1, 2, 29413), -- Light Green (29415?)
|
||||
(5, 4, 2, 2, 29413), -- Dark Green (29415?)
|
||||
(5, 4, 6, 2, 29414), -- Dark Blue
|
||||
(5, 4, 4, 2, 29416), -- White
|
||||
(5, 4, 3, 2, 29417), -- Light Blue
|
||||
(5, 4, 255, 2, 2281), -- Violet
|
||||
-- Dire Bear Form
|
||||
(8, 4, 0, 2, 29413), -- Green (29415?)
|
||||
(8, 4, 1, 2, 29413), -- Light Green (29415?)
|
||||
(8, 4, 2, 2, 29413), -- Dark Green (29415?)
|
||||
(8, 4, 6, 2, 29414), -- Dark Blue
|
||||
(8, 4, 4, 2, 29416), -- White
|
||||
(8, 4, 3, 2, 29417), -- Light Blue
|
||||
(8, 4, 255, 2, 2281), -- Violet
|
||||
-- Bear Form
|
||||
-- Tauren
|
||||
-- Male
|
||||
(5, 6, 0, 0, 29418), -- Dark (Black)
|
||||
(5, 6, 1, 0, 29418), -- Dark (Black)
|
||||
(5, 6, 2, 0, 29418), -- Dark (Black)
|
||||
(5, 6, 3, 0, 29419), -- White
|
||||
(5, 6, 4, 0, 29419), -- White
|
||||
(5, 6, 5, 0, 29419), -- White
|
||||
(5, 6, 12, 0, 29419), -- White
|
||||
(5, 6, 13, 0, 29419), -- White
|
||||
(5, 6, 14, 0, 29419), -- White
|
||||
(5, 6, 9, 0, 29420), -- Light Brown/Grey
|
||||
(5, 6, 10, 0, 29420), -- Light Brown/Grey
|
||||
(5, 6, 11, 0, 29420), -- Light Brown/Grey
|
||||
(5, 6, 15, 0, 29420), -- Light Brown/Grey
|
||||
(5, 6, 16, 0, 29420), -- Light Brown/Grey
|
||||
(5, 6, 17, 0, 29420), -- Light Brown/Grey
|
||||
(5, 6, 18, 0, 29421), -- Completely White
|
||||
(5, 6, 255, 0, 2289), -- Brown
|
||||
-- Dire Bear Form
|
||||
(8, 6, 0, 0, 29418), -- Dark (Black)
|
||||
(8, 6, 1, 0, 29418), -- Dark (Black)
|
||||
(8, 6, 2, 0, 29418), -- Dark (Black)
|
||||
(8, 6, 3, 0, 29419), -- White
|
||||
(8, 6, 4, 0, 29419), -- White
|
||||
(8, 6, 5, 0, 29419), -- White
|
||||
(8, 6, 12, 0, 29419), -- White
|
||||
(8, 6, 13, 0, 29419), -- White
|
||||
(8, 6, 14, 0, 29419), -- White
|
||||
(8, 6, 9, 0, 29420), -- Light Brown/Grey
|
||||
(8, 6, 10, 0, 29420), -- Light Brown/Grey
|
||||
(8, 6, 11, 0, 29420), -- Light Brown/Grey
|
||||
(8, 6, 15, 0, 29420), -- Light Brown/Grey
|
||||
(8, 6, 16, 0, 29420), -- Light Brown/Grey
|
||||
(8, 6, 17, 0, 29420), -- Light Brown/Grey
|
||||
(8, 6, 18, 0, 29421), -- Completely White
|
||||
(8, 6, 255, 0, 2289), -- Brown
|
||||
-- Bear Form
|
||||
-- Female
|
||||
(5, 6, 0, 1, 29418), -- Dark (Black)
|
||||
(5, 6, 1, 1, 29418), -- Dark (Black)
|
||||
(5, 6, 2, 1, 29419), -- White
|
||||
(5, 6, 3, 1, 29419), -- White
|
||||
(5, 6, 6, 1, 29420), -- Light Brown/Grey
|
||||
(5, 6, 7, 1, 29420), -- Light Brown/Grey
|
||||
(5, 6, 8, 1, 29420), -- Light Brown/Grey
|
||||
(5, 6, 9, 1, 29420), -- Light Brown/Grey
|
||||
(5, 6, 10, 1, 29421), -- Completely White
|
||||
(5, 6, 255, 1, 2289), -- Brown
|
||||
-- Dire Bear Form
|
||||
(8, 6, 0, 1, 29418), -- Dark (Black)
|
||||
(8, 6, 1, 1, 29418), -- Dark (Black)
|
||||
(8, 6, 2, 1, 29419), -- White
|
||||
(8, 6, 3, 1, 29419), -- White
|
||||
(8, 6, 6, 1, 29420), -- Light Brown/Grey
|
||||
(8, 6, 7, 1, 29420), -- Light Brown/Grey
|
||||
(8, 6, 8, 1, 29420), -- Light Brown/Grey
|
||||
(8, 6, 9, 1, 29420), -- Light Brown/Grey
|
||||
(8, 6, 10, 1, 29421), -- Completely White
|
||||
(8, 6, 255, 1, 2289), -- Brown
|
||||
-- Epic Flight Form
|
||||
(27, 4, 255, 2, 21243),
|
||||
(27, 6, 255, 2, 21244),
|
||||
-- Flight Form
|
||||
(29, 4, 255, 2, 20857),
|
||||
(29, 6, 255, 2, 20872);
|
||||
|
||||
DELETE FROM `player_totem_model`;
|
||||
INSERT INTO `player_totem_model` (`TotemID`, `RaceID`, `ModelID`) VALUES
|
||||
-- Orc
|
||||
(1, 2, 30758), -- Fire
|
||||
(2, 2, 30757), -- Earth
|
||||
(3, 2, 30759), -- Water
|
||||
(4, 2, 30756), -- Air
|
||||
-- Dwarf
|
||||
(1, 3, 30754),
|
||||
(2, 3, 30753),
|
||||
(3, 3, 30755),
|
||||
(4, 3, 30736),
|
||||
-- Troll
|
||||
(1, 8, 30762),
|
||||
(2, 8, 30761),
|
||||
(3, 8, 30763),
|
||||
(4, 8, 30760),
|
||||
-- Tauren
|
||||
(1, 6, 4589),
|
||||
(2, 6, 4588),
|
||||
(3, 6, 4587),
|
||||
(4, 6, 4590),
|
||||
-- Draenei
|
||||
(1, 11, 19074),
|
||||
(2, 11, 19073),
|
||||
(3, 11, 19075),
|
||||
(4, 11, 19071);
|
||||
3
data/sql/updates/db_world/2025_05_27_02.sql
Normal file
3
data/sql/updates/db_world/2025_05_27_02.sql
Normal file
@ -0,0 +1,3 @@
|
||||
-- DB update 2025_05_27_01 -> 2025_05_27_02
|
||||
-- From: Syntax: .guild rank [$CharacterName] #Rank Set for player $CharacterName (or selected) rank #Rank in a guild.
|
||||
UPDATE `command` SET `help` = "Syntax: .guild rank [$CharacterName] #RankNumber\r\n\r\nSet for player $CharacterName (or selected) rank #Rank in a guild. Ranks value are numeric, 0 = Guild Master, 1 = Officer, etc..." WHERE `name` LIKE "guild rank";
|
||||
11
data/sql/updates/db_world/2025_05_29_00.sql
Normal file
11
data/sql/updates/db_world/2025_05_29_00.sql
Normal file
@ -0,0 +1,11 @@
|
||||
-- DB update 2025_05_27_02 -> 2025_05_29_00
|
||||
-- Adds SAI to the missing NPCs and SAI Event to execute the Timed Actionlist
|
||||
UPDATE `creature_template` SET `AIName` = "SmartAI" WHERE `entry` IN (23853, 23852, 23854, 23855, 23845);
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid` IN (23853, 23852, 23854, 23855, 23845) 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`, `event_param6`, `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
|
||||
(23845, 0, 0, 0, 11, 0, 100, 512, 0, 0, 0, 0, 0, 0, 80, 2384500, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, '[DNT] L70ETC Bergrisst Controller - On Respawn - Run Script'),
|
||||
(23855, 0, 0, 0, 11, 0, 100, 512, 0, 0, 0, 0, 0, 0, 80, 2385500, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, '[DNT] L70ETC Chief Thunder-Skins Controller - On Respawn - Run Script'),
|
||||
(23854, 0, 0, 0, 11, 0, 100, 512, 0, 0, 0, 0, 0, 0, 80, 2385400, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, '[DNT] L70ETC Sig Controller - On Respawn - Run Script'),
|
||||
(23852, 0, 0, 0, 11, 0, 100, 512, 0, 0, 0, 0, 0, 0, 80, 2385200, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, '[DNT] L70ETC Mai\'Kyl Controller - On Respawn - Run Script'),
|
||||
(23853, 0, 0, 0, 11, 0, 100, 512, 0, 0, 0, 0, 0, 0, 80, 2385300, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, '[DNT] L70ETC Samuro Controller - On Respawn - Run Script');
|
||||
3
data/sql/updates/db_world/2025_05_29_01.sql
Normal file
3
data/sql/updates/db_world/2025_05_29_01.sql
Normal file
@ -0,0 +1,3 @@
|
||||
-- DB update 2025_05_29_00 -> 2025_05_29_01
|
||||
--
|
||||
UPDATE `creature_template` SET `mechanic_immune_mask` = `mechanic_immune_mask`&~(4), `flags_extra` = `flags_extra`|2147483648 WHERE (`entry` IN (29310,31465));
|
||||
31
data/sql/updates/db_world/2025_05_30_00.sql
Normal file
31
data/sql/updates/db_world/2025_05_30_00.sql
Normal file
@ -0,0 +1,31 @@
|
||||
-- DB update 2025_05_29_01 -> 2025_05_30_00
|
||||
|
||||
-- Death Knight Champions
|
||||
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 29106) AND (`source_type` = 0) AND (`id` IN (4));
|
||||
|
||||
-- Rampaging Abominations
|
||||
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 29115) AND (`source_type` = 0) AND (`id` IN (2));
|
||||
|
||||
-- Volatile Ghouls
|
||||
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 29136) AND (`source_type` = 0) AND (`id` IN (1));
|
||||
|
||||
-- Scarlet Crusaders
|
||||
UPDATE `creature_template` SET `flags_extra` = `flags_extra` &~134217728 WHERE (`entry` = 28529);
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 0) AND (`entryorguid` IN (-128705, -128706, -128707, -128708, -128709, -128710, -128711, -128712, -128713));
|
||||
|
||||
-- Havenshire Colts
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 0) AND (`entryorguid` IN (-129243, -129245, -129246, -129248, -129249, -129251));
|
||||
|
||||
-- Havenshire Mares
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 0) AND (`entryorguid` IN (-129230, -129234, -129235, -129236));
|
||||
|
||||
-- Havenshire Stallions
|
||||
DELETE FROM `smart_scripts` WHERE (`entryorguid` = -129210) AND (`source_type` = 0) AND (`id` IN (5));
|
||||
DELETE FROM `smart_scripts` WHERE (`entryorguid` IN (-129208, -129214)) AND (`source_type` = 0) AND (`id` IN (3));
|
||||
|
||||
-- Set Active on Kitrik
|
||||
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 28683;
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 28683) 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`, `event_param6`, `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
|
||||
(28683, 0, 0, 0, 25, 0, 100, 0, 0, 0, 0, 0, 0, 0, 48, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Stable Master Kitrik - On Reset - Set Active On');
|
||||
7
data/sql/updates/db_world/2025_05_30_01.sql
Normal file
7
data/sql/updates/db_world/2025_05_30_01.sql
Normal file
@ -0,0 +1,7 @@
|
||||
-- DB update 2025_05_30_00 -> 2025_05_30_01
|
||||
--
|
||||
DELETE FROM `spell_script_names` WHERE `spell_id`=30610 AND `ScriptName`='spell_karazhan_wrath_titans_stacker';
|
||||
DELETE FROM `spell_script_names` WHERE `spell_id`=30554 AND `ScriptName`='spell_karazhan_wrath_titans_aura';
|
||||
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
|
||||
(30610, 'spell_karazhan_wrath_titans_stacker'),
|
||||
(30554, 'spell_karazhan_wrath_titans_aura');
|
||||
5
data/sql/updates/db_world/2025_05_30_02.sql
Normal file
5
data/sql/updates/db_world/2025_05_30_02.sql
Normal file
@ -0,0 +1,5 @@
|
||||
-- DB update 2025_05_30_01 -> 2025_05_30_02
|
||||
--
|
||||
DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId` = 13) AND (`SourceGroup` = 1) AND (`SourceEntry` = 58152) AND (`SourceId` = 0) AND (`ElseGroup` = 18) AND (`ConditionTypeOrReference` = 31);
|
||||
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
|
||||
(13, 1, 58152, 0, 18, 31, 0, 3, 29321, 0, 0, 0, 0, '', 'Defense System - Arcane Lightning - Ichor Globule');
|
||||
5
data/sql/updates/db_world/2025_05_30_03.sql
Normal file
5
data/sql/updates/db_world/2025_05_30_03.sql
Normal file
@ -0,0 +1,5 @@
|
||||
-- DB update 2025_05_30_02 -> 2025_05_30_03
|
||||
--
|
||||
DELETE FROM `spell_linked_spell` WHERE `spell_trigger`=-61874 AND `spell_effect`=24870;
|
||||
DELETE FROM `spell_script_names` WHERE `spell_id`=61874 AND `ScriptName`='spell_item_noblegarden_chocolate';
|
||||
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES (61874, 'spell_item_noblegarden_chocolate');
|
||||
3
data/sql/updates/db_world/2025_05_30_04.sql
Normal file
3
data/sql/updates/db_world/2025_05_30_04.sql
Normal file
@ -0,0 +1,3 @@
|
||||
-- DB update 2025_05_30_03 -> 2025_05_30_04
|
||||
--
|
||||
UPDATE `smart_scripts` SET `action_param2` = 64 WHERE `entryorguid` = 30278 AND `source_type` = 0 AND `id` IN (2,3);
|
||||
5
data/sql/updates/db_world/2025_05_30_05.sql
Normal file
5
data/sql/updates/db_world/2025_05_30_05.sql
Normal file
@ -0,0 +1,5 @@
|
||||
-- DB update 2025_05_30_04 -> 2025_05_30_05
|
||||
--
|
||||
DELETE FROM `command` WHERE `name`IN('debug boundary');
|
||||
INSERT INTO `command` (`name`, `security`, `help`) VALUES
|
||||
('debug boundary', 3, 'Syntax: .debug boundary [duration] [fill] [z]\nOptional arguments:\n- duration: Duration in ms (default: 5000, max: 180000).\n- fill: Fills the boundary with markers.\n- z: Includes z-axis in visualization.');
|
||||
5
data/sql/updates/db_world/2025_05_30_06.sql
Normal file
5
data/sql/updates/db_world/2025_05_30_06.sql
Normal file
@ -0,0 +1,5 @@
|
||||
-- DB update 2025_05_30_05 -> 2025_05_30_06
|
||||
-- Azure Ring Captain (28236)
|
||||
DELETE FROM `creature_template_movement` WHERE (`CreatureId` = 28236);
|
||||
INSERT INTO `creature_template_movement` (`CreatureId`, `Ground`, `Swim`, `Flight`, `Rooted`, `Chase`, `Random`, `InteractionPauseTimer`) VALUES
|
||||
(28236, 0, 0, 1, 0, 0, 0, 0);
|
||||
5
data/sql/updates/db_world/2025_05_30_07.sql
Normal file
5
data/sql/updates/db_world/2025_05_30_07.sql
Normal file
@ -0,0 +1,5 @@
|
||||
-- DB update 2025_05_30_06 -> 2025_05_30_07
|
||||
--
|
||||
DELETE FROM `command` WHERE `name` = 'group revive';
|
||||
INSERT INTO `command` (`name`, `security`, `help`) VALUES
|
||||
('group revive', 2, 'Syntax: .group revive\r\n\r\nRevives all players in your group.');
|
||||
51
data/sql/updates/db_world/2025_05_30_08.sql
Normal file
51
data/sql/updates/db_world/2025_05_30_08.sql
Normal file
@ -0,0 +1,51 @@
|
||||
-- DB update 2025_05_30_07 -> 2025_05_30_08
|
||||
|
||||
-- Edit Spell Timers
|
||||
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 25708;
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 25708);
|
||||
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`, `event_param6`, `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
|
||||
(25708, 0, 0, 1, 54, 0, 100, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Sinister Reflection - On Just Summoned - Set Reactstate Passive'),
|
||||
(25708, 0, 1, 0, 61, 0, 100, 512, 0, 0, 0, 0, 0, 0, 134, 45785, 2, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Sinister Reflection - On Just Summoned - Invoker Cast \'Sinister Reflection Clone\''),
|
||||
(25708, 0, 2, 3, 60, 0, 100, 1, 3000, 3000, 0, 0, 0, 0, 8, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Sinister Reflection - On Update - Set Reactstate Aggressive (No Repeat)'),
|
||||
(25708, 0, 3, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 21, 50, 0, 0, 0, 0, 0, 0, 0, 'Sinister Reflection - On Update - Start Attacking (No Repeat)'),
|
||||
(25708, 0, 4, 0, 6, 0, 100, 512, 0, 0, 0, 0, 0, 0, 41, 2000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Sinister Reflection - On Just Died - Despawn In 2000 ms'),
|
||||
(25708, 0, 5, 0, 38, 0, 100, 512, 1, 1, 0, 0, 0, 0, 22, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Sinister Reflection - On Data Set 1 1 - Set Event Phase 1'),
|
||||
(25708, 0, 6, 0, 38, 0, 100, 512, 1, 2, 0, 0, 0, 0, 22, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Sinister Reflection - On Data Set 1 2 - Set Event Phase 2'),
|
||||
(25708, 0, 7, 0, 38, 0, 100, 512, 1, 3, 0, 0, 0, 0, 22, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Sinister Reflection - On Data Set 1 3 - Set Event Phase 3'),
|
||||
(25708, 0, 8, 0, 38, 0, 100, 512, 1, 4, 0, 0, 0, 0, 22, 4, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Sinister Reflection - On Data Set 1 4 - Set Event Phase 4'),
|
||||
(25708, 0, 9, 0, 38, 0, 100, 512, 1, 5, 0, 0, 0, 0, 22, 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Sinister Reflection - On Data Set 1 5 - Set Event Phase 5'),
|
||||
(25708, 0, 10, 0, 38, 0, 100, 512, 1, 6, 0, 0, 0, 0, 22, 6, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Sinister Reflection - On Data Set 1 6 - Set Event Phase 6'),
|
||||
(25708, 0, 11, 0, 38, 0, 100, 512, 1, 7, 0, 0, 0, 0, 22, 7, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Sinister Reflection - On Data Set 1 7 - Set Event Phase 7'),
|
||||
(25708, 0, 12, 0, 38, 0, 100, 512, 1, 8, 0, 0, 0, 0, 22, 8, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Sinister Reflection - On Data Set 1 8 - Set Event Phase 8'),
|
||||
(25708, 0, 13, 0, 38, 0, 100, 512, 1, 9, 0, 0, 0, 0, 22, 9, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Sinister Reflection - On Data Set 1 9 - Set Event Phase 9'),
|
||||
(25708, 0, 14, 0, 38, 0, 100, 512, 1, 11, 0, 0, 0, 0, 22, 11, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Sinister Reflection - On Data Set 1 11 - Set Event Phase 11'),
|
||||
(25708, 0, 15, 0, 0, 1, 100, 1, 0, 0, 0, 0, 0, 0, 11, 42459, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Sinister Reflection - In Combat - Cast \'Dual Wield\' (Phase 1) (No Repeat)'),
|
||||
(25708, 0, 16, 0, 0, 1, 100, 0, 4000, 8000, 9000, 13000, 0, 0, 11, 17207, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Sinister Reflection - In Combat - Cast \'Whirlwind\' (Phase 1)'),
|
||||
(25708, 0, 17, 0, 0, 2, 100, 0, 4000, 8000, 5000, 8000, 0, 0, 11, 38921, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Sinister Reflection - In Combat - Cast \'Holy Shock\' (Phase 2)'),
|
||||
(25708, 0, 18, 0, 0, 2, 100, 0, 6000, 13000, 15000, 25000, 0, 0, 11, 37369, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Sinister Reflection - In Combat - Cast \'Hammer of Justice\' (Phase 2)'),
|
||||
(25708, 0, 19, 0, 9, 4, 100, 0, 3000, 3000, 2000, 2000, 5, 30, 11, 16496, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Sinister Reflection - Within 5-30 Range - Cast \'Shoot\' (Phase 3)'),
|
||||
(25708, 0, 20, 0, 9, 4, 100, 0, 3000, 3000, 10000, 15000, 5, 30, 11, 48098, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Sinister Reflection - Within 5-30 Range - Cast \'Multi-Shot\' (Phase 3)'),
|
||||
(25708, 0, 21, 0, 9, 4, 100, 0, 3000, 3000, 15000, 25000, 0, 5, 11, 40652, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Sinister Reflection - Within 0-5 Range - Cast \'Wing Clip\' (Phase 3)'),
|
||||
(25708, 0, 22, 0, 9, 4, 100, 512, 0, 0, 0, 0, 0, 20, 21, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Sinister Reflection - Within 0-20 Range - Disable Combat Movement (Phase 3)'),
|
||||
(25708, 0, 23, 0, 9, 4, 100, 512, 0, 0, 0, 0, 25, 100, 21, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Sinister Reflection - Within 25-100 Range - Enable Combat Movement (Phase 3)'),
|
||||
(25708, 0, 24, 0, 0, 8, 100, 1, 0, 0, 0, 0, 0, 0, 11, 42459, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Sinister Reflection - In Combat - Cast \'Dual Wield\' (Phase 4) (No Repeat)'),
|
||||
(25708, 0, 25, 0, 0, 8, 100, 0, 4000, 6000, 4000, 6000, 0, 0, 11, 45897, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Sinister Reflection - In Combat - Cast \'Hemorrhage\' (Phase 4)'),
|
||||
(25708, 0, 26, 0, 0, 16, 100, 0, 4000, 7000, 4000, 5000, 0, 0, 11, 47077, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Sinister Reflection - In Combat - Cast \'Holy Smite\' (Phase 5)'),
|
||||
(25708, 0, 27, 0, 14, 16, 100, 0, 10000, 40, 10000, 15000, 0, 0, 11, 47079, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Sinister Reflection - Friendly At 10000 Health - Cast \'Renew\' (Phase 5)'),
|
||||
(25708, 0, 28, 0, 9, 16, 100, 512, 0, 0, 0, 0, 0, 20, 21, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Sinister Reflection - Within 0-20 Range - Disable Combat Movement (Phase 5)'),
|
||||
(25708, 0, 29, 0, 9, 16, 100, 512, 0, 0, 0, 0, 25, 100, 21, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Sinister Reflection - Within 25-100 Range - Enable Combat Movement (Phase 5)'),
|
||||
(25708, 0, 30, 0, 0, 32, 100, 1, 0, 0, 0, 0, 0, 0, 11, 42459, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Sinister Reflection - In Combat - Cast \'Dual Wield\' (Phase 6) (No Repeat)'),
|
||||
(25708, 0, 31, 0, 0, 32, 100, 0, 4000, 8000, 4000, 6000, 0, 0, 11, 58843, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Sinister Reflection - In Combat - Cast \'Plague Strike\' (Phase 6)'),
|
||||
(25708, 0, 32, 0, 0, 64, 100, 1, 0, 0, 0, 0, 0, 0, 11, 42459, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Sinister Reflection - In Combat - Cast \'Dual Wield\' (Phase 7) (No Repeat)'),
|
||||
(25708, 0, 33, 0, 0, 64, 100, 0, 4000, 8000, 6000, 10000, 0, 0, 11, 47071, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Sinister Reflection - In Combat - Cast \'Earth Shock\' (Phase 7)'),
|
||||
(25708, 0, 34, 0, 0, 128, 100, 0, 4000, 5000, 2000, 3000, 0, 0, 11, 47074, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Sinister Reflection - In Combat - Cast \'Fireball\' (Phase 8)'),
|
||||
(25708, 0, 35, 0, 9, 128, 100, 512, 0, 0, 0, 0, 0, 20, 21, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Sinister Reflection - Within 0-20 Range - Disable Combat Movement (Phase 8)'),
|
||||
(25708, 0, 36, 0, 9, 128, 100, 512, 0, 0, 0, 0, 25, 100, 21, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Sinister Reflection - Within 25-100 Range - Enable Combat Movement (Phase 8)'),
|
||||
(25708, 0, 37, 0, 0, 256, 100, 0, 4000, 4500, 1500, 2500, 0, 0, 11, 47076, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Sinister Reflection - In Combat - Cast \'Shadow Bolt\' (Phase 9)'),
|
||||
(25708, 0, 38, 0, 0, 256, 100, 0, 7000, 8000, 10000, 12000, 0, 0, 11, 46190, 0, 0, 0, 0, 0, 5, 30, 0, 0, 0, 0, 0, 0, 0, 'Sinister Reflection - In Combat - Cast \'Curse of Agony\' (Phase 9)'),
|
||||
(25708, 0, 39, 0, 9, 256, 100, 512, 0, 0, 0, 0, 0, 20, 21, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Sinister Reflection - Within 0-20 Range - Disable Combat Movement (Phase 9)'),
|
||||
(25708, 0, 40, 0, 9, 256, 100, 512, 0, 0, 0, 0, 25, 100, 21, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Sinister Reflection - Within 25-100 Range - Enable Combat Movement (Phase 9)'),
|
||||
(25708, 0, 41, 0, 0, 1024, 100, 0, 4000, 5000, 2000, 3000, 0, 0, 11, 47072, 0, 0, 0, 0, 0, 5, 30, 0, 0, 0, 0, 0, 0, 0, 'Sinister Reflection - In Combat - Cast \'Moonfire\' (Phase 11)'),
|
||||
(25708, 0, 42, 0, 9, 1024, 100, 512, 0, 0, 0, 0, 0, 20, 21, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Sinister Reflection - Within 0-20 Range - Disable Combat Movement (Phase 11)'),
|
||||
(25708, 0, 43, 0, 9, 1024, 100, 512, 0, 0, 0, 0, 25, 100, 21, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Sinister Reflection - Within 25-100 Range - Enable Combat Movement (Phase 11)');
|
||||
3
data/sql/updates/db_world/2025_05_31_00.sql
Normal file
3
data/sql/updates/db_world/2025_05_31_00.sql
Normal file
@ -0,0 +1,3 @@
|
||||
-- DB update 2025_05_30_08 -> 2025_05_31_00
|
||||
--
|
||||
UPDATE `gameobject_template` SET `ScriptName` = 'go_eredar_twins_blaze' WHERE (`entry` = 187366);
|
||||
35
data/sql/updates/db_world/2025_05_31_01.sql
Normal file
35
data/sql/updates/db_world/2025_05_31_01.sql
Normal file
@ -0,0 +1,35 @@
|
||||
-- DB update 2025_05_31_00 -> 2025_05_31_01
|
||||
|
||||
-- Remove Flight flag
|
||||
UPDATE `creature_template_movement` SET `Flight` = 0 WHERE (`CreatureId` = 28511);
|
||||
|
||||
-- Add Waypoint
|
||||
DELETE FROM `waypoint_data` WHERE `id` IN ("2851100");
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `move_type`, `action`, `action_chance`, `wpguid`) VALUES
|
||||
("2851100", 1, 2341.5713, -5672.797, 538.3942, NULL, 0, 0, 0, 100, 0),
|
||||
("2851100", 2, 1957.3962, -5844.1055, 273.86673, NULL, 0, 0, 0, 100, 0),
|
||||
("2851100", 3, 1758.007, -5876.7847, 166.86671, NULL, 0, 0, 0, 100, 0);
|
||||
|
||||
-- Set Action List
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 9 AND `entryorguid` = 2851100);
|
||||
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`, `event_param6`, `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
|
||||
(2851100, 9, 0, 0, 0, 0, 100, 512, 0, 0, 0, 0, 0, 0, 11, 51892, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Eye of Acherus - Actionlist - Cast \'Eye of Acherus Visual\''),
|
||||
(2851100, 9, 1, 0, 0, 0, 100, 512, 6000, 6000, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Eye of Acherus - Actionlist - Say Line 0'),
|
||||
(2851100, 9, 2, 0, 0, 0, 100, 512, 1000, 1000, 0, 0, 0, 0, 11, 51923, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Eye of Acherus - Actionlist - Cast \'Eye of Acherus Flight (Boost)\''),
|
||||
(2851100, 9, 3, 0, 0, 0, 100, 512, 1000, 1000, 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Eye of Acherus - Actionlist - Set Rooted Off'),
|
||||
(2851100, 9, 4, 0, 0, 0, 100, 512, 100, 100, 0, 0, 0, 0, 232, 2851100, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Eye of Acherus - Actionlist - Start Path 2851100'),
|
||||
(2851100, 9, 5, 0, 0, 0, 100, 512, 19200, 19200, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Eye of Acherus - Actionlist - Set Rooted On'),
|
||||
(2851100, 9, 6, 0, 0, 0, 100, 512, 500, 500, 0, 0, 0, 0, 11, 51890, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Eye of Acherus - Actionlist - Cast \'Eye of Acherus Flight\''),
|
||||
(2851100, 9, 7, 0, 0, 0, 100, 512, 500, 500, 0, 0, 0, 0, 28, 51923, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Eye of Acherus - Actionlist - Remove Aura \'Eye of Acherus Flight (Boost)\''),
|
||||
(2851100, 9, 8, 0, 0, 0, 100, 0, 500, 500, 0, 0, 0, 0, 28, 51860, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Eye of Acherus - Actionlist - Remove Aura \'Serverside - Root Self\''),
|
||||
(2851100, 9, 9, 0, 0, 0, 100, 512, 500, 500, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Eye of Acherus - Actionlist - Say Line 1'),
|
||||
(2851100, 9, 10, 0, 0, 0, 100, 512, 500, 500, 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Eye of Acherus - Actionlist - Set Rooted Off');
|
||||
|
||||
-- Set General SmartAI and remove script name
|
||||
UPDATE `creature_template` SET `AIName` = 'SmartAI', `ScriptName` = '' WHERE `entry` = 28511;
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 28511);
|
||||
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`, `event_param6`, `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
|
||||
(28511, 0, 0, 1, 54, 0, 100, 512, 0, 0, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Eye of Acherus - On Just Summoned - Set Rooted On'),
|
||||
(28511, 0, 1, 2, 61, 0, 100, 512, 0, 0, 0, 0, 0, 0, 11, 51860, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Eye of Acherus - On Just Summoned - Cast \'Serverside - Root Self\''),
|
||||
(28511, 0, 2, 0, 61, 0, 100, 512, 0, 0, 0, 0, 0, 0, 80, 2851100, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Eye of Acherus - On Just Summoned - Run Script');
|
||||
3
data/sql/updates/db_world/2025_06_05_00.sql
Normal file
3
data/sql/updates/db_world/2025_06_05_00.sql
Normal file
@ -0,0 +1,3 @@
|
||||
-- DB update 2025_05_31_01 -> 2025_06_05_00
|
||||
--
|
||||
UPDATE `creature_template` SET `ScriptName` = 'npc_king_varian_wrynn' WHERE (`entry` = 29611);
|
||||
7
data/sql/updates/db_world/2025_06_05_01.sql
Normal file
7
data/sql/updates/db_world/2025_06_05_01.sql
Normal file
@ -0,0 +1,7 @@
|
||||
-- DB update 2025_06_05_00 -> 2025_06_05_01
|
||||
|
||||
-- Remove Wrong Auras
|
||||
UPDATE `creature_addon` SET `auras` = '' WHERE (`guid` IN (129492, 129496, 129497, 129498, 129499));
|
||||
|
||||
-- Remove Wrong Unit Flags (Immune to npc and pc "Sniffs")
|
||||
UPDATE `creature_template` SET `unit_flags` = `unit_flags` &~(256|512) WHERE (`entry` = 28406);
|
||||
11
data/sql/updates/db_world/2025_06_05_02.sql
Normal file
11
data/sql/updates/db_world/2025_06_05_02.sql
Normal file
@ -0,0 +1,11 @@
|
||||
-- DB update 2025_06_05_01 -> 2025_06_05_02
|
||||
-- Link pre-spawned Ethereal Beacons to Nexus-Prince Shaffar so they respawn on reset
|
||||
SET @SHAFFAR_GUID := 91162;
|
||||
SET @AI_FLAGS := 1 | 2 | 8 | 16;
|
||||
|
||||
DELETE FROM `creature_formations` WHERE `leaderGUID` = @SHAFFAR_GUID;
|
||||
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`, `point_1`, `point_2`) VALUES
|
||||
(@SHAFFAR_GUID, @SHAFFAR_GUID, 0, 0, @AI_FLAGS, 0, 0),
|
||||
(@SHAFFAR_GUID, 91131, 0, 0, @AI_FLAGS, 0, 0),
|
||||
(@SHAFFAR_GUID, 91132, 0, 0, @AI_FLAGS, 0, 0),
|
||||
(@SHAFFAR_GUID, 91133, 0, 0, @AI_FLAGS, 0, 0);
|
||||
80
data/sql/updates/db_world/2025_06_05_03.sql
Normal file
80
data/sql/updates/db_world/2025_06_05_03.sql
Normal file
@ -0,0 +1,80 @@
|
||||
-- DB update 2025_06_05_02 -> 2025_06_05_03
|
||||
-- Gundrak formations
|
||||
DELETE FROM `creature_formations` WHERE `leaderGUID` IN (127026,127009,127021,127059,127113);
|
||||
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`, `point_1`, `point_2`) VALUES
|
||||
(127026, 127026, 0, 0, 3, 0, 0), -- Cobras
|
||||
(127026, 127027, 0, 0, 3, 0, 0),
|
||||
(127026, 127016, 0, 0, 3, 0, 0),
|
||||
(127009, 127009, 0, 0, 3, 0, 0),
|
||||
(127009, 127010, 0, 0, 3, 0, 0),
|
||||
(127009, 127018, 0, 0, 3, 0, 0),
|
||||
(127021, 127021, 0, 0, 3, 0, 0),
|
||||
(127021, 127022, 0, 0, 3, 0, 0),
|
||||
(127021, 127012, 0, 0, 3, 0, 0),
|
||||
(127059, 127059, 0, 0, 3, 0, 0), -- lancer/weaver/medicine before Moorabi
|
||||
(127059, 127065, 0, 0, 3, 0, 0),
|
||||
(127059, 127047, 0, 0, 3, 0, 0),
|
||||
(127113, 127113, 0, 0, 3, 0, 0), -- inciter + 2 earthshakers
|
||||
(127113, 127068, 0, 0, 3, 0, 0),
|
||||
(127113, 127067, 0, 0, 3, 0, 0);
|
||||
|
||||
-- Lancer/Fire Weaver
|
||||
UPDATE `creature_formations` SET `groupAI`=515 WHERE `memberGUID`=127045 AND `leaderGUID`=127045;
|
||||
UPDATE `creature_formations` SET `groupAI`=515 WHERE `memberGUID`=127058 AND `leaderGUID`=127045;
|
||||
|
||||
-- God hunter/Medicine MANAGE
|
||||
UPDATE `creature_formations` SET `groupAI`=515 WHERE `memberGUID`=127054 AND `leaderGUID`=127054;
|
||||
UPDATE `creature_formations` SET `groupAI`=515 WHERE `memberGUID`=127064 AND `leaderGUID`=127054;
|
||||
-- Note: Packs of 4 hunter/lancer/fire weaver/lancer seem to always social aggro, source looks similar
|
||||
|
||||
-- Spelldifficulty
|
||||
DELETE FROM `spelldifficulty_dbc` WHERE `ID` IN(55700,55703,55602,55603,55659,55613,55622,55635,55636,16172,35946,55624,55599,55597,55530,55663,55348,55521);
|
||||
INSERT INTO `spelldifficulty_dbc` (`ID`, `DifficultySpellID_1`, `DifficultySpellID_2`, `DifficultySpellID_3`, `DifficultySpellID_4`) VALUES
|
||||
(55700, 55700, 59019, 0, 0),
|
||||
(55703, 55703, 59020, 0, 0),
|
||||
(55602, 55602, 59021, 0, 0),
|
||||
(55603, 55603, 59022, 0, 0),
|
||||
(55659, 55659, 58972, 0, 0),
|
||||
(55613, 55613, 58971, 0, 0),
|
||||
(55622, 55622, 58978, 0, 0),
|
||||
(55635, 55635, 58975, 0, 0),
|
||||
(55636, 55636, 58977, 0, 0),
|
||||
(16172, 16172, 58969, 0, 0),
|
||||
(35946, 35946, 59146, 0, 0),
|
||||
(55624, 55624, 58973, 0, 0),
|
||||
(55599, 55599, 58981, 0, 0),
|
||||
(55597, 55597, 58980, 0, 0),
|
||||
(55530, 55530, 58991, 0, 0),
|
||||
(55663, 55663, 58992, 0, 0),
|
||||
(55348, 55348, 58966, 0, 0),
|
||||
(55521, 55521, 58967, 0, 0);
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` IN (29774,29768,29822,29819,29832,29820,29829,29826,29838,29836));
|
||||
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`, `event_param6`, `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
|
||||
(29774, 0, 0, 0, 0, 0, 100, 0, 1000, 5000, 7000, 11000, 0, 0, 11, 55700, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Spitting Cobra - In Combat - Cast \'Venom Spit\''),
|
||||
(29774, 0, 1, 0, 0, 0, 100, 0, 2900, 6600, 10000, 12000, 0, 0, 11, 55703, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Spitting Cobra - In Combat - Cast \'Cobra Strike\''),
|
||||
(29768, 0, 0, 0, 0, 0, 100, 0, 1000, 5000, 7000, 11000, 0, 0, 11, 55602, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Unyielding Constrictor - In Combat - Cast \'Vicious Bite\''),
|
||||
(29768, 0, 1, 0, 0, 0, 100, 1, 1000, 1000, 0, 0, 0, 0, 11, 55603, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Unyielding Constrictor - In Combat - Cast \'Puncturing Strike\' (No Repeat)'),
|
||||
(29822, 0, 0, 0, 0, 0, 100, 0, 4000, 8000, 11000, 17000, 0, 0, 11, 55659, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Drakkari Fire Weaver - In Combat - Cast \'Lava Burst\''),
|
||||
(29822, 0, 1, 0, 0, 0, 100, 0, 1000, 6000, 7000, 10000, 0, 0, 11, 55613, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Drakkari Fire Weaver - In Combat - Cast \'Flame Shock\''),
|
||||
(29822, 0, 2, 0, 106, 0, 100, 0, 1000, 15000, 17000, 30000, 0, 10, 11, 61362, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Drakkari Fire Weaver - On Hostile in Range - Cast \'Blast Wave\''),
|
||||
(29819, 0, 0, 0, 0, 0, 100, 0, 1000, 6000, 12000, 18000, 0, 0, 11, 6713, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Drakkari Lancer - In Combat - Cast \'Disarm\''),
|
||||
(29819, 0, 1, 0, 0, 0, 100, 0, 1000, 12000, 17000, 20000, 0, 0, 11, 40546, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Drakkari Lancer - In Combat - Cast \'Retaliation\''),
|
||||
(29819, 0, 2, 0, 0, 0, 100, 0, 1000, 12000, 17000, 20000, 0, 0, 11, 55622, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Drakkari Lancer - In Combat - Cast \'Impale\''),
|
||||
(29832, 0, 0, 0, 0, 0, 100, 0, 4000, 8000, 11000, 17000, 0, 0, 11, 55635, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Drakkari Golem - In Combat - Cast Thunderclap'),
|
||||
(29832, 0, 1, 0, 0, 0, 100, 0, 1000, 9000, 17000, 20000, 0, 0, 11, 55636, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Drakkari Golem - In Combat - Cast Shockwave'),
|
||||
(29832, 0, 2, 0, 0, 0, 100, 0, 1000, 15000, 17000, 30000, 0, 0, 11, 55633, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Drakkari Golem - In Combat - Cast Body of Stone'),
|
||||
(29820, 0, 0, 0, 0, 0, 100, 0, 0, 0, 2000, 2000, 0, 0, 11, 35946, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Drakkari God Hunter - In Combat - Cast \'Shoot\''),
|
||||
(29820, 0, 1, 0, 0, 0, 100, 0, 4000, 6000, 8000, 12000, 0, 0, 11, 55624, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Drakkari God Hunter - In Combat - Cast \'Arcane Shot\''),
|
||||
(29820, 0, 2, 0, 4, 0, 50, 0, 0, 0, 0, 0, 0, 0, 11, 55798, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Drakkari God Hunter - On Aggro - Cast \'Flare\''),
|
||||
(29820, 0, 3, 0, 0, 0, 100, 0, 1000, 11000, 20000, 32000, 0, 0, 11, 31567, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Drakkari God Hunter - In Combat - Cast \'Deterrence\''),
|
||||
(29829, 0, 0, 0, 0, 0, 100, 0, 4000, 8000, 11000, 17000, 0, 0, 11, 16172, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Drakkari Earthshaker - In Combat - Cast \'Head Crack\''),
|
||||
(29829, 0, 1, 0, 0, 0, 100, 0, 1000, 9000, 7000, 11000, 0, 0, 11, 55567, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Drakkari Earthshaker - In Combat - Cast \'Powerful Blow\''),
|
||||
(29829, 0, 2, 0, 0, 0, 100, 0, 1000, 8000, 10000, 12000, 0, 0, 11, 55563, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Drakkari Earthshaker - In Combat - Cast \'Slam Ground\''),
|
||||
(29826, 0, 0, 0, 16, 0, 100, 0, 55599, 30, 6000, 6000, 0, 0, 11, 55599, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Drakkari Medicine Man - On Friendly Unit Missing Buff \'Earth Shield\' - Cast \'Earth Shield\''),
|
||||
(29826, 0, 1, 0, 14, 0, 100, 0, 15000, 30, 7250, 10000, 0, 0, 11, 55597, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Drakkari Medicine Man - Friendly At 15000 Health - Cast \'Healing Wave\''),
|
||||
(29826, 0, 2, 0, 15, 0, 100, 0, 30, 10000, 10000, 0, 0, 0, 11, 55598, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Drakkari Medicine Man - On Friendly Crowd Controlled - Cast \'Cleanse Magic\''),
|
||||
(29838, 0, 0, 0, 9, 0, 100, 512, 0, 0, 8000, 8000, 5, 40, 11, 55530, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Drakkari Rhino - Within 5-40 Range - Cast \'Charge\''),
|
||||
(29838, 0, 1, 0, 0, 0, 100, 512, 0, 10000, 8000, 22000, 0, 0, 11, 55663, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Drakkari Rhino - In Combat - Cast \'Deafening Roar\''),
|
||||
(29836, 0, 0, 0, 0, 0, 100, 0, 0, 1000, 2000, 2000, 0, 0, 11, 55348, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Drakkari Battle Rider - In Combat - Cast \'Throw\''),
|
||||
(29836, 0, 1, 0, 0, 0, 100, 0, 0, 10000, 8000, 22000, 0, 0, 11, 55521, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Drakkari Battle Rider - In Combat - Cast \'Poisoned Spear\'');
|
||||
3
data/sql/updates/db_world/2025_06_06_00.sql
Normal file
3
data/sql/updates/db_world/2025_06_06_00.sql
Normal file
@ -0,0 +1,3 @@
|
||||
-- DB update 2025_06_05_03 -> 2025_06_06_00
|
||||
-- Removes: Watcher leesa'oh (9697) as pre-requesite from Observing the Sporelings (9701)
|
||||
UPDATE `quest_template_addon` SET `PrevQuestID` = 0 WHERE (`ID` = 9701);
|
||||
3
data/sql/updates/db_world/2025_06_06_01.sql
Normal file
3
data/sql/updates/db_world/2025_06_06_01.sql
Normal file
@ -0,0 +1,3 @@
|
||||
-- DB update 2025_06_06_00 -> 2025_06_06_01
|
||||
-- Sets SpecialFlags from 0 to 1, allowing Fine Gold Thread to be repeatable.
|
||||
UPDATE `quest_template_addon` SET `SpecialFlags` = `SpecialFlags` | 1 WHERE (`ID` = 4785);
|
||||
8
data/sql/updates/db_world/2025_06_07_00.sql
Normal file
8
data/sql/updates/db_world/2025_06_07_00.sql
Normal file
@ -0,0 +1,8 @@
|
||||
-- DB update 2025_06_06_01 -> 2025_06_07_00
|
||||
--
|
||||
UPDATE `command` SET `help`='Syntax: .wchange #weathertype #grade
|
||||
Set current weather to #weathertype with an intensity of #grade.
|
||||
|
||||
#weathertype can be 0 for fine, 1 for rain, 2 for snow, 3 for storm, 86 for thunders, 90 for blackrain.
|
||||
#grade is a float value from 0.0 (disabled) to 1.0 (maximum intensity).'
|
||||
WHERE `name`='wchange';
|
||||
6
data/sql/updates/db_world/2025_06_08_00.sql
Normal file
6
data/sql/updates/db_world/2025_06_08_00.sql
Normal file
@ -0,0 +1,6 @@
|
||||
-- DB update 2025_06_07_00 -> 2025_06_08_00
|
||||
-- Rune-Smith Durar - Durar\'s Power Cell
|
||||
UPDATE `creature_loot_template` SET `Chance`=100 WHERE `Entry`=26409 AND `Item`=36857;
|
||||
|
||||
-- Rune-Smith Kathorn - Kathorn\'s Power Cell
|
||||
UPDATE `creature_loot_template` SET `Chance`=100 WHERE `Entry`=26410 AND `Item`=36858;
|
||||
2959
data/sql/updates/db_world/2025_06_08_01.sql
Normal file
2959
data/sql/updates/db_world/2025_06_08_01.sql
Normal file
File diff suppressed because one or more lines are too long
2
data/sql/updates/db_world/2025_06_08_02.sql
Normal file
2
data/sql/updates/db_world/2025_06_08_02.sql
Normal file
@ -0,0 +1,2 @@
|
||||
-- DB update 2025_06_08_01 -> 2025_06_08_02
|
||||
UPDATE `antidos_opcode_policies` SET `MaxAllowedCount` = 1000 WHERE `Opcode` IN (564, 565);
|
||||
19
data/sql/updates/db_world/2025_06_08_03.sql
Normal file
19
data/sql/updates/db_world/2025_06_08_03.sql
Normal file
@ -0,0 +1,19 @@
|
||||
-- DB update 2025_06_08_02 -> 2025_06_08_03
|
||||
-- Remove tokens from original ref table
|
||||
DELETE FROM `reference_loot_template` WHERE (`Entry` = 34068) AND (`Item` IN (31095, 31096, 31097));
|
||||
|
||||
-- Create new reference table with just tokens tokens
|
||||
DELETE FROM `reference_loot_template` WHERE (`Entry` = 1276884);
|
||||
INSERT INTO `reference_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES
|
||||
(1276884, 31095, 0, 33.33, 0, 1, 1, 1, 1, 'Helm of the Forgotten Protector'),
|
||||
(1276884, 31096, 0, 33.33, 0, 1, 1, 1, 1, 'Helm of the Forgotten Vanquisher'),
|
||||
(1276884, 31097, 0, 33.33, 0, 1, 1, 1, 1, 'Helm of the Forgotten Conqueror');
|
||||
|
||||
-- Set chance of 100 with seperate groups (2/3)
|
||||
-- Chance for regular items 2/2
|
||||
-- ~~Chance for tokens is 2/3~~ must only be 2/2? <- Maybe this needs to be changed in core?
|
||||
-- PLEASE READ I set Item to 34069 for ref table 1276884 because from my understanding Item just needs to be unique
|
||||
DELETE FROM `creature_loot_template` WHERE (`Entry` = 17968) AND (`Item` IN (34068, 34069));
|
||||
INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES
|
||||
(17968, 34068, 34068, 100, 0, 1, 2, 2, 2, 'Archimonde - (ReferenceTable Regular)'),
|
||||
(17968, 34069, 1276884, 100, 0, 1, 3, 2, 2, 'Archimonde - (ReferenceTable Tokens)');
|
||||
47
data/sql/updates/db_world/2025_06_08_04.sql
Normal file
47
data/sql/updates/db_world/2025_06_08_04.sql
Normal file
@ -0,0 +1,47 @@
|
||||
-- DB update 2025_06_08_03 -> 2025_06_08_04
|
||||
-- Blackrock Mountain - Searing Gorge Instance?
|
||||
UPDATE `areatrigger_teleport` SET `Name` = "Blackrock Depths Entrance", `target_position_x` = 456.929, `target_position_y` = 34.0923, `target_position_z` = -68.0896, `target_orientation` = 4.712389 WHERE `ID` = 1466;
|
||||
|
||||
-- The Molten Bridge | The Molten Core Window Entrance | The Molten Core Window(Lava) Entrance
|
||||
UPDATE `areatrigger_teleport` SET `target_position_x` = 1091.89, `target_position_y` = -466.985, `target_position_z` = -105.084, `target_orientation` = 3.1415927 WHERE `ID` IN (2886, 3528, 3529);
|
||||
|
||||
-- Molten Core Entrance, Inside
|
||||
UPDATE `areatrigger_teleport` SET `Name` = "The Molten Core, Exit (from inside of the Instance)", `target_position_x` = -7508.32, `target_position_y` = -1039.74, `target_position_z` = 180.912, `target_orientation` = 3.8397243 WHERE `ID` = 2890;
|
||||
|
||||
-- Blackrock Spire, Unknown
|
||||
UPDATE `areatrigger_teleport` SET `Name` = "Blackrock Spire, Exit (from inside of Blackwing Lair Instance)" WHERE `ID` = 3728;
|
||||
|
||||
-- Blackrock Spire - Searing Gorge Instance
|
||||
UPDATE `areatrigger_teleport` SET `Name` = "Blackrock Spire Entrance", `target_position_x` = -7524.65, `target_position_y` = -1229.13, `target_position_z` = 285.731, `target_orientation` = 2.0943952 WHERE `ID` = 1470;
|
||||
|
||||
-- Maraudon
|
||||
UPDATE `areatrigger_teleport` SET `Name` = "Maraudon, The Wicked Grotto [Purple Wing] (Exit)" WHERE `ID` = 3126;
|
||||
UPDATE `areatrigger_teleport` SET `Name` = "Maraudon, Foulspore Cavern [Orange Wing] (Exit)" WHERE `ID` = 3131;
|
||||
UPDATE `areatrigger_teleport` SET `Name` = "Maraudon, The Wicked Grotto [Purple Wing] (Entrance)" WHERE `ID` = 3134;
|
||||
UPDATE `areatrigger_teleport` SET `Name` = "Maraudon, Foulspore Cavern [Orange Wing] (Entrance)" WHERE `ID` = 3133;
|
||||
|
||||
-- Dire Maul
|
||||
UPDATE `areatrigger_teleport` SET `Name` = "Dire Maul, West Wing [South] (Exit)" WHERE `ID` = 3190;
|
||||
UPDATE `areatrigger_teleport` SET `Name` = "Dire Maul, West Wing [North](Exit)" WHERE `ID` = 3191;
|
||||
UPDATE `areatrigger_teleport` SET `Name` = "Dire Maul, North Wing (Exit)" WHERE `ID` = 3193;
|
||||
UPDATE `areatrigger_teleport` SET `Name` = "Dire Maul, East Wing [West] (Exit)" WHERE `ID` = 3194;
|
||||
UPDATE `areatrigger_teleport` SET `Name` = "Dire Maul, East Wing [South] (Exit)" WHERE `ID` = 3195;
|
||||
UPDATE `areatrigger_teleport` SET `Name` = "Dire Maul, East Wing [East] (Exit)" WHERE `ID` = 3196;
|
||||
UPDATE `areatrigger_teleport` SET `Name` = "Dire Maul, Alzzin the Wildshaper's broken wall [1-Way] (Exit)" WHERE `ID` = 3197;
|
||||
UPDATE `areatrigger_teleport` SET `Name` = "Dire Maul, East Wing [West] (Entrance)" WHERE `ID` = 3183;
|
||||
UPDATE `areatrigger_teleport` SET `Name` = "Dire Maul, East Wing [South] (Entrance)" WHERE `ID` = 3184;
|
||||
UPDATE `areatrigger_teleport` SET `Name` = "Dire Maul, East Wing [East] (Entrance)" WHERE `ID` = 3185;
|
||||
UPDATE `areatrigger_teleport` SET `Name` = "Dire Maul, West Wing [South] (Entrance)" WHERE `ID` = 3186;
|
||||
UPDATE `areatrigger_teleport` SET `Name` = "Dire Maul, West Wing [North] (Entrance)" WHERE `ID` = 3187;
|
||||
UPDATE `areatrigger_teleport` SET `Name` = "Dire Maul, North Wing (Entrance)" WHERE `ID` = 3189;
|
||||
|
||||
-- Naxxramas
|
||||
UPDATE `areatrigger_teleport` SET `Name` = "Naxxramas, East (Entrance)" WHERE `ID` = 5191;
|
||||
UPDATE `areatrigger_teleport` SET `Name` = "Naxxramas, North (Entrance)" WHERE `ID` = 5192;
|
||||
UPDATE `areatrigger_teleport` SET `Name` = "Naxxramas, West (Entrance)" WHERE `ID` = 5193;
|
||||
UPDATE `areatrigger_teleport` SET `Name` = "Naxxramas, South (Entrance)" WHERE `ID` = 5194;
|
||||
|
||||
UPDATE `areatrigger_teleport` SET `Name` = "Naxxramas, North-East (Exit)" WHERE `ID` = 5196;
|
||||
UPDATE `areatrigger_teleport` SET `Name` = "Naxxramas, North-West (Exit)" WHERE `ID` = 5197;
|
||||
UPDATE `areatrigger_teleport` SET `Name` = "Naxxramas, South-East (Exit)" WHERE `ID` = 5198;
|
||||
UPDATE `areatrigger_teleport` SET `Name` = "Naxxramas, South-West (Exit)" WHERE `ID` = 5199;
|
||||
22
data/sql/updates/db_world/2025_06_08_05.sql
Normal file
22
data/sql/updates/db_world/2025_06_08_05.sql
Normal file
@ -0,0 +1,22 @@
|
||||
-- DB update 2025_06_08_04 -> 2025_06_08_05
|
||||
--
|
||||
-- Alliance, Horde Captains and Shattered Hand Executioner NPCs
|
||||
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 17290;
|
||||
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 17296;
|
||||
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 17301;
|
||||
|
||||
-- Causes quest to fail on Alliance Captain death
|
||||
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 17290) 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`, `event_param6`, `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
|
||||
(17290, 0, 0, 0, 6, 0, 100, 0, 0, 0, 0, 0, 0, 0, 6, 9524, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 'Fail quest on captain death.');
|
||||
|
||||
-- Causes quest to fail on Horde Captain death
|
||||
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 17296) 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`, `event_param6`, `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
|
||||
(17296, 0, 0, 0, 6, 0, 100, 0, 0, 0, 0, 0, 0, 0, 6, 9525, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 'Fail quest on captain death.');
|
||||
|
||||
-- Grants kill token for quest completion on Shattered Hand Executioner death
|
||||
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 17301) 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`, `event_param6`, `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
|
||||
(17301, 0, 1, 0, 6, 0, 100, 0, 0, 0, 0, 0, 0, 0, 33, 17290, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Executioner - On Death - Quest Credit for Alliance'),
|
||||
(17301, 0, 2, 0, 6, 0, 100, 0, 0, 0, 0, 0, 0, 0, 33, 17296, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Executioner - On Death - Quest Credit for Horde');
|
||||
2
data/sql/updates/db_world/2025_06_08_06.sql
Normal file
2
data/sql/updates/db_world/2025_06_08_06.sql
Normal file
@ -0,0 +1,2 @@
|
||||
-- DB update 2025_06_08_05 -> 2025_06_08_06
|
||||
UPDATE `areatrigger_teleport` SET `target_position_x` = -7524.7017, `target_position_y` = -1228.4098, `target_position_z` = 287.20447, `target_orientation` = 1.7453293 WHERE `ID` = 1470;
|
||||
13
data/sql/updates/db_world/2025_06_09_00.sql
Normal file
13
data/sql/updates/db_world/2025_06_09_00.sql
Normal file
@ -0,0 +1,13 @@
|
||||
-- DB update 2025_06_08_06 -> 2025_06_09_00
|
||||
-- Leaping Hatchling
|
||||
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 35387;
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 35387);
|
||||
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`, `event_param6`, `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
|
||||
(35387, 0, 0, 0, 1, 0, 100, 0, 23000, 28000, 23000, 28000, 0, 0, 80, 3538700, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Leaping Hatchling - Out of Combat - Run Script');
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 9 AND `entryorguid` = 3538700);
|
||||
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`, `event_param6`, `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
|
||||
(3538700, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Leaping Hatchling - Actionlist - Stop Follow'),
|
||||
(3538700, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 89, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Leaping Hatchling - Actionlist - Start Random Movement'),
|
||||
(3538700, 9, 2, 0, 0, 0, 100, 0, 3000, 4500, 0, 0, 0, 0, 11, 67427, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 'Leaping Hatchling - Actionlist - Cast \'Leaping Hatchling Jump\''),
|
||||
(3538700, 9, 3, 0, 0, 0, 100, 0, 1500, 1500, 0, 0, 0, 0, 29, 1, 90, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 'Leaping Hatchling - Actionlist - Start Follow Owner Or Summoner');
|
||||
5
data/sql/updates/db_world/2025_06_12_00.sql
Normal file
5
data/sql/updates/db_world/2025_06_12_00.sql
Normal file
@ -0,0 +1,5 @@
|
||||
-- DB update 2025_06_09_00 -> 2025_06_12_00
|
||||
--
|
||||
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 30329) AND (`source_type` = 0) AND (`id` IN (3));
|
||||
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`, `event_param6`, `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
|
||||
(30329, 0, 3, 0, 0, 0, 100, 6, 30000, 35000, 30000, 35000, 0, 0, 11, 48193, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Savage Cave Beast - In Combat - Cast \'Enrage\' (Dungeon)');
|
||||
3
data/sql/updates/db_world/2025_06_12_01.sql
Normal file
3
data/sql/updates/db_world/2025_06_12_01.sql
Normal file
@ -0,0 +1,3 @@
|
||||
-- DB update 2025_06_12_00 -> 2025_06_12_01
|
||||
--
|
||||
UPDATE `creature_template` SET `flags_extra` = `flags_extra`|2147483648 WHERE `entry` IN (29311, 31464);
|
||||
5
data/sql/updates/db_world/2025_06_12_02.sql
Normal file
5
data/sql/updates/db_world/2025_06_12_02.sql
Normal file
@ -0,0 +1,5 @@
|
||||
-- DB update 2025_06_12_01 -> 2025_06_12_02
|
||||
--
|
||||
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 30284) AND (`source_type` = 0) AND (`id` IN (3));
|
||||
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`, `event_param6`, `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
|
||||
(30284, 0, 3, 0, 0, 0, 100, 6, 20000, 23000, 24000, 27000, 0, 0, 11, 19134, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Bonegrinder - In Combat - Cast \'Frightening Shout\' (Dungeon)');
|
||||
6
data/sql/updates/db_world/2025_06_12_03.sql
Normal file
6
data/sql/updates/db_world/2025_06_12_03.sql
Normal file
@ -0,0 +1,6 @@
|
||||
-- DB update 2025_06_12_02 -> 2025_06_12_03
|
||||
--
|
||||
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 30285) AND (`source_type` = 0) AND (`id` IN (5, 6));
|
||||
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`, `event_param6`, `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
|
||||
(30285, 0, 5, 0, 6, 0, 100, 515, 0, 0, 0, 0, 0, 0, 11, 56733, 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Eye of Taldaram - Just Died - Cast \'Shadowfury\' (No Repeat) (Normal Dungeon)'),
|
||||
(30285, 0, 6, 0, 6, 0, 100, 517, 0, 0, 0, 0, 0, 0, 11, 61463, 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Eye of Taldaram - Just Died - Cast \'Shadowfury\' (No Repeat) (Heroic Dungeon)');
|
||||
111
data/sql/updates/db_world/2025_06_12_04.sql
Normal file
111
data/sql/updates/db_world/2025_06_12_04.sql
Normal file
@ -0,0 +1,111 @@
|
||||
-- DB update 2025_06_12_03 -> 2025_06_12_04
|
||||
SET @ARTRUIS := 28659;
|
||||
SET @ARTRUISGUID := 202971;
|
||||
SET @JALOOT := 28667;
|
||||
SET @JALOOTGUID := 202969;
|
||||
SET @ZEPIK := 28668;
|
||||
SET @ZEPIKGUID := 202970;
|
||||
|
||||
DELETE FROM `creature` WHERE (`id1` = @JALOOT) AND (`guid` IN (@JALOOTGUID));
|
||||
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
|
||||
(@JALOOTGUID, @JALOOT, 0, 0, 571, 0, 0, 1, 1, 0, 5616.92, 3772.68, -94.258, 1.78024, 120, 0, 0, 1, 0, 0, 0, 0, 0, '', 0);
|
||||
|
||||
DELETE FROM `creature` WHERE (`id1` = @ZEPIK) AND (`guid` IN (@ZEPIKGUID));
|
||||
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
|
||||
(@ZEPIKGUID, @ZEPIK, 0, 0, 571, 0, 0, 1, 1, 0, 5631.63, 3794.36, -92.236, 3.45575, 120, 0, 0, 1, 0, 0, 0, 0, 0, '', 0);
|
||||
|
||||
UPDATE `creature_template` SET `AIName` = 'SmartAI', `ScriptName` = '' WHERE (`entry` = @ARTRUIS);
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = @ARTRUIS);
|
||||
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`, `event_param6`, `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
|
||||
(@ARTRUIS, 0, 0, 1, 11, 0, 100, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, 10, @JALOOTGUID, @JALOOT, 0, 0, 0, 0, 0, 0, 'Artruis the Heartless - On Respawn - Respawn Closest Creature \'Jaloot\''),
|
||||
(@ARTRUIS, 0, 1, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, 10, @ZEPIKGUID, @ZEPIK, 0, 0, 0, 0, 0, 0, 'Artruis the Heartless - On Respawn - Respawn Closest Creature \'Zepik the Gorloc Hunter\''),
|
||||
(@ARTRUIS, 0, 2, 0, 0, 0, 100, 0, 7000, 11000, 11000, 15000, 0, 0, 11, 54261, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Artruis the Heartless - In Combat - Cast \'Ice Lance\''),
|
||||
(@ARTRUIS, 0, 3, 0, 0, 0, 100, 0, 3000, 5000, 3000, 5000, 0, 0, 11, 15530, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Artruis the Heartless - In Combat - Cast \'Frostbolt\''),
|
||||
(@ARTRUIS, 0, 4, 0, 0, 0, 100, 0, 9000, 13000, 25000, 35000, 0, 0, 11, 54792, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Artruis the Heartless - In Combat - Cast \'Icy Veins\''),
|
||||
(@ARTRUIS, 0, 5, 0, 9, 0, 100, 0, 7000, 9000, 14000, 18000, 0, 10, 11, 11831, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Artruis the Heartless - Within 0-10 Range - Cast \'Frost Nova\''),
|
||||
(@ARTRUIS, 0, 6, 7, 2, 0, 100, 0, 0, 30, 0, 0, 0, 0, 11, 52185, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Artruis the Heartless - Between 0-30% Health - Cast \'Bindings of Submission\''),
|
||||
(@ARTRUIS, 0, 7, 8, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 45, 1, 1, 0, 0, 0, 0, 10, @JALOOTGUID, @JALOOT, 0, 0, 0, 0, 0, 0, 'Artruis the Heartless - Between 0-30% Health - Set Data 1 1 for Jaloot'),
|
||||
(@ARTRUIS, 0, 8, 9, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 45, 1, 1, 0, 0, 0, 0, 10, @ZEPIKGUID, @ZEPIK, 0, 0, 0, 0, 0, 0, 'Artruis the Heartless - Between 0-30% Health - Set Data 1 1 for Zepik the Gorloc Hunter'),
|
||||
(@ARTRUIS, 0, 9, 10, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 1, 3, 10000, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Artruis the Heartless - Between 0-30% Health - Say Line 3'),
|
||||
(@ARTRUIS, 0, 10, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 1, 4, 10000, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Artruis the Heartless - Between 0-30% Health - Say Line 4'),
|
||||
(@ARTRUIS, 0, 11, 12, 25, 0, 100, 0, 0, 0, 0, 0, 0, 0, 45, 1, 2, 0, 0, 0, 0, 10, @JALOOTGUID, @JALOOT, 0, 0, 0, 0, 0, 0, 'Artruis the Heartless - On Reset - Set Data 1 2 for Jaloot'),
|
||||
(@ARTRUIS, 0, 12, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 45, 1, 2, 0, 0, 0, 0, 10, @ZEPIKGUID, @ZEPIK, 0, 0, 0, 0, 0, 0, 'Artruis the Heartless - On Reset - Set Data 1 2 for Zepik the Gorloc Hunter'),
|
||||
(@ARTRUIS, 0, 13, 0, 2, 0, 100, 0, 0, 75, 0, 0, 0, 0, 1, 1, 10000, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Artruis the Heartless - Between 0-75% Health - Say Line 1'),
|
||||
(@ARTRUIS, 0, 14, 0, 2, 0, 100, 0, 0, 50, 0, 0, 0, 0, 1, 2, 10000, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Artruis the Heartless - Between 0-50% Health - Say Line 2'),
|
||||
(@ARTRUIS, 0, 15, 16, 4, 0, 100, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, 10, @JALOOTGUID, @JALOOT, 0, 0, 0, 0, 0, 0, 'Artruis the Heartless - On Aggro - Respawn Closest Creature \'Jaloot\''),
|
||||
(@ARTRUIS, 0, 16, 17, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, 10, @ZEPIKGUID, @ZEPIK, 0, 0, 0, 0, 0, 0, 'Artruis the Heartless - On Aggro - Respawn Closest Creature \'Zepik the Gorloc Hunter\''),
|
||||
(@ARTRUIS, 0, 17, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 1, 0, 10000, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Artruis the Heartless - On Aggro - Say Line 0'),
|
||||
(@ARTRUIS, 0, 18, 19, 6, 0, 100, 0, 0, 0, 0, 0, 0, 0, 11, 52518, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Artruis the Heartless - On Just Died - Cast \'Summon Artruis Quest Complete\''),
|
||||
(@ARTRUIS, 0, 19, 20, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 45, 1, 3, 0, 0, 0, 0, 10, @JALOOTGUID, @JALOOT, 0, 0, 0, 0, 0, 0, 'Artruis the Heartless - On Just Died - Set Data 1 3 for Jaloot'),
|
||||
(@ARTRUIS, 0, 20, 21, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 45, 1, 3, 0, 0, 0, 0, 10, @ZEPIKGUID, @ZEPIK, 0, 0, 0, 0, 0, 0, 'Artruis the Heartless - On Just Died - Set Data 1 3 for Zepik the Gorloc Hunter'),
|
||||
(@ARTRUIS, 0, 21, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 1, 5, 10000, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Artruis the Heartless - On Just Died - Say Line 5'),
|
||||
(@ARTRUIS, 0, 22, 23, 38, 0, 100, 0, 1, 1, 0, 0, 0, 0, 45, 1, 4, 0, 0, 0, 0, 10, @ZEPIKGUID, @ZEPIK, 0, 0, 0, 0, 0, 0, 'Artruis the Heartless - On Data Set 1 1 - Set Data 1 4 for Zepik the Gorloc Hunter'),
|
||||
(@ARTRUIS, 0, 23, 24, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 28, 52185, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Artruis the Heartless - On Data Set 1 1 - Remove Aura \'Bindings of Submission\''),
|
||||
(@ARTRUIS, 0, 24, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Artruis the Heartless - On Data Set 1 1 - Set Data 1 0 for self'),
|
||||
(@ARTRUIS, 0, 25, 26, 38, 0, 100, 0, 1, 2, 0, 0, 0, 0, 45, 1, 4, 0, 0, 0, 0, 10, @JALOOTGUID, @JALOOT, 0, 0, 0, 0, 0, 0, 'Artruis the Heartless - On Data Set 1 2 - Set Data 1 4 for Jaloot'),
|
||||
(@ARTRUIS, 0, 26, 27, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 28, 52185, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Artruis the Heartless - On Data Set 1 2 - Remove Aura \'Bindings of Submission\''),
|
||||
(@ARTRUIS, 0, 27, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Artruis the Heartless - On Data Set 1 2 - Set Data 1 0'),
|
||||
(@ARTRUIS, 0, 28, 0, 0, 0, 100, 0, 1000, 1000, 1000, 1000, 0, 0, 11, 53163, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Artruis the Heartless - In Combat - Cast \'Dessawn Retainer\'');
|
||||
|
||||
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = @JALOOT;
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = @JALOOT);
|
||||
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`, `event_param6`, `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
|
||||
(@JALOOT, 0, 0, 1, 11, 0, 100, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Jaloot - On Respawn - Set Npc Flag '),
|
||||
(@JALOOT, 0, 1, 2, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 18, 512, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Jaloot - On Respawn - Set Flags Immune To NPC\'s'),
|
||||
(@JALOOT, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 11, 52182, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Jaloot - On Respawn - Cast \'Tomb of the Heartless\''),
|
||||
(@JALOOT, 0, 3, 0, 9, 0, 100, 0, 7500, 10000, 15000, 20000, 0, 5, 11, 52943, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Jaloot - Within 0-5 Range - Cast \'Lightning Whirl\''),
|
||||
(@JALOOT, 0, 4, 0, 9, 0, 100, 0, 7500, 9000, 15000, 18000, 0, 40, 11, 52944, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Jaloot - Within 0-40 Range - Cast \'Lightning Strike\''),
|
||||
(@JALOOT, 0, 5, 0, 9, 0, 100, 0, 10000, 12500, 20000, 25000, 0, 5, 11, 52964, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Jaloot - Within 0-5 Range - Cast \'Spark Frenzy\''),
|
||||
(@JALOOT, 0, 6, 0, 2, 0, 100, 0, 0, 30, 9000, 12000, 0, 0, 11, 52969, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Jaloot - Between 0-30% Health - Cast \'Energy Siphon\''),
|
||||
(@JALOOT, 0, 7, 8, 38, 0, 100, 0, 1, 1, 0, 0, 0, 0, 2, 14, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Jaloot - On Data Set 1 1 - Set Faction 14'),
|
||||
(@JALOOT, 0, 8, 9, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 28, 52182, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Jaloot - On Data Set 1 1 - Remove Aura \'Tomb of the Heartless\''),
|
||||
(@JALOOT, 0, 9, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 18, 40, 0, 0, 0, 0, 0, 0, 0, 'Jaloot - On Data Set 1 1 - Start Attacking'),
|
||||
(@JALOOT, 0, 10, 11, 38, 0, 100, 0, 1, 2, 0, 0, 0, 0, 2, 250, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Jaloot - On Data Set 1 2 - Set Faction 250 - Friendly'),
|
||||
(@JALOOT, 0, 11, 12, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 18, 512, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Jaloot - On Data Set 1 2 - Set Flags Immune To NPC\'s'),
|
||||
(@JALOOT, 0, 12, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 11, 52182, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Jaloot - On Data Set 1 2 - Cast \'Tomb of the Heartless\''),
|
||||
(@JALOOT, 0, 13, 14, 38, 0, 100, 0, 1, 3, 0, 0, 0, 0, 2, 250, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Jaloot - On Data Set 1 3 - Set Faction 250 - Friendly'),
|
||||
(@JALOOT, 0, 14, 15, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 18, 512, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Jaloot - On Data Set 1 3 - Set Flags Immune To NPC\'s'),
|
||||
(@JALOOT, 0, 15, 16, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 81, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Jaloot - On Data Set 1 3 - Set Npc Flags Questgiver'),
|
||||
(@JALOOT, 0, 16, 17, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 41, 90000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Jaloot - On Data Set 1 3 - Despawn In 90000 ms'),
|
||||
(@JALOOT, 0, 17, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Jaloot - On Data Set 1 3 - Evade'),
|
||||
(@JALOOT, 0, 18, 0, 6, 0, 100, 0, 0, 0, 0, 0, 0, 0, 45, 1, 1, 0, 0, 0, 0, 10, @ARTRUISGUID, @ARTRUIS, 0, 0, 0, 0, 0, 0, 'Jaloot - On Just Died - Set Data 1 1 for Artruis the Heartless'),
|
||||
(@JALOOT, 0, 19, 20, 38, 0, 100, 0, 1, 4, 0, 0, 0, 0, 2, 250, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Jaloot - On Data Set 1 4 - Set Faction 250 - Friendly'),
|
||||
(@JALOOT, 0, 20, 21, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 28, 52185, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Jaloot - On Data Set 1 4 - Remove Aura \'Bindings of Submission\''),
|
||||
(@JALOOT, 0, 21, 22, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 19, 512, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Jaloot - On Data Set 1 4 - Remove Flags Immune To NPC\'s'),
|
||||
(@JALOOT, 0, 22, 23, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 1, 0, 10000, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Jaloot - On Data Set 1 4 - Say Line 0'),
|
||||
(@JALOOT, 0, 23, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 10, @ARTRUISGUID, @ARTRUIS, 0, 0, 0, 0, 0, 0, 'Jaloot - On Data Set 1 4 - Start Attacking Artruis the Heartless');
|
||||
|
||||
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = @ZEPIK;
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = @ZEPIK);
|
||||
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`, `event_param6`, `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
|
||||
(@ZEPIK, 0, 0, 1, 11, 0, 100, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Zepik the Gorloc Hunter - On Respawn - Set Npc Flag '),
|
||||
(@ZEPIK, 0, 1, 2, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 18, 512, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Zepik the Gorloc Hunter - On Respawn - Set Flags Immune To NPC\'s'),
|
||||
(@ZEPIK, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 11, 52182, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Zepik the Gorloc Hunter - On Respawn - Cast \'Tomb of the Heartless\''),
|
||||
(@ZEPIK, 0, 3, 0, 9, 0, 100, 0, 7500, 9000, 15000, 18000, 0, 20, 11, 52761, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Zepik the Gorloc Hunter - Within 0-20 Range - Cast \'Barbed Net\''),
|
||||
(@ZEPIK, 0, 4, 0, 9, 0, 100, 0, 6000, 7500, 12000, 15000, 5, 30, 11, 52889, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Zepik the Gorloc Hunter - Within 5-30 Range - Cast \'Envenomed Shot\''),
|
||||
(@ZEPIK, 0, 5, 0, 9, 0, 100, 0, 3000, 7000, 3000, 7000, 0, 5, 11, 52873, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Zepik the Gorloc Hunter - Within 0-5 Range - Cast \'Open Wound\''),
|
||||
(@ZEPIK, 0, 6, 0, 9, 0, 100, 0, 15000, 20000, 30000, 40000, 0, 5, 11, 52886, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Zepik the Gorloc Hunter - Within 0-5 Range - Cast \'Spike Trap\''),
|
||||
(@ZEPIK, 0, 7, 0, 2, 0, 100, 0, 0, 30, 30000, 30000, 0, 0, 11, 52895, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Zepik the Gorloc Hunter - Between 0-30% Health - Cast \'Bandage\''),
|
||||
(@ZEPIK, 0, 8, 9, 38, 0, 100, 0, 1, 1, 0, 0, 0, 0, 2, 14, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Zepik the Gorloc Hunter - On Data Set 1 1 - Set Faction 14'),
|
||||
(@ZEPIK, 0, 9, 10, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 28, 52182, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Zepik the Gorloc Hunter - On Data Set 1 1 - Remove Aura \'Tomb of the Heartless\''),
|
||||
(@ZEPIK, 0, 10, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 18, 40, 0, 0, 0, 0, 0, 0, 0, 'Zepik the Gorloc Hunter - On Data Set 1 1 - Start Attacking'),
|
||||
(@ZEPIK, 0, 11, 12, 38, 0, 100, 0, 1, 2, 0, 0, 0, 0, 2, 250, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Zepik the Gorloc Hunter - On Data Set 1 2 - Set Faction 250 - Friendly'),
|
||||
(@ZEPIK, 0, 12, 13, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 18, 512, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Zepik the Gorloc Hunter - On Data Set 1 2 - Set Flags Immune To NPC\'s'),
|
||||
(@ZEPIK, 0, 13, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 11, 52182, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Zepik the Gorloc Hunter - On Data Set 1 2 - Cast \'Tomb of the Heartless\''),
|
||||
(@ZEPIK, 0, 14, 15, 38, 0, 100, 0, 1, 3, 0, 0, 0, 0, 2, 250, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Zepik the Gorloc Hunter - On Data Set 1 3 - Set Faction 250 - Friendly'),
|
||||
(@ZEPIK, 0, 15, 16, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Zepik the Gorloc Hunter - On Data Set 1 3 - Evade'),
|
||||
(@ZEPIK, 0, 16, 17, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 18, 512, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Zepik the Gorloc Hunter - On Data Set 1 3 - Set Flags Immune To NPC\'s'),
|
||||
(@ZEPIK, 0, 17, 18, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 81, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Zepik the Gorloc Hunter - On Data Set 1 3 - Set Npc Flags Questgiver'),
|
||||
(@ZEPIK, 0, 18, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 41, 90000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Zepik the Gorloc Hunter - On Data Set 1 3 - Despawn In 90000 ms'),
|
||||
(@ZEPIK, 0, 19, 0, 6, 0, 100, 0, 0, 0, 0, 0, 0, 0, 45, 1, 2, 0, 0, 0, 0, 10, @ARTRUISGUID, @ARTRUIS, 0, 0, 0, 0, 0, 0, 'Zepik the Gorloc Hunter - On Just Died - Set Data 1 2 for Artruis the Heartless'),
|
||||
(@ZEPIK, 0, 20, 21, 38, 0, 100, 0, 1, 4, 0, 0, 0, 0, 2, 250, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Zepik the Gorloc Hunter - On Data Set 1 4 - Set Faction 250 - Friendly'),
|
||||
(@ZEPIK, 0, 21, 22, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 28, 52185, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Zepik the Gorloc Hunter - On Data Set 1 4 - Remove Aura \'Bindings of Submission\''),
|
||||
(@ZEPIK, 0, 22, 23, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 19, 512, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Zepik the Gorloc Hunter - On Data Set 1 4 - Remove Flags Immune To NPC\'s'),
|
||||
(@ZEPIK, 0, 23, 24, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Zepik the Gorloc Hunter - On Data Set 1 4 - Say Line 0'),
|
||||
(@ZEPIK, 0, 24, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 10, @ARTRUISGUID, @ARTRUIS, 0, 0, 0, 0, 0, 0, 'Zepik the Gorloc Hunter - On Data Set 1 4 - Start Attacking Artruis the Heartless');
|
||||
|
||||
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceGroup`=1 AND `SourceEntry`=52185;
|
||||
INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
|
||||
(13,1,52185,0,0,31,0,3,@ZEPIK,0,0,0,'','Bindings of Submission for Zepik'),
|
||||
(13,1,52185,0,1,31,0,3,@JALOOT,0,0,0,'','Bindings of Submission for Jaloot'),
|
||||
(13,1,52185,0,2,31,0,3,@ARTRUIS,0,0,0,'','Bindings of Submission for Artruis the Heartless');
|
||||
5
data/sql/updates/db_world/2025_06_15_00.sql
Normal file
5
data/sql/updates/db_world/2025_06_15_00.sql
Normal file
@ -0,0 +1,5 @@
|
||||
-- DB update 2025_06_12_04 -> 2025_06_15_00
|
||||
--
|
||||
UPDATE `reference_loot_template` SET `Chance` = 0, `GroupId` = 3 WHERE `Entry` = 1276884;
|
||||
|
||||
UPDATE `creature_loot_template` SET `MinCount` = 3, `MaxCount` = 3 WHERE `Entry`= 17968 AND`Item` = 34069 AND `Reference` = 1276884;
|
||||
5
data/sql/updates/db_world/2025_06_15_01.sql
Normal file
5
data/sql/updates/db_world/2025_06_15_01.sql
Normal file
@ -0,0 +1,5 @@
|
||||
-- DB update 2025_06_15_00 -> 2025_06_15_01
|
||||
UPDATE `spell_script_names` SET `ScriptName` = 'spell_gen_area_aura_select_players_and_caster' WHERE `spell_id` = 53642;
|
||||
|
||||
DELETE FROM `spell_custom_attr` WHERE `spell_id` = 53642;
|
||||
INSERT INTO `spell_custom_attr` (`spell_id`, `attributes`) VALUES (53642, 2048);
|
||||
2
data/sql/updates/db_world/2025_06_15_02.sql
Normal file
2
data/sql/updates/db_world/2025_06_15_02.sql
Normal file
@ -0,0 +1,2 @@
|
||||
-- DB update 2025_06_15_01 -> 2025_06_15_02
|
||||
UPDATE `gameobject_template_addon` SET `faction` = 35 WHERE `entry` = 184085;
|
||||
@ -656,7 +656,7 @@ Allow.IP.Based.Action.Logging = 0
|
||||
Appender.Console=1,4,0,"1 9 3 6 5 8"
|
||||
Appender.Server=2,5,0,Server.log,w
|
||||
# Appender.GM=2,5,15,gm_%s.log
|
||||
Appender.Errors=2,5,0,Errors.log
|
||||
Appender.Errors=2,5,0,Errors.log,w
|
||||
# Appender.DB=3,5,0
|
||||
|
||||
# Logger config values: Given a logger "name"
|
||||
|
||||
@ -31,7 +31,7 @@
|
||||
|
||||
int32 PetAI::Permissible(Creature const* creature)
|
||||
{
|
||||
if (creature->HasUnitTypeMask(UNIT_MASK_CONTROLABLE_GUARDIAN))
|
||||
if (creature->HasUnitTypeMask(UNIT_MASK_CONTROLLABLE_GUARDIAN))
|
||||
{
|
||||
if (reinterpret_cast<Guardian const*>(creature)->GetOwner()->IsPlayer())
|
||||
return PERMIT_BASE_PROACTIVE;
|
||||
|
||||
@ -26,8 +26,10 @@
|
||||
#include "MapReference.h"
|
||||
#include "Player.h"
|
||||
#include "ScriptMgr.h"
|
||||
#include "TemporarySummon.h"
|
||||
#include "Vehicle.h"
|
||||
#include "ZoneScript.h"
|
||||
#include <functional>
|
||||
|
||||
//Disable CreatureAI when charmed
|
||||
void CreatureAI::OnCharmed(bool /*apply*/)
|
||||
@ -383,6 +385,115 @@ void CreatureAI::MoveBackwardsChecks()
|
||||
me->GetMotionMaster()->MoveBackwards(victim, moveDist);
|
||||
}
|
||||
|
||||
int32 CreatureAI::VisualizeBoundary(uint32 duration, Unit* owner, bool fill, bool checkZ) const
|
||||
{
|
||||
static constexpr float BOUNDARY_STEP = 5.0f;
|
||||
static constexpr uint32 BOUNDARY_VISUALIZE_CREATURE = 21659; // Floaty Flavor Eye
|
||||
static constexpr float BOUNDARY_VISUALIZE_CREATURE_SCALE = 0.25f;
|
||||
static constexpr uint32 BOUNDARY_MAX_SPAWNS = 8000;
|
||||
static constexpr float BOUNDARY_MAX_DISTANCE = MAX_SEARCHER_DISTANCE;
|
||||
|
||||
float boundaryStep = fill && checkZ ? BOUNDARY_STEP * 2 : BOUNDARY_STEP;
|
||||
|
||||
Position const boundaryDirections[6] = {
|
||||
{boundaryStep, 0, 0 },
|
||||
{-boundaryStep, 0, 0 },
|
||||
{0, boundaryStep, 0 },
|
||||
{0, -boundaryStep, 0 },
|
||||
{0, 0, boundaryStep },
|
||||
{0, 0, -boundaryStep}
|
||||
};
|
||||
|
||||
if (!owner)
|
||||
return -1;
|
||||
|
||||
if (!_boundary || _boundary->empty())
|
||||
return LANG_CREATURE_MOVEMENT_NOT_BOUNDED;
|
||||
|
||||
Position startPosition = owner->GetPosition();
|
||||
if (!IsInBoundary(&startPosition)) // fall back to creature position
|
||||
{
|
||||
startPosition = me->GetPosition();
|
||||
if (!IsInBoundary(&startPosition)) // fall back to creature home position
|
||||
{
|
||||
startPosition = me->GetHomePosition();
|
||||
if (!IsInBoundary(&startPosition))
|
||||
return LANG_CREATURE_NO_INTERIOR_POINT_FOUND;
|
||||
}
|
||||
}
|
||||
|
||||
// Helper to spawn visualization creature
|
||||
auto spawnVisualizationCreature = [owner, duration, checkZ](Position const& pos)
|
||||
{
|
||||
if (TempSummon* summon =
|
||||
owner->SummonCreature(BOUNDARY_VISUALIZE_CREATURE, pos, TEMPSUMMON_TIMED_DESPAWN, duration))
|
||||
{
|
||||
summon->SetObjectScale(BOUNDARY_VISUALIZE_CREATURE_SCALE);
|
||||
summon->SetUnitFlag(UNIT_FLAG_STUNNED);
|
||||
summon->SetImmuneToAll(true);
|
||||
summon->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE_2);
|
||||
if (!checkZ)
|
||||
summon->SetDisableGravity(false);
|
||||
}
|
||||
};
|
||||
|
||||
struct PositionHash
|
||||
{
|
||||
std::size_t operator()(Position const& pos) const
|
||||
{
|
||||
// Convert to fixed precision coordinates.
|
||||
// We lose precision here, but we don't care about the exact position
|
||||
int32 x = int32(pos.m_positionX);
|
||||
int32 y = int32(pos.m_positionY);
|
||||
int32 z = int32(pos.m_positionZ);
|
||||
|
||||
return std::hash<int32_t>()(x) ^ std::hash<int32_t>()(y) ^ std::hash<int32_t>()(z);
|
||||
}
|
||||
};
|
||||
|
||||
std::unordered_set<Position, PositionHash> visited;
|
||||
std::queue<Position> queue;
|
||||
queue.push(startPosition);
|
||||
visited.insert(startPosition);
|
||||
uint8 maxDirections = checkZ ? 6 : 4;
|
||||
uint32 spawns = 0;
|
||||
|
||||
while (!queue.empty())
|
||||
{
|
||||
Position currentPosition = queue.front();
|
||||
queue.pop();
|
||||
|
||||
for (uint8 i = 0; i < maxDirections; ++i)
|
||||
{
|
||||
Position const& direction = boundaryDirections[i];
|
||||
Position nextPosition = currentPosition;
|
||||
nextPosition.RelocateOffset(direction);
|
||||
|
||||
if (startPosition.GetExactDist(&nextPosition) > BOUNDARY_MAX_DISTANCE)
|
||||
break;
|
||||
|
||||
if (visited.find(nextPosition) != visited.end())
|
||||
continue; // already visited
|
||||
|
||||
visited.insert(nextPosition);
|
||||
|
||||
bool isInBoundary = IsInBoundary(&nextPosition);
|
||||
|
||||
if ((isInBoundary && fill) || !isInBoundary)
|
||||
{
|
||||
spawnVisualizationCreature(currentPosition);
|
||||
++spawns;
|
||||
if (spawns > BOUNDARY_MAX_SPAWNS)
|
||||
return LANG_CREATURE_MOVEMENT_MAYBE_UNBOUNDED;
|
||||
}
|
||||
|
||||
if (isInBoundary)
|
||||
queue.push(nextPosition); // continue visiting
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool CreatureAI::IsInBoundary(Position const* who) const
|
||||
{
|
||||
if (!_boundary)
|
||||
|
||||
@ -209,6 +209,9 @@ public:
|
||||
|
||||
virtual void PetStopAttack() { }
|
||||
|
||||
// intended for encounter design/debugging. do not use for other purposes. expensive.
|
||||
int32 VisualizeBoundary(uint32 duration, Unit* owner = nullptr, bool fill = false, bool checkZ = false) const;
|
||||
|
||||
// boundary system methods
|
||||
virtual bool CheckInRoom();
|
||||
CreatureBoundary const* GetBoundary() const { return _boundary; }
|
||||
|
||||
@ -15,13 +15,6 @@
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* ScriptData
|
||||
SDName: Npc_EscortAI
|
||||
SD%Complete: 100
|
||||
SDComment:
|
||||
SDCategory: Npc
|
||||
EndScriptData */
|
||||
|
||||
#include "ScriptedEscortAI.h"
|
||||
#include "Group.h"
|
||||
#include "Player.h"
|
||||
|
||||
@ -15,13 +15,6 @@
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* ScriptData
|
||||
SDName: FollowerAI
|
||||
SD%Complete: 50
|
||||
SDComment: This AI is under development
|
||||
SDCategory: Npc
|
||||
EndScriptData */
|
||||
|
||||
#include "ScriptedFollowerAI.h"
|
||||
#include "Group.h"
|
||||
#include "Player.h"
|
||||
|
||||
@ -742,13 +742,16 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
|
||||
|
||||
if (e.action.cast.castFlags & SMARTCAST_COMBAT_MOVE)
|
||||
{
|
||||
// If cast flag SMARTCAST_COMBAT_MOVE is set combat movement will not be allowed unless target is outside spell range, out of mana, or LOS.
|
||||
if (result == SPELL_FAILED_OUT_OF_RANGE)
|
||||
// if we are just out of range, we only chase until we are back in spell range.
|
||||
CAST_AI(SmartAI, me->AI())->SetCombatMove(true, std::max(spellMaxRange - NOMINAL_MELEE_RANGE, 0.0f));
|
||||
else
|
||||
// if spell fail for any other reason, we chase to melee range, or stay where we are if spellcast was successful.
|
||||
CAST_AI(SmartAI, me->AI())->SetCombatMove(spellCastFailed);
|
||||
if (!me->isMoving()) // Don't try to reposition while we are moving
|
||||
{
|
||||
// If cast flag SMARTCAST_COMBAT_MOVE is set combat movement will not be allowed unless target is outside spell range, out of mana, or LOS.
|
||||
if (result == SPELL_FAILED_OUT_OF_RANGE)
|
||||
// if we are just out of range, we only chase until we are back in spell range.
|
||||
CAST_AI(SmartAI, me->AI())->SetCombatMove(true, std::max(spellMaxRange - NOMINAL_MELEE_RANGE, 0.0f));
|
||||
else
|
||||
// if spell fail for any other reason, we chase to melee range, or stay where we are if spellcast was successful.
|
||||
CAST_AI(SmartAI, me->AI())->SetCombatMove(spellCastFailed);
|
||||
}
|
||||
}
|
||||
|
||||
if (spellCastFailed)
|
||||
|
||||
@ -96,7 +96,7 @@ void BattlegroundRV::PostUpdateImpl(uint32 diff)
|
||||
if (player->GetPositionZ() < 27.0f)
|
||||
TeleportUnitToNewZ(player, 28.28f, true);
|
||||
|
||||
for (uint8 i = SUMMON_SLOT_TOTEM; i < MAX_TOTEM_SLOT; ++i)
|
||||
for (uint8 i = SUMMON_SLOT_TOTEM_FIRE; i < MAX_TOTEM_SLOT; ++i)
|
||||
if (player->m_SummonSlot[i])
|
||||
if (Creature* totem = GetBgMap()->GetCreature(player->m_SummonSlot[i]))
|
||||
if (totem->GetPositionZ() < 28.0f)
|
||||
|
||||
@ -1230,8 +1230,8 @@ void Channel::ToggleModeration(Player* player)
|
||||
return;
|
||||
}
|
||||
|
||||
const uint32 level = sWorld->getIntConfig(CONFIG_GM_LEVEL_CHANNEL_MODERATION);
|
||||
const bool gm = (level && player->GetSession()->GetSecurity() >= level);
|
||||
const AccountTypes level = static_cast<AccountTypes>(sWorld->getIntConfig(CONFIG_GM_LEVEL_CHANNEL_MODERATION));
|
||||
const bool gm = (player->GetSession()->GetSecurity() >= level);
|
||||
|
||||
if (!playersStore[guid].IsModerator() && !gm)
|
||||
{
|
||||
|
||||
@ -422,6 +422,8 @@ namespace lfg
|
||||
lockData = LFG_LOCKSTATUS_TOO_HIGH_LEVEL;
|
||||
else if (dungeon->seasonal && !IsSeasonActive(dungeon->id))
|
||||
lockData = LFG_LOCKSTATUS_NOT_IN_SEASON;
|
||||
else if (player->IsClass(CLASS_DEATH_KNIGHT) && !player->IsGameMaster() &&!(player->IsQuestRewarded(13188) || player->IsQuestRewarded(13189)))
|
||||
lockData = LFG_LOCKSTATUS_QUEST_NOT_COMPLETED;
|
||||
else if (ar)
|
||||
{
|
||||
// Check required items
|
||||
|
||||
@ -2590,7 +2590,7 @@ bool Creature::_IsTargetAcceptable(Unit const* target) const
|
||||
void Creature::UpdateMoveInLineOfSightState()
|
||||
{
|
||||
// xinef: pets, guardians and units with scripts / smartAI should be skipped
|
||||
if (IsPet() || HasUnitTypeMask(UNIT_MASK_MINION | UNIT_MASK_SUMMON | UNIT_MASK_GUARDIAN | UNIT_MASK_CONTROLABLE_GUARDIAN) ||
|
||||
if (IsPet() || HasUnitTypeMask(UNIT_MASK_MINION | UNIT_MASK_SUMMON | UNIT_MASK_GUARDIAN | UNIT_MASK_CONTROLLABLE_GUARDIAN) ||
|
||||
GetScriptId() || GetAIName() == "SmartAI")
|
||||
{
|
||||
m_moveInLineOfSightStrictlyDisabled = false;
|
||||
@ -2690,9 +2690,11 @@ bool Creature::CanCreatureAttack(Unit const* victim, bool skipDistCheck) const
|
||||
return true;
|
||||
|
||||
float x, y, z;
|
||||
GetMotionMaster()->GetMotionSlot(MOTION_SLOT_IDLE)->GetResetPosition(x, y, z);
|
||||
|
||||
return IsInDist2d(x, y, dist);
|
||||
x = y = z = 0.0f;
|
||||
if (GetMotionMaster()->GetMotionSlot(MOTION_SLOT_IDLE)->GetResetPosition(x, y, z))
|
||||
return IsInDist2d(x, y, dist);
|
||||
else
|
||||
return IsInDist2d(&m_homePosition, dist);
|
||||
}
|
||||
|
||||
CreatureAddon const* Creature::GetCreatureAddon() const
|
||||
@ -3732,7 +3734,7 @@ uint8 Creature::GetLeashTimer() const
|
||||
{ // Based on testing on Classic, seems to range from ~11s for low level mobs (1-5) to ~16s for high level mobs (70+)
|
||||
uint8 timerOffset = 11;
|
||||
|
||||
uint8 timerModifier = uint8(GetLevel() / 10) - 2;
|
||||
uint8 timerModifier = uint8(GetCreatureTemplate()->minlevel / 10) - 2;
|
||||
|
||||
// Formula is likely not quite correct, but better than flat timer
|
||||
return std::max<uint8>(timerOffset, timerOffset + timerModifier);
|
||||
|
||||
@ -422,7 +422,7 @@ Guardian::Guardian(SummonPropertiesEntry const* properties, ObjectGuid owner, bo
|
||||
m_unitTypeMask |= UNIT_MASK_GUARDIAN;
|
||||
if (properties && (properties->Type == SUMMON_TYPE_PET || properties->Category == SUMMON_CATEGORY_PET))
|
||||
{
|
||||
m_unitTypeMask |= UNIT_MASK_CONTROLABLE_GUARDIAN;
|
||||
m_unitTypeMask |= UNIT_MASK_CONTROLLABLE_GUARDIAN;
|
||||
InitCharmInfo();
|
||||
}
|
||||
}
|
||||
@ -435,7 +435,7 @@ void Guardian::InitStats(uint32 duration)
|
||||
{
|
||||
InitStatsForLevel(m_owner->GetLevel());
|
||||
|
||||
if (m_owner->IsPlayer() && HasUnitTypeMask(UNIT_MASK_CONTROLABLE_GUARDIAN))
|
||||
if (m_owner->IsPlayer() && HasUnitTypeMask(UNIT_MASK_CONTROLLABLE_GUARDIAN))
|
||||
m_charmInfo->InitCharmCreateSpells();
|
||||
}
|
||||
|
||||
|
||||
@ -60,9 +60,9 @@ Pet::Pet(Player* owner, PetType type) : Guardian(nullptr, owner ? owner->GetGUID
|
||||
if (type == HUNTER_PET)
|
||||
m_unitTypeMask |= UNIT_MASK_HUNTER_PET;
|
||||
|
||||
if (!(m_unitTypeMask & UNIT_MASK_CONTROLABLE_GUARDIAN))
|
||||
if (!(m_unitTypeMask & UNIT_MASK_CONTROLLABLE_GUARDIAN))
|
||||
{
|
||||
m_unitTypeMask |= UNIT_MASK_CONTROLABLE_GUARDIAN;
|
||||
m_unitTypeMask |= UNIT_MASK_CONTROLLABLE_GUARDIAN;
|
||||
InitCharmInfo();
|
||||
}
|
||||
|
||||
|
||||
@ -393,7 +393,6 @@ Player::Player(WorldSession* session): Unit(true), m_mover(this)
|
||||
m_achievementMgr = new AchievementMgr(this);
|
||||
m_reputationMgr = new ReputationMgr(this);
|
||||
|
||||
// Ours
|
||||
m_NeedToSaveGlyphs = false;
|
||||
m_MountBlockId = 0;
|
||||
m_realDodge = 0.0f;
|
||||
@ -7177,8 +7176,7 @@ void Player::ApplyEquipSpell(SpellInfo const* spellInfo, Item* item, bool apply,
|
||||
|
||||
LOG_DEBUG("entities.player", "WORLD: cast {} Equip spellId - {}", (item ? "item" : "itemset"), spellInfo->Id);
|
||||
|
||||
//Ignore spellInfo->DurationEntry, cast with -1 duration
|
||||
CastCustomSpell(spellInfo->Id, SPELLVALUE_AURA_DURATION, -1, this, true, item);
|
||||
CastSpell(this, spellInfo, true, item);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@ -2579,7 +2579,6 @@ public:
|
||||
[[nodiscard]] bool CanFly() const override { return m_movementInfo.HasMovementFlag(MOVEMENTFLAG_CAN_FLY); }
|
||||
[[nodiscard]] bool CanEnterWater() const override { return true; }
|
||||
|
||||
// OURS
|
||||
// saving
|
||||
void AdditionalSavingAddMask(uint8 mask) { m_additionalSaveTimer = 2000; m_additionalSaveMask |= mask; }
|
||||
// arena spectator
|
||||
|
||||
@ -51,17 +51,17 @@ void Totem::InitStats(uint32 duration)
|
||||
if (Unit* owner = ObjectAccessor::GetUnit(*this, m_owner))
|
||||
{
|
||||
uint32 slot = m_Properties->Slot;
|
||||
if (owner->IsPlayer() && slot >= SUMMON_SLOT_TOTEM && slot < MAX_TOTEM_SLOT)
|
||||
if (owner->IsPlayer() && slot >= SUMMON_SLOT_TOTEM_FIRE && slot < MAX_TOTEM_SLOT)
|
||||
{
|
||||
WorldPackets::Totem::TotemCreated data;
|
||||
data.Totem = GetGUID();
|
||||
data.Slot = slot - SUMMON_SLOT_TOTEM;
|
||||
data.Slot = slot - SUMMON_SLOT_TOTEM_FIRE;
|
||||
data.Duration = duration;
|
||||
data.SpellID = GetUInt32Value(UNIT_CREATED_BY_SPELL);
|
||||
owner->ToPlayer()->SendDirectMessage(data.Write());
|
||||
|
||||
// set display id depending on caster's race
|
||||
SetDisplayId(owner->GetModelForTotem(PlayerTotemType(m_Properties->Id)));
|
||||
SetDisplayId(sObjectMgr->GetModelForTotem(SummonSlot(slot), Races(owner->getRace())));
|
||||
}
|
||||
|
||||
SetLevel(owner->GetLevel());
|
||||
@ -133,7 +133,7 @@ void Totem::UnSummon(uint32 msTime)
|
||||
if (Unit* owner = GetOwner())
|
||||
{
|
||||
// clear owner's totem slot
|
||||
for (uint8 i = SUMMON_SLOT_TOTEM; i < MAX_TOTEM_SLOT; ++i)
|
||||
for (uint8 i = SUMMON_SLOT_TOTEM_FIRE; i < MAX_TOTEM_SLOT; ++i)
|
||||
{
|
||||
if (owner->m_SummonSlot[i] == GetGUID())
|
||||
{
|
||||
|
||||
@ -424,7 +424,7 @@ void Unit::Update(uint32 p_time)
|
||||
SendThreatListUpdate();
|
||||
|
||||
// update combat timer only for players and pets (only pets with PetAI)
|
||||
if (IsInCombat() && (IsPlayer() || ((IsPet() || HasUnitTypeMask(UNIT_MASK_CONTROLABLE_GUARDIAN)) && IsControlledByPlayer())))
|
||||
if (IsInCombat() && (IsPlayer() || ((IsPet() || HasUnitTypeMask(UNIT_MASK_CONTROLLABLE_GUARDIAN)) && IsControlledByPlayer())))
|
||||
{
|
||||
// Check UNIT_STATE_MELEE_ATTACKING or UNIT_STATE_CHASE (without UNIT_STATE_FOLLOW in this case) so pets can reach far away
|
||||
// targets without stopping half way there and running off.
|
||||
@ -10776,7 +10776,7 @@ void Unit::SetMinion(Minion* minion, bool apply)
|
||||
}
|
||||
}
|
||||
|
||||
if (minion->HasUnitTypeMask(UNIT_MASK_CONTROLABLE_GUARDIAN))
|
||||
if (minion->HasUnitTypeMask(UNIT_MASK_CONTROLLABLE_GUARDIAN))
|
||||
{
|
||||
AddGuidValue(UNIT_FIELD_SUMMON, minion->GetGUID());
|
||||
}
|
||||
@ -10871,7 +10871,7 @@ void Unit::SetMinion(Minion* minion, bool apply)
|
||||
}
|
||||
ASSERT((*itr)->IsCreature());
|
||||
|
||||
if (!(*itr)->HasUnitTypeMask(UNIT_MASK_CONTROLABLE_GUARDIAN))
|
||||
if (!(*itr)->HasUnitTypeMask(UNIT_MASK_CONTROLLABLE_GUARDIAN))
|
||||
continue;
|
||||
|
||||
if (AddGuidValue(UNIT_FIELD_SUMMON, (*itr)->GetGUID()))
|
||||
@ -11686,7 +11686,7 @@ uint32 Unit::SpellDamageBonusDone(Unit* victim, SpellInfo const* spellProto, uin
|
||||
int32 DoneTotal = 0;
|
||||
float DoneTotalMod = TotalMod ? TotalMod : SpellPctDamageModsDone(victim, spellProto, damagetype);
|
||||
|
||||
// Config : RATE_CREATURE_X_SPELLDAMAGE & Do Not Modify Pet/Guardian/Mind Controled Damage
|
||||
// Config : RATE_CREATURE_X_SPELLDAMAGE & Do Not Modify Pet/Guardian/Mind Controlled Damage
|
||||
if (IsCreature() && (!ToCreature()->IsPet() || !ToCreature()->IsGuardian() || !ToCreature()->IsControlledByPlayer()))
|
||||
DoneTotalMod *= ToCreature()->GetSpellDamageMod(ToCreature()->GetCreatureTemplate()->rank);
|
||||
|
||||
@ -13503,7 +13503,7 @@ float Unit::GetPPMProcChance(uint32 WeaponSpeed, float PPM, SpellInfo const* spe
|
||||
if (Player* modOwner = GetSpellModOwner())
|
||||
modOwner->ApplySpellMod(spellProto->Id, SPELLMOD_PROC_PER_MINUTE, PPM);
|
||||
|
||||
return std::floor((WeaponSpeed * PPM) / 600.0f); // result is chance in percents (probability = Speed_in_sec * (PPM / 60))
|
||||
return (WeaponSpeed * PPM) / 600.0f; // result is chance in percents (probability = Speed_in_sec * (PPM / 60))
|
||||
}
|
||||
|
||||
void Unit::Mount(uint32 mount, uint32 VehicleId, uint32 creatureEntry)
|
||||
@ -14681,7 +14681,7 @@ bool Unit::CanHaveThreatList(bool skipAliveCheck) const
|
||||
return false;
|
||||
|
||||
// summons can not have a threat list, unless they are controlled by a creature
|
||||
if (HasUnitTypeMask(UNIT_MASK_MINION | UNIT_MASK_GUARDIAN | UNIT_MASK_CONTROLABLE_GUARDIAN) && ((Pet*)this)->GetOwnerGUID().IsPlayer())
|
||||
if (HasUnitTypeMask(UNIT_MASK_MINION | UNIT_MASK_GUARDIAN | UNIT_MASK_CONTROLLABLE_GUARDIAN) && ((Pet*)this)->GetOwnerGUID().IsPlayer())
|
||||
return false;
|
||||
|
||||
return true;
|
||||
@ -14837,7 +14837,7 @@ Unit* Creature::SelectVictim()
|
||||
// it in combat but attacker not make any damage and not enter to aggro radius to have record in threat list
|
||||
// Note: creature does not have targeted movement generator but has attacker in this case
|
||||
for (AttackerSet::const_iterator itr = m_attackers.begin(); itr != m_attackers.end(); ++itr)
|
||||
if ((*itr) && CanCreatureAttack(*itr) && !(*itr)->IsPlayer() && !(*itr)->ToCreature()->HasUnitTypeMask(UNIT_MASK_CONTROLABLE_GUARDIAN))
|
||||
if ((*itr) && CanCreatureAttack(*itr) && !(*itr)->IsPlayer() && !(*itr)->ToCreature()->HasUnitTypeMask(UNIT_MASK_CONTROLLABLE_GUARDIAN))
|
||||
return nullptr;
|
||||
|
||||
if (GetVehicle())
|
||||
@ -17555,16 +17555,30 @@ bool Unit::IsTriggeredAtSpellProcEvent(Unit* victim, Aura* aura, WeaponAttackTyp
|
||||
// If PPM exist calculate chance from PPM
|
||||
if (spellProcEvent && spellProcEvent->ppmRate != 0)
|
||||
{
|
||||
uint32 attackSpeed = 0;
|
||||
Unit* attacker = nullptr;
|
||||
if (!isVictim)
|
||||
{
|
||||
uint32 WeaponSpeed = GetAttackTime(attType);
|
||||
chance = GetPPMProcChance(WeaponSpeed, spellProcEvent->ppmRate, spellProto);
|
||||
}
|
||||
attacker = this;
|
||||
else if (victim)
|
||||
attacker = victim;
|
||||
|
||||
if (attacker)
|
||||
{
|
||||
uint32 WeaponSpeed = victim->GetAttackTime(attType);
|
||||
chance = victim->GetPPMProcChance(WeaponSpeed, spellProcEvent->ppmRate, spellProto);
|
||||
if (!procSpell || procSpell->DmgClass == SPELL_DAMAGE_CLASS_MELEE || procSpell->IsRangedWeaponSpell())
|
||||
{
|
||||
attackSpeed = attacker->GetAttackTime(attType);
|
||||
}
|
||||
else //spells user their casttime for ppm calculations
|
||||
{
|
||||
if (procSpell->CastTimeEntry)
|
||||
attackSpeed = procSpell->CastTimeEntry->CastTime;
|
||||
|
||||
//instants and fast spells use 1.5s castspeed
|
||||
if (attackSpeed < 1500)
|
||||
attackSpeed = 1500;
|
||||
}
|
||||
}
|
||||
chance = GetPPMProcChance(attackSpeed, spellProcEvent->ppmRate, spellProto);
|
||||
}
|
||||
|
||||
// Custom chances
|
||||
@ -19230,7 +19244,7 @@ uint32 Unit::GetCombatRatingDamageReduction(CombatRating cr, float rate, float c
|
||||
return CalculatePct(damage, percent);
|
||||
}
|
||||
|
||||
uint32 Unit::GetModelForForm(ShapeshiftForm form, uint32 spellId) const
|
||||
uint32 Unit::GetModelForForm(ShapeshiftForm form, uint32 spellId)
|
||||
{
|
||||
// Hardcoded cases
|
||||
switch (spellId)
|
||||
@ -19245,177 +19259,8 @@ uint32 Unit::GetModelForForm(ShapeshiftForm form, uint32 spellId) const
|
||||
|
||||
if (IsPlayer())
|
||||
{
|
||||
switch (form)
|
||||
{
|
||||
case FORM_CAT:
|
||||
// Based on Hair color
|
||||
if (getRace() == RACE_NIGHTELF)
|
||||
{
|
||||
uint8 hairColor = GetByteValue(PLAYER_BYTES, 3);
|
||||
switch (hairColor)
|
||||
{
|
||||
case 7: // Violet
|
||||
case 8:
|
||||
return 29405;
|
||||
case 3: // Light Blue
|
||||
return 29406;
|
||||
case 0: // Green
|
||||
case 1: // Light Green
|
||||
case 2: // Dark Green
|
||||
return 29407;
|
||||
case 4: // White
|
||||
return 29408;
|
||||
default: // original - Dark Blue
|
||||
return 892;
|
||||
}
|
||||
}
|
||||
// Based on Skin color
|
||||
else if (getRace() == RACE_TAUREN)
|
||||
{
|
||||
uint8 skinColor = GetByteValue(PLAYER_BYTES, 0);
|
||||
// Male
|
||||
if (getGender() == GENDER_MALE)
|
||||
{
|
||||
switch (skinColor)
|
||||
{
|
||||
case 12: // White
|
||||
case 13:
|
||||
case 14:
|
||||
case 18: // Completly White
|
||||
return 29409;
|
||||
case 9: // Light Brown
|
||||
case 10:
|
||||
case 11:
|
||||
return 29410;
|
||||
case 6: // Brown
|
||||
case 7:
|
||||
case 8:
|
||||
return 29411;
|
||||
case 0: // Dark
|
||||
case 1:
|
||||
case 2:
|
||||
case 3: // Dark Grey
|
||||
case 4:
|
||||
case 5:
|
||||
return 29412;
|
||||
default: // original - Grey
|
||||
return 8571;
|
||||
}
|
||||
}
|
||||
// Female
|
||||
else switch (skinColor)
|
||||
{
|
||||
case 10: // White
|
||||
return 29409;
|
||||
case 6: // Light Brown
|
||||
case 7:
|
||||
return 29410;
|
||||
case 4: // Brown
|
||||
case 5:
|
||||
return 29411;
|
||||
case 0: // Dark
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
return 29412;
|
||||
default: // original - Grey
|
||||
return 8571;
|
||||
}
|
||||
}
|
||||
else if (Player::TeamIdForRace(getRace()) == TEAM_ALLIANCE)
|
||||
return 892;
|
||||
else
|
||||
return 8571;
|
||||
case FORM_DIREBEAR:
|
||||
case FORM_BEAR:
|
||||
// Based on Hair color
|
||||
if (getRace() == RACE_NIGHTELF)
|
||||
{
|
||||
uint8 hairColor = GetByteValue(PLAYER_BYTES, 3);
|
||||
switch (hairColor)
|
||||
{
|
||||
case 0: // Green
|
||||
case 1: // Light Green
|
||||
case 2: // Dark Green
|
||||
return 29413; // 29415?
|
||||
case 6: // Dark Blue
|
||||
return 29414;
|
||||
case 4: // White
|
||||
return 29416;
|
||||
case 3: // Light Blue
|
||||
return 29417;
|
||||
default: // original - Violet
|
||||
return 2281;
|
||||
}
|
||||
}
|
||||
// Based on Skin color
|
||||
else if (getRace() == RACE_TAUREN)
|
||||
{
|
||||
uint8 skinColor = GetByteValue(PLAYER_BYTES, 0);
|
||||
// Male
|
||||
if (getGender() == GENDER_MALE)
|
||||
{
|
||||
switch (skinColor)
|
||||
{
|
||||
case 0: // Dark (Black)
|
||||
case 1:
|
||||
case 2:
|
||||
return 29418;
|
||||
case 3: // White
|
||||
case 4:
|
||||
case 5:
|
||||
case 12:
|
||||
case 13:
|
||||
case 14:
|
||||
return 29419;
|
||||
case 9: // Light Brown/Grey
|
||||
case 10:
|
||||
case 11:
|
||||
case 15:
|
||||
case 16:
|
||||
case 17:
|
||||
return 29420;
|
||||
case 18: // Completly White
|
||||
return 29421;
|
||||
default: // original - Brown
|
||||
return 2289;
|
||||
}
|
||||
}
|
||||
// Female
|
||||
else switch (skinColor)
|
||||
{
|
||||
case 0: // Dark (Black)
|
||||
case 1:
|
||||
return 29418;
|
||||
case 2: // White
|
||||
case 3:
|
||||
return 29419;
|
||||
case 6: // Light Brown/Grey
|
||||
case 7:
|
||||
case 8:
|
||||
case 9:
|
||||
return 29420;
|
||||
case 10: // Completly White
|
||||
return 29421;
|
||||
default: // original - Brown
|
||||
return 2289;
|
||||
}
|
||||
}
|
||||
else if (Player::TeamIdForRace(getRace()) == TEAM_ALLIANCE)
|
||||
return 2281;
|
||||
else
|
||||
return 2289;
|
||||
case FORM_FLIGHT:
|
||||
if (Player::TeamIdForRace(getRace()) == TEAM_ALLIANCE)
|
||||
return 20857;
|
||||
return 20872;
|
||||
case FORM_FLIGHT_EPIC:
|
||||
if (Player::TeamIdForRace(getRace()) == TEAM_ALLIANCE)
|
||||
return 21243;
|
||||
return 21244;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if (uint32 ModelId = sObjectMgr->GetModelForShapeshift(form, ToPlayer()))
|
||||
return ModelId;
|
||||
}
|
||||
|
||||
uint32 modelid = 0;
|
||||
@ -19441,104 +19286,6 @@ uint32 Unit::GetModelForForm(ShapeshiftForm form, uint32 spellId) const
|
||||
return modelid;
|
||||
}
|
||||
|
||||
uint32 Unit::GetModelForTotem(PlayerTotemType totemType)
|
||||
{
|
||||
switch (getRace())
|
||||
{
|
||||
case RACE_ORC:
|
||||
{
|
||||
switch (totemType)
|
||||
{
|
||||
case SUMMON_TYPE_TOTEM_FIRE: // fire
|
||||
return 30758;
|
||||
case SUMMON_TYPE_TOTEM_EARTH: // earth
|
||||
return 30757;
|
||||
case SUMMON_TYPE_TOTEM_WATER: // water
|
||||
return 30759;
|
||||
case SUMMON_TYPE_TOTEM_AIR: // air
|
||||
return 30756;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case RACE_DWARF:
|
||||
{
|
||||
switch (totemType)
|
||||
{
|
||||
case SUMMON_TYPE_TOTEM_FIRE: // fire
|
||||
return 30754;
|
||||
case SUMMON_TYPE_TOTEM_EARTH: // earth
|
||||
return 30753;
|
||||
case SUMMON_TYPE_TOTEM_WATER: // water
|
||||
return 30755;
|
||||
case SUMMON_TYPE_TOTEM_AIR: // air
|
||||
return 30736;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case RACE_TROLL:
|
||||
{
|
||||
switch (totemType)
|
||||
{
|
||||
case SUMMON_TYPE_TOTEM_FIRE: // fire
|
||||
return 30762;
|
||||
case SUMMON_TYPE_TOTEM_EARTH: // earth
|
||||
return 30761;
|
||||
case SUMMON_TYPE_TOTEM_WATER: // water
|
||||
return 30763;
|
||||
case SUMMON_TYPE_TOTEM_AIR: // air
|
||||
return 30760;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case RACE_TAUREN:
|
||||
{
|
||||
switch (totemType)
|
||||
{
|
||||
case SUMMON_TYPE_TOTEM_FIRE: // fire
|
||||
return 4589;
|
||||
case SUMMON_TYPE_TOTEM_EARTH: // earth
|
||||
return 4588;
|
||||
case SUMMON_TYPE_TOTEM_WATER: // water
|
||||
return 4587;
|
||||
case SUMMON_TYPE_TOTEM_AIR: // air
|
||||
return 4590;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case RACE_DRAENEI:
|
||||
{
|
||||
switch (totemType)
|
||||
{
|
||||
case SUMMON_TYPE_TOTEM_FIRE: // fire
|
||||
return 19074;
|
||||
case SUMMON_TYPE_TOTEM_EARTH: // earth
|
||||
return 19073;
|
||||
case SUMMON_TYPE_TOTEM_WATER: // water
|
||||
return 19075;
|
||||
case SUMMON_TYPE_TOTEM_AIR: // air
|
||||
return 19071;
|
||||
}
|
||||
break;
|
||||
}
|
||||
default: // One standard for other races.
|
||||
{
|
||||
switch (totemType)
|
||||
{
|
||||
case SUMMON_TYPE_TOTEM_FIRE: // fire
|
||||
return 4589;
|
||||
case SUMMON_TYPE_TOTEM_EARTH: // earth
|
||||
return 4588;
|
||||
case SUMMON_TYPE_TOTEM_WATER: // water
|
||||
return 4587;
|
||||
case SUMMON_TYPE_TOTEM_AIR: // air
|
||||
return 4590;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
Unit* Unit::GetRedirectThreatTarget() const
|
||||
{
|
||||
return _redirectThreatInfo.GetTargetGUID() ? ObjectAccessor::GetUnit(*this, _redirectThreatInfo.GetTargetGUID()) : nullptr;
|
||||
@ -20247,11 +19994,11 @@ void Unit::StopAttackingInvalidTarget()
|
||||
attacker->ToPlayer()->SendAttackSwingCancelAttack();
|
||||
}
|
||||
|
||||
for (Unit* controled : attacker->m_Controlled)
|
||||
for (Unit* controlled : attacker->m_Controlled)
|
||||
{
|
||||
if (controled->GetVictim() == this && !controled->IsValidAttackTarget(this))
|
||||
if (controlled->GetVictim() == this && !controlled->IsValidAttackTarget(this))
|
||||
{
|
||||
controled->AttackStop();
|
||||
controlled->AttackStop();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -26,6 +26,7 @@
|
||||
#include "ItemTemplate.h"
|
||||
#include "MotionMaster.h"
|
||||
#include "Object.h"
|
||||
#include "SharedDefines.h"
|
||||
#include "SpellAuraDefines.h"
|
||||
#include "SpellDefines.h"
|
||||
#include "ThreatMgr.h"
|
||||
@ -599,23 +600,6 @@ enum ReactiveType
|
||||
MAX_REACTIVE
|
||||
};
|
||||
|
||||
#define SUMMON_SLOT_PET 0
|
||||
#define SUMMON_SLOT_TOTEM 1
|
||||
#define MAX_TOTEM_SLOT 5
|
||||
#define SUMMON_SLOT_MINIPET 5
|
||||
#define SUMMON_SLOT_QUEST 6
|
||||
#define MAX_SUMMON_SLOT 7
|
||||
|
||||
#define MAX_GAMEOBJECT_SLOT 4
|
||||
|
||||
enum PlayerTotemType
|
||||
{
|
||||
SUMMON_TYPE_TOTEM_FIRE = 63,
|
||||
SUMMON_TYPE_TOTEM_EARTH = 81,
|
||||
SUMMON_TYPE_TOTEM_WATER = 82,
|
||||
SUMMON_TYPE_TOTEM_AIR = 83,
|
||||
};
|
||||
|
||||
/// Spell cooldown flags sent in SMSG_SPELL_COOLDOWN
|
||||
enum SpellCooldownFlags
|
||||
{
|
||||
@ -759,7 +743,7 @@ public:
|
||||
// Unit type methods
|
||||
[[nodiscard]] bool IsSummon() const { return m_unitTypeMask & UNIT_MASK_SUMMON; }
|
||||
[[nodiscard]] bool IsGuardian() const { return m_unitTypeMask & UNIT_MASK_GUARDIAN; }
|
||||
[[nodiscard]] bool IsControllableGuardian() const { return m_unitTypeMask & UNIT_MASK_CONTROLABLE_GUARDIAN; }
|
||||
[[nodiscard]] bool IsControllableGuardian() const { return m_unitTypeMask & UNIT_MASK_CONTROLLABLE_GUARDIAN; }
|
||||
[[nodiscard]] bool IsPet() const { return m_unitTypeMask & UNIT_MASK_PET; }
|
||||
[[nodiscard]] bool IsHunterPet() const { return m_unitTypeMask & UNIT_MASK_HUNTER_PET; }
|
||||
[[nodiscard]] bool IsTotem() const { return m_unitTypeMask & UNIT_MASK_TOTEM; }
|
||||
@ -1897,8 +1881,7 @@ public:
|
||||
void RestoreDisplayId();
|
||||
void SetNativeDisplayId(uint32 displayId) { SetUInt32Value(UNIT_FIELD_NATIVEDISPLAYID, displayId); }
|
||||
|
||||
[[nodiscard]] uint32 GetModelForForm(ShapeshiftForm form, uint32 spellId) const;
|
||||
uint32 GetModelForTotem(PlayerTotemType totemType);
|
||||
[[nodiscard]] uint32 GetModelForForm(ShapeshiftForm form, uint32 spellId);
|
||||
|
||||
// Unit positons
|
||||
[[nodiscard]] virtual bool IsInWater() const;
|
||||
|
||||
@ -161,7 +161,7 @@ enum UnitTypeMask
|
||||
UNIT_MASK_VEHICLE = 0x00000020,
|
||||
UNIT_MASK_PUPPET = 0x00000040,
|
||||
UNIT_MASK_HUNTER_PET = 0x00000080,
|
||||
UNIT_MASK_CONTROLABLE_GUARDIAN = 0x00000100,
|
||||
UNIT_MASK_CONTROLLABLE_GUARDIAN = 0x00000100,
|
||||
UNIT_MASK_ACCESSORY = 0x00000200
|
||||
};
|
||||
|
||||
|
||||
@ -1785,6 +1785,139 @@ void ObjectMgr::LoadCreatureModelInfo()
|
||||
LOG_INFO("server.loading", " ");
|
||||
}
|
||||
|
||||
void ObjectMgr::LoadPlayerTotemModels()
|
||||
{
|
||||
uint32 oldMSTime = getMSTime();
|
||||
|
||||
QueryResult result = WorldDatabase.Query("SELECT TotemID, RaceID, ModelID from player_totem_model");
|
||||
|
||||
if (!result)
|
||||
{
|
||||
LOG_INFO("server.loading", ">> Loaded 0 player totem model records. DB table `player_totem_model` is empty.");
|
||||
return;
|
||||
}
|
||||
|
||||
uint32 count = 0;
|
||||
do
|
||||
{
|
||||
Field* fields = result->Fetch();
|
||||
|
||||
SummonSlot totemSlot = SummonSlot(fields[0].Get<uint8>());
|
||||
uint8 race = fields[1].Get<uint8>();
|
||||
uint32 displayId = fields[2].Get<uint32>();
|
||||
|
||||
if (totemSlot < SUMMON_SLOT_TOTEM_FIRE || totemSlot >= MAX_TOTEM_SLOT)
|
||||
{
|
||||
LOG_ERROR("sql.sql", "Wrong TotemSlot {} in `player_totem_model` table, skipped.", totemSlot);
|
||||
continue;
|
||||
}
|
||||
|
||||
ChrRacesEntry const* raceEntry = sChrRacesStore.LookupEntry(race);
|
||||
if (!raceEntry)
|
||||
{
|
||||
LOG_ERROR("sql.sql", "Race {} defined in `player_totem_model` does not exists, skipped.", uint32(race));
|
||||
continue;
|
||||
}
|
||||
|
||||
CreatureDisplayInfoEntry const* displayEntry = sCreatureDisplayInfoStore.LookupEntry(displayId);
|
||||
if (!displayEntry)
|
||||
{
|
||||
LOG_ERROR("sql.sql", "TotemSlot: {} defined in `player_totem_model` has non-existing model ({}), skipped.", totemSlot, displayId);
|
||||
continue;
|
||||
}
|
||||
|
||||
_playerTotemModel[std::make_pair(totemSlot, Races(race))] = displayId;
|
||||
++count;
|
||||
} while (result->NextRow());
|
||||
|
||||
LOG_INFO("server.loading", ">> Loaded {} player totem model records in {} ms", count, GetMSTimeDiffToNow(oldMSTime));
|
||||
LOG_INFO("server.loading", " ");
|
||||
}
|
||||
|
||||
uint32 ObjectMgr::GetModelForTotem(SummonSlot totemSlot, Races race) const
|
||||
{
|
||||
auto itr = _playerTotemModel.find(std::make_pair(totemSlot, race));
|
||||
if (itr != _playerTotemModel.end())
|
||||
return itr->second;
|
||||
|
||||
LOG_ERROR("misc", "TotemSlot {} with RaceID ({}) have no totem model data defined, set to default model.", totemSlot, race);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void ObjectMgr::LoadPlayerShapeshiftModels()
|
||||
{
|
||||
uint32 oldMSTime = getMSTime();
|
||||
|
||||
QueryResult result = WorldDatabase.Query("SELECT ShapeshiftID, RaceID, CustomizationID, GenderID, ModelID from player_shapeshift_model");
|
||||
|
||||
if (!result)
|
||||
{
|
||||
LOG_INFO("server.loading", ">> Loaded 0 player shapeshift model records. DB table `player_shapeshift_model` is empty.");
|
||||
return;
|
||||
}
|
||||
|
||||
uint32 count = 0;
|
||||
do
|
||||
{
|
||||
Field* fields = result->Fetch();
|
||||
|
||||
ShapeshiftForm shapeshiftForm = ShapeshiftForm(fields[0].Get<uint8>());
|
||||
uint8 race = fields[1].Get<uint8>();
|
||||
uint8 customizationID = fields[2].Get<uint8>();
|
||||
uint8 genderID = Gender(fields[3].Get<uint8>());
|
||||
uint32 modelId = fields[4].Get<uint32>();
|
||||
|
||||
ChrRacesEntry const* raceEntry = sChrRacesStore.LookupEntry(race);
|
||||
if (!raceEntry)
|
||||
{
|
||||
LOG_ERROR("sql.sql", "Race {} defined in `player_shapeshift_model` does not exists, skipped.", uint32(race));
|
||||
continue;
|
||||
}
|
||||
|
||||
CreatureDisplayInfoEntry const* displayEntry = sCreatureDisplayInfoStore.LookupEntry(modelId);
|
||||
if (!displayEntry)
|
||||
{
|
||||
LOG_ERROR("sql.sql", "ShapeshiftForm: {}, Race: {} defined in `player_shapeshift_model` has non-existing model ({}), skipped.", shapeshiftForm, race, modelId);
|
||||
continue;
|
||||
}
|
||||
|
||||
_playerShapeshiftModel[std::make_tuple(shapeshiftForm, race, customizationID, genderID)] = modelId;
|
||||
++count;
|
||||
} while (result->NextRow());
|
||||
|
||||
LOG_INFO("server.loading", ">> Loaded {} player totem model records in {} ms", count, GetMSTimeDiffToNow(oldMSTime));
|
||||
LOG_INFO("server.loading", " ");
|
||||
}
|
||||
|
||||
uint32 ObjectMgr::GetModelForShapeshift(ShapeshiftForm form, Player* player) const
|
||||
{
|
||||
uint8 customizationID;
|
||||
|
||||
if (player->GetTeamId() == TEAM_ALLIANCE)
|
||||
customizationID = player->GetByteValue(PLAYER_BYTES, 3); // Use Hair Color
|
||||
else
|
||||
customizationID = player->GetByteValue(PLAYER_BYTES, 0); // Use Skin Color
|
||||
|
||||
auto itr = _playerShapeshiftModel.find(std::make_tuple(form, player->getRace(), customizationID, player->getGender()));
|
||||
if (itr != _playerShapeshiftModel.end())
|
||||
return itr->second; // Explicit combination
|
||||
|
||||
itr = _playerShapeshiftModel.find(std::make_tuple(form, player->getRace(), customizationID, GENDER_NONE));
|
||||
if (itr != _playerShapeshiftModel.end())
|
||||
return itr->second; // Combination applied to both genders
|
||||
|
||||
itr = _playerShapeshiftModel.find(std::make_tuple(form, player->getRace(), 255, player->getGender()));
|
||||
if (itr != _playerShapeshiftModel.end())
|
||||
return itr->second; // Default gender-dependent model
|
||||
|
||||
itr = _playerShapeshiftModel.find(std::make_tuple(form, player->getRace(), 255, GENDER_NONE));
|
||||
if (itr != _playerShapeshiftModel.end())
|
||||
return itr->second; // Last resort
|
||||
|
||||
LOG_DEBUG("entities.player", "ShapeshiftForm {} with RaceID ({}) have no shapeshift model data defined, using fallback data.", form, player->getRace());
|
||||
return 0;
|
||||
}
|
||||
|
||||
void ObjectMgr::LoadLinkedRespawn()
|
||||
{
|
||||
uint32 oldMSTime = getMSTime();
|
||||
|
||||
@ -711,6 +711,10 @@ struct DungeonEncounter
|
||||
typedef std::list<DungeonEncounter const*> DungeonEncounterList;
|
||||
typedef std::unordered_map<uint32, DungeonEncounterList> DungeonEncounterContainer;
|
||||
|
||||
typedef std::map<std::pair<SummonSlot /*TotemSlot*/, Races /*RaceId*/>, uint32 /*DisplayId*/> PlayerTotemModelMap;
|
||||
|
||||
typedef std::map<std::tuple<ShapeshiftForm /*ShapeshiftID*/, uint8 /*RaceID*/, uint8 /*CustomizationID*/, uint8 /*GenderID*/>, uint32 /*ModelID*/> PlayerShapeshiftModelMap;
|
||||
|
||||
static constexpr uint32 MAX_QUEST_MONEY_REWARDS = 10;
|
||||
typedef std::array<uint32, MAX_QUEST_MONEY_REWARDS> QuestMoneyRewardArray;
|
||||
typedef std::unordered_map<uint32, QuestMoneyRewardArray> QuestMoneyRewardStore;
|
||||
@ -777,6 +781,10 @@ public:
|
||||
[[nodiscard]] ItemTemplateContainer const* GetItemTemplateStore() const { return &_itemTemplateStore; }
|
||||
[[nodiscard]] std::vector<ItemTemplate*> const* GetItemTemplateStoreFast() const { return &_itemTemplateStoreFast; }
|
||||
|
||||
uint32 GetModelForTotem(SummonSlot totemSlot, Races race) const;
|
||||
|
||||
uint32 GetModelForShapeshift(ShapeshiftForm form, Player* player) const;
|
||||
|
||||
ItemSetNameEntry const* GetItemSetNameEntry(uint32 itemId)
|
||||
{
|
||||
ItemSetNameContainer::iterator itr = _itemSetNameStore.find(itemId);
|
||||
@ -1035,6 +1043,8 @@ public:
|
||||
void LoadCreatureAddons();
|
||||
void LoadGameObjectAddons();
|
||||
void LoadCreatureModelInfo();
|
||||
void LoadPlayerTotemModels();
|
||||
void LoadPlayerShapeshiftModels();
|
||||
void LoadEquipmentTemplates();
|
||||
void LoadCreatureMovementOverrides();
|
||||
void LoadGameObjectLocales();
|
||||
@ -1622,6 +1632,10 @@ private:
|
||||
|
||||
std::set<uint32> _transportMaps; // Helper container storing map ids that are for transports only, loaded from gameobject_template
|
||||
|
||||
PlayerTotemModelMap _playerTotemModel;
|
||||
|
||||
PlayerShapeshiftModelMap _playerShapeshiftModel;
|
||||
|
||||
QuestMoneyRewardStore _questMoneyRewards;
|
||||
|
||||
struct GameobjectInstanceSavedState
|
||||
|
||||
@ -1444,7 +1444,7 @@ void Guild::HandleInviteMember(WorldSession* session, std::string const& name)
|
||||
if (pInvitee->GetSocial()->HasIgnore(player->GetGUID()))
|
||||
return;
|
||||
|
||||
uint32 memberLimit = sConfigMgr->GetOption<uint32>("Guild.MemberLimit", 0);
|
||||
uint32 memberLimit = sWorld->getIntConfig(CONFIG_GUILD_MEMBER_LIMIT);
|
||||
if (memberLimit > 0 && player->GetGuild()->GetMemberCount() >= memberLimit)
|
||||
{
|
||||
ChatHandler(player->GetSession()).PSendSysMessage("Your guild has reached the maximum amount of members ({}). You cannot send another invite until the guild member count is lower.", memberLimit);
|
||||
|
||||
@ -699,7 +699,7 @@ public:
|
||||
void HandleSetEmblem(WorldSession* session, const EmblemInfo& emblemInfo);
|
||||
void HandleSetLeader(WorldSession* session, std::string_view name);
|
||||
void HandleSetBankTabInfo(WorldSession* session, uint8 tabId, std::string_view name, std::string_view icon);
|
||||
void HandleSetMemberNote(WorldSession* session, std::string_view name, std::string_view note, bool officer);
|
||||
void HandleSetMemberNote(WorldSession* session, std::string_view name, std::string_view note, bool isPublic);
|
||||
void HandleSetRankInfo(WorldSession* session, uint8 rankId, std::string_view name, uint32 rights, uint32 moneyPerDay, std::array<GuildBankRightsAndSlots, GUILD_BANK_MAX_TABS> const& rightsAndSlots);
|
||||
void HandleBuyBankTab(WorldSession* session, uint8 tabId);
|
||||
void HandleInviteMember(WorldSession* session, std::string const& name);
|
||||
|
||||
@ -300,7 +300,7 @@ void WorldSession::HandlePetActionHelper(Unit* pet, ObjectGuid guid1, uint32 spe
|
||||
//dismissing a summoned pet is like killing them (this prevents returning a soulshard...)
|
||||
pet->setDeathState(DeathState::Corpse);
|
||||
}
|
||||
else if (pet->HasUnitTypeMask(UNIT_MASK_MINION | UNIT_MASK_SUMMON | UNIT_MASK_GUARDIAN | UNIT_MASK_CONTROLABLE_GUARDIAN))
|
||||
else if (pet->HasUnitTypeMask(UNIT_MASK_MINION | UNIT_MASK_SUMMON | UNIT_MASK_GUARDIAN | UNIT_MASK_CONTROLLABLE_GUARDIAN))
|
||||
{
|
||||
pet->ToTempSummon()->UnSummon();
|
||||
}
|
||||
|
||||
@ -686,7 +686,7 @@ void WorldSession::HandleTotemDestroyed(WorldPackets::Totem::TotemDestroyed& tot
|
||||
return;
|
||||
|
||||
uint8 slotId = totemDestroyed.Slot;
|
||||
slotId += SUMMON_SLOT_TOTEM;
|
||||
slotId += SUMMON_SLOT_TOTEM_FIRE;
|
||||
|
||||
if (slotId >= MAX_TOTEM_SLOT)
|
||||
return;
|
||||
|
||||
@ -58,11 +58,7 @@ uint32 ScriptMgr::DealDamage(Unit* AttackerUnit, Unit* pVictim, uint32 damage, D
|
||||
|
||||
for (auto const& [scriptID, script] : ScriptRegistry<UnitScript>::ScriptPointerList)
|
||||
{
|
||||
auto const& dmg = script->DealDamage(AttackerUnit, pVictim, damage, damagetype);
|
||||
if (dmg != damage)
|
||||
{
|
||||
return damage;
|
||||
}
|
||||
damage = script->DealDamage(AttackerUnit, pVictim, damage, damagetype);
|
||||
}
|
||||
|
||||
return damage;
|
||||
|
||||
@ -3679,13 +3679,6 @@ void AuraEffect::HandleAuraControlVehicle(AuraApplication const* aurApp, uint8 m
|
||||
}
|
||||
else
|
||||
{
|
||||
if (GetId() == 53111) // Devour Humanoid
|
||||
{
|
||||
Unit::Kill(target, caster);
|
||||
if (caster->IsCreature())
|
||||
caster->ToCreature()->RemoveCorpse();
|
||||
}
|
||||
|
||||
caster->_ExitVehicle();
|
||||
// some SPELL_AURA_CONTROL_VEHICLE auras have a dummy effect on the player - remove them
|
||||
caster->RemoveAurasDueToSpell(GetId());
|
||||
@ -6859,8 +6852,10 @@ void AuraEffect::HandlePeriodicHealthLeechAuraTick(Unit* target, Unit* caster) c
|
||||
heal = uint32(caster->SpellHealingBonusTaken(caster, GetSpellInfo(), heal, DOT, GetBase()->GetStackAmount()));
|
||||
|
||||
HealInfo healInfo(caster, caster, heal, GetSpellInfo(), GetSpellInfo()->GetSchoolMask());
|
||||
int32 gain = caster->HealBySpell(healInfo);
|
||||
caster->getHostileRefMgr().threatAssist(caster, gain * 0.5f, GetSpellInfo());
|
||||
float threat = float(caster->HealBySpell(healInfo)) * 0.5f;
|
||||
if (caster->IsClass(CLASS_PALADIN))
|
||||
threat *= 0.5f;
|
||||
caster->getHostileRefMgr().threatAssist(caster, threat, GetSpellInfo());
|
||||
}
|
||||
|
||||
void AuraEffect::HandlePeriodicHealthFunnelAuraTick(Unit* target, Unit* caster) const
|
||||
@ -7007,7 +7002,13 @@ void AuraEffect::HandlePeriodicHealAurasTick(Unit* target, Unit* caster) const
|
||||
target->SendPeriodicAuraLog(&pInfo);
|
||||
|
||||
if (caster)
|
||||
target->getHostileRefMgr().threatAssist(caster, float(gain) * 0.5f, GetSpellInfo());
|
||||
{
|
||||
float threat = float(gain) * 0.5f;
|
||||
if (caster->IsClass(CLASS_PALADIN))
|
||||
threat *= 0.5f;
|
||||
|
||||
target->getHostileRefMgr().threatAssist(caster, threat, GetSpellInfo());
|
||||
}
|
||||
|
||||
bool haveCastItem = GetBase()->GetCastItemGUID();
|
||||
|
||||
|
||||
@ -2808,7 +2808,11 @@ void Spell::DoAllEffectOnTarget(TargetInfo* target)
|
||||
}
|
||||
|
||||
int32 gain = caster->HealBySpell(healInfo, crit);
|
||||
unitTarget->getHostileRefMgr().threatAssist(caster, float(gain) * 0.5f, m_spellInfo);
|
||||
float threat = float(gain) * 0.5f;
|
||||
if (caster->IsClass(CLASS_PALADIN))
|
||||
threat *= 0.5f;
|
||||
|
||||
unitTarget->getHostileRefMgr().threatAssist(caster, threat, m_spellInfo);
|
||||
m_healing = gain;
|
||||
|
||||
// Xinef: if heal acutally healed something, add no overheal flag
|
||||
@ -3451,7 +3455,7 @@ bool Spell::UpdateChanneledTargetList()
|
||||
continue;
|
||||
}
|
||||
// Xinef: Update Orientation server side (non players wont sent appropriate packets)
|
||||
else if (m_spellInfo->HasAttribute(SPELL_ATTR1_TRACK_TARGET_IN_CHANNEL))
|
||||
else if (!m_caster->IsPlayer() && m_spellInfo->HasAttribute(SPELL_ATTR1_TRACK_TARGET_IN_CHANNEL))
|
||||
m_caster->UpdateOrientation(m_caster->GetAngle(unit));
|
||||
}
|
||||
}
|
||||
|
||||
@ -3428,11 +3428,6 @@ void Spell::EffectWeaponDmg(SpellEffIndex effIndex)
|
||||
spell_bonus += int32(0.08f * m_caster->GetTotalAttackPowerValue(BASE_ATTACK));
|
||||
spell_bonus += int32(0.13f * m_caster->SpellBaseDamageBonusDone(m_spellInfo->GetSchoolMask()));
|
||||
break;
|
||||
case 42463: // Seals of the Pure for Seal of Vengeance/Corruption
|
||||
case 53739:
|
||||
if (AuraEffect const* sealsOfPure = m_caster->GetAuraEffect(SPELL_AURA_ADD_PCT_MODIFIER, SPELLFAMILY_PALADIN, 25, 0))
|
||||
AddPct(totalDamagePercentMod, sealsOfPure->GetAmount());
|
||||
break;
|
||||
case 53385: // Divine Storm deals normalized damage
|
||||
normalized = true;
|
||||
break;
|
||||
@ -3532,9 +3527,7 @@ void Spell::EffectWeaponDmg(SpellEffIndex effIndex)
|
||||
// Blood-Caked Strike - Blood-Caked Blade
|
||||
if (m_spellInfo->SpellIconID == 1736)
|
||||
{
|
||||
int32 weaponDamage = m_caster->CalculateDamage(m_attackType, false, true);
|
||||
ApplyPct(weaponDamage, std::min(uint32(3), unitTarget->GetDiseasesByCaster(m_caster->GetGUID())) * 12.5f);
|
||||
spell_bonus = weaponDamage;
|
||||
AddPct(totalDamagePercentMod, unitTarget->GetDiseasesByCaster(m_caster->GetGUID()) * 50.0f);
|
||||
break;
|
||||
}
|
||||
// Heart Strike
|
||||
@ -3581,30 +3574,26 @@ void Spell::EffectWeaponDmg(SpellEffIndex effIndex)
|
||||
}
|
||||
}
|
||||
|
||||
// apply to non-weapon bonus weapon total pct effect, weapon total flat effect included in weapon damage
|
||||
if (fixed_bonus || spell_bonus)
|
||||
bool const isPhysical = (m_spellSchoolMask & SPELL_SCHOOL_MASK_NORMAL);
|
||||
if (isPhysical && (fixed_bonus || spell_bonus))
|
||||
{
|
||||
UnitMods unitMod;
|
||||
switch (m_attackType)
|
||||
{
|
||||
default:
|
||||
case BASE_ATTACK:
|
||||
unitMod = UNIT_MOD_DAMAGE_MAINHAND;
|
||||
break;
|
||||
case OFF_ATTACK:
|
||||
unitMod = UNIT_MOD_DAMAGE_OFFHAND;
|
||||
break;
|
||||
case RANGED_ATTACK:
|
||||
unitMod = UNIT_MOD_DAMAGE_RANGED;
|
||||
break;
|
||||
}
|
||||
|
||||
if (m_spellSchoolMask & SPELL_SCHOOL_MASK_NORMAL)
|
||||
{
|
||||
float weapon_total_pct = m_caster->GetModifierValue(unitMod, TOTAL_PCT);
|
||||
fixed_bonus = int32(fixed_bonus * weapon_total_pct);
|
||||
spell_bonus = int32(spell_bonus * weapon_total_pct);
|
||||
default:
|
||||
case BASE_ATTACK:
|
||||
unitMod = UNIT_MOD_DAMAGE_MAINHAND;
|
||||
break;
|
||||
case OFF_ATTACK:
|
||||
unitMod = UNIT_MOD_DAMAGE_OFFHAND;
|
||||
break;
|
||||
case RANGED_ATTACK:
|
||||
unitMod = UNIT_MOD_DAMAGE_RANGED;
|
||||
break;
|
||||
}
|
||||
float weapon_total_pct = m_caster->GetModifierValue(unitMod, TOTAL_PCT);
|
||||
fixed_bonus = int32(fixed_bonus * weapon_total_pct);
|
||||
spell_bonus = int32(spell_bonus * weapon_total_pct);
|
||||
}
|
||||
|
||||
int32 weaponDamage = 0;
|
||||
@ -3612,15 +3601,11 @@ void Spell::EffectWeaponDmg(SpellEffIndex effIndex)
|
||||
if (m_caster->GetEntry() == 27893)
|
||||
{
|
||||
if (Unit* owner = m_caster->GetOwner())
|
||||
weaponDamage = owner->CalculateDamage(m_attackType, normalized, true);
|
||||
}
|
||||
else if (m_spellInfo->Id == 5019) // Wands
|
||||
{
|
||||
weaponDamage = m_caster->CalculateDamage(m_attackType, true, false);
|
||||
weaponDamage = owner->CalculateDamage(m_attackType, normalized, isPhysical);
|
||||
}
|
||||
else
|
||||
{
|
||||
weaponDamage = m_caster->CalculateDamage(m_attackType, normalized, true);
|
||||
weaponDamage = m_caster->CalculateDamage(m_attackType, normalized, isPhysical);
|
||||
}
|
||||
|
||||
// Sequence is important
|
||||
@ -3952,7 +3937,7 @@ void Spell::EffectScriptEffect(SpellEffIndex effIndex)
|
||||
{
|
||||
int32 basepoints0 = damage;
|
||||
// Cast Absorb on totems
|
||||
for (uint8 slot = SUMMON_SLOT_TOTEM; slot < MAX_TOTEM_SLOT; ++slot)
|
||||
for (uint8 slot = SUMMON_SLOT_TOTEM_FIRE; slot < MAX_TOTEM_SLOT; ++slot)
|
||||
{
|
||||
if (!unitTarget->m_SummonSlot[slot])
|
||||
continue;
|
||||
@ -5260,7 +5245,7 @@ void Spell::EffectDestroyAllTotems(SpellEffIndex /*effIndex*/)
|
||||
return;
|
||||
|
||||
int32 mana = 0;
|
||||
for (uint8 slot = SUMMON_SLOT_TOTEM; slot < MAX_TOTEM_SLOT; ++slot)
|
||||
for (uint8 slot = SUMMON_SLOT_TOTEM_FIRE; slot < MAX_TOTEM_SLOT; ++slot)
|
||||
{
|
||||
if (!m_caster->m_SummonSlot[slot])
|
||||
continue;
|
||||
|
||||
@ -2126,6 +2126,7 @@ AuraStateType SpellInfo::LoadAuraState() const
|
||||
case 20656:
|
||||
case 25602:
|
||||
case 32129:
|
||||
case 49163: // Perpetual Instability (Element 115)
|
||||
return AURA_STATE_FAERIE_FIRE;
|
||||
default:
|
||||
break;
|
||||
@ -2644,14 +2645,6 @@ bool SpellInfo::_IsPositiveEffect(uint8 effIndex, bool deep) const
|
||||
|
||||
switch (Effects[effIndex].Effect)
|
||||
{
|
||||
case SPELL_EFFECT_DUMMY:
|
||||
// some explicitly required dummy effect sets
|
||||
switch (Id)
|
||||
{
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
// always positive effects (check before target checks that provided non-positive result in some case for positive effects)
|
||||
case SPELL_EFFECT_HEAL:
|
||||
case SPELL_EFFECT_LEARN_SPELL:
|
||||
@ -2661,10 +2654,8 @@ bool SpellInfo::_IsPositiveEffect(uint8 effIndex, bool deep) const
|
||||
return true;
|
||||
case SPELL_EFFECT_APPLY_AREA_AURA_ENEMY:
|
||||
return false;
|
||||
|
||||
case SPELL_EFFECT_GAMEOBJECT_DAMAGE:
|
||||
return false;
|
||||
|
||||
case SPELL_EFFECT_SCHOOL_DAMAGE:
|
||||
{
|
||||
bool only = true;
|
||||
@ -2688,7 +2679,6 @@ bool SpellInfo::_IsPositiveEffect(uint8 effIndex, bool deep) const
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
|
||||
// non-positive aura use
|
||||
case SPELL_EFFECT_APPLY_AURA:
|
||||
case SPELL_EFFECT_APPLY_AREA_AURA_FRIEND:
|
||||
|
||||
@ -230,15 +230,6 @@ void SpellMgr::LoadSpellInfoCorrections()
|
||||
spellInfo->MaxAffectedTargets = 4;
|
||||
});
|
||||
|
||||
ApplySpellFix({
|
||||
20424, // Seal of Command
|
||||
42463, // Seal of Vengeance
|
||||
53739 // Seal of Corruption
|
||||
}, [](SpellInfo* spellInfo)
|
||||
{
|
||||
spellInfo->AttributesEx3 |= SPELL_ATTR3_IGNORE_CASTER_MODIFIERS;
|
||||
});
|
||||
|
||||
// Spitfire Totem
|
||||
ApplySpellFix({ 38296 }, [](SpellInfo* spellInfo)
|
||||
{
|
||||
@ -3580,7 +3571,7 @@ void SpellMgr::LoadSpellInfoCorrections()
|
||||
// That's Abominable
|
||||
ApplySpellFix({ 59565 }, [](SpellInfo* spellInfo)
|
||||
{
|
||||
spellInfo->Effects[EFFECT_0].MiscValueB = 1721; // controlable guardian
|
||||
spellInfo->Effects[EFFECT_0].MiscValueB = 1721; // controllable guardian
|
||||
});
|
||||
|
||||
// Investigate the Blue Recluse (1920)
|
||||
@ -5105,6 +5096,13 @@ void SpellMgr::LoadSpellInfoCorrections()
|
||||
spellInfo->AttributesEx6 |= SPELL_ATTR6_ALLOW_WHILE_RIDING_VEHICLE;
|
||||
});
|
||||
|
||||
// Eye of Acherus Flight (Boost)
|
||||
ApplySpellFix({ 51923 }, [](SpellInfo* spellInfo)
|
||||
{
|
||||
spellInfo->Effects[EFFECT_0].ApplyAuraName = SPELL_AURA_MOD_INCREASE_FLIGHT_SPEED;
|
||||
spellInfo->Effects[EFFECT_0].TargetA = SpellImplicitTargetInfo(TARGET_UNIT_CASTER);
|
||||
});
|
||||
|
||||
// Shattering Throw
|
||||
ApplySpellFix({ 64382 }, [](SpellInfo* spellInfo)
|
||||
{
|
||||
@ -5116,13 +5114,29 @@ void SpellMgr::LoadSpellInfoCorrections()
|
||||
43444, // Explosive Trap (Hex Lord Malacrass)
|
||||
43447, // Freezing Trap (Hex Lord Malacrass)
|
||||
43449, // Snake Trap (Hex Lord Malacrass)
|
||||
45236, // Blaze
|
||||
50745 // Blaze
|
||||
}, [](SpellInfo* spellInfo)
|
||||
{
|
||||
spellInfo->Effects[EFFECT_0].Effect = SPELL_EFFECT_SUMMON_OBJECT_SLOT1;
|
||||
});
|
||||
|
||||
// Arcane Missiles
|
||||
ApplySpellFix({ 58529, 61592 }, [](SpellInfo* spellInfo)
|
||||
{
|
||||
spellInfo->Effects[EFFECT_0].TargetA = SpellImplicitTargetInfo(TARGET_UNIT_TARGET_ENEMY);
|
||||
});
|
||||
|
||||
// Siphon Bloodgem
|
||||
ApplySpellFix({ 34367 }, [](SpellInfo* spellInfo)
|
||||
{
|
||||
spellInfo->ChannelInterruptFlags &= ~AURA_INTERRUPT_FLAG_TURNING;
|
||||
});
|
||||
|
||||
// The Green Tower
|
||||
ApplySpellFix({ 18097 }, [](SpellInfo* spellInfo)
|
||||
{
|
||||
spellInfo->DurationEntry = sSpellDurationStore.LookupEntry(21); // -1
|
||||
});
|
||||
|
||||
for (uint32 i = 0; i < GetSpellInfoStoreSize(); ++i)
|
||||
{
|
||||
SpellInfo* spellInfo = mSpellInfoMap[i];
|
||||
|
||||
@ -411,6 +411,7 @@ enum WorldIntConfigs
|
||||
CONFIG_GUILD_BANK_TAB_COST_3,
|
||||
CONFIG_GUILD_BANK_TAB_COST_4,
|
||||
CONFIG_GUILD_BANK_TAB_COST_5,
|
||||
CONFIG_GUILD_MEMBER_LIMIT,
|
||||
CONFIG_GM_LEVEL_CHANNEL_MODERATION,
|
||||
CONFIG_TOGGLE_XP_COST,
|
||||
CONFIG_NPC_EVADE_IF_NOT_REACHABLE,
|
||||
|
||||
@ -844,6 +844,8 @@ void World::LoadConfigSettings(bool reload)
|
||||
_int_configs[CONFIG_GUILD_BANK_TAB_COST_4] = sConfigMgr->GetOption<int32>("Guild.BankTabCost4", 25000000);
|
||||
_int_configs[CONFIG_GUILD_BANK_TAB_COST_5] = sConfigMgr->GetOption<int32>("Guild.BankTabCost5", 50000000);
|
||||
|
||||
_int_configs[CONFIG_GUILD_MEMBER_LIMIT] = sConfigMgr->GetOption<uint32>("Guild.MemberLimit", 0);
|
||||
|
||||
_bool_configs[CONFIG_DETECT_POS_COLLISION] = sConfigMgr->GetOption<bool>("DetectPosCollision", true);
|
||||
|
||||
_bool_configs[CONFIG_RESTRICTED_LFG_CHANNEL] = sConfigMgr->GetOption<bool>("Channel.RestrictedLfg", true);
|
||||
@ -1402,6 +1404,12 @@ void World::SetInitialWorldSettings()
|
||||
LOG_INFO("server.loading", "Loading SpellInfo Custom Attributes...");
|
||||
sSpellMgr->LoadSpellInfoCustomAttributes();
|
||||
|
||||
LOG_INFO("server.loading", "Loading Player Totem models...");
|
||||
sObjectMgr->LoadPlayerTotemModels();
|
||||
|
||||
LOG_INFO("server.loading", "Loading Player Shapeshift models...");
|
||||
sObjectMgr->LoadPlayerShapeshiftModels();
|
||||
|
||||
LOG_INFO("server.loading", "Loading GameObject Models...");
|
||||
LoadGameObjectModelList(_dataPath);
|
||||
|
||||
|
||||
@ -15,13 +15,6 @@
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* ScriptData
|
||||
Name: account_commandscript
|
||||
%Complete: 100
|
||||
Comment: All account related commands
|
||||
Category: commandscripts
|
||||
EndScriptData */
|
||||
|
||||
#include "AES.h"
|
||||
#include "AccountMgr.h"
|
||||
#include "Base32.h"
|
||||
|
||||
@ -15,13 +15,6 @@
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* ScriptData
|
||||
Name: achievement_commandscript
|
||||
%Complete: 100
|
||||
Comment: All achievement related commands
|
||||
Category: commandscripts
|
||||
EndScriptData */
|
||||
|
||||
#include "Chat.h"
|
||||
#include "CommandScript.h"
|
||||
#include "Player.h"
|
||||
|
||||
@ -15,13 +15,6 @@
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* ScriptData
|
||||
Name: arena_commandscript
|
||||
%Complete: 100
|
||||
Comment: All arena team related commands
|
||||
Category: commandscripts
|
||||
EndScriptData */
|
||||
|
||||
#include "ArenaTeamMgr.h"
|
||||
#include "ArenaSeasonMgr.h"
|
||||
#include "ArenaTeamFilter.h"
|
||||
|
||||
@ -15,13 +15,6 @@
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* ScriptData
|
||||
Name: ban_commandscript
|
||||
%Complete: 100
|
||||
Comment: All ban related commands
|
||||
Category: commandscripts
|
||||
EndScriptData */
|
||||
|
||||
#include "AccountMgr.h"
|
||||
#include "BanMgr.h"
|
||||
#include "CharacterCache.h"
|
||||
|
||||
@ -15,13 +15,6 @@
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* ScriptData
|
||||
Name: bf_commandscript
|
||||
%Complete: 100
|
||||
Comment: All bf related commands
|
||||
Category: commandscripts
|
||||
EndScriptData */
|
||||
|
||||
#include "BattlefieldMgr.h"
|
||||
#include "Chat.h"
|
||||
#include "CommandScript.h"
|
||||
|
||||
@ -15,13 +15,6 @@
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* ScriptData
|
||||
Name: cast_commandscript
|
||||
%Complete: 100
|
||||
Comment: All cast related commands
|
||||
Category: commandscripts
|
||||
EndScriptData */
|
||||
|
||||
#include "Chat.h"
|
||||
#include "CommandScript.h"
|
||||
#include "Creature.h"
|
||||
|
||||
@ -15,13 +15,6 @@
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* ScriptData
|
||||
Name: character_commandscript
|
||||
%Complete: 100
|
||||
Comment: All character related commands
|
||||
Category: commandscripts
|
||||
EndScriptData */
|
||||
|
||||
#include "AccountMgr.h"
|
||||
#include "AchievementMgr.h"
|
||||
#include "Chat.h"
|
||||
|
||||
@ -15,13 +15,6 @@
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* ScriptData
|
||||
Name: debug_commandscript
|
||||
%Complete: 100
|
||||
Comment: All debug related commands
|
||||
Category: commandscripts
|
||||
EndScriptData */
|
||||
|
||||
#include "Bag.h"
|
||||
#include "BattlegroundMgr.h"
|
||||
#include "CellImpl.h"
|
||||
@ -105,7 +98,8 @@ public:
|
||||
{ "unitstate", HandleDebugUnitStateCommand, SEC_ADMINISTRATOR, Console::No },
|
||||
{ "objectcount", HandleDebugObjectCountCommand, SEC_ADMINISTRATOR, Console::Yes},
|
||||
{ "dummy", HandleDebugDummyCommand, SEC_ADMINISTRATOR, Console::No },
|
||||
{ "mapdata", HandleDebugMapDataCommand, SEC_ADMINISTRATOR, Console::No }
|
||||
{ "mapdata", HandleDebugMapDataCommand, SEC_ADMINISTRATOR, Console::No },
|
||||
{ "boundary", HandleDebugBoundaryCommand, SEC_ADMINISTRATOR, Console::No }
|
||||
};
|
||||
static ChatCommandTable commandTable =
|
||||
{
|
||||
@ -1388,6 +1382,27 @@ public:
|
||||
handler->PSendSysMessage("Created Cells In Map: {} / {}", map->GetCreatedCellsInMapCount(), TOTAL_NUMBER_OF_CELLS_PER_MAP * TOTAL_NUMBER_OF_CELLS_PER_MAP);
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool HandleDebugBoundaryCommand(ChatHandler* handler, Optional<uint32> durationArg, Optional<EXACT_SEQUENCE("fill")> fill, Optional<EXACT_SEQUENCE("z")> checkZ)
|
||||
{
|
||||
Player* player = handler->GetPlayer();
|
||||
if (!player)
|
||||
return false;
|
||||
|
||||
Creature* target = handler->getSelectedCreature();
|
||||
if (!target || !target->IsAIEnabled)
|
||||
return false;
|
||||
|
||||
uint32 duration = durationArg.value_or(5 * IN_MILLISECONDS);
|
||||
if (duration > 180 * IN_MILLISECONDS) // arbitrary upper limit
|
||||
duration = 180 * IN_MILLISECONDS;
|
||||
|
||||
int32 errMsg = target->AI()->VisualizeBoundary(duration, player, fill.has_value(), checkZ.has_value());
|
||||
if (errMsg > 0)
|
||||
handler->PSendSysMessage(errMsg);
|
||||
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_debug_commandscript()
|
||||
|
||||
@ -15,13 +15,6 @@
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* ScriptData
|
||||
Name: disable_commandscript
|
||||
%Complete: 100
|
||||
Comment: All disable related commands
|
||||
Category: commandscripts
|
||||
EndScriptData */
|
||||
|
||||
#include "Chat.h"
|
||||
#include "CommandScript.h"
|
||||
#include "DisableMgr.h"
|
||||
|
||||
@ -15,13 +15,6 @@
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* ScriptData
|
||||
Name: event_commandscript
|
||||
%Complete: 100
|
||||
Comment: All event related commands
|
||||
Category: commandscripts
|
||||
EndScriptData */
|
||||
|
||||
#include "Chat.h"
|
||||
#include "CommandScript.h"
|
||||
#include "GameEventMgr.h"
|
||||
|
||||
@ -15,13 +15,6 @@
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* ScriptData
|
||||
Name: gm_commandscript
|
||||
%Complete: 100
|
||||
Comment: All gm related commands
|
||||
Category: commandscripts
|
||||
EndScriptData */
|
||||
|
||||
#include "AccountMgr.h"
|
||||
#include "Chat.h"
|
||||
#include "CommandScript.h"
|
||||
|
||||
@ -15,13 +15,6 @@
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* ScriptData
|
||||
Name: go_commandscript
|
||||
%Complete: 100
|
||||
Comment: All go related commands
|
||||
Category: commandscripts
|
||||
EndScriptData */
|
||||
|
||||
#include "Chat.h"
|
||||
#include "CommandScript.h"
|
||||
#include "GameGraveyard.h"
|
||||
|
||||
@ -36,6 +36,7 @@ public:
|
||||
{ "join", HandleGroupJoinCommand, SEC_GAMEMASTER, Console::No },
|
||||
{ "remove", HandleGroupRemoveCommand, SEC_GAMEMASTER, Console::No },
|
||||
{ "disband", HandleGroupDisbandCommand, SEC_GAMEMASTER, Console::No },
|
||||
{ "revive", HandleGroupReviveCommand, SEC_GAMEMASTER, Console::No },
|
||||
{ "leader", HandleGroupLeaderCommand, SEC_GAMEMASTER, Console::No }
|
||||
};
|
||||
|
||||
@ -257,6 +258,39 @@ public:
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool HandleGroupReviveCommand(ChatHandler* handler, Optional<PlayerIdentifier> target)
|
||||
{
|
||||
if (!target)
|
||||
target = PlayerIdentifier::FromTargetOrSelf(handler);
|
||||
|
||||
if (!target)
|
||||
return false;
|
||||
|
||||
Player* targetPlayer = target->GetConnectedPlayer();
|
||||
Group* group = targetPlayer->GetGroup();
|
||||
std::string nameLink = handler->playerLink(target->GetName());
|
||||
|
||||
if (!group)
|
||||
{
|
||||
handler->SendErrorMessage(LANG_NOT_IN_GROUP, nameLink);
|
||||
return false;
|
||||
}
|
||||
|
||||
for (GroupReference* it = group->GetFirstMember(); it != nullptr; it = it->next())
|
||||
{
|
||||
Player* target = it->GetSource();
|
||||
if (target)
|
||||
{
|
||||
target->RemoveAurasDueToSpell(27827); // Spirit of Redemption
|
||||
target->ResurrectPlayer(!AccountMgr::IsPlayerAccount(target->GetSession()->GetSecurity()) ? 1.0f : 0.5f);
|
||||
target->SpawnCorpseBones();
|
||||
target->SaveToDB(false, false);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_group_commandscript()
|
||||
|
||||
@ -15,13 +15,6 @@
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* ScriptData
|
||||
Name: guild_commandscript
|
||||
%Complete: 100
|
||||
Comment: All guild related commands
|
||||
Category: commandscripts
|
||||
EndScriptData */
|
||||
|
||||
#include "Chat.h"
|
||||
#include "CommandScript.h"
|
||||
#include "Guild.h"
|
||||
|
||||
@ -15,13 +15,6 @@
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* ScriptData
|
||||
Name: honor_commandscript
|
||||
%Complete: 100
|
||||
Comment: All honor related commands
|
||||
Category: commandscripts
|
||||
EndScriptData */
|
||||
|
||||
#include "Chat.h"
|
||||
#include "CommandScript.h"
|
||||
#include "Language.h"
|
||||
|
||||
@ -15,13 +15,6 @@
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* ScriptData
|
||||
Name: instance_commandscript
|
||||
%Complete: 100
|
||||
Comment: All instance related commands
|
||||
Category: commandscripts
|
||||
EndScriptData */
|
||||
|
||||
#include "Chat.h"
|
||||
#include "CommandScript.h"
|
||||
#include "GameTime.h"
|
||||
|
||||
@ -15,13 +15,6 @@
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* ScriptData
|
||||
Name: item_commandscript
|
||||
%Complete: 0
|
||||
Comment: All item related commands
|
||||
Category: commandscripts
|
||||
EndScriptData */
|
||||
|
||||
#include "Chat.h"
|
||||
#include "CommandScript.h"
|
||||
#include "DBCStores.h"
|
||||
|
||||
@ -15,13 +15,6 @@
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* ScriptData
|
||||
Name: learn_commandscript
|
||||
%Complete: 100
|
||||
Comment: All learn related commands
|
||||
Category: commandscripts
|
||||
EndScriptData */
|
||||
|
||||
#include "CommandScript.h"
|
||||
#include "Language.h"
|
||||
#include "ObjectMgr.h"
|
||||
|
||||
@ -15,13 +15,6 @@
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* ScriptData
|
||||
Name: list_commandscript
|
||||
%Complete: 100
|
||||
Comment: All list related commands
|
||||
Category: commandscripts
|
||||
EndScriptData */
|
||||
|
||||
#include "Chat.h"
|
||||
#include "CommandScript.h"
|
||||
#include "Creature.h"
|
||||
|
||||
@ -15,13 +15,6 @@
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* ScriptData
|
||||
Name: lookup_commandscript
|
||||
%Complete: 100
|
||||
Comment: All lookup related commands
|
||||
Category: commandscripts
|
||||
EndScriptData */
|
||||
|
||||
#include "CharacterCache.h"
|
||||
#include "Chat.h"
|
||||
#include "CommandScript.h"
|
||||
|
||||
@ -15,13 +15,6 @@
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* ScriptData
|
||||
Name: message_commandscript
|
||||
%Complete: 100
|
||||
Comment: All message related commands
|
||||
Category: commandscripts
|
||||
EndScriptData */
|
||||
|
||||
#include "Channel.h"
|
||||
#include "Chat.h"
|
||||
#include "CommandScript.h"
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user