diff options
-rw-r--r-- | sql/updates/world/master/2023_04_16_00_world.sql | 216 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_azerite.cpp | 364 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_item.cpp | 93 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_script_loader.cpp | 2 |
4 files changed, 655 insertions, 20 deletions
diff --git a/sql/updates/world/master/2023_04_16_00_world.sql b/sql/updates/world/master/2023_04_16_00_world.sql new file mode 100644 index 00000000000..83d6abb7dca --- /dev/null +++ b/sql/updates/world/master/2023_04_16_00_world.sql @@ -0,0 +1,216 @@ +DELETE FROM `spell_proc` WHERE `SpellId` IN (251777,251813,251825,251854,251878,253026,253285,253287,253305,253323,255148,255150,255151,255800,258880,258881,258885,258896,258907,258933,258942,258946,258954,258969,258972,258976,258981,258984,258989,258993, +259003,259004,259005,259006,259007,259008,259009,262111,262226,262304,262507,265000,265003,265025,265027,265034,265036,265057,265066,265071,265072,265073,265078,265079,265082,265083,265090,265094,265162,265167,265170,265174,265176,265230,265233,265234, +265236,265238,265240,265255,265266,265270,265274,265276,265278,265282,265285,265310,265317,265327,265331,265353,265408,265413,265414,265416,265419,265421,268035,268175,268399,268401,268441,268503,268506,268507,268508,268512,268516,268517,268531,268533, +268535,268546,268557,268566,268603,268605,268608,268610,268617,268620,268621,268624,268771,268855,268888,268900,268906,268912,269718,269884,269886,269888,269891,270658,270671,270673,270675,271072,271102,271104,271547,271818,272258,272275,272276,272837, +272933,272936,272956,272969,272980,273005,273153,273298,273292,273332,273449,273454,273463,273799,273825,273835,273858,273975,273987,273991,274155,274376,274597,274835,275514,275864,276076,276214,276266,276840,277182,277958,277966,278053,278138,278142, +278224,278248,278251,278287,278356,278382,278519,278573,278603,278815,278840,278859,278951,278991,279006,279193); +INSERT INTO `spell_proc` (`SpellId`,`SchoolMask`,`SpellFamilyName`,`SpellFamilyMask0`,`SpellFamilyMask1`,`SpellFamilyMask2`,`SpellFamilyMask3`,`ProcFlags`,`ProcFlags2`,`SpellTypeMask`,`SpellPhaseMask`,`HitMask`,`AttributesMask`,`DisableEffectsMask`,`ProcsPerMinute`,`Chance`,`Cooldown`,`Charges`) VALUES +(251777,0x00,8,0x10010000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x402,0x0,0x0,0,0,0,0), -- Item - Rogue T21 Assassination 4P Bonus +(251813,0x00,7,0x00000000,0x00000000,0x00040000,0x00000000,0x0,0x0,0x2,0x2,0x403,0x0,0x0,0,0,0,0), -- Item - Druid T21 Restoration 2P Bonus +(251825,0x00,53,0x00000000,0x00000000,0x00000000,0x00004000,0x0,0x0,0x2,0x2,0x403,0x0,0x0,0,0,0,0), -- Item - Monk T21 Mistweaver 2P Bonus +(251854,0x00,5,0x00000000,0x00002000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Item - Warlock T21 Destruction 2P Bonus +(251878,0x00,4,0x00000000,0x40000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Item - Warrior T21 Arms 2P Bonus +(253026,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x4,0x2,0x1000,0x0,0x0,0,0,0,0), -- Impending Inevitability +(253285,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x2,0x2,0x403,0x0,0x0,0,0,0,0), -- Highfather's Timekeeping +(253287,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x3,0x0,0x0,0,0,0,0), -- Highfather's Timekeeping +(253305,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Flames of F'harg +(253323,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Shadow Strike +(255148,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x2,0x2,0x403,0x0,0x0,0,0,0,0), -- Coastal Surge +(255150,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Torrent of Elements +(255151,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Gale-Force Striking +(255800,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x2,0x2,0x403,0x0,0x0,0,0,0,0), -- Wounded +(258880,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- The Chief's Enforcer +(258881,0x00,107,0x00001000,0x00000040,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Trail of Ruin +(258885,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Gahz'rilla's Fang +(258896,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Bite of Serra'kis +(258907,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Jang'thraze +(258933,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Sul'thraze +(258942,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- The Hand of Antu'sul +(258946,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Ripsaw +(258954,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Darkwater Talwar +(258969,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Glutton's Cleaver +(258972,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Stinging Viper +(258976,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Diabolic Skiver +(258981,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Bloodcursed Felblade +(258984,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Razor Gauntlets +(258989,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Gatorbite Axe +(258993,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x2,0x2,0x403,0x0,0x0,0,0,0,0), -- Fist of Stone +(259003,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Claw of Celebras +(259004,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Princess Theradras' Scepter +(259005,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Blade of Eternal Darkness +(259006,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Venomstrike +(259007,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Coldrage Dagger +(259008,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Satyr's Lash +(259009,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Strike of the Hydra +(262111,0x00,4,0x02C00000,0x40004000,0x00000000,0x00000800,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Mastery: Deep Wounds +(262226,0x00,4,0x00000000,0x00004004,0x00000000,0x00000800,0x0,0x0,0x1,0x2,0x402,0x0,0x0,0,0,0,0), -- Unbridled Wrath +(262304,0x00,4,0x02400000,0x00004000,0x00000000,0x00100000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Deep Wounds +(262507,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Crystalline Shockwave +(265000,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Fiery War Axe +(265003,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Duskwood Staff +(265025,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Archeus +(265027,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Phytoblade +(265034,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Runic Darkblade +(265036,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Claw of the Shadowmancer +(265057,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Bleeding Crescent +(265066,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Grimclaw +(265071,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Black Menace +(265072,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- The Ziggler +(265073,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Silithid Ripper +(265078,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Shoni's Disarming Tool +(265079,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Gryphon Rider's Stormhammer +(265082,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Linken's Sword of Mastery +(265083,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Felstriker +(265090,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Incendiary Ammunition (DND) +(265094,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Frost-Laced Ammunition (DND) +(265162,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Doombringer +(265167,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Argent Avenger +(265170,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Ashbringer +(265174,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Darrowspike +(265176,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Bonechill Hammer +(265230,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Shimmering Platinum Warhammer +(265233,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Gutwrencher +(265234,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Hameya's Slayer +(265236,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Windreaper +(265238,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Ichor Spitter +(265240,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Sulfuron Hammer +(265255,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Quel'Serrar +(265266,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Sprinter's Sword +(265270,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Ebon Hand +(265274,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Drakefist Hammer +(265276,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Dragonmaw +(265278,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Deep Thunder +(265282,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Stormherald +(265285,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Infinity Blade +(265310,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Singed Vis'kag the Bloodletter +(265317,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Gleaming Quel'Serrar +(265327,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Burnished Quel'Serrar +(265331,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Tempered Vis'kag the Bloodletter +(265353,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Meteor Shard +(265408,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Seeping Willow +(265413,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Petrified Willow +(265414,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Blackhand Doomcutter +(265416,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Blackhand Doomsaw +(265419,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Bleakblade of Shahram +(265421,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Dripping Willow +(268035,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Lingering Spore Pods +(268175,0x00,107,0x80000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Void Reaver +(268399,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Template Secondary Stat Proc +(268401,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Template Primary Stat Proc +(268441,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Resonating Elemental Heart +(268503,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Elder's Stormseed +(268506,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Galewind Chimes +(268507,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Bargain For Power +(268508,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Relic of the Makers +(268512,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x3,0x2,0x403,0x0,0x0,0,0,0,0), -- Siren's Melody +(268516,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Dread Spore +(268517,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Sharpened Claws +(268531,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x3,0x2,0x403,0x0,0x0,0,0,0,0), -- Sound Barrier +(268533,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x3,0x2,0x403,0x0,0x0,0,0,0,0), -- Want For Nothing +(268535,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x3,0x2,0x403,0x0,0x0,0,0,0,0), -- Best In Show +(268546,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x3,0x2,0x403,0x0,0x0,0,0,0,0), -- Exposure +(268557,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x3,0x2,0x403,0x0,0x0,0,0,0,0), -- Luminous Honey Jar +(268566,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x3,0x2,0x403,0x0,0x0,0,0,0,0), -- Rikal's Ritual Beads +(268603,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x3,0x2,0x403,0x0,0x0,0,0,0,0), -- Master's Sight +(268605,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x3,0x2,0x403,0x0,0x0,0,0,0,0), -- Blood Crazed +(268608,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x3,0x2,0x403,0x0,0x0,0,0,0,0), -- PH Crit Buff - Nazmir +(268610,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x3,0x2,0x403,0x0,0x0,0,0,0,0), -- Potency Manipulator +(268617,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x3,0x2,0x403,0x0,0x0,0,0,0,0), -- Swell of Voodoo +(268620,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x3,0x2,0x403,0x0,0x0,0,0,0,0), -- Diemetradon Frenzy +(268621,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x3,0x2,0x403,0x0,0x0,0,0,0,0), -- PH Verse Buff - Zuldazar +(268624,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x3,0x2,0x403,0x0,0x0,0,0,0,0), -- Shark's Bite +(268771,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Dread Captain's Spyglass +(268855,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x3,0x2,0x403,0x0,0x0,0,0,0,0), -- Versatile Navigation +(268888,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x3,0x2,0x403,0x0,0x0,0,0,0,0), -- Quick Navigation +(268900,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x3,0x2,0x403,0x0,0x0,0,0,0,0), -- Masterful Navigation +(268906,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x3,0x2,0x403,0x0,0x0,0,0,0,0), -- Deadly Navigation +(268912,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x3,0x2,0x403,0x0,0x0,0,0,0,0), -- Stalwart Navigation +(269718,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x3,0x2,0x403,0x0,0x0,0,0,0,0), -- PH Crit Buff - Zuldazar 2 +(269884,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x3,0x2,0x403,0x0,0x0,0,0,0,0), -- Unbound Power of Zem'lan +(269886,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x3,0x2,0x403,0x0,0x0,0,0,0,0), -- Residual Viciousness +(269888,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x3,0x2,0x403,0x0,0x0,0,0,0,0), -- Boiling Time +(269891,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Searing Zap +(270658,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x4,0x2,0x0,0x0,0x0,0,0,0,0), -- Azerite Fortification +(270671,0x00,3,0x00200000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x4,0x0,0x0,0x0,0,0,0,0), -- Arcane Pummeling +(270673,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Azerite Veins +(270675,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Winds of War +(271072,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x3,0x2,0x403,0x0,0x0,0,0,0,0), -- Conch of Dark Whispers +(271102,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Rezan's Gleaming Eye +(271104,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Butcher's Eye +(271547,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Strength in Numbers +(271818,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x2,0x2,0x403,0x0,0x0,0,0,0,0), -- Blessed Portents +(272258,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x2,0x2,0x403,0x0,0x0,0,0,0,0), -- Concentrated Mending +(272275,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x2,0x2,0x403,0x0,0x0,0,0,0,0), -- Bracing Chill +(272276,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x2,0x2,0x403,0x0,0x0,0,0,0,0), -- Bracing Chill +(272837,0x00,4,0x00000000,0x00000000,0x00000000,0x08000000,0x0,0x0,0x4,0x2,0x0,0x0,0x0,0,0,0,0), -- Trample the Weak +(272933,0x00,3,0x00000000,0x00000008,0x00000000,0x00000000,0x0,0x0,0x4,0x2,0x0,0x0,0x0,0,0,0,0), -- Flames of Alacrity +(272936,0x00,8,0x00000000,0x00000000,0x00000000,0x00008000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Deadshot +(272956,0x00,5,0x00000000,0x00000000,0x10000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Accelerant +(272969,0x00,3,0x00000000,0x00000000,0x00000080,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Packed Ice +(272980,0x00,11,0x00000003,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Volcanic Lightning +(273005,0x00,11,0x00200000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Primal Primer +(273153,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Rezan's Fury +(273298,0x00,53,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Sunrise Technique +(273292,0x00,53,0x00000000,0x00000080,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Sunrise Technique +(273332,0x00,3,0x00000010,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Preheat +(273449,0x00,11,0x10000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Lava Shock +(273454,0x00,8,0x00800000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Storm of Steel +(273463,0x00,11,0x10000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Strength of Earth +(273799,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x3,0x2,0x403,0x0,0x0,0,0,0,0), -- Maokka's Carving +(273825,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x3,0x2,0x403,0x0,0x0,0,0,0,0), -- Wandering Soul +(273835,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Filthy Transfusion +(273858,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x3,0x2,0x403,0x0,0x0,0,0,0,0), -- Sandstorm +(273975,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x3,0x2,0x403,0x0,0x0,0,0,0,0), -- Will of the Loa +(273987,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x3,0x2,0x403,0x0,0x0,0,0,0,0), -- Primal Instinct +(273991,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x3,0x2,0x403,0x0,0x0,0,0,0,0), -- Speed of the Spirits +(274155,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x3,0x0,0x0,0,0,0,0), -- Direhorn Studded Belt +(274376,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Marie's Fresh Baked Cookies +(274597,0x00,3,0x00000010,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Blaster Master +(274835,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Sweete's Sweet Dice +(275514,0x00,3,0x00000020,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Orbital Precision +(275864,0x00,4,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x2040,0x0,0x0,0,0,0,0), -- Reinforced Plating +(276076,0x00,8,0x00000100,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x1,0x403,0x0,0x0,0,0,0,0), -- Poisoned Wire +(276214,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x3,0x0,0x0,0,0,0,0), -- Marie's Fresh Baked Cookies +(276266,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x4,0x2,0x1000,0x0,0x0,0,0,0,0), -- Spirit's Swiftness +(276840,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Silvered Weapons +(277182,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x3,0x2,0x403,0x0,0x0,0,0,0,0), -- Gladiator's Insignia +(277958,0x00,11,0x00000003,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Synapse Shock +(277966,0x00,9,0x00000000,0x00000000,0x00010000,0x00000001,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Blur of Talons +(278053,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Bloodshaping +(278138,0x00,10,0x00200000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Radiant Incandescence +(278142,0x00,10,0x00000000,0x00010000,0x00000000,0x00000000,0x0,0x0,0x2,0x2,0x403,0x0,0x0,0,0,0,0), -- Radiant Incandescence +(278224,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Coalesced Essence +(278248,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Razorleaf Tempest +(278251,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Avian Tempest +(278287,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Kraulok's Strength +(278356,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x3,0x2,0x403,0x0,0x0,0,0,0,0), -- Blood Hatred +(278382,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Seaborne Tempest +(278519,0x00,10,0x00000000,0x00020000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Divine Right +(278573,0x00,10,0x00800000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x402,0x0,0x0,0,0,0,0), -- Judicious Defense +(278603,0x00,15,0x00000000,0x00000004,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x402,0x0,0x0,0,15,0,0), -- Killer Frost +(278815,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x3,0x2,0x403,0x0,0x0,0,0,0,0), -- Lion's Grace +(278840,0x00,4,0x00000000,0x00000000,0x00000000,0x00001000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Simmering Rage +(278859,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x3,0x2,0x403,0x0,0x0,0,0,0,0), -- Chill of the Runes +(278951,0x00,10,0x00004000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Soaring Shield +(278991,0x00,4,0x00000400,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Callous Reprisal +(279006,0x00,4,0x00000080,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Deafening Crash +(279193,0x00,4,0x00000000,0x00000000,0x00000000,0x00002000,0x0,0x0,0x4,0x2,0x0,0x0,0x0,0,0,0,0); -- Bloodsport + + +DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_item_highfathers_machination','spell_item_seeping_scourgewing','spell_item_seeping_scourgewing_aoe_check','spell_item_azerite_fortification', +'spell_item_strength_in_numbers','spell_item_blessed_portents','spell_item_concentrated_mending','spell_item_bracing_chill_proc','spell_item_bracing_chill_search_jump_target','spell_item_trample_the_weak', +'spell_item_orbital_precision','spell_item_blur_of_talons','spell_item_divine_right'); +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(253287,'spell_item_highfathers_machination'), +(253323,'spell_item_seeping_scourgewing'), +(255861,'spell_item_seeping_scourgewing_aoe_check'), +(277253,'spell_item_azerite_fortification'), +(271548,'spell_item_strength_in_numbers'), +(271843,'spell_item_blessed_portents'), +(272260,'spell_item_concentrated_mending'), +(272276,'spell_item_bracing_chill_proc'), +(272436,'spell_item_bracing_chill_search_jump_target'), +(272837,'spell_item_trample_the_weak'), +(275514,'spell_item_orbital_precision'), +(277966,'spell_item_blur_of_talons'), +(278519,'spell_item_divine_right'); diff --git a/src/server/scripts/Spells/spell_azerite.cpp b/src/server/scripts/Spells/spell_azerite.cpp new file mode 100644 index 00000000000..2ae6f3494a1 --- /dev/null +++ b/src/server/scripts/Spells/spell_azerite.cpp @@ -0,0 +1,364 @@ +/* + * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "ScriptMgr.h" +#include "AzeritePackets.h" +#include "Containers.h" +#include "Player.h" +#include "Spell.h" +#include "SpellAuraEffects.h" +#include "SpellInfo.h" +#include "SpellScript.h" + +// 270658 - Azerite Fortification +class spell_item_azerite_fortification : public AuraScript +{ + PrepareAuraScript(spell_item_azerite_fortification); + + bool CheckProc(AuraEffect const* /*aurEff*/, ProcEventInfo& eventInfo) + { + Spell const* procSpell = eventInfo.GetProcSpell(); + if (!procSpell) + return false; + + return procSpell->GetSpellInfo()->HasAura(SPELL_AURA_MOD_STUN) + || procSpell->GetSpellInfo()->HasAura(SPELL_AURA_MOD_ROOT) + || procSpell->GetSpellInfo()->HasAura(SPELL_AURA_MOD_ROOT_2) + || procSpell->GetSpellInfo()->HasEffect(SPELL_EFFECT_KNOCK_BACK); + } + + void Register() override + { + DoCheckEffectProc += AuraCheckEffectProcFn(spell_item_azerite_fortification::CheckProc, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL); + } +}; + +enum StrengthInNumbers +{ + SPELL_STRENGTH_IN_NUMBERS_TRAIT = 271546, + SPELL_STRENGTH_IN_NUMBERS_BUFF = 271550 +}; + +// 271548 - Strength in Numbers +class spell_item_strength_in_numbers : public SpellScript +{ + PrepareSpellScript(spell_item_strength_in_numbers); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_STRENGTH_IN_NUMBERS_TRAIT, SPELL_STRENGTH_IN_NUMBERS_BUFF }); + } + + void TriggerHealthBuff() + { + if (AuraEffect const* trait = GetCaster()->GetAuraEffect(SPELL_STRENGTH_IN_NUMBERS_TRAIT, EFFECT_0, GetCaster()->GetGUID())) + if (int64 enemies = GetUnitTargetCountForEffect(EFFECT_0)) + GetCaster()->CastSpell(GetCaster(), SPELL_STRENGTH_IN_NUMBERS_BUFF, CastSpellExtraArgs(TRIGGERED_FULL_MASK) + .AddSpellMod(SPELLVALUE_BASE_POINT0, trait->GetAmount()) + .AddSpellMod(SPELLVALUE_AURA_STACK, enemies)); + } + + void Register() override + { + AfterHit += SpellHitFn(spell_item_strength_in_numbers::TriggerHealthBuff); + } +}; + +enum BlessedPortents +{ + SPELL_BLESSED_PORTENTS_TRAIT = 267889, + SPELL_BLESSED_PORTENTS_HEAL = 280052, +}; + +// 271843 - Blessed Portents +class spell_item_blessed_portents : public AuraScript +{ + PrepareAuraScript(spell_item_blessed_portents); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_BLESSED_PORTENTS_TRAIT, SPELL_BLESSED_PORTENTS_HEAL }); + } + + void CheckProc(AuraEffect* /*aurEff*/, DamageInfo& dmgInfo, uint32& /*absorbAmount*/) + { + if (GetTarget()->HealthBelowPctDamaged(50, dmgInfo.GetDamage())) + { + if (Unit* caster = GetCaster()) + if (AuraEffect const* trait = caster->GetAuraEffect(SPELL_BLESSED_PORTENTS_TRAIT, EFFECT_0, caster->GetGUID())) + caster->CastSpell(GetTarget(), SPELL_BLESSED_PORTENTS_HEAL, CastSpellExtraArgs(TRIGGERED_FULL_MASK) + .AddSpellMod(SPELLVALUE_BASE_POINT0, trait->GetAmount())); + } + else + PreventDefaultAction(); + } + + void Register() override + { + OnEffectAbsorb += AuraEffectAbsorbFn(spell_item_blessed_portents::CheckProc, EFFECT_0); + } +}; + +enum ConcentratedMending +{ + SPELL_CONCENTRATED_MENDING_TRAIT = 267882, +}; + +// 272260 - Concentrated Mending +class spell_item_concentrated_mending : public AuraScript +{ + PrepareAuraScript(spell_item_concentrated_mending); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_CONCENTRATED_MENDING_TRAIT }); + } + + void RecalculateHealAmount(AuraEffect* aurEff) + { + if (Unit const* caster = GetCaster()) + if (AuraEffect const* trait = caster->GetAuraEffect(SPELL_CONCENTRATED_MENDING_TRAIT, EFFECT_0, caster->GetGUID())) + aurEff->ChangeAmount(trait->GetAmount() * aurEff->GetTickNumber()); + } + + void Register() override + { + OnEffectUpdatePeriodic += AuraEffectUpdatePeriodicFn(spell_item_concentrated_mending::RecalculateHealAmount, EFFECT_0, SPELL_AURA_PERIODIC_HEAL); + } +}; + +enum BracingChill +{ + SPELL_BRACING_CHILL_TRAIT = 267884, + SPELL_BRACING_CHILL = 272276, + SPELL_BRACING_CHILL_HEAL = 272428, + SPELL_BRACING_CHILL_SEARCH_JUMP_TARGET = 272436, +}; + +// 272276 - Bracing Chill +class spell_item_bracing_chill_proc : public AuraScript +{ + PrepareAuraScript(spell_item_bracing_chill_proc); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_BRACING_CHILL_TRAIT, SPELL_BRACING_CHILL_HEAL, SPELL_BRACING_CHILL_SEARCH_JUMP_TARGET }); + } + + bool CheckHealCaster(AuraEffect const* /*aurEff*/, ProcEventInfo& eventInfo) + { + return GetCasterGUID() == eventInfo.GetActor()->GetGUID(); + } + + void HandleProc(AuraEffect* /*aurEff*/, ProcEventInfo& procInfo) + { + Unit* caster = procInfo.GetActor(); + if (!caster) + return; + + if (AuraEffect const* trait = caster->GetAuraEffect(SPELL_BRACING_CHILL_TRAIT, EFFECT_0, caster->GetGUID())) + caster->CastSpell(procInfo.GetProcTarget(), SPELL_BRACING_CHILL_HEAL, + CastSpellExtraArgs(TRIGGERED_FULL_MASK).AddSpellMod(SPELLVALUE_BASE_POINT0, trait->GetAmount())); + + if (GetStackAmount() > 1) + caster->CastSpell(nullptr, SPELL_BRACING_CHILL_SEARCH_JUMP_TARGET, + CastSpellExtraArgs(TRIGGERED_FULL_MASK).AddSpellMod(SPELLVALUE_AURA_STACK, GetStackAmount() - 1)); + + Remove(); + } + + void Register() override + { + DoCheckEffectProc += AuraCheckEffectProcFn(spell_item_bracing_chill_proc::CheckHealCaster, EFFECT_0, SPELL_AURA_DUMMY); + AfterEffectProc += AuraEffectProcFn(spell_item_bracing_chill_proc::HandleProc, EFFECT_0, SPELL_AURA_DUMMY); + } +}; + +// 272436 - Bracing Chill +class spell_item_bracing_chill_search_jump_target : public SpellScript +{ + PrepareSpellScript(spell_item_bracing_chill_search_jump_target); + + void FilterTarget(std::list<WorldObject*>& targets) + { + if (targets.empty()) + return; + + std::list<WorldObject*> copy = targets; + Trinity::Containers::RandomResize(copy, [&](WorldObject* target) + { + return target->IsUnit() && !target->ToUnit()->HasAura(SPELL_BRACING_CHILL, GetCaster()->GetGUID()); + }, 1); + + if (!copy.empty()) + { + // found a preferred target, use that + targets.swap(copy); + return; + } + + WorldObject* target = Trinity::Containers::SelectRandomContainerElement(targets); + targets.clear(); + targets.push_back(target); + } + + void MoveAura(SpellEffIndex /*effIndex*/) + { + GetCaster()->CastSpell(GetHitUnit(), SPELL_BRACING_CHILL, + CastSpellExtraArgs(TRIGGERED_FULL_MASK).AddSpellMod(SPELLVALUE_AURA_STACK, GetSpellValue()->AuraStackAmount)); + } + + void Register() override + { + OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_item_bracing_chill_search_jump_target::FilterTarget, EFFECT_0, TARGET_UNIT_DEST_AREA_ALLY); + OnEffectHitTarget += SpellEffectFn(spell_item_bracing_chill_search_jump_target::MoveAura, EFFECT_0, SPELL_EFFECT_DUMMY); + } +}; + +// 272837 - Trample the Weak +class spell_item_trample_the_weak : public AuraScript +{ + PrepareAuraScript(spell_item_trample_the_weak); + + bool CheckHealthPct(AuraEffect const* /*aurEff*/, ProcEventInfo& eventInfo) + { + return eventInfo.GetActor()->GetHealthPct() > eventInfo.GetActionTarget()->GetHealthPct(); + } + + void Register() override + { + DoCheckEffectProc += AuraCheckEffectProcFn(spell_item_trample_the_weak::CheckHealthPct, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL); + } +}; + +enum OrbitalPrecision +{ + SPELL_MAGE_FROZEN_ORB = 84714 +}; + +// 275514 - Orbital Precision +class spell_item_orbital_precision : public AuraScript +{ + PrepareAuraScript(spell_item_orbital_precision); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_MAGE_FROZEN_ORB }); + } + + bool CheckFrozenOrbActive(AuraEffect const* /*aurEff*/, ProcEventInfo& eventInfo) + { + return eventInfo.GetActor()->GetAreaTrigger(SPELL_MAGE_FROZEN_ORB) != nullptr; + } + + void Register() override + { + DoCheckEffectProc += AuraCheckEffectProcFn(spell_item_orbital_precision::CheckFrozenOrbActive, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL); + } +}; + +enum BlurOfTalons +{ + SPELL_HUNTER_COORDINATED_ASSAULT = 266779 +}; + +// 277966 - Blur of Talons +class spell_item_blur_of_talons : public AuraScript +{ + PrepareAuraScript(spell_item_blur_of_talons); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_HUNTER_COORDINATED_ASSAULT }); + } + + bool CheckCoordinatedAssaultActive(AuraEffect const* /*aurEff*/, ProcEventInfo& eventInfo) + { + return eventInfo.GetActor()->HasAura(SPELL_HUNTER_COORDINATED_ASSAULT, eventInfo.GetActor()->GetGUID()); + } + + void Register() override + { + DoCheckEffectProc += AuraCheckEffectProcFn(spell_item_blur_of_talons::CheckCoordinatedAssaultActive, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL); + } +}; + +// 278519 - Divine Right +class spell_item_divine_right : public AuraScript +{ + PrepareAuraScript(spell_item_divine_right); + + bool CheckHealthPct(AuraEffect const* /*aurEff*/, ProcEventInfo& eventInfo) + { + return eventInfo.GetProcTarget()->HasAuraState(AURA_STATE_WOUNDED_20_PERCENT, eventInfo.GetSpellInfo(), eventInfo.GetActor()); + } + + void Register() override + { + DoCheckEffectProc += AuraCheckEffectProcFn(spell_item_divine_right::CheckHealthPct, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL); + } +}; + +// 277253 - Heart of Azeroth +class spell_item_heart_of_azeroth : public AuraScript +{ + PrepareAuraScript(spell_item_heart_of_azeroth); + + void SetEquippedFlag(AuraEffect const* /*effect*/, AuraEffectHandleModes /*mode*/) + { + SetState(true); + } + + void ClearEquippedFlag(AuraEffect const* /*effect*/, AuraEffectHandleModes /*mode*/) + { + SetState(false); + } + + void SetState(bool equipped) const + { + if (Player* target = GetTarget()->ToPlayer()) + { + target->ApplyAllAzeriteEmpoweredItemMods(equipped); + + WorldPackets::Azerite::PlayerAzeriteItemEquippedStatusChanged statusChanged; + statusChanged.IsHeartEquipped = equipped; + target->SendDirectMessage(statusChanged.Write()); + } + } + + void Register() override + { + OnEffectApply += AuraEffectApplyFn(spell_item_heart_of_azeroth::SetEquippedFlag, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + OnEffectRemove += AuraEffectRemoveFn(spell_item_heart_of_azeroth::ClearEquippedFlag, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + } +}; + +void AddSC_azerite_item_spell_scripts() +{ + RegisterSpellScript(spell_item_azerite_fortification); + RegisterSpellScript(spell_item_strength_in_numbers); + RegisterSpellScript(spell_item_blessed_portents); + RegisterSpellScript(spell_item_concentrated_mending); + RegisterSpellScript(spell_item_bracing_chill_proc); + RegisterSpellScript(spell_item_bracing_chill_search_jump_target); + RegisterSpellScript(spell_item_trample_the_weak); + RegisterSpellScript(spell_item_orbital_precision); + RegisterSpellScript(spell_item_blur_of_talons); + RegisterSpellScript(spell_item_divine_right); + + RegisterSpellScript(spell_item_heart_of_azeroth); +} diff --git a/src/server/scripts/Spells/spell_item.cpp b/src/server/scripts/Spells/spell_item.cpp index a6a36ac6348..5c03f59f492 100644 --- a/src/server/scripts/Spells/spell_item.cpp +++ b/src/server/scripts/Spells/spell_item.cpp @@ -22,7 +22,6 @@ */ #include "ScriptMgr.h" -#include "AzeritePackets.h" #include "Battleground.h" #include "Containers.h" #include "Creature.h" @@ -4641,37 +4640,90 @@ class spell_item_lightblood_elixir : public AuraScript } }; -// 277253 - Heart of Azeroth -class spell_item_heart_of_azeroth : public AuraScript +enum HighfathersMachination { - PrepareAuraScript(spell_item_heart_of_azeroth); + SPELL_HIGHFATHERS_TIMEKEEPING_HEAL = 253288 +}; + +// 253287 - Highfather's Timekeeping +class spell_item_highfathers_machination : public AuraScript +{ + PrepareAuraScript(spell_item_highfathers_machination); - void SetEquippedFlag(AuraEffect const* /*effect*/, AuraEffectHandleModes /*mode*/) + bool Validate(SpellInfo const* /*spellInfo*/) override { - SetState(true); + return ValidateSpellInfo({ SPELL_HIGHFATHERS_TIMEKEEPING_HEAL }); } - void ClearEquippedFlag(AuraEffect const* /*effect*/, AuraEffectHandleModes /*mode*/) + bool CheckHealth(AuraEffect const* aurEff, ProcEventInfo& eventInfo) { - SetState(false); + return eventInfo.GetDamageInfo() && GetTarget()->HealthBelowPctDamaged(aurEff->GetAmount(), eventInfo.GetDamageInfo()->GetDamage()); } - void SetState(bool equipped) const + void Heal(AuraEffect* aurEff, ProcEventInfo& /*procInfo*/) { - if (Player* target = GetTarget()->ToPlayer()) - { - target->ApplyAllAzeriteEmpoweredItemMods(equipped); + PreventDefaultAction(); + if (Unit* caster = GetCaster()) + caster->CastSpell(GetTarget(), SPELL_HIGHFATHERS_TIMEKEEPING_HEAL, aurEff); + } - WorldPackets::Azerite::PlayerAzeriteItemEquippedStatusChanged statusChanged; - statusChanged.IsHeartEquipped = equipped; - target->SendDirectMessage(statusChanged.Write()); - } + void Register() override + { + DoCheckEffectProc += AuraCheckEffectProcFn(spell_item_highfathers_machination::CheckHealth, EFFECT_0, SPELL_AURA_DUMMY); + OnEffectProc += AuraEffectProcFn(spell_item_highfathers_machination::Heal, EFFECT_0, SPELL_AURA_DUMMY); + } +}; + +enum SeepingScourgewing +{ + SPELL_SHADOW_STRIKE_AOE_CHECK = 255861, + SPELL_ISOLATED_STRIKE = 255609 +}; + +// 253323 - Shadow Strike +class spell_item_seeping_scourgewing : public AuraScript +{ + PrepareAuraScript(spell_item_seeping_scourgewing); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_SHADOW_STRIKE_AOE_CHECK }); + } + + void TriggerIsolatedStrikeCheck(AuraEffect* aurEff, ProcEventInfo& eventInfo) + { + GetTarget()->CastSpell(eventInfo.GetProcTarget(), SPELL_SHADOW_STRIKE_AOE_CHECK, + CastSpellExtraArgs(aurEff).SetTriggeringSpell(eventInfo.GetProcSpell())); + } + + void Register() override + { + AfterEffectProc += AuraEffectProcFn(spell_item_seeping_scourgewing::TriggerIsolatedStrikeCheck, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL); + } +}; + +// 255861 - Shadow Strike +class spell_item_seeping_scourgewing_aoe_check : public SpellScript +{ + PrepareSpellScript(spell_item_seeping_scourgewing_aoe_check); + + void TriggerAdditionalDamage() + { + if (GetUnitTargetCountForEffect(EFFECT_0) > 1) + return; + + CastSpellExtraArgs args; + args.TriggerFlags = TRIGGERED_FULL_MASK; + args.OriginalCastId = GetSpell()->m_originalCastId; + if (GetSpell()->m_castItemLevel >= 0) + args.OriginalCastItemLevel = GetSpell()->m_castItemLevel; + + GetCaster()->CastSpell(GetHitUnit(), SPELL_ISOLATED_STRIKE, args); } void Register() override { - OnEffectApply += AuraEffectApplyFn(spell_item_heart_of_azeroth::SetEquippedFlag, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); - OnEffectRemove += AuraEffectRemoveFn(spell_item_heart_of_azeroth::ClearEquippedFlag, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + AfterHit += SpellHitFn(spell_item_seeping_scourgewing_aoe_check::TriggerAdditionalDamage); } }; @@ -4820,6 +4872,7 @@ void AddSC_item_spell_scripts() RegisterSpellScript(spell_item_set_march_of_the_legion); RegisterSpellScript(spell_item_seal_of_darkshire_nobility); RegisterSpellScript(spell_item_lightblood_elixir); - - RegisterSpellScript(spell_item_heart_of_azeroth); + RegisterSpellScript(spell_item_highfathers_machination); + RegisterSpellScript(spell_item_seeping_scourgewing); + RegisterSpellScript(spell_item_seeping_scourgewing_aoe_check); } diff --git a/src/server/scripts/Spells/spell_script_loader.cpp b/src/server/scripts/Spells/spell_script_loader.cpp index fa3d7c97bd3..7df1d920846 100644 --- a/src/server/scripts/Spells/spell_script_loader.cpp +++ b/src/server/scripts/Spells/spell_script_loader.cpp @@ -32,6 +32,7 @@ void AddSC_warlock_spell_scripts(); void AddSC_warrior_spell_scripts(); void AddSC_quest_spell_scripts(); void AddSC_item_spell_scripts(); +void AddSC_azerite_item_spell_scripts(); // The name of this function should match: // void Add${NameOfDirectory}Scripts() @@ -53,4 +54,5 @@ void AddSpellsScripts() AddSC_warrior_spell_scripts(); AddSC_quest_spell_scripts(); AddSC_item_spell_scripts(); + AddSC_azerite_item_spell_scripts(); } |