diff options
| author | ForesterDev <11771800+ForesterDev@users.noreply.github.com> | 2019-07-02 12:17:03 +0400 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2021-12-13 00:42:20 +0100 |
| commit | 27886c7f5d6cfc221ea67aab210f96859d725e05 (patch) | |
| tree | 6502c70a3ac0b2d3cc5b80f00001e0db37f9bf2b /src/server/game/Entities | |
| parent | 4e6c59dca78ce563c327ea3106d0ff6786b1e127 (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.cpp | 14 | ||||
| -rw-r--r-- | src/server/game/Entities/Player/Player.h | 5 | ||||
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 4 | ||||
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.h | 6 |
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); } |
