All pastes #920236 Raw Edit

Untitled

public text v1 · immutable
#920236 ·published 2008-02-27 08:33 UTC
rendered paste body
Index: src/game/Player.cpp
===================================================================
--- src/game/Player.cpp	(revision 5314)
+++ src/game/Player.cpp	(working copy)
@@ -14468,16 +14468,6 @@
     }
 }
 
-void Player::Uncharm()
-{
-    Unit* charm = GetCharm();
-    if(!charm) return;
-
-    charm->RemoveSpellsCausingAura(SPELL_AURA_MOD_CHARM);
-    charm->RemoveSpellsCausingAura(SPELL_AURA_MOD_POSSESS);
-
-}
-
 void Player::Say(const std::string text, const uint32 language)
 {
     WorldPacket data(SMSG_MESSAGECHAT, 200);
Index: src/game/Player.h
===================================================================
--- src/game/Player.h	(revision 5314)
+++ src/game/Player.h	(working copy)
@@ -974,7 +974,6 @@
         void UpdateInnerTime (int time) { time_inn_enter = time; };
 
         void RemovePet(Pet* pet, PetSaveMode mode, bool returnreagent = false);
-        void Uncharm();
 
         void Say(const std::string text, const uint32 language);
         void Yell(const std::string text, const uint32 language);
Index: src/game/Unit.cpp
===================================================================
--- src/game/Unit.cpp	(revision 5314)
+++ src/game/Unit.cpp	(working copy)
@@ -6245,6 +6245,17 @@
     SetUInt64Value(UNIT_FIELD_CHARM,charmed ? charmed->GetGUID() : 0);
 }
 
+void Unit::Uncharm()
+{
+    Unit* charm = GetCharm();
+    if(!charm) return;
+	// stop combat
+    charm->CombatStop();
+	// remove auras from Charm
+    charm->RemoveSpellsCausingAura(SPELL_AURA_MOD_CHARM);
+    charm->RemoveSpellsCausingAura(SPELL_AURA_MOD_POSSESS);
+}
+
 void Unit::UnsummonAllTotems()
 {
     for (int8 i = 0; i < 4; ++i)
@@ -7580,6 +7591,7 @@
     {
         RemoveAllAurasOnDeath();
         UnsummonAllTotems();
+        Uncharm();
 
         ModifyAuraState(AURA_STATE_HEALTHLESS_20_PERCENT, false);
         ModifyAuraState(AURA_STATE_HEALTHLESS_35_PERCENT, false);
Index: src/game/Unit.h
===================================================================
--- src/game/Unit.h	(revision 5314)
+++ src/game/Unit.h	(working copy)
@@ -956,6 +956,7 @@
         void ModifyAuraState(AuraState flag, bool apply);
         bool HasAuraState(AuraState flag) const { return HasFlag(UNIT_FIELD_AURASTATE, 1<<(flag-1)); }
         void UnsummonAllTotems();
+        void Uncharm();
         int32 SpellBaseDamageBonus(int32 SchoolMask);
         int32 SpellBaseHealingBonus(int32 SchoolMask);
         int32 SpellBaseDamageBonusForVictim(int32 SchoolMask, Unit *pVictim);