Core/PacketIO: Updated to 11.0.0

Port From (https://github.com/TrinityCore/TrinityCore/commit/e59eef5432c7b70679d33f4911c88d0f7d75fd39)
This commit is contained in:
Hondacrx
2024-09-02 18:44:55 -04:00
parent bd0d40fa13
commit f38ad4607e
74 changed files with 4980 additions and 3595 deletions
+4 -4
View File
@@ -3779,8 +3779,8 @@ namespace Game.Entities
stmt.AddValue(index++, GetLootSpecId());
ss.Clear();
for (int i = 0; i < m_activePlayerData.DataFlags[(int)PlayerDataFlag.ExploredZonesIndex].Size(); ++i)
ss.Append($"{(uint)(m_activePlayerData.DataFlags[(int)PlayerDataFlag.ExploredZonesIndex][i] & 0xFFFFFFFF)} {(uint)((m_activePlayerData.DataFlags[(int)PlayerDataFlag.ExploredZonesIndex][i] >> 32) & 0xFFFFFFFF)} ");
for (int i = 0; i < m_activePlayerData.BitVectors.GetValue().Values[(int)PlayerDataFlag.ExploredZonesIndex].Size(); ++i)
ss.Append($"{(uint)(m_activePlayerData.BitVectors.GetValue().Values[(int)PlayerDataFlag.ExploredZonesIndex][i] & 0xFFFFFFFF)} {(uint)((m_activePlayerData.BitVectors.GetValue().Values[(int)PlayerDataFlag.ExploredZonesIndex][i] >> 32) & 0xFFFFFFFF)} ");
stmt.AddValue(index++, ss.ToString());
@@ -3931,8 +3931,8 @@ namespace Game.Entities
stmt.AddValue(index++, GetLootSpecId());
ss.Clear();
for (int i = 0; i < m_activePlayerData.DataFlags[(int)PlayerDataFlag.ExploredZonesIndex].Size(); ++i)
ss.Append($"{(uint)(m_activePlayerData.DataFlags[(int)PlayerDataFlag.ExploredZonesIndex][i] & 0xFFFFFFFF)} {(uint)((m_activePlayerData.DataFlags[(int)PlayerDataFlag.ExploredZonesIndex][i] >> 32) & 0xFFFFFFFF)} ");
for (int i = 0; i < m_activePlayerData.BitVectors.GetValue().Values[(int)PlayerDataFlag.ExploredZonesIndex].Size(); ++i)
ss.Append($"{(uint)(m_activePlayerData.BitVectors.GetValue().Values[(int)PlayerDataFlag.ExploredZonesIndex][i] & 0xFFFFFFFF)} {(uint)((m_activePlayerData.BitVectors.GetValue().Values[(int)PlayerDataFlag.ExploredZonesIndex][i] >> 32) & 0xFFFFFFFF)} ");
stmt.AddValue(index++, ss.ToString());
@@ -85,6 +85,7 @@ namespace Game.Entities
float m_lastFallZ;
TeleportLocation teleportDest;
TeleportToOptions m_teleport_options;
int m_newWorldCounter;
bool mSemaphoreTeleport_Near;
bool mSemaphoreTeleport_Far;
PlayerDelayedOperations m_DelayedOperations;
+6 -1
View File
@@ -2447,9 +2447,14 @@ namespace Game.Entities
packet.QuestLogItemID = item.GetTemplate().QuestLogItemId;
packet.Quantity = quantity;
packet.QuantityInInventory = GetItemCount(item.GetEntry());
QuestObjective questObjective = GetQuestObjectiveForItem(item.GetEntry(), false);
if (questObjective != null)
packet.QuantityInQuestLog = GetQuestObjectiveData(questObjective);
packet.BattlePetSpeciesID = (int)item.GetModifier(ItemModifier.BattlePetSpeciesId);
packet.BattlePetBreedID = (int)item.GetModifier(ItemModifier.BattlePetBreedData) & 0xFFFFFF;
packet.BattlePetBreedQuality = (item.GetModifier(ItemModifier.BattlePetBreedData) >> 24) & 0xFF;
packet.BattlePetBreedQuality = (byte)((item.GetModifier(ItemModifier.BattlePetBreedData) >> 24) & 0xFF);
packet.BattlePetLevel = (int)item.GetModifier(ItemModifier.BattlePetLevel);
packet.ItemGUID = item.GetGUID();
+27 -11
View File
@@ -2095,20 +2095,28 @@ namespace Game.Entities
case QuestStatus.Complete:
if (quest.IsImportant())
result |= quest.HasFlag(QuestFlags.HideRewardPoi) ? QuestGiverStatus.ImportantQuestRewardCompleteNoPOI : QuestGiverStatus.ImportantQuestRewardCompletePOI;
else if (quest.IsMeta())
result |= quest.HasFlag(QuestFlags.HideRewardPoi) ? QuestGiverStatus.MetaQuestRewardCompleteNoPOI : QuestGiverStatus.MetaQuestRewardCompletePOI;
else if (quest.GetQuestTag() == QuestTagType.CovenantCalling)
result |= quest.HasFlag(QuestFlags.HideRewardPoi) ? QuestGiverStatus.CovenantCallingRewardCompleteNoPOI : QuestGiverStatus.CovenantCallingRewardCompletePOI;
else if (quest.HasFlagEx(QuestFlagsEx.Legendary))
result |= quest.HasFlag(QuestFlags.HideRewardPoi) ? QuestGiverStatus.LegendaryRewardCompleteNoPOI : QuestGiverStatus.LegendaryRewardCompletePOI;
else if (quest.IsDailyOrWeekly())
result |= quest.HasFlag(QuestFlags.HideRewardPoi) ? QuestGiverStatus.RepeatableRewardCompleteNoPOI : QuestGiverStatus.RepeatableRewardCompletePOI;
else
result |= quest.HasFlag(QuestFlags.HideRewardPoi) ? QuestGiverStatus.RewardCompleteNoPOI : QuestGiverStatus.RewardCompletePOI;
break;
case QuestStatus.Incomplete:
if (quest.IsImportant())
result |= QuestGiverStatus.ImportantReward;
else if (quest.IsMeta())
result |= QuestGiverStatus.MetaReward;
else if (quest.GetQuestTag() == QuestTagType.CovenantCalling)
result |= QuestGiverStatus.CovenantCallingReward;
else if (quest.HasFlagEx(QuestFlagsEx.Legendary))
result |= QuestGiverStatus.LegendaryReward;
else if (quest.IsDailyOrWeekly())
result |= QuestGiverStatus.RepeatableReward;
else
result |= QuestGiverStatus.Reward;
break;
@@ -2116,12 +2124,16 @@ namespace Game.Entities
break;
}
if (quest.IsTurnIn() && CanTakeQuest(quest, false) && quest.IsRepeatable() && !quest.IsDailyOrWeekly() && !quest.IsMonthly())
if (quest.IsTurnIn() && CanTakeQuest(quest, false))
{
if (GetLevel() > (GetQuestLevel(quest) + WorldConfig.GetIntValue(WorldCfg.QuestLowLevelHideDiff)))
result |= QuestGiverStatus.RepeatableTurnin;
else
result |= QuestGiverStatus.TrivialRepeatableTurnin;
if (quest.IsRepeatable())
{
if (GetLevel() > (GetQuestLevel(quest) + WorldConfig.GetIntValue(WorldCfg.QuestLowLevelHideDiff)))
result |= QuestGiverStatus.RepeatableTurnin;
else
result |= QuestGiverStatus.TrivialRepeatableTurnin;
}
result |= quest.HasFlag(QuestFlags.HideRewardPoi) ? QuestGiverStatus.RewardCompleteNoPOI : QuestGiverStatus.RewardCompletePOI;
}
}
@@ -2143,12 +2155,14 @@ namespace Game.Entities
bool isTrivial = GetLevel() > (GetQuestLevel(quest) + WorldConfig.GetIntValue(WorldCfg.QuestLowLevelHideDiff));
if (quest.IsImportant())
result |= isTrivial ? QuestGiverStatus.TrivialImportantQuest : QuestGiverStatus.ImportantQuest;
else if (quest.IsMeta())
result |= isTrivial ? QuestGiverStatus.TrivialMetaQuest : QuestGiverStatus.MetaQuest;
else if (quest.GetQuestTag() == QuestTagType.CovenantCalling)
result |= QuestGiverStatus.CovenantCallingQuest;
else if (quest.HasFlagEx(QuestFlagsEx.Legendary))
result |= isTrivial ? QuestGiverStatus.TrivialLegendaryQuest : QuestGiverStatus.LegendaryQuest;
else if (quest.IsDaily())
result |= isTrivial ? QuestGiverStatus.TrivialDailyQuest : QuestGiverStatus.DailyQuest;
else if (quest.IsDailyOrWeekly())
result |= isTrivial ? QuestGiverStatus.TrivialRepeatableQuest : QuestGiverStatus.RepeatableQuest;
else
result |= isTrivial ? QuestGiverStatus.Trivial : QuestGiverStatus.Quest;
}
@@ -3373,9 +3387,11 @@ namespace Game.Entities
{
ObjectFieldData objMask = new();
UnitData unitMask = new();
for (int i = 0; i < creature.m_unitData.NpcFlags.GetSize(); ++i)
if (creature.m_unitData.NpcFlags[i] != 0)
unitMask.MarkChanged(creature.m_unitData.NpcFlags, i);
if (creature.m_unitData.NpcFlags != 0)
unitMask.MarkChanged(m_unitData.NpcFlags);
if (creature.m_unitData.NpcFlags2 != 0)
unitMask.MarkChanged(m_unitData.NpcFlags2);
if (objMask.GetUpdateMask().IsAnySet() || unitMask.GetUpdateMask().IsAnySet())
creature.BuildValuesUpdateForPlayerWithMask(udata, objMask.GetUpdateMask(), unitMask.GetUpdateMask(), this);
@@ -3396,7 +3412,7 @@ namespace Game.Entities
{
ObjectFieldData objMask = new();
UnitData unitMask = new();
unitMask.MarkChanged(m_unitData.NpcFlags, 0); // NpcFlags[0] has UNIT_NPC_FLAG_SPELLCLICK
unitMask.MarkChanged(m_unitData.NpcFlags); // NpcFlags has UNIT_NPC_FLAG_SPELLCLICK
creature.BuildValuesUpdateForPlayerWithMask(udata, objMask.GetUpdateMask(), unitMask.GetUpdateMask(), this);
break;
}
+14 -7
View File
@@ -2200,6 +2200,8 @@ namespace Game.Entities
if (!GetSession().PlayerLogout())
{
++m_newWorldCounter;
SuspendToken suspendToken = new();
suspendToken.SequenceIndex = m_movementCounter; // not incrementing
suspendToken.Reason = options.HasAnyFlag(TeleportToOptions.Seamless) ? 2 : 1u;
@@ -2946,7 +2948,8 @@ namespace Game.Entities
PlayerInteractionType.Renown, PlayerInteractionType.BlackMarketAuctioneer, PlayerInteractionType.PerksProgramVendor,
PlayerInteractionType.ProfessionsCraftingOrder, PlayerInteractionType.Professions, PlayerInteractionType.ProfessionsCustomerOrder,
PlayerInteractionType.TraitSystem, PlayerInteractionType.BarbersChoice, PlayerInteractionType.MajorFactionRenown,
PlayerInteractionType.PersonalTabardVendor
PlayerInteractionType.PersonalTabardVendor, PlayerInteractionType.ForgeMaster, PlayerInteractionType.CharacterBanker,
PlayerInteractionType.AccountBanker
};
PlayerInteractionType interactionType = GossipOptionNpcToInteractionType[(int)gossipOptionNpc];
@@ -6469,8 +6472,8 @@ namespace Game.Entities
int offset = (areaEntry.AreaBit / PlayerConst.ExploredZonesBits);
ulong val = 1ul << (areaEntry.AreaBit % PlayerConst.ExploredZonesBits);
if (offset >= m_activePlayerData.DataFlags[(int)PlayerDataFlag.ExploredZonesIndex].Size()
|| (m_activePlayerData.DataFlags[(int)PlayerDataFlag.ExploredZonesIndex][offset] & val) == 0)
if (offset >= m_activePlayerData.BitVectors.GetValue().Values[(int)PlayerDataFlag.ExploredZonesIndex].Size()
|| (m_activePlayerData.BitVectors.GetValue().Values[(int)PlayerDataFlag.ExploredZonesIndex][offset] & val) == 0)
{
AddExploredZones(offset, val);
@@ -6521,12 +6524,14 @@ namespace Game.Entities
public void AddExploredZones(int pos, ulong mask)
{
SetUpdateFieldFlagValue(m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.DataFlags, (int)PlayerDataFlag.ExploredZonesIndex, pos), mask);
BitVectors bitVectors = m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.BitVectors);
SetUpdateFieldFlagValue(bitVectors.ModifyValue(bitVectors.Values, (int)PlayerDataFlag.ExploredZonesIndex, pos), mask);
}
public void RemoveExploredZones(int pos, ulong mask)
{
RemoveUpdateFieldFlagValue(m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.DataFlags, (int)PlayerDataFlag.ExploredZonesIndex, pos), mask);
BitVectors bitVectors = m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.BitVectors);
RemoveUpdateFieldFlagValue(bitVectors.ModifyValue(bitVectors.Values, (int)PlayerDataFlag.ExploredZonesIndex, pos), mask);
}
public bool HasExploredZone(uint areaId)
@@ -6539,11 +6544,11 @@ namespace Game.Entities
return false;
int playerIndexOffset = area.AreaBit / PlayerConst.ExploredZonesBits;
if (playerIndexOffset >= m_activePlayerData.DataFlags[(int)PlayerDataFlag.ExploredZonesIndex].Size())
if (playerIndexOffset >= m_activePlayerData.BitVectors.GetValue().Values[(int)PlayerDataFlag.ExploredZonesIndex].Size())
return false;
ulong mask = 1ul << (area.AreaBit % PlayerConst.ExploredZonesBits);
return (m_activePlayerData.DataFlags[(int)PlayerDataFlag.ExploredZonesIndex][playerIndexOffset] & mask) != 0;
return (m_activePlayerData.BitVectors.GetValue().Values[(int)PlayerDataFlag.ExploredZonesIndex][playerIndexOffset] & mask) != 0;
}
void SendExplorationExperience(uint Area, uint Experience)
@@ -7354,6 +7359,8 @@ namespace Game.Entities
public void SetSemaphoreTeleportNear(bool semphsetting) { mSemaphoreTeleport_Near = semphsetting; }
public void SetSemaphoreTeleportFar(bool semphsetting) { mSemaphoreTeleport_Far = semphsetting; }
public int GetNewWorldCounter() { return m_newWorldCounter; }
public bool IsReagentBankUnlocked() { return HasPlayerFlagEx(PlayerFlagsEx.ReagentBankUnlocked); }
public void UnlockReagentBank() { SetPlayerFlagEx(PlayerFlagsEx.ReagentBankUnlocked); }