Skip to content

Commit ce7a4cd

Browse files
committed
Update playerchoice sql output
1 parent de10f7a commit ce7a4cd

2 files changed

Lines changed: 35 additions & 8 deletions

File tree

WowPacketParser/Store/Objects/PlayerChoice.cs

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public sealed record PlayerChoiceTemplate : IDataModel
1919
[DBFieldName("CloseSoundKitId", TargetedDatabaseFlag.SinceShadowlands | TargetedDatabaseFlag.CataClassic)]
2020
public uint? CloseSoundKitId;
2121

22-
[DBFieldName("Duration", TargetedDatabaseFlag.SinceShadowlands | TargetedDatabaseFlag.CataClassic)]
22+
[DBFieldName("Duration", TargetedDatabaseFlag.SinceShadowlands | TargetedDatabaseFlag.CataClassic, nullable: true)]
2323
public long? Duration;
2424

2525
[DBFieldName("Question", LocaleConstant.enUS)]
@@ -28,12 +28,21 @@ public sealed record PlayerChoiceTemplate : IDataModel
2828
[DBFieldName("PendingChoiceText", TargetedDatabaseFlag.SinceShadowlands | TargetedDatabaseFlag.CataClassic, LocaleConstant.enUS)]
2929
public string PendingChoiceText;
3030

31+
[DBFieldName("InfiniteRange", TargetedDatabaseFlag.SinceTheWarWithin)]
32+
public int InfiniteRange;
33+
3134
[DBFieldName("HideWarboardHeader", TargetedDatabaseFlag.SinceLegion | TargetedDatabaseFlag.CataClassic)]
3235
public int HideWarboardHeader;
3336

3437
[DBFieldName("KeepOpenAfterChoice", TargetedDatabaseFlag.SinceBattleForAzeroth | TargetedDatabaseFlag.CataClassic)]
3538
public int KeepOpenAfterChoice;
3639

40+
[DBFieldName("ShowChoicesAsList", TargetedDatabaseFlag.SinceTheWarWithin)]
41+
public int ShowChoicesAsList;
42+
43+
[DBFieldName("ForceDontShowChoicesAsList", TargetedDatabaseFlag.SinceTheWarWithin)]
44+
public int ForceDontShowChoicesAsList;
45+
3746
[DBFieldName("VerifiedBuild")]
3847
public int? VerifiedBuild = ClientVersion.BuildInt;
3948
}
@@ -47,10 +56,10 @@ public sealed record PlayerChoiceResponseTemplate : IDataModel
4756
[DBFieldName("ResponseId", true)]
4857
public int? ResponseId;
4958

50-
[DBFieldName("ResponseIdentifier", TargetedDatabaseFlag.SinceShadowlands | TargetedDatabaseFlag.CataClassic)]
59+
[DBFieldName("ResponseIdentifier", TargetedDatabaseFlag.Shadowlands | TargetedDatabaseFlag.Dragonflight | TargetedDatabaseFlag.CataClassic)]
5160
public short? ResponseIdentifier;
5261

53-
[DBFieldName("Index", true)]
62+
[DBFieldName("Index")]
5463
public uint? Index;
5564

5665
[DBFieldName("ChoiceArtFileId")]

WowPacketParserModule.V9_0_1_36216/Parsers/QuestHandler.cs

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using WowPacketParser.Enums;
1+
using System;
2+
using WowPacketParser.Enums;
23
using WowPacketParser.Misc;
34
using WowPacketParser.Parsing;
45
using WowPacketParser.Store;
@@ -557,15 +558,29 @@ public static void HandleDisplayPlayerChoice(Packet packet)
557558
packet.ReadByte("NumRerolls");
558559
long? duration = null;
559560
if (ClientVersion.AddedInVersion(ClientVersionBuild.V9_2_0_42423))
560-
duration = packet.ReadInt64("Duration");
561+
{
562+
var expireTimeUtc = packet.ReadTime64("ExpireTime");
563+
if (expireTimeUtc != DateTime.UnixEpoch)
564+
{
565+
duration = (long)Math.Round((expireTimeUtc - TimeZoneInfo.ConvertTimeToUtc(packet.Time, TimeZoneInfo.Local)).TotalSeconds, MidpointRounding.AwayFromZero);
566+
packet.AddValue("Duration", duration);
567+
}
568+
}
561569
packet.ResetBitReader();
562570
var questionLength = packet.ReadBits(8);
563571
var pendingChoiceTextLength = 0u;
564572
if (ClientVersion.AddedInVersion(ClientVersionBuild.V9_2_0_42423))
565573
pendingChoiceTextLength = packet.ReadBits(8);
566-
packet.ReadBit("InfiniteRange");
574+
var infiniteRange = packet.ReadBit("InfiniteRange");
567575
var hideWarboardHeader = packet.ReadBit("HideWarboardHeader");
568576
var keepOpenAfterChoice = packet.ReadBit("KeepOpenAfterChoice");
577+
byte showChoicesAsList = 0;
578+
byte forceDontShowChoicesAsList = 0;
579+
if (ClientVersion.AddedInVersion(ClientVersionBuild.V11_1_5_60392))
580+
{
581+
showChoicesAsList = packet.ReadBit("ShowChoicesAsList");
582+
forceDontShowChoicesAsList = packet.ReadBit("ForceDontShowChoicesAsList");
583+
}
569584

570585
for (var i = 0u; i < responseCount; ++i)
571586
ReadPlayerChoiceResponse(packet, choiceId, i, "PlayerChoiceResponse", i);
@@ -584,8 +599,11 @@ public static void HandleDisplayPlayerChoice(Packet packet)
584599
Duration = duration,
585600
Question = question,
586601
PendingChoiceText = pendingChoiceText,
602+
InfiniteRange = infiniteRange,
587603
HideWarboardHeader = hideWarboardHeader,
588-
KeepOpenAfterChoice = keepOpenAfterChoice
604+
KeepOpenAfterChoice = keepOpenAfterChoice,
605+
ShowChoicesAsList = showChoicesAsList,
606+
ForceDontShowChoicesAsList = forceDontShowChoicesAsList
589607
}, packet.TimeSpan);
590608

591609
if (ClientLocale.PacketLocale != LocaleConstant.enUS)
@@ -611,7 +629,7 @@ public static void ReadPlayerChoiceResponseMawPower(Packet packet, params object
611629
packet.ReadInt32("Rarity", indexes);
612630
packet.ReadUInt32("RarityColor", indexes);
613631
}
614-
packet.ReadInt32("Unused901_2", indexes);
632+
packet.ReadInt32("BorderUiTextureAtlasMemberID", indexes);
615633
packet.ReadInt32("SpellID", indexes);
616634
packet.ReadInt32("MaxStacks", indexes);
617635
if (ClientVersion.AddedInVersion(ClientVersionBuild.V9_2_0_42423))

0 commit comments

Comments
 (0)