diff options
author | Treeston <treeston.mmoc@gmail.com> | 2018-08-27 13:37:33 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2021-10-23 02:14:04 +0200 |
commit | 395f58d651c7c370522ead6ba9a3c684d91e3a66 (patch) | |
tree | 83e0217b076d9e347c6446df67b9f1b3b216f7bb | |
parent | 9755bcb1792390e62b5693cb662cd904dd2eebae (diff) |
Core/Unit: Inline some unnecessary helpers.
(cherry picked from commit ce06767ef50e4eca7b9ff834a873f99e6ad381d5)
-rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 26 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/Unit.h | 31 |
2 files changed, 17 insertions, 40 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 93db566db4e..fe94238f9ed 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -5967,8 +5967,10 @@ void Unit::SetCharm(Unit* charm, bool apply) { if (GetTypeId() == TYPEID_PLAYER) { - if (!SetCharmedData(charm)) - TC_LOG_FATAL("entities.unit", "Player %s is trying to charm unit %u, but it already has a charmed unit %s", GetName().c_str(), charm->GetEntry(), GetCharmedGUID().ToString().c_str()); + ASSERT(GetCharmedGUID().IsEmpty(), + "Player %s is trying to charm unit %u, but it already has a charmed unit %s", GetName().c_str(), charm->GetEntry(), GetCharmedGUID().ToString().c_str()); + SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::Charm), charm->GetGUID()); + m_charmed = charm; charm->m_ControlledByPlayer = true; /// @todo maybe we can use this flag to check if controlled by player @@ -5980,8 +5982,10 @@ void Unit::SetCharm(Unit* charm, bool apply) // PvP, FFAPvP charm->SetPvpFlags(GetPvpFlags()); - if (!charm->SetCharmerData(this)) - TC_LOG_FATAL("entities.unit", "Unit %u is being charmed, but it already has a charmer %s", charm->GetEntry(), charm->GetCharmerGUID().ToString().c_str()); + ASSERT(charm->GetCharmerGUID().IsEmpty(), + "Unit %u is being charmed, but it already has a charmer %s", charm->GetEntry(), charm->GetCharmerGUID().ToString().c_str()); + charm->SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::CharmedBy), GetGUID()); + charm->m_charmer = this; _isWalkingBeforeCharm = charm->IsWalking(); if (_isWalkingBeforeCharm) @@ -5995,12 +5999,16 @@ void Unit::SetCharm(Unit* charm, bool apply) if (GetTypeId() == TYPEID_PLAYER) { - if (!ClearCharmedData(charm)) - TC_LOG_FATAL("entities.unit", "Player %s is trying to uncharm unit %u, but it has another charmed unit %s", GetName().c_str(), charm->GetEntry(), GetCharmedGUID().ToString().c_str()); + ASSERT(GetCharmedGUID() == charm->GetGUID(), + "Player %s is trying to uncharm unit %u, but it has another charmed unit %s", GetName().c_str(), charm->GetEntry(), GetCharmedGUID().ToString().c_str()); + SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::Charm), ObjectGuid::Empty); + m_charmed = nullptr; } - if (!charm->ClearCharmerData(this)) - TC_LOG_FATAL("entities.unit", "Unit %u is being uncharmed, but it has another charmer %s", charm->GetEntry(), charm->GetCharmerGUID().ToString().c_str()); + ASSERT(charm->GetCharmerGUID() == GetGUID(), + "Unit %u is being uncharmed, but it has another charmer %s", charm->GetEntry(), charm->GetCharmerGUID().ToString().c_str()); + charm->SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::CharmedBy), ObjectGuid::Empty); + charm->m_charmer = nullptr; if (charm->GetTypeId() == TYPEID_PLAYER) { @@ -9126,7 +9134,7 @@ void Unit::RemoveFromWorld() if (IsCharmed()) RemoveCharmedBy(nullptr); - + ASSERT(!GetCharmedGUID(), "Unit %u has charmed guid when removed from world", GetEntry()); ASSERT(!GetCharmerGUID(), "Unit %u has charmer guid when removed from world", GetEntry()); diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index e93563bcd25..3035bc2fa2b 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -1242,40 +1242,9 @@ class TC_GAME_API Unit : public WorldObject ObjectGuid GetDemonCreatorGUID() const { return m_unitData->DemonCreator; } void SetDemonCreatorGUID(ObjectGuid guid) { SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::DemonCreator), guid); } - bool SetCharmerData(Unit const* unit) - { - if (!GetCharmerGUID().IsEmpty()) - return false; - SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::CharmedBy), unit->GetGUID()); - m_charmer = const_cast<Unit*>(unit); - return true; - } - bool ClearCharmerData(Unit const* verify) - { - if (GetCharmerGUID() != verify->GetGUID()) - return false; - SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::CharmedBy), ObjectGuid::Empty); - m_charmer = nullptr; - return true; - } ObjectGuid GetCharmerGUID() const { return m_unitData->CharmedBy; } Unit* GetCharmer() const { return m_charmer; } - bool SetCharmedData(Unit const* unit) - { - if (!GetCharmedGUID().IsEmpty()) - return false; - m_charmed = const_cast<Unit*>(unit); - return true; - } - bool ClearCharmedData(Unit const* verify) - { - if (GetCharmedGUID() != verify->GetGUID()) - return false; - SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::Charm), ObjectGuid::Empty); - m_charmed = nullptr; - return true; - } ObjectGuid GetCharmedGUID() const { return m_unitData->Charm; } Unit* GetCharmed() const { return m_charmed; } |