PSO2SERVER/Server/Protocol/Packets/0B-QuestPacket/0B-18-QuestCategoryPacket.cs
2024-12-11 20:47:36 +08:00

60 lines
1.9 KiB
C#

using System;
using PSO2SERVER.Json;
using System.Collections.Generic;
using PSO2SERVER.Models;
namespace PSO2SERVER.Protocol.Packets
{
public class QuestCategoryPacket : Packet
{
private List<QuestData> questdefs;
public QuestCategoryPacket(List<QuestData> questdefs)
{
this.questdefs = questdefs;
}
public override byte[] Build()
{
PacketWriter pkt = new PacketWriter();
pkt.WriteMagic((uint)questdefs.Count, 0x1DB0, 0xC5);
foreach (QuestData d in questdefs)
{
var qd = d.QuestDefiniton;
pkt.WriteFixedLengthASCII(qd.Date, 0x20);
pkt.WriteObjectHeader(qd.QuestObj);
pkt.Write(qd.NameId);
pkt.WriteIntArray(qd.Unk3);
pkt.Write(qd.Unk4);
pkt.Write(qd.Unk5);
pkt.Write(qd.Unk6);
pkt.WriteIntArray(qd.Unk7);
pkt.WriteShortArray(qd.Unk8);
pkt.Write(qd.Length);
pkt.Write((byte)qd.PartyType);
pkt.Write((byte)qd.Difficulties);
pkt.Write((byte)qd.DifficultiesCompleted);
pkt.Write(qd.Unk9);
pkt.Write(qd.ReqLevel);
pkt.Write(qd.SubClassReqLevel);
pkt.Write(qd.EnemyLevel);
pkt.Write(qd.Unk10);
pkt.Write((byte)qd.QuestType);
pkt.Write(qd.Unk11);
pkt.Write(qd.Unk12);
pkt.WriteIntArray(qd.Unk13);
pkt.Write(qd.Unk14);
pkt.Write(qd.Unk15);
pkt.Write(qd.Unk16);
}
return pkt.ToArray();
}
public override PacketHeader GetHeader()
{
return new PacketHeader(0x0B, 0x18, PacketFlags.PACKED);
}
}
}