11using OXGaming . TibiaAPI . Constants ;
2+ using OXGaming . TibiaAPI . Utilities ;
3+ using System ;
24
35namespace OXGaming . TibiaAPI . Network . ClientPackets
46{
57 public class SetOutfit : ClientPacket
68 {
7- public byte UnknownByte1 { get ; set ; }
9+ public uint TryOutfitKey { get ; set ; }
810
911 public ushort MountId { get ; set ; }
1012 public ushort OutfitId { get ; set ; }
13+ public ushort MountOutfitId { get ; set ; }
14+ public ushort FamiliarOutfitId { get ; set ; }
15+ public ushort PodiumOutfitId { get ; set ; }
1116
17+ public byte Type { get ; set ; }
1218 public byte Addons { get ; set ; }
1319 public byte DetailColor { get ; set ; }
1420 public byte HeadColor { get ; set ; }
1521 public byte LegsColor { get ; set ; }
1622 public byte TorsoColor { get ; set ; }
23+ public byte MountDetailColor { get ; set ; }
24+ public byte MountHeadColor { get ; set ; }
25+ public byte MountLegsColor { get ; set ; }
26+ public byte MountTorsoColor { get ; set ; }
27+ public byte PodiumStackPos { get ; set ; }
28+ public byte PodiumDetailColor { get ; set ; }
29+ public byte PodiumHeadColor { get ; set ; }
30+ public byte PodiumLegsColor { get ; set ; }
31+ public byte PodiumTorsoColor { get ; set ; }
32+ public byte PodiumDirection { get ; set ; }
33+ public byte PodiumVisibility { get ; set ; }
34+
35+ public bool RandomMount { get ; set ; }
36+
37+ public Position PodiumPosition { get ; set ; }
1738
1839 public SetOutfit ( Client client )
1940 {
@@ -23,26 +44,71 @@ public SetOutfit(Client client)
2344
2445 public override void ParseFromNetworkMessage ( NetworkMessage message )
2546 {
26- UnknownByte1 = message . ReadByte ( ) ;
47+ Type = message . ReadByte ( ) ;
2748 OutfitId = message . ReadUInt16 ( ) ;
2849 HeadColor = message . ReadByte ( ) ;
2950 TorsoColor = message . ReadByte ( ) ;
3051 LegsColor = message . ReadByte ( ) ;
3152 DetailColor = message . ReadByte ( ) ;
3253 Addons = message . ReadByte ( ) ;
33- MountId = message . ReadUInt16 ( ) ;
54+
55+ if ( ( OutfitWindowType ) Type == OutfitWindowType . SelectOutfit ) {
56+ MountOutfitId = message . ReadUInt16 ( ) ;
57+ MountHeadColor = message . ReadByte ( ) ;
58+ MountTorsoColor = message . ReadByte ( ) ;
59+ MountLegsColor = message . ReadByte ( ) ;
60+ MountDetailColor = message . ReadByte ( ) ;
61+ FamiliarOutfitId = message . ReadUInt16 ( ) ;
62+ } else if ( ( OutfitWindowType ) Type == OutfitWindowType . TryOutfitMount ) {
63+ TryOutfitKey = message . ReadUInt32 ( ) ;
64+ } else if ( ( OutfitWindowType ) Type == OutfitWindowType . TryMountOld ) {
65+ PodiumPosition = message . ReadPosition ( ) ;
66+ PodiumOutfitId = message . ReadUInt16 ( ) ;
67+ PodiumStackPos = message . ReadByte ( ) ;
68+ PodiumHeadColor = message . ReadByte ( ) ;
69+ PodiumTorsoColor = message . ReadByte ( ) ;
70+ PodiumLegsColor = message . ReadByte ( ) ;
71+ PodiumDetailColor = message . ReadByte ( ) ;
72+ PodiumDirection = message . ReadByte ( ) ;
73+ PodiumVisibility = message . ReadByte ( ) ;
74+ } else {
75+ throw new Exception ( $ "Invalid SetOutfit type: { Type } ") ;
76+ }
77+ RandomMount = message . ReadBool ( ) ;
3478 }
3579
3680 public override void AppendToNetworkMessage ( NetworkMessage message )
3781 {
3882 message . Write ( ( byte ) ClientPacketType . SetOutfit ) ;
39- message . Write ( UnknownByte1 ) ;
83+ message . Write ( Type ) ;
4084 message . Write ( OutfitId ) ;
4185 message . Write ( HeadColor ) ;
4286 message . Write ( TorsoColor ) ;
4387 message . Write ( LegsColor ) ;
4488 message . Write ( DetailColor ) ;
45- message . Write ( MountId ) ;
89+ message . Write ( Addons ) ;
90+
91+ if ( ( OutfitWindowType ) Type == OutfitWindowType . SelectOutfit ) {
92+ message . Write ( MountOutfitId ) ;
93+ message . Write ( MountHeadColor ) ;
94+ message . Write ( MountTorsoColor ) ;
95+ message . Write ( MountLegsColor ) ;
96+ message . Write ( MountDetailColor ) ;
97+ message . Write ( FamiliarOutfitId ) ;
98+ } else if ( ( OutfitWindowType ) Type == OutfitWindowType . TryOutfitMount ) {
99+ message . Write ( TryOutfitKey ) ;
100+ } else if ( ( OutfitWindowType ) Type == OutfitWindowType . TryMountOld ) {
101+ message . Write ( PodiumPosition ) ;
102+ message . Write ( PodiumOutfitId ) ;
103+ message . Write ( PodiumStackPos ) ;
104+ message . Write ( PodiumHeadColor ) ;
105+ message . Write ( PodiumTorsoColor ) ;
106+ message . Write ( PodiumLegsColor ) ;
107+ message . Write ( PodiumDetailColor ) ;
108+ message . Write ( PodiumDirection ) ;
109+ message . Write ( PodiumVisibility ) ;
110+ }
111+ message . Write ( RandomMount ) ;
46112 }
47113 }
48114}
0 commit comments