fix(Core/Spell): spell immunity system and new separate immunities table (#24956)

Co-authored-by: ariel- <ariel-@users.noreply.github.com>
Co-authored-by: Keader <keader.android@gmail.com>
Co-authored-by: Shauren <shauren.trinity@gmail.com>
This commit is contained in:
sogladev 2026-03-22 23:36:35 +01:00 committed by GitHub
parent 0e0ff86e3e
commit a90570a2de
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
26 changed files with 1655 additions and 914 deletions

View file

@ -0,0 +1,23 @@
--
CREATE TABLE `creature_immunities` (
`ID` int NOT NULL,
`SchoolMask` tinyint NOT NULL DEFAULT '0',
`DispelTypeMask` smallint NOT NULL DEFAULT '0',
`MechanicsMask` bigint NOT NULL DEFAULT '0',
`Effects` mediumtext COLLATE utf8mb4_unicode_ci NOT NULL,
`Auras` mediumtext COLLATE utf8mb4_unicode_ci NOT NULL,
`ImmuneAoE` tinyint(1) NOT NULL DEFAULT '0',
`ImmuneChain` tinyint(1) NOT NULL DEFAULT '0',
`Comment` mediumtext COLLATE utf8mb4_unicode_ci NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
ALTER TABLE `creature_template` ADD `CreatureImmunitiesId` int NOT NULL DEFAULT '0' AFTER `RegenHealth`;
UPDATE `creature_template` SET `CreatureImmunitiesId`=COALESCE((SELECT ci.`ID` FROM `creature_immunities` ci WHERE ci.`SchoolMask`=`spell_school_immune_mask` AND ci.`MechanicsMask`=`mechanic_immune_mask`*2),0);
ALTER TABLE `creature_template`
DROP `spell_school_immune_mask`,
DROP `mechanic_immune_mask`;
ALTER TABLE `creature_template` DROP COLUMN `scale`;

View file

@ -0,0 +1,37 @@
--
DELETE FROM `creature_immunities` WHERE `ID` IN (95,96,315,477,679,878,1537,1557,1614,1615,1630,1632,1664,1676,1682,1693,1694,1695,1733);
INSERT INTO `creature_immunities` (`ID`, `SchoolMask`, `DispelTypeMask`, `MechanicsMask`, `Effects`, `Auras`, `ImmuneAoE`, `ImmuneChain`, `Comment`) VALUES
(95, 0, 0, 32, '', '', 0, 0, 'Immune to Fear'),
(96, 0, 0, 1234599598, '', '5,7,12,26,33', 0, 0, 'Immune to CC (Free Friend, Uncontrollable Frenzy, Warlord\'s Presence)'),
(315, 127, 0, 0, '', '', 0, 0, 'Immune to damage'),
(477, 0, 0, 68719476736, '114', '11', 0, 0, 'Immune to Taunt'),
(679, 0, 0, 1234599078, '', '5,7,12,26,33', 0, 0, 'Immune to CC'),
(878, 0, 0, 4096, '', '12', 0, 0, 'Immune to Stun'),
(1537, 0, 0, 32, '', '7', 0, 0, 'Immune to Fear'),
(1557, 0, 0, 1234599078, '98,124,144,145', '', 0, 0, 'Immune CC+Stun+Move'),
(1614, 0, 0, 68719476736, '114', '11', 0, 0, 'Immune to Taunt'),
(1615, 0, 0, 1301707942, '68', '5,7,12,26,27,33,60', 0, 0, 'Immune to CC+Interrupt'),
(1630, 0, 0, 69954075814, '114', '5,7,11,12,26,33', 0, 0, 'Immune to CC+Taunt'),
(1632, 0, 0, 584472182, '', '', 0, 0, 'Immune to hard CC'),
(1664, 0, 0, 2176, '', '', 0, 0, 'Immune to slow'),
(1676, 0, 0, 570425344, '', '', 0, 0, 'Immune to immunities'),
(1682, 0, 0, 4096, '', '', 0, 0, 'Immune to Stun'),
(1693, 0, 0, 584472182, '68', '', 0, 0, 'Immune to hard CC+Interrupt'),
(1694, 0, 0, 68719476736, '114', '11', 0, 0, 'Immune to Taunt'),
(1695, 0, 0, 4096, '', '12', 0, 0, 'Immune to Stun'),
(1733, 0, 0, 1234599078, '98,124,144,145', '', 0, 0, 'Immune CC+Stun+Move');
DELETE FROM `creature_immunities` WHERE `ID` IN (1762,1771,1794,1799,1808,1835,1887,1893,1944,1964,1971);
INSERT INTO `creature_immunities` (`ID`, `SchoolMask`, `DispelTypeMask`, `MechanicsMask`, `Effects`, `Auras`, `ImmuneAoE`, `ImmuneChain`, `Comment`) VALUES
(1762, 0, 4, 0, '', '', 0, 0, 'Immune to Curses'),
(1771, 0, 0, 0, '', '', 1, 0, 'Immune to AoE'),
(1794, 0, 0, 67108864, '68', '', 0, 0, 'Immune to Interrupts'),
(1799, 0, 0, 67109376, '68', '27,60', 0, 0, 'Immune to Interrupts+Silence'),
(1808, 0, 0, 0, '98,124,144,145', '', 0, 0, 'Immune to knockback'),
(1835, 0, 0, 1075183616, '', '', 0, 0, 'Immune to polymorph+banish+shackle+sap'),
(1887, 0, 0, 0, '98,124,144,145', '', 0, 0, 'Immune to knockback'),
(1893, 0, 0, 1091728546, '', '', 0, 0, 'Immune to Charm+Fear+Freeze+Horror+Knockout+Polymorph+Root+Sap+Shackle+Sleep+Stun'),
(1944, 0, 0, 68719476736, '114', '11', 0, 0, 'Immune to Taunt'),
(1964, 0, 0, 67109376, '68', '27,60', 0, 0, 'Immune to Interrupts+Silence'),
(1971, 0, 0, 4096, '', '', 0, 0, 'Immune to Stun');