diff options
author | Shauren <shauren.trinity@gmail.com> | 2022-07-31 21:39:48 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2022-07-31 21:39:48 +0200 |
commit | 20f38369f30309e2c0cd53eca9cfe9c49376ed8c (patch) | |
tree | 35fd316599e09226241ecd946469ccd6e21c0fa7 /src/server/game/Groups/Group.cpp | |
parent | 71e885cd4b0098f38ca360a35361a6e867556542 (diff) |
Core/PacketIO: Updated packet structures to 9.2.7
Diffstat (limited to 'src/server/game/Groups/Group.cpp')
-rw-r--r-- | src/server/game/Groups/Group.cpp | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/server/game/Groups/Group.cpp b/src/server/game/Groups/Group.cpp index 91acaad9a0e..8bcfa842993 100644 --- a/src/server/game/Groups/Group.cpp +++ b/src/server/game/Groups/Group.cpp @@ -61,7 +61,7 @@ Loot* Roll::getLoot() return getTarget(); } -Group::Group() : m_leaderGuid(), m_leaderName(""), m_groupFlags(GROUP_FLAG_NONE), m_groupCategory(GROUP_CATEGORY_HOME), +Group::Group() : m_leaderGuid(), m_leaderFactionGroup(0), m_leaderName(""), m_groupFlags(GROUP_FLAG_NONE), m_groupCategory(GROUP_CATEGORY_HOME), m_dungeonDifficulty(DIFFICULTY_NORMAL), m_raidDifficulty(DIFFICULTY_NORMAL_RAID), m_legacyRaidDifficulty(DIFFICULTY_10_N), m_bgGroup(nullptr), m_bfGroup(nullptr), m_lootMethod(FREE_FOR_ALL), m_lootThreshold(ITEM_QUALITY_UNCOMMON), m_looterGuid(), m_masterLooterGuid(), m_subGroupsCounts(nullptr), m_guid(), m_maxEnchantingLevel(0), m_dbStoreId(0), m_isLeaderOffline(false), @@ -161,6 +161,7 @@ bool Group::Create(Player* leader) m_guid = ObjectGuid::Create<HighGuid::Party>(sGroupMgr->GenerateGroupId()); m_leaderGuid = leaderGuid; + m_leaderFactionGroup = Player::GetFactionGroupForRace(leader->GetRace()); m_leaderName = leader->GetName(); leader->SetPlayerFlag(PLAYER_FLAGS_GROUP_LEADER); @@ -238,9 +239,12 @@ void Group::LoadGroupFromDB(Field* fields) m_leaderGuid = ObjectGuid::Create<HighGuid::Player>(fields[0].GetUInt64()); // group leader not exist - if (!sCharacterCache->GetCharacterNameByGuid(m_leaderGuid, m_leaderName)) + CharacterCacheEntry const* leader = sCharacterCache->GetCharacterCacheByGuid(m_leaderGuid); + if (!leader) return; + m_leaderFactionGroup = Player::GetFactionGroupForRace(leader->Race); + m_leaderName = leader->Name; m_lootMethod = LootMethod(fields[1].GetUInt8()); m_looterGuid = ObjectGuid::Create<HighGuid::Player>(fields[2].GetUInt64()); m_lootThreshold = ItemQualities(fields[3].GetUInt8()); @@ -392,6 +396,7 @@ bool Group::AddLeaderInvite(Player* player) return false; m_leaderGuid = player->GetGUID(); + m_leaderFactionGroup = Player::GetFactionGroupForRace(player->GetRace()); m_leaderName = player->GetName(); return true; } @@ -791,6 +796,7 @@ void Group::ChangeLeader(ObjectGuid newLeaderGuid, int8 partyIndex) newLeader->SetPlayerFlag(PLAYER_FLAGS_GROUP_LEADER); m_leaderGuid = newLeader->GetGUID(); + m_leaderFactionGroup = Player::GetFactionGroupForRace(newLeader->GetRace()); m_leaderName = newLeader->GetName(); ToggleGroupMemberFlag(slot, MEMBER_FLAG_ASSISTANT, false); @@ -1539,6 +1545,7 @@ void Group::SendUpdateToPlayer(ObjectGuid playerGUID, MemberSlot* slot) partyUpdate.PartyGUID = m_guid; partyUpdate.LeaderGUID = m_leaderGuid; + partyUpdate.LeaderFactionGroup = m_leaderFactionGroup; partyUpdate.SequenceNum = player->NextGroupUpdateSequenceNumber(m_groupCategory); @@ -1557,9 +1564,7 @@ void Group::SendUpdateToPlayer(ObjectGuid playerGUID, MemberSlot* slot) playerInfos.Name = citr->name; playerInfos.Class = citr->_class; - ChrRacesEntry const* race = sChrRacesStore.AssertEntry(citr->race); - FactionTemplateEntry const* raceFaction = sFactionTemplateStore.AssertEntry(race->FactionID); - playerInfos.FactionGroup = raceFaction->FactionGroup; + playerInfos.FactionGroup = Player::GetFactionGroupForRace(citr->race); playerInfos.Status = MEMBER_STATUS_OFFLINE; if (member && member->GetSession() && !member->GetSession()->PlayerLogout()) |