mirror of
https://github.com/mangosfour/server.git
synced 2025-12-15 10:37:02 +00:00
[8257] Avoid remove daze and croud control spells except polymorph at druid form change.
Signed-off-by: VladimirMangos <vladimir@getmangos.com>
This commit is contained in:
parent
c547a27dad
commit
793ce2259a
3 changed files with 28 additions and 2 deletions
|
|
@ -951,6 +951,12 @@ enum Mechanics
|
||||||
(1<<MECHANIC_SHACKLE )|(1<<MECHANIC_TURN )|(1<<MECHANIC_HORROR)| \
|
(1<<MECHANIC_SHACKLE )|(1<<MECHANIC_TURN )|(1<<MECHANIC_HORROR)| \
|
||||||
(1<<MECHANIC_DAZE )|(1<<MECHANIC_SAPPED ) )
|
(1<<MECHANIC_DAZE )|(1<<MECHANIC_SAPPED ) )
|
||||||
|
|
||||||
|
// Daze and all croud control spells except polymorph are not removed
|
||||||
|
#define MECHANIC_NOT_REMOVED_BY_SHAPESHIFT ( \
|
||||||
|
(1<<MECHANIC_CHARM )|(1<<MECHANIC_DISORIENTED)|(1<<MECHANIC_FEAR )|(1<<MECHANIC_PACIFY )| \
|
||||||
|
(1<<MECHANIC_STUN )|(1<<MECHANIC_FREEZE )|(1<<MECHANIC_BANISH)|(1<<MECHANIC_SHACKLE)| \
|
||||||
|
(1<<MECHANIC_HORROR)|(1<<MECHANIC_TURN )|(1<<MECHANIC_DAZE )|(1<<MECHANIC_SAPPED ) )
|
||||||
|
|
||||||
// Spell dispell type
|
// Spell dispell type
|
||||||
enum DispelType
|
enum DispelType
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -2709,14 +2709,34 @@ void Aura::HandleAuraModShapeshift(bool apply, bool Real)
|
||||||
case FORM_FLIGHT_EPIC:
|
case FORM_FLIGHT_EPIC:
|
||||||
case FORM_FLIGHT:
|
case FORM_FLIGHT:
|
||||||
case FORM_MOONKIN:
|
case FORM_MOONKIN:
|
||||||
|
{
|
||||||
// remove movement affects
|
// remove movement affects
|
||||||
m_target->RemoveSpellsCausingAura(SPELL_AURA_MOD_ROOT);
|
m_target->RemoveSpellsCausingAura(SPELL_AURA_MOD_ROOT);
|
||||||
m_target->RemoveSpellsCausingAura(SPELL_AURA_MOD_DECREASE_SPEED);
|
Unit::AuraList const& slowingAuras = m_target->GetAurasByType(SPELL_AURA_MOD_DECREASE_SPEED);
|
||||||
|
for (Unit::AuraList::const_iterator iter = slowingAuras.begin(); iter != slowingAuras.end();)
|
||||||
|
{
|
||||||
|
SpellEntry const* aurSpellInfo = (*iter)->GetSpellProto();
|
||||||
|
|
||||||
|
// If spell that caused this aura has Croud Control or Daze effect
|
||||||
|
if((GetAllSpellMechanicMask(aurSpellInfo) & MECHANIC_NOT_REMOVED_BY_SHAPESHIFT) ||
|
||||||
|
// some Daze spells have these parameters instead of MECHANIC_DAZE
|
||||||
|
(aurSpellInfo->SpellIconID == 15 && aurSpellInfo->Dispel == 0))
|
||||||
|
{
|
||||||
|
++iter;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// All OK, remove aura now
|
||||||
|
m_target->RemoveAurasDueToSpellByCancel(aurSpellInfo->Id);
|
||||||
|
iter = slowingAuras.begin();
|
||||||
|
}
|
||||||
|
|
||||||
// and polymorphic affects
|
// and polymorphic affects
|
||||||
if(m_target->IsPolymorphed())
|
if(m_target->IsPolymorphed())
|
||||||
m_target->RemoveAurasDueToSpell(m_target->getTransForm());
|
m_target->RemoveAurasDueToSpell(m_target->getTransForm());
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#ifndef __REVISION_NR_H__
|
#ifndef __REVISION_NR_H__
|
||||||
#define __REVISION_NR_H__
|
#define __REVISION_NR_H__
|
||||||
#define REVISION_NR "8256"
|
#define REVISION_NR "8257"
|
||||||
#endif // __REVISION_NR_H__
|
#endif // __REVISION_NR_H__
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue