diff --git a/HermesProxy/World/Client/PacketHandlers/CharacterHandler.cs b/HermesProxy/World/Client/PacketHandlers/CharacterHandler.cs index ad9a2ffa..b776f8ac 100644 --- a/HermesProxy/World/Client/PacketHandlers/CharacterHandler.cs +++ b/HermesProxy/World/Client/PacketHandlers/CharacterHandler.cs @@ -234,7 +234,14 @@ void HandleLoginVerifyWorld(WorldPacket packet) } SendPacketToClient(info); - LoadCUFProfiles cuf = new LoadCUFProfiles(); + SetAllTaskProgress tasks = new(); + SendPacketToClient(tasks); + + InitialSetup setup = new(); + setup.ServerExpansionLevel = (byte)(LegacyVersion.GetExpansionVersion() - 1); + SendPacketToClient(setup); + + LoadCUFProfiles cuf = new(); cuf.Data = GetSession().AccountDataMgr.LoadCUFProfiles(); SendPacketToClient(cuf); } diff --git a/HermesProxy/World/Client/PacketHandlers/NPCHandler.cs b/HermesProxy/World/Client/PacketHandlers/NPCHandler.cs index 2eed7944..c6213c3c 100644 --- a/HermesProxy/World/Client/PacketHandlers/NPCHandler.cs +++ b/HermesProxy/World/Client/PacketHandlers/NPCHandler.cs @@ -32,7 +32,7 @@ void HandleGossipmessage(WorldPacket packet) ClientGossipOption option = new ClientGossipOption(); option.OptionIndex = packet.ReadInt32(); option.OptionIcon = packet.ReadUInt8(); - bool hasBox = packet.ReadBool(); + option.OptionFlags = (byte)(packet.ReadBool() ? 1 : 0); // Code Box if (LegacyVersion.AddedInVersion(ClientVersionBuild.V2_0_1_6180)) option.OptionCost = packet.ReadInt32(); diff --git a/HermesProxy/World/Server/Packets/MiscPackets.cs b/HermesProxy/World/Server/Packets/MiscPackets.cs index aca26360..c9dd2d5e 100644 --- a/HermesProxy/World/Server/Packets/MiscPackets.cs +++ b/HermesProxy/World/Server/Packets/MiscPackets.cs @@ -355,6 +355,53 @@ public override void Write() public uint? InstanceGroupSize; } + public class SetAllTaskProgress : ServerPacket + { + public SetAllTaskProgress() : base(Opcode.SMSG_SET_ALL_TASK_PROGRESS, ConnectionType.Instance) { } + + public override void Write() + { + _worldPacket.WriteInt32(Tasks.Count); + foreach (var task in Tasks) + task.Write(_worldPacket); + } + + public List Tasks = new List(); + } + + public class TaskProgress + { + public void Write(WorldPacket data) + { + data.WriteUInt32(TaskID); + data.WriteUInt32(FailureTime); + data.WriteUInt32(Flags); + data.WriteUInt32(Unk); + data.WriteInt32(Progress.Count); + foreach (ushort progress in Progress) + data.WriteUInt16(progress); + } + public uint TaskID; + public uint FailureTime; + public uint Flags; + public uint Unk; + public List Progress = new List(); + } + + public class InitialSetup : ServerPacket + { + public InitialSetup() : base(Opcode.SMSG_INITIAL_SETUP, ConnectionType.Instance) { } + + public override void Write() + { + _worldPacket.WriteUInt8(ServerExpansionLevel); + _worldPacket.WriteUInt8(ServerExpansionTier); + } + + public byte ServerExpansionLevel; + public byte ServerExpansionTier; + } + public class RepopRequest : ClientPacket { public RepopRequest(WorldPacket packet) : base(packet) { }