All pastes #784893 Raw Edit

Something

public text v1 · immutable
·published 2007-11-19 22:09 UTC
rendered paste body
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);