diff options
| author | Shauren <shauren.trinity@gmail.com> | 2024-08-16 00:03:22 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2024-08-16 00:03:22 +0200 |
| commit | df1ec76d54db3a91759fc93f4d6b6828d4ec0f59 (patch) | |
| tree | 824cd4bc52735c0e23996d9852b9f608b0ab4cfc /src/server/game/Entities/Player | |
| parent | 3429871a07c1c1ebe2bd94cb771ef187cb46fd46 (diff) | |
Core: Updated to 11.0.2
Diffstat (limited to 'src/server/game/Entities/Player')
| -rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 36 | ||||
| -rw-r--r-- | src/server/game/Entities/Player/Player.h | 4 |
2 files changed, 33 insertions, 7 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 8bdef90b5cf..38e4b62507b 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -6604,6 +6604,35 @@ int32 Player::CalculateReputationGain(ReputationSource source, uint32 creatureOr return CalculatePct(rep, percent); } +void Player::SetVisibleForcedReaction(uint32 factionId, ReputationRank rank) +{ + auto itr = std::ranges::find(m_playerData->ForcedReactions, int32(factionId), &UF::ZonePlayerForcedReaction::FactionID); + if (itr == m_playerData->ForcedReactions.end()) + itr = std::ranges::find(m_playerData->ForcedReactions, 0, &UF::ZonePlayerForcedReaction::FactionID); + + if (itr == m_playerData->ForcedReactions.end()) + return; // no more free slots + + auto setter = m_values.ModifyValue(&Player::m_playerData) + .ModifyValue(&UF::PlayerData::ForcedReactions, std::ranges::distance(m_playerData->ForcedReactions.begin(), itr)); + + SetUpdateFieldValue(setter.ModifyValue(&UF::ZonePlayerForcedReaction::FactionID), factionId); + SetUpdateFieldValue(setter.ModifyValue(&UF::ZonePlayerForcedReaction::Reaction), rank); +} + +void Player::RemoveVisibleForcedReaction(uint32 factionId) +{ + auto itr = std::ranges::find(m_playerData->ForcedReactions, int32(factionId), &UF::ZonePlayerForcedReaction::FactionID); + if (itr == m_playerData->ForcedReactions.end()) + return; + + auto setter = m_values.ModifyValue(&Player::m_playerData) + .ModifyValue(&UF::PlayerData::ForcedReactions, std::ranges::distance(m_playerData->ForcedReactions.begin(), itr)); + + SetUpdateFieldValue(setter.ModifyValue(&UF::ZonePlayerForcedReaction::FactionID), 0); + SetUpdateFieldValue(setter.ModifyValue(&UF::ZonePlayerForcedReaction::Reaction), 0); +} + // Calculates how many reputation points player gains in victim's enemy factions void Player::RewardReputation(Unit* victim, float rate) { @@ -17315,14 +17344,9 @@ void Player::SendQuestUpdateAddPlayer(Quest const* quest, uint16 newCount) const void Player::SendQuestGiverStatusMultiple() { - SendQuestGiverStatusMultiple(m_clientGUIDs); -} - -void Player::SendQuestGiverStatusMultiple(GuidUnorderedSet const& guids) -{ WorldPackets::Quest::QuestGiverStatusMultiple response; - for (auto itr = guids.begin(); itr != guids.end(); ++itr) + for (auto itr = m_clientGUIDs.begin(); itr != m_clientGUIDs.end(); ++itr) { if (itr->IsAnyTypeCreature()) { diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index f83e54de2bc..43a42c6ab71 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -1747,7 +1747,6 @@ class TC_GAME_API Player final : public Unit, public GridObject<Player> void SendQuestUpdateAddItem(ItemTemplate const* itemTemplate, QuestObjective const& obj, uint16 count) const; void SendQuestUpdateAddPlayer(Quest const* quest, uint16 newCount) const; void SendQuestGiverStatusMultiple(); - void SendQuestGiverStatusMultiple(GuidUnorderedSet const& guids); void SendDisplayToast(uint32 entry, DisplayToastType type, bool isBonusRoll, uint32 quantity, DisplayToastMethod method, uint32 questId = 0, Item* item = nullptr) const; uint32 GetSharedQuestID() const { return m_sharedQuestId; } @@ -2342,6 +2341,9 @@ class TC_GAME_API Player final : public Unit, public GridObject<Player> int32 CalculateReputationGain(ReputationSource source, uint32 creatureOrQuestLevel, int32 rep, int32 faction, bool noQuestBonus = false); + void SetVisibleForcedReaction(uint32 factionId, ReputationRank rank); + void RemoveVisibleForcedReaction(uint32 factionId); + void UpdateSkillsForLevel(); void ModifySkillBonus(uint32 skillid, int32 val, bool talent); |
