Index: SpellAuraDefines.h =================================================================== --- SpellAuraDefines.h (revision 61) +++ SpellAuraDefines.h (working copy) @@ -23,8 +23,10 @@ enum AURA_FLAGS { - AFLAG_EMPTY = 0x0, - AFLAG_SET = 0x9 + AFLAG_EMPTY = 0x00, + AFLAG_NEGATIVE = 0x09, + AFLAG_POSITIVE = 0x1F, + AFLAG_MASK = 0xFF }; //m_schoolAbsorb Index: SpellAuras.cpp =================================================================== --- SpellAuras.cpp (revision 61) +++ SpellAuras.cpp (working copy) @@ -785,12 +785,14 @@ { m_target->SetUInt32Value((uint16)(UNIT_FIELD_AURA + slot), GetId()); - uint8 flagslot = slot >> 3; + uint8 flagslot = slot >> 2; uint32 value = m_target->GetUInt32Value((uint16)(UNIT_FIELD_AURAFLAGS + flagslot)); - uint8 value1 = (slot & 7) << 2; - value |= ((uint32)AFLAG_SET << value1); - + uint8 value1 = (slot & 3) << 3; + if (IsPositive()) + value |= ((uint32)AFLAG_POSITIVE << value1); + else + value |= ((uint32)AFLAG_NEGATIVE << value1); m_target->SetUInt32Value((uint16)(UNIT_FIELD_AURAFLAGS + flagslot), value); } @@ -868,12 +870,12 @@ { m_target->SetUInt32Value((uint16)(UNIT_FIELD_AURA + slot), 0); - uint8 flagslot = slot >> 3; + uint8 flagslot = slot >> 2; uint32 value = m_target->GetUInt32Value((uint16)(UNIT_FIELD_AURAFLAGS + flagslot)); - uint8 aurapos = (slot & 7) << 2; - uint32 value1 = ~( AFLAG_SET << aurapos ); + uint8 aurapos = (slot & 3) << 3; + uint32 value1 = ~( AFLAG_NEGATIVE << aurapos ); value &= value1; m_target->SetUInt32Value((uint16)(UNIT_FIELD_AURAFLAGS + flagslot), value);