diff options
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 8 | ||||
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.h | 2 | 
2 files changed, 5 insertions, 5 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 76ead47fe5e..ad91cc9b8ae 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -6420,6 +6420,8 @@ void Unit::SetCharm(Unit* charm, bool apply)      }      else      { +        charm->ClearUnitState(UNIT_STATE_CHARMED); +          if (GetTypeId() == TYPEID_PLAYER)          {              if (GetCharmGUID() == charm->GetGUID()) @@ -11941,11 +11943,11 @@ bool Unit::SetCharmedBy(Unit* charmer, CharmType type, AuraApplication const* au                  playerCharmer->VehicleSpellInitialize();                  break;              case CHARM_TYPE_POSSESS: -                AddUnitState(UNIT_STATE_POSSESSED);                  AddUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED);                  charmer->AddUnitFlag(UNIT_FLAG_REMOVE_CLIENT_CONTROL);                  playerCharmer->SetClientControl(this, true);                  playerCharmer->PossessSpellInitialize(); +                AddUnitState(UNIT_STATE_POSSESSED);                  break;              case CHARM_TYPE_CHARM:                  if (GetTypeId() == TYPEID_UNIT && charmer->getClass() == CLASS_WARLOCK) @@ -12034,7 +12036,6 @@ void Unit::RemoveCharmedBy(Unit* charmer)      charmer->SetCharm(this, false);      Player* playerCharmer = charmer->ToPlayer(); -      if (playerCharmer)      {          switch (type) @@ -12045,11 +12046,11 @@ void Unit::RemoveCharmedBy(Unit* charmer)                  RemoveUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED);                  break;              case CHARM_TYPE_POSSESS: +                ClearUnitState(UNIT_STATE_POSSESSED);                  playerCharmer->SetClientControl(this, false);                  playerCharmer->SetClientControl(charmer, true);                  charmer->RemoveUnitFlag(UNIT_FLAG_REMOVE_CLIENT_CONTROL);                  RemoveUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED); -                ClearUnitState(UNIT_STATE_POSSESSED);                  break;              case CHARM_TYPE_CHARM:                  if (GetTypeId() == TYPEID_UNIT && charmer->getClass() == CLASS_WARLOCK) @@ -12091,7 +12092,6 @@ void Unit::RemoveCharmedBy(Unit* charmer)      // reset confused movement for example      ApplyControlStatesIfNeeded(); -    ClearUnitState(UNIT_STATE_CHARMED);  }  void Unit::RestoreFaction() diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index eee89e86692..e164484ce00 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -281,7 +281,7 @@ enum UnitState : uint32      UNIT_STATE_UNATTACKABLE        = UNIT_STATE_IN_FLIGHT,      UNIT_STATE_MOVING              = UNIT_STATE_ROAMING_MOVE | UNIT_STATE_CONFUSED_MOVE | UNIT_STATE_FLEEING_MOVE | UNIT_STATE_CHASE_MOVE | UNIT_STATE_FOLLOW_MOVE,      UNIT_STATE_CONTROLLED          = UNIT_STATE_CONFUSED | UNIT_STATE_STUNNED | UNIT_STATE_FLEEING, -    UNIT_STATE_CANT_CLIENT_CONTROL = UNIT_STATE_CONFUSED | UNIT_STATE_CHARMED | UNIT_STATE_POSSESSED | UNIT_STATE_FLEEING | UNIT_STATE_POSSESSED, +    UNIT_STATE_CANT_CLIENT_CONTROL = UNIT_STATE_CHARMED | UNIT_STATE_FLEEING | UNIT_STATE_CONFUSED | UNIT_STATE_POSSESSED,      UNIT_STATE_LOST_CONTROL        = UNIT_STATE_CONTROLLED | UNIT_STATE_POSSESSED | UNIT_STATE_JUMPING | UNIT_STATE_CHARGING,      UNIT_STATE_CANNOT_AUTOATTACK   = UNIT_STATE_CONTROLLED | UNIT_STATE_CHARGING | UNIT_STATE_CASTING,      UNIT_STATE_SIGHTLESS           = UNIT_STATE_LOST_CONTROL | UNIT_STATE_EVADE,  | 
