aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities/Player
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/Player
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/Player')
-rw-r--r--src/server/game/Entities/Player/Player.cpp14
-rw-r--r--src/server/game/Entities/Player/Player.h5
2 files changed, 10 insertions, 9 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); }