Skip to content

Commit

Permalink
Updated some packets to 11.0.0
Browse files Browse the repository at this point in the history
  • Loading branch information
mdX7 committed Aug 4, 2024
1 parent e9e8ac0 commit 071971a
Show file tree
Hide file tree
Showing 17 changed files with 412 additions and 19 deletions.
76 changes: 76 additions & 0 deletions WowPacketParser/Enums/PlayerInteractionType.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@

namespace WowPacketParser.Enums
{
public enum PlayerInteractionType : uint
{
None = 0,
TradePartner = 1,
Item = 2,
Gossip = 3,
QuestGiver = 4,
Merchant = 5,
TaxiNode = 6,
Trainer = 7,
Banker = 8,
AlliedRaceDetailsGiver = 9,
GuildBanker = 10,
Registrar = 11,
Vendor = 12,
PetitionVendor = 13,
GuildTabardVendor = 14,
TalentMaster = 15,
SpecializationMaster = 16,
MailInfo = 17,
SpiritHealer = 18,
AreaSpiritHealer = 19,
Binder = 20,
Auctioneer = 21,
StableMaster = 22,
BattleMaster = 23,
Transmogrifier = 24,
LFGDungeon = 25,
VoidStorageBanker = 26,
BlackMarketAuctioneer = 27,
AdventureMap = 28,
WorldMap = 29,
GarrArchitect = 30,
GarrTradeskill = 31,
GarrMission = 32,
ShipmentCrafter = 33,
GarrRecruitment = 34,
GarrTalent = 35,
Trophy = 36,
PlayerChoice = 37,
ArtifactForge = 38,
ObliterumForge = 39,
ScrappingMachine = 40,
ContributionCollector = 41,
AzeriteRespec = 42,
IslandQueue = 43,
ItemInteraction = 44,
ChromieTime = 45,
CovenantPreview = 46,
AnimaDiversion = 47,
LegendaryCrafting = 48,
WeeklyRewards = 49,
Soulbind = 50,
CovenantSanctum = 51,
NewPlayerGuide = 52,
ItemUpgrade = 53,
AdventureJournal = 54,
Renown = 55,
AzeriteForge = 56,
PerksProgramVendor = 57,
ProfessionsCraftingOrder = 58,
Professions = 59,
ProfessionsCustomerOrder = 60,
TraitSystem = 61,
BarbersChoice = 62,
JailersTowerBuffs = 63,
MajorFactionRenown = 64,
PersonalTabardVendor = 65,
ForgeMaster = 66,
CharacterBanker = 67,
AccountBanker = 68
}
}
3 changes: 2 additions & 1 deletion WowPacketParser/Enums/TargetedDatabase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ public enum TargetedDatabaseFlag : uint
SinceWarlordsOfDraenor = WarlordsOfDraenor | SinceLegion,
SinceCataclysm = Cataclysm | SinceWarlordsOfDraenor,

SinceWarlordsOfDraenorTillShadowLands = WarlordsOfDraenor | Legion | BattleForAzeroth | Shadowlands
SinceWarlordsOfDraenorTillShadowLands = WarlordsOfDraenor | Legion | BattleForAzeroth | Shadowlands,
SinceBattleForAzerothTillDragonflight = BattleForAzeroth | Shadowlands | Dragonflight
}
}
17 changes: 17 additions & 0 deletions WowPacketParser/SQL/Builders/WDBTemplates.cs
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,23 @@ public static string QuestRewardDisplaySpell()
return SQLUtil.Compare(Storage.QuestRewardDisplaySpells, templatesDb, StoreNameType.None);
}

[BuilderMethod(true)]
public static string QuestTreasurePickers()
{
if (!Settings.SQLOutputFlag.HasAnyFlagBit(SQLOutput.quest_template))
return string.Empty;

if (Settings.TargetedDatabase < TargetedDatabase.TheWarWithin)
return string.Empty;

if (Storage.QuestTreasurePickersStorage.IsEmpty())
return string.Empty;

var templateDb = SQLDatabase.Get(Storage.QuestTreasurePickersStorage);

return SQLUtil.Compare(Storage.QuestTreasurePickersStorage, templateDb, StoreNameType.Quest);
}

