PSO2SERVER/Server/Packets/PSOPackets/QuestListPacket.cs
2024-09-11 17:13:00 +08:00

86 lines
2.1 KiB
C#

using System;
using PSO2SERVER.Models;
namespace PSO2SERVER.Packets.PSOPackets
{
class QuestListPacket : Packet
{
private QuestDefiniton[] questdefs;
public QuestListPacket(QuestDefiniton[] questdefs)
{
this.questdefs = questdefs;
}
public override byte[] Build()
{
PacketWriter writer = new PacketWriter();
writer.WriteMagic((uint)questdefs.Length, 0x1DB0, 0xC5);
foreach (QuestDefiniton d in questdefs)
{
writer.WriteStruct(d);
}
return writer.ToArray();
}
public override PacketHeader GetHeader()
{
return new PacketHeader(0xB, 0x18, 0x4);
}
// Hoo boy, this is 468 bytes!
// TODO: Map out this struct.
// Most of this is WRONG!!! Needs serious investigation.
/*
[K873] What I've currently mapped out
24 -> Start
38 -> Quest Name/Type Index?
100 -> Bitfield 1
102 -> Estimated Play Time
103 -> Party Type
104 -> Difficulties Available
105 -> Difficulties Completed
108 -> Starting Level
120 -> Item Data 1?
12C -> Item Data 2?
*/
[Flags]
public enum QuestBitfield1 : ushort
{
MatterObjectiveQuest = 0x0001,
ClientOrderOnQuest = 0x0008,
NewQuest = 0x0100,
ClientOrder = 0x0800,
UnknownLevel = 0x1000
}
public enum PartyType
{
SoloQuest,
SinglePartyQuest,
MultiPartyQuest,
}
public enum EstimatedTime
{
Short = 1,
Medium,
Long
}
[Flags]
public enum Difficulties
{
Normal = 0x01,
hard = 0x02,
VeryHard = 0x04,
SuperHard = 0x08,
ExtraHard = 0x10,
Dummy1 = 0x20,
Dummy2 = 0x40,
Dummy3 = 0x80,
}
}
}