diff --git a/Arrowgene.Ddon.GameServer/DdonGameServer.cs b/Arrowgene.Ddon.GameServer/DdonGameServer.cs index 0a7c42228..9715c991f 100644 --- a/Arrowgene.Ddon.GameServer/DdonGameServer.cs +++ b/Arrowgene.Ddon.GameServer/DdonGameServer.cs @@ -182,7 +182,12 @@ private void LoadPacketHandler() AddHandler(new ContextGetSetContextHandler(this)); AddHandler(new ContextSetContextHandler(this)); AddHandler(new DailyMissionListGetHandler(this)); + AddHandler(new EquipGetCharacterEquipListHandler(this)); + AddHandler(new EquipUpdateHideCharacterHeadArmorHandler(this)); + AddHandler(new EquipUpdateHideCharacterLanternHandler(this)); + AddHandler(new EquipUpdateHidePawnHeadArmorHandler(this)); + AddHandler(new EquipUpdateHidePawnLanternHandler(this)); AddHandler(new FriendGetFriendListHandler(this)); AddHandler(new FriendGetRecentCharacterListHandler(this)); diff --git a/Arrowgene.Ddon.GameServer/Handler/CharacterDecideCharacterIdHandler.cs b/Arrowgene.Ddon.GameServer/Handler/CharacterDecideCharacterIdHandler.cs index 940dd7de9..01b82c536 100644 --- a/Arrowgene.Ddon.GameServer/Handler/CharacterDecideCharacterIdHandler.cs +++ b/Arrowgene.Ddon.GameServer/Handler/CharacterDecideCharacterIdHandler.cs @@ -23,11 +23,20 @@ public CharacterDecideCharacterIdHandler(DdonGameServer server) : base(server) public override PacketId Id => PacketId.C2S_CHARACTER_DECIDE_CHARACTER_ID_REQ; public override void Handle(GameClient client, IPacket packet) - { - S2CCharacterDecideCharacterIdRes res = EntitySerializer.Get().Read(GameDump.data_Dump_13); + { + S2CCharacterDecideCharacterIdRes pcap = EntitySerializer.Get().Read(GameDump.data_Dump_13); + S2CCharacterDecideCharacterIdRes res = new S2CCharacterDecideCharacterIdRes(); res.CharacterId = client.Character.Id; res.CharacterInfo = new CDataCharacterInfo(client.Character); - res.CharacterInfo.UnkCharData1 = new List() + res.CharacterInfo.CharacterItemSlotInfoList = new List() + { + new CDataCharacterItemSlotInfo() + { + StorageType = 1, // Item Bag (Consumable) STORAGE_TYPE_BAG_USE + SlotMax = 20 + } + }; + res.CharacterInfo.WalletPointList = new List() { // TODO: Figure out what other currencies there are. // Pcap currencies: @@ -44,12 +53,14 @@ public override void Handle(GameClient client, IPacket packet) // 14 2 // 15 115 // 16 105 - new UnknownCharacterData1() + new CDataWalletPoint() { - u0 = 2, // RP - u1 = 42069 + Type = 2, // RP + Value = 42069 } }; + res.Unk0 = pcap.Unk0; // Commenting this makes tons of tutorials pop up + client.Send(res); // Unlocks menu options such as inventory, warping, etc. diff --git a/Arrowgene.Ddon.GameServer/Handler/EquipUpdateHideCharacterHeadArmorHandler.cs b/Arrowgene.Ddon.GameServer/Handler/EquipUpdateHideCharacterHeadArmorHandler.cs new file mode 100644 index 000000000..43765feca --- /dev/null +++ b/Arrowgene.Ddon.GameServer/Handler/EquipUpdateHideCharacterHeadArmorHandler.cs @@ -0,0 +1,40 @@ +using Arrowgene.Ddon.Server; +using Arrowgene.Ddon.Server.Network; +using Arrowgene.Ddon.Shared.Entity.PacketStructure; +using Arrowgene.Ddon.Shared.Network; +using Arrowgene.Logging; + +namespace Arrowgene.Ddon.GameServer.Handler +{ + public class EquipUpdateHideCharacterHeadArmorHandler : StructurePacketHandler + { + private static readonly ServerLogger Logger = LogProvider.Logger(typeof(EquipUpdateHideCharacterHeadArmorHandler)); + + public EquipUpdateHideCharacterHeadArmorHandler(DdonGameServer server) : base(server) + { + } + + public override void Handle(GameClient client, StructurePacket packet) + { + client.Character.HideEquipHead = packet.Structure.Hide; + Database.UpdateCharacterBaseInfo(client.Character); + client.Send(new S2CEquipUpdateHideCharacterHeadArmorRes() + { + Hide = packet.Structure.Hide + }); + + S2CEquipUpdateEquipHideNtc ntc = new S2CEquipUpdateEquipHideNtc() + { + CharacterId = client.Character.Id, + HideHead = client.Character.HideEquipHead, + HideLantern = client.Character.HideEquipLantern, + HidePawnHead = client.Character.HideEquipHeadPawn, + HidePawnLantern = client.Character.HideEquipLanternPawn + }; + foreach(Client otherClient in Server.ClientLookup.GetAll()) + { + otherClient.Send(ntc); + } + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.GameServer/Handler/EquipUpdateHideCharacterLanternHandler.cs b/Arrowgene.Ddon.GameServer/Handler/EquipUpdateHideCharacterLanternHandler.cs new file mode 100644 index 000000000..490d71f3a --- /dev/null +++ b/Arrowgene.Ddon.GameServer/Handler/EquipUpdateHideCharacterLanternHandler.cs @@ -0,0 +1,40 @@ +using Arrowgene.Ddon.Server; +using Arrowgene.Ddon.Server.Network; +using Arrowgene.Ddon.Shared.Entity.PacketStructure; +using Arrowgene.Ddon.Shared.Network; +using Arrowgene.Logging; + +namespace Arrowgene.Ddon.GameServer.Handler +{ + public class EquipUpdateHideCharacterLanternHandler : StructurePacketHandler + { + private static readonly ServerLogger Logger = LogProvider.Logger(typeof(EquipUpdateHideCharacterLanternHandler)); + + public EquipUpdateHideCharacterLanternHandler(DdonGameServer server) : base(server) + { + } + + public override void Handle(GameClient client, StructurePacket packet) + { + client.Character.HideEquipLantern = packet.Structure.Hide; + Database.UpdateCharacterBaseInfo(client.Character); + client.Send(new S2CEquipUpdateHideCharacterLanternRes() + { + Hide = packet.Structure.Hide + }); + + S2CEquipUpdateEquipHideNtc ntc = new S2CEquipUpdateEquipHideNtc() + { + CharacterId = client.Character.Id, + HideHead = client.Character.HideEquipHead, + HideLantern = client.Character.HideEquipLantern, + HidePawnHead = client.Character.HideEquipHeadPawn, + HidePawnLantern = client.Character.HideEquipLanternPawn + }; + foreach(Client otherClient in Server.ClientLookup.GetAll()) + { + otherClient.Send(ntc); + } + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.GameServer/Handler/EquipUpdateHidePawnHeadArmorHandler.cs b/Arrowgene.Ddon.GameServer/Handler/EquipUpdateHidePawnHeadArmorHandler.cs new file mode 100644 index 000000000..d21df17c1 --- /dev/null +++ b/Arrowgene.Ddon.GameServer/Handler/EquipUpdateHidePawnHeadArmorHandler.cs @@ -0,0 +1,40 @@ +using Arrowgene.Ddon.Server; +using Arrowgene.Ddon.Server.Network; +using Arrowgene.Ddon.Shared.Entity.PacketStructure; +using Arrowgene.Ddon.Shared.Network; +using Arrowgene.Logging; + +namespace Arrowgene.Ddon.GameServer.Handler +{ + public class EquipUpdateHidePawnHeadArmorHandler : StructurePacketHandler + { + private static readonly ServerLogger Logger = LogProvider.Logger(typeof(EquipUpdateHidePawnHeadArmorHandler)); + + public EquipUpdateHidePawnHeadArmorHandler(DdonGameServer server) : base(server) + { + } + + public override void Handle(GameClient client, StructurePacket packet) + { + client.Character.HideEquipHeadPawn = packet.Structure.Hide; + Database.UpdateCharacterBaseInfo(client.Character); + client.Send(new S2CEquipUpdateHidePawnHeadArmorRes() + { + Hide = packet.Structure.Hide + }); + + S2CEquipUpdateEquipHideNtc ntc = new S2CEquipUpdateEquipHideNtc() + { + CharacterId = client.Character.Id, + HideHead = client.Character.HideEquipHead, + HideLantern = client.Character.HideEquipLantern, + HidePawnHead = client.Character.HideEquipHeadPawn, + HidePawnLantern = client.Character.HideEquipLanternPawn + }; + foreach(Client otherClient in Server.ClientLookup.GetAll()) + { + otherClient.Send(ntc); + } + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.GameServer/Handler/EquipUpdateHidePawnLanternHandler.cs b/Arrowgene.Ddon.GameServer/Handler/EquipUpdateHidePawnLanternHandler.cs new file mode 100644 index 000000000..d029acde1 --- /dev/null +++ b/Arrowgene.Ddon.GameServer/Handler/EquipUpdateHidePawnLanternHandler.cs @@ -0,0 +1,40 @@ +using Arrowgene.Ddon.Server; +using Arrowgene.Ddon.Server.Network; +using Arrowgene.Ddon.Shared.Entity.PacketStructure; +using Arrowgene.Ddon.Shared.Network; +using Arrowgene.Logging; + +namespace Arrowgene.Ddon.GameServer.Handler +{ + public class EquipUpdateHidePawnLanternHandler : StructurePacketHandler + { + private static readonly ServerLogger Logger = LogProvider.Logger(typeof(EquipUpdateHidePawnLanternHandler)); + + public EquipUpdateHidePawnLanternHandler(DdonGameServer server) : base(server) + { + } + + public override void Handle(GameClient client, StructurePacket packet) + { + client.Character.HideEquipLanternPawn= packet.Structure.Hide; + Database.UpdateCharacterBaseInfo(client.Character); + client.Send(new S2CEquipUpdateHidePawnLanternRes() + { + Hide = packet.Structure.Hide + }); + + S2CEquipUpdateEquipHideNtc ntc = new S2CEquipUpdateEquipHideNtc() + { + CharacterId = client.Character.Id, + HideHead = client.Character.HideEquipHead, + HideLantern = client.Character.HideEquipLantern, + HidePawnHead = client.Character.HideEquipHeadPawn, + HidePawnLantern = client.Character.HideEquipLanternPawn + }; + foreach(Client otherClient in Server.ClientLookup.GetAll()) + { + otherClient.Send(ntc); + } + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.GameServer/Handler/SkillGetLearnedAbilityListHandler.cs b/Arrowgene.Ddon.GameServer/Handler/SkillGetLearnedAbilityListHandler.cs index 2109acd7c..3297e9de7 100644 --- a/Arrowgene.Ddon.GameServer/Handler/SkillGetLearnedAbilityListHandler.cs +++ b/Arrowgene.Ddon.GameServer/Handler/SkillGetLearnedAbilityListHandler.cs @@ -1,9 +1,9 @@ -using System; -using System.Linq; +using System.Collections.Generic; using Arrowgene.Ddon.Server; using Arrowgene.Ddon.Server.Network; using Arrowgene.Ddon.Shared.Entity.PacketStructure; using Arrowgene.Ddon.Shared.Entity.Structure; +using Arrowgene.Ddon.Shared.Model; using Arrowgene.Ddon.Shared.Network; using Arrowgene.Logging; @@ -13,6 +13,509 @@ public class SkillGetLearnedAbilityListHandler : StructurePacketHandler(typeof(SkillGetLearnedAbilityListHandler)); + public static readonly List AllAbilities = new List() { + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Fighter, AcquirementNo=0x4, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Fighter, AcquirementNo=0xF, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Fighter, AcquirementNo=0x5, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Fighter, AcquirementNo=0x1, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Fighter, AcquirementNo=0x9, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Fighter, AcquirementNo=0x10, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Fighter, AcquirementNo=0x6, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Fighter, AcquirementNo=0x19, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Fighter, AcquirementNo=0x17, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Fighter, AcquirementNo=0x18, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Fighter, AcquirementNo=0x16, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Fighter, AcquirementNo=0xA, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Fighter, AcquirementNo=0x2, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Fighter, AcquirementNo=0xC, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Fighter, AcquirementNo=0x11, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Fighter, AcquirementNo=0x13, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Fighter, AcquirementNo=0x8, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Fighter, AcquirementNo=0x12, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Fighter, AcquirementNo=0x3, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Fighter, AcquirementNo=0xD, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Fighter, AcquirementNo=0x15, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Fighter, AcquirementNo=0xB, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Fighter, AcquirementNo=0x7, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Fighter, AcquirementNo=0xE, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Fighter, AcquirementNo=0x14, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Fighter, AcquirementNo=0x128, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Fighter, AcquirementNo=0x129, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Fighter, AcquirementNo=0x12B, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Fighter, AcquirementNo=0x12A, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Fighter, AcquirementNo=0x12C, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Fighter, AcquirementNo=0x12D, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Fighter, AcquirementNo=0x12E, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Fighter, AcquirementNo=0x12F, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Fighter, AcquirementNo=0x131, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Fighter, AcquirementNo=0x130, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Fighter, AcquirementNo=0x132, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Fighter, AcquirementNo=0x133, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Seeker, AcquirementNo=0x6F, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Seeker, AcquirementNo=0x74, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Seeker, AcquirementNo=0x6D, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Seeker, AcquirementNo=0x65, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Seeker, AcquirementNo=0x7B, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Seeker, AcquirementNo=0x7C, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Seeker, AcquirementNo=0x6A, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Seeker, AcquirementNo=0x66, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Seeker, AcquirementNo=0x7D, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Seeker, AcquirementNo=0x78, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Seeker, AcquirementNo=0x79, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Seeker, AcquirementNo=0x75, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Seeker, AcquirementNo=0x68, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Seeker, AcquirementNo=0x70, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Seeker, AcquirementNo=0x77, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Seeker, AcquirementNo=0x7A, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Seeker, AcquirementNo=0x69, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Seeker, AcquirementNo=0x67, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Seeker, AcquirementNo=0x71, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Seeker, AcquirementNo=0x6E, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Seeker, AcquirementNo=0x73, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Seeker, AcquirementNo=0x76, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Seeker, AcquirementNo=0x6B, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Seeker, AcquirementNo=0x6C, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Seeker, AcquirementNo=0x72, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Seeker, AcquirementNo=0x158, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Seeker, AcquirementNo=0x159, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Seeker, AcquirementNo=0x15C, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Seeker, AcquirementNo=0x15A, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Seeker, AcquirementNo=0x15B, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Seeker, AcquirementNo=0x15D, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Seeker, AcquirementNo=0x15E, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Seeker, AcquirementNo=0x15F, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Seeker, AcquirementNo=0x162, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Seeker, AcquirementNo=0x160, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Seeker, AcquirementNo=0x161, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Seeker, AcquirementNo=0x163, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Hunter, AcquirementNo=0x1B, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Hunter, AcquirementNo=0x22, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Hunter, AcquirementNo=0x2A, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Hunter, AcquirementNo=0x1A, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Hunter, AcquirementNo=0x1E, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Hunter, AcquirementNo=0x24, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Hunter, AcquirementNo=0x21, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Hunter, AcquirementNo=0x32, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Hunter, AcquirementNo=0x30, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Hunter, AcquirementNo=0x31, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Hunter, AcquirementNo=0x2F, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Hunter, AcquirementNo=0x1F, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Hunter, AcquirementNo=0x1D, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Hunter, AcquirementNo=0x23, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Hunter, AcquirementNo=0x27, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Hunter, AcquirementNo=0x2D, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Hunter, AcquirementNo=0x29, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Hunter, AcquirementNo=0x20, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Hunter, AcquirementNo=0x2B, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Hunter, AcquirementNo=0x1C, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Hunter, AcquirementNo=0x2E, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Hunter, AcquirementNo=0x26, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Hunter, AcquirementNo=0x25, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Hunter, AcquirementNo=0x28, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Hunter, AcquirementNo=0x2C, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Hunter, AcquirementNo=0x134, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Hunter, AcquirementNo=0x135, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Hunter, AcquirementNo=0x137, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Hunter, AcquirementNo=0x136, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Hunter, AcquirementNo=0x138, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Hunter, AcquirementNo=0x139, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Hunter, AcquirementNo=0x13A, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Hunter, AcquirementNo=0x13B, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Hunter, AcquirementNo=0x13D, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Hunter, AcquirementNo=0x13C, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Hunter, AcquirementNo=0x13E, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Hunter, AcquirementNo=0x13F, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Priest, AcquirementNo=0x3E, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Priest, AcquirementNo=0x43, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Priest, AcquirementNo=0x39, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Priest, AcquirementNo=0x34, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Priest, AcquirementNo=0x3F, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Priest, AcquirementNo=0x44, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Priest, AcquirementNo=0x3A, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Priest, AcquirementNo=0x40, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Priest, AcquirementNo=0x45, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Priest, AcquirementNo=0x4B, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Priest, AcquirementNo=0x49, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Priest, AcquirementNo=0x4A, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Priest, AcquirementNo=0x48, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Priest, AcquirementNo=0x33, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Priest, AcquirementNo=0x3D, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Priest, AcquirementNo=0x41, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Priest, AcquirementNo=0x42, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Priest, AcquirementNo=0x37, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Priest, AcquirementNo=0x38, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Priest, AcquirementNo=0x46, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Priest, AcquirementNo=0x47, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Priest, AcquirementNo=0x35, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Priest, AcquirementNo=0x3C, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Priest, AcquirementNo=0x36, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Priest, AcquirementNo=0x3B, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Priest, AcquirementNo=0x140, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Priest, AcquirementNo=0x141, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Priest, AcquirementNo=0x143, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Priest, AcquirementNo=0x142, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Priest, AcquirementNo=0x144, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Priest, AcquirementNo=0x145, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Priest, AcquirementNo=0x146, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Priest, AcquirementNo=0x147, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Priest, AcquirementNo=0x149, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Priest, AcquirementNo=0x148, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Priest, AcquirementNo=0x14A, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Priest, AcquirementNo=0x14B, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ShieldSage, AcquirementNo=0x52, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ShieldSage, AcquirementNo=0x55, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ShieldSage, AcquirementNo=0x4F, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ShieldSage, AcquirementNo=0x51, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ShieldSage, AcquirementNo=0x59, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ShieldSage, AcquirementNo=0x5D, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ShieldSage, AcquirementNo=0x63, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ShieldSage, AcquirementNo=0x54, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ShieldSage, AcquirementNo=0x57, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ShieldSage, AcquirementNo=0x56, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ShieldSage, AcquirementNo=0x58, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ShieldSage, AcquirementNo=0x4D, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ShieldSage, AcquirementNo=0x50, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ShieldSage, AcquirementNo=0x5F, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ShieldSage, AcquirementNo=0x60, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ShieldSage, AcquirementNo=0x61, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ShieldSage, AcquirementNo=0x5C, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ShieldSage, AcquirementNo=0x4C, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ShieldSage, AcquirementNo=0x53, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ShieldSage, AcquirementNo=0x5A, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ShieldSage, AcquirementNo=0x5E, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ShieldSage, AcquirementNo=0x62, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ShieldSage, AcquirementNo=0x5B, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ShieldSage, AcquirementNo=0x4E, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ShieldSage, AcquirementNo=0x64, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ShieldSage, AcquirementNo=0x14C, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ShieldSage, AcquirementNo=0x14D, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ShieldSage, AcquirementNo=0x150, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ShieldSage, AcquirementNo=0x14E, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ShieldSage, AcquirementNo=0x14F, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ShieldSage, AcquirementNo=0x151, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ShieldSage, AcquirementNo=0x152, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ShieldSage, AcquirementNo=0x153, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ShieldSage, AcquirementNo=0x156, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ShieldSage, AcquirementNo=0x154, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ShieldSage, AcquirementNo=0x155, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ShieldSage, AcquirementNo=0x157, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Sorcerer, AcquirementNo=0x7E, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Sorcerer, AcquirementNo=0x8E, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Sorcerer, AcquirementNo=0x89, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Sorcerer, AcquirementNo=0x81, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Sorcerer, AcquirementNo=0x82, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Sorcerer, AcquirementNo=0x83, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Sorcerer, AcquirementNo=0x84, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Sorcerer, AcquirementNo=0x92, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Sorcerer, AcquirementNo=0x94, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Sorcerer, AcquirementNo=0x91, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Sorcerer, AcquirementNo=0x93, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Sorcerer, AcquirementNo=0x7F, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Sorcerer, AcquirementNo=0x80, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Sorcerer, AcquirementNo=0x86, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Sorcerer, AcquirementNo=0x8A, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Sorcerer, AcquirementNo=0x8F, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Sorcerer, AcquirementNo=0x95, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Sorcerer, AcquirementNo=0x85, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Sorcerer, AcquirementNo=0x88, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Sorcerer, AcquirementNo=0x8C, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Sorcerer, AcquirementNo=0x90, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Sorcerer, AcquirementNo=0x8D, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Sorcerer, AcquirementNo=0x87, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Sorcerer, AcquirementNo=0x8B, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Sorcerer, AcquirementNo=0x96, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Sorcerer, AcquirementNo=0x164, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Sorcerer, AcquirementNo=0x165, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Sorcerer, AcquirementNo=0x16B, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Sorcerer, AcquirementNo=0x166, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Sorcerer, AcquirementNo=0x168, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Sorcerer, AcquirementNo=0x169, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Sorcerer, AcquirementNo=0x167, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Sorcerer, AcquirementNo=0x16A, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Sorcerer, AcquirementNo=0x16E, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Sorcerer, AcquirementNo=0x16C, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Sorcerer, AcquirementNo=0x16D, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Sorcerer, AcquirementNo=0x16F, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Warrior, AcquirementNo=0xB5, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Warrior, AcquirementNo=0xBF, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Warrior, AcquirementNo=0xB4, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Warrior, AcquirementNo=0xC0, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Warrior, AcquirementNo=0xB1, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Warrior, AcquirementNo=0xB8, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Warrior, AcquirementNo=0xBC, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Warrior, AcquirementNo=0xB2, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Warrior, AcquirementNo=0xB9, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Warrior, AcquirementNo=0xC8, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Warrior, AcquirementNo=0xBD, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Warrior, AcquirementNo=0xC1, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Warrior, AcquirementNo=0xC7, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Warrior, AcquirementNo=0xB0, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Warrior, AcquirementNo=0xB6, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Warrior, AcquirementNo=0xB7, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Warrior, AcquirementNo=0xBB, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Warrior, AcquirementNo=0xBA, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Warrior, AcquirementNo=0xC3, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Warrior, AcquirementNo=0xC4, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Warrior, AcquirementNo=0xC5, AcquirementLv=1}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Warrior, AcquirementNo=0xBE, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Warrior, AcquirementNo=0xB3, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Warrior, AcquirementNo=0xC2, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Warrior, AcquirementNo=0xC6, AcquirementLv=1}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Warrior, AcquirementNo=0x17C, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Warrior, AcquirementNo=0x17D, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Warrior, AcquirementNo=0x180, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Warrior, AcquirementNo=0x17E, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Warrior, AcquirementNo=0x17F, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Warrior, AcquirementNo=0x181, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Warrior, AcquirementNo=0x182, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Warrior, AcquirementNo=0x183, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Warrior, AcquirementNo=0x186, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Warrior, AcquirementNo=0x184, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Warrior, AcquirementNo=0x185, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Warrior, AcquirementNo=0x187, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ElementArcher, AcquirementNo=0x9F, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ElementArcher, AcquirementNo=0xA6, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ElementArcher, AcquirementNo=0x9A, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ElementArcher, AcquirementNo=0xA7, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ElementArcher, AcquirementNo=0xA8, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ElementArcher, AcquirementNo=0xA0, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ElementArcher, AcquirementNo=0xA1, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ElementArcher, AcquirementNo=0xA9, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ElementArcher, AcquirementNo=0xAD, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ElementArcher, AcquirementNo=0xAF, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ElementArcher, AcquirementNo=0xA5, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ElementArcher, AcquirementNo=0xAC, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ElementArcher, AcquirementNo=0xAE, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ElementArcher, AcquirementNo=0x9C, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ElementArcher, AcquirementNo=0xAA, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ElementArcher, AcquirementNo=0xAB, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ElementArcher, AcquirementNo=0x97, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ElementArcher, AcquirementNo=0x99, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ElementArcher, AcquirementNo=0xA3, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ElementArcher, AcquirementNo=0x9D, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ElementArcher, AcquirementNo=0xA4, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ElementArcher, AcquirementNo=0x98, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ElementArcher, AcquirementNo=0xA2, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ElementArcher, AcquirementNo=0x9B, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ElementArcher, AcquirementNo=0x9E, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ElementArcher, AcquirementNo=0x170, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ElementArcher, AcquirementNo=0x171, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ElementArcher, AcquirementNo=0x173, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ElementArcher, AcquirementNo=0x172, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ElementArcher, AcquirementNo=0x174, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ElementArcher, AcquirementNo=0x175, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ElementArcher, AcquirementNo=0x176, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ElementArcher, AcquirementNo=0x177, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ElementArcher, AcquirementNo=0x179, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ElementArcher, AcquirementNo=0x178, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ElementArcher, AcquirementNo=0x17A, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.ElementArcher, AcquirementNo=0x17B, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Alchemist, AcquirementNo=0xCD, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Alchemist, AcquirementNo=0xCE, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Alchemist, AcquirementNo=0xD6, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Alchemist, AcquirementNo=0xDA, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Alchemist, AcquirementNo=0xCB, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Alchemist, AcquirementNo=0xD0, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Alchemist, AcquirementNo=0xDB, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Alchemist, AcquirementNo=0xCC, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Alchemist, AcquirementNo=0xD3, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Alchemist, AcquirementNo=0xDE, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Alchemist, AcquirementNo=0xCF, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Alchemist, AcquirementNo=0xD8, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Alchemist, AcquirementNo=0xDF, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Alchemist, AcquirementNo=0xCA, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Alchemist, AcquirementNo=0xD1, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Alchemist, AcquirementNo=0xD4, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Alchemist, AcquirementNo=0xD2, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Alchemist, AcquirementNo=0xD9, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Alchemist, AcquirementNo=0xDC, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Alchemist, AcquirementNo=0xC9, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Alchemist, AcquirementNo=0xD5, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Alchemist, AcquirementNo=0xE0, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Alchemist, AcquirementNo=0xD7, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Alchemist, AcquirementNo=0xDD, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Alchemist, AcquirementNo=0xE1, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Alchemist, AcquirementNo=0x188, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Alchemist, AcquirementNo=0x189, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Alchemist, AcquirementNo=0x18C, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Alchemist, AcquirementNo=0x18A, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Alchemist, AcquirementNo=0x18B, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Alchemist, AcquirementNo=0x18D, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Alchemist, AcquirementNo=0x18E, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Alchemist, AcquirementNo=0x18F, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Alchemist, AcquirementNo=0x192, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Alchemist, AcquirementNo=0x190, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Alchemist, AcquirementNo=0x191, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.Alchemist, AcquirementNo=0x193, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.SpiritLancer, AcquirementNo=0x195, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.SpiritLancer, AcquirementNo=0x19F, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.SpiritLancer, AcquirementNo=0x1A2, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.SpiritLancer, AcquirementNo=0x196, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.SpiritLancer, AcquirementNo=0x194, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.SpiritLancer, AcquirementNo=0x19B, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.SpiritLancer, AcquirementNo=0x1A1, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.SpiritLancer, AcquirementNo=0x19D, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.SpiritLancer, AcquirementNo=0x198, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.SpiritLancer, AcquirementNo=0x1A0, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.SpiritLancer, AcquirementNo=0x199, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.SpiritLancer, AcquirementNo=0x19E, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.SpiritLancer, AcquirementNo=0x19A, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.SpiritLancer, AcquirementNo=0x1B1, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.SpiritLancer, AcquirementNo=0x1A6, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.SpiritLancer, AcquirementNo=0x1A7, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.SpiritLancer, AcquirementNo=0x1A8, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.SpiritLancer, AcquirementNo=0x1AB, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.SpiritLancer, AcquirementNo=0x19C, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.SpiritLancer, AcquirementNo=0x1A9, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.SpiritLancer, AcquirementNo=0x1AA, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.SpiritLancer, AcquirementNo=0x197, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.SpiritLancer, AcquirementNo=0x1A4, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.SpiritLancer, AcquirementNo=0x1A5, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.SpiritLancer, AcquirementNo=0x1AC, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.SpiritLancer, AcquirementNo=0x1AD, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.SpiritLancer, AcquirementNo=0x1AE, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.SpiritLancer, AcquirementNo=0x1B0, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.SpiritLancer, AcquirementNo=0x1B2, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.SpiritLancer, AcquirementNo=0x1AF, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.SpiritLancer, AcquirementNo=0x1B7, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.SpiritLancer, AcquirementNo=0x1B3, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.SpiritLancer, AcquirementNo=0x1B4, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.SpiritLancer, AcquirementNo=0x1B6, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.SpiritLancer, AcquirementNo=0x1A3, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.SpiritLancer, AcquirementNo=0x1B5, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.SpiritLancer, AcquirementNo=0x1B8, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.HighScepter, AcquirementNo=0x1D3, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.HighScepter, AcquirementNo=0x1D9, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.HighScepter, AcquirementNo=0x1DE, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.HighScepter, AcquirementNo=0x1D5, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.HighScepter, AcquirementNo=0x1D4, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.HighScepter, AcquirementNo=0x1E3, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.HighScepter, AcquirementNo=0x1E5, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.HighScepter, AcquirementNo=0x1D8, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.HighScepter, AcquirementNo=0x1DF, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.HighScepter, AcquirementNo=0x1D2, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.HighScepter, AcquirementNo=0x1E4, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.HighScepter, AcquirementNo=0x1E6, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.HighScepter, AcquirementNo=0x1D6, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.HighScepter, AcquirementNo=0x1D7, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.HighScepter, AcquirementNo=0x1E2, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.HighScepter, AcquirementNo=0x1E0, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.HighScepter, AcquirementNo=0x1E9, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.HighScepter, AcquirementNo=0x1E1, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.HighScepter, AcquirementNo=0x1E8, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.HighScepter, AcquirementNo=0x1EA, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.HighScepter, AcquirementNo=0x1DD, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.HighScepter, AcquirementNo=0x1DB, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.HighScepter, AcquirementNo=0x1E7, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.HighScepter, AcquirementNo=0x1DA, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.HighScepter, AcquirementNo=0x1F3, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.HighScepter, AcquirementNo=0x1F4, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.HighScepter, AcquirementNo=0x1F6, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.HighScepter, AcquirementNo=0x1F5, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.HighScepter, AcquirementNo=0x1F1, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.HighScepter, AcquirementNo=0x1F8, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.HighScepter, AcquirementNo=0x1ED, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.HighScepter, AcquirementNo=0x1EE, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.HighScepter, AcquirementNo=0x1EF, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.HighScepter, AcquirementNo=0x1F0, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.HighScepter, AcquirementNo=0x1F2, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=JobId.HighScepter, AcquirementNo=0x1F7, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0xE7, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0xE8, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0xEC, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0xE4, AcquirementLv=1}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0xEB, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0xED, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0xF0, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0xF1, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0xF4, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0xF5, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0xE5, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0xE6, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0xE9, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0xF2, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0xF3, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0xE2, AcquirementLv=1}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0xE3, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0xEE, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0xEF, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0xEA, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0xF6, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0xF7, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0xF8, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0xF9, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0xFA, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0xFB, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0xFC, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0xFD, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0xFE, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0xFF, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x100, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x0101, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x0102, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x0103, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x0104, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x15, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x16, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x0107, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x18, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x19, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x1A, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x1B, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x1C, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x1D, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x1E, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x1F, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x110, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x111, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x112, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x113, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x114, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x115, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x116, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x117, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x118, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x119, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x11A, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x11B, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x11C, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x11D, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x11E, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x11F, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x120, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x121, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x122, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x123, AcquirementLv=1}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x124, AcquirementLv=1}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x125, AcquirementLv=1}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x126, AcquirementLv=1}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x127, AcquirementLv=1}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x1B9, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x1BA, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x1BB, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x1BC, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x1BD, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x1BE, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x1BF, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x1C0, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x1C1, AcquirementLv=1}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x1C2, AcquirementLv=1}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x1C3, AcquirementLv=2}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x1C4, AcquirementLv=1}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x1C5, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x1C6, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x1C7, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x1C8, AcquirementLv=2}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x1C9, AcquirementLv=1}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x1CA, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x1CB, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x1CC, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x1CD, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x1CE, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x1CF, AcquirementLv=6}, + new CDataLearnedSetAcquirementParam() {Type=1, Job=0, AcquirementNo=0x1D0, AcquirementLv=6}, + }; + public SkillGetLearnedAbilityListHandler(DdonGameServer server) : base(server) { } @@ -21,13 +524,7 @@ public override void Handle(GameClient client, StructurePacket new CDataLearnedSetAcquirementParam() { - Job = ability.Job, - Type = ability.Type, - AcquirementNo = ability.AbilityNo, - AcquirementLv = 6 - }).ToList() + SetAcquierementParam = AllAbilities }); } } diff --git a/Arrowgene.Ddon.Shared/Entity/EntitySerializer.cs b/Arrowgene.Ddon.Shared/Entity/EntitySerializer.cs index 94fcb7e50..44ccee68f 100644 --- a/Arrowgene.Ddon.Shared/Entity/EntitySerializer.cs +++ b/Arrowgene.Ddon.Shared/Entity/EntitySerializer.cs @@ -141,12 +141,12 @@ static EntitySerializer() Create(new CDataUpdateMatchingProfileInfo.Serializer()); Create(new CDataUpdateWalletPoint.Serializer()); Create(new CDataURLInfoSerializer()); + Create(new CDataWalletPoint.Serializer()); Create(new CDataWarpPoint.Serializer()); Create(new CDataWeatherLoop.Serializer()); Create(new CDataWeatherSchedule.Serializer()); Create(new CDataStageLayoutId.Serializer()); Create(new UnkownCharacterData0Serializer()); - Create(new UnkownCharacterData1Serializer()); // Packet structure serializers Create(new C2LCreateCharacterDataReq.Serializer()); @@ -178,6 +178,10 @@ static EntitySerializer() Create(new C2SContextSetContextNtc.Serializer()); Create(new C2SEquipGetCharacterEquipListReq.Serializer()); + Create(new C2SEquipUpdateHideCharacterHeadArmorReq.Serializer()); + Create(new C2SEquipUpdateHideCharacterLanternReq.Serializer()); + Create(new C2SEquipUpdateHidePawnHeadArmorReq.Serializer()); + Create(new C2SEquipUpdateHidePawnLanternReq.Serializer()); Create(new C2SGpGetValidChatComGroupReq.Serializer()); Create(new C2SInnGetStayPriceReq.Serializer()); Create(new C2SInnStayInnReq.Serializer()); @@ -310,6 +314,11 @@ static EntitySerializer() Create(new S2CContextMasterInfoNtc.Serializer()); Create(new S2CContextSetContextBaseNtc.Serializer()); Create(new S2CEquipGetCharacterEquipListRes.Serializer()); + Create(new S2CEquipUpdateEquipHideNtc.Serializer()); + Create(new S2CEquipUpdateHideCharacterHeadArmorRes.Serializer()); + Create(new S2CEquipUpdateHideCharacterLanternRes.Serializer()); + Create(new S2CEquipUpdateHidePawnHeadArmorRes.Serializer()); + Create(new S2CEquipUpdateHidePawnLanternRes.Serializer()); Create(new S2CGpGetValidChatComGroupRes.Serializer()); Create(new S2CInnGetStayPriceRes.Serializer()); Create(new S2CInnStayInnRes.Serializer()); diff --git a/Arrowgene.Ddon.Shared/Entity/PacketStructure/C2SEquipUpdateHideCharacterHeadArmorReq.cs b/Arrowgene.Ddon.Shared/Entity/PacketStructure/C2SEquipUpdateHideCharacterHeadArmorReq.cs new file mode 100644 index 000000000..1ab1971be --- /dev/null +++ b/Arrowgene.Ddon.Shared/Entity/PacketStructure/C2SEquipUpdateHideCharacterHeadArmorReq.cs @@ -0,0 +1,27 @@ +using Arrowgene.Buffers; +using Arrowgene.Ddon.Shared.Network; + +namespace Arrowgene.Ddon.Shared.Entity.PacketStructure +{ + public class C2SEquipUpdateHideCharacterHeadArmorReq : IPacketStructure + { + public PacketId Id => PacketId.C2S_EQUIP_UPDATE_HIDE_CHARACTER_HEAD_ARMOR_REQ; + + public bool Hide { get; set; } + + public class Serializer : PacketEntitySerializer + { + public override void Write(IBuffer buffer, C2SEquipUpdateHideCharacterHeadArmorReq obj) + { + WriteBool(buffer, obj.Hide); + } + + public override C2SEquipUpdateHideCharacterHeadArmorReq Read(IBuffer buffer) + { + C2SEquipUpdateHideCharacterHeadArmorReq obj = new C2SEquipUpdateHideCharacterHeadArmorReq(); + obj.Hide = ReadBool(buffer); + return obj; + } + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.Shared/Entity/PacketStructure/C2SEquipUpdateHideCharacterLanternReq.cs b/Arrowgene.Ddon.Shared/Entity/PacketStructure/C2SEquipUpdateHideCharacterLanternReq.cs new file mode 100644 index 000000000..2020f7644 --- /dev/null +++ b/Arrowgene.Ddon.Shared/Entity/PacketStructure/C2SEquipUpdateHideCharacterLanternReq.cs @@ -0,0 +1,27 @@ +using Arrowgene.Buffers; +using Arrowgene.Ddon.Shared.Network; + +namespace Arrowgene.Ddon.Shared.Entity.PacketStructure +{ + public class C2SEquipUpdateHideCharacterLanternReq : IPacketStructure + { + public PacketId Id => PacketId.C2S_EQUIP_UPDATE_HIDE_CHARACTER_LANTERN_REQ; + + public bool Hide { get; set; } + + public class Serializer : PacketEntitySerializer + { + public override void Write(IBuffer buffer, C2SEquipUpdateHideCharacterLanternReq obj) + { + WriteBool(buffer, obj.Hide); + } + + public override C2SEquipUpdateHideCharacterLanternReq Read(IBuffer buffer) + { + C2SEquipUpdateHideCharacterLanternReq obj = new C2SEquipUpdateHideCharacterLanternReq(); + obj.Hide = ReadBool(buffer); + return obj; + } + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.Shared/Entity/PacketStructure/C2SEquipUpdateHidePawnHeadArmorReq.cs b/Arrowgene.Ddon.Shared/Entity/PacketStructure/C2SEquipUpdateHidePawnHeadArmorReq.cs new file mode 100644 index 000000000..2cbe6269f --- /dev/null +++ b/Arrowgene.Ddon.Shared/Entity/PacketStructure/C2SEquipUpdateHidePawnHeadArmorReq.cs @@ -0,0 +1,27 @@ +using Arrowgene.Buffers; +using Arrowgene.Ddon.Shared.Network; + +namespace Arrowgene.Ddon.Shared.Entity.PacketStructure +{ + public class C2SEquipUpdateHidePawnHeadArmorReq : IPacketStructure + { + public PacketId Id => PacketId.C2S_EQUIP_UPDATE_HIDE_PAWN_HEAD_ARMOR_REQ; + + public bool Hide { get; set; } + + public class Serializer : PacketEntitySerializer + { + public override void Write(IBuffer buffer, C2SEquipUpdateHidePawnHeadArmorReq obj) + { + WriteBool(buffer, obj.Hide); + } + + public override C2SEquipUpdateHidePawnHeadArmorReq Read(IBuffer buffer) + { + C2SEquipUpdateHidePawnHeadArmorReq obj = new C2SEquipUpdateHidePawnHeadArmorReq(); + obj.Hide = ReadBool(buffer); + return obj; + } + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.Shared/Entity/PacketStructure/C2SEquipUpdateHidePawnLanternReq.cs b/Arrowgene.Ddon.Shared/Entity/PacketStructure/C2SEquipUpdateHidePawnLanternReq.cs new file mode 100644 index 000000000..80f5ccb2f --- /dev/null +++ b/Arrowgene.Ddon.Shared/Entity/PacketStructure/C2SEquipUpdateHidePawnLanternReq.cs @@ -0,0 +1,27 @@ +using Arrowgene.Buffers; +using Arrowgene.Ddon.Shared.Network; + +namespace Arrowgene.Ddon.Shared.Entity.PacketStructure +{ + public class C2SEquipUpdateHidePawnLanternReq : IPacketStructure + { + public PacketId Id => PacketId.C2S_EQUIP_UPDATE_HIDE_PAWN_LANTERN_REQ; + + public bool Hide { get; set; } + + public class Serializer : PacketEntitySerializer + { + public override void Write(IBuffer buffer, C2SEquipUpdateHidePawnLanternReq obj) + { + WriteBool(buffer, obj.Hide); + } + + public override C2SEquipUpdateHidePawnLanternReq Read(IBuffer buffer) + { + C2SEquipUpdateHidePawnLanternReq obj = new C2SEquipUpdateHidePawnLanternReq(); + obj.Hide = ReadBool(buffer); + return obj; + } + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CEquipUpdateEquipHideNtc.cs b/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CEquipUpdateEquipHideNtc.cs new file mode 100644 index 000000000..138aa8008 --- /dev/null +++ b/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CEquipUpdateEquipHideNtc.cs @@ -0,0 +1,39 @@ +using Arrowgene.Buffers; +using Arrowgene.Ddon.Shared.Network; + +namespace Arrowgene.Ddon.Shared.Entity.PacketStructure +{ + public class S2CEquipUpdateEquipHideNtc : IPacketStructure + { + public PacketId Id => PacketId.S2C_EQUIP_UPDATE_EQUIP_HIDE_NTC; + + public uint CharacterId { get; set; } + public bool HideHead { get; set; } + public bool HideLantern { get; set; } + public bool HidePawnHead { get; set; } + public bool HidePawnLantern { get; set; } + + public class Serializer : PacketEntitySerializer + { + public override void Write(IBuffer buffer, S2CEquipUpdateEquipHideNtc obj) + { + WriteUInt32(buffer, obj.CharacterId); + WriteBool(buffer, obj.HideHead); + WriteBool(buffer, obj.HideLantern); + WriteBool(buffer, obj.HidePawnHead); + WriteBool(buffer, obj.HidePawnLantern); + } + + public override S2CEquipUpdateEquipHideNtc Read(IBuffer buffer) + { + S2CEquipUpdateEquipHideNtc obj = new S2CEquipUpdateEquipHideNtc(); + obj.CharacterId = ReadUInt32(buffer); + obj.HideHead = ReadBool(buffer); + obj.HideLantern = ReadBool(buffer); + obj.HidePawnHead = ReadBool(buffer); + obj.HidePawnLantern = ReadBool(buffer); + return obj; + } + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CEquipUpdateHideCharacterHeadArmorRes.cs b/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CEquipUpdateHideCharacterHeadArmorRes.cs new file mode 100644 index 000000000..4343efd02 --- /dev/null +++ b/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CEquipUpdateHideCharacterHeadArmorRes.cs @@ -0,0 +1,29 @@ +using Arrowgene.Buffers; +using Arrowgene.Ddon.Shared.Network; + +namespace Arrowgene.Ddon.Shared.Entity.PacketStructure +{ + public class S2CEquipUpdateHideCharacterHeadArmorRes : ServerResponse + { + public override PacketId Id => PacketId.S2C_EQUIP_UPDATE_HIDE_CHARACTER_HEAD_ARMOR_RES; + + public bool Hide { get; set; } + + public class Serializer : PacketEntitySerializer + { + public override void Write(IBuffer buffer, S2CEquipUpdateHideCharacterHeadArmorRes obj) + { + WriteServerResponse(buffer, obj); + WriteBool(buffer, obj.Hide); + } + + public override S2CEquipUpdateHideCharacterHeadArmorRes Read(IBuffer buffer) + { + S2CEquipUpdateHideCharacterHeadArmorRes obj = new S2CEquipUpdateHideCharacterHeadArmorRes(); + ReadServerResponse(buffer, obj); + obj.Hide = ReadBool(buffer); + return obj; + } + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CEquipUpdateHideCharacterLanternRes.cs b/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CEquipUpdateHideCharacterLanternRes.cs new file mode 100644 index 000000000..02b7d2885 --- /dev/null +++ b/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CEquipUpdateHideCharacterLanternRes.cs @@ -0,0 +1,29 @@ +using Arrowgene.Buffers; +using Arrowgene.Ddon.Shared.Network; + +namespace Arrowgene.Ddon.Shared.Entity.PacketStructure +{ + public class S2CEquipUpdateHideCharacterLanternRes : ServerResponse + { + public override PacketId Id => PacketId.S2C_EQUIP_UPDATE_HIDE_CHARACTER_LANTERN_RES; + + public bool Hide { get; set; } + + public class Serializer : PacketEntitySerializer + { + public override void Write(IBuffer buffer, S2CEquipUpdateHideCharacterLanternRes obj) + { + WriteServerResponse(buffer, obj); + WriteBool(buffer, obj.Hide); + } + + public override S2CEquipUpdateHideCharacterLanternRes Read(IBuffer buffer) + { + S2CEquipUpdateHideCharacterLanternRes obj = new S2CEquipUpdateHideCharacterLanternRes(); + ReadServerResponse(buffer, obj); + obj.Hide = ReadBool(buffer); + return obj; + } + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CEquipUpdateHidePawnHeadArmorRes.cs b/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CEquipUpdateHidePawnHeadArmorRes.cs new file mode 100644 index 000000000..59bb1ac27 --- /dev/null +++ b/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CEquipUpdateHidePawnHeadArmorRes.cs @@ -0,0 +1,29 @@ +using Arrowgene.Buffers; +using Arrowgene.Ddon.Shared.Network; + +namespace Arrowgene.Ddon.Shared.Entity.PacketStructure +{ + public class S2CEquipUpdateHidePawnHeadArmorRes : ServerResponse + { + public override PacketId Id => PacketId.S2C_EQUIP_UPDATE_HIDE_PAWN_HEAD_ARMOR_RES; + + public bool Hide { get; set; } + + public class Serializer : PacketEntitySerializer + { + public override void Write(IBuffer buffer, S2CEquipUpdateHidePawnHeadArmorRes obj) + { + WriteServerResponse(buffer, obj); + WriteBool(buffer, obj.Hide); + } + + public override S2CEquipUpdateHidePawnHeadArmorRes Read(IBuffer buffer) + { + S2CEquipUpdateHidePawnHeadArmorRes obj = new S2CEquipUpdateHidePawnHeadArmorRes(); + ReadServerResponse(buffer, obj); + obj.Hide = ReadBool(buffer); + return obj; + } + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CEquipUpdateHidePawnLanternRes.cs b/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CEquipUpdateHidePawnLanternRes.cs new file mode 100644 index 000000000..ce25f69e8 --- /dev/null +++ b/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CEquipUpdateHidePawnLanternRes.cs @@ -0,0 +1,29 @@ +using Arrowgene.Buffers; +using Arrowgene.Ddon.Shared.Network; + +namespace Arrowgene.Ddon.Shared.Entity.PacketStructure +{ + public class S2CEquipUpdateHidePawnLanternRes : ServerResponse + { + public override PacketId Id => PacketId.S2C_EQUIP_UPDATE_HIDE_PAWN_LANTERN_RES; + + public bool Hide { get; set; } + + public class Serializer : PacketEntitySerializer + { + public override void Write(IBuffer buffer, S2CEquipUpdateHidePawnLanternRes obj) + { + WriteServerResponse(buffer, obj); + WriteBool(buffer, obj.Hide); + } + + public override S2CEquipUpdateHidePawnLanternRes Read(IBuffer buffer) + { + S2CEquipUpdateHidePawnLanternRes obj = new S2CEquipUpdateHidePawnLanternRes(); + ReadServerResponse(buffer, obj); + obj.Hide = ReadBool(buffer); + return obj; + } + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.Shared/Entity/Structure/CDataCharacterInfo.cs b/Arrowgene.Ddon.Shared/Entity/Structure/CDataCharacterInfo.cs index fb9b40398..fea37c101 100644 --- a/Arrowgene.Ddon.Shared/Entity/Structure/CDataCharacterInfo.cs +++ b/Arrowgene.Ddon.Shared/Entity/Structure/CDataCharacterInfo.cs @@ -23,9 +23,9 @@ public CDataCharacterInfo(Character character) CharacterEquipViewDataList = character.CharacterEquipViewDataListDictionary[character.Job]; CharacterEquipJobItemList = character.CharacterEquipJobItemListDictionary[character.Job]; JewelrySlotNum = character.JewelrySlotNum; + Unk0 = character.Unk0; CharacterItemSlotInfoList = character.CharacterItemSlotInfoList; - UnkCharData0 = character.UnkCharData0; - UnkCharData1 = character.UnkCharData1; + WalletPointList = character.WalletPointList; MyPawnSlotNum = character.MyPawnSlotNum; RentalPawnSlotNum = character.RentalPawnSlotNum; OrbStatusList = character.OrbStatusList; @@ -58,9 +58,9 @@ public CDataCharacterInfo() CharacterEquipViewDataList = new List(); CharacterEquipJobItemList = new List(); JewelrySlotNum = 0; - CharacterItemSlotInfoList = new List(); - UnkCharData0 = new List(); - UnkCharData1 = new List(); // Currencies? 1 is G, 2 is RP... + Unk0 = new List(); + CharacterItemSlotInfoList = new List(); // Slots in each Item Bag and Storage + WalletPointList = new List(); // Currencies? 1 is G, 2 is RP... MyPawnSlotNum = 0; RentalPawnSlotNum = 0; OrbStatusList = new List(); @@ -91,9 +91,9 @@ public CDataCharacterInfo() public List CharacterEquipViewDataList; public List CharacterEquipJobItemList; public byte JewelrySlotNum; + public List Unk0; public List CharacterItemSlotInfoList; - public List UnkCharData0; - public List UnkCharData1; + public List WalletPointList; public byte MyPawnSlotNum; public byte RentalPawnSlotNum; public List OrbStatusList; @@ -127,9 +127,9 @@ public override void Write(IBuffer buffer, CDataCharacterInfo obj) WriteEntityList(buffer, obj.CharacterEquipViewDataList); WriteEntityList(buffer, obj.CharacterEquipJobItemList); WriteByte(buffer, obj.JewelrySlotNum); + WriteEntityList(buffer, obj.Unk0); WriteEntityList(buffer, obj.CharacterItemSlotInfoList); - WriteEntityList(buffer, obj.UnkCharData0); - WriteEntityList(buffer, obj.UnkCharData1); + WriteEntityList(buffer, obj.WalletPointList); WriteByte(buffer, obj.MyPawnSlotNum); WriteByte(buffer, obj.RentalPawnSlotNum); WriteEntityList(buffer, obj.OrbStatusList); @@ -163,9 +163,9 @@ public override CDataCharacterInfo Read(IBuffer buffer) obj.CharacterEquipViewDataList = ReadEntityList(buffer); obj.CharacterEquipJobItemList = ReadEntityList(buffer); obj.JewelrySlotNum = ReadByte(buffer); + obj.Unk0 = ReadEntityList(buffer); obj.CharacterItemSlotInfoList = ReadEntityList(buffer); - obj.UnkCharData0 = ReadEntityList(buffer); - obj.UnkCharData1 = ReadEntityList(buffer); + obj.WalletPointList = ReadEntityList(buffer); obj.MyPawnSlotNum = ReadByte(buffer); obj.RentalPawnSlotNum = ReadByte(buffer); obj.OrbStatusList = ReadEntityList(buffer); diff --git a/Arrowgene.Ddon.Shared/Entity/Structure/CDataWalletPoint.cs b/Arrowgene.Ddon.Shared/Entity/Structure/CDataWalletPoint.cs new file mode 100644 index 000000000..984199ec6 --- /dev/null +++ b/Arrowgene.Ddon.Shared/Entity/Structure/CDataWalletPoint.cs @@ -0,0 +1,27 @@ +using Arrowgene.Buffers; + +namespace Arrowgene.Ddon.Shared.Entity.Structure +{ + public class CDataWalletPoint + { + public byte Type; + public uint Value; + + public class Serializer : EntitySerializer + { + public override void Write(IBuffer buffer, CDataWalletPoint obj) + { + WriteByte(buffer, obj.Type); + WriteUInt32(buffer, obj.Value); + } + + public override CDataWalletPoint Read(IBuffer buffer) + { + CDataWalletPoint obj = new CDataWalletPoint(); + obj.Type = ReadByte(buffer); + obj.Value = ReadUInt32(buffer); + return obj; + } + } + } +} diff --git a/Arrowgene.Ddon.Shared/Entity/Structure/UnknownCharacterData1.cs b/Arrowgene.Ddon.Shared/Entity/Structure/UnknownCharacterData1.cs deleted file mode 100644 index 33d35fcf4..000000000 --- a/Arrowgene.Ddon.Shared/Entity/Structure/UnknownCharacterData1.cs +++ /dev/null @@ -1,27 +0,0 @@ -using Arrowgene.Buffers; - -namespace Arrowgene.Ddon.Shared.Entity.Structure -{ - public class UnknownCharacterData1 - { - public byte u0; - public uint u1; - } - - public class UnkownCharacterData1Serializer : EntitySerializer - { - public override void Write(IBuffer buffer, UnknownCharacterData1 obj) - { - WriteByte(buffer, obj.u0); - WriteUInt32(buffer, obj.u1); - } - - public override UnknownCharacterData1 Read(IBuffer buffer) - { - UnknownCharacterData1 obj = new UnknownCharacterData1(); - obj.u0 = ReadByte(buffer); - obj.u1 = ReadUInt32(buffer); - return obj; - } - } -} diff --git a/Arrowgene.Ddon.Shared/Model/Character.cs b/Arrowgene.Ddon.Shared/Model/Character.cs index 9451c8866..aa99fb0ed 100644 --- a/Arrowgene.Ddon.Shared/Model/Character.cs +++ b/Arrowgene.Ddon.Shared/Model/Character.cs @@ -19,9 +19,9 @@ public Character() CharacterEquipDataListDictionary = new Dictionary>(); CharacterEquipViewDataListDictionary = new Dictionary>(); CharacterEquipJobItemListDictionary = new Dictionary>(); + Unk0 = new List(); CharacterItemSlotInfoList = new List(); - UnkCharData0 = new List(); - UnkCharData1 = new List(); // Currencies? 1 is G, 2 is RP... + WalletPointList = new List(); OrbStatusList = new List(); MsgSetList = new List(); ShortCutList = new List(); @@ -54,11 +54,9 @@ public CDataCharacterJobData ActiveCharacterJobData public Dictionary> CharacterEquipViewDataListDictionary; public Dictionary> CharacterEquipJobItemListDictionary; public byte JewelrySlotNum; + public List Unk0; public List CharacterItemSlotInfoList; - - // One of these is CDataWalletPoint, can't determine which. - public List UnkCharData0; - public List UnkCharData1; + public List WalletPointList; public byte MyPawnSlotNum; public byte RentalPawnSlotNum; public List OrbStatusList; diff --git a/Arrowgene.Ddon.Shared/Network/PacketId.cs b/Arrowgene.Ddon.Shared/Network/PacketId.cs index 3bcc9f80b..4ed8ddb0d 100644 --- a/Arrowgene.Ddon.Shared/Network/PacketId.cs +++ b/Arrowgene.Ddon.Shared/Network/PacketId.cs @@ -1317,7 +1317,7 @@ private static Dictionary InitializeLoginPacketIds() public static readonly PacketId S2C_EQUIP_GET_CRAFT_LOCKED_ELEMENT_LIST_RES = new PacketId(29, 15, 2, "S2C_EQUIP_GET_CRAFT_LOCKED_ELEMENT_LIST_RES", ServerType.Game, PacketSource.Server); // ロックされているクレストリスト取得に public static readonly PacketId S2C_EQUIP_29_16_16_NTC = new PacketId(29, 16, 16, "S2C_EQUIP_29_16_16_NTC", ServerType.Game, PacketSource.Server); public static readonly PacketId S2C_EQUIP_29_17_16_NTC = new PacketId(29, 17, 16, "S2C_EQUIP_29_17_16_NTC", ServerType.Game, PacketSource.Server); - public static readonly PacketId S2C_EQUIP_29_18_16_NTC = new PacketId(29, 18, 16, "S2C_EQUIP_29_18_16_NTC", ServerType.Game, PacketSource.Server); + public static readonly PacketId S2C_EQUIP_UPDATE_EQUIP_HIDE_NTC = new PacketId(29, 18, 16, "S2C_EQUIP_29_18_16_NTC", ServerType.Game, PacketSource.Server); public static readonly PacketId C2S_EQUIP_29_19_1_REQ = new PacketId(29, 19, 1, "C2S_EQUIP_29_19_1_REQ", ServerType.Game, PacketSource.Client); public static readonly PacketId S2C_EQUIP_29_19_2_RES = new PacketId(29, 19, 2, "S2C_EQUIP_29_19_2_RES", ServerType.Game, PacketSource.Server); public static readonly PacketId C2S_EQUIP_29_20_1_REQ = new PacketId(29, 20, 1, "C2S_EQUIP_29_20_1_REQ", ServerType.Game, PacketSource.Client); @@ -3221,7 +3221,7 @@ private static Dictionary InitializeGamePacketIds() AddPacketIdEntry(packetIds, S2C_EQUIP_GET_CRAFT_LOCKED_ELEMENT_LIST_RES); AddPacketIdEntry(packetIds, S2C_EQUIP_29_16_16_NTC); AddPacketIdEntry(packetIds, S2C_EQUIP_29_17_16_NTC); - AddPacketIdEntry(packetIds, S2C_EQUIP_29_18_16_NTC); + AddPacketIdEntry(packetIds, S2C_EQUIP_UPDATE_EQUIP_HIDE_NTC); AddPacketIdEntry(packetIds, C2S_EQUIP_29_19_1_REQ); AddPacketIdEntry(packetIds, S2C_EQUIP_29_19_2_RES); AddPacketIdEntry(packetIds, C2S_EQUIP_29_20_1_REQ);