Core/PacketIO: Updated to 11.0.0
Port From (https://github.com/TrinityCore/TrinityCore/commit/e59eef5432c7b70679d33f4911c88d0f7d75fd39)
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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); }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user