mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-02-04 03:23:48 +00:00
Merge branch 'master' into Playerbot
This commit is contained in:
19
AUTHORS
19
AUTHORS
@@ -34,3 +34,22 @@ The third-party libraries have their own way of addressing authorship, and the a
|
|||||||
a third-party library reflects who did the importing instead of who wrote the code within the commit.
|
a third-party library reflects who did the importing instead of who wrote the code within the commit.
|
||||||
|
|
||||||
The Authors of third-party libraries are not explicitly mentioned, and usually is possible to obtain from the files belonging to the third-party libraries.
|
The Authors of third-party libraries are not explicitly mentioned, and usually is possible to obtain from the files belonging to the third-party libraries.
|
||||||
|
|
||||||
|
## Cross-project collaboration
|
||||||
|
|
||||||
|
At AzerothCore, we actively promote collaboration with other MaNGOS-based open-source projects that are actively maintained. This also includes cherry-picking commits from relevant projects such as:
|
||||||
|
|
||||||
|
* TrinityCore: https://github.com/trinitycore
|
||||||
|
* CMaNGOS: https://github.com/cmangos/
|
||||||
|
* vMaNGOS: https://github.com/vmangos
|
||||||
|
* and others
|
||||||
|
|
||||||
|
It is strictly required for any contributor importing code to credit the original author by:
|
||||||
|
- linking the original PR (or commit)
|
||||||
|
- adding a [Co-authored-by](https://docs.github.com/en/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors) line in the PR description
|
||||||
|
|
||||||
|
This will automatically include the original author in our list of [Contributors](https://github.com/azerothcore/azerothcore-wotlk/graphs/contributors).
|
||||||
|
|
||||||
|
If you notice a violation of the above, please report it to the Staff immediately.
|
||||||
|
|
||||||
|
We encourage other projects to adopt similar practices to promote healthy cross-project collaboration and proper attribution.
|
||||||
|
|||||||
3
data/sql/updates/db_world/2025_05_18_00.sql
Normal file
3
data/sql/updates/db_world/2025_05_18_00.sql
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
-- DB update 2025_05_15_00 -> 2025_05_18_00
|
||||||
|
-- Sets the SAI Link to 0 from 1 for Ziggurat Defender (has only 1 cast, nothing to link to)
|
||||||
|
UPDATE `smart_scripts` SET `link` = 0 WHERE (`source_type` = 0 AND `entryorguid` = 26202 AND `id` = 0);
|
||||||
17
data/sql/updates/db_world/2025_05_19_00.sql
Normal file
17
data/sql/updates/db_world/2025_05_19_00.sql
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
-- DB update 2025_05_18_00 -> 2025_05_19_00
|
||||||
|
-- Deletes `Dalaran Wizard's Robe` (5110) from References: `World Drop - White World Drop - NPC Levels` 14-15 (1011415), 15-15 (1011515), 15-16 (1011516), 16-16 (1011616)
|
||||||
|
DELETE FROM `reference_loot_template` WHERE `Item` = 5110;
|
||||||
|
|
||||||
|
DELETE FROM `creature_loot_template` WHERE `Item` = 5110;
|
||||||
|
INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES
|
||||||
|
(1867, 5110, 0, 3, 0, 1, 0, 1, 1, 'Dalaran Apprentice - Dalaran Wizard\'s Robe'),
|
||||||
|
(1888, 5110, 0, 4, 0, 1, 0, 1, 1, 'Dalaran Watcher - Dalaran Wizard\'s Robe'),
|
||||||
|
(1889, 5110, 0, 4, 0, 1, 0, 1, 1, 'Dalaran Wizard - Dalaran Wizard\'s Robe'),
|
||||||
|
(1912, 5110, 0, 3, 0, 1, 0, 1, 1, 'Dalaran Protector - Dalaran Wizard\'s Robe'),
|
||||||
|
(1913, 5110, 0, 4, 0, 1, 0, 1, 1, 'Dalaran Warder - Dalaran Wizard\'s Robe'),
|
||||||
|
(1914, 5110, 0, 3, 0, 1, 0, 1, 1, 'Dalaran Mage - Dalaran Wizard\'s Robe'),
|
||||||
|
(1915, 5110, 0, 4, 0, 1, 0, 1, 1, 'Dalaran Conjuror - Dalaran Wizard\'s Robe'),
|
||||||
|
(1920, 5110, 0, 1.6, 0, 1, 0, 1, 1, 'Dalaran Spellscribe - Dalaran Wizard\'s Robe'),
|
||||||
|
(2120, 5110, 0, 1.8, 0, 1, 0, 1, 1, 'Archmage Ataeric - Dalaran Wizard\'s Robe'),
|
||||||
|
(3577, 5110, 0, 4, 0, 1, 0, 1, 1, 'Dalaran Brewmaster - Dalaran Wizard\'s Robe'),
|
||||||
|
(3578, 5110, 0, 3, 0, 1, 0, 1, 1, 'Dalaran Miner - Dalaran Wizard\'s Robe');
|
||||||
2
data/sql/updates/db_world/2025_05_20_00.sql
Normal file
2
data/sql/updates/db_world/2025_05_20_00.sql
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
-- DB update 2025_05_19_00 -> 2025_05_20_00
|
||||||
|
UPDATE `creature_loot_template` SET `Chance` = 6 WHERE `Item` = 34334 AND `Entry` = 25315;
|
||||||
4
data/sql/updates/db_world/2025_05_21_00.sql
Normal file
4
data/sql/updates/db_world/2025_05_21_00.sql
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
-- DB update 2025_05_20_00 -> 2025_05_21_00
|
||||||
|
--
|
||||||
|
DELETE FROM `spell_custom_attr` WHERE `spell_id`=45770;
|
||||||
|
INSERT INTO `spell_custom_attr` (`spell_id`, `attributes`) VALUES (45770, 4194304);
|
||||||
2
data/sql/updates/db_world/2025_05_21_01.sql
Normal file
2
data/sql/updates/db_world/2025_05_21_01.sql
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
-- DB update 2025_05_21_00 -> 2025_05_21_01
|
||||||
|
UPDATE `smart_scripts` SET `action_param1` = 9053 WHERE `source_type` = 0 AND `entryorguid` IN (21382, 21637) AND `id` IN (1, 2) AND `action_type` = 11;
|
||||||
51
data/sql/updates/db_world/2025_05_22_00.sql
Normal file
51
data/sql/updates/db_world/2025_05_22_00.sql
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
-- DB update 2025_05_21_01 -> 2025_05_22_00
|
||||||
|
|
||||||
|
-- Set Attack Delay on spawn and update comments.
|
||||||
|
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, 1000, 5000, 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, 1000, 5000, 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, 3000, 10000, 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, 0, 0, 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, 0, 0, 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, 0, 0, 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, 1000, 3000, 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, 1000, 4000, 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, 1000, 5000, 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, 1000, 5000, 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, 1000, 2000, 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, 1000, 1500, 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, 4000, 5000, 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, 1000, 2000, 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)');
|
||||||
@@ -7136,37 +7136,26 @@ void Player::ApplyItemEquipSpell(Item* item, bool apply, bool form_change)
|
|||||||
if (!proto)
|
if (!proto)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
for (uint8 i = 0; i < MAX_ITEM_PROTO_SPELLS; ++i)
|
for (auto const& spellData : proto->Spells)
|
||||||
{
|
{
|
||||||
_Spell const& spellData = proto->Spells[i];
|
// no spell
|
||||||
|
|
||||||
// no spell
|
|
||||||
if (!spellData.SpellId)
|
if (!spellData.SpellId)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// Spells that should stay on the caster after removing the item.
|
|
||||||
constexpr std::array<int32, 2> spellExceptions =
|
|
||||||
{
|
|
||||||
11826, //Electromagnetic Gigaflux Reactivator
|
|
||||||
17490 //Book of the Dead - Summon Skeleton
|
|
||||||
};
|
|
||||||
const auto found = std::find(std::begin(spellExceptions), std::end(spellExceptions), spellData.SpellId);
|
|
||||||
|
|
||||||
// wrong triggering type
|
// wrong triggering type
|
||||||
if (apply)
|
if (apply)
|
||||||
{
|
{
|
||||||
|
// Only apply "On Equip" spells
|
||||||
if (spellData.SpellTrigger != ITEM_SPELLTRIGGER_ON_EQUIP)
|
if (spellData.SpellTrigger != ITEM_SPELLTRIGGER_ON_EQUIP)
|
||||||
{
|
|
||||||
continue;
|
continue;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// If the spell is an exception do not remove it.
|
// Do not remove "Use" spells in these special cases:
|
||||||
if (found != std::end(spellExceptions))
|
// 1. During form changes (e.g., druid shapeshifting)
|
||||||
{
|
// 2. When the spell comes from an item with negative charges, which means its effect should persist after the item is consumed or removed.
|
||||||
|
if (spellData.SpellTrigger == ITEM_SPELLTRIGGER_ON_USE && (form_change || spellData.SpellCharges < 0))
|
||||||
continue;
|
continue;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// check if it is valid spell
|
// check if it is valid spell
|
||||||
@@ -7215,18 +7204,6 @@ void Player::ApplyEquipSpell(SpellInfo const* spellInfo, Item* item, bool apply,
|
|||||||
RemoveAurasDueToItemSpell(spellInfo->Id, item->GetGUID()); // un-apply all spells, not only at-equipped
|
RemoveAurasDueToItemSpell(spellInfo->Id, item->GetGUID()); // un-apply all spells, not only at-equipped
|
||||||
else
|
else
|
||||||
RemoveAurasDueToSpell(spellInfo->Id); // un-apply spell (item set case)
|
RemoveAurasDueToSpell(spellInfo->Id); // un-apply spell (item set case)
|
||||||
|
|
||||||
// Xinef: Remove Proc Spells and Summons
|
|
||||||
for (uint8 i = EFFECT_0; i < MAX_SPELL_EFFECTS; ++i)
|
|
||||||
{
|
|
||||||
// Xinef: Remove procs
|
|
||||||
if (spellInfo->Effects[i].TriggerSpell)
|
|
||||||
RemoveAurasDueToSpell(spellInfo->Effects[i].TriggerSpell);
|
|
||||||
|
|
||||||
// Xinef: remove minions summoned by item
|
|
||||||
if (spellInfo->Effects[i].Effect == SPELL_EFFECT_SUMMON)
|
|
||||||
RemoveAllMinionsByEntry(spellInfo->Effects[i].MiscValue);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4897,8 +4897,10 @@ void SpellMgr::LoadSpellInfoCorrections()
|
|||||||
spellInfo->Effects[EFFECT_0].RadiusEntry = sSpellRadiusStore.LookupEntry(EFFECT_RADIUS_70_YARDS);
|
spellInfo->Effects[EFFECT_0].RadiusEntry = sSpellRadiusStore.LookupEntry(EFFECT_RADIUS_70_YARDS);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Encapsulate
|
ApplySpellFix({
|
||||||
ApplySpellFix({ 45662 }, [](SpellInfo* spellInfo)
|
45662, // Encapsulate
|
||||||
|
45642 // Fire Bloom
|
||||||
|
}, [](SpellInfo* spellInfo)
|
||||||
{
|
{
|
||||||
spellInfo->AttributesEx7 |= SPELL_ATTR7_TREAT_AS_NPC_AOE;
|
spellInfo->AttributesEx7 |= SPELL_ATTR7_TREAT_AS_NPC_AOE;
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -141,6 +141,7 @@ struct npc_kiljaeden_controller : public NullCreatureAI
|
|||||||
|
|
||||||
void Reset() override
|
void Reset() override
|
||||||
{
|
{
|
||||||
|
scheduler.CancelAll();
|
||||||
instance->SetBossState(DATA_KILJAEDEN, NOT_STARTED);
|
instance->SetBossState(DATA_KILJAEDEN, NOT_STARTED);
|
||||||
summons.DespawnAll();
|
summons.DespawnAll();
|
||||||
ResetOrbs();
|
ResetOrbs();
|
||||||
|
|||||||
@@ -122,9 +122,9 @@ public:
|
|||||||
if (Player* player = ObjectAccessor::GetPlayer(*me, PlayerGUID))
|
if (Player* player = ObjectAccessor::GetPlayer(*me, PlayerGUID))
|
||||||
{
|
{
|
||||||
if (GetClosestCreatureWithEntry(me, NPC_SOUTH_GATE, 200.0f))
|
if (GetClosestCreatureWithEntry(me, NPC_SOUTH_GATE, 200.0f))
|
||||||
player->KilledMonsterCredit(NPC_SOUTH_GATE_CREDIT);
|
player->RewardPlayerAndGroupAtEvent(NPC_SOUTH_GATE_CREDIT, player);
|
||||||
else if (GetClosestCreatureWithEntry(me, NPC_NORTH_GATE, 200.0f))
|
else if (GetClosestCreatureWithEntry(me, NPC_NORTH_GATE, 200.0f))
|
||||||
player->KilledMonsterCredit(NPC_NORTH_GATE_CREDIT);
|
player->RewardPlayerAndGroupAtEvent(NPC_NORTH_GATE_CREDIT, player);
|
||||||
// complete quest part
|
// complete quest part
|
||||||
if (Creature* bunny = GetClosestCreatureWithEntry(me, NPC_EXPLOSION_BUNNY, 200.0f))
|
if (Creature* bunny = GetClosestCreatureWithEntry(me, NPC_EXPLOSION_BUNNY, 200.0f))
|
||||||
bunny->CastSpell(nullptr, SPELL_EXPLOSION, TRIGGERED_NONE);
|
bunny->CastSpell(nullptr, SPELL_EXPLOSION, TRIGGERED_NONE);
|
||||||
|
|||||||
Reference in New Issue
Block a user