mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-29 21:32:52 +01:00
Core/Spells: Moved hardcoded immunity data for SPELL_AURA_MECHANIC_IMMUNITY_MASK to database
This commit is contained in:
21
sql/updates/world/master/2024_02_01_01_world.sql
Normal file
21
sql/updates/world/master/2024_02_01_01_world.sql
Normal file
@@ -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');
|
||||
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user