diff options
| author | Shauren <shauren.trinity@gmail.com> | 2024-02-01 22:20:25 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2024-02-01 22:20:25 +0100 |
| commit | e6785094fce1bc0d8537cddef73088d30521883a (patch) | |
| tree | 56c85a77518622537579663838354d4d8181a0e0 | |
| parent | a32af01495017c5dc6a2b6a6e7aec8698c56683a (diff) | |
Core/Spells: Moved hardcoded immunity data for SPELL_AURA_MECHANIC_IMMUNITY_MASK to database
| -rw-r--r-- | sql/updates/world/master/2024_02_01_01_world.sql | 21 | ||||
| -rw-r--r-- | src/server/game/Miscellaneous/SharedDefines.h | 14 | ||||
| -rw-r--r-- | src/server/game/Spells/SpellInfo.cpp | 141 |
3 files changed, 28 insertions, 148 deletions
diff --git a/sql/updates/world/master/2024_02_01_01_world.sql b/sql/updates/world/master/2024_02_01_01_world.sql new file mode 100644 index 00000000000..da61130ab66 --- /dev/null +++ b/sql/updates/world/master/2024_02_01_01_world.sql @@ -0,0 +1,21 @@ +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,455', 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,455', 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,455', 0, 0, 'Immune to CC+Interrupt'), +(1630, 0, 0, 69954075814, '114', '5,7,11,12,26,33,455', 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'); diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index c42f5d8714c..7b34e1a08a1 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -2576,13 +2576,13 @@ enum Mechanics : uint32 }; // Used for spell 42292 Immune Movement Impairment and Loss of Control (0x49967ca6) -#define IMMUNE_TO_MOVEMENT_IMPAIRMENT_AND_LOSS_CONTROL_MASK (\ - (1<<MECHANIC_CHARM)|(1<<MECHANIC_DISORIENTED)|(1<<MECHANIC_FEAR)| \ - (1<<MECHANIC_ROOT)|(1<<MECHANIC_SLEEP)|(1<<MECHANIC_SNARE)| \ - (1<<MECHANIC_STUN)|(1<<MECHANIC_FREEZE)|(1<<MECHANIC_SILENCE)|(1<<MECHANIC_DISARM)|(1<<MECHANIC_KNOCKOUT)| \ - (1<<MECHANIC_POLYMORPH)|(1<<MECHANIC_BANISH)|(1<<MECHANIC_SHACKLE)| \ - (1<<MECHANIC_TURN)|(1<<MECHANIC_HORROR)|(1<<MECHANIC_DAZE)| \ - (1<<MECHANIC_SAPPED)) +inline constexpr uint64 IMMUNE_TO_MOVEMENT_IMPAIRMENT_AND_LOSS_CONTROL_MASK(\ + (1 << MECHANIC_CHARM) | (1 << MECHANIC_DISORIENTED) | (1 << MECHANIC_FEAR) | \ + (1 << MECHANIC_ROOT) | (1 << MECHANIC_SLEEP) | (1 << MECHANIC_SNARE) | \ + (1 << MECHANIC_STUN) | (1 << MECHANIC_FREEZE) | (1 << MECHANIC_SILENCE) | (1 << MECHANIC_DISARM) | (1 << MECHANIC_KNOCKOUT) | \ + (1 << MECHANIC_POLYMORPH) | (1 << MECHANIC_BANISH) | (1 << MECHANIC_SHACKLE) | \ + (1 << MECHANIC_TURN) | (1 << MECHANIC_HORROR) | (1 << MECHANIC_DAZE) | \ + (1 << MECHANIC_SAPPED)); // Spell dispel type enum DispelType diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp index cb2875edd8e..7a365207d4b 100644 --- a/src/server/game/Spells/SpellInfo.cpp +++ b/src/server/game/Spells/SpellInfo.cpp @@ -3318,7 +3318,6 @@ void SpellInfo::_LoadImmunityInfo() uint32 damageImmunityMask = 0; int32 miscVal = effect.MiscValue; - int32 amount = effect.CalcValue(); SpellEffectInfo::ImmunityInfo& immuneInfo = *workBuffer; @@ -3336,146 +3335,6 @@ void SpellInfo::_LoadImmunityInfo() for (AuraType aura : creatureImmunities->Aura) immuneInfo.AuraTypeImmune.insert(aura); } - - switch (miscVal) - { - case 96: // Free Friend, Uncontrollable Frenzy, Warlord's Presence - { - mechanicImmunityMask |= IMMUNE_TO_MOVEMENT_IMPAIRMENT_AND_LOSS_CONTROL_MASK; - - immuneInfo.AuraTypeImmune.insert(SPELL_AURA_MOD_STUN); - immuneInfo.AuraTypeImmune.insert(SPELL_AURA_MOD_DECREASE_SPEED); - immuneInfo.AuraTypeImmune.insert(SPELL_AURA_MOD_ROOT); - immuneInfo.AuraTypeImmune.insert(SPELL_AURA_MOD_CONFUSE); - immuneInfo.AuraTypeImmune.insert(SPELL_AURA_MOD_FEAR); - immuneInfo.AuraTypeImmune.insert(SPELL_AURA_MOD_ROOT_2); - break; - } - case 1615: // Incite Rage, Wolf Spirit, Overload, Lightning Tendrils - { - switch (Id) - { - case 43292: // Incite Rage - case 49172: // Wolf Spirit - mechanicImmunityMask |= IMMUNE_TO_MOVEMENT_IMPAIRMENT_AND_LOSS_CONTROL_MASK; - - immuneInfo.AuraTypeImmune.insert(SPELL_AURA_MOD_STUN); - immuneInfo.AuraTypeImmune.insert(SPELL_AURA_MOD_DECREASE_SPEED); - immuneInfo.AuraTypeImmune.insert(SPELL_AURA_MOD_ROOT); - immuneInfo.AuraTypeImmune.insert(SPELL_AURA_MOD_CONFUSE); - immuneInfo.AuraTypeImmune.insert(SPELL_AURA_MOD_FEAR); - immuneInfo.AuraTypeImmune.insert(SPELL_AURA_MOD_ROOT_2); - [[fallthrough]]; - case 61869: // Overload - case 63481: - case 61887: // Lightning Tendrils - case 63486: - mechanicImmunityMask |= (1 << MECHANIC_INTERRUPT) | (1 << MECHANIC_SILENCE); - - immuneInfo.SpellEffectImmune.insert(SPELL_EFFECT_KNOCK_BACK); - immuneInfo.SpellEffectImmune.insert(SPELL_EFFECT_KNOCK_BACK_DEST); - break; - default: - break; - } - break; - } - case 679: // Mind Control, Avenging Fury - { - if (Id == 57742) // Avenging Fury - { - mechanicImmunityMask |= IMMUNE_TO_MOVEMENT_IMPAIRMENT_AND_LOSS_CONTROL_MASK; - - immuneInfo.AuraTypeImmune.insert(SPELL_AURA_MOD_STUN); - immuneInfo.AuraTypeImmune.insert(SPELL_AURA_MOD_DECREASE_SPEED); - immuneInfo.AuraTypeImmune.insert(SPELL_AURA_MOD_ROOT); - immuneInfo.AuraTypeImmune.insert(SPELL_AURA_MOD_CONFUSE); - immuneInfo.AuraTypeImmune.insert(SPELL_AURA_MOD_FEAR); - immuneInfo.AuraTypeImmune.insert(SPELL_AURA_MOD_ROOT_2); - } - break; - } - case 1557: // Startling Roar, Warlord Roar, Break Bonds, Stormshield - { - if (Id == 64187) // Stormshield - { - mechanicImmunityMask |= (1 << MECHANIC_STUN); - immuneInfo.AuraTypeImmune.insert(SPELL_AURA_MOD_STUN); - } - else - { - mechanicImmunityMask |= IMMUNE_TO_MOVEMENT_IMPAIRMENT_AND_LOSS_CONTROL_MASK; - - immuneInfo.AuraTypeImmune.insert(SPELL_AURA_MOD_STUN); - immuneInfo.AuraTypeImmune.insert(SPELL_AURA_MOD_DECREASE_SPEED); - immuneInfo.AuraTypeImmune.insert(SPELL_AURA_MOD_ROOT); - immuneInfo.AuraTypeImmune.insert(SPELL_AURA_MOD_CONFUSE); - immuneInfo.AuraTypeImmune.insert(SPELL_AURA_MOD_FEAR); - immuneInfo.AuraTypeImmune.insert(SPELL_AURA_MOD_ROOT_2); - } - break; - } - case 1614: // Fixate - case 1694: // Fixated, Lightning Tendrils - { - immuneInfo.SpellEffectImmune.insert(SPELL_EFFECT_ATTACK_ME); - immuneInfo.AuraTypeImmune.insert(SPELL_AURA_MOD_TAUNT); - break; - } - case 1630: // Fervor, Berserk - { - if (Id == 64112) // Berserk - { - immuneInfo.SpellEffectImmune.insert(SPELL_EFFECT_ATTACK_ME); - immuneInfo.AuraTypeImmune.insert(SPELL_AURA_MOD_TAUNT); - } - else - { - mechanicImmunityMask |= IMMUNE_TO_MOVEMENT_IMPAIRMENT_AND_LOSS_CONTROL_MASK; - - immuneInfo.AuraTypeImmune.insert(SPELL_AURA_MOD_STUN); - immuneInfo.AuraTypeImmune.insert(SPELL_AURA_MOD_DECREASE_SPEED); - immuneInfo.AuraTypeImmune.insert(SPELL_AURA_MOD_ROOT); - immuneInfo.AuraTypeImmune.insert(SPELL_AURA_MOD_CONFUSE); - immuneInfo.AuraTypeImmune.insert(SPELL_AURA_MOD_FEAR); - immuneInfo.AuraTypeImmune.insert(SPELL_AURA_MOD_ROOT_2); - } - break; - } - case 477: // Bladestorm - case 1733: // Bladestorm, Killing Spree - { - if (!amount) - { - mechanicImmunityMask |= IMMUNE_TO_MOVEMENT_IMPAIRMENT_AND_LOSS_CONTROL_MASK; - - immuneInfo.SpellEffectImmune.insert(SPELL_EFFECT_KNOCK_BACK); - immuneInfo.SpellEffectImmune.insert(SPELL_EFFECT_KNOCK_BACK_DEST); - - immuneInfo.AuraTypeImmune.insert(SPELL_AURA_MOD_STUN); - immuneInfo.AuraTypeImmune.insert(SPELL_AURA_MOD_DECREASE_SPEED); - immuneInfo.AuraTypeImmune.insert(SPELL_AURA_MOD_ROOT); - immuneInfo.AuraTypeImmune.insert(SPELL_AURA_MOD_CONFUSE); - immuneInfo.AuraTypeImmune.insert(SPELL_AURA_MOD_FEAR); - immuneInfo.AuraTypeImmune.insert(SPELL_AURA_MOD_ROOT_2); - } - break; - } - case 878: // Whirlwind, Fog of Corruption, Determination - { - if (Id == 66092) // Determination - { - mechanicImmunityMask |= (1 << MECHANIC_SNARE) | (1 << MECHANIC_STUN) - | (1 << MECHANIC_DISORIENTED) | (1 << MECHANIC_FREEZE); - - immuneInfo.AuraTypeImmune.insert(SPELL_AURA_MOD_STUN); - immuneInfo.AuraTypeImmune.insert(SPELL_AURA_MOD_DECREASE_SPEED); - } - break; - } - default: - break; - } break; } case SPELL_AURA_MECHANIC_IMMUNITY: |
