aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities/Player
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2024-08-16 00:03:22 +0200
committerShauren <shauren.trinity@gmail.com>2024-08-16 00:03:22 +0200
commitdf1ec76d54db3a91759fc93f4d6b6828d4ec0f59 (patch)
tree824cd4bc52735c0e23996d9852b9f608b0ab4cfc /src/server/game/Entities/Player
parent3429871a07c1c1ebe2bd94cb771ef187cb46fd46 (diff)
Core: Updated to 11.0.2
Diffstat (limited to 'src/server/game/Entities/Player')
-rw-r--r--src/server/game/Entities/Player/Player.cpp36
-rw-r--r--src/server/game/Entities/Player/Player.h4
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);