All pastes #950805 Raw Edit

Jemand

public diff v1 · immutable
·published 2008-03-20 21:12 UTC
rendered paste body
Index: src/game/Player.cpp===================================================================--- src/game/Player.cpp	(revision 5467)+++ src/game/Player.cpp	(working copy)@@ -1878,23 +1878,15 @@     //TODO: exist also swimming mobs, and function must be symmetric to enter/leave water     m_isInWater = apply; -    // form update-    if(apply)+    // remove auras that need water/land+    uint32 auraInterruptFlag = (apply ? AURA_INTERRUPT_FLAG_NOT_ABOVEWATER : AURA_INTERRUPT_FLAG_NOT_UNDERWATER);    +    for (AuraMap::iterator iter = m_Auras.begin(); iter != m_Auras.end(); )     {-        // remove travel forms-        if(m_form == FORM_TRAVEL || m_form == FORM_GHOSTWOLF)-            RemoveAurasDueToSpell(m_ShapeShiftForm);--        // remove mounts, check flight mounts also (flying=swimming in air :D)-        if(IsMounted() && !IsFlying())-            RemoveSpellsCausingAura(SPELL_AURA_MOUNTED);+        if (iter->second->GetSpellProto()->AuraInterruptFlags & auraInterruptFlag)+            RemoveAura(iter);+        else+            ++iter;     }-    else-    {-        // remove aqua form-        if(m_form == FORM_AQUA)-            RemoveAurasDueToSpell(m_ShapeShiftForm);-    }      getHostilRefManager().updateThreatTables(); }Index: src/game/Unit.h===================================================================--- src/game/Unit.h	(revision 5467)+++ src/game/Unit.h	(working copy)@@ -58,8 +58,12 @@  enum SpellAuraInterruptFlags {-    AURA_INTERRUPT_FLAG_DAMAGE      = 0x00000002,-    AURA_INTERRUPT_FLAG_NOT_SEATED  = 0x00040000+    AURA_INTERRUPT_FLAG_DAMAGE          = 0x00000002,+    AURA_INTERRUPT_FLAG_NOT_MOUNTED     = 0x00000040,+    AURA_INTERRUPT_FLAG_NOT_ABOVEWATER  = 0x00000080,+    AURA_INTERRUPT_FLAG_NOT_UNDERWATER  = 0x00000100,+    AURA_INTERRUPT_FLAG_NOT_SHEATHED    = 0x00000200,+    AURA_INTERRUPT_FLAG_NOT_SEATED      = 0x00040000 };  enum SpellModOp