mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-24 14:16:31 +00:00
fix(Core/Spell): Implement SPELL_ATTR6_NO_PUSHBACK (#19292)
fix(Core/Spell): ImplementSPELL_ATTR6_NO_PUSHBACK
This commit is contained in:
@@ -7746,6 +7746,9 @@ void Spell::Delayed() // only called in DealDamage()
|
||||
if (isDelayableNoMore()) // Spells may only be delayed twice
|
||||
return;
|
||||
|
||||
if (m_spellInfo->HasAttribute(SPELL_ATTR6_NO_PUSHBACK))
|
||||
return;
|
||||
|
||||
// spells not loosing casting time (slam, dynamites, bombs..)
|
||||
//if (!(m_spellInfo->InterruptFlags & SPELL_INTERRUPT_FLAG_DAMAGE))
|
||||
// return;
|
||||
@@ -7785,6 +7788,9 @@ void Spell::DelayedChannel()
|
||||
if (isDelayableNoMore()) // Spells may only be delayed twice
|
||||
return;
|
||||
|
||||
if (m_spellInfo->HasAttribute(SPELL_ATTR6_NO_PUSHBACK))
|
||||
return;
|
||||
|
||||
//check pushback reduce
|
||||
// should be affected by modifiers, not take the dbc duration.
|
||||
int32 duration = ((m_channeledDuration > 0) ? m_channeledDuration : m_spellInfo->GetDuration());
|
||||
|
||||
@@ -4815,6 +4815,12 @@ void SpellMgr::LoadSpellInfoCorrections()
|
||||
spellInfo->AttributesEx3 |= SPELL_ATTR3_SUPRESS_TARGET_PROCS;
|
||||
});
|
||||
|
||||
// Shadow Grasp
|
||||
ApplySpellFix({ 30410 }, [](SpellInfo* spellInfo)
|
||||
{
|
||||
spellInfo->AttributesEx6 |= SPELL_ATTR6_NO_PUSHBACK;
|
||||
});
|
||||
|
||||
for (uint32 i = 0; i < GetSpellInfoStoreSize(); ++i)
|
||||
{
|
||||
SpellInfo* spellInfo = mSpellInfoMap[i];
|
||||
|
||||
@@ -616,7 +616,7 @@ enum SpellAttr6 : uint32
|
||||
SPELL_ATTR6_ALLOW_WHILE_RIDING_VEHICLE = 0x00001000, // TITLE Castable while caster is on vehicle
|
||||
SPELL_ATTR6_IGNORE_PHASE_SHIFT = 0x00002000, // TITLE Can target invisible units
|
||||
SPELL_ATTR6_AI_PRIMARY_RANGED_ATTACK = 0x00004000, // TITLE Unknown attribute 14@Attr6
|
||||
SPELL_ATTR6_NO_PUSHBACK = 0x00008000, // TITLE Unknown attribute 15@Attr6 DESCRIPTION only 54368, 67892
|
||||
SPELL_ATTR6_NO_PUSHBACK = 0x00008000, // TITLE Not affected by pushback DESCRIPTION Casts/Channels will not affected by pushback
|
||||
SPELL_ATTR6_NO_JUMP_PATHING = 0x00010000, // TITLE Unknown attribute 16@Attr6
|
||||
SPELL_ATTR6_ALLOW_EQUIP_WHILE_CASTING = 0x00020000, // TITLE Unknown attribute 17@Attr6 DESCRIPTION Mount related?
|
||||
SPELL_ATTR6_ORIGINATE_FROM_CONTROLLER = 0x00040000, // TITLE Spell is cast by charmer DESCRIPTION Client will prevent casting if not possessed, charmer will be caster for all intents and purposes
|
||||
|
||||
@@ -946,7 +946,7 @@ AC_API_EXPORT EnumText EnumUtils<SpellAttr6>::ToString(SpellAttr6 value)
|
||||
case SPELL_ATTR6_ALLOW_WHILE_RIDING_VEHICLE: return { "SPELL_ATTR6_ALLOW_WHILE_RIDING_VEHICLE", "Castable while caster is on vehicle", "" };
|
||||
case SPELL_ATTR6_IGNORE_PHASE_SHIFT: return { "SPELL_ATTR6_IGNORE_PHASE_SHIFT", "Can target invisible units", "" };
|
||||
case SPELL_ATTR6_AI_PRIMARY_RANGED_ATTACK: return { "SPELL_ATTR6_AI_PRIMARY_RANGED_ATTACK", "Unknown attribute 14@Attr6", "" };
|
||||
case SPELL_ATTR6_NO_PUSHBACK: return { "SPELL_ATTR6_NO_PUSHBACK", "Unknown attribute 15@Attr6", "only 54368, 67892" };
|
||||
case SPELL_ATTR6_NO_PUSHBACK: return { "SPELL_ATTR6_NO_PUSHBACK", "Not affected by pushback", "Casts/Channels will not affected by pushback" };
|
||||
case SPELL_ATTR6_NO_JUMP_PATHING: return { "SPELL_ATTR6_NO_JUMP_PATHING", "Unknown attribute 16@Attr6", "" };
|
||||
case SPELL_ATTR6_ALLOW_EQUIP_WHILE_CASTING: return { "SPELL_ATTR6_ALLOW_EQUIP_WHILE_CASTING", "Unknown attribute 17@Attr6", "Mount related?" };
|
||||
case SPELL_ATTR6_ORIGINATE_FROM_CONTROLLER: return { "SPELL_ATTR6_ORIGINATE_FROM_CONTROLLER", "Spell is cast by charmer", "Client will prevent casting if not possessed, charmer will be caster for all intents and purposes" };
|
||||
|
||||
Reference in New Issue
Block a user