aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities
diff options
context:
space:
mode:
authorForesterDev <11771800+ForesterDev@users.noreply.github.com>2019-07-02 12:17:03 +0400
committerShauren <shauren.trinity@gmail.com>2021-12-13 00:42:20 +0100
commit27886c7f5d6cfc221ea67aab210f96859d725e05 (patch)
tree6502c70a3ac0b2d3cc5b80f00001e0db37f9bf2b /src/server/game/Entities
parent4e6c59dca78ce563c327ea3106d0ff6786b1e127 (diff)
Core/Player: add helper methods GetNativeGender/SetNativeGender/SetGender (#23520)
* Core/Player: add helper methods GetNativeGender/SetNativeGender/SetGender and fix some cases, where we should get player gender, instead of modified by display gender * fix merge * Add virtual methods for Unit class (cherry picked from commit b47bb59e2a3e42aff3793517ef94f51678b54905)
Diffstat (limited to 'src/server/game/Entities')
-rw-r--r--src/server/game/Entities/Player/Player.cpp14
-rw-r--r--src/server/game/Entities/Player/Player.h5
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp4
-rw-r--r--src/server/game/Entities/Unit/Unit.h6
4 files changed, 16 insertions, 13 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 5f71d79df29..04555e758f9 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -482,7 +482,7 @@ bool Player::Create(ObjectGuid::LowType guidlow, WorldPackets::Character::Charac
SetRace(createInfo->Race);
SetClass(createInfo->Class);
- SetGender(createInfo->Sex);
+ SetGender(Gender(createInfo->Sex));
SetPowerType(Powers(powertype));
InitDisplayIds();
UpdatePositionData();
@@ -500,7 +500,7 @@ bool Player::Create(ObjectGuid::LowType guidlow, WorldPackets::Character::Charac
SetCustomizations(Trinity::Containers::MakeIteratorPair(createInfo->Customizations.begin(), createInfo->Customizations.end()));
SetRestState(REST_TYPE_XP, (GetSession()->IsARecruiter() || GetSession()->GetRecruiterId() != 0) ? REST_STATE_RAF_LINKED : REST_STATE_NOT_RAF_LINKED);
SetRestState(REST_TYPE_HONOR, REST_STATE_NOT_RAF_LINKED);
- SetNativeSex(createInfo->Sex);
+ SetNativeGender(Gender(createInfo->Sex));
SetInventorySlotCount(INVENTORY_DEFAULT_SIZE);
// set starting level
@@ -4492,7 +4492,7 @@ Corpse* Player::CreateCorpse()
flags |= CORPSE_FLAG_FFA_PVP;
corpse->SetRace(GetRace());
- corpse->SetSex(GetNativeSex());
+ corpse->SetSex(GetNativeGender());
corpse->SetClass(GetClass());
corpse->SetCustomizations(Trinity::Containers::MakeIteratorPair(m_playerData->Customizations.begin(), m_playerData->Customizations.end()));
corpse->SetFlags(flags);
@@ -18021,7 +18021,7 @@ bool Player::LoadFromDB(ObjectGuid guid, CharacterDatabaseQueryHolder* holder)
SetCustomizations(Trinity::Containers::MakeIteratorPair(customizations.begin(), customizations.end()), false);
SetInventorySlotCount(fields.inventorySlots);
SetBankBagSlotCount(fields.bankSlots);
- SetNativeSex(fields.gender);
+ SetNativeGender(fields.gender);
SetUpdateFieldValue(m_values.ModifyValue(&Player::m_playerData).ModifyValue(&UF::PlayerData::Inebriation), fields.drunk);
SetPlayerFlags(fields.playerFlags);
SetPlayerFlagsEx(fields.playerFlagsEx);
@@ -20437,7 +20437,7 @@ void Player::SaveToDB(LoginDatabaseTransaction loginTransaction, CharacterDataba
stmt->setString(index++, GetName());
stmt->setUInt8(index++, GetRace());
stmt->setUInt8(index++, GetClass());
- stmt->setUInt8(index++, GetNativeSex()); // save gender from PLAYER_BYTES_3, UNIT_BYTES_0 changes with every transform effect
+ stmt->setUInt8(index++, GetNativeGender()); // save gender from PLAYER_BYTES_3, UNIT_BYTES_0 changes with every transform effect
stmt->setUInt8(index++, GetLevel());
stmt->setUInt32(index++, m_activePlayerData->XP);
stmt->setUInt64(index++, GetMoney());
@@ -20565,7 +20565,7 @@ void Player::SaveToDB(LoginDatabaseTransaction loginTransaction, CharacterDataba
stmt->setString(index++, GetName());
stmt->setUInt8(index++, GetRace());
stmt->setUInt8(index++, GetClass());
- stmt->setUInt8(index++, GetNativeSex()); // save gender from PLAYER_BYTES_3, UNIT_BYTES_0 changes with every transform effect
+ stmt->setUInt8(index++, GetNativeGender()); // save gender from PLAYER_BYTES_3, UNIT_BYTES_0 changes with every transform effect
stmt->setUInt8(index++, GetLevel());
stmt->setUInt32(index++, m_activePlayerData->XP);
stmt->setUInt64(index++, GetMoney());
@@ -23042,7 +23042,7 @@ void Player::InitDataForForm(bool reapplyMods)
void Player::InitDisplayIds()
{
- ChrModelEntry const* model = sDB2Manager.GetChrModel(GetRace(), GetNativeSex());
+ ChrModelEntry const* model = sDB2Manager.GetChrModel(GetRace(), GetNativeGender());
if (!model)
{
TC_LOG_ERROR("entities.player", "Player::InitDisplayIds: Player '%s' (%s) has incorrect race/gender pair. Can't init display ids.", GetName().c_str(), GetGUID().ToString().c_str());
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index 2f2925dffe9..e87777a042a 100644
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -1196,6 +1196,9 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
uint32 GetTotalPlayedTime() const { return m_Played_time[PLAYED_TIME_TOTAL]; }
uint32 GetLevelPlayedTime() const { return m_Played_time[PLAYED_TIME_LEVEL]; }
+ Gender GetNativeGender() const override { return Gender(*m_playerData->NativeSex); }
+ void SetNativeGender(Gender gender) override { SetUpdateFieldValue(m_values.ModifyValue(&Player::m_playerData).ModifyValue(&UF::PlayerData::NativeSex), gender); }
+
void setDeathState(DeathState s) override; // overwrite Unit::setDeathState
Pet* GetPet() const;
@@ -2650,8 +2653,6 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
newChoice.ChrCustomizationChoiceID = customization.ChrCustomizationChoiceID;
}
}
- Gender GetNativeSex() const { return Gender(*m_playerData->NativeSex); }
- void SetNativeSex(uint8 sex) { SetUpdateFieldValue(m_values.ModifyValue(&Player::m_playerData).ModifyValue(&UF::PlayerData::NativeSex), sex); }
void SetPvpTitle(uint8 pvpTitle) { SetUpdateFieldValue(m_values.ModifyValue(&Player::m_playerData).ModifyValue(&UF::PlayerData::PvpTitle), pvpTitle); }
void SetArenaFaction(uint8 arenaFaction) { SetUpdateFieldValue(m_values.ModifyValue(&Player::m_playerData).ModifyValue(&UF::PlayerData::ArenaFaction), arenaFaction); }
void ApplyModFakeInebriation(int32 mod, bool apply) { ApplyModUpdateFieldValue(m_values.ModifyValue(&Player::m_playerData).ModifyValue(&UF::PlayerData::FakeInebriation), mod, apply); }
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index cd09b420779..78f0fad657c 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -9848,7 +9848,7 @@ void Unit::SetDisplayId(uint32 modelId, float displayScale /*= 1.f*/)
// Set Gender by modelId
if (CreatureModelInfo const* minfo = sObjectMgr->GetCreatureModelInfo(modelId))
- SetGender(minfo->gender);
+ SetGender(Gender(minfo->gender));
}
void Unit::RestoreDisplayId(bool ignorePositiveAurasPreventingMounting /*= false*/)
@@ -11499,7 +11499,7 @@ uint32 Unit::GetModelForForm(ShapeshiftForm form, uint32 spellId) const
if (ShapeshiftForm(artifactAppearance->OverrideShapeshiftFormID) == form)
return artifactAppearance->OverrideShapeshiftDisplayID;
- if (ShapeshiftFormModelData const* formModelData = sDB2Manager.GetShapeshiftFormModelData(GetRace(), thisPlayer->GetNativeSex(), form))
+ if (ShapeshiftFormModelData const* formModelData = sDB2Manager.GetShapeshiftFormModelData(GetRace(), thisPlayer->GetNativeGender(), form))
{
bool useRandom = false;
switch (form)
diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h
index 0c7fc42742b..91d9884547e 100644
--- a/src/server/game/Entities/Unit/Unit.h
+++ b/src/server/game/Entities/Unit/Unit.h
@@ -860,8 +860,10 @@ class TC_GAME_API Unit : public WorldObject
uint8 GetClass() const { return m_unitData->ClassId; }
void SetClass(uint8 classId) { SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::ClassId), classId); }
uint32 GetClassMask() const { return 1 << (GetClass()-1); }
- uint8 GetGender() const { return m_unitData->Sex; }
- void SetGender(uint8 sex) { SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::Sex), sex); }
+ Gender GetGender() const { return Gender(*m_unitData->Sex); }
+ void SetGender(Gender gender) { SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::Sex), gender); }
+ virtual Gender GetNativeGender() const { return GetGender(); }
+ virtual void SetNativeGender(Gender gender) { SetGender(gender); }
float GetStat(Stats stat) const { return float(m_unitData->Stats[stat]); }
void SetStat(Stats stat, int32 val) { SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::Stats, stat), val); }