[BuilderMethod(true, Units = true)]
public static string CreatureTemplate(Dictionary<WowGuid, Unit> units)
{
Expand Down
2 changes: 1 addition & 1 deletion WowPacketParser/Store/Objects/QuestTemplate.cs
Original file line number Diff line number Diff line change
Expand Up @@ -261,7 +261,7 @@ public sealed record QuestTemplate : IDataModel
public ulong? AllowableRacesWod;

[DBFieldName("QuestRewardID", TargetedDatabaseFlag.Legion)]
[DBFieldName("TreasurePickerID", TargetedDatabaseFlag.SinceBattleForAzeroth | TargetedDatabaseFlag.AnyClassic)]
[DBFieldName("TreasurePickerID", TargetedDatabaseFlag.SinceBattleForAzerothTillDragonflight | TargetedDatabaseFlag.AnyClassic)]
public int? QuestRewardID;

[DBFieldName("Expansion", TargetedDatabaseFlag.SinceLegion | TargetedDatabaseFlag.AnyClassic)]
Expand Down
19 changes: 19 additions & 0 deletions WowPacketParser/Store/Objects/QuestTreasurePickers.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
using WowPacketParser.Enums;
using WowPacketParser.Misc;
using WowPacketParser.SQL;

namespace WowPacketParser.Store.Objects
{
[DBTableName("quest_treasure_pickers")]
public sealed record QuestTreasurePickers : IDataModel
{
[DBFieldName("QuestID", true)]
public uint? QuestID;

[DBFieldName("TreasurePickerID", true)]
public int? TreasurePickerID;

[DBFieldName("OrderIndex", true)]
public int? OrderIndex;
}
}
2 changes: 2 additions & 0 deletions WowPacketParser/Store/Storage.cs
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ public static class Storage
public static readonly DataBag<QuestObjective> QuestObjectives = new DataBag<QuestObjective>(new List<SQLOutput> { SQLOutput.quest_template });
public static readonly DataBag<QuestVisualEffect> QuestVisualEffects = new DataBag<QuestVisualEffect>(new List<SQLOutput> { SQLOutput.quest_template });
public static readonly DataBag<QuestRewardDisplaySpell> QuestRewardDisplaySpells = new DataBag<QuestRewardDisplaySpell>(new List<SQLOutput> { SQLOutput.quest_template });
public static readonly DataBag<QuestTreasurePickers> QuestTreasurePickersStorage = new DataBag<QuestTreasurePickers>(new List<SQLOutput> { SQLOutput.quest_template });
public static readonly StoreDictionary<uint, CreatureTemplate> CreatureTemplates = new StoreDictionary<uint, CreatureTemplate>(new List<SQLOutput> { SQLOutput.creature_template });
public static readonly DataBag<CreatureTemplateClassic> CreatureTemplatesClassic = new DataBag<CreatureTemplateClassic>(new List<SQLOutput> { SQLOutput.creature_template });
public static readonly DataBag<CreatureTemplateNonWDB> CreatureTemplatesNonWDB = new DataBag<CreatureTemplateNonWDB>(new List<SQLOutput> { SQLOutput.creature_template });
Expand Down Expand Up @@ -1599,6 +1600,7 @@ public static void ClearContainers()
QuestObjectives.Clear();
QuestVisualEffects.Clear();
QuestRewardDisplaySpells.Clear();
QuestTreasurePickersStorage.Clear();
CreatureTemplates.Clear();
CreatureTemplatesClassic.Clear();
CreatureTemplatesNonWDB.Clear();
Expand Down
59 changes: 57 additions & 2 deletions WowPacketParserModule.V10_0_0_46181/Parsers/QueryHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,12 @@ public static void HandleQuestQueryResponse(Packet packet)

var objectiveCount = packet.ReadUInt32("ObjectiveCount");
quest.AllowableRacesWod = packet.ReadUInt64("AllowableRaces");
quest.QuestRewardID = packet.ReadInt32("TreasurePickerID");
var treasurePickerCount = 0u;
if (ClientVersion.RemovedInVersion(ClientType.TheWarWithin))
quest.QuestRewardID = packet.ReadInt32("TreasurePickerID");
else
treasurePickerCount = packet.ReadUInt32();

quest.Expansion = packet.ReadInt32("Expansion");
quest.ManagedWorldStateID = packet.ReadInt32("ManagedWorldStateID");
quest.QuestSessionBonus = packet.ReadInt32("QuestSessionBonus");
Expand All @@ -160,6 +165,17 @@ public static void HandleQuestQueryResponse(Packet packet)
for (uint i = 0; i < rewardDisplaySpellCount; ++i)
ReadQuestCompleteDisplaySpell(packet, (uint)id.Key, i, i, "RewardDisplaySpell");

for (uint i = 0; i < treasurePickerCount; ++i)
{
var treasurePickerID = packet.ReadInt32("TreasurePickerID");
QuestTreasurePickers pickers = new()
{
QuestID = quest.ID,
TreasurePickerID = treasurePickerID,
OrderIndex = (int)i
};
Storage.QuestTreasurePickersStorage.Add(pickers);
}
packet.ResetBitReader();

uint logTitleLen = packet.ReadBits("logTitleLen", 9);
Expand All @@ -172,6 +188,8 @@ public static void HandleQuestQueryResponse(Packet packet)
uint questTurnTargetNameLen = packet.ReadBits("questTurnTargetNameLen", 8);
uint questCompletionLogLen = packet.ReadBits("questCompletionLogLen", 11);
packet.ReadBit("ReadyForTranslation");
if (ClientVersion.AddedInVersion(ClientVersionBuild.V11_0_0_55666))
packet.ReadBit("ResetByScheduler");

for (uint i = 0; i < objectiveCount; ++i)
{
Expand All @@ -182,7 +200,12 @@ public static void HandleQuestQueryResponse(Packet packet)
ID = (uint)objectiveId.Key,
QuestID = (uint)id.Key
};
questInfoObjective.Type = packet.ReadByteE<QuestRequirementType>("Quest Requirement Type", i);

if (ClientVersion.AddedInVersion(ClientVersionBuild.V11_0_0_55666))
questInfoObjective.Type = packet.ReadUInt32E<QuestRequirementType>("QuestRequirementType", i);
else
questInfoObjective.Type = packet.ReadByteE<QuestRequirementType>("QuestRequirementType", i);

questInfoObjective.StorageIndex = packet.ReadSByte("StorageIndex", i);
questInfoObjective.Order = i;
questInfoObjective.ObjectID = packet.ReadInt32("ObjectID", i);
Expand Down Expand Up @@ -270,5 +293,37 @@ public static void HandleQuestQueryResponse(Packet packet)

Storage.QuestTemplates.Add(quest, packet.TimeSpan);
}

[Parser(Opcode.CMSG_SPAWN_TRACKING_UPDATE)]
public static void HandleSpawnTrackingVignette(Packet packet)
{
var count = packet.ReadUInt32("SpawnTrackingCount");

for (var i = 0; i < count; i++)
{
packet.ReadUInt32("SpawnTrackingID", i);
packet.ReadInt32("ObjectID", i);
packet.ReadInt32("ObjectTypeMask", i);
}
}

[Parser(Opcode.SMSG_QUEST_POI_UPDATE_RESPONSE)]
public static void HandleQuestPOIUpdateResponse(Packet packet)
{
var count = packet.ReadUInt32("SpawnTrackingCount");

for (var i = 0; i < count; i++)
{
var spawnTrackingId = packet.ReadUInt32("SpawnTrackingID", i);
packet.ReadInt32("ObjectID", i);
var phaseId = packet.ReadInt32("PhaseID", i);
var phaseGroup = packet.ReadInt32("PhaseGroupID", i);
var phaseUseFlags = packet.ReadInt32("PhaseUseFlags", i);

packet.ResetBitReader();

packet.ReadBit("Visible", i);
}
}
}
}
17 changes: 17 additions & 0 deletions WowPacketParserModule.V11_0_0_55666/Parsers/BankHandler.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
using System.Text;
using WowPacketParser.Enums;
using WowPacketParser.Misc;
using WowPacketParser.Parsing;

namespace WowPacketParserModule.V11_0_0_55666.Parsers
{
public static class BankHandler
{
[Parser(Opcode.CMSG_BANKER_ACTIVATE)]
public static void HandleBankerActivate(Packet packet)
{
packet.ReadPackedGuid128("Banker");
packet.ReadInt32E<PlayerInteractionType>("InteractionType");
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -154,8 +154,13 @@ public static void HandlePowerUpdate(Packet packet)
var int32 = packet.ReadInt32("Count");
for (var i = 0; i < int32; i++)
{
packet.ReadInt32("Power", i);
if (ClientVersion.RemovedInVersion(ClientType.TheWarWithin))
packet.ReadInt32("Power", i);

packet.ReadByteE<PowerType>("PowerType", i);

if (ClientVersion.AddedInVersion(ClientType.TheWarWithin))
packet.ReadInt32("Power", i);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,10 @@ public static void HandleSpellLogExecute(Packet packet)
{
packet.ReadPackedGuid128("Victim");
packet.ReadInt32("Points");
packet.ReadInt32("PowerType");
if (ClientVersion.RemovedInVersion(ClientType.TheWarWithin))
packet.ReadUInt32E<Powers>("PowerType");
else
packet.ReadByteE<Powers>("PowerType");
packet.ReadSingle("Amplitude");
}

Expand Down
7 changes: 6 additions & 1 deletion WowPacketParserModule.V6_0_2_19033/Parsers/SessionHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -325,8 +325,13 @@ public static void HandleTimeQueryResponse(Packet packet)
[Parser(Opcode.CMSG_CONNECT_TO_FAILED)]
public static void HandleRedirectFailed(Packet packet)
{
packet.ReadUInt32("Serial");
if (ClientVersion.RemovedInVersion(ClientType.TheWarWithin))
packet.ReadUInt32("Serial");

packet.ReadSByte("Con");

if (ClientVersion.AddedInVersion(ClientType.TheWarWithin))
packet.ReadUInt32("Serial");
}

[Parser(Opcode.CMSG_SUSPEND_TOKEN_RESPONSE)]
Expand Down
Loading

0 comments on commit 071971a

Please sign in to comment